OverviewFilesCommitsIssuesDocsReleasesPeers

holepunchto-deps commits / 716212a

add @holepunchto/keet-core 4.14.4 + bump keet-daemon to use it
keet-core-hyperdb 1.22.0 was retired upstream; the replacement is keet-core 4.14.4 plus 25 sibling packages. Audit details at hyper-fleeky/keet-audit-4.x/. This change migrates the shared keet-daemon module onto the new package; downstream consumers (keet-cli, godot-keet, hyper-tps) still need their own package.json bumps to swap @holepunchto/keet-core-hyperdb for @holepunchto/keet-core in their dependencies. Registry changes • ADD @holepunchto/keet-core 4.14.4 (the replacement). bundle/ abi*.bundle.js is gone — the broken pre-bundles that caused cold-install crashes (hyper-fleeky-dev#20) don't exist in this architecture; loading is lazy and migration-only. • UPDATE @holepunchto/keet-call 10.3.1 → 10.3.3 (peer dep requirement of keet-core). • UPDATE @holepunchto/keet-unread-anchors 1.5.2 → 2.0.0 (peer dep requirement of keet-core). • KEEP @holepunchto/keet-core-hyperdb 1.22.0 in place as the legacy fallback so existing consumers can still resolve it during their own migration window. keet-daemon gitlink: 7d3427c → 65d1bb2 • swap import @holepunchto/keet-core-hyperdb → @holepunchto/keet-core • coreOpts: add buildType: 'production' (keet-core 4.x requires it) • rename local KeetCoreHyperDB → KeetCoreModule Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
716212a112c06e7a2e7567cabbfd869aa8536024
by plankatron <fleeky@gmail.com> · 2026-05-12T00:49:09.000Z

Changed files (175) +23933 -407

@holepunchto/keet-call/client/call/index.js +1 -1
……@@ -1 +1 @@
1(function(_0xfdc776,_0x399d01){const _0x5eb447={_0x1f9dd6:0x10f,_0x3e4355:0xdb,_0x34dcdf:0xe1,_0x33c5e8:0xd3,_0xb1cabc:0x98,_0x368047:0x11e,_0x413b7e:0x125,_0x25395f:0x147,_0x4446e2:0x496,_0x466959:0x45a,_0x3b9a33:0x48a,_0x30bfd3:0x41e,_0x4f46c2:0x14a,_0x43f316:0x153,_0x2f4118:0x12f,_0x4c7f88:0x12c,_0x2e169b:0x112,_0x5a9b35:0x3e9,_0x1a699a:0x42f,_0x35b9f2:0x479,_0x48f414:0x154,_0x5567be:0x138,_0x3e0ae6:0x14a,_0x4f4f4b:0x416,_0x43e4e6:0x3e6,_0x10fd95:0x3a4,_0x1b1f0a:0x3f5,_0x40c4ed:0x3ff,_0x25d5f9:0x3bd},_0x2cb0ed={_0x470690:0x220};function _0x3d9956(_0x31e664,_0x44fd86,_0x3bbd97,_0x4d2146){return _0x4ec6(_0x44fd86-_0x2cb0ed._0x470690,_0x4d2146);}function _0x150d08(_0x166093,_0xcf1d62,_0x58c7b3,_0x4c04fc){return _0x4ec6(_0x166093- -0x311,_0x4c04fc);}const _0x2959a4=_0xfdc776();while(!![]){try{const _0x1a286d=parseInt(_0x150d08(-0x151,-_0x5eb447._0x1f9dd6,-0x164,-0x18e))/(0x330+0x100d*0x2+0xbc3*-0x3)+-parseInt(_0x150d08(-_0x5eb447._0x3e4355,-_0x5eb447._0x34dcdf,-_0x5eb447._0x33c5e8,-_0x5eb447._0xb1cabc))/(0x1*0xf71+-0x1*-0x1bc5+-0x2b34*0x1)*(-parseInt(_0x150d08(-0x134,-_0x5eb447._0x368047,-_0x5eb447._0x413b7e,-_0x5eb447._0x25395f))/(0xeee+0x1128+0x165*-0x17))+-parseInt(_0x3d9956(_0x5eb447._0x4446e2,_0x5eb447._0x466959,_0x5eb447._0x3b9a33,_0x5eb447._0x30bfd3))/(-0x2641+-0x1190+0x1*0x37d5)*(-parseInt(_0x150d08(-_0x5eb447._0x4f46c2,-0x112,-0x181,-_0x5eb447._0x43f316))/(-0x1*0x1c8d+-0x1480+0x3112))+-parseInt(_0x150d08(-_0x5eb447._0x2f4118,-_0x5eb447._0x4c7f88,-_0x5eb447._0x2e169b,-0x137))/(0x17*-0x1f+-0x185a+0x11*0x199)+-parseInt(_0x3d9956(_0x5eb447._0x5a9b35,_0x5eb447._0x1a699a,0x471,_0x5eb447._0x35b9f2))/(0x5c2+0x1*0x1acf+0x77*-0x46)+-parseInt(_0x150d08(-_0x5eb447._0x48f414,-_0x5eb447._0x5567be,-0x153,-_0x5eb447._0x3e0ae6))/(0x2629+-0x1816+0xe0b*-0x1)+parseInt(_0x3d9956(_0x5eb447._0x4f4f4b,_0x5eb447._0x43e4e6,0x3e1,_0x5eb447._0x10fd95))/(-0x2*0x551+-0xcaf+0x175a)*(parseInt(_0x3d9956(0x43a,_0x5eb447._0x1b1f0a,_0x5eb447._0x40c4ed,_0x5eb447._0x25d5f9))/(0x1337+0x1cc9*-0x1+0x4ce*0x2));if(_0x1a286d===_0x399d01)break;else _0x2959a4['push'](_0x2959a4['shift']());}catch(_0x141606){_0x2959a4['push'](_0x2959a4['shift']());}}}(_0x1ec8,0x2*-0x2b8a8+0x333da+0x73715));const _0x21d29f=(function(){let _0x549735=!![];return function(_0xa9eaf1,_0x16158c){const _0x1b280b={_0x54cb76:0x1a4,_0x2bebfe:0x1a7,_0x24691e:0x166},_0x4033f0={_0x51fef8:0x3d7},_0x4234d2=_0x549735?function(){function _0x50935e(_0x34b61c,_0x1eb4c6,_0x539d9f,_0x27ec23){return _0x4ec6(_0x1eb4c6- -_0x4033f0._0x51fef8,_0x27ec23);}if(_0x16158c){const _0x36a6b8=_0x16158c[_0x50935e(-0x17f,-_0x1b280b._0x54cb76,-_0x1b280b._0x2bebfe,-_0x1b280b._0x24691e)](_0xa9eaf1,arguments);return _0x16158c=null,_0x36a6b8;}}:function(){};return _0x549735=![],_0x4234d2;};}()),_0x337b18=_0x21d29f(this,function(){const _0x494ea5={_0x304ebe:0x198,_0x103a54:0x172,_0x589318:0x1aa,_0x252f72:0x1ac,_0x16510c:0x1d7,_0x5c2f79:0x521,_0x45185a:0x569,_0x51dc2c:0x5a4,_0x5e43b0:0x526,_0x5ec703:0x530,_0x2b7ca8:0x4f7,_0x32788a:0x51e,_0x45a575:0x4cd,_0x121004:0x50d,_0x535349:0x4e7,_0x365c63:0x18a,_0x508969:0x1a7,_0x11999e:0x19a,_0x23e0f7:0x1ab,_0x48c300:0x217,_0x28aa4:0x1e3},_0x56585f={_0x2f3bb6:0x60},_0x4a97a4={_0x3f8b17:0x326};function _0x2987e6(_0x452525,_0x1339ff,_0x2043c,_0x255413){return _0x4ec6(_0x2043c-_0x4a97a4._0x3f8b17,_0x1339ff);}function _0xddd1e0(_0x2b4b2a,_0x5a16c4,_0x578f28,_0x486a5a){return _0x4ec6(_0x486a5a- -_0x56585f._0x2f3bb6,_0x2b4b2a);}return _0x337b18[_0xddd1e0(_0x494ea5._0x304ebe,_0x494ea5._0x103a54,0x1e8,_0x494ea5._0x589318)]()[_0xddd1e0(_0x494ea5._0x252f72,0x16a,_0x494ea5._0x16510c,0x1a7)](_0x2987e6(_0x494ea5._0x5c2f79,0x589,_0x494ea5._0x45185a,_0x494ea5._0x51dc2c)+'+$')[_0x2987e6(_0x494ea5._0x5e43b0,0x4fb,_0x494ea5._0x5ec703,_0x494ea5._0x2b7ca8)]()[_0x2987e6(_0x494ea5._0x32788a,_0x494ea5._0x45a575,_0x494ea5._0x121004,_0x494ea5._0x535349)+'r'](_0x337b18)[_0xddd1e0(_0x494ea5._0x365c63,0x1da,0x1ef,_0x494ea5._0x508969)](_0xddd1e0(_0x494ea5._0x11999e,_0x494ea5._0x23e0f7,_0x494ea5._0x48c300,_0x494ea5._0x28aa4)+'+$');});_0x337b18();const {Readable}=require('streamx'),safetyCatch=require('safety-catch');function _0x4d2912(_0x562760,_0x1e1239,_0x521ea2,_0x3c81c4){const _0x3cb9f0={_0x3358bd:0x2a5};return _0x4ec6(_0x521ea2- -_0x3cb9f0._0x3358bd,_0x562760);}function _0x1ec8(){const _0xdccdfe=['alStreamCl','2336520ggleef','_updateLoc','signalMedi','320964FlJmXI','raStreamId','_handleWeb','_onlocalsc','cription','xyClose','579060rSPkFV','459740FYGkBa','swarmId','rver','roxyUpdate','screenStre','reamclosed','setVideoTr','alMessage','setAudioTr','RtcClose','add','_handlePro','remoteCame','alPresence','30qbcnnq','audioMuted','removeList','handleSign','_presenceO','ediaSignal','trace','_pendingAp','6AXNzWX','onerror','callId','alScreenTr','VAILABLE','877956OsoXMg','setNotPres','PEER_PRESE','setScreenT','error','constructo','splice','oxyEvents','STREAM_STA','remoteScre','xyOpen','_onremotes','gnalEvents','PEER_NOT_P','closeStrea','RtcSignal','_proxySubs','meratracks','ubscriptio','STREAM_UNA','local','updateStat','_joinedPee','getStatus','audioTrack','scription','esenceEven','\x20destroyed','_handleLoc','get','proxyPort','_observePr','ener','ackgroundR','change','tracer','signal','search','message','type','toString','amStatus','_remotes','_onRemotes','deleteStat','788452huNqbH','_internalB','subscribeP','_debounced','deleteClie','_signalObs','ready','reentracks','length','gnals','erver','_flushTask','api','push','streamId','osed','set','_observeSi','getClient','_onlocalca','addClient','PROXY_CLOS','warn','FlushTasks','subscribeM','_signalSub','emoteStrea','acksChange','_presenceS','iTasks','cameraStre','CAMERA','enStreamId','delete','eamSubscri','ack','apply','rack','bind','271142AeYKLO','alCameraTr','stream','videoTrack','4dhbULT','ent','_remoteStr','close','SCREEN','RESENT','videoMuted','RtcReady','Change','(((.+)+)+)','shift','ptions','bserver','leavePeer','_pendingSi','destroy','clients','_onlocalst','closed','joinPeer','screenTrac','amOpened'];_0x1ec8=function(){return _0xdccdfe;};return _0x1ec8();}const debounce=require('debounceify'),{createTracer}=require('hypertrace'),{MEDIA_EVENTS,PRESENCE_EVENTS}=require('../../lib/common'),KeetWebRTCClient=require('./webrtc'),KeetRemoteStreamsMap=require('./remotes-map');function _0x5d917a(_0x2eb45d,_0x3f11bc,_0xc68a56,_0x149f1e){return _0x4ec6(_0x2eb45d-0x393,_0x3f11bc);}const {STREAM_TYPE,LOCAL_CHANGE_EVENTS,LOCAL_CLOSE_EVENTS}=require('../local/constants');function _0x4ec6(_0x4ec6e9,_0x258ace){const _0x4624e3=_0x1ec8();return _0x4ec6=function(_0x12166c,_0x485db6){_0x12166c=_0x12166c-(0x1*0x2366+0xbbe+-0x2d6b);let _0x49e27d=_0x4624e3[_0x12166c];return _0x49e27d;},_0x4ec6(_0x4ec6e9,_0x258ace);}module['exports']=class KeetCall{constructor(_0x2c251c,_0x25452c,{onerror:onerror=defaultError}={}){const _0x1cb078={_0x1857e5:0x22e,_0x542491:0x255,_0x172a74:0x260,_0x252b22:0x255,_0x3d1a0a:0x25a,_0x3fb887:0x264,_0x55af0f:0x212,_0x1b3bb4:0x21d,_0x4c3503:0x1f9,_0x1add94:0x24f,_0x3e3bde:0x25f,_0x236871:0x1ec,_0x4c2f5a:0x65,_0x72646b:0x58,_0x3afea2:0x49,_0x5f6fc6:0x78,_0x4b73c1:0x259,_0xf4f47b:0x265,_0x1d2c88:0x2c2,_0x48adf7:0x24c,_0xfed6ce:0x254,_0xb21ba1:0x216,_0x291f5d:0x26e,_0x37a6db:0x282,_0x293fae:0x24c,_0x207367:0xa,_0x4c18fb:0x42,_0x1f124b:0x15,_0x28832d:0x29c,_0xb5edd:0x2aa,_0x9ca6f:0x297,_0x1eaa1a:0x276,_0x2b1a86:0x234,_0x557edc:0x2b3,_0x1ed19e:0x14,_0x19cd57:0x34,_0x313d6a:0x2,_0x19dc15:0x39,_0x4e2a62:0x9,_0x185335:0x37,_0x2d6721:0x5,_0x1c8108:0x41,_0x317191:0x210,_0x44f962:0x211,_0x52a54e:0x232,_0x4ddf26:0x234,_0x15503f:0x235,_0x1209e9:0x35,_0x12d313:0x3,_0x1667e7:0x1f,_0x34f331:0x42,_0x342a7b:0x1e5,_0x13ba67:0x1fa,_0x4ec7ce:0x1e4,_0x433cd6:0x22e,_0x34f9ba:0x291,_0x3264c3:0x218,_0x5a26fe:0x264,_0x315efc:0x3,_0x29f42e:0x3b,_0x222acd:0x8,_0x7f6c0a:0x1c,_0x5ab19a:0x239,_0x446fd0:0x24a,_0x574c16:0x228,_0xbc780f:0x59,_0x5a9d41:0x5a,_0x5dc6b1:0x48,_0x19404d:0x4c,_0x2d8ea4:0x266,_0x213eea:0x237,_0x4ea453:0x40,_0x3310df:0x1,_0x55a23f:0x43,_0x392d56:0x35,_0x272577:0x31,_0x169661:0x20b,_0x4d13bc:0x23b,_0x154f93:0x255,_0x356d53:0x250,_0x3a5baf:0x2b,_0x40c221:0xc,_0x4c3afd:0x45,_0x45ee7f:0x0,_0x24cf40:0x238,_0x15e08e:0x247,_0x2f2e64:0x20a,_0x50a849:0x272,_0x3ddda7:0x273,_0x249479:0x23e,_0x28902e:0xf,_0x32b387:0x17,_0x57c53b:0x293,_0x26dc3a:0x258,_0x124f15:0x25c,_0x6cd096:0x1d,_0x18dd1e:0x13,_0x69ad68:0x4b,_0x4ce267:0xb,_0x190eb7:0x56,_0x299760:0x5e,_0x495a89:0x230,_0xce2c34:0x2a2,_0x3e4913:0x264,_0x3e67f5:0x20,_0xb3adca:0x46,_0x4bf5b0:0x24,_0x495d0f:0x263,_0x2f950c:0x53,_0x1ad867:0x16,_0x4a7cb7:0x27,_0x4e0fc4:0x12,_0x4fcc0a:0x25,_0x4cba11:0x23e,_0x4717e4:0x22d,_0x5cee5b:0x44,_0x25b134:0x1,_0x3b7cba:0xd,_0x2d39f6:0x5d,_0x2db7bd:0x8b,_0x54e0c3:0x4e,_0x49ae80:0x1a,_0x38d4ee:0x267,_0x1d998d:0x280,_0x564aa5:0x25a,_0x142833:0x270,_0xb10053:0x238,_0x3341a5:0x22,_0x2da234:0x3,_0x185159:0x20a,_0x5e5f1e:0x231,_0xbe0401:0x278,_0x2c4d56:0x5b,_0x59e042:0x4e,_0x5ab3f9:0x8c,_0x17a849:0x1b,_0x17a503:0x3c,_0x430551:0x7,_0x13fb14:0x227,_0x98acb6:0x25a,_0x24ef90:0x28d,_0xa282a4:0x249,_0x5ea06f:0x285,_0x11b94e:0x276,_0x5b5a0e:0x219,_0x396861:0x1ee,_0x1b23d5:0x270,_0x30cb68:0x254,_0x45eab1:0x202,_0x50677c:0x27,_0x385e90:0x1e,_0x333230:0x2cf,_0x475290:0x2bf,_0x4f05f7:0x2c5,_0x4fdc33:0x51,_0x4aac93:0x13,_0x5cfb4b:0x27a,_0x5f4412:0x2ab,_0xae2ee4:0x241,_0x1c75db:0x1f1,_0xf1fa3b:0x1c5,_0x411bdc:0x22b,_0x36f059:0x206,_0x4e43f9:0x292,_0x125827:0x252,_0x3d130f:0x23e,_0x1e3d5f:0x268,_0x559bd0:0x286,_0xc40e7d:0x21c,_0x34fcf7:0x23d},_0x650333={_0x2093cd:0x591,_0x3cc44c:0x584,_0x93a230:0x5d8,_0x18f496:0x56c,_0x44de6d:0x56b,_0x2d49e7:0x5c4},_0x220a60={_0x407cec:0x211};this[_0xd44dbb(_0x1cb078._0x1857e5,_0x1cb078._0x542491,_0x1cb078._0x172a74,_0x1cb078._0x252b22)]=_0x2c251c[_0xd44dbb(_0x1cb078._0x3d1a0a,_0x1cb078._0x3fb887,_0x1cb078._0x55af0f,_0x1cb078._0x542491)],this[_0xd44dbb(_0x1cb078._0x1b3bb4,_0x1cb078._0x4c3503,_0x1cb078._0x1add94,0x230)]=_0x2c251c[_0xd44dbb(_0x1cb078._0x3e3bde,0x245,_0x1cb078._0x236871,0x230)];function _0xd44dbb(_0x5decb0,_0xbfe397,_0x34d5fd,_0xfff622){return _0x4ec6(_0xfff622-0x3a,_0x5decb0);}this[_0x15c6fd(-_0x1cb078._0x4c2f5a,-_0x1cb078._0x72646b,-_0x1cb078._0x3afea2,-_0x1cb078._0x5f6fc6)]=_0x2c251c['swarmId'],this['callId']=_0x25452c,this['onerror']=onerror,this[_0xd44dbb(_0x1cb078._0x4b73c1,_0x1cb078._0xf4f47b,_0x1cb078._0x1d2c88,0x286)]=![],this[_0xd44dbb(_0x1cb078._0x48adf7,0x1d8,_0x1cb078._0xfed6ce,_0x1cb078._0xb21ba1)+'iTasks']=[],this[_0xd44dbb(_0x1cb078._0x291f5d,_0x1cb078._0x37a6db,0x262,_0x1cb078._0x293fae)+_0x15c6fd(-_0x1cb078._0x207367,_0x1cb078._0x4c18fb,_0x1cb078._0x1f124b,0x3d)]=debounce(this['_flushTask'+'s']['bind'](this)),this[_0xd44dbb(_0x1cb078._0x28832d,_0x1cb078._0xb5edd,_0x1cb078._0x9ca6f,_0x1cb078._0x1eaa1a)+_0xd44dbb(_0x1cb078._0x2b1a86,_0x1cb078._0x557edc,0x285,0x26b)+_0x15c6fd(_0x1cb078._0x1ed19e,0x19,_0x1cb078._0x19cd57,_0x1cb078._0x313d6a)]=new Map();function _0x15c6fd(_0x13d2b2,_0x1cc4a6,_0x100a92,_0x314099){return _0x4ec6(_0x100a92- -_0x220a60._0x407cec,_0x314099);}this['_pendingSi'+_0x15c6fd(_0x1cb078._0x19dc15,0x2a,0x7,0x1b)]=new Map(),this[_0x15c6fd(-_0x1cb078._0x4e2a62,-_0x1cb078._0x185335,-_0x1cb078._0x2d6721,_0x1cb078._0x1c8108)]=new KeetRemoteStreamsMap(),this[_0xd44dbb(_0x1cb078._0x317191,_0x1cb078._0x44f962,0x224,_0x1cb078._0x52a54e)+'rs']=new Set(),this['_signalSub'+_0xd44dbb(0x24d,0x25e,_0x1cb078._0x4ddf26,_0x1cb078._0x15503f)]=null,this[_0x15c6fd(-_0x1cb078._0x1209e9,_0x1cb078._0x12d313,-_0x1cb078._0x1667e7,-_0x1cb078._0x34f331)+_0xd44dbb(_0x1cb078._0x342a7b,_0x1cb078._0x13ba67,0x242,0x1fe)]=null,this['_presenceS'+_0xd44dbb(0x26a,_0x1cb078._0x4ec7ce,_0x1cb078._0x48adf7,_0x1cb078._0x433cd6)+'n']=null,this[_0xd44dbb(_0x1cb078._0x34f9ba,_0x1cb078._0x3264c3,_0x1cb078._0x5a26fe,0x24e)+_0x15c6fd(_0x1cb078._0x315efc,_0x1cb078._0x29f42e,_0x1cb078._0x222acd,_0x1cb078._0x7f6c0a)]=this['_observeSi'+_0xd44dbb(_0x1cb078._0x5ab19a,0x1f7,_0x1cb078._0x446fd0,_0x1cb078._0x574c16)](),this['_proxyObse'+_0x15c6fd(-_0x1cb078._0xbc780f,-_0x1cb078._0x5a9d41,-_0x1cb078._0x5dc6b1,-_0x1cb078._0x19404d)]=this['_observePr'+_0xd44dbb(_0x1cb078._0x2d8ea4,_0x1cb078._0x213eea,0x1e6,0x223)](),this[_0x15c6fd(-_0x1cb078._0x4ea453,-_0x1cb078._0x3310df,-0x38,-_0x1cb078._0x2d6721)+_0x15c6fd(_0x1cb078._0x55a23f,0x8,_0x1cb078._0x392d56,_0x1cb078._0x272577)]=this[_0xd44dbb(0x281,0x201,_0x1cb078._0x169661,_0x1cb078._0x4d13bc)+'esenceEven'+'ts'](),this[_0xd44dbb(_0x1cb078._0x154f93,0x1e8,_0x1cb078._0x356d53,0x227)+_0x15c6fd(-_0x1cb078._0x3a5baf,-_0x1cb078._0x40c221,-0xd,-0x2f)]=this[_0x15c6fd(_0x1cb078._0x4c3afd,-0x39,-0x4,_0x1cb078._0x45ee7f)+'Change'][_0xd44dbb(_0x1cb078._0x24cf40,0x22a,_0x1cb078._0x15e08e,0x26f)](this),this['_remotes']['on'](_0xd44dbb(_0x1cb078._0x2f2e64,_0x1cb078._0x50a849,_0x1cb078._0x3ddda7,_0x1cb078._0x249479),this['_onremotes'+_0x15c6fd(-_0x1cb078._0x28902e,0x20,-0xd,-_0x1cb078._0x32b387)]),this[_0xd44dbb(0x271,_0x1cb078._0x57c53b,_0x1cb078._0x26dc3a,_0x1cb078._0x124f15)+'meratracks'+'change']=this[_0x15c6fd(-0x18,-_0x1cb078._0x6cd096,-_0x1cb078._0x18dd1e,-_0x1cb078._0x69ad68)+_0x15c6fd(_0x1cb078._0x4ce267,_0x1cb078._0x190eb7,0x26,_0x1cb078._0x299760)+_0xd44dbb(0x28e,_0x1cb078._0x495a89,_0x1cb078._0xce2c34,_0x1cb078._0x3e4913)][_0x15c6fd(_0x1cb078._0x3e67f5,_0x1cb078._0xb3adca,_0x1cb078._0x4bf5b0,-_0x1cb078._0x6cd096)](this),this[_0xd44dbb(_0x1cb078._0x495d0f,0x1e8,0x1ef,0x230)]['on'](LOCAL_CHANGE_EVENTS[_0x15c6fd(_0x1cb078._0x2f950c,_0x1cb078._0x1ad867,0x1d,_0x1cb078._0x4a7cb7)],this[_0x15c6fd(-_0x1cb078._0x4e0fc4,_0x1cb078._0x4fcc0a,0x11,0xb)+_0xd44dbb(0x1e8,0x210,_0x1cb078._0x4cba11,_0x1cb078._0x4717e4)+_0x15c6fd(-_0x1cb078._0x5cee5b,-_0x1cb078._0x25b134,-_0x1cb078._0x3b7cba,-0x26)]),this[_0x15c6fd(-_0x1cb078._0x2d39f6,-_0x1cb078._0x2db7bd,-_0x1cb078._0x54e0c3,-_0x1cb078._0x49ae80)+_0xd44dbb(_0x1cb078._0x38d4ee,_0x1cb078._0x1d998d,_0x1cb078._0x564aa5,0x250)+_0xd44dbb(_0x1cb078._0x142833,0x212,_0x1cb078._0xb10053,_0x1cb078._0x249479)]=this[_0x15c6fd(-_0x1cb078._0x18dd1e,_0x1cb078._0x3341a5,-_0x1cb078._0x18dd1e,_0x1cb078._0x2da234)+'alScreenTr'+'acksChange']['bind'](this),this[_0xd44dbb(_0x1cb078._0x185159,_0x1cb078._0x317191,0x25c,_0x1cb078._0x495a89)]['on'](LOCAL_CHANGE_EVENTS[_0xd44dbb(0x24d,_0x1cb078._0x252b22,_0x1cb078._0x5e5f1e,_0x1cb078._0xbe0401)],this[_0x15c6fd(-_0x1cb078._0x2c4d56,-0x71,-_0x1cb078._0x59e042,-_0x1cb078._0x5ab3f9)+_0x15c6fd(-_0x1cb078._0x17a849,-_0x1cb078._0x17a503,0x5,-_0x1cb078._0x430551)+_0xd44dbb(_0x1cb078._0x13fb14,0x284,0x271,0x23e)]),this[_0xd44dbb(_0x1cb078._0x98acb6,_0x1cb078._0x24ef90,_0x1cb078._0xa282a4,_0x1cb078._0x5ea06f)+'reamclosed']=this[_0xd44dbb(_0x1cb078._0x11b94e,_0x1cb078._0x5b5a0e,_0x1cb078._0x396861,0x238)+'alStreamCl'+_0x15c6fd(-0x2a,0x14,_0x1cb078._0x3b7cba,_0x1cb078._0x3afea2)]['bind'](this),this[_0xd44dbb(_0x1cb078._0x1b23d5,_0x1cb078._0x30cb68,_0x1cb078._0x45eab1,0x230)]['on'](LOCAL_CLOSE_EVENTS[_0x15c6fd(_0x1cb078._0x50677c,0x44,0x1d,_0x1cb078._0x385e90)],this[_0xd44dbb(_0x1cb078._0x333230,_0x1cb078._0x475290,_0x1cb078._0x4f05f7,_0x1cb078._0x5ea06f)+_0x15c6fd(-0x89,-_0x1cb078._0x4fdc33,-_0x1cb078._0x4c3afd,-_0x1cb078._0x4aac93)]),this[_0x15c6fd(-_0x1cb078._0x313d6a,_0x1cb078._0x18dd1e,-0x1b,0x27)]['on'](LOCAL_CLOSE_EVENTS[_0xd44dbb(_0x1cb078._0x5cfb4b,0x262,_0x1cb078._0x5f4412,0x278)],this[_0xd44dbb(0x299,0x279,_0x1cb078._0xae2ee4,0x285)+_0xd44dbb(_0x1cb078._0x1c75db,_0x1cb078._0xf1fa3b,_0x1cb078._0x411bdc,_0x1cb078._0x36f059)]),this[_0x15c6fd(-_0x1cb078._0x1f124b,_0x1cb078._0x45ee7f,-0xc,-_0x1cb078._0x313d6a)]=createTracer(this,{'props':{'callId':_0x25452c,'swarmId':this['swarmId']}}),this[_0xd44dbb(_0x1cb078._0x4e43f9,_0x1cb078._0x125827,_0x1cb078._0x3d130f,_0x1cb078._0x446fd0)+_0xd44dbb(_0x1cb078._0x1e3d5f,_0x1cb078._0x559bd0,_0x1cb078._0xc40e7d,_0x1cb078._0x34fcf7)+'un'](()=>{const _0x5eb1c3={_0x307409:0x6a,_0x52c854:0x116,_0x59dd1d:0x5e1};function _0x4e105d(_0x2c85dd,_0x17b8fb,_0x2e8af0,_0x2fc131){return _0x15c6fd(_0x2c85dd-_0x5eb1c3._0x307409,_0x17b8fb-_0x5eb1c3._0x52c854,_0x2e8af0-_0x5eb1c3._0x59dd1d,_0x2fc131);}function _0x21dfe3(_0x2be26e,_0x25d865,_0x1d10fb,_0x104fcc){return _0xd44dbb(_0x104fcc,_0x25d865-0x130,_0x1d10fb-0x28,_0x2be26e- -0x34e);}this[_0x4e105d(_0x650333._0x2093cd,_0x650333._0x3cc44c,0x58e,_0x650333._0x93a230)+_0x4e105d(_0x650333._0x18f496,_0x650333._0x44de6d,0x5a4,_0x650333._0x2d49e7)]();});}async[_0x4d2912(-0x7d,-0x89,-0x8b,-0xb9)+'s'](){const _0x31d3df={_0x5a4efe:0x1e1,_0x3b4c83:0x1ab,_0x227730:0x174,_0x292917:0x1a0,_0x89bc04:0x2a9,_0x1c8fbc:0x285,_0x20f1fd:0x1e6,_0x3be909:0x1e0,_0x9da9ce:0x24c,_0x149faa:0x235,_0x38b3c5:0x237,_0x3abd50:0x29b,_0x554a43:0x2a4,_0x3eff28:0x285,_0x43b623:0x267,_0x4ca723:0x1e4,_0x26b6f1:0x213,_0xcc45a1:0x1e4,_0x12f214:0x1f2,_0x3ef031:0x2c2,_0x195a06:0x26c,_0x21a309:0x2a5,_0x2d201b:0x2cf,_0x17835b:0x234,_0x5e136e:0x258},_0x331940={_0xd55dd0:0x169,_0x373a94:0x119},_0x15627e={_0x23fc04:0x121,_0x492cff:0x274,_0x43cf2d:0x18a};function _0x3c6cae(_0x3e6d73,_0x10e45d,_0x2c09ec,_0x19f7c8){return _0x4d2912(_0x3e6d73,_0x10e45d-_0x15627e._0x23fc04,_0x10e45d-_0x15627e._0x492cff,_0x19f7c8-_0x15627e._0x43cf2d);}function _0xd927f5(_0x5e6e3f,_0x77ffc8,_0x489253,_0x410893){return _0x4d2912(_0x410893,_0x77ffc8-_0x331940._0xd55dd0,_0x489253-0x2fe,_0x410893-_0x331940._0x373a94);}while(this[_0x3c6cae(_0x31d3df._0x5a4efe,_0x31d3df._0x3b4c83,_0x31d3df._0x227730,_0x31d3df._0x292917)+_0xd927f5(0x282,_0x31d3df._0x89bc04,_0x31d3df._0x1c8fbc,0x2ce)][_0x3c6cae(0x213,_0x31d3df._0x20f1fd,_0x31d3df._0x3be909,0x1fe)]){const _0x497eae=this[_0xd927f5(0x1f3,_0x31d3df._0x9da9ce,_0x31d3df._0x149faa,_0x31d3df._0x38b3c5)+_0xd927f5(_0x31d3df._0x3abd50,_0x31d3df._0x554a43,_0x31d3df._0x3eff28,_0x31d3df._0x43b623)][_0x3c6cae(_0x31d3df._0x4ca723,_0x31d3df._0x26b6f1,_0x31d3df._0xcc45a1,_0x31d3df._0x12f214)]();try{await _0x497eae();if(this[_0xd927f5(_0x31d3df._0x3ef031,_0x31d3df._0x195a06,_0x31d3df._0x21a309,_0x31d3df._0x2d201b)])return;}catch(_0x3d2700){this[_0xd927f5(_0x31d3df._0x17835b,_0x31d3df._0x5e136e,0x237,0x1fe)](_0x3d2700);}}}['_internalB'+'ackgroundR'+'un'](_0x3e71bf){const _0x33dfe1={_0x5d35d8:0x4cb,_0x598fd1:0x4b6,_0xbbc1a6:0x494,_0x8ba26d:0x4ba,_0x4e7891:0x50e,_0x3bf540:0x50a,_0x1f6619:0x4dd,_0x4c92dc:0x4c7,_0x49225d:0x4bb,_0x4fe289:0x4fa,_0x194412:0x125,_0x501346:0xe4,_0x5ecd9a:0x128},_0x534a0b={_0x28c7bf:0x17a,_0x2de244:0x92,_0x167b2d:0x6f},_0x5673fe={_0xb8f53e:0x583,_0x206fcb:0x177};function _0x4b6fc7(_0x26fea6,_0x43924f,_0x1248c3,_0x574b01){return _0x4d2912(_0x1248c3,_0x43924f-0x166,_0x574b01-_0x5673fe._0xb8f53e,_0x574b01-_0x5673fe._0x206fcb);}this[_0x4b6fc7(_0x33dfe1._0x5d35d8,_0x33dfe1._0x598fd1,_0x33dfe1._0xbbc1a6,_0x33dfe1._0x8ba26d)+_0x4b6fc7(_0x33dfe1._0x4e7891,0x4ed,0x4ee,_0x33dfe1._0x3bf540)][_0x4b6fc7(_0x33dfe1._0x1f6619,_0x33dfe1._0x4c92dc,_0x33dfe1._0x49225d,_0x33dfe1._0x4fe289)](_0x3e71bf);function _0x405f38(_0x96dd05,_0x412b70,_0x471376,_0x445fb7){return _0x4d2912(_0x471376,_0x412b70-_0x534a0b._0x28c7bf,_0x96dd05- -_0x534a0b._0x2de244,_0x445fb7-_0x534a0b._0x167b2d);}this[_0x405f38(-_0x33dfe1._0x194412,-_0x33dfe1._0x501346,-0xec,-_0x33dfe1._0x5ecd9a)+'FlushTasks']();}[_0x5d917a(0x5a0,0x58f,0x589,0x5d9)+_0x5d917a(0x5d5,0x61e,0x5c2,0x5c7)](_0x8b4373,_0x18c5d8){const _0x361cfb={_0x31b0de:0x5cf,_0x337a7b:0x5b2,_0x505f7b:0x5d8,_0x200b4c:0x309,_0x31782c:0x30f,_0x590de4:0x329,_0xdb96ec:0x5ba,_0x75b03f:0x582,_0x5099f4:0x589,_0x19dfa2:0x31c,_0x25f49b:0x352,_0x1caddd:0x31e,_0x30da4c:0x30e,_0x49f2f4:0x2cd,_0x7fc01e:0x2c8},_0x2b5793={_0x43e9d4:0x0,_0x3917fe:0xb6},_0x1c3bba=this[_0x3d0284(_0x361cfb._0x31b0de,_0x361cfb._0x337a7b,_0x361cfb._0x505f7b,0x5aa)+_0x164405(_0x361cfb._0x200b4c,0x2d6,_0x361cfb._0x31782c,_0x361cfb._0x590de4)+'ptions']['get'](_0x8b4373);if(!_0x1c3bba)return;function _0x164405(_0x226238,_0x48a823,_0x5ae043,_0x3b91a5){return _0x4d2912(_0x226238,_0x48a823-0x55,_0x5ae043-0x383,_0x3b91a5-0x1f4);}const _0xc3c290=!_0x18c5d8[_0x3d0284(0x5a8,_0x361cfb._0xdb96ec,_0x361cfb._0x75b03f,_0x361cfb._0x5099f4)]?{'videoMuted':!![],'audioMuted':!![]}:{'videoMuted':_0x18c5d8[_0x164405(_0x361cfb._0x19dfa2,_0x361cfb._0x25f49b,_0x361cfb._0x1caddd,_0x361cfb._0x30da4c)],'audioMuted':_0x18c5d8[_0x164405(_0x361cfb._0x49f2f4,_0x361cfb._0x7fc01e,0x2b4,0x27c)]};function _0x3d0284(_0x11689f,_0x341cc3,_0x130052,_0x39ace9){return _0x5d917a(_0x11689f-_0x2b5793._0x43e9d4,_0x130052,_0x130052-0x8f,_0x39ace9-_0x2b5793._0x3917fe);}for(const _0x2c19be of _0x1c3bba){_0x2c19be['push'](_0xc3c290);}}async[_0x4d2912(-0x8b,-0xe1,-0xa4,-0xa3)+_0x5d917a(0x58f,0x56c,0x5a8,0x58f)+'ts'](){const _0x113680={_0x44b71c:0x20d,_0x339655:0x1f6,_0x3393c8:0x252,_0x1c2108:0x1de,_0x4f54db:0x2bf,_0x33594a:0x2bb,_0x44852e:0x2fb,_0x59b125:0x324,_0xd7ab2d:0x2e2,_0x270243:0x2ad,_0x35ba09:0x308,_0x348b5b:0x2f0,_0x159133:0x2d8,_0x2d0b3f:0x2ea,_0x1a912c:0x316,_0xf40af6:0x1d6,_0x2402e8:0x200,_0x13d895:0x197,_0x2784e7:0x194,_0x1604db:0x17b,_0x1f1420:0x1d4,_0x36f5d8:0x1f4,_0xbb6a64:0x1fc,_0x5a79a5:0x1da,_0x1cedf9:0x1b7,_0x587d60:0x1ad,_0x38b199:0x1e7,_0x4177fe:0x1f0,_0x422b9e:0x1be,_0x5426b4:0x1bd,_0x4b4402:0x1e0,_0x4b1f25:0x1fd,_0x5a94d2:0x1c6,_0x42ae7d:0x183,_0x1725d9:0x1b9,_0x2b426d:0x287,_0x300eb3:0x2ca,_0x4785ed:0x2e1,_0x57e7f5:0x2a8,_0x470e7b:0x21b,_0x4ec3cb:0x1d7,_0x9c2f2f:0x221,_0x8360df:0x1d8,_0x13a507:0x238,_0x4439fa:0x290,_0x3771f7:0x2d7,_0x100ab8:0x2d2,_0x3d6b66:0x1e5,_0xddbd28:0x20e,_0x2fa935:0x21c,_0x255247:0x1ab,_0x3aab24:0x2e9,_0x1e98a8:0x2d0,_0xa4187:0x2a8,_0x5e9488:0x273,_0x38cbe4:0x2b1,_0x10f2d5:0x2ac,_0x12247e:0x1ee,_0x6b580a:0x1a7,_0x52d27:0x21c,_0x3db920:0x274,_0x2f682b:0x2be,_0x1c4dc7:0x2f9,_0x205b35:0x21d,_0x5eac80:0x207,_0x5d1069:0x312,_0x2d014d:0x307,_0x17799e:0x323,_0x3dc8bf:0x1b8,_0x1593a1:0x196,_0x412dce:0x1d1,_0x30954a:0x1eb,_0xf0acf6:0x1a4,_0x2124f8:0x1ac,_0x120c83:0x1bf,_0xa6024c:0x1a2,_0x19eed3:0x2ed,_0xf022ca:0x2a8,_0x543f36:0x2ef,_0x12233b:0x2be,_0x4a4e7b:0x1ea,_0x3455e2:0x22d,_0x364036:0x30f,_0x24fe88:0x2d5,_0x5d14b8:0x2e6,_0x2ea96d:0x300,_0x22ffb2:0x1ff,_0x265f8d:0x215,_0x5b34ed:0x238,_0x5c4f7f:0x1b5,_0x373d58:0x19f},_0x3ff04c={_0x4e903c:0x72,_0x2806b3:0xcc,_0x5203ca:0xa3,_0x384525:0x101,_0x5adb8f:0xd7,_0x3a15a8:0xd5,_0x516642:0xfa,_0x3b560b:0x52,_0x57b952:0x41,_0xc2d5fe:0x3f,_0x575123:0xda,_0x32d731:0xb3,_0xa89ff2:0xe3,_0x382878:0x13d,_0x58f9ad:0x162},_0x3cb9c3={_0x8f62d3:0x14d,_0x255b18:0xfe},_0x1f93b9={_0x326ecc:0x577,_0x21ae17:0x575,_0x4aec91:0x598,_0x2326f5:0x5e,_0x7c35f5:0x3d,_0x5b879d:0x67,_0x29370a:0x8c,_0x50eb8c:0x81,_0x1685cf:0x99,_0x46a796:0x2d,_0x3f783e:0x13,_0x3e8380:0x1,_0x2ec0c6:0x538,_0x1bab9d:0x511,_0x4ca585:0x55f,_0x482725:0x67,_0x3f677b:0xa4,_0x5133e6:0x6b},_0x345bac={_0x2d1e5f:0x16e,_0x479255:0x287,_0x28c771:0xe3},_0x247063={_0x4d4b7b:0x16e,_0x64174:0x36};function _0x443ef7(_0x7082f9,_0xa5b172,_0x2adad4,_0x44844c){return _0x5d917a(_0xa5b172- -0x2cc,_0x44844c,_0x2adad4-_0x247063._0x4d4b7b,_0x44844c-_0x247063._0x64174);}this[_0x751e1e(_0x113680._0x44b71c,_0x113680._0x339655,_0x113680._0x3393c8,_0x113680._0x1c2108)+_0x443ef7(_0x113680._0x4f54db,0x2bb,_0x113680._0x33594a,_0x113680._0x44852e)+'n']=this[_0x443ef7(_0x113680._0x59b125,_0x113680._0xd7ab2d,_0x113680._0x270243,_0x113680._0x35ba09)][_0x443ef7(_0x113680._0x348b5b,_0x113680._0x159133,_0x113680._0x2d0b3f,_0x113680._0x1a912c)+'resence'](this['callId']),this['_presenceS'+_0x751e1e(_0x113680._0xf40af6,0x1e6,_0x113680._0x2402e8,_0x113680._0x13d895)+'n']['on']('error',this[_0x751e1e(0x1c0,_0x113680._0x2784e7,0x1b1,_0x113680._0x1604db)]);function _0x751e1e(_0x5f19be,_0x4fe595,_0x4c403f,_0x5195e3){return _0x4d2912(_0x5195e3,_0x4fe595-_0x345bac._0x2d1e5f,_0x5f19be-_0x345bac._0x479255,_0x5195e3-_0x345bac._0x28c771);}try{for await(const _0x59f61b of this[_0x751e1e(_0x113680._0x44b71c,_0x113680._0x1f1420,_0x113680._0x36f5d8,_0x113680._0xbb6a64)+_0x751e1e(0x1d6,_0x113680._0x5a79a5,_0x113680._0x1cedf9,_0x113680._0x587d60)+'n']){this[_0x751e1e(_0x113680._0x38b199,_0x113680._0x4177fe,0x1ef,_0x113680._0x422b9e)][_0x751e1e(_0x113680._0x5426b4,_0x113680._0x4b4402,_0x113680._0x1604db,_0x113680._0x4b1f25)](_0x59f61b);if(_0x59f61b['type']===PRESENCE_EVENTS[_0x751e1e(_0x113680._0x5a94d2,_0x113680._0x42ae7d,_0x113680._0x1725d9,0x17c)+'NT'])this['_internalB'+_0x443ef7(_0x113680._0x2b426d,_0x113680._0x300eb3,_0x113680._0x4785ed,_0x113680._0x57e7f5)+'un'](()=>{const _0x2bda87={_0x4fbb08:0x39d,_0x3fa88f:0xac,_0x1a2120:0xf5};this[_0x3eee71(_0x1f93b9._0x326ecc,_0x1f93b9._0x21ae17,0x56f,_0x1f93b9._0x4aec91)+'rs'][_0x3afa76(-_0x1f93b9._0x2326f5,-0xa6,-0xa8,-_0x1f93b9._0x7c35f5)](_0x59f61b[_0x3afa76(-_0x1f93b9._0x5b879d,-_0x1f93b9._0x29370a,-_0x1f93b9._0x50eb8c,-_0x1f93b9._0x1685cf)]);function _0x3afa76(_0xcaf5d8,_0x46ca34,_0x5d6efd,_0x208d94){return _0x751e1e(_0xcaf5d8- -0x211,_0x46ca34-0x1aa,_0x5d6efd-0x179,_0x5d6efd);}function _0x3eee71(_0x5554fd,_0x568e89,_0x103261,_0x34147c){return _0x751e1e(_0x5554fd-_0x2bda87._0x4fbb08,_0x568e89-_0x2bda87._0x3fa88f,_0x103261-_0x2bda87._0x1a2120,_0x34147c);}return this[_0x3afa76(-0x14,-_0x1f93b9._0x46a796,_0x1f93b9._0x3f783e,-_0x1f93b9._0x3e8380)][_0x3eee71(_0x1f93b9._0x2ec0c6,0x550,_0x1f93b9._0x1bab9d,_0x1f93b9._0x4ca585)](_0x59f61b[_0x3afa76(-_0x1f93b9._0x482725,-_0x1f93b9._0x3f677b,-_0x1f93b9._0x5133e6,-0x33)]);});else{if(_0x59f61b['type']===PRESENCE_EVENTS[_0x751e1e(0x1d1,0x1c6,_0x113680._0x470e7b,_0x113680._0x4ec3cb)+_0x751e1e(_0x113680._0x9c2f2f,_0x113680._0x8360df,_0x113680._0x13a507,0x20e)])this[_0x443ef7(_0x113680._0x4439fa,_0x113680._0x3771f7,_0x113680._0x100ab8,0x2bf)+_0x751e1e(_0x113680._0x3d6b66,_0x113680._0xddbd28,_0x113680._0x2fa935,_0x113680._0x255247)+'un'](()=>{const _0x3c7c6f={_0x1e2525:0x30c,_0x39f8a6:0xb4,_0x15a7c2:0x1c6};this[_0x36c657(_0x3ff04c._0x4e903c,0x8d,_0x3ff04c._0x2806b3,_0x3ff04c._0x5203ca)+'rs'][_0x2cedb6(-_0x3ff04c._0x384525,-_0x3ff04c._0x5adb8f,-_0x3ff04c._0x3a15a8,-_0x3ff04c._0x516642)](_0x59f61b[_0x36c657(_0x3ff04c._0x3b560b,0x5d,_0x3ff04c._0x57b952,_0x3ff04c._0xc2d5fe)]);function _0x36c657(_0x43276a,_0xd6bfdb,_0x1b91f1,_0x17c215){return _0x751e1e(_0xd6bfdb- -_0x3cb9c3._0x8f62d3,_0xd6bfdb-0x1e7,_0x1b91f1-_0x3cb9c3._0x255b18,_0x1b91f1);}function _0x2cedb6(_0x26627b,_0x44a3fc,_0x1a7332,_0xa5fb2){return _0x751e1e(_0xa5fb2- -_0x3c7c6f._0x1e2525,_0x44a3fc-_0x3c7c6f._0x39f8a6,_0x1a7332-_0x3c7c6f._0x15a7c2,_0x44a3fc);}return this[_0x36c657(_0x3ff04c._0x575123,0xb0,0x76,0x8d)][_0x2cedb6(-_0x3ff04c._0x32d731,-0xc1,-0x10d,-_0x3ff04c._0xa89ff2)](_0x59f61b[_0x2cedb6(-_0x3ff04c._0x382878,-0x130,-0x180,-_0x3ff04c._0x58f9ad)]);});else{if(_0x59f61b[_0x443ef7(_0x113680._0x3aab24,_0x113680._0x1e98a8,_0x113680._0xa4187,0x296)]===PRESENCE_EVENTS[_0x443ef7(_0x113680._0x5e9488,_0x113680._0x38cbe4,0x276,_0x113680._0x10f2d5)+'TUS_CHANGE'+'D'])this[_0x751e1e(_0x113680._0x12247e,_0x113680._0x6b580a,_0x113680._0x52d27,0x1f8)][_0x443ef7(_0x113680._0x3db920,_0x113680._0x2f682b,0x2e3,_0x113680._0x1c4dc7)+'us'](_0x59f61b['swarmId'],_0x59f61b[_0x751e1e(0x1ff,_0x113680._0x205b35,_0x113680._0x5eac80,0x22a)],_0x59f61b[_0x443ef7(_0x113680._0x5d1069,_0x113680._0x2d014d,_0x113680._0x17799e,0x331)],_0x59f61b[_0x751e1e(_0x113680._0x3dc8bf,_0x113680._0x1593a1,_0x113680._0x412dce,0x1b1)]);else _0x59f61b[_0x751e1e(_0x113680._0x30954a,_0x113680._0xf0acf6,0x229,_0x113680._0x2124f8)]===PRESENCE_EVENTS[_0x751e1e(_0x113680._0x4ec3cb,_0x113680._0x4b1f25,_0x113680._0x120c83,_0x113680._0xa6024c)+_0x443ef7(_0x113680._0x19eed3,_0x113680._0xf022ca,_0x113680._0x543f36,_0x113680._0x12233b)]&&this[_0x751e1e(_0x113680._0x12247e,_0x113680._0x4a4e7b,0x230,_0x113680._0x3455e2)][_0x443ef7(_0x113680._0x364036,_0x113680._0x24fe88,_0x113680._0x5d14b8,_0x113680._0x2ea96d)+'us'](_0x59f61b[_0x751e1e(_0x113680._0x22ffb2,_0x113680._0x265f8d,_0x113680._0x36f5d8,_0x113680._0x5b34ed)]);}}}}catch(_0x113f45){this[_0x751e1e(0x1c0,_0x113680._0x5c4f7f,_0x113680._0x373d58,0x1af)](_0x113f45);}}['_updateLoc'+_0x5d917a(0x567,0x529,0x554,0x554)](_0x4719e2=null,_0xb78097=null){const _0x47b73c={_0x2574da:0x133,_0x34a1eb:0xe4,_0x66242f:0x10e,_0x4b36b7:0x111,_0x339978:0x314,_0x54c5af:0x36d,_0x259f4c:0x32a,_0x5b36f2:0x2ed,_0x420360:0x318,_0x2ea758:0x31a,_0x2b81d8:0xf1,_0x41149d:0x129,_0x289bcc:0x2da,_0x596568:0x2c7,_0x5b347f:0x300,_0x4b13d4:0x31b,_0x4ef5e3:0x305,_0x574865:0x317,_0x33a389:0x2d5,_0x5977ea:0x33c,_0x3cbcff:0x384,_0x165024:0x324,_0x891bde:0x2ff,_0x15b4d8:0xa0,_0x498bb8:0xff,_0x421c25:0xd3,_0x4fb91e:0xbe,_0x136264:0x149,_0x227366:0xf5,_0xa1763f:0x134,_0x135a9e:0x17d,_0x1772b3:0x308,_0x4a7338:0x2f4,_0x5b98c6:0x110,_0x3c665a:0x169,_0x39fe6e:0x146,_0x3e74b2:0xc9,_0x119403:0x114,_0x306c74:0x10e,_0x39efc0:0xec,_0x2f0a42:0x2da,_0x3c4074:0x310,_0x2b0019:0x2ca,_0x3a0a80:0x2cf,_0x5d848a:0x312,_0xe859e3:0x32e,_0x34e5c1:0x34d,_0x4c33d6:0x36a,_0x5a06e6:0x353,_0x4fb051:0xc2,_0x583e96:0xf7},_0xdcd768={_0x2850d6:0xb3},_0x5d8571={_0xc6ff08:0x19,_0x13702a:0x116};_0x4719e2=_0x4719e2||this[_0x56ae3d(_0x47b73c._0x2574da,_0x47b73c._0x34a1eb,_0x47b73c._0x66242f,_0x47b73c._0x4b36b7)][_0x3993de(0x33c,_0x47b73c._0x339978,_0x47b73c._0x54c5af,_0x47b73c._0x259f4c)+_0x3993de(0x31a,_0x47b73c._0x5b36f2,_0x47b73c._0x420360,_0x47b73c._0x2ea758)],_0xb78097=_0xb78097||this[_0x56ae3d(0x125,_0x47b73c._0x2b81d8,_0x47b73c._0x66242f,_0x47b73c._0x41149d)][_0x3993de(_0x47b73c._0x289bcc,_0x47b73c._0x596568,_0x47b73c._0x5b347f,_0x47b73c._0x4b13d4)+'amStatus'];const _0x285607=[];this[_0x3993de(_0x47b73c._0x4ef5e3,_0x47b73c._0x574865,0x2ff,_0x47b73c._0x33a389)][_0x3993de(_0x47b73c._0x5977ea,_0x47b73c._0x3cbcff,_0x47b73c._0x165024,_0x47b73c._0x891bde)+_0x56ae3d(_0x47b73c._0x15b4d8,_0x47b73c._0x498bb8,_0x47b73c._0x421c25,_0x47b73c._0x4fb91e)]&&_0x285607[_0x56ae3d(_0x47b73c._0x136264,_0x47b73c._0x227366,_0x47b73c._0xa1763f,_0x47b73c._0x135a9e)]({'id':this['local'][_0x3993de(0x33c,0x31b,_0x47b73c._0x1772b3,_0x47b73c._0x4a7338)+'am']['id'],'name':STREAM_TYPE[_0x56ae3d(_0x47b73c._0x5b98c6,_0x47b73c._0x3c665a,_0x47b73c._0x39fe6e,0x17a)],..._0x4719e2});function _0x56ae3d(_0x5bddbd,_0x8f5108,_0x57b78c,_0x5ab251){return _0x4d2912(_0x5bddbd,_0x8f5108-_0x5d8571._0xc6ff08,_0x57b78c-0x1bd,_0x5ab251-_0x5d8571._0x13702a);}this[_0x56ae3d(_0x47b73c._0x3e74b2,_0x47b73c._0x119403,_0x47b73c._0x306c74,_0x47b73c._0x39efc0)][_0x3993de(_0x47b73c._0x2f0a42,_0x47b73c._0x3c4074,_0x47b73c._0x2b0019,_0x47b73c._0x3a0a80)+'amOpened']&&_0x285607[_0x3993de(0x32b,_0x47b73c._0x5d848a,_0x47b73c._0xe859e3,0x2f4)]({'id':this['local']['screenStre'+'am']['id'],'name':STREAM_TYPE[_0x3993de(_0x47b73c._0x34e5c1,_0x47b73c._0x4c33d6,_0x47b73c._0x5a06e6,0x356)],..._0xb78097});function _0x3993de(_0x348e31,_0x444ab7,_0x878841,_0x32cef3){return _0x4d2912(_0x878841,_0x444ab7-_0xdcd768._0x2850d6,_0x348e31-0x3b4,_0x32cef3-0x124);}return this['api']['setPresent'](this[_0x56ae3d(_0x47b73c._0x2b81d8,_0x47b73c._0x4fb051,_0x47b73c._0x583e96,0xb6)],{'streams':_0x285607});}[_0x5d917a(0x591,0x5a7,0x5af,0x5b9)+'alCameraTr'+'acksChange'](_0xfb7eaf,_0xadc76f,_0x58533d){const _0xb584aa={_0x43e30d:0x2cf,_0x17532b:0x2b7,_0x2e31f4:0x563,_0x5c4796:0x527,_0x3e5659:0x584},_0x533fce={_0x587833:0x315,_0x3c1faf:0x32b,_0x362429:0x33b,_0x28c8e8:0x307,_0x2ca39a:0x2a0,_0x489571:0x605,_0x47c724:0x630,_0x22ec5e:0x628,_0x1e52ee:0x5c9,_0x5636c9:0x5bb,_0x24ee85:0x5ee,_0x3cb546:0x5ff,_0x10293f:0x5eb,_0x5c19ae:0x642,_0x415452:0x5a2,_0x276ff6:0x5d5,_0x99cfd9:0x5e5,_0x13f8f4:0x347,_0x3dcc0a:0x345,_0x23e20b:0x33f,_0x571e68:0x2c7,_0x1ffb20:0x5a7,_0x4dd5bb:0x5ed,_0x6b8a00:0x5e0,_0x1a48b8:0x55f},_0x45dd71={_0xf48252:0x151,_0x292822:0x605,_0x3bb643:0xd7},_0x15baf6={_0x54efdb:0x364,_0x1ee7d5:0x111};function _0x2b31ea(_0x792b7e,_0x3ea117,_0x51e35f,_0x14f503){return _0x4d2912(_0x51e35f,_0x3ea117-0x1a,_0x3ea117-_0x15baf6._0x54efdb,_0x14f503-_0x15baf6._0x1ee7d5);}function _0x52c01a(_0x22da6e,_0x5bb25c,_0x17d22f,_0x6d44be){return _0x4d2912(_0x6d44be,_0x5bb25c-_0x45dd71._0xf48252,_0x5bb25c-_0x45dd71._0x292822,_0x6d44be-_0x45dd71._0x3bb643);}this[_0x2b31ea(0x28e,_0xb584aa._0x43e30d,_0xb584aa._0x17532b,0x2ca)+_0x52c01a(0x540,_0xb584aa._0x2e31f4,_0xb584aa._0x5c4796,_0xb584aa._0x3e5659)+'un'](async()=>{const _0x43c3a0={_0x584cae:0x1c6,_0x30accc:0x73,_0x1a8324:0x86},_0x394ead={_0x327e83:0x64,_0x2ff007:0x257,_0x3905ca:0x1d7};for(const _0xc32795 of this[_0x36a82e(_0x533fce._0x587833,_0x533fce._0x3c1faf,_0x533fce._0x587833,_0x533fce._0x362429)]['clients']()){if(_0xc32795['closed']||!_0xc32795['ready'])continue;if(_0xfb7eaf)await _0xc32795[_0x36a82e(0x2f2,_0x533fce._0x28c8e8,0x2d6,_0x533fce._0x2ca39a)+_0x340c2b(_0x533fce._0x489571,_0x533fce._0x47c724,_0x533fce._0x22ec5e,_0x533fce._0x489571)](this[_0x340c2b(_0x533fce._0x1e52ee,_0x533fce._0x5636c9,_0x533fce._0x24ee85,0x5ef)][_0x340c2b(0x60c,_0x533fce._0x3cb546,_0x533fce._0x10293f,_0x533fce._0x5c19ae)]);if(_0xadc76f)await _0xc32795[_0x340c2b(_0x533fce._0x415452,_0x533fce._0x276ff6,0x5e0,_0x533fce._0x99cfd9)+'ack'](this['local'][_0x36a82e(_0x533fce._0x13f8f4,_0x533fce._0x3dcc0a,0x303,_0x533fce._0x23e20b)]);}function _0x36a82e(_0x2aae18,_0x13d900,_0x4a80f5,_0x314152){return _0x52c01a(_0x2aae18-_0x394ead._0x327e83,_0x4a80f5- -_0x394ead._0x2ff007,_0x4a80f5-_0x394ead._0x3905ca,_0x2aae18);}function _0x340c2b(_0x23813c,_0x36fc0d,_0x53b99b,_0x402deb){return _0x52c01a(_0x23813c-_0x43c3a0._0x584cae,_0x23813c-_0x43c3a0._0x30accc,_0x53b99b-_0x43c3a0._0x1a8324,_0x36fc0d);}this[_0x36a82e(0x2a8,0x2bf,_0x533fce._0x571e68,0x2a6)+_0x340c2b(_0x533fce._0x1ffb20,_0x533fce._0x4dd5bb,_0x533fce._0x6b8a00,_0x533fce._0x1a48b8)](_0x58533d);});}[_0x5d917a(0x591,0x5d9,0x5a1,0x574)+_0x4d2912(-0x8e,-0x9e,-0xc5,-0x8e)+_0x5d917a(0x5bd,0x5e0,0x5f6,0x59e)](_0x56bcbf,_0x122ba5){const _0x555880={_0x1ded3a:0x147,_0x40f061:0x116,_0x3cd155:0xe1,_0x42b62a:0x11e},_0x12569a={_0xe3ad1f:0xad,_0x1ea14c:0x121,_0x270b01:0xec,_0x3104d2:0xee,_0x151560:0xcf,_0x29e919:0xce,_0x27e3ab:0x9f,_0x4eb082:0xfe,_0x167e3d:0xb3,_0xf1a0b7:0x60,_0x37a914:0x98,_0x26a440:0x9a,_0xbe8131:0x67,_0x78a959:0x87,_0x2929a5:0x69,_0x2b35e6:0x6d,_0x27f045:0x3b,_0x5685ec:0xa,_0x38c920:0x40,_0x2637dd:0x2a,_0x1c3681:0x79,_0x297141:0x65},_0x47a9ab={_0x4d92e1:0x56,_0x280653:0x1d2},_0x161516={_0x5ccfe2:0x5c},_0x3616b1={_0x4efa9c:0x54};function _0x1d5063(_0x4cd20b,_0x38a263,_0x26fe5a,_0x34ce7b){return _0x4d2912(_0x26fe5a,_0x38a263-0x1a6,_0x38a263-0x1b8,_0x34ce7b-_0x3616b1._0x4efa9c);}this['_internalB'+_0x1d5063(_0x555880._0x1ded3a,_0x555880._0x40f061,_0x555880._0x3cd155,_0x555880._0x42b62a)+'un'](async()=>{function _0x1581e6(_0x54d5cf,_0x56097f,_0x32ddc6,_0x423fad){return _0x1d5063(_0x54d5cf-0xe8,_0x56097f- -0x91,_0x54d5cf,_0x423fad-_0x161516._0x5ccfe2);}function _0x4a9876(_0x300604,_0x4d2382,_0x245287,_0x10813e){return _0x1d5063(_0x300604-0x1ac,_0x10813e- -_0x47a9ab._0x4d92e1,_0x300604,_0x10813e-_0x47a9ab._0x280653);}for(const _0x26017a of this[_0x4a9876(0x8f,0xf8,_0x12569a._0xe3ad1f,0xc9)][_0x4a9876(_0x12569a._0x1ea14c,_0x12569a._0x270b01,_0x12569a._0x3104d2,0x107)]()){if(_0x26017a[_0x1581e6(_0x12569a._0x151560,_0x12569a._0x29e919,_0x12569a._0x27e3ab,_0x12569a._0x4eb082)]||!_0x26017a[_0x1581e6(_0x12569a._0x167e3d,0x97,_0x12569a._0xf1a0b7,_0x12569a._0x37a914)])continue;if(_0x56bcbf)await _0x26017a[_0x1581e6(_0x12569a._0x26a440,_0x12569a._0xbe8131,0x7c,_0x12569a._0x78a959)+'rack'](this['local'][_0x4a9876(_0x12569a._0x2929a5,_0x12569a._0x2b35e6,_0x12569a._0x27f045,0x77)+'k']);}this[_0x1581e6(_0x12569a._0x5685ec,_0x12569a._0x38c920,_0x12569a._0x2637dd,_0x12569a._0x1c3681)+_0x4a9876(0x5a,0xa0,_0x12569a._0x297141,0x91)](null,_0x122ba5);});}[_0x5d917a(0x591,0x5bc,0x590,0x559)+_0x5d917a(0x54f,0x520,0x507,0x588)+_0x5d917a(0x5b1,0x5ca,0x5d4,0x568)](){const _0x1a6b60={_0x20943b:0x49f,_0x49e0df:0x3a4,_0x431b71:0x365,_0x38ae58:0x356},_0x10d3fb={_0x2d37fb:0x1b6,_0x37e11f:0x1b4,_0x5600a6:0x147,_0x1c5ef6:0x17e},_0xc04663={_0x204f96:0xdf,_0x453110:0x177},_0x3b3267={_0x5a040b:0xb1,_0x43fd76:0xb0},_0x567a4d={_0x3bd89b:0xc6,_0x4551c3:0xc0};function _0x89a9b2(_0x1ed0b2,_0x1749e9,_0x5c0f89,_0x2c4b36){return _0x5d917a(_0x1749e9- -0x231,_0x5c0f89,_0x5c0f89-_0x567a4d._0x3bd89b,_0x2c4b36-_0x567a4d._0x4551c3);}function _0xc165ff(_0x50a345,_0x4b488a,_0x37ecaf,_0x190f62){return _0x4d2912(_0x37ecaf,_0x4b488a-_0x3b3267._0x5a040b,_0x4b488a-0x533,_0x190f62-_0x3b3267._0x43fd76);}this[_0xc165ff(0x4c7,0x49e,0x47d,_0x1a6b60._0x20943b)+_0x89a9b2(_0x1a6b60._0x49e0df,_0x1a6b60._0x431b71,0x34b,_0x1a6b60._0x38ae58)+'un'](()=>{function _0x4dec4d(_0x5c7bb1,_0x55503a,_0x41dbd0,_0x59cbdf){return _0x89a9b2(_0x5c7bb1-_0xc04663._0x204f96,_0x59cbdf- -0x1a2,_0x55503a,_0x59cbdf-_0xc04663._0x453110);}this[_0x4dec4d(_0x10d3fb._0x2d37fb,_0x10d3fb._0x37e11f,_0x10d3fb._0x5600a6,_0x10d3fb._0x1c5ef6)+'alPresence']();});}async[_0x4d2912(-0xe1,-0x89,-0xa4,-0xd6)+_0x4d2912(-0x100,-0xa2,-0xbc,-0xff)](){const _0x5bad85={_0x5f4e91:0x17a,_0x252c57:0x157,_0x272ce7:0x122,_0x276b5b:0x147,_0x18a003:0x192,_0x51b6a1:0x18c,_0x3be1e0:0x1b2,_0x5a2d51:0x164,_0x34cc11:0x162,_0x31dd64:0x191,_0x25ef3c:0x176,_0x58ecf3:0x15d,_0x482893:0x14c,_0x24032c:0x12f,_0x58f81b:0xf2,_0x16fc0d:0x16f,_0x2d2426:0x194,_0x38ac71:0x173,_0x18d457:0x1a4,_0x11fdc:0x170,_0x4122e8:0x18b,_0x401785:0x160,_0x3ec4fa:0x14b,_0x1e0623:0x178,_0x2b5458:0x15e,_0x226dee:0x18b,_0x16e4d2:0x1d6,_0x3093e6:0x1b9,_0x1cecdf:0x1d1,_0x447560:0x178,_0x35f928:0x177,_0x3b63f4:0x1a2,_0x2fe127:0x17d,_0x4bb396:0x14d,_0x262a5b:0x19c,_0x1d8c86:0x174,_0x219d1f:0x134,_0x826f07:0xfd,_0x43e72a:0x151,_0x3f8dda:0x145,_0x1060ad:0x153,_0x55045e:0xfe,_0x1fb9b1:0x12d,_0x4b2a66:0x129,_0x51ea82:0x144,_0x44d7e0:0x123,_0x2d2d97:0x17e,_0x5230ec:0x11e,_0x3d4ef7:0x17a,_0x2a712b:0x17c,_0x554084:0x12a,_0x2bf1db:0x159,_0x1b9913:0x110,_0x9912a0:0x137,_0x36c93f:0x142,_0x311550:0x129,_0x11f9c5:0x196,_0x2da17a:0x17c,_0x112de1:0x1b5,_0x156c91:0x1ac,_0x3b882d:0x133,_0x4b4b73:0x143,_0x5c4a9e:0x168},_0x26401c={_0x62bc24:0x89,_0x57ba6a:0xd8},_0x514488={_0x11cbae:0x42e,_0x13cb31:0x126,_0xacb829:0x19};this[_0x4c21f8(_0x5bad85._0x5f4e91,_0x5bad85._0x252c57,_0x5bad85._0x272ce7,_0x5bad85._0x276b5b)+_0x4248bc(-_0x5bad85._0x18a003,-_0x5bad85._0x51b6a1,-0x1b9,-_0x5bad85._0x3be1e0)]=this[_0x4248bc(-_0x5bad85._0x5a2d51,-0x145,-_0x5bad85._0x34cc11,-_0x5bad85._0x31dd64)][_0x4c21f8(0x1c0,_0x5bad85._0x25ef3c,_0x5bad85._0x58ecf3,_0x5bad85._0x482893)+_0x4c21f8(0xfd,_0x5bad85._0x24032c,0x175,_0x5bad85._0x58f81b)+'s'](this[_0x4248bc(-_0x5bad85._0x16fc0d,-_0x5bad85._0x2d2426,-0x19e,-_0x5bad85._0x38ac71)]),this[_0x4248bc(-_0x5bad85._0x18d457,-_0x5bad85._0x11fdc,-_0x5bad85._0x4122e8,-_0x5bad85._0x401785)+'cription']['on'](_0x4c21f8(0x13d,_0x5bad85._0x3ec4fa,0x130,_0x5bad85._0x1e0623),this['onerror']);function _0x4c21f8(_0x248938,_0x3d2ca9,_0x2afb04,_0x5c258a){return _0x5d917a(_0x3d2ca9- -_0x514488._0x11cbae,_0x2afb04,_0x2afb04-_0x514488._0x13cb31,_0x5c258a-_0x514488._0xacb829);}function _0x4248bc(_0x2d9950,_0x3ab585,_0x4047a3,_0x5ec5c1){return _0x4d2912(_0x2d9950,_0x3ab585-_0x26401c._0x62bc24,_0x4047a3- -_0x26401c._0x57ba6a,_0x5ec5c1-0x6);}try{for await(const _0x3fd6c1 of this[_0x4248bc(-0x152,-_0x5bad85._0x2b5458,-_0x5bad85._0x226dee,-0x193)+_0x4248bc(-_0x5bad85._0x16e4d2,-0x1b4,-_0x5bad85._0x3093e6,-_0x5bad85._0x1cecdf)]){this[_0x4248bc(-0x175,-0x184,-_0x5bad85._0x447560,-0x142)][_0x4248bc(-0x1bb,-_0x5bad85._0x35f928,-_0x5bad85._0x3b63f4,-_0x5bad85._0x2fe127)](_0x3fd6c1);if(_0x3fd6c1[_0x4248bc(-_0x5bad85._0x4bb396,-_0x5bad85._0x262a5b,-_0x5bad85._0x1d8c86,-0x139)]===MEDIA_EVENTS['PROXY_OPEN'])this[_0x4c21f8(_0x5bad85._0x219d1f,0x137,_0x5bad85._0x826f07,0x122)+_0x4c21f8(0x14e,_0x5bad85._0x43e72a,_0x5bad85._0x3f8dda,_0x5bad85._0x1060ad)](_0x3fd6c1[_0x4c21f8(_0x5bad85._0x55045e,_0x5bad85._0x1fb9b1,_0x5bad85._0x4b2a66,_0x5bad85._0x51ea82)],_0x3fd6c1[_0x4c21f8(_0x5bad85._0x44d7e0,0x165,_0x5bad85._0x2d2d97,_0x5bad85._0x5230ec)]);else _0x3fd6c1[_0x4248bc(-_0x5bad85._0x3f8dda,-0x195,-_0x5bad85._0x1d8c86,-_0x5bad85._0x3d4ef7)]===MEDIA_EVENTS[_0x4248bc(-_0x5bad85._0x2a712b,-_0x5bad85._0x554084,-_0x5bad85._0x2bf1db,-_0x5bad85._0x1b9913)+'E']&&this[_0x4c21f8(0x14a,_0x5bad85._0x9912a0,_0x5bad85._0x36c93f,_0x5bad85._0x311550)+'xyClose'](_0x3fd6c1[_0x4248bc(-_0x5bad85._0x11f9c5,-_0x5bad85._0x2da17a,-_0x5bad85._0x112de1,-_0x5bad85._0x156c91)]);}}catch(_0x1f7b52){this[_0x4c21f8(_0x5bad85._0x3b882d,_0x5bad85._0x4b4b73,_0x5bad85._0x5c4a9e,0x118)](_0x1f7b52);}}[_0x5d917a(0x565,0x545,0x586,0x57d)+'xyOpen'](_0x11fedc,_0x5c248d){const _0x4e24d9={_0x566fb6:0x1d8,_0x52fa08:0x2b7,_0x90451e:0x2a8,_0x53ba46:0x2ee,_0x4508a7:0x2f8,_0x1b6f7a:0x2fe,_0x30220f:0x2b1,_0x35f683:0x2c3,_0x614bb:0x2cb,_0x2a1fef:0x304,_0x215514:0x2fc,_0x17d6e3:0x1cf,_0x8a5742:0x169,_0xe631bf:0x1b0,_0x22dcda:0x1e7,_0x35aef7:0x16e,_0x25f2b2:0x1d1,_0xcaeb8a:0x30a,_0x36e955:0x32c,_0x4cf6b8:0x322,_0x36453d:0x1ce,_0x490c3d:0x1b3,_0x30eb25:0x18b,_0x49ffa8:0x1cb,_0x4c86ba:0x33e,_0x277ed3:0x305,_0x3d2041:0x272,_0x3bac28:0x2ba,_0x2cef1d:0x2a3,_0x40aa3e:0x301,_0x3d83a2:0x331,_0x1f4838:0x303,_0x573167:0x1c0,_0x183e20:0x1a2,_0x25a2f4:0x302,_0x46708f:0x28a,_0x2860dc:0x2ba,_0x1cd035:0x270,_0x1c0223:0x1e8,_0x52aa87:0x1ea,_0xac7911:0x210,_0x5ca8eb:0x200,_0x2b2868:0x28d,_0x32f478:0x2e0,_0x11a8a4:0x2ba,_0x7d285e:0x276,_0xc58c29:0x17b,_0xa270c2:0x13d,_0x5a6e5b:0x2e5,_0x52bf50:0x32d,_0x5e8611:0x346,_0x18059c:0x362,_0x18d6e4:0x314,_0x42d0c6:0x340,_0x58d9d5:0x332,_0x12633c:0x358,_0x159f6f:0x356,_0x3e024a:0x310,_0x23e7e9:0x344,_0x4c819d:0x1f3,_0x320aad:0x1ef,_0x39a212:0x2fc,_0x4eee9a:0x328,_0x4e15d7:0x345,_0x400cfd:0x2f6,_0x4422f8:0x2c6},_0x269584={_0x207337:0xc9,_0x1e1f90:0x250},_0x34c4cc={_0x23f13d:0xf},_0x4d633a=this['swarmId']<_0x11fedc,_0x2f5732=new KeetWebRTCClient(_0x4d633a,_0x11fedc,_0x5c248d,this['local'][_0x33de25(_0x4e24d9._0x566fb6,0x1ee,0x1e3,0x20e)+'am']['id'],this[_0x3d127a(_0x4e24d9._0x52fa08,_0x4e24d9._0x90451e,_0x4e24d9._0x53ba46,_0x4e24d9._0x4508a7)][_0x3d127a(_0x4e24d9._0x1b6f7a,_0x4e24d9._0x30220f,_0x4e24d9._0x35f683,0x280)+'am']['id'],this[_0x3d127a(0x33b,_0x4e24d9._0x614bb,_0x4e24d9._0x2a1fef,_0x4e24d9._0x215514)],{'onerror':this[_0x33de25(0x189,_0x4e24d9._0x17d6e3,0x1ce,_0x4e24d9._0x8a5742)],'parentTracer':this[_0x33de25(_0x4e24d9._0xe631bf,_0x4e24d9._0x22dcda,_0x4e24d9._0x35aef7,_0x4e24d9._0x25f2b2)]});this[_0x3d127a(_0x4e24d9._0xcaeb8a,_0x4e24d9._0x36e955,0x304,_0x4e24d9._0x4cf6b8)][_0x33de25(_0x4e24d9._0x36453d,_0x4e24d9._0x490c3d,_0x4e24d9._0x30eb25,_0x4e24d9._0x49ffa8)](_0x11fedc,_0x2f5732),_0x2f5732['on'](_0x3d127a(0x346,_0x4e24d9._0x4c86ba,_0x4e24d9._0x1b6f7a,_0x4e24d9._0x277ed3),this[_0x3d127a(0x28d,_0x4e24d9._0x3d2041,_0x4e24d9._0x3bac28,_0x4e24d9._0x2cef1d)+_0x3d127a(_0x4e24d9._0x40aa3e,_0x4e24d9._0x3d83a2,0x2e9,_0x4e24d9._0x1f4838)]['bind'](this)),_0x2f5732['on'](_0x33de25(_0x4e24d9._0x573167,0x204,_0x4e24d9._0x183e20,0x1ad),this[_0x3d127a(_0x4e24d9._0x25a2f4,_0x4e24d9._0x46708f,_0x4e24d9._0x2860dc,_0x4e24d9._0x1cd035)+'RtcReady']['bind'](this));function _0x3d127a(_0x2afa35,_0x4a1cdd,_0x39eec1,_0x31b1bf){return _0x4d2912(_0x31b1bf,_0x4a1cdd-0x1d9,_0x39eec1-0x39d,_0x31b1bf-_0x34c4cc._0x23f13d);}_0x2f5732['on'](_0x33de25(_0x4e24d9._0x1c0223,_0x4e24d9._0x52aa87,_0x4e24d9._0xac7911,_0x4e24d9._0x5ca8eb),this[_0x3d127a(_0x4e24d9._0x2b2868,_0x4e24d9._0x32f478,_0x4e24d9._0x11a8a4,_0x4e24d9._0x7d285e)+_0x33de25(_0x4e24d9._0xc58c29,0x168,0x15a,_0x4e24d9._0xa270c2)][_0x3d127a(0x36c,_0x4e24d9._0x5a6e5b,_0x4e24d9._0x52bf50,_0x4e24d9._0x5e8611)](this));const _0xe67d29=this[_0x3d127a(_0x4e24d9._0x18059c,_0x4e24d9._0x18d6e4,_0x4e24d9._0x42d0c6,_0x4e24d9._0x58d9d5)+_0x3d127a(_0x4e24d9._0x12633c,_0x4e24d9._0x159f6f,_0x4e24d9._0x3e024a,_0x4e24d9._0x23e7e9)]['get'](_0x11fedc);function _0x33de25(_0x456a66,_0xac347,_0xa5e337,_0x2b692d){return _0x4d2912(_0xa5e337,_0xac347-_0x269584._0x207337,_0x456a66-_0x269584._0x1e1f90,_0x2b692d-0x61);}_0xe67d29&&(this['_pendingSi'+_0x33de25(0x1c3,0x1d8,_0x4e24d9._0x4c819d,_0x4e24d9._0x320aad)][_0x3d127a(_0x4e24d9._0x39a212,0x30f,_0x4e24d9._0x4eee9a,_0x4e24d9._0x4e15d7)](_0x11fedc),_0x2f5732['handleSign'+_0x3d127a(0x2d4,_0x4e24d9._0x400cfd,_0x4e24d9._0x4422f8,0x2cc)](_0xe67d29));}[_0x5d917a(0x565,0x5a1,0x56d,0x59f)+_0x4d2912(-0x10e,-0xbf,-0xe0,-0xb6)](_0x3476f5){const _0x4adc15={_0xf6cf01:0x221,_0x439a4d:0x1eb,_0x7959fe:0x214,_0x56f99b:0x22c,_0x428038:0x1d3,_0x1b49ba:0x21a,_0x38689a:0x25b,_0x10bd46:0x221,_0x54c266:0x29e,_0x2fba23:0x21f,_0x3f7f35:0x256,_0xcd8a47:0x20a,_0x1833be:0x26f,_0x511a72:0x27d,_0xa67bbc:0x242,_0x3a2d37:0x235},_0x33e436={_0x933c0:0x1d3,_0x5cc677:0x15c},_0x385a90={_0x3c27e6:0x385,_0x3ffbe0:0xa5,_0x5be654:0x19e},_0x5e9e0e=this[_0x2e8440(_0x4adc15._0xf6cf01,_0x4adc15._0x439a4d,_0x4adc15._0x7959fe,0x21a)]['getClient'](_0x3476f5);function _0x2e8440(_0x3745ee,_0x574164,_0x13c9c6,_0x356bfd){return _0x5d917a(_0x356bfd- -_0x385a90._0x3c27e6,_0x3745ee,_0x13c9c6-_0x385a90._0x3ffbe0,_0x356bfd-_0x385a90._0x5be654);}if(!_0x5e9e0e)return;this[_0x2e8440(0x214,_0x4adc15._0x56f99b,_0x4adc15._0x428038,_0x4adc15._0x1b49ba)][_0x2e8440(0x23b,0x1e3,_0x4adc15._0x38689a,_0x4adc15._0x10bd46)+'nt'](_0x3476f5);function _0x44c874(_0x1e3455,_0x435633,_0x935efa,_0x3da7fc){return _0x4d2912(_0x435633,_0x435633-_0x33e436._0x933c0,_0x1e3455-0x41c,_0x3da7fc-_0x33e436._0x5cc677);}this[_0x2e8440(_0x4adc15._0x54c266,_0x4adc15._0x2fba23,0x220,_0x4adc15._0x3f7f35)+_0x2e8440(_0x4adc15._0xcd8a47,0x208,_0x4adc15._0x1833be,0x226)]['delete'](_0x3476f5),_0x5e9e0e[_0x2e8440(_0x4adc15._0x511a72,_0x4adc15._0xa67bbc,_0x4adc15._0x3a2d37,0x24b)]();}async[_0x4d2912(-0xc3,-0x50,-0x85,-0x71)+_0x5d917a(0x581,0x5b9,0x5a3,0x581)](){const _0x1afda4={_0x2f968f:0x5,_0x1b24d3:0x59,_0x211028:0x1b,_0x2c6e21:0x81,_0x20e2d1:0x78,_0x161cb9:0x595,_0x1032d0:0x5a7,_0x23af68:0x5a7,_0x361581:0x5a5,_0x28892a:0x553,_0x50a0b9:0x530,_0x3d54b7:0x53a,_0xc18008:0x8b,_0x5df578:0xb4,_0x56105a:0x86,_0x22e8a5:0x94,_0x3c151d:0x569,_0x19e098:0x5ad,_0xef0853:0x54d,_0x26195b:0x7a,_0xe204b6:0x95,_0x228db8:0x3d,_0x25cd28:0xa7,_0x48b648:0x9e,_0x151da1:0x6e,_0xb62b09:0xca,_0x349199:0xb3,_0xdc8a4:0xb6,_0xc2ed6c:0x57a,_0x231452:0x57c,_0x467d95:0x55d,_0x1c99ee:0x58f,_0x58403c:0x59e,_0x295c73:0x5b6,_0x42eb9e:0x5a1,_0x45d7e5:0x5e1,_0x2bf832:0x586,_0x3bb5c3:0x559,_0x3b55ba:0x56c,_0x8b1fe6:0x588,_0x288647:0x546,_0xbf1aa2:0x573,_0x259209:0x57f,_0x5b6a7f:0xe1,_0x45b82e:0xd7,_0x10e9e3:0xef,_0x240684:0xa5},_0x1f1161={_0x3801b0:0x25,_0xb40f27:0x13f,_0x1848b7:0xc4},_0x35a128={_0x573cc3:0x17f,_0x195362:0x15d};function _0x567e44(_0x34ff42,_0x2a4e91,_0xb11791,_0x1d0ab1){return _0x4d2912(_0x34ff42,_0x2a4e91-_0x35a128._0x573cc3,_0x1d0ab1-0x32,_0x1d0ab1-_0x35a128._0x195362);}this[_0x567e44(-_0x1afda4._0x2f968f,-_0x1afda4._0x1b24d3,-_0x1afda4._0x211028,-0x4b)+_0x567e44(-_0x1afda4._0x2c6e21,-0x7e,-0x65,-_0x1afda4._0x20e2d1)]=this['api'][_0x174485(_0x1afda4._0x161cb9,_0x1afda4._0x1032d0,_0x1afda4._0x23af68,_0x1afda4._0x361581)+_0x174485(0x548,_0x1afda4._0x28892a,_0x1afda4._0x50a0b9,_0x1afda4._0x3d54b7)+'s'](this[_0x567e44(-_0x1afda4._0xc18008,-_0x1afda4._0x5df578,-_0x1afda4._0x56105a,-_0x1afda4._0x22e8a5)]),this['_signalSub'+_0x174485(_0x1afda4._0x3c151d,0x566,_0x1afda4._0x19e098,_0x1afda4._0xef0853)]['on']('error',this[_0x567e44(-0x97,-_0x1afda4._0x26195b,-0x5f,-_0x1afda4._0xe204b6)]);function _0x174485(_0x4a44da,_0x1ed2ee,_0xde4b24,_0x347daf){return _0x5d917a(_0x4a44da- -_0x1f1161._0x3801b0,_0x347daf,_0xde4b24-_0x1f1161._0xb40f27,_0x347daf-_0x1f1161._0x1848b7);}try{for await(const {swarmId:_0x1c8b40,signal:_0x2f1695}of this['_signalSub'+'scription']){this[_0x567e44(-_0x1afda4._0x228db8,-_0x1afda4._0x25cd28,-_0x1afda4._0x48b648,-_0x1afda4._0x151da1)][_0x567e44(-_0x1afda4._0xb62b09,-_0x1afda4._0x349199,-_0x1afda4._0xdc8a4,-0x98)]({'swarmId':_0x1c8b40,'signal':_0x2f1695});const _0x2b04c6=this[_0x174485(_0x1afda4._0xc2ed6c,_0x1afda4._0x231452,0x54c,_0x1afda4._0x467d95)][_0x174485(_0x1afda4._0x1c99ee,_0x1afda4._0x58403c,0x5b4,0x59f)](_0x1c8b40);if(!_0x2b04c6){this[_0x174485(_0x1afda4._0x295c73,_0x1afda4._0x42eb9e,_0x1afda4._0x45d7e5,_0x1afda4._0x2bf832)+_0x174485(_0x1afda4._0x2bf832,_0x1afda4._0x3bb5c3,_0x1afda4._0x3b55ba,_0x1afda4._0x8b1fe6)]['set'](_0x1c8b40,_0x2f1695);continue;}_0x2b04c6[_0x174485(_0x1afda4._0x288647,_0x1afda4._0xbf1aa2,0x50c,_0x1afda4._0x259209)+_0x567e44(-_0x1afda4._0x5b6a7f,-_0x1afda4._0x45b82e,-_0x1afda4._0x10e9e3,-_0x1afda4._0x240684)](_0x2f1695);}}catch(_0x860f97){this['onerror'](_0x860f97);}}async[_0x5d917a(0x555,0x55a,0x545,0x516)+_0x5d917a(0x5d4,0x58b,0x5dc,0x5f5)](_0x3ee1a9){const _0x5d68ac={_0x513c3e:0x557,_0x19ca8d:0x52c,_0x1bafe5:0x501,_0x3e1e1a:0x4dc,_0x564cf3:0x548,_0x509bda:0xea,_0x34e5f1:0xc8,_0x33f853:0xf4,_0x344ce0:0x9c,_0x4ca8f5:0xf5,_0x54dc53:0x9f,_0x2b47fd:0xbb,_0x16a0c7:0xbd,_0x251039:0xc6,_0x2fdd88:0xd2,_0x5532d5:0xd0,_0x2db57d:0x122,_0x5b9be9:0xff,_0x14ea70:0x50f,_0x34fe2b:0x50b,_0x1b6aaa:0x54d,_0x1920b6:0x578,_0x6d382d:0x54f,_0x1745a4:0x54a,_0x1195fe:0xc2,_0x5aa1a2:0xa6,_0x2d5075:0xb7},_0x489ee0={_0x1fabac:0x85,_0x2821e1:0xbd,_0x363d96:0x7d,_0x4b987a:0x81,_0x227618:0x61,_0x21e15d:0xc5,_0x5ce19d:0xc1,_0x223d98:0xc4,_0x222871:0x9a,_0x3b2457:0xeb,_0x4d9da3:0x439,_0x34c04f:0x46c,_0x59c039:0x411,_0x1962e4:0x444,_0x5592e3:0x4cf,_0x3a3616:0x4a2,_0x33a220:0xc9,_0x582624:0x92,_0x14b499:0x46,_0x11b6a3:0x39,_0x13de82:0x2e,_0x196624:0x54,_0x53e59e:0x49e,_0x32329a:0x4c8,_0x10d1cc:0x4c9,_0x1c265c:0x4cb,_0x352762:0x460,_0xfab5d3:0x461,_0x5ee972:0x424,_0x52b892:0x421,_0x162b65:0x43,_0x59fa7e:0x2d,_0x40c791:0x15,_0x3ab714:0xa1},_0x34746e={_0x3c032a:0x531},_0x5a1bbd={_0x31a772:0x73},_0x563e43={_0xaec985:0x1dd,_0x316de1:0x16c};this[_0x4683ec(_0x5d68ac._0x513c3e,0x554,_0x5d68ac._0x19ca8d,_0x5d68ac._0x1bafe5)][_0x4683ec(0x55e,_0x5d68ac._0x3e1e1a,0x517,_0x5d68ac._0x564cf3)+'us'](_0x3ee1a9['swarmId'],_0x3ee1a9[_0x2ca4cc(-_0x5d68ac._0x509bda,-_0x5d68ac._0x34e5f1,-0x102,-_0x5d68ac._0x33f853)+'raStreamId']),this[_0x2ca4cc(-_0x5d68ac._0x344ce0,-_0x5d68ac._0x4ca8f5,-_0x5d68ac._0x54dc53,-_0x5d68ac._0x2b47fd)][_0x2ca4cc(-_0x5d68ac._0x16a0c7,-_0x5d68ac._0x251039,-_0x5d68ac._0x2fdd88,-_0x5d68ac._0x5532d5)+'us'](_0x3ee1a9[_0x2ca4cc(-_0x5d68ac._0x2db57d,-0x132,-_0x5d68ac._0x2fdd88,-_0x5d68ac._0x5b9be9)],_0x3ee1a9[_0x4683ec(0x548,_0x5d68ac._0x14ea70,_0x5d68ac._0x34fe2b,_0x5d68ac._0x1b6aaa)+_0x4683ec(_0x5d68ac._0x1920b6,0x509,_0x5d68ac._0x6d382d,_0x5d68ac._0x1745a4)]);function _0x2ca4cc(_0x115565,_0x26b48b,_0x3d9206,_0x387d28){return _0x5d917a(_0x387d28- -0x65a,_0x3d9206,_0x3d9206-_0x563e43._0xaec985,_0x387d28-_0x563e43._0x316de1);}function _0x4683ec(_0x547ad4,_0x5439cc,_0x5cd786,_0x100918){return _0x5d917a(_0x5cd786- -_0x5a1bbd._0x31a772,_0x100918,_0x5cd786-0x195,_0x100918-0xb3);}this[_0x2ca4cc(-_0x5d68ac._0x1195fe,-0x8a,-_0x5d68ac._0x5aa1a2,-_0x5d68ac._0x2d5075)+'ackgroundR'+'un'](async()=>{const _0x533ba0={_0x4c1e07:0x186,_0x557500:0x10};function _0x569ee2(_0x19871d,_0xb9d27f,_0x54039e,_0x5c646b){return _0x2ca4cc(_0x19871d-_0x533ba0._0x4c1e07,_0xb9d27f-_0x533ba0._0x557500,_0x54039e,_0xb9d27f-0x152);}await _0x3ee1a9['setVideoTr'+_0x569ee2(_0x489ee0._0x1fabac,_0x489ee0._0x2821e1,0x77,_0x489ee0._0x363d96)](this[_0x569ee2(0xb6,_0x489ee0._0x4b987a,_0x489ee0._0x227618,_0x489ee0._0x21e15d)][_0x569ee2(_0x489ee0._0x5ce19d,_0x489ee0._0x223d98,_0x489ee0._0x222871,_0x489ee0._0x3b2457)]),await _0x3ee1a9[_0x382be7(_0x489ee0._0x4d9da3,_0x489ee0._0x34c04f,_0x489ee0._0x59c039,_0x489ee0._0x1962e4)+_0x382be7(0x49c,_0x489ee0._0x5592e3,_0x489ee0._0x3a3616,0x473)](this[_0x569ee2(_0x489ee0._0x33a220,_0x489ee0._0x4b987a,_0x489ee0._0x582624,_0x489ee0._0x14b499)]['audioTrack']);function _0x382be7(_0x2d5231,_0x5d52bc,_0x5d1678,_0x367280){return _0x2ca4cc(_0x2d5231-0x135,_0x5d52bc-0x1ed,_0x5d52bc,_0x2d5231-_0x34746e._0x3c032a);}await _0x3ee1a9[_0x569ee2(_0x489ee0._0x11b6a3,0x70,_0x489ee0._0x13de82,_0x489ee0._0x196624)+_0x382be7(_0x489ee0._0x53e59e,_0x489ee0._0x32329a,_0x489ee0._0x10d1cc,_0x489ee0._0x1c265c)](this[_0x382be7(_0x489ee0._0x352762,0x422,_0x489ee0._0xfab5d3,0x483)][_0x382be7(_0x489ee0._0x5ee972,0x42f,_0x489ee0._0x52b892,0x3ff)+'k']),this[_0x569ee2(0x3d,0x49,_0x489ee0._0x162b65,_0x489ee0._0x59fa7e)+_0x569ee2(_0x489ee0._0x13de82,0x5f,_0x489ee0._0x40c791,_0x489ee0._0x3ab714)]();});}[_0x4d2912(-0xc2,-0x10e,-0xe3,-0x122)+_0x4d2912(-0x76,-0xcc,-0xb4,-0xde)](_0x19e7ff,_0x516f7f){const _0x36fde6={_0x839e34:0x175,_0xe95cfb:0x18e,_0x35da1e:0x1ca,_0x35d0e8:0x184,_0x54f480:0x140,_0x2a99e3:0x181,_0x4161be:0x13a},_0x4085e5={_0x38a782:0x96,_0x269db9:0x59d,_0x440890:0x589,_0x525b6a:0x595,_0x2b0735:0x5a6,_0x33dc88:0x566,_0x161cd1:0x589},_0x1a8bfd={_0x390fcf:0xab,_0x2b01ee:0x223,_0x49cc6f:0x167},_0x58e9d0={_0x36d3f4:0x183,_0x28c7e7:0x194};function _0x1a7ea6(_0x533ce1,_0x10515b,_0x24b14e,_0x230ea6){return _0x5d917a(_0x230ea6- -_0x58e9d0._0x36d3f4,_0x10515b,_0x24b14e-0x36,_0x230ea6-_0x58e9d0._0x28c7e7);}function _0x1901bd(_0x14da0a,_0x4445e5,_0x175361,_0x33248c){return _0x4d2912(_0x175361,_0x4445e5-_0x1a8bfd._0x390fcf,_0x4445e5-_0x1a8bfd._0x2b01ee,_0x33248c-_0x1a8bfd._0x49cc6f);}this[_0x1901bd(_0x36fde6._0x839e34,_0x36fde6._0xe95cfb,_0x36fde6._0x35da1e,_0x36fde6._0x35d0e8)+_0x1901bd(_0x36fde6._0x54f480,_0x36fde6._0x2a99e3,0x1b1,_0x36fde6._0x4161be)+'un'](()=>{const _0x385b9e={_0x4ab4c3:0x185,_0x4bf113:0x1ce},_0x3e2f25={_0x4c8dfd:0x89,_0x11280c:0x72,_0x114eb0:0x384};function _0x1a8d2b(_0x3865fb,_0x57de0a,_0x51d12a,_0x5b1ae2){return _0x1a7ea6(_0x3865fb-_0x3e2f25._0x4c8dfd,_0x5b1ae2,_0x51d12a-_0x3e2f25._0x11280c,_0x57de0a- -_0x3e2f25._0x114eb0);}function _0xbd5e4e(_0x1a81e9,_0x277f45,_0x1d782e,_0x491ee2){return _0x1a7ea6(_0x1a81e9-_0x385b9e._0x4ab4c3,_0x491ee2,_0x1d782e-0x18b,_0x1a81e9-_0x385b9e._0x4bf113);}return this[_0x1a8d2b(_0x4085e5._0x38a782,0xa7,0x8e,0x6b)][_0xbd5e4e(_0x4085e5._0x269db9,0x56f,_0x4085e5._0x440890,_0x4085e5._0x525b6a)+'a'](this['callId'],_0x19e7ff[_0xbd5e4e(_0x4085e5._0x2b0735,_0x4085e5._0x33dc88,_0x4085e5._0x161cd1,0x588)],_0x516f7f);});}[_0x4d2912(-0x10e,-0xe3,-0xe3,-0xd4)+_0x5d917a(0x563,0x555,0x58c,0x59e)](_0x53dd7c){const _0x15067f={_0x30b299:0x81,_0x7f6df0:0x93,_0x4e4b3d:0x57,_0x5bcf31:0x34,_0x74601b:0x38,_0xad99ef:0x39,_0x24be78:0x8f,_0x128d06:0xca,_0x57dd70:0xe0,_0x5f560b:0x9a,_0x55482a:0x91,_0x4f7885:0x97,_0x8f9109:0x9e,_0x259674:0xfa,_0x1a4cd5:0xbd,_0x5965b7:0x77,_0x20f65e:0x9b,_0x47873f:0xa5,_0x305d76:0x88,_0xcce443:0xc6,_0x449b08:0xf8,_0x3b44fe:0xb0,_0x550e26:0xde,_0x2740a5:0x10a,_0x39cef5:0x13d,_0xc65f8c:0x120,_0x538f83:0x99,_0x9494f5:0x8c,_0x2cfc4a:0x70,_0x573486:0x9c,_0x574a30:0xbd,_0x6eff37:0xb6,_0x5b5015:0xc3,_0x39336f:0x8f,_0x4b3777:0x74,_0x1b91cb:0xd6,_0x3db44b:0xb7,_0x23d208:0x6a,_0x277e5f:0xa9,_0x2304bc:0x5f,_0x45ec52:0x86,_0x4ba0f2:0x7e,_0xce3c72:0x126,_0x319054:0xe0,_0x15ace6:0xf9,_0x23e8bd:0x10c},_0x248af1={_0x262edc:0x51b,_0xac8bae:0x69,_0x2cab29:0x1cb},_0x516503={_0x2bdc4d:0x65e,_0x401307:0x13a,_0x78dcdc:0x159};function _0x297ea8(_0x4689e8,_0x1edd82,_0x5a7196,_0x5d0d7f){return _0x5d917a(_0x1edd82- -_0x516503._0x2bdc4d,_0x5d0d7f,_0x5a7196-_0x516503._0x401307,_0x5d0d7f-_0x516503._0x78dcdc);}function _0xcdf572(_0x3e113f,_0x2bb4e9,_0x2b81f4,_0x197929){return _0x5d917a(_0x197929- -_0x248af1._0x262edc,_0x2b81f4,_0x2b81f4-_0x248af1._0xac8bae,_0x197929-_0x248af1._0x2cab29);}_0x53dd7c[_0xcdf572(_0x15067f._0x30b299,_0x15067f._0x7f6df0,_0x15067f._0x4e4b3d,0x4b)+_0xcdf572(0x5a,_0x15067f._0x5bcf31,_0x15067f._0x74601b,_0x15067f._0xad99ef)]!==null&&this[_0x297ea8(-0xa4,-_0x15067f._0x24be78,-0x66,-_0x15067f._0x128d06)+_0x297ea8(-_0x15067f._0x57dd70,-_0x15067f._0x5f560b,-_0x15067f._0x55482a,-_0x15067f._0x4f7885)+_0xcdf572(0xba,_0x15067f._0x8f9109,_0x15067f._0x259674,_0x15067f._0x1a4cd5)][_0x297ea8(-_0x15067f._0x5965b7,-_0x15067f._0x20f65e,-_0x15067f._0x47873f,-_0x15067f._0x305d76)](_0x53dd7c[_0x297ea8(-_0x15067f._0xcce443,-_0x15067f._0x449b08,-_0x15067f._0x3b44fe,-0x10a)+_0x297ea8(-_0x15067f._0x550e26,-_0x15067f._0x2740a5,-_0x15067f._0x39cef5,-_0x15067f._0xc65f8c)]),_0x53dd7c[_0xcdf572(0x28,_0x15067f._0x538f83,_0x15067f._0x9494f5,0x63)+_0x297ea8(-_0x15067f._0x2cfc4a,-_0x15067f._0x573486,-_0x15067f._0x574a30,-_0x15067f._0x6eff37)]!==null&&this[_0x297ea8(-_0x15067f._0x5b5015,-_0x15067f._0x39336f,-_0x15067f._0x4b3777,-_0x15067f._0x1b91cb)+_0xcdf572(0xa9,_0x15067f._0x3db44b,_0x15067f._0x23d208,_0x15067f._0x277e5f)+_0x297ea8(-_0x15067f._0x2304bc,-_0x15067f._0x45ec52,-_0x15067f._0x128d06,-_0x15067f._0x4ba0f2)]['delete'](_0x53dd7c[_0x297ea8(-_0x15067f._0xce3c72,-_0x15067f._0x319054,-_0x15067f._0x15ace6,-_0x15067f._0x23e8bd)+'enStreamId']);}['subscribeR'+_0x5d917a(0x5bc,0x5d4,0x5c4,0x586)+'m'](_0x16d558){const _0x46d99c={_0x40f446:0x350,_0x45300c:0x346,_0x1623b5:0x353,_0x1c7d81:0x345,_0x55909b:0x347,_0x257d4b:0x384,_0x510c18:0x359,_0x431b59:0x369,_0x5e3cad:0x2d9,_0x4309fb:0x313,_0x20b342:0x325,_0x147bde:0x53f,_0x16551c:0x56e,_0x5b7c5f:0x56a,_0x4555f7:0x52c,_0x1a588f:0x59a,_0x378bc1:0x572,_0x50d1bf:0x590,_0x134512:0x555,_0x4072f7:0x55c,_0x40374e:0x335,_0x503955:0x320,_0xfea60a:0x2e7,_0x364ed7:0x30d,_0x1d001b:0x2c4,_0x457a98:0x516,_0x3d0a11:0x50d},_0x448880={_0x5ca733:0x575,_0x3c8e9e:0x574,_0x360fea:0x599,_0x52f108:0x553,_0x36d160:0x551,_0x328f39:0x58e,_0x33af50:0x591,_0x408995:0x56a,_0x23dbbb:0x562,_0xa929ab:0x55c,_0x1a0328:0x53c,_0x5451e3:0x3c2,_0x2363e5:0x3ee,_0x14fb96:0x3f1,_0x5963bf:0x3f2,_0x443819:0x416,_0x5c1daa:0x3e8,_0x42f1b0:0x584,_0xee720:0x5c2,_0xe327c4:0x5de,_0x51d7e7:0x596,_0x138f15:0x5a9,_0x27e857:0x56b,_0x571dd8:0x5a2,_0x2b9516:0x5b1},_0x3c2625={_0x5d11b9:0x1b0,_0x3a01de:0xc6,_0x1160be:0xda},_0xe7e3c5={_0x27bd5c:0x27f,_0x36fb87:0xb3,_0x558d7f:0x51},_0xd665b4={_0x5091be:0x19c,_0x5b179d:0x145},_0x26d504=this;function _0x4de236(_0x4e24cd,_0x20f624,_0x4bb183,_0x41d049){return _0x4d2912(_0x41d049,_0x20f624-_0xd665b4._0x5091be,_0x4bb183-0x5de,_0x41d049-_0xd665b4._0x5b179d);}const _0x27953a=new Readable({'destroy':_0x37e050});function _0x3944e0(_0x43d6f4,_0x3a8769,_0xb5e9c9,_0x18a571){return _0x5d917a(_0xb5e9c9- -_0xe7e3c5._0x27bd5c,_0x43d6f4,_0xb5e9c9-_0xe7e3c5._0x36fb87,_0x18a571-_0xe7e3c5._0x558d7f);}let _0x49e6d5=this[_0x3944e0(0x344,0x376,_0x46d99c._0x40f446,_0x46d99c._0x45300c)+_0x3944e0(_0x46d99c._0x1623b5,0x371,_0x46d99c._0x1c7d81,_0x46d99c._0x55909b)+_0x3944e0(_0x46d99c._0x257d4b,0x33b,_0x46d99c._0x510c18,_0x46d99c._0x431b59)][_0x3944e0(0x349,_0x46d99c._0x5e3cad,_0x46d99c._0x4309fb,_0x46d99c._0x20b342)](_0x16d558);!_0x49e6d5&&(_0x49e6d5=[],this['_remoteStr'+_0x4de236(_0x46d99c._0x147bde,_0x46d99c._0x16551c,_0x46d99c._0x5b7c5f,_0x46d99c._0x4555f7)+'ptions'][_0x4de236(_0x46d99c._0x1a588f,0x558,0x558,_0x46d99c._0x378bc1)](_0x16d558,_0x49e6d5));_0x49e6d5[_0x4de236(_0x46d99c._0x50d1bf,0x56f,_0x46d99c._0x134512,_0x46d99c._0x4072f7)](_0x27953a);const {videoMuted:_0x488aec,audioMuted:_0x536515}=this[_0x3944e0(0x2e6,_0x46d99c._0x40374e,_0x46d99c._0x503955,0x30a)][_0x3944e0(_0x46d99c._0xfea60a,_0x46d99c._0x503955,_0x46d99c._0x364ed7,_0x46d99c._0x1d001b)](_0x16d558);_0x27953a[_0x4de236(_0x46d99c._0x457a98,0x51a,0x555,_0x46d99c._0x3d0a11)]({'videoMuted':_0x488aec,'audioMuted':_0x536515});return _0x27953a;function _0x37e050(_0x4952e4){const _0x540fb2={_0x34e5db:0x4b,_0x1b9bb7:0x249,_0x4fbfe9:0xe5},_0x1ef117=_0x26d504[_0x15111b(_0x448880._0x5ca733,_0x448880._0x3c8e9e,_0x448880._0x360fea,_0x448880._0x52f108)+_0x15111b(0x5b3,_0x448880._0x36d160,_0x448880._0x328f39,_0x448880._0x33af50)+'ptions'][_0x15111b(_0x448880._0x408995,_0x448880._0x23dbbb,_0x448880._0xa929ab,_0x448880._0x1a0328)](_0x16d558);if(!_0x1ef117)return _0x4952e4(null);const _0x5f304f=_0x1ef117['indexOf'](_0x27953a);if(_0x5f304f===-(0x15f7+-0x2313*-0x1+-0x3*0x1303))return _0x4952e4(null);_0x1ef117[_0x2950db(_0x448880._0x5451e3,0x382,_0x448880._0x2363e5,0x3f1)](_0x5f304f,0x3b9*0x5+-0x7bb*0x1+-0xae1);if(_0x1ef117[_0x2950db(_0x448880._0x14fb96,_0x448880._0x5963bf,_0x448880._0x443819,_0x448880._0x5c1daa)]>0xc5*0x2b+-0x8c3+-0x1854)return _0x4952e4(null);function _0x2950db(_0x40d98e,_0x2af13c,_0x468e88,_0x49b10f){return _0x3944e0(_0x49b10f,_0x2af13c-_0x3c2625._0x5d11b9,_0x40d98e-_0x3c2625._0x3a01de,_0x49b10f-_0x3c2625._0x1160be);}function _0x15111b(_0x591fec,_0x3b0da1,_0x116a23,_0x55f53b){return _0x3944e0(_0x3b0da1,_0x3b0da1-_0x540fb2._0x34e5db,_0x116a23-_0x540fb2._0x1b9bb7,_0x55f53b-_0x540fb2._0x4fbfe9);}_0x26d504[_0x15111b(_0x448880._0x42f1b0,_0x448880._0xee720,_0x448880._0x360fea,_0x448880._0xe327c4)+_0x15111b(_0x448880._0x51d7e7,0x573,0x58e,0x5b0)+_0x15111b(_0x448880._0x138f15,_0x448880._0x27e857,_0x448880._0x571dd8,_0x448880._0x2b9516)]['delete'](_0x16d558),_0x4952e4(null);}}['getRemoteS'+'rcObject'](_0x4c6ef6){const _0x177365={_0x577c7f:0xc2,_0x41d74d:0xaa,_0x5f26c8:0x8a,_0x35971d:0xec,_0x49d0cf:0xf3,_0x3140ea:0x5f7,_0x4f105d:0x5da,_0x248e84:0x5c4,_0xadf553:0x5be},_0x14e9d9={_0x1b7429:0x94},_0xf504b0={_0x41f7b6:0xd,_0x1f851f:0x12f};function _0x22d552(_0x4db076,_0x29a1ad,_0xd8f9e5,_0x8b9542){return _0x5d917a(_0x8b9542- -_0xf504b0._0x41f7b6,_0xd8f9e5,_0xd8f9e5-0xa8,_0x8b9542-_0xf504b0._0x1f851f);}function _0x3329a1(_0x3b5791,_0x2c6c25,_0x57de07,_0x513201){return _0x5d917a(_0x2c6c25- -0x4dd,_0x57de07,_0x57de07-0xb3,_0x513201-_0x14e9d9._0x1b7429);}return this[_0x3329a1(0xd8,_0x177365._0x577c7f,_0x177365._0x41d74d,_0x177365._0x5f26c8)][_0x3329a1(0xf8,0xaf,_0x177365._0x35971d,_0x177365._0x49d0cf)](_0x4c6ef6)[_0x22d552(_0x177365._0x3140ea,_0x177365._0x4f105d,_0x177365._0x248e84,_0x177365._0xadf553)];}['close'](){const _0x1864da={_0x20aa81:0x448,_0x4730ae:0x3f5,_0x5b8d39:0x415,_0x5af54a:0xe0,_0x1db323:0xc0,_0x12f9c7:0xb0,_0x15dbca:0x103,_0x3a17da:0x126,_0x182165:0x14a,_0x541aba:0x3eb,_0x228195:0x3d5,_0x510272:0x38d,_0x4c6ae7:0x382,_0x34b626:0x3a0,_0x2c9258:0x39b,_0x2ce2e6:0x39a,_0x5d16a4:0xe1,_0x4af74f:0x11f,_0x1047c6:0xb0,_0x48b084:0xa7,_0x390194:0xe1,_0x418e22:0xdf,_0x2296ca:0xef,_0x80b928:0x10b,_0x165a1f:0xf0,_0x3e8207:0xcd,_0x30213a:0x3e2,_0x5a7cf0:0x440,_0x1a358b:0x3ae,_0x2e1bcd:0x3f7,_0x4ddc4e:0xc3,_0x4df8bc:0x8c,_0x1c27db:0xf2,_0x54b7c1:0x99,_0xb7b154:0xf2,_0xe55d48:0xab,_0x200ed4:0xb5,_0x3a4556:0xe1,_0x309c93:0x10b,_0x308cf8:0xa6,_0x1f0075:0xea,_0x1e723e:0x366,_0x892db7:0x35c,_0x396f1c:0x3c7,_0x410f5b:0x3ab,_0x18613c:0x414,_0xb120b5:0x3ce,_0x3c4aef:0x3cb,_0x39b6aa:0x3db,_0x40987d:0x438,_0x22938f:0x424,_0x3069cf:0x407,_0x3f0d58:0x38f,_0x2cc03b:0x38e,_0x934757:0x38c,_0x3eb24d:0x3fd,_0x453168:0x3ef,_0x243454:0x3ad,_0x14f97e:0x3df,_0x3c21e9:0x10e,_0x3d934e:0x13d,_0x380f79:0x450,_0x4e253d:0x416,_0x389985:0x119,_0x30bd1d:0xf8,_0x1cd5ba:0x14e,_0x33e893:0x407,_0xc3ae81:0x381,_0x316fa5:0x390,_0x1fb9d8:0x3bf,_0x30f586:0xf3,_0x3c7de3:0x40f,_0x4a9a12:0x3cc,_0x27b6fb:0x392,_0x48c20c:0x3cb,_0x40d990:0x3da,_0x2f8680:0x44c,_0x3f802f:0x407,_0x1a7ed2:0x414,_0x3abb8e:0x36b,_0x38cd9d:0x3de,_0x585326:0x3ec,_0x473266:0x88,_0x83762a:0xcc,_0x21c742:0xf3,_0x55bf57:0xab,_0x4bedd1:0x121,_0x2a9a5a:0xd5,_0x4da445:0x3d8,_0xfdd8be:0x42a,_0x206043:0x44a,_0x2dba1b:0x412,_0x5e2e37:0xd9,_0x77ad41:0xaf,_0x21910e:0xee,_0x443be7:0x3e5,_0x1df9ae:0x413,_0x1bf353:0x90,_0x37fdcb:0xb1,_0x532ad7:0x12a,_0x9567c6:0xd1,_0x1dfdcd:0xb8,_0x31a568:0xae,_0x1f7161:0xc3,_0x4f42f6:0x12a,_0x4ef898:0x136,_0x1da391:0x16e,_0x135e64:0xf7,_0x500815:0xe2,_0x2f9193:0x386,_0x2ed790:0x413,_0x431beb:0x3bf,_0x5a8465:0x3e3,_0x214284:0x3f6,_0x5dc6e3:0x389,_0x3cb799:0x3f0,_0x8cb7a4:0x3bf,_0x118bf0:0x349,_0x58507a:0x3b2,_0xffe0d7:0xf5,_0xb399b3:0xda,_0x1e7abe:0x3c0,_0x29778b:0x3a6,_0x164dde:0x3a2,_0x53335e:0x3bf,_0x3f3f1a:0x39f,_0x564b8b:0x3cd,_0x399697:0x3a8},_0x33683f={_0xf0cb8a:0x232,_0x49b9b7:0x28a,_0x414622:0x2a6,_0x20e752:0x261,_0x50d58c:0x53c,_0x13b8fa:0x582,_0x4d657e:0x281,_0x48069f:0x2d9,_0x5881df:0x255,_0xab5afa:0x29b,_0x45f16c:0x2b6,_0x3cf433:0x2c0,_0x571b77:0x2be,_0x6d5e0:0x333,_0x589cd3:0x32b,_0x12caa6:0x2ea,_0x18e39e:0x283,_0x3672b1:0x2a8,_0x5d9903:0x285,_0x155d26:0x5d9,_0x40cf10:0x5d4,_0x31576f:0x574,_0x4678ae:0x591,_0x56b57e:0x29a,_0x47101b:0x2de},_0x503d77={_0x23fccf:0xf3,_0x5d43b8:0xb7},_0x3e1f8e={_0x2bcd32:0x40,_0x3d7b66:0xf8};if(this[_0x35a90d(_0x1864da._0x20aa81,0x3fb,_0x1864da._0x4730ae,_0x1864da._0x5b8d39)])return;this[_0x1176bf(-_0x1864da._0x5af54a,-_0x1864da._0x1db323,-0xa7,-_0x1864da._0x12f9c7)][_0x1176bf(-0x10a,-_0x1864da._0x15dbca,-_0x1864da._0x3a17da,-_0x1864da._0x182165)](),this['closed']=!![],this[_0x35a90d(_0x1864da._0x541aba,0x3f7,0x3ac,_0x1864da._0x228195)][_0x35a90d(0x38a,_0x1864da._0x510272,_0x1864da._0x4c6ae7,_0x1864da._0x34b626)+_0x35a90d(_0x1864da._0x2c9258,_0x1864da._0x2ce2e6,0x3dc,0x3cb)](_0x1176bf(-_0x1864da._0x5d16a4,-_0x1864da._0x4af74f,-_0x1864da._0x1047c6,-_0x1864da._0x48b084),this['_onremotes'+_0x1176bf(-_0x1864da._0x390194,-0xe0,-0xfc,-_0x1864da._0x418e22)]),this[_0x1176bf(-_0x1864da._0x2296ca,-_0x1864da._0x80b928,-_0x1864da._0x165a1f,-_0x1864da._0x3e8207)]['removeList'+'ener'](LOCAL_CHANGE_EVENTS[_0x35a90d(_0x1864da._0x30213a,_0x1864da._0x5a7cf0,_0x1864da._0x1a358b,_0x1864da._0x2e1bcd)],this[_0x1176bf(-_0x1864da._0x4ddc4e,-_0x1864da._0x4df8bc,-_0x1864da._0x1c27db,-_0x1864da._0x54b7c1)+_0x1176bf(-_0x1864da._0xb7b154,-_0x1864da._0xe55d48,-0xdb,-_0x1864da._0x200ed4)+_0x1176bf(-_0x1864da._0x3a4556,-_0x1864da._0x309c93,-_0x1864da._0x308cf8,-_0x1864da._0x1f0075)]),this['local'][_0x35a90d(_0x1864da._0x1e723e,_0x1864da._0x892db7,_0x1864da._0x396f1c,_0x1864da._0x34b626)+_0x35a90d(_0x1864da._0x410f5b,_0x1864da._0x18613c,_0x1864da._0xb120b5,_0x1864da._0x3c4aef)](LOCAL_CHANGE_EVENTS[_0x35a90d(_0x1864da._0x39b6aa,_0x1864da._0x40987d,_0x1864da._0x22938f,_0x1864da._0x3069cf)],this[_0x35a90d(_0x1864da._0x3f0d58,0x3af,_0x1864da._0x2cc03b,_0x1864da._0x934757)+_0x35a90d(_0x1864da._0x3eb24d,_0x1864da._0x453168,_0x1864da._0x243454,_0x1864da._0x14f97e)+'change']),this['local'][_0x1176bf(-_0x1864da._0x3c21e9,-0x124,-0x133,-_0x1864da._0x3d934e)+'ener'](LOCAL_CLOSE_EVENTS['CAMERA'],this[_0x35a90d(0x422,_0x1864da._0x380f79,_0x1864da._0x4e253d,_0x1864da._0x18613c)+_0x1176bf(-_0x1864da._0x389985,-_0x1864da._0x30bd1d,-_0x1864da._0x1cd5ba,-0x107)]),this[_0x35a90d(_0x1864da._0x33e893,_0x1864da._0xc3ae81,_0x1864da._0x316fa5,_0x1864da._0x1fb9d8)][_0x1176bf(-_0x1864da._0x3c21e9,-0xe7,-_0x1864da._0x30f586,-0x14f)+_0x35a90d(_0x1864da._0x3c7de3,_0x1864da._0x4a9a12,_0x1864da._0x27b6fb,_0x1864da._0x48c20c)](LOCAL_CLOSE_EVENTS[_0x35a90d(_0x1864da._0x40d990,_0x1864da._0x14f97e,_0x1864da._0x2f8680,_0x1864da._0x3f802f)],this[_0x35a90d(_0x1864da._0x20aa81,_0x1864da._0x1a7ed2,0x436,0x414)+_0x35a90d(0x375,0x3c3,_0x1864da._0x3abb8e,0x395)]),this[_0x35a90d(_0x1864da._0x38cd9d,0x3ba,_0x1864da._0x585326,0x3f1)+'scription'][_0x1176bf(-0x9c,-_0x1864da._0x473266,-_0x1864da._0x54b7c1,-_0x1864da._0x83762a)](),this[_0x1176bf(-_0x1864da._0x21c742,-_0x1864da._0x55bf57,-_0x1864da._0x4bedd1,-_0x1864da._0x2a9a5a)+'cription']['destroy'](),this['_presenceS'+'ubscriptio'+'n'][_0x35a90d(_0x1864da._0x4da445,_0x1864da._0xfdd8be,_0x1864da._0x206043,_0x1864da._0x2dba1b)]();for(const _0x2caadb of this[_0x1176bf(-_0x1864da._0x5e2e37,-_0x1864da._0x77ad41,-_0x1864da._0x21910e,-0xe1)][_0x35a90d(_0x1864da._0x443be7,0x40c,_0x1864da._0x14f97e,_0x1864da._0x1df9ae)]()){_0x2caadb[_0x1176bf(-0xa8,-_0x1864da._0x1bf353,-0x82,-_0x1864da._0x37fdcb)]();}let _0x3c0d4f=![];function _0x1176bf(_0x2928af,_0x3fde00,_0x5355a1,_0x4d288d){return _0x4d2912(_0x3fde00,_0x3fde00-0xf4,_0x2928af- -_0x3e1f8e._0x2bcd32,_0x4d288d-_0x3e1f8e._0x3d7b66);}this[_0x1176bf(-_0x1864da._0x2296ca,-0x11e,-_0x1864da._0x532ad7,-_0x1864da._0x9567c6)][_0x1176bf(-_0x1864da._0x1dfdcd,-_0x1864da._0x31a568,-_0x1864da._0x3e8207,-_0x1864da._0x1f7161)+_0x1176bf(-_0x1864da._0x4f42f6,-_0x1864da._0x4ef898,-_0x1864da._0x1da391,-0x131)]&&(_0x3c0d4f=!![],this[_0x35a90d(0x39a,0x38a,0x3fd,_0x1864da._0x1fb9d8)][_0x1176bf(-0xf5,-_0x1864da._0x135e64,-_0x1864da._0x500815,-_0x1864da._0x3e8207)+'m'](this[_0x35a90d(_0x1864da._0x2f9193,0x3da,0x3d2,0x3bf)][_0x35a90d(_0x1864da._0x2ed790,_0x1864da._0x431beb,_0x1864da._0x5a8465,_0x1864da._0x214284)+'am']['id']));function _0x35a90d(_0xa77bbb,_0x6efd49,_0x4af11b,_0x3cde92){return _0x5d917a(_0x3cde92- -0x1ca,_0x4af11b,_0x4af11b-_0x503d77._0x23fccf,_0x3cde92-_0x503d77._0x5d43b8);}this[_0x35a90d(_0x1864da._0x5dc6e3,0x3f1,_0x1864da._0x3cb799,_0x1864da._0x8cb7a4)]['screenStre'+_0x35a90d(0x350,_0x1864da._0x118bf0,_0x1864da._0x58507a,0x384)]&&(_0x3c0d4f=!![],this['local'][_0x1176bf(-_0x1864da._0xffe0d7,-0xe8,-0x124,-_0x1864da._0xb399b3)+'m'](this[_0x35a90d(_0x1864da._0x1e7abe,_0x1864da._0x29778b,_0x1864da._0x164dde,_0x1864da._0x53335e)][_0x35a90d(_0x1864da._0x3f3f1a,_0x1864da._0x564b8b,_0x1864da._0x399697,0x394)+'am']['id'])),this['_internalB'+'ackgroundR'+'un'](async()=>{const _0x146576={_0xb1e8ee:0x693,_0x42203e:0x151,_0x53abbe:0x54},_0x3385cf={_0x5ae42d:0x3d,_0x461194:0x126};_0x3c0d4f&&await this[_0x59a518(_0x33683f._0xf0cb8a,_0x33683f._0x49b9b7,_0x33683f._0x414622,_0x33683f._0x20e752)+_0x288c7e(0x5cc,0x545,_0x33683f._0x50d58c,_0x33683f._0x13b8fa)]();function _0x59a518(_0x15c540,_0x443733,_0x3e342e,_0x276310){return _0x35a90d(_0x15c540-_0x3385cf._0x5ae42d,_0x443733-0x1b1,_0x3e342e,_0x276310- -_0x3385cf._0x461194);}for(const _0x288455 of this[_0x59a518(_0x33683f._0x4d657e,_0x33683f._0x48069f,_0x33683f._0x5881df,_0x33683f._0xab5afa)+'rs']){await this[_0x59a518(0x2c0,_0x33683f._0x45f16c,_0x33683f._0x3cf433,_0x33683f._0x571b77)][_0x59a518(_0x33683f._0x6d5e0,0x2f3,_0x33683f._0x589cd3,_0x33683f._0x12caa6)](_0x288455);}function _0x288c7e(_0x4140c9,_0x4af21f,_0x5a2813,_0x3a9eb2){return _0x1176bf(_0x3a9eb2-_0x146576._0xb1e8ee,_0x5a2813,_0x5a2813-_0x146576._0x42203e,_0x3a9eb2-_0x146576._0x53abbe);}await this[_0x59a518(_0x33683f._0x18e39e,_0x33683f._0x3672b1,_0x33683f._0x5d9903,_0x33683f._0x571b77)][_0x288c7e(_0x33683f._0x155d26,_0x33683f._0x40cf10,_0x33683f._0x31576f,_0x33683f._0x4678ae)+_0x59a518(0x2d4,0x2b9,_0x33683f._0x56b57e,_0x33683f._0x47101b)](this['callId']);});}};function defaultError(_0xe87c41){const _0x1a46c8={_0x33a02:0x1a0,_0x4a2408:0x1f0,_0x369075:0x19c,_0x10a9c5:0x433,_0x16ad3d:0x44c,_0x5927fe:0x45a,_0x4be2ca:0x41a,_0x443441:0x1cf,_0x13026f:0x1b1,_0x1f19b6:0x186,_0x3a7a11:0x1e0},_0x21539a={_0x23f9c5:0xb0,_0x185740:0x131,_0x4c63a8:0x10e},_0x4334a2={_0x19303d:0x144,_0x18da33:0x142};function _0x101e5d(_0x22a15e,_0x53cebe,_0x5ef7a8,_0x529155){return _0x5d917a(_0x53cebe- -_0x4334a2._0x19303d,_0x22a15e,_0x5ef7a8-0x58,_0x529155-_0x4334a2._0x18da33);}function _0x2b02a5(_0xdd7c29,_0x2484ef,_0x1e4a05,_0x103d98){return _0x4d2912(_0x1e4a05,_0x2484ef-_0x21539a._0x23f9c5,_0x2484ef- -_0x21539a._0x185740,_0x103d98-_0x21539a._0x4c63a8);}_0xe87c41[_0x2b02a5(-_0x1a46c8._0x33a02,-0x1ce,-_0x1a46c8._0x4a2408,-_0x1a46c8._0x369075)]!=='Stream\x20was'+_0x101e5d(_0x1a46c8._0x10a9c5,_0x1a46c8._0x16ad3d,_0x1a46c8._0x5927fe,_0x1a46c8._0x4be2ca)&&console[_0x2b02a5(-_0x1a46c8._0x443441,-_0x1a46c8._0x13026f,-_0x1a46c8._0x1f19b6,-_0x1a46c8._0x3a7a11)](_0xe87c41),safetyCatch(_0xe87c41);}
1const{Readable:e}=require("streamx"),t=require("safety-catch"),s=require("debounceify"),{createTracer:r}=require("hypertrace"),{MEDIA_EVENTS:a,PRESENCE_EVENTS:i}=require("../../lib/common"),n=require("./webrtc"),o=require("./remotes-map"),{STREAM_TYPE:c,LOCAL_CHANGE_EVENTS:l,LOCAL_CLOSE_EVENTS:h}=require("../local/constants");function d(e){"Stream was destroyed"!==e.message&&console.warn(e),t(e)}module.exports=class{constructor(e,t,{onerror:a=d}={}){this.api=e.api,this.local=e.local,this.swarmId=e.swarmId,this.callId=t,this.onerror=a,this.closed=!1,this._pendingApiTasks=[],this._debouncedFlushTasks=s(this._flushTasks.bind(this)),this._remoteStreamSubscriptions=new Map,this._pendingSignals=new Map,this._remotes=new o,this._joinedPeers=new Set,this._signalSubscription=null,this._proxySubscription=null,this._presenceSubscription=null,this._signalObserver=this._observeSignalEvents(),this._proxyObserver=this._observeProxyEvents(),this._presenceObserver=this._observePresenceEvents(),this._onremoteschange=this._onRemotesChange.bind(this),this._remotes.on("change",this._onremoteschange),this._onlocalcameratrackschange=this._handleLocalCameraTracksChange.bind(this),this.local.on(l.CAMERA,this._onlocalcameratrackschange),this._onlocalscreentrackschange=this._handleLocalScreenTracksChange.bind(this),this.local.on(l.SCREEN,this._onlocalscreentrackschange),this._onlocalstreamclosed=this._handleLocalStreamClosed.bind(this),this.local.on(h.CAMERA,this._onlocalstreamclosed),this.local.on(h.SCREEN,this._onlocalstreamclosed),this.tracer=r(this,{props:{callId:t,swarmId:this.swarmId}}),this._internalBackgroundRun(()=>{this._updateLocalPresence()})}async _flushTasks(){for(;this._pendingApiTasks.length;){const e=this._pendingApiTasks.shift();try{if(await e(),this.closed)return}catch(e){this.onerror(e)}}}_internalBackgroundRun(e){this._pendingApiTasks.push(e),this._debouncedFlushTasks()}_onRemotesChange(e,t){const s=this._remoteStreamSubscriptions.get(e);if(!s)return;const r=t.ready?{videoMuted:t.videoMuted,audioMuted:t.audioMuted}:{videoMuted:!0,audioMuted:!0};for(const e of s)e.push(r)}async _observePresenceEvents(){this._presenceSubscription=this.api.subscribePresence(this.callId),this._presenceSubscription.on("error",this.onerror);try{for await(const e of this._presenceSubscription)this.tracer.trace(e),e.type===i.PEER_PRESENT?this._internalBackgroundRun(()=>(this._joinedPeers.add(e.swarmId),this.api.joinPeer(e.swarmId))):e.type===i.PEER_NOT_PRESENT?this._internalBackgroundRun(()=>(this._joinedPeers.delete(e.swarmId),this.api.leavePeer(e.swarmId))):e.type===i.STREAM_STATUS_CHANGED?this._remotes.updateStatus(e.swarmId,e.streamId,e.videoMuted,e.audioMuted):e.type===i.STREAM_UNAVAILABLE&&this._remotes.deleteStatus(e.streamId)}catch(e){this.onerror(e)}}_updateLocalPresence(e=null,t=null){e=e||this.local.cameraStreamStatus,t=t||this.local.screenStreamStatus;const s=[];return this.local.cameraStreamOpened&&s.push({id:this.local.cameraStream.id,name:c.CAMERA,...e}),this.local.screenStreamOpened&&s.push({id:this.local.screenStream.id,name:c.SCREEN,...t}),this.api.setPresent(this.callId,{streams:s})}_handleLocalCameraTracksChange(e,t,s){this._internalBackgroundRun(async()=>{for(const s of this._remotes.clients())!s.closed&&s.ready&&(e&&await s.setVideoTrack(this.local.videoTrack),t&&await s.setAudioTrack(this.local.audioTrack));this._updateLocalPresence(s)})}_handleLocalScreenTracksChange(e,t){this._internalBackgroundRun(async()=>{for(const t of this._remotes.clients())!t.closed&&t.ready&&e&&await t.setScreenTrack(this.local.screenTrack);this._updateLocalPresence(null,t)})}_handleLocalStreamClosed(){this._internalBackgroundRun(()=>{this._updateLocalPresence()})}async _observeProxyEvents(){this._proxySubscription=this.api.subscribeProxyUpdates(this.callId),this._proxySubscription.on("error",this.onerror);try{for await(const e of this._proxySubscription)this.tracer.trace(e),e.type===a.PROXY_OPEN?this._handleProxyOpen(e.swarmId,e.proxyPort):e.type===a.PROXY_CLOSE&&this._handleProxyClose(e.swarmId)}catch(e){this.onerror(e)}}_handleProxyOpen(e,t){const s=this.swarmId<e,r=new n(s,e,t,this.local.cameraStream.id,this.local.screenStream.id,this._remotes,{onerror:this.onerror,parentTracer:this.tracer});this._remotes.addClient(e,r),r.on("signal",this._handleWebRtcSignal.bind(this)),r.on("ready",this._handleWebRtcReady.bind(this)),r.on("close",this._handleWebRtcClose.bind(this));const a=this._pendingSignals.get(e);a&&(this._pendingSignals.delete(e),r.handleSignalMessage(a))}_handleProxyClose(e){const t=this._remotes.getClient(e);t&&(this._remotes.deleteClient(e),this._pendingSignals.delete(e),t.close())}async _observeSignalEvents(){this._signalSubscription=this.api.subscribeMediaSignals(this.callId),this._signalSubscription.on("error",this.onerror);try{for await(const{swarmId:e,signal:t}of this._signalSubscription){this.tracer.trace({swarmId:e,signal:t});const s=this._remotes.getClient(e);s?s.handleSignalMessage(t):this._pendingSignals.set(e,t)}}catch(e){this.onerror(e)}}async _handleWebRtcReady(e){this._remotes.updateStatus(e.swarmId,e.remoteCameraStreamId),this._remotes.updateStatus(e.swarmId,e.remoteScreenStreamId),this._internalBackgroundRun(async()=>{await e.setVideoTrack(this.local.videoTrack),await e.setAudioTrack(this.local.audioTrack),await e.setScreenTrack(this.local.screenTrack),this._updateLocalPresence()})}_handleWebRtcSignal(e,t){this._internalBackgroundRun(()=>this.api.signalMedia(this.callId,e.swarmId,t))}_handleWebRtcClose(e){null!==e.remoteCameraStreamId&&(this._cleanupRemoteStream(e.remoteCameraStreamId),this._remoteStreamSubscriptions.delete(e.remoteCameraStreamId)),null!==e.remoteScreenStreamId&&(this._cleanupRemoteStream(e.remoteScreenStreamId),this._remoteStreamSubscriptions.delete(e.remoteScreenStreamId))}_cleanupRemoteStream(e){const t=this._remotes._statusById.get(e);if(t)for(const e of t.stream.getTracks())t.stream.removeTrack(e)}subscribeRemoteStream(t){const s=this,r=new e({destroy:function(e){const a=s._remoteStreamSubscriptions.get(t);if(!a)return e(null);const i=a.indexOf(r);return-1===i?e(null):(a.splice(i,1),a.length>0?e(null):(s._remoteStreamSubscriptions.delete(t),void e(null)))}});let a=this._remoteStreamSubscriptions.get(t);a||(a=[],this._remoteStreamSubscriptions.set(t,a)),a.push(r);const{videoMuted:i,audioMuted:n}=this._remotes.getStatus(t);return r.push({videoMuted:i,audioMuted:n}),r}getRemoteSrcObject(e){return this._remotes.getStatus(e).stream}close(){if(this.closed)return;this.tracer.trace(),this.closed=!0,this._remotes.removeListener("change",this._onremoteschange),this.local.removeListener(l.CAMERA,this._onlocalcameratrackschange),this.local.removeListener(l.SCREEN,this._onlocalscreentrackschange),this.local.removeListener(h.CAMERA,this._onlocalstreamclosed),this.local.removeListener(h.SCREEN,this._onlocalstreamclosed),this._signalSubscription.destroy(),this._proxySubscription.destroy(),this._presenceSubscription.destroy();for(const e of this._remotes.clients())e.close();let e=!1;this.local.cameraStreamOpened&&(e=!0,this.local.closeStream(this.local.cameraStream.id)),this.local.screenStreamOpened&&(e=!0,this.local.closeStream(this.local.screenStream.id)),this._internalBackgroundRun(async()=>{e&&await this._updateLocalPresence();for(const e of this._joinedPeers)await this.api.leavePeer(e);await this.api.setNotPresent(this.callId)})}};
@holepunchto/keet-call/client/call/remotes-map.js +1 -1
……@@ -1 +1 @@
1function _0x49eb(){const _0x4d3128=['deleteStat','_clientsBy','12588QyTDcr','getTrackBy','constructo','_statusByI','clients','71673RAjLlM','1121930TIOQdU','deleteClie','22SzYbaw','set','addClient','get','690011zXwNNk','16FxHyIv','655460xkdbVp','updateStat','emit','492894pGbVpP','2qcgXOD','SwarmId','exports','ready','videoMuted','toString','addTrack','(((.+)+)+)','617571leRSTC','audioMuted','ams','getTracks','remoteStre','search','stream','130VNMkBE','delete','forEach'];_0x49eb=function(){return _0x4d3128;};return _0x49eb();}(function(_0x4c2fdf,_0x58e1c6){const _0x3fdb3b={_0x40f554:0x36a,_0x520959:0x374,_0x29b6c4:0x36f,_0x50ee2c:0x376,_0x615ff:0x253,_0x223ea3:0x252,_0x2d0ee9:0x260,_0x1b307f:0x26c,_0x4397bc:0x25d,_0x4ea7e4:0x270,_0x5edff8:0x25f,_0x454aa3:0x263,_0x1efc97:0x388,_0xe18447:0x255,_0x53f1cf:0x249,_0x50ac44:0x236,_0x2e94ad:0x244,_0x50fc34:0x24e,_0x1dbcae:0x24a,_0x57266d:0x250,_0x3e002d:0x25a,_0xbf2db6:0x262,_0x492248:0x38f,_0x155058:0x37e,_0x3a933f:0x239,_0x323775:0x242,_0x220726:0x241,_0x5b5473:0x254,_0x1abff6:0x381,_0x4fc64b:0x383,_0x4fdab6:0x372,_0x56067b:0x379},_0x3c79b3={_0x530edf:0x25b},_0x67db63={_0x5a7eaa:0x138},_0x46e648=_0x4c2fdf();function _0x1dbcbb(_0x5743a1,_0x421feb,_0x21a22f,_0xe54cf4){return _0x2ba7(_0x21a22f-_0x67db63._0x5a7eaa,_0xe54cf4);}function _0x23add0(_0x41c805,_0x2a0277,_0x19c16b,_0xcc8f6c){return _0x2ba7(_0xcc8f6c-_0x3c79b3._0x530edf,_0x19c16b);}while(!![]){try{const _0x2e7089=parseInt(_0x23add0(_0x3fdb3b._0x40f554,_0x3fdb3b._0x520959,_0x3fdb3b._0x29b6c4,_0x3fdb3b._0x50ee2c))/(-0x705*-0x5+-0xd89+-0x158f)+parseInt(_0x1dbcbb(_0x3fdb3b._0x615ff,_0x3fdb3b._0x223ea3,_0x3fdb3b._0x2d0ee9,_0x3fdb3b._0x1b307f))/(0x1*0x33d+-0x1395+0x105a)*(parseInt(_0x1dbcbb(_0x3fdb3b._0x4397bc,_0x3fdb3b._0x4ea7e4,_0x3fdb3b._0x5edff8,_0x3fdb3b._0x454aa3))/(-0x1b28+0x1cf*0x14+-0x5*0x1cd))+-parseInt(_0x23add0(_0x3fdb3b._0x1efc97,0x38e,0x373,0x37f))/(0xd36+-0x1*-0x3b+-0xd6d)+-parseInt(_0x1dbcbb(0x24c,_0x3fdb3b._0xe18447,_0x3fdb3b._0x53f1cf,_0x3fdb3b._0x50ac44))/(0x2379*-0x1+0x666+0x1d18)*(-parseInt(_0x1dbcbb(0x25a,_0x3fdb3b._0x2e94ad,_0x3fdb3b._0x50fc34,0x23b))/(-0x1*-0x131e+0x1327*-0x1+0xf))+-parseInt(_0x1dbcbb(_0x3fdb3b._0x1dbcae,_0x3fdb3b._0x57266d,_0x3fdb3b._0x3e002d,_0x3fdb3b._0xbf2db6))/(0x178f+-0x2033+0x8ab)+-parseInt(_0x23add0(0x376,0x37d,_0x3fdb3b._0x492248,_0x3fdb3b._0x155058))/(-0x3*0xcf4+-0x25e7+0x1999*0x3)*(parseInt(_0x1dbcbb(_0x3fdb3b._0x3a933f,0x232,_0x3fdb3b._0x323775,_0x3fdb3b._0x220726))/(-0x9*0x241+-0x4*0x322+-0x1*-0x20da))+parseInt(_0x1dbcbb(_0x3fdb3b._0x3e002d,_0x3fdb3b._0x615ff,_0x3fdb3b._0x5b5473,0x245))/(-0x9d*-0x6+0x1ec2+-0x4a*0x77)*(parseInt(_0x23add0(_0x3fdb3b._0x1abff6,_0x3fdb3b._0x4fc64b,_0x3fdb3b._0x4fdab6,_0x3fdb3b._0x56067b))/(0x7a7+-0x1563+-0xdc7*-0x1));if(_0x2e7089===_0x58e1c6)break;else _0x46e648['push'](_0x46e648['shift']());}catch(_0x39708c){_0x46e648['push'](_0x46e648['shift']());}}}(_0x49eb,-0x2eddd+0xd0c3+0x3df37));const _0x39c625=(function(){let _0x3663b9=!![];return function(_0x282b09,_0x43064a){const _0x2f1a5b=_0x3663b9?function(){if(_0x43064a){const _0x214407=_0x43064a['apply'](_0x282b09,arguments);return _0x43064a=null,_0x214407;}}:function(){};return _0x3663b9=![],_0x2f1a5b;};}()),_0x116af1=_0x39c625(this,function(){const _0x39b688={_0x39ac46:0x19a,_0x33b0ed:0x18c,_0xc48b0:0x1a0,_0x145367:0x1ab,_0x257e48:0x2c2,_0x4ffeb7:0x2b2,_0x187ca1:0x29f,_0x1fcaeb:0x192,_0x12a967:0x18a,_0x1937ee:0x2a4,_0x306d63:0x2a3,_0x3e34af:0x2a2,_0x3bab89:0x2ac,_0x2627d5:0x2b1,_0xc97dae:0x194,_0xc34cd2:0x18e};function _0x44f08b(_0x23e660,_0x4082a4,_0x22aa82,_0x55938b){return _0x2ba7(_0x23e660-0x8b,_0x4082a4);}function _0x46dd6e(_0xf2726d,_0x5213ef,_0x539097,_0x446d45){return _0x2ba7(_0x539097- -0x3bb,_0xf2726d);}return _0x116af1['toString']()[_0x44f08b(_0x39b688._0x39ac46,_0x39b688._0x33b0ed,_0x39b688._0xc48b0,_0x39b688._0x145367)](_0x46dd6e(-0x2bd,-_0x39b688._0x257e48,-_0x39b688._0x4ffeb7,-_0x39b688._0x187ca1)+'+$')[_0x44f08b(_0x39b688._0x1fcaeb,0x19c,_0x39b688._0x12a967,_0x39b688._0x39ac46)]()[_0x46dd6e(-0x295,-_0x39b688._0x1937ee,-_0x39b688._0x306d63,-0x2b0)+'r'](_0x116af1)[_0x46dd6e(-_0x39b688._0x3e34af,-_0x39b688._0x4ffeb7,-_0x39b688._0x3bab89,-_0x39b688._0x2627d5)](_0x44f08b(0x194,0x1a7,_0x39b688._0xc97dae,_0x39b688._0xc34cd2)+'+$');});_0x116af1();const {EventEmitter}=require('events');function _0x7b8ea7(_0x54d930,_0x3169d2,_0x4c326b,_0x470255){return _0x2ba7(_0x4c326b-0x98,_0x54d930);}function _0x5244c7(_0xeac0d9,_0x1d9e3a,_0x567aba,_0xff1502){const _0x17136d={_0x2e6150:0x176};return _0x2ba7(_0x1d9e3a-_0x17136d._0x2e6150,_0xeac0d9);}function _0x2ba7(_0x44c8a2,_0x3687d0){const _0x1118ec=_0x49eb();return _0x2ba7=function(_0x264e58,_0x3f5281){_0x264e58=_0x264e58-(-0x94f*0x3+0x6b*-0x9+0x20b7);let _0x3a63fb=_0x1118ec[_0x264e58];return _0x3a63fb;},_0x2ba7(_0x44c8a2,_0x3687d0);}module[_0x5244c7(0x290,0x2a0,0x2a5,0x2a2)]=class KeetRemotesMap extends EventEmitter{constructor(){const _0x49d372={_0x3e4a35:0x115,_0x36f20a:0x118,_0x4dd3a6:0xca,_0x5024a9:0xbe,_0x19bab7:0xc9},_0x25b36a={_0x25c04a:0x397,_0x5070de:0xe};super();function _0x2081d4(_0xf2f28d,_0x2bfb3c,_0x29481d,_0x4e77d1){return _0x5244c7(_0xf2f28d,_0x2bfb3c- -0x1d9,_0x29481d-0x112,_0x4e77d1-0x60);}function _0x48300b(_0x449457,_0x1ba7fe,_0x24bc8c,_0x5f0561){return _0x5244c7(_0x24bc8c,_0x5f0561- -_0x25b36a._0x25c04a,_0x24bc8c-0x191,_0x5f0561-_0x25b36a._0x5070de);}this[_0x48300b(-0x100,-_0x49d372._0x3e4a35,-_0x49d372._0x36f20a,-0x108)+'d']=new Map(),this['_clientsBy'+_0x2081d4(_0x49d372._0x4dd3a6,0xc6,_0x49d372._0x5024a9,_0x49d372._0x19bab7)]=new Map();}[_0x7b8ea7(0x1b7,0x1b2,0x1b8,0x1cb)](_0x2dbbb0,_0x5e4305){const _0x2f24ae={_0x228d1e:0xb5,_0x1c8ee0:0xa5,_0xf8d9b8:0xad,_0x5aa91d:0x4db,_0x369989:0x4cf,_0x520297:0x4d9},_0x5099eb={_0x4228dd:0x1e6},_0x465efe={_0x1f5889:0x23c,_0xec35b1:0x149,_0x50fcf8:0x1e2};function _0x2633ab(_0x4d4172,_0x3f1e8f,_0x42b14d,_0x2d7b68){return _0x5244c7(_0x2d7b68,_0x3f1e8f-_0x465efe._0x1f5889,_0x42b14d-_0x465efe._0xec35b1,_0x2d7b68-_0x465efe._0x50fcf8);}function _0x428dde(_0x271a7e,_0x2a3466,_0x549fcc,_0x5299ec){return _0x5244c7(_0x549fcc,_0x2a3466- -_0x5099eb._0x4228dd,_0x549fcc-0xb8,_0x5299ec-0x5f);}this[_0x428dde(_0x2f24ae._0x228d1e,_0x2f24ae._0x1c8ee0,0x9d,_0x2f24ae._0xf8d9b8)+_0x2633ab(0x4d0,_0x2f24ae._0x5aa91d,_0x2f24ae._0x369989,_0x2f24ae._0x520297)]['set'](_0x2dbbb0,_0x5e4305);}['getClient'](_0x31ee77){const _0x5f3bba={_0x3b89d8:0x30,_0x275bb8:0x3c},_0x7ae4bf={_0x48471d:0x115,_0x139ef0:0x113};function _0x468d03(_0xd58be5,_0x45924a,_0x235582,_0x2071f6){return _0x5244c7(_0xd58be5,_0x235582- -0x2bb,_0x235582-_0x7ae4bf._0x48471d,_0x2071f6-_0x7ae4bf._0x139ef0);}return this[_0x468d03(-0x2f,-0x22,-_0x5f3bba._0x3b89d8,-_0x5f3bba._0x275bb8)+'SwarmId']['get'](_0x31ee77)||null;}[_0x5244c7(0x28e,0x293,0x2a3,0x28c)+'nt'](_0x1aa6a4){const _0x2d2f34={_0x140795:0xd9,_0x25724b:0xe2,_0xac18ff:0xea,_0x1dcc36:0x174,_0x16f6d8:0x15e,_0x1dc263:0x15f},_0x4c4440={_0x7f24db:0x13d,_0x36fff3:0xca,_0x3fd2be:0x8},_0x222ebb={_0x154787:0x71,_0x28df4a:0xe5};function _0x5502b6(_0x53594f,_0x5e42e4,_0x159fb5,_0x374ddc){return _0x5244c7(_0x374ddc,_0x159fb5- -0x375,_0x159fb5-_0x222ebb._0x154787,_0x374ddc-_0x222ebb._0x28df4a);}function _0x1548d0(_0x1b6e6e,_0x512a00,_0x482b0d,_0xec17f6){return _0x5244c7(_0x482b0d,_0x1b6e6e- -_0x4c4440._0x7f24db,_0x482b0d-_0x4c4440._0x36fff3,_0xec17f6-_0x4c4440._0x3fd2be);}this[_0x5502b6(-_0x2d2f34._0x140795,-_0x2d2f34._0x25724b,-_0x2d2f34._0xac18ff,-0xe4)+_0x1548d0(0x162,_0x2d2f34._0x1dcc36,_0x2d2f34._0x16f6d8,_0x2d2f34._0x1dc263)]['delete'](_0x1aa6a4);}[_0x7b8ea7(0x1b6,0x1b5,0x1b2,0x1b7)](){const _0x397cf1={_0x39452e:0x485,_0x5e90a8:0x479,_0x3187b5:0x469,_0x3c5355:0x49d,_0xe79533:0x482,_0x48b643:0x48f,_0x5d3952:0x48d},_0x4e8960={_0x39d619:0x159,_0x2b3aa0:0x101,_0x331f0e:0x16f},_0x36e687={_0xe8fd33:0x154,_0x59ec71:0x1c8};function _0xd7fa1f(_0x389b5b,_0x2582d3,_0x23a3b9,_0x377a22){return _0x5244c7(_0x389b5b,_0x377a22-0x1ee,_0x23a3b9-_0x36e687._0xe8fd33,_0x377a22-_0x36e687._0x59ec71);}function _0x560bd7(_0xc808ad,_0x6ed8d6,_0x56fb2b,_0x56be73){return _0x5244c7(_0x56be73,_0x6ed8d6- -_0x4e8960._0x39d619,_0x56fb2b-_0x4e8960._0x2b3aa0,_0x56be73-_0x4e8960._0x331f0e);}return this[_0xd7fa1f(_0x397cf1._0x39452e,_0x397cf1._0x5e90a8,_0x397cf1._0x3187b5,0x479)+_0xd7fa1f(_0x397cf1._0x3c5355,_0x397cf1._0xe79533,_0x397cf1._0x48b643,_0x397cf1._0x5d3952)]['values']();}[_0x5244c7(0x29a,0x29b,0x2a5,0x2a7)+'us'](_0x1552d2,_0x5c4e97,_0x1236f6=null,_0x329445=null){const _0x19ef92={_0x17ce79:0x3c1,_0x203630:0x3be,_0x4fcdc6:0x3c9,_0x1a73c1:0x3cd,_0x1ddb2a:0x3c0,_0x1852fb:0x3d1,_0x36b6bc:0x3dd,_0x3a8592:0xa4,_0x41f191:0xaa,_0x226232:0xa8,_0x4e67dd:0xae,_0x28c987:0xad,_0x5ae905:0x9e,_0x389e5f:0xa0,_0x3210c1:0xb7,_0x314e80:0xba,_0x56f983:0xc3,_0x37268b:0x96,_0x5f1153:0x85,_0x198d32:0x96,_0x304258:0x90,_0x5c68e1:0xa2,_0x4f6557:0xa1,_0x1a50e0:0x3b4,_0x18247b:0x3b8,_0x25b0b6:0xac,_0x54c33d:0xa3,_0x1cf20a:0x9b,_0x3ff900:0x93,_0xad1d08:0x3b5,_0x3647cc:0x3b2,_0x2d6cb8:0x3ae,_0x5575bf:0x94,_0x2a9b31:0xa5,_0x706699:0x91,_0x25ce9d:0x8a,_0x370e28:0xa8,_0x233205:0x3d6,_0x570026:0x3bd,_0x3fc1b5:0x3d0,_0xc66138:0x8c,_0x3e4c6f:0xb6,_0x33c584:0xc8,_0x1caaf6:0x3ce,_0x565f38:0x3c2,_0x432445:0x3be},_0x297170={_0x5a3a39:0x132,_0x272138:0x125},_0x29b0d2={_0x2f2f3d:0x3a0,_0x4bfbc9:0x3b0,_0x4bd260:0x3a2,_0x60c015:0x4b2,_0x417a88:0x4cc,_0x3fe660:0x4ba},_0x123451={_0x343576:0x1eb,_0x3505ad:0xef};let _0x34f43a=this[_0x1b39ea(_0x19ef92._0x17ce79,0x3b1,0x3bd,_0x19ef92._0x203630)+'d'][_0x1b39ea(_0x19ef92._0x4fcdc6,_0x19ef92._0x1a73c1,0x3c6,_0x19ef92._0x1ddb2a)](_0x5c4e97);const _0x28691d=_0x1552d2===null?null:this['_clientsBy'+_0x1b39ea(0x3d1,_0x19ef92._0x4fcdc6,_0x19ef92._0x1852fb,_0x19ef92._0x36b6bc)]['get'](_0x1552d2)||null;!_0x34f43a&&(_0x34f43a={'ready':![],'stream':new MediaStream(),'videoMuted':_0x1236f6!==![],'audioMuted':_0x329445!==![]},this[_0x4ea606(_0x19ef92._0x3a8592,_0x19ef92._0x41f191,_0x19ef92._0x226232,_0x19ef92._0x4e67dd)+'d'][_0x4ea606(_0x19ef92._0x41f191,_0x19ef92._0x28c987,_0x19ef92._0x5ae905,_0x19ef92._0x389e5f)](_0x5c4e97,_0x34f43a));let _0x52cf28=![];_0x1236f6!==null&&(_0x52cf28=_0x52cf28||_0x34f43a['videoMuted']!==_0x1236f6,_0x34f43a[_0x4ea606(_0x19ef92._0x3210c1,_0x19ef92._0x314e80,_0x19ef92._0x56f983,_0x19ef92._0x3210c1)]=_0x1236f6);_0x329445!==null&&(_0x52cf28=_0x52cf28||_0x34f43a[_0x4ea606(_0x19ef92._0x37268b,0x8c,0x86,_0x19ef92._0x5f1153)]!==_0x329445,_0x34f43a[_0x4ea606(_0x19ef92._0x198d32,_0x19ef92._0x304258,_0x19ef92._0x5c68e1,_0x19ef92._0x4f6557)]=_0x329445);function _0x4ea606(_0x310714,_0x391003,_0x67866d,_0x44f8dc){return _0x5244c7(_0x44f8dc,_0x310714- -_0x123451._0x343576,_0x67866d-0x1ca,_0x44f8dc-_0x123451._0x3505ad);}const _0x2a6dab=_0x28691d!==null&&_0x34f43a['stream']!==null;if(_0x2a6dab){const _0x433e01=_0x28691d['remoteStre'+_0x1b39ea(_0x19ef92._0x1a50e0,_0x19ef92._0x1ddb2a,_0x19ef92._0x1ddb2a,_0x19ef92._0x18247b)][_0x4ea606(_0x19ef92._0x25b0b6,_0x19ef92._0x54c33d,0xad,0xa0)](_0x5c4e97);if(_0x433e01){const _0x2cb85a=_0x34f43a[_0x4ea606(_0x19ef92._0x1cf20a,0xa8,_0x19ef92._0x3ff900,_0x19ef92._0x1cf20a)];_0x433e01[_0x1b39ea(_0x19ef92._0xad1d08,_0x19ef92._0x3647cc,_0x19ef92._0x2d6cb8,0x3a8)]()[_0x4ea606(_0x19ef92._0x5ae905,_0x19ef92._0x5575bf,_0x19ef92._0x2a9b31,_0x19ef92._0x706699)](_0x3e038d=>{const _0x538993={_0x5e29e3:0x430,_0x54fb38:0x197,_0x5209ba:0xbf},_0xa1fa3b={_0x15dead:0x1d,_0x1ea9b7:0x2a};function _0x163d89(_0x4f2213,_0x1af29a,_0x161ed5,_0x564cfd){return _0x1b39ea(_0x564cfd- -_0xa1fa3b._0x15dead,_0x1af29a-_0xa1fa3b._0x1ea9b7,_0x4f2213,_0x564cfd-0x163);}function _0x31fd69(_0x92df06,_0xae3545,_0x57cb78,_0x11fbf7){return _0x4ea606(_0xae3545-_0x538993._0x5e29e3,_0xae3545-_0x538993._0x54fb38,_0x57cb78-_0x538993._0x5209ba,_0x57cb78);}!_0x2cb85a[_0x163d89(0x392,_0x29b0d2._0x2f2f3d,_0x29b0d2._0x4bfbc9,_0x29b0d2._0x4bd260)+'Id'](_0x3e038d['id'])&&_0x2cb85a[_0x31fd69(_0x29b0d2._0x60c015,0x4c3,_0x29b0d2._0x417a88,_0x29b0d2._0x3fe660)](_0x3e038d);});}else _0x28691d[_0x1b39ea(0x3b6,0x3bc,_0x19ef92._0x3647cc,_0x19ef92._0xad1d08)+_0x4ea606(0x97,0x8c,_0x19ef92._0x25ce9d,_0x19ef92._0x370e28)][_0x1b39ea(0x3c7,_0x19ef92._0x233205,_0x19ef92._0x570026,_0x19ef92._0x3fc1b5)](_0x5c4e97,_0x34f43a[_0x4ea606(0x9b,0xac,0xa2,_0x19ef92._0xc66138)]);}_0x34f43a['ready']!==_0x2a6dab&&(_0x52cf28=!![],_0x34f43a[_0x4ea606(_0x19ef92._0x3e4c6f,_0x19ef92._0x33c584,0xb1,0xb3)]=_0x2a6dab);if(_0x52cf28)this[_0x1b39ea(_0x19ef92._0x1caaf6,_0x19ef92._0x565f38,_0x19ef92._0x432445,0x3d2)]('change',_0x5c4e97,_0x34f43a);function _0x1b39ea(_0x345d87,_0x39fa96,_0x154870,_0xcc4b1b){return _0x5244c7(_0x154870,_0x345d87-_0x297170._0x5a3a39,_0x154870-_0x297170._0x272138,_0xcc4b1b-0x181);}return _0x34f43a;}['getStatus'](_0x43e052){const _0x2d5708={_0x4accf9:0x250,_0x4c6f21:0x248,_0x4843e8:0x256,_0x1b6a6d:0x25a,_0x4638c1:0x23d,_0x248e48:0x236},_0x1a9011={_0x4a31b8:0x4df,_0x4154dd:0x125},_0x16c520={_0x4d46fd:0x16d,_0x11f519:0xe};let _0x555164=this[_0x36e42f(-0x250,-0x23d,-0x23f,-_0x2d5708._0x4accf9)+'d'][_0x36e42f(-_0x2d5708._0x4c6f21,-_0x2d5708._0x4843e8,-0x24b,-_0x2d5708._0x1b6a6d)](_0x43e052);!_0x555164&&(_0x555164=this[_0x36e42f(-0x244,-_0x2d5708._0x4638c1,-_0x2d5708._0x248e48,-0x23f)+'us'](null,_0x43e052));function _0x439177(_0x3aac9e,_0x35dcfb,_0x269846,_0x4ee71b){return _0x7b8ea7(_0x3aac9e,_0x35dcfb-0x1e3,_0x4ee71b-_0x16c520._0x4d46fd,_0x4ee71b-_0x16c520._0x11f519);}function _0x36e42f(_0x105c04,_0x399dba,_0x5d0129,_0x38c9ae){return _0x5244c7(_0x5d0129,_0x105c04- -_0x1a9011._0x4a31b8,_0x5d0129-0x129,_0x38c9ae-_0x1a9011._0x4154dd);}return _0x555164;}[_0x7b8ea7(0x1a8,0x1be,0x1ac,0x1bc)+'us'](_0x423e6b){const _0x194efe={_0x195dd1:0x151,_0x42a4d4:0x144,_0x41e18a:0x167,_0x53ea5a:0x156,_0x2027bf:0x14e,_0x41e5af:0x13e,_0x31ab2f:0x15a,_0x52b664:0x14f},_0x14d50b={_0x4f1b6d:0x33,_0x396d6b:0x5b,_0x13517f:0x182},_0x25dc3b={_0x12ff1b:0x101,_0x358a27:0x1bc};function _0x2517e8(_0x19120d,_0x18c39b,_0x239111,_0x3b6822){return _0x7b8ea7(_0x239111,_0x18c39b-_0x25dc3b._0x12ff1b,_0x18c39b- -0x113,_0x3b6822-_0x25dc3b._0x358a27);}function _0x53237c(_0x37ee89,_0x157954,_0x11a9fd,_0x52e623){return _0x7b8ea7(_0x37ee89,_0x157954-_0x14d50b._0x4f1b6d,_0x52e623- -_0x14d50b._0x396d6b,_0x52e623-_0x14d50b._0x13517f);}this[_0x53237c(_0x194efe._0x195dd1,_0x194efe._0x42a4d4,_0x194efe._0x41e18a,_0x194efe._0x53ea5a)+'d'][_0x53237c(_0x194efe._0x2027bf,_0x194efe._0x41e5af,_0x194efe._0x31ab2f,_0x194efe._0x52b664)](_0x423e6b);}};
1const{EventEmitter:t}=require("events");module.exports=class extends t{constructor(){super(),this._statusById=new Map,this._clientsBySwarmId=new Map}addClient(t,e){this._clientsBySwarmId.set(t,e)}getClient(t){return this._clientsBySwarmId.get(t)||null}deleteClient(t){this._clientsBySwarmId.delete(t)}clients(){return this._clientsBySwarmId.values()}updateStatus(t,e,s=null,l=null){let a=this._statusById.get(e);const d=null===t?null:this._clientsBySwarmId.get(t)||null;a||(a={ready:!1,stream:new MediaStream,videoMuted:!1!==s,audioMuted:!1!==l},this._statusById.set(e,a));let u=!1;null!==s&&(u=u||a.videoMuted!==s,a.videoMuted=s),null!==l&&(u=u||a.audioMuted!==l,a.audioMuted=l);const n=null!==d&&null!==a.stream;if(n){const t=d.remoteStreams.get(e);if(t){const e=a.stream;t.getTracks().forEach(t=>{e.getTrackById(t.id)||e.addTrack(t)})}else d.remoteStreams.set(e,a.stream)}return a.ready!==n&&(u=!0,a.ready=n),u&&this.emit("change",e,a),a}getStatus(t){let e=this._statusById.get(t);return e||(e=this.updateStatus(null,t)),e}deleteStatus(t){this._statusById.delete(t)}};
@holepunchto/keet-call/client/call/webrtc.js +1 -1
……@@ -1 +1 @@
1(function(_0x5b8125,_0x3b6a95){const _0x55d951={_0x52ab49:0x610,_0x24396e:0x613,_0x32bada:0x616,_0x1c6c0a:0x631,_0xb1591f:0x1a9,_0xc7786f:0x17e,_0x495a96:0x19f,_0x5dd2c4:0x5da,_0x3cc6b8:0x610,_0x18a98d:0x60a,_0x538b6c:0x630,_0x394d43:0x15e,_0x274955:0x5df,_0x3d1dc3:0x5bc,_0x27a2fc:0x5c0,_0x48a8b2:0x591,_0x4dc2e9:0x194,_0x380c9c:0x18c,_0x5ede43:0x177,_0x50766c:0x605,_0x58dbd5:0x5dc,_0x462834:0x5d8,_0x3965ff:0x190,_0x48642d:0x162,_0x4d6411:0x139},_0x35aecd={_0x1ba3b4:0x39d},_0x5e844d={_0x2928a9:0x3c8},_0x1ad684=_0x5b8125();function _0x1b95f7(_0x3073f4,_0xc38953,_0x1f5732,_0x3cc71a){return _0x2d11(_0xc38953-_0x5e844d._0x2928a9,_0x3073f4);}function _0xfd5156(_0xa1b9d1,_0x1bb0cd,_0x52882a,_0x2b4333){return _0x2d11(_0x52882a- -_0x35aecd._0x1ba3b4,_0xa1b9d1);}while(!![]){try{const _0xf1b3a5=parseInt(_0x1b95f7(0x5ea,0x61c,_0x55d951._0x52ab49,0x64d))/(0x13+-0x2b6*-0xd+-0x2350)*(-parseInt(_0x1b95f7(_0x55d951._0x24396e,_0x55d951._0x32bada,0x617,_0x55d951._0x1c6c0a))/(0x140e*0x1+0xabb+-0x1ec7))+-parseInt(_0xfd5156(-_0x55d951._0xb1591f,-0x175,-_0x55d951._0xc7786f,-_0x55d951._0x495a96))/(-0x5a1*-0x1+-0xc*-0xee+-0x2*0x863)+parseInt(_0x1b95f7(_0x55d951._0x5dd2c4,_0x55d951._0x3cc6b8,_0x55d951._0x18a98d,_0x55d951._0x538b6c))/(-0xa9*0x1+0x1e08+0x343*-0x9)*(parseInt(_0xfd5156(-0x160,-0x155,-_0x55d951._0x394d43,-0x140))/(-0x2658+-0x9*0x42e+0x16f*0x35))+parseInt(_0x1b95f7(_0x55d951._0x274955,_0x55d951._0x3d1dc3,_0x55d951._0x27a2fc,_0x55d951._0x48a8b2))/(-0xf2e+0x1509+-0x5d5)+-parseInt(_0xfd5156(-0x1a7,-_0x55d951._0x4dc2e9,-_0x55d951._0x380c9c,-_0x55d951._0x5ede43))/(-0x192+0x1*0x763+-0x5ca)+parseInt(_0x1b95f7(0x613,_0x55d951._0x50766c,_0x55d951._0x58dbd5,_0x55d951._0x462834))/(-0x103c+0xceb*-0x1+0x1d2f)+-parseInt(_0xfd5156(-0x150,-_0x55d951._0x3965ff,-_0x55d951._0x48642d,-_0x55d951._0x4d6411))/(-0x1453+0x567*0x2+-0x98e*-0x1);if(_0xf1b3a5===_0x3b6a95)break;else _0x1ad684['push'](_0x1ad684['shift']());}catch(_0x219cc1){_0x1ad684['push'](_0x1ad684['shift']());}}}(_0x5b1d,-0x101e3+-0x223*0x11e+0x500b8));const _0x1a34b6=(function(){let _0x46af00=!![];return function(_0x1a5705,_0x46b4c7){const _0x56cf74={_0x7bddbd:0x1ce,_0x14bbf4:0x1ed},_0x319858=_0x46af00?function(){function _0x175643(_0x248502,_0x2f75f5,_0x106a4f,_0x975598){return _0x2d11(_0x975598- -0x12,_0x248502);}if(_0x46b4c7){const _0xc41793=_0x46b4c7[_0x175643(_0x56cf74._0x7bddbd,0x1e6,0x208,_0x56cf74._0x14bbf4)](_0x1a5705,arguments);return _0x46b4c7=null,_0xc41793;}}:function(){};return _0x46af00=![],_0x319858;};}()),_0x4f60b7=_0x1a34b6(this,function(){const _0xc3f400={_0xfdd84a:0x160,_0x2c1900:0x17d,_0x7d85bd:0x183,_0x44aff4:0x167,_0x340c8d:0x11d,_0x533bb7:0x141,_0x53e02b:0x151,_0x28a61c:0x3bd,_0x5eb60c:0x392,_0x17ba26:0x396,_0x1e5f32:0x3ca,_0x1809fb:0x14f,_0x5d4de4:0xfe,_0x255c79:0x133},_0x40dfe0={_0x455a4f:0x1cd},_0x3ac346={_0x106ef7:0xbd};function _0x584126(_0x24ec85,_0x402c2e,_0x503869,_0x52f506){return _0x2d11(_0x503869- -_0x3ac346._0x106ef7,_0x52f506);}function _0x188d19(_0x51421f,_0x35a39c,_0x3ebb31,_0x1b74df){return _0x2d11(_0x51421f-_0x40dfe0._0x455a4f,_0x3ebb31);}return _0x4f60b7[_0x584126(_0xc3f400._0xfdd84a,_0xc3f400._0x2c1900,_0xc3f400._0x7d85bd,_0xc3f400._0x44aff4)]()[_0x584126(_0xc3f400._0x340c8d,0x13a,_0xc3f400._0x533bb7,_0xc3f400._0x53e02b)](_0x188d19(_0xc3f400._0x28a61c,_0xc3f400._0x5eb60c,_0xc3f400._0x17ba26,_0xc3f400._0x1e5f32)+'+$')['toString']()['constructo'+'r'](_0x4f60b7)['search'](_0x584126(_0xc3f400._0x1809fb,_0xc3f400._0x5d4de4,_0xc3f400._0x255c79,0x157)+'+$');});function _0x5b1d(){const _0x3c80bd=['isPolite','\x20remoteDes','2bZcTlM','parse','raStreamId','tListener','_screenTra','stream','12673tCavwJ','tracer','rtcp','addTrack','scription','alMessage','getStatus','(((.+)+)+)','State','addEventLi','bind','338742lCxFdX','sceiver','as\x20already','connection','candidates','sendrecv','ange','statechang','version','ription','search','apply','Ready','localDescr','mid','video','_sendSigna','proxyPort','replaceTra','cription\x20w','closed','nsceiver','enStreamId','port','require','ams','warn','iver','_ontrack','283045fzVmVb','ack','notify','setRemoteD','wait','signal','emit','remoteCame','_closed','unified-pl','_peer','127.0.0.1','_remotes','track','121404ipbdAK','_onTrack','_screenStr','ionstatech','_audioTran','stener','_onerror','remoteScre','removeAllL','escription','rack','_videoTran','remoteDesc','trace','direction','setVideoTr','ready','swarmId','_rewriteSD','_maybeEmit','handleSign','close','_cameraStr','ipVer','udp','alMessage:','sdp','_onconnect','1132686xYdTTE','ionStateCh','603328xbSFLk','sender','3015YeJexH','toString','_onConnect','removeEven','audio','eamId','addTransce','setLocalDe','connected','1280RNaEwf','media','exports','_trackRead'];_0x5b1d=function(){return _0x3c80bd;};return _0x5b1d();}_0x4f60b7();const {EventEmitter}=require('events'),sdpTransform=require('sdp-transform');function _0x58b2a8(_0x4adf8c,_0x338151,_0x298396,_0x1fab72){const _0x5d276e={_0x3fca45:0x2a5};return _0x2d11(_0x338151-_0x5d276e._0x3fca45,_0x298396);}function _0x2d11(_0x499481,_0x3d437e){const _0x125f4e=_0x5b1d();return _0x2d11=function(_0x4595fd,_0x2ab813){_0x4595fd=_0x4595fd-(0x1cf*-0x3+0x23df+-0x1*0x1c87);let _0x1483cf=_0x125f4e[_0x4595fd];return _0x1483cf;},_0x2d11(_0x499481,_0x3d437e);}const safetyCatch=require('safety-catch'),{createTracer}=require('hypertrace'),Signal=require('signal-promise'),LOCALHOST=_0x121933(0x10,0x35,0x3b,0x61);function _0x121933(_0x291bb8,_0x1379dd,_0x2855ea,_0x42e4f1){const _0x16a123={_0x2fa9ae:0x1e7};return _0x2d11(_0x1379dd- -_0x16a123._0x2fa9ae,_0x42e4f1);}module[_0x121933(0x3a,0x63,0x63,0x3d)]=class KeetWebRTCClient extends EventEmitter{constructor(_0x51e616,_0x5759c5,_0x43a2e2,_0x259ea4,_0x5d32d7,_0x2e06c1,{onerror:onerror=safetyCatch,parentTracer:_0x10cd03}={}){const _0x8fcab1={_0x55fd3a:0x39b,_0x4eb461:0x378,_0x1fa840:0x3b8,_0x33b601:0x370,_0x4ebfac:0x374,_0x8b962d:0x3a4,_0x2f7b29:0xe3,_0x4e9766:0xec,_0x23be56:0xf6,_0x249c15:0x3b7,_0x17213c:0x39c,_0x20517f:0x126,_0x4727eb:0x12a,_0x5539e1:0x128,_0x2dbfe7:0x391,_0x2cf83f:0x38e,_0x340927:0x35b,_0x20107d:0x36e,_0x1b85a2:0x3a0,_0x4f1678:0x387,_0x447a11:0x12b,_0x190177:0x13a,_0xf01f46:0x121,_0x101322:0xfb,_0x358bde:0x13b,_0xe3ec2f:0x112,_0x5d919b:0x153,_0x82d501:0x35f,_0x42ed94:0x378,_0x2470c5:0x36d,_0x23d261:0x11a,_0x4c215d:0x134,_0x3d2b0b:0x109,_0x278e5a:0x38c,_0x391be9:0x3a2,_0x466d78:0x3af,_0xd60492:0x3db,_0x48b7f6:0x388,_0x31b184:0x37c,_0x269dd4:0x377,_0x1ee739:0x361,_0x84cb74:0x345,_0x472edc:0x365,_0x1b12ad:0x375,_0x215d47:0x110,_0x45bb6c:0x123,_0x60df47:0x120,_0x5ea4a0:0x3ac,_0x417bc6:0x3c7,_0x3188a4:0x37d,_0x154bf2:0x140,_0x481f4d:0xf2,_0x7e209f:0x388,_0x4e6e85:0x38b,_0x1df28c:0x38d,_0x5a342a:0x35e,_0x5842a7:0x36e,_0x136fa8:0x352,_0x1ed382:0x35c,_0x10bf9b:0x11c,_0x3d80f4:0xe2,_0x3dcf65:0x35d,_0x1089c8:0x353,_0x37234d:0x36b,_0x21347e:0x103,_0x46c262:0xa3,_0x574e01:0xf2,_0x2e6dc5:0x3a9,_0x1e1c4a:0x3b0,_0x1245f4:0xdd,_0x27df41:0x12b,_0x4220c9:0x378,_0x1d7387:0x33c,_0x485b55:0xf1,_0x1569bc:0xc6,_0x4679e3:0x11c,_0x100c89:0x35d,_0x14ec79:0x340,_0x26e4f6:0x34e,_0x29cfe1:0x345,_0x4d75fa:0x38f,_0x18b613:0x3b5,_0x3fa90f:0x360,_0x15a5b4:0xf4,_0x2e7415:0xe0,_0x16db81:0xe6,_0x122c85:0xfc,_0xb83469:0xf8,_0x52e686:0x37c,_0x561df8:0x365,_0x441adb:0x368,_0x57d58d:0x13d,_0x21c2cf:0x100,_0x51a575:0x375,_0x53c04d:0x373,_0x56a8a2:0x356,_0x1c4afc:0x122,_0x1989fe:0x107,_0x2e8b05:0x13b,_0x5517ae:0xf3,_0x193d3d:0xf1,_0x1c1d8c:0xdb,_0x4b425e:0x118,_0x5358e0:0x38b,_0x3319ef:0x3aa,_0x1c198e:0x3b5,_0x1b2e9a:0x37a,_0x10a5f0:0x368,_0x3425b0:0x355,_0x24970c:0xfa,_0x403b96:0xf1,_0x4d798d:0x11e,_0x3d43ee:0xf5,_0x38d7f2:0x3b0,_0x52f0c2:0x3e4,_0x4e0bac:0xbd,_0x415923:0x105,_0x2e10cb:0x119,_0x1ef670:0x102,_0x1c38bd:0x12d,_0x30d6f7:0x116,_0x3ccc44:0x386,_0x1e723e:0x3ba,_0x390cfb:0x3b7,_0x131cec:0x399,_0xac440f:0x34e,_0x21b468:0x370,_0x2cbebd:0x392},_0x3d2dc7={_0x3a93a7:0x10c,_0x533a45:0x13a},_0xf471f3={_0x448204:0x15f,_0x36ba1b:0x144};super(),this[_0x1ec01f(_0x8fcab1._0x55fd3a,_0x8fcab1._0x4eb461,0x382,_0x8fcab1._0x1fa840)]=_0x5759c5,this[_0x1ec01f(_0x8fcab1._0x33b601,_0x8fcab1._0x4ebfac,_0x8fcab1._0x8b962d,0x37b)]=_0x43a2e2,this['isPolite']=_0x51e616,this['remoteStre'+_0x1fbc33(_0x8fcab1._0x2f7b29,_0x8fcab1._0x4e9766,0xd9,_0x8fcab1._0x23be56)]=new Map(),this[_0x1ec01f(0x383,0x36f,_0x8fcab1._0x249c15,_0x8fcab1._0x17213c)+_0x1fbc33(_0x8fcab1._0x20517f,_0x8fcab1._0x4727eb,0x126,_0x8fcab1._0x5539e1)]=null,this[_0x1ec01f(_0x8fcab1._0x2dbfe7,_0x8fcab1._0x2cf83f,_0x8fcab1._0x2cf83f,_0x8fcab1._0x340927)+_0x1ec01f(0x375,_0x8fcab1._0x20107d,_0x8fcab1._0x1b85a2,_0x8fcab1._0x4f1678)]=null,this[_0x1fbc33(_0x8fcab1._0x447a11,_0x8fcab1._0x190177,0x14e,0x14f)]=createTracer(this,{'parent':_0x10cd03}),this[_0x1fbc33(_0x8fcab1._0xf01f46,0xee,0x150,_0x8fcab1._0x101322)+'y']=this[_0x1fbc33(0x122,_0x8fcab1._0x358bde,_0x8fcab1._0xe3ec2f,_0x8fcab1._0x5d919b)]?new Signal():null;function _0x1fbc33(_0x2335ed,_0x28438e,_0x4a0bc0,_0x1aef10){return _0x58b2a8(_0x2335ed-_0xf471f3._0x448204,_0x2335ed- -0x3cf,_0x1aef10,_0x1aef10-_0xf471f3._0x36ba1b);}this['_closed']=![],this[_0x1ec01f(0x390,_0x8fcab1._0x82d501,_0x8fcab1._0x4eb461,_0x8fcab1._0x2cf83f)]=onerror,this[_0x1ec01f(_0x8fcab1._0x1b85a2,_0x8fcab1._0x42ed94,_0x8fcab1._0x2470c5,0x3af)+_0x1fbc33(_0x8fcab1._0x23d261,_0x8fcab1._0x4c215d,_0x8fcab1._0x3d2b0b,0x139)]=_0x259ea4,this[_0x1ec01f(_0x8fcab1._0x278e5a,0x3a4,0x375,_0x8fcab1._0x391be9)+_0x1ec01f(_0x8fcab1._0x466d78,0x3cc,0x384,_0x8fcab1._0xd60492)]=_0x5d32d7,this[_0x1ec01f(_0x8fcab1._0x48b7f6,0x37e,_0x8fcab1._0x31b184,_0x8fcab1._0x278e5a)]=_0x2e06c1,this['_peer']=new RTCPeerConnection({'iceServers':[],'rtcpMuxPolicy':_0x1ec01f(_0x8fcab1._0x269dd4,_0x8fcab1._0x1ee739,_0x8fcab1._0x84cb74,_0x8fcab1._0x472edc),'sdpSemantics':_0x1ec01f(0x385,0x378,_0x8fcab1._0x1b12ad,0x365)+'an'}),this[_0x1fbc33(_0x8fcab1._0x215d47,_0x8fcab1._0x45bb6c,_0x8fcab1._0x60df47,0x11d)+'ionstatech'+'ange']=this[_0x1ec01f(_0x8fcab1._0x5ea4a0,_0x8fcab1._0x417bc6,_0x8fcab1._0x3188a4,0x3bc)+_0x1fbc33(_0x8fcab1._0xe3ec2f,0x131,_0x8fcab1._0x154bf2,_0x8fcab1._0x481f4d)+_0x1ec01f(_0x8fcab1._0x472edc,_0x8fcab1._0x7e209f,_0x8fcab1._0x4e6e85,_0x8fcab1._0x1df28c)][_0x1ec01f(_0x8fcab1._0x5a342a,_0x8fcab1._0x5842a7,_0x8fcab1._0x136fa8,_0x8fcab1._0x1ed382)](this),this[_0x1fbc33(0xf1,0xc5,_0x8fcab1._0x10bf9b,_0x8fcab1._0x3d80f4)][_0x1ec01f(_0x8fcab1._0x3dcf65,_0x8fcab1._0x1089c8,_0x8fcab1._0x37234d,_0x8fcab1._0x3dcf65)+'stener']('connection'+_0x1fbc33(0xd1,_0x8fcab1._0x21347e,_0x8fcab1._0x46c262,_0x8fcab1._0x574e01)+'e',this['_onconnect'+'ionstatech'+'ange']),this[_0x1ec01f(0x37b,_0x8fcab1._0x2e6dc5,_0x8fcab1._0x1e1c4a,_0x8fcab1._0x4ebfac)]=this[_0x1fbc33(0xf6,_0x8fcab1._0x1245f4,0xc7,_0x8fcab1._0x27df41)][_0x1ec01f(_0x8fcab1._0x5a342a,_0x8fcab1._0x4220c9,_0x8fcab1._0x1d7387,0x361)](this),this[_0x1fbc33(_0x8fcab1._0x485b55,0x111,_0x8fcab1._0x1569bc,_0x8fcab1._0x4679e3)][_0x1ec01f(_0x8fcab1._0x100c89,_0x8fcab1._0x14ec79,_0x8fcab1._0x26e4f6,_0x8fcab1._0x29cfe1)+_0x1ec01f(_0x8fcab1._0x4d75fa,_0x8fcab1._0x18b613,_0x8fcab1._0x3fa90f,0x393)](_0x1fbc33(_0x8fcab1._0x15a5b4,_0x8fcab1._0x2e7415,0xc6,_0x8fcab1._0x45bb6c),this[_0x1fbc33(_0x8fcab1._0x16db81,0xfd,_0x8fcab1._0x122c85,_0x8fcab1._0xb83469)]),this['_videoTran'+_0x1ec01f(_0x8fcab1._0x3fa90f,0x335,_0x8fcab1._0x52e686,_0x8fcab1._0x561df8)]=null,this[_0x1ec01f(0x38e,0x389,_0x8fcab1._0x441adb,0x3b1)+'sceiver']=null;function _0x1ec01f(_0x2c2a75,_0x33c454,_0x5a0a9a,_0x529bba){return _0x58b2a8(_0x2c2a75-_0x3d2dc7._0x3a93a7,_0x2c2a75- -_0x3d2dc7._0x533a45,_0x5a0a9a,_0x529bba-0x195);}this[_0x1fbc33(_0x8fcab1._0x5539e1,_0x8fcab1._0x57d58d,_0x8fcab1._0x21c2cf,_0x8fcab1._0x60df47)+_0x1ec01f(0x374,_0x8fcab1._0x51a575,_0x8fcab1._0x53c04d,_0x8fcab1._0x56a8a2)]=null;if(this[_0x1fbc33(_0x8fcab1._0x1c4afc,_0x8fcab1._0x1989fe,_0x8fcab1._0x2e8b05,_0x8fcab1._0x5517ae)])return;this[_0x1fbc33(_0x8fcab1._0x193d3d,0x107,_0x8fcab1._0x1c1d8c,_0x8fcab1._0x4b425e)][_0x1ec01f(_0x8fcab1._0x1e1c4a,_0x8fcab1._0x5358e0,_0x8fcab1._0x3319ef,_0x8fcab1._0x1c198e)+_0x1ec01f(_0x8fcab1._0x1b2e9a,_0x8fcab1._0x10a5f0,0x366,_0x8fcab1._0x3425b0)](_0x1fbc33(0xd9,0x104,_0x8fcab1._0x24970c,0xee)),this[_0x1fbc33(_0x8fcab1._0x403b96,0xc5,_0x8fcab1._0x4d798d,_0x8fcab1._0x3d43ee)][_0x1ec01f(_0x8fcab1._0x38d7f2,_0x8fcab1._0x52f0c2,_0x8fcab1._0x1df28c,0x38a)+_0x1fbc33(0xe5,_0x8fcab1._0x1989fe,_0x8fcab1._0x4e0bac,_0x8fcab1._0x415923)](_0x1fbc33(_0x8fcab1._0x2e10cb,_0x8fcab1._0x1ef670,_0x8fcab1._0x1c38bd,_0x8fcab1._0x30d6f7)),this[_0x1ec01f(_0x8fcab1._0x3ccc44,_0x8fcab1._0x1e723e,_0x8fcab1._0x390cfb,_0x8fcab1._0x131cec)]['addTransce'+_0x1ec01f(_0x8fcab1._0x1b2e9a,_0x8fcab1._0xac440f,_0x8fcab1._0x21b468,_0x8fcab1._0x2cbebd)]('video'),this['_sendSigna'+'l']();}[_0x58b2a8(0x4d6,0x4d6,0x4fc,0x4b5)+'P'](_0x26e973){const _0xef0854={_0x30dd86:0x3a0,_0x431069:0x360,_0x220bcf:0x35f,_0x5e7df8:0x38c,_0x8c1489:0x203,_0x252b71:0x1fe,_0x48e8d3:0x1d4,_0x269a2b:0x1b5,_0x4f8008:0x1c5,_0x3a0a16:0x1b7,_0x8c4720:0x35b,_0x9f5da4:0x300,_0xf65895:0x32d,_0x32c3b8:0x328,_0x2c9e46:0x1f3,_0x21def5:0x1bf,_0x50bbae:0x1b1,_0x4710d2:0x30a,_0xfc75be:0x324,_0x2ea345:0x334,_0x4037bf:0x315,_0x28b04b:0x34f,_0x3a4258:0x399,_0x1082e3:0x335,_0x465002:0x1d5,_0x134222:0x19e,_0x2289ed:0x1e4,_0x1a26b5:0x217,_0x238639:0x203},_0x33463b={_0x5d53bd:0x26,_0x11f427:0x1e1},_0x4f8936=sdpTransform[_0x140988(_0xef0854._0x30dd86,_0xef0854._0x431069,_0xef0854._0x220bcf,_0xef0854._0x5e7df8)](_0x26e973);function _0x493c54(_0x321bd3,_0x488754,_0x462198,_0x558f07){return _0x121933(_0x321bd3-0x187,_0x488754-0x1a1,_0x462198-0x27,_0x462198);}function _0x140988(_0x34b76e,_0x242fad,_0x17dff3,_0x206f5b){return _0x121933(_0x34b76e-_0x33463b._0x5d53bd,_0x206f5b-0x324,_0x17dff3-_0x33463b._0x11f427,_0x242fad);}for(const _0x4326d0 of _0x4f8936[_0x493c54(0x1e1,_0xef0854._0x8c1489,_0xef0854._0x252b71,_0xef0854._0x48e8d3)]){_0x4326d0[_0x493c54(_0xef0854._0x269a2b,_0xef0854._0x4f8008,_0xef0854._0x3a0a16,0x1e6)]=_0x4326d0[_0x140988(_0xef0854._0x8c4720,_0xef0854._0x9f5da4,_0xef0854._0xf65895,_0xef0854._0x32c3b8)]['port']=this[_0x493c54(_0xef0854._0x2c9e46,_0xef0854._0x21def5,_0xef0854._0x50bbae,0x1dc)],_0x4326d0['connection']['ip']=_0x4326d0['rtcp']['address']=LOCALHOST,_0x4326d0[_0x140988(0x32d,_0xef0854._0x4710d2,_0xef0854._0xfc75be,_0xef0854._0x2ea345)][_0x140988(0x328,_0xef0854._0x4037bf,0x316,0x339)]=_0x4326d0['rtcp'][_0x140988(_0xef0854._0x28b04b,0x385,_0xef0854._0x3a4258,0x373)]=0x1d3f+-0x127f*0x1+0x394*-0x3,_0x4326d0[_0x140988(0x347,0x30e,0x31b,_0xef0854._0x1082e3)]=[{'ip':LOCALHOST,'port':this[_0x493c54(_0xef0854._0x465002,0x1bf,_0xef0854._0x134222,_0xef0854._0x2289ed)],'component':0x1,'foundation':0x1,'generation':0x0,'priority':0x1,'type':'host','transport':_0x493c54(_0xef0854._0x1a26b5,0x1f1,_0xef0854._0x238639,0x21b),'network-cost':0x32,'network-id':0x2}];}return sdpTransform['write'](_0x4f8936);}async[_0x121933(0x0,0x1d,0xd,-0x14)+'l'](){const _0x507acf={_0x494c3d:0xa7,_0x554d99:0xc3,_0x147a58:0xb4,_0x170922:0xb3,_0x5913d1:0xca,_0x4eaa58:0xc8,_0x15e88d:0xdd,_0x552887:0x244,_0x255b59:0x280,_0x4ec77b:0xec,_0x40378c:0x103,_0x2256c8:0xdd,_0x94ed92:0x242,_0x32139a:0x234,_0x15484b:0x266,_0x2fa01d:0x2de,_0x56198e:0x2ab,_0x1f0ef9:0x9c,_0x5d3e2e:0x89,_0x1113d6:0x99,_0x170a89:0xb8,_0x21e6d1:0xb8,_0x46a4b7:0xb4,_0xf9c193:0x27c,_0x2389e4:0x263,_0x21d3ed:0x266,_0x51b6df:0x295,_0x2ab681:0x9a,_0xdc9b31:0xd2,_0x445ad3:0xda,_0x34cba2:0xc2,_0x3a0250:0xd0,_0x112c57:0xe1,_0x3f9c16:0xfa,_0x29f6b9:0xf0,_0x50904b:0x2bb,_0x5e46ce:0x286,_0x37aa9a:0x2b7},_0x515c80={_0x55d4e1:0x24c,_0x5d0e54:0x18c},_0x159667={_0x3aad23:0x24,_0x349487:0x93,_0x5eec7b:0x13c};function _0x160729(_0x539423,_0x326f28,_0x48f4f4,_0x17e78e){return _0x121933(_0x539423-_0x159667._0x3aad23,_0x17e78e-_0x159667._0x349487,_0x48f4f4-_0x159667._0x5eec7b,_0x48f4f4);}if(this[_0x160729(0xc5,_0x507acf._0x494c3d,_0x507acf._0x554d99,_0x507acf._0x147a58)])return;function _0x52d121(_0xc9f7ae,_0x42b6a9,_0x5ebf1c,_0x42cee3){return _0x121933(_0xc9f7ae-0x188,_0x5ebf1c-_0x515c80._0x55d4e1,_0x5ebf1c-_0x515c80._0x5d0e54,_0x42b6a9);}if(this['isPolite']&&this[_0x160729(0xd3,_0x507acf._0x170922,_0x507acf._0x5913d1,0xc7)][_0x160729(_0x507acf._0x4eaa58,_0x507acf._0x15e88d,0xfb,0xd7)+_0x52d121(_0x507acf._0x552887,_0x507acf._0x255b59,0x262,0x23b)]===null)return;if(!this[_0x160729(_0x507acf._0x4ec77b,_0x507acf._0x40378c,_0x507acf._0x2256c8,0xf8)]&&this['_peer'][_0x52d121(_0x507acf._0x94ed92,_0x507acf._0x32139a,0x266,_0x507acf._0x15484b)+'iption']!==null)return;await this['_peer'][_0x52d121(_0x507acf._0x2fa01d,0x289,_0x507acf._0x56198e,0x294)+_0x160729(_0x507acf._0x1f0ef9,_0x507acf._0x5d3e2e,0x6a,_0x507acf._0x1113d6)]();if(this[_0x160729(_0x507acf._0x170a89,_0x507acf._0x21e6d1,0xe2,_0x507acf._0x46a4b7)])return;const {type:_0x20db0c,sdp:_0x325964}=this['_peer'][_0x52d121(_0x507acf._0xf9c193,_0x507acf._0x2389e4,_0x507acf._0x21d3ed,_0x507acf._0x51b6df)+'iption'];this['emit'](_0x160729(_0x507acf._0x2ab681,_0x507acf._0xdc9b31,_0x507acf._0x445ad3,_0x507acf._0x34cba2),this,{'cameraStreamId':this[_0x160729(0xfa,0xb5,_0x507acf._0x3a0250,_0x507acf._0x112c57)+_0x160729(0x107,0x100,_0x507acf._0x3f9c16,_0x507acf._0x29f6b9)],'screenStreamId':this[_0x52d121(_0x507acf._0x50904b,0x262,_0x507acf._0x5e46ce,_0x507acf._0x37aa9a)+'eamId'],'description':{'type':_0x20db0c,'sdp':_0x325964}});}async[_0x121933(0x70,0x5a,0x2e,0x5b)+_0x58b2a8(0x4e8,0x4e1,0x4bc,0x4ea)+'ange'](){const _0x219613={_0x464466:0xc9,_0x357f4f:0xba,_0x37a46b:0xb2,_0x796af2:0x9a,_0xf55638:0x57b,_0x515065:0x51a,_0x413996:0x511,_0x1cdff1:0x540,_0x2f047c:0x50b,_0x3c167a:0x504,_0x1e32cc:0x511,_0x57430f:0x4ee,_0x3f0bc6:0x502,_0x47bb4f:0x4de,_0x255607:0xe0,_0x50fe13:0xc0,_0x51ed12:0xbe,_0x2f8f57:0xf9,_0x251fc3:0x511,_0x598ad4:0x524,_0x355c3d:0x545,_0x4d8124:0x523},_0x5a225c={_0x535381:0x17e,_0x42b4fa:0xbf,_0x355f0e:0xa7},_0x1d1523={_0x2df8ae:0xb0,_0x5c1b01:0x6c,_0x144bf7:0x110};function _0x2ceea4(_0x36584a,_0x3056aa,_0x4dc803,_0x34bacf){return _0x58b2a8(_0x36584a-_0x1d1523._0x2df8ae,_0x4dc803-_0x1d1523._0x5c1b01,_0x36584a,_0x34bacf-_0x1d1523._0x144bf7);}function _0x11d047(_0x375551,_0x380f7b,_0x5462ce,_0x579d5a){return _0x121933(_0x375551-_0x5a225c._0x535381,_0x375551-_0x5a225c._0x42b4fa,_0x5462ce-_0x5a225c._0x355f0e,_0x579d5a);}if(this['_peer']['connection'+_0x11d047(_0x219613._0x464466,_0x219613._0x357f4f,_0x219613._0x37a46b,_0x219613._0x796af2)]===_0x2ceea4(0x558,0x535,0x558,_0x219613._0xf55638))this['_maybeEmit'+_0x2ceea4(_0x219613._0x515065,0x51a,_0x219613._0x413996,_0x219613._0x1cdff1)]();else this[_0x2ceea4(_0x219613._0x2f047c,_0x219613._0x3c167a,0x52c,_0x219613._0x1e32cc)]['connection'+_0x2ceea4(_0x219613._0x57430f,0x50a,_0x219613._0x3f0bc6,_0x219613._0x47bb4f)]===_0x11d047(_0x219613._0x255607,_0x219613._0x50fe13,_0x219613._0x51ed12,_0x219613._0x2f8f57)&&this[_0x2ceea4(_0x219613._0x251fc3,_0x219613._0x598ad4,_0x219613._0x355c3d,_0x219613._0x4d8124)]();}['_onTrack']({track:_0x114769,transceiver:_0x2bd0af}){const _0x57c7a0={_0x5a2fae:0x2e,_0x48026f:0x7c,_0x4cff65:0x63,_0x194dc7:0x398,_0xa99645:0x371,_0x37c500:0x37a,_0x1e035d:0x346,_0xbfa837:0x348,_0x1e4cf3:0x36e,_0x22422b:0x376,_0x55cf34:0x38,_0x2776f8:0x6b,_0x2c9a80:0x40,_0x35ccc9:0x3a,_0x5b4ac5:0x37a,_0x435cbc:0x344,_0x16f5e4:0x370,_0x20218b:0xa7,_0x19c630:0x4c,_0x5b9f6c:0x3e3,_0xc71c3b:0x3e6,_0x225b90:0x3d4,_0x5aeef0:0x38d,_0x3d157e:0x38c,_0x27e988:0x37e,_0x24270e:0x36d,_0x5de89f:0x3b7,_0x2e5687:0x35d,_0x45c4eb:0x383,_0x54aa99:0x8d,_0x585db4:0x5a,_0x33f491:0x6d,_0x3ec9c5:0x98,_0x447ee1:0x369,_0x5aa439:0x37b,_0x76211f:0x7e,_0x91d2cd:0xa7,_0x447d03:0x78,_0xeac116:0x406,_0x46e56e:0x3d3,_0xe55483:0x3fb,_0x2fe568:0x3d1,_0x4e0ac9:0x38c,_0x2f0787:0x39e,_0x17b2f4:0x392,_0xff9388:0x75,_0x379c89:0x7d,_0x1bf19b:0x98,_0x27c52e:0x394,_0x465d0a:0x3b2,_0x5edd08:0x35f,_0x510c8d:0x383,_0x43f4d0:0x3b4,_0x15faaf:0x38a,_0x38af5c:0x365,_0x365eac:0x378,_0x1258b1:0x38b,_0x4d32c9:0xb8,_0x21d97e:0xa5,_0x189d5b:0xa1,_0x2395e9:0x72,_0xcc44a3:0x65,_0x44b829:0x86,_0x30a275:0x96,_0x114a7e:0x3e1,_0xd67149:0x3ee,_0x2e4935:0x3ec,_0x415c2f:0xd3,_0x4f1565:0xaf,_0x20795d:0xa4,_0x265712:0x28,_0x2085cc:0x44,_0x1c8926:0x5d,_0x176eba:0x377,_0x56fc2f:0x3b4,_0x5b42c1:0x37e,_0x1b71da:0x3a9,_0x2aafa8:0x381},_0x50fe9a={_0x1ed5d8:0xde,_0x24a866:0x138},_0x50bf2b={_0x4f0c81:0x368,_0xabcae4:0xc1};_0x2bd0af[_0x3642e8(-_0x57c7a0._0x5a2fae,-_0x57c7a0._0x48026f,-_0x57c7a0._0x4cff65,-0x38)]=_0x41c7b3(_0x57c7a0._0x194dc7,_0x57c7a0._0xa99645,0x38c,_0x57c7a0._0x37c500);function _0x41c7b3(_0x241cb9,_0x1876c6,_0x1d0be6,_0x1a5c66){return _0x121933(_0x241cb9-0x1e1,_0x1a5c66-_0x50bf2b._0x4f0c81,_0x1d0be6-_0x50bf2b._0xabcae4,_0x241cb9);}function _0x3642e8(_0x36f918,_0x12a860,_0x2eb4a9,_0x311956){return _0x58b2a8(_0x36f918-_0x50fe9a._0x1ed5d8,_0x2eb4a9- -0x535,_0x36f918,_0x311956-_0x50fe9a._0x24a866);}if(_0x2bd0af['mid']==='0')this['_videoTran'+_0x41c7b3(_0x57c7a0._0x1e035d,_0x57c7a0._0xbfa837,_0x57c7a0._0x1e4cf3,_0x57c7a0._0x22422b)]=_0x2bd0af,this['remoteCame'+_0x3642e8(-_0x57c7a0._0x55cf34,-_0x57c7a0._0x2776f8,-_0x57c7a0._0x2c9a80,-_0x57c7a0._0x35ccc9)]!==null&&this['_remotes'][_0x41c7b3(_0x57c7a0._0x5b4ac5,0x359,_0x57c7a0._0x435cbc,_0x57c7a0._0x16f5e4)](this[_0x3642e8(-_0x57c7a0._0x20218b,-0xa7,-0x78,-_0x57c7a0._0x19c630)+'raStreamId'])[_0x41c7b3(_0x57c7a0._0x5b9f6c,0x3e3,_0x57c7a0._0xc71c3b,_0x57c7a0._0x225b90)][_0x41c7b3(_0x57c7a0._0x5aeef0,_0x57c7a0._0x3d157e,_0x57c7a0._0x27e988,_0x57c7a0._0x24270e)](_0x114769);else{if(_0x2bd0af[_0x41c7b3(_0x57c7a0._0x5de89f,0x35a,_0x57c7a0._0x2e5687,_0x57c7a0._0x45c4eb)]==='1')this[_0x3642e8(-_0x57c7a0._0x54aa99,-_0x57c7a0._0x585db4,-_0x57c7a0._0x33f491,-_0x57c7a0._0x3ec9c5)+_0x41c7b3(_0x57c7a0._0x447ee1,0x356,_0x57c7a0._0x5aa439,_0x57c7a0._0x22422b)]=_0x2bd0af,this[_0x3642e8(-_0x57c7a0._0x76211f,-_0x57c7a0._0x91d2cd,-_0x57c7a0._0x447d03,-0x8a)+_0x41c7b3(_0x57c7a0._0xeac116,_0x57c7a0._0x46e56e,_0x57c7a0._0xe55483,_0x57c7a0._0x2fe568)]!==null&&this[_0x41c7b3(_0x57c7a0._0x4e0ac9,0x3be,0x3a4,_0x57c7a0._0x2f0787)][_0x41c7b3(_0x57c7a0._0x17b2f4,_0x57c7a0._0x16f5e4,0x375,_0x57c7a0._0x16f5e4)](this[_0x3642e8(-_0x57c7a0._0xff9388,-_0x57c7a0._0x379c89,-_0x57c7a0._0x447d03,-_0x57c7a0._0x1bf19b)+'raStreamId'])['stream']['addTrack'](_0x114769);else _0x2bd0af[_0x41c7b3(_0x57c7a0._0x27c52e,_0x57c7a0._0x465d0a,_0x57c7a0._0x5edd08,_0x57c7a0._0x510c8d)]==='2'&&(this['_screenTra'+_0x41c7b3(0x360,_0x57c7a0._0x1e4cf3,_0x57c7a0._0x43f4d0,_0x57c7a0._0x15faaf)]=_0x2bd0af,this['remoteScre'+_0x41c7b3(0x378,_0x57c7a0._0x38af5c,_0x57c7a0._0x365eac,_0x57c7a0._0x1258b1)]!==null&&this['_remotes'][_0x3642e8(-_0x57c7a0._0x4d32c9,-_0x57c7a0._0x21d97e,-_0x57c7a0._0x189d5b,-_0x57c7a0._0x2395e9)](this['remoteScre'+_0x3642e8(-_0x57c7a0._0xcc44a3,-0xb8,-_0x57c7a0._0x44b829,-_0x57c7a0._0x30a275)])[_0x41c7b3(_0x57c7a0._0x114a7e,_0x57c7a0._0xd67149,_0x57c7a0._0x2e4935,_0x57c7a0._0x225b90)][_0x3642e8(-_0x57c7a0._0x415c2f,-_0x57c7a0._0x4f1565,-_0x57c7a0._0x20795d,-0x78)](_0x114769));}if(this[_0x3642e8(-0x17,-_0x57c7a0._0x265712,-_0x57c7a0._0x2085cc,-_0x57c7a0._0x1c8926)])this['_trackRead'+'y'][_0x41c7b3(_0x57c7a0._0x176eba,_0x57c7a0._0x56fc2f,_0x57c7a0._0x5b42c1,_0x57c7a0._0x27c52e)]();this['_maybeEmit'+_0x41c7b3(_0x57c7a0._0x1b71da,0x394,0x373,_0x57c7a0._0x2aafa8)]();}[_0x58b2a8(0x4b3,0x4d7,0x4a1,0x4e6)+'Ready'](){const _0x197f44={_0x1ade89:0x479,_0x33b28e:0x47a,_0xfe91f2:0x463,_0x1bb9e1:0x4ad,_0x5dce11:0x192,_0x14a593:0x1b2,_0x1adc0d:0x188,_0xdb7cf2:0x1af,_0x673c9b:0x181,_0x38d0c1:0x178,_0x31902f:0x170,_0x54d368:0x13b},_0x25fb1d={_0x2d8d9f:0x1b,_0xc01cb3:0x5a,_0x1dcf9f:0x8f},_0x2e5fa7={_0xad17ca:0x1b8,_0x28d5d4:0x143};function _0x15fbca(_0x4e85b4,_0x111bcd,_0x31774a,_0x1dda07){return _0x121933(_0x4e85b4-0x193,_0x31774a- -_0x2e5fa7._0xad17ca,_0x31774a-_0x2e5fa7._0x28d5d4,_0x1dda07);}function _0x410374(_0x723a49,_0x29eaf1,_0x1d070d,_0x8ccf65){return _0x58b2a8(_0x723a49-_0x25fb1d._0x2d8d9f,_0x29eaf1- -_0x25fb1d._0xc01cb3,_0x1d070d,_0x8ccf65-_0x25fb1d._0x1dcf9f);}if(this[_0x410374(_0x197f44._0x1ade89,_0x197f44._0x33b28e,_0x197f44._0xfe91f2,_0x197f44._0x1bb9e1)])this[_0x15fbca(-_0x197f44._0x5dce11,-_0x197f44._0x14a593,-_0x197f44._0x1adc0d,-_0x197f44._0xdb7cf2)](_0x15fbca(-_0x197f44._0x673c9b,-_0x197f44._0x38d0c1,-_0x197f44._0x31902f,-_0x197f44._0x54d368),this);}get[_0x121933(0x60,0x48,0x49,0x4b)](){const _0x450706={_0x7cbf09:0x1a0,_0x21e79a:0x1c4,_0x4adae2:0x19b,_0x10a14e:0x1df,_0x705548:0x185,_0x32389e:0x1a9,_0x5c7f02:0x17b,_0x439bf6:0x19f,_0x533a20:0x170,_0x14c7c6:0x19e,_0x41f18c:0x173,_0xb7dc11:0x16c,_0x122068:0x197,_0x10a912:0x195,_0x2ec3cf:0x180,_0x3b4222:0x17f,_0x11981d:0x18f,_0x3e662d:0x1a5,_0x33f013:0x1d4,_0x2bb180:0x1ef,_0x1fbf35:0x1e7,_0x23e606:0x1fb,_0x209495:0x22d},_0x5c48dc={_0x166aac:0x109,_0x4abd90:0x1a7},_0x5c4a73={_0x32d1aa:0x1be};function _0x391621(_0x2bf614,_0xa81f13,_0x122412,_0x64dfec){return _0x121933(_0x2bf614-_0x5c4a73._0x32d1aa,_0x122412-0x19b,_0x122412-0x8e,_0x2bf614);}function _0x472a55(_0x5da4c3,_0x114046,_0x2d303b,_0x49ea70){return _0x121933(_0x5da4c3-_0x5c48dc._0x166aac,_0x114046- -_0x5c48dc._0x4abd90,_0x2d303b-0x9,_0x2d303b);}return this['_videoTran'+_0x472a55(-_0x450706._0x7cbf09,-0x199,-_0x450706._0x21e79a,-_0x450706._0x4adae2)]!==null&&this['_audioTran'+_0x391621(_0x450706._0x10a14e,_0x450706._0x705548,_0x450706._0x32389e,_0x450706._0x5c7f02)]!==null&&this['_screenTra'+_0x472a55(-0x158,-_0x450706._0x705548,-_0x450706._0x439bf6,-_0x450706._0x533a20)]!==null&&this[_0x472a55(-_0x450706._0x14c7c6,-_0x450706._0x41f18c,-_0x450706._0xb7dc11,-0x187)][_0x472a55(-0x1a7,-_0x450706._0x122068,-_0x450706._0x10a912,-_0x450706._0x2ec3cf)+_0x391621(_0x450706._0x3b4222,_0x450706._0x11981d,_0x450706._0x3e662d,_0x450706._0x33f013)]===_0x391621(_0x450706._0x2bb180,_0x450706._0x1fbf35,_0x450706._0x23e606,_0x450706._0x209495);}get['closed'](){const _0x5d23d4={_0x2f08e6:0x124,_0x1dc5e0:0x157,_0x55edd4:0x533,_0x3c469a:0x135,_0x21905f:0x102,_0x3cbcbe:0x511,_0x4bb550:0x4e7,_0x2e2213:0x4d2,_0x3bb33c:0x501,_0x45b719:0x107,_0x77c731:0x113},_0x1c0b1d={_0x14bdc3:0x22,_0x48b2ba:0xf8},_0x2e7da9={_0xca7b36:0x24,_0x5afb02:0x4dd,_0x4b8152:0x138};function _0x5cb469(_0x4b8b5b,_0x105818,_0xb4931e,_0x42c27c){return _0x121933(_0x4b8b5b-_0x2e7da9._0xca7b36,_0x105818-_0x2e7da9._0x5afb02,_0xb4931e-_0x2e7da9._0x4b8152,_0x4b8b5b);}function _0x42ef1d(_0x2df681,_0x27449a,_0x4c876b,_0x562bfd){return _0x58b2a8(_0x2df681-_0x1c0b1d._0x14bdc3,_0x27449a- -0x39a,_0x562bfd,_0x562bfd-_0x1c0b1d._0x48b2ba);}return this[_0x42ef1d(0x114,_0x5d23d4._0x2f08e6,0x104,_0x5d23d4._0x1dc5e0)]||this[_0x5cb469(0x536,0x511,_0x5d23d4._0x55edd4,0x4ec)][_0x42ef1d(_0x5d23d4._0x3c469a,_0x5d23d4._0x21905f,0x10a,0xde)+_0x5cb469(_0x5d23d4._0x3cbcbe,_0x5d23d4._0x4bb550,_0x5d23d4._0x2e2213,_0x5d23d4._0x3bb33c)]===_0x42ef1d(_0x5d23d4._0x45b719,_0x5d23d4._0x77c731,0x145,0x134);}async[_0x58b2a8(0x4f2,0x4d8,0x4b5,0x4a9)+_0x121933(0x16,0x7,-0x6,-0x29)]({cameraStreamId:cameraStreamId=null,screenStreamId:screenStreamId=null,description:_0x2b2313}){const _0x55d7cc={_0x4b7bfa:0x12d,_0x5189c5:0x151,_0x35bfe5:0x11c,_0x2e7ce8:0x13b,_0x18c39d:0xff,_0x8f6f2f:0x124,_0x30125d:0x4b0,_0x48f22c:0x497,_0xcce6ea:0x489,_0x4c2e11:0x4b5,_0x657d53:0x496,_0x3e9e94:0x4b4,_0x3c2250:0x49c,_0x3273bc:0x4c4,_0x2e3f18:0x4c1,_0x51365b:0x4cf,_0x35f2cc:0x4ac,_0x592a5a:0x14f,_0x24746e:0x166,_0x1605f6:0x129,_0x25e824:0x109,_0x2054de:0x11c,_0x2d42e2:0x122,_0x304cd6:0x106,_0x1ea7de:0xf8,_0xa22dca:0xcc,_0x4bf15d:0xe1,_0x147433:0xc6,_0x43f252:0x11a,_0x328d4d:0x10e,_0x34f263:0x45e,_0x19f942:0x493,_0x1cd137:0x46f,_0xae63b7:0x48c,_0x1a4e72:0x115,_0xe80006:0x161,_0x16386f:0x169,_0x48d5dd:0x13e,_0x2d2dd4:0x145,_0x1ac390:0x11d,_0x10113a:0x13a,_0x3cc66d:0xee,_0x9cef4d:0x11b,_0x316cd5:0x49a,_0x5333ea:0x49d,_0x28dfb7:0x499,_0x22fa5d:0x47a,_0x5901f7:0xfa,_0x68cccc:0x491,_0x42f647:0x46a,_0x29b2db:0x4bc,_0xbc6291:0x136,_0xf12fd7:0x4b2,_0xc7973d:0x47e,_0x1cd166:0x492,_0x498a55:0x471,_0x2f7485:0x46a,_0x59d7ed:0x14d,_0x335436:0x150,_0x3f72b3:0x148,_0x9f7304:0x4b1,_0x16f15:0x49e,_0x47608d:0x106,_0x534f5f:0xf5,_0x384d55:0x107,_0x2f2d24:0x4de,_0x143b16:0x50f,_0x5b689a:0x4d9,_0x56afe2:0x48a,_0x5ef20e:0x4ae,_0x3c1e04:0x48e,_0x43896d:0x4ba},_0x488a9c={_0x1e5668:0xd5,_0x216bf3:0x3a3,_0x406e91:0x4d},_0x37e51c={_0x6bdfc2:0x470,_0x56bfed:0xaa};function _0x4b83de(_0x64e73a,_0x28047c,_0x461ff8,_0x2ac981){return _0x121933(_0x64e73a-0x1a0,_0x28047c-_0x37e51c._0x6bdfc2,_0x461ff8-_0x37e51c._0x56bfed,_0x64e73a);}function _0x37cc41(_0x42cd08,_0x1a0d65,_0x420c83,_0x653b9){return _0x58b2a8(_0x42cd08-_0x488a9c._0x1e5668,_0x42cd08- -_0x488a9c._0x216bf3,_0x420c83,_0x653b9-_0x488a9c._0x406e91);}try{if(this['_peer'][_0x37cc41(_0x55d7cc._0x4b7bfa,_0x55d7cc._0x5189c5,_0x55d7cc._0x35bfe5,_0x55d7cc._0x2e7ce8)+_0x37cc41(_0x55d7cc._0x18c39d,0x112,_0x55d7cc._0x8f6f2f,0xd2)]!==null)return console[_0x4b83de(_0x55d7cc._0x30125d,_0x55d7cc._0x48f22c,_0x55d7cc._0xcce6ea,_0x55d7cc._0x4c2e11)](_0x4b83de(_0x55d7cc._0x657d53,0x4bc,_0x55d7cc._0x3e9e94,_0x55d7cc._0x3c2250)+_0x4b83de(_0x55d7cc._0x3273bc,_0x55d7cc._0x2e3f18,_0x55d7cc._0x51365b,_0x55d7cc._0x35f2cc)+_0x37cc41(_0x55d7cc._0x592a5a,_0x55d7cc._0x24746e,_0x55d7cc._0x1605f6,0x12c)+_0x37cc41(_0x55d7cc._0x25e824,_0x55d7cc._0x2054de,_0x55d7cc._0x2d42e2,_0x55d7cc._0x304cd6)+_0x37cc41(_0x55d7cc._0x1ea7de,_0x55d7cc._0xa22dca,_0x55d7cc._0x4bf15d,_0x55d7cc._0x147433)+'\x20set');this[_0x37cc41(_0x55d7cc._0x43f252,0xe5,_0x55d7cc._0x304cd6,_0x55d7cc._0x328d4d)+'raStreamId']=cameraStreamId,this['remoteScre'+_0x4b83de(_0x55d7cc._0x34f263,_0x55d7cc._0x19f942,_0x55d7cc._0x1cd137,_0x55d7cc._0xae63b7)]=screenStreamId,_0x2b2313[_0x37cc41(_0x55d7cc._0x2e7ce8,_0x55d7cc._0x1a4e72,_0x55d7cc._0xe80006,_0x55d7cc._0x16386f)]=this['_rewriteSD'+'P'](_0x2b2313[_0x37cc41(_0x55d7cc._0x2e7ce8,_0x55d7cc._0x48d5dd,_0x55d7cc._0x2d2dd4,_0x55d7cc._0x304cd6)]),await this[_0x37cc41(_0x55d7cc._0x1ac390,_0x55d7cc._0x10113a,_0x55d7cc._0x3cc66d,_0x55d7cc._0x9cef4d)][_0x4b83de(_0x55d7cc._0x316cd5,_0x55d7cc._0x5333ea,_0x55d7cc._0x28dfb7,_0x55d7cc._0x22fa5d)+_0x37cc41(0x12a,_0x55d7cc._0x8f6f2f,0x128,_0x55d7cc._0x5901f7)](_0x2b2313);if(this[_0x4b83de(0x484,_0x55d7cc._0x68cccc,_0x55d7cc._0x42f647,_0x55d7cc._0x29b2db)]||!this['isPolite'])return;while(this[_0x37cc41(0x12c,_0x55d7cc._0x48d5dd,0x122,_0x55d7cc._0xbc6291)+'sceiver']===null||this['_audioTran'+_0x4b83de(_0x55d7cc._0xf12fd7,_0x55d7cc._0xc7973d,_0x55d7cc._0x3c2250,0x4a5)]===null||this['_screenTra'+_0x4b83de(0x4af,_0x55d7cc._0x1cd166,_0x55d7cc._0x498a55,_0x55d7cc._0x2f7485)]===null){await this[_0x37cc41(_0x55d7cc._0x59d7ed,_0x55d7cc._0x335436,0x118,_0x55d7cc._0x3f72b3)+'y'][_0x4b83de(_0x55d7cc._0x9f7304,_0x55d7cc._0x16f15,0x4be,0x47e)]();if(this['closed'])return;}await this[_0x37cc41(_0x55d7cc._0x47608d,0x137,_0x55d7cc._0x534f5f,_0x55d7cc._0x384d55)+'l']();}catch(_0x48b428){this[_0x4b83de(0x4be,_0x55d7cc._0x2f2d24,0x4c4,_0x55d7cc._0x143b16)][_0x4b83de(_0x55d7cc._0x5b689a,_0x55d7cc._0x4c2e11,_0x55d7cc._0x56afe2,0x4de)]({'error':_0x48b428}),this[_0x4b83de(0x4ce,_0x55d7cc._0x5ef20e,_0x55d7cc._0x3c1e04,_0x55d7cc._0x43896d)](_0x48b428);}}async[_0x121933(0x57,0x47,0x66,0x21)+_0x121933(0x48,0x2b,0x5a,0x4e)](_0x4bc4bf){const _0x4469ae={_0x1681bd:0x17e,_0x1c4a7f:0x1a1,_0xe2112d:0x1d2,_0x3934b5:0x1b2,_0x344f24:0x286,_0x39de88:0x263,_0xd7123a:0x269,_0x27b70a:0x279,_0x1143f0:0x22d,_0xd6a9fb:0x262,_0x16f43a:0x292,_0x342b87:0x22f},_0x4e98dc={_0x30ecf6:0xb3,_0x537b1f:0x180,_0x4018d5:0xdc},_0x52c6a2={_0x493595:0x243,_0xc524a4:0x1a5};if(this[_0x30a402(_0x4469ae._0x1681bd,_0x4469ae._0x1c4a7f,_0x4469ae._0xe2112d,_0x4469ae._0x3934b5)])return;function _0x5afd04(_0x2d936d,_0x2fe89c,_0x5d2e75,_0x3f26d6){return _0x121933(_0x2d936d-0x175,_0x2fe89c-_0x52c6a2._0x493595,_0x5d2e75-_0x52c6a2._0xc524a4,_0x5d2e75);}function _0x30a402(_0x21fa27,_0x557f55,_0x1d81d2,_0x2a5d99){return _0x121933(_0x21fa27-_0x4e98dc._0x30ecf6,_0x557f55-_0x4e98dc._0x537b1f,_0x1d81d2-_0x4e98dc._0x4018d5,_0x2a5d99);}await this[_0x5afd04(0x256,_0x4469ae._0x344f24,_0x4469ae._0x39de88,_0x4469ae._0xd7123a)+'sceiver'][_0x5afd04(0x2b9,0x29a,_0x4469ae._0x27b70a,_0x4469ae._0x344f24)][_0x5afd04(_0x4469ae._0x1143f0,_0x4469ae._0xd6a9fb,_0x4469ae._0x16f43a,_0x4469ae._0x342b87)+'ck'](_0x4bc4bf);}async['setAudioTr'+'ack'](_0x599880){const _0x1ac182={_0x43da30:0x5a,_0x458e08:0x42,_0x21654b:0x59,_0x18cec1:0x53,_0x4bb798:0x143,_0x1d0b19:0x13f,_0x3cce09:0x141,_0x221b84:0x7c,_0x4580e8:0xbb,_0x1f545d:0x8f,_0x8dd28a:0x5f,_0x2d17cb:0x33,_0x32bb35:0x24,_0x4242c2:0x57},_0x38b5d6={_0x4ec695:0xac,_0x3a267f:0x38},_0xcd3a4a={_0x1e21f7:0x2d,_0x1cf3f8:0x609,_0x3417bd:0x1af};function _0x669d3b(_0x152978,_0x4a26ba,_0x38c0d5,_0x34718a){return _0x58b2a8(_0x152978-_0xcd3a4a._0x1e21f7,_0x34718a- -_0xcd3a4a._0x1cf3f8,_0x38c0d5,_0x34718a-_0xcd3a4a._0x3417bd);}function _0x4f4a32(_0x5cc4e0,_0x318fee,_0x447f68,_0x29df8e){return _0x121933(_0x5cc4e0-_0x38b5d6._0x4ec695,_0x447f68-_0x38b5d6._0x3a267f,_0x447f68-0x156,_0x318fee);}if(this[_0x4f4a32(_0x1ac182._0x43da30,_0x1ac182._0x458e08,_0x1ac182._0x21654b,_0x1ac182._0x18cec1)])return;await this[_0x669d3b(-_0x1ac182._0x4bb798,-_0x1ac182._0x1d0b19,-0x174,-_0x1ac182._0x3cce09)+'sceiver'][_0x4f4a32(_0x1ac182._0x221b84,_0x1ac182._0x4580e8,_0x1ac182._0x1f545d,_0x1ac182._0x8dd28a)][_0x4f4a32(_0x1ac182._0x2d17cb,_0x1ac182._0x32bb35,_0x1ac182._0x4242c2,0x84)+'ck'](_0x599880);}async['setScreenT'+_0x58b2a8(0x502,0x4ce,0x4a4,0x4e6)](_0x21f461){const _0x34672a={_0x4dd6a5:0x180,_0x27f122:0x166,_0x3777c5:0x15c,_0x2c3f5c:0x194,_0x2f7b85:0x170,_0x3c46f2:0x1bd,_0x54a056:0x1a8},_0x30854d={_0x4e7e0d:0x59,_0x47dafd:0x13c},_0x55372f={_0xea813a:0x15e,_0x486142:0x653};function _0x3c922b(_0x5f19dd,_0x707efb,_0x1bff53,_0x52913f){return _0x58b2a8(_0x5f19dd-_0x55372f._0xea813a,_0x52913f- -_0x55372f._0x486142,_0x5f19dd,_0x52913f-0x3b);}if(this['closed'])return;function _0x19b6f7(_0x147136,_0x260c0c,_0x57f568,_0x9d6f4e){return _0x58b2a8(_0x147136-0x106,_0x260c0c- -_0x30854d._0x4e7e0d,_0x57f568,_0x9d6f4e-_0x30854d._0x47dafd);}await this[_0x3c922b(-_0x34672a._0x4dd6a5,-_0x34672a._0x27f122,-_0x34672a._0x4dd6a5,-_0x34672a._0x3777c5)+'nsceiver'][_0x3c922b(-_0x34672a._0x2c3f5c,-0x16c,-0x169,-_0x34672a._0x2f7b85)][_0x3c922b(-0x1b8,-0x193,-_0x34672a._0x3c46f2,-_0x34672a._0x54a056)+'ck'](_0x21f461);}['close'](){const _0x5502df={_0x2e761c:0x1d,_0x1c526a:0x22e,_0x28b2a5:0x25c,_0x251972:0x231,_0x50fe38:0x243,_0x2bf1e4:0x48,_0x4da757:0x17,_0x4cb23a:0x15,_0x433828:0x15,_0x4568cc:0x9,_0x38ed19:0x38,_0x739f9d:0x252,_0x4172aa:0x256,_0xef2212:0x226,_0x321179:0x262,_0x13db45:0x45,_0x4f82d7:0x45,_0x22544a:0x27,_0x5325c5:0x2e,_0x14c61a:0x2d,_0x2aeaf3:0xb,_0x24fb91:0x18,_0x5665b5:0x1b,_0x1ae611:0xe,_0x468eb4:0xf,_0x53f227:0x234,_0x3f9718:0x230,_0x48c3e1:0x11,_0x2a929c:0x2b,_0x3ebe72:0x3e,_0x257ba2:0x6,_0x38724f:0x28f,_0x409069:0x285,_0x2ae885:0x274,_0x585f61:0x271,_0x1bc12c:0x297,_0x477860:0xa,_0x2c8e4f:0x26,_0x13a979:0x21,_0x438b22:0x1,_0x3019ab:0x1f,_0x2a39ba:0x282,_0x33d979:0x285,_0x40449a:0x29d,_0x34e1c8:0x26a,_0x4ffa27:0x3f,_0x2c15ed:0x3b,_0x480c92:0x29,_0x54a9db:0x239,_0x325bad:0x265,_0x2687d2:0x23f,_0x367b00:0x3c,_0x26f198:0x7,_0x4a5d37:0x68,_0xbb9ffc:0x51,_0x1189a8:0x3f},_0x57a7ea={_0x5ae964:0xa0,_0x2bcc46:0x262,_0x370afd:0x6e},_0x2f1841={_0x526794:0x4db};function _0x575f02(_0x418eb9,_0x529bf3,_0xc97202,_0x70c1c7){return _0x58b2a8(_0x418eb9-0x11f,_0x418eb9- -_0x2f1841._0x526794,_0xc97202,_0x70c1c7-0xb6);}function _0x46d62b(_0x1bba92,_0x334426,_0x1ff521,_0x552897){return _0x58b2a8(_0x1bba92-_0x57a7ea._0x5ae964,_0x334426- -_0x57a7ea._0x2bcc46,_0x552897,_0x552897-_0x57a7ea._0x370afd);}if(this[_0x575f02(-_0x5502df._0x2e761c,-0x2e,-0x34,0x4)])return;this[_0x46d62b(_0x5502df._0x1c526a,_0x5502df._0x28b2a5,_0x5502df._0x251972,_0x5502df._0x50fe38)]=!![];if(this[_0x575f02(0x16,_0x5502df._0x2bf1e4,-0x18,-_0x5502df._0x4da757)])this[_0x575f02(_0x5502df._0x4cb23a,-_0x5502df._0x433828,_0x5502df._0x4568cc,_0x5502df._0x38ed19)+'y'][_0x46d62b(_0x5502df._0x739f9d,_0x5502df._0x4172aa,0x235,_0x5502df._0xef2212)]();this[_0x46d62b(0x26e,0x25e,0x231,_0x5502df._0x321179)]['connection'+_0x575f02(-_0x5502df._0x13db45,-0x66,-_0x5502df._0x4f82d7,-_0x5502df._0x22544a)]!==_0x575f02(-_0x5502df._0x5325c5,-_0x5502df._0x14c61a,-_0x5502df._0x2aeaf3,-_0x5502df._0x24fb91)&&this[_0x575f02(-_0x5502df._0x5665b5,_0x5502df._0x1ae611,-_0x5502df._0x468eb4,-_0x5502df._0x13db45)]['close'](),this[_0x46d62b(_0x5502df._0x53f227,0x25a,0x287,_0x5502df._0x3f9718)](_0x575f02(-0x2,-_0x5502df._0x48c3e1,0x11,-_0x5502df._0x2a929c),this),this[_0x575f02(-0x1b,0x6,-_0x5502df._0x3ebe72,-_0x5502df._0x257ba2)][_0x46d62b(_0x5502df._0x38724f,_0x5502df._0x409069,_0x5502df._0x2ae885,_0x5502df._0x585f61)+_0x46d62b(0x28c,0x294,0x2a0,_0x5502df._0x1bc12c)](_0x575f02(-_0x5502df._0x24fb91,_0x5502df._0x477860,-0xb,0x3),this[_0x575f02(-_0x5502df._0x2c8e4f,-_0x5502df._0x13a979,-_0x5502df._0x438b22,-_0x5502df._0x3019ab)]),this['_peer'][_0x46d62b(_0x5502df._0x2a39ba,_0x5502df._0x33d979,_0x5502df._0x40449a,_0x5502df._0x34e1c8)+'tListener'](_0x575f02(-_0x5502df._0x4ffa27,-0x14,-_0x5502df._0x2c15ed,-_0x5502df._0x480c92)+'statechang'+'e',this['_onconnect'+_0x46d62b(_0x5502df._0x54a9db,_0x5502df._0x325bad,0x297,_0x5502df._0x2687d2)+_0x575f02(-_0x5502df._0x367b00,-_0x5502df._0x26f198,-_0x5502df._0x4a5d37,-_0x5502df._0xbb9ffc)]),this[_0x575f02(-_0x5502df._0x468eb4,0x20,-_0x5502df._0x1189a8,-0x4)+'isteners']();}};
1const{EventEmitter:e}=require("events"),t=require("sdp-transform"),r=require("safety-catch"),{createTracer:i}=require("hypertrace"),s=require("signal-promise"),n="127.0.0.1";module.exports=class extends e{constructor(e,t,n,a,c,o,{onerror:h=r,parentTracer:d}={}){super(),this.swarmId=t,this.proxyPort=n,this.isPolite=e,this.remoteStreams=new Map,this.remoteCameraStreamId=null,this.remoteScreenStreamId=null,this.tracer=i(this,{parent:d}),this._trackReady=this.isPolite?new s:null,this._closed=!1,this._onerror=h,this._cameraStreamId=a,this._screenStreamId=c,this._remotes=o,this._peer=new RTCPeerConnection({iceServers:[],rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"}),this._onconnectionstatechange=this._onConnectionStateChange.bind(this),this._peer.addEventListener("connectionstatechange",this._onconnectionstatechange),this._ontrack=this._onTrack.bind(this),this._peer.addEventListener("track",this._ontrack),this._videoTransceiver=null,this._audioTransceiver=null,this._screenTransceiver=null,this.isPolite||(this._peer.addTransceiver("video"),this._peer.addTransceiver("audio"),this._peer.addTransceiver("video"),this._sendSignal())}_rewriteSDP(e){const r=t.parse(e);for(const e of r.media)e.port=e.rtcp.port=this.proxyPort,e.connection.ip=e.rtcp.address=n,e.connection.version=e.rtcp.ipVer=4,e.candidates=[{ip:n,port:this.proxyPort,component:1,foundation:1,generation:0,priority:1,type:"host",transport:"udp","network-cost":50,"network-id":2}];return t.write(r)}async _sendSignal(){if(this.closed)return;if(this.isPolite&&null===this._peer.remoteDescription)return;if(!this.isPolite&&null!==this._peer.localDescription)return;if(await this._peer.setLocalDescription(),this.closed)return;const{type:e,sdp:t}=this._peer.localDescription;this.emit("signal",this,{cameraStreamId:this._cameraStreamId,screenStreamId:this._screenStreamId,description:{type:e,sdp:t}})}async _onConnectionStateChange(){const e=this._peer.connectionState;"connected"===e?this._maybeEmitReady():("failed"===e||"closed"===e)&&this.close()}_onTrack({track:e,transceiver:t}){t.direction="sendrecv","0"===t.mid?(this._videoTransceiver=t,null!==this.remoteCameraStreamId&&this._remotes.getStatus(this.remoteCameraStreamId).stream.addTrack(e)):"1"===t.mid?(this._audioTransceiver=t,null!==this.remoteCameraStreamId&&this._remotes.getStatus(this.remoteCameraStreamId).stream.addTrack(e)):"2"===t.mid&&(this._screenTransceiver=t,null!==this.remoteScreenStreamId&&this._remotes.getStatus(this.remoteScreenStreamId).stream.addTrack(e)),this.isPolite&&this._trackReady.notify(),this._maybeEmitReady()}_maybeEmitReady(){this.ready&&this.emit("ready",this)}get ready(){return null!==this._videoTransceiver&&null!==this._audioTransceiver&&null!==this._screenTransceiver&&"connected"===this._peer.connectionState}get closed(){return this._closed||"closed"===this._peer.connectionState}async handleSignalMessage({cameraStreamId:e=null,screenStreamId:t=null,description:r}){try{if(null!==this._peer.remoteDescription)return console.warn("handleSignalMessage: remoteDescription was already set");if(this.remoteCameraStreamId=e,this.remoteScreenStreamId=t,r.sdp=this._rewriteSDP(r.sdp),await this._peer.setRemoteDescription(r),this.closed||!this.isPolite)return;for(;null===this._videoTransceiver||null===this._audioTransceiver||null===this._screenTransceiver;)if(await this._trackReady.wait(),this.closed)return;await this._sendSignal()}catch(e){this.tracer.trace({error:e}),this._onerror(e)}}async setVideoTrack(e){this.closed||await this._videoTransceiver.sender.replaceTrack(e)}async setAudioTrack(e){this.closed||await this._audioTransceiver.sender.replaceTrack(e)}async setScreenTrack(e){this.closed||await this._screenTransceiver.sender.replaceTrack(e)}close(){this._closed||(this._closed=!0,this.isPolite&&this._trackReady.notify(),"closed"!==this._peer.connectionState&&this._peer.close(),this.emit("close",this),this._peer.removeEventListener("track",this._ontrack),this._peer.removeEventListener("connectionstatechange",this._onconnectionstatechange),this.remoteStreams.clear(),this.removeAllListeners())}};
@holepunchto/keet-call/client/index.js +1 -1
……@@ -1 +1 @@
1function _0x55ff(_0x55ff85,_0x196d71){const _0x5c4a82=_0x490e();return _0x55ff=function(_0x40b668,_0xbe7163){_0x40b668=_0x40b668-(0xf8a+-0xabd*-0x2+-0x23c7);let _0x44cb12=_0x5c4a82[_0x40b668];return _0x44cb12;},_0x55ff(_0x55ff85,_0x196d71);}(function(_0x19bec5,_0xf58d3c){const _0x19a2ca={_0x230474:0x5,_0x599e30:0x6,_0x11b39d:0x15,_0x19f016:0x7a,_0x5a83d5:0x96,_0x4057c4:0x89,_0x5db2ef:0x7d,_0x377c56:0x0,_0x4c2caf:0x12,_0xf89ac9:0xb,_0x22dd61:0xf,_0x493fb9:0x4,_0x2490a5:0x2,_0x37cab8:0x19,_0x59b97a:0x1e,_0x342c69:0x27,_0x41c1e0:0x5,_0x251a7e:0xe,_0x1023ff:0x7f,_0x328918:0x79,_0x4e25dc:0x74,_0x1e3b48:0x83,_0x2d6092:0x6f,_0x25e081:0x90,_0x33939a:0x8e,_0x5ee111:0x9b,_0x1ee9a4:0xc,_0x443ec:0x1,_0x46b7a4:0xd},_0xac90ed={_0x58451d:0x1cf},_0x181cf4={_0x1bca53:0x143};function _0x8f4856(_0x153fd8,_0x437f2c,_0x4ab4ff,_0x35add0){return _0x55ff(_0x153fd8- -_0x181cf4._0x1bca53,_0x35add0);}const _0x4dd199=_0x19bec5();function _0x2d16af(_0x2ba13d,_0x203cc2,_0x1c7635,_0x472c1e){return _0x55ff(_0x1c7635- -_0xac90ed._0x58451d,_0x472c1e);}while(!![]){try{const _0x2a1761=parseInt(_0x8f4856(-_0x19a2ca._0x230474,_0x19a2ca._0x599e30,0x8,0xe))/(-0x1360+-0x1e4+0x1545)*(-parseInt(_0x8f4856(0x14,_0x19a2ca._0x11b39d,0x28,0x9))/(-0x120b*-0x1+-0x2*-0xe3e+0x2e85*-0x1))+parseInt(_0x2d16af(-_0x19a2ca._0x19f016,-_0x19a2ca._0x5a83d5,-_0x19a2ca._0x4057c4,-_0x19a2ca._0x5db2ef))/(0x145b+-0x1f67+-0x1*-0xb0f)*(parseInt(_0x8f4856(_0x19a2ca._0x377c56,-_0x19a2ca._0x4c2caf,_0x19a2ca._0xf89ac9,-_0x19a2ca._0x22dd61))/(-0xca*-0x17+-0xf96+-0x28c*0x1))+-parseInt(_0x8f4856(-_0x19a2ca._0x493fb9,-_0x19a2ca._0x2490a5,0x2,-0x12))/(0x146c*0x1+-0x1*-0x24fb+-0x5bd*0xa)*(-parseInt(_0x8f4856(0x8,_0x19a2ca._0x37cab8,_0x19a2ca._0x4c2caf,0xd))/(-0x523+-0x11e4+-0x170d*-0x1))+parseInt(_0x8f4856(0x1b,_0x19a2ca._0x59b97a,0xc,_0x19a2ca._0x342c69))/(0x133*-0x1b+0x1*0x2543+-0x4db)*(-parseInt(_0x8f4856(_0x19a2ca._0x41c1e0,-_0x19a2ca._0x493fb9,-_0x19a2ca._0x251a7e,0x4))/(0x1d04+0xa75*-0x1+0x33*-0x5d))+parseInt(_0x2d16af(-0x76,-_0x19a2ca._0x1023ff,-_0x19a2ca._0x328918,-0x77))/(0x1f59+0x574+-0x2*0x1262)*(parseInt(_0x2d16af(-_0x19a2ca._0x4e25dc,-_0x19a2ca._0x4057c4,-_0x19a2ca._0x1e3b48,-_0x19a2ca._0x2d6092))/(-0x1fa+0x26e1+0x1*-0x24dd))+parseInt(_0x2d16af(-_0x19a2ca._0x25e081,-0x99,-_0x19a2ca._0x33939a,-_0x19a2ca._0x5ee111))/(0x24*0xa5+-0x14b3+-0x276)+-parseInt(_0x8f4856(_0x19a2ca._0x1ee9a4,-_0x19a2ca._0x443ec,0xd,_0x19a2ca._0x46b7a4))/(0x1*0x2165+-0x12c9+0x8*-0x1d2);if(_0x2a1761===_0xf58d3c)break;else _0x4dd199['push'](_0x4dd199['shift']());}catch(_0x59dcf5){_0x4dd199['push'](_0x4dd199['shift']());}}}(_0x490e,0x1b7*-0x279+-0x1*0x17645+0x10b521));const _0x12c53d=(function(){let _0x4d8740=!![];return function(_0x43fd07,_0x15a1b0){const _0x3f3311=_0x4d8740?function(){if(_0x15a1b0){const _0x1a8675=_0x15a1b0['apply'](_0x43fd07,arguments);return _0x15a1b0=null,_0x1a8675;}}:function(){};return _0x4d8740=![],_0x3f3311;};}()),_0x5c3374=_0x12c53d(this,function(){const _0x2a6606={_0x12500e:0x44b,_0x1c7fed:0x45b,_0x13e0a7:0x456,_0x2ed800:0x20,_0x4f3d73:0x14,_0x3de097:0x18,_0x1d9544:0x22,_0x15658f:0x448,_0x35c54c:0x467,_0x236f9d:0x466,_0x3dfcab:0x47c,_0x15a84f:0x474,_0x355877:0x477,_0x423353:0xc,_0x1c7675:0x21,_0x3fe59e:0x19},_0x54dc64={_0x4fcd96:0x178};function _0x3f8ac9(_0x57c55d,_0xb3649f,_0x35ae61,_0x3e7db2){return _0x55ff(_0x35ae61-0x311,_0x3e7db2);}function _0x440ae4(_0x36df31,_0x18910d,_0x3cab18,_0x4f3385){return _0x55ff(_0x3cab18- -_0x54dc64._0x4fcd96,_0x36df31);}return _0x5c3374[_0x3f8ac9(_0x2a6606._0x12500e,0x46e,_0x2a6606._0x1c7fed,_0x2a6606._0x13e0a7)]()['search'](_0x440ae4(-_0x2a6606._0x2ed800,-_0x2a6606._0x4f3d73,-_0x2a6606._0x3de097,-_0x2a6606._0x1d9544)+'+$')[_0x3f8ac9(_0x2a6606._0x15658f,_0x2a6606._0x35c54c,0x45b,_0x2a6606._0x236f9d)]()['constructo'+'r'](_0x5c3374)[_0x3f8ac9(_0x2a6606._0x3dfcab,_0x2a6606._0x35c54c,_0x2a6606._0x15a84f,_0x2a6606._0x355877)](_0x440ae4(-_0x2a6606._0x423353,-_0x2a6606._0x1c7675,-_0x2a6606._0x3de097,-_0x2a6606._0x3fe59e)+'+$');});_0x5c3374();function _0x28226f(_0x1535d0,_0x5483b2,_0x3c7940,_0x443eb8){const _0x5dcfb1={_0x1aea47:0x260};return _0x55ff(_0x5483b2- -_0x5dcfb1._0x1aea47,_0x1535d0);}function _0x490e(){const _0x31bb50=['24916TWUZox','getRemoteS','exports','573UNHMgm','close','64krrpSl','values','toString','4032246FOlyuL','50hzDXYk','_getRemote','devices','6081972lQIKrq','presence','subscribeR','swarmId','ActivateCa','ctivateCal','deauthoriz','3645VtRLCz','1555446WaVzpZ','_deauthori','emoteStrea','local','_callsById','SrcObject','_subscribe','1213513BJUyum','api','(((.+)+)+)','rcObject','RemoteStre','search','_authorize','1egUoeA','10hCYmsu','bind','9425075oDZUxW','isBuffer'];_0x490e=function(){return _0x31bb50;};return _0x490e();}const {Readable}=require('streamx'),HypercoreId=require('hypercore-id-encoding');function _0x352819(_0xf244d1,_0x333d1f,_0x1915ac,_0x4034b6){return _0x55ff(_0x4034b6- -0x17b,_0x1915ac);}const b4a=require('b4a'),KeetCall=require('./call'),PresenceClient=require('./presence'),KeetLocalTracks=require('./local/tracks'),LocalMediaDevicesClient=require('./local/devices'),{createResourceManager}=require('../lib/common');module[_0x28226f(-0x126,-0x11b,-0x12d,-0x116)]=class KeetCallClient{constructor(_0x157af8,_0x412e49){const _0x1ecf19={_0xd176a1:0x184,_0x1297cd:0x18a,_0x146515:0x171,_0x37a779:0x1f5,_0x19b12e:0x1fd,_0x1f9bf1:0x1ef,_0x2079d0:0x1f2,_0xdf4210:0x1df,_0x4949d2:0x17d,_0x57a33d:0x185,_0x245a6f:0x176,_0x461430:0x1e3,_0x191da9:0x1eb,_0x2570f2:0x1f5,_0x295907:0x1eb,_0x4f144b:0x1ff,_0x3f66ce:0x1ed,_0x32b076:0x201,_0x248d09:0x20c,_0x4eff35:0x206,_0x1153be:0x173,_0x18641c:0x1f7,_0x351e15:0x1e6,_0x192f8c:0x1e8,_0xa1c89b:0x1cb,_0x12db86:0x1da,_0x1add63:0x165,_0x520b39:0x156,_0x4f398c:0x158,_0x2df765:0x204,_0x18822d:0x18c,_0xc98ee2:0x16c,_0x394627:0x1f7,_0x5b16bd:0x1f4,_0x4ac988:0x1f1,_0x5d6c33:0x1f1,_0x57fd1c:0x1fe,_0x9365:0x202,_0x553913:0x1fa,_0x45c210:0x1fc,_0x4b48bd:0x1f0,_0x303352:0x163,_0x1ed0e2:0x153,_0x20a425:0x15c,_0x4d188a:0x176,_0x2610f9:0x17d,_0x48475f:0x183,_0x4eb941:0x17c,_0x478457:0x1e3,_0x3c2012:0x1f6,_0x36b2e3:0x1f5,_0xaef3d1:0x1f2,_0x22c84d:0x1ff,_0x391d93:0x15b,_0x25abe5:0x173,_0x5c2c80:0x161,_0x23c1e5:0x1f3,_0x23e525:0x1d9,_0x404644:0x1f4,_0x5cfc49:0x1f9,_0x3dbaed:0x1ea,_0x4a3fb6:0x1ef,_0x33f587:0x200,_0x545856:0x1f2},_0x45469b={_0x9c9f:0x285,_0xbc0349:0x14d,_0x54a38a:0x15c},_0x4bf936={_0x3e5f99:0x2fd,_0x5b048b:0x32,_0x1f3f80:0x163};this[_0x1146da(_0x1ecf19._0xd176a1,0x185,_0x1ecf19._0x1297cd,_0x1ecf19._0x146515)]=_0x157af8;function _0x4f3c15(_0x3f6409,_0x38c9ca,_0x4d537d,_0x32bcf8){return _0x28226f(_0x38c9ca,_0x32bcf8-_0x4bf936._0x3e5f99,_0x4d537d-_0x4bf936._0x5b048b,_0x32bcf8-_0x4bf936._0x1f3f80);}this[_0x4f3c15(0x1f9,_0x1ecf19._0x37a779,_0x1ecf19._0x19b12e,_0x1ecf19._0x1f9bf1)]=b4a[_0x4f3c15(_0x1ecf19._0x2079d0,0x1f2,0x1ce,_0x1ecf19._0xdf4210)](_0x412e49)?HypercoreId['encode'](_0x412e49):_0x412e49,this[_0x1146da(0x17f,_0x1ecf19._0x4949d2,_0x1ecf19._0x57a33d,_0x1ecf19._0x245a6f)]=new KeetLocalTracks(),this[_0x4f3c15(_0x1ecf19._0x461430,_0x1ecf19._0x191da9,_0x1ecf19._0x2570f2,_0x1ecf19._0x295907)]=new LocalMediaDevicesClient(),this[_0x4f3c15(_0x1ecf19._0x4f144b,_0x1ecf19._0x3f66ce,_0x1ecf19._0x32b076,0x1ed)]=new PresenceClient(this[_0x4f3c15(_0x1ecf19._0x248d09,_0x1ecf19._0x4eff35,_0x1ecf19._0x3f66ce,0x1fc)],this[_0x1146da(0x177,0x17b,_0x1ecf19._0x245a6f,_0x1ecf19._0x1153be)]);const {collection:_0x4b0ff6,method:_0x5e471d,subscription:_0x4ed1a0}=createResourceManager(_0x5a54c1=>{return new KeetCall(this,_0x5a54c1);});this[_0x4f3c15(_0x1ecf19._0x18641c,_0x1ecf19._0x351e15,_0x1ecf19._0x192f8c,0x1f8)]=_0x4b0ff6,this['authorize']=this[_0x4f3c15(_0x1ecf19._0xa1c89b,0x1cc,0x1db,_0x1ecf19._0x12db86)][_0x1146da(_0x1ecf19._0x1add63,0x161,_0x1ecf19._0x520b39,_0x1ecf19._0x4f398c)](this),this[_0x4f3c15(0x1f1,_0x1ecf19._0x2df765,0x202,0x1f2)+'e']=this[_0x1146da(0x17d,0x171,_0x1ecf19._0x18822d,_0x1ecf19._0xc98ee2)+'ze']['bind'](this);function _0x1146da(_0x47944e,_0x152a04,_0x48d701,_0x4b6f4f){return _0x28226f(_0x152a04,_0x47944e-_0x45469b._0x9c9f,_0x48d701-_0x45469b._0xbc0349,_0x4b6f4f-_0x45469b._0x54a38a);}this['subscribeA'+_0x4f3c15(_0x1ecf19._0x18641c,_0x1ecf19._0x394627,_0x1ecf19._0x5b16bd,_0x1ecf19._0x4ac988)+'l']=_0x4ed1a0(this[_0x4f3c15(_0x1ecf19._0x5d6c33,_0x1ecf19._0x57fd1c,_0x1ecf19._0x9365,_0x1ecf19._0x553913)+_0x4f3c15(_0x1ecf19._0x4f144b,0x1ea,_0x1ecf19._0x45c210,_0x1ecf19._0x4b48bd)+'ll'][_0x1146da(0x165,_0x1ecf19._0x303352,_0x1ecf19._0x1ed0e2,_0x1ecf19._0x20a425)](this)),this[_0x1146da(_0x1ecf19._0x4d188a,_0x1ecf19._0x2610f9,_0x1ecf19._0x48475f,_0x1ecf19._0x4eb941)+_0x4f3c15(0x1ec,_0x1ecf19._0x478457,_0x1ecf19._0x19b12e,_0x1ecf19._0x3c2012)+'m']=_0x4ed1a0(this['_subscribe'+_0x4f3c15(_0x1ecf19._0x36b2e3,0x206,_0x1ecf19._0xaef3d1,_0x1ecf19._0x22c84d)+'am'][_0x1146da(_0x1ecf19._0x1add63,_0x1ecf19._0x391d93,_0x1ecf19._0x25abe5,_0x1ecf19._0x5c2c80)](this)),this[_0x4f3c15(_0x1ecf19._0x23c1e5,0x1f1,_0x1ecf19._0x23e525,0x1e1)+'rcObject']=_0x5e471d(this[_0x4f3c15(_0x1ecf19._0xaef3d1,_0x1ecf19._0x404644,_0x1ecf19._0x5cfc49,_0x1ecf19._0x3dbaed)+_0x4f3c15(_0x1ecf19._0x4a3fb6,_0x1ecf19._0x33f587,_0x1ecf19._0x545856,_0x1ecf19._0x5cfc49)]['bind'](this));}['close'](){const _0x3cf122={_0x2676b9:0x348,_0x17df7b:0x33a,_0x2deccf:0x33c,_0x5e378d:0x1a7,_0x278973:0x1c8,_0x424fbd:0x334,_0x1b1fc7:0x327,_0x74c250:0x324},_0x3d70cb={_0xf015b4:0x44d,_0x1f7fd4:0x199,_0xe4b9b0:0x1a7},_0x32adfb={_0x1a932f:0x2d1,_0x5862c7:0x1e,_0x1da6ed:0xc6};function _0x3dbe99(_0x16202d,_0x1b7ce1,_0x50d034,_0x55d9a9){return _0x28226f(_0x16202d,_0x55d9a9-_0x32adfb._0x1a932f,_0x50d034-_0x32adfb._0x5862c7,_0x55d9a9-_0x32adfb._0x1da6ed);}function _0x1c8459(_0x1d1019,_0x4a6145,_0x4559a1,_0x41cebf){return _0x28226f(_0x41cebf,_0x1d1019-_0x3d70cb._0xf015b4,_0x4559a1-_0x3d70cb._0x1f7fd4,_0x41cebf-_0x3d70cb._0xe4b9b0);}for(const {value:_0xa14113}of this[_0x1c8459(_0x3cf122._0x2676b9,0x341,_0x3cf122._0x17df7b,_0x3cf122._0x2deccf)][_0x3dbe99(0x1ae,_0x3cf122._0x5e378d,_0x3cf122._0x278973,0x1ba)]()){_0xa14113[_0x1c8459(_0x3cf122._0x424fbd,_0x3cf122._0x1b1fc7,0x347,_0x3cf122._0x74c250)]();}}['_authorize'](_0x6f87c2,_0x1f9fc2){const _0x3ade4b={_0xe98bd6:0x21b,_0x563dc6:0x224,_0x51853a:0x223},_0x2ab7e6={_0x11fdb0:0x122,_0x5ef1ca:0xbc};function _0x557bc7(_0x200e18,_0x87bbc9,_0x1e5f40,_0x8e7621){return _0x28226f(_0x1e5f40,_0x8e7621- -_0x2ab7e6._0x11fdb0,_0x1e5f40-_0x2ab7e6._0x5ef1ca,_0x8e7621-0x1e1);}return this[_0x557bc7(-_0x3ade4b._0xe98bd6,-0x22b,-_0x3ade4b._0x563dc6,-_0x3ade4b._0x51853a)]['authorize'](_0x6f87c2,_0x1f9fc2);}[_0x28226f(-0x10e,-0x108,-0x111,-0x109)+'ze'](_0xe39a67,_0x3093a2){return this['api']['deauthoriz'+'e'](_0xe39a67,_0x3093a2);}['_subscribe'+'ActivateCa'+'ll'](){return new Readable();}[_0x352819(-0x18,-0x10,-0x29,-0x1e)+_0x352819(-0x14,-0x2b,-0x24,-0x19)+'am'](_0x373da7,_0x3cee88){const _0xd7d556={_0x786b7a:0x83,_0x205461:0x8d,_0x39fe9d:0x82,_0xa8d458:0x1e5,_0x154347:0x1ef,_0x3cb013:0x1de,_0x44ae4e:0x1ec},_0x151f0a={_0x3a5c2c:0xee,_0x7fd36e:0x207},_0x9b21de={_0x31ee70:0x95,_0x1e00df:0x1ac,_0x9c55ec:0xbb};function _0x55e9ed(_0x361de1,_0x55ea02,_0x59da70,_0x5c8118){return _0x352819(_0x361de1-_0x9b21de._0x31ee70,_0x55ea02-_0x9b21de._0x1e00df,_0x5c8118,_0x361de1-_0x9b21de._0x9c55ec);}function _0x5588a6(_0x4fd6d4,_0x81f57a,_0x38656c,_0x2cead0){return _0x352819(_0x4fd6d4-_0x151f0a._0x3a5c2c,_0x81f57a-0x16d,_0x81f57a,_0x4fd6d4-_0x151f0a._0x7fd36e);}return _0x373da7[_0x55e9ed(0x91,_0xd7d556._0x786b7a,_0xd7d556._0x205461,_0xd7d556._0x39fe9d)+_0x5588a6(_0xd7d556._0xa8d458,_0xd7d556._0x154347,_0xd7d556._0x3cb013,_0xd7d556._0x44ae4e)+'m'](_0x3cee88);}[_0x352819(-0x35,-0x29,-0x25,-0x2e)+_0x28226f(-0x10a,-0x104,-0x116,-0xff)](_0x6d2e80,_0x48a1de){const _0x4328cf={_0x10e71f:0x37,_0x2e873c:0x3d,_0x7b03ba:0x2e,_0x29c17a:0x20,_0x558200:0x2a,_0x3393c5:0xf,_0x17b2b7:0x16},_0x2d5274={_0x4757db:0x1b2,_0x2ee729:0x1d5,_0x5b1328:0x1a4},_0x427fc0={_0x2dbb16:0xdf,_0x56973a:0x7d,_0x475d50:0xeb};function _0x2185d7(_0x710e09,_0x589e51,_0x2b0d81,_0x44abbe){return _0x28226f(_0x2b0d81,_0x710e09-_0x427fc0._0x2dbb16,_0x2b0d81-_0x427fc0._0x56973a,_0x44abbe-_0x427fc0._0x475d50);}function _0x4be786(_0x223caf,_0x4d05ad,_0x5a049e,_0x320c62){return _0x352819(_0x223caf-_0x2d5274._0x4757db,_0x4d05ad-_0x2d5274._0x2ee729,_0x5a049e,_0x320c62-_0x2d5274._0x5b1328);}return _0x6d2e80[_0x2185d7(-0x3d,-_0x4328cf._0x10e71f,-_0x4328cf._0x2e873c,-_0x4328cf._0x7b03ba)+_0x2185d7(-_0x4328cf._0x29c17a,-_0x4328cf._0x558200,-_0x4328cf._0x3393c5,-_0x4328cf._0x17b2b7)](_0x48a1de);}};
1const{Readable:e}=require("streamx"),t=require("hypercore-id-encoding"),i=require("b4a"),s=require("./call"),r=require("./presence"),c=require("./local/tracks"),a=require("./local/devices"),{createResourceManager:o}=require("../lib/common");module.exports=class{constructor(e,h){this.api=e,this.swarmId=i.isBuffer(h)?t.encode(h):h,this.local=new c,this.devices=new a,this.presence=new r(this.api,this.swarmId);const{collection:u,method:l,subscription:n}=o(e=>new s(this,e));this._callsById=u,this.authorize=this._authorize.bind(this),this.deauthorize=this._deauthorize.bind(this),this.subscribeActivateCall=n(this._subscribeActivateCall.bind(this)),this.subscribeRemoteStream=n(this._subscribeRemoteStream.bind(this)),this.getRemoteSrcObject=l(this._getRemoteSrcObject.bind(this))}close(){this.devices.close();for(const{value:e}of this._callsById.values())e.close()}_authorize(e,t){return this.api.authorize(e,t)}_deauthorize(e,t){return this.api.deauthorize(e,t)}_subscribeActivateCall(){return new e}_subscribeRemoteStream(e,t){return e.subscribeRemoteStream(t)}_getRemoteSrcObject(e,t){return e.getRemoteSrcObject(t)}};
@holepunchto/keet-call/client/local/constants.js +1 -1
……@@ -1 +1 @@
1(function(_0x143a51,_0x338eef){var _0x435187={_0x15bf03:0xb6,_0x84070a:0xa0,_0x51a7e5:0xb6,_0x386e7f:0x22a,_0x109408:0x220,_0x1e86c9:0x222,_0xf638a9:0x225,_0x338163:0x212,_0x5f3f26:0x21e,_0x43a5d6:0x210,_0x33b669:0x223,_0x4f3f52:0x222,_0x3c2f05:0x218,_0x54c213:0x20f,_0x45091a:0x217,_0x44f339:0x219,_0x4d171a:0x207,_0x4d35af:0x21e,_0x3d12d5:0x221,_0x3b0f30:0x220,_0x105260:0x218,_0x4df51d:0x216,_0x374774:0x21d,_0x3fff49:0x21c,_0x11e07f:0xa5,_0x3a5277:0xa5,_0x16396:0x229},_0x4515fa={_0x114fa3:0x291};function _0x31c5d9(_0x101b7d,_0x25110a,_0x346a9d,_0x4da327){return _0x4817(_0x346a9d-0x33,_0x4da327);}var _0x413182=_0x143a51();function _0x3e51eb(_0x11aa5d,_0x293c37,_0x1f3b92,_0x10612b){return _0x4817(_0x10612b- -_0x4515fa._0x114fa3,_0x11aa5d);}while(!![]){try{var _0x46f0cb=parseInt(_0x31c5d9(_0x435187._0x15bf03,_0x435187._0x84070a,0xa9,_0x435187._0x51a7e5))/(0x99e*0x1+0x1*-0x10ab+0x70e)*(-parseInt(_0x3e51eb(-0x22b,-_0x435187._0x386e7f,-0x21b,-_0x435187._0x109408))/(-0xab6+-0x10a*-0x14+0x70*-0x17))+-parseInt(_0x3e51eb(-0x218,-_0x435187._0x1e86c9,-0x22e,-0x223))/(-0x6f*0x25+0x1db*-0x13+0x334f)*(parseInt(_0x3e51eb(-0x228,-_0x435187._0xf638a9,-_0x435187._0x338163,-_0x435187._0x5f3f26))/(0x2398+0x2*-0x696+0x59a*-0x4))+parseInt(_0x3e51eb(-_0x435187._0x43a5d6,-_0x435187._0x33b669,-_0x435187._0x4f3f52,-_0x435187._0x3c2f05))/(0xc72+0xf66*0x1+-0x1bd3)*(parseInt(_0x3e51eb(-_0x435187._0x54c213,-_0x435187._0x45091a,-0x21a,-_0x435187._0x44f339))/(-0x97*-0x11+-0x748+-0x11*0x29))+-parseInt(_0x3e51eb(-0x215,-_0x435187._0x45091a,-_0x435187._0x4d171a,-_0x435187._0x43a5d6))/(-0x1b47+-0x4*0x48a+0x2d76)*(-parseInt(_0x3e51eb(-_0x435187._0x4d35af,-_0x435187._0x3d12d5,-_0x435187._0x3b0f30,-0x225))/(-0x11a7+0x3*-0x4b9+0x1fda))+-parseInt(_0x3e51eb(-_0x435187._0x105260,-_0x435187._0x4df51d,-_0x435187._0x109408,-_0x435187._0x374774))/(0x68b+0x6c*-0x45+0xb4d*0x2)+parseInt(_0x3e51eb(-0x225,-0x212,-_0x435187._0x3c2f05,-_0x435187._0x3fff49))/(-0x9c2+-0x13df+0x1dab)*(parseInt(_0x31c5d9(_0x435187._0x84070a,0xae,_0x435187._0x11e07f,_0x435187._0x3a5277))/(0x4df*-0x4+0x86*-0x7+0x1731))+parseInt(_0x3e51eb(-0x21c,-0x229,-_0x435187._0x33b669,-_0x435187._0x16396))/(0xe*-0x267+0x353*-0x9+0x3f99);if(_0x46f0cb===_0x338eef)break;else _0x413182['push'](_0x413182['shift']());}catch(_0x7ddfd3){_0x413182['push'](_0x413182['shift']());}}}(_0x5785,-0x26703+-0x25*-0x6c9a+-0x17*0x281e));function _0xf4ea97(_0x2e00e1,_0x4f2783,_0x177b53,_0x418d9e){return _0x4817(_0x177b53-0xce,_0x4f2783);}function _0x5785(){var _0x23a7aa=['apply','camera','4YGGeTX','11DLuDUy','39196cBJaFZ','6006168aUYYvr','1570260nuMAJR','349642HQqbpP','era','120312aZmKTA','150UGWqTc','search','constructo','een','change:cam','(((.+)+)+)','STREAM_TYP','toString','7wkBHaa','21717312UPebZc','GE_EVENTS','E_EVENTS','change:scr','1188976YLhGAB','close:scre','219DWbfOs'];_0x5785=function(){return _0x23a7aa;};return _0x5785();}var _0x5a59c1=(function(){var _0x4a7137={_0x5e60f0:0x263,_0x4a3b21:0x259},_0x5cd1cf=!![];return function(_0x3628cf,_0x41a74b){var _0x21b46d=_0x5cd1cf?function(){var _0x5287e5={_0x41ce2d:0x1f4};function _0x42bf2c(_0x563d7f,_0x105411,_0x97880f,_0x3b0854){return _0x4817(_0x105411-_0x5287e5._0x41ce2d,_0x3b0854);}if(_0x41a74b){var _0x392c6a=_0x41a74b[_0x42bf2c(_0x4a7137._0x5e60f0,0x263,_0x4a7137._0x4a3b21,0x267)](_0x3628cf,arguments);return _0x41a74b=null,_0x392c6a;}}:function(){};return _0x5cd1cf=![],_0x21b46d;};}()),_0x4672e6=_0x5a59c1(this,function(){var _0x20d784={_0x3fbe15:0x426,_0x5a2248:0x422,_0x181a5d:0x413,_0x2d0882:0x421,_0x57b553:0x41c,_0x2f0f80:0x41e,_0x3a5669:0x42a,_0x2e1e3d:0x420,_0x2ec209:0x41c,_0x27c15e:0x1e9,_0x3597cd:0x1e3,_0x5c9124:0x1ef,_0x6e97f1:0x41a,_0x49918a:0x418,_0x42b717:0x41d,_0x29af00:0x412,_0x4bb288:0x1ef,_0x3ada19:0x1eb,_0xd59289:0x41b,_0x4f0704:0x423},_0x5960f6={_0x34d78a:0x3a2},_0x4d772a={_0x36763f:0x269};function _0x4f96a5(_0x3c5d9d,_0x2cc8f2,_0xe1f4bb,_0x5f108e){return _0x4817(_0x3c5d9d- -_0x4d772a._0x36763f,_0x2cc8f2);}function _0xad1f(_0xebd83d,_0x3b90fe,_0x3efbb5,_0x46532d){return _0x4817(_0x3efbb5-_0x5960f6._0x34d78a,_0xebd83d);}return _0x4672e6[_0xad1f(0x422,_0x20d784._0x3fbe15,_0x20d784._0x5a2248,0x41a)]()[_0xad1f(_0x20d784._0x181a5d,_0x20d784._0x2d0882,_0x20d784._0x57b553,_0x20d784._0x2f0f80)](_0xad1f(_0x20d784._0x3a5669,0x415,_0x20d784._0x2e1e3d,_0x20d784._0x2ec209)+'+$')[_0x4f96a5(-_0x20d784._0x27c15e,-0x1e7,-_0x20d784._0x3597cd,-_0x20d784._0x5c9124)]()[_0xad1f(_0x20d784._0x6e97f1,_0x20d784._0x49918a,_0x20d784._0x42b717,_0x20d784._0x29af00)+'r'](_0x4672e6)[_0x4f96a5(-_0x20d784._0x4bb288,-0x1ee,-0x1e9,-_0x20d784._0x3ada19)](_0xad1f(_0x20d784._0x2d0882,_0x20d784._0xd59289,0x420,_0x20d784._0x4f0704)+'+$');});function _0x4817(_0x1e1481,_0xe4ea2){var _0x28d5ed=_0x5785();return _0x4817=function(_0x18d29d,_0x1e9a0e){_0x18d29d=_0x18d29d-(0x25d2+0x1e8f*-0x1+0x2d*-0x27);var _0x576f4a=_0x28d5ed[_0x18d29d];return _0x576f4a;},_0x4817(_0x1e1481,_0xe4ea2);}function _0x5227fa(_0x577ef1,_0x1f2288,_0x245763,_0x172f9f){var _0x4e1713={_0xcba06a:0x36e};return _0x4817(_0x245763- -_0x4e1713._0xcba06a,_0x1f2288);}_0x4672e6(),exports[_0xf4ea97(0x152,0x14c,0x14d,0x140)+'E']={'CAMERA':_0x5227fa(-0x307,-0x2f4,-0x2fe,-0x2f1),'SCREEN':'screen'},exports['LOCAL_CHAN'+_0x5227fa(-0x300,-0x30a,-0x305,-0x2f8)]={'CAMERA':_0xf4ea97(0x146,0x152,0x14b,0x148)+_0x5227fa(-0x2ff,-0x2ff,-0x2f7,-0x300),'SCREEN':_0xf4ea97(0x143,0x130,0x139,0x143)+_0x5227fa(-0x2e5,-0x2f3,-0x2f2,-0x2e8)},exports['LOCAL_CLOS'+_0x5227fa(-0x306,-0x311,-0x304,-0x303)]={'CAMERA':'close:came'+'ra','SCREEN':_0x5227fa(-0x307,-0x301,-0x301,-0x2ff)+'en'};
1exports.STREAM_TYPE={CAMERA:"camera",SCREEN:"screen"},exports.LOCAL_CHANGE_EVENTS={CAMERA:"change:camera",SCREEN:"change:screen"},exports.LOCAL_CLOSE_EVENTS={CAMERA:"close:camera",SCREEN:"close:screen"};
@holepunchto/keet-call/client/local/devices.js +1 -1
……@@ -1 +1 @@
1(function(_0x1a5498,_0xebf8ef){const _0x455a31={_0x177078:0xd8,_0x505559:0xdd,_0x2d8f44:0xd4,_0x4726c5:0xc3,_0x552efc:0xcb,_0x90b77e:0xd9,_0xbbdd10:0xd0,_0x437b6e:0x41,_0x1611d4:0x3a,_0x47828c:0x3d,_0x4aa8a9:0x38,_0x1ff004:0x1a,_0x29c9d7:0x24,_0x4983a3:0x1d,_0x2fde80:0xe0,_0x1c1fa2:0xd7,_0x133074:0x23,_0x4b4a51:0x22,_0x570b1c:0x1f,_0x167188:0x13,_0x1f7d91:0x25,_0x17336b:0x23,_0x2c783b:0xb6,_0x1f99c6:0xc1,_0x54c099:0xcc,_0x3bef2d:0xc0,_0x38ead1:0xcc,_0x2b0bed:0xca,_0x289aac:0xd3},_0x1cbb1c={_0x84cd46:0x237},_0xa1f34e={_0x46d0a5:0x191};function _0x2a5344(_0x2a69bc,_0xf33f07,_0xc4e61e,_0x4e7b5a){return _0x5d69(_0x4e7b5a- -_0xa1f34e._0x46d0a5,_0x2a69bc);}function _0x286e34(_0x5d355d,_0x384404,_0x4da3a5,_0x21ed29){return _0x5d69(_0x21ed29- -_0x1cbb1c._0x84cd46,_0x4da3a5);}const _0x1cd0a0=_0x1a5498();while(!![]){try{const _0x21a7de=-parseInt(_0x286e34(-_0x455a31._0x177078,-_0x455a31._0x505559,-_0x455a31._0x2d8f44,-_0x455a31._0x505559))/(-0xd23+0x1a18+0x2*-0x67a)*(parseInt(_0x286e34(-_0x455a31._0x4726c5,-_0x455a31._0x552efc,-_0x455a31._0x90b77e,-_0x455a31._0xbbdd10))/(0x2621+-0x25d6+-0x1*0x49))+-parseInt(_0x2a5344(-0x49,-0x41,-_0x455a31._0x437b6e,-_0x455a31._0x1611d4))/(-0x248e+-0x1*-0x4bd+0x61*0x54)*(-parseInt(_0x2a5344(-0x27,-_0x455a31._0x47828c,-_0x455a31._0x4aa8a9,-0x33))/(-0x45d*0x1+0x61d*0x4+-0x1413))+-parseInt(_0x2a5344(-_0x455a31._0x1ff004,-0x22,-_0x455a31._0x29c9d7,-_0x455a31._0x4983a3))/(-0xe2*0x29+-0x235a+-0x4791*-0x1)+parseInt(_0x286e34(-0xc8,-_0x455a31._0x2fde80,-0xc7,-_0x455a31._0x1c1fa2))/(-0x3*0xcbb+-0x2415+0x14*0x3b7)+parseInt(_0x2a5344(-_0x455a31._0x133074,-_0x455a31._0x4b4a51,-_0x455a31._0x1ff004,-_0x455a31._0x570b1c))/(0x24f0+-0x6c7+-0x1e22)*(parseInt(_0x2a5344(-_0x455a31._0x167188,-0x2b,-_0x455a31._0x1f7d91,-_0x455a31._0x17336b))/(-0xdae+-0x10c7+-0x1e7d*-0x1))+parseInt(_0x286e34(-_0x455a31._0x2c783b,-_0x455a31._0x1f99c6,-_0x455a31._0x54c099,-_0x455a31._0x3bef2d))/(0xb3*0x13+0x1*0xab+0x1fd*-0x7)+parseInt(_0x286e34(-_0x455a31._0x38ead1,-_0x455a31._0x2b0bed,-0xc3,-_0x455a31._0x289aac))/(0xdf6+-0x1*-0x2263+-0x304f);if(_0x21a7de===_0xebf8ef)break;else _0x1cd0a0['push'](_0x1cd0a0['shift']());}catch(_0x5bdf8e){_0x1cd0a0['push'](_0x1cd0a0['shift']());}}}(_0x1bd6,0x662aa+0x1*-0x5b817+0x19723*0x6));const _0x41c05e=(function(){let _0x4070ff=!![];return function(_0xe9d44d,_0x49b860){const _0x1fd540=_0x4070ff?function(){if(_0x49b860){const _0x3a2b00=_0x49b860['apply'](_0xe9d44d,arguments);return _0x49b860=null,_0x3a2b00;}}:function(){};return _0x4070ff=![],_0x1fd540;};}()),_0x151778=_0x41c05e(this,function(){const _0x1b2bcf={_0x3fa976:0x51,_0x5416a3:0x47,_0x50f2a1:0x46,_0x2f04f1:0x4d,_0xa9123a:0x5c,_0x419aa1:0x50,_0x5db893:0x48,_0x2d2265:0xf8,_0xa62829:0x105,_0x39af10:0x109,_0x535a49:0x137,_0x26ba19:0x126,_0x35dbf6:0x55,_0x80d12b:0x58,_0x447017:0x4c,_0x9df966:0x105,_0x12eb99:0xfb},_0x3cd25b={_0x24dac0:0x112},_0x5a68be={_0x5b412f:0x27f};function _0x544e55(_0x5e9fc2,_0x8e72fc,_0x2e4523,_0x4d7a99){return _0x5d69(_0x4d7a99- -_0x5a68be._0x5b412f,_0x2e4523);}function _0x246ae4(_0x16d086,_0x4084f3,_0x60e4e7,_0x3cf6ad){return _0x5d69(_0x4084f3- -_0x3cd25b._0x24dac0,_0x60e4e7);}return _0x151778[_0x246ae4(_0x1b2bcf._0x3fa976,_0x1b2bcf._0x5416a3,_0x1b2bcf._0x50f2a1,_0x1b2bcf._0x2f04f1)]()[_0x246ae4(_0x1b2bcf._0xa9123a,_0x1b2bcf._0x419aa1,_0x1b2bcf._0x5db893,0x59)](_0x544e55(-_0x1b2bcf._0x2d2265,-0x10c,-_0x1b2bcf._0xa62829,-_0x1b2bcf._0x39af10)+'+$')[_0x544e55(-0x137,-0x135,-_0x1b2bcf._0x535a49,-_0x1b2bcf._0x26ba19)]()['constructo'+'r'](_0x151778)[_0x246ae4(_0x1b2bcf._0x35dbf6,_0x1b2bcf._0x419aa1,_0x1b2bcf._0x80d12b,_0x1b2bcf._0x447017)](_0x544e55(-_0x1b2bcf._0x9df966,-0x114,-_0x1b2bcf._0x12eb99,-0x109)+'+$');});function _0x1bd6(){const _0x119e16=['then','3312470agxFlI','set','bind','1023632xScoSQ','getDevices','default','reduce','_deviceSub','mediaDevic','audioinput','8lQxBPR','scriptions','enumerateD','stener','5668747npRhtu','get','3011710RlPSWd','exports','(((.+)+)+)','1587240tJwNly','hange','5127gOwvPr','indexOf','toString','2jBybkE','push','evices','sort','1348dBAIbx','addEventLi','2409852SjDOWV','videoinput','search'];_0x1bd6=function(){return _0x119e16;};return _0x1bd6();}function _0x2b2292(_0x33fce6,_0x3bb0e0,_0x5671cb,_0x5a8a85){const _0x277a79={_0x1dab73:0x387};return _0x5d69(_0x5671cb-_0x277a79._0x1dab73,_0x3bb0e0);}_0x151778();const {Readable}=require('streamx'),debounce=require('debounceify'),safetyCatch=require('safety-catch');function _0x5d69(_0x3536e7,_0x3ebd51){const _0xe9b26c=_0x1bd6();return _0x5d69=function(_0x404ab8,_0x4793ba){_0x404ab8=_0x404ab8-(-0x407*-0x7+-0x23*0xef+0x3*0x1f1);let _0x60508b=_0xe9b26c[_0x404ab8];return _0x60508b;},_0x5d69(_0x3536e7,_0x3ebd51);}module[_0x22f946(-0x90,-0x90,-0x97,-0xa6)]=class KeetDeviceClient{constructor(){const _0x3ad041={_0x458699:0x31c,_0x5719db:0x331,_0xae4f8e:0x320,_0x5d6c7f:0x316,_0x303b16:0x314,_0x269b58:0x229,_0x48c5d4:0x22a,_0x3ccfd6:0x22f,_0xfad044:0x307,_0x4e8e71:0x235,_0x3ce983:0x231,_0x4b647e:0x30b,_0x120a69:0x302,_0x3ea36b:0x230,_0x175a7:0x334,_0x408953:0x329,_0x5c5c59:0x319},_0x28e767={_0x29676c:0x1e7},_0xdf24a5={_0x22e764:0x7e,_0x241a7e:0x3bd};this[_0x5ed4e4(0x312,0x31c,0x312,_0x3ad041._0x458699)+_0x5ed4e4(_0x3ad041._0x5719db,_0x3ad041._0xae4f8e,_0x3ad041._0x5d6c7f,_0x3ad041._0x303b16)]=[],this['_ondevicec'+_0x29f334(-_0x3ad041._0x269b58,-_0x3ad041._0x48c5d4,-0x229,-_0x3ad041._0x3ccfd6)]=debounce(this['_onDeviceC'+'hange'][_0x5ed4e4(_0x3ad041._0xfad044,0x317,_0x3ad041._0x458699,_0x3ad041._0xfad044)](this));function _0x5ed4e4(_0x58e11e,_0x5cc0db,_0x48a0fc,_0x4c73e4){return _0x22f946(_0x58e11e-_0xdf24a5._0x22e764,_0x5cc0db-0x101,_0x5cc0db-_0xdf24a5._0x241a7e,_0x4c73e4);}function _0x29f334(_0x51f3b2,_0x6840d7,_0x3588d4,_0x37c1d1){return _0x22f946(_0x51f3b2-_0x28e767._0x29676c,_0x6840d7-0x37,_0x51f3b2- -0x195,_0x6840d7);}navigator[_0x29f334(-_0x3ad041._0x4e8e71,-0x240,-_0x3ad041._0x3ce983,-0x237)+'es'][_0x5ed4e4(_0x3ad041._0x4b647e,0x310,_0x3ad041._0x120a69,_0x3ad041._0xae4f8e)+_0x29f334(-_0x3ad041._0x3ea36b,-_0x3ad041._0x3ea36b,-0x222,-0x22d)]('devicechan'+'ge',this['_ondevicec'+_0x5ed4e4(_0x3ad041._0x175a7,_0x3ad041._0x408953,_0x3ad041._0x5c5c59,0x32f)]);}async['_onDeviceC'+_0x2b2292(0x4f6,0x4f6,0x4ff,0x4ef)](){const _0x1b36a3={_0x31bfb4:0x4bf,_0x5b0d7e:0x4ad,_0x5042cd:0x4c3,_0x44a0e8:0x428,_0x120e8e:0x420,_0x1c23b6:0x49a,_0x4059bb:0x4ab,_0x4df729:0x4b5},_0x20dfc7={_0x2c09a:0x81,_0xa1b00e:0x37,_0xc24bf5:0x1c},_0x19e0f4={_0x3a6ea0:0xce,_0x17db9a:0x36};function _0x4c4ee3(_0x257f0d,_0x300e24,_0x5ae861,_0x5ab33c){return _0x2b2292(_0x257f0d-0x180,_0x257f0d,_0x300e24- -_0x19e0f4._0x3a6ea0,_0x5ab33c-_0x19e0f4._0x17db9a);}function _0x249079(_0x533dd2,_0x4dc9e2,_0xb2cfd3,_0x23b5ab){return _0x2b2292(_0x533dd2-_0x20dfc7._0x2c09a,_0x533dd2,_0x4dc9e2- -_0x20dfc7._0xa1b00e,_0x23b5ab-_0x20dfc7._0xc24bf5);}try{const _0x131e91=await this[_0x249079(_0x1b36a3._0x31bfb4,0x4b8,_0x1b36a3._0x5b0d7e,_0x1b36a3._0x5042cd)]();for(const _0x15ab1a of this['_deviceSub'+_0x4c4ee3(0x438,_0x1b36a3._0x44a0e8,0x421,_0x1b36a3._0x120e8e)]){_0x15ab1a[_0x249079(_0x1b36a3._0x1c23b6,_0x1b36a3._0x4059bb,_0x1b36a3._0x4df729,0x4ab)](_0x131e91);}}catch(_0x43d0a3){safetyCatch(_0x43d0a3);}}['subscribeD'+_0x2b2292(0x4d7,0x4e8,0x4e3,0x4d3)](){const _0x3930e3={_0x299643:0xfd,_0x556304:0xed,_0xa8cbf1:0x262,_0xabc826:0x267,_0xc581d7:0x278},_0x1d58fe={_0x21f9f5:0x39,_0x5b24a6:0x4c},_0x360452={_0xc557fb:0xab,_0x569993:0x18,_0x38cd87:0x31a},_0x105059={_0x3fa2fb:0x2e6,_0x454b9d:0x2ee,_0x97761:0x2e4,_0x19d06f:0x2fc,_0x31f3f8:0x2db,_0x38a52f:0x2e7,_0x5371e9:0x410,_0x5f1bc8:0x3f6,_0x3e04fa:0x401},_0x3a38de={_0x4d8378:0x545,_0x58d95b:0x54b,_0x12411b:0x54c,_0x33fdc8:0x54f,_0x5676fb:0x546,_0x526ba7:0x553,_0x2a81b7:0x536},_0x220b77={_0x139867:0x221,_0x15e53d:0x22c,_0x1eec6e:0x220},_0x578a81=this,_0x2a1b23=new Readable({'open'(_0x5203a6){const _0x54100e={_0x63bf46:0x312,_0x1b6537:0x8a},_0x143b55={_0x163e48:0x3cb};function _0xdd4465(_0x47884c,_0x1fccdd,_0x3177fe,_0x273415){return _0x5d69(_0x1fccdd-0x3e3,_0x47884c);}function _0x305e28(_0x15b41d,_0x1489f0,_0x18cb55,_0x595d37){return _0x5d69(_0x595d37- -_0x143b55._0x163e48,_0x15b41d);}_0x578a81[_0xdd4465(_0x3a38de._0x4d8378,_0x3a38de._0x58d95b,_0x3a38de._0x12411b,_0x3a38de._0x12411b)]()[_0xdd4465(_0x3a38de._0x33fdc8,_0x3a38de._0x5676fb,_0x3a38de._0x526ba7,_0x3a38de._0x2a81b7)](_0x51bbc5=>{this[_0x4c0f3c(_0x220b77._0x139867,_0x220b77._0x15e53d,_0x220b77._0x1eec6e,0x22d)](_0x51bbc5);function _0x4c0f3c(_0x3ab368,_0x227160,_0x39dc1a,_0x2faa94){return _0xdd4465(_0x3ab368,_0x227160- -_0x54100e._0x63bf46,_0x39dc1a-_0x54100e._0x1b6537,_0x2faa94-0x40);}_0x5203a6(null);},_0x46761e=>_0x5203a6(_0x46761e));},'destroy'(_0x5c200f){const _0x19506d={_0x14bcf5:0x183},_0x4952c7=_0x578a81[_0x39469c(_0x105059._0x3fa2fb,_0x105059._0x454b9d,0x2eb,0x2f6)+_0x39469c(_0x105059._0x97761,0x2f2,_0x105059._0x19d06f,0x300)][_0x39469c(0x2e6,_0x105059._0x31f3f8,_0x105059._0x38a52f,0x2e2)](_0x2a1b23);if(_0x4952c7!==-(0x1112*-0x2+0x53*-0x35+0x49*0xb4))_0x578a81['_deviceSub'+_0x3095b9(_0x105059._0x5371e9,0x40a,_0x105059._0x5f1bc8,_0x105059._0x3e04fa)]['splice'](_0x4952c7,0xb*-0x7b+-0x1*-0x10a3+-0xb59);function _0x39469c(_0x33e1c1,_0xb58099,_0x5eeaa6,_0x269b18){return _0x5d69(_0xb58099-_0x19506d._0x14bcf5,_0x33e1c1);}function _0x3095b9(_0x76721f,_0x5b9749,_0x53ec1a,_0x48c8d6){return _0x5d69(_0x48c8d6-0x292,_0x53ec1a);}_0x5c200f(null);}});function _0xdc47ea(_0x4beb66,_0x56d1eb,_0x696452,_0x17886f){return _0x22f946(_0x4beb66-_0x360452._0xc557fb,_0x56d1eb-_0x360452._0x569993,_0x696452-_0x360452._0x38cd87,_0x17886f);}this[_0x315adb(-_0x3930e3._0x299643,-0xfe,-0xf1,-_0x3930e3._0x556304)+'scriptions'][_0xdc47ea(_0x3930e3._0xa8cbf1,_0x3930e3._0xabc826,0x269,_0x3930e3._0xc581d7)](_0x2a1b23);function _0x315adb(_0x4f13d4,_0xf8913a,_0x141b05,_0x468e0f){return _0x22f946(_0x4f13d4-_0x1d58fe._0x21f9f5,_0xf8913a-0x1e3,_0x468e0f- -_0x1d58fe._0x5b24a6,_0xf8913a);}return _0x2a1b23;}async[_0x22f946(-0xb2,-0x99,-0xa4,-0x9d)](){const _0x2f947b={_0x27111b:0xe6,_0x52515a:0xd9,_0x8064a4:0xea,_0x2fba4a:0xe2,_0x6ab593:0xdf,_0x389d51:0xe6,_0x42d1e4:0xf1,_0x32b15c:0xf6,_0x494c8c:0xf9},_0x4b23d8={_0x303ecf:0xb,_0x180416:0x5d9,_0x179f48:0x7a},_0x2fe710={_0x574ebd:0x9e};function _0x3640f2(_0xd0d44d,_0x51d374,_0x1c77dd,_0x28fd0b){return _0x2b2292(_0xd0d44d-0x84,_0x28fd0b,_0xd0d44d- -_0x2fe710._0x574ebd,_0x28fd0b-0x84);}function _0x9ddcc2(_0x5e0f0c,_0x51eb0b,_0x1ca3cf,_0x2b6dff){return _0x2b2292(_0x5e0f0c-_0x4b23d8._0x303ecf,_0x1ca3cf,_0x51eb0b- -_0x4b23d8._0x180416,_0x2b6dff-_0x4b23d8._0x179f48);}const _0x271fc4=await navigator[_0x9ddcc2(-0xe5,-_0x2f947b._0x27111b,-0xde,-_0x2f947b._0x52515a)+'es'][_0x9ddcc2(-_0x2f947b._0x8064a4,-_0x2f947b._0x2fba4a,-_0x2f947b._0x6ab593,-_0x2f947b._0x389d51)+_0x9ddcc2(-_0x2f947b._0x42d1e4,-_0x2f947b._0x32b15c,-_0x2f947b._0x494c8c,-0xee)]();return parseDevices(_0x271fc4);}};function parseDevices(_0x458935){const _0x331bc7={_0x26ebc1:0x289,_0x16af42:0x288,_0xf7fcde:0x297,_0x2cfe54:0x28e},_0x32f5c6={_0x52d7b4:0x540,_0x3ca843:0x530,_0x430991:0x51f,_0x9980a5:0x52a,_0x18cc22:0x513,_0x2ad469:0x525,_0x3eb6e1:0x529,_0x21b18b:0x62,_0x34d9ac:0x5a,_0x32273b:0x68,_0xd58ff1:0x67,_0x5d76fe:0x72,_0x118315:0x6c,_0xdf73ad:0x70,_0x1ee828:0x65,_0x417c0b:0x5c,_0x13a2b6:0x68,_0x53262e:0x5e,_0x1580f9:0x63},_0x29601b={_0x5c4c65:0x3bd},_0x234e4a={_0x25f682:0x141,_0x3868d4:0x33d},_0x5b1e72=[],_0x5d27c7=[],_0x3c12f4=[];function _0x3196be(_0xf70683,_0x47b0b2,_0xb1e10a,_0x24fec4){return _0x22f946(_0xf70683-0x7d,_0x47b0b2-_0x234e4a._0x25f682,_0x24fec4-_0x234e4a._0x3868d4,_0xf70683);}const _0x4dfd0a={},_0x225f32=new Map(),_0x48fd82=getDefaultGroupIdsByKind(_0x458935);return _0x458935['forEach'](({kind:_0x3f5c44,label:_0x5a0678,deviceId:_0x55a7db,groupId:_0x22f961})=>{const _0x17f934={_0x305575:0x1c3};if(!_0x55a7db||!_0x5a0678||_0x55a7db==='default')return;const _0x8fa690=_0x5a0678+'|'+_0x3f5c44,_0x12020b=_0x225f32[_0x1ab7cc(_0x32f5c6._0x52d7b4,0x52d,_0x32f5c6._0x3ca843,_0x32f5c6._0x430991)](_0x8fa690)||-0x2173*-0x1+-0x9e7*0x1+-0x178c;function _0xdd97af(_0x5ab9c3,_0x5653d8,_0x1b308c,_0x4a52f4){return _0x5d69(_0x5653d8- -_0x17f934._0x305575,_0x4a52f4);}_0x225f32[_0x1ab7cc(_0x32f5c6._0x9980a5,_0x32f5c6._0x18cc22,0x522,_0x32f5c6._0x2ad469)](_0x8fa690,_0x12020b+(-0x1*-0xbf+0x55*-0x1a+-0x1*-0x7e4));function _0x1ab7cc(_0x1c9e7c,_0x5e39a9,_0x491128,_0x5cb173){return _0x5d69(_0x491128-_0x29601b._0x5c4c65,_0x5e39a9);}const _0x8e58be=_0x8fa690+'|'+_0x225f32[_0x1ab7cc(_0x32f5c6._0x3eb6e1,0x540,0x530,0x536)](_0x8fa690),_0x5042cf={'deviceStaticId':_0x8e58be,'deviceId':_0x55a7db,'default':_0x48fd82[_0x3f5c44]===_0x22f961,'kind':_0x3f5c44,'label':_0x5a0678};_0x4dfd0a[_0x8e58be]=_0x5042cf;switch(_0x3f5c44){case _0xdd97af(-0x6c,-_0x32f5c6._0x21b18b,-0x5b,-_0x32f5c6._0x34d9ac):_0x5d27c7[_0xdd97af(-0x6f,-_0x32f5c6._0x32273b,-_0x32f5c6._0xd58ff1,-_0x32f5c6._0x5d76fe)](_0x5042cf);break;case _0x1ab7cc(0x525,_0x32f5c6._0x430991,_0x32f5c6._0x9980a5,0x531):_0x5b1e72[_0xdd97af(-_0x32f5c6._0x118315,-_0x32f5c6._0x32273b,-_0x32f5c6._0xdf73ad,-_0x32f5c6._0x1ee828)](_0x5042cf);break;case'audiooutpu'+'t':_0x3c12f4[_0xdd97af(-_0x32f5c6._0x417c0b,-_0x32f5c6._0x13a2b6,-_0x32f5c6._0x53262e,-_0x32f5c6._0x1580f9)](_0x5042cf);break;default:break;}}),{'audio':_0x5b1e72['sort'](deviceDefaultFirstSortFunc),'audioOutput':_0x3c12f4['sort'](deviceDefaultFirstSortFunc),'video':_0x5d27c7[_0x3196be(_0x331bc7._0x26ebc1,_0x331bc7._0x16af42,_0x331bc7._0xf7fcde,_0x331bc7._0x2cfe54)](deviceDefaultFirstSortFunc),'devicesMap':_0x4dfd0a};}function _0x22f946(_0x273868,_0x5e8194,_0x34bb7b,_0x5c603d){const _0x3d3368={_0x424b87:0x20c};return _0x5d69(_0x34bb7b- -_0x3d3368._0x424b87,_0x5c603d);}function getDefaultGroupIdsByKind(_0x9e0940){const _0x51b59d={_0x3d5f14:0x1cc,_0x4be367:0x1bc,_0xefd2a3:0x1c8,_0x3a85f9:0x1c1},_0x187ef3={_0x249765:0x12e,_0x4b4d9d:0x130},_0x1cb127={_0x3983e8:0x95,_0x272c6e:0x13,_0x55136b:0x19a},_0x14dc48={_0x34b71e:0xdc,_0x4a5f35:0x335,_0x57da26:0x16f};function _0x13fc6a(_0x1db679,_0x499f0c,_0x5279a5,_0x5b85b2){return _0x2b2292(_0x1db679-_0x14dc48._0x34b71e,_0x1db679,_0x499f0c- -_0x14dc48._0x4a5f35,_0x5b85b2-_0x14dc48._0x57da26);}return _0x9e0940[_0x13fc6a(_0x51b59d._0x3d5f14,_0x51b59d._0x4be367,_0x51b59d._0xefd2a3,_0x51b59d._0x3a85f9)]((_0x1345c9,{deviceId:_0x32bab1,kind:_0xce6d,groupId:_0x588902})=>{_0x32bab1===_0x111b42(_0x187ef3._0x249765,_0x187ef3._0x4b4d9d,0x126,0x11e)&&(_0x1345c9[_0xce6d]=_0x588902);function _0x111b42(_0xb8eca7,_0x472d7e,_0x5a9e45,_0x51a939){return _0x13fc6a(_0x472d7e,_0x5a9e45- -_0x1cb127._0x3983e8,_0x5a9e45-_0x1cb127._0x272c6e,_0x51a939-_0x1cb127._0x55136b);}return _0x1345c9;},{});}function deviceDefaultFirstSortFunc(_0x9d5e4e){const _0x1dbb3f={_0x4e8f6c:0x36,_0xbc5a2f:0x2f,_0x3b66fd:0x36,_0x4bffda:0x3c},_0x21c51d={_0x5bcbc9:0xb9,_0x13c254:0xbf,_0x463e9a:0x6d};function _0x310269(_0x24182d,_0x3e2dbe,_0x3998f5,_0x9e53ac){return _0x22f946(_0x24182d-_0x21c51d._0x5bcbc9,_0x3e2dbe-_0x21c51d._0x13c254,_0x24182d-_0x21c51d._0x463e9a,_0x3e2dbe);}return _0x9d5e4e[_0x310269(-_0x1dbb3f._0x4e8f6c,-_0x1dbb3f._0xbc5a2f,-_0x1dbb3f._0x3b66fd,-_0x1dbb3f._0x4bffda)]?-(0x1ea2*0x1+-0x1cac+-0x1*0x1f5):-0x9f0+0xc14+-0x223;}
1const{Readable:e}=require("streamx"),i=require("debounceify"),t=require("safety-catch");function s(e){const i=[],t=[],s=[],a={},o=new Map,r=c(e);return e.forEach(({kind:e,label:c,deviceId:n,groupId:u})=>{if(!n||!c||"default"===n)return;const d=`${c}|${e}`,v=o.get(d)||0;o.set(d,v+1);const h=`${d}|${o.get(d)}`,p={deviceStaticId:h,deviceId:n,default:r[e]===u,kind:e,label:c};switch(a[h]=p,e){case"videoinput":t.push(p);break;case"audioinput":i.push(p);break;case"audiooutput":s.push(p)}}),{audio:i.sort(n),audioOutput:s.sort(n),video:t.sort(n),devicesMap:a}}function c(e){return e.reduce((e,{deviceId:i,kind:t,groupId:s})=>("default"===i&&(e[t]=s),e),{})}function n(e){return e.default?-1:1}module.exports=class{constructor(){this._deviceSubscriptions=[],this._ondevicechange=i(this._onDeviceChange.bind(this)),navigator.mediaDevices.addEventListener("devicechange",this._ondevicechange)}close(){navigator.mediaDevices.removeEventListener("devicechange",this._ondevicechange)}async _onDeviceChange(){try{const e=await this.getDevices();for(const i of this._deviceSubscriptions)i.push(e)}catch(e){t(e)}}subscribeDevices(){const i=this,t=new e({open(e){i.getDevices().then(i=>{this.push(i),e(null)},i=>e(i))},destroy(e){const s=i._deviceSubscriptions.indexOf(t);-1!==s&&i._deviceSubscriptions.splice(s,1),e(null)}});return this._deviceSubscriptions.push(t),t}async getDevices(){return s(await navigator.mediaDevices.enumerateDevices())}};
@holepunchto/keet-call/client/local/tracks.js +1 -1
……@@ -1 +1 @@
1(function(_0x1789cc,_0xca4a6e){const _0x372bdc={_0x598f26:0x90,_0x569c2c:0xa0,_0x1f6076:0xac,_0xe32d20:0x82,_0x498e87:0x54,_0x3973ba:0x5b,_0x51b8fa:0x69,_0x34ef49:0xb8,_0x17a84e:0xcf,_0x5bd2cc:0xe1,_0x4f1a0c:0xb7,_0x4aab24:0x99,_0x3cf3e9:0x87,_0x3dec08:0x98,_0x5bb9b0:0xc7,_0x254f01:0xd1,_0x239d61:0xa4,_0x23cc16:0x89,_0x481d96:0xa3,_0x2adbee:0x7a,_0xb220f0:0x8d,_0x201352:0x9b,_0xe85d6b:0x8b,_0x2fc78b:0xae,_0x8ee8c7:0x6f,_0x4197d8:0x9b,_0x323986:0x6c,_0x3a854a:0x7e,_0x3f7c3c:0x8b},_0x4864ab={_0x47215d:0x130},_0x20365b={_0x4589a2:0x10e};function _0x5a745d(_0x87c3d1,_0xcb0003,_0x525518,_0x592708){return _0x3578(_0xcb0003- -_0x20365b._0x4589a2,_0x525518);}const _0x310fa6=_0x1789cc();function _0x27cc90(_0x3d2006,_0x269ba1,_0x2f8895,_0x3e2619){return _0x3578(_0x3e2619- -_0x4864ab._0x47215d,_0x3d2006);}while(!![]){try{const _0x3b908f=parseInt(_0x5a745d(_0x372bdc._0x598f26,_0x372bdc._0x569c2c,_0x372bdc._0x1f6076,_0x372bdc._0xe32d20))/(-0x1*-0x26d3+0x1ad*0xb+-0x1*0x3941)*(-parseInt(_0x27cc90(_0x372bdc._0x498e87,_0x372bdc._0x3973ba,0x4b,_0x372bdc._0x51b8fa))/(-0x2424+-0x1949+-0x3d6f*-0x1))+parseInt(_0x5a745d(_0x372bdc._0x34ef49,_0x372bdc._0x17a84e,_0x372bdc._0x5bd2cc,_0x372bdc._0x4f1a0c))/(0x82c+-0x1d0f+-0x1*-0x14e6)*(-parseInt(_0x27cc90(0x8c,_0x372bdc._0x4aab24,_0x372bdc._0x3cf3e9,_0x372bdc._0x3dec08))/(-0x1a01+0xad*-0x1b+0x2c44))+-parseInt(_0x5a745d(0xc5,_0x372bdc._0x5bb9b0,_0x372bdc._0x254f01,0xbe))/(0x1452+0x754+0xb*-0x283)+-parseInt(_0x27cc90(_0x372bdc._0x239d61,0xaf,_0x372bdc._0x23cc16,_0x372bdc._0x481d96))/(-0x18fc+0x5f*-0x5+-0x12b*-0x17)+-parseInt(_0x27cc90(0x99,_0x372bdc._0x2adbee,_0x372bdc._0xb220f0,0x9c))/(0xed6+0x1*0x5fd+-0xf2*0x16)*(parseInt(_0x27cc90(0xd1,_0x372bdc._0x201352,_0x372bdc._0xe85d6b,_0x372bdc._0x2fc78b))/(0x25*-0x1d+0x1eef+-0x1ab6))+-parseInt(_0x27cc90(_0x372bdc._0x8ee8c7,0x9a,0x9a,0x81))/(-0x6d8+0x1d54+-0x1673*0x1)+parseInt(_0x27cc90(_0x372bdc._0x4197d8,_0x372bdc._0x323986,_0x372bdc._0x3a854a,_0x372bdc._0x3f7c3c))/(0x17d5+0x1d*-0xea+0x2b7*0x1);if(_0x3b908f===_0xca4a6e)break;else _0x310fa6['push'](_0x310fa6['shift']());}catch(_0x755826){_0x310fa6['push'](_0x310fa6['shift']());}}}(_0x176e,-0x2b31*0x1+-0x1163*-0x76+-0x5d9*0x7c));const _0xda5fae=(function(){const _0x4f9348={_0x621f04:0x569};let _0x114156=!![];return function(_0x5493a1,_0x49648a){const _0x1b5560=_0x114156?function(){const _0x58100f={_0x2d7c28:0x3c1};function _0x1c1c51(_0xe0ae65,_0x68d05,_0x4c00c6,_0xe1c41f){return _0x3578(_0x4c00c6-_0x58100f._0x2d7c28,_0xe0ae65);}if(_0x49648a){const _0x1afca7=_0x49648a[_0x1c1c51(_0x4f9348._0x621f04,0x57a,0x55b,0x545)](_0x5493a1,arguments);return _0x49648a=null,_0x1afca7;}}:function(){};return _0x114156=![],_0x1b5560;};}()),_0x2e1c0a=_0xda5fae(this,function(){const _0x131220={_0xf40f28:0x24a,_0x4deec4:0x224,_0x1bb266:0x23f,_0x5b2539:0x237,_0x44d5ce:0x23e,_0x1ec073:0x22e,_0x2a6b1a:0x234,_0x50f9be:0x212,_0x1fc680:0x227,_0x2a8e8a:0x220,_0x37c893:0x308,_0xf89adc:0x2da,_0x5d328e:0x2fd,_0x58b9a2:0x2db,_0xfe2ca7:0x2db,_0x275b41:0x2d7,_0x39e0cf:0x2e1,_0x2794f1:0x2ef,_0x36673d:0x215,_0x325212:0x23a},_0x2e721c={_0x202acd:0x7d},_0x5940c4={_0x3caa93:0x137};function _0x3ba990(_0x5bb288,_0x4b03d6,_0x46509,_0x22b515){return _0x3578(_0x22b515-_0x5940c4._0x3caa93,_0x4b03d6);}function _0x47ba76(_0x542dc5,_0x2cd966,_0x4b7112,_0x4d9333){return _0x3578(_0x4b7112-_0x2e721c._0x202acd,_0x4d9333);}return _0x2e1c0a[_0x47ba76(_0x131220._0xf40f28,_0x131220._0x4deec4,_0x131220._0x1bb266,_0x131220._0x5b2539)]()[_0x47ba76(_0x131220._0x44d5ce,_0x131220._0x1ec073,0x235,_0x131220._0x2a6b1a)](_0x47ba76(_0x131220._0x50f9be,0x22c,_0x131220._0x1fc680,_0x131220._0x2a8e8a)+'+$')[_0x3ba990(_0x131220._0x37c893,0x2e5,_0x131220._0xf89adc,0x2f9)]()[_0x3ba990(0x2ef,_0x131220._0x5d328e,_0x131220._0x58b9a2,_0x131220._0xfe2ca7)+'r'](_0x2e1c0a)[_0x3ba990(_0x131220._0x275b41,_0x131220._0x39e0cf,0x2f2,_0x131220._0x2794f1)](_0x47ba76(_0x131220._0x36673d,0x21b,0x227,_0x131220._0x325212)+'+$');});function _0x176e(){const _0xb53502=[':\x20wrong\x20st','(((.+)+)+)','mediaDevic','_setScreen','amOpened','1CZnedU','delete','_debounced','3764601DUwukt','warn','racks','screenStre','CAMERA','acks','getTracks','search','audioTrack','_cameraStr','28745710SnFmzR','getUserMed','eamConstra','SetCameraT','SetScreenT','nts','stop','toString','screenTrac','_screenStr','emit','mConstrain','exports','6180WOGzEB','videoMuted','_cameraCha','addTrack','972517YzDHTN','cameraStre','push','bind','ts:\x20wrong\x20','add','getAudioTr','1656618PPZMgI','removeTrac','679690Nkeowe','applyStrea','_setCamera','video','values','videoTrack','audio','iptions','1131pPHGIs','32eJPTTs','1155038jKhKKV','apply','subscribeS','forEach','amConstrai','amStatus','ngesSubscr','_screenCha','intsWanted','getSrcObje','openStream','constructo','Tracks','SCREEN','getVideoTr','subscribeC'];_0x176e=function(){return _0xb53502;};return _0x176e();}function _0x484d45(_0x2bfbc1,_0x44e806,_0x1d37a0,_0x4f284b){const _0x2f9a0c={_0x1b512e:0x1b2};return _0x3578(_0x1d37a0-_0x2f9a0c._0x1b512e,_0x4f284b);}_0x2e1c0a();const {EventEmitter}=require('events'),{Readable}=require('streamx');function _0x1498c9(_0x53ff05,_0xd6d951,_0x24233b,_0x51010d){return _0x3578(_0x24233b-0x3cd,_0xd6d951);}function _0x3578(_0x3578e3,_0x313d5c){const _0x5b62d5=_0x176e();return _0x3578=function(_0x1bcdb6,_0x5b03fe){_0x1bcdb6=_0x1bcdb6-(-0x1*-0x139c+-0x86a+-0x999);let _0x83e7ea=_0x5b62d5[_0x1bcdb6];return _0x83e7ea;},_0x3578(_0x3578e3,_0x313d5c);}const debounce=require('debounceify'),deepEqual=require('fast-deep-equal'),{STREAM_TYPE,LOCAL_CHANGE_EVENTS,LOCAL_CLOSE_EVENTS}=require('./constants');module[_0x1498c9(0x595,0x5a8,0x594,0x5b4)]=class KeetLocalTracks extends EventEmitter{constructor(){const _0x1caba2={_0x1fef9e:0x45f,_0x6a40f:0x443,_0x4b1750:0x46f,_0x38f312:0x350,_0x407619:0x346,_0x33723f:0x33c,_0x2c9b3e:0x326,_0x1ad09a:0x348,_0x59d04b:0x33e,_0x2a48c7:0x31a,_0x599112:0x31a,_0x386ba1:0x325,_0x42374d:0x35c,_0x4a9098:0x33a,_0x55c7d5:0x304,_0x2b7e0a:0x2e8,_0x39cd6b:0x32a,_0x22a7bb:0x310,_0x284bc6:0x32d,_0x238824:0x323,_0x54a09f:0x334,_0x3c3fc6:0x32f,_0x548537:0x327,_0x44950e:0x433,_0x951c95:0x447,_0x75b7b:0x419,_0x5221f1:0x423,_0x3660ba:0x448,_0x39e864:0x456,_0x1614d9:0x431,_0x320363:0x42d,_0x2b5c1e:0x451,_0x38831b:0x341,_0x502e7c:0x337,_0x35c89a:0x30d,_0x5c3a70:0x31d,_0x78469:0x450,_0x108f95:0x43d,_0x579d87:0x311,_0x305930:0x323,_0x5dcc43:0x320,_0x5d27cf:0x354,_0x363dd7:0x437,_0x32a23b:0x444,_0x4bd4c4:0x431,_0x4e53ec:0x31d,_0x3db0b2:0x330,_0x2d09db:0x342,_0x4768d2:0x430,_0x12ca1f:0x436,_0x5b6654:0x41f,_0x2efd6d:0x44b,_0x1c6b7d:0x45c,_0x13e44d:0x454,_0x3577e9:0x455,_0x5fa750:0x43b,_0x39a18b:0x420,_0x420f5d:0x46e,_0x14efce:0x486,_0x1bac80:0x48e,_0x598f2e:0x328,_0x3ee1df:0x326,_0xc4fa74:0x321,_0x4491e0:0x446,_0x395d71:0x442,_0x1049ba:0x461,_0x3ee63d:0x426,_0x1c0e10:0x30f,_0x5cbc1c:0x319,_0x5c44a5:0x338,_0x140921:0x344,_0x5a88b1:0x321,_0x2c042c:0x44c,_0x117459:0x44e,_0x2fa3d8:0x445,_0x46446d:0x452,_0x400213:0x444,_0x525f62:0x44f,_0x3a60a4:0x31e,_0x20e8b6:0x313,_0x41ed55:0x331,_0x294841:0x32c,_0x59b58f:0x2eb,_0x36fb7e:0x2f3,_0x21ca2c:0x2fb,_0x446081:0x30a,_0x52c59a:0x309,_0x296f04:0x31d,_0x4c389f:0x338,_0x137d4f:0x316,_0x58a470:0x445,_0x7caf:0x440,_0x3cfe07:0x444,_0x6bdacf:0x468,_0x4a061d:0x43e,_0x130f3c:0x419,_0x1d0ec1:0x34e,_0x13cac1:0x34c,_0x44a1e5:0x32f,_0x1d6733:0x33c,_0x44bbc5:0x329,_0x5dc910:0x33c,_0x14dc18:0x336,_0x1422d2:0x323,_0x14da87:0x2fc,_0x11ab26:0x30b,_0x53ee1e:0x43a,_0x1c078a:0x35d,_0x5a6cd1:0x34b,_0x43b5fc:0x362,_0x1a5875:0x349},_0x22cb83={_0x5326c6:0xa3,_0x352aba:0x260,_0x3ed9e5:0x31},_0x5dba45={_0xc14da0:0x16,_0x2ac3b4:0x13b,_0x174f82:0x14d};super(),this[_0x3ede6e(_0x1caba2._0x1fef9e,0x456,_0x1caba2._0x6a40f,_0x1caba2._0x4b1750)+'am']=new MediaStream(),this[_0x35aa51(_0x1caba2._0x38f312,_0x1caba2._0x407619,0x330,0x347)]=null,this[_0x35aa51(_0x1caba2._0x33723f,0x33a,0x33b,_0x1caba2._0x2c9b3e)]=null,this[_0x35aa51(0x358,_0x1caba2._0x1ad09a,_0x1caba2._0x59d04b,0x33a)+_0x35aa51(_0x1caba2._0x2a48c7,0x318,0x310,_0x1caba2._0x599112)]=![],this[_0x35aa51(_0x1caba2._0x386ba1,_0x1caba2._0x42374d,0x326,_0x1caba2._0x4a9098)+_0x35aa51(_0x1caba2._0x55c7d5,_0x1caba2._0x2b7e0a,_0x1caba2._0x39cd6b,0x30a)+_0x35aa51(_0x1caba2._0x22a7bb,0x350,0x322,_0x1caba2._0x284bc6)]={'video':![],'audio':![]},this[_0x35aa51(_0x1caba2._0x238824,_0x1caba2._0x54a09f,_0x1caba2._0x3c3fc6,_0x1caba2._0x548537)+'eamConstra'+_0x3ede6e(_0x1caba2._0x44950e,_0x1caba2._0x951c95,_0x1caba2._0x75b7b,_0x1caba2._0x5221f1)]={...this[_0x3ede6e(_0x1caba2._0x1fef9e,_0x1caba2._0x3660ba,_0x1caba2._0x39e864,0x451)+_0x3ede6e(0x42f,_0x1caba2._0x1614d9,_0x1caba2._0x320363,_0x1caba2._0x2b5c1e)+_0x35aa51(_0x1caba2._0x38831b,0x33a,_0x1caba2._0x502e7c,_0x1caba2._0x284bc6)]},this[_0x35aa51(_0x1caba2._0x3c3fc6,_0x1caba2._0x35c89a,0x2fe,_0x1caba2._0x5c3a70)+_0x3ede6e(_0x1caba2._0x78469,0x42e,_0x1caba2._0x108f95,0x450)+_0x35aa51(_0x1caba2._0x579d87,_0x1caba2._0x305930,0x30c,_0x1caba2._0x5dcc43)]=debounce(this[_0x35aa51(0x34f,0x352,_0x1caba2._0x5d27cf,0x344)+_0x3ede6e(_0x1caba2._0x363dd7,0x425,_0x1caba2._0x32a23b,_0x1caba2._0x4bd4c4)][_0x35aa51(_0x1caba2._0x4e53ec,_0x1caba2._0x3db0b2,_0x1caba2._0x2d09db,0x33c)](this)),this['cameraStre'+_0x3ede6e(_0x1caba2._0x4768d2,_0x1caba2._0x12ca1f,_0x1caba2._0x5b6654,_0x1caba2._0x2efd6d)]={'videoMuted':!![],'audioMuted':!![]},this[_0x3ede6e(_0x1caba2._0x1c6b7d,_0x1caba2._0x13e44d,_0x1caba2._0x3577e9,0x442)+_0x3ede6e(0x431,0x430,_0x1caba2._0x5fa750,_0x1caba2._0x39a18b)+_0x3ede6e(_0x1caba2._0x420f5d,_0x1caba2._0x14efce,0x490,_0x1caba2._0x1bac80)]=new Set(),this[_0x35aa51(0x32d,_0x1caba2._0x598f2e,_0x1caba2._0x3ee1df,_0x1caba2._0xc4fa74)+'am']=new MediaStream(),this['screenTrac'+'k']=null,this[_0x3ede6e(_0x1caba2._0x4491e0,_0x1caba2._0x395d71,_0x1caba2._0x1049ba,_0x1caba2._0x3ee63d)+_0x35aa51(0x32a,_0x1caba2._0x1c0e10,_0x1caba2._0x386ba1,_0x1caba2._0x599112)]=![],this[_0x35aa51(_0x1caba2._0x5cbc1c,_0x1caba2._0x5c44a5,_0x1caba2._0x140921,_0x1caba2._0x5a88b1)+_0x3ede6e(0x42f,_0x1caba2._0x2c042c,_0x1caba2._0x117459,_0x1caba2._0x2fa3d8)+_0x3ede6e(_0x1caba2._0x46446d,_0x1caba2._0x400213,_0x1caba2._0x2efd6d,_0x1caba2._0x525f62)]={'video':![]},this[_0x35aa51(_0x1caba2._0x3a60a4,_0x1caba2._0x20e8b6,_0x1caba2._0x38831b,_0x1caba2._0x41ed55)+_0x35aa51(_0x1caba2._0x598f2e,0x32f,_0x1caba2._0x294841,_0x1caba2._0x39cd6b)+'intsWanted']={...this['screenStre'+_0x35aa51(_0x1caba2._0x59b58f,_0x1caba2._0x36fb7e,_0x1caba2._0x21ca2c,_0x1caba2._0x446081)+'nts']},this[_0x35aa51(_0x1caba2._0x446081,_0x1caba2._0x52c59a,_0x1caba2._0x386ba1,_0x1caba2._0x296f04)+_0x35aa51(_0x1caba2._0x4c389f,_0x1caba2._0x137d4f,_0x1caba2._0x294841,_0x1caba2._0x294841)+_0x3ede6e(_0x1caba2._0x58a470,_0x1caba2._0x7caf,_0x1caba2._0x3cfe07,_0x1caba2._0x6bdacf)]=debounce(this[_0x3ede6e(_0x1caba2._0x4a061d,0x41f,0x45b,0x458)+_0x3ede6e(0x437,_0x1caba2._0x2b5c1e,_0x1caba2._0x130f3c,0x431)][_0x35aa51(_0x1caba2._0x1d0ec1,_0x1caba2._0x13cac1,_0x1caba2._0x44a1e5,_0x1caba2._0x1d6733)](this));function _0x3ede6e(_0x54374d,_0x2a0022,_0x172c08,_0x3bd6dd){return _0x1498c9(_0x54374d-_0x5dba45._0xc14da0,_0x172c08,_0x54374d- -_0x5dba45._0x2ac3b4,_0x3bd6dd-_0x5dba45._0x174f82);}function _0x35aa51(_0x587df9,_0x3c8e8c,_0x4867e6,_0x24ff47){return _0x1498c9(_0x587df9-_0x22cb83._0x5326c6,_0x3c8e8c,_0x24ff47- -_0x22cb83._0x352aba,_0x24ff47-_0x22cb83._0x3ed9e5);}this[_0x35aa51(_0x1caba2._0x44bbc5,_0x1caba2._0x5dc910,_0x1caba2._0x14dc18,_0x1caba2._0x5a88b1)+_0x35aa51(_0x1caba2._0x598f2e,_0x1caba2._0x1422d2,_0x1caba2._0x14da87,_0x1caba2._0x11ab26)]={'videoMuted':!![],'audioMuted':!![]},this[_0x3ede6e(0x432,_0x1caba2._0x53ee1e,0x451,0x44a)+'ngesSubscr'+_0x35aa51(_0x1caba2._0x1c078a,_0x1caba2._0x5a6cd1,_0x1caba2._0x43b5fc,_0x1caba2._0x1a5875)]=new Set();}async[_0x484d45(0x37b,0x3ab,0x389,0x37d)+_0x1498c9(0x570,0x560,0x572,0x56f)](){const _0x53e80a={_0x2e65be:0x3d0,_0x31b9bc:0x3db,_0x762efb:0x3d4,_0x28e020:0x3d7,_0x136860:0x3f3,_0x5928ef:0x405,_0x221845:0x3c0,_0x1649d8:0x3d5,_0x4a5ae6:0x3f6,_0x530369:0x54c,_0x169f39:0x562,_0x114eac:0x555,_0x52fd9f:0x558,_0xc71214:0x546,_0x52f63b:0x3f0,_0x16c39d:0x3ec,_0x2f8462:0x57b,_0x57edbc:0x544,_0x447322:0x542,_0x5cc384:0x542,_0x4c52ec:0x415,_0x534982:0x569,_0x2a4cb2:0x55f,_0x3378cc:0x557,_0x5a3c0d:0x566,_0xe67c9e:0x557,_0x4044e6:0x546,_0x2e7654:0x54b,_0x441b41:0x573,_0x273810:0x576,_0x230a86:0x580,_0x5e800f:0x578,_0x36b6bc:0x572,_0x5a805a:0x55c,_0x2e96ef:0x3cc,_0xc88537:0x3c2,_0x2775ee:0x3d0,_0x57c3ed:0x549,_0x22651f:0x553,_0x4a7ed1:0x53f,_0x172ef1:0x533,_0xb7b414:0x3e2,_0x42920d:0x3d9,_0x2d5d2e:0x564,_0xa48064:0x565,_0x3e3475:0x562,_0x393d9d:0x54f,_0x2ce04c:0x546,_0x1c1731:0x523,_0x449005:0x3f5,_0x1f6af0:0x3f3,_0x5528c3:0x3d2,_0x5d8cb0:0x40c,_0x4bce40:0x53f,_0x1567fb:0x56a,_0x9a58d0:0x54e,_0x1db439:0x55f,_0x109157:0x580,_0x54664d:0x3d8,_0x22ef9d:0x3b9,_0x2c6bf2:0x3bc,_0x3b9844:0x3c8,_0x1b3b38:0x3be,_0x356b2e:0x57c,_0x2c702b:0x55e,_0x5952f4:0x588,_0x5c6ea6:0x572,_0x25d311:0x558,_0x38032b:0x554,_0x329bb5:0x3c8,_0x2f8b1f:0x3b7,_0xcc4918:0x394,_0x21b610:0x39f,_0x137808:0x59d,_0x20aecc:0x3d1,_0xa03fdc:0x3c2,_0x5d75e5:0x3e1,_0x564daa:0x3b1,_0x165e9c:0x3bc,_0x1b7be1:0x55d,_0x32a006:0x57e,_0x21e021:0x597,_0x1067a5:0x577,_0x479396:0x3b2,_0x4518f9:0x559,_0x16ac83:0x541,_0x55ae6c:0x559,_0x3b457b:0x574,_0x1340e0:0x585,_0x1f1d14:0x3c2,_0x5dd61a:0x3bc,_0xc81aa5:0x3af,_0x28a599:0x3b3,_0x16a945:0x3bf,_0xba4420:0x3b5,_0x1150ef:0x561,_0x5559f7:0x551,_0x4b1ae9:0x3d5,_0x13511b:0x3c4,_0xee5c93:0x3db,_0x3fd23f:0x3cf,_0xf9d2a1:0x3d3,_0x1fbe33:0x3c6,_0x1243c2:0x3c8,_0x365adf:0x40d,_0x448f73:0x3eb,_0x1d5ef8:0x412,_0x3ad102:0x55b,_0x390372:0x543,_0x5bae44:0x3d6,_0x123c41:0x3d4,_0x3eac92:0x3ca,_0x5139f7:0x3ed,_0x2aaf6f:0x3f3,_0x5d8437:0x3f7,_0x26cd1d:0x3ea,_0x33aff8:0x3d1,_0x4afe09:0x3e2,_0x48de00:0x568,_0x4453c4:0x53b,_0x242d27:0x3e8,_0x36306a:0x3d6,_0x1f8b3d:0x3f7,_0x279caa:0x3c8,_0x252ad5:0x3c9,_0x201711:0x3bf,_0x59c94d:0x57d,_0xb4e471:0x579,_0x2d2afe:0x53f,_0x56cb85:0x562,_0x226850:0x3f3,_0x530c93:0x3de,_0x15ca56:0x572,_0x138a3f:0x592,_0x346721:0x3d8,_0x4fc8e1:0x3f9,_0x43ec9a:0x580,_0x2e4d18:0x56d,_0x3041e6:0x580,_0x3d989b:0x3be,_0x3178b3:0x3b2,_0x46ec13:0x3ec,_0x4c8f3d:0x540,_0x2027bf:0x562,_0x1694c9:0x546,_0x16dbf8:0x531,_0x1ec3a9:0x3f6,_0x14dbf7:0x3dc,_0x1cba68:0x595,_0x1e5b0e:0x3a2,_0x16139e:0x399,_0x4885ea:0x572,_0x34409c:0x564,_0x2763bf:0x3bc,_0x213938:0x3b9,_0x37cf94:0x3ab,_0x33357f:0x3d6,_0x61de8f:0x403,_0x4e89de:0x3fe,_0x3964ac:0x3f0,_0x14bafb:0x409,_0x26f341:0x561,_0x21620b:0x566,_0x90a7a2:0x559,_0x3af962:0x3e0,_0x1b8af2:0x3d7,_0x477173:0x3ea},_0x22997a={_0x52560d:0x4b,_0x1bc4a7:0x1f3},_0x267a70={_0x11c0c1:0x1c,_0x2afb4a:0x1b2,_0x428812:0x141},_0x4bfb5c={_0x2e3746:0xe9,_0x2eb3f0:0x10a,_0xacc9db:0x53d,_0x47e5d6:0x51c},_0x3bdc04={_0x575b7f:0xfd,_0x581a8d:0x14a},_0x7bd914={_0x1cde67:0xd4,_0x25db27:0xb4,_0x1d9c7c:0xca,_0x2bed30:0xdd,_0x3c024d:0xb4,_0x164134:0xc4},_0x38397f={_0x4febfe:0x12a,_0x55087c:0x15c,_0x256fe5:0x63c},_0x4bab63={_0x5e487a:0x281},_0x493c0c={_0x3a20ba:0x494,_0x1a48a1:0x4ac,_0x279a59:0x4b6},_0x3b558e={_0x5bc1fc:0xae,_0x56d2b8:0xcf,_0x3d220e:0xcb,_0xb7076a:0xa8,_0xb60b27:0x8c,_0x1e6085:0xb6,_0x152769:0x9b,_0x43a7f5:0xba},_0x49f567={_0x57a4e7:0x111,_0x52e50e:0x44,_0x51a3bb:0x614},_0x27bb27=!deepEqual(this['cameraStre'+'amConstrai'+_0x530fcd(_0x53e80a._0x2e65be,_0x53e80a._0x31b9bc,0x3c0,_0x53e80a._0x762efb)][_0x530fcd(_0x53e80a._0x28e020,_0x53e80a._0x136860,0x3f9,_0x53e80a._0x5928ef)],this[_0x530fcd(_0x53e80a._0x221845,_0x53e80a._0x1649d8,0x3e2,_0x53e80a._0x4a5ae6)+_0x39ee41(0x557,_0x53e80a._0x530369,_0x53e80a._0x169f39,0x584)+_0x39ee41(_0x53e80a._0x114eac,_0x53e80a._0x52fd9f,_0x53e80a._0xc71214,0x526)][_0x530fcd(0x40b,0x3f3,_0x53e80a._0x52f63b,_0x53e80a._0x16c39d)]),_0x28184c=!deepEqual(this[_0x39ee41(0x594,_0x53e80a._0x2f8462,0x572,0x55b)+_0x39ee41(_0x53e80a._0x57edbc,0x560,_0x53e80a._0x447322,_0x53e80a._0x5cc384)+'nts'][_0x530fcd(_0x53e80a._0x4c52ec,_0x53e80a._0x4a5ae6,0x3fa,0x3f6)],this[_0x39ee41(_0x53e80a._0x534982,_0x53e80a._0x530369,_0x53e80a._0x2a4cb2,_0x53e80a._0x3378cc)+'eamConstra'+_0x39ee41(_0x53e80a._0x5a3c0d,_0x53e80a._0xe67c9e,_0x53e80a._0x4044e6,_0x53e80a._0x2e7654)][_0x39ee41(_0x53e80a._0x441b41,_0x53e80a._0x273810,_0x53e80a._0x230a86,0x56c)]);if(_0x27bb27){this[_0x39ee41(0x562,_0x53e80a._0x5e800f,_0x53e80a._0x36b6bc,_0x53e80a._0x5a805a)+'am'][_0x530fcd(_0x53e80a._0x2e96ef,_0x53e80a._0xc88537,_0x53e80a._0x762efb,_0x53e80a._0x2775ee)+_0x39ee41(0x54b,_0x53e80a._0x57c3ed,0x55b,_0x53e80a._0x22651f)]()[_0x39ee41(_0x53e80a._0x4a7ed1,0x549,0x541,_0x53e80a._0x172ef1)](_0x266cb4=>{const _0x136319={_0x30f4de:0xae};_0x266cb4[_0x1b5702(-_0x3b558e._0x5bc1fc,-_0x3b558e._0x56d2b8,-_0x3b558e._0x3d220e,-_0x3b558e._0xb7076a)]();function _0x1b5702(_0x2c5035,_0x1a335f,_0x118c4c,_0x237196){return _0x39ee41(_0x2c5035-_0x49f567._0x57a4e7,_0x1a335f-_0x49f567._0x52e50e,_0x2c5035- -_0x49f567._0x51a3bb,_0x1a335f);}function _0x2ca641(_0x2f9df8,_0x288377,_0x557565,_0x1b6ba3){return _0x39ee41(_0x2f9df8-0x11c,_0x288377-_0x136319._0x30f4de,_0x1b6ba3- -0x566,_0x2f9df8);}this[_0x1b5702(-0xa2,-_0x3b558e._0xb60b27,-_0x3b558e._0x1e6085,-0xb6)+'am'][_0x1b5702(-_0x3b558e._0x152769,-_0x3b558e._0x43a7f5,-0xab,-0xae)+'k'](_0x266cb4);});if(this[_0x530fcd(0x3d4,_0x53e80a._0x1649d8,_0x53e80a._0xb7b414,_0x53e80a._0x42920d)+_0x39ee41(_0x53e80a._0x2d5d2e,_0x53e80a._0xa48064,_0x53e80a._0x3e3475,_0x53e80a._0x393d9d)+_0x39ee41(0x54a,0x568,_0x53e80a._0x2ce04c,_0x53e80a._0x1c1731)][_0x530fcd(_0x53e80a._0x449005,_0x53e80a._0x1f6af0,_0x53e80a._0x5528c3,_0x53e80a._0x5d8cb0)]){const _0x4708da=await navigator['mediaDevic'+'es'][_0x39ee41(_0x53e80a._0x4bce40,0x578,0x561,_0x53e80a._0x1567fb)+'ia']({'video':this[_0x39ee41(_0x53e80a._0x57edbc,_0x53e80a._0x9a58d0,_0x53e80a._0x1db439,_0x53e80a._0x109157)+_0x530fcd(_0x53e80a._0x54664d,0x3d8,_0x53e80a._0x22ef9d,0x3ce)+_0x530fcd(0x3b4,_0x53e80a._0x2c6bf2,_0x53e80a._0x3b9844,_0x53e80a._0x1b3b38)][_0x39ee41(_0x53e80a._0x356b2e,_0x53e80a._0x2c702b,0x57d,_0x53e80a._0x5952f4)],'audio':![]});_0x4708da[_0x39ee41(_0x53e80a._0x5c6ea6,_0x53e80a._0x25d311,_0x53e80a._0x5a805a,_0x53e80a._0x38032b)]()[_0x530fcd(_0x53e80a._0x329bb5,_0x53e80a._0x2f8b1f,_0x53e80a._0xcc4918,_0x53e80a._0x21b610)](_0x16f8b5=>{const _0x59f457={_0x3232d2:0x1dc,_0x503ea1:0xd0,_0x3ab87a:0x13b};function _0x45662e(_0x3f95ea,_0x569312,_0x27bcd4,_0x2a5892){return _0x530fcd(_0x3f95ea-_0x59f457._0x3232d2,_0x2a5892-_0x59f457._0x503ea1,_0x27bcd4-_0x59f457._0x3ab87a,_0x27bcd4);}this['cameraStre'+'am'][_0x45662e(_0x493c0c._0x3a20ba,0x4b0,_0x493c0c._0x1a48a1,_0x493c0c._0x279a59)](_0x16f8b5);}),this[_0x39ee41(0x570,0x568,0x57f,_0x53e80a._0x137808)]=_0x4708da[_0x530fcd(_0x53e80a._0x20aecc,_0x53e80a._0xa03fdc,0x3a2,_0x53e80a._0x5d75e5)+_0x530fcd(_0x53e80a._0x564daa,0x3d1,_0x53e80a._0x165e9c,0x3bf)]()[-0xf2f+-0x16ca*0x1+0x25f9];}else this[_0x39ee41(0x5a1,_0x53e80a._0x1b7be1,0x57f,_0x53e80a._0x32a006)]=null;}if(_0x28184c){this['cameraStre'+'am'][_0x39ee41(_0x53e80a._0x21e021,0x571,_0x53e80a._0x1067a5,0x573)+_0x530fcd(_0x53e80a._0x479396,_0x53e80a._0x20aecc,0x3c0,_0x53e80a._0x16c39d)]()[_0x39ee41(0x527,_0x53e80a._0x4518f9,_0x53e80a._0x16ac83,0x52c)](_0x3883d8=>{_0x3883d8[_0x3e6170(-0xd6,-_0x7bd914._0x1cde67,-_0x7bd914._0x25db27,-0xd9)]();function _0x1603f9(_0x56e676,_0x29773b,_0x340ce7,_0x20b7ae){return _0x39ee41(_0x56e676-0x12a,_0x29773b-0x1a4,_0x340ce7- -_0x4bab63._0x5e487a,_0x29773b);}function _0x3e6170(_0x385f5e,_0x2586aa,_0x2709f9,_0x4e4535){return _0x39ee41(_0x385f5e-_0x38397f._0x4febfe,_0x2586aa-_0x38397f._0x55087c,_0x385f5e- -_0x38397f._0x256fe5,_0x4e4535);}this[_0x3e6170(-_0x7bd914._0x1d9c7c,-0xde,-0xb5,-_0x7bd914._0x2bed30)+'am'][_0x3e6170(-0xc3,-0xdc,-_0x7bd914._0x3c024d,-_0x7bd914._0x164134)+'k'](_0x3883d8);});if(this[_0x39ee41(_0x53e80a._0x38032b,_0x53e80a._0x57edbc,_0x53e80a._0x1db439,_0x53e80a._0x55ae6c)+_0x39ee41(_0x53e80a._0x3b457b,0x581,0x562,_0x53e80a._0x1340e0)+_0x530fcd(_0x53e80a._0x1f1d14,_0x53e80a._0x5dd61a,_0x53e80a._0xc81aa5,_0x53e80a._0x28a599)]['audio']){const _0x51340f=await navigator[_0x530fcd(_0x53e80a._0x16a945,0x3c6,_0x53e80a._0x1f1d14,_0x53e80a._0xba4420)+'es'][_0x39ee41(0x57c,_0x53e80a._0x57edbc,_0x53e80a._0x1150ef,_0x53e80a._0x5559f7)+'ia']({'video':![],'audio':this[_0x530fcd(0x3f5,_0x53e80a._0x4b1ae9,_0x53e80a._0x13511b,_0x53e80a._0xee5c93)+_0x530fcd(_0x53e80a._0x3fd23f,_0x53e80a._0x54664d,_0x53e80a._0xf9d2a1,0x3d9)+_0x530fcd(_0x53e80a._0x1fbe33,_0x53e80a._0x2c6bf2,_0x53e80a._0x1243c2,0x3a6)][_0x530fcd(_0x53e80a._0x365adf,_0x53e80a._0x4a5ae6,_0x53e80a._0x448f73,_0x53e80a._0x1d5ef8)]});_0x51340f['getTracks']()[_0x39ee41(0x526,_0x53e80a._0x3ad102,0x541,_0x53e80a._0x390372)](_0x27c515=>{const _0x51c515={_0x4f70f4:0x489};function _0x200bac(_0x12c829,_0x2d5fae,_0xf12c39,_0x3b8213){return _0x530fcd(_0x12c829-_0x3bdc04._0x575b7f,_0x12c829-_0x3bdc04._0x581a8d,_0xf12c39-0xff,_0x3b8213);}function _0x5aae9c(_0x1d8287,_0x3e0339,_0x44a28,_0x18dc7a){return _0x39ee41(_0x1d8287-0x18d,_0x3e0339-0x1b3,_0x3e0339- -_0x51c515._0x4f70f4,_0x44a28);}this[_0x5aae9c(0xfb,_0x4bfb5c._0x2e3746,_0x4bfb5c._0x2eb3f0,0x102)+'am'][_0x200bac(0x530,_0x4bfb5c._0xacc9db,0x549,_0x4bfb5c._0x47e5d6)](_0x27c515);}),this[_0x530fcd(_0x53e80a._0x5bae44,_0x53e80a._0x123c41,_0x53e80a._0x3eac92,0x3d2)]=_0x51340f[_0x530fcd(_0x53e80a._0x5528c3,_0x53e80a._0x5139f7,_0x53e80a._0x2aaf6f,_0x53e80a._0x5d8437)+_0x530fcd(_0x53e80a._0x26cd1d,_0x53e80a._0x33aff8,_0x53e80a._0x4afe09,0x3eb)]()[0x232a+-0xcc2*-0x1+0x2*-0x17f6];}else this[_0x39ee41(_0x53e80a._0x3ad102,_0x53e80a._0x48de00,_0x53e80a._0x2c702b,_0x53e80a._0x4453c4)]=null;}function _0x530fcd(_0x319193,_0x2ea207,_0x34cfc8,_0x526220){return _0x1498c9(_0x319193-_0x267a70._0x11c0c1,_0x526220,_0x2ea207- -_0x267a70._0x2afb4a,_0x526220-_0x267a70._0x428812);}this[_0x530fcd(0x401,_0x53e80a._0x242d27,_0x53e80a._0x36306a,_0x53e80a._0x1f8b3d)+'amConstrai'+_0x530fcd(_0x53e80a._0x279caa,_0x53e80a._0xee5c93,_0x53e80a._0x252ad5,_0x53e80a._0x201711)][_0x39ee41(_0x53e80a._0x1567fb,0x55b,_0x53e80a._0x59c94d,_0x53e80a._0xb4e471)]=this['_cameraStr'+_0x39ee41(_0x53e80a._0x2d5d2e,_0x53e80a._0x2d2afe,_0x53e80a._0x56cb85,_0x53e80a._0x273810)+'intsWanted'][_0x530fcd(0x40d,_0x53e80a._0x226850,_0x53e80a._0x530c93,0x407)],this[_0x39ee41(_0x53e80a._0x356b2e,_0x53e80a._0x3b457b,_0x53e80a._0x15ca56,_0x53e80a._0x138a3f)+'amConstrai'+_0x530fcd(_0x53e80a._0x2e96ef,_0x53e80a._0x31b9bc,_0x53e80a._0x346721,_0x53e80a._0x4fc8e1)][_0x39ee41(_0x53e80a._0x43ec9a,_0x53e80a._0x2e4d18,_0x53e80a._0x3041e6,0x59e)]=this[_0x530fcd(_0x53e80a._0x3d989b,0x3d5,_0x53e80a._0x3178b3,_0x53e80a._0x46ec13)+_0x530fcd(_0x53e80a._0x201711,0x3d8,_0x53e80a._0x4fc8e1,0x3e5)+_0x39ee41(_0x53e80a._0x4c8f3d,_0x53e80a._0x2027bf,_0x53e80a._0x1694c9,_0x53e80a._0x16dbf8)][_0x530fcd(_0x53e80a._0x1649d8,_0x53e80a._0x1ec3a9,0x3ff,_0x53e80a._0x14dbf7)],this[_0x39ee41(0x562,_0x53e80a._0x1cba68,_0x53e80a._0x15ca56,_0x53e80a._0x1067a5)+_0x530fcd(_0x53e80a._0x1e5b0e,0x3b9,_0x53e80a._0x16139e,0x397)]['videoMuted']=this[_0x39ee41(_0x53e80a._0x4885ea,0x590,0x57f,_0x53e80a._0x34409c)]===null;function _0x39ee41(_0x54ab9b,_0x489d2a,_0x489979,_0xb363d0){return _0x484d45(_0x54ab9b-_0x22997a._0x52560d,_0x489d2a-0xed,_0x489979-_0x22997a._0x1bc4a7,_0xb363d0);}this['cameraStre'+_0x530fcd(_0x53e80a._0x2763bf,_0x53e80a._0x213938,_0x53e80a._0x37cf94,_0x53e80a._0x33357f)]['audioMuted']=this['audioTrack']===null;const _0x17b143={...this[_0x530fcd(0x3d5,_0x53e80a._0x242d27,_0x53e80a._0x61de8f,_0x53e80a._0x4e89de)+'amStatus']};for(const _0x4514d0 of this['_cameraCha'+'ngesSubscr'+_0x530fcd(_0x53e80a._0x5928ef,0x3f7,_0x53e80a._0x3964ac,_0x53e80a._0x14bafb)][_0x39ee41(_0x53e80a._0x3b457b,_0x53e80a._0x26f341,_0x53e80a._0x32a006,_0x53e80a._0x36b6bc)]()){_0x4514d0[_0x39ee41(_0x53e80a._0x21620b,_0x53e80a._0x90a7a2,_0x53e80a._0x441b41,_0x53e80a._0x356b2e)](_0x17b143);}this[_0x530fcd(_0x53e80a._0x33aff8,_0x53e80a._0x3af962,0x3cc,_0x53e80a._0x1b8af2)](LOCAL_CHANGE_EVENTS[_0x530fcd(0x3ca,0x3d0,_0x53e80a._0x477173,_0x53e80a._0x3af962)],_0x27bb27,_0x28184c,_0x17b143);}async[_0x1498c9(0x593,0x584,0x579,0x57d)+'Tracks'](){const _0x2185fe={_0x23b529:0x4f8,_0x52967e:0x4dc,_0x1a4ef4:0x50d,_0x2609d8:0x4ea,_0x434786:0x305,_0x17b26b:0x315,_0x2026ac:0x334,_0x529f15:0x4fa,_0x4b9d1e:0x4ff,_0x19cbe5:0x50e,_0x40bed6:0x4e3,_0x584848:0x519,_0x10f191:0x511,_0x2dc36f:0x4fa,_0x2e09cc:0x324,_0x5a9002:0x325,_0x1597d0:0x308,_0xe799ee:0x321,_0x51e973:0x309,_0x3548e4:0x308,_0x4f50ba:0x303,_0x95a5b4:0x501,_0x7dc597:0x52b,_0x49316f:0x50e,_0x12a24c:0x31c,_0x4b8d04:0x2fc,_0x23c9f5:0x317,_0x2ba152:0x32a,_0x38120e:0x32b,_0x28c8c6:0x31f,_0x248dc4:0x325,_0x39a523:0x31e,_0x27433b:0x33d,_0x1c15b1:0x4f4,_0x529933:0x4d3,_0x569399:0x4ec,_0x30c4eb:0x4d7,_0x479b3e:0x361,_0x3eface:0x340,_0x5314d3:0x35c,_0x5f5153:0x344,_0x59fd76:0x346,_0x7b4e2b:0x324,_0x4942ba:0x343,_0x266d8a:0x32c,_0x8f6e02:0x33b,_0x1e70dd:0x337,_0xfabe2a:0x4d0,_0x3a51fb:0x4d2,_0x1390c8:0x500,_0x12f75f:0x4f3,_0xd3bc5f:0x4b4,_0x9537cd:0x4f8,_0x35ae12:0x34e,_0x152389:0x32b,_0x5bbda3:0x317,_0x48276c:0x325,_0x43a3af:0x304,_0xf7923e:0x2e9,_0x1c0d37:0x4de,_0x5cce00:0x4e2,_0x3a6228:0x33c,_0x170022:0x315,_0xdb80f9:0x342,_0x3d4490:0x518,_0x3dbf65:0x4f6,_0x43c8ff:0x362,_0x1afa0b:0x33d,_0x81ddce:0x333,_0x5157bb:0x326,_0x1cd99b:0x35a,_0x2963b6:0x4f1,_0x5b3939:0x4fe,_0xa7149a:0x4fd,_0x102bf1:0x4ea,_0x1ffc9f:0x318,_0x34f878:0x306,_0x15107f:0x2f4,_0x5ac075:0x2f5,_0x961c14:0x4e5,_0x3be7fc:0x4e7,_0x37e78e:0x4f9,_0x593c9b:0x506,_0x9a4e3f:0x4de,_0xc5a9fa:0x4d4,_0x8f8270:0x4ed,_0x5ca819:0x4d5,_0x362dda:0x335,_0x519448:0x344,_0x383066:0x343,_0x1718f5:0x353,_0x41f795:0x50d,_0x1fb43f:0x4df,_0x6b525f:0x4fb,_0x12ab4f:0x30e,_0x4d4997:0x308,_0x432a66:0x330},_0x4ebf87={_0x3ae6c0:0x148,_0x275899:0x265},_0x4b9d65={_0x3066d3:0x1ad,_0x31699e:0x1a9,_0x5e3cc5:0x1a6,_0x345412:0xb6},_0x3f73c7={_0x448724:0x3c7,_0x3d7d19:0x3bb,_0x16a4c3:0x3c6,_0x4d5946:0x3c4,_0x5760e0:0x422,_0x532692:0x43e,_0x2d1b90:0x41b},_0x14364f={_0x396bdc:0x178,_0x6d96ed:0x1},_0x323e9c={_0x360879:0x162,_0x6a26d4:0xef},_0x363e3e={_0xc6e079:0x95,_0x20baf0:0x97,_0x5cf6c2:0xc};function _0x139077(_0x739ff3,_0x3e8fcb,_0x2dba95,_0x3a8223){return _0x1498c9(_0x739ff3-_0x363e3e._0xc6e079,_0x3e8fcb,_0x3a8223- -_0x363e3e._0x20baf0,_0x3a8223-_0x363e3e._0x5cf6c2);}const _0x4439de=!deepEqual(this[_0x139077(_0x2185fe._0x23b529,_0x2185fe._0x52967e,_0x2185fe._0x1a4ef4,_0x2185fe._0x2609d8)+'amConstrai'+_0x5d7b81(_0x2185fe._0x434786,0x328,_0x2185fe._0x17b26b,_0x2185fe._0x2026ac)][_0x139077(0x51f,_0x2185fe._0x529f15,_0x2185fe._0x4b9d1e,_0x2185fe._0x19cbe5)],this[_0x139077(_0x2185fe._0x40bed6,_0x2185fe._0x584848,_0x2185fe._0x10f191,_0x2185fe._0x2dc36f)+_0x5d7b81(_0x2185fe._0x2e09cc,_0x2185fe._0x5a9002,0x30e,_0x2185fe._0x1597d0)+_0x5d7b81(_0x2185fe._0xe799ee,_0x2185fe._0x51e973,_0x2185fe._0x3548e4,_0x2185fe._0x4f50ba)][_0x139077(_0x2185fe._0x95a5b4,_0x2185fe._0x7dc597,0x520,_0x2185fe._0x49316f)]);if(_0x4439de){this[_0x5d7b81(0x32c,_0x2185fe._0x12a24c,_0x2185fe._0x4b8d04,_0x2185fe._0x23c9f5)+'am'][_0x5d7b81(_0x2185fe._0x2ba152,0x30f,_0x2185fe._0x38120e,0x32d)+'acks']()['forEach'](_0x2cdc0e=>{function _0xb60bcb(_0x47df8d,_0x356f39,_0x37d0dc,_0x334524){return _0x139077(_0x47df8d-0xb,_0x356f39,_0x37d0dc-_0x323e9c._0x360879,_0x334524- -_0x323e9c._0x6a26d4);}_0x2cdc0e[_0x4571d8(_0x3f73c7._0x448724,_0x3f73c7._0x3d7d19,_0x3f73c7._0x16a4c3,_0x3f73c7._0x4d5946)]();function _0x4571d8(_0x52b29b,_0x58f947,_0x296a1b,_0x4b7b2a){return _0x139077(_0x52b29b-_0x14364f._0x396bdc,_0x52b29b,_0x296a1b-_0x14364f._0x6d96ed,_0x58f947- -0x13c);}this['screenStre'+'am'][_0xb60bcb(_0x3f73c7._0x5760e0,_0x3f73c7._0x532692,0x434,_0x3f73c7._0x2d1b90)+'k'](_0x2cdc0e);});if(this['_screenStr'+_0x5d7b81(_0x2185fe._0x28c8c6,_0x2185fe._0x248dc4,_0x2185fe._0x39a523,_0x2185fe._0x27433b)+_0x139077(_0x2185fe._0x1c15b1,_0x2185fe._0x529933,_0x2185fe._0x569399,_0x2185fe._0x30c4eb)][_0x5d7b81(_0x2185fe._0x479b3e,_0x2185fe._0x3eface,_0x2185fe._0x5314d3,_0x2185fe._0x5f5153)]){const _0x39926f=await navigator['mediaDevic'+'es'][_0x5d7b81(_0x2185fe._0x59fd76,_0x2185fe._0x7b4e2b,0x312,0x32c)+'ia']({'video':this[_0x5d7b81(_0x2185fe._0x4942ba,_0x2185fe._0x266d8a,_0x2185fe._0x8f6e02,_0x2185fe._0x1e70dd)+_0x139077(_0x2185fe._0xfabe2a,_0x2185fe._0x3a51fb,_0x2185fe._0x1390c8,_0x2185fe._0x12f75f)+_0x139077(0x4c3,_0x2185fe._0xd3bc5f,_0x2185fe._0x9537cd,_0x2185fe._0x30c4eb)][_0x5d7b81(_0x2185fe._0x35ae12,_0x2185fe._0x3eface,0x33e,_0x2185fe._0x152389)],'audio':![]});_0x39926f[_0x5d7b81(_0x2185fe._0x5bbda3,_0x2185fe._0x28c8c6,_0x2185fe._0x51e973,_0x2185fe._0x48276c)]()[_0x5d7b81(0x303,_0x2185fe._0x43a3af,_0x2185fe._0xf7923e,0x2fd)](_0x162e03=>{const _0x214caa={_0x194325:0x54,_0xcd2364:0x124,_0x8a0db3:0x33d},_0x408237={_0xa008ea:0x1e8,_0x51c030:0x1af,_0x80d277:0x5b7};function _0x54554a(_0x3ffb74,_0x4adc27,_0x23d91b,_0x2a2e22){return _0x139077(_0x3ffb74-_0x408237._0xa008ea,_0x4adc27,_0x23d91b-_0x408237._0x51c030,_0x3ffb74- -_0x408237._0x80d277);}function _0x36a00a(_0x2522a1,_0x4ea720,_0x24ed29,_0x13f66d){return _0x139077(_0x2522a1-_0x214caa._0x194325,_0x24ed29,_0x24ed29-_0x214caa._0xcd2364,_0x2522a1- -_0x214caa._0x8a0db3);}this[_0x36a00a(_0x4b9d65._0x3066d3,0x1c7,_0x4b9d65._0x31699e,_0x4b9d65._0x5e3cc5)+'am'][_0x54554a(-_0x4b9d65._0x345412,-0xa4,-0x9c,-0xb7)](_0x162e03);}),this[_0x139077(_0x2185fe._0x1c0d37,_0x2185fe._0x5cce00,0x510,0x4f9)+'k']=_0x39926f['getVideoTr'+_0x5d7b81(_0x2185fe._0x3a6228,_0x2185fe._0x39a523,_0x2185fe._0x170022,0x339)]()[-0x311+0x1c67+-0x1956];}else this[_0x5d7b81(0x324,_0x2185fe._0x152389,_0x2185fe._0xdb80f9,0x326)+'k']=null;}this['screenStre'+'amConstrai'+_0x139077(_0x2185fe._0x1a4ef4,0x4fe,_0x2185fe._0x3d4490,_0x2185fe._0x3dbf65)][_0x5d7b81(_0x2185fe._0x2026ac,_0x2185fe._0x3eface,_0x2185fe._0x43c8ff,0x34d)]=this[_0x5d7b81(_0x2185fe._0x1afa0b,0x32c,0x34e,_0x2185fe._0x23c9f5)+_0x5d7b81(_0x2185fe._0x81ddce,_0x2185fe._0x48276c,_0x2185fe._0x5157bb,_0x2185fe._0x8f6e02)+'intsWanted'][_0x5d7b81(_0x2185fe._0x1cd99b,0x340,0x33e,0x334)],this[_0x139077(_0x2185fe._0x2963b6,_0x2185fe._0x5b3939,_0x2185fe._0xa7149a,_0x2185fe._0x102bf1)+_0x5d7b81(_0x2185fe._0x1ffc9f,_0x2185fe._0x34f878,_0x2185fe._0x15107f,_0x2185fe._0x5ac075)][_0x139077(_0x2185fe._0x19cbe5,0x504,_0x2185fe._0x961c14,_0x2185fe._0x4b9d1e)]=this[_0x139077(_0x2185fe._0x3be7fc,0x50d,_0x2185fe._0x4b9d1e,_0x2185fe._0x37e78e)+'k']===null;function _0x5d7b81(_0x303450,_0x57c3f2,_0x537dc1,_0x1dc644){return _0x1498c9(_0x303450-_0x4ebf87._0x3ae6c0,_0x303450,_0x57c3f2- -_0x4ebf87._0x275899,_0x1dc644-0xe8);}const _0x3d48b2={...this[_0x139077(0x504,_0x2185fe._0x593c9b,_0x2185fe._0x9a4e3f,0x4ea)+_0x139077(_0x2185fe._0xc5a9fa,_0x2185fe._0x8f8270,_0x2185fe._0x5ca819,_0x2185fe._0xc5a9fa)]};for(const _0x109580 of this['_screenCha'+'ngesSubscr'+_0x5d7b81(_0x2185fe._0x362dda,_0x2185fe._0x519448,_0x2185fe._0x383066,_0x2185fe._0x1718f5)]['values']()){_0x109580['push'](_0x3d48b2);}this[_0x139077(_0x2185fe._0x41f795,_0x2185fe._0x52967e,_0x2185fe._0x1fb43f,_0x2185fe._0x6b525f)](LOCAL_CHANGE_EVENTS[_0x5d7b81(0x313,_0x2185fe._0x12ab4f,_0x2185fe._0x4d4997,_0x2185fe._0x432a66)],_0x4439de,_0x3d48b2);}[_0x484d45(0x366,0x36a,0x355,0x365)](_0x3de535){const _0xc8e955={_0xda3abd:0x90,_0x51657c:0x78,_0x390f02:0x85,_0x16f526:0xb7,_0x40d4b4:0xa0,_0x3b340a:0xb4,_0x3cb57c:0xa7,_0x493c16:0x78,_0x580aa1:0x71,_0x2f36d8:0x9c,_0x3663fd:0xba,_0x2ba385:0x99,_0x3080d3:0x6e,_0x375bc5:0x9f,_0x42e794:0x7c,_0x4d42f3:0x7d,_0x2a8f95:0xb9,_0x1e611f:0xc4,_0x1db8bf:0x74,_0x483b69:0x99,_0x56ac90:0x8c,_0x48eed7:0x7d,_0x7d833f:0xc1,_0x3a3054:0xf3,_0x5bc902:0xde,_0x59c4ce:0xdc,_0xff1993:0xe9,_0x3e0cc6:0xd8,_0x36f02d:0xdf},_0x3a52e7={_0x22c200:0xa2,_0x599bde:0x6b},_0x27f8df={_0xeee005:0xd7,_0x10516f:0x4fd,_0x253e90:0xa3};if(_0x3de535===STREAM_TYPE[_0x5977cf(_0xc8e955._0xda3abd,0x6e,_0xc8e955._0x51657c,_0xc8e955._0x390f02)]){if(this[_0x6d9920(-_0xc8e955._0x16f526,-_0xc8e955._0x40d4b4,-_0xc8e955._0x3b340a,-_0xc8e955._0x3cb57c)+_0x5977cf(0x63,_0xc8e955._0x493c16,_0xc8e955._0x580aa1,0x7d)])return;return this[_0x6d9920(-_0xc8e955._0x2f36d8,-_0xc8e955._0x3663fd,-_0xc8e955._0x3b340a,-_0xc8e955._0x2ba385)+_0x5977cf(_0xc8e955._0x3080d3,_0xc8e955._0x375bc5,_0xc8e955._0x42e794,_0xc8e955._0x4d42f3)]=!![],this[_0x6d9920(-_0xc8e955._0x2a8f95,-_0xc8e955._0x3cb57c,-0xb4,-_0xc8e955._0x1e611f)+'am']['id'];}function _0x5977cf(_0x28b9b5,_0x4136ce,_0x5c7487,_0x5c995c){return _0x1498c9(_0x28b9b5-_0x27f8df._0xeee005,_0x4136ce,_0x5c995c- -_0x27f8df._0x10516f,_0x5c995c-_0x27f8df._0x253e90);}if(_0x3de535===STREAM_TYPE['SCREEN']){if(this['screenStre'+_0x5977cf(_0xc8e955._0x1db8bf,_0xc8e955._0x483b69,_0xc8e955._0x56ac90,_0xc8e955._0x48eed7)])return;return this['screenStre'+_0x6d9920(-_0xc8e955._0x7d833f,-0xd4,-0xd4,-0xb6)]=!![],this['screenStre'+'am']['id'];}function _0x6d9920(_0x25e49c,_0x3ca0b1,_0x5932b2,_0x39d66e){return _0x484d45(_0x25e49c-_0x3a52e7._0x22c200,_0x3ca0b1-_0x3a52e7._0x599bde,_0x5932b2- -0x433,_0x39d66e);}throw new Error(_0x6d9920(-_0xc8e955._0x3a3054,-0xfc,-_0xc8e955._0x5bc902,-_0xc8e955._0x59c4ce)+_0x6d9920(-0xd4,-_0xc8e955._0xff1993,-_0xc8e955._0x3e0cc6,-_0xc8e955._0x36f02d)+'ream\x20type\x20'+'('+_0x3de535+')');}[_0x484d45(0x370,0x373,0x388,0x39a)+_0x484d45(0x381,0x359,0x378,0x375)+'ts'](_0x6702e1,_0x1055bb){const _0x5a3e64={_0xc4f59d:0x3a0,_0xf658d5:0x3a6,_0x23dcde:0x3bc,_0x34299e:0x3c4,_0x4f8df1:0x37a,_0x186122:0x384,_0x24e69b:0x36b,_0x3a787a:0x3a3,_0x157919:0x3b1,_0x56699e:0x3b3,_0xcc0b26:0x392,_0x23ac8e:0x39b,_0x1710f2:0x3a1,_0x1528fb:0x3a7,_0x49fa30:0x393,_0x2e3718:0x3ad,_0x520d82:0x396,_0x3944df:0x37a,_0x2891f8:0x35f,_0x202af4:0x39f,_0x3d8e75:0x38d,_0x59caef:0x36a,_0xbd5c0a:0x3a5,_0x5e7c04:0x38c,_0x223180:0x381,_0x2df600:0x386,_0x14e9eb:0x398,_0x2b6d1a:0x397,_0x54f121:0x3a5,_0x15eca6:0x208,_0x33b869:0x21e,_0x771f9:0x20d,_0xace40e:0x3ce,_0x2b4836:0x3a9,_0xa6170e:0x3c2,_0x281afc:0x39e,_0x5642f7:0x3b1,_0xa4e3a3:0x3be,_0x5183a0:0x22e,_0x180c47:0x238,_0x222d2e:0x21b,_0x2a335c:0x23c,_0x5664e9:0x20b,_0x387be9:0x221,_0x259215:0x229,_0x29644a:0x21f,_0x475b8e:0x226,_0x13ad14:0x218,_0x1e33a0:0x3a9,_0x64ea06:0x3a2,_0x39c4d2:0x389},_0x1179c0={_0x20f952:0x144,_0x195bce:0x371,_0x501013:0x87},_0x1fdd4a={_0x51c992:0xd8,_0x25015a:0x15c,_0xc7b518:0x27};function _0x39412f(_0x2ed3f5,_0x350262,_0x1d989c,_0x11db0a){return _0x484d45(_0x2ed3f5-_0x1fdd4a._0x51c992,_0x350262-_0x1fdd4a._0x25015a,_0x350262-_0x1fdd4a._0xc7b518,_0x1d989c);}if(_0x6702e1===this[_0x39412f(_0x5a3e64._0xc4f59d,_0x5a3e64._0xf658d5,_0x5a3e64._0x23dcde,_0x5a3e64._0x34299e)+'am']['id'])return this['_cameraStr'+'eamConstra'+_0x39412f(0x35c,_0x5a3e64._0x4f8df1,_0x5a3e64._0x186122,_0x5a3e64._0x24e69b)][_0x39412f(_0x5a3e64._0x3a787a,_0x5a3e64._0x157919,_0x5a3e64._0x56699e,_0x5a3e64._0xcc0b26)]=_0x1055bb[_0x39412f(0x397,0x3b1,_0x5a3e64._0x23ac8e,_0x5a3e64._0x1710f2)],this[_0x39412f(_0x5a3e64._0x1528fb,_0x5a3e64._0x49fa30,0x375,0x386)+_0x39412f(_0x5a3e64._0x2e3718,_0x5a3e64._0x520d82,0x37b,0x3b4)+_0x39412f(_0x5a3e64._0x3944df,0x37a,0x385,_0x5a3e64._0x2891f8)]['audio']=_0x1055bb['audio'],this[_0x39412f(_0x5a3e64._0x202af4,0x389,_0x5a3e64._0x3d8e75,_0x5a3e64._0x59caef)+'SetCameraT'+_0x39412f(_0x5a3e64._0xbd5c0a,_0x5a3e64._0x5e7c04,_0x5a3e64._0x223180,_0x5a3e64._0x2df600)]();function _0x3ab269(_0x4071e1,_0x4c6c6e,_0x501138,_0x322316){return _0x1498c9(_0x4071e1-_0x1179c0._0x20f952,_0x4c6c6e,_0x501138- -_0x1179c0._0x195bce,_0x322316-_0x1179c0._0x501013);}if(_0x6702e1===this[_0x39412f(_0x5a3e64._0x14e9eb,0x38d,_0x5a3e64._0x2b6d1a,_0x5a3e64._0x54f121)+'am']['id'])return this['_screenStr'+'eamConstra'+_0x3ab269(_0x5a3e64._0x15eca6,_0x5a3e64._0x33b869,0x1fd,_0x5a3e64._0x771f9)][_0x39412f(_0x5a3e64._0xace40e,0x3b1,_0x5a3e64._0x2b4836,_0x5a3e64._0xa6170e)]=_0x1055bb[_0x39412f(_0x5a3e64._0x281afc,_0x5a3e64._0x5642f7,0x3c2,_0x5a3e64._0xa4e3a3)],this['_debounced'+_0x3ab269(_0x5a3e64._0x5183a0,_0x5a3e64._0x180c47,_0x5a3e64._0x222d2e,_0x5a3e64._0x2a335c)+_0x3ab269(0x21c,0x210,0x20f,_0x5a3e64._0x5664e9)]();console[_0x3ab269(_0x5a3e64._0x387be9,_0x5a3e64._0x259215,0x20e,0x1ec)](_0x3ab269(_0x5a3e64._0x29644a,_0x5a3e64._0x475b8e,0x232,_0x5a3e64._0x13ad14)+'mConstrain'+_0x39412f(_0x5a3e64._0x202af4,_0x5a3e64._0x1e33a0,_0x5a3e64._0x64ea06,_0x5a3e64._0x39c4d2)+'stream\x20id\x20'+'('+_0x6702e1+')');}[_0x484d45(0x346,0x36c,0x354,0x354)+'ct'](_0x277b97){const _0xe0366a={_0x45e06d:0x128,_0x766da6:0x12a,_0x2779bd:0x120,_0x522e54:0x132,_0x467a71:0x148},_0x2d02d9={_0x4139cf:0x67,_0x23d44f:0x4a9},_0x1c84b7={_0xef6681:0x1f0,_0x5b1a36:0x716,_0x3bbc08:0x3};function _0x132557(_0xe404f5,_0xddd16c,_0x36f831,_0x3340de){return _0x1498c9(_0xe404f5-_0x1c84b7._0xef6681,_0xddd16c,_0x3340de- -_0x1c84b7._0x5b1a36,_0x3340de-_0x1c84b7._0x3bbc08);}function _0x22926c(_0x1864b0,_0x1f380d,_0x345181,_0x26d7c7){return _0x484d45(_0x1864b0-0x1a8,_0x1f380d-_0x2d02d9._0x4139cf,_0x26d7c7- -_0x2d02d9._0x23d44f,_0x345181);}if(_0x277b97===this['cameraStre'+'am']['id'])return this[_0x22926c(-_0xe0366a._0x45e06d,-0x134,-0x11e,-_0xe0366a._0x766da6)+'am'];if(_0x277b97===this['screenStre'+'am']['id'])return this[_0x22926c(-_0xe0366a._0x2779bd,-_0xe0366a._0x522e54,-_0xe0366a._0x467a71,-0x143)+'am'];return null;}['closeStrea'+'m'](_0x2f7b05){const _0x5430ce={_0x278e11:0x3fb,_0x15c9d5:0x3d8,_0x42c5be:0x41b,_0x47249e:0x392,_0x283df4:0x387,_0x7bf99f:0x3a2,_0x37fa38:0x410,_0x28ecd3:0x41b,_0x5260f5:0x3e2,_0x4f67fd:0x3d1,_0x217e6e:0x3e3,_0x28ff61:0x3d2,_0x3c88ad:0x3c1,_0x64ae08:0x3b5,_0x3ba11d:0x396,_0x27ff9f:0x3f8,_0x5130af:0x408,_0x53f76c:0x428,_0x59a1cc:0x40b,_0x5ab267:0x3fa,_0x435989:0x41e,_0x4e003f:0x44a,_0x36865b:0x3b6,_0x17e0d3:0x3bb,_0x14cd92:0x39a,_0x5d4bcf:0x3ac,_0x4b8f6c:0x3da,_0x1a0ad4:0x403,_0x19537e:0x3f4,_0xc02a78:0x44a,_0x307dbd:0x428,_0x38e9d1:0x447,_0x3f99b9:0x38f,_0x5b77d4:0x3ae,_0x98a9ec:0x3d6,_0x5d7060:0x3af,_0x48099b:0x3ba,_0x4f5533:0x39b,_0x3ab68c:0x399,_0x32bc21:0x38a,_0x737245:0x3fe,_0x440318:0x3ef,_0x210c93:0x3aa,_0x21e722:0x3b4,_0x387ce7:0x3a9,_0x3f27e0:0x38c,_0x1b5f3d:0x39a,_0x1ec02e:0x3c0,_0x7a57b4:0x3bf,_0x22f8a5:0x379,_0x595032:0x3b3,_0x3936bc:0x3c9,_0x2dfbb4:0x398,_0x4cc053:0x3a4,_0x4d31d0:0x3bd,_0x11f4a9:0x3c3,_0x3f127c:0x3d7,_0x5d50ee:0x394,_0x15acc1:0x3ce,_0x4db35c:0x407,_0x50ada1:0x39a,_0x2b5b67:0x3a4,_0x960795:0x3ea,_0x350ca4:0x3e7},_0x4bae3e={_0x587392:0x22f,_0x400351:0x213,_0x262b95:0x202,_0x367d51:0x235,_0x80ec93:0x217,_0x1cf9cd:0x226,_0x45c823:0x214},_0x5ae505={_0x4e8cd1:0x179,_0x56455a:0x1bd,_0x39e91d:0xcb},_0x17f720={_0x3eb867:0x4e,_0x3f8cdf:0x15b,_0x194996:0x9c},_0x1ba21a={_0xc34ead:0x414,_0x5daf5b:0x3ff,_0x391bdd:0x202,_0x36973e:0x226,_0x3f19f8:0x217,_0x41148f:0x438,_0x1a8d7c:0x421,_0x577284:0x434},_0x5078bf={_0x2ced08:0x133},_0x5c7234={_0x16d8c8:0x66,_0x1efdcc:0x43};function _0x1fd955(_0x565e6f,_0x109e38,_0x5c4fad,_0x5d4a8a){return _0x484d45(_0x565e6f-0x52,_0x109e38-_0x5c7234._0x16d8c8,_0x5d4a8a-_0x5c7234._0x1efdcc,_0x109e38);}if(_0x2f7b05===this['cameraStre'+'am']['id']){if(!this['cameraStre'+_0x489581(0x3f0,0x408,_0x5430ce._0x278e11,_0x5430ce._0x15c9d5)])return;this[_0x489581(0x402,0x410,_0x5430ce._0x42c5be,0x3fd)+_0x1fd955(_0x5430ce._0x47249e,0x38e,_0x5430ce._0x283df4,_0x5430ce._0x7bf99f)]=![],this[_0x489581(0x439,_0x5430ce._0x37fa38,_0x5430ce._0x28ecd3,0x410)+_0x489581(_0x5430ce._0x5260f5,_0x5430ce._0x4f67fd,0x3eb,_0x5430ce._0x217e6e)+_0x1fd955(_0x5430ce._0x28ff61,0x3a3,_0x5430ce._0x3c88ad,_0x5430ce._0x64ae08)]={'video':![],'audio':![]},this['_cameraStr'+_0x1fd955(0x3d4,_0x5430ce._0x3ba11d,_0x5430ce._0x3ba11d,0x3b2)+'intsWanted']['video']=![],this[_0x489581(_0x5430ce._0x27ff9f,0x3ff,_0x5430ce._0x5130af,0x421)+_0x489581(_0x5430ce._0x53f76c,0x429,_0x5430ce._0x59a1cc,_0x5430ce._0x5ab267)+'intsWanted'][_0x489581(_0x5430ce._0x435989,_0x5430ce._0x4e003f,0x429,0x43d)]=![],this['cameraStre'+'am'][_0x1fd955(_0x5430ce._0x36865b,_0x5430ce._0x17e0d3,_0x5430ce._0x14cd92,_0x5430ce._0x5d4bcf)]()[_0x489581(_0x5430ce._0x4b8f6c,_0x5430ce._0x1a0ad4,0x3ea,_0x5430ce._0x19537e)](_0x15d291=>{const _0x412c20={_0x2f59a7:0xbc,_0x3f8f54:0x68,_0x5dfe88:0x1a9};function _0x57dd76(_0x58046b,_0x6e48ad,_0x1ed2b9,_0x588052){return _0x1fd955(_0x58046b-_0x412c20._0x2f59a7,_0x588052,_0x1ed2b9-_0x412c20._0x3f8f54,_0x58046b- -_0x412c20._0x5dfe88);}function _0x1b2897(_0x2fe1f4,_0x18e8ed,_0x2fe583,_0x2a9231){return _0x1fd955(_0x2fe1f4-0xe9,_0x2a9231,_0x2fe583-_0x5078bf._0x2ced08,_0x2fe1f4-0x5e);}_0x15d291[_0x1b2897(_0x1ba21a._0xc34ead,0x3f1,0x40a,_0x1ba21a._0x5daf5b)](),this[_0x57dd76(0x219,_0x1ba21a._0x391bdd,_0x1ba21a._0x36973e,_0x1ba21a._0x3f19f8)+'am'][_0x1b2897(0x427,_0x1ba21a._0x41148f,_0x1ba21a._0x1a8d7c,_0x1ba21a._0x577284)+'k'](_0x15d291);}),this[_0x489581(0x41d,_0x5430ce._0xc02a78,_0x5430ce._0x307dbd,_0x5430ce._0x38e9d1)]=null,this[_0x1fd955(_0x5430ce._0x3f99b9,0x3cd,_0x5430ce._0x36865b,_0x5430ce._0x5b77d4)]=null,this[_0x1fd955(_0x5430ce._0x98a9ec,_0x5430ce._0x5d7060,0x3cf,_0x5430ce._0x48099b)](LOCAL_CLOSE_EVENTS[_0x1fd955(_0x5430ce._0x4f5533,_0x5430ce._0x3ab68c,_0x5430ce._0x32bc21,0x3aa)]);return;}function _0x489581(_0x1c4662,_0x455629,_0x1b8434,_0x3a46cc){return _0x484d45(_0x1c4662-_0x17f720._0x3eb867,_0x455629-_0x17f720._0x3f8cdf,_0x1b8434-_0x17f720._0x194996,_0x3a46cc);}if(_0x2f7b05===this[_0x489581(_0x5430ce._0x737245,_0x5430ce._0x440318,0x402,_0x5430ce._0x37fa38)+'am']['id']){if(!this[_0x1fd955(0x3ba,_0x5430ce._0x210c93,_0x5430ce._0x21e722,_0x5430ce._0x387ce7)+'amOpened'])return;this['screenStre'+_0x1fd955(0x3c1,_0x5430ce._0x3f27e0,_0x5430ce._0x1b5f3d,_0x5430ce._0x7bf99f)]=![],this[_0x1fd955(0x3c8,_0x5430ce._0x1ec02e,_0x5430ce._0x7a57b4,_0x5430ce._0x387ce7)+_0x1fd955(0x39b,_0x5430ce._0x22f8a5,_0x5430ce._0x595032,0x392)+_0x1fd955(_0x5430ce._0x3936bc,_0x5430ce._0x2dfbb4,_0x5430ce._0x4cc053,_0x5430ce._0x64ae08)]={'video':![]},this[_0x1fd955(_0x5430ce._0x4d31d0,_0x5430ce._0x11f4a9,_0x5430ce._0x3f127c,0x3b9)+_0x1fd955(0x3a6,_0x5430ce._0x5d50ee,0x3c6,0x3b2)+_0x489581(_0x5430ce._0x278e11,_0x5430ce._0x15acc1,0x3ef,_0x5430ce._0x4db35c)]['video']=![],this['screenStre'+'am'][_0x1fd955(0x3ad,_0x5430ce._0x50ada1,_0x5430ce._0x2b5b67,_0x5430ce._0x5d4bcf)]()[_0x489581(_0x5430ce._0x4f67fd,0x3f6,_0x5430ce._0x960795,_0x5430ce._0x350ca4)](_0x9c7161=>{const _0x5d3a25={_0x2dae09:0xcd};function _0x3a2dae(_0x17aae4,_0x3f002b,_0x544f13,_0x8d22de){return _0x1fd955(_0x17aae4-_0x5d3a25._0x2dae09,_0x544f13,_0x544f13-0x62,_0x3f002b- -0x1a3);}_0x9c7161[_0x3a2dae(_0x4bae3e._0x587392,_0x4bae3e._0x400351,_0x4bae3e._0x262b95,_0x4bae3e._0x367d51)]();function _0x4d8224(_0x42a253,_0x544820,_0x38d9c8,_0x838456){return _0x489581(_0x42a253-_0x5ae505._0x4e8cd1,_0x544820-_0x5ae505._0x56455a,_0x544820-_0x5ae505._0x39e91d,_0x42a253);}this['screenStre'+'am'][_0x3a2dae(_0x4bae3e._0x80ec93,_0x4bae3e._0x1cf9cd,_0x4bae3e._0x45c823,0x247)+'k'](_0x9c7161);}),this['screenTrac'+'k']=null,this['emit'](LOCAL_CLOSE_EVENTS['SCREEN']);}}[_0x484d45(0x378,0x34e,0x35a,0x37a)+'ameraChang'+'es'](){const _0x49e84a={_0x10a6ac:0xe1,_0x17da6b:0x104,_0x5e9ef4:0x189,_0x12ba99:0x1ac,_0x193f96:0x1ba,_0x5a5986:0x1c8,_0x5bce32:0x14e,_0x34f44a:0x188,_0x2b127b:0x159,_0x59bbe5:0x17a,_0x34d027:0x167,_0x281bc9:0x18d},_0x8d17b1={_0x3d93d9:0x116,_0x126a1d:0x12f,_0x1950c0:0x136,_0x37441d:0x108,_0x1c440:0x134,_0x28207f:0x137,_0x55191f:0x13e,_0x342105:0x148,_0x4b3d3b:0x107,_0x14f296:0x101,_0x2018b1:0xe7,_0x52c4c9:0x117,_0x512b79:0x138,_0x5d0d4d:0x12e,_0x1e9ed0:0x13e},_0x53c011={_0x4819f3:0x1f7,_0x25e6a7:0x10b},_0x24000d={_0xb2cdfa:0x45d},_0x23b01c={_0x4d0823:0x18c,_0x3ff90e:0x4fd};function _0x2c91b0(_0x3fc967,_0x19c938,_0x2c51b6,_0xbb79b9){return _0x484d45(_0x3fc967-0x192,_0x19c938-_0x23b01c._0x4d0823,_0x19c938- -_0x23b01c._0x3ff90e,_0x3fc967);}const _0x431866=new Readable({'destroy':_0x192028}),_0x2e3008=this;this[_0x10255f(-0xc4,-_0x49e84a._0x10a6ac,-0x103,-_0x49e84a._0x17da6b)+_0x2c91b0(-_0x49e84a._0x5e9ef4,-_0x49e84a._0x12ba99,-_0x49e84a._0x193f96,-_0x49e84a._0x5a5986)+_0x2c91b0(-_0x49e84a._0x5bce32,-0x16f,-_0x49e84a._0x34f44a,-_0x49e84a._0x2b127b)][_0x2c91b0(-0x177,-_0x49e84a._0x59bbe5,-_0x49e84a._0x34d027,-_0x49e84a._0x281bc9)](_0x431866);function _0x10255f(_0x1dc436,_0x16a063,_0x5c6c75,_0x1a83dd){return _0x484d45(_0x1dc436-0x177,_0x16a063-0x17b,_0x16a063- -_0x24000d._0xb2cdfa,_0x1a83dd);}return _0x431866;function _0x192028(_0x53a203){const _0x5d0c82={_0x61f186:0x32,_0x1857fa:0x1e9};function _0x22497a(_0x18b236,_0x208063,_0x2ec3d8,_0x1930ec){return _0x10255f(_0x18b236-0x10a,_0x18b236-_0x53c011._0x4819f3,_0x2ec3d8-_0x53c011._0x25e6a7,_0x2ec3d8);}function _0x583d96(_0x429a49,_0x783202,_0x43148b,_0x26b0c3){return _0x10255f(_0x429a49-0x1ca,_0x43148b- -_0x5d0c82._0x61f186,_0x43148b-_0x5d0c82._0x1857fa,_0x26b0c3);}_0x2e3008[_0x22497a(_0x8d17b1._0x3d93d9,_0x8d17b1._0x126a1d,_0x8d17b1._0x1950c0,_0x8d17b1._0x37441d)+_0x583d96(-_0x8d17b1._0x1c440,-_0x8d17b1._0x28207f,-_0x8d17b1._0x55191f,-_0x8d17b1._0x342105)+_0x583d96(-_0x8d17b1._0x4b3d3b,-0xf5,-_0x8d17b1._0x14f296,-_0x8d17b1._0x2018b1)][_0x583d96(-_0x8d17b1._0x52c4c9,-_0x8d17b1._0x512b79,-_0x8d17b1._0x5d0d4d,-_0x8d17b1._0x1e9ed0)](_0x431866),_0x53a203(null);}}[_0x484d45(0x334,0x32e,0x34d,0x36f)+'creenChang'+'es'](){const _0x31c6b4={_0x134da4:0x4d,_0x386d5c:0x69,_0x35dbc2:0x2e,_0x58eef2:0x1f,_0x1aa7e1:0x13},_0x1b6429={_0xb4a522:0x310,_0x45d38c:0x2ff,_0x11dd39:0x87,_0x4f064c:0x9f,_0x4749dd:0x89},_0x396db5={_0x597d91:0x25,_0x4b62d4:0xac},_0x596b55={_0x53f86d:0x68,_0x37dd69:0x6a1,_0x31b461:0x9},_0xc8f511={_0x5ba818:0xdf,_0x2c55e9:0xa7,_0x35fa97:0x3a1};function _0x22fb79(_0x266057,_0x26ee12,_0x32bfab,_0x1626f3){return _0x484d45(_0x266057-_0xc8f511._0x5ba818,_0x26ee12-_0xc8f511._0x2c55e9,_0x26ee12- -_0xc8f511._0x35fa97,_0x266057);}function _0x117137(_0x191d53,_0x2089a6,_0x20ce3,_0x5ecd82){return _0x1498c9(_0x191d53-_0x596b55._0x53f86d,_0x20ce3,_0x2089a6- -_0x596b55._0x37dd69,_0x5ecd82-_0x596b55._0x31b461);}const _0x3000fc=new Readable({'destroy':_0x338986}),_0x18b207=this;this[_0x22fb79(-_0x31c6b4._0x134da4,-0x4f,-_0x31c6b4._0x386d5c,-_0x31c6b4._0x35dbc2)+'ngesSubscr'+_0x22fb79(-_0x31c6b4._0x58eef2,-_0x31c6b4._0x1aa7e1,0xf,-0x15)]['add'](_0x3000fc);return _0x3000fc;function _0x338986(_0x395d69){const _0x4393fd={_0x31f57b:0x438};_0x18b207[_0x352bac(_0x1b6429._0xb4a522,0x304,0x321,_0x1b6429._0x45d38c)+_0x37cf6b(-_0x1b6429._0x11dd39,-0x72,-_0x1b6429._0x4f064c,-_0x1b6429._0x4749dd)+'iptions']['delete'](_0x3000fc);function _0x352bac(_0x402bff,_0x4f932a,_0x3727e9,_0x59d96f){return _0x117137(_0x402bff-0x13,_0x4f932a-_0x4393fd._0x31f57b,_0x3727e9,_0x59d96f-0x135);}function _0x37cf6b(_0x1d5796,_0x4ec975,_0xf84b13,_0x11cd06){return _0x117137(_0x1d5796-_0x396db5._0x597d91,_0x11cd06-_0x396db5._0x4b62d4,_0xf84b13,_0x11cd06-0xa6);}_0x395d69(null);}}};
1const{EventEmitter:e}=require("events"),{Readable:t}=require("streamx"),a=require("debounceify"),r=require("fast-deep-equal"),{STREAM_TYPE:s,LOCAL_CHANGE_EVENTS:i,LOCAL_CLOSE_EVENTS:n}=require("./constants");module.exports=class extends e{constructor(){super(),this.cameraStream=new MediaStream,this.videoTrack=null,this.audioTrack=null,this.cameraStreamOpened=!1,this.cameraStreamConstraints={video:!1,audio:!1},this._cameraStreamConstraintsWanted={...this.cameraStreamConstraints},this._debouncedSetCameraTracks=a(this._setCameraTracks.bind(this)),this.cameraStreamStatus={videoMuted:!0,audioMuted:!0},this._cameraChangesSubscriptions=new Set,this.screenStream=new MediaStream,this.screenTrack=null,this.screenStreamOpened=!1,this.screenStreamConstraints={video:!1},this._screenStreamConstraintsWanted={...this.screenStreamConstraints},this._debouncedSetScreenTracks=a(this._setScreenTracks.bind(this)),this.screenStreamStatus={videoMuted:!0,audioMuted:!0},this._screenChangesSubscriptions=new Set}async _setCameraTracks(){const e=!r(this.cameraStreamConstraints.video,this._cameraStreamConstraintsWanted.video),t=!r(this.cameraStreamConstraints.audio,this._cameraStreamConstraintsWanted.audio);if(e)if(this.cameraStream.getVideoTracks().forEach(e=>{e.stop(),this.cameraStream.removeTrack(e)}),this._cameraStreamConstraintsWanted.video){const e=await navigator.mediaDevices.getUserMedia({video:this._cameraStreamConstraintsWanted.video,audio:!1});e.getTracks().forEach(e=>{this.cameraStream.addTrack(e)}),this.videoTrack=e.getVideoTracks()[0]}else this.videoTrack=null;if(t)if(this.cameraStream.getAudioTracks().forEach(e=>{e.stop(),this.cameraStream.removeTrack(e)}),this._cameraStreamConstraintsWanted.audio){const e=await navigator.mediaDevices.getUserMedia({video:!1,audio:this._cameraStreamConstraintsWanted.audio});e.getTracks().forEach(e=>{this.cameraStream.addTrack(e)}),this.audioTrack=e.getAudioTracks()[0]}else this.audioTrack=null;this.cameraStreamConstraints.video=this._cameraStreamConstraintsWanted.video,this.cameraStreamConstraints.audio=this._cameraStreamConstraintsWanted.audio,this.cameraStreamStatus.videoMuted=null===this.videoTrack,this.cameraStreamStatus.audioMuted=null===this.audioTrack;const a={...this.cameraStreamStatus};for(const e of this._cameraChangesSubscriptions.values())e.push(a);this.emit(i.CAMERA,e,t,a)}async _setScreenTracks(){const e=!r(this.screenStreamConstraints.video,this._screenStreamConstraintsWanted.video);if(e)if(this.screenStream.getVideoTracks().forEach(e=>{e.stop(),this.screenStream.removeTrack(e)}),this._screenStreamConstraintsWanted.video){const e=await navigator.mediaDevices.getUserMedia({video:this._screenStreamConstraintsWanted.video,audio:!1});e.getTracks().forEach(e=>{this.screenStream.addTrack(e)}),this.screenTrack=e.getVideoTracks()[0]}else this.screenTrack=null;this.screenStreamConstraints.video=this._screenStreamConstraintsWanted.video,this.screenStreamStatus.videoMuted=null===this.screenTrack;const t={...this.screenStreamStatus};for(const e of this._screenChangesSubscriptions.values())e.push(t);this.emit(i.SCREEN,e,t)}openStream(e){if(e===s.CAMERA){if(this.cameraStreamOpened)return;return this.cameraStreamOpened=!0,this.cameraStream.id}if(e===s.SCREEN){if(this.screenStreamOpened)return;return this.screenStreamOpened=!0,this.screenStream.id}throw new Error(`openStream: wrong stream type (${e})`)}applyStreamConstraints(e,t){return e===this.cameraStream.id?(this._cameraStreamConstraintsWanted.video=t.video,this._cameraStreamConstraintsWanted.audio=t.audio,this._debouncedSetCameraTracks()):e===this.screenStream.id?(this._screenStreamConstraintsWanted.video=t.video,this._debouncedSetScreenTracks()):void console.warn(`applyStreamConstraints: wrong stream id (${e})`)}getSrcObject(e){return e===this.cameraStream.id?this.cameraStream:e===this.screenStream.id?this.screenStream:null}closeStream(e){if(e===this.cameraStream.id){if(!this.cameraStreamOpened)return;return this.cameraStreamOpened=!1,this.cameraStreamConstraints={video:!1,audio:!1},this._cameraStreamConstraintsWanted.video=!1,this._cameraStreamConstraintsWanted.audio=!1,this.cameraStream.getTracks().forEach(e=>{e.stop(),this.cameraStream.removeTrack(e)}),this.videoTrack=null,this.audioTrack=null,void this.emit(n.CAMERA)}if(e===this.screenStream.id){if(!this.screenStreamOpened)return;this.screenStreamOpened=!1,this.screenStreamConstraints={video:!1},this._screenStreamConstraintsWanted.video=!1,this.screenStream.getTracks().forEach(e=>{e.stop(),this.screenStream.removeTrack(e)}),this.screenTrack=null,this.emit(n.SCREEN)}}subscribeCameraChanges(){const e=new t({destroy:function(t){a._cameraChangesSubscriptions.delete(e),t(null)}}),a=this;return this._cameraChangesSubscriptions.add(e),e}subscribeScreenChanges(){const e=new t({destroy:function(t){a._screenChangesSubscriptions.delete(e),t(null)}}),a=this;return this._screenChangesSubscriptions.add(e),e}};
@holepunchto/keet-call/client/presence/index.js +1 -1
……@@ -1 +1 @@
1function _0x2f9bdc(_0x21afa6,_0x59defa,_0x58706f,_0x4569f1){var _0x4c9b8e={_0x19105d:0x17b};return _0x5a35(_0x4569f1- -_0x4c9b8e._0x19105d,_0x21afa6);}function _0x1d7824(_0x2f5101,_0x9891d0,_0x5e94bb,_0x1908a5){return _0x5a35(_0x1908a5-0x1f2,_0x5e94bb);}(function(_0x4a6280,_0x5f5820){var _0x49245b={_0x22078a:0x145,_0x328fdf:0x140,_0x7e2378:0x1ee,_0x9d0e41:0x1e9,_0x141546:0x1df,_0x108914:0x1e1,_0x2038af:0x144,_0x57320d:0x14a,_0x57cb47:0x142,_0x25a522:0x1e7,_0x26fe60:0x1df,_0xa0c1c5:0x1db,_0x2d8c7d:0x1da,_0x36f597:0x1d7,_0x283a0e:0x1e0,_0x1779fb:0x1e6,_0x53d6d4:0x1e0,_0x105d66:0x1de,_0x5ab2eb:0x1dc,_0x7bf3bc:0x1e1,_0x1ca538:0x1e2,_0x856d2c:0x14d,_0x19e317:0x14f,_0x36c42a:0x153},_0x44142f={_0x574dd1:0x46},_0x2403fc={_0x5341b6:0x53};function _0x6c1ff0(_0x10d688,_0x580d31,_0x1b006e,_0x5179b6){return _0x5a35(_0x580d31-_0x2403fc._0x5341b6,_0x1b006e);}function _0x1f4d28(_0x459c99,_0x49da13,_0xb5fa31,_0x2dd105){return _0x5a35(_0xb5fa31- -_0x44142f._0x574dd1,_0x49da13);}var _0x118a79=_0x4a6280();while(!![]){try{var _0x5ab493=parseInt(_0x1f4d28(0x13f,0x14d,_0x49245b._0x22078a,_0x49245b._0x328fdf))/(0x2*-0xc70+0x4ea*-0x7+-0x19*-0x25f)*(parseInt(_0x6c1ff0(_0x49245b._0x7e2378,_0x49245b._0x9d0e41,0x1ec,_0x49245b._0x9d0e41))/(-0x1688+0x3ab*-0xa+0xa*0x5ec))+parseInt(_0x6c1ff0(_0x49245b._0x141546,_0x49245b._0x108914,_0x49245b._0x141546,0x1e2))/(0x1*0xa9f+-0x1*0xdb+0x1*-0x9c1)*(-parseInt(_0x1f4d28(_0x49245b._0x2038af,0x144,_0x49245b._0x57320d,_0x49245b._0x57cb47))/(-0x1e0c+0x26a1*0x1+-0x891))+parseInt(_0x6c1ff0(0x1eb,_0x49245b._0x25a522,_0x49245b._0x26fe60,_0x49245b._0x9d0e41))/(-0x2316*0x1+-0x2139+-0x222a*-0x2)+parseInt(_0x6c1ff0(0x1da,_0x49245b._0xa0c1c5,_0x49245b._0x2d8c7d,_0x49245b._0x36f597))/(-0x1276+0x5a4+0xcd8)+-parseInt(_0x6c1ff0(0x1da,_0x49245b._0x283a0e,_0x49245b._0x1779fb,_0x49245b._0x53d6d4))/(0x22bf+-0x1970+-0x948)+parseInt(_0x6c1ff0(_0x49245b._0x105d66,_0x49245b._0x5ab2eb,_0x49245b._0x7bf3bc,_0x49245b._0x1ca538))/(-0x259+-0x968+0x1*0xbc9)+-parseInt(_0x1f4d28(_0x49245b._0x856d2c,0x14e,_0x49245b._0x19e317,_0x49245b._0x36c42a))/(-0x397*0x1+0x1a0e+0x166e*-0x1);if(_0x5ab493===_0x5f5820)break;else _0x118a79['push'](_0x118a79['shift']());}catch(_0x2e0165){_0x118a79['push'](_0x118a79['shift']());}}}(_0x4632,-0x3*-0xc211+-0x53c63*-0x1+-0x3cce8));var _0x2e0b6b=(function(){var _0xbdc695=!![];return function(_0x16e5cc,_0x2eb1c6){var _0x52c4db={_0x364c36:0x31f,_0x27e0ee:0x321},_0x4a43ef={_0x90dfdd:0x193},_0x10d1b0=_0xbdc695?function(){function _0x2d4a46(_0xe7ae0d,_0x10d04a,_0x224e20,_0x280158){return _0x5a35(_0x10d04a-_0x4a43ef._0x90dfdd,_0xe7ae0d);}if(_0x2eb1c6){var _0x144bd1=_0x2eb1c6[_0x2d4a46(0x318,_0x52c4db._0x364c36,_0x52c4db._0x27e0ee,0x321)](_0x16e5cc,arguments);return _0x2eb1c6=null,_0x144bd1;}}:function(){};return _0xbdc695=![],_0x10d1b0;};}()),_0x2cddf1=_0x2e0b6b(this,function(){var _0x5761a0={_0x396e98:0x351,_0x54ac24:0x34c,_0x4d9451:0x34e,_0x231c65:0x353,_0x56db00:0xdc,_0x507fb9:0xda,_0x4a513e:0xdb,_0x3ceea0:0x348,_0x2f866c:0x34e,_0x3b2714:0x348,_0x24d146:0xf1,_0x40d062:0xf2,_0x2c2429:0xe9,_0x4eb3b6:0xe1,_0xa46c79:0xdb};function _0x1a3c24(_0x5ef417,_0x153160,_0x2c0f0f,_0x44a2cd){return _0x5a35(_0x5ef417-0x1be,_0x153160);}function _0x3686e6(_0x4d5b1f,_0x599aaf,_0x41b595,_0x42b561){return _0x5a35(_0x42b561- -0xaa,_0x599aaf);}return _0x2cddf1['toString']()[_0x1a3c24(_0x5761a0._0x396e98,_0x5761a0._0x54ac24,_0x5761a0._0x4d9451,_0x5761a0._0x231c65)](_0x3686e6(_0x5761a0._0x56db00,_0x5761a0._0x56db00,_0x5761a0._0x507fb9,_0x5761a0._0x4a513e)+'+$')['toString']()[_0x1a3c24(_0x5761a0._0x3ceea0,0x348,_0x5761a0._0x2f866c,_0x5761a0._0x3b2714)+'r'](_0x2cddf1)[_0x3686e6(0xe4,_0x5761a0._0x24d146,_0x5761a0._0x40d062,_0x5761a0._0x2c2429)](_0x3686e6(0xe4,_0x5761a0._0x4eb3b6,0xe4,_0x5761a0._0xa46c79)+'+$');});function _0x5a35(_0x12ab45,_0x33d114){var _0x1528f1=_0x4632();return _0x5a35=function(_0x1b8f2f,_0x5db099){_0x1b8f2f=_0x1b8f2f-(-0x1*0x2093+0x1c0c+0x306*0x2);var _0x1cb730=_0x1528f1[_0x1b8f2f];return _0x1cb730;},_0x5a35(_0x12ab45,_0x33d114);}function _0x4632(){var _0x551ead=['2003268PioOGO','2431824jvwCBY','constructo','2494KNpgWf','apply','1772463mjSSZe','5727pZOuAJ','api','384pfwpQa','exports','resence','search','1507210NrksnR','4896207VhPYdo','228MsouAA','(((.+)+)+)','swarmId','getPresenc'];_0x4632=function(){return _0x551ead;};return _0x4632();}_0x2cddf1(),module[_0x1d7824(0x37e,0x387,0x38b,0x383)]=class PresenceClient{constructor(_0x23c6b4,_0x4b6262){var _0x51aa4d={_0x1a8b91:0x127,_0x4e0771:0x120,_0xd4824f:0x120,_0x116fb6:0x12b,_0xd3b2ed:0x11e,_0x4fed03:0x11a,_0x25f390:0x11c},_0x2b3a41={_0x4e0467:0x10c,_0xb04d9b:0x1be,_0x487d39:0x1ed},_0x1068f9={_0x32680b:0x1bf,_0x24d250:0x8e};function _0x3f20f0(_0x1da2cc,_0xfd7afe,_0x16b731,_0x1d5065){return _0x1d7824(_0x1da2cc-_0x1068f9._0x32680b,_0xfd7afe-_0x1068f9._0x24d250,_0x1d5065,_0x1da2cc- -0x25a);}this[_0x3f20f0(_0x51aa4d._0x1a8b91,_0x51aa4d._0x4e0771,_0x51aa4d._0xd4824f,_0x51aa4d._0x116fb6)]=_0x23c6b4;function _0x2e8aa1(_0x5997ca,_0x3cd220,_0x40bcce,_0x6f54a4){return _0x1d7824(_0x5997ca-_0x2b3a41._0x4e0467,_0x3cd220-_0x2b3a41._0xb04d9b,_0x6f54a4,_0x3cd220-_0x2b3a41._0x487d39);}this[_0x3f20f0(_0x51aa4d._0xd3b2ed,_0x51aa4d._0x4fed03,0x121,_0x51aa4d._0x25f390)]=_0x4b6262;}['subscribeP'+'resence'](_0x185372){var _0x494c50={_0x17bb0f:0x34a,_0x425550:0x34f,_0xceeeeb:0x351,_0x19851c:0x34b,_0x3cc227:0x1cc,_0x2a3b4d:0x1ce,_0x1a5e3b:0x1c5},_0x3fd6fe={_0x4924fb:0x9b,_0x480d20:0xc},_0x50e38e={_0x1de152:0x1bc,_0x1c32b7:0x1b6};function _0x63a82d(_0x4c7766,_0x2785d6,_0x19b74d,_0x2cceb1){return _0x1d7824(_0x4c7766-_0x50e38e._0x1de152,_0x2785d6-0x49,_0x4c7766,_0x19b74d- -_0x50e38e._0x1c32b7);}function _0x6a8888(_0x26e133,_0x3e438f,_0x5806e1,_0x599812){return _0x1d7824(_0x26e133-_0x3fd6fe._0x4924fb,_0x3e438f-_0x3fd6fe._0x480d20,_0x599812,_0x5806e1- -0x30);}return this[_0x6a8888(_0x494c50._0x17bb0f,_0x494c50._0x425550,_0x494c50._0xceeeeb,_0x494c50._0x19851c)]['subscribeP'+_0x63a82d(0x1d3,_0x494c50._0x3cc227,_0x494c50._0x2a3b4d,_0x494c50._0x1a5e3b)](_0x185372);}[_0x2f9bdc(0x13,0x12,0x9,0xc)+'e'](_0x1c6786){var _0x323583={_0x5638e4:0x40,_0x124858:0x41,_0xad69f8:0x44,_0x510b4d:0x3c,_0x419db0:0x3d,_0x408504:0x45},_0xd213f7={_0x4e8f06:0x1cb,_0xf42f14:0x1e7,_0x3c23e0:0x2f3},_0x2a06ae={_0x25092d:0xae,_0x4b62a1:0x50};function _0x49d484(_0x382b4e,_0x56f8f0,_0x46a6f6,_0x3bfd43){return _0x2f9bdc(_0x56f8f0,_0x56f8f0-0xb7,_0x46a6f6-_0x2a06ae._0x25092d,_0x3bfd43- -_0x2a06ae._0x4b62a1);}function _0x5ab1ed(_0x45ae32,_0x26caae,_0x2ec9df,_0x5e367d){return _0x2f9bdc(_0x2ec9df,_0x26caae-_0xd213f7._0x4e8f06,_0x2ec9df-_0xd213f7._0xf42f14,_0x26caae-_0xd213f7._0x3c23e0);}return this[_0x49d484(-_0x323583._0x5638e4,-_0x323583._0x124858,-_0x323583._0xad69f8,-_0x323583._0x510b4d)][_0x49d484(-_0x323583._0x419db0,-0x41,-_0x323583._0x408504,-_0x323583._0xad69f8)+'e'](_0x1c6786);}};
1module.exports=class{constructor(e,s){this.api=e,this.swarmId=s}subscribePresence(e){return this.api.subscribePresence(e)}getPresence(e){return this.api.getPresence(e)}};
@holepunchto/keet-call/lib/common.js +1 -1
……@@ -1 +1 @@
1(function(_0x11e571,_0x38a715){const _0x8518ed={_0x4af285:0x340,_0x446191:0x320,_0xd7cc46:0x1d6,_0x22849d:0x1d1,_0x15bc6f:0x1b2,_0x214d5a:0x1b1,_0x2f0df2:0x1b4,_0x2699d9:0x19c,_0x236d08:0x1b8,_0x1178aa:0x1a0,_0x2dc9a5:0x1c4,_0x17798f:0x31b,_0x8455c7:0x324,_0x1fd9af:0x335,_0x1bfb4b:0x333,_0x3b7cf2:0x358,_0x3ca4fd:0x33a,_0x5ddba2:0x34c,_0xca8ca1:0x34e,_0x1c64a2:0x1cf,_0x418c87:0x1c3,_0x3eb781:0x1e1,_0x4508c1:0x1cd,_0x33e2a5:0x1fa,_0x325e79:0x333,_0x2c5682:0x349,_0x58c715:0x345,_0x52b9af:0x342,_0x503ce8:0x348,_0x2a0ff7:0x362},_0x311f24={_0x2e8f5d:0x140},_0x4819fe={_0x509f83:0x2bc};function _0xd54c24(_0x54cb31,_0x3e70fb,_0x32e09f,_0x2b59a1){return _0x5f10(_0x2b59a1-_0x4819fe._0x509f83,_0x32e09f);}const _0x422942=_0x11e571();function _0x218325(_0x497bfb,_0x4ecd91,_0xbc27bb,_0x36a7c2){return _0x5f10(_0x497bfb-_0x311f24._0x2e8f5d,_0x36a7c2);}while(!![]){try{const _0x17035a=-parseInt(_0xd54c24(_0x8518ed._0x4af285,0x333,_0x8518ed._0x446191,0x32f))/(-0x409*0x8+-0x3*-0x854+0x74d)*(-parseInt(_0xd54c24(0x36a,0x342,0x35d,0x355))/(0x2*0x1cf+0x12b7+-0x1653))+-parseInt(_0x218325(_0x8518ed._0xd7cc46,0x1da,0x1ca,_0x8518ed._0x22849d))/(-0xb7d+0xab1+-0xcf*-0x1)*(parseInt(_0x218325(_0x8518ed._0x15bc6f,_0x8518ed._0x214d5a,_0x8518ed._0x2f0df2,_0x8518ed._0x2699d9))/(0x23a3+-0x1abf+-0x8e0))+parseInt(_0x218325(_0x8518ed._0x236d08,_0x8518ed._0x1178aa,_0x8518ed._0x2dc9a5,0x1c2))/(0x460*0x6+0x168d*0x1+-0x30c8)*(-parseInt(_0xd54c24(_0x8518ed._0x17798f,_0x8518ed._0x8455c7,_0x8518ed._0x1fd9af,_0x8518ed._0x1bfb4b))/(0xa37+0x30a+-0x3*0x469))+parseInt(_0xd54c24(_0x8518ed._0x3b7cf2,_0x8518ed._0x3ca4fd,_0x8518ed._0x5ddba2,_0x8518ed._0xca8ca1))/(-0x10d6+-0x1*-0xac6+0x617)+parseInt(_0x218325(0x1c6,0x1b0,_0x8518ed._0x1c64a2,_0x8518ed._0x418c87))/(0x8*0xf+-0x719*0x2+0x24b*0x6)+-parseInt(_0x218325(_0x8518ed._0x3eb781,0x1d3,_0x8518ed._0x4508c1,_0x8518ed._0x33e2a5))/(0x4e1+-0x5*-0x545+0x5*-0x63d)*(parseInt(_0xd54c24(_0x8518ed._0x325e79,0x35a,_0x8518ed._0x2c5682,_0x8518ed._0x58c715))/(0x1727+-0x50b+0x606*-0x3))+parseInt(_0xd54c24(_0x8518ed._0x52b9af,_0x8518ed._0x503ce8,_0x8518ed._0x2a0ff7,0x353))/(-0x3f*-0x3+-0x79*0x1f+0x4a7*0x3);if(_0x17035a===_0x38a715)break;else _0x422942['push'](_0x422942['shift']());}catch(_0x265c77){_0x422942['push'](_0x422942['shift']());}}}(_0x148c,0x711f+-0x236*-0xb1+-0xa*-0x4ef));const _0x4cffb1=(function(){let _0x1ca4fc=!![];return function(_0x57ba55,_0xa3fb41){const _0x2dd056=_0x1ca4fc?function(){if(_0xa3fb41){const _0x5d80e2=_0xa3fb41['apply'](_0x57ba55,arguments);return _0xa3fb41=null,_0x5d80e2;}}:function(){};return _0x1ca4fc=![],_0x2dd056;};}()),_0x5d28bb=_0x4cffb1(this,function(){const _0x4525e0={_0x2f5923:0x19,_0x7f11bb:0x30,_0x129f25:0x22,_0x1e284d:0x27c,_0x53cc45:0x27e,_0x246516:0x296,_0x32c050:0x1e,_0x50d6c5:0x9,_0x572d01:0x21,_0x2421b0:0x3a,_0x3e6562:0x25,_0x2d25c7:0x44},_0x3260fb={_0x18402f:0x2ff},_0xd75b44={_0x357c1b:0x60};function _0x5b6d6c(_0x183cc7,_0x5a676d,_0x22784a,_0x381898){return _0x5f10(_0x183cc7- -_0xd75b44._0x357c1b,_0x22784a);}function _0x37731a(_0x4edc7c,_0x3d16a0,_0x33d782,_0x5d8f01){return _0x5f10(_0x33d782- -_0x3260fb._0x18402f,_0x4edc7c);}return _0x5d28bb['toString']()[_0x5b6d6c(_0x4525e0._0x2f5923,0xd,_0x4525e0._0x7f11bb,_0x4525e0._0x129f25)](_0x37731a(-_0x4525e0._0x1e284d,-0x293,-_0x4525e0._0x53cc45,-_0x4525e0._0x246516)+'+$')[_0x5b6d6c(0x1e,_0x4525e0._0x32c050,_0x4525e0._0x50d6c5,_0x4525e0._0x572d01)]()[_0x5b6d6c(_0x4525e0._0x2421b0,_0x4525e0._0x3e6562,_0x4525e0._0x2d25c7,0x23)+'r'](_0x5d28bb)['search']('(((.+)+)+)'+'+$');});_0x5d28bb();const safetyCatch=require('safety-catch');function _0x148c(){const _0x359dbc=['constructo','want-track','proxy-open','refs','TRACKER_EV','ion','urceManage','90bmQfSt','stream-una','53764TBMfxU','2788moUZis','close','decodeTrac','tus-change','414QYQfAD','1645ApNvbW','search','not-presen','stream-ava','split','get','toString','exports','media-sign','(((.+)+)+)','have-track','connection','vailable','unwant-tra','1761600aOKMmq','stream-sta','MEDIA_EVEN','275360lXSGrf','error','kId','set','delete','remotePubl','an\x20unopene','encodeTrac','icKey','550291cKghvm','VENTS','ENTS','getConnect','27tQgxlg','2728528KkZqGg','ilable','10jWYDkn'];_0x148c=function(){return _0x359dbc;};return _0x148c();}function _0x559f66(_0xccf2f3,_0x141b01,_0x3ee99e,_0x2b8590){return _0x5f10(_0x141b01- -0x1b8,_0x2b8590);}const b4a=require('b4a');function _0x5f10(_0x5f106e,_0x2cf3a2){const _0x23978b=_0x148c();return _0x5f10=function(_0x276d01,_0x2ae841){_0x276d01=_0x276d01-(-0x519+0x301*0xa+-0x187f);let _0x41720d=_0x23978b[_0x276d01];return _0x41720d;},_0x5f10(_0x5f106e,_0x2cf3a2);}function _0x973b2d(_0x468c92,_0x582253,_0x3962e6,_0xde53cb){const _0x3eca86={_0x27b746:0x121};return _0x5f10(_0x582253- -_0x3eca86._0x27b746,_0x3962e6);}module[_0x559f66(-0x125,-0x139,-0x126,-0x12c)][_0x559f66(-0x10b,-0x11a,-0x106,-0x120)+_0x973b2d(-0x91,-0x8d,-0x8a,-0x9a)]={'HAVE':_0x973b2d(-0xb6,-0x9f,-0xb7,-0x89),'UNHAVE':'unhave-tra'+'ck'},module[_0x559f66(-0x152,-0x139,-0x12d,-0x136)][_0x973b2d(-0xad,-0x99,-0x81,-0x9e)+'TS']={'WANT':_0x559f66(-0x11c,-0x11d,-0x11c,-0x124),'UNWANT':_0x973b2d(-0xb4,-0x9c,-0xb2,-0x99)+'ck','SIGNAL':_0x559f66(-0x12f,-0x138,-0x125,-0x13e)+'al','PROXY_OPEN':_0x559f66(-0x110,-0x11c,-0x12e,-0x10f),'PROXY_CLOSE':'proxy-clos'+'e'},module[_0x559f66(-0x146,-0x139,-0x123,-0x145)]['PRESENCE_E'+_0x559f66(-0x122,-0x125,-0x12b,-0x10d)]={'PEER_PRESENT':'present','PEER_NOT_PRESENT':_0x559f66(-0x12e,-0x13e,-0x142,-0x152)+'t','STREAM_AVAILABLE':_0x559f66(-0x147,-0x13d,-0x140,-0x144)+_0x973b2d(-0x9d,-0x89,-0xa1,-0x9c),'STREAM_UNAVAILABLE':_0x973b2d(-0x68,-0x7f,-0x8a,-0x86)+_0x973b2d(-0xae,-0x9d,-0x87,-0x9d),'STREAM_STATUS_CHANGED':_0x559f66(-0x128,-0x131,-0x137,-0x11e)+_0x973b2d(-0x9f,-0xab,-0xc2,-0xc0)+'d'},module[_0x973b2d(-0x8e,-0xa2,-0x9b,-0x8b)][_0x973b2d(-0xa4,-0x91,-0x9e,-0x81)+_0x973b2d(-0x95,-0x96,-0xa4,-0x95)]=function(_0x40d10c,_0x354c61){return _0x40d10c+':'+_0x354c61;},module[_0x559f66(-0x13c,-0x139,-0x145,-0x147)][_0x973b2d(-0x9f,-0xac,-0xb2,-0xa1)+_0x559f66(-0x143,-0x12d,-0x115,-0x122)]=function(_0x30ab70){const _0x26c133={_0x5531f7:0xa0,_0x10aedb:0xa6},_0x19aa10={_0x3b56b3:0x121},[_0x10921e,_0x394e17]=_0x30ab70[_0x365bbe(-0x9d,-_0x26c133._0x5531f7,-0x91,-_0x26c133._0x10aedb)](':');function _0x365bbe(_0xdef2a5,_0x1b2f4d,_0x4ebfc2,_0x81edcf){return _0x973b2d(_0xdef2a5-_0x19aa10._0x3b56b3,_0x1b2f4d-0x5,_0x81edcf,_0x81edcf-0xa4);}return{'streamId':_0x10921e,'trackKind':_0x394e17};},module[_0x973b2d(-0xb9,-0xa2,-0xb7,-0xb1)][_0x973b2d(-0xa2,-0x8c,-0xa2,-0x7d)+_0x973b2d(-0x74,-0x82,-0x75,-0x7a)]=function(_0x5a54d3,_0x293b27){const _0x48c669={_0x5d1b3b:0x2a1,_0x531120:0x288,_0xab20f3:0x29d,_0x335725:0x27d,_0x57cae5:0x3c1,_0x4c023a:0x3d8},_0x12fef4={_0x3b3362:0x7b,_0x56f6a4:0x153,_0x35173f:0x1d0},_0x346571={_0x502b45:0x84,_0x409f8d:0x4e8,_0x1da5c3:0x107};for(const _0x485d21 of _0x5a54d3[_0x5e6896(-_0x48c669._0x5d1b3b,-0x29b,-_0x48c669._0x531120,-_0x48c669._0xab20f3)+'s']){if(!b4a['equals'](_0x485d21[_0x5e6896(-0x28d,-0x286,-_0x48c669._0x335725,-0x271)+_0x31fbd2(_0x48c669._0x57cae5,0x3b0,_0x48c669._0x4c023a,0x3c2)],_0x293b27))continue;return _0x485d21;}function _0x31fbd2(_0x4e7b98,_0x5c5a90,_0x335e25,_0x283385){return _0x559f66(_0x4e7b98-_0x346571._0x502b45,_0x4e7b98-_0x346571._0x409f8d,_0x335e25-_0x346571._0x1da5c3,_0x5c5a90);}function _0x5e6896(_0x390ff4,_0x4aceaf,_0x158a71,_0x1b75fe){return _0x559f66(_0x390ff4-_0x12fef4._0x3b3362,_0x158a71- -_0x12fef4._0x56f6a4,_0x158a71-_0x12fef4._0x35173f,_0x390ff4);}return null;},module[_0x973b2d(-0x98,-0xa2,-0xaa,-0xac)]['createReso'+_0x559f66(-0x10b,-0x118,-0x110,-0x10f)+'r']=function(_0x5b5cbf,_0x2832e6=noop){const _0x4a6d99={_0x4efa48:0x2d9,_0x1b4037:0x2c1,_0x2a9ce6:0x2cb,_0x1f0cde:0x371,_0x4f4303:0x364,_0x564d77:0x362,_0x364b46:0x35d,_0x5ec8e6:0x2db,_0x136bc4:0x2eb,_0x11c1ed:0x2e0,_0x22ebc8:0x2ef},_0x5c3a81={_0x365dab:0x3a0,_0x1e5d0d:0x3b1,_0x221514:0x3b5,_0x302b9c:0x3a4,_0x14209b:0x3be,_0x465401:0x3ad,_0x4792b9:0x3c0,_0x1cc85a:0x34c,_0x5e51f9:0x327,_0x3d34e6:0x329},_0x1a90a5={_0x49fab0:0x2ac},_0x33c7d7=new Map();return{'collection':_0x33c7d7,'open':_0x1a21f8,'release':_0x3d230d,'subscription':_0x27c27a,'method':_0x2ea107,'asyncMethod':_0x2e431d};function _0x1a21f8(_0xbb691b){const _0x4d670b={_0x38b683:0x327},_0xa17481=_0x33c7d7[_0x7c61ed(_0x5c3a81._0x365dab,_0x5c3a81._0x1e5d0d,_0x5c3a81._0x221514,_0x5c3a81._0x302b9c)](_0xbb691b);function _0x7c61ed(_0x1e9394,_0x4fd06e,_0x6235d3,_0x1fd32a){return _0x5f10(_0x1fd32a-_0x4d670b._0x38b683,_0x4fd06e);}if(_0xa17481)return _0xa17481[_0x7c61ed(_0x5c3a81._0x14209b,_0x5c3a81._0x465401,_0x5c3a81._0x4792b9,0x3c4)]++,_0xa17481['value'];const _0x5ae7ee=_0x5b5cbf(_0xbb691b);function _0x510438(_0x409ac7,_0x22b1d0,_0x57f54d,_0x373c70){return _0x5f10(_0x373c70-_0x1a90a5._0x49fab0,_0x57f54d);}return _0x33c7d7[_0x510438(_0x5c3a81._0x1cc85a,_0x5c3a81._0x5e51f9,_0x5c3a81._0x3d34e6,0x338)](_0xbb691b,{'value':_0x5ae7ee,'refs':0x1}),_0x2832e6(_0xbb691b,!![]),_0x5ae7ee;}function _0x3d230d(_0x42f834){const _0x20dffc={_0x484514:0x2fd},_0x1e30ba={_0x1f5aec:0x368},_0x4280e4=_0x33c7d7['get'](_0x42f834);if(!_0x4280e4)throw new Error('Releasing\x20'+_0x2e6105(-_0x4a6d99._0x4efa48,-_0x4a6d99._0x1b4037,-0x2ed,-0x2ed)+'d\x20resource');function _0x2e6105(_0x3871db,_0x2ec3b3,_0x346723,_0x50d9e3){return _0x5f10(_0x3871db- -_0x1e30ba._0x1f5aec,_0x2ec3b3);}if(--_0x4280e4[_0x2e6105(-_0x4a6d99._0x2a9ce6,-0x2db,-0x2de,-0x2d5)]>-0x8a7*-0x4+0x2e*0x8e+-0x3c20)return;_0x4280e4['value'][_0x2dc6e1(_0x4a6d99._0x1f0cde,_0x4a6d99._0x4f4303,_0x4a6d99._0x564d77,_0x4a6d99._0x364b46)](),_0x33c7d7[_0x2e6105(-_0x4a6d99._0x5ec8e6,-_0x4a6d99._0x136bc4,-_0x4a6d99._0x11c1ed,-_0x4a6d99._0x22ebc8)](_0x42f834);function _0x2dc6e1(_0x321747,_0x491be2,_0x4e24a5,_0x2e03dc){return _0x5f10(_0x321747-_0x20dffc._0x484514,_0x491be2);}_0x2832e6(_0x42f834,![]);}function _0x2e431d(_0x571cf1){return async(_0x3cb492,..._0xb44c0d)=>{const _0x248f61=_0x1a21f8(_0x3cb492);try{return await _0x571cf1(_0x248f61,..._0xb44c0d);}finally{_0x3d230d(_0x3cb492);}};}function _0x2ea107(_0xe5136d){return(_0x1dd650,..._0x31e82c)=>{const _0x3bfe8d=_0x1a21f8(_0x1dd650);try{return _0xe5136d(_0x3bfe8d,..._0x31e82c);}finally{_0x3d230d(_0x1dd650);}};}function _0x27c27a(_0x237b02){const _0x53f58e={_0x213a53:0xdb,_0x332ae:0xbf,_0x573e9e:0xd1,_0x13e2bf:0xd3,_0x1cf62b:0xbf,_0x2b9b9f:0xac},_0x550788={_0x1d24d7:0x144};return(_0x5d33ca,..._0x54a34c)=>{const _0x577202=_0x1a21f8(_0x5d33ca),_0x382c17=_0x237b02(_0x577202,..._0x54a34c);_0x382c17['once'](_0x1b5e71(-_0x53f58e._0x213a53,-_0x53f58e._0x332ae,-_0x53f58e._0x573e9e,-_0x53f58e._0x13e2bf),()=>{_0x3d230d(_0x5d33ca);});function _0x1b5e71(_0x407d90,_0x4c8025,_0x2fcad9,_0x2b81ce){return _0x5f10(_0x2b81ce- -0x147,_0x407d90);}function _0x44e74d(_0x43dafe,_0x57edd6,_0x15f16b,_0x5333b9){return _0x5f10(_0x43dafe-_0x550788._0x1d24d7,_0x5333b9);}return _0x382c17['on'](_0x1b5e71(-_0x53f58e._0x1cf62b,-0xa6,-_0x53f58e._0x2b9b9f,-0xbd),safetyCatch),_0x382c17;};}};function noop(){}
1const e=require("safety-catch"),n=require("b4a");function t(){}module.exports.TRACKER_EVENTS={HAVE:"have-track",UNHAVE:"unhave-track"},module.exports.MEDIA_EVENTS={WANT:"want-track",UNWANT:"unwant-track",SIGNAL:"media-signal",PROXY_OPEN:"proxy-open",PROXY_CLOSE:"proxy-close"},module.exports.PRESENCE_EVENTS={PEER_PRESENT:"present",PEER_NOT_PRESENT:"not-present",STREAM_AVAILABLE:"stream-available",STREAM_UNAVAILABLE:"stream-unavailable",STREAM_STATUS_CHANGED:"stream-status-changed"},module.exports.encodeTrackId=function(e,n){return`${e}:${n}`},module.exports.decodeTrackId=function(e){const[n,t]=e.split(":");return{streamId:n,trackKind:t}},module.exports.getConnection=function(e,t){for(const r of e.connections)if(n.equals(r.remotePublicKey,t))return r;return null},module.exports.createResourceManager=function(n,r=t){const o=new Map;return{collection:o,open:c,release:u,subscription:function(n){return(t,...r)=>{const o=c(t),a=n(o,...r);return a.once("close",()=>{u(t)}),a.on("error",e),a}},method:function(e){return(n,...t)=>{const r=c(n);try{return e(r,...t)}finally{u(n)}}},asyncMethod:function(e){return async(n,...t)=>{const r=c(n);try{return await e(r,...t)}finally{u(n)}}}};function c(e){const t=o.get(e);if(t)return t.refs++,t.value;const c=n(e);return o.set(e,{value:c,refs:1}),r(e,!0),c}function u(e){const n=o.get(e);if(!n)throw new Error("Releasing an unopened resource");--n.refs>0||(n.value.close(),o.delete(e),r(e,!1))}};
@holepunchto/keet-call/lib/messages.js +1 -1
……@@ -1 +1 @@
1function _0x3938(_0x24e1f5,_0x3c62fa){const _0x1f77ca=_0x4623();return _0x3938=function(_0x320063,_0x5b5569){_0x320063=_0x320063-(0xdb*0xa+0x22ce+0x4*-0xa5d);let _0x169461=_0x1f77ca[_0x320063];return _0x169461;},_0x3938(_0x24e1f5,_0x3c62fa);}(function(_0x3c43f5,_0x5e540f){const _0x299949={_0x3ff6ea:0xf3,_0x1367f2:0xf9,_0x3849b0:0x107,_0x383224:0x10c,_0x298c0d:0xf7,_0x17c673:0x132,_0x565dc1:0x118,_0x1aa3c3:0x11c,_0x39916f:0xfb,_0xda2af2:0x11e,_0x3c8494:0x111,_0x23c5cb:0x33,_0x4c3e76:0x2e,_0x24dd8a:0x34,_0x4049cf:0x11d,_0x93dc1e:0x10a,_0x52716b:0x114,_0x578ad9:0x46,_0x41cb69:0x35,_0x5a9bf0:0x3b,_0x3282ea:0x103,_0x2761fb:0xf5,_0xb7cac:0x10d,_0x155477:0x104,_0x2f12c3:0x129,_0x545f3a:0x13f,_0xe9a2a6:0x13d,_0x3a7f41:0x102,_0x1d6db8:0x103,_0x31f197:0x117,_0x3e1841:0x10b,_0x5c7ffd:0x29,_0x2fba6d:0x3b,_0x75deb6:0x42,_0x28c550:0x43,_0x4e31e1:0x2c,_0x45ec97:0x58,_0xbdfb0d:0x27,_0x11c22a:0x17,_0x31297a:0x24,_0x144efd:0x1f},_0x376229={_0x1bc5fd:0x314},_0x446904={_0x4a8924:0x235};function _0x232d2c(_0x1dd460,_0xa44aa4,_0x14320a,_0x250278){return _0x3938(_0x1dd460- -_0x446904._0x4a8924,_0x14320a);}const _0x56328b=_0x3c43f5();function _0x36780c(_0x227ba8,_0x11ab31,_0xd03242,_0x19a0fb){return _0x3938(_0x19a0fb- -_0x376229._0x1bc5fd,_0x227ba8);}while(!![]){try{const _0x18180e=-parseInt(_0x36780c(-0xfc,-_0x299949._0x3ff6ea,-_0x299949._0x1367f2,-_0x299949._0x3849b0))/(-0x7*-0x94+0xbfe+-0x1009*0x1)*(parseInt(_0x36780c(-_0x299949._0x383224,-0xfe,-_0x299949._0x298c0d,-0x109))/(-0x805*-0x3+0x396+-0x1ba3))+-parseInt(_0x36780c(-_0x299949._0x17c673,-_0x299949._0x565dc1,-0x11d,-_0x299949._0x1aa3c3))/(-0x15e9+0x16f0+-0x14*0xd)+-parseInt(_0x36780c(-0x113,-_0x299949._0x39916f,-_0x299949._0xda2af2,-_0x299949._0x3c8494))/(0x1*0x23af+0xcf5*-0x2+-0x9c1)*(-parseInt(_0x232d2c(-_0x299949._0x23c5cb,-_0x299949._0x4c3e76,-_0x299949._0x24dd8a,-0x49))/(-0x1988+-0x26c4+-0x25*-0x1bd))+parseInt(_0x36780c(-_0x299949._0x4049cf,-0x10e,-_0x299949._0x93dc1e,-_0x299949._0x52716b))/(-0x2*-0xf8d+-0x17c7+-0x7*0x10b)*(-parseInt(_0x232d2c(-_0x299949._0x578ad9,-_0x299949._0x41cb69,-0x4d,-_0x299949._0x5a9bf0))/(0x1226+-0x2555*0x1+0x1336))+parseInt(_0x36780c(-_0x299949._0x3282ea,-_0x299949._0x2761fb,-_0x299949._0xb7cac,-_0x299949._0x155477))/(-0x224b+0x840+0x1a13*0x1)*(parseInt(_0x36780c(-_0x299949._0x2f12c3,-_0x299949._0x545f3a,-_0x299949._0xe9a2a6,-0x12a))/(-0x1f1+-0x19db*0x1+0x5f*0x4b))+-parseInt(_0x36780c(-_0x299949._0x3a7f41,-_0x299949._0x1d6db8,-_0x299949._0x31f197,-_0x299949._0x3e1841))/(-0x9*-0x415+-0x17*0xa6+-0x15c9*0x1)*(-parseInt(_0x232d2c(-0x2e,-_0x299949._0x5c7ffd,-_0x299949._0x2fba6d,-0x23))/(-0x1ebe+0x22c8+-0x5d*0xb))+parseInt(_0x232d2c(-_0x299949._0x75deb6,-_0x299949._0x28c550,-_0x299949._0x4e31e1,-_0x299949._0x45ec97))/(-0x16b1+-0x15f5*-0x1+-0x28*-0x5)*(parseInt(_0x232d2c(-_0x299949._0xbdfb0d,-_0x299949._0x11c22a,-_0x299949._0x31297a,-_0x299949._0x144efd))/(0x2*0x163+0x30b+-0x2*0x2e2));if(_0x18180e===_0x5e540f)break;else _0x56328b['push'](_0x56328b['shift']());}catch(_0x3a8105){_0x56328b['push'](_0x56328b['shift']());}}}(_0x4623,0x1*0x10d5a4+-0x136fd*-0x7+-0x10ae2c));function _0x4623(){const _0x2a7124=['424362FjdclV','exports','uint','buffer','TrackRespo','videoMuted','stMessage','alias','572058bAfpKm','preencode','235DwgKtH','35172InsFUo','PeerPresen','string','ceMessage','8143619XizYzp','present','10SnFvng','constructo','499834HoFJaB','key','3MZigLv','3757FyDkpj','age','128oxLXIE','start','array','HandshakeM','sage','StreamsMes','535698KqovHX','(((.+)+)+)','SignalMess','search','encode','77hCEMRa','json','TrackReque','apply','16668MwvyNi','audioMuted','fixed32','toString','decode'];_0x4623=function(){return _0x2a7124;};return _0x4623();}const _0x18cec2=(function(){const _0xedaaac={_0x1efd85:0x3ba};let _0xa304a7=!![];return function(_0x9bba7e,_0x31fc09){const _0x51f313={_0x39c93e:0x1c8},_0x5786f4=_0xa304a7?function(){function _0x28b760(_0x2f257a,_0x4e4821,_0x53c222,_0x121173){return _0x3938(_0x2f257a-_0x51f313._0x39c93e,_0x53c222);}if(_0x31fc09){const _0x27c75d=_0x31fc09[_0x28b760(_0xedaaac._0x1efd85,0x3a7,0x3b8,0x3b1)](_0x9bba7e,arguments);return _0x31fc09=null,_0x27c75d;}}:function(){};return _0xa304a7=![],_0x5786f4;};}()),_0x4dbab1=_0x18cec2(this,function(){const _0x10af48={_0x11a948:0x1ce,_0xe06ffe:0x1cd,_0x336042:0x1bf,_0x5ef76a:0x1b9,_0x2ae8f:0x1e1,_0x52c0f3:0x1f1,_0x56443d:0x1ce,_0x1a4a41:0x1c4,_0x13ef0d:0x1d5},_0x39dcf3={_0x5ac030:0x29},_0x1d4ec3={_0x4c336e:0xf8};function _0x3c5362(_0x1a1f3c,_0x472704,_0x1b46a3,_0x6b3a61){return _0x3938(_0x6b3a61- -_0x1d4ec3._0x4c336e,_0x1a1f3c);}function _0x4df716(_0x2a1db5,_0x20f158,_0x380b50,_0x4a66e0){return _0x3938(_0x380b50- -_0x39dcf3._0x5ac030,_0x2a1db5);}return _0x4dbab1[_0x4df716(_0x10af48._0x11a948,0x1e0,_0x10af48._0xe06ffe,_0x10af48._0x336042)]()[_0x4df716(0x1c7,_0x10af48._0x5ef76a,0x1c4,0x1c7)]('(((.+)+)+)'+'+$')['toString']()[_0x4df716(0x1e6,0x1dc,_0x10af48._0x2ae8f,_0x10af48._0x52c0f3)+'r'](_0x4dbab1)['search'](_0x4df716(_0x10af48._0x56443d,_0x10af48._0x1a4a41,0x1c2,_0x10af48._0x13ef0d)+'+$');});_0x4dbab1();function _0x150157(_0x2a9935,_0xe5e61d,_0x3df00f,_0x253079){const _0x262b0a={_0x18bcf0:0x2fe};return _0x3938(_0xe5e61d-_0x262b0a._0x18bcf0,_0x2a9935);}const c=require('compact-encoding'),Stream={'preencode'(_0x38f80e,_0x4ad563){const _0x21a59={_0x16e1db:0x343,_0x31a2b3:0x367,_0x3b58ae:0x35b,_0x1c2963:0x34f,_0x145a6c:0x169,_0x49243e:0x161,_0x597b82:0x150,_0xdf98c0:0x347,_0x2dd688:0x346},_0x40f1dc={_0x5c8711:0x151},_0x180f53={_0x3dc8c4:0x366};c[_0x3b94c9(_0x21a59._0x16e1db,0x358,0x348,0x34b)][_0x3b94c9(_0x21a59._0x31a2b3,_0x21a59._0x3b58ae,_0x21a59._0x1c2963,0x352)](_0x38f80e,-0xcdd+0x1*0x177+0xb66),c[_0x8552f5(-_0x21a59._0x145a6c,-_0x21a59._0x49243e,-0x173,-_0x21a59._0x597b82)]['preencode'](_0x38f80e,_0x4ad563['id']);function _0x8552f5(_0x818c65,_0x152f9c,_0x4eb2b0,_0x11fa91){return _0x3938(_0x152f9c- -_0x180f53._0x3dc8c4,_0x11fa91);}function _0x3b94c9(_0x3f3dc1,_0x398c09,_0x13f5d1,_0x459c07){return _0x3938(_0x459c07-_0x40f1dc._0x5c8711,_0x3f3dc1);}c['string'][_0x3b94c9(0x368,_0x21a59._0xdf98c0,_0x21a59._0x2dd688,0x352)](_0x38f80e,_0x4ad563['name']);},'encode'(_0x232b1c,_0x3183a7){const _0x435760={_0x2be0ae:0x575,_0x22268e:0x587,_0x26c223:0x57f,_0x27ba48:0x585,_0x196e99:0x585,_0x29bab9:0x560,_0x297698:0x236,_0x581281:0x23b,_0x3f5ae9:0x230,_0xb43391:0x241,_0x1ec2e7:0x243,_0x55aa4f:0x238,_0x3a6926:0x24a,_0xdb7dd3:0x24f,_0x2d8584:0x245,_0x4dd2d0:0x567,_0x30a283:0x571},_0x28e743={_0x140592:0x36e},_0x45db2f={_0x2730d4:0x4d};function _0x2fd035(_0x2d85d9,_0x1cf598,_0x22f6c4,_0xc0faaf){return _0x3938(_0x1cf598-_0x45db2f._0x2730d4,_0x22f6c4);}const _0x261f7b=_0x232b1c[_0x5f539e(_0x435760._0x2be0ae,_0x435760._0x22268e,_0x435760._0x26c223,_0x435760._0x27ba48)]++;c[_0x5f539e(_0x435760._0x196e99,0x56b,0x573,_0x435760._0x29bab9)][_0x2fd035(_0x435760._0x297698,_0x435760._0x581281,_0x435760._0x3f5ae9,0x246)](_0x232b1c,_0x3183a7['id']),c['string']['encode'](_0x232b1c,_0x3183a7['name']);let _0x2d8a76=0xb3*-0x16+-0x21b1+-0x11*-0x2e3;function _0x5f539e(_0x59048f,_0x35ae16,_0x19bcdd,_0x1ae593){return _0x3938(_0x19bcdd-_0x28e743._0x140592,_0x35ae16);}_0x3183a7[_0x2fd035(0x231,_0x435760._0xb43391,_0x435760._0x1ec2e7,0x244)]&&(_0x2d8a76|=-0x1630+-0x44b*-0x3+0x4*0x254),_0x3183a7[_0x2fd035(_0x435760._0x55aa4f,_0x435760._0x3a6926,_0x435760._0xdb7dd3,_0x435760._0x2d8584)]&&(_0x2d8a76|=-0x1c3f+0x4*0x356+-0xb*-0x15b),_0x232b1c[_0x5f539e(_0x435760._0x4dd2d0,_0x435760._0x30a283,0x569,0x572)][_0x261f7b]=_0x2d8a76;},'decode'(_0x2aa6cd){const _0x3b324c={_0x5747a1:0x267,_0x4c20a2:0x252,_0x2f35d1:0x24e,_0x26ccc3:0x245,_0xbc267f:0x24e,_0x2745e8:0x25c,_0x420fc5:0x192,_0x2e9bda:0x1ad,_0x2e706f:0x190,_0x20d2f6:0x19c},_0x4bcab6={_0x49afa0:0x5b},_0x153793={_0x28569b:0x5b};function _0x30f481(_0x4cd2d3,_0x520268,_0x549a91,_0x529134){return _0x3938(_0x520268-_0x153793._0x28569b,_0x529134);}function _0x2e27b3(_0x9d3ffe,_0x59bc55,_0x2d85b7,_0x377438){return _0x3938(_0x377438- -_0x4bcab6._0x49afa0,_0x9d3ffe);}const _0x589160=c['uint'][_0x30f481(_0x3b324c._0x5747a1,_0x3b324c._0x4c20a2,_0x3b324c._0x2f35d1,0x243)](_0x2aa6cd);return{'id':c['string'][_0x30f481(_0x3b324c._0x26ccc3,0x252,_0x3b324c._0xbc267f,_0x3b324c._0x2745e8)](_0x2aa6cd),'name':c['string'][_0x2e27b3(_0x3b324c._0x420fc5,_0x3b324c._0x2e9bda,_0x3b324c._0x2e706f,_0x3b324c._0x20d2f6)](_0x2aa6cd),'audioMuted':(_0x589160&-0x2*-0x9eb+0x47+-0x141c)!==0x2bb+-0x11fb+-0x7a*-0x20,'videoMuted':(_0x589160&-0x1*-0x48d+-0x2*0x30+-0xb*0x61)!==0x627+-0x3*0xca6+0x1fcb};}};module[_0x150157(0x4f7,0x4f7,0x4eb,0x4f7)][_0x5d44fc(0x513,0x528,0x51b,0x512)+_0x5d44fc(0x512,0x50c,0x509,0x503)]=c[_0x150157(0x509,0x510,0x51f,0x50a)](Stream),module['exports'][_0x5d44fc(0x52e,0x523,0x542,0x51c)+_0x150157(0x505,0x504,0x4fc,0x512)]={'preencode'(_0x3534be,_0x58ae34){const _0x291284={_0x50fada:0x1d8,_0x5985ee:0x1c2,_0x57990c:0x1dd,_0x3a13fc:0x1c8,_0x2243c1:0x1d4,_0x2805bd:0x1d3,_0x33e8e4:0x1d1,_0x3c23df:0x1e5,_0x51ea8e:0x1d3,_0x455df6:0x1c6,_0x14b64a:0x1d5,_0x413977:0x1c6},_0x52d1df={_0x4a857c:0x1fd,_0x4a0e29:0x1e1},_0xb5dbe1={_0x21eb12:0x6d0,_0x396da9:0x85,_0x918b68:0x1e6};function _0x18713b(_0x5f3fcf,_0x5a1c64,_0x1dc5f6,_0x2a58ff){return _0x150157(_0x1dc5f6,_0x5f3fcf- -_0xb5dbe1._0x21eb12,_0x1dc5f6-_0xb5dbe1._0x396da9,_0x2a58ff-_0xb5dbe1._0x918b68);}function _0x274ee1(_0x11b6ad,_0x38f023,_0x38d6cc,_0x1ba588){return _0x150157(_0x38d6cc,_0x11b6ad- -_0x52d1df._0x4a857c,_0x38d6cc-_0x52d1df._0x4a0e29,_0x1ba588-0x1a0);}c[_0x18713b(-_0x291284._0x50fada,-0x1ed,-_0x291284._0x5985ee,-0x1e8)]['preencode'](_0x3534be,0xd87+0x16*0x8e+0x59*-0x4a),c[_0x18713b(-_0x291284._0x57990c,-_0x291284._0x3a13fc,-_0x291284._0x2243c1,-_0x291284._0x2805bd)][_0x18713b(-_0x291284._0x33e8e4,-0x1e1,-_0x291284._0x3c23df,-_0x291284._0x51ea8e)](_0x3534be,_0x58ae34[_0x18713b(-_0x291284._0x455df6,-_0x291284._0x14b64a,-_0x291284._0x413977,-0x1da)]);},'encode'(_0x31868e,_0x2e170f){const _0x46f1d5={_0x18e332:0x129,_0x1baf1c:0x125,_0x44a039:0x12f,_0x5c1aee:0xac,_0x2ad6af:0xb4,_0xaa61f4:0xc2,_0x57650e:0xb7,_0x3643a1:0x140,_0x3ab648:0x12e,_0x559dc6:0x154,_0x3bf132:0x143},_0x3edaad={_0x2f3758:0x46a,_0x163266:0xce},_0x31e54c={_0x5f1da9:0x62c,_0x4be3b7:0xd6,_0x5d865b:0x28};c[_0x99e5a(-0x134,-_0x46f1d5._0x18e332,-_0x46f1d5._0x1baf1c,-_0x46f1d5._0x44a039)][_0x2ed5b6(0xb9,_0x46f1d5._0x5c1aee,0xae,0xba)](_0x31868e,_0x2e170f[_0x2ed5b6(_0x46f1d5._0x2ad6af,_0x46f1d5._0xaa61f4,0xc8,_0x46f1d5._0x57650e)]?-0x18a1*-0x1+0x122c+-0xb*0x3e4:0x59e*0x4+0x2*-0x130b+-0x7cf*-0x2);function _0x99e5a(_0x402a0c,_0x39a0c6,_0x5d8c6b,_0x236308){return _0x150157(_0x5d8c6b,_0x402a0c- -_0x31e54c._0x5f1da9,_0x5d8c6b-_0x31e54c._0x4be3b7,_0x236308-_0x31e54c._0x5d865b);}function _0x2ed5b6(_0x68d590,_0x1ba0bc,_0x119894,_0x4415f2){return _0x5d44fc(_0x119894- -_0x3edaad._0x2f3758,_0x68d590,_0x119894-_0x3edaad._0x163266,_0x4415f2-0x15b);}c['fixed32'][_0x99e5a(-_0x46f1d5._0x3643a1,-_0x46f1d5._0x3ab648,-_0x46f1d5._0x559dc6,-_0x46f1d5._0x3bf132)](_0x31868e,_0x2e170f['key']);},'decode'(_0x14cf36){const _0x32348d={_0x26c68d:0x44a,_0xf4a871:0x435,_0xdfa92e:0x447,_0x40e16:0x13,_0x2b1939:0xe,_0x50eb51:0x44b,_0x278db6:0x45c},_0x507934={_0x3dfc13:0xda,_0x24e98e:0xf5,_0x1cf05b:0x107},_0x1c28c1={_0x56a72d:0x37,_0x307493:0xaf};function _0x18de15(_0x20381b,_0x48859b,_0x4f5883,_0x1e40e6){return _0x5d44fc(_0x4f5883- -0x524,_0x1e40e6,_0x4f5883-_0x1c28c1._0x56a72d,_0x1e40e6-_0x1c28c1._0x307493);}function _0x481c12(_0x40c7c9,_0x3768fe,_0x573146,_0x16d1d3){return _0x5d44fc(_0x40c7c9- -_0x507934._0x3dfc13,_0x3768fe,_0x573146-_0x507934._0x24e98e,_0x16d1d3-_0x507934._0x1cf05b);}return{'present':!!c[_0x481c12(_0x32348d._0x26c68d,_0x32348d._0xf4a871,_0x32348d._0xdfa92e,0x445)][_0x18de15(-_0x32348d._0x40e16,-0x14,-0x3,-_0x32348d._0x2b1939)](_0x14cf36),'key':c['fixed32'][_0x481c12(0x447,_0x32348d._0x50eb51,_0x32348d._0x278db6,0x431)](_0x14cf36)};}};function _0x5d44fc(_0x33af65,_0x436a2f,_0x47719d,_0x586132){const _0x1b3e21={_0x1f2b3b:0x32a};return _0x3938(_0x33af65-_0x1b3e21._0x1f2b3b,_0x436a2f);}module[_0x5d44fc(0x523,0x51e,0x538,0x527)][_0x150157(0x523,0x511,0x520,0x504)+'essage']={'preencode'(_0x45de21,_0x5c038a){const _0x14a5af={_0x27df65:0xe5,_0x59d42a:0xdf,_0x577158:0xea,_0x2240ab:0xe8,_0x241bb4:0xe2},_0x4f9787={_0x246ecc:0x6e},_0x375a3b={_0xe2426c:0x88,_0x24c2c0:0x159,_0xc579c2:0x1eb};function _0x398604(_0x19f1ad,_0x271206,_0x46cd63,_0x3f55a9){return _0x150157(_0x19f1ad,_0x3f55a9- -_0x375a3b._0xe2426c,_0x46cd63-_0x375a3b._0x24c2c0,_0x3f55a9-_0x375a3b._0xc579c2);}function _0x5739e7(_0x362ceb,_0x3aac11,_0x4985fb,_0x5e0838){return _0x5d44fc(_0x362ceb- -0x441,_0x3aac11,_0x4985fb-0x1c4,_0x5e0838-_0x4f9787._0x246ecc);}c[_0x5739e7(0xe3,_0x14a5af._0x27df65,0xdc,_0x14a5af._0x59d42a)][_0x5739e7(_0x14a5af._0x577158,_0x14a5af._0x2240ab,_0x14a5af._0x241bb4,0xeb)](_0x45de21,_0x5c038a['alias']);},'encode'(_0x2b5c29,_0x36921e){const _0x569f00={_0x48776f:0x2c,_0x155383:0x20,_0x11a15c:0x2d,_0xe1918e:0x184,_0x4c8230:0x16c,_0x3e8e54:0x17b},_0x4b93e9={_0xa9c39f:0x504,_0x5e3d07:0x1d5,_0x3f230e:0xf2};function _0x3f3c0c(_0x4b0bc3,_0x34272b,_0x44c398,_0x525fe1){return _0x150157(_0x34272b,_0x525fe1- -0x382,_0x44c398-0xe,_0x525fe1-0x9c);}function _0x166b54(_0x161bda,_0xddeac1,_0x1995df,_0x51dde0){return _0x5d44fc(_0xddeac1- -_0x4b93e9._0xa9c39f,_0x1995df,_0x1995df-_0x4b93e9._0x5e3d07,_0x51dde0-_0x4b93e9._0x3f230e);}c[_0x166b54(_0x569f00._0x48776f,_0x569f00._0x155383,_0x569f00._0x11a15c,0x29)]['encode'](_0x2b5c29,_0x36921e[_0x3f3c0c(_0x569f00._0xe1918e,_0x569f00._0x4c8230,_0x569f00._0xe1918e,_0x569f00._0x3e8e54)]);},'decode'(_0x5cac6e){const _0xe68634={_0x9c1f70:0x5bc},_0x13cff6={_0x26791d:0xd1,_0x42af64:0x39};function _0x25fcbe(_0x11bf77,_0x1bde80,_0x54c42b,_0x5f5de4){return _0x150157(_0x11bf77,_0x5f5de4-_0x13cff6._0x26791d,_0x54c42b-_0x13cff6._0x42af64,_0x5f5de4-0x1a4);}return{'alias':c[_0x25fcbe(0x5cf,0x5c0,_0xe68634._0x9c1f70,0x5c9)]['decode'](_0x5cac6e)};}},module[_0x150157(0x4fb,0x4f7,0x4e2,0x4e7)][_0x150157(0x505,0x4ef,0x4e3,0x4e5)+_0x150157(0x4f8,0x4fc,0x511,0x4e9)]=c['buffer'],module[_0x150157(0x504,0x4f7,0x4f3,0x4eb)][_0x5d44fc(0x526,0x528,0x517,0x515)+'nseMessage']=c[_0x5d44fc(0x525,0x510,0x52f,0x52e)],module[_0x5d44fc(0x523,0x511,0x518,0x534)][_0x150157(0x4e4,0x4ea,0x4d4,0x4d9)+_0x5d44fc(0x539,0x531,0x54c,0x540)]=c[_0x150157(0x4ee,0x4ee,0x4ec,0x4f0)];
1const e=require("compact-encoding"),d={preencode(d,o){e.uint.preencode(d,0),e.string.preencode(d,o.id),e.string.preencode(d,o.name)},encode(d,o){const n=d.start++;e.string.encode(d,o.id),e.string.encode(d,o.name);let s=0;o.audioMuted&&(s|=1),o.videoMuted&&(s|=2),d.buffer[n]=s},decode(d){const o=e.uint.decode(d);return{id:e.string.decode(d),name:e.string.decode(d),audioMuted:!!(1&o),videoMuted:!!(2&o)}}};module.exports.StreamsMessage=e.array(d),module.exports.PeerPresenceMessage={preencode(d,o){e.uint.preencode(d,1),e.fixed32.preencode(d,o.key)},encode(d,o){e.uint.encode(d,o.present?1:0),e.fixed32.encode(d,o.key)},decode:d=>({present:!!e.uint.decode(d),key:e.fixed32.decode(d)})},module.exports.HandshakeMessage={preencode(d,o){e.uint.preencode(d,o.alias)},encode(d,o){e.uint.encode(d,o.alias)},decode:d=>({alias:e.uint.decode(d)})},module.exports.TrackRequestMessage=e.buffer,module.exports.TrackResponseMessage=e.buffer,module.exports.SignalMessage=e.json;
@holepunchto/keet-call/package.json +1 -1
……@@ -1,6 +1,6 @@
11{
22 "name": "@holepunchto/keet-call",
3 "version": "10.3.1",
3 "version": "10.3.3",
44 "description": "Track management and relaying for Keet",
55 "main": "client/index.js",
66 "files": [
@holepunchto/keet-call/server/index.js +1 -1
……@@ -1 +1 @@
1(function(_0x19c58c,_0x3cd2ee){const _0x10a984={_0xa889c8:0x3ba,_0x270756:0x3a0,_0x4fdad3:0x393,_0x4d1cce:0x391,_0x11a78b:0x63,_0x1ea304:0x6e,_0x3ad2a2:0x46,_0x13fbab:0x43,_0x39f5cb:0x66,_0x1722f4:0x66,_0x4d3d8a:0x354,_0x45e184:0x370,_0x534307:0x38d,_0x4724d2:0x415,_0x5f5d6e:0x3c2,_0x53ff37:0x3e7,_0x42b1a3:0x371,_0x2bdb33:0x394,_0x4e91f4:0x4b,_0x3ff0be:0x72,_0x25d22d:0x7f,_0x4556f:0x8a,_0x38272b:0x5b,_0x17b023:0x3e9,_0x340793:0x3ea,_0x11adf6:0x40a,_0xf3103e:0x3c3,_0x372a22:0x3eb,_0x24922a:0x7a,_0xab9f45:0xb4,_0x15abca:0xda,_0xfb1475:0xae},_0x2613a1={_0x409b25:0x2b6},_0x25a3d3={_0x1f5669:0x19c};function _0x17d0ae(_0x3b5e73,_0x45cd92,_0x325bd9,_0x272d5a){return _0x5b92(_0x272d5a-_0x25a3d3._0x1f5669,_0x3b5e73);}function _0x353619(_0x5d16a4,_0x1c7d1b,_0x3d1cb9,_0x47d940){return _0x5b92(_0x1c7d1b- -_0x2613a1._0x409b25,_0x5d16a4);}const _0x20900b=_0x19c58c();while(!![]){try{const _0x22f2a0=-parseInt(_0x17d0ae(_0x10a984._0xa889c8,_0x10a984._0x270756,_0x10a984._0x4fdad3,_0x10a984._0x4d1cce))/(-0x52*0x14+0xa4e*0x3+-0x1881)*(parseInt(_0x353619(-_0x10a984._0x11a78b,-_0x10a984._0x1ea304,-0x67,-_0x10a984._0x3ad2a2))/(0x9bf+-0x1471+0xab4))+-parseInt(_0x353619(-_0x10a984._0x13fbab,-_0x10a984._0x39f5cb,-_0x10a984._0x1722f4,-0x88))/(-0x35e+0x1b4e+-0x31*0x7d)*(-parseInt(_0x17d0ae(0x38f,_0x10a984._0x4d3d8a,_0x10a984._0x45e184,_0x10a984._0x534307))/(-0xc2f+-0xf9a*-0x2+-0x1301))+parseInt(_0x17d0ae(_0x10a984._0x4724d2,_0x10a984._0x5f5d6e,0x421,_0x10a984._0x53ff37))/(0x2*0xbcf+-0xc91*-0x3+-0x3d4c)+parseInt(_0x17d0ae(_0x10a984._0x42b1a3,0x3af,0x35b,_0x10a984._0x2bdb33))/(-0x1233*0x1+0x14*-0x1+-0x124d*-0x1)+parseInt(_0x353619(-_0x10a984._0x4e91f4,-_0x10a984._0x3ff0be,-0x93,-0x3d))/(-0x86b+0x7c*-0x3f+0x26f6)*(-parseInt(_0x353619(-_0x10a984._0x25d22d,-0x75,-_0x10a984._0x4556f,-_0x10a984._0x38272b))/(0x19a1+0x2457+-0x3df0))+-parseInt(_0x17d0ae(0x3b7,0x3c6,0x424,_0x10a984._0x17b023))/(0x71*-0x43+-0x25f*0xd+-0x9*-0x6b7)+parseInt(_0x17d0ae(_0x10a984._0x340793,_0x10a984._0x11adf6,_0x10a984._0xf3103e,_0x10a984._0x372a22))/(-0x105e+-0x2*-0xf5f+-0x16f*0xa)*(-parseInt(_0x353619(-_0x10a984._0x24922a,-_0x10a984._0xab9f45,-_0x10a984._0x15abca,-_0x10a984._0xfb1475))/(0xa*-0x20c+-0xa*-0x217+-0x63));if(_0x22f2a0===_0x3cd2ee)break;else _0x20900b['push'](_0x20900b['shift']());}catch(_0x3d0fb3){_0x20900b['push'](_0x20900b['shift']());}}}(_0x59f9,0x65dd7*-0x1+-0x2*0x45fd3+0x1*0x13a0f9));const _0x5bd6cc=(function(){let _0x2c9876=!![];return function(_0x4ea4cb,_0x7d99dc){const _0x43c4bf={_0x3eaf09:0x163,_0x5d29f4:0x190,_0x57fbab:0x155,_0x585508:0x153},_0x2e64ac={_0x43d53b:0xcd},_0x491b54=_0x2c9876?function(){function _0x183f9b(_0x474cff,_0x4e8fa3,_0x22e32c,_0x4175fb){return _0x5b92(_0x474cff- -_0x2e64ac._0x43d53b,_0x22e32c);}if(_0x7d99dc){const _0x26b1d4=_0x7d99dc[_0x183f9b(_0x43c4bf._0x3eaf09,_0x43c4bf._0x5d29f4,_0x43c4bf._0x57fbab,_0x43c4bf._0x585508)](_0x4ea4cb,arguments);return _0x7d99dc=null,_0x26b1d4;}}:function(){};return _0x2c9876=![],_0x491b54;};}()),_0xd45977=_0x5bd6cc(this,function(){const _0x59f86f={_0x259c2f:0x535,_0x32fcf8:0x56e,_0x1f0d96:0x5a1,_0xba1647:0x55d,_0x56e5fe:0x1b5,_0x288b8e:0x1eb,_0x51fc3b:0x1c2,_0x708de3:0x1b6,_0x5b9963:0x1e2,_0xe97ae4:0x20d,_0x471452:0x1b0,_0x3897dd:0x1a7,_0x2e2151:0x188,_0x57bc06:0x1c3,_0x3438d2:0x1b8,_0x48b326:0x175,_0x1dba9a:0x1a5,_0x3c9d5c:0x1cd,_0x3f6812:0x563,_0x1e3def:0x559,_0x47b0b0:0x581,_0x5d13cd:0x580},_0x4f5383={_0x595d0a:0x3cd};function _0x2369a0(_0x5e91b6,_0x3b69b6,_0xd129b7,_0x4380b3){return _0x5b92(_0x5e91b6- -_0x4f5383._0x595d0a,_0x3b69b6);}function _0x367ea5(_0x1eaf2e,_0xeca8cf,_0x25e320,_0x3260fe){return _0x5b92(_0xeca8cf-0x36e,_0x25e320);}return _0xd45977[_0x367ea5(_0x59f86f._0x259c2f,_0x59f86f._0x32fcf8,_0x59f86f._0x1f0d96,_0x59f86f._0xba1647)]()[_0x2369a0(-_0x59f86f._0x56e5fe,-_0x59f86f._0x288b8e,-_0x59f86f._0x51fc3b,-_0x59f86f._0x708de3)](_0x2369a0(-_0x59f86f._0x5b9963,-_0x59f86f._0xe97ae4,-_0x59f86f._0x471452,-_0x59f86f._0x3897dd)+'+$')['toString']()[_0x2369a0(-_0x59f86f._0x2e2151,-_0x59f86f._0x57bc06,-_0x59f86f._0x3438d2,-_0x59f86f._0x48b326)+'r'](_0xd45977)[_0x2369a0(-_0x59f86f._0x56e5fe,-_0x59f86f._0x1dba9a,-0x18f,-_0x59f86f._0x3c9d5c)](_0x367ea5(_0x59f86f._0x3f6812,_0x59f86f._0x1e3def,_0x59f86f._0x47b0b0,_0x59f86f._0x5d13cd)+'+$');});_0xd45977();function _0x59f9(){const _0x2fffc4=['allocUnsaf','2043710YJGglV','roxyUpdate','3632517dhpDLb','Presence','3250yGIhGv','31206DIbYZS','add','ByStream','send','deauthoriz','MediaSigna','_activateC','_trackersB','Proxy','closed','_deactivat','delete','removeList','subscribeP','unregister','eCall','trySend','(((.+)+)+)','has','_authorize','leavePeer','lAlias','rawStream','80xtAfcT','icKey','debugSetHa','removeConn','109aAcmPS','registerPr','treamData','2086914bvkmbh','ener','vate','_connectio','byteLength','encode','close','callId','toString','resence','5258hNcuOa','_prefixesB','_leavePeer','_subscribe','subarray','_updateCal','_proxiesBy','call-inact','ionclosed','size','joinPeer','addConnect','all','ion','Call','yCallId','yLocalAlia','ProxyUpdat','subscribeM','set','nsBySwarmI','tivateCall','search','internalDe','handleRawS','ection','sent','llId','values','ediaSignal','_setPresen','message','_activated','decode','Calls','signalMedi','_onconnect','callIsActi','remotePubl','firewall','value','_joinPeer','_haveFilte','_rawMuxers','localAlias','_presenceB','apply','swarm','getPresenc','veFilter','deactivate','bind','_onmessage','connection','_onConnect','emit','exports','_signalMed','ent','mediaIsAct','setPresenc','call-activ','get','16YdgsmU','_mediaByCa','RemoteAlia','57092lzIxMH','constructo','ive','_getPresen','1716PbOvyI','setNotPres'];_0x59f9=function(){return _0x2fffc4;};return _0x59f9();}function _0xf07c5f(_0x4c8d08,_0x122951,_0x42f19f,_0x3c1f90){const _0x20df2a={_0x3bec27:0x2b9};return _0x5b92(_0x3c1f90- -_0x20df2a._0x3bec27,_0x4c8d08);}function _0x1e9b7e(_0x795b09,_0x2943a3,_0x38289b,_0x1db6cb){const _0x54d1cf={_0x55640a:0x239};return _0x5b92(_0x795b09-_0x54d1cf._0x55640a,_0x2943a3);}const safetyCatch=require('safety-catch'),HypercoreId=require('hypercore-id-encoding'),b4a=require('b4a'),{EventEmitter}=require('events'),{createResourceManager}=require('../lib/common'),MediaServer=require('./media'),PresenceServer=require('./presence'),MAGIC=-0x1b9a+-0x1ff4*0x1+0x3c6f,MAX_ALIAS=-0xa4*0x3a+0x1bad+0x1*0xa7b;function _0x5b92(_0x5d87ae,_0x375dea){const _0x56d303=_0x59f9();return _0x5b92=function(_0x56f02e,_0x3f2ff8){_0x56f02e=_0x56f02e-(-0x655*0x5+0xb4*0x3+0x2*0xfbc);let _0xdff952=_0x56d303[_0x56f02e];return _0xdff952;},_0x5b92(_0x5d87ae,_0x375dea);}class RawStreamMuxer{constructor(_0x5a8402){const _0x89e4c9={_0x595d2d:0x3cb,_0x5f0a9a:0x3ae,_0x5267db:0x62f,_0x54eaea:0x60b,_0x3fed31:0x613,_0x325cf8:0x604,_0x5b9e9c:0x3fa,_0x5916d0:0x392,_0x50486e:0x38d,_0x2594e0:0x36a,_0x1a0a88:0x385,_0x28b4dd:0x37d,_0x4892cd:0x3d7,_0x20fe74:0x3ec,_0x530205:0x405,_0x11f9a5:0x403,_0x34dd07:0x3a6,_0xbe685e:0x38c,_0x3510ff:0x38e,_0x4d0505:0x60c,_0x48e6cd:0x61e,_0x212200:0x616,_0x3114d4:0x5e3,_0x57434a:0x3bb,_0x31c154:0x384,_0x26504e:0x387,_0x3be6e6:0x5f7,_0x5887e:0x62d},_0x4f96dc={_0x252704:0x3d6};this[_0x580c3b(_0x89e4c9._0x595d2d,_0x89e4c9._0x5f0a9a,0x3ff,0x3f8)]=_0x5a8402,this[_0x3fabcf(_0x89e4c9._0x5267db,_0x89e4c9._0x54eaea,_0x89e4c9._0x3fed31,_0x89e4c9._0x325cf8)]=![];function _0x580c3b(_0x2edf1b,_0x560b2,_0x2ec3ec,_0x1a0c14){return _0x5b92(_0x2edf1b-0x194,_0x2ec3ec);}this[_0x580c3b(0x3c2,_0x89e4c9._0x5b9e9c,_0x89e4c9._0x5916d0,_0x89e4c9._0x50486e)]=-0x15b+0x1*-0x10d5+0x1230,this[_0x580c3b(0x39c,_0x89e4c9._0x2594e0,_0x89e4c9._0x1a0a88,_0x89e4c9._0x28b4dd)+_0x580c3b(_0x89e4c9._0x4892cd,_0x89e4c9._0x20fe74,_0x89e4c9._0x530205,_0x89e4c9._0x11f9a5)+'s']=new Array(MAX_ALIAS),this['_prefixesB'+_0x580c3b(_0x89e4c9._0x34dd07,_0x89e4c9._0xbe685e,0x38c,_0x89e4c9._0x3510ff)+'s']=new Array(MAX_ALIAS),this[_0x3fabcf(_0x89e4c9._0x4d0505,0x60b,_0x89e4c9._0x4d0505,_0x89e4c9._0x48e6cd)]=this['_onMessage'][_0x3fabcf(_0x89e4c9._0x54eaea,0x616,_0x89e4c9._0x212200,_0x89e4c9._0x3114d4)](this);function _0x3fabcf(_0x18ffd6,_0x22cc29,_0x5468dc,_0x562933){return _0x5b92(_0x18ffd6-_0x4f96dc._0x252704,_0x562933);}this[_0x580c3b(_0x89e4c9._0x595d2d,0x3e7,_0x89e4c9._0x57434a,0x39d)][_0x580c3b(_0x89e4c9._0x31c154,_0x89e4c9._0x26504e,0x3bb,0x376)]['on'](_0x3fabcf(_0x89e4c9._0x3be6e6,_0x89e4c9._0x3fed31,0x5d1,_0x89e4c9._0x5887e),this['_onmessage']);}['_onMessage'](_0x5d6e75){const _0x481170={_0x5586ac:0x83,_0x225271:0xa8,_0x5f38bb:0xbc,_0x48ccda:0xd9,_0x43759c:0xd8,_0x52425a:0xc8,_0x4dc254:0x99,_0xa4d16e:0x63,_0x3b744f:0x96,_0x4df795:0x169,_0x44b498:0x166,_0x776d4:0xea,_0x53a625:0xe5,_0x32aa7d:0xf8,_0x2967e7:0xc1,_0x5e4b88:0x161,_0x2ead79:0x147},_0x206330={_0xa1292b:0x2dc};if(this[_0x4d0689(-0x94,-_0x481170._0x5586ac,-0x65,-_0x481170._0x225271)])return;function _0x358d7b(_0x5c4b97,_0x3f0256,_0x5466a2,_0x2fd337){return _0x5b92(_0x5c4b97- -0x367,_0x2fd337);}const _0x5985a8=_0x5d6e75[-0xa9*-0x3b+0xc0+-0x27b3*0x1];function _0x4d0689(_0x2d34f8,_0x149859,_0x41acda,_0x14828d){return _0x5b92(_0x149859- -_0x206330._0xa1292b,_0x14828d);}const _0x3c0d55=this[_0x4d0689(-_0x481170._0x5f38bb,-0xd4,-_0x481170._0x48ccda,-_0x481170._0x43759c)+_0x4d0689(-_0x481170._0x52425a,-_0x481170._0x4dc254,-_0x481170._0xa4d16e,-_0x481170._0x3b744f)+'s'][_0x5985a8];if(!_0x3c0d55)return;_0x3c0d55[_0x358d7b(-0x14d,-_0x481170._0x4df795,-_0x481170._0x44b498,-0x11a)+_0x4d0689(-_0x481170._0x776d4,-_0x481170._0x53a625,-_0x481170._0x32aa7d,-_0x481170._0x2967e7)](_0x5d6e75[_0x358d7b(-_0x481170._0x5e4b88,-_0x481170._0x2ead79,-_0x481170._0x44b498,-0x126)](0x5*0x59b+-0x6f9*-0x5+-0x3ee2));}['createLoca'+_0x1e9b7e(0x428,0x44d,0x3ff,0x403)](){const _0x1fcedf={_0x995e92:0x9c,_0x30c7c0:0x66,_0x3e8a89:0x63,_0xcb29b8:0x96,_0x1985d3:0x40,_0x4efb12:0x3c,_0x5e711c:0x2d1,_0x11f579:0x29e,_0x4a83b0:0x3c,_0x297890:0x68,_0x569f89:0x53,_0x1e64ae:0x28a,_0x18c16d:0x273,_0x36b047:0x2be,_0x5f95bc:0x27a,_0x42fbbc:0x7d,_0x3f3696:0x9d,_0x3a65b5:0x28d,_0x41a836:0x2d3,_0x115139:0x283},_0x3cba44={_0x1ec6fc:0x1b2,_0x55de49:0xae,_0x18b6b8:0x152},_0x5d6c4d={_0x5275fa:0x5};function _0x3f15cb(_0xda5004,_0xeb0838,_0x403bb7,_0x103b85){return _0x1e9b7e(_0xda5004- -0x4ca,_0x103b85,_0x403bb7-0x43,_0x103b85-_0x5d6c4d._0x5275fa);}this[_0x3f15cb(-0x63,-0x80,-_0x1fcedf._0x995e92,-_0x1fcedf._0x30c7c0)]=(this[_0x3f15cb(-_0x1fcedf._0x3e8a89,-_0x1fcedf._0xcb29b8,-_0x1fcedf._0x1985d3,-_0x1fcedf._0x4efb12)]+(-0x7*0x33b+0x817*0x1+0xe87))%MAX_ALIAS;const _0x34905c=b4a[_0x1fbcf4(_0x1fcedf._0x5e711c,0x2b6,_0x1fcedf._0x11f579,0x299)+'e'](-0x498+-0x254e+0x4a8*0x9);_0x34905c[-0x2209+-0xfb*0x2+-0x5f*-0x61]=this[_0x3f15cb(-0x63,-_0x1fcedf._0x4a83b0,-_0x1fcedf._0x297890,-_0x1fcedf._0x569f89)],_0x34905c[-0x20b5+-0x216*-0x1+0x1ea0]=MAGIC;function _0x1fbcf4(_0x5899a5,_0x2da846,_0xa14810,_0x1fdba4){return _0x1e9b7e(_0x5899a5- -_0x3cba44._0x1ec6fc,_0xa14810,_0xa14810-_0x3cba44._0x55de49,_0x1fdba4-_0x3cba44._0x18b6b8);}return this[_0x1fbcf4(_0x1fcedf._0x1e64ae,_0x1fcedf._0x18c16d,_0x1fcedf._0x36b047,_0x1fcedf._0x5f95bc)+_0x3f15cb(-0x7f,-0x73,-_0x1fcedf._0x42fbbc,-_0x1fcedf._0x3f3696)+'s'][this[_0x1fbcf4(0x2b5,_0x1fcedf._0x3a65b5,_0x1fcedf._0x41a836,_0x1fcedf._0x115139)]]=_0x34905c,this['localAlias'];}[_0x1e9b7e(0x48c,0x4c4,0x4aa,0x48a)](_0x1c7006,_0x34a99e){const _0x280852={_0xa7ce7d:0x344,_0x1ff2c5:0x366,_0x544df6:0x31b,_0x4abc06:0x9e,_0xcecf92:0x94,_0x57777c:0xca,_0x1b0072:0xd9,_0x51e2d4:0x307,_0x41163b:0x316,_0x3f0bdf:0x317,_0x2932b5:0xb6,_0x451f2b:0x8c,_0x474fff:0xcc,_0x6bb31d:0x3a,_0x197798:0x2a,_0x5984a4:0x62},_0x83c145={_0x2b5967:0xc9,_0x8f2f6f:0x63,_0x5e04af:0x1f},_0x5957c5={_0x36d113:0x14d,_0x18a8f4:0x5b,_0x3da187:0x3b3};function _0x5a967d(_0x4749ec,_0x5db8b5,_0x49891c,_0x24ccec){return _0xf07c5f(_0x49891c,_0x5db8b5-_0x5957c5._0x36d113,_0x49891c-_0x5957c5._0x18a8f4,_0x5db8b5-_0x5957c5._0x3da187);}if(this['closed'])return;const _0xc5b428=b4a[_0x5a967d(0x34d,_0x280852._0xa7ce7d,_0x280852._0x1ff2c5,_0x280852._0x544df6)+'e'](_0x34a99e[_0xb540d4(-_0x280852._0x4abc06,-_0x280852._0xcecf92,-_0x280852._0x57777c,-_0x280852._0x1b0072)]+(-0x2*-0x119c+0x9*0x196+-0x317c));this['_prefixesB'+_0x5a967d(0x320,0x30c,_0x280852._0x51e2d4,_0x280852._0x41163b)+'s'][_0x1c7006]['copy'](_0xc5b428,-0x25ea+-0x2435+0x3*0x18b5),_0x34a99e['copy'](_0xc5b428,0x99d+-0x2364+0x19c9);function _0xb540d4(_0x1e92d9,_0x2dc622,_0x321296,_0x49ed22){return _0xf07c5f(_0x2dc622,_0x2dc622-_0x83c145._0x2b5967,_0x321296-_0x83c145._0x8f2f6f,_0x1e92d9-_0x83c145._0x5e04af);}this[_0x5a967d(_0x280852._0x3f0bdf,0x331,0x351,_0x280852._0x51e2d4)][_0xb540d4(-0xaa,-_0x280852._0x2932b5,-_0x280852._0x451f2b,-_0x280852._0x474fff)][_0xb540d4(-_0x280852._0x6bb31d,-_0x280852._0x197798,-0x4f,-_0x280852._0x5984a4)](_0xc5b428);}[_0x1e9b7e(0x42f,0x459,0x444,0x3fa)+'oxy'](_0xf244c7,_0x39426a){const _0x2b698f={_0x4a0636:0x1e9,_0x319965:0x20c,_0x3f194b:0x22a,_0x57d34e:0x223},_0x521949={_0x3417a7:0x252,_0x13dc7c:0x4,_0x848647:0x100},_0x4de544={_0x2c46a0:0x1c3,_0x207f44:0x6b,_0x2623d0:0x32a};function _0x2ae0d9(_0x52af89,_0x1fd32c,_0x4d339a,_0x14aa06){return _0xf07c5f(_0x14aa06,_0x1fd32c-_0x4de544._0x2c46a0,_0x4d339a-_0x4de544._0x207f44,_0x4d339a-_0x4de544._0x2623d0);}function _0x2ff848(_0x1110bc,_0x604ec7,_0xc9cee5,_0x54823c){return _0x1e9b7e(_0x604ec7- -_0x521949._0x3417a7,_0xc9cee5,_0xc9cee5-_0x521949._0x13dc7c,_0x54823c-_0x521949._0x848647);}this[_0x2ff848(_0x2b698f._0x4a0636,0x1ef,_0x2b698f._0x319965,0x1ca)+_0x2ff848(0x249,_0x2b698f._0x3f194b,_0x2b698f._0x57d34e,0x210)+'s'][_0xf244c7]=_0x39426a;}[_0xf07c5f(-0x76,-0x41,-0x27,-0x5b)+_0x1e9b7e(0x491,0x482,0x464,0x496)](_0x2a0690){const _0x22265a={_0x2480b1:0x3ea,_0x4474d2:0x454,_0x2b2150:0x41a,_0x226ba0:0x408},_0x1fa79c={_0x3cec9e:0x168,_0x35e453:0xe3,_0x584edf:0x490};function _0x23d105(_0x514360,_0x28f46c,_0x38d1d2,_0x332c35){return _0xf07c5f(_0x332c35,_0x28f46c-_0x1fa79c._0x3cec9e,_0x38d1d2-_0x1fa79c._0x35e453,_0x38d1d2-_0x1fa79c._0x584edf);}this['_proxiesBy'+_0x23d105(_0x22265a._0x2480b1,_0x22265a._0x4474d2,_0x22265a._0x2b2150,_0x22265a._0x226ba0)+'s'][_0x2a0690]=null;}['close'](){const _0x4e059a={_0x34856b:0x4d9,_0x585818:0x4a0,_0x4ec879:0x50e,_0x170188:0x35d,_0x5f29a6:0x37a,_0x3311b0:0x380,_0x57e3a3:0x3aa,_0x5ca2bc:0x3c9,_0x336fa7:0x3ac,_0x217a9e:0x3e3,_0x200b21:0x4a1,_0x252e69:0x4d9,_0x98ef9e:0x4b6,_0x523023:0x4e5,_0x52f314:0x4b3},_0x14b7cd={_0xb43d2b:0xcc,_0x1d45ce:0x95,_0x331598:0xe6},_0x4b5453={_0x1c681e:0x47,_0x52153c:0x1c9,_0xd92d9a:0xc};this[_0xd176b0(_0x4e059a._0x34856b,0x512,_0x4e059a._0x585818,_0x4e059a._0x4ec879)]=!![];function _0xd176b0(_0x37abb7,_0x4047f1,_0x27aca9,_0x81c863){return _0x1e9b7e(_0x37abb7-_0x4b5453._0x1c681e,_0x81c863,_0x27aca9-_0x4b5453._0x52153c,_0x81c863-_0x4b5453._0xd92d9a);}function _0x56fb22(_0x36e009,_0x423a49,_0x49000d,_0x558975){return _0x1e9b7e(_0x423a49- -_0x14b7cd._0xb43d2b,_0x36e009,_0x49000d-_0x14b7cd._0x1d45ce,_0x558975-_0x14b7cd._0x331598);}this['connection'][_0x56fb22(0x34b,_0x4e059a._0x170188,_0x4e059a._0x5f29a6,_0x4e059a._0x3311b0)][_0x56fb22(_0x4e059a._0x57e3a3,_0x4e059a._0x5ca2bc,_0x4e059a._0x336fa7,_0x4e059a._0x217a9e)+'ener'](_0xd176b0(_0x4e059a._0x200b21,0x4be,0x4a1,_0x4e059a._0x252e69),this[_0xd176b0(_0x4e059a._0x98ef9e,0x481,_0x4e059a._0x523023,_0x4e059a._0x52f314)]);}}module[_0x1e9b7e(0x473,0x460,0x4ad,0x478)]=class KeetCallServer extends EventEmitter{constructor(_0x3bbbd7,{firewall:_0x587d43,onerror:onerror=safetyCatch}={}){const _0x567e68={_0x4972b6:0x22c,_0x412171:0x233,_0xaddc5e:0x20a,_0x542a3a:0x1fb,_0x1d92b5:0x20b,_0x89ca8a:0x20e,_0x1ec3c7:0x1e2,_0x1f67b2:0x13b,_0x55c4d7:0x13d,_0x56dc1c:0x119,_0x3daa21:0x13c,_0x3032f7:0x147,_0x286007:0x184,_0x423ba6:0x164,_0x553ba6:0x223,_0x1a9d26:0x159,_0xf36980:0x125,_0x5bb21d:0x116,_0x16829f:0x103,_0x545526:0x13e,_0x40b399:0x18a,_0x2e69a2:0x15a,_0x18de71:0x1d8,_0x1fed86:0x20f,_0x76f025:0x1dc,_0x8ea394:0x1c8,_0x9869d0:0x120,_0x1d69ed:0x14f,_0x1dd36f:0x202,_0x2265cc:0x205,_0x46c513:0x21b,_0x3ba1a5:0x146,_0x2a242c:0x115,_0x1da79a:0x21c,_0x5c9bce:0x1bd,_0x58701f:0x1ef,_0x5d674a:0x1d5,_0x1e748e:0x144,_0x1e3e24:0x158,_0xbe3ee5:0x13b,_0x1b678b:0x136,_0x43d3df:0x114,_0x3cb2cc:0x165,_0x3c6758:0x168,_0x5f48e2:0x137,_0x52a018:0x224,_0xe2f82a:0x1c3,_0x4c177c:0x1f1,_0x4a2de1:0xf2,_0x4d0db9:0xfe,_0x5b1dc4:0xee,_0xda5601:0x111,_0x2cb0d9:0x121,_0x1ba275:0x10c,_0xff4ad6:0x20d,_0x21a5bb:0x22f,_0x21ce2b:0x216,_0x289a09:0x24f,_0x44dc39:0x1c9,_0x3d90b1:0x19e,_0x43fd01:0x1ce,_0x460e1b:0x1c5,_0x525784:0x1f7,_0x3071f9:0x216,_0x5c9753:0x207,_0x3f85ee:0x207,_0x5b3aaa:0x23d,_0x39603c:0x133,_0x3d85b7:0x16d,_0x1f5ec6:0x162,_0x555d93:0x181,_0xc2cc3:0x132,_0x1485a5:0x166,_0x1f9d56:0x20c,_0x402659:0x1e1,_0x4268af:0x230,_0x76e5cc:0x156,_0x1d8502:0x118,_0x5db6b9:0x196,_0xfa0859:0x186,_0x16df79:0x17d,_0x376b00:0x176,_0x268d47:0x1db,_0x4edd0c:0x235,_0x1bf393:0x216,_0x2fde0a:0x20d,_0x30978a:0x206,_0x10cc11:0x1ec,_0x598f55:0x218,_0x17160d:0x1e3,_0x30de5e:0x22e,_0x477d67:0x23e,_0x51b12a:0x216,_0x162665:0x238,_0x401ed8:0x12f,_0x39964c:0x157,_0x2c83c9:0x134,_0x5d46df:0x12d,_0x15b620:0xd4,_0x36498d:0x10a,_0x3f29f0:0xf4,_0x18214a:0x151,_0xd0c73b:0x153,_0x5c303c:0x11f,_0x5eeea2:0x1c6,_0x46f70a:0x218,_0x26b28b:0x1e6,_0x1e3ac3:0x1c4,_0x5b3397:0x14c,_0x19eb49:0x158,_0xf66743:0x10c,_0x3a1cd7:0x13a,_0x4ee652:0x234,_0xa73cb0:0x1d0,_0x107d5f:0x22a,_0x25989d:0x209,_0x32e0d6:0x118,_0x4da0e0:0x125,_0x855424:0x138,_0xf2e310:0x117,_0x51b693:0x18f,_0x2bbca6:0x16a,_0x4401ac:0x183,_0xb4e7ed:0x16a,_0x58f82a:0x147,_0x3f306f:0x13c,_0x22734e:0x11d,_0x1d59d8:0x229,_0x2adde9:0x240,_0x1a362e:0x216,_0x5f57fd:0x14c,_0x510e4c:0x139,_0x26feea:0x201,_0xbd3804:0x228,_0xd509f2:0x152,_0x253dd6:0x131,_0x298acb:0x14d,_0x2eeef6:0x20c,_0x33aa38:0x1ee,_0x3d05a0:0x1f0,_0x4328b4:0x210,_0x3c6710:0xfc,_0x3f5875:0x217,_0x56ede4:0x1df,_0x4d91cb:0x13f,_0x1e743e:0x12e,_0x496577:0x161,_0x42f220:0x122,_0x5dd178:0x13e,_0x4db88d:0x156,_0xda1058:0x145,_0x5e9c52:0x175,_0x5f05de:0x152,_0x175442:0x128,_0x1fa98c:0x15c},_0x7e9822={_0x25e225:0x1dc,_0x3a7d6a:0x1b2,_0x4e0d5a:0x1a0},_0x3aacf5={_0x463c1c:0x17f,_0x50e51b:0x1da,_0x5d130a:0x2d7},_0x5ebaaa={_0x10cfd1:0x72,_0x5371f2:0xb2},_0x2beb92={_0x39949e:0x258,_0x2b2bfc:0x136};super(),this['swarm']=_0x3bbbd7,this['onerror']=onerror;function _0x4186ea(_0x1229e9,_0x5dee21,_0x3271da,_0x509dab){return _0x1e9b7e(_0x3271da- -_0x2beb92._0x39949e,_0x5dee21,_0x3271da-_0x2beb92._0x2b2bfc,_0x509dab-0x82);}this[_0x4186ea(_0x567e68._0x4972b6,_0x567e68._0x412171,_0x567e68._0xaddc5e,_0x567e68._0x542a3a)]=_0x587d43,this['_localAlia'+'s']=0x62*0x65+0x17b4+-0x3e5e,this[_0x4186ea(_0x567e68._0x1d92b5,_0x567e68._0x1d92b5,_0x567e68._0x89ca8a,_0x567e68._0x1ec3c7)+_0x2a30b1(-0x112,-_0x567e68._0x1f67b2,-_0x567e68._0x55c4d7,-_0x567e68._0x56dc1c)]=new Map();const {collection:_0x5cda2c,asyncMethod:_0x42c216,subscription:_0x3e5a0c}=createResourceManager(_0x1152b7=>{return new MediaServer(this,_0x1152b7);},this[_0x2a30b1(-_0x567e68._0x3daa21,-_0x567e68._0x3032f7,-_0x567e68._0x286007,-_0x567e68._0x423ba6)+'l']['bind'](this)),{collection:_0x2e125b,asyncMethod:_0x2989a4,subscription:_0x53e934}=createResourceManager(_0x3f4135=>{return new PresenceServer(this,_0x3f4135,_0x587d43);});this[_0x4186ea(0x239,_0x567e68._0x89ca8a,_0x567e68._0x553ba6,0x24a)+_0x2a30b1(-0x12a,-_0x567e68._0x1a9d26,-_0x567e68._0xf36980,-0x14e)]=_0x5cda2c,this[_0x2a30b1(-_0x567e68._0x5bb21d,-0x12a,-_0x567e68._0x16829f,-0x13c)+_0x2a30b1(-0x187,-_0x567e68._0x545526,-_0x567e68._0x40b399,-_0x567e68._0x2e69a2)]=_0x2e125b,this[_0x4186ea(_0x567e68._0x18de71,_0x567e68._0x1fed86,_0x567e68._0x76f025,_0x567e68._0x8ea394)+_0x2a30b1(-0x11d,-_0x567e68._0x9869d0,-_0x567e68._0x1d69ed,-0x155)+'d']=new Map(),this['_activated'+_0x4186ea(_0x567e68._0x1dd36f,0x207,_0x567e68._0x2265cc,_0x567e68._0x46c513)]=new Set();function _0x2a30b1(_0x5319e0,_0x567bcb,_0x2a1a7f,_0x3566ef){return _0xf07c5f(_0x2a1a7f,_0x567bcb-0x18a,_0x2a1a7f-_0x5ebaaa._0x10cfd1,_0x3566ef- -_0x5ebaaa._0x5371f2);}this['activateCa'+'ll']=this[_0x2a30b1(-_0x567e68._0x3ba1a5,-0xf9,-0x105,-_0x567e68._0x2a242c)+_0x4186ea(_0x567e68._0x1da79a,_0x567e68._0x5c9bce,_0x567e68._0x58701f,_0x567e68._0x5d674a)][_0x2a30b1(-_0x567e68._0x1e748e,-_0x567e68._0x1e3e24,-_0x567e68._0xbe3ee5,-_0x567e68._0x1b678b)](this),this[_0x2a30b1(-_0x567e68._0x43d3df,-_0x567e68._0x3cb2cc,-_0x567e68._0x3c6758,-_0x567e68._0x5f48e2)+_0x4186ea(_0x567e68._0x52a018,_0x567e68._0xe2f82a,_0x567e68._0x4c177c,0x1ff)]=this[_0x2a30b1(-_0x567e68._0x4a2de1,-_0x567e68._0x4d0db9,-_0x567e68._0x5b1dc4,-_0x567e68._0xda5601)+_0x2a30b1(-_0x567e68._0x2cb0d9,-0x12d,-0x101,-_0x567e68._0x1ba275)][_0x4186ea(_0x567e68._0xff4ad6,_0x567e68._0x21a5bb,_0x567e68._0x21ce2b,_0x567e68._0x289a09)](this),this['authorize']=this[_0x4186ea(_0x567e68._0x44dc39,_0x567e68._0x3d90b1,_0x567e68._0x43fd01,_0x567e68._0x460e1b)][_0x4186ea(_0x567e68._0x525784,_0x567e68._0x1ec3c7,_0x567e68._0x3071f9,0x231)](this),this[_0x4186ea(_0x567e68._0x5c9753,_0x567e68._0x3f85ee,0x235,_0x567e68._0x5b3aaa)+'e']=this['_deauthori'+'ze'][_0x2a30b1(-_0x567e68._0x39603c,-_0x567e68._0x3d85b7,-_0x567e68._0x1f5ec6,-0x136)](this),this[_0x2a30b1(-_0x567e68._0x555d93,-_0x567e68._0xc2cc3,-_0x567e68._0x1485a5,-0x15f)]=this[_0x4186ea(_0x567e68._0x1f9d56,_0x567e68._0x402659,_0x567e68._0x1f9d56,_0x567e68._0x4268af)][_0x2a30b1(-0x131,-_0x567e68._0x76e5cc,-_0x567e68._0x1d8502,-_0x567e68._0x1b678b)](this),this[_0x2a30b1(-0x188,-_0x567e68._0x5db6b9,-_0x567e68._0xfa0859,-_0x567e68._0x16df79)]=this[_0x2a30b1(-_0x567e68._0x423ba6,-_0x567e68._0x3c6758,-_0x567e68._0x376b00,-0x167)][_0x4186ea(_0x567e68._0x1da79a,_0x567e68._0x268d47,0x216,_0x567e68._0x4edd0c)](this),this[_0x4186ea(_0x567e68._0x1bf393,_0x567e68._0x2fde0a,_0x567e68._0x30978a,_0x567e68._0x10cc11)+'a']=_0x42c216(this[_0x4186ea(_0x567e68._0x598f55,0x213,_0x567e68._0x1da79a,_0x567e68._0x17160d)+'ia'][_0x4186ea(_0x567e68._0x30de5e,_0x567e68._0x477d67,_0x567e68._0x51b12a,_0x567e68._0x162665)](this)),this[_0x2a30b1(-0x157,-_0x567e68._0x401ed8,-0x147,-_0x567e68._0x39964c)+'ediaSignal'+'s']=_0x3e5a0c(this[_0x2a30b1(-0x145,-0x185,-0x136,-_0x567e68._0x1485a5)+'MediaSigna'+'ls'][_0x2a30b1(-_0x567e68._0x2c83c9,-_0x567e68._0x5d46df,-0x156,-0x136)](this)),this[_0x2a30b1(-_0x567e68._0x15b620,-_0x567e68._0x36498d,-_0x567e68._0x3f29f0,-0x10e)+_0x2a30b1(-_0x567e68._0x18214a,-_0x567e68._0xd0c73b,-_0x567e68._0x3f29f0,-_0x567e68._0x5c303c)+'s']=_0x3e5a0c(this[_0x4186ea(_0x567e68._0x5eeea2,_0x567e68._0x46f70a,_0x567e68._0x26b28b,_0x567e68._0x1e3ac3)+_0x2a30b1(-_0x567e68._0x401ed8,-0x16b,-_0x567e68._0x5b3397,-_0x567e68._0x19eb49)+'es'][_0x2a30b1(-_0x567e68._0xf66743,-0x137,-_0x567e68._0x3a1cd7,-0x136)](this)),this['setPresent']=_0x2989a4(this[_0x4186ea(_0x567e68._0x4ee652,_0x567e68._0xa73cb0,0x201,0x222)+'t']['bind'](this)),this[_0x4186ea(0x253,_0x567e68._0x1dd36f,_0x567e68._0x107d5f,_0x567e68._0x25989d)+_0x2a30b1(-_0x567e68._0x1a9d26,-0x12c,-_0x567e68._0x32e0d6,-0x12f)]=_0x2989a4(this['_setNotPre'+'sent'][_0x2a30b1(-_0x567e68._0x4da0e0,-_0x567e68._0x855424,-_0x567e68._0xf2e310,-_0x567e68._0x1b678b)](this)),this['subscribeP'+_0x2a30b1(-_0x567e68._0x51b693,-0x189,-_0x567e68._0x1e748e,-_0x567e68._0x2bbca6)]=_0x53e934(this[_0x2a30b1(-_0x567e68._0x4401ac,-_0x567e68._0x76e5cc,-_0x567e68._0xb4e7ed,-0x166)+_0x2a30b1(-_0x567e68._0x58f82a,-_0x567e68._0x3f306f,-_0x567e68._0x855424,-_0x567e68._0x22734e)][_0x4186ea(_0x567e68._0x1d59d8,_0x567e68._0x2adde9,_0x567e68._0x1a362e,_0x567e68._0x76f025)](this)),this[_0x2a30b1(-_0x567e68._0x5f57fd,-_0x567e68._0x1e3e24,-0x10d,-_0x567e68._0x510e4c)+'e']=_0x2989a4(this[_0x4186ea(_0x567e68._0x26feea,0x22c,_0x567e68._0xbd3804,0x1f5)+'ce'][_0x2a30b1(-0x15a,-_0x567e68._0xd509f2,-0x136,-0x136)](this));const _0x3c9c4c=this;this['_onconnect'+'ion']=this[_0x2a30b1(-_0x567e68._0x253dd6,-_0x567e68._0x298acb,-0x155,-_0x567e68._0x39603c)+_0x4186ea(_0x567e68._0x2eeef6,_0x567e68._0x33aa38,_0x567e68._0x3d05a0,_0x567e68._0x4328b4)][_0x2a30b1(-_0x567e68._0x3c6710,-_0x567e68._0x1d69ed,-0x101,-0x136)](this),this[_0x4186ea(_0x567e68._0x3f5875,_0x567e68._0x56ede4,_0x567e68._0x3f85ee,0x1eb)+_0x2a30b1(-_0x567e68._0x4d91cb,-_0x567e68._0x2bbca6,-_0x567e68._0x1e743e,-_0x567e68._0x496577)]=function(){function _0x10ae28(_0x174189,_0x3bcdd9,_0x5d8891,_0x2a7caa){return _0x2a30b1(_0x174189-_0x3aacf5._0x463c1c,_0x3bcdd9-_0x3aacf5._0x50e51b,_0x3bcdd9,_0x174189-_0x3aacf5._0x5d130a);}_0x3c9c4c[_0x10ae28(0x1a4,_0x7e9822._0x25e225,_0x7e9822._0x3a7d6a,_0x7e9822._0x4e0d5a)+'ionClosed'](this);},this[_0x2a30b1(-0x16b,-_0x567e68._0x1e743e,-0x140,-0x13a)]['on'](_0x2a30b1(-_0x567e68._0x42f220,-_0x567e68._0x5dd178,-_0x567e68._0x3cb2cc,-_0x567e68._0x2c83c9),this[_0x2a30b1(-_0x567e68._0x1f67b2,-0x143,-_0x567e68._0x4db88d,-_0x567e68._0xda1058)+_0x2a30b1(-_0x567e68._0x5e9c52,-_0x567e68._0x5f05de,-_0x567e68._0x175442,-_0x567e68._0x1fa98c)]);}get[_0xf07c5f(-0x7e,-0x8e,-0xc5,-0x92)+'ve'](){const _0x260685={_0x469afd:0x1e8,_0x3a8783:0x20f,_0x5125e9:0x1d4,_0x2c5c21:0x344,_0x3d6ae8:0x34a,_0x53c7a8:0x370,_0x114590:0x380},_0x3928bc={_0x580f42:0xfa},_0x201805={_0x97a318:0x18a,_0x1ee84f:0x1c};function _0x26328c(_0x51ee0b,_0x1c553a,_0x42044e,_0x32f67d){return _0x1e9b7e(_0x42044e- -0x26c,_0x1c553a,_0x42044e-_0x201805._0x97a318,_0x32f67d-_0x201805._0x1ee84f);}function _0x49a861(_0x65185b,_0x1b74af,_0x30665f,_0x1edf26){return _0x1e9b7e(_0x1b74af- -0xfa,_0x1edf26,_0x30665f-0x48,_0x1edf26-_0x3928bc._0x580f42);}return this[_0x26328c(0x1f4,_0x260685._0x469afd,_0x260685._0x3a8783,_0x260685._0x5125e9)+'llId'][_0x49a861(_0x260685._0x2c5c21,_0x260685._0x3d6ae8,_0x260685._0x53c7a8,_0x260685._0x114590)]>-0x1226+-0x462*-0x7+-0xc88;}['_updateCal'+'l'](_0x4cf3c2,_0x4f3378){const _0x494d76={_0x1870de:0x481,_0x1206cf:0x42c,_0x2ff318:0x440,_0x2cd999:0x43a,_0x1e56e2:0x457,_0x5b6f74:0x472,_0x3fed01:0x474,_0x990c88:0x44f,_0x39ff09:0x442,_0x5ba3ad:0x42a,_0x293168:0x423,_0x55d8a8:0x432,_0x418b93:0x468,_0x25c847:0x41e,_0xd4fd3e:0x446,_0x45758d:0x444,_0x295deb:0x461,_0x389734:0x45a,_0x199310:0x45d,_0x124376:0x46e},_0x414b1f={_0x37bec7:0x186},_0x47bc47={_0x35b102:0x4,_0x129be0:0x15,_0x32dd4e:0x101};function _0x9aec7a(_0x36dd78,_0x885e51,_0x5e07b2,_0x1a696b){return _0x1e9b7e(_0x1a696b- -_0x47bc47._0x35b102,_0x5e07b2,_0x5e07b2-_0x47bc47._0x129be0,_0x1a696b-_0x47bc47._0x32dd4e);}function _0x2e04f5(_0x3adce5,_0x3ae500,_0x25b9e8,_0x220c19){return _0x1e9b7e(_0x3adce5- -0x2c,_0x220c19,_0x25b9e8-0x43,_0x220c19-_0x414b1f._0x37bec7);}if(this[_0x2e04f5(0x44f,0x43f,_0x494d76._0x1870de,0x449)+'llId']['size']===0x4*0x935+-0xa4*-0x10+-0x2f13&&_0x4f3378)this[_0x2e04f5(0x446,_0x494d76._0x1206cf,_0x494d76._0x2ff318,_0x494d76._0x2cd999)](_0x9aec7a(_0x494d76._0x1e56e2,0x469,_0x494d76._0x5b6f74,_0x494d76._0x3fed01)+'e',_0x4cf3c2);else this[_0x2e04f5(_0x494d76._0x990c88,0x430,0x41c,_0x494d76._0x39ff09)+_0x2e04f5(_0x494d76._0x5ba3ad,_0x494d76._0x293168,0x409,0x3fc)][_0x9aec7a(_0x494d76._0x55d8a8,_0x494d76._0x418b93,_0x494d76._0x25c847,_0x494d76._0x2ff318)]===0xf89+0x5*-0x2f6+0x11*-0xb&&!_0x4f3378&&this[_0x2e04f5(_0x494d76._0xd4fd3e,_0x494d76._0x45758d,_0x494d76._0x295deb,0x450)](_0x9aec7a(_0x494d76._0x389734,_0x494d76._0x199310,_0x494d76._0x124376,0x43e)+'ive',_0x4cf3c2);}[_0x1e9b7e(0x476,0x461,0x44e,0x46b)+_0x1e9b7e(0x47f,0x470,0x456,0x4b4)](_0xf15579){const _0x52bd19={_0x2088ab:0x56b,_0x159321:0x55b,_0x19c853:0x534,_0x5f1cd7:0x589,_0x5f2c75:0x53f,_0x2fbf71:0x505,_0x58a923:0x532,_0x43212d:0x50b},_0x57e87d={_0xd05a9a:0xe0,_0x20ab5b:0x1ef},_0x2260ed={_0xa59046:0x14f,_0x1b4f71:0x132,_0x1555fd:0x18b};function _0x3a9b47(_0x448ed8,_0x6f12cc,_0x23ebc8,_0x364ff1){return _0xf07c5f(_0x23ebc8,_0x6f12cc-_0x2260ed._0xa59046,_0x23ebc8-_0x2260ed._0x1b4f71,_0x448ed8-_0x2260ed._0x1555fd);}function _0x116387(_0x161535,_0x499608,_0x475aa7,_0x453752){return _0x1e9b7e(_0x499608-_0x57e87d._0xd05a9a,_0x161535,_0x475aa7-_0x57e87d._0x20ab5b,_0x453752-0x106);}return this[_0x116387(_0x52bd19._0x2088ab,_0x52bd19._0x159321,_0x52bd19._0x19c853,_0x52bd19._0x5f1cd7)+'llId'][_0x116387(_0x52bd19._0x5f2c75,_0x52bd19._0x2fbf71,_0x52bd19._0x58a923,_0x52bd19._0x43212d)](_0xf15579);}['shouldActi'+_0xf07c5f(-0xa3,-0xca,-0xc2,-0xbf)](_0x3a5307){const _0x282f28={_0x8186c3:0x156,_0x296037:0x144,_0x5bea5f:0x126,_0x23fc02:0x14d,_0x5d5efa:0x143,_0x607bf0:0x4c1,_0x53b42e:0x458,_0x36d661:0x44d},_0x4e9ad6={_0x5e383c:0x123},_0x332e58={_0x465095:0x5cc,_0x5c228a:0x16d,_0x43b212:0xe6};function _0x195082(_0x39bf80,_0x20f277,_0x5f1710,_0x5a897b){return _0x1e9b7e(_0x39bf80- -_0x332e58._0x465095,_0x5f1710,_0x5f1710-_0x332e58._0x5c228a,_0x5a897b-_0x332e58._0x43b212);}function _0x3f60a0(_0x4732e6,_0x5c110b,_0x2b9071,_0x3a21d9){return _0x1e9b7e(_0x3a21d9-0x63,_0x5c110b,_0x2b9071-0x97,_0x3a21d9-_0x4e9ad6._0x5e383c);}return this[_0x195082(-_0x282f28._0x8186c3,-_0x282f28._0x296037,-_0x282f28._0x5bea5f,-_0x282f28._0x23fc02)+'ive'](_0x3a5307)||this[_0x195082(-0x171,-0x193,-0x195,-_0x282f28._0x5d5efa)+'Calls'][_0x3f60a0(_0x282f28._0x607bf0,_0x282f28._0x53b42e,_0x282f28._0x36d661,0x488)](_0x3a5307);}[_0xf07c5f(-0x7c,-0x9d,-0x5b,-0x63)+_0x1e9b7e(0x447,0x41f,0x45e,0x429)](_0x4eada9){const _0x296af6={_0x1ba1b8:0x4ee,_0x5127a3:0x506,_0x20653e:0x500,_0x39a466:0x508,_0x1967ed:0x53c,_0x50ee54:0x538,_0x49412a:0x51d,_0x5e41d2:0x537,_0x1c6eb6:0x345,_0x1de3d1:0x318,_0x4938ca:0x329,_0x1f06e5:0x526,_0x585764:0x511,_0x87e87:0x4f7,_0x14f508:0x515,_0x2c1a0a:0x4fb,_0x2e9d13:0x526,_0x30d593:0x547,_0x5b45cf:0x4f5,_0xf7246b:0x510},_0x25bf86={_0x559e52:0x6},_0x2eb9c8={_0x15cf87:0xad,_0x23daf2:0x27,_0xf25a41:0x144};function _0x3aa66d(_0x301714,_0x463d96,_0x3f2465,_0x805cee){return _0x1e9b7e(_0x805cee-_0x2eb9c8._0x15cf87,_0x3f2465,_0x3f2465-_0x2eb9c8._0x23daf2,_0x805cee-_0x2eb9c8._0xf25a41);}this[_0x3aa66d(_0x296af6._0x1ba1b8,_0x296af6._0x5127a3,_0x296af6._0x20653e,_0x296af6._0x39a466)+'Calls'][_0x3aa66d(_0x296af6._0x1967ed,_0x296af6._0x50ee54,_0x296af6._0x49412a,_0x296af6._0x5e41d2)](_0x4eada9);const _0x5f09da=this[_0x50042(0x353,_0x296af6._0x1c6eb6,_0x296af6._0x1de3d1,_0x296af6._0x4938ca)+_0x3aa66d(0x527,_0x296af6._0x1f06e5,_0x296af6._0x585764,_0x296af6._0x87e87)][_0x3aa66d(0x550,_0x296af6._0x14f508,_0x296af6._0x2c1a0a,_0x296af6._0x2e9d13)](_0x4eada9);function _0x50042(_0x5ef924,_0x439d15,_0x35f96c,_0x4824d8){return _0x1e9b7e(_0x4824d8- -0x13f,_0x5ef924,_0x35f96c-_0x25bf86._0x559e52,_0x4824d8-0x187);}if(!_0x5f09da)return;_0x5f09da[_0x3aa66d(_0x296af6._0x30d593,0x530,_0x296af6._0x5b45cf,_0x296af6._0xf7246b)]['activate']();}['_deactivat'+_0xf07c5f(-0x53,-0x2f,-0x71,-0x5a)](_0x9dbd0d){const _0x9060c2={_0x289643:0x5d6,_0x1f16b7:0x5fc,_0x183c8a:0x60c,_0x56e7de:0x633,_0x8ff1d3:0x10b,_0x4fe62e:0xa1,_0x18340a:0xbd,_0x573bdc:0xb6,_0x569e9f:0x92,_0x5c3f0a:0x5d5,_0x23ba96:0x5c8,_0x9f33f3:0x5d2},_0x4160c0={_0x1743c8:0x38d,_0x287153:0x54},_0x2e811d={_0x29c687:0x185,_0x476b83:0x691};this['_activated'+_0x30567a(_0x9060c2._0x289643,0x625,0x5f0,_0x9060c2._0x1f16b7)][_0x30567a(0x65e,_0x9060c2._0x183c8a,0x62a,_0x9060c2._0x56e7de)](_0x9dbd0d);const _0x6e45b8=this[_0xd563de(0xdb,0xfa,_0x9060c2._0x8ff1d3,_0x9060c2._0x4fe62e)+_0xd563de(_0x9060c2._0x18340a,_0x9060c2._0x573bdc,0xda,_0x9060c2._0x569e9f)]['get'](_0x9dbd0d);function _0x30567a(_0x371bdf,_0x10a59b,_0x83f6fa,_0x1a0062){return _0xf07c5f(_0x83f6fa,_0x10a59b-_0x2e811d._0x29c687,_0x83f6fa-0x114,_0x1a0062-_0x2e811d._0x476b83);}function _0xd563de(_0x49dd6f,_0x1eff9c,_0x3dc108,_0x3d7e08){return _0x1e9b7e(_0x49dd6f- -_0x4160c0._0x1743c8,_0x1eff9c,_0x3dc108-_0x4160c0._0x287153,_0x3d7e08-0x7a);}if(!_0x6e45b8)return;_0x6e45b8[_0x30567a(_0x9060c2._0x5c3f0a,_0x9060c2._0x23ba96,_0x9060c2._0x9f33f3,0x602)]['deactivate']();}['internalAc'+_0x1e9b7e(0x450,0x487,0x478,0x436)](_0x11bb1b){const _0x2b7361={_0x43cd8e:0xf7,_0x59cfa7:0x135,_0x4863a3:0x118,_0x24aa88:0x2ac,_0x19b520:0x2c9,_0xa79576:0x2c3},_0x3114af={_0x4d0e42:0x16f,_0x381284:0x1b3,_0x1a6cae:0xd0},_0x1ed779={_0x2320f2:0xd0,_0x44009c:0x77};function _0x59f321(_0x3af209,_0x1acae0,_0x32b6b3,_0x39a046){return _0x1e9b7e(_0x39a046- -0x377,_0x3af209,_0x32b6b3-_0x1ed779._0x2320f2,_0x39a046-_0x1ed779._0x44009c);}function _0x508904(_0x5459ad,_0x2ab34e,_0x14e09f,_0x283e90){return _0x1e9b7e(_0x2ab34e- -_0x3114af._0x4d0e42,_0x14e09f,_0x14e09f-_0x3114af._0x381284,_0x283e90-_0x3114af._0x1a6cae);}return this[_0x59f321(0x146,_0x2b7361._0x43cd8e,_0x2b7361._0x59cfa7,_0x2b7361._0x4863a3)+'all'](_0x11bb1b[_0x508904(_0x2b7361._0x24aa88,_0x2b7361._0x19b520,_0x2b7361._0xa79576,0x2ba)]);}[_0x1e9b7e(0x452,0x453,0x423,0x465)+'activateCa'+'ll'](){}[_0x1e9b7e(0x437,0x428,0x42a,0x464)](){const _0xdde41={_0x5c9c2d:0x2dc,_0x112be9:0x2ec,_0x5eae47:0x2eb,_0x39aa3d:0x299,_0x3a4890:0x2f7,_0x1a8fd6:0x2bd,_0x418ea3:0x2a,_0x492c9c:0x3e,_0x5cee34:0x55,_0x170668:0x20,_0x3b9b81:0x68,_0x30997c:0x4f,_0x9a6f90:0x21,_0x5b75f5:0x2f1,_0x294ec3:0x301,_0xab9e5e:0x287,_0x29bedc:0x288,_0x5ba84c:0x2c2,_0x43b7f4:0x8,_0x1b04a4:0x14,_0x26d4a9:0x33,_0x19697e:0x39,_0x35fe5e:0x2b0,_0x40241b:0x2f6,_0x3d2162:0x2a6,_0x272315:0x2e1,_0x33e502:0x30d,_0x498d59:0x66,_0x1be00d:0x77,_0x4d3287:0x99,_0x1b3b3c:0x302,_0x57230c:0x2f3,_0x576689:0x3d,_0x2704a7:0x57,_0x22052c:0x43,_0x51f1ba:0xac,_0x1f6a08:0x43},_0x30e8fa={_0x129e60:0x1d,_0x176813:0x16b},_0x1ba12d={_0x153aac:0x32,_0x5c1fe0:0x7d};this[_0x1b6ab1(_0xdde41._0x5c9c2d,0x2c9,_0xdde41._0x112be9,0x2f5)]['removeList'+_0x1b6ab1(_0xdde41._0x5eae47,_0xdde41._0x39aa3d,_0xdde41._0x3a4890,_0xdde41._0x1a8fd6)]('connection',this['_onconnect'+'ion']);for(const _0x3f3bdb of this['swarm'][_0x1ac919(-_0xdde41._0x418ea3,-0xb,-_0xdde41._0x492c9c,-_0xdde41._0x5cee34)+'s']){_0x3f3bdb['removeList'+'ener']('close',this[_0x1ac919(-_0xdde41._0x170668,-_0xdde41._0x3b9b81,-_0xdde41._0x30997c,-_0xdde41._0x9a6f90)+'ionclosed']);}for(const _0x4c9f95 of this[_0x1b6ab1(0x2ee,0x2d9,0x2b7,_0xdde41._0x5b75f5)+_0x1b6ab1(_0xdde41._0x294ec3,0x2eb,0x34d,0x316)]['values']()){_0x4c9f95[_0x1b6ab1(_0xdde41._0xab9e5e,0x2a3,_0xdde41._0x29bedc,_0xdde41._0x5ba84c)]();}function _0x1b6ab1(_0xf4e1e0,_0x47e8ce,_0xecce5,_0x53a8ea){return _0x1e9b7e(_0x53a8ea- -0x175,_0xf4e1e0,_0xecce5-_0x1ba12d._0x153aac,_0x53a8ea-_0x1ba12d._0x5c1fe0);}function _0x1ac919(_0x4b31c7,_0x25ed0a,_0x2d8a41,_0x4b0d2a){return _0x1e9b7e(_0x2d8a41- -0x4ae,_0x25ed0a,_0x2d8a41-_0x30e8fa._0x129e60,_0x4b0d2a-_0x30e8fa._0x176813);}for(const {value:_0x40edb7}of this[_0x1ac919(_0xdde41._0x43b7f4,-_0xdde41._0x1b04a4,-_0xdde41._0x26d4a9,-_0xdde41._0x19697e)+_0x1b6ab1(_0xdde41._0x35fe5e,_0xdde41._0x40241b,_0xdde41._0x3d2162,_0xdde41._0x272315)][_0x1b6ab1(_0xdde41._0x5eae47,_0xdde41._0x33e502,0x2f5,0x2e2)]()){_0x40edb7[_0x1ac919(-0x88,-_0xdde41._0x498d59,-_0xdde41._0x1be00d,-_0xdde41._0x4d3287)]();}for(const {value:_0xcaf1fb}of this[_0x1b6ab1(_0xdde41._0x1b3b3c,0x2db,0x2d2,_0xdde41._0x57230c)+'yCallId'][_0x1ac919(-0x43,-_0xdde41._0x576689,-_0xdde41._0x2704a7,-_0xdde41._0x1be00d)]()){_0xcaf1fb[_0x1ac919(-_0xdde41._0x22052c,-_0xdde41._0x51f1ba,-_0xdde41._0x1be00d,-_0xdde41._0x1f6a08)]();}}[_0x1e9b7e(0x471,0x489,0x45c,0x474)+'ion'](_0x518f66){const _0x2d11ee={_0x3a49e1:0xb2,_0x21cdc1:0xd4,_0x12427f:0xc4,_0x1fb7b3:0xac,_0x42b636:0x76,_0x523b90:0x85,_0x54ecdb:0x4b,_0x1e706b:0x52,_0x28503a:0xb7,_0x3a2f5e:0x81,_0x2369dc:0xe2,_0x348648:0xdc,_0x5cec49:0xdd,_0x4cc111:0x10d,_0x1d0aa8:0xed,_0x567c28:0x9f,_0x11de22:0x97,_0x26a917:0x91,_0x1c15e0:0xbf,_0x2b2d16:0x6a,_0x2aa9ec:0x62,_0x3e56d0:0xb0,_0x20540c:0xb6,_0x4be688:0xde,_0x4dd5e7:0x92,_0x32ec6d:0x94,_0x1724a0:0xab,_0x462446:0xb3,_0x2e15ef:0xb,_0x16a1de:0x1a,_0x3710b5:0x1f,_0x4041b4:0x71,_0x7b132f:0xa5,_0x38eef7:0x99,_0xfcdd50:0xba,_0x57a01d:0x31,_0x29e5df:0xb,_0x36fb65:0x8,_0x880e14:0xb4,_0x1577c2:0xbd,_0x6ae9c2:0x99,_0x5df475:0x6c,_0x37a80b:0x9e},_0x15e809={_0x3f6d80:0x470,_0x5adbf1:0xe2},_0x28ab51={_0x2849d4:0x18f,_0x4e83a6:0x188,_0x48de2f:0x143};function _0x32e1c5(_0x246c04,_0x9ba791,_0x4437bb,_0x3f6fbf){return _0xf07c5f(_0x3f6fbf,_0x9ba791-_0x28ab51._0x2849d4,_0x4437bb-_0x28ab51._0x4e83a6,_0x246c04-_0x28ab51._0x48de2f);}function _0x3bc495(_0x2750b1,_0xb815c5,_0x24314b,_0x490b47){return _0x1e9b7e(_0x24314b- -_0x15e809._0x3f6d80,_0x490b47,_0x24314b-0xdb,_0x490b47-_0x15e809._0x5adbf1);}const _0x460bc2=HypercoreId['encode'](_0x518f66[_0x32e1c5(_0x2d11ee._0x3a49e1,_0x2d11ee._0x21cdc1,_0x2d11ee._0x12427f,_0x2d11ee._0x1fb7b3)+_0x32e1c5(0x7c,0x96,0x9d,_0x2d11ee._0x42b636)]);this[_0x32e1c5(_0x2d11ee._0x523b90,_0x2d11ee._0x54ecdb,_0x2d11ee._0x1e706b,0x68)+'nsBySwarmI'+'d']['set'](_0x460bc2,_0x518f66);const _0xb6fe61=new RawStreamMuxer(_0x518f66);this[_0x32e1c5(_0x2d11ee._0x28503a,_0x2d11ee._0x3a2f5e,_0x2d11ee._0x2369dc,0x9a)+_0x32e1c5(_0x2d11ee._0x348648,_0x2d11ee._0x5cec49,_0x2d11ee._0x4cc111,_0x2d11ee._0x1d0aa8)][_0x32e1c5(_0x2d11ee._0x567c28,_0x2d11ee._0x11de22,_0x2d11ee._0x26a917,_0x2d11ee._0x1c15e0)](_0x518f66,_0xb6fe61),_0x518f66['on'](_0x32e1c5(0x88,0x55,_0x2d11ee._0x2b2d16,_0x2d11ee._0x2aa9ec),this[_0x32e1c5(_0x2d11ee._0x3e56d0,_0x2d11ee._0x20540c,_0x2d11ee._0x4be688,_0x2d11ee._0x4dd5e7)+_0x32e1c5(_0x2d11ee._0x32ec6d,_0x2d11ee._0x1724a0,_0x2d11ee._0x462446,_0x2d11ee._0x3e56d0)]);for(const {value:_0x7a2b35}of this['_mediaByCa'+_0x3bc495(-_0x2d11ee._0x1e706b,_0x2d11ee._0x2e15ef,-_0x2d11ee._0x16a1de,-_0x2d11ee._0x3710b5)]['values']()){_0x7a2b35[_0x32e1c5(_0x2d11ee._0x11de22,_0x2d11ee._0x4041b4,_0x2d11ee._0x7b132f,0x68)+_0x32e1c5(_0x2d11ee._0x38eef7,0xa6,_0x2d11ee._0xfcdd50,_0x2d11ee._0x3a49e1)](_0x518f66,_0xb6fe61);}for(const {value:_0x1218fc}of this[_0x3bc495(_0x2d11ee._0x57a01d,-_0x2d11ee._0x29e5df,-_0x2d11ee._0x36fb65,0x8)+'yCallId'][_0x32e1c5(0xa8,0x75,0xaa,_0x2d11ee._0x2369dc)]()){_0x1218fc[_0x32e1c5(0x97,_0x2d11ee._0x880e14,_0x2d11ee._0x1577c2,0xbb)+_0x32e1c5(_0x2d11ee._0x6ae9c2,_0x2d11ee._0x5df475,0x9d,_0x2d11ee._0x37a80b)](_0x518f66);}}[_0xf07c5f(-0x51,-0x77,-0x76,-0x81)+'ionClosed'](_0x247344){const _0x4a1213={_0x4dc5cf:0x414,_0x45713e:0x41b,_0x4c9923:0x3f8,_0x3beb64:0x402,_0x122b4b:0x447,_0x4f1670:0x410,_0x4a9f31:0x409,_0xf1dbfb:0x406,_0x3d3ac3:0x3e2,_0x5ec55f:0x3ed,_0x3c4824:0x3ef,_0x1d82b7:0x3f5,_0x49945e:0x461,_0x103b79:0x42d,_0x29d0d3:0x433,_0xf34892:0x46e,_0x419f33:0x437,_0x14587a:0x472,_0x73292:0x455,_0x38b472:0x469,_0x308d73:0x412,_0x5bfe5e:0x470,_0x14a508:0x467,_0x1776a4:0x44c,_0xdb01b1:0x456,_0x1b76f5:0x439,_0x2ca9b9:0x415,_0x3f65e6:0x3de,_0x66cea5:0x44e,_0x3ee1de:0x418,_0x1bfda6:0x480,_0x200bdc:0x42f,_0x3a1bbf:0x45a,_0x5727fa:0x43d,_0x2ac95e:0x435,_0x393c26:0x415,_0x3cf1d9:0x470,_0x5ca757:0x40b,_0x50174f:0x3fb,_0x4b2bb7:0x3d5,_0x3a4220:0x427,_0x64392f:0x3f0,_0x5a480e:0x40b,_0x23663f:0x435,_0x10bb7b:0x43b,_0x354458:0x429,_0x2e64b2:0x3ef,_0xe10767:0x439,_0x521e67:0x415},_0xdfaf08={_0x5bc0b5:0x3f,_0x1a0dab:0xf},_0x3d8c64={_0x4c726b:0x22,_0x511a16:0xbf,_0x395bee:0x13f},_0x20e277=HypercoreId[_0x44a8a1(0x3ff,_0x4a1213._0x4dc5cf,_0x4a1213._0x45713e,_0x4a1213._0x4c9923)](_0x247344[_0x1e926d(_0x4a1213._0x3beb64,_0x4a1213._0x122b4b,_0x4a1213._0x4f1670,0x422)+_0x44a8a1(0x3fb,_0x4a1213._0x4a9f31,_0x4a1213._0xf1dbfb,_0x4a1213._0x3d3ac3)]);function _0x44a8a1(_0x4db49e,_0x5a1e7f,_0x588df7,_0x478c17){return _0x1e9b7e(_0x5a1e7f- -_0x3d8c64._0x4c726b,_0x478c17,_0x588df7-_0x3d8c64._0x511a16,_0x478c17-_0x3d8c64._0x395bee);}function _0x1e926d(_0x26e8ba,_0x469f2b,_0x598081,_0x1bae41){return _0x1e9b7e(_0x1bae41- -_0xdfaf08._0x5bc0b5,_0x598081,_0x598081-0x14f,_0x1bae41-_0xdfaf08._0x1a0dab);}this[_0x1e926d(_0x4a1213._0x5ec55f,_0x4a1213._0x3c4824,0x429,_0x4a1213._0x1d82b7)+_0x44a8a1(_0x4a1213._0x49945e,_0x4a1213._0x103b79,_0x4a1213._0x29d0d3,0x3fe)+'d'][_0x1e926d(_0x4a1213._0xf34892,_0x4a1213._0x419f33,_0x4a1213._0x14587a,_0x4a1213._0x73292)](_0x20e277);const _0x593ce6=this[_0x44a8a1(_0x4a1213._0x38b472,0x444,_0x4a1213._0x308d73,_0x4a1213._0x5bfe5e)+_0x1e926d(_0x4a1213._0x14a508,_0x4a1213._0x1776a4,_0x4a1213._0xdb01b1,_0x4a1213._0x1776a4)]['get'](_0x247344);_0x593ce6&&(_0x593ce6[_0x44a8a1(_0x4a1213._0x1b76f5,_0x4a1213._0x2ca9b9,_0x4a1213._0x3f65e6,0x40e)](),this[_0x1e926d(0x41d,_0x4a1213._0x66cea5,_0x4a1213._0x3ee1de,0x427)+_0x1e926d(_0x4a1213._0x1bfda6,_0x4a1213._0x200bdc,_0x4a1213._0x3a1bbf,_0x4a1213._0x1776a4)][_0x1e926d(0x42f,_0x4a1213._0x5727fa,0x44c,_0x4a1213._0x73292)](_0x247344));for(const {value:_0x522a33}of this['_mediaByCa'+'llId'][_0x44a8a1(0x408,_0x4a1213._0x2ac95e,_0x4a1213._0x393c26,_0x4a1213._0x3cf1d9)]()){_0x522a33[_0x44a8a1(0x3f2,_0x4a1213._0x5ca757,_0x4a1213._0x50174f,0x40c)+'ection'](_0x247344,_0x593ce6);}for(const {value:_0x208bcf}of this['_presenceB'+_0x1e926d(_0x4a1213._0x4b2bb7,_0x4a1213._0x3a4220,_0x4a1213._0x64392f,_0x4a1213._0x5a480e)][_0x44a8a1(0x437,_0x4a1213._0x23663f,_0x4a1213._0x10bb7b,_0x4a1213._0x354458)]()){_0x208bcf['removeConn'+_0x1e926d(_0x4a1213._0x2e64b2,_0x4a1213._0x45713e,_0x4a1213._0xe10767,_0x4a1213._0x521e67)](_0x247344);}}['_authorize'](_0x3f0c24,_0xdf5984){}['_deauthori'+'ze'](_0x11e098,_0x54dc91){}[_0xf07c5f(-0xc6,-0xa5,-0x6f,-0x8e)](_0x346b9a){const _0x3efcdf={_0x4dbdd7:0x1a,_0x4a0a9f:0x9,_0x3291f8:0x5,_0x3455a8:0x14,_0x594a8b:0xc,_0x491095:0x1e},_0x22ee28={_0x41eab8:0x9f,_0x2b52c4:0x37e},_0x365b02={_0x425509:0x176,_0x2efe4c:0x79,_0xe1b5bc:0xb4};function _0x2ecffd(_0x4d43c5,_0x416241,_0x2611f4,_0xb0590e){return _0xf07c5f(_0x416241,_0x416241-_0x365b02._0x425509,_0x2611f4-_0x365b02._0x2efe4c,_0xb0590e-_0x365b02._0xe1b5bc);}function _0x3b4de2(_0x3b621b,_0x495f6c,_0x37a1d9,_0x344f31){return _0xf07c5f(_0x37a1d9,_0x495f6c-_0x22ee28._0x41eab8,_0x37a1d9-0x92,_0x3b621b-_0x22ee28._0x2b52c4);}return this[_0x2ecffd(0x39,_0x3efcdf._0x4dbdd7,_0x3efcdf._0x4a0a9f,0x2c)]['joinPeer'](HypercoreId[_0x2ecffd(-_0x3efcdf._0x3291f8,-_0x3efcdf._0x3455a8,-_0x3efcdf._0x594a8b,_0x3efcdf._0x491095)](_0x346b9a));}[_0x1e9b7e(0x43d,0x441,0x433,0x46c)](_0x258be2){const _0x502aeb={_0x3703bf:0x31b,_0x2f4d03:0x324,_0x807769:0x2e2,_0x189e14:0x353},_0x455a12={_0x157fdf:0x141,_0x3da35d:0x24,_0x3efcbf:0x19e};function _0x429af6(_0xdeb819,_0x35ebb3,_0x754d5a,_0x59ee26){return _0x1e9b7e(_0xdeb819- -_0x455a12._0x157fdf,_0x59ee26,_0x754d5a-_0x455a12._0x3da35d,_0x59ee26-_0x455a12._0x3efcbf);}return this['swarm']['leavePeer'](HypercoreId[_0x429af6(_0x502aeb._0x3703bf,_0x502aeb._0x2f4d03,_0x502aeb._0x807769,_0x502aeb._0x189e14)](_0x258be2));}[_0xf07c5f(-0x6d,-0x52,-0x99,-0x7e)+'ia'](_0x221caa,_0x4af1b4,_0x349445){const _0x2ea91e={_0x58eca5:0x47d,_0x363420:0x499,_0x1395c4:0x49c,_0x128920:0x459,_0x16c9cc:0x45e,_0x56e0cd:0x4b3,_0x4d7b26:0x490,_0x25593a:0x4c2,_0x4e8cb6:0x48a,_0x372a91:0x4ee},_0x2b59cd={_0xd104f4:0x49,_0x242653:0x1c4},_0x34ff90={_0x5be03e:0x1ff,_0x4d478f:0x8e};function _0x2a8a2e(_0x220b3d,_0x6325a3,_0x5233e6,_0x433904){return _0x1e9b7e(_0x433904- -_0x34ff90._0x5be03e,_0x220b3d,_0x5233e6-0xb,_0x433904-_0x34ff90._0x4d478f);}function _0x3392d0(_0x11c9d1,_0x9ec22e,_0x53f338,_0x455449){return _0x1e9b7e(_0x11c9d1-_0x2b59cd._0xd104f4,_0x53f338,_0x53f338-_0x2b59cd._0x242653,_0x455449-0x1f1);}const _0x2c3b61=this[_0x3392d0(_0x2ea91e._0x58eca5,_0x2ea91e._0x363420,_0x2ea91e._0x1395c4,_0x2ea91e._0x128920)+_0x3392d0(0x498,_0x2ea91e._0x16c9cc,_0x2ea91e._0x56e0cd,_0x2ea91e._0x4d7b26)+'d'][_0x3392d0(_0x2ea91e._0x25593a,_0x2ea91e._0x4e8cb6,_0x2ea91e._0x372a91,0x4ee)](_0x4af1b4);return _0x221caa['signal'](_0x2c3b61,_0x349445);}[_0x1e9b7e(0x43e,0x465,0x449,0x40c)+_0x1e9b7e(0x48e,0x46e,0x479,0x455)+'ls'](_0x114dee){const _0x3f3061={_0x214ea2:0x8,_0x50964d:0x3a,_0x5d7e8c:0x2a,_0x12daab:0x13,_0x5df42c:0xc,_0x3754a9:0x28,_0x45f5bc:0x3c},_0x36d262={_0x5ceadf:0x12b,_0x131604:0xe1,_0x4115d9:0x6c},_0xed5fad={_0x50c72f:0xa0,_0x4cc057:0x159,_0x56ac9a:0xad};function _0x1ef8b0(_0x342071,_0x356457,_0x2e8790,_0x4dc31b){return _0xf07c5f(_0x2e8790,_0x356457-_0xed5fad._0x50c72f,_0x2e8790-_0xed5fad._0x4cc057,_0x342071-_0xed5fad._0x56ac9a);}function _0x469010(_0x2e35dd,_0x33c35a,_0x2b432c,_0x2fb4a9){return _0xf07c5f(_0x2fb4a9,_0x33c35a-_0x36d262._0x5ceadf,_0x2b432c-_0x36d262._0x131604,_0x2e35dd- -_0x36d262._0x4115d9);}return _0x114dee[_0x1ef8b0(_0x3f3061._0x214ea2,_0x3f3061._0x50964d,-0x14,_0x3f3061._0x5d7e8c)+_0x1ef8b0(_0x3f3061._0x12daab,-_0x3f3061._0x5df42c,_0x3f3061._0x3754a9,_0x3f3061._0x45f5bc)+'s']();}[_0x1e9b7e(0x43e,0x478,0x42a,0x448)+'ProxyUpdat'+'es'](_0x3a1b73){const _0x4b4ee2={_0x6af69e:0x605,_0x23f326:0x645,_0x40603c:0x5fd,_0x248ff7:0x616},_0x7ca4d4={_0xcab290:0x1aa,_0x19c035:0x15d};function _0xfc7ab4(_0xb9800d,_0x4d355d,_0x1f2094,_0x184410){return _0xf07c5f(_0x1f2094,_0x4d355d-_0x7ca4d4._0xcab290,_0x1f2094-_0x7ca4d4._0x19c035,_0x184410-0x683);}return _0x3a1b73['subscribeP'+_0xfc7ab4(_0x4b4ee2._0x6af69e,_0x4b4ee2._0x23f326,_0x4b4ee2._0x40603c,_0x4b4ee2._0x248ff7)+'s']();}[_0x1e9b7e(0x43e,0x410,0x421,0x45d)+'Presence'](_0x4e2e28){const _0x2aa7bf={_0x2b9766:0x4f1,_0x236023:0x4f6,_0x57a024:0x4f7,_0x1c0ced:0x4eb,_0x297b83:0x488,_0x5c3818:0x49d},_0x397036={_0x29c8f3:0x12f,_0xf3e95:0x87},_0x485b7f={_0x106611:0x5b};function _0x539d0d(_0x308523,_0x4fd1de,_0x430749,_0x214a11){return _0x1e9b7e(_0x308523-_0x485b7f._0x106611,_0x4fd1de,_0x430749-0x126,_0x214a11-0xd4);}function _0x21cd1a(_0x1e10f5,_0x11a780,_0x394f9b,_0x526b9f){return _0x1e9b7e(_0x1e10f5- -_0x397036._0x29c8f3,_0x394f9b,_0x394f9b-_0x397036._0xf3e95,_0x526b9f-0x163);}return _0x4e2e28[_0x539d0d(_0x2aa7bf._0x2b9766,_0x2aa7bf._0x236023,_0x2aa7bf._0x57a024,_0x2aa7bf._0x1c0ced)+_0x539d0d(0x495,_0x2aa7bf._0x297b83,0x460,_0x2aa7bf._0x5c3818)]();}['_getPresen'+'ce'](_0x3cead5){const _0x4fe469={_0x42d18e:0x44c,_0x4d4c0a:0x439,_0x524588:0x44f},_0xc19be1={_0x3c4d3d:0x32,_0x2b79ad:0x92};function _0xaa7e9b(_0x4ed874,_0x393d38,_0x382452,_0xc1b047){return _0x1e9b7e(_0x393d38- -_0xc19be1._0x3c4d3d,_0xc1b047,_0x382452-0x127,_0xc1b047-_0xc19be1._0x2b79ad);}return _0x3cead5[_0xaa7e9b(_0x4fe469._0x42d18e,_0x4fe469._0x4d4c0a,0x459,_0x4fe469._0x524588)+'e']();}[_0x1e9b7e(0x459,0x47d,0x42c,0x45c)+'t'](_0x3393ba,_0x4d1e3d){const _0x550a40={_0x40cf77:0x110,_0x72004e:0x132,_0x21f1b5:0x147,_0x190391:0x119},_0x24c447={_0xfd4f68:0x7d,_0x349a3d:0x9e};function _0x27ee7c(_0x72fa56,_0x33d91f,_0x1dbe77,_0xfe7f28){return _0xf07c5f(_0x33d91f,_0x33d91f-_0x24c447._0xfd4f68,_0x1dbe77-0x5d,_0xfe7f28- -_0x24c447._0x349a3d);}return _0x3393ba[_0x27ee7c(-_0x550a40._0x40cf77,-_0x550a40._0x72004e,-_0x550a40._0x21f1b5,-_0x550a40._0x190391)+'e'](_0x4d1e3d);}['_setNotPre'+_0x1e9b7e(0x455,0x43f,0x48a,0x43e)](_0x2e3db6){const _0x1962aa={_0x16a5af:0x382,_0x4b735b:0x385,_0x17adaa:0x34e},_0x5e4967={_0x227b6a:0xef,_0x5e7d45:0x1d8,_0x29319a:0x3d8};function _0x407757(_0x284814,_0x2cd18d,_0x44ea3c,_0x128aa2){return _0xf07c5f(_0x284814,_0x2cd18d-_0x5e4967._0x227b6a,_0x44ea3c-_0x5e4967._0x5e7d45,_0x2cd18d-_0x5e4967._0x29319a);}return _0x2e3db6['setNotPres'+_0x407757(_0x1962aa._0x16a5af,0x35b,_0x1962aa._0x4b735b,_0x1962aa._0x17adaa)]();}[_0xf07c5f(-0xbf,-0xf1,-0xd4,-0xc6)+_0x1e9b7e(0x46c,0x49f,0x455,0x48b)](_0x471ac7){const _0x4d8ee7={_0x30312d:0x131,_0xbc5d09:0x29d,_0x350b42:0x29a,_0x4f667f:0xc0,_0xe475d4:0xf8,_0x466c3f:0xe4},_0x26079c={_0x2fad51:0xe9,_0x34a1d2:0x1e9,_0x3428c4:0x345},_0x449094={_0x18b361:0x1ef};function _0x5c6619(_0x1eaae2,_0x37e91d,_0x17da75,_0x1181c1){return _0x1e9b7e(_0x1181c1- -0x35f,_0x37e91d,_0x17da75-0x15f,_0x1181c1-_0x449094._0x18b361);}function _0x1d61cb(_0x49fd3c,_0x4f8d37,_0x335a66,_0xe6aecb){return _0xf07c5f(_0x335a66,_0x4f8d37-_0x26079c._0x2fad51,_0x335a66-_0x26079c._0x34a1d2,_0x4f8d37-_0x26079c._0x3428c4);}this['_haveFilte'+'r']=_0x471ac7;for(const {tracker:_0x47de10}of this[_0x5c6619(0x127,0x11d,0x145,_0x4d8ee7._0x30312d)+_0x1d61cb(0x2c1,_0x4d8ee7._0xbc5d09,0x27c,_0x4d8ee7._0x350b42)][_0x5c6619(0xd5,0x102,_0x4d8ee7._0x4f667f,_0x4d8ee7._0xe475d4)]()){_0x47de10[_0x1d61cb(0x27a,0x27f,0x273,0x26c)+'veFilter'](this[_0x5c6619(0x104,0x13a,_0x4d8ee7._0x466c3f,0x106)+'r']);}}};
1const e=require("safety-catch"),s=require("hypercore-id-encoding"),t=require("b4a"),{EventEmitter:i}=require("events"),{createResourceManager:n}=require("../lib/common"),a=require("./media"),o=require("./presence"),r=225,c=256;class l{constructor(e){this.connection=e,this.closed=!1,this.localAlias=0,this._proxiesByRemoteAlias=new Array(c),this._prefixesByLocalAlias=new Array(c),this._onmessage=this._onMessage.bind(this),this.connection.rawStream.on("message",this._onmessage)}_onMessage(e){if(this.closed)return;const s=e[0],t=this._proxiesByRemoteAlias[s];t&&t.handleRawStreamData(e.subarray(2))}createLocalAlias(){this.localAlias=(this.localAlias+1)%c;const e=t.allocUnsafe(2);return e[0]=this.localAlias,e[1]=r,this._prefixesByLocalAlias[this.localAlias]=e,this.localAlias}send(e,s){if(this.closed)return;const i=t.allocUnsafe(s.byteLength+2);this._prefixesByLocalAlias[e].copy(i,0),s.copy(i,2),this.connection.rawStream.trySend(i)}registerProxy(e,s){this._proxiesByRemoteAlias[e]=s}unregisterProxy(e){this._proxiesByRemoteAlias[e]=null}close(){this.closed=!0,this.connection.rawStream.removeListener("message",this._onmessage)}}module.exports=class extends i{constructor(s,{firewall:t,onerror:i=e,skipJoinLeave:r=!1}={}){super(),this.swarm=s,this.onerror=i,this.firewall=t,this._localAlias=0,this._rawMuxersByStream=new Map;const{collection:c,asyncMethod:l,subscription:h}=n(e=>new a(this,e),this._updateCall.bind(this)),{collection:d,asyncMethod:_,subscription:u}=n(e=>new o(this,e,t));this._mediaByCallId=c,this._presenceByCallId=d,this._connectionsBySwarmId=new Map,this._activatedCalls=new Set,this.activateCall=this._activateCall.bind(this),this.deactivateCall=this._deactivateCall.bind(this),this._skipJoinLeave=!0===r,this.authorize=this._authorize.bind(this),this.deauthorize=this._deauthorize.bind(this),this.joinPeer=this._joinPeer.bind(this),this.leavePeer=this._leavePeer.bind(this),this.signalMedia=l(this._signalMedia.bind(this)),this.subscribeMediaSignals=h(this._subscribeMediaSignals.bind(this)),this.subscribeProxyUpdates=h(this._subscribeProxyUpdates.bind(this)),this.setPresent=_(this._setPresent.bind(this)),this.setNotPresent=_(this._setNotPresent.bind(this)),this.subscribePresence=u(this._subscribePresence.bind(this)),this.getPresence=_(this._getPresence.bind(this));const v=this;this._onconnection=this._onConnection.bind(this),this._onconnectionclosed=function(){v._onConnectionClosed(this)},this.swarm.on("connection",this._onconnection)}setSkipJoinLeave(e){this._skipJoinLeave!==e&&(this._skipJoinLeave=e)}get callIsActive(){return this._mediaByCallId.size>0}_updateCall(e,s){1===this._mediaByCallId.size&&s?this.emit("call-active",e):0!==this._mediaByCallId.size||s||this.emit("call-inactive",e)}mediaIsActive(e){return this._mediaByCallId.has(e)}shouldActivate(e){return this.mediaIsActive(e)||this._activatedCalls.has(e)}_activateCall(e){this._activatedCalls.add(e);const s=this._presenceByCallId.get(e);s&&s.value.activate()}_deactivateCall(e){this._activatedCalls.delete(e);const s=this._presenceByCallId.get(e);s&&s.value.deactivate()}internalActivateCall(e){return this._activateCall(e.callId)}internalDeactivateCall(e){return this._deactivateCall(e.callId)}close(){this.swarm.removeListener("connection",this._onconnection);for(const e of this.swarm.connections)e.removeListener("close",this._onconnectionclosed);for(const e of this._rawMuxersByStream.values())e.close();for(const{value:e}of this._mediaByCallId.values())e.close();for(const{value:e}of this._presenceByCallId.values())e.close()}_onConnection(e){const t=s.encode(e.remotePublicKey),i=this._connectionsBySwarmId.get(t);i&&i!==e&&this._onConnectionClosed(i),this._connectionsBySwarmId.set(t,e);const n=new l(e);this._rawMuxersByStream.set(e,n),e.on("close",this._onconnectionclosed);for(const{value:s}of this._mediaByCallId.values())s.addConnection(e,n);for(const{value:s}of this._presenceByCallId.values())s.addConnection(e)}_onConnectionClosed(e){const t=s.encode(e.remotePublicKey);this._connectionsBySwarmId.get(t)===e&&this._connectionsBySwarmId.delete(t);const i=this._rawMuxersByStream.get(e);i&&(i.close(),this._rawMuxersByStream.delete(e));for(const{value:s}of this._mediaByCallId.values())s.removeConnection(e,i);for(const{value:s}of this._presenceByCallId.values())s.removeConnection(e)}_authorize(e,s){}_deauthorize(e,s){}_joinPeer(e){if(!this._skipJoinLeave)return this.swarm.joinPeer(s.decode(e))}_leavePeer(e){if(!this._skipJoinLeave)return this.swarm.leavePeer(s.decode(e))}_signalMedia(e,s,t){const i=this._connectionsBySwarmId.get(s);return e.signal(i,t)}_subscribeMediaSignals(e){return e.subscribeMediaSignals()}_subscribeProxyUpdates(e){return e.subscribeProxyUpdates()}_subscribePresence(e){return e.subscribePresence()}_getPresence(e){return e.getPresence()}_setPresent(e,s){return e.setPresence(s)}_setNotPresent(e){return e.setNotPresent()}debugSetHaveFilter(e){this._haveFilter=e;for(const{tracker:e}of this._trackersByCallId.values())e.debugSetHaveFilter(this._haveFilter)}};
@holepunchto/keet-call/server/media.js +1 -1
……@@ -1 +1 @@
1function _0x10ba(){const _0x2a471d=['2488178KLGxVG','_proxySubs','tivateCall','ByStream','11565000AShMAu','1062045Jnqokw','PROXY_CLOS','_sendingBy','8mComRp','proxyPort','activateCa','swarm','get','splice','(((.+)+)+)','close','addConnect','callId','push','Connection','toString','channelOpe','publicKey','removeConn','_signalSub','PROXY_OPEN','_pendingSi','iaSignal','channel-cl','criptions','createSock','986820EFefKJ','icKey','339762PZudse','onerror','nection','468315tRAJeP','remotePubl','4jyJfgV','ned','udx','constructo','search','signal','sendSignal','exports','_handleMed','length','encode','server','7XbKxeV','swarmId','keys','internalAc','indexOf','5352531VoPktz','ion','gnalsByCon','channel-op','delete','keyPair','ose','scriptions','_onProxyOp','_rawMuxers','has','_onProxyCl','ection','set','_proxiesBy','9BzCbmM'];_0x10ba=function(){return _0x2a471d;};return _0x10ba();}(function(_0x52c9f3,_0x5b5ab7){const _0x35ef9f={_0xf69448:0x93,_0xb3468d:0xa2,_0x3dfc88:0x95,_0x1c9c5a:0x30e,_0x173919:0x2ee,_0x362b0b:0x2ff,_0x46b046:0x2f8,_0xf802a0:0x2f5,_0x2bb886:0x30a,_0x1536b8:0x309,_0x352c3a:0x2e6,_0x1fb8ac:0x7b,_0x229efe:0x8a,_0x581e4e:0x73,_0x475a2d:0x2c9,_0x2aa005:0x2d3,_0x132cef:0x7e,_0xf388ec:0x92,_0x23c18e:0x79,_0x5c4a1b:0x94,_0x1fa40f:0xa7,_0x3c3836:0x2db,_0xf60c00:0x2f6,_0x50bc47:0x2dc,_0x4e4f76:0x2dc,_0x44fa90:0x2fa,_0x5ca1f1:0x2ec,_0x4819c7:0x2fb},_0x4f16ff={_0xda4dd2:0x8},_0x4ca1d8={_0x513ad7:0x376};function _0x1ff9ce(_0x5e5165,_0xa76cee,_0xa5f6df,_0x4a3b64){return _0x25e8(_0xa76cee- -_0x4ca1d8._0x513ad7,_0xa5f6df);}function _0x4497ad(_0x56dbcb,_0x52f812,_0x3f3092,_0x1896cf){return _0x25e8(_0x1896cf-_0x4f16ff._0xda4dd2,_0x56dbcb);}const _0x3bb4a5=_0x52c9f3();while(!![]){try{const _0x5e9fc1=-parseInt(_0x4497ad(0xa1,_0x35ef9f._0xf69448,_0x35ef9f._0xb3468d,_0x35ef9f._0x3dfc88))/(-0x18c7+0x7d4+0x7c*0x23)*(-parseInt(_0x1ff9ce(-0x2fd,-_0x35ef9f._0x1c9c5a,-0x325,-_0x35ef9f._0x173919))/(-0x161f+-0x1de8+0xb*0x4bb))+-parseInt(_0x1ff9ce(-_0x35ef9f._0x362b0b,-_0x35ef9f._0x46b046,-0x2fa,-_0x35ef9f._0xf802a0))/(0x1fb2+0x5f*-0x37+-0xb46)+parseInt(_0x1ff9ce(-_0x35ef9f._0x2bb886,-_0x35ef9f._0x1536b8,-0x2ff,-_0x35ef9f._0x352c3a))/(0x7e3+-0x14f9*-0x1+-0x1cd8)*(parseInt(_0x4497ad(0x85,_0x35ef9f._0x1fb8ac,_0x35ef9f._0x229efe,_0x35ef9f._0x581e4e))/(0x1*0xfd1+-0x269*-0x5+-0x1bd9))+-parseInt(_0x1ff9ce(-0x2a7,-_0x35ef9f._0x475a2d,-_0x35ef9f._0x475a2d,-_0x35ef9f._0x2aa005))/(-0x1*0x1f77+-0x1eb1+0x3e2e)*(parseInt(_0x4497ad(_0x35ef9f._0x132cef,_0x35ef9f._0xf388ec,_0x35ef9f._0x23c18e,0x81))/(0x1b23+-0x3*-0x1f7+-0x2101))+parseInt(_0x4497ad(_0x35ef9f._0x5c4a1b,_0x35ef9f._0x1fb8ac,_0x35ef9f._0x1fa40f,0x9e))/(-0x2261+0x1ec+0x207d)*(-parseInt(_0x1ff9ce(-_0x35ef9f._0x3c3836,-0x2e3,-_0x35ef9f._0xf60c00,-_0x35ef9f._0x50bc47))/(0xfe9+-0xb29*0x2+-0x2*-0x339))+parseInt(_0x1ff9ce(-_0x35ef9f._0x50bc47,-0x2e4,-_0x35ef9f._0x4e4f76,-_0x35ef9f._0x44fa90))/(-0x1479+-0x168a+-0x2b0d*-0x1)+parseInt(_0x1ff9ce(-0x30b,-0x2e8,-_0x35ef9f._0x5ca1f1,-_0x35ef9f._0x4819c7))/(0xf5b+-0x4b7+0xa99*-0x1);if(_0x5e9fc1===_0x5b5ab7)break;else _0x3bb4a5['push'](_0x3bb4a5['shift']());}catch(_0xb14881){_0x3bb4a5['push'](_0x3bb4a5['shift']());}}}(_0x10ba,0x107967+-0x3*-0x632f+-0x172*0x24b));const _0x4664a6=(function(){let _0x358f42=!![];return function(_0x58c075,_0x5e3272){const _0x37bfba=_0x358f42?function(){if(_0x5e3272){const _0x1f038c=_0x5e3272['apply'](_0x58c075,arguments);return _0x5e3272=null,_0x1f038c;}}:function(){};return _0x358f42=![],_0x37bfba;};}());function _0x37eda8(_0x50e203,_0x55179a,_0x38fd54,_0x3c077b){const _0x121f17={_0x42fa21:0x18};return _0x25e8(_0x55179a-_0x121f17._0x42fa21,_0x38fd54);}const _0x53bcbc=_0x4664a6(this,function(){const _0x551dc1={_0x35bfba:0x28,_0x2cf906:0x56,_0xe9c81:0x52,_0x36af03:0x4b,_0x1cea55:0x2f,_0x431570:0x32,_0x4e2167:0x50,_0x24e442:0x67,_0x5d4a28:0x71,_0x3572b3:0x5b,_0x3c5ec8:0x87,_0x283946:0x72,_0x3f237d:0x60,_0x1d34b3:0x8f},_0x180614={_0x5351d8:0x1};function _0x22ad91(_0x45e32c,_0x1e4e59,_0x22ef82,_0x563956){return _0x25e8(_0x1e4e59-_0x180614._0x5351d8,_0x45e32c);}function _0x25520b(_0x37b089,_0x27f144,_0x234c56,_0x462beb){return _0x25e8(_0x462beb- -0xe7,_0x37b089);}return _0x53bcbc['toString']()['search'](_0x25520b(-_0x551dc1._0x35bfba,-_0x551dc1._0x2cf906,-_0x551dc1._0xe9c81,-_0x551dc1._0x36af03)+'+$')[_0x25520b(-_0x551dc1._0x1cea55,-_0x551dc1._0x431570,-_0x551dc1._0x4e2167,-0x45)]()[_0x22ad91(_0x551dc1._0x24e442,_0x551dc1._0x5d4a28,0x58,_0x551dc1._0x3572b3)+'r'](_0x53bcbc)[_0x22ad91(_0x551dc1._0x3c5ec8,_0x551dc1._0x283946,_0x551dc1._0x3f237d,_0x551dc1._0x1d34b3)]('(((.+)+)+)'+'+$');});function _0x25e8(_0x25e8d6,_0x53817d){const _0x1c1860=_0x10ba();return _0x25e8=function(_0xa386ed,_0x14461e){_0xa386ed=_0xa386ed-(-0x2524+0x1f*0x4f+0x1bfa);let _0x519937=_0x1c1860[_0xa386ed];return _0x519937;},_0x25e8(_0x25e8d6,_0x53817d);}_0x53bcbc();const {Readable}=require('streamx'),HypercoreId=require('hypercore-id-encoding');function _0x4eb4f6(_0x12feeb,_0xee210a,_0x44d987,_0x2800ac){const _0x40a416={_0x2a58e8:0x393};return _0x25e8(_0x12feeb- -_0x40a416._0x2a58e8,_0xee210a);}const KeetWebRTCProxy=require('./webrtc'),{MEDIA_EVENTS}=require('../lib/common');module[_0x37eda8(0x7a,0x8c,0x6f,0x98)]=class MediaServer{constructor(_0x479e6b,_0x4c6593){const _0x31f6e8={_0x4f70fe:0x2a0,_0xeed3fa:0x2aa,_0x272117:0x29f,_0x491eb6:0x292,_0x5d90df:0x298,_0xf99e04:0x27d,_0x298570:0x27e,_0x300f3a:0x274,_0xad4132:0x287,_0x23e3ef:0x27e,_0x5bd03e:0x263,_0x121c1b:0x310,_0x1b5419:0x2f9,_0x3a7289:0x315,_0x3ea687:0x321,_0x19c16a:0x301,_0x5d25a4:0x31a,_0x7e8207:0x2e2,_0x8c3978:0x2e9,_0x1164c4:0x2fe,_0x3ba2c1:0x2e0,_0x60fbaf:0x2e1,_0xba4044:0x2fd,_0x5b2277:0x314,_0x255c9c:0x2d5,_0x2819be:0x25c,_0x47d715:0x273,_0x95589:0x251,_0x431520:0x27c,_0x1fe3e5:0x285,_0x1a3066:0x25a,_0x5ad37e:0x276,_0x41a3a2:0x2e4,_0x1505aa:0x2cd,_0x510bad:0x2d8,_0x3b223a:0x2d9,_0x222b98:0x281,_0x108e60:0x26f,_0xc46955:0x252,_0x3249aa:0x27b,_0x29fd53:0x28c,_0x395780:0x297,_0x1081b0:0x2be,_0x1a33d2:0x2ad,_0x5bbdc5:0x2d4,_0x47105d:0x26f,_0x99d9bc:0x292,_0x1a5fd0:0x280,_0x2db985:0x2ea,_0x36b6d8:0x307,_0xebd7d4:0x2c8,_0x11da62:0x2fd,_0x255edf:0x310,_0x2f3de2:0x30e,_0x3a0c6e:0x2db,_0x262d8d:0x2f5,_0x585bbe:0x2d6,_0x6b44e:0x295,_0x2ab7b1:0x289,_0x2d9cf9:0x2ee,_0x4cab66:0x2f2,_0x52115f:0x2ca,_0x1e0a32:0x302,_0x22d9a1:0x302,_0x14607e:0x28e,_0x146cdd:0x290,_0x2eff59:0x270,_0x2a8a85:0x28f,_0x216bd9:0x274,_0x56653c:0x279,_0x18a3b2:0x2df,_0x428788:0x2fb,_0x24eb18:0x2d5},_0x321a05={_0x18365a:0x14f,_0x43cc35:0x1ec},_0x3e0d34={_0x55b15e:0xba,_0x363884:0x32f,_0x5de0fc:0x27};this[_0x2b9702(-_0x31f6e8._0x4f70fe,-_0x31f6e8._0xeed3fa,-_0x31f6e8._0x272117,-_0x31f6e8._0x491eb6)]=_0x479e6b,this[_0x2b9702(-_0x31f6e8._0x5d90df,-_0x31f6e8._0xf99e04,-_0x31f6e8._0x298570,-0x2a1)]=_0x479e6b[_0x2b9702(-_0x31f6e8._0x300f3a,-_0x31f6e8._0xad4132,-_0x31f6e8._0x23e3ef,-_0x31f6e8._0x5bd03e)];function _0x2b9702(_0x3c1293,_0x3dd185,_0x45fd4b,_0xdaa35a){return _0x37eda8(_0x3c1293-_0x3e0d34._0x55b15e,_0x45fd4b- -_0x3e0d34._0x363884,_0x3dd185,_0xdaa35a-_0x3e0d34._0x5de0fc);}this['onerror']=_0x479e6b[_0x5116ff(-_0x31f6e8._0x121c1b,-0x305,-_0x31f6e8._0x1b5419,-_0x31f6e8._0x3a7289)],this['callId']=_0x4c6593,this[_0x5116ff(-0x2ff,-_0x31f6e8._0x3ea687,-_0x31f6e8._0x19c16a,-_0x31f6e8._0x5d25a4)]=HypercoreId[_0x5116ff(-0x302,-_0x31f6e8._0x7e8207,-_0x31f6e8._0x8c3978,-_0x31f6e8._0x1164c4)](this[_0x5116ff(-_0x31f6e8._0x3ba2c1,-_0x31f6e8._0x60fbaf,-_0x31f6e8._0xba4044,-0x2e4)][_0x5116ff(-0x2f6,-_0x31f6e8._0x5b2277,-_0x31f6e8._0x121c1b,-_0x31f6e8._0x255c9c)][_0x2b9702(-_0x31f6e8._0x2819be,-0x261,-_0x31f6e8._0x47d715,-_0x31f6e8._0x95589)]),this[_0x2b9702(-_0x31f6e8._0x431520,-0x270,-0x28b,-_0x31f6e8._0x1fe3e5)+_0x2b9702(-0x26c,-_0x31f6e8._0x1a3066,-_0x31f6e8._0x5ad37e,-0x258)]=new Map(),this[_0x5116ff(-_0x31f6e8._0x41a3a2,-_0x31f6e8._0x1505aa,-0x2fd,-0x2db)+_0x5116ff(-_0x31f6e8._0x510bad,-0x2bb,-_0x31f6e8._0x3b223a,-0x2d1)]=new Map(),this[_0x2b9702(-_0x31f6e8._0x222b98,-_0x31f6e8._0x5bd03e,-_0x31f6e8._0x108e60,-_0x31f6e8._0xc46955)+_0x2b9702(-_0x31f6e8._0x3249aa,-_0x31f6e8._0x29fd53,-_0x31f6e8._0x395780,-0x286)+_0x2b9702(-_0x31f6e8._0x1081b0,-0x296,-_0x31f6e8._0x1a33d2,-0x2c7)]=new Map();function _0x5116ff(_0x34d81b,_0x28acb7,_0x498eb9,_0x5cdfb7){return _0x37eda8(_0x34d81b-_0x321a05._0x18365a,_0x34d81b- -0x391,_0x28acb7,_0x5cdfb7-_0x321a05._0x43cc35);}this[_0x5116ff(-0x2d3,-_0x31f6e8._0x5bbdc5,-0x2d2,-0x2ee)+_0x2b9702(-_0x31f6e8._0x47105d,-_0x31f6e8._0xf99e04,-_0x31f6e8._0x99d9bc,-_0x31f6e8._0x1a5fd0)]=[],this[_0x5116ff(-_0x31f6e8._0x2db985,-_0x31f6e8._0x36b6d8,-0x309,-_0x31f6e8._0xebd7d4)+'criptions']=[],this['server'][_0x5116ff(-_0x31f6e8._0x11da62,-_0x31f6e8._0x255edf,-_0x31f6e8._0x2f3de2,-_0x31f6e8._0x3a0c6e)+_0x5116ff(-_0x31f6e8._0x8c3978,-0x2e3,-_0x31f6e8._0x262d8d,-_0x31f6e8._0x585bbe)](this);for(const _0x2f627a of this[_0x2b9702(-_0x31f6e8._0x6b44e,-_0x31f6e8._0x2ab7b1,-_0x31f6e8._0x298570,-0x27b)]['connection'+'s']){this[_0x5116ff(-0x2db,-_0x31f6e8._0x2d9cf9,-_0x31f6e8._0x4cab66,-_0x31f6e8._0x52115f)+_0x5116ff(-0x2fa,-0x30b,-_0x31f6e8._0x1e0a32,-_0x31f6e8._0x22d9a1)](_0x2f627a,this['server'][_0x2b9702(-0x271,-_0x31f6e8._0x14607e,-_0x31f6e8._0x146cdd,-_0x31f6e8._0x2eff59)+_0x2b9702(-_0x31f6e8._0x2a8a85,-_0x31f6e8._0x216bd9,-0x286,-_0x31f6e8._0x56653c)][_0x5116ff(-_0x31f6e8._0x18a3b2,-0x2ff,-_0x31f6e8._0x428788,-_0x31f6e8._0x24eb18)](_0x2f627a));}}[_0x37eda8(0xa5,0xb5,0x9d,0xac)](){const _0x1ca0e9={_0x17283f:0xe,_0x47b842:0x2d,_0x4256d6:0x1b,_0x28c03a:0x4d,_0x3155a:0x53,_0x39bddd:0x3e,_0x420dcc:0x52,_0x150d8b:0x77,_0x444f42:0x86,_0x4cca24:0x66,_0x5e61fc:0x57,_0x1a6ae2:0x89,_0x4794d4:0x6e,_0x17f5f5:0x18,_0x5519d2:0x21},_0x2ad91b={_0x124824:0x292,_0x25369d:0xee,_0x4e0137:0x8},_0x461d2c={_0x59d277:0x36,_0x6a2596:0xd1,_0x200cac:0x159};function _0x22746b(_0x26238c,_0x219f34,_0x3f9f75,_0x491bfc){return _0x37eda8(_0x26238c-_0x461d2c._0x59d277,_0x3f9f75- -_0x461d2c._0x6a2596,_0x219f34,_0x491bfc-_0x461d2c._0x200cac);}for(const _0x349907 of this[_0x22746b(-_0x1ca0e9._0x17283f,-0x16,-0x2d,-0x42)+_0x22746b(-_0x1ca0e9._0x47b842,-0x2c,-0x18,-_0x1ca0e9._0x4256d6)][_0x22746b(-_0x1ca0e9._0x28c03a,-_0x1ca0e9._0x3155a,-_0x1ca0e9._0x39bddd,-_0x1ca0e9._0x420dcc)]()){this['removeConn'+_0x25dca3(-_0x1ca0e9._0x150d8b,-_0x1ca0e9._0x444f42,-_0x1ca0e9._0x4cca24,-_0x1ca0e9._0x5e61fc)](_0x349907);}function _0x25dca3(_0x42c4c3,_0x50ac90,_0x4a60cd,_0x231f90){return _0x4eb4f6(_0x42c4c3-_0x2ad91b._0x124824,_0x4a60cd,_0x4a60cd-_0x2ad91b._0x25369d,_0x231f90-_0x2ad91b._0x4e0137);}this[_0x25dca3(-_0x1ca0e9._0x1a6ae2,-0xa7,-0x90,-_0x1ca0e9._0x4794d4)]['internalDe'+_0x22746b(-_0x1ca0e9._0x17f5f5,-0x45,-_0x1ca0e9._0x5519d2,-0x34)+'ll'](this);}['addConnect'+_0x37eda8(0x97,0x97,0xaf,0xa9)](_0x4b2836,_0x44a480){const _0x530316={_0x4ebfac:0x225,_0x4daf38:0x211,_0x430e12:0x234,_0x3d501e:0x21e,_0xafaef1:0x2f0,_0x57d421:0x2d8,_0x13b7b6:0x2f4,_0x17dd3e:0x229,_0x60ac0b:0x218,_0x5138db:0x206,_0x107724:0x2ee,_0x4520b0:0x30a,_0x5a98e1:0x314,_0x4c16c5:0x2c7,_0x20f70c:0x2d7,_0x4eac21:0x2e1,_0x4afb06:0x212,_0x248c8e:0x236,_0x5de76e:0x230,_0x3fa80e:0x210,_0x2fc581:0x254,_0x1d6064:0x2c7,_0x204c04:0x2cf,_0x177abf:0x2f1,_0x5dd37e:0x30c,_0x4e880c:0x2f3,_0x3cb1c6:0x2f5,_0x53746e:0x225,_0x40f3f3:0x20e,_0x7a8a5d:0x20f,_0x34b7da:0x226,_0x14723f:0x213,_0x382fb2:0x210,_0x43b671:0x30d,_0xe5a360:0x2d9},_0x25fcbb={_0x227978:0x1a,_0x43b566:0x101,_0x427b5d:0x8c},_0x5bc006={_0x3d688c:0x44,_0x4a684:0x2c9};if(this[_0x3ac817(-_0x530316._0x4ebfac,-_0x530316._0x4daf38,-_0x530316._0x430e12,-_0x530316._0x3d501e)+_0x175906(-_0x530316._0xafaef1,-0x2ce,-_0x530316._0x57d421,-_0x530316._0x13b7b6)][_0x3ac817(-_0x530316._0x17dd3e,-0x240,-_0x530316._0x60ac0b,-_0x530316._0x5138db)](_0x4b2836))return;const _0xa1c770=this['swarm']['dht'][_0x175906(-_0x530316._0x107724,-_0x530316._0x4520b0,-_0x530316._0x4520b0,-_0x530316._0x5a98e1)][_0x175906(-_0x530316._0x4c16c5,-_0x530316._0x20f70c,-0x2cd,-_0x530316._0x4eac21)+'et'](),_0x536a1d=new KeetWebRTCProxy(this[_0x3ac817(-_0x530316._0x4afb06,-0x22c,-0x211,-_0x530316._0x248c8e)],_0x44a480,_0xa1c770,{'onsignal':_0x31a912=>this[_0x3ac817(-0x23c,-0x257,-0x259,-0x244)+_0x175906(-0x2c5,-0x2db,-0x2d0,-0x2e7)](_0x4b2836,_0x31a912)});function _0x3ac817(_0xa43f9f,_0x121b9a,_0x14810a,_0x31bc37){return _0x37eda8(_0xa43f9f-_0x5bc006._0x3d688c,_0xa43f9f- -_0x5bc006._0x4a684,_0x121b9a,_0x31bc37-0x19b);}_0x536a1d['on'](_0x3ac817(-_0x530316._0x5de76e,-0x21b,-_0x530316._0x3fa80e,-_0x530316._0x2fc581)+'en',()=>this[_0x175906(-0x2f3,-0x313,-0x2f3,-0x2e5)+'en'](_0x4b2836,_0x536a1d)),_0x536a1d['on'](_0x175906(-0x2e5,-_0x530316._0x1d6064,-_0x530316._0x204c04,-_0x530316._0x177abf)+_0x175906(-_0x530316._0x5dd37e,-_0x530316._0x4e880c,-_0x530316._0x3cb1c6,-0x30b),()=>this[_0x3ac817(-0x228,-0x23e,-0x226,-0x225)+_0x3ac817(-0x22d,-0x225,-0x23d,-0x235)](_0x4b2836)),this[_0x3ac817(-_0x530316._0x53746e,-_0x530316._0x40f3f3,-_0x530316._0x7a8a5d,-0x218)+'Connection'][_0x3ac817(-_0x530316._0x34b7da,-0x214,-0x23a,-_0x530316._0x14723f)](_0x4b2836,_0x536a1d);function _0x175906(_0xcaf247,_0xb91f15,_0x2cc72f,_0x4b2646){return _0x4eb4f6(_0x2cc72f-_0x25fcbb._0x227978,_0xb91f15,_0x2cc72f-_0x25fcbb._0x43b566,_0x4b2646-_0x25fcbb._0x427b5d);}this['_sendingBy'+_0x3ac817(-_0x530316._0x3fa80e,-_0x530316._0x382fb2,-0x22b,-_0x530316._0x4afb06)][_0x175906(-0x2e8,-_0x530316._0x43b671,-0x2ee,-_0x530316._0xe5a360)](_0x4b2836,new Set());}[_0x37eda8(0xa4,0xbd,0xc9,0x9e)+'ection'](_0x4b9cd6){const _0x157634={_0x1b397e:0x37a,_0x445043:0x369,_0x46f095:0x37d,_0x44a7b9:0x34b,_0x4c078d:0x110,_0x24a83c:0x106,_0x3693f8:0xf1,_0x3ffa6b:0x360,_0x1a240b:0x354,_0x56ca64:0xd6,_0x12005c:0xc5,_0x539c1a:0xd7,_0x3f11a7:0xda,_0x56a995:0xec,_0x1cdbcd:0xdd,_0x298085:0x34b,_0xf1cee3:0x344,_0x2ee288:0xbd,_0x244a67:0xe1,_0x46179e:0xe5,_0x3a163c:0x376,_0x37cbb8:0x353,_0x266808:0xc2,_0x1a2e05:0x318,_0x241326:0x338,_0xb1830a:0x334,_0x64acf1:0x33d,_0x2575af:0xf7,_0x47d06a:0xe6,_0x270c89:0xf6,_0x4b39e6:0xfc,_0x1e807c:0x390,_0x3efa5d:0x376,_0x36bea3:0x387,_0xdd5153:0x359,_0x5d1bcf:0x33f,_0x4cc8e8:0x329,_0x439a9a:0x35a,_0x4d2e9c:0x340,_0x23a86e:0x363,_0x40edfc:0x341,_0x2e9086:0x34c,_0x128172:0x33e,_0x5aafa6:0x34b},_0x1831fe={_0x5218b3:0xe0},_0x34bd63={_0x514d56:0x138,_0x2ebc19:0x3f8,_0x330aa5:0x180},_0x2e8178=HypercoreId[_0x10c508(-_0x157634._0x1b397e,-_0x157634._0x445043,-_0x157634._0x46f095,-_0x157634._0x44a7b9)](_0x4b9cd6['remotePubl'+_0x32dc0a(-_0x157634._0x4c078d,-_0x157634._0x24a83c,-_0x157634._0x3693f8,-0x102)]);function _0x10c508(_0x2de569,_0x496e0e,_0xa73dab,_0x511f0e){return _0x37eda8(_0x2de569-_0x34bd63._0x514d56,_0x496e0e- -_0x34bd63._0x2ebc19,_0x2de569,_0x511f0e-_0x34bd63._0x330aa5);}const _0x53f16b=this[_0x10c508(-_0x157634._0x3ffa6b,-_0x157634._0x1a240b,-0x371,-0x375)+_0x32dc0a(-_0x157634._0x56ca64,-_0x157634._0x12005c,-_0x157634._0x539c1a,-0xd6)]['get'](_0x4b9cd6);if(!_0x53f16b)return;_0x53f16b[_0x32dc0a(-_0x157634._0x3f11a7,-_0x157634._0x56a995,-0xe2,-_0x157634._0x1cdbcd)](),this[_0x10c508(-0x34f,-0x354,-_0x157634._0x298085,-_0x157634._0xf1cee3)+_0x32dc0a(-_0x157634._0x56ca64,-_0x157634._0x2ee288,-_0x157634._0x244a67,-_0x157634._0x46179e)][_0x10c508(-0x347,-0x35e,-_0x157634._0x3a163c,-_0x157634._0x37cbb8)](_0x4b9cd6),this['_sendingBy'+_0x32dc0a(-_0x157634._0x56ca64,-_0x157634._0x266808,-_0x157634._0x266808,-_0x157634._0x12005c)]['delete'](_0x4b9cd6);function _0x32dc0a(_0x25ec0b,_0x341dc6,_0x12ec70,_0x24e38f){return _0x4eb4f6(_0x25ec0b-0x21c,_0x24e38f,_0x12ec70-0xeb,_0x24e38f-_0x1831fe._0x5218b3);}this[_0x10c508(-_0x157634._0x1a2e05,-_0x157634._0x241326,-_0x157634._0xb1830a,-_0x157634._0x64acf1)+_0x32dc0a(-_0x157634._0x2575af,-_0x157634._0x47d06a,-_0x157634._0x270c89,-_0x157634._0x4b39e6)+_0x10c508(-_0x157634._0x1e807c,-_0x157634._0x3efa5d,-0x361,-_0x157634._0x36bea3)][_0x10c508(-0x354,-0x35e,-_0x157634._0xdd5153,-_0x157634._0x5d1bcf)](_0x4b9cd6);for(const _0x4558f3 of this['_proxySubs'+_0x10c508(-_0x157634._0x4cc8e8,-0x335,-0x348,-0x325)]){_0x4558f3[_0x10c508(-_0x157634._0x439a9a,-_0x157634._0x4d2e9c,-_0x157634._0x23a86e,-0x333)]({'type':MEDIA_EVENTS[_0x10c508(-_0x157634._0x40edfc,-_0x157634._0x2e9086,-_0x157634._0x128172,-_0x157634._0x5aafa6)+'E'],'swarmId':_0x2e8178});}}[_0x4eb4f6(-0x30d,-0x328,-0x320,-0x2f0)+'en'](_0x448b14,_0x1abdbb){const _0x56e594={_0x469388:0x36e,_0x4dac31:0x365,_0x5e404f:0x37a,_0x3ed8c7:0x37c,_0x101772:0x377,_0x53e409:0x386,_0x1ee564:0x39f,_0x3a5b22:0x3a6,_0x47e67b:0x14,_0x421dc7:0x14,_0xa75327:0x2f,_0x26b289:0x4,_0x163c14:0x3a7,_0x21109b:0x3a3,_0x5dc068:0x3a8,_0x1abea1:0x3b8,_0x3ee988:0x39d,_0x57cd1f:0x3b7,_0x47d179:0xf,_0x3dc460:0x13,_0x271c70:0xc,_0x261de8:0x29,_0x1f4440:0x19,_0x38319e:0x3aa,_0x36f141:0x3ac,_0x4a97da:0x3b4,_0x161817:0x38d,_0x5dd8f5:0x31,_0x5ed8c4:0x12,_0x53160e:0x23,_0x23c89a:0x390,_0x313e0a:0x3a2,_0x2cb408:0x3b2,_0x3a1c63:0x36a,_0x33cf67:0x359,_0x3d903a:0x2e,_0x29de70:0x23},_0x4d9877={_0x3b2dff:0x1f0},_0x3c0ba1={_0x573fdd:0x176,_0x939cb3:0xab,_0x255a8b:0xec},_0x8770b6=HypercoreId[_0x1e9072(0x387,_0x56e594._0x469388,_0x56e594._0x4dac31,_0x56e594._0x5e404f)](_0x448b14[_0x1e9072(_0x56e594._0x3ed8c7,0x37f,0x38b,0x390)+_0x1e9072(_0x56e594._0x101772,0x38c,_0x56e594._0x53e409,0x394)]);for(const _0x5f0a23 of this[_0x1e9072(_0x56e594._0x1ee564,0x3b8,_0x56e594._0x3a5b22,0x381)+'criptions']){_0x5f0a23['push']({'type':MEDIA_EVENTS[_0x3365b4(_0x56e594._0x47e67b,_0x56e594._0x421dc7,_0x56e594._0xa75327,-_0x56e594._0x26b289)],'proxyPort':_0x1abdbb[_0x1e9072(_0x56e594._0x163c14,_0x56e594._0x21109b,_0x56e594._0x5dc068,0x3a7)],'swarmId':_0x8770b6});}const _0x10b161=this[_0x1e9072(_0x56e594._0x1abea1,0x3c3,_0x56e594._0x3ee988,_0x56e594._0x57cd1f)+_0x3365b4(_0x56e594._0x47d179,-_0x56e594._0x3dc460,-0x6,-0x30)+_0x3365b4(-_0x56e594._0x271c70,-_0x56e594._0x261de8,-_0x56e594._0xa75327,-_0x56e594._0x1f4440)][_0x1e9072(_0x56e594._0x38319e,_0x56e594._0x36f141,_0x56e594._0x4a97da,_0x56e594._0x161817)](_0x448b14);function _0x3365b4(_0x825016,_0x55b544,_0x2c17d9,_0xda3543){return _0x37eda8(_0x825016-_0x3c0ba1._0x573fdd,_0x55b544- -_0x3c0ba1._0x939cb3,_0x825016,_0xda3543-_0x3c0ba1._0x255a8b);}function _0x1e9072(_0x1f465a,_0x27cad4,_0x32be85,_0x53fe3a){return _0x37eda8(_0x1f465a-0x17b,_0x1f465a-0x2f8,_0x27cad4,_0x53fe3a-_0x4d9877._0x3b2dff);}if(_0x10b161){while(_0x10b161[_0x3365b4(-_0x56e594._0x5dd8f5,-0x1d,-_0x56e594._0x5dd8f5,-_0x56e594._0x5ed8c4)]){_0x1abdbb[_0x3365b4(-_0x56e594._0x53160e,-0x20,-0x19,-0x1b)](_0x10b161['shift']());}this['_pendingSi'+_0x1e9072(_0x56e594._0x23c89a,_0x56e594._0x313e0a,_0x56e594._0x2cb408,0x3b1)+_0x1e9072(0x37a,_0x56e594._0x3a1c63,_0x56e594._0x33cf67,0x360)][_0x3365b4(-_0x56e594._0x3d903a,-0x11,-_0x56e594._0x29de70,-0x31)](_0x448b14);}}['_onProxyCl'+'ose'](_0x6e7554){const _0x13573c={_0x124d22:0x17,_0x323b37:0x1f,_0x65c183:0x1c,_0x4c90fa:0x32,_0x277159:0x3f,_0x5a0181:0x8,_0x10a7c0:0x22,_0x38f7a9:0x414,_0x2a7af9:0x40a,_0x3fe232:0x5f,_0x2864d6:0x5b,_0x563e8c:0x40e,_0x1ac565:0x412,_0x11f8d2:0x410},_0x1a21b7={_0x51915f:0xfd,_0x3bceec:0x5d,_0x531244:0x66},_0x4239b4={_0x47bcb2:0x6fc,_0x18d15b:0x1a5,_0x5bb02b:0x9f};function _0x107489(_0x1aaf36,_0x2abf29,_0x1b417d,_0x335a4e){return _0x4eb4f6(_0x2abf29-_0x4239b4._0x47bcb2,_0x1aaf36,_0x1b417d-_0x4239b4._0x18d15b,_0x335a4e-_0x4239b4._0x5bb02b);}function _0x306ae5(_0x5f0f5f,_0x2fd73d,_0x364b75,_0x4db672){return _0x37eda8(_0x5f0f5f-_0x1a21b7._0x51915f,_0x4db672- -_0x1a21b7._0x3bceec,_0x364b75,_0x4db672-_0x1a21b7._0x531244);}const _0x26bc09=HypercoreId[_0x306ae5(_0x13573c._0x124d22,_0x13573c._0x323b37,_0x13573c._0x65c183,_0x13573c._0x4c90fa)](_0x6e7554['remotePubl'+_0x306ae5(-0x2,_0x13573c._0x277159,_0x13573c._0x5a0181,_0x13573c._0x10a7c0)]);for(const _0x1799a1 of this['_proxySubs'+_0x107489(0x437,_0x13573c._0x38f7a9,0x409,_0x13573c._0x2a7af9)]){_0x1799a1[_0x306ae5(_0x13573c._0x3fe232,0x75,0x64,_0x13573c._0x2864d6)]({'type':MEDIA_EVENTS[_0x107489(_0x13573c._0x563e8c,0x3fd,_0x13573c._0x1ac565,_0x13573c._0x11f8d2)+'E'],'swarmId':_0x26bc09});}}['_handleMed'+_0x4eb4f6(-0x2ea,-0x2ee,-0x2fc,-0x307)](_0x531a9f,_0xfbb2b7){const _0x16eab1={_0x423e80:0xc7,_0x2b1885:0xd0,_0x4ea98d:0xd7,_0x25cfc5:0xf0,_0x168bec:0x268,_0x2f7fd9:0x279,_0x40ee20:0x279,_0x4c0dce:0x26e,_0x59a3c9:0xc9,_0xa3198c:0xca},_0x5efcfb={_0x4800a8:0x245,_0x995aa9:0x1ab,_0x291139:0x177},_0x48f58f={_0x5edd4b:0xb3,_0xeee400:0xf3,_0x796ee7:0x1a1},_0xa033a=HypercoreId[_0x4319fc(-_0x16eab1._0x423e80,-_0x16eab1._0x2b1885,-_0x16eab1._0x4ea98d,-_0x16eab1._0x25cfc5)](_0x531a9f[_0x5842de(-_0x16eab1._0x168bec,-0x274,-0x28f,-0x252)+_0x5842de(-0x257,-_0x16eab1._0x2f7fd9,-_0x16eab1._0x40ee20,-_0x16eab1._0x4c0dce)]);function _0x5842de(_0xa2b3c5,_0xb54632,_0x39fd66,_0x17b78c){return _0x4eb4f6(_0xb54632-_0x48f58f._0x5edd4b,_0xa2b3c5,_0x39fd66-_0x48f58f._0xeee400,_0x17b78c-_0x48f58f._0x796ee7);}function _0x4319fc(_0x2a0c2b,_0x2476db,_0x3073a3,_0x28da7a){return _0x4eb4f6(_0x3073a3-_0x5efcfb._0x4800a8,_0x2476db,_0x3073a3-_0x5efcfb._0x995aa9,_0x28da7a-_0x5efcfb._0x291139);}for(const _0x4f5de9 of this['_signalSub'+_0x4319fc(-0xc5,-0xd0,-_0x16eab1._0x59a3c9,-_0x16eab1._0xa3198c)]){_0x4f5de9['push']({'swarmId':_0xa033a,'signal':_0xfbb2b7});}}[_0x37eda8(0xa0,0x8a,0x71,0xa8)](_0x907c69,_0x94938e){const _0xa3b635={_0x6c0c78:0x2e4,_0xcd7f7d:0x2d6,_0x35bf32:0x2f0,_0x4caef9:0x2e0,_0x448e3a:0x2d0,_0x4404e5:0x2c4,_0x1da055:0x2ca,_0x485373:0x2cb,_0x42711e:0x1d2,_0x562a0d:0x1d0,_0x377d67:0x1db,_0x3cea67:0x2fd,_0x1ac4d3:0x2ef,_0x2ab6d8:0x2f7,_0x4d2751:0x2f9},_0x35008c={_0x18b94c:0x1a7},_0x3f50cd={_0x4736de:0x27,_0x3c6ef5:0xb6,_0x4beae7:0xd4};function _0x3268f5(_0x25cdd2,_0x2c6c38,_0x4ba321,_0x3fc6e6){return _0x4eb4f6(_0x3fc6e6-_0x3f50cd._0x4736de,_0x2c6c38,_0x4ba321-_0x3f50cd._0x3c6ef5,_0x3fc6e6-_0x3f50cd._0x4beae7);}function _0x17f2d7(_0x4978f5,_0x56f651,_0x4e54b0,_0x21aacf){return _0x37eda8(_0x4978f5-0x88,_0x21aacf-0x129,_0x56f651,_0x21aacf-_0x35008c._0x18b94c);}const _0x5eb6f8=this[_0x3268f5(-_0xa3b635._0x6c0c78,-_0xa3b635._0xcd7f7d,-_0xa3b635._0x35bf32,-_0xa3b635._0x4caef9)+_0x3268f5(-_0xa3b635._0x448e3a,-_0xa3b635._0x4404e5,-_0xa3b635._0x1da055,-_0xa3b635._0x485373)][_0x17f2d7(_0xa3b635._0x42711e,0x1bb,_0xa3b635._0x562a0d,_0xa3b635._0x377d67)](_0x907c69);_0x5eb6f8[_0x3268f5(-_0xa3b635._0x3cea67,-_0xa3b635._0x1ac4d3,-_0xa3b635._0x2ab6d8,-_0xa3b635._0x4d2751)](_0x94938e);}['subscribeM'+'ediaSignal'+'s'](){const _0x56803a={_0x416f35:0x1b,_0x44c6fa:0x2e,_0x3bcafb:0x30},_0x506976={_0x1afed5:0x8,_0x3d7093:0x1b},_0xa04d96={_0xc3b3f9:0x43a,_0x1370b9:0x418,_0x20d24f:0x424,_0x4c0eff:0xcf,_0x2872c0:0xcc,_0x47feba:0xf2,_0x48e081:0xe7,_0x38fe44:0xe0,_0x5b9bf3:0xd4,_0x5d0e91:0xc3,_0x1b70a2:0x103,_0x2ab50d:0x10b,_0x4db2d3:0x452,_0x46ef74:0x441,_0x21464d:0x431},_0xa5a349={_0x29bed4:0x119,_0x40ca06:0x31};function _0xa6a4b0(_0x2f320b,_0x41dafa,_0x32461e,_0x24511b){return _0x4eb4f6(_0x32461e-0x29a,_0x2f320b,_0x32461e-_0xa5a349._0x29bed4,_0x24511b-_0xa5a349._0x40ca06);}const _0x35b205=new Readable({'destroy':_0x21183d=>{const _0xc934a9={_0x49405e:0x394},_0x543fad={_0x59377c:0x4a};function _0x48af76(_0x1ed843,_0x2eba39,_0x3a64d6,_0xa8bbde){return _0x25e8(_0x1ed843-_0x543fad._0x59377c,_0xa8bbde);}const _0x4c5b75=this[_0x1005f5(0x45d,_0xa04d96._0xc3b3f9,_0xa04d96._0x1370b9,_0xa04d96._0x20d24f)+_0x48af76(_0xa04d96._0x4c0eff,_0xa04d96._0x2872c0,_0xa04d96._0x47feba,_0xa04d96._0x48e081)][_0x48af76(0xc7,_0xa04d96._0x38fe44,_0xa04d96._0x5b9bf3,_0xa04d96._0x5d0e91)](_0x35b205);if(_0x4c5b75!==-(-0x754+-0x1*-0x1acf+-0x2*0x9bd))this[_0x48af76(0xf0,_0xa04d96._0x1b70a2,_0xa04d96._0x2ab50d,_0xa04d96._0x5b9bf3)+'scriptions'][_0x1005f5(_0xa04d96._0x4db2d3,0x42f,_0xa04d96._0x46ef74,_0xa04d96._0x21464d)](_0x4c5b75,-0x1*0x1c4f+-0xcab+0x1*0x28fb);function _0x1005f5(_0x1658e6,_0x56643f,_0x40174c,_0x316287){return _0x25e8(_0x56643f-_0xc934a9._0x49405e,_0x40174c);}_0x21183d(null);}});this[_0x5a11ea(0x43,0x4f,0x46,0x34)+_0x5a11ea(_0x56803a._0x416f35,_0x56803a._0x44c6fa,0x31,_0x56803a._0x3bcafb)]['push'](_0x35b205);function _0x5a11ea(_0xac4d4e,_0x536f98,_0x16fef7,_0x5cc1cb){return _0x37eda8(_0xac4d4e-_0x506976._0x1afed5,_0x536f98- -0x6f,_0x16fef7,_0x5cc1cb-_0x506976._0x3d7093);}return _0x35b205;}['subscribeP'+'roxyUpdate'+'s'](){const _0x3bc42e={_0x19dd0e:0x279,_0x363fe6:0x25d,_0xb2775b:0x256,_0x3a5fb0:0x26e,_0x5eec71:0x258,_0xdac459:0x28d,_0x31a08e:0x27f,_0x1bbfcd:0x25a,_0x3b784f:0x274,_0xe6dcd0:0x245,_0x29408a:0x271,_0x2aa3f9:0x27b,_0x1078a0:0x279,_0x47a8d5:0x255,_0x30e15e:0x23f,_0x240bdf:0x25c,_0x3ae955:0x240,_0x4868c:0x26e,_0x19ff03:0x25a,_0x1a1e11:0x263,_0x1a3dbb:0x264,_0x5eac13:0x248,_0x2b6e9a:0x273,_0x1f7baf:0x234,_0x549389:0x22b,_0x1d5b0f:0x213},_0x5ef34d={_0x242da2:0xac,_0x2fc719:0x1b6,_0x1954e9:0x9},_0x44f3c1={_0x4d53e7:0x2ab,_0x17f94c:0x2b8,_0x4a9fcb:0x2c5,_0x3a5f01:0x2c0,_0xca8210:0x2e1,_0x1f579b:0x2ce,_0x745228:0x2b5,_0x318587:0x2c4,_0x1af4a0:0x2b3,_0x5b1d94:0x216,_0xcdce81:0x22d,_0x2ee39c:0x1f5,_0x4d19af:0x22a,_0x1806f1:0x20d,_0xe97c71:0x217,_0x5498c2:0x234},_0x5172b5={_0x38e84e:0x2bc},_0x4f91a1={_0xe57115:0x550,_0x382fb7:0x1cc};function _0x495113(_0x52fe55,_0x1c1361,_0x4e69cc,_0x1f8435){return _0x4eb4f6(_0x52fe55-_0x4f91a1._0xe57115,_0x4e69cc,_0x4e69cc-_0x4f91a1._0x382fb7,_0x1f8435-0xc1);}const _0x2bd699=new Readable({'destroy':_0x94d56b=>{const _0x2ed793=this[_0x12e446(_0x44f3c1._0x4d53e7,_0x44f3c1._0x17f94c,0x2bf,_0x44f3c1._0x4a9fcb)+_0x12e446(0x2ea,_0x44f3c1._0x3a5f01,0x2f4,_0x44f3c1._0xca8210)][_0x12e446(_0x44f3c1._0x1f579b,_0x44f3c1._0x745228,_0x44f3c1._0x318587,_0x44f3c1._0x1af4a0)](_0x2bd699);if(_0x2ed793!==-(0xbb6+-0x1*-0x5a2+0xc1*-0x17))this[_0x482938(-_0x44f3c1._0x5b1d94,-0x241,-0x247,-_0x44f3c1._0xcdce81)+_0x482938(-_0x44f3c1._0x2ee39c,-_0x44f3c1._0x4d19af,-_0x44f3c1._0x1806f1,-0x211)][_0x482938(-_0x44f3c1._0xe97c71,-0x204,-_0x44f3c1._0x5498c2,-0x221)](_0x2ed793,-0xa*-0x10f+0x8*0x6c+-0xdf5);function _0x12e446(_0x2aef9c,_0x1626c7,_0x25cb9e,_0x491e20){return _0x25e8(_0x491e20-0x236,_0x1626c7);}function _0x482938(_0xf32c2f,_0x3ce45f,_0x5c6936,_0x1955cc){return _0x25e8(_0x1955cc- -_0x5172b5._0x38e84e,_0x3ce45f);}_0x94d56b(null);}});function _0x531fb1(_0xd0b760,_0x1cba49,_0x2a4168,_0x27a869){return _0x37eda8(_0xd0b760-_0x5ef34d._0x242da2,_0xd0b760-_0x5ef34d._0x2fc719,_0x1cba49,_0x27a869-_0x5ef34d._0x1954e9);}this['_proxySubs'+_0x531fb1(_0x3bc42e._0x19dd0e,0x256,_0x3bc42e._0x363fe6,_0x3bc42e._0xb2775b)][_0x531fb1(_0x3bc42e._0x3a5fb0,_0x3bc42e._0x5eec71,_0x3bc42e._0xdac459,_0x3bc42e._0x31a08e)](_0x2bd699);for(const [_0x203794,_0xa71a01]of this[_0x531fb1(_0x3bc42e._0x1bbfcd,_0x3bc42e._0x3b784f,_0x3bc42e._0xe6dcd0,0x271)+'Connection']){if(!_0xa71a01[_0x531fb1(_0x3bc42e._0x29408a,_0x3bc42e._0x2aa3f9,_0x3bc42e._0x1078a0,_0x3bc42e._0x47a8d5)+_0x531fb1(0x23c,_0x3bc42e._0x30e15e,_0x3bc42e._0x240bdf,_0x3bc42e._0x3ae955)])continue;_0x2bd699[_0x531fb1(_0x3bc42e._0x4868c,_0x3bc42e._0x19ff03,_0x3bc42e._0x1a1e11,0x275)]({'type':MEDIA_EVENTS[_0x495113(_0x3bc42e._0x1a3dbb,0x244,_0x3bc42e._0x5eac13,_0x3bc42e._0x2b6e9a)],'proxyPort':_0xa71a01['proxyPort'],'swarmId':HypercoreId[_0x495113(_0x3bc42e._0x1f7baf,_0x3bc42e._0x549389,0x225,_0x3bc42e._0x1d5b0f)](_0x203794['remotePubl'+'icKey'])});}return _0x2bd699;}};
1const{Readable:n}=require("streamx"),e=require("hypercore-id-encoding"),s=require("./webrtc"),{MEDIA_EVENTS:o}=require("../lib/common");module.exports=class{constructor(n,s){this.server=n,this.swarm=n.swarm,this.onerror=n.onerror,this.callId=s,this.swarmId=e.encode(this.swarm.keyPair.publicKey),this._proxiesByConnection=new Map,this._sendingByConnection=new Map,this._pendingSignalsByConnection=new Map,this._signalSubscriptions=[],this._proxySubscriptions=[],this.server.internalActivateCall(this);for(const n of this.swarm.connections)this.addConnection(n,this.server._rawMuxersByStream.get(n))}close(){for(const n of this._proxiesByConnection.keys())this.removeConnection(n);this.server.internalDeactivateCall(this)}addConnection(n,e){if(this._proxiesByConnection.has(n))return;const o=this.swarm.dht.udx.createSocket(),i=new s(this.callId,e,o,{onsignal:e=>this._handleMediaSignal(n,e)});i.on("channel-open",()=>this._onProxyOpen(n,i)),i.on("channel-close",()=>this._onProxyClose(n)),this._proxiesByConnection.set(n,i),this._sendingByConnection.set(n,new Set)}removeConnection(n){const s=e.encode(n.remotePublicKey),i=this._proxiesByConnection.get(n);if(i){i.close(),this._proxiesByConnection.delete(n),this._sendingByConnection.delete(n),this._pendingSignalsByConnection.delete(n);for(const n of this._proxySubscriptions)n.push({type:o.PROXY_CLOSE,swarmId:s})}}_onProxyOpen(n,s){const i=e.encode(n.remotePublicKey);for(const n of this._proxySubscriptions)n.push({type:o.PROXY_OPEN,proxyPort:s.proxyPort,swarmId:i});const t=this._pendingSignalsByConnection.get(n);if(t){for(;t.length;)s.sendSignal(t.shift());this._pendingSignalsByConnection.delete(n)}}_onProxyClose(n){const s=e.encode(n.remotePublicKey);for(const n of this._proxySubscriptions)n.push({type:o.PROXY_CLOSE,swarmId:s})}_handleMediaSignal(n,s){const o=e.encode(n.remotePublicKey);for(const n of this._signalSubscriptions)n.push({swarmId:o,signal:s})}signal(n,e){this._proxiesByConnection.get(n).sendSignal(e)}subscribeMediaSignals(){const e=new n({destroy:n=>{const s=this._signalSubscriptions.indexOf(e);-1!==s&&this._signalSubscriptions.splice(s,1),n(null)}});return this._signalSubscriptions.push(e),e}subscribeProxyUpdates(){const s=new n({destroy:n=>{const e=this._proxySubscriptions.indexOf(s);-1!==e&&this._proxySubscriptions.splice(e,1),n(null)}});this._proxySubscriptions.push(s);for(const[n,i]of this._proxiesByConnection)i.channelOpened&&s.push({type:o.PROXY_OPEN,proxyPort:i.proxyPort,swarmId:e.encode(n.remotePublicKey)});return s}};
@holepunchto/keet-call/server/presence.js +1 -1
……@@ -1 +1 @@
1function _0x2b2c(_0x12aff9,_0x5596df){const _0x4b25f0=_0x3830();return _0x2b2c=function(_0x5db907,_0x290f5e){_0x5db907=_0x5db907-(0x1*-0x13c7+0xb*0x1a4+0x286);let _0x3244cc=_0x4b25f0[_0x5db907];return _0x3244cc;},_0x2b2c(_0x12aff9,_0x5596df);}function _0x3830(){const _0x4b9826=['RESENT','_createCha','topic','name','set','ams','resence','updateStre','wall','_directPre','_descripti','audioMuted','close','catch','TUS_CHANGE','18932rOElwM','messages','eUpdate','deactivate','setNotPres','subscribeP','Present','nel','videoMuted','onerror','push','encode','callId','PeerEvents','channel','PEER_NOT_P','destroy','nnel','keys','ion','13NFRUMQ','sent','VAILABLE','publicKey','SwarmId','firewall','armId','Update','_relayedPr','2420TMDEPR','ubscriptio','riptions','PEER_PRESE','STREAM_UNA','shouldActi','STREAM_AVA','ection','_activated','_onPeerNot','lMuxer','server','_bumpSubsc','activate','6389540aBMZVN','52JiaKfq','STREAM_STA','createChan','senders','toString','exports','updatePres','ayedPeer','search','_removeRel','ence','esenceBySw','has','_firewallS','values','107HDygFJ','add','swarm','senceIds','getProtoco','remotePubl','27708qViIDr','indexOf','BySwarmId','_onPresenc','Close','streams','activeFire','setPresenc','_presenceS','259889YlIBlF','removeConn','96UmkCLL','size','send','icKey','285261yLzSRe','allow','_onChannel','keyPair','connection','Open','getPresent','splice','6BxVGgN','ILABLE','45231606GCVHse','remoteId','_localStre','get','pair','_onPeerPre','25929pIFMNA','5841iqfQFl','delete','clear','_protocols','equals','decode','(((.+)+)+)','_onStreams','addConnect','_streamsBy','unpair','vate'];_0x3830=function(){return _0x4b9826;};return _0x3830();}(function(_0x3917bc,_0x3c418b){const _0x368a85={_0x31007b:0x13,_0x497a81:0x2b,_0x27b679:0xa,_0x57c60b:0x9,_0x4c3a8f:0x6b,_0x1096b6:0x5a,_0x3ab48e:0x6f,_0x1246c8:0x1d,_0x4ab4be:0x9a,_0x36dd6f:0x92,_0x5c18af:0x8c,_0x35af7f:0xc0,_0x13959d:0x35,_0x2665a7:0x60,_0x25377a:0x11,_0x50cddb:0x3b,_0x2725ce:0x73,_0x2b03de:0x10,_0x31cc39:0x9e,_0x5cb753:0x8a,_0x5e0556:0xc8,_0x4e5f7a:0x3d,_0x47c7f5:0x1c,_0x675554:0x2a,_0xe7bd1d:0x1b,_0x59ce58:0x23,_0x4856f5:0x1a,_0x25741e:0x3a,_0x2ab2e4:0x4f,_0x6d4783:0x65,_0x3a8a87:0x82,_0x2a2875:0x2f,_0x86056d:0x49,_0x308de4:0x6d,_0x41b660:0x14,_0x59cdc1:0xaf,_0x172aa7:0xa6,_0x85b2b3:0x47,_0x1610de:0x9b,_0x19b52d:0xab,_0x1cb9af:0x5c,_0xd03f07:0x31,_0x4273a2:0x63,_0x5158e6:0x88,_0xf511fc:0xbf},_0x40d8ee={_0xfe9473:0x160};function _0x54b990(_0x56e5f6,_0x17e173,_0x2762c6,_0x1a7a8a){return _0x2b2c(_0x17e173- -0xa0,_0x1a7a8a);}function _0x4c41fa(_0x12074f,_0x25ff77,_0x13be14,_0xbd4dd1){return _0x2b2c(_0x25ff77- -_0x40d8ee._0xfe9473,_0x12074f);}const _0x1a7a83=_0x3917bc();while(!![]){try{const _0x1439d8=-parseInt(_0x4c41fa(_0x368a85._0x31007b,-_0x368a85._0x497a81,_0x368a85._0x27b679,_0x368a85._0x57c60b))/(0x246+-0x1*-0x6cd+-0x1b*0x56)*(parseInt(_0x54b990(_0x368a85._0x4c3a8f,_0x368a85._0x1096b6,_0x368a85._0x3ab48e,_0x368a85._0x1246c8))/(0x23e4+-0x189*-0x13+-0x7*0x94b))+parseInt(_0x4c41fa(-_0x368a85._0x4ab4be,-_0x368a85._0x36dd6f,-_0x368a85._0x5c18af,-_0x368a85._0x35af7f))/(0x68d*0x2+-0x1*-0x943+-0x165a)*(parseInt(_0x4c41fa(-_0x368a85._0x13959d,-0x3a,-_0x368a85._0x2665a7,-_0x368a85._0x25377a))/(-0x1ff3+-0x218e+0x4185*0x1))+parseInt(_0x4c41fa(-0x58,-_0x368a85._0x50cddb,-_0x368a85._0x2725ce,-_0x368a85._0x2b03de))/(0x1788+-0x108c+0x1*-0x6f7)*(-parseInt(_0x4c41fa(-_0x368a85._0x31cc39,-_0x368a85._0x5cb753,-0x60,-_0x368a85._0x5e0556))/(-0x464+0x1701+-0x1*0x1297))+parseInt(_0x4c41fa(-_0x368a85._0x4e5f7a,-_0x368a85._0x47c7f5,-_0x368a85._0x675554,_0x368a85._0xe7bd1d))/(-0x1ed*0x4+0x784*-0x1+0x3*0x515)*(parseInt(_0x4c41fa(_0x368a85._0x59ce58,-_0x368a85._0x4856f5,0x19,-_0x368a85._0x25741e))/(0x1aa3+0x7*0x235+0x2a0e*-0x1))+-parseInt(_0x4c41fa(-_0x368a85._0x2ab2e4,-0x82,-_0x368a85._0x6d4783,-_0x368a85._0x3a8a87))/(-0xbd*0x20+-0x91a+-0x20c3*-0x1)*(parseInt(_0x4c41fa(-_0x368a85._0x2a2875,-_0x368a85._0x86056d,-_0x368a85._0x308de4,-_0x368a85._0x41b660))/(-0xaf9+-0x49*0xe+0xf01))+parseInt(_0x4c41fa(-_0x368a85._0x59cdc1,-0x81,-_0x368a85._0x172aa7,-_0x368a85._0x85b2b3))/(0x182e+-0x1*0x1a51+0x22e)*(-parseInt(_0x54b990(0x7a,_0x368a85._0x1610de,0xae,_0x368a85._0x19b52d))/(0x2*0x324+-0x20c9+0x1a8d))+parseInt(_0x4c41fa(-0x21,-0x52,-_0x368a85._0x1cb9af,-_0x368a85._0xd03f07))/(0x1537+0x1abd+0x1*-0x2fe7)*(parseInt(_0x4c41fa(-_0x368a85._0x4273a2,-_0x368a85._0x5158e6,-_0x368a85._0xf511fc,-_0x368a85._0x59cdc1))/(0x10ff+0x5*0x677+-0x1*0x3144));if(_0x1439d8===_0x3c418b)break;else _0x1a7a83['push'](_0x1a7a83['shift']());}catch(_0x32ffcc){_0x1a7a83['push'](_0x1a7a83['shift']());}}}(_0x3830,0xf*0x2ce0+0x9b247+-0x1ab26));const _0x35a7c3=(function(){let _0x24f44f=!![];return function(_0xba1522,_0x53c0a6){const _0x41885b=_0x24f44f?function(){if(_0x53c0a6){const _0x26c657=_0x53c0a6['apply'](_0xba1522,arguments);return _0x53c0a6=null,_0x26c657;}}:function(){};return _0x24f44f=![],_0x41885b;};}()),_0x35a29c=_0x35a7c3(this,function(){const _0x1a621e={_0x1443a3:0xe9,_0x1d7313:0xcb,_0x4da44f:0xd1,_0x52ab03:0x1ba,_0x247ef1:0x1f3,_0x1637ec:0x1f0,_0x4c3a8b:0xb0,_0x3b2d1b:0x101,_0x3e8661:0xcb,_0xe04f7d:0xda,_0x657366:0x9e,_0x222301:0xef,_0x266879:0x11f,_0x2dde73:0x11a,_0xcbaf4:0x110,_0x99b51f:0x123},_0x2508df={_0x58b87d:0x1f5},_0x1ed396={_0x212b7e:0x31e};function _0x3843f3(_0x1c5797,_0x2bf7a6,_0x10a61f,_0x3b90be){return _0x2b2c(_0x3b90be- -_0x1ed396._0x212b7e,_0x2bf7a6);}function _0x2c2b1c(_0x6c5fb2,_0xc09ff6,_0x24ea91,_0x580239){return _0x2b2c(_0x24ea91- -_0x2508df._0x58b87d,_0x580239);}return _0x35a29c[_0x2c2b1c(-0xb6,-_0x1a621e._0x1443a3,-_0x1a621e._0x1d7313,-_0x1a621e._0x4da44f)]()[_0x3843f3(-_0x1a621e._0x52ab03,-_0x1a621e._0x247ef1,-0x1e0,-_0x1a621e._0x1637ec)]('(((.+)+)+)'+'+$')[_0x2c2b1c(-_0x1a621e._0x4c3a8b,-_0x1a621e._0x3b2d1b,-_0x1a621e._0x3e8661,-_0x1a621e._0xe04f7d)]()['constructo'+'r'](_0x35a29c)[_0x2c2b1c(-0x102,-_0x1a621e._0x657366,-0xc7,-_0x1a621e._0x222301)](_0x2c2b1c(-_0x1a621e._0x266879,-_0x1a621e._0x2dde73,-_0x1a621e._0xcbaf4,-_0x1a621e._0x99b51f)+'+$');});_0x35a29c();const {Readable}=require('streamx'),Hypercore=require('hypercore'),HypercoreId=require('hypercore-id-encoding'),safetyCatch=require('safety-catch'),b4a=require('b4a');function _0xf7b98f(_0xead516,_0x32a0cd,_0x9e52ee,_0x549c8e){const _0x318b0f={_0x21734f:0x26d};return _0x2b2c(_0x9e52ee-_0x318b0f._0x21734f,_0x32a0cd);}const {StreamsMessage,PeerPresenceMessage}=require('../lib/messages'),{PRESENCE_EVENTS}=require('../lib/common'),PRESENCE_PROTOCOL='keet-call-'+'presence/v'+'3';module[_0xf7b98f(0x361,0x381,0x398,0x3ba)]=class PresenceServer{constructor(_0x5288b2,_0x3241f0,_0x1a8497){const _0x205a71={_0xe87e4e:0x3fa,_0x2f5895:0x446,_0x33961e:0x425,_0x57c6cc:0x460,_0x894e28:0x40d,_0x15c4cc:0x400,_0x2b8a0e:0x43a,_0x221515:0x434,_0x160b86:0x97,_0x98503a:0x7b,_0x302135:0x77,_0x523690:0xd0,_0x453748:0x3f0,_0x4c9ac3:0x431,_0x44e7d5:0x406,_0x184e17:0x98,_0x522015:0x2e,_0x577e5c:0x40d,_0x2ff3c2:0x407,_0x2370ee:0x416,_0x4dce1a:0xa1,_0x1ee817:0x8d,_0x405744:0xc9,_0x41c941:0x66,_0x34a7e2:0x9f,_0x550a62:0x4f,_0x3099e1:0x9c,_0x13c897:0x3ca,_0x109e5b:0x3f5,_0x4d651b:0x3f0,_0x2dc575:0x3d4,_0x36b6f0:0x44,_0x118c20:0x8,_0x3d138d:0x25,_0x1b755a:0x81,_0x1039f8:0x55,_0x13049b:0x22,_0x57d340:0x20,_0x2dbe5d:0x14,_0x184b1d:0x72,_0x2d1462:0x441,_0xe3d1c9:0x43b,_0x5d828e:0x60,_0x24c906:0x3c,_0x22ae3c:0x6f,_0x3e0d31:0x9f,_0x1f8720:0x3f1,_0x354286:0x417,_0x40ef48:0x3dc,_0x5d12a7:0x3c8,_0x40c495:0x3eb,_0xed8519:0x41e,_0x2e1c01:0x437,_0x9e9e54:0x415,_0x152d92:0x3e0,_0x4085c8:0x3ce,_0x5a753a:0x3dd,_0x1a87f9:0x3bf,_0x11a4ba:0x75,_0x1262b0:0x8b,_0x2f55f7:0x2e,_0x537d71:0x32,_0x14d1f1:0x29,_0x2ff15a:0x42a,_0x1e22f6:0x446,_0x622e92:0x414,_0x5399f2:0x3fb,_0x3b1ab1:0x3d5,_0x1b9a6d:0x3b6,_0x106f27:0x47,_0x2113d1:0x53,_0x1c902b:0x32,_0x21733a:0x2f,_0xd4153b:0x405,_0x442266:0x44a,_0x24cabe:0x410,_0x252e13:0x409,_0x3decf9:0x44a,_0x330ca7:0x3ed,_0x5c3612:0x41f,_0x341fd3:0x419,_0x38ba01:0x3e6,_0x494e5a:0x3ed,_0x5bcc0b:0x3e2,_0x169258:0x84,_0x4fe710:0x57},_0x1760f7={_0x105bd7:0x1c4,_0x30f1c3:0x30d,_0xd1dcaf:0x123},_0x308ab4={_0x1fb654:0x1ad,_0x207717:0x16b};this[_0x52c51a(_0x205a71._0xe87e4e,_0x205a71._0x2f5895,_0x205a71._0x33961e,_0x205a71._0x57c6cc)]=_0x5288b2,this[_0x52c51a(_0x205a71._0x894e28,_0x205a71._0x15c4cc,_0x205a71._0x2b8a0e,_0x205a71._0x221515)]=_0x5288b2[_0x258b0c(_0x205a71._0x160b86,_0x205a71._0x98503a,_0x205a71._0x302135,_0x205a71._0x523690)],this[_0x52c51a(_0x205a71._0x453748,_0x205a71._0x4c9ac3,_0x205a71._0x44e7d5,0x41e)]=_0x5288b2[_0x258b0c(0x63,0x66,_0x205a71._0x184e17,_0x205a71._0x522015)],this[_0x52c51a(_0x205a71._0x577e5c,_0x205a71._0x2ff3c2,_0x205a71._0x2370ee,_0x205a71._0x15c4cc)]=_0x1a8497;function _0x52c51a(_0x2ceb68,_0x418bc8,_0x21a05e,_0x2d5b55){return _0xf7b98f(_0x2ceb68-_0x308ab4._0x1fb654,_0x2ceb68,_0x21a05e-0x96,_0x2d5b55-_0x308ab4._0x207717);}this[_0x258b0c(_0x205a71._0x4dce1a,_0x205a71._0x1ee817,0x7f,_0x205a71._0x405744)+'wall']=null,this[_0x258b0c(_0x205a71._0x41c941,_0x205a71._0x34a7e2,_0x205a71._0x550a62,_0x205a71._0x3099e1)]=_0x3241f0,this['closed']=![],this[_0x52c51a(_0x205a71._0x13c897,_0x205a71._0x109e5b,_0x205a71._0x4d651b,_0x205a71._0x2dc575)]=HypercoreId[_0x258b0c(_0x205a71._0x36b6f0,_0x205a71._0x118c20,_0x205a71._0x3d138d,_0x205a71._0x1b755a)](_0x3241f0),this[_0x258b0c(_0x205a71._0x1039f8,_0x205a71._0x13049b,0x47,0x5d)+'on']={'protocol':PRESENCE_PROTOCOL,'id':this[_0x258b0c(0x4d,_0x205a71._0x57d340,_0x205a71._0x2dbe5d,_0x205a71._0x184b1d)]},this['_directPre'+_0x52c51a(0x463,_0x205a71._0x2d1462,_0x205a71._0xe3d1c9,0x45f)]=new Set(),this[_0x258b0c(0x76,_0x205a71._0x5d828e,_0x205a71._0x24c906,_0x205a71._0x22ae3c)+_0x258b0c(0x91,_0x205a71._0x3e0d31,_0x205a71._0x22ae3c,0x5b)+_0x52c51a(0x3dc,_0x205a71._0x1f8720,_0x205a71._0x354286,_0x205a71._0x40ef48)]=new Map(),this[_0x52c51a(_0x205a71._0x5d12a7,0x3e8,_0x205a71._0x40c495,_0x205a71._0xed8519)+_0x52c51a(0x41a,_0x205a71._0x2e1c01,_0x205a71._0x9e9e54,_0x205a71._0x152d92)]=new Map(),this[_0x52c51a(0x3ad,_0x205a71._0x4085c8,_0x205a71._0x5a753a,_0x205a71._0x1a87f9)+_0x258b0c(0x50,_0x205a71._0x11a4ba,_0x205a71._0x1262b0,_0x205a71._0x2dbe5d)]=null,this['_activated']=![];function _0x258b0c(_0x1cf38d,_0x4473be,_0x1f6721,_0x3184c1){return _0xf7b98f(_0x1cf38d-_0x1760f7._0x105bd7,_0x1f6721,_0x1cf38d- -_0x1760f7._0x30f1c3,_0x3184c1-_0x1760f7._0xd1dcaf);}this[_0x258b0c(0x42,_0x205a71._0x2f55f7,_0x205a71._0x537d71,_0x205a71._0x14d1f1)+'BySwarmId']=new Map(),this[_0x52c51a(0x482,_0x205a71._0x2ff15a,_0x205a71._0x1e22f6,_0x205a71._0x622e92)+'ubscriptio'+'ns']=[];for(const _0x35aef4 of this['swarm'][_0x52c51a(_0x205a71._0x5399f2,0x3e8,_0x205a71._0x3b1ab1,_0x205a71._0x1b9a6d)+'s']){this[_0x258b0c(_0x205a71._0x106f27,_0x205a71._0x2113d1,_0x205a71._0x1c902b,_0x205a71._0x21733a)+_0x52c51a(_0x205a71._0xd4153b,_0x205a71._0x442266,_0x205a71._0x24cabe,_0x205a71._0x252e13)](_0x35aef4);}this['server'][_0x52c51a(_0x205a71._0x3decf9,_0x205a71._0x330ca7,_0x205a71._0x5c3612,0x436)+_0x52c51a(_0x205a71._0x341fd3,_0x205a71._0x38ba01,_0x205a71._0x494e5a,_0x205a71._0x5bcc0b)](this['callId'])&&this[_0x258b0c(_0x205a71._0x169258,0xbe,_0x205a71._0x4fe710,0xb9)]();}['close'](){const _0x48c186={_0x5c5ff8:0x213,_0x4d985a:0x207,_0x48c324:0x21e,_0x4adae2:0x253,_0x541c48:0x197,_0x30c535:0x1d3,_0x378cb4:0x1c3,_0x1f89a3:0x191,_0xd587e8:0xc6,_0x11e57c:0xcc,_0x18e06c:0x201,_0x5ea5ff:0x243,_0x2b30c0:0x1f4,_0x177774:0x209,_0x204776:0x1df,_0x426fef:0x1b3,_0x53b690:0x214,_0x551795:0x222,_0x3af5bc:0x21f},_0x1c1db1={_0x165887:0x199,_0x16258b:0x2d5,_0x184d69:0x16a},_0x4f7bfe={_0x1c04a2:0x1a6,_0xcb7180:0x56d,_0x4ad335:0x49};for(const {connection:_0x42b67c,channel:_0x13164d}of this[_0x2e9b7f(-_0x48c186._0x5c5ff8,-_0x48c186._0x4d985a,-_0x48c186._0x48c324,-_0x48c186._0x4adae2)+_0x2e9b7f(-_0x48c186._0x541c48,-_0x48c186._0x30c535,-_0x48c186._0x378cb4,-_0x48c186._0x1f89a3)][_0x8c334b(_0x48c186._0xd587e8,0xaa,_0x48c186._0x11e57c,0x9a)]()){const _0x568d3d=getMuxer(_0x42b67c);if(_0x568d3d)_0x568d3d[_0x2e9b7f(-_0x48c186._0x18e06c,-_0x48c186._0x5ea5ff,-0x217,-0x20c)](this['_descripti'+'on']);if(_0x13164d)_0x13164d[_0x2e9b7f(-0x21f,-_0x48c186._0x2b30c0,-_0x48c186._0x177774,-_0x48c186._0x204776)]();}function _0x2e9b7f(_0xca9faf,_0x2ff84b,_0x471923,_0x1004b3){return _0xf7b98f(_0xca9faf-_0x4f7bfe._0x1c04a2,_0xca9faf,_0x471923- -_0x4f7bfe._0xcb7180,_0x1004b3-_0x4f7bfe._0x4ad335);}function _0x8c334b(_0x92e71c,_0x9735d4,_0x120714,_0x29580b){return _0xf7b98f(_0x92e71c-_0x1c1db1._0x165887,_0x92e71c,_0x120714- -_0x1c1db1._0x16258b,_0x29580b-_0x1c1db1._0x184d69);}this['_protocols'+_0x2e9b7f(-_0x48c186._0x426fef,-0x1dc,-0x1c3,-0x1be)][_0x2e9b7f(-_0x48c186._0x53b690,-_0x48c186._0x551795,-_0x48c186._0x3af5bc,-0x1f8)](),this['closed']=!![];}[_0xf7b98f(0x380,0x3ba,0x390,0x36e)+_0xb04be9(0x40d,0x41c,0x40d,0x427)](_0x371706){const _0x5bf27e={_0x36d845:0x1b,_0x4e4d06:0x17,_0x54d94a:0x2a,_0x2cdcae:0x24,_0x22e92a:0x50},_0x31ca7f={_0x921814:0x554,_0x3c6c74:0x1b2},_0x197f06={_0x538810:0x143,_0x5827fa:0x457,_0x2872c6:0x11a};function _0x222b7e(_0xe7ec80,_0x3baae8,_0x49066d,_0x27d618){return _0xb04be9(_0xe7ec80-_0x197f06._0x538810,_0x27d618- -_0x197f06._0x5827fa,_0x49066d-_0x197f06._0x2872c6,_0x49066d);}function _0x2ee174(_0x565240,_0x16c94e,_0x29cc3a,_0x22d16e){return _0xb04be9(_0x565240-0x120,_0x565240- -_0x31ca7f._0x921814,_0x29cc3a-_0x31ca7f._0x3c6c74,_0x22d16e);}for(const _0x2b2e2b of this[_0x222b7e(-_0x5bf27e._0x36d845,-0x1,_0x5bf27e._0x4e4d06,-0x11)+'ubscriptio'+'ns']){_0x2b2e2b[_0x222b7e(-_0x5bf27e._0x54d94a,-0x40,-_0x5bf27e._0x2cdcae,-_0x5bf27e._0x22e92a)](_0x371706);}}['addConnect'+_0xb04be9(0x436,0x410,0x41d,0x434)](_0x18fa97){const _0x3b2209={_0x21eacc:0xdd,_0x5b23f8:0xd0,_0x5e7e2c:0x13e,_0x5647f0:0x181,_0x18e31c:0x153,_0x36a587:0xd5,_0x4c494e:0x11d,_0xc295b4:0xbc,_0x57f673:0xe5,_0x4408b1:0x116,_0x20feb8:0x140,_0x5b1ded:0xc9,_0x2f4cd5:0xfa,_0x103b77:0x16f,_0x7933de:0x100,_0x121e75:0x161,_0x26571a:0x13a,_0x6debb2:0x162,_0xc94ca9:0x11e,_0x13933a:0x197},_0x4bde0d={_0x148ea4:0xd8,_0x3a0aa0:0x2b5},_0x2d5349={_0x2b4f2a:0xf2,_0x2cb194:0x300,_0x4d2e34:0xf6},_0x56d8d6=getMuxer(_0x18fa97),_0xa2b01d=_0x18fa97['remotePubl'+_0x5c2bdf(_0x3b2209._0x21eacc,0xc4,0xee,_0x3b2209._0x5b23f8)],_0x5c66f7=HypercoreId[_0x476214(_0x3b2209._0x5e7e2c,_0x3b2209._0x5647f0,0x143,_0x3b2209._0x18e31c)](_0xa2b01d);function _0x5c2bdf(_0x4c226b,_0x12c5b9,_0x213b20,_0x45d4eb){return _0xb04be9(_0x4c226b-_0x2d5349._0x2b4f2a,_0x45d4eb- -_0x2d5349._0x2cb194,_0x213b20-_0x2d5349._0x4d2e34,_0x4c226b);}const _0x22d26c={'connection':_0x18fa97,'remotePublicKey':_0xa2b01d,'remoteId':_0x5c66f7,'muxer':_0x56d8d6,'channel':null,'senders':null};function _0x476214(_0x196527,_0x469c4f,_0x5a2e25,_0x4ce854){return _0xb04be9(_0x196527-_0x4bde0d._0x148ea4,_0x4ce854- -_0x4bde0d._0x3a0aa0,_0x5a2e25-0x100,_0x196527);}this[_0x5c2bdf(_0x3b2209._0x36a587,_0x3b2209._0x4c494e,_0x3b2209._0xc295b4,_0x3b2209._0x57f673)+_0x5c2bdf(0x157,0x140,_0x3b2209._0x4408b1,_0x3b2209._0x20feb8)]['set'](_0x5c66f7,_0x22d26c),_0x56d8d6[_0x5c2bdf(_0x3b2209._0x5b1ded,_0x3b2209._0x2f4cd5,0x110,0xdf)](this['_descripti'+'on'],()=>this[_0x5c2bdf(0x100,0xc0,0xfd,0xef)+_0x5c2bdf(0x11c,0x10a,0x14c,0x10e)](_0x18fa97));if(this['_activated'])this[_0x476214(_0x3b2209._0x103b77,_0x3b2209._0x7933de,_0x3b2209._0x121e75,_0x3b2209._0x26571a)+_0x476214(_0x3b2209._0x6debb2,_0x3b2209._0xc94ca9,_0x3b2209._0x13933a,0x159)](_0x18fa97)['catch'](safetyCatch);}[_0xf7b98f(0x3cc,0x3a4,0x3b2,0x38f)+_0xf7b98f(0x3c1,0x3bc,0x38b,0x392)](_0x55267e){const _0x4c50f5={_0x59ef29:0x207,_0x51b728:0x1d8,_0x2ffac2:0x20e,_0x2278d5:0x22d,_0x5a84cf:0x268,_0x3586d0:0x253,_0x513a03:0x243,_0x140e2d:0x210,_0x389189:0x1a1,_0x57393c:0x1d6,_0x31ac32:0x1b6,_0x4144a1:0x217,_0x62e435:0x1eb,_0x16fc75:0x1fd,_0x54ce8f:0x232,_0x4c4ab2:0x246,_0xd3afcf:0x25c,_0x3ab276:0x2e7,_0x5a116d:0x2b4,_0x4ff961:0x2a9},_0x52bc4f={_0x141270:0x59,_0x1c00eb:0x1fa,_0x46a199:0x93},_0x16607b={_0xa8a39d:0x6e,_0x104980:0x151};function _0x4951c5(_0x18be4b,_0x1021bd,_0x37a485,_0x4a8970){return _0xb04be9(_0x18be4b-_0x16607b._0xa8a39d,_0x1021bd- -0x6b4,_0x37a485-_0x16607b._0x104980,_0x37a485);}const _0x12d049=HypercoreId[_0x2bc4cc(_0x4c50f5._0x59ef29,_0x4c50f5._0x51b728,_0x4c50f5._0x2ffac2,_0x4c50f5._0x2278d5)](_0x55267e[_0x2bc4cc(_0x4c50f5._0x5a84cf,_0x4c50f5._0x3586d0,_0x4c50f5._0x513a03,_0x4c50f5._0x140e2d)+_0x2bc4cc(_0x4c50f5._0x389189,0x1d7,_0x4c50f5._0x57393c,_0x4c50f5._0x31ac32)]);function _0x2bc4cc(_0x2dfbf6,_0x205afd,_0x14bcf5,_0x5768cc){return _0xb04be9(_0x2dfbf6-_0x52bc4f._0x141270,_0x14bcf5- -_0x52bc4f._0x1c00eb,_0x14bcf5-_0x52bc4f._0x46a199,_0x5768cc);}this[_0x2bc4cc(0x203,_0x4c50f5._0x4144a1,_0x4c50f5._0x62e435,_0x4c50f5._0x16fc75)+_0x2bc4cc(0x242,_0x4c50f5._0x54ce8f,_0x4c50f5._0x4c4ab2,_0x4c50f5._0xd3afcf)][_0x4951c5(-_0x4c50f5._0x3ab276,-0x2d1,-_0x4c50f5._0x5a116d,-_0x4c50f5._0x4ff961)](_0x12d049);}[_0xb04be9(0x3eb,0x427,0x458,0x451)](){const _0x2eece8={_0x3116bd:0x1df,_0x10ec38:0x20b,_0x5c75aa:0x1fb,_0x429e15:0x105,_0x4fdfa2:0x99,_0x55bc48:0xd0,_0x243995:0xc1,_0x1318b2:0x114,_0x81efea:0x10d,_0x57978a:0x11a,_0xad7510:0x92,_0x4d3753:0xb2,_0x11810b:0x98,_0x307648:0x1f3,_0x3ff82b:0x209,_0x375dee:0x1fa,_0x407be6:0x1e2,_0x1edcc6:0xa8,_0x1344dc:0xc6,_0x5f5773:0xe4,_0x3393e0:0x116,_0x53a793:0xe0,_0x197961:0xf7,_0x280260:0x107},_0x3eb560={_0x3d25f8:0x2e,_0x1118f4:0x4f2},_0xf6a99d={_0x4651e9:0x1a7};if(this[_0x4c8518(_0x2eece8._0x3116bd,_0x2eece8._0x10ec38,0x1e5,_0x2eece8._0x5c75aa)])return;function _0x4c8518(_0xf2ae02,_0xf53186,_0x2d8720,_0x1501b9){return _0xf7b98f(_0xf2ae02-0xe8,_0x1501b9,_0x2d8720- -_0xf6a99d._0x4651e9,_0x1501b9-0x19b);}this[_0x1246cb(-_0x2eece8._0x429e15,-_0x2eece8._0x4fdfa2,-_0x2eece8._0x55bc48,-_0x2eece8._0x243995)]=!![];function _0x1246cb(_0x126c8c,_0x24950f,_0x29bf0e,_0x20e76a){return _0xb04be9(_0x126c8c-_0x3eb560._0x3d25f8,_0x29bf0e- -_0x3eb560._0x1118f4,_0x29bf0e-0x153,_0x20e76a);}for(const {connection:_0x11bc56}of this[_0x1246cb(-0x120,-_0x2eece8._0x1318b2,-_0x2eece8._0x81efea,-_0x2eece8._0x57978a)+_0x1246cb(-_0x2eece8._0xad7510,-0x81,-_0x2eece8._0x4d3753,-_0x2eece8._0x11810b)][_0x4c8518(_0x2eece8._0x307648,_0x2eece8._0x3ff82b,_0x2eece8._0x375dee,_0x2eece8._0x407be6)]()){this['_createCha'+_0x1246cb(-_0x2eece8._0x1edcc6,-_0x2eece8._0x1344dc,-_0x2eece8._0x5f5773,-_0x2eece8._0x3393e0)](_0x11bc56)[_0x1246cb(-_0x2eece8._0x5f5773,-_0x2eece8._0x53a793,-_0x2eece8._0x197961,-_0x2eece8._0x280260)](safetyCatch);}}[_0xf7b98f(0x39d,0x342,0x36a,0x39b)](){}async['_createCha'+'nnel'](_0x3ea8c2){const _0x53b85c={_0x5b0d49:0x20d,_0x13ed70:0x231,_0x5e6782:0x1c4,_0x56ddd3:0x1e3,_0x1ae48e:0x1b0,_0x5d72a6:0x4c1,_0x3ce5f4:0x4b4,_0x2853b4:0x491,_0x2ce815:0x498,_0x3a2316:0x44d,_0x1a485b:0x20f,_0xb0411f:0x20a,_0x16f68a:0x1f8,_0x46b791:0x1d5,_0x172a4b:0x22b,_0x446c1c:0x26b,_0x55a6b4:0x44f,_0x1293f0:0x44b,_0x2c81b8:0x486,_0x202ac5:0x48c,_0x5c78af:0x480,_0x4f739e:0x4f2,_0x56f420:0x4b4,_0x495525:0x47c,_0x374ae9:0x1fe,_0x2d88c4:0x1eb,_0x340b09:0x1c2,_0x284063:0x4e9,_0x1bd355:0x49f,_0x5916f6:0x1fc,_0xe840f9:0x1ea,_0x55b4bb:0x225,_0x5c9bd0:0x459,_0x2dfad7:0x42e,_0x20a769:0x447,_0xd7a793:0x4bf,_0x54ad50:0x4af,_0x4af672:0x4ad,_0x485d65:0x4bc,_0x111049:0x485,_0x2b42f4:0x21b,_0x40c910:0x221,_0x20f3fd:0x48a,_0x1ff59f:0x424,_0x5b5612:0x49e,_0x456a0d:0x45d,_0x31898f:0x49b,_0x54e99a:0x21e,_0x23076b:0x228,_0x1fdc8e:0x470,_0xb50d89:0x460,_0x2a9673:0x1ff,_0x15f64d:0x1d0,_0x2abdd9:0x1ec,_0x57e132:0x220,_0x24020b:0x469,_0x645f2d:0x4b8,_0x4f8eff:0x47b,_0x1dbee6:0x4a3,_0x245034:0x433,_0x4ed545:0x466,_0x3b4e01:0x1ca,_0x16b427:0x1f2,_0x1e0fb3:0x1f3,_0x442da9:0x1cd,_0x28db11:0x1c8,_0x4a9bfd:0x1e0},_0x1d8366={_0x5e258b:0xaf},_0xd77367={_0xfcfd00:0x9d,_0x22b52e:0x17e},_0x5a3b3d=HypercoreId['encode'](_0x3ea8c2[_0x4b1e2a(_0x53b85c._0x5b0d49,_0x53b85c._0x13ed70,0x20b,0x1f5)+_0x4b1e2a(0x1c5,_0x53b85c._0x5e6782,_0x53b85c._0x56ddd3,_0x53b85c._0x1ae48e)]);function _0x12a4f3(_0x4d22d5,_0x4883cd,_0x3f4d48,_0x107ab6){return _0xb04be9(_0x4d22d5-_0xd77367._0xfcfd00,_0x3f4d48-0x70,_0x3f4d48-_0xd77367._0x22b52e,_0x4d22d5);}if(!this[_0x12a4f3(_0x53b85c._0x5d72a6,0x47c,_0x53b85c._0x3ce5f4,_0x53b85c._0x2853b4)+_0x12a4f3(0x472,_0x53b85c._0x2ce815,0x466,_0x53b85c._0x3a2316)]&&this[_0x4b1e2a(_0x53b85c._0x1a485b,_0x53b85c._0xb0411f,_0x53b85c._0x16f68a,_0x53b85c._0x46b791)])this[_0x4b1e2a(_0x53b85c._0x172a4b,0x238,0x226,_0x53b85c._0x446c1c)+'wall']=this[_0x12a4f3(_0x53b85c._0x55a6b4,_0x53b85c._0x1293f0,_0x53b85c._0x2c81b8,_0x53b85c._0x202ac5)](this['callId']);const _0x1fcb62=!this[_0x12a4f3(_0x53b85c._0x5c78af,_0x53b85c._0x4f739e,_0x53b85c._0x56f420,_0x53b85c._0x495525)+_0x4b1e2a(_0x53b85c._0x374ae9,0x1ea,_0x53b85c._0x2d88c4,_0x53b85c._0x340b09)]||await this[_0x12a4f3(0x4c0,_0x53b85c._0x284063,_0x53b85c._0x3ce5f4,_0x53b85c._0x1bd355)+_0x4b1e2a(_0x53b85c._0x5916f6,_0x53b85c._0xe840f9,_0x53b85c._0x55b4bb,0x1ed)][_0x12a4f3(_0x53b85c._0x5c9bd0,_0x53b85c._0x2dfad7,0x442,_0x53b85c._0x20a769)](_0x3ea8c2[_0x12a4f3(_0x53b85c._0xd7a793,_0x53b85c._0x54ad50,_0x53b85c._0x4af672,_0x53b85c._0x485d65)+'icKey']);if(!_0x1fcb62)return;const _0x507d93=this[_0x12a4f3(_0x53b85c._0x111049,0x464,0x455,0x448)+_0x4b1e2a(_0x53b85c._0x2b42f4,0x234,0x272,_0x53b85c._0x40c910)][_0x12a4f3(0x46c,_0x53b85c._0x20f3fd,0x44e,_0x53b85c._0x1ff59f)](_0x5a3b3d);if(!_0x507d93)return;const _0x4e5c86=getMuxer(_0x3ea8c2),_0x479cd0=_0x4e5c86[_0x12a4f3(_0x53b85c._0x5b5612,_0x53b85c._0x456a0d,_0x53b85c._0x31898f,_0x53b85c._0x5d72a6)+_0x4b1e2a(_0x53b85c._0x54e99a,_0x53b85c._0x16f68a,0x236,_0x53b85c._0x23076b)]({'id':this[_0x12a4f3(0x42a,_0x53b85c._0x1fdc8e,_0x53b85c._0xb50d89,0x422)],'protocol':PRESENCE_PROTOCOL,'onopen':()=>this['_onChannel'+_0x12a4f3(0x42e,0x40f,0x446,0x458)](_0x507d93),'onclose':()=>this[_0x4b1e2a(0x1e5,0x1c7,0x202,0x18e)+_0x4b1e2a(0x251,0x236,0x26e,0x25c)](_0x507d93),'messages':[{'encoding':PeerPresenceMessage,'onmessage':_0x5b049f=>this['_onPresenc'+_0x12a4f3(0x45a,0x44e,0x46f,0x45b)](_0x507d93,![],_0x5b049f)},{'encoding':StreamsMessage,'onmessage':_0x19a0e1=>this['_onStreams'+_0x4b1e2a(0x23c,0x20c,0x1fd,0x1db)](_0x507d93,_0x19a0e1)}]});if(_0x479cd0===null)return;_0x507d93[_0x4b1e2a(0x1fc,_0x53b85c._0x2a9673,0x205,_0x53b85c._0x15f64d)]=_0x479cd0;function _0x4b1e2a(_0x25bc63,_0x3b629b,_0x401b2e,_0x2277b2){return _0xb04be9(_0x25bc63-_0x1d8366._0x5e258b,_0x3b629b- -0x20c,_0x401b2e-0x1b9,_0x2277b2);}_0x507d93[_0x4b1e2a(_0x53b85c._0x2abdd9,_0x53b85c._0x57e132,0x22a,0x256)]={'updatePresence':_0x507d93[_0x12a4f3(_0x53b85c._0x24020b,_0x53b85c._0x645f2d,_0x53b85c._0x4f8eff,_0x53b85c._0x1dbee6)][_0x12a4f3(_0x53b85c._0x245034,_0x53b85c._0x4ed545,0x46e,_0x53b85c._0x1fdc8e)][0x1f63+-0xfc3+-0x10*0xfa],'updateStreams':_0x507d93['channel'][_0x4b1e2a(_0x53b85c._0x3b4e01,_0x53b85c._0x16b427,_0x53b85c._0x1e0fb3,_0x53b85c._0x442da9)][0x1*0x1c21+0x1*0x12f8+-0x2f18]},_0x507d93[_0x4b1e2a(_0x53b85c._0x28db11,_0x53b85c._0x2a9673,_0x53b85c._0x4a9bfd,_0x53b85c._0x340b09)]['open']();}['_onChannel'+_0xb04be9(0x40b,0x3d6,0x3ac,0x3fc)](_0x3f2290){const _0x2f0ba7={_0x5dbf47:0x2ec,_0x5b2597:0x2b6,_0x5cae33:0x2db,_0x423659:0x19d,_0x5a342a:0x159,_0x48860e:0x190,_0x412802:0x18b,_0x3c6e8e:0x17e,_0x484344:0x273,_0x1588b3:0x27e,_0x2f1a4f:0x257,_0x167295:0x247,_0x494d2f:0x27a,_0x4ceff4:0x2a3,_0xcad2fa:0x2a9,_0x549b06:0x1c2,_0x4b79e0:0x1f1,_0xbd384c:0x1df,_0xd7dc5a:0x1b3,_0x141c22:0x1b7,_0x160d81:0x1e9,_0x512c33:0x2ab,_0x31fa5f:0x2ba,_0x97b260:0x2a3,_0x116579:0x280,_0x2870d5:0x24b,_0xad43db:0x293,_0x53282c:0x29b,_0x29c2e5:0x24c,_0x17e968:0x25b,_0x3348a6:0x259,_0x5cf8b0:0x23e,_0x5c4251:0x2fd,_0x297e87:0x2d9,_0x28147a:0x2b9,_0x20cda6:0x2ac,_0x4d4bfe:0x2b5,_0x1e7217:0x25c,_0x1308a9:0x264,_0xafb86e:0x243,_0x44901b:0x274,_0xccc3f4:0x2d7,_0x1cfcc9:0x1d4,_0x1f7a48:0x1e2,_0x56acbd:0x1f7,_0x3f7f77:0x298,_0x417c36:0x2d0,_0x108af:0x2f4,_0x151548:0x2a1,_0x4b945a:0x1d3,_0xde039c:0x204},_0x212224={_0x53315c:0x5c6,_0x5c0925:0x1c1},_0x3118e6={_0x54e373:0x1cf,_0x372b04:0x6ad,_0x3506e4:0xb8};function _0x243be0(_0x58bef8,_0x15f9d4,_0x176397,_0x1abed9){return _0xb04be9(_0x58bef8-_0x3118e6._0x54e373,_0x15f9d4- -_0x3118e6._0x372b04,_0x176397-_0x3118e6._0x3506e4,_0x176397);}function _0x43d2fc(_0x574477,_0x5881ed,_0x5c19e8,_0x512a59){return _0xb04be9(_0x574477-0x1e1,_0x512a59- -_0x212224._0x53315c,_0x5c19e8-_0x212224._0x5c0925,_0x5881ed);}for(const _0x53dbd8 of this[_0x243be0(-_0x2f0ba7._0x5dbf47,-_0x2f0ba7._0x5b2597,-_0x2f0ba7._0x5cae33,-0x2e3)+_0x43d2fc(-_0x2f0ba7._0x423659,-_0x2f0ba7._0x5a342a,-_0x2f0ba7._0x48860e,-_0x2f0ba7._0x412802)]){_0x3f2290[_0x43d2fc(-_0x2f0ba7._0x3c6e8e,-0x1a8,-0x16e,-0x19a)][_0x243be0(-_0x2f0ba7._0x484344,-_0x2f0ba7._0x1588b3,-0x246,-_0x2f0ba7._0x2f1a4f)+_0x243be0(-_0x2f0ba7._0x167295,-_0x2f0ba7._0x494d2f,-_0x2f0ba7._0x4ceff4,-_0x2f0ba7._0xcad2fa)]['send']({'key':HypercoreId[_0x43d2fc(-0x1dd,-_0x2f0ba7._0x549b06,-_0x2f0ba7._0x4b79e0,-_0x2f0ba7._0xbd384c)](_0x53dbd8),'present':!![]});}this[_0x43d2fc(-0x1c7,-_0x2f0ba7._0xd7dc5a,-_0x2f0ba7._0x141c22,-_0x2f0ba7._0x160d81)+_0x243be0(-_0x2f0ba7._0x512c33,-_0x2f0ba7._0x31fa5f,-_0x2f0ba7._0x97b260,-_0x2f0ba7._0x116579)]&&(_0x3f2290['senders'][_0x243be0(-_0x2f0ba7._0x2870d5,-0x27e,-_0x2f0ba7._0xad43db,-_0x2f0ba7._0x53282c)+_0x243be0(-0x279,-0x27a,-0x24d,-_0x2f0ba7._0x29c2e5)]['send']({'key':HypercoreId['decode'](this[_0x243be0(-_0x2f0ba7._0x17e968,-_0x2f0ba7._0x484344,-_0x2f0ba7._0x3348a6,-_0x2f0ba7._0x5cf8b0)][_0x243be0(-_0x2f0ba7._0x5c4251,-_0x2f0ba7._0x297e87,-_0x2f0ba7._0x28147a,-_0x2f0ba7._0x20cda6)][_0x243be0(-_0x2f0ba7._0x4d4bfe,-0x299,-_0x2f0ba7._0x1e7217,-_0x2f0ba7._0x1308a9)]),'present':!![]}),_0x3f2290[_0x243be0(-0x2b5,-0x281,-_0x2f0ba7._0xafb86e,-_0x2f0ba7._0x44901b)][_0x243be0(-0x2d6,-0x2b8,-0x2b0,-_0x2f0ba7._0xccc3f4)+'ams'][_0x43d2fc(-_0x2f0ba7._0x1cfcc9,-_0x2f0ba7._0x160d81,-_0x2f0ba7._0x1f7a48,-_0x2f0ba7._0x56acbd)](this[_0x243be0(-_0x2f0ba7._0x3f7f77,-_0x2f0ba7._0x417c36,-_0x2f0ba7._0x108af,-_0x2f0ba7._0x151548)+_0x43d2fc(-_0x2f0ba7._0x4b945a,-0x1cf,-_0x2f0ba7._0xde039c,-0x1d3)]));}[_0xf7b98f(0x31a,0x305,0x33d,0x341)+'Close'](_0x4f8f26){const _0x24f265={_0x3162d4:0x66,_0x177af8:0x67,_0x45948f:0x72,_0x56d63d:0x36,_0x270a63:0x50,_0x5f4ce4:0x1d,_0x4a2cec:0x46,_0xf7100f:0x53,_0x3b1848:0x1a,_0x20ae18:0xc,_0x397916:0x3f,_0x2461b0:0x15,_0x4f0457:0x23,_0x848cad:0x40,_0x579ca2:0x2e},_0x5a064f={_0x1a8a12:0x91,_0x304e3a:0x38d,_0x32af31:0x1e3},_0x22eaeb={_0x5ee7c2:0x60,_0x485746:0x3b9,_0xb5d785:0xe9};this[_0x269b0d(-0x87,-_0x24f265._0x3162d4,-_0x24f265._0x177af8,-_0x24f265._0x45948f)+'Update'](_0x4f8f26,[]);function _0x269b0d(_0x5bd733,_0x355bc2,_0x58e5ab,_0xde512d){return _0xf7b98f(_0x5bd733-_0x22eaeb._0x5ee7c2,_0x5bd733,_0x355bc2- -_0x22eaeb._0x485746,_0xde512d-_0x22eaeb._0xb5d785);}this['_onPresenc'+_0x269b0d(-_0x24f265._0x56d63d,-_0x24f265._0x270a63,-0x38,-_0x24f265._0x5f4ce4)](_0x4f8f26,!![],{'key':_0x4f8f26['remotePubl'+_0x1703ff(-_0x24f265._0x4a2cec,-_0x24f265._0xf7100f,-_0x24f265._0x3b1848,-0x26)],'present':![]});function _0x1703ff(_0x3bae33,_0x519039,_0x1b5804,_0x169fa1){return _0xf7b98f(_0x3bae33-_0x5a064f._0x1a8a12,_0x1b5804,_0x519039- -_0x5a064f._0x304e3a,_0x169fa1-_0x5a064f._0x32af31);}_0x4f8f26[_0x1703ff(-_0x24f265._0x20ae18,-0x18,-0x40,-_0x24f265._0x397916)]=null,_0x4f8f26[_0x269b0d(_0x24f265._0x2461b0,-_0x24f265._0x4f0457,-_0x24f265._0x848cad,-_0x24f265._0x579ca2)]=null;}[_0xf7b98f(0x38f,0x3ba,0x3ab,0x3c7)+_0xf7b98f(0x32d,0x34d,0x369,0x342)](_0x282e8f,_0x30b8c3,{key:_0x447d7b,present:_0x3d48e1}){const _0x2c6154={_0x23a7c9:0x157,_0x3f8985:0x134,_0x15057e:0xe6,_0x240ea2:0xb4,_0x72ba69:0x9c,_0x4b3f08:0x114,_0x2cced1:0xd0,_0x47bbfa:0x126,_0x3bb860:0x10f,_0xf3bd9a:0x112,_0x443dfa:0x102,_0x4999dd:0x102,_0x496c66:0xf0,_0xdc384f:0x108,_0x89f183:0x122,_0x43f1c8:0x13a,_0x447246:0x117,_0x461d4b:0xdc,_0x2c6bba:0xee,_0x5dfc48:0xc3,_0x528de6:0xf7,_0x57c7c9:0xeb,_0x192948:0xb9},_0x4739ba={_0x1d92a2:0xaa,_0x44d62b:0x51a,_0x131a71:0x2d},_0x375677={_0x241c1e:0x458,_0x16a53e:0x5f};function _0xa1324c(_0x574172,_0x129ba5,_0x17739c,_0xbb68ac){return _0xf7b98f(_0x574172-0xd8,_0xbb68ac,_0x129ba5- -_0x375677._0x241c1e,_0xbb68ac-_0x375677._0x16a53e);}if(b4a[_0x2b468e(-0x11a,-_0x2c6154._0x23a7c9,-_0x2c6154._0x3f8985,-0x12f)](_0x447d7b,this[_0xa1324c(-_0x2c6154._0x15057e,-_0x2c6154._0x240ea2,-0xc6,-_0x2c6154._0x72ba69)]['keyPair'][_0x2b468e(-_0x2c6154._0x4b3f08,-0x100,-0x106,-_0x2c6154._0x2cced1)]))return;const _0x54b415=HypercoreId[_0x2b468e(-_0x2c6154._0x47bbfa,-_0x2c6154._0x3bb860,-_0x2c6154._0xf3bd9a,-_0x2c6154._0x443dfa)](_0x447d7b);function _0x2b468e(_0xbf765e,_0x5cddd6,_0x3a2a32,_0x10c4d0){return _0xb04be9(_0xbf765e-_0x4739ba._0x1d92a2,_0x3a2a32- -_0x4739ba._0x44d62b,_0x3a2a32-_0x4739ba._0x131a71,_0xbf765e);}const _0x22f586=_0x282e8f[_0xa1324c(-0xfc,-0x112,-_0x2c6154._0x4999dd,-_0x2c6154._0x496c66)],_0x2ca838=_0x54b415===_0x22f586;_0x3d48e1?this[_0x2b468e(-_0x2c6154._0xdc384f,-_0x2c6154._0x89f183,-_0x2c6154._0x43f1c8,-0x149)+_0xa1324c(-_0x2c6154._0x447246,-_0x2c6154._0x461d4b,-_0x2c6154._0x2c6bba,-0xd3)](_0x22f586,_0x54b415,_0x2ca838):this[_0x2b468e(-_0x2c6154._0x5dfc48,-_0x2c6154._0xdc384f,-_0x2c6154._0x528de6,-0x12c)+_0xa1324c(-_0x2c6154._0x4b3f08,-_0x2c6154._0x57c7c9,-_0x2c6154._0x192948,-0xf5)](_0x22f586,_0x54b415,_0x2ca838,_0x30b8c3);}[_0xf7b98f(0x350,0x346,0x34a,0x357)+_0xb04be9(0x414,0x412,0x3f3,0x3f1)](_0x2b39aa,_0x39f52b,_0x27964a){const _0x14ae6e={_0x1463cd:0x20b,_0x3fd450:0x23e,_0x301d83:0x211,_0x425e03:0x64,_0x21e89a:0x82,_0x3663ec:0x50,_0x355fef:0x221,_0x2b9e28:0x227,_0x478ab9:0x205,_0x3abc4a:0x24f,_0x50bec7:0x257,_0x27919e:0x24d,_0x5eca2f:0x20b,_0x18d920:0x20b,_0x10ee4c:0x1fb,_0x2fefc1:0x21d,_0xcb7365:0x1f9,_0x2b3862:0x24a,_0x261174:0x234,_0x31eaa2:0x20d,_0x5b85a4:0x86,_0x43a5f0:0x263,_0x3d91f2:0x232,_0x4f10a0:0x67,_0x392931:0x79,_0x492197:0x2d,_0x2b4442:0x99,_0x30bc90:0x99,_0x5dd709:0x1e6,_0x28175f:0x243,_0x127033:0xb9,_0x2e1390:0x84,_0x507b81:0x49,_0xb039f8:0xbc,_0x3f693b:0x1d0,_0x3a17b5:0xc6,_0x4da929:0xb6,_0xe64d9e:0xcd,_0x304e30:0x83,_0x403e98:0x37,_0x30bb56:0x6d,_0x5e4d9b:0xbf,_0x5ca658:0xa1,_0x5d0aa7:0xb8,_0x4fe2b6:0x1e8,_0x2d6839:0x213,_0x475d41:0x24d,_0x34fc88:0x22f,_0x2be05c:0xca,_0x2a22b4:0xcc,_0x10581a:0xf5,_0x48f0e6:0xc2,_0x1a9377:0xb4,_0x238150:0xa7,_0x2f76a3:0xcf,_0x34f9b2:0x42,_0x2fb699:0xa3,_0x381c58:0xad,_0x1b24d0:0x226,_0x2dcb28:0x1f1,_0xcc4fe1:0x266},_0x31e810={_0x3d1116:0x69,_0x5aea28:0x646},_0x236f17={_0x149f05:0x1a6,_0x3fb566:0x49b},_0x25e16d=this['_directPre'+_0x5e0935(-_0x14ae6e._0x1463cd,-_0x14ae6e._0x3fd450,-0x204,-0x201)][_0x5e0935(-_0x14ae6e._0x301d83,-0x1fb,-0x1db,-0x1ff)](_0x39f52b),_0x390e82=this[_0x1614f0(-_0x14ae6e._0x425e03,-_0x14ae6e._0x21e89a,-_0x14ae6e._0x3663ec,-0xad)+'esenceBySw'+_0x5e0935(-0x22f,-_0x14ae6e._0x355fef,-_0x14ae6e._0x2b9e28,-_0x14ae6e._0x478ab9)]['has'](_0x39f52b);if(_0x27964a)this[_0x5e0935(-_0x14ae6e._0x3abc4a,-_0x14ae6e._0x50bec7,-0x238,-_0x14ae6e._0x27919e)+_0x5e0935(-_0x14ae6e._0x5eca2f,-0x1e6,-_0x14ae6e._0x18d920,-_0x14ae6e._0x10ee4c)][_0x5e0935(-0x20d,-_0x14ae6e._0x2fefc1,-0x239,-_0x14ae6e._0xcb7365)](_0x2b39aa),this[_0x5e0935(-0x22d,-_0x14ae6e._0x2b3862,-_0x14ae6e._0x261174,-_0x14ae6e._0x31eaa2)+_0x1614f0(-0x5d,-0x67,-_0x14ae6e._0x5b85a4,-0x92)+'armId'][_0x5e0935(-_0x14ae6e._0x43a5f0,-0x231,-0x276,-_0x14ae6e._0x3d91f2)](_0x2b39aa);else{let _0x2c3815=this['_relayedPr'+_0x1614f0(-0x64,-_0x14ae6e._0x4f10a0,-_0x14ae6e._0x392931,-_0x14ae6e._0x492197)+_0x1614f0(-_0x14ae6e._0x2b4442,-0x84,-0x9a,-_0x14ae6e._0x30bc90)]['get'](_0x39f52b);!_0x2c3815&&(_0x2c3815=new Set(),this['_relayedPr'+_0x5e0935(-0x212,-_0x14ae6e._0x5dd709,-_0x14ae6e._0x28175f,-0x245)+_0x1614f0(-_0x14ae6e._0x127033,-_0x14ae6e._0x2e1390,-_0x14ae6e._0x507b81,-_0x14ae6e._0xb039f8)]['set'](_0x39f52b,_0x2c3815)),_0x2c3815[_0x5e0935(-0x20d,-_0x14ae6e._0x28175f,-_0x14ae6e._0x3f693b,-0x1ee)](_0x2b39aa);}function _0x1614f0(_0x1791c0,_0x1d6ece,_0x13ea1a,_0x344e8b){return _0xb04be9(_0x1791c0-_0x236f17._0x149f05,_0x1d6ece- -_0x236f17._0x3fb566,_0x13ea1a-0x12a,_0x1791c0);}function _0x5e0935(_0x19cff4,_0x2dc227,_0x4db4ea,_0xe1a85b){return _0xb04be9(_0x19cff4-_0x31e810._0x3d1116,_0x19cff4- -_0x31e810._0x5aea28,_0x4db4ea-0x35,_0xe1a85b);}if(_0x27964a&&!_0x25e16d)for(const _0x174993 of this[_0x1614f0(-_0x14ae6e._0x3a17b5,-_0x14ae6e._0x4da929,-_0x14ae6e._0xe64d9e,-_0x14ae6e._0x304e30)+'BySwarmId'][_0x1614f0(-_0x14ae6e._0x403e98,-_0x14ae6e._0x425e03,-_0x14ae6e._0x425e03,-0x9c)]()){if(!_0x174993[_0x1614f0(-0x31,-0x6f,-_0x14ae6e._0x30bb56,-0x47)]||_0x174993[_0x1614f0(-0xee,-_0x14ae6e._0x5e4d9b,-_0x14ae6e._0x5ca658,-_0x14ae6e._0x5d0aa7)]===_0x2b39aa)continue;_0x174993['senders'][_0x5e0935(-0x217,-_0x14ae6e._0x4fe2b6,-0x1ff,-0x215)+_0x5e0935(-_0x14ae6e._0x2d6839,-_0x14ae6e._0x475d41,-0x1ec,-_0x14ae6e._0x34fc88)][_0x1614f0(-_0x14ae6e._0x2be05c,-_0x14ae6e._0x2a22b4,-_0x14ae6e._0x10581a,-_0x14ae6e._0x48f0e6)]({'key':HypercoreId[_0x1614f0(-0xe4,-_0x14ae6e._0x1a9377,-_0x14ae6e._0x238150,-_0x14ae6e._0x2f76a3)](_0x2b39aa),'present':!![]});}if(_0x25e16d||_0x390e82)return;this['_bumpSubsc'+_0x1614f0(-_0x14ae6e._0x34f9b2,-0x7f,-_0x14ae6e._0x2fb699,-_0x14ae6e._0x381c58)]({'type':PRESENCE_EVENTS[_0x5e0935(-0x229,-_0x14ae6e._0x1b24d0,-_0x14ae6e._0x2dcb28,-_0x14ae6e._0xcc4fe1)+'NT'],'swarmId':_0x39f52b});}[_0xf7b98f(0x392,0x3cc,0x39c,0x3ab)+_0xb04be9(0x430,0x430,0x463,0x426)](_0x21357a,_0x1fbcb6){const _0x8289c7={_0x2ea1f2:0x8d,_0x2fb01f:0x97,_0x407e0d:0x77,_0x37c46b:0x98,_0x309d46:0x7a,_0x54017c:0x72,_0x434a54:0xa8,_0x36ccaa:0xdf,_0x31f4f6:0xe1,_0x5b221f:0xad,_0x2301c7:0xdc,_0x32defb:0x46,_0x125f21:0x6d,_0x15d9c9:0x86,_0x298a6f:0x51,_0x34426b:0xd3,_0x1c1e45:0xfa,_0x562cc9:0x138,_0x13f337:0x8e,_0x5b80a6:0x9e,_0x2ea49b:0xc1,_0x2acf54:0x98,_0x269647:0x75},_0x48882b={_0x15c51f:0x1e6,_0x11ad52:0x267,_0x4223ba:0xa7},_0x1ff34e={_0x5b6c6a:0x19d,_0x297c6e:0x307,_0x967933:0x174},_0x38be7c=this['_relayedPr'+_0x4cc7ad(_0x8289c7._0x2ea1f2,_0x8289c7._0x2fb01f,_0x8289c7._0x407e0d,_0x8289c7._0x37c46b)+_0x4cc7ad(0xb0,_0x8289c7._0x309d46,_0x8289c7._0x54017c,_0x8289c7._0x434a54)][_0x5a7c26(_0x8289c7._0x36ccaa,_0x8289c7._0x31f4f6,_0x8289c7._0x5b221f,_0x8289c7._0x2301c7)](_0x1fbcb6);if(!_0x38be7c)return![];_0x38be7c[_0x4cc7ad(0x6c,_0x8289c7._0x32defb,0x76,_0x8289c7._0x125f21)](_0x21357a);if(_0x38be7c['size'])return![];function _0x4cc7ad(_0x5690f7,_0x214267,_0x1c04bb,_0x366a2f){return _0xf7b98f(_0x5690f7-_0x1ff34e._0x5b6c6a,_0x366a2f,_0x214267- -_0x1ff34e._0x297c6e,_0x366a2f-_0x1ff34e._0x967933);}function _0x5a7c26(_0x1fe547,_0x5408a6,_0x3c8d01,_0x15f0fe){return _0xf7b98f(_0x1fe547-_0x48882b._0x15c51f,_0x15f0fe,_0x5408a6- -_0x48882b._0x11ad52,_0x15f0fe-_0x48882b._0x4223ba);}this[_0x4cc7ad(0x5e,0x7c,_0x8289c7._0x15d9c9,_0x8289c7._0x298a6f)+'esenceBySw'+'armId']['delete'](_0x1fbcb6);if(this[_0x5a7c26(_0x8289c7._0x34426b,_0x8289c7._0x1c1e45,0xc6,_0x8289c7._0x562cc9)+_0x4cc7ad(_0x8289c7._0x13f337,_0x8289c7._0x5b80a6,0x71,_0x8289c7._0x2ea49b)][_0x4cc7ad(0x5a,_0x8289c7._0x2acf54,_0x8289c7._0x5b221f,_0x8289c7._0x269647)](_0x1fbcb6))return![];return!![];}[_0xf7b98f(0x39f,0x381,0x38d,0x3a2)+_0xb04be9(0x42c,0x403,0x40b,0x3da)](_0x43480a,_0x26197e,_0xecc6ef,_0x171056){const _0x37a14a={_0x536e40:0x291,_0x2b2682:0x2bc,_0x1f40dc:0x2b8,_0x28fed8:0x2b2,_0x31d452:0x296,_0x198b61:0x2c6,_0x9c158b:0x262,_0x39a528:0x26d,_0xffd659:0x1e4,_0x1480e2:0x1c1,_0x33463b:0x1da,_0x33a8ee:0x1e7,_0x53631:0x1f5,_0x19880a:0x22b,_0x675f0:0x2b1,_0x698245:0x2d4,_0x513048:0x2ce,_0x516825:0x2bd,_0x3dddd8:0x1ae,_0x803574:0x1d8,_0x472dea:0x1d7,_0x6e46b5:0x1c1,_0x2b92f3:0x1e9,_0x52db8e:0x1e0,_0x231e8e:0x18e,_0x4b7e61:0x1f0,_0x143b72:0x1a1,_0x1ce1ac:0x16e,_0x432ddd:0x2a5,_0x5c69a2:0x2cc,_0x1c7b39:0x294,_0x33a881:0x17a,_0x8e6fd6:0x198,_0x4da5f7:0x167,_0x1edba2:0x172,_0x2a721f:0x1ce,_0x29e06d:0x29e,_0x313b36:0x29e,_0x4814f4:0x17e,_0x6a1b44:0x1ac,_0x64492d:0x1ac,_0x57a19e:0x29b,_0x164f0f:0x2b0,_0x33922d:0x1a5,_0x3a6aa:0x1c7,_0x2ec7c1:0x2fb,_0x38d7b6:0x2e3,_0x2c689a:0x2b5,_0x2aea17:0x2d2,_0x56d710:0x2c0,_0x4756dc:0x171,_0x3af113:0x1c3,_0x10c2e5:0x1c5,_0xcb51bf:0x1b8,_0x19d9bb:0x161,_0x124336:0x180,_0x2af2e4:0x1ed,_0x5557d2:0x1d0,_0x2509d2:0x2fc,_0x19020a:0x2e4,_0x57e0b2:0x2f8,_0x8f4eb5:0x2f7,_0x1a1e37:0x275,_0x277d4c:0x1e2,_0x2dc361:0x1a4,_0x212dd7:0x187,_0x529eeb:0x1c8,_0xf5bff3:0x1e0,_0x23a536:0x1af,_0x3d6744:0x1fd,_0x293bcb:0x223,_0x46ed1b:0x20a,_0x256d8b:0x1fe,_0x17abb6:0x1bf,_0xd09c70:0x1e1,_0x3f667b:0x1a5,_0x14884b:0x1ef,_0x59c5b8:0x294,_0x10613a:0x268,_0x1d946f:0x2bf,_0x31eb51:0x267,_0x16580f:0x2af,_0x2a5c22:0x2c4,_0x9d42cf:0x1a2,_0x313a62:0x199,_0x301825:0x1bd,_0x5af4ac:0x18e,_0x345dc6:0x1a7,_0x47af45:0x2b9,_0x703f5d:0x2c5,_0x3a09ec:0x29f,_0x4c2c02:0x294,_0x23adbf:0x28e,_0x565d0a:0x277,_0x1da56a:0x1d3,_0x153343:0x1ed,_0x3ff757:0x2a4,_0x47ec38:0x269,_0x211f3c:0x28a,_0x1c2948:0x274,_0x251a2a:0x18f,_0x52a394:0x1ee,_0x372aad:0x1a0,_0x38f9b7:0x1bd,_0x1266bf:0x18e,_0x15384f:0x2dc,_0x12404d:0x2c1,_0x51d4bd:0x2e3,_0x2ef077:0x2e5},_0x35e558={_0x56dffb:0xf8,_0x5c9e84:0x5d8,_0x1370b6:0x55};function _0x4c95f6(_0x9f5149,_0x146a85,_0xfb7848,_0x534ffa){return _0xb04be9(_0x9f5149-_0x35e558._0x56dffb,_0x146a85- -_0x35e558._0x5c9e84,_0xfb7848-_0x35e558._0x1370b6,_0xfb7848);}const _0x49b31d=new Set();if(_0xecc6ef){_0x49b31d[_0x599dd9(-_0x37a14a._0x536e40,-_0x37a14a._0x2b2682,-_0x37a14a._0x1f40dc,-_0x37a14a._0x28fed8)](_0x43480a),this['_directPre'+'senceIds']['delete'](_0x43480a),this['_relayedPr'+_0x599dd9(-_0x37a14a._0x31d452,-_0x37a14a._0x198b61,-_0x37a14a._0x9c158b,-_0x37a14a._0x39a528)+_0x4c95f6(-_0x37a14a._0xffd659,-_0x37a14a._0x1480e2,-_0x37a14a._0x33463b,-_0x37a14a._0x33a8ee)][_0x4c95f6(-0x1cd,-_0x37a14a._0x53631,-_0x37a14a._0x19880a,-0x1d0)](_0x43480a);if(_0x171056)for(const _0x13334a of this[_0x599dd9(-_0x37a14a._0x675f0,-_0x37a14a._0x698245,-_0x37a14a._0x513048,-_0x37a14a._0x516825)+_0x4c95f6(-_0x37a14a._0x3dddd8,-0x1a4,-_0x37a14a._0x803574,-0x1b5)+_0x4c95f6(-_0x37a14a._0x472dea,-_0x37a14a._0x6e46b5,-_0x37a14a._0x2b92f3,-0x18e)][_0x4c95f6(-_0x37a14a._0x52db8e,-0x1c9,-_0x37a14a._0x231e8e,-_0x37a14a._0x4b7e61)]()){this[_0x4c95f6(-_0x37a14a._0x231e8e,-0x1a6,-_0x37a14a._0x143b72,-_0x37a14a._0x1ce1ac)+_0x599dd9(-0x29a,-_0x37a14a._0x432ddd,-0x294,-_0x37a14a._0x5c69a2)](_0x43480a,_0x13334a)&&_0x49b31d[_0x599dd9(-_0x37a14a._0x536e40,-_0x37a14a._0x1c7b39,-_0x37a14a._0x432ddd,-0x26d)](_0x13334a);}for(const _0x5ce656 of this['_protocols'+_0x4c95f6(-_0x37a14a._0x33a881,-_0x37a14a._0x8e6fd6,-_0x37a14a._0x4da5f7,-0x1c0)][_0x4c95f6(-_0x37a14a._0x1edba2,-_0x37a14a._0x143b72,-_0x37a14a._0x2a721f,-0x172)]()){if(!_0x5ce656[_0x599dd9(-_0x37a14a._0x29e06d,-_0x37a14a._0x313b36,-_0x37a14a._0x28fed8,-_0x37a14a._0x31d452)]||_0x5ce656['remoteId']===_0x43480a)continue;_0x5ce656[_0x4c95f6(-_0x37a14a._0x4814f4,-_0x37a14a._0x6a1b44,-0x1c0,-_0x37a14a._0x64492d)][_0x599dd9(-_0x37a14a._0x57a19e,-_0x37a14a._0x164f0f,-_0x37a14a._0x39a528,-0x29d)+_0x4c95f6(-0x1ad,-_0x37a14a._0x33922d,-0x192,-_0x37a14a._0x3a6aa)][_0x599dd9(-_0x37a14a._0x2ec7c1,-0x317,-0x31d,-_0x37a14a._0x38d7b6)]({'key':HypercoreId[_0x599dd9(-_0x37a14a._0x38d7b6,-_0x37a14a._0x2c689a,-_0x37a14a._0x2aea17,-_0x37a14a._0x56d710)](_0x43480a),'present':![]});}}else this['_removeRel'+_0x4c95f6(-_0x37a14a._0x4756dc,-0x1a8,-_0x37a14a._0x3af113,-_0x37a14a._0x10c2e5)](_0x43480a,_0x26197e)&&_0x49b31d[_0x4c95f6(-_0x37a14a._0xcb51bf,-0x19f,-_0x37a14a._0x19d9bb,-_0x37a14a._0x124336)](_0x26197e);const _0x28494d=this[_0x4c95f6(-_0x37a14a._0x2af2e4,-0x1e1,-_0x37a14a._0x5557d2,-0x217)+'senceIds'][_0x599dd9(-_0x37a14a._0x2509d2,-_0x37a14a._0x19020a,-_0x37a14a._0x57e0b2,-_0x37a14a._0x8f4eb5)]===-0x1766+0x2313+-0xbad&&this[_0x599dd9(-_0x37a14a._0x675f0,-_0x37a14a._0x1a1e37,-0x2cc,-0x2ea)+_0x4c95f6(-_0x37a14a._0x277d4c,-_0x37a14a._0x2dc361,-_0x37a14a._0x212dd7,-_0x37a14a._0x529eeb)+_0x4c95f6(-_0x37a14a._0xf5bff3,-_0x37a14a._0x6e46b5,-_0x37a14a._0x23a536,-_0x37a14a._0x3d6744)][_0x4c95f6(-_0x37a14a._0x293bcb,-_0x37a14a._0x46ed1b,-0x21f,-_0x37a14a._0x256d8b)]===0xefb*0x1+0x2f*-0xd3+-0x2*-0xbe1;!this[_0x4c95f6(-_0x37a14a._0x17abb6,-0x1b6,-_0x37a14a._0xd09c70,-_0x37a14a._0x3f667b)]&&this[_0x4c95f6(-0x1d1,-0x1c2,-_0x37a14a._0x14884b,-_0x37a14a._0x6a1b44)]&&this[_0x599dd9(-_0x37a14a._0x59c5b8,-_0x37a14a._0x10613a,-_0x37a14a._0x1d946f,-_0x37a14a._0x31eb51)+_0x599dd9(-_0x37a14a._0x16580f,-_0x37a14a._0x2a5c22,-0x2e4,-0x2b6)+'n']&&_0x28494d&&(this[_0x4c95f6(-0x176,-_0x37a14a._0x9d42cf,-0x16a,-_0x37a14a._0x313a62)+_0x4c95f6(-0x1f6,-_0x37a14a._0x301825,-_0x37a14a._0x5af4ac,-_0x37a14a._0x345dc6)+'n'][_0x599dd9(-_0x37a14a._0x516825,-_0x37a14a._0x47af45,-_0x37a14a._0x703f5d,-_0x37a14a._0x3a09ec)](),this[_0x599dd9(-_0x37a14a._0x4c2c02,-_0x37a14a._0x23adbf,-_0x37a14a._0x565d0a,-_0x37a14a._0x536e40)+_0x4c95f6(-_0x37a14a._0x1da56a,-_0x37a14a._0x301825,-0x191,-_0x37a14a._0x153343)+'n']=null);function _0x599dd9(_0x1ab247,_0x40192f,_0x570853,_0x44efcb){return _0xb04be9(_0x1ab247-0xa1,_0x1ab247- -0x6ca,_0x570853-0x2d,_0x44efcb);}for(const _0x5c8281 of _0x49b31d){this[_0x599dd9(-_0x37a14a._0x3ff757,-_0x37a14a._0x47ec38,-_0x37a14a._0x211f3c,-_0x37a14a._0x1c2948)+_0x4c95f6(-_0x37a14a._0x251a2a,-0x1bc,-_0x37a14a._0x52a394,-_0x37a14a._0x372aad)]({'type':PRESENCE_EVENTS[_0x4c95f6(-_0x37a14a._0x38f9b7,-0x1cc,-_0x37a14a._0x1266bf,-0x1a4)+_0x599dd9(-_0x37a14a._0x15384f,-_0x37a14a._0x12404d,-_0x37a14a._0x51d4bd,-_0x37a14a._0x2ef077)],'swarmId':_0x5c8281});}}[_0xf7b98f(0x37e,0x372,0x353,0x36f)+_0xf7b98f(0x3a5,0x34a,0x382,0x368)](_0x367fa3,_0x41d99e){const _0x5af5a6={_0x2e19b1:0x2cf,_0x463a19:0x2bc,_0xe648bc:0xaa,_0x4aa18f:0xaf,_0xb8e14a:0xb9,_0x4bac79:0x92,_0x513b33:0xc5,_0x32d9a0:0xc7,_0x5d3297:0x124,_0x3b3af1:0xf9,_0x50ed3c:0xd0,_0x3e003c:0x2f5,_0x224f17:0x32c,_0x3563fe:0x318,_0x36027f:0x2f2,_0x2b1e6c:0xe5,_0x4084af:0xfc,_0x5e06c6:0x100,_0x529ef5:0xe6,_0x3e4466:0xb1,_0x3ac4e5:0xe1,_0x21acfa:0x2b0,_0x2416c8:0x2c4,_0x88b5f0:0x2b2,_0x5913ce:0x2dd,_0x6154db:0x2d7,_0x5cbd7a:0x304,_0x2f135a:0x32b,_0x1c2416:0xf9,_0x22599b:0xbe,_0x1f0271:0x2bd,_0x18de95:0x2cf,_0x575865:0x2e0,_0x2e4325:0x2d2,_0x22cc2e:0x2f7,_0x5373b8:0x2f6,_0xba501d:0xae,_0xaa7de6:0xad,_0x3e4664:0x7b,_0x529ab1:0x2d1,_0x28f1c6:0xf1,_0x5500da:0xc4,_0x403687:0x98,_0x1ed061:0xef,_0x3aca78:0xdd,_0x429ab8:0x10c,_0x1e50e0:0xfd,_0x7e256b:0x117,_0x2af342:0x101,_0x4423be:0xcf,_0x133b8c:0xe3,_0x1a78af:0x9a,_0x3463fb:0x2e4,_0x1a127e:0x2ca,_0x43bac6:0x2ff,_0x383ef6:0x2d8,_0x4091f8:0xa8,_0x4c9f89:0xd8,_0x1e2cac:0xd2,_0x18333b:0x273,_0x313ba6:0x28b,_0x45e81c:0xbe,_0x736466:0xaa,_0x384ed8:0x2db,_0x3daf8e:0x2ed,_0x2cd1fc:0x2cc,_0x11e676:0x2eb,_0x549876:0xea,_0x200b21:0x290,_0x4af0bd:0x2e8,_0x1ca8df:0x2c7,_0x3a54a8:0x2b9,_0x180aa0:0x8e,_0x9797f2:0x87,_0x506b36:0x96},_0x3282fb={_0x1f4cfe:0x1a4,_0x2dcdbc:0x297,_0x5893c8:0xae},_0x7b7e06={_0x2aeb9e:0x1d4,_0x8eddc4:0x94},_0x323a96=this['_streamsBy'+_0x57000a(0x312,_0x5af5a6._0x2e19b1,_0x5af5a6._0x463a19,0x2eb)]['get'](_0x367fa3[_0x47a73d(_0x5af5a6._0xe648bc,_0x5af5a6._0x4aa18f,0x9d,_0x5af5a6._0xb8e14a)]),_0x24bb32=new Map();for(const _0x56589d of _0x41d99e){_0x24bb32[_0x47a73d(_0x5af5a6._0x4bac79,_0x5af5a6._0x513b33,_0x5af5a6._0x32d9a0,0xca)](_0x56589d['id'],_0x56589d);}function _0x57000a(_0x36bf3b,_0x33dc86,_0xd3be31,_0x182f9f){return _0xf7b98f(_0x36bf3b-_0x7b7e06._0x2aeb9e,_0xd3be31,_0x182f9f- -_0x7b7e06._0x8eddc4,_0x182f9f-0x5d);}if(_0x323a96)for(const [_0x5001ca,_0x1d35ad]of _0x323a96){if(_0x24bb32['has'](_0x5001ca))continue;this[_0x47a73d(_0x5af5a6._0x5d3297,_0x5af5a6._0x3b3af1,_0x5af5a6._0x50ed3c,0xdc)+_0x57000a(_0x5af5a6._0x3e003c,_0x5af5a6._0x224f17,_0x5af5a6._0x3563fe,_0x5af5a6._0x36027f)]({'type':PRESENCE_EVENTS[_0x47a73d(0xe0,0xf1,_0x5af5a6._0x2b1e6c,_0x5af5a6._0x4084af)+_0x47a73d(_0x5af5a6._0x5e06c6,_0x5af5a6._0x529ef5,_0x5af5a6._0x3e4466,_0x5af5a6._0x3ac4e5)],'swarmId':_0x367fa3[_0x57000a(_0x5af5a6._0x21acfa,_0x5af5a6._0x2416c8,0x2e8,_0x5af5a6._0x88b5f0)],'streamId':_0x1d35ad['id'],'streamName':_0x1d35ad[_0x57000a(_0x5af5a6._0x5913ce,_0x5af5a6._0x6154db,_0x5af5a6._0x463a19,0x2c7)]});}function _0x47a73d(_0x46c188,_0x4feae0,_0x437d5e,_0x7c4537){return _0xf7b98f(_0x46c188-_0x3282fb._0x1f4cfe,_0x46c188,_0x4feae0- -_0x3282fb._0x2dcdbc,_0x7c4537-_0x3282fb._0x5893c8);}for(const [_0x2374cc,_0x348842]of _0x24bb32){if(_0x323a96&&_0x323a96[_0x57000a(0x308,_0x5af5a6._0x5cbd7a,_0x5af5a6._0x2f135a,0x30b)](_0x2374cc))continue;this[_0x47a73d(0xc5,_0x5af5a6._0x1c2416,_0x5af5a6._0x50ed3c,_0x5af5a6._0x22599b)+_0x57000a(_0x5af5a6._0x1f0271,_0x5af5a6._0x18de95,_0x5af5a6._0x575865,_0x5af5a6._0x36027f)]({'type':PRESENCE_EVENTS[_0x57000a(_0x5af5a6._0x2e4325,0x30c,_0x5af5a6._0x22cc2e,_0x5af5a6._0x5373b8)+_0x47a73d(_0x5af5a6._0xba501d,_0x5af5a6._0xaa7de6,0xd5,_0x5af5a6._0x3e4664)],'swarmId':_0x367fa3[_0x57000a(0x27f,0x291,_0x5af5a6._0x529ab1,_0x5af5a6._0x88b5f0)],'streamId':_0x348842['id'],'streamName':_0x348842[_0x47a73d(_0x5af5a6._0x28f1c6,_0x5af5a6._0x5500da,_0x5af5a6._0x403687,0xe2)]});}for(const [_0x3d87d0,_0x526e29]of _0x24bb32){const _0x5dbba9=_0x323a96&&_0x323a96[_0x47a73d(0x98,0xb1,0xb4,0xe8)](_0x3d87d0);if(_0x5dbba9&&sameStatus(_0x5dbba9,_0x526e29))continue;this['_bumpSubsc'+_0x47a73d(0x10a,_0x5af5a6._0x1ed061,0xd7,_0x5af5a6._0x3aca78)]({'type':PRESENCE_EVENTS[_0x47a73d(_0x5af5a6._0x429ab8,_0x5af5a6._0x1e50e0,_0x5af5a6._0x7e256b,_0x5af5a6._0x2af342)+_0x47a73d(0xb8,_0x5af5a6._0x4423be,_0x5af5a6._0x133b8c,_0x5af5a6._0x1a78af)+'D'],'swarmId':_0x367fa3[_0x57000a(0x2be,_0x5af5a6._0x3463fb,_0x5af5a6._0x1a127e,0x2b2)],'streamId':_0x526e29['id'],'audioMuted':_0x526e29[_0x57000a(_0x5af5a6._0x43bac6,0x2f6,_0x5af5a6._0x383ef6,_0x5af5a6._0x18de95)],'videoMuted':_0x526e29[_0x47a73d(_0x5af5a6._0x4091f8,_0x5af5a6._0x4c9f89,_0x5af5a6._0x1e2cac,_0x5af5a6._0x1e50e0)]});}_0x24bb32[_0x57000a(_0x5af5a6._0x18333b,_0x5af5a6._0x313ba6,0x2b2,0x2a4)]?this[_0x47a73d(0xa9,_0x5af5a6._0x45e81c,0xc7,_0x5af5a6._0x736466)+_0x57000a(_0x5af5a6._0x384ed8,_0x5af5a6._0x3daf8e,_0x5af5a6._0x2cd1fc,_0x5af5a6._0x11e676)]['set'](_0x367fa3['remoteId'],_0x24bb32):this[_0x47a73d(0xfa,_0x5af5a6._0x22599b,_0x5af5a6._0x549876,0xdf)+'SwarmId'][_0x57000a(_0x5af5a6._0x200b21,_0x5af5a6._0x4af0bd,_0x5af5a6._0x1ca8df,_0x5af5a6._0x3a54a8)](_0x367fa3[_0x47a73d(_0x5af5a6._0x180aa0,0xaf,_0x5af5a6._0x9797f2,_0x5af5a6._0x506b36)]);}[_0xb04be9(0x462,0x445,0x481,0x427)+'e'](_0x247d20){const _0x115c5a={_0x490ac0:0x9b,_0x1f74d7:0xc1,_0x162ae0:0xa4,_0x2f2f27:0xa9,_0x142496:0xb4,_0x56867b:0x9f,_0x1553b1:0xe8,_0x47c7bd:0xf3,_0x1f7b63:0xc9,_0x2e2946:0xe7,_0x3ad960:0x101,_0x431e14:0xda,_0x164704:0x10c,_0x8c0931:0xdc,_0x5b3d39:0xeb,_0x5d047e:0x82,_0x5de6ab:0x87,_0x38a189:0xba,_0x3e6f84:0xeb,_0x124725:0x123,_0x5bf161:0xcb,_0x4bd7b7:0x100,_0x55454a:0xac,_0x54e8fa:0x8d,_0x149178:0xc3,_0x34342d:0xdc,_0x39428b:0x12f,_0x4e4df7:0x101,_0x12e6af:0x10b,_0x5bcb35:0xa6,_0x4a5d5a:0x6d,_0x348929:0xac,_0x19f6a7:0xc0,_0x258e19:0xaf,_0x3f7579:0xba,_0x593aca:0xdb,_0x32bc6f:0xba,_0x5c2978:0x105,_0x56b08b:0xf1,_0x51fc21:0x101,_0x537785:0xd7,_0x3570b5:0x109,_0x4551c1:0xf3,_0x4fcbce:0xbe,_0x78785e:0x10a,_0x1b5bc0:0x77,_0x1a8efd:0x8b,_0x3c973c:0x10f,_0xd23474:0x10b,_0x4459b7:0xe3,_0x29e019:0x126,_0x519c6d:0x122,_0x329e4c:0xa3,_0x13c1cc:0xad,_0x2176c4:0x78},_0x613d1f={_0x3ab9e8:0x5,_0x51e88b:0x334,_0x2d2697:0x18b},_0x65a528={_0x5b514c:0x107,_0x200efc:0x15};if(!this[_0x55892c(0xa9,_0x115c5a._0x490ac0,_0x115c5a._0x1f74d7,_0x115c5a._0x162ae0)+'ams']){this[_0x55892c(_0x115c5a._0x2f2f27,0xaf,_0x115c5a._0x142496,_0x115c5a._0x56867b)+_0x48281e(-_0x115c5a._0x1553b1,-_0x115c5a._0x47c7bd,-_0x115c5a._0x1f7b63,-_0x115c5a._0x2e2946)]=[];for(const _0x5f45bd of this[_0x48281e(-0xf2,-_0x115c5a._0x3ad960,-0x124,-_0x115c5a._0x431e14)+_0x55892c(_0x115c5a._0x164704,0xdf,0xdf,_0x115c5a._0x8c0931)][_0x48281e(-_0x115c5a._0x5b3d39,-0xaf,-_0x115c5a._0x5d047e,-0xdb)]()){if(!_0x5f45bd['senders'])continue;_0x5f45bd[_0x48281e(-_0x115c5a._0x5de6ab,-_0x115c5a._0x38a189,-0x97,-_0x115c5a._0x3e6f84)][_0x55892c(0xfb,_0x115c5a._0x124725,_0x115c5a._0x5bf161,_0x115c5a._0x4bd7b7)+'ence']['send']({'key':this[_0x48281e(-0xd0,-_0x115c5a._0x55454a,-_0x115c5a._0x54e8fa,-0xe6)]['keyPair'][_0x55892c(0xe0,_0x115c5a._0x149178,_0x115c5a._0x34342d,0xf5)],'present':!![]});}}function _0x48281e(_0x33a77f,_0x2c1857,_0x5d6faf,_0x387111){return _0xf7b98f(_0x33a77f-_0x65a528._0x5b514c,_0x33a77f,_0x2c1857- -0x450,_0x387111-_0x65a528._0x200efc);}for(const _0xc994b6 of this[_0x48281e(-_0x115c5a._0x39428b,-_0x115c5a._0x4e4df7,-_0x115c5a._0x431e14,-_0x115c5a._0x12e6af)+_0x48281e(-0xbd,-_0x115c5a._0x5bcb35,-_0x115c5a._0x4a5d5a,-_0x115c5a._0x348929)][_0x48281e(-_0x115c5a._0x19f6a7,-_0x115c5a._0x258e19,-_0x115c5a._0x3f7579,-0x76)]()){if(!_0xc994b6['senders'])continue;_0xc994b6[_0x48281e(-_0x115c5a._0x593aca,-_0x115c5a._0x32bc6f,-0xd4,-0xf7)][_0x48281e(-_0x115c5a._0x5c2978,-_0x115c5a._0x56b08b,-_0x115c5a._0x51fc21,-_0x115c5a._0x537785)+_0x48281e(-_0x115c5a._0x3570b5,-_0x115c5a._0x4551c1,-_0x115c5a._0x4fcbce,-_0x115c5a._0x78785e)][_0x55892c(0x9b,_0x115c5a._0x1b5bc0,0xb4,_0x115c5a._0x1a8efd)](_0x247d20[_0x55892c(_0x115c5a._0x3c973c,_0x115c5a._0xd23474,_0x115c5a._0x4459b7,0x13c)]);}function _0x55892c(_0x19e8ca,_0x2bec5c,_0x50e4c1,_0x2b929e){return _0xb04be9(_0x19e8ca-_0x613d1f._0x3ab9e8,_0x19e8ca- -_0x613d1f._0x51e88b,_0x50e4c1-_0x613d1f._0x2d2697,_0x2b929e);}this[_0x48281e(-0x116,-_0x115c5a._0x3570b5,-_0x115c5a._0x29e019,-_0x115c5a._0x519c6d)+'ams']=_0x247d20[_0x48281e(-0x6d,-_0x115c5a._0x329e4c,-_0x115c5a._0x13c1cc,-_0x115c5a._0x2176c4)];}[_0xf7b98f(0x38c,0x32d,0x36b,0x34b)+'ent'](){const _0x799a97={_0xd7b81c:0x27d,_0x391ddd:0x27a,_0x2eb58c:0x57,_0xd4dcb4:0x7b,_0x198e63:0x74,_0x25d393:0x267,_0x4cb591:0x24b,_0x337651:0x61,_0x2a6641:0x5f,_0x5775e0:0x66,_0x33792a:0x80,_0x2dcbc4:0x85,_0x29bef5:0x84,_0x557929:0xb8,_0xf6986b:0x98,_0x583ac7:0x20e,_0x3d1408:0x22e,_0x5b45db:0x241,_0x4e8174:0x255,_0x50782b:0x8c,_0x260283:0xdf,_0x36f8f6:0x8a,_0x2dde0b:0x211,_0x44534e:0x1fd,_0x5eb48e:0x20b,_0xed9183:0x258,_0x2edef7:0x28b,_0xf60c2f:0x2c6,_0x52438e:0x260,_0x4f79a0:0x201,_0x1456b8:0x220,_0x55fb5b:0x234,_0x3ec2f3:0x2ab,_0x33e9f6:0x286,_0x565e53:0x2b8,_0x219d91:0x25e,_0x2e3853:0x269,_0x1e2827:0x275,_0x49dc42:0x256,_0x1f44ff:0x253,_0x2b47a7:0xd5,_0xc8380a:0xc1,_0x58af65:0xb8,_0x2b0ce6:0xc2,_0x34b9cc:0x8a,_0xd190db:0xb1,_0x10bb28:0xb0,_0x47f4e2:0xad,_0x26110b:0x90,_0x3014f0:0xa0,_0x4817c2:0x73,_0x47d877:0x45,_0x1dcd73:0x2a9,_0x1b6517:0x252,_0x328d3f:0x266},_0x4cbaad={_0x211a65:0x1c0,_0x582501:0xba},_0x6c675c={_0x2317ff:0x76,_0x2b5356:0x2e9,_0xbd4ad3:0x148};function _0x2fae9d(_0x17715a,_0x1f0dc2,_0x121f8a,_0x49946d){return _0xf7b98f(_0x17715a-_0x6c675c._0x2317ff,_0x1f0dc2,_0x121f8a- -_0x6c675c._0x2b5356,_0x49946d-_0x6c675c._0xbd4ad3);}if(this[_0x2da2eb(-0x2b9,-_0x799a97._0xd7b81c,-_0x799a97._0x391ddd,-0x29b)+_0x2fae9d(_0x799a97._0x2eb58c,_0x799a97._0xd4dcb4,_0x799a97._0x198e63,0x61)]){this['_localStre'+_0x2da2eb(-0x284,-_0x799a97._0x25d393,-0x279,-_0x799a97._0x4cb591)]=null;for(const _0x421aca of this[_0x2fae9d(_0x799a97._0x337651,_0x799a97._0x2a6641,_0x799a97._0x5775e0,_0x799a97._0x33792a)+'BySwarmId'][_0x2fae9d(_0x799a97._0x2dcbc4,_0x799a97._0x29bef5,_0x799a97._0x557929,_0x799a97._0xf6986b)]()){if(!_0x421aca[_0x2da2eb(-_0x799a97._0x583ac7,-_0x799a97._0x3d1408,-_0x799a97._0x5b45db,-0x237)])continue;_0x421aca[_0x2da2eb(-0x22c,-0x22e,-_0x799a97._0x4e8174,-0x217)][_0x2fae9d(_0x799a97._0x50782b,_0x799a97._0x260283,0xb0,_0x799a97._0x36f8f6)+_0x2da2eb(-_0x799a97._0x2dde0b,-0x227,-_0x799a97._0x44534e,-_0x799a97._0x5eb48e)][_0x2da2eb(-_0x799a97._0xed9183,-_0x799a97._0x2edef7,-_0x799a97._0xf60c2f,-_0x799a97._0x52438e)]({'key':this[_0x2da2eb(-_0x799a97._0x4f79a0,-_0x799a97._0x1456b8,-_0x799a97._0x55fb5b,-0x25c)][_0x2da2eb(-_0x799a97._0x3ec2f3,-_0x799a97._0x33e9f6,-_0x799a97._0x565e53,-_0x799a97._0x219d91)]['publicKey'],'present':![]});}}function _0x2da2eb(_0x13c8da,_0x1b1956,_0x3de6ed,_0x838bd){return _0xf7b98f(_0x13c8da-_0x4cbaad._0x211a65,_0x838bd,_0x1b1956- -0x5c4,_0x838bd-_0x4cbaad._0x582501);}for(const _0x1ec2cd of this[_0x2da2eb(-_0x799a97._0x2e3853,-_0x799a97._0x1e2827,-_0x799a97._0x49dc42,-_0x799a97._0x1f44ff)+_0x2fae9d(0xa3,_0x799a97._0x2b47a7,_0x799a97._0xc8380a,0xa8)][_0x2fae9d(0xae,0xe8,_0x799a97._0x58af65,_0x799a97._0x2b0ce6)]()){if(!_0x1ec2cd[_0x2fae9d(_0x799a97._0x34b9cc,_0x799a97._0xd190db,0xad,0x8f)])continue;_0x1ec2cd[_0x2fae9d(0x7a,_0x799a97._0x10bb28,_0x799a97._0x47f4e2,_0x799a97._0x26110b)]['updateStre'+_0x2fae9d(_0x799a97._0x3014f0,_0x799a97._0x4817c2,_0x799a97._0x198e63,_0x799a97._0x47d877)][_0x2da2eb(-_0x799a97._0x1dcd73,-_0x799a97._0x2edef7,-_0x799a97._0x1b6517,-_0x799a97._0x328d3f)]([]);}}[_0xb04be9(0x3eb,0x402,0x3d2,0x430)+_0xb04be9(0x3c2,0x3f4,0x408,0x3fa)](){const _0x3c11e8={_0x53d5eb:0x487,_0x363f7c:0x460,_0x37d998:0x47a,_0xb6c330:0x45f,_0x316597:0x46c,_0x1919f0:0x47c,_0x20eea8:0x44f,_0x26dde0:0x44,_0x5205ab:0x12,_0x457630:0x1e,_0x482bdf:0x2b,_0xfe2d5e:0x12,_0x203fa8:0x422,_0xec460b:0x42b,_0x24bcbf:0x437},_0x1f850e={_0xb1c433:0x81,_0x55767c:0xca,_0x439e71:0xf5},_0x52b4ac={_0x5507e9:0x2d4,_0x1767d9:0x2a3,_0x43ab4b:0x2f5,_0xfa9e39:0x2a9,_0xfe9648:0x2c1,_0x546851:0x2cb,_0x35ee42:0x3,_0x2bac5d:0x46,_0x48ce88:0x1c,_0x348829:0x13,_0x2953ba:0x2d4,_0x37f187:0x2ef,_0x44892f:0x4,_0x2232c8:0x2e,_0x2d76fb:0x11,_0x11c985:0x2a1,_0x41b404:0x299,_0x335092:0x29f},_0x7ec18c={_0x2bc05f:0x14,_0x4c71fc:0x73};function _0x38eb85(_0x515b5e,_0x19ef3b,_0x4d31d8,_0x43c68c){return _0xb04be9(_0x515b5e-_0x7ec18c._0x2bc05f,_0x43c68c- -0x3e9,_0x4d31d8-_0x7ec18c._0x4c71fc,_0x515b5e);}const _0x3827ee=new Readable({'destroy':_0x4fa560=>{const _0x47c16d={_0x10c9ce:0x129},_0x3021ca={_0x4540c0:0x191};function _0x403db8(_0x43f4d4,_0x2863f2,_0x39926a,_0x1a9ec1){return _0x2b2c(_0x43f4d4-_0x3021ca._0x4540c0,_0x2863f2);}function _0x23a67b(_0x77b67e,_0x12744e,_0x1dc2db,_0x1c6e3c){return _0x2b2c(_0x1c6e3c- -_0x47c16d._0x10c9ce,_0x12744e);}const _0x14c386=this[_0x403db8(_0x52b4ac._0x5507e9,_0x52b4ac._0x1767d9,_0x52b4ac._0x43ab4b,0x2f0)+_0x403db8(_0x52b4ac._0xfa9e39,0x2bf,_0x52b4ac._0xfe9648,_0x52b4ac._0x546851)+'ns'][_0x23a67b(-_0x52b4ac._0x35ee42,_0x52b4ac._0x2bac5d,_0x52b4ac._0x48ce88,_0x52b4ac._0x348829)](_0x3827ee);if(_0x14c386!==-(0x25d3+-0x46d*-0x1+0x2d1*-0xf))this[_0x403db8(_0x52b4ac._0x2953ba,0x2e4,0x2f0,_0x52b4ac._0x37f187)+_0x23a67b(-_0x52b4ac._0x44892f,-_0x52b4ac._0x2232c8,-0x31,-_0x52b4ac._0x2d76fb)+'ns'][_0x403db8(0x266,_0x52b4ac._0x11c985,_0x52b4ac._0x41b404,_0x52b4ac._0x335092)](_0x14c386,0x1780+0x200a+-0x3789);_0x4fa560(null);}});this[_0x3a424b(_0x3c11e8._0x53d5eb,_0x3c11e8._0x363f7c,_0x3c11e8._0x37d998,_0x3c11e8._0xb6c330)+_0x3a424b(_0x3c11e8._0x316597,_0x3c11e8._0x1919f0,_0x3c11e8._0x20eea8,0x415)+'ns'][_0x38eb85(_0x3c11e8._0x26dde0,_0x3c11e8._0x5205ab,0x50,_0x3c11e8._0x457630)](_0x3827ee);function _0x3a424b(_0x1e689d,_0x66d1b5,_0x178b17,_0x45c9b2){return _0xf7b98f(_0x1e689d-_0x1f850e._0xb1c433,_0x66d1b5,_0x178b17-_0x1f850e._0x55767c,_0x45c9b2-_0x1f850e._0x439e71);}const _0x47eaec=this[_0x38eb85(-0x3d,0x0,-_0x3c11e8._0x482bdf,-_0x3c11e8._0xfe2d5e)+'PeerEvents']();for(const _0x57b191 of _0x47eaec){_0x3827ee[_0x3a424b(_0x3c11e8._0x203fa8,_0x3c11e8._0xec460b,0x43b,_0x3c11e8._0x24bcbf)](_0x57b191);}return _0x3827ee;}['getPresent'+_0xf7b98f(0x34e,0x36e,0x374,0x39d)](){const _0x2cc6fc={_0x1ff9da:0x215,_0xd69f41:0x206,_0x252bed:0x1e9,_0x573b34:0xb6,_0x5a0c90:0x96,_0x1a1d72:0xb1,_0x43d860:0x91,_0x93c8e5:0xbc,_0x3537a2:0xe2,_0x574cec:0xc4,_0x2e6a40:0x8f,_0x489c00:0xa0,_0x2449fa:0x98,_0x5bc98b:0x7e,_0x95d6b7:0xa6,_0x38aa6f:0x1fb,_0x3607f4:0x1ec,_0x237e31:0x201,_0x279e79:0x204,_0xe56ccc:0x211,_0x4d6c7d:0x1e8,_0x18ac2c:0x243,_0x53aaec:0x24d,_0x3fa6bb:0x21a,_0x12d158:0x222,_0x41194f:0x21f,_0x4d10aa:0x208,_0x22c065:0x23e,_0x6e5f67:0x247,_0x51f03a:0x212,_0x5c7c60:0x225,_0x33e3e4:0x238,_0x39e432:0x250},_0x1ad915={_0x5dd1d7:0xde,_0x45d722:0x621,_0x42ea7f:0x4f},_0x1bc7ee={_0x73e6df:0x43d,_0x5f3bef:0x190},_0x2520ce=[];for(const _0x1d1ea7 of this['_directPre'+_0x5ed88d(-_0x2cc6fc._0x1ff9da,-0x1e6,-_0x2cc6fc._0xd69f41,-0x1ba)]){_0x2520ce[_0x5ed88d(-_0x2cc6fc._0x252bed,-0x21a,-0x1f9,-0x202)]({'type':PRESENCE_EVENTS[_0x28a075(-0xee,-_0x2cc6fc._0x573b34,-_0x2cc6fc._0x5a0c90,-_0x2cc6fc._0x1a1d72)+'NT'],'swarmId':_0x1d1ea7});}function _0x28a075(_0x29dc99,_0x1054b1,_0x3f444b,_0x1412fb){return _0xf7b98f(_0x29dc99-0x56,_0x1412fb,_0x1054b1- -_0x1bc7ee._0x73e6df,_0x1412fb-_0x1bc7ee._0x5f3bef);}for(const _0x242f61 of this['_relayedPr'+'esenceBySw'+_0x28a075(-_0x2cc6fc._0x43d860,-_0x2cc6fc._0x93c8e5,-_0x2cc6fc._0x3537a2,-_0x2cc6fc._0x43d860)][_0x28a075(-0xd4,-_0x2cc6fc._0x574cec,-_0x2cc6fc._0x2e6a40,-_0x2cc6fc._0x489c00)]()){if(this['_directPre'+_0x28a075(-0x8c,-_0x2cc6fc._0x2449fa,-_0x2cc6fc._0x5bc98b,-_0x2cc6fc._0x95d6b7)][_0x5ed88d(-_0x2cc6fc._0x38aa6f,-_0x2cc6fc._0x3607f4,-_0x2cc6fc._0x237e31,-0x1de)](_0x242f61))continue;_0x2520ce['push']({'type':PRESENCE_EVENTS[_0x5ed88d(-0x20b,-_0x2cc6fc._0x279e79,-0x1f2,-_0x2cc6fc._0xe56ccc)+'NT'],'swarmId':_0x242f61});}for(const [_0x3f88cc,_0x5c6f13]of this['_streamsBy'+_0x5ed88d(-_0x2cc6fc._0x4d6c7d,-0x20c,-_0x2cc6fc._0x18ac2c,-0x231)]){for(const [_0x3a9429,{name:_0x3aad7c,audioMuted:_0x53754d,videoMuted:_0x201ded}]of _0x5c6f13){_0x2520ce[_0x5ed88d(-_0x2cc6fc._0x53aaec,-_0x2cc6fc._0x3fa6bb,-0x1dd,-_0x2cc6fc._0x12d158)]({'type':PRESENCE_EVENTS[_0x5ed88d(-0x206,-_0x2cc6fc._0x237e31,-_0x2cc6fc._0x41194f,-_0x2cc6fc._0x4d10aa)+_0x5ed88d(-_0x2cc6fc._0x22c065,-_0x2cc6fc._0x6e5f67,-0x27b,-_0x2cc6fc._0x51f03a)],'streamName':_0x3aad7c,'swarmId':_0x3f88cc,'streamId':_0x3a9429}),_0x2520ce['push']({'type':PRESENCE_EVENTS['STREAM_STA'+_0x5ed88d(-0x22c,-_0x2cc6fc._0x5c7c60,-_0x2cc6fc._0x33e3e4,-_0x2cc6fc._0x39e432)+'D'],'swarmId':_0x3f88cc,'streamId':_0x3a9429,'audioMuted':_0x53754d,'videoMuted':_0x201ded});}}function _0x5ed88d(_0x208acf,_0x441e68,_0x8b0450,_0x1aaccd){return _0xb04be9(_0x208acf-_0x1ad915._0x5dd1d7,_0x441e68- -_0x1ad915._0x45d722,_0x8b0450-_0x1ad915._0x42ea7f,_0x1aaccd);}return _0x2520ce;}};function sameStatus(_0x562ac8,_0x2268e2){const _0x4a19af={_0xc16e4:0x4ba,_0xd37ab0:0x478,_0x48b7f2:0x4ae,_0xadd01:0x4e8,_0x2fccb3:0x49c},_0x2466a1={_0xfaf13b:0x1dc},_0x4262ab={_0x5403fa:0x1f4,_0x1a8aff:0x1f2};function _0x35a367(_0x5463f6,_0x1cba2f,_0x8c7ab4,_0x3e2908){return _0xf7b98f(_0x5463f6-_0x4262ab._0x5403fa,_0x3e2908,_0x1cba2f- -0xfa,_0x3e2908-_0x4262ab._0x1a8aff);}function _0x64d439(_0x11b871,_0x126ef8,_0x51b21b,_0x572b22){return _0xb04be9(_0x11b871-0x19b,_0x126ef8-0xb5,_0x51b21b-_0x2466a1._0xfaf13b,_0x51b21b);}return _0x562ac8[_0x64d439(0x4c7,0x4ae,_0x4a19af._0xc16e4,0x4d1)]===_0x2268e2[_0x64d439(_0x4a19af._0xd37ab0,_0x4a19af._0x48b7f2,_0x4a19af._0xadd01,_0x4a19af._0x2fccb3)]&&_0x562ac8['videoMuted']===_0x2268e2['videoMuted'];}function _0xb04be9(_0x1f3c31,_0x5a00c3,_0x12b52b,_0x388ba0){return _0x2b2c(_0x5a00c3-0x303,_0x388ba0);}function getMuxer(_0x6ce123){const _0x4745bf={_0x31256e:0x384,_0x5eae44:0x3be,_0x2ff58d:0x3cf,_0x42c112:0x3ec,_0x4566cc:0x29a,_0x343e93:0x286,_0x3a9972:0x249,_0x32aa17:0x3f6,_0x103858:0x3f9,_0x2c9110:0x374,_0x164747:0x3a6,_0x199127:0x3bb,_0x2eaa7c:0x3d4},_0x1af87f={_0x1eacde:0x1a8,_0x3f92b0:0x18,_0x3c6ab0:0x9c},_0x4482fa={_0x1ce00a:0x691,_0x376e43:0x2};let _0x1c3e95=Hypercore[_0x415c2e(_0x4745bf._0x31256e,_0x4745bf._0x5eae44,_0x4745bf._0x2ff58d,_0x4745bf._0x42c112)+_0x4b3971(-0x26d,-_0x4745bf._0x4566cc,-_0x4745bf._0x343e93,-_0x4745bf._0x3a9972)](_0x6ce123);function _0x4b3971(_0x189594,_0x51ef4b,_0x3b0912,_0x3908de){return _0xb04be9(_0x189594-0x1dc,_0x189594- -_0x4482fa._0x1ce00a,_0x3b0912-_0x4482fa._0x376e43,_0x51ef4b);}function _0x415c2e(_0x2f0e79,_0x2b9170,_0x3bb6a8,_0x1d1ca1){return _0xf7b98f(_0x2f0e79-_0x1af87f._0x1eacde,_0x2f0e79,_0x2b9170-_0x1af87f._0x3f92b0,_0x1d1ca1-_0x1af87f._0x3c6ab0);}return!_0x1c3e95&&(Hypercore['createProt'+'ocolStream'](_0x6ce123),_0x1c3e95=Hypercore[_0x415c2e(_0x4745bf._0x32aa17,_0x4745bf._0x5eae44,0x39b,_0x4745bf._0x103858)+_0x415c2e(_0x4745bf._0x2c9110,_0x4745bf._0x164747,_0x4745bf._0x199127,_0x4745bf._0x2eaa7c)](_0x6ce123)),_0x1c3e95;}
1const{Readable:e}=require("streamx"),s=require("hypercore"),t=require("hypercore-id-encoding"),r=require("safety-catch"),o=require("b4a"),{StreamsMessage:n,PeerPresenceMessage:i}=require("../lib/messages"),{PRESENCE_EVENTS:a}=require("../lib/common"),c="keet-call-presence/v3";function d(e,s){return e.audioMuted===s.audioMuted&&e.videoMuted===s.videoMuted}function l(e){let t=s.getProtocolMuxer(e);return t||(s.createProtocolStream(e),t=s.getProtocolMuxer(e)),t}module.exports=class{constructor(e,s,r){this.server=e,this.swarm=e.swarm,this.onerror=e.onerror,this.firewall=r,this.activeFirewall=null,this.callId=s,this.closed=!1,this.topic=t.decode(s),this._description={protocol:c,id:this.topic},this._directPresenceIds=new Set,this._relayedPresenceBySwarmId=new Map,this._streamsBySwarmId=new Map,this._localStreams=null,this._activated=!1,this._protocolsBySwarmId=new Map,this._presenceSubscriptions=[];for(const e of this.swarm.connections)this.addConnection(e);this.server.shouldActivate(this.callId)&&this.activate()}close(){for(const{connection:e,channel:s}of this._protocolsBySwarmId.values()){const t=l(e);t&&t.unpair(this._description),s&&s.close()}this._protocolsBySwarmId.clear(),this.closed=!0}_bumpSubscriptions(e){for(const s of this._presenceSubscriptions)s.push(e)}addConnection(e){const s=l(e),o=e.remotePublicKey,n=t.encode(o),i={connection:e,remotePublicKey:o,remoteId:n,muxer:s,channel:null,senders:null};this._protocolsBySwarmId.set(n,i),s.pair(this._description,()=>this._createChannel(e)),this._activated&&this._createChannel(e).catch(r)}removeConnection(e){const s=t.encode(e.remotePublicKey);this._protocolsBySwarmId.delete(s)}activate(){if(!this._activated){this._activated=!0;for(const{connection:e}of this._protocolsBySwarmId.values())this._createChannel(e).catch(r)}}deactivate(){if(this._activated){this._activated=!1,this.setNotPresent();for(const e of this._protocolsBySwarmId.values())e.channel&&e.channel.close(),e.channel=null,e.senders=null}}async _createChannel(e){const s=t.encode(e.remotePublicKey);if(!this.activeFirewall&&this.firewall&&(this.activeFirewall=this.firewall(this.callId)),this.activeFirewall&&!await this.activeFirewall.allow(e.remotePublicKey))return;const r=this._protocolsBySwarmId.get(s);if(!r)return;const o=l(e).createChannel({id:this.topic,protocol:c,onopen:()=>this._onChannelOpen(r),onclose:()=>this._onChannelClose(r),messages:[{encoding:i,onmessage:e=>this._onPresenceUpdate(r,!1,e)},{encoding:n,onmessage:e=>this._onStreamsUpdate(r,e)}]});null!==o&&(r.channel=o,r.senders={updatePresence:r.channel.messages[0],updateStreams:r.channel.messages[1]},r.channel.open())}_onChannelOpen(e){for(const s of this._directPresenceIds)e.senders.updatePresence.send({key:t.decode(s),present:!0});this._localStreams&&(e.senders.updatePresence.send({key:t.decode(this.swarm.keyPair.publicKey),present:!0}),e.senders.updateStreams.send(this._localStreams))}_onChannelClose(e){this._onStreamsUpdate(e,[]),this._onPresenceUpdate(e,!0,{key:e.remotePublicKey,present:!1}),e.channel=null,e.senders=null}_onPresenceUpdate(e,s,{key:r,present:n}){if(o.equals(r,this.swarm.keyPair.publicKey))return;const i=t.encode(r),a=e.remoteId,c=i===a;n?this._onPeerPresent(a,i,c):this._onPeerNotPresent(a,i,c,s)}_onPeerPresent(e,s,r){const o=this._directPresenceIds.has(s),n=this._relayedPresenceBySwarmId.has(s);if(r)this._directPresenceIds.add(e),this._relayedPresenceBySwarmId.delete(e);else{let t=this._relayedPresenceBySwarmId.get(s);t||(t=new Set,this._relayedPresenceBySwarmId.set(s,t)),t.add(e)}if(r&&!o)for(const s of this._protocolsBySwarmId.values())s.senders&&s.remoteId!==e&&s.senders.updatePresence.send({key:t.decode(e),present:!0});o||n||this._bumpSubscriptions({type:a.PEER_PRESENT,swarmId:s})}_removeRelayedPeer(e,s){const t=this._relayedPresenceBySwarmId.get(s);return!!t&&(t.delete(e),!t.size&&(this._relayedPresenceBySwarmId.delete(s),!this._directPresenceIds.has(s)))}_onPeerNotPresent(e,s,r,o){const n=new Set;if(r){if(n.add(e),this._directPresenceIds.delete(e),this._relayedPresenceBySwarmId.delete(e),o)for(const s of this._relayedPresenceBySwarmId.keys())this._removeRelayedPeer(e,s)&&n.add(s);for(const s of this._protocolsBySwarmId.values())s.senders&&s.remoteId!==e&&s.senders.updatePresence.send({key:t.decode(e),present:!1})}else this._removeRelayedPeer(e,s)&&n.add(s);const i=0===this._directPresenceIds.size&&0===this._relayedPresenceBySwarmId.size;!this._activated&&this.firewall&&this._firewallSubscription&&i&&(this._firewallSubscription.destroy(),this._firewallSubscription=null);for(const e of n)this._bumpSubscriptions({type:a.PEER_NOT_PRESENT,swarmId:e})}_onStreamsUpdate(e,s){const t=this._streamsBySwarmId.get(e.remoteId),r=new Map;for(const e of s)r.set(e.id,e);if(t)for(const[s,o]of t)r.has(s)||this._bumpSubscriptions({type:a.STREAM_UNAVAILABLE,swarmId:e.remoteId,streamId:o.id,streamName:o.name});for(const[s,o]of r)t&&t.has(s)||this._bumpSubscriptions({type:a.STREAM_AVAILABLE,swarmId:e.remoteId,streamId:o.id,streamName:o.name});for(const[s,o]of r){const r=t&&t.get(s);r&&d(r,o)||this._bumpSubscriptions({type:a.STREAM_STATUS_CHANGED,swarmId:e.remoteId,streamId:o.id,audioMuted:o.audioMuted,videoMuted:o.videoMuted})}r.size?this._streamsBySwarmId.set(e.remoteId,r):this._streamsBySwarmId.delete(e.remoteId)}setPresence(e){if(!this._localStreams){this._localStreams=[];for(const e of this._protocolsBySwarmId.values())e.senders&&e.senders.updatePresence.send({key:this.swarm.keyPair.publicKey,present:!0})}for(const s of this._protocolsBySwarmId.values())s.senders&&s.senders.updateStreams.send(e.streams);this._localStreams=e.streams}setNotPresent(){if(this._localStreams){this._localStreams=null;for(const e of this._protocolsBySwarmId.values())e.senders&&e.senders.updatePresence.send({key:this.swarm.keyPair.publicKey,present:!1})}for(const e of this._protocolsBySwarmId.values())e.senders&&e.senders.updateStreams.send([])}subscribePresence(){const s=new e({destroy:e=>{const t=this._presenceSubscriptions.indexOf(s);-1!==t&&this._presenceSubscriptions.splice(t,1),e(null)}});this._presenceSubscriptions.push(s);const t=this.getPresentPeerEvents();for(const e of t)s.push(e);return s}getPresentPeerEvents(){const e=[];for(const s of this._directPresenceIds)e.push({type:a.PEER_PRESENT,swarmId:s});for(const s of this._relayedPresenceBySwarmId.keys())this._directPresenceIds.has(s)||e.push({type:a.PEER_PRESENT,swarmId:s});for(const[s,t]of this._streamsBySwarmId)for(const[r,{name:o,audioMuted:n,videoMuted:i}]of t)e.push({type:a.STREAM_AVAILABLE,streamName:o,swarmId:s,streamId:r}),e.push({type:a.STREAM_STATUS_CHANGED,swarmId:s,streamId:r,audioMuted:n,videoMuted:i});return e}};
@holepunchto/keet-call/server/webrtc.js +1 -1
……@@ -1 +1 @@
1function _0x3c8757(_0xbd9fba,_0x45e09a,_0x44b338,_0x39e79f){const _0x230394={_0x9faf47:0x14c};return _0xe896(_0x44b338- -_0x230394._0x9faf47,_0x39e79f);}(function(_0xec3cff,_0x17f7fe){const _0x28eb74={_0x122b8f:0xfe,_0x2a623b:0xf2,_0x3d6cf4:0x1f7,_0x2761c6:0x1e5,_0x113045:0x1f5,_0x3966c4:0x181,_0xd2994a:0x1a5,_0x341167:0x1a3,_0x4311cd:0x1a8,_0x53aea1:0x1bf,_0x301dd0:0x19f,_0x2e4e1b:0x1c2,_0x1fb77b:0x1c4,_0x20369f:0x1a4,_0x2e304:0x1d3,_0x5c065a:0x1e9,_0x3a11a2:0x1ce,_0x5e2c5a:0x110,_0x2c7e34:0xf3,_0x1ba038:0xb7,_0xfb8cd3:0xec,_0x40655c:0xd8,_0x58f1d5:0x1df,_0x5c47a7:0x129,_0x474a10:0xeb,_0x27b330:0x113},_0x1560f2={_0x1a7654:0x1ba},_0x4c2cce={_0x14e1ba:0x105},_0x8a3be1=_0xec3cff();function _0x3d2f0d(_0x133d46,_0x3b9eaf,_0x417b50,_0x5dbcbc){return _0xe896(_0x417b50-_0x4c2cce._0x14e1ba,_0x133d46);}function _0x879db3(_0x4a9848,_0x1d7a8e,_0x3b1d3b,_0x4bc2c2){return _0xe896(_0x4bc2c2- -_0x1560f2._0x1a7654,_0x1d7a8e);}while(!![]){try{const _0x318872=parseInt(_0x879db3(-_0x28eb74._0x122b8f,-_0x28eb74._0x122b8f,-0x10d,-_0x28eb74._0x2a623b))/(0x1*-0x111a+0x2d9*0x3+-0x8*-0x112)*(parseInt(_0x3d2f0d(_0x28eb74._0x3d6cf4,_0x28eb74._0x2761c6,0x1db,_0x28eb74._0x113045))/(-0xbd6+-0x42d*-0x3+-0xaf))+-parseInt(_0x3d2f0d(_0x28eb74._0x3966c4,_0x28eb74._0xd2994a,_0x28eb74._0x341167,0x1ad))/(-0x1d6+-0x1f57+-0x2*-0x1098)+parseInt(_0x3d2f0d(_0x28eb74._0x4311cd,0x1b1,_0x28eb74._0x53aea1,_0x28eb74._0x301dd0))/(-0x1*-0x2043+-0x329*0x8+-0x6f7*0x1)*(-parseInt(_0x3d2f0d(0x19e,_0x28eb74._0x2e4e1b,_0x28eb74._0x1fb77b,_0x28eb74._0x20369f))/(-0x2479*0x1+0x184*0x4+0x1e6e))+parseInt(_0x3d2f0d(0x1ed,_0x28eb74._0x2e304,_0x28eb74._0x5c065a,_0x28eb74._0x3a11a2))/(-0x1363+-0x1*0x17c9+0x3*0xe66)*(parseInt(_0x879db3(-_0x28eb74._0x5e2c5a,-0x115,-0x108,-_0x28eb74._0x2c7e34))/(0x6be+0x1*0x43+-0x6fa))+-parseInt(_0x879db3(-_0x28eb74._0x1ba038,-_0x28eb74._0xfb8cd3,-0xf7,-_0x28eb74._0x40655c))/(0x32a+-0x1*0xbd5+0x8b3)*(-parseInt(_0x3d2f0d(0x1c3,0x1bb,_0x28eb74._0x3a11a2,_0x28eb74._0x58f1d5))/(0x5*-0x30+-0xb32+-0xc2b*-0x1))+-parseInt(_0x879db3(-0xff,-_0x28eb74._0x5c47a7,-_0x28eb74._0x474a10,-_0x28eb74._0x27b330))/(-0x2*-0xa82+0x61*-0x1+-0x1499)+-parseInt(_0x3d2f0d(0x1e3,0x1db,0x1cb,0x1d9))/(0x10d*-0x17+-0xc8*-0x25+-0x1*0x4b2);if(_0x318872===_0x17f7fe)break;else _0x8a3be1['push'](_0x8a3be1['shift']());}catch(_0x2f9bf4){_0x8a3be1['push'](_0x8a3be1['shift']());}}}(_0x3ee0,-0xc2*-0x1d76+0x35785+-0xd3e73*0x1));const _0x8d2147=(function(){let _0x930db6=!![];return function(_0x5eb655,_0x599888){const _0xd51145={_0x532305:0x104,_0x1e462a:0xf2},_0x2c49f5=_0x930db6?function(){const _0x324b13={_0x54ba87:0x5a};function _0x571485(_0x47253e,_0x45c178,_0x2fae4b,_0x4ac809){return _0xe896(_0x47253e-_0x324b13._0x54ba87,_0x45c178);}if(_0x599888){const _0x3cba4a=_0x599888[_0x571485(0x105,0x113,_0xd51145._0x532305,_0xd51145._0x1e462a)](_0x5eb655,arguments);return _0x599888=null,_0x3cba4a;}}:function(){};return _0x930db6=![],_0x2c49f5;};}()),_0x3d7581=_0x8d2147(this,function(){const _0x4c2d08={_0x116826:0x151,_0x286486:0x177,_0x5c79e1:0x165,_0x46726e:0x136,_0x4c01ff:0x109,_0x5cbe8b:0x127,_0x290444:0x145,_0x25538c:0x191,_0x32dacd:0x151,_0x4a34fd:0x158,_0xab8427:0x13a,_0x46e43d:0x11d,_0x5506d1:0x11a,_0xe08ab2:0x12c,_0x1e11d5:0x13a,_0x5c401a:0x16d},_0x4f54d3={_0x4b4050:0x7f},_0x170362={_0x19615a:0x20f};function _0xdf8e08(_0x16975c,_0x9150e9,_0x36145a,_0x550fdf){return _0xe896(_0x550fdf- -_0x170362._0x19615a,_0x36145a);}function _0x12988d(_0xbc02df,_0x3f0adf,_0x329828,_0x57f9a6){return _0xe896(_0xbc02df-_0x4f54d3._0x4b4050,_0x57f9a6);}return _0x3d7581['toString']()['search'](_0x12988d(_0x4c2d08._0x116826,_0x4c2d08._0x286486,_0x4c2d08._0x5c79e1,_0x4c2d08._0x46726e)+'+$')[_0x12988d(0x12e,_0x4c2d08._0x4c01ff,_0x4c2d08._0x5cbe8b,_0x4c2d08._0x290444)]()[_0xdf8e08(-_0x4c2d08._0x25538c,-_0x4c2d08._0x32dacd,-_0x4c2d08._0x4a34fd,-0x16c)+'r'](_0x3d7581)[_0xdf8e08(-_0x4c2d08._0xab8427,-_0x4c2d08._0x46e43d,-_0x4c2d08._0x5506d1,-_0x4c2d08._0xe08ab2)](_0x12988d(_0x4c2d08._0x32dacd,_0x4c2d08._0x1e11d5,_0x4c2d08._0x5c401a,0x138)+'+$');});_0x3d7581();function _0xe896(_0x3ee022,_0xe8962a){const _0x29f03e=_0x3ee0();return _0xe896=function(_0x2fb54a,_0x427ea7){_0x2fb54a=_0x2fb54a-(-0x35a+0xaa4+-0x6b7);let _0x10a45d=_0x29f03e[_0x2fb54a];return _0x10a45d;},_0xe896(_0x3ee022,_0xe8962a);}const {EventEmitter}=require('events'),safetyCatch=require('safety-catch'),Hypercore=require('hypercore'),HypercoreId=require('hypercore-id-encoding');function _0x4c71ed(_0x8c9834,_0x18f900,_0x2e21d5,_0x2641b9){const _0x2a0e31={_0x514523:0x3a6};return _0xe896(_0x18f900-_0x2a0e31._0x514523,_0x2641b9);}const {HandshakeMessage,SignalMessage}=require('../lib/messages'),LOCALHOST=_0x4c71ed(0x461,0x45d,0x456,0x43e),PROTOCOL_NAME=_0x3c8757(-0x7c,-0x67,-0x89,-0x8d)+_0x3c8757(-0x9c,-0x53,-0x74,-0x9c);function _0x3ee0(){const _0x57e9bc=['7827464STWQiX','search','752046shWWqP','channel-op','error','unshift','alData','port','registerPr','_listeners','_proxy','Close','closed','stream','_onsignal','3738000oJJIdl','handleRawS','trySend','rawMuxer','callId','constructo','_muxer','nel','signal','4119270xYhIst','_onChannel','pop','Proxy','apply','close','_sendBuffe','_muxerInfo','toString','createChan','localAlias','connection','_createCha','createLoca','ocolStream','nnel','127.0.0.1','host','length','4CmVluC','Open','_senders','remoteAlia','oxy','358855XhTitl','unpair','_handleLoc','_rinfo','keet-webrt','message','emit','7575183hAMloC','35GtYSYu','61KutTJI','9XgCcri','send','catch','unregister','ose','getProtoco','_channel','channelOpe','createProt','(((.+)+)+)','_openProxy','lMuxer','open','53358uIKIBv','_recvBuffe','c/v1','lAlias','treamData','ERR\x20HERE:','sendSignal','bind','_onerror','ned','messages','decode'];_0x3ee0=function(){return _0x57e9bc;};return _0x3ee0();}module['exports']=class KeetWebRTCProxy extends EventEmitter{constructor(_0xd989d5,_0x132c20,_0x538434,_0xf4c65c={}){const _0x3c8833={_0x515989:0x2ab,_0x93ab05:0x2a8,_0x31d240:0x1be,_0x5229e8:0x1bb,_0x5a2bf4:0x1d4,_0x1174f6:0x1ab,_0x4150ae:0x1da,_0x480924:0x1b3,_0x3c7ff0:0x1da,_0x355e2f:0x1b6,_0x58e63e:0x260,_0x274ab9:0x26d,_0x55f915:0x243,_0x33a6b0:0x27c,_0x315b97:0x284,_0x32afdd:0x281,_0x3d9db5:0x28f,_0x3c20a1:0x28a,_0xfdd927:0x2b4,_0x14b589:0x2ac,_0x1d1b94:0x1a0,_0x250bf6:0x1d3,_0x61c2e7:0x1d7,_0x2af3c3:0x27f,_0x5b4242:0x264,_0x13f3b9:0x286,_0x5ba166:0x285,_0x4cbbe8:0x27c,_0x3af130:0x255,_0x4aa966:0x297,_0x3878db:0x19b,_0x4b1b28:0x187,_0x24ac65:0x19c,_0x51256f:0x1c4,_0x586af0:0x273,_0x75b58b:0x276,_0x9d5897:0x275,_0x3d54d2:0x26b,_0x1c2d4e:0x297,_0x465f24:0x2a0,_0x1ebe9a:0x2c1,_0x58b91a:0x252,_0x3168b6:0x256,_0x22266d:0x26d,_0x22e82d:0x231,_0x5ad406:0x259,_0x1e77f4:0x283,_0x3aa700:0x29d,_0xfe4011:0x2a0,_0x45f354:0x294,_0x4e0896:0x298,_0xcb0f7:0x2bc,_0xf377c1:0x28d,_0x575cd6:0x290,_0x1200b8:0x28c,_0x1ed6b4:0x2ad,_0x5003e8:0x298,_0x14555d:0x265,_0x3bf66a:0x262,_0x2bb560:0x27e,_0x47f667:0x245,_0x2eda4b:0x25c,_0x3e2dd2:0x261,_0x5b3df1:0x235,_0x34bfb8:0x294,_0x2ae408:0x294,_0x3b3ba9:0x2ba,_0x53f901:0x29c,_0x53d0c3:0x28b,_0x17864c:0x1ce,_0x157599:0x1d9,_0x44de04:0x25f,_0x206d29:0x26b,_0x17a1c1:0x250,_0x29e1c4:0x238,_0x295f50:0x1cd,_0x1182b6:0x1cc,_0x5ee644:0x1c0,_0x224266:0x1af,_0x296064:0x28c,_0x11bfdd:0x277,_0x259253:0x291,_0x9f8bdf:0x1b6,_0x4584af:0x1a7,_0x25fe30:0x180,_0x5df543:0x1ae,_0x486188:0x1a1,_0x1086e:0x1d5,_0x58c4ee:0x1b9,_0x56eb8f:0x1d9,_0x1c9e19:0x1d7,_0xe35a52:0x274,_0xc2727d:0x276,_0x3e33c1:0x279,_0x56f8cb:0x26f,_0x4d8323:0x282,_0x2faced:0x267,_0x14da2f:0x26f,_0x2e8717:0x1d1,_0x3afecf:0x1ac,_0x106d8f:0x1dc,_0x2e310a:0x28c,_0x4944e7:0x2a4,_0x524458:0x26f,_0x5a2115:0x279,_0x11d84f:0x2a8,_0x56bcd5:0x254,_0x4128fc:0x294,_0x18f5b9:0x271,_0x3568e8:0x1a0,_0x21e373:0x1a2,_0x291dbc:0x18e},_0x1591a2={_0x448858:0x16f,_0x2c70bf:0x61b,_0x199fb7:0x88},_0x4f7cf4={_0x132db2:0x1bf,_0x2259b8:0x106};super();const {onerror:onerror=console['error'],onsignal:_0x108014}=_0xf4c65c;this[_0x6a1a86(-0x28e,-_0x3c8833._0x515989,-0x26a,-_0x3c8833._0x93ab05)]=_0xd989d5,this[_0x41e339(-_0x3c8833._0x31d240,-_0x3c8833._0x5229e8,-_0x3c8833._0x5a2bf4,-_0x3c8833._0x1174f6)]=_0x132c20,this[_0x41e339(-_0x3c8833._0x4150ae,-_0x3c8833._0x480924,-_0x3c8833._0x3c7ff0,-_0x3c8833._0x355e2f)]=![],this['proxyPort']=0x3b9*-0x5+0x2297+-0xffa*0x1,this[_0x6a1a86(-_0x3c8833._0x58e63e,-_0x3c8833._0x274ab9,-_0x3c8833._0x55f915,-_0x3c8833._0x33a6b0)+'ned']=![],this[_0x6a1a86(-0x294,-_0x3c8833._0x315b97,-_0x3c8833._0x32afdd,-0x274)]=this[_0x6a1a86(-_0x3c8833._0x3d9db5,-_0x3c8833._0x3c20a1,-_0x3c8833._0xfdd927,-_0x3c8833._0x14b589)][_0x41e339(-_0x3c8833._0x1d1b94,-_0x3c8833._0x250bf6,-0x1c3,-_0x3c8833._0x61c2e7)],this[_0x6a1a86(-_0x3c8833._0x2af3c3,-_0x3c8833._0x5b4242,-_0x3c8833._0x13f3b9,-_0x3c8833._0x5ba166)]=this['rawMuxer'][_0x6a1a86(-_0x3c8833._0x4cbbe8,-_0x3c8833._0x3af130,-_0x3c8833._0x4aa966,-0x27a)+_0x41e339(-_0x3c8833._0x3878db,-_0x3c8833._0x4b1b28,-_0x3c8833._0x24ac65,-_0x3c8833._0x51256f)](),this[_0x6a1a86(-_0x3c8833._0x586af0,-_0x3c8833._0x75b58b,-_0x3c8833._0x9d5897,-_0x3c8833._0x3d54d2)+'s']=-(0x22ed*-0x1+0x1*0x54a+0x1da4),this[_0x6a1a86(-_0x3c8833._0x1c2d4e,-_0x3c8833._0x465f24,-_0x3c8833._0x1ebe9a,-0x2c1)]=_0x538434,this[_0x6a1a86(-_0x3c8833._0x58b91a,-_0x3c8833._0x3168b6,-_0x3c8833._0x22266d,-_0x3c8833._0x22e82d)]=onerror,this['_onsignal']=_0x108014,this[_0x6a1a86(-0x26e,-_0x3c8833._0x5ad406,-0x274,-0x291)]=null;function _0x6a1a86(_0x39f1db,_0x400f83,_0x2da607,_0x54b693){return _0x4c71ed(_0x39f1db-_0x4f7cf4._0x132db2,_0x39f1db- -0x6d6,_0x2da607-_0x4f7cf4._0x2259b8,_0x2da607);}function _0x41e339(_0x19e557,_0xca20f1,_0x3b0421,_0xa729ef){return _0x4c71ed(_0x19e557-_0x1591a2._0x448858,_0x3b0421- -_0x1591a2._0x2c70bf,_0x3b0421-_0x1591a2._0x199fb7,_0xca20f1);}this[_0x6a1a86(-_0x3c8833._0x1e77f4,-_0x3c8833._0x3aa700,-_0x3c8833._0xfe4011,-_0x3c8833._0x45f354)+'r']=[],this['_recvBuffe'+'r']=[],this[_0x6a1a86(-_0x3c8833._0x4e0896,-_0x3c8833._0xcb0f7,-_0x3c8833._0xf377c1,-_0x3c8833._0x575cd6)]=[],this[_0x6a1a86(-_0x3c8833._0x1200b8,-_0x3c8833._0x1ed6b4,-_0x3c8833._0x5003e8,-_0x3c8833._0x14555d)]=Hypercore[_0x6a1a86(-_0x3c8833._0x3bf66a,-_0x3c8833._0x2bb560,-0x26c,-_0x3c8833._0x47f667)+_0x6a1a86(-_0x3c8833._0x2eda4b,-0x23d,-_0x3c8833._0x3e2dd2,-_0x3c8833._0x5b3df1)](this[_0x6a1a86(-_0x3c8833._0x34bfb8,-_0x3c8833._0x2ae408,-_0x3c8833._0x3b3ba9,-_0x3c8833._0x93ab05)]),!this[_0x6a1a86(-_0x3c8833._0x1200b8,-_0x3c8833._0x53f901,-0x2b3,-_0x3c8833._0x53d0c3)]&&(this[_0x41e339(-_0x3c8833._0x17864c,-0x1d5,-_0x3c8833._0x157599,-0x1e6)]=Hypercore[_0x6a1a86(-_0x3c8833._0x44de04,-_0x3c8833._0x206d29,-_0x3c8833._0x17a1c1,-_0x3c8833._0x29e1c4)+_0x41e339(-_0x3c8833._0x295f50,-_0x3c8833._0x1182b6,-_0x3c8833._0x5ee644,-_0x3c8833._0x224266)](this['stream']),this[_0x6a1a86(-_0x3c8833._0x296064,-_0x3c8833._0x11bfdd,-_0x3c8833._0x259253,-0x273)]=Hypercore[_0x41e339(-_0x3c8833._0x9f8bdf,-0x183,-_0x3c8833._0x4584af,-_0x3c8833._0x25fe30)+_0x41e339(-_0x3c8833._0x5df543,-0x195,-_0x3c8833._0x486188,-0x198)](this[_0x41e339(-_0x3c8833._0x1086e,-_0x3c8833._0x58c4ee,-_0x3c8833._0x56eb8f,-_0x3c8833._0x1c9e19)])),this['_channel']=null,this[_0x6a1a86(-_0x3c8833._0xe35a52,-_0x3c8833._0xc2727d,-_0x3c8833._0x3e33c1,-_0x3c8833._0x56f8cb)]=null,this[_0x6a1a86(-_0x3c8833._0x4d8323,-0x263,-_0x3c8833._0x2faced,-_0x3c8833._0x14da2f)]={'protocol':PROTOCOL_NAME,'id':HypercoreId['decode'](this[_0x41e339(-_0x3c8833._0x2e8717,-_0x3c8833._0x3afecf,-_0x3c8833._0x250bf6,-_0x3c8833._0x106d8f)])},this[_0x6a1a86(-_0x3c8833._0x2e310a,-_0x3c8833._0x4944e7,-0x26b,-_0x3c8833._0x524458)]['pair'](this[_0x6a1a86(-_0x3c8833._0x4d8323,-0x27a,-_0x3c8833._0x5a2115,-_0x3c8833._0x11d84f)],()=>this[_0x41e339(-0x1a1,-0x1d8,-0x1c2,-0x1ab)+_0x41e339(-0x1b2,-0x1cd,-0x1bf,-0x19c)]()),this[_0x6a1a86(-0x27d,-_0x3c8833._0x56bcd5,-_0x3c8833._0x4128fc,-_0x3c8833._0x18f5b9)+'nnel'](),this[_0x41e339(-_0x3c8833._0x3568e8,-0x1c3,-_0x3c8833._0x21e373,-_0x3c8833._0x291dbc)]();}[_0x4c71ed(0x45e,0x479,0x45f,0x470)](){const _0x5c6d5f={_0x5de30e:0x1,_0x100838:0x2,_0x58f863:0x2a,_0x2171e0:0x1d,_0x46916d:0x29,_0xc0c15c:0x2a,_0x548710:0x39,_0x2cec54:0x23c,_0x4132a9:0x247,_0x1bf5a9:0x5,_0x3967e1:0x3,_0x515ce0:0x43,_0x3c7b08:0x48,_0x12980b:0x48,_0x2cef57:0x25,_0x4e09b5:0x19,_0x2b101f:0x4,_0x263a9a:0xc,_0x1c5310:0x1f,_0x730247:0x1b},_0x29695b={_0x289860:0x138},_0x1cf632={_0x2f8a21:0x440,_0x13d6df:0x1ad};this[_0x33882c(-_0x5c6d5f._0x5de30e,_0x5c6d5f._0x100838,-_0x5c6d5f._0x58f863,-_0x5c6d5f._0x2171e0)][_0x33882c(0x43,0x55,0x61,_0x5c6d5f._0x46916d)](-0x200b+-0x1b7*-0x11+0x5*0x94,LOCALHOST),this['_proxy']['on'](_0x33882c(_0x5c6d5f._0xc0c15c,_0x5c6d5f._0x548710,0x37,_0x5c6d5f._0x5de30e),this[_0x3b8b1b(0x25b,0x23b,_0x5c6d5f._0x2cec54,_0x5c6d5f._0x4132a9)+_0x33882c(-_0x5c6d5f._0x1bf5a9,-0xb,-_0x5c6d5f._0x3967e1,-0x15)][_0x33882c(_0x5c6d5f._0x515ce0,0x3b,_0x5c6d5f._0x3c7b08,_0x5c6d5f._0x12980b)](this));function _0x33882c(_0x535184,_0x2268e9,_0x595dc2,_0x469497){return _0x4c71ed(_0x535184-0x53,_0x535184- -_0x1cf632._0x2f8a21,_0x595dc2-_0x1cf632._0x13d6df,_0x469497);}function _0x3b8b1b(_0x1ca832,_0x19383f,_0xfb0e6c,_0x71c59d){return _0x4c71ed(_0x1ca832-0x81,_0xfb0e6c- -0x22b,_0xfb0e6c-_0x29695b._0x289860,_0x1ca832);}this['proxyPort']=this[_0x33882c(-_0x5c6d5f._0x5de30e,-_0x5c6d5f._0x2cef57,-_0x5c6d5f._0x4e09b5,0x23)]['address']()[_0x33882c(-_0x5c6d5f._0x2b101f,-_0x5c6d5f._0x263a9a,-_0x5c6d5f._0x1c5310,-_0x5c6d5f._0x730247)];}[_0x3c8757(-0x91,-0xb9,-0xa0,-0x85)](){const _0x41a93d={_0x5a679a:0x2c8,_0x5e3afd:0x2eb,_0x50e69c:0x2f2,_0x4ba040:0x2a5,_0x5850eb:0x64,_0x334b62:0x4f,_0x40188a:0x53,_0x2e037a:0x8e,_0x50518a:0x2b7,_0x28d859:0x2b8,_0x3246d6:0x29b,_0x5f4188:0x2a9,_0x241eb9:0x9a,_0x1e4651:0xa7,_0x8537e4:0x87,_0x2f64d5:0x9a,_0x43d0ad:0xa2,_0x1763a6:0x298,_0x31335f:0x27d,_0x21e5d0:0x2c2,_0x330217:0x2a3,_0x430782:0x2ab,_0x1184ec:0x288,_0x3d8eda:0x85,_0x3abd60:0xa1,_0x13e23d:0x87,_0x23c230:0x7d},_0x36c744={_0xa6baa8:0xa8,_0xe70655:0x4d9,_0x52294a:0x8a},_0x2357e0={_0x1cebe1:0x709,_0x2b71bf:0x2d};function _0x55912c(_0x4b8555,_0x34593f,_0x2437f4,_0x1f31d4){return _0x4c71ed(_0x4b8555-0xdc,_0x4b8555- -_0x2357e0._0x1cebe1,_0x2437f4-_0x2357e0._0x2b71bf,_0x34593f);}if(this['closed'])return;this[_0x55912c(-_0x41a93d._0x5a679a,-_0x41a93d._0x5e3afd,-_0x41a93d._0x50e69c,-_0x41a93d._0x4ba040)]=!![],this[_0x297243(-_0x41a93d._0x5850eb,-_0x41a93d._0x334b62,-_0x41a93d._0x40188a,-_0x41a93d._0x2e037a)][_0x55912c(-_0x41a93d._0x50518a,-_0x41a93d._0x28d859,-_0x41a93d._0x3246d6,-_0x41a93d._0x5f4188)]();function _0x297243(_0x232116,_0x528f49,_0x30c4ec,_0x1bd13b){return _0x4c71ed(_0x232116-_0x36c744._0xa6baa8,_0x232116- -_0x36c744._0xe70655,_0x30c4ec-_0x36c744._0x52294a,_0x528f49);}this[_0x297243(-_0x41a93d._0x241eb9,-0x89,-0x80,-_0x41a93d._0x1e4651)][_0x297243(-_0x41a93d._0x8537e4,-0x89,-_0x41a93d._0x2f64d5,-_0x41a93d._0x43d0ad)]()[_0x55912c(-_0x41a93d._0x1763a6,-0x2b4,-_0x41a93d._0x31335f,-_0x41a93d._0x21e5d0)](safetyCatch),this['_muxer'][_0x55912c(-_0x41a93d._0x330217,-_0x41a93d._0x430782,-_0x41a93d._0x1184ec,-0x2a2)](this[_0x297243(-_0x41a93d._0x3d8eda,-_0x41a93d._0x3abd60,-_0x41a93d._0x13e23d,-_0x41a93d._0x23c230)]);}[_0x4c71ed(0x467,0x459,0x438,0x44b)+_0x3c8757(-0x6d,-0x75,-0x96,-0x6e)](){const _0xf9845e={_0xc113db:0x312,_0x61df65:0x2ea,_0x25ca7:0x1cb,_0x824d47:0x1dd,_0x28721e:0x1d0,_0x2d2e0f:0x1ad,_0x504bb4:0x1d8,_0x33ff37:0x30a,_0xcfc2df:0x304,_0x3b83f4:0x1e1,_0x4e0e9f:0x1c4,_0x5ee936:0x1f9,_0x179f06:0x1d9,_0x562e6b:0x330,_0x512262:0x33f,_0x23f638:0x32c,_0x3a27ea:0x221,_0x285fcb:0x22b,_0x1ef47f:0x226,_0xe809be:0x2f2,_0x4cc378:0x304,_0x3ded39:0x2da,_0x3e8175:0x1f5,_0x5811e6:0x1f7,_0x43c845:0x201,_0x1fadb7:0x1d9,_0x2322f0:0x317,_0x469f75:0x348,_0x20e9b5:0x31e,_0xceb78:0x32f,_0x241a6f:0x206,_0x36aa38:0x1fd,_0x788101:0x1f4,_0x1cf0c9:0x1fb,_0x11be34:0x1e0,_0x4f4bd9:0x211},_0x7a38c={_0x47ece8:0x280,_0x29989a:0x10a},_0x279522={_0x33dca0:0x3c,_0x3643aa:0x144},_0x227478=[{'encoding':SignalMessage,'onmessage':_0x26d52f=>this[_0x422bec(0x31d,0x2fd,0x2ff,0x302)](_0x26d52f)}];function _0x422bec(_0x1259e0,_0x375f72,_0x2d6f28,_0x246444){return _0x4c71ed(_0x1259e0-_0x279522._0x33dca0,_0x2d6f28- -_0x279522._0x3643aa,_0x2d6f28-0x59,_0x246444);}const _0xf3fb66=this['_muxer'][_0x422bec(0x32f,0x316,_0xf9845e._0xc113db,_0xf9845e._0x61df65)+_0x1e963(_0xf9845e._0x25ca7,_0xf9845e._0x824d47,_0xf9845e._0x28721e,_0xf9845e._0x2d2e0f)]({'protocol':PROTOCOL_NAME,'handshake':HandshakeMessage,'onclose':this[_0x1e963(0x1ce,_0xf9845e._0x504bb4,0x1b4,0x1bd)+'Close']['bind'](this),'onopen':this[_0x422bec(0x303,0x31a,_0xf9845e._0x33ff37,_0xf9845e._0xcfc2df)+_0x1e963(_0xf9845e._0x3b83f4,_0xf9845e._0x4e0e9f,_0xf9845e._0x5ee936,_0xf9845e._0x179f06)][_0x422bec(0x33d,_0xf9845e._0x562e6b,_0xf9845e._0x512262,_0xf9845e._0x23f638)](this),'onerror':_0x5186c=>console[_0x422bec(0x303,0x30f,0x2f5,0x317)](_0x422bec(0x363,0x346,0x33d,0x314),_0x5186c),'id':HypercoreId[_0x1e963(0x207,_0xf9845e._0x3a27ea,_0xf9845e._0x285fcb,_0xf9845e._0x1ef47f)](this[_0x422bec(_0xf9845e._0xe809be,0x310,_0xf9845e._0x4cc378,_0xf9845e._0x3ded39)]),'messages':_0x227478});if(_0xf3fb66===null)return;this[_0x1e963(_0xf9845e._0x3e8175,_0xf9845e._0x5811e6,_0xf9845e._0x43c845,_0xf9845e._0x1fadb7)]=_0xf3fb66;function _0x1e963(_0x1ee453,_0xd34bd8,_0x398e5a,_0x2308ce){return _0x4c71ed(_0x1ee453-0x65,_0x1ee453- -_0x7a38c._0x47ece8,_0x398e5a-_0x7a38c._0x29989a,_0x398e5a);}this[_0x422bec(_0xf9845e._0x2322f0,_0xf9845e._0x469f75,_0xf9845e._0x20e9b5,_0xf9845e._0xceb78)]={'signal':_0xf3fb66[_0x1e963(_0xf9845e._0x241a6f,_0xf9845e._0x36aa38,_0xf9845e._0x788101,0x212)][-0x422+-0x1b30+0x26*0xd3]},this['_channel'][_0x1e963(_0xf9845e._0x1cf0c9,_0xf9845e._0x11be34,_0xf9845e._0x4f4bd9,0x1f0)]({'alias':this['localAlias']});}[_0x4c71ed(0x455,0x44e,0x437,0x42e)+_0x3c8757(-0x69,-0x8b,-0x91,-0xb8)]({alias:_0xda79f5}){const _0x2554d6={_0x463272:0x3be,_0x2dfb32:0x394,_0x5f4014:0x3d3,_0x13c297:0x3b4,_0x5006f4:0x399,_0x5f4f75:0x3af,_0x2a7c34:0x386,_0x479a26:0x392,_0x6b5ac8:0x461,_0x477b93:0x443,_0x50ba06:0x45b,_0x52f0aa:0x46a,_0x545bf5:0x491,_0x255212:0x444,_0x133f43:0x3cc,_0x4015ee:0x3a8,_0x50f5e2:0x3cf,_0x43b54b:0x3ba,_0x5e2853:0x362,_0x3d6691:0x36e,_0x476afa:0x382,_0x2fe356:0x369,_0x23bee8:0x377,_0x6369c1:0x384,_0x40819b:0x376,_0x1af352:0x3b2,_0xf59e16:0x397,_0x50d236:0x38a,_0x17d2c7:0x39f,_0x60b64a:0x39e,_0x571ed4:0x459,_0x518b51:0x444,_0x2a82d0:0x35d,_0x2da609:0x39a,_0x57102b:0x3a3,_0x196dec:0x37e},_0x183c26={_0x18a606:0x6,_0x13ea3e:0x1f3},_0x5d5dd6={_0x467a34:0xfa,_0x3f5c1b:0xd1,_0x3d8a7a:0xf3};function _0x1d9abe(_0x1a9084,_0x1ee527,_0x37904d,_0x1f769c){return _0x4c71ed(_0x1a9084-_0x5d5dd6._0x467a34,_0x1f769c- -_0x5d5dd6._0x3f5c1b,_0x37904d-_0x5d5dd6._0x3d8a7a,_0x1ee527);}this[_0x1d9abe(0x3b6,0x393,_0x2554d6._0x463272,0x3a5)+_0x1d9abe(_0x2554d6._0x2dfb32,_0x2554d6._0x5f4014,_0x2554d6._0x13c297,0x3b4)]=!![];function _0x11b121(_0x3e818c,_0x32e658,_0x43f6b7,_0x288ef5){return _0x4c71ed(_0x3e818c-0x2c,_0x32e658-_0x183c26._0x18a606,_0x43f6b7-_0x183c26._0x13ea3e,_0x3e818c);}this[_0x1d9abe(_0x2554d6._0x5006f4,_0x2554d6._0x5f4f75,_0x2554d6._0x2a7c34,_0x2554d6._0x479a26)+'s']=_0xda79f5,this['rawMuxer'][_0x11b121(_0x2554d6._0x6b5ac8,_0x2554d6._0x477b93,0x42b,_0x2554d6._0x50ba06)+_0x11b121(0x457,_0x2554d6._0x52f0aa,_0x2554d6._0x545bf5,_0x2554d6._0x255212)](this['remoteAlia'+'s'],this),this['emit'](_0x1d9abe(_0x2554d6._0x133f43,_0x2554d6._0x4015ee,_0x2554d6._0x50f5e2,_0x2554d6._0x43b54b)+'en');while(this[_0x1d9abe(0x35a,_0x2554d6._0x5e2853,_0x2554d6._0x3d6691,_0x2554d6._0x476afa)+'r']['length']){this[_0x1d9abe(_0x2554d6._0x2fe356,_0x2554d6._0x23bee8,_0x2554d6._0x6369c1,_0x2554d6._0x40819b)][_0x1d9abe(_0x2554d6._0x1af352,_0x2554d6._0xf59e16,_0x2554d6._0x50d236,_0x2554d6._0x17d2c7)](this[_0x1d9abe(_0x2554d6._0x60b64a,_0x2554d6._0x50d236,0x378,_0x2554d6._0x2a7c34)],this[_0x11b121(0x47b,_0x2554d6._0x571ed4,_0x2554d6._0x571ed4,_0x2554d6._0x518b51)+'r'][_0x1d9abe(_0x2554d6._0x2a82d0,_0x2554d6._0x2da609,_0x2554d6._0x57102b,_0x2554d6._0x196dec)]());}}[_0x3c8757(-0xa3,-0xb6,-0xa4,-0xbd)+_0x3c8757(-0xaa,-0xbd,-0xb2,-0xce)](){const _0x1983a6={_0x23dee2:0x124,_0x12d5c2:0x113,_0x12b01b:0x114,_0x559036:0xf4,_0x592673:0x102,_0x1b5b45:0xdd,_0x265f1c:0xf5,_0x925e4:0xb8,_0x32d5a8:0xb5,_0x4155ba:0xbe,_0x3a151f:0xea,_0x46feaa:0xe3,_0x59e792:0xe2,_0x3ad9f9:0xe7,_0x1fbecb:0xc1,_0x40d110:0xa4,_0x245d1a:0xb4,_0x5cf7e1:0xd4,_0x268ad7:0xc2,_0x3e50c8:0xc4,_0x4d7035:0xf1,_0x51df6d:0xba,_0x32e687:0xe4,_0x39e680:0xe7,_0x152264:0x106},_0x30c81d={_0x1cbafd:0x143,_0xba3dfd:0x361,_0xf4a622:0x5e},_0x47f792={_0x28be47:0x38f};this['channelOpe'+_0x1d2a67(0x120,_0x1983a6._0x23dee2,_0x1983a6._0x12d5c2,_0x1983a6._0x12b01b)]=![];if(this[_0x1d2a67(_0x1983a6._0x559036,_0x1983a6._0x592673,_0x1983a6._0x1b5b45,_0x1983a6._0x265f1c)+'s']===-(0xa49*-0x1+-0x11*0x34+0xdbe))return;this[_0x51ffb5(0x91,_0x1983a6._0x925e4,_0x1983a6._0x32d5a8,_0x1983a6._0x4155ba)][_0x51ffb5(_0x1983a6._0x3a151f,_0x1983a6._0x46feaa,_0x1983a6._0x59e792,_0x1983a6._0x3ad9f9)+_0x51ffb5(_0x1983a6._0x4155ba,_0x1983a6._0x1fbecb,_0x1983a6._0x40d110,_0x1983a6._0x245d1a)](this['remoteAlia'+'s'],this);function _0x51ffb5(_0x14acaf,_0x2e3c43,_0x4473ac,_0x33ccde){return _0x4c71ed(_0x14acaf-0x5a,_0x2e3c43- -_0x47f792._0x28be47,_0x4473ac-0x1d2,_0x4473ac);}this[_0x51ffb5(0xb0,_0x1983a6._0x5cf7e1,0xbd,_0x1983a6._0x268ad7)+'s']=-(-0x52*-0x62+0xa*-0x3c3+0x63b),this[_0x51ffb5(0xd9,0xd9,_0x1983a6._0x925e4,0xd6)]=null;function _0x1d2a67(_0x178aaa,_0x97d644,_0x5de96d,_0x5e9858){return _0x4c71ed(_0x178aaa-_0x30c81d._0x1cbafd,_0x97d644- -_0x30c81d._0xba3dfd,_0x5de96d-_0x30c81d._0xf4a622,_0x5e9858);}this[_0x51ffb5(_0x1983a6._0x3e50c8,0xdc,_0x1983a6._0x4d7035,_0x1983a6._0x51df6d)]('channel-cl'+_0x51ffb5(0x108,_0x1983a6._0x32e687,_0x1983a6._0x39e680,_0x1983a6._0x152264));}[_0x3c8757(-0x7b,-0x9a,-0x8b,-0x6b)+_0x4c71ed(0x41f,0x43b,0x457,0x458)](_0xf9c6a0,_0x4dd620){const _0x902482={_0x1b1e76:0x4d,_0x185ffb:0x3e,_0x494c9f:0x2a,_0x125e4d:0x9a,_0x51e249:0xda,_0x4b6307:0xc3,_0x7335c6:0xae,_0x42542e:0xca,_0x13acb0:0xe3,_0x3739f1:0x5c,_0xcfe700:0x79,_0x171aa7:0x5d,_0x6de6b6:0x88,_0x598384:0xa4,_0x9bb3c7:0xa8,_0x27b054:0xa9,_0x5bb2a7:0xa5,_0x2eda01:0xaa,_0x55b36f:0xc6,_0xb65d3d:0xc7,_0x345a73:0x23,_0x3769e5:0x3b,_0xa33969:0x69,_0x45ff29:0x57,_0x3485dc:0x44,_0x50fda4:0xe2,_0x2799c1:0x102,_0x7d6241:0xea,_0x8877df:0x3a,_0x24cc76:0x30,_0xb537cd:0x3c,_0x5977c7:0xdb,_0x397b85:0xdc,_0x2bd0cf:0xcf},_0x5bfcfb={_0x54d0b4:0xb8},_0x48f462={_0xca6896:0x183,_0x305daf:0x40b,_0x447e89:0xeb};if(this[_0x42bad9(_0x902482._0x1b1e76,_0x902482._0x185ffb,_0x902482._0x494c9f,0x36)]||this[_0x5b3bcc(-_0x902482._0x125e4d,-0xad,-_0x902482._0x51e249,-_0x902482._0x4b6307)+'s']===-(0x1*0x19b7+-0x1617+-0x39f))return;function _0x42bad9(_0x19c9f9,_0x1503f8,_0x31c75f,_0x525890){return _0x4c71ed(_0x19c9f9-_0x48f462._0xca6896,_0x525890- -_0x48f462._0x305daf,_0x31c75f-_0x48f462._0x447e89,_0x19c9f9);}function _0x5b3bcc(_0x48f3b7,_0x4f28a8,_0x72d2be,_0x311154){return _0x4c71ed(_0x48f3b7-_0x5bfcfb._0x54d0b4,_0x311154- -0x526,_0x72d2be-0x198,_0x48f3b7);}if(_0x4dd620[_0x5b3bcc(-_0x902482._0x7335c6,-_0x902482._0x42542e,-_0x902482._0x13acb0,-0xc8)]!==LOCALHOST)return;if(!this['_rinfo']){this[_0x42bad9(_0x902482._0x3739f1,_0x902482._0xcfe700,0x42,_0x902482._0x171aa7)]=_0x4dd620;while(this[_0x5b3bcc(-_0x902482._0x6de6b6,-_0x902482._0x598384,-_0x902482._0x9bb3c7,-_0x902482._0x27b054)+'r'][_0x5b3bcc(-_0x902482._0x5bb2a7,-_0x902482._0x2eda01,-_0x902482._0x55b36f,-_0x902482._0xb65d3d)]){this['_proxy'][_0x42bad9(0x5c,_0x902482._0x345a73,0x43,_0x902482._0x3769e5)](this['_recvBuffe'+'r'][_0x42bad9(_0x902482._0x3739f1,_0x902482._0xa33969,_0x902482._0x45ff29,_0x902482._0x3485dc)](),_0x4dd620[_0x5b3bcc(-_0x902482._0x50fda4,-_0x902482._0x2799c1,-0x106,-_0x902482._0x7d6241)],LOCALHOST);}}this['remoteAlia'+'s']===-(0x3*0x6b6+0x1*-0x1fef+-0x2*-0x5e7)?this['_sendBuffe'+'r']['unshift'](_0xf9c6a0):this[_0x42bad9(_0x902482._0x3769e5,_0x902482._0x8877df,_0x902482._0x24cc76,_0x902482._0xb537cd)]['send'](this[_0x5b3bcc(-_0x902482._0x5977c7,-_0x902482._0x51e249,-_0x902482._0x397b85,-_0x902482._0x2bd0cf)],_0xf9c6a0);}[_0x3c8757(-0xc5,-0x96,-0xad,-0xad)+_0x3c8757(-0x8e,-0x94,-0x72,-0x49)](_0x987f01){const _0x418b3d={_0x24afbd:0x45f,_0x22ed9f:0x43b,_0x45fb83:0x44b,_0x290bb8:0x457,_0x2395b9:0x1f0,_0x29aecb:0x212,_0x3f9dc3:0x1dc,_0x1276c3:0x22d,_0x49b6af:0x230,_0x4edf84:0x258,_0x3cc284:0x421,_0x4d4424:0x439,_0x47f6bb:0x452,_0x488ab2:0x455,_0x333a95:0x23b,_0x2e53fa:0x23e,_0x143d4e:0x250,_0x5ea8ed:0x436,_0x5b2db3:0x445},_0x1c9903={_0x48976b:0x43,_0x5c3638:0x53},_0x1ddb7={_0x7fb5a1:0x1e5,_0x47b57e:0x116};function _0x4ff7c8(_0x3564f8,_0x54d37e,_0x1c75dd,_0x570291){return _0x4c71ed(_0x3564f8-_0x1ddb7._0x7fb5a1,_0x54d37e- -0x6,_0x1c75dd-_0x1ddb7._0x47b57e,_0x3564f8);}if(this[_0x4ff7c8(_0x418b3d._0x24afbd,_0x418b3d._0x22ed9f,_0x418b3d._0x45fb83,_0x418b3d._0x290bb8)])return;function _0x1aa16c(_0x1b7298,_0x24a9c8,_0xb90ed4,_0x5aab9b){return _0x3c8757(_0x1b7298-_0x1c9903._0x48976b,_0x24a9c8-_0x1c9903._0x5c3638,_0x1b7298- -0x17b,_0x5aab9b);}if(!this['_rinfo']){this[_0x1aa16c(-_0x418b3d._0x2395b9,-_0x418b3d._0x29aecb,-_0x418b3d._0x3f9dc3,-0x1ff)+'r'][_0x1aa16c(-0x233,-_0x418b3d._0x1276c3,-_0x418b3d._0x49b6af,-_0x418b3d._0x4edf84)](_0x987f01);return;}this[_0x4ff7c8(_0x418b3d._0x3cc284,_0x418b3d._0x4d4424,_0x418b3d._0x47f6bb,_0x418b3d._0x488ab2)][_0x1aa16c(-0x227,-_0x418b3d._0x333a95,-_0x418b3d._0x2e53fa,-_0x418b3d._0x143d4e)](_0x987f01,this['_rinfo'][_0x4ff7c8(0x424,_0x418b3d._0x5ea8ed,0x45b,_0x418b3d._0x5b2db3)],LOCALHOST);}[_0x3c8757(-0x6d,-0x59,-0x70,-0x7d)](_0x529fdd){const _0x1caf04={_0x1e21f1:0x317,_0x3fb5c7:0x2fd,_0x4f956b:0xea,_0x32892d:0xe2,_0x587986:0x2f9,_0x59b97c:0x2fd,_0x47b7bc:0x2c9,_0x54b9f2:0x2b8,_0x5436d5:0x2b5,_0x1115c7:0x2d2,_0x49c05f:0x2ce},_0xe1b662={_0x5961d5:0x2a,_0x436eda:0x1dd},_0x19531f={_0x3bdeba:0x380};if(this[_0x307744(-0x2e4,-0x2e6,-_0x1caf04._0x1e21f1,-_0x1caf04._0x3fb5c7)])return;function _0x2a5e0e(_0x240d36,_0x42613f,_0x40bcce,_0x31760b){return _0x4c71ed(_0x240d36-0x4c,_0x31760b- -_0x19531f._0x3bdeba,_0x40bcce-0xaa,_0x40bcce);}function _0x307744(_0x1645c3,_0x5df306,_0x315cf9,_0x52bd9e){return _0x3c8757(_0x1645c3-_0xe1b662._0x5961d5,_0x5df306-_0xe1b662._0x436eda,_0x52bd9e- -0x24c,_0x5df306);}this[_0x2a5e0e(_0x1caf04._0x4f956b,0xd3,0xe3,_0x1caf04._0x32892d)][_0x307744(-_0x1caf04._0x587986,-_0x1caf04._0x59b97c,-_0x1caf04._0x47b7bc,-0x2f2)][_0x307744(-_0x1caf04._0x54b9f2,-_0x1caf04._0x5436d5,-_0x1caf04._0x1115c7,-_0x1caf04._0x49c05f)](_0x529fdd);}};
1const{EventEmitter:e}=require("events"),s=require("safety-catch"),t=require("hypercore"),i=require("hypercore-id-encoding"),{HandshakeMessage:r,SignalMessage:h}=require("../lib/messages"),n="127.0.0.1",o="keet-webrtc/v1";module.exports=class extends e{constructor(e,s,r,h={}){super();const{onerror:n=console.error,onsignal:a}=h;this.callId=e,this.rawMuxer=s,this.closed=!1,this.proxyPort=0,this.channelOpened=!1,this.stream=this.rawMuxer.connection,this.localAlias=this.rawMuxer.createLocalAlias(),this.remoteAlias=-1,this._proxy=r,this._onerror=n,this._onsignal=a,this._rinfo=null,this._sendBuffer=[],this._recvBuffer=[],this._muxer=t.getProtocolMuxer(this.stream),this._muxer||(this.stream=t.createProtocolStream(this.stream),this._muxer=t.getProtocolMuxer(this.stream)),this._channel=null,this._senders=null,this._muxerInfo={protocol:o,id:i.decode(this.callId)},this._muxer.pair(this._muxerInfo,()=>this._createChannel()),this._createChannel(),this._openProxy()}_openProxy(){this._proxy.bind(0,n),this._proxy.on("message",this._handleLocalData.bind(this)),this.proxyPort=this._proxy.address().port}close(){this.closed||(this.closed=!0,this._channel.close(),this._proxy.close().catch(s),this._muxer.unpair(this._muxerInfo))}_createChannel(){const e=[{encoding:h,onmessage:e=>this._onsignal(e)}],s=this._muxer.createChannel({protocol:o,handshake:r,onclose:this._onChannelClose.bind(this),onopen:this._onChannelOpen.bind(this),onerror:e=>console.error("ERR HERE:",e),id:i.decode(this.callId),messages:e});null!==s&&(this._channel=s,this._senders={signal:s.messages[0]},this._channel.open({alias:this.localAlias}))}_onChannelOpen({alias:e}){for(this.channelOpened=!0,this.remoteAlias=e,this.rawMuxer.registerProxy(this.remoteAlias,this),this.emit("channel-open");this._sendBuffer.length;)this.rawMuxer.send(this.localAlias,this._sendBuffer.pop())}_onChannelClose(){this.channelOpened=!1,-1!==this.remoteAlias&&(this.rawMuxer.unregisterProxy(this.remoteAlias,this),this.remoteAlias=-1,this._rinfo=null,this.emit("channel-close"))}_handleLocalData(e,s){if(!this.closed&&-1!==this.remoteAlias&&s.host===n){if(!this._rinfo)for(this._rinfo=s;this._recvBuffer.length;)this._proxy.trySend(this._recvBuffer.pop(),s.port,n);-1===this.remoteAlias?this._sendBuffer.unshift(e):this.rawMuxer.send(this.localAlias,e)}}handleRawStreamData(e){this.closed||(this._rinfo?this._proxy.trySend(e,this._rinfo.port,n):this._recvBuffer.unshift(e))}sendSignal(e){this.closed||this._senders.signal.send(e)}};
@holepunchto/keet-core/env.json +42 -0
……@@ -0,0 +1,42 @@
1{
2 "nightly": {
3 "bundles": {
4 "key": "yssst9xdnypg7dbbkc3a4hrusnyb8n4n7e3a9yw469fuuf4i4tso",
5 "length": 206
6 },
7 "config": {
8 "key": "5hdn7otebmiachsu4u5d86rp8ejhhmrrm6sstg198fun6rmf41qo",
9 "length": 13
10 }
11 },
12 "internal": {
13 "bundles": {
14 "key": "yssst9xdnypg7dbbkc3a4hrusnyb8n4n7e3a9yw469fuuf4i4tso",
15 "length": 206
16 },
17 "config": {
18 "key": "5hdn7otebmiachsu4u5d86rp8ejhhmrrm6sstg198fun6rmf41qo",
19 "length": 13
20 }
21 },
22 "production": {
23 "bundles": {
24 "key": "eu5e6dieybhbshpzo6nxy8pwycb341qdywkbwqmtjmww174bfnjo",
25 "length": 206
26 },
27 "config": {
28 "key": "w94a4mrokgp4hu757rhipc3isrxstiyupnpabat357hh6jutwrro",
29 "length": 10
30 }
31 },
32 "prerelease": {
33 "bundles": {
34 "key": "yssst9xdnypg7dbbkc3a4hrusnyb8n4n7e3a9yw469fuuf4i4tso",
35 "length": 206
36 },
37 "config": {
38 "key": "3i34itm8zqhweq4oxjw3ebg1kyhywqn9359shn9sr1twmm7jdpuo",
39 "length": 10
40 }
41 }
42}
@holepunchto/keet-core/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("keet-identity-key"),t=require("hypercore-storage"),i=require("hypercore-id-encoding"),s=require("ready-resource"),r=require("ready-guard"),o=require("hyperswarm"),a=require("hyperdht"),n=require("corestore"),l=require("hypercore"),c=require("hyperblobs"),h=require("autobase"),d=require("scope-lock"),y=require("rache"),u=require("protomux-wakeup"),p=require("promaphore"),m=require("safety-catch"),g=require("task-backoff"),b=require("hypercore-crypto"),w=require("compact-encoding"),f=require("z32"),v=require("b4a"),k=require("fs"),P=require("path"),_=require("blind-peering"),K=require("multi-profile-store"),T=require("hyperconf");l.enable(l.SMALL_WANTS),l.setRecoveryPeers&&l.setRecoveryPeers([]);const R=require("@holepunchto/keet-push"),L=require("@holepunchto/keet-unread-anchors"),{generateMnemonic:E}=require("bip39-mnemonic"),{HyperDiscoveryClient:C}=require("@holepunchto/hyperdiscovery"),B=require("@holepunchto/keet-indexing"),x=require("./schema/versions"),I=require("./lib/api/v1"),D=require("./lib/api/v2"),S=require("./lib/core/crypto"),A=require("./lib/core/local"),q=require("./lib/core/files"),O=require("./lib/core/tasks"),M=require("./lib/core/sync"),V=require("./lib/core/migrations/3/apply"),{SwarmWorker:U}=require("./lib/core/swarm"),{getWriterKey:N,getInvitationId:F,createInvitation:W,generateRoomCapabilities:$,generateIdentityPairingName:j,generateRoomPairingName:G}=require("./lib/core/invitations"),{getMemberForDeviceKey:H}=require("./lib/core/contract/query"),{restoreAvatar:J}=require("./lib/core/contract/avatars"),{RoomStatus:Y}=require("./lib/core/contract/identity/private"),{DEBUG_FLAGS:z,DHT_SETTINGS:X}=require("./lib/core/debug/debugging"),{KeetContract:Q}=require("./lib/core/contract"),{KeetContractError:Z}=require("./lib/core/contract/errors.js"),ee=require("./lib/core/log"),{contract:{hyperdispatch:{decode:te,DispatchError:ie},hyperschema:{getEnum:se,getEncoding:re,encode:oe,decode:ae}},local:{hyperschema:{getEnum:ne}},config:{hyperconf:le}}=require("./schema/spec"),ce=re("@keet-private-id/profile-discovery-record"),he=se("@keet/build-type"),de=require("./lib/core/users"),ye=require("protomux-rpc-client"),{KeetErrorManager:ue,KeetErrorV2:pe}=require("./lib/errors"),{Version:me}=require("bare-semver"),{roomMigrationsStats:ge}=require("./lib/core/contract/stats/local"),be=require("./lib/bundle"),we=ne("@local/keet-state"),fe=2592e6,ve="keet-swarm-keypair",ke="keet-core",Pe="keet-unreads",_e="keet-bundles",Ke=1e4,Te=3e3,Re=4,Le=5e3,Ee=v.alloc(32),Ce=1,Be=500,xe=9,Ie=1728e5,De=5,Se=10,Ae=1711547109544,qe=require("./lib/env"),Oe=64,Me=3,Ve=30,Ue=4;class Ne{constructor(e,t){this.keet=e,this.roomId=t,this.batch=null,this.length=0,this.timestamp=0,this.pushLength=0}get key(){return this.room.base.local.key}_open(){this.room=this.keet.internalOpenExistingRoom(this.roomId),this.batch=this.room.base.batch(),this.timestamp=Date.now()}_noop(){return this.close(),this.length}async dispatch(e,t,{dryRun:i=!0}={}){this.room||this._open(),this.room.opened||await this.room.ready();const s=await this.room._internalEncodeOperation(e,t,{view:this.room.view,timestamp:this.timestamp});return i&&!await this.keet.internalDryRun(this.room,this.room.view,[s])?this._noop():(this.length=await this.append(s),!this.pushLength&&Ge(e)&&(this.pushLength=this.length),this.length)}async append(e){return this.batch.append(e)}async flush(){try{return await this.batch.flush(),await this.room._postAppend({encoded:this.batch.blocks,pushLength:this.pushLength,timestamp:this.timestamp}),{key:this.key,length:this.length}}finally{this.close()}}close(){this.room&&this.keet.internalReleaseRoom(this.room),this.batch&&this.batch.close(),this.batch=null,this.length=0,this.shouldPush=!1}}class Fe extends s{constructor(e,t,s,r,o){super(),this.keet=e,this.id=t,this.key=s,this.base=o,this.externalBlobs=null,this.discoveryKey=r,this.discoveryId=i.encode(this.discoveryKey),this.view=this.base.view,this.db=this.view.db,this.core=this.view.core,this.blobs=this.view.blobs,this.router=this.view.router,this.push=null,this.keet.push&&(this.push=this.keet.push.room(this.key,this.discoveryKey)),this.refs=0,this.idleTicks=0,this._pushLock=new d({debounce:!0}),this.ready().catch(Je)}get deviceId(){return i.encode(this.deviceKey)}get deviceKey(){return this.base.local.key}get encryptionKey(){return this.base.encryptionKey}async getStats(){const[e,t,s]=await Promise.all([this.keet.local.get("@local/rooms",{roomKey:this.key}),this.keet.local.get("@local/room-preferences",{roomKey:this.key}),this.keet.local.get("@local/writers-by-room-key",{roomKey:this.key})]);return{view:{peers:this.view.core.peers.length,length:this.view.core.length,signedLength:this.view.core.signedLength,byteLength:this.view.core.byteLength},system:{peers:this.base.core.peers.length,length:this.base.length,signedLength:this.base.signedLength,indexedLength:this.base.indexedLength},base:{opened:this.base.opened,closed:this.base.closed,opening:!!this.base.opening,closing:!!this.base.closing,writable:this.base.writable,indexing:this.base.ackable,interrupted:!!this.base.interrupted,appending:!!this.base.appending,flushing:!!this.base.flushing,advancing:!!this.base._advancing},writer:{key:s.key?i.encode(s.key):null,roomKey:s?.roomKey?i.encode(s.roomKey):null},status:e?.status,preferences:t?.status}}async _safePushNotify(e){if(this._pushLengths||(this._pushLengths=[]),this._pushLengths.push(e),!await this._pushLock.lock())return;if(this.closing)return;const t=this._pushLengths;this._pushLengths=null;try{await this.push.send(this.base.local,t)}catch(e){this.keet.onerror(e,{roomKey:this.key})}this._pushLock.unlock()}async _safeBumpDiscovery(e){try{const t=await this.keet.local.get("@local/rooms",{roomKey:this.key});this.keet.discovery.announce(t.capabilities.discoveryKeyPair,{bump:e})}catch(e){this.keet.onerror(e,{roomKey:this.key})}}async _open(){await this.base.ready(),this.internalEnsureMirroring(),this.base.on("writer",async e=>{try{if(await this.keet.local.get("@local/devices",{device:{key:e.core.key}}))return;const t=await this.db.get("@keet/devices",{key:e.core.key});t&&await this.db.get("@keet/members",{key:t.memberKey})}catch(e){m(e)}}),this.base.local.on("remote-contiguous-length",this._handleSentLengthChanged.bind(this)),this.base.on("rotate-local-writer",()=>{this.base.local.on("remote-contiguous-length",this._handleSentLengthChanged.bind(this))}),this.db.get("@keet/room-config").then(e=>{this.keet.logger.debug("opened id: "+this.id+" title: "+e?.title)},m),this.externalBlobs=new c(this.keet.store.get({name:this.id+"/blobs",encryptionKey:this.encryptionKey,encrypted:!0,exclusive:!0,active:!1})),await this.externalBlobs.ready(),await this._ensureMetadata(),this.internalEnsureProfileUpdated(),this.internalEnsureUpgraded(),this.internalEnsureRepaired()}async internalCloseBase(){this.keet.internalTime(`internal-close-base-${this.id}`),await this.base.close(),this.keet.internalTimeEnd(`internal-close-base-${this.id}`)}async internalCloseExternalBlobs(){this.keet.internalTime(`internal-close-blobs-${this.id}`),await this.externalBlobs.close(),this.keet.internalTimeEnd(`internal-close-blobs-${this.id}`)}async internalPushDestroy(){this.push&&(this.keet.internalTime(`internal-close-push-${this.id}`),await this.push.destroy(),this.keet.internalTimeEnd(`internal-close-push-${this.id}`))}_close(){return Promise.all([this.internalCloseBase(),this.internalCloseExternalBlobs(),this.internalPushDestroy()])}_handleSentLengthChanged(){if(!this.base.writable)return;const{length:e,remoteContiguousLength:t}=this.base.local;e===t&&this.keet.emit("room-sent-message",this.base.id)}async _ensureMetadata(){const e=await this.keet.internalEnterLocalTransaction();try{const[t,i]=await Promise.all([e.get("@local/room-metadata",{roomKey:this.key}),e.get("@local/rooms",{roomKey:this.key})]);if(t)return;const s=i?0:1;await e.insert("@local/room-metadata",{roomKey:this.key,repairs:s}),await e.flush()}finally{await this.keet.internalExitLocalTransaction()}}async internalEnsureMirroring(){this.refs++;try{const e=this.base.wakeupCapability&&this.base.wakeupCapability.key,t=await this.keet._getMirrorKeys(this.key);if(this.closing)return;this.keet.blindPeering.addAutobaseBackground(this.base,{target:e,keys:t})}finally{this.refs--}}async internalEnsureUpgraded({opening:e=!1}={}){this.refs++;try{e||this.keet.onlineBoot.opened||await this.keet.onlineBoot.ready();const[t,i]=await Promise.all([this.db.get("@keet/system-digest"),H(this.db,this.deviceKey)]);if(!i?.status.isModerator||t?.abi.version>=this.keet.abi.autoupgrade)return;await this.keet.internalDispatchUpgrade(this.id,this.keet.abi.autoupgrade)}catch(e){this.keet.onerror(e,{roomKey:this.key})}finally{this.refs--}}async internalEnsureProfileUpdated(){this.refs++;try{this.keet.onlineBoot.opened||await this.keet.onlineBoot.ready();const[e,t]=await Promise.all([this.keet.local.get("@local/identity"),H(this.db,this.deviceKey)]);if(this.closing||!e||!t||v.equals(this.key,e.privateProfileKey))return;const i=await this.keet.local.get("@local/rooms",{roomKey:e.privateProfileKey});if(this.closing)return;if(t.profile.timestamp>=i.selfMember.profile.timestamp)return;const s={profile:i.selfMember.profile,attestation:{memberKey:i.selfMember.key,proof:i.selfMember.proofs.profileAttestation}};await this.dispatch("@keet/update-member",{member:s})}catch(e){this.keet.onerror(e,{roomKey:this.key})}finally{this.refs--}}async internalEnsureRepaired(){this.refs++;try{if(this.keet.onlineBoot.opened||await this.keet.onlineBoot.ready(),this===this.keet.privateProfile)return;const e=await this.keet.local.get("@local/room-metadata",{roomKey:this.key});if(this.closing||e.repairs>=1)return;if(this.base.linearizer.size>Be)return;const t=await this.db.get("@keet-private-id/identity");if(this.closing||t)return;if(e.repairs=1,await this.base.repair(),this.closing)return;const i=await this.keet.internalEnterLocalTransaction();try{await i.insert("@local/room-metadata",e),await i.flush()}finally{await this.keet.internalExitLocalTransaction()}}finally{this.refs--}}async _internalEncodeOperation(e,t,{view:i=this.view,timestamp:s=Date.now()}={}){const r=await i.db.get("@keet/system-digest");if(!this.keet.isValidBuildType(r))throw pe.INVALID_BUILD_TYPE();return(await this.keet.contractBundles.loadBundle(r?r.abi.version:this.keet.abi.autoupgrade)).encodeOperation(e,{header:{timestamp:s},...t})}async _encodeBatch(e,t={}){const i=Array.isArray(e)?e:[e],s=Date.now(),r=[];let o=!1;for(const{type:e,op:a}of i)r.push(this._internalEncodeOperation(e,a,{...t,timestamp:s})),Ge(e)&&(o=!0);return{encoded:await Promise.all(r),timestamp:s,shouldPush:o}}async _postAppend({encoded:e=[],pushLength:t=0,timestamp:i=Date.now()}){this.keet.stats.ops+=e.length,this.push&&t>0&&this._safePushNotify(t),this.keet.discovery&&this._safeBumpDiscovery(i),this.db.update()}async dispatchBatch(e,{view:t=this.view,dryRun:i=!0,optimistic:s=!1}={}){this.opened||await this.ready();const{encoded:r,timestamp:o,shouldPush:a}=await this._encodeBatch(e,{view:t});if(i&&!await this.keet.internalDryRun(this,t,r))return null;const n=await this.base.append(r,{optimistic:s}),l=a?n:0;return await this._postAppend({encoded:r,pushLength:l,timestamp:o}),{key:this.base.local.key,length:n}}dispatch(e,t,i){return this.dispatchBatch([{type:e,op:t}],i)}}module.exports=class extends s{constructor(e,i={}){if(super(),this.dir=e,this.opts=i,this.isMobile=!!i.mobile,this.isTesting=!!i.testing,this.appVersion=i.appVersion?me.parse(i.appVersion):null,this.forceBuildType=!!i.forceBuildType,!i.buildType)throw pe.INVALID_BUILD_TYPE();this.buildType=He(i.buildType),this.logger=new ee(i.logger),this.isTesting&&this.logger.mute();const s=qe(i.buildType);this.isNightly=this.buildType===he.Nightly,this.isExperimental=this.isTesting?i.experimental??this.isNightly:this.isNightly,this.offlineBoot=new r,this.onlineBoot=new r,this.debug={},this.versions=x,this.abi=i.testingABI||{max:this.isExperimental?x.EXPERIMENTAL:x.STABLE,autoupgrade:this.isExperimental?x.EXPERIMENTAL:x.AUTOUPGRADE,production:x.STABLE},this.logout=i.logout,this.storage=new t(e,i.storage),this.rootCorestore=new n(this.storage,{globalCache:new y({maxSize:i.maxCacheSize}),manifestVersion:2}),this.store=this.rootCorestore.namespace(ke),this.rootCorestore.watch(this._handleCoreOpen.bind(this)),this.local=A.rocks(this.storage.rocks.columnFamily("keet/local-database")),this.discovery=null,this.gatekeepers=i.gatekeepers||[],this.push=null,this.protomuxWakeup=new u(this._handleWakeup.bind(this)),this.backoff=new g,this.rooms=new Map,this.activeRooms=new Set,this._transactionLock=new d,this._tx=null,this.hyperconf=null,this.config=null,this.configMinVersion=null,this.errorManager=new ue(this,this.opts),this.swarmWorker=new U(this,this.opts.swarmWorker),this.files=new q(this,this.opts),this._onerror=i.onerror||m,this.onerror=this.errorManager?(e,t={})=>{const i=this.errorManager.normalize(e,t);this.errorManager.add(i),this.logger.error(i),this._onerror(i)}:this._onerror,this.apiV1=new I(this,i),this.backendAPI=this.apiV1,this.api=this.backendAPI.api.core,this.blindPeeringOpts=i.blindPeeringOpts||{},this.contractBundles=null,this.tasks=null,this.swarm=null,this.swarmId=null,this.blindPeering=null,this.privateProfile=null,this.unreads=null,this.unreadsLoading=null,this.discoveryCore=null,this.discoveryCoreSession=null,this.push=null,this.state=we.RESUME,this._bundlesKey=i.bundlesKey||s.bundles.key,this._bundlesLength=i.bundlesLength||s.bundles.length,this._hyperconfKey=i.hyperconfKey||s.config.key,this._hyperconfLength=i.hyperconfLength||s.config.length,this._disabledRooms=this.isTesting?new Set:null,this._verifiedRooms=this.isTesting?new Set:null,this._relayKeys=this.isTesting?i.blindRelays||[]:null,this._blindPeerKeys=this.isTesting?i.blindMirroring||[]:null,this._gatekeeperKeys=this.isTesting?i.gatekeepers||[]:null,this._discoveryBootstrapKeys=this.isTesting?i.discoveryBootstrapKeys||[]:null,this._disableUnreadSync=this.isTesting&&i.disableUnreadSync||!1,this._migratedFrom=0,this._unreadsLock=new d({debounce:!0}),this._dhtOpts=i.dht,this._swarmOpts=i.swarm,this._pendingTasks=[],this._swarmTasks=[],this._runningTasks=new Set,this._waitingForCompletion=new Map,this._completedRequests=new Set,this._pendingCandidates=new Map,this._swarming=new Map,this._pendingTraces=[],this._cacheLock=new d({debounce:!0}),this._gcEnabled=!1!==i.gc,this._gcIdleTicks=i.gcIdleTicks||4,this._gcInterval=i.gcInterval||Le,this._gcTimer=null,this._gcClosingRooms=new Set,this._boundAutobaseTrace=this._autobaseTrace.bind(this),this.internalPairingTimeout=i.pairingTimeout||Te,this._profileDiscoveryTimeout=i.profileDiscoveryTimeout||Ke,this.migrationStatus=null,this._roomMigrations=new p(5),this._discoveryLock=new d({debounce:!0}),this._discoverySemaphore=new p(Se),this._discovering=new Map,this.internalFastJoinSemaphore=new p(4),this.debugRunningFastJoins=0,this.debugMaxRunningFastJoins=0,this._rejectAnonymousProfiles=!1!==i.rejectAnonymousProfiles,this._registryOpts=this.isTesting?i.userRegistry:null,this.rpcClient=null,this.userRegistry=null,this.ackThreshold=i.ackThreshold,this.ackInterval=i.ackInterval,this.stats={ops:0,appends:0,bytesAppended:0,uploaded:0,bytesUploaded:0,downloaded:0,bytesDownloaded:0},this.debugForceMigrationFailure=i.debugForceMigrationFailure||null,this.debugJoinPeer=i.debugJoinPeer||this._debugJoinPeer.bind(this),this.debugLeavePeer=i.debugLeavePeer||this._debugLeavePeer.bind(this),this.ready().catch(this.onerror)}async backendReady(){this.backendAPI.opened||await this.backendAPI.ready()}get readOnly(){return this.rootCorestore.storage.readOnly||!1}get suspended(){return this.state===we.SUSPEND}async _openNetworking(){const e=await this.getDHTSettings();this.swarm=new o({deferRandomPunch:!0,dht:new a({...e,...this._swarmOpts,...this._dhtOpts}),maxPeers:Ve,...this._swarmOpts,relayThrough:this._relayThrough.bind(this),keyPair:await this.rootCorestore.createKeyPair(ve)}),this.swarmId=i.encode(this.swarm.keyPair.publicKey),this.swarm.on("connection",this._handleConnection.bind(this)),this.discovery=this._discoveryBootstrapKeys.length?new C(this._discoveryBootstrapKeys[0],{dht:this.swarm.dht}):null,this.rpcClient=new ye(this.swarm.dht,{suspended:this.state===we.SUSPEND,relayThrough:this._relayThrough.bind(this)}),this.blindPeering=new _(this.swarm.dht,this.store,{pick:2,wakeup:this.protomuxWakeup,keys:this.debug.disableMirrors?[]:this._blindPeerKeys,relayThrough:this._relayThrough.bind(this),...this.blindPeeringOpts}),this._gatekeeperKeys.length>0&&(this.push=new R(this._gatekeeperKeys,{dht:this.swarm.dht})),await this.swarmWorker.ready(),await this.files.ready(),this.readOnly&&(this.blindPeering.suspend(),this.swarm.suspend())}async _runBootOffline(){if(!this.offlineBoot.enter())return;await this._ensureDebugState(),await this.store.ready(),this.hyperconf=new T(le,this.store.get(this._hyperconfKey),{minLength:this._hyperconfLength,production:this.buildType===he.Production}),this.hyperconf.on("update",this._handleConfigUpdated.bind(this)),await this.hyperconf.ready(),await this._handleConfigUpdated(),this.config?.versions.autoupgrade>0&&(this.abi.autoupgrade=this.config.versions.autoupgrade);const e=await this.local.get("@local/environment"),t=!!e&&e.latestOfflineAbi<this.abi.production;this.contractBundles=new be(this,_e,{hydrate:t}),await this.contractBundles.ready(),t&&await this._bumpLocalAbiVersion(),await this._openNetworking(),this.tasks=new O(this),await this.tasks.ready(),this._gcEnabled&&(this._gcTimer=setInterval(this._closeIdleRooms.bind(this),this._gcInterval)),this.offlineBoot.exit()}async _runBootOnline(){if(this.onlineBoot.enter()){await this.offlineBoot.ready(),this.discovery&&(this.discovery.on("announce",({publicKey:e})=>{this.scheduleDiscoverySwarming(e)}),this.discovery.on("connect",this._onDiscoveryConnect.bind(this)),this.discovery.connect()),this._refreshDiscoverySwarming(),this._migratedFrom=await this._ensureMigrated();try{await this._loadIdentity()}catch(e){this.onerror(e)}this._migratedFrom>0&&await this._maybeRunPostMigrations(this._migratedFrom),this._registryOpts&&(this.userRegistry=new de(this,this._registryOpts),await this.userRegistry.ready()),this.onlineBoot.exit()}}async _open(){!1!==await this._ensureBuildType()&&(this._runBootOffline().catch(this.onerror),this._runBootOnline().catch(this.onerror),await this.offlineBoot.ready())}async _close(){this.internalTime("keet-close"),this.internalVerboseLog("Closing keet core"),this._gcTimer&&clearInterval(this._gcTimer),this.backoff.destroy(),this.internalTimeLog("keet-close","destroyed backoff"),this.state===we.SUSPEND&&await this.store.resume(),this.internalTimeLog("keet-close","resumed from suspend"),this.internalVerboseLog("Closing active calls"),await this.backendAPI.closeActiveCalls(),this.internalTimeLog("keet-close","closed active calls"),this.internalVerboseLog("Closing discovery cores"),this.discoveryCore&&await this.discoveryCore.close(),this.discoveryCoreSession&&this.discoveryCoreSession.destroy(),this.internalTimeLog("keet-close","closed discovery cores"),this.internalVerboseLog("Closing tasks"),this.tasks&&await this.tasks.close(),this.internalFastJoinSemaphore.destroy(),this.internalTimeLog("keet-close","stopped running tasks");for(const e of this._gcClosingRooms)this.internalTime(`gc-room-close-${e.id}`),this.internalTimeLog(`gc-room-close-${e.id}`),this.internalVerboseLog("Closing room in gc list",e.id,e.opened),await e.close(),this.internalTimeEnd(`gc-room-close-${e.id}`,"closed");this.internalTimeLog("keet-close","closed rooms in gc"),this.internalVerboseLog("Closing user registry"),this.userRegistry&&await this.userRegistry.close(),this.internalTimeLog("keet-close","closed user registry"),this.internalVerboseLog("Closing rpc client"),this.rpcClient&&await this.rpcClient.close(),this.internalTimeLog("keet-close","closed rpc client"),this.internalVerboseLog("Closing swarm worker"),await this.swarmWorker.close(),this.internalTimeLog("keet-close","closed swarm worker"),this.internalVerboseLog("Closing discovery"),this.discovery&&await this.discovery.close(),this.internalTimeLog("keet-close","closed discovery"),this.internalVerboseLog("Closing push"),this.push&&await this.push.destroy(),this.internalTimeLog("keet-close","closed push"),this.internalVerboseLog("Closing blind peering"),this.blindPeering&&await this.blindPeering.close(),this.internalTimeLog("keet-close","closed blind peering"),this.internalVerboseLog("Flushing DHT cache"),this.swarm&&await this._flushDHTCache(),this.internalTimeLog("keet-close","flushed dht"),this.internalVerboseLog("Closing swarm"),this.swarm&&await this.swarm.destroy(),this.internalTimeLog("keet-close","destroyed swarm"),this.internalVerboseLog("Closing files"),await this.files.close(),this.internalTimeLog("keet-close","closed files"),this.internalVerboseLog("Closing all pending rooms and workers"),await Promise.allSettled([...[...this.rooms.values()].map(async e=>{this.internalTime(`pending-room-close-${e.id}`),this.internalTimeLog(`pending-room-close-${e.id}`),await e.close(),this.internalTimeEnd(`pending-room-close-${e.id}`)})]),this.internalTimeLog("keet-close","closed all pending rooms and workers"),this.internalVerboseLog("Closing backend"),await this.apiV1.close(),this.internalTimeLog("keet-close","closed backend"),await this.internalEnterLocalTransaction(),await this.internalExitLocalTransaction(),this.internalVerboseLog("Closing unread anchors"),this.unreadsLoading&&await this.unreadsLoading,this.unreads&&await this.unreads.close(),this.internalTimeLog("keet-close","closed unreads"),this.internalVerboseLog("Closing wakeup"),this.protomuxWakeup.destroy(),this.internalTimeLog("keet-close","protomux"),this.internalVerboseLog("Closing hyperconf"),this.hyperconf&&await this.hyperconf.close(),this.internalVerboseLog("Closing error manager"),this.errorManager&&await this.errorManager.close(),this.internalVerboseLog("Closing local db"),await this.local.close(),this.internalVerboseLog("Closing contract bundles"),this.contractBundles&&await this.contractBundles.close(),this.internalVerboseLog("Closing store"),await this.store.close(),this.internalVerboseLog("Closing root corestore"),await this.rootCorestore.close(),this.internalTimeLog("keet-close","closed cores"),this.internalVerboseLog("Close done"),this.internalTimeEnd("keet-close")}async _ensureDebugState(){const e=await this.internalEnterLocalTransaction();try{const t=await e.get("@local/debug")||{};t.flags||(t.flags=z);const i=new Set,s={};for(const e of t.flags)i.add(e.key),s[e.key]=e.value;for(const{key:e,value:s,description:r}of z)i.has(e)||t.flags.push({key:e,value:s,description:r});await e.insert("@local/debug",t),await e.flush(),this.debug={...s}}finally{await this.internalExitLocalTransaction()}}isValidBuildType(e){if(!e)return!0;if(this.isTesting&&!this.forceBuildType)return!0;const t=he.Production===this.buildType;return!(!t&&!e.settings.buildType||!t&&e.settings.buildType!==this.buildType)}async _ensureBuildType(){if(this.isTesting&&!this.forceBuildType)return;const e=he.Production===this.buildType,t=await this.internalEnterLocalTransaction();try{const[i,s]=await Promise.all([t.get("@local/identity"),t.get("@local/environment")]);if(!e&&i&&!s?.buildType)throw pe.INVALID_BUILD_TYPE();if(s&&s.buildType!==this.buildType)throw pe.INVALID_BUILD_TYPE();if(s)return;await t.insert("@local/environment",{buildType:this.buildType}),await t.flush()}catch(e){return this.onerror(e),!1}finally{await this.internalExitLocalTransaction()}}async _bumpLocalAbiVersion(){const e=await this.internalEnterLocalTransaction();try{const t=await e.get("@local/environment");t.latestOfflineAbi=this.abi.production,await e.insert("@local/environment",t),await e.flush()}finally{await this.internalExitLocalTransaction()}}async _onDiscoveryConnect(){const e=await this.local.find("@local/rooms-by-timestamp",{reverse:!0,limit:256}).toArray();this.discovery.cork();for(const t of e){const e=t.capabilities.discoveryKeyPair.publicKey,i=await this.local.get("@local/background-sync",{discoveryPublicKey:e}),s=Math.max(t.timestamps.latestSync,i?i.lastSynced:0);this.discovery.subscribe(t.capabilities.discoveryKeyPair.publicKey,{since:s})}this.discovery.uncork()}async internalEnterLocalTransaction(){return await this._transactionLock.lock(),this._tx=this.local.transaction(),this._tx}async internalExitLocalTransaction(){await this._tx.close(),this._transactionLock.unlock()}async _handleConfigUpdated(){if(!this.isTesting||this.opts.hyperconfKey){if(this.config=this.hyperconf.current,this.internalVerboseLog("OTA config updated, dkey:",i.encode(this.hyperconf.core.discoveryKey),"length:",this.hyperconf.core.length),this._blindPeerKeys=this.config.services.blindPeers,this._relayKeys=this.config.services.blindRelays,this._gatekeeperKeys=this.config.services.gatekeepers,this._discoveryBootstrapKeys=this.config.services.discovery,l.setRecoveryPeers&&l.setRecoveryPeers(this.config.services.blindPeers),this._disabledRooms=new Set(this.config.rooms.disabled.map(e=>i.encode(e))),this._verifiedRooms=new Set(this.config.rooms.verified?.map(e=>i.encode(e))),this._disableUnreadSync=!0===this.config.profile?.disableUnreadSync,this._maybeUpgradeOpenRooms().catch(this.onerror),this.config.services.userRegistries?.length&&(this._registryOpts=this.config.services.userRegistries[0]),this.blindPeering&&this.blindPeering.setKeys(this._blindPeerKeys),this.config.versions.minVersion){const{major:e,minor:t,patch:i}=this.config.versions.minVersion;this.configMinVersion=new me(e,t,i)}this.config.versions.autoupgrade>0&&(this.abi.autoupgrade=this.config.versions.autoupgrade),this.emit("force-update"),this.emit("verified-rooms-changed")}}async _maybeUpgradeOpenRooms(){this.onlineBoot.opened||await this.onlineBoot.ready();const e=this.abi.autoupgrade,t=this.config?.versions.autoupgrade;if(!(e<t))return;const i=[],s=async function(e,t){const[i,s]=await Promise.all([e.db.get("@keet/system-digest"),H(e.db,e.deviceKey)]);!s?.status.isModerator||i?.abi.version>=t||await this.internalDispatchUpgrade(e.id,t)}.bind(this);for(const[e,r]of this.rooms.entries())i.push(s(r,t));return await Promise.all(i)}shouldForceUpdate(){const e=this.config.versions.forceUpdate>x.FORCE_UPDATE,t=this.configMinVersion&&this.appVersion?this.configMinVersion.compare(this.appVersion):0;return e||1===t}isRoomVerified(e){return this._verifiedRooms.has(e)}async _bumpRoom(e){if(this.closing)return;if(!await this.local.get("@local/writers-by-room-key",{roomKey:e}))return;if(this.closing)return;const t=this.internalOpenExistingRoom(e);try{await t.ready()}finally{this.internalReleaseRoom(t)}}_handleCoreOpen(e){const t=new l({core:e,weak:!0}),i=new d({debounce:!0});t.on("verification-error",e=>{this.onerror(e,{coreKey:t.key,prefix:"CORE_VERIFICATION_ERROR"})}),t.on("conflict",()=>{this.onerror(new Error("Conflict in Hypercore"),{coreKey:t.key,prefix:"CORE_CONFLICT"})}),t.on("invalid-request",e=>{this.onerror(e,{coreKey:t.key,prefix:"CORE_INVALID_REQUEST"})}),t.on("append",async()=>{if(await i.lock())try{const t=e.state.storage.read(),i=[t.getUserData("referrer"),t.getUserData("autobase/view")];t.tryFlush();const[s,r]=await Promise.all(i);if(!s||r)return;await this._bumpRoom(s)}catch(e){this.onerror(e)}finally{i.unlock()}}),t.on("upload",(e,t)=>{this.stats.uploaded++,this.stats.bytesUploaded+=t}),t.on("download",(e,t)=>{this.stats.downloaded++,this.stats.bytesDownloaded+=t}),t.once("ready",()=>{if(t.writable){let e=t.length,i=t.byteLength;t.on("append",()=>{const s=t.length,r=t.byteLength;this.stats.appends+=s-e,this.stats.bytesAppended+=r-i,e=s,i=r})}})}async _handleWakeup(e){if(!this.discovery)try{const[t,i]=await Promise.all([this.local.get("@local/writers-by-wakeup-topic",{wakeupTopic:e}),this.local.get("@local/rooms-by-wakeup-topic",{capabilities:{wakeupTopic:e}})]);if(!t&&!i)return;const s=t?.mailbox||i?.capabilities.mailboxKeyPair.publicKey,r=this.protomuxWakeup.session(s,{active:!1,discoveryKey:e,onpeeractive:e=>{t&&r.announce(e,[{key:t.key,length:1}])}});i&&await this._bumpRoom(i.roomKey)}catch(e){this.onerror(e)}}async _maybeRunMigrations(e,t){3===t&&await require("./lib/core/migrations/3")(this,e),4===t&&await require("./lib/core/migrations/4")(this,e),5===t&&await require("./lib/core/migrations/4")(this,e),t<8&&await require("./lib/core/migrations/7")(e),t<9&&await require("./lib/core/migrations/8")(e)}async _maybeRunPostMigrations(e){4===e&&await require("./lib/core/migrations/4/post")(this),5===e&&await require("./lib/core/migrations/4/post")(this)}async _ensureMigrated(){let e=0;const t=await this.internalEnterLocalTransaction();try{const i=await t.get("@local/migrations"),s=i?i.version:3;s<9&&(e=s,await this._maybeRunMigrations(t,s),await t.insert("@local/migrations",{version:9})),await t.flush()}finally{await this.internalExitLocalTransaction()}const s=await this.local.find("@local/room-migrations-by-priority").toArray(),r=[],o=[],a=[];for(const e of s)this._disabledRooms.has(i.encode(e.roomKey))?a.push(e):e.v3?.privateProfile?r.push(e):o.push(e);if(a.length>0){const e=await this.internalEnterLocalTransaction();try{for(const t of a){const i=await e.get("@local/room-migrations",{roomKey:t.roomKey});await e.delete("@local/room-migrations",t),await ge(e,null,i)}await e.flush()}finally{await this.internalExitLocalTransaction()}}await Promise.all(r.map(e=>this._migrateRoom(e,{migratingRooms:o})));for(const e of o)this._migrateRoom(e).catch(this.onerror);return e}async _migrateRoom(e,{migratingRooms:t}={}){await this._roomMigrations.wait();try{const i=e.errored;if(i||(this.migrationStatus||(this.migrationStatus={remaining:0}),this.migrationStatus.remaining++,this.emit("migration-status",this.migrationStatus)),!e.timestamp){const t=await this.internalEnterLocalTransaction();try{e.timestamp=Date.now();const i=await t.get("@local/room-migrations",e);await t.insert("@local/room-migrations",e),await ge(t,e,i),await t.flush()}finally{await this.internalExitLocalTransaction()}}const s=Date.now()-e.timestamp>Ie;let r=!1,o=!1;try{e.v3&&!s&&await require("./lib/core/migrations/3/room")(this,e.roomKey,e.v3,{migratingRooms:t})}catch(e){this.onerror(e),o=!0,r=!!this.closing}const a=await this.internalEnterLocalTransaction();try{const t=await a.get("@local/room-migrations",e);o?(i||(e.errored=!r),await a.insert("@local/room-migrations",e),await ge(a,e,t)):(await a.delete("@local/room-migrations",e),await ge(a,null,t)),await a.flush()}finally{await this.internalExitLocalTransaction()}i||(this.migrationStatus.remaining--,this.emit("migration-status",this.migrationStatus))}finally{this._roomMigrations.signal()}}async _closeIdleRooms(){const e=[],t=[];for(const i of this.rooms.values())i.refs>0||this.activeRooms.has(i)||++i.idleTicks<this._gcIdleTicks||this.backendAPI.callsByRoomId.get(i.id)||(this.rooms.delete(i.id),this._gcClosingRooms.add(i),e.push(i.close()),t.push(i));await Promise.allSettled(e);for(const e of t)this._gcClosingRooms.delete(e)}internalCloseRoom(e){this.rooms.delete(e.id),this._gcClosingRooms.add(e)}_debugJoinPeer(e){this.logger.info("Call join:",e)}_debugLeavePeer(e){this.logger.info("Call leave:",e)}debugPauseGC(){this._gcTimer&&(clearInterval(this._gcTimer),this._gcTimer=null)}debugResumeGC(){this._gcTimer||(this._gcTimer=setInterval(this._closeIdleRooms.bind(this),this._gcInterval))}async internalDiscoveryCompleted(e,t){try{const e=this._discovering.get(t);if(!e)return;const i=await this.internalEnterLocalTransaction();try{const t=e.roomInfo.capabilities.discoveryKeyPair.publicKey;e.room&&this.internalReleaseRoom(e.room);const s=await i.get("@local/background-sync",{discoveryPublicKey:t});s&&await i.insert("@local/background-sync",{...s,lastSynced:Date.now(),dirty:!1}),await i.flush()}finally{await this.internalExitLocalTransaction()}this._discovering.delete(t),this._discoverySemaphore.signal()}catch(e){this.onerror(e)}}async _startDiscoverySwarming(e,t){if(!await this._discoverySemaphore.wait())return!1;if(this.closing)return!1;const i=this._discovering.get(t);return!!i&&(this.swarmWorker.startDiscoverySwarming(e,{roomId:t}),i.updated&&this.swarmWorker.notifyDiscoveryUpdate(e),!0)}async _refreshDiscoverySwarming(){if(await this._discoveryLock.lock()&&!this.closing)try{const e=await this.internalEnterLocalTransaction();try{for await(const{discoveryPublicKey:t}of e.find("@local/background-sync-by-dirty",{reverse:!0})){const e=await this.local.get("@local/rooms-by-discovery",{capabilities:{discoveryKeyPair:{publicKey:t}}});if(!e)continue;const s=i.encode(e.discoveryKey);if(this._discovering.has(s))continue;const r=this.internalOpenExistingRoom(e.roomKey);this._discovering.set(s,{updated:!1,room:r,roomInfo:e}),this._startDiscoverySwarming(e.capabilities.swarmTopic,s)||this.internalReleaseRoom(r)}await e.flush()}finally{await this.internalExitLocalTransaction()}}catch(e){this.onerror(e)}finally{this._discoveryLock.unlock()}}async scheduleDiscoverySwarmingFromDiscoveryKey(e){const t=await this.local.get("@local/rooms-by-discovery-key",{discoveryKey:e});if(t)return this.scheduleDiscoverySwarming(t.capabilities.discoveryKeyPair.publicKey)}async scheduleDiscoverySwarming(e){const t=await this.internalEnterLocalTransaction();try{const i=await t.get("@local/background-sync",{discoveryPublicKey:e}),s=i?.lastSynced||0;await t.insert("@local/background-sync",{discoveryPublicKey:e,timestamp:Date.now(),lastSynced:s,dirty:!0}),await t.flush()}finally{await this.internalExitLocalTransaction()}this._refreshDiscoverySwarming()}async internalBlobsActiveInRoom(e){const t=i.encode(e),s=this.rooms.get(t);if(!s)return;const r=await this.local.get("@local/rooms",{roomKey:e});if(!r)return;const{capabilities:o}=r;if(!o||!o.mailboxKeyPair)return;try{await s.ready()}catch{return}if(!s.externalBlobs)return;const a=await this._getMirrorKeys(e,r);s.closing||this.blindPeering.addCoreBackground(s.externalBlobs.core,{target:o.mailboxKeyPair.publicKey,keys:a,pick:1})}async _getMirrorKeys(e,t){if(this.debug.disableMirrors)return[];if(!e)return this._blindPeerKeys;const i=t||await this.local.get("@local/rooms",{roomKey:e});return i&&i.config.blindPeers?.length?i.config.blindPeers:this._blindPeerKeys}_relayThrough(e){return e||this.swarm.dht.randomized?this._relayKeys:null}internalVerboseLog(...e){if(this.isNightly||this.isTesting)return;const t=new Date;this.logger.info(t,...e)}internalTime(...e){this.isTesting||console.time(...e)}internalTimeLog(...e){this.isTesting||console.timeLog(...e)}internalTimeEnd(...e){this.isTesting||console.timeEnd(...e)}_handleConnection(e){if(this.closing)return void e.on("error",()=>{});const t=i.encode(e.publicKey),s=i.encode(e.remotePublicKey),r=Date.now();let o=0;this.internalVerboseLog(`got ${e.isInitiator?"client":"server"} connection from ${t} to ${s}`);let a=null;e.once("error",e=>{a=e}),e.once("close",()=>{this.internalVerboseLog(`connection closed to ${s}, with err: ${a} (${Date.now()-r} ms ${o} bytes recv)`)}),e.on("data",e=>{o+=e.byteLength}),this.protomuxWakeup.addStream(e),this.rootCorestore.replicate(e)}async _createInitialIdentity(){const t=e.generateMnemonic(),i=this.tasks.restoreIdentity(Ee,{mnemonic:t,recover:!1});await i.run()}async _loadIdentity(){let e=await this.local.get("@local/identity");if(e||await this._createInitialIdentity(),e=await this.local.get("@local/identity"),this.privateProfile)return;const t=await this.local.get("@local/rooms",{roomKey:e.privateProfileKey});this.privateProfile=await this.internalOpenPrivateProfile({opening:!0}),this.swarmWorker.startActiveSwarming(t.capabilities.swarmTopic),await this.internalRefreshUnreads()}async internalDispatchUpgrade(e,t){if(!e||!t)return;const i=this.internalOpenExistingRoom(e);try{const e=this.batch(i.id);if(0===await e.dispatch("@keet/upgrade",{version:t}))return;if(t>=14){const s=await i.db.get("@keet/system-digest"),r="@keet/migrate-abi",o={header:{timestamp:e.timestamp},from:s?.abi.version,to:t,buildType:this.buildType},a=(await this.contractBundles.loadBundle(t)).encodeOperation(r,o);await e.append(a)}await e.flush()}finally{this.internalReleaseRoom(i)}}async _bumpCache(){try{if(!await this._cacheLock.lock())return;try{await this._processCache()}finally{this._cacheLock.unlock()}}catch(e){this.onerror(e)}}async _processCache(){const e=[];for(;this._pendingTraces.length>0;){const t=this._pendingTraces.pop();e.push(this._updateCache(t))}const t=await Promise.all(e),i=await this.internalEnterLocalTransaction();try{for(const e of t)e&&await i.insert(e.collection,e.record);await i.flush()}finally{await this.internalExitLocalTransaction()}}async _updateCache({roomKey:e,collection:t,record:i}){if("@keet/members"===t){if(i?.profile.avatar){const t=this.internalOpenExistingRoom(e);try{await J(t.blobs,i.profile.avatar)}finally{this.internalReleaseRoom(t)}}return{collection:"@local/members",record:i}}return"@keet/devices"===t?{collection:"@local/devices",record:{roomKey:e,device:i}}:null}_cacheRoomReads(e,t,i){this._pendingTraces.push({roomKey:e,collection:t,record:i}),this._bumpCache()}_autobaseOpen(e,t){let i=null;t.internal||(i=(e,i)=>this._cacheRoomReads(t.key,e,i));const s={autoUpdate:!0,extension:!1,trace:i},r=B.autobaseOpen(e,t),o=Q.bee(e,{hyperdb:s});return{...o,core:o.cores.db,legacy:r,roomKey:t.key}}_autobaseClose(e){return Promise.all([e.db.close(),e.blobs.close(),e.legacy.close()])}async _autobaseUpdate(e,t){const s=new M(this,e,t.base,t);await s.run();const r=i.encode(t.base.discoveryKey);s.runPostUpdate();const o=this._discovering.get(r);o&&(o.updated=!0,this.swarmWorker.notifyDiscoveryUpdate(r))}async _autobaseApply(e,t,i,{dryRun:s=!1}={}){const{blobs:r,db:o,core:a,legacy:n,roomKey:l}=t,c=s?null:this._boundAutobaseTrace;let h=!1,d=0;if(!(a.length>0)){if(d=await V.autobaseApply(e,n,i),d===e.length)return!0;h=n.core.length>0}const y=o.transaction(),u=r.batch();let p=null,m=!1,g=null;try{if(h){const t=e[d];if(s||t?.optimistic)return!0;i.preferFastForward(),await V.migrate(this.store,i.base,n,y,u,this.contractBundles)}const r=await y.get("@keet/system-digest");if(r&&r.abi.version>this.abi.production){if(s)return!1;i.interrupt({unsupportedABI:r.abi.version,digest:r,nodes:e})}g=r?r.abi.version:this.abi.autoupgrade;let o=await this.contractBundles.loadBundle(g),a=await this.contractBundles.loadRouter(g);y.setDefinition(o.spec.contract.hyperdb);for(let r=d;r<e.length;r++){const n=e[r];if(!(w.decode(w.uint,n.value)<2))try{const e=te(n.value),r=$e(y,u,n,i,t,a,{dryRun:s,trace:c,abi:this.abi});await a.dispatch(e,r),e&&"@keet/upgrade"===e.name&&(g=e.value.version,o=await this.contractBundles.loadBundle(g),a=await this.contractBundles.loadRouter(g),y.setDefinition(o.spec.contract.hyperdb))}catch(e){if(Z.isContractError(e))throw e;if(ie.isDispatchError(e))throw Z.DISPATCH_ERROR(e.message);throw e}}}catch(t){"BUNDLE_NOT_AVAILABLE"===t.code?i.interrupt({unsupportedABI:t.abi,digest:null,nodes:e}):Z.isContractError(t)?(m=!0,t.abi=g,t.roomKey=l,s&&!this.isTesting||this.onerror(t)):p=t}const b=!p&&!m&&y.updated();if(s||p||m?await Promise.all([u.close(),y.close()]):await Promise.all([u.flush(),y.flush()]),p)throw p;return b}_autobaseTrace({type:e,value:t}){if("@keet/add-device"!==e)return;const{request:i,response:s,invitation:r}=t,o=r?.metadata.expiration;if(o>0&&o<Date.now())return;const a=i.member.profile.mailbox,n=i.keyPair;a&&n&&this._processAutobaseTrace(a,n,s).catch(this.onerror)}async _processAutobaseTrace(e,t,i){this.onlineBoot.opened||await this.onlineBoot.ready();const s=await this.local.get("@local/identity"),r=await this.local.get("@local/rooms",{roomKey:s.privateProfileKey});v.equals(e,r.capabilities.mailboxKeyPair.publicKey)||this.tasks.joinRoomResponse(t.publicKey,{mailbox:e,keyPair:t,response:i}).runBackground()}async _backgroundDrain(e){let t=await e.next();for(;!t.done&&!this.closing;){const i=await t.value;if(this.closing)return;t=await e.next(i)}}async _safeLoadLegacyUnreads(){try{const e=[];for await(const t of this.local.find("@local/rooms")){const i=await this.local.get("@local/unreads",{roomKey:t.roomKey});i&&e.push(i)}return e}catch{return[]}}async*_migrateUnreadAnchors(){const e=yield this._safeLoadLegacyUnreads(),t=yield this.internalEnterLocalTransaction();try{const i=this.unreads.write(),s=Date.now();for(const{roomKey:r,count:o}of e)i.tryPut(r,{length:o+1,timestamp:s}),yield t.delete("@local/unreads",{roomKey:r});yield i.flush(),yield t.flush()}finally{yield this.internalExitLocalTransaction()}}async*_internalRefreshUnreads(){if(!this.privateProfile)return;let e=yield this.privateProfile.db.get("@keet/system-digest");if(e&&(yield this.privateProfile.internalEnsureUpgraded({opening:!0}),e=yield this.privateProfile.db.get("@keet/system-digest"),x.isFeatureSupported(e.abi.version,x.FEATURES.UNREADS)&&(yield this._unreadsLock.lock())))try{const t=[];let i=!0;const s=x.isFeatureSupported(e.abi.version,x.FEATURES.V2_UNREADS)?"@keet-private-id/unreads-v2":"@keet-private-id/unreads",r=yield this.privateProfile.db.find(s).toArray();for(const{deviceKey:e,key:s}of r)v.equals(e,this.privateProfile.base.local.key)&&(i=!1),t.push(s);if(this.unreads&&ze(t,this.unreads.keys))return;this.unreads&&(yield this.unreads.close(),this.unreads=null);const o=this.privateProfile,a=o.base.encryptionKey,n=this.store.namespace(o.key),l=n.namespace(Pe);yield n.close();const c=yield o.base.wakeupCapability&&o.base.wakeupCapability.key;this.unreads=new L(l,t,{blindPeering:this.blindPeering,encryptionKey:a,target:c}),this.unreads.on("remote-update",()=>this.emit("unread-anchors-changed")),yield this.unreads.ready(),i&&(yield this._backgroundDrain(this._migrateUnreadAnchors()),yield this.privateProfile.dispatch("@keet-private-id/add-unreads-key",{key:this.unreads.local.key}))}finally{this._unreadsLock.unlock()}}internalRefreshUnreads(){return this._disableUnreadSync?Promise.resolve():this._backgroundDrain(this._internalRefreshUnreads())}async internalLoadDiscoveryCore(){try{const e=await this.privateProfile.db.get("@keet-private-id/identity");if(!e||!e.discoveryCoreKey||this.closing)return;if(this.discoveryCore)return;this.discoveryCore=this.store.get({key:e.discoveryCoreKey}),await this.discoveryCore.ready(),this.blindPeering.addCoreBackground(this.discoveryCore,{pick:3})}catch(e){this.onerror(e)}}async internalCreateDiscoveryCore(e){const t=e.getProfileDiscoveryEncryptionKey(),i={version:2,signers:[{publicKey:e.profileDiscoveryKeyPair.publicKey}]};return this.discoveryCore&&await this.discoveryCore.close(),this.discoveryCore=this.store.get({keyPair:e.profileDiscoveryKeyPair,valueEncoding:ce,encryptionKey:t,manifest:i}),await this.discoveryCore.ready(),this.blindPeering.addCoreBackground(this.discoveryCore,{pick:3}),this.discoveryCoreSession=this.swarm.join(this.discoveryCore.discoveryKey,{server:!1,client:!0}),!0}async internalDryRun(e,t,i){const s=i.map((t,i)=>({length:e.base.local.length+1+i,from:e.base.local,value:t,heads:[]}));return!!await this._autobaseApply(s,t,e.base,{dryRun:!0})}internalGetHeads(e,t){const i=[];let s=!1;if(t)for(const r of t.base.heads())e&&v.equals(r.key,e.key)?(s=!0,i.push({key:r.key,length:Math.max(r.length,e.length)})):i.push(r);return e&&!s&&i.push(e),i}async internalGetKeyPair(e){const t=await this.local.get("@local/writers-by-room-key",{roomKey:e});return t?t.keyPair:null}async internalGetMailbox(e){const t=await this.local.get("@local/rooms",{roomKey:e});return t?{key:t.capabilities.mailboxKeyPair.publicKey,discoveryKey:t.capabilities.wakeupTopic}:null}async internalGetEncryptionKey(e){const t=await this.local.get("@local/rooms",{roomKey:e});return!t||t.status.isRemoved?null:t.encryptionKey}internalReleaseRoom(e){if(0===e.refs)throw new Error("Cannot release a room that was not previously opened");e.refs-=1}internalOpenExistingRoom(e,t={}){return this.internalOpenRoom(i.decode(e),null,t)}async internalOpenPrivateProfile({opening:e=!1}={}){e||this.onlineBoot.opened||await this.onlineBoot.ready();const t=await this.local.get("@local/identity"),i=this.internalOpenExistingRoom(t.privateProfileKey,{bigBatches:!0});return await i.ready(),this.privateProfile&&v.equals(i.key,this.privateProfile.key)||(this.privateProfile&&this.internalReleaseRoom(this.privateProfile),this.privateProfile=this.internalOpenExistingRoom(t.privateProfileKey,{bigBatches:!0}),this.unreadsLoading=this.internalRefreshUnreads().catch(()=>null)),this.internalLoadDiscoveryCore(),i}async internalSafeSwapPrivateProfiles(){try{const e=await this.internalOpenPrivateProfile();this.internalReleaseRoom(e)}catch(e){this.onerror(e)}}async internalFeatureSupported(e,t){const s=i.decode(e),r=await this.local.get("@local/rooms",{roomKey:s});return!!r&&this.versions.isFeatureSupported(r.digest.abi.version,t)}internalOpenRoom(e,t,{fastForwardTo:s,mailbox:r,keyPair:o,bigBatches:a}={}){if(this.closing)throw new Error("Keet is closing");const n=i.encode(e),l=this.rooms.get(n);if(l)return l.idleTicks=0,l.refs+=1,l;const c=b.discoveryKey(e),d=this.store.namespace(c);let y=null,u=null,p=null;r||(u=this.internalGetMailbox(e),u.catch(this.onerror)),o||(y=this.internalGetKeyPair(e),y.catch(this.onerror)),t||(p=this.internalGetEncryptionKey(e),p.catch(this.onerror)),r&&(r={key:r,discoveryKey:b.discoveryKey(r)});const m=new h(d,e,{backoff:this.backoff,update:this._autobaseUpdate.bind(this),apply:this._autobaseApply.bind(this),close:this._autobaseClose.bind(this),open:this._autobaseOpen.bind(this),encryptionKey:t||p,wakeupCapability:r||u,keyPair:o||y,fastForward:!this.debug.disableFastForward&&s,ackThreshold:this.ackThreshold,ackInterval:this.ackInterval,wakeup:this.protomuxWakeup,optimistic:!0,encrypted:!0,bigBatches:!!a});m.on("interrupt",e=>{this.logger.warn("room=",m.id,"got interrupted"),this.emit("room-interrupted",n,e)}),m.on("warning",t=>{this.logger.warn("[autobase warning] room=",m.id,"error=",t),this.onerror(t,{roomKey:e,prefix:"AUTOBASE_WARNING"})}),m.on("error",t=>{this.logger.warn("[autobase error] room=",m.id,"error=",t),this.onerror(t,{roomKey:e,prefix:"AUTOBASE_ERROR"})});const g=new Fe(this,n,e,c,m);return this.rooms.set(n,g),g.refs+=1,g}async updateDevice({name:e}={}){this.onlineBoot.opened||await this.onlineBoot.ready();const t={swarmKey:this.swarm.keyPair.publicKey,name:e,isMobile:this.isMobile},i=await this.internalOpenPrivateProfile();try{await i.dispatch("@keet/update-device",{profile:t})}finally{this.internalReleaseRoom(i)}}async internalUpdateProfile(e,{forceUpdateRegistry:t=!1,opening:i=!1}={}){const s=await this.internalGetIdentityInfo({opening:i});if(this.closing)return;if(this._rejectAnonymousProfiles&&!e.displayName&&!t)throw new Error("A member must have a profile name");const r=this.internalCreateMemberUpdate(s,{profile:e}),o=await this.internalOpenPrivateProfile({opening:i});if(this.closing)return;let a=null;try{a=await o.dispatch("@keet/update-member",{member:r})}finally{this.internalReleaseRoom(o)}(a||t)&&r.profile.username&&this.userRegistry?.internalUpdateRegistryMember(r)}async updateProfile(e={}){return this.onlineBoot.opened||await this.onlineBoot.ready(),this.internalUpdateProfile(e)}async internalVerifyOptimisticCore(e){return!await e.getUserData("referrer")}async internalAppendOptimisticOperation(e,t){const i=this.store.get({key:e,exclusive:!0});await i.ready(),await this.internalVerifyOptimisticCore(i)?(await i.append(t),await i.close()):await i.close()}async internalCreateRoom(e={}){const t=e.seed||b.randomBytes(32),i=e.keyPair||b.keyPair(),s=e.encryptionKey||b.randomBytes(32),r=N(i.publicKey),o=b.discoveryKey(r),a=$(r,t),n=a.mailboxKeyPair.publicKey,l=await this.internalEnterLocalTransaction();try{await l.insert("@local/writers",{mailbox:n,keyPair:i,key:r,roomKey:r}),await l.flush()}finally{await this.internalExitLocalTransaction()}const c={header:{timestamp:Date.now()},digest:{abi:{version:this.isExperimental?this.abi.production:this.abi.autoupgrade},creationTime:Date.now(),settings:{roomType:1,...e.settings,isExperimental:this.isExperimental,buildType:this.buildType}},capabilities:{seed:t},config:e.config,identity:e.identity,initialMembers:e.initialMembers,bootstrapDevice:e.bootstrapDevice},h=this.tasks.createRoom(o,{roomKey:r,encryptionKey:s,mailbox:n,keyPair:i,genesis:c,isPrivateProfile:!!e.isPrivateProfile});return await h.run(),this.discovery&&this.discovery.subscribe(a.discoveryKeyPair.publicKey,{since:Date.now()}),this.swarmWorker.refresh().catch(Je),this.internalOpenExistingRoom(r)}async createRoom(e){this.opened||await this.ready();const t=await this.internalCreateRoom(e);return this.internalReleaseRoom(t),t.key}async leaveRoom(e){this.onlineBoot.opened||await this.onlineBoot.ready();const t=await this.local.get("@local/identity"),i=this.internalOpenExistingRoom(e);await i.ready();try{await i.dispatch("@keet/remove-member",{key:t.publicKey})}catch(e){this.onerror(e)}finally{this.internalReleaseRoom(i)}await this.privateProfile.dispatch("@keet-private-id/update-room-status",{roomKey:e,key:Y.IsActive,status:{isActive:!1}})}async activateRoom(e){if(this.closing)return;const t=await this.local.get("@local/rooms",{roomKey:e});if(!t||this.closing)return;const i=this.internalOpenExistingRoom(e);await i.ready(),this.activeRooms.has(i)?this.internalReleaseRoom(i):(this.activeRooms.add(i),this.swarmWorker.startActiveSwarming(t.capabilities.swarmTopic))}async deactivateRoom(e){const t=this.internalOpenExistingRoom(e);if(!this.activeRooms.has(t))return void this.internalReleaseRoom(t);const i=await this.local.get("@local/rooms",{roomKey:e});this.activeRooms.delete(t),this.swarmWorker.stopActiveSwarming(i.capabilities.swarmTopic),this.internalReleaseRoom(t),this.internalReleaseRoom(t)}async internalGetIdentityInfo({opening:e=!1}={}){e||this.onlineBoot.opened||await this.onlineBoot.ready();const t=await this.local.get("@local/identity");if(!t)throw new Error("Identity does not exist");const i=await this.local.get("@local/rooms",{roomKey:t.privateProfileKey});if(!i)throw new Error("Private profile does not exist");return{identity:t,privateProfile:i}}internalGetMemberUpdate(e,{profile:t}={}){const i=e.privateProfile;return i?.selfMember?i.selfMember.proofs?{profile:i.selfMember.profile,attestation:{memberKey:i.selfMember.key,proof:i.selfMember.proofs.profileAttestation}}:this.internalCreateMemberUpdate(e):null}internalCreateDeviceUpdate(t,i,{isPrivateProfile:s=!1,buildType:r=null}={}){const o=t.identity;let a=null;t.privateProfile?.selfDevice&&s&&(a=t.privateProfile.selfDevice.profile.name);const n=t.privateProfile?.digest.settings.buildType,l=he.Production===n;return{profile:{swarmKey:this.swarm.keyPair.publicKey,name:a,isMobile:this.isMobile,buildType:l&&null===r?null:n},attestation:{memberKey:o.publicKey,proof:e.attestData(i,o.deviceKeyPair,o.deviceProof)}}}internalCreateMemberUpdate(t,{profile:i}={}){const s=t.privateProfile?.selfMember?.profile||null,r=t.privateProfile?.capabilities.mailboxKeyPair.publicKey||i.mailbox,o=t.identity,a={...s,...i,mailbox:r,timestamp:Date.now()},n=oe("@keet/member-profile",a);return{profile:a,attestation:{memberKey:o.publicKey,proof:e.attestData(n,o.deviceKeyPair,o.deviceProof)}}}internalGetLinkInfo(e){try{return this.internalDecodeInvitation(e)}catch{}try{return this.internalDecodeContactInfo(e)}catch{}return null}internalDecodeInvitation(e){try{const t="string"==typeof e?f.decode(e):e;return ae("@keet/sendable-invitation",t)}catch{throw pe.INVALID_INVITE(`Invalid invite: ${e}`)}}internalDecodeContactInfo(e){try{const t=v.isBuffer(e)?e:v.from(e,"base64");return ae("@keet/member-contact-info",t)}catch{throw pe.INVALID_CONTACT_INFO(`Invalid contact info: ${e}`)}}internalEncodeContactInfo(e){return oe("@keet/member-contact-info",e)}internalCreateContactInfoStruct(t,i,s={}){const r={...i.selfMember.profile,...s},o=oe("@keet/member-profile",r),a={profile:r,attestation:{memberKey:i.selfMember.key,proof:e.attestData(o,t.deviceKeyPair,t.deviceProof)}};return this.internalEncodeContactInfo(a)}async wakeup(){this.state=we.WAKEUP,this.opened||await this.ready();const e=[this.resume(),this.swarmWorker.background()];await Promise.allSettled(e)}async presuspend(){this.state=we.PRESUSPEND,this.opened||await this.ready(),this.swarmWorker.setServerMode(!1)}async suspend(){if(this.internalVerboseLog("Core, suspend called"),this.state===we.SUSPEND)return;this.state=we.SUSPEND,this.opened||await this.ready(),this.internalVerboseLog("Core, suspend post ready");const e=[this._flushDHTCache()];this.blindPeering&&(this.internalVerboseLog("Core, suspend adding blind peering"),e.push(this.blindPeering.suspend())),this.push&&(this.internalVerboseLog("Core, suspend push"),e.push(this.push.suspend())),this.discovery&&(this.internalVerboseLog("Core, suspend discovery"),e.push(this.discovery.suspend())),await Promise.allSettled(e),this.internalVerboseLog("Core, all done"),await this.rpcClient.suspend(),this.internalVerboseLog("Core, rpc suspended"),await this.swarm.suspend(),this.internalVerboseLog("Core, swarm suspend"),await this.files.server.suspend(),this.internalVerboseLog("Core, files suspend"),await this.store.suspend(),this.internalVerboseLog("Core, store suspended, all done")}async resume(){if(this.state===we.RESUME)return;this.state=we.RESUME,this.opened||await this.ready(),await this.store.resume(),await this.files.server.resume(),this.readOnly||await this.swarm.resume(),await this.rpcClient.resume();const e=[];this.blindPeering&&!this.readOnly&&e.push(this.blindPeering.resume()),this.push&&e.push(this.push.resume()),this.discovery&&e.push(this.discovery.resume()),this.swarmWorker.setServerMode(!0),e.push(this.swarmWorker.unbackground()),await Promise.allSettled(e)}async _createInvitation(e,t){let{expiration:i=0,canAdmin:s=!1,canModerate:r=!1,identityPublicKey:o=null,requiresConfirmation:a=!1,readOnly:n=!1}=t;if("string"==typeof i)if("2h"===i)i=Date.now()+72e5;else if("2d"===i)i=Date.now()+1728e5;else{if("2w"!==i)throw pe.UNKNOWN_EXPIRATION(`Unknown expiration: ${i}`,{roomKey:e.key});i=Date.now()+12096e5}await e.ready();const[{seed:l},c,h]=await Promise.all([e.db.get("@keet/room-capabilities"),H(e.db,e.deviceKey),e.db.get("@keet/system-digest")]);if((r||s)&&!c.status.isModerator)throw pe.MODERATORS_ONLY("Only moderators can create moderator invitations",{roomKey:e.key});const d=$(e.key,l),y=this.swarm.dht.toArray({limit:3});if(n)return oe("@keet/sendable-invitation",{readonly:{roomKey:e.key,encryptionKey:e.encryptionKey,fastForwardTo:e.base.getSystemKey(),seed:l},additionalNodes:y});const u={key:e.key,encryptionKey:e.encryptionKey,fastForwardTo:e.base.getSystemKey()},{invitation:p,seed:m}=W(u,{requiresConfirmation:a,expiration:i,canModerate:r,canAdmin:s});await e.dispatch("@keet/add-invitation",{invitation:p});const g=(await e.db.get("@keet/invitations",{id:p.id})).anchor,b=d.mailboxKeyPair.publicKey,w={identity:null,room:null,contact:null,additionalNodes:y,buildType:h.settings.buildType};return o?w.identity={mailbox:b,invitationSeed:m,anchor:g,identityPublicKey:o}:w.room={mailbox:b,invitationSeed:m,anchor:g},oe("@keet/sendable-invitation",w)}async createRoomInvitation(e,t={}){this.opened||await this.ready();const s=i.decode(e),r=this.internalOpenExistingRoom(s);try{const e=await this._createInvitation(r,t);return f.encode(e)}finally{this.internalReleaseRoom(r)}}async createIdentityInvitation(){this.onlineBoot.opened||await this.onlineBoot.ready();const e=await this.local.get("@local/identity"),t=this.internalOpenExistingRoom(e.privateProfileKey);this.blindPeering.addAutobaseBackground(t.base);try{const i=await this._createInvitation(t,{expiration:"2h",canAdmin:!0,canModerate:!0,requiresConfirmation:!0,identityPublicKey:e.publicKey});return f.encode(i)}finally{this.internalReleaseRoom(t)}}async _startPairing(e,{deviceKeyPair:t,buildType:s=null}={}){this.onlineBoot.opened||await this.onlineBoot.ready();const r=F(e.invitationSeed),o=e.invitationSeed,a=e.mailbox,n=e.anchor,l={key:null,seedId:i.encode(o)},c=await this.local.get("@local/rooms-by-mailbox",{capabilities:{mailboxKeyPair:{publicKey:a}}});let h=null;if(c){if(c.selfMember?.status.isRemoved)throw new Error("Removed member cannot rejoin");h=await this.local.get("@local/room-preferences",{roomKey:c.roomKey})}if(h&&h.status.isActive&&!h.status.isReadOnly)return l.key=i.encode(c.roomKey),l;const d=b.keyPair(),y=await this.store.createKeyPair(G(d.publicKey)),u=this.store.get({keyPair:y,active:!1});await u.ready();const p={key:u.key,length:1};await u.close();let m=null;t&&(m={writerKey:u.key,publicKey:e.identityPublicKey,devicePublicKey:t.publicKey});const g={id:r,mailbox:a,inviter:n,identity:m,initiator:p,responseKeyPair:d,invitationSeed:o,buildType:s},w=await this.privateProfile.db.find("@keet-private-id/pending-invitations").toArray();for(const e of w)v.equals(e.mailbox,g.mailbox)&&await this.privateProfile.dispatch("@keet-private-id/remove-pending-invitation",e);return await this.privateProfile.dispatch("@keet-private-id/add-pending-invitation",{invitation:g}),l}async _openReadOnlyRoom({roomKey:e,encryptionKey:t,seed:s,fastForwardTo:r}){this.onlineBoot.opened||await this.onlineBoot.ready();const{mailboxKeyPair:o,swarmTopic:a}=$(e,s),n=this.internalOpenRoom(e,t,{mailbox:o.publicKey,fastForwardTo:{key:r}});return await n.ready(),await this.privateProfile.dispatch("@keet-private-id/add-room",{roomKey:e,encryptionKey:t,mailbox:o.publicKey,fastForwardTo:r,isReadOnly:!0}),this.swarmWorker.startDiscoverySwarming(a,{roomId:i.encode(e)}),{key:i.encode(e),seedId:i.encode(s)}}async startPairingRoom(e,t){this.onlineBoot.opened||await this.onlineBoot.ready();const i=this.internalDecodeInvitation(e),s=await this.local.get("@local/rooms",{roomKey:this.privateProfile.key}),r=i.buildType,o=s.digest.settings.buildType||he.Production;if(r&&r!==o)throw pe.INVALID_BUILD_TYPE();if(i.readonly)return this._openReadOnlyRoom(i.readonly);if(!i.room)throw pe.INVALID_INVITATION_TYPE("Invalid room invitation");return this._startPairing(i.room,{...t,buildType:r})}async startPairingIdentity(e){this.onlineBoot.opened||await this.onlineBoot.ready();const t=this.internalDecodeInvitation(e),i=await this.local.get("@local/rooms",{roomKey:this.privateProfile.key}),s=t.buildType,r=i.digest.settings.buildType||he.Production;if(s&&s!==r)throw pe.INVALID_BUILD_TYPE();if(!t.identity)throw pe.INVALID_INVITATION_TYPE("Invalid device sync invitation");const o=j(t.identity.identityPublicKey),a=await this.store.createKeyPair(o);return this._startPairing(t.identity,{deviceKeyPair:a,buildType:s})}async stopPairing(e){this.opened||await this.ready();const t=await this.internalOpenPrivateProfile();try{if(!await t.db.get("@keet-private-id/pending-invitations",{id:e}))return;await t.dispatch("@keet-private-id/remove-pending-invitation",{id:e})}finally{this.internalReleaseRoom(t)}}async rotateWriter(e){this.onlineBoot.opened||await this.onlineBoot.ready();const[t,i,s]=await Promise.all([this.local.get("@local/writers-by-room-key",{roomKey:e}),this.local.get("@local/rooms",{roomKey:e}),this.privateProfile.db.get("@keet-private-id/rooms",{roomKey:e})]);if(!i||!t||!s)return;const r=await this.internalEnterLocalTransaction();try{await r.delete("@local/writers",t),await r.flush()}finally{await this.internalExitLocalTransaction()}this.tasks.joinRoomKeys(s.mailbox,{keys:s}).runBackground()}async getRecoveryPhrase(){this.onlineBoot.opened||await this.onlineBoot.ready();const e=(await this.local.get("@local/identity")).entropy;return e?E({entropy:e}):null}async getEncryptedRecoveryPhrase(e){if("string"!=typeof e)throw new Error("Password required");if(0===e.length)throw new Error("Password should not be empty");const t=await this.getRecoveryPhrase();if("string"!=typeof t)throw new Error("Recovery phrase reading failed");if(0===t.length)throw new Error("Recovery phrase reading failed");return S.encryptPhrase(t,e)}decryptEncryptedRecoveryPhrase(e,t){if(!ArrayBuffer.isView(e))throw new Error("Encrypted phrase should be an ArrayBuffer view");if(0===e.byteLength)throw new Error("Encrypted phrase should not be empty");if("string"!=typeof t)throw new Error("Password required");if(0===t.length)throw new Error("Password should not be empty");return S.decryptPhrase(e,t)}freeRecoveryPhrase(e){S.free(e)}async storeRecoveryPhrase(t){this.onlineBoot.opened||await this.onlineBoot.ready();const i=await e.from({mnemonic:t}),s=await this.local.get("@local/identity"),r=await this.local.get("@local/rooms",{roomKey:s.privateProfileKey});if(!v.equals(s.publicKey,i.identityPublicKey))throw new Error("Wrong recovery phrase");if(!r.identity.discoveryCoreKey){if(await this.internalCreateDiscoveryCore(i),this.discoveryCore.length>0){const e=Math.floor((Date.now()-Ae)/1e3);await this.discoveryCore.truncate(this.discoveryCore.length,e)}await this.discoveryCore.append({version:1,timestamp:Date.now(),key:r.roomKey,mailbox:r.capabilities.mailboxKeyPair.publicKey}),await this.privateProfile.dispatch("@keet-private-id/update-identity",{identity:{publicKey:i.identityPublicKey,discoveryCoreKey:this.discoveryCore.key}})}}async confirmRecoveryPhrase({persist:e=!1}={}){this.onlineBoot.opened||await this.onlineBoot.ready();const t=await this.local.get("@local/identity");e||(t.entropy=null),t.status.isConfirmed=!0;const i=await this.internalEnterLocalTransaction();try{await i.insert("@local/identity",t),await i.flush()}finally{await this.internalExitLocalTransaction()}this.emit("identity-changed")}async restoreIdentity(t,{create:i=!0}={}){this.onlineBoot.opened||await this.onlineBoot.ready();const[s]=await Promise.all([this.local.get("@local/identity"),e.from({mnemonic:t})]),r=b.discoveryKey(s.privateProfileKey),o=this.tasks.restoreIdentity(r,{mnemonic:t,recover:!1===i,profileDiscoveryTimeout:this._profileDiscoveryTimeout,buildType:this.buildType});await o.run();const a=await this.local.get("@local/identity"),n=await this.local.get("@local/rooms",{roomKey:a.privateProfileKey});this.privateProfile=await this.internalOpenPrivateProfile(),this.swarmWorker.startActiveSwarming(n.capabilities.swarmTopic)}async acceptJoinRequest(e,t){this.onlineBoot.opened||await this.onlineBoot.ready();const i=this.internalOpenExistingRoom(e);try{const s=await i.db.get("@keet/join-requests",{deviceKey:t});if(!s)return;const r=s.request;let o=null;if(r.identity){const i=await this.local.get("@local/identity");if(!v.equals(i.privateProfileKey,e))throw new Error("Accepting an identity device join request on a room that is not your private profile");o=je(i,t,r.identity.devicePublicKey)}await i.dispatch("@keet/accept-join-request",{deviceKey:t,identity:o})}finally{this.internalReleaseRoom(i)}}async rejectJoinRequest(e,t){this.opened||await this.ready();const i=this.internalOpenExistingRoom(e);try{if(!await i.db.get("@keet/join-requests",{deviceKey:t}))throw new Error("Join request for that device key does not exist");await i.dispatch("@keet/reject-join-request",{deviceKey:t})}finally{this.internalReleaseRoom(i)}}async _sendContactRequest(e){this.onlineBoot.opened||await this.onlineBoot.ready();const t=await this.internalOpenPrivateProfile();try{this.tasks.sendContactRequest(e.memberKey,e).runBackground()}finally{this.internalReleaseRoom(t)}}async sendContactRequestFromContact(e,{message:t}){const i=(e=this.internalDecodeContactInfo(e)).attestation.memberKey,s=e.attestation.memberKey;return this._sendContactRequest({roomKey:i,memberKey:s,message:t,contactInfo:e})}async sendContactRequest(e,t,{message:i}){return this._sendContactRequest({roomKey:e,memberKey:t,message:i})}async blockContact(e){this.onlineBoot.opened||await this.onlineBoot.ready();const[t,i,s]=await Promise.all([this.privateProfile.db.findOne("@keet-private-id/contact-requests-by-member",{gte:{memberKey:e},lte:{memberKey:e}}),this.local.get("@local/contacts",{memberKey:e}),this.local.get("@local/members",{key:e})]),r=i?.mailbox||s?.profile.mailbox||t?.sender?.mailbox;if(!r)throw new Error("Cannot find contact");await this.privateProfile.dispatch("@keet-private-id/add-contact",{contact:{memberKey:e,mailbox:r,status:{isBlocked:!0}}})}async unblockContact(e){this.onlineBoot.opened||await this.onlineBoot.ready();const[t,i,s]=await Promise.all([this.privateProfile.db.findOne("@keet-private-id/contact-requests-by-member",{gte:{memberKey:e},lte:{memberKey:e}}),this.local.get("@local/contacts",{memberKey:e}),this.local.get("@local/members",{key:e})]),r=i?.mailbox||s?.profile.mailbox||t?.sender?.mailbox;if(!r)throw new Error("Cannot find contact");await this.privateProfile.dispatch("@keet-private-id/add-contact",{contact:{memberKey:e,mailbox:r,status:{isBlocked:!1}}})}async _flushDHTCache(){if(this.readOnly)return;const e=this.swarm.dht.toArray({limit:Oe});try{await this._setCachedDHTNodes(e)}catch(e){this.onerror(e)}}async getDHTSettings(){const e=await this.local.get("@local/hyperdht")||{};return{nodes:e.nodes||[],concurrency:e.concurrency||X.concurrency,maxWindow:e.maxWindow||X.maxWindow,randomPunchInterval:e.randomPunchInterval||X.randomPunchInterval,connectionKeepAlive:e.connectionKeepAlive||X.connectionKeepAlive}}async _setCachedDHTNodes(e){const t=await this.internalEnterLocalTransaction();try{const i={...await this.getDHTSettings(),nodes:e};await t.insert("@local/hyperdht",i),await t.flush()}finally{await this.internalExitLocalTransaction()}}batch(e){return new Ne(this,e)}async dispatch(e,t,i){this.opened||await this.ready();const s=this.internalOpenExistingRoom(e);try{return await s.dispatch(t,i)}catch(e){this.onerror(e)}finally{this.internalReleaseRoom(s)}}async dispatchBatch(e,t){this.opened||await this.ready();const i=this.internalOpenExistingRoom(e);try{await i.dispatchBatch(t)}finally{this.internalReleaseRoom(i)}}async selfDestruct({confirm:e}={}){if("do not go gentle into that good night"!==e)throw new Error("Must confirm self destruction");await this.ready(),await this.close();const t=Math.random().toString(16).slice(2),i=P.join(this.dir,"gc",t);try{await k.promises.mkdir(i,{recursive:!0})}catch{}for(const e of["cores","db","cache","app-references"])try{await k.promises.rename(P.join(this.dir,e),P.join(i,e))}catch{}await k.promises.rm(i,{recursive:!0})}static from(e,t){const i=K.migrate(e),s=i.active()||i.create({name:"default"});i.gc({delay:fe});const r=new this(s.storage,{...t,logout:async()=>{i.remove(s),await new Promise(e=>setTimeout(e,1e3)),await r.close(),i.gc({delay:fe})}});return{profiles:i,keet:r}}static registerRPC(e,t,i){return new D(e,t,i)}};const We={interrupt:Je,addWriter:Je,removeWriter:Je,ackWriter:Je,preferFastForward:Je,removeable:Ye,createAnchor:(e,t)=>({key:e,length:t})};function $e(e,t,i,s,r,o,{abi:a,trace:n,dryRun:l=!1}={}){return new Q.OpContext(e,t,{fork:r.core.fork,writer:{key:i.from.key,seq:i.length-1},genesis:0===r.core.length,bootstrap:s.bootstrap,router:o,hostcalls:l?We:s,dryRun:l,abi:a,trace:n})}function je(t,i,s){const r=e.attestDevice(s,t.deviceKeyPair,t.deviceProof),o=e.attestData(i,t.deviceKeyPair,t.deviceProof);return{privateProfileIdentity:{memberKey:t.publicKey,proof:o},deviceProof:r}}function Ge(e){return"@keet/add-chat-message"===e||"@keet/start-call"===e||"@keet/join-call"===e||"@keet/leave-call"===e||"@keet/end-call"===e}function He(e){switch(e){case"nightly":return he.Nightly;case"internal":return he.Internal;case"production":return he.Production;default:throw pe.INVALID_BUILD_TYPE()}}function Je(){}function Ye(){return!0}function ze(e,t){if(e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(!v.equals(e[i],t[i]))return!1;return!0}
@holepunchto/keet-core/lib/api/v1/api.json +893 -0
……@@ -0,0 +1,893 @@
1[
2 {
3 "api": "swarm",
4 "methods": [
5 {
6 "name": "ready"
7 }
8 ]
9 },
10 {
11 "api": "core",
12 "methods": [
13 {
14 "name": "getVersion"
15 },
16 {
17 "name": "subscribeRoomVersion",
18 "subscription": true
19 },
20 {
21 "name": "subscribeForceUpdates",
22 "subscription": true
23 },
24 {
25 "name": "upgradeRoom"
26 },
27 {
28 "name": "updateUserSettings"
29 },
30 {
31 "name": "getIdentity"
32 },
33 {
34 "name": "subscribeIdentity",
35 "subscription": true
36 },
37 {
38 "name": "generateIdentity"
39 },
40 {
41 "name": "restoreIdentity"
42 },
43 {
44 "name": "getRecoveryPhrase"
45 },
46 {
47 "name": "getEncryptedRecoveryPhrase"
48 },
49 {
50 "name": "decryptEncryptedRecoveryPhrase"
51 },
52 {
53 "name": "freeRecoveryPhrase"
54 },
55 {
56 "name": "confirmRecoveryPhrase"
57 },
58 {
59 "name": "storeRecoveryPhrase"
60 },
61 {
62 "name": "confirmIdentity"
63 },
64 {
65 "name": "confirmPairingRequest"
66 },
67 {
68 "name": "subscribeIdentityPairingRequests",
69 "subscription": true,
70 "dedup": false
71 },
72 {
73 "name": "updateIdentityProfile"
74 },
75 {
76 "name": "updateIdentityDevice"
77 },
78 {
79 "name": "removeIdentityDevice"
80 },
81 {
82 "name": "getLinkInfo"
83 },
84 {
85 "name": "startPairingIdentity"
86 },
87 {
88 "name": "pairIdentity"
89 },
90 {
91 "name": "createRoom"
92 },
93 {
94 "name": "pairRoom"
95 },
96 {
97 "name": "leaveRoom"
98 },
99 {
100 "name": "startPairingRoom"
101 },
102 {
103 "name": "stopPairingRoom"
104 },
105 {
106 "name": "subscribePendingRooms",
107 "subscription": true
108 },
109 {
110 "name": "subscribePushNotificationChanges",
111 "subscription": true
112 },
113 {
114 "name": "subscribeActivateRoom",
115 "subscription": true
116 },
117 {
118 "name": "getRoomKeys"
119 },
120 {
121 "name": "resyncPrivateProfile"
122 },
123 {
124 "name": "getTipSize"
125 },
126 {
127 "name": "bookmark"
128 },
129 {
130 "name": "unbookmark"
131 },
132 {
133 "name": "subscribeBookmarks",
134 "subscription": true
135 },
136 {
137 "name": "getRoomInfo"
138 },
139 {
140 "name": "subscribeRoomInfo",
141 "subscription": true
142 },
143 {
144 "name": "searchRooms"
145 },
146 {
147 "name": "getRecentRooms"
148 },
149 {
150 "name": "getLocalRoomMetadata"
151 },
152 {
153 "name": "subscribeRecentRooms",
154 "subscription": true
155 },
156 {
157 "name": "subscribeFavoriteRooms",
158 "subscription": true
159 },
160 {
161 "name": "subscribeUnreadActivity",
162 "subscription": true
163 },
164 {
165 "name": "setRoomUnread"
166 },
167 {
168 "name": "bumpRoomPriority"
169 },
170 {
171 "name": "addDevice"
172 },
173 {
174 "name": "removeDevice"
175 },
176 {
177 "name": "getDevice"
178 },
179 {
180 "name": "getDevices"
181 },
182 {
183 "name": "getDevicesByMemberId"
184 },
185 {
186 "name": "getCurrentDeviceId"
187 },
188 {
189 "name": "moveIndexer"
190 },
191 {
192 "name": "subscribeDevice",
193 "subscription": true
194 },
195 {
196 "name": "subscribeDevices",
197 "subscription": true
198 },
199 {
200 "name": "createIdentityInvitation"
201 },
202 {
203 "name": "createInvitation"
204 },
205 {
206 "name": "updateMember"
207 },
208 {
209 "name": "isMemberMuted"
210 },
211 {
212 "name": "getMember"
213 },
214 {
215 "name": "removeMember"
216 },
217 {
218 "name": "getMembers"
219 },
220 {
221 "name": "getActiveMembers"
222 },
223 {
224 "name": "subscribeActiveMembers",
225 "subscription": true
226 },
227 {
228 "name": "getModerators"
229 },
230 {
231 "name": "getMemberCount"
232 },
233 {
234 "name": "waitUntilJoined"
235 },
236 {
237 "name": "getMemberForDevice"
238 },
239 {
240 "name": "subscribeMemberCount",
241 "subscription": true
242 },
243 {
244 "name": "subscribeMember",
245 "subscription": true
246 },
247 {
248 "name": "subscribeMembers",
249 "subscription": true
250 },
251 {
252 "name": "subscribeModerators",
253 "subscription": true
254 },
255 {
256 "name": "subscribeMemberForDevice",
257 "subscription": true
258 },
259 {
260 "name": "changeMemberRole"
261 },
262 {
263 "name": "muteMember"
264 },
265 {
266 "name": "unmuteMember"
267 },
268 {
269 "name": "getSearchMembers"
270 },
271 {
272 "name": "getPushNotificationMembers"
273 },
274 {
275 "name": "subscribeSearchMembers",
276 "subscription": true
277 },
278 {
279 "name": "subscribePushNotificationMembers",
280 "subscription": true
281 },
282 {
283 "name": "getContactInfo"
284 },
285 {
286 "name": "subscribeContactInfo",
287 "subscription": true
288 },
289 {
290 "name": "getSelfContactInfo"
291 },
292 {
293 "name": "blockMember"
294 },
295 {
296 "name": "unblockMember"
297 },
298 {
299 "name": "getBlockedMembers"
300 },
301 {
302 "name": "subscribeBlockedMembers",
303 "subscription": true
304 },
305 {
306 "name": "getConnectedMembers"
307 },
308 {
309 "name": "subscribeConnectedMembers",
310 "subscription": true
311 },
312 {
313 "name": "updateConfig"
314 },
315 {
316 "name": "getConfig"
317 },
318 {
319 "name": "subscribeConfig",
320 "subscription": true
321 },
322 {
323 "name": "updateRoomSettings"
324 },
325 {
326 "name": "disableMembershipEvents"
327 },
328 {
329 "name": "enableMembershipEvents"
330 },
331 {
332 "name": "addChatMessage"
333 },
334 {
335 "name": "updateChatMessage"
336 },
337 {
338 "name": "removeChatMessage"
339 },
340 {
341 "name": "forwardChatMessage"
342 },
343 {
344 "name": "pinChatMessage"
345 },
346 {
347 "name": "unpinChatMessage"
348 },
349 {
350 "name": "startCall"
351 },
352 {
353 "name": "joinCall"
354 },
355 {
356 "name": "leaveCall"
357 },
358 {
359 "name": "endCall"
360 },
361 {
362 "name": "addCallStream"
363 },
364 {
365 "name": "removeCallStream"
366 },
367 {
368 "name": "getActiveCalls"
369 },
370 {
371 "name": "getCalls"
372 },
373 {
374 "name": "subscribeActiveCalls",
375 "subscription": true
376 },
377 {
378 "name": "subscribeCalls",
379 "subscription": true
380 },
381 {
382 "name": "addCallStartedEvent"
383 },
384 {
385 "name": "addCallHangupEvent"
386 },
387 {
388 "name": "addCallMissedEvent"
389 },
390 {
391 "name": "addLocationSharedEvent"
392 },
393 {
394 "name": "addRoomAvatarChangedEvent"
395 },
396 {
397 "name": "addEvent"
398 },
399 {
400 "name": "removeEvent"
401 },
402 {
403 "name": "getChatMessage"
404 },
405 {
406 "name": "getChatMessageById"
407 },
408 {
409 "name": "getChatMessages"
410 },
411 {
412 "name": "getPinnedChatMessages"
413 },
414 {
415 "name": "getChatLength"
416 },
417 {
418 "name": "subscribeChatMessages",
419 "subscription": true
420 },
421 {
422 "name": "subscribeChatLength",
423 "subscription": true
424 },
425 {
426 "name": "searchChatMessages"
427 },
428 {
429 "name": "createChatSearchStream",
430 "subscription": true
431 },
432 {
433 "name": "sendDMFromContact"
434 },
435 {
436 "name": "sendDMRequest"
437 },
438 {
439 "name": "sendInvitations"
440 },
441 {
442 "name": "updatePrivateMailboxRecord"
443 },
444 {
445 "name": "getPrivateMailboxRecords"
446 },
447 {
448 "name": "subscribePrivateMailbox",
449 "subscription": true
450 },
451 {
452 "name": "getSentPrivateMailboxRecords"
453 },
454 {
455 "name": "subscribeSentPrivateMailbox",
456 "subscription": true
457 },
458 {
459 "name": "getDmByMemberId"
460 },
461 {
462 "name": "getDmRequestsByStatus"
463 },
464 {
465 "name": "subscribeDmRequestsByStatus",
466 "subscription": true
467 },
468 {
469 "name": "acceptDmRequest"
470 },
471 {
472 "name": "rejectDmRequest"
473 },
474 {
475 "name": "addReaction"
476 },
477 {
478 "name": "removeReaction"
479 },
480 {
481 "name": "getLatestReactions"
482 },
483 {
484 "name": "getReactions"
485 },
486 {
487 "name": "subscribeReactions",
488 "subscription": true
489 },
490 {
491 "name": "addChatReport"
492 },
493 {
494 "name": "removeChatReport"
495 },
496 {
497 "name": "reportMember"
498 },
499 {
500 "name": "getReportedMembers"
501 },
502 {
503 "name": "subscribeReportedMembers",
504 "subscription": true
505 },
506 {
507 "name": "getReportedMessages"
508 },
509 {
510 "name": "subscribeReportedMessages",
511 "subscription": true
512 },
513 {
514 "name": "addFileBlob"
515 },
516 {
517 "name": "addFile"
518 },
519 {
520 "name": "saveFileBlob"
521 },
522 {
523 "name": "saveFile"
524 },
525 {
526 "name": "subscribeAddFile",
527 "subscription": true
528 },
529 {
530 "name": "sendFile"
531 },
532 {
533 "name": "removeFile"
534 },
535 {
536 "name": "refreshFileLinks"
537 },
538 {
539 "name": "subscribeFileInfo",
540 "subscription": true
541 },
542 {
543 "name": "clearAllFiles"
544 },
545 {
546 "name": "getFileEntry"
547 },
548 {
549 "name": "getLocalFiles"
550 },
551 {
552 "name": "getFiles"
553 },
554 {
555 "name": "startDownload"
556 },
557 {
558 "name": "cancelDownload"
559 },
560 {
561 "name": "clearFile"
562 },
563 {
564 "name": "unclearFile"
565 },
566 {
567 "name": "getFileCleared"
568 },
569 {
570 "name": "subscribeFileCleared",
571 "subscription": true
572 },
573 {
574 "name": "subscribeFiles",
575 "subscription": true
576 },
577 {
578 "name": "getStats"
579 },
580 {
581 "name": "subscribeProgress",
582 "subscription": true
583 },
584 {
585 "name": "subscribeSystemUpdateRequest",
586 "subscription": true
587 },
588 {
589 "name": "lookupUsername"
590 },
591 {
592 "name": "lookupUserByMemberId"
593 },
594 {
595 "name": "subscribeUsername",
596 "subscription": true
597 },
598 {
599 "name": "registerUsername"
600 },
601 {
602 "name": "updateUsername"
603 },
604 {
605 "name": "searchUsername"
606 },
607 {
608 "name": "getReservationsByKey"
609 },
610 {
611 "name": "checkUsername"
612 },
613 {
614 "name": "updateRoomPreferences"
615 },
616 {
617 "name": "getRoomPreferences"
618 },
619 {
620 "name": "audit"
621 },
622 {
623 "name": "close"
624 },
625 {
626 "name": "suspend"
627 },
628 {
629 "name": "resume"
630 },
631 {
632 "name": "getDebugFlags"
633 },
634 {
635 "name": "updateDebugFlag"
636 },
637 {
638 "name": "repair"
639 },
640 {
641 "name": "rotateWriter"
642 },
643 {
644 "name": "getRoomStats"
645 },
646 {
647 "name": "compact"
648 },
649 {
650 "name": "setUnread"
651 },
652 {
653 "name": "getUnread"
654 },
655 {
656 "name": "getUnreadAnchor"
657 },
658 {
659 "name": "setUnreadAnchor"
660 },
661 {
662 "name": "subscribeUnreadAnchor",
663 "subscription": true
664 },
665 {
666 "name": "subscribeSentLength",
667 "subscription": true
668 },
669 {
670 "name": "createErrorStream",
671 "subscription": true
672 },
673 {
674 "name": "boot"
675 },
676 {
677 "name": "subscribeErrors",
678 "subscription": true
679 },
680 {
681 "name": "setCallRingingId"
682 },
683 {
684 "name": "subscribeNotifications",
685 "subscription": true
686 },
687 {
688 "name": "getDHTSettings"
689 },
690 {
691 "name": "updateDHTSettings"
692 },
693 {
694 "name": "setRoomFavorite"
695 },
696 {
697 "name": "clearOldFiles"
698 }
699 ]
700 },
701 {
702 "api": "preferences",
703 "methods": [
704 {
705 "name": "subscribe",
706 "subscription": true
707 },
708 {
709 "name": "update"
710 },
711 {
712 "name": "query"
713 }
714 ]
715 },
716 {
717 "api": "call",
718 "methods": [
719 {
720 "name": "authorize"
721 },
722 {
723 "name": "deauthorize"
724 },
725 {
726 "name": "joinPeer"
727 },
728 {
729 "name": "leavePeer"
730 },
731 {
732 "name": "requestTrack"
733 },
734 {
735 "name": "unrequestTrack"
736 },
737 {
738 "name": "signalMedia"
739 },
740 {
741 "name": "getRequestedTracks"
742 },
743 {
744 "name": "subscribeRequestedTracks",
745 "subscription": true
746 },
747 {
748 "name": "subscribeMediaSignals",
749 "subscription": true
750 },
751 {
752 "name": "subscribeProxyUpdates",
753 "subscription": true
754 },
755 {
756 "name": "shareTrack"
757 },
758 {
759 "name": "unshareTrack"
760 },
761 {
762 "name": "relayTrack"
763 },
764 {
765 "name": "unrelayTrack"
766 },
767 {
768 "name": "subscribeAvailableTracks",
769 "subscription": true
770 },
771 {
772 "name": "getAvailableTracks"
773 },
774 {
775 "name": "setPresent"
776 },
777 {
778 "name": "setNotPresent"
779 },
780 {
781 "name": "subscribePresence",
782 "subscription": true
783 },
784 {
785 "name": "getPresence"
786 }
787 ]
788 },
789 {
790 "api": "tracing",
791 "methods": [
792 {
793 "name": "start"
794 },
795 {
796 "name": "addFrontendTrace"
797 }
798 ]
799 },
800 {
801 "api": "console",
802 "methods": [
803 {
804 "name": "log"
805 },
806 {
807 "name": "warn"
808 },
809 {
810 "name": "error"
811 }
812 ]
813 },
814 {
815 "api": "network",
816 "methods": [
817 {
818 "name": "subscribe",
819 "subscription": true
820 },
821 {
822 "name": "query"
823 },
824 {
825 "name": "subscribeDebug",
826 "subscription": true
827 },
828 {
829 "name": "debug"
830 }
831 ]
832 },
833 {
834 "api": "error",
835 "methods": [
836 {
837 "name": "subscribe",
838 "subscription": true
839 }
840 ]
841 },
842 {
843 "api": "debug",
844 "methods": [
845 {
846 "name": "getCurrentRoomStats"
847 },
848 {
849 "name": "enableInspector"
850 },
851 {
852 "name": "disableInspector"
853 },
854 {
855 "name": "getInspectorKey"
856 },
857 {
858 "name": "processTop"
859 },
860 {
861 "name": "heapSnapshot"
862 },
863 {
864 "name": "hash"
865 },
866 {
867 "name": "generateSyntheticError"
868 },
869 {
870 "name": "resetUnreads"
871 }
872 ]
873 },
874 {
875 "api": "pear",
876 "methods": [
877 {
878 "name": "teardown"
879 },
880 {
881 "name": "selfDestruct"
882 }
883 ]
884 },
885 {
886 "api": "feedback",
887 "methods": [
888 {
889 "name": "send"
890 }
891 ]
892 }
893]
@holepunchto/keet-core/lib/api/v1/calls.js +1 -0
……@@ -0,0 +1 @@
1const e=require("hypercore-id-encoding");module.exports=class{constructor(i,{call:t,prev:n,deviceKey:o,debug:h}){this.call=t,this.isOldEngine=1===t?.version||1===n?.version,this.connections=this.isOldEngine?new s(i,n,h):null,this.deviceId=o?e.encode(o):null}get joined(){return this.connections?this.connections.joined:new Set}get callId(){return this.call?this.call.callId:null}get version(){return this.call?this.call.version:0}get ended(){return!this.call||!this.deviceId}_close(){this.connections&&this.connections.close()}refresh(){if(this.connections){if(this.ended)return this._close();for(const e of this.call.members)for(const s of e.devices)this.connections.shouldJoin(s.swarmId);this.connections.refresh()}}};class s{constructor(e,s,i){this.swarm=e,this.debug=i,this._prevJoined=s?s.joined:new Set,this.joined=new Set(this._prevJoined),this._shouldJoin=new Set,this._shouldLeave=new Set(this._prevJoined)}get swarmId(){return e.encode(this.swarmKey)}get swarmKey(){return this.swarm.keyPair.publicKey}shouldJoin(e){e!==this.swarmId&&(this._shouldJoin.add(e),this._shouldLeave.delete(e))}refresh(){this._joinPeers(),this._leavePeers()}close(){this._leavePeers()}_joinPeers(){for(const s of this._shouldJoin)this._prevJoined.has(s)||(this.swarm.joinPeer(e.decode(s)),this.joined.add(s),this.debug.joinPeer&&this.debug.joinPeer(s));this._shouldJoin=new Set}_leavePeers(){for(const s of this._shouldLeave)this.swarm.leavePeer(e.decode(s)),this.joined.delete(s),this.debug.leavePeer&&this.debug.leavePeer(s);this._shouldLeave=new Set}}
@holepunchto/keet-core/lib/api/v1/decode.js +1 -0
……@@ -0,0 +1 @@
1const e=require("hypercore-id-encoding"),t=require("b4a");function n({start:e,length:t,content:n,preview:r}){return r?.file&&(r.file=d(r.file)),{range:{start:e,length:t},url:n,preview:r}}function r(t){if(!t)return null;const{id:n,key:r,blob:i}=t;return{id:n,key:n?e.decode(n):r,blob:i}}function i(t){if(!t)return null;const{id:n,key:r,path:i,version:l,size:d}=t;return{id:n,key:n?e.decode(n):r,path:i,version:l,size:d}}function l(e){return e?{...e,inlined:e.inlined?t.from(e.inlined,"base64"):null,externalBlob:r(e.externalBlob),externalDrive:i(e.externalDrive)}:{}}function d(e){return e&&(e.pointer||e.preview)?(e.metadata?.userdata&&(e.metadata.userdata=t.from(e.metadata.userdata,"base64")),{...e,pointer:l(e.pointer),preview:a(e.preview)}):null}function a(e){return e?{small:d(e.small),medium:d(e.medium),large:d(e.large)}:null}function o(t,r){const i=r.mentions?.map(t=>({range:{start:t.start,length:t.length},memberKey:e.decode(t.memberId)}))||null,l=r.translations?.map(e=>({range:{start:e.start,length:e.length},language:e.language,text:e.text}))||null,a={httpLink:r?.httpLinks?.map(n),pearLink:r?.pearLinks?.map(n),mention:i,translation:l,bold:r.bold||[],italic:r.italic||[],code:r.code||[],emoji:r?.emoji?.map(({start:e,length:t,content:n})=>({range:{start:e,length:t},content:n})),codeBlock:r.codeBlock||[],strike:r.strike||[]},o={callStarted:!0===r?.callStarted,callHangup:!0===r?.callHangup,callMissed:!0===r?.callMissed,locationShared:r?.locationShared};let s=null;r.replyTo&&(s=g(r.replyTo));const c=!0===r.forwarded,u=[];for(const e of r?.files||[]){const t=d(e);t&&u.push(t)}return{text:t,replyTo:s,forwarded:c,display:a,files:u,event:o}}function s({gt:t,gte:n,lt:r,lte:i,limit:l,reverse:d}={}){return{limit:l,reverse:d,gt:t?{key:e.decode(t)}:null,gte:n?{key:e.decode(n)}:null,lt:r?{key:e.decode(r)}:null,lte:i?{key:e.decode(i)}:null}}function c(e,t){const n={...t},r=n.prefix||0;return Number.isInteger(n.gt)&&(n.gt={id:{thread:r,index:t.gt}}),Number.isInteger(n.gte)&&(n.gte={id:{thread:r,index:t.gte}}),Number.isInteger(n.lt)&&(n.lt={id:{thread:r,index:t.lt}}),Number.isInteger(n.lte)&&(n.lte={id:{thread:r,index:t.lte}}),n.gt||n.gte||(n.gte={id:{thread:r}}),n.lt||n.lte||(n.lte={id:{thread:r}}),n}function u({reverse:e=!0,limit:t=50,gt:n,gte:r,lt:i,lte:l,type:d}={reverse:!0,limit:50}){const a={reverse:e,limit:t};return Number.isInteger(n)&&(a.gt=d?{id:n,type:d}:{id:n}),Number.isInteger(r)&&(a.gte=d?{id:r,type:d}:{id:r}),Number.isInteger(i)&&(a.lt=d?{id:i,type:d}:{id:i}),Number.isInteger(l)&&(a.lte=d?{id:l,type:d}:{id:l}),d&&(e&&!a.lte&&(a.lte={type:d}),e||a.gte||(a.gte={type:d}),a.lte&&!a.gte&&(a.gte={type:d}),a.gte&&!a.lte&&(a.lte={type:d})),a}function g(t){return{key:e.decode(t.deviceId),seq:t.seq}}function p(e){return e?{...e,avatar:a(e.avatar),blindPeers:y(e.blindPeers)}:null}function m(e){return e?{disableReadReceipts:!0===e.disableReadReceipts}:null}function y(t){return t&&Array.isArray(t)?t.map(t=>e.decode(t)):[]}function b({memberId:t,blindWriters:n,displayName:r,avatar:i}){return{memberKey:e.decode(t),blindWriters:f(n),displayName:r,avatar:a(i)}}function f(t){return t&&Array.isArray(t)?t.map(t=>({publicKey:e.decode(t.publicKey),blindingKey:e.decode(t.blindingKey)})):[]}module.exports={decodeContactInfo:b,decodeChatRangeOptions:c,decodeKeyRangeOptions:s,decodeChatMessage:o,decodeImageFile:a,decodeFile:d,decodeMessageId:g,decodeConfig:p,decodeUserSettings:m,decodeFileRangeOptions:u};
@holepunchto/keet-core/lib/api/v1/encode.js +1 -0
……@@ -0,0 +1 @@
1const e=require("hypercore-id-encoding"),{getCapabilitiesForRole:t,MemberRoles:n,DISPLAY_TYPES:a,GENERIC_EVENTS:s}=require("@holepunchto/keet-core-api"),r=require("b4a"),{contract:{hyperschema:{getEnum:i}}}=require("../../../schema/spec"),o=i("@keet/room-type");function d({key:t,seq:n}){return{deviceId:e.encode(t),seq:n}}function l(t){return{id:e.encode(t.key),deviceId:e.encode(t.key),swarmId:e.encode(t.profile.swarmKey),isMobile:t.profile.isMobile,name:t.profile.name,status:t.status}}function c(t){if(!t)return null;const{key:n,blob:a}=t;return{id:e.encode(n),blob:a}}function m(t){if(!t)return null;const{key:n,path:a,version:s,size:r}=t;return{id:e.encode(n),path:a,version:s,size:r}}function u(e){if(!e)return null;const{inlined:t,blob:n,externalBlob:a,externalDrive:s}=e;return{blob:n,inlined:t?r.toString(t,"base64"):null,externalBlob:c(a),externalDrive:m(s)}}function p(e){return e?(e.metadata?.userdata&&(e.metadata.userdata=r.toString(e.metadata.userdata,"base64")),{hash:e.hash,entry:e.entry,metadata:e.metadata,pointer:u(e.pointer),preview:g(e.preview)}):null}function y(t){return t?t.cleared?{cleared:!0}:{roomId:e.encode(t.roomKey),httpLink:t.httpLink,cleared:!1,preview:t.preview?{small:y(t.preview.small),medium:y(t.preview.medium),large:y(t.preview.large)}:null}:null}function g(e){return e?{small:p(e.small),medium:p(e.medium),large:p(e.large)}:null}function f(t){if(!t)return null;const{memberJoined:n,memberLeft:a,memberRemoved:s}=t,r=n?.memberKey||a?.memberKey||s?.memberKey,i=r?{memberId:e.encode(r)}:null;return{...t,memberJoined:n&&i,memberLeft:a&&i,memberRemoved:s&&i}}function b({record:t,member:n,memberId:r,localRoom:i}){const{event:o,message:l,reactions:c={},labels:m={}}=t,u=f(o);l&&l.replyTo&&(l.replyTo=d(l.replyTo));let y=null;u&&u.memberJoined&&(y={type:s.MEMBER_JOINED,value:u.memberJoined.memberId}),u&&u.memberLeft&&(y={type:s.MEMBER_LEFT,value:u.memberLeft.memberId}),u&&u.titleChanged&&(y={type:s.ROOM_TITLE_CHANGED,value:u.titleChanged}),u&&u.callStarted&&(y={type:s.CALL_STARTED,value:null}),u&&u.callHangup&&(y={type:s.CALL_HANGUP,value:null}),u&&u.callMissed&&(y={type:s.CALL_MISSED,value:null});const g=j(t);return l&&l.files&&(l.files=l.files.map(p)),{timestamp:t.timestamp,editedAt:t.editedAt,memberId:r||e.encode(n?.key||t.oplog.key),member:n?M(n,i?.selfMember?.key):null,id:d(t.oplog),deleted:t.status.isDeleted,thread:t.id.thread,clock:t.id.index,message:{...l,generic:u},reactions:c,labels:m,read:t.read,seq:t.id.index,event:y,replyTo:l&&l.replyTo?l.replyTo:null,forwarded:!0===l?.forwarded,chat:{text:l?l.text:null,edited:t.status.isEdited,display:g,mentions:g.filter(e=>e.type===a.MENTION)},files:l&&l.files?l.files:[],file:l&&l.files?l.files[0]:null}}function v(e){return e?{total:e.total,reactions:e.reactions.map(e=>({text:e.text,count:e.count,latest:[]})),editedAt:e.editedAt}:{total:0,reactions:[]}}function I(e){return e.map(e=>e.reaction)}function k(t){return{sender:e.encode(t.sender),clock:t.clock,reaction:t.reaction}}function K(t){return{roomId:e.encode(t.roomKey),discoveryId:e.encode(t.discoveryKey),dmMemberId:t.dm?e.encode(t.dm):null,recipient:t.dm?e.encode(t.dm):null}}function h({roomInfo:t,preferences:n,lastMessageMember:a,storageInfo:s,fileStats:r}){const i=t.dm?.length?e.encode(t.dm[0]):null;let o=null;return t.lastMessage&&(o={chat:b({record:t.lastMessage,memberId:a?.memberId}),member:a}),{roomId:e.encode(t.roomKey),discoveryId:e.encode(t.discoveryKey),status:t.status,stats:t.stats,fork:t.fork,self:{sentLength:s?s.hints.remoteContiguousLength:0,deviceId:t.selfDevice?e.encode(t.selfDevice.key):null,member:t.selfMember?M(t.selfMember,t.selfMember.key):null},digest:T(t.digest),config:C(t.config,t.digest),preferences:n,lastMessage:o,dmMemberId:i,fileStats:r?{total:r.total}:null,activeCall:A(t.activeCall)}}function A(t){return t?{callId:e.encode(t.callKey),selfDeviceId:t.selfDeviceKey?e.encode(t.selfDeviceKey):null}:null}function M(t,n){return t?{memberId:e.encode(t.key),anonymous:!1,name:t.profile.displayName?t.profile.displayName.toLowerCase():null,status:t.status,displayName:t.profile.displayName,inactive:!t.status.isActive,capabilities:Y(t.status),avatar:g(t.profile.avatar),local:!!n&&r.equals(t.key,n),pushNotifications:!0,username:t.profile.username,canDM:!!t.profile.mailbox}:null}function R(t){return{id:{memberId:e.encode(t.memberKey),roomId:e.encode(t.keys.key)},roomId:e.encode(t.keys.key),senderContactInfo:{displayName:t.sender.displayName,avatar:t.sender.avatar?g(t.sender.avatar):null,memberId:e.encode(t.memberKey)},clock:t.clock,message:t.message,status:t.status,sentAt:t.sentAt}}function D(t){const n=e.encode(t.id);return{id:n,seedId:e.encode(t.invitationSeed),discoveryId:n,identityDeviceId:t.identity?e.encode(t.identity.devicePublicKey):null,expires:-1}}function E(t){if(!t)return null;const n=t.request,a=n.deviceKey,s=n.device.profile.name,r=n.identity.devicePublicKey;return{deviceName:s,deviceId:e.encode(a),identityDeviceId:e.encode(r)}}function T(e){return{...e}}function L(t){return t?t.map(e.encode):null}function N(e){return{disableReadReceipts:e?.disableReadReceipts||!1}}function w(e){return{concurrency:e.concurrency,maxWindow:e.maxWindow,randomPunchInterval:e.randomPunchInterval,connectionKeepAlive:e.connectionKeepAlive}}function C(e,t,n=[]){return e?{...e,avatar:g(e.avatar),roomType:V(t.settings.roomType),experimental:t.settings.isExperimental,locked:t.settings.isJoiningDisabled,frozen:t.settings.isAppendingDisabled,isMembershipEventsDisabled:t.settings.isMembershipEventsDisabled,pinnedMessages:n,canCall:String(!t.settings.isCallingDisabled),blindPeers:L(e.blindPeers)}:{}}function x(t){return t?{memberId:e.encode(t.attestation.memberKey),displayName:t.profile.displayName,username:t.profile.username,avatar:g(t.profile.avatar),contactInfo:r.toString(t.contactInfo,"base64"),count:t.count}:null}function S(t){return t?{username:t.username,memberId:t.memberKey?e.encode(t.memberKey):null}:null}function B(t,n,a,s){let r=null;return a&&(r={id:e.encode(a.roomKey),status:{isAccepted:!!a&&0===a.stats.members.pending,isWritable:!!a&&a.status.isWritable}}),{memberId:t,activeRoom:r,pendingRequest:s?R(s):null,contactStatus:{isBlocked:!!n?.status?.isBlocked}}}function O(t){return t?{roomId:t.roomKey?e.encode(t.roomKey):null}:{}}function P(t){return{code:t.code,message:t.message,stack:t.stack,timestamp:t.timestamp,isContractError:!0===t.isContractError,isKeetError:!0===t.isKeetError,roomId:t.roomKey?e.encode(t.roomKey):null,details:O(t.details)}}function _(e,t,n){const a=n?.displayName||"";return{id:e.messageId,roomId:e.roomId,avatar:e.avatar??"",sender:{name:a},config:{title:t.title,roomType:t.roomType},message:{type:e.messageType,chatText:e.messageText,fileType:e.fileType,location:e.location},userInfo:{roomKey:e.roomId,messageType:e.messageType,isDmRoom:Q(t.roomType)===o.DirectMessage,isBroadcast:Q(t.roomType)===o.Broadcast,profileName:a}}}function q(t){if(!t)return null;const n=1===t.version;return{version:t.version,callId:e.encode(t.callKey),discoveryId:n?e.encode(t.discoveryKey):null,createdAt:t.createdAt,endedAt:t.endedAt,members:t.members?t.members.map(H):[]}}function H(t){return{callId:e.encode(t.callKey),memberId:e.encode(t.memberKey),createdAt:t.createdAt,devices:t.devices?t.devices.map(J):[]}}function J(t){return{callId:e.encode(t.callKey),memberId:e.encode(t.memberKey),deviceId:e.encode(t.deviceKey),swarmId:e.encode(t.swarmKey),createdAt:t.createdAt,streams:t.streams?t.streams.map(F):[]}}function F(t){return{callId:e.encode(t.callKey),streamId:e.encode(t.streamKey),deviceId:e.encode(t.deviceKey),createdAt:t.createdAt}}function j(e){if(!e?.message?.display)return[];let t=[];return e.message.display.mention&&(e.message.display.mention=G(e.message.display.mention),t=t.concat(e.message.display.mention)),e.message.display.translation&&(e.message.display.translation=U(e.message.display.translation),t=t.concat(e.message.display.translation)),e.message.display.httpLink&&(e.message.display.httpLink=e.message.display.httpLink.map(z),t=t.concat(e.message.display.httpLink)),e.message.display.pearLink&&(e.message.display.pearLink=e.message.display.pearLink.map(W),t=t.concat(e.message.display.pearLink)),e.message.display.bold&&(e.message.display.bold=e.message.display.bold.map(e=>({...e,type:a.BOLD})),t=t.concat(e.message.display.bold)),e.message.display.italic&&(e.message.display.italic=e.message.display.italic.map(e=>({...e,type:a.ITALIC})),t=t.concat(e.message.display.italic)),e.message.display.code&&(e.message.display.code=e.message.display.code.map(e=>({...e,type:a.CODE})),t=t.concat(e.message.display.code)),e.message.display.emoji&&(e.message.display.emoji=e.message.display.emoji.map(e=>({...e.range,content:e.content,type:a.EMOJI})),t=t.concat(e.message.display.emoji)),e.message.display.codeBlock&&(e.message.display.codeBlock=e.message.display.codeBlock.map(e=>({...e,type:a.CODE_BLOCK})),t=t.concat(e.message.display.codeBlock)),e.message.display.strike&&(e.message.display.strike=e.message.display.strike.map(e=>({...e,type:a.STRIKE_THROUGH})),t=t.concat(e.message.display.strike)),t}function G(t){return Array.isArray(t)?t.map(t=>({type:a.MENTION,start:t.range.start,length:t.range.length,memberId:e.encode(t.memberKey)})):[]}function U(e){return Array.isArray(e)?e.map(e=>({type:a.TRANSLATION,start:e.range.start,length:e.range.length,language:e.language,text:e.text})):[]}function W(e){return{...z(e),type:a.PEAR_LINK}}function z(e){return e?.preview?.file&&(e.preview.file=p(e.preview.file)),{content:e.url,start:e.range.start,length:e.range.length,type:a.HTTP_LINK,preview:e.preview}}function Y(e){const a=e.isAdmin?n.ADMIN:e.isModerator?n.MODERATOR:n.PEER;return t(a)}function V(e){switch(e){case o.Default:return"0";case o.Broadcast:return"1";case o.DirectMessage:return"2";default:throw new Error("Incompatible legacy room type:",e)}}function Q(e){switch(e){case"0":default:return o.Default;case"1":return o.Broadcast;case"2":return o.DirectMessage}}module.exports={encodeReaction:k,encodeIdentityPairingRequest:E,encodePrivateRoomRecord:K,encodeDmRequest:R,encodeRoomRecord:h,encodeMemberRecord:M,encodeInvitationRecord:D,encodeChatMessage:b,encodeImageFile:g,encodeFile:p,encodeFileEntry:y,encodeReactionsDigest:v,encodeMyReactions:I,encodeDigest:T,encodeConfig:C,encodeUserSettings:N,encodeMessageId:d,encodeDevice:l,encodeUser:x,encodeContactInfo:B,encodeReservation:S,encodeErrorRecord:P,encodeNotification:_,encodeHyperDHTSettings:w,encodeCallRecord:q};
@holepunchto/keet-core/lib/api/v1/helpers.js +1 -0
……@@ -0,0 +1 @@
1const{encodeChatMessage:e,encodeReactionsDigest:t,encodeMyReactions:s,encodeCallRecord:n}=require("./encode"),{getMemberForDeviceKey:a}=require("../../core/contract/query"),l=require("b4a"),{contract:{hyperschema:{getEnum:o}}}=require("../../../schema/spec"),i=o("@keet/label-type");async function r(e,t,s,n,a,l){const[o,i]=await Promise.all([s.get("@local/rooms",{roomKey:t}),e()]);if(!i||!o)return[];const r=Array.isArray(i)?i:[i],c=[];for(const e of r)c.push(f(t,n,a,o,l,e));return Promise.all(c)}async function c({roomKey:e,local:n,snapshot:a,room:l,oplog:o,msgId:i}){const[r,c]=await Promise.all([i?{id:i}:a.get("@keet/chat-by-message-id",{oplog:o}),l||n.get("@local/rooms",{roomKey:e})]);if(!r||!c)return null;const{selfMember:d}=c,[m,f]=await Promise.all([a.get("@keet/reaction-digests",{id:r.id}),d?a.find("@keet/reactions",{gte:{id:r.id,sender:d.key},lte:{id:r.id,sender:d.key}}).toArray():[]]);return{digest:t(m),mine:s(f)}}async function d({snapshot:e,msgId:t,localRoom:s}){if(!t||!s)return null;const{selfMember:n}=s,[a,l]=await Promise.all([e.get("@keet/chat-label-digests",{id:t}),!!n&&e.findOne("@keet/chat-labels",{gte:{id:t,sender:n.key,label:i.Flag},lte:{id:t,sender:n.key,label:i.Flag}})]);return{flags:a?.labels.find(e=>e.label===i.Flag)?.count??0,flagged:!!l,flagsClock:a?.flagsClock??0,editedAt:a?.editedAt??0}}function m({dm:e,readLengths:t,selfMember:s},n){return!!(e?.length&&n&&t?.length&&s)&&!!t.find(e=>!l.equals(e.memberKey,s.key)&&n.index<e.length)}async function f(t,s,n,l,o,i){const r=a(s,i.oplog.key),{filePromises:f,linkFilePromises:y}=g(t,s,n,o,i),[u,h,b,k]=await Promise.all([r,Promise.all(f),c({snapshot:s,room:l,msgId:i.id}),d({snapshot:s,localRoom:l,msgId:i.id}),Promise.all(y)]);return i.reactions=b,i.labels=k,h.length&&(i.message.files=h),i.read=m(l,i.id),e({record:i,member:u,localRoom:l})}async function y(e,t,s,n,a){const l=await s.get("@keet/files",{id:a});if(!l)return null;const o=await t.getFileEntryWithPreview(e,l.file,{loadBlob:e=>n.get(e)});return{...l.file,entry:o}}function g(e,t,s,n,a){const l=[],o=[];if(a.message?.files?.length>0)for(const o of a.message.files)l.push(y(e,n,t,s,o));const i=a.message?.display?.httpLink||[];for(const e of i)c(e);const r=a.message?.display?.pearLink||[];for(const e of r)c(e);return{filePromises:l,linkFilePromises:o};function c(a){if((a?.preview?.files||[]).length){const l=a.preview.files.map(async l=>{a.preview.file=await y(e,n,t,s,l)});o.push(...l)}}}async function u(e,t){const s=b(e),n=await e.findOne(t);return n?s(n):null}async function h(e,t,s=!0){const n=b(e,s);return k(e.find(t),n)}function b(e,t){return async function(e){const a={...e,members:await s(e)};return t?n(a):a};async function s({callKey:t}){return k(e.find("@keet/call-members",{gte:{callKey:t},lte:{callKey:t}}),async e=>({...e,devices:await a(e)}))}async function a({callKey:t,memberKey:s}){const n={gte:{callKey:t,memberKey:s},lte:{callKey:t,memberKey:s}};return k(e.find("@keet/call-devices-by-member-key",n),async e=>({...e,streams:await l(e)}))}async function l({callKey:t,deviceKey:s}){const n={gte:{callKey:t,deviceKey:s},lte:{callKey:t,deviceKey:s}},a=e.find("@keet/call-streams-by-device-key",n),l=[];for await(const e of a)l.push(e);return l}}async function k(e,t){const s=[];for await(const n of e)s.push(t(n));return Promise.all(s)}module.exports={getChatMessages:r,getReactions:c,getChatLabels:d,getChatMessage:f,getCalls:h,getCall:u,isDMRead:m};
@holepunchto/keet-core/lib/api/v1/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("path"),t=require("ready-resource"),s=require("hypercore-id-encoding"),i=require("hypercore-crypto"),o=require("debounceify"),r=require("safety-catch"),n=require("b4a"),a=require("uncaughts"),{Readable:c,Transform:h,pipeline:d}=require("streamx"),{Session:l,HeapSnapshot:u}=require("bare-inspector"),m=require("bare-fs"),p=require("process-top")(),b=require("tiny-preferences"),g=require("@holepunchto/keet-call/server"),{contract:{hyperschema:{getEnum:y}},local:{hyperschema:{getEnum:f}}}=require("../../../schema/spec"),{encodeRoomRecord:k,encodeConfig:_,encodeDevice:w,encodeMemberRecord:v,encodeInvitationRecord:R,encodeFile:S,encodeIdentityPairingRequest:M,encodeDmRequest:I,encodeReaction:C,encodeUser:E,encodeContactInfo:K,encodeImageFile:D,encodeReservation:q,encodeFileEntry:P,encodeUserSettings:F,encodeErrorRecord:x,encodeNotification:A,encodeHyperDHTSettings:B,encodeCallRecord:L}=require("./encode.js"),{decodeChatRangeOptions:U,decodeChatMessage:T,decodeMessageId:N,decodeKeyRangeOptions:O,decodeFile:j,decodeConfig:H,decodeImageFile:V,decodeFileRangeOptions:G,decodeUserSettings:z}=require("./decode.js"),J=y("@keet/build-type"),W=y("@keet/room-type"),Y=y("@keet/display-type"),X=y("@keet/label-type"),$=y("@keet/member-label-type"),Q=y("@keet/system-settings-keys"),{ContactRequestStatus:Z,RoomStatus:ee}=require("../../core/contract/identity/private.js"),{Config:te,CONFIG_INDEX_TO_KEY:se}=require("../../core/contract/config"),{Settings:ie}=require("../../core/contract/internal"),{getChatMessages:oe,getChatMessage:re,getReactions:ne,isDMRead:ae,getCalls:ce}=require("./helpers.js"),{MemberStatus:he}=require("../../core/contract/members/index.js"),{MemberRoles:de,DM_STATUSES:le,isValidPreferenceKey:ue,getPreferenceKeyName:me,CHAT_MESSAGE_REPORT_COUNT:pe,PREFERENCES:be,GENERIC_EVENTS:ge}=require("@holepunchto/keet-core-api"),{restoreAvatar:ye}=require("../../core/contract/avatars.js"),{getMemberForDeviceKey:fe}=require("../../core/contract/query.js"),ke=require("compact-encoding"),{DEBUG_FLAG_INDEX_BY_KEY:_e,DHT_SETTINGS:we}=require("../../core/debug/debugging.js"),ve=require("./inspector.js"),{FEATURES:Re}=require("../../../schema/versions"),Se=require("./calls.js"),Me=f("@local/keet-state"),Ie=6e5,Ce=2e4,Ee="preferences_v1.json",Ke="keet",De="recent-rooms",qe="favorite-rooms",Pe="dm-rooms",Fe="chat-changed",xe="identity",Ae="private-profile",Be="identity-pairing-requests",Le="migration-status",Ue="room-preferences",Te="unreads",Ne="errors",Oe="force-updates",je={"keet-core":require("../../../package.json").version,autobase:require("autobase/package.json").version,hypercore:require("hypercore/package.json").version,hyperbee:require("hyperbee/package.json").version,hyperbee2:require("hyperbee2/package.json").version,"keet-identity-key":require("keet-identity-key/package.json").version,"keet-push":require("@holepunchto/keet-push/package.json").version,corestore:require("corestore/package.json").version};class He{constructor(e,t){this.api=e,this.id=t,this.subscriptions=[]}destroy(){for(const{stream:e}of this.subscriptions)e.destroy()}refresh(e){for(const t of this.subscriptions)e&&e.name&&e.name!==t.name||t.query&&t.query()}push(e,t){for(const s of this.subscriptions)t&&t.name&&t.name!==s.name||s.map&&s.stream.push(s.map(e))}_onDestroy(e,t){const s=this.subscriptions.pop();s!==e&&(this.subscriptions[e.idx]=s,s.idx=e.idx),0===this.subscriptions.length&&this.api._subscriptions.get(this.id)===this&&this.api._subscriptions.delete(this.id),t(null)}_create(e){const t={name:e||null,stream:null,query:null,map:null,idx:0};return t.stream=new c({destroy:e=>this._onDestroy(t,e)}),t.idx=this.subscriptions.push(t)-1,t}add({query:e,map:t,name:s}){if(!e&&!t)throw new Error("Must have either a query or a map");const i=this._create(s);return e&&(i.query=o(async()=>{try{const t=await e();null!==t&&i.stream.push(t)}catch(e){i.stream.destroy(e)}}),i.query()),i.map=t,i.stream}}class Ve{constructor(e){this.keet=e}create(e,t){return async(s,...i)=>{if(this.keet.closing)return null;const o=["files","base","drive","db","snapshot","blobs","blobsSnapshot"],r=!!t.find(e=>o.includes(e));if(r&&!s)throw new Error("Room ID is required for methods that require room resources");("object"==typeof s&&null!==s||!r)&&(i=[s,...i],s=null);const n=s?this.keet.internalOpenExistingRoom(s):null;if(n&&(await n.ready(),await n.base.flush()),this.keet.closing)return null;const a={roomId:s,roomKey:n?.key||null,discoveryKey:n?.discoveryKey||null};let c=null;try{for(const e of t)n&&"db"===e&&(a.db=n.db),n&&"snapshot"===e&&(a.snapshot=n.db.snapshot()),n&&"base"===e&&(a.base=n.base),n&&"drive"===e&&(a.drive=n.drive),n&&"blobs"===e&&(a.blobs=n.blobs),n&&"blobsSnapshot"===e&&(a.blobsSnapshot=n.blobs.snapshot()),"local"===e&&(a.local=this.keet.local),"localSnapshot"===e&&(a.localSnapshot=this.keet.local.snapshot()),"files"===e&&(a.files=this.keet.files),"myKey"===e&&(this.keet.onlineBoot.opened||await this.keet.onlineBoot.ready(),a.localSnapshot||(a.localSnapshot=this.keet.local.snapshot()),a.id=await a.localSnapshot.get("@local/identity"),a.profileInfo=await a.localSnapshot.get("@local/rooms",{roomKey:a.id.privateProfileKey}),a.myKey=a.profileInfo?.selfMember?.key||null),"profile"===e&&(this.keet.onlineBoot.opened||await this.keet.onlineBoot.ready(),a.localSnapshot||(a.localSnapshot=this.keet.local.snapshot()),a.id||(a.id=await a.localSnapshot.get("@local/identity")),a.profileInfo||(a.profileInfo=await a.localSnapshot.get("@local/rooms",{roomKey:a.id.privateProfileKey})),a.profile=this.keet.internalOpenExistingRoom(a.id.privateProfileKey),await a.profile.ready()),a.profile&&"profileDb"===e&&(a.profileDb=a.profile.db),a.profile&&"profileSnapshot"===e&&(a.profileSnapshot=a.profile.db.snapshot()),a.profile&&"profileBlobs"===e&&(a.profileBlobs=a.profile.profileBlobs),a.profile&&"profileBlobsSnapshot"===e&&(a.profileBlobsSnapshot=a.profile.blobs.snapshot());const s=Date.now();return c=await e(a,...i),this.keet.logger.debug("[Keet API]",e.name,"duration:",Date.now()-s,"args:",i),c}catch(e){if(this.keet.closing)return null;if(n?.base.getLastError())throw this.keet.onerror(n?.base.getLastError()),n.base.getLastError();throw this.keet.onerror(e),e}finally{a.snapshot&&await a.snapshot.close(),a.blobsSnapshot&&await a.blobsSnapshot.close(),a.localSnapshot&&await a.localSnapshot.close(),a.profileSnapshot&&await a.profileSnapshot.close(),a.profileBlobsSnapshot&&await a.profileBlobsSnapshot.close(),a.profile&&await this.keet.internalReleaseRoom(a.profile),n&&await this.keet.internalReleaseRoom(n)}}}}class Ge{constructor(e,{onerror:t=r}={}){this.keet=e,this.context=new Ve(this.keet),this._onerror=t,this._subscriptions=new Map,this._profileSubscriptions=new He(this,null,{isProfileSub:!0}),this.keet.on("room-interrupted",this._handleRoomInterrupted.bind(this)),this.keet.on("room-changed",this._handleRoomChanged.bind(this)),this.keet.on("identity-changed",this._handleIdentityChanged.bind(this)),this.keet.on("recent-rooms-changed",this._handleRecentRoomsChanged.bind(this)),this.keet.on("dm-rooms-changed",this._handleDmRoomsChanged.bind(this)),this.keet.on("chat-changed",this._handleChatChanged.bind(this)),this.keet.on("identity-pairing-request",this._handleIdentityPairingRequest.bind(this)),this.keet.on("migration-status",this._handleMigrationStatus.bind(this)),this.keet.on("room-preferences-changed",this._handleRoomPreferencesChanged.bind(this)),this.keet.on("unread-anchors-changed",this._handleUnreadAnchorsChanged.bind(this)),this.keet.on("room-sent-message",this._handleRoomSentMessageLengthChanged.bind(this)),this.keet.on("caught-error",this._handleKeetError.bind(this)),this.keet.on("force-update",this._handleForceUpdate.bind(this)),this.keet.on("verified-rooms-changed",this._handleVerifiedRoomsChanged.bind(this)),this.keet.on("local-files-changed",this._handleLocalFilesChanged.bind(this)),this.keet.on("favorite-rooms-changed",this._handleFavoriteRoomsChanged.bind(this)),this.boot=this._timed(this._boot.bind(this)),this.createInvitation=this._timed(this._createInvitation.bind(this)),this.confirmPairingRequest=this._timed(this._confirmPairingRequest.bind(this)),this.startPairingRoom=this._timed(this._startPairingRoom.bind(this)),this.stopPairingRoom=this.context.create(this._stopPairingRoom.bind(this),["profile"]),this.searchRooms=this.context.create(this._searchRooms.bind(this),["local"]),this.getRoomInfo=this.context.create(this._getRoomInfo.bind(this),["localSnapshot"]),this.getRecentRooms=this.context.create(this._getRecentRooms.bind(this),["local"]),this.getPendingRooms=this.context.create(this._getPendingRooms.bind(this),["profile"]),this.getLocalRoomMetadata=this.context.create(this._getLocalRoomMetadata.bind(this),["local"]),this.getConfig=this.context.create(this._getConfig.bind(this),["snapshot","local"]),this.updateRoomSettings=this._updateRoomSettings.bind(this),this.getChatMessage=this.context.create(this._getChatMessage.bind(this),["snapshot","blobsSnapshot","files","local"]),this.getChatMessageById=this.context.create(this._getChatMessageById.bind(this),["snapshot","blobsSnapshot","files","local"]),this.getChatMessages=this.context.create(this._getChatMessages.bind(this),["snapshot","blobsSnapshot","files","local"]),this.getChatLength=this.context.create(this._getChatLength.bind(this),["db"]),this.removeChatMessage=this.context.create(this._removeChatMessage.bind(this),["snapshot","blobsSnapshot","files","local"]),this.searchChatMessages=this.context.create(this._searchChatMessages.bind(this),["local","snapshot","blobsSnapshot","files"]),this.addChatMessage=this._timed(this._addChatMessage.bind(this)),this.updateChatMessage=this._timed(this._updateChatMessage.bind(this)),this.forwardChatMessage=this.context.create(this._forwardChatMessage.bind(this),["snapshot","blobsSnapshot","files","local"]),this.pinChatMessage=this._timed(this._pinChatMessage.bind(this)),this.unpinChatMessage=this._timed(this._unpinChatMessage.bind(this)),this.addCallStartedEvent=this._timed(this._addCallStartedEvent.bind(this)),this.addCallHangupEvent=this._timed(this._addCallHangupEvent.bind(this)),this.addCallMissedEvent=this._timed(this._addCallMissedEvent.bind(this)),this.addLocationSharedEvent=this._timed(this._addLocationSharedEvent.bind(this)),this.getActiveCalls=this.context.create(this._getActiveCalls.bind(this),["snapshot"]),this.getCalls=this.context.create(this._getCalls.bind(this),["snapshot"]),this.getReactions=this.context.create(this._getReactions.bind(this),["snapshot","local"]),this.getLatestReactions=this.context.create(this._getLatestReactions.bind(this),["snapshot"]),this.addReaction=this._timed(this._addReaction.bind(this)),this.removeReaction=this._timed(this._removeReaction.bind(this)),this.getReportedMembers=this.context.create(this._getReportedMembers.bind(this),["snapshot","blobsSnapshot"]),this.addChatReport=this._timed(this._addChatReport.bind(this)),this.removeChatReport=this._timed(this._removeChatReport.bind(this)),this.getReportedMessages=this.context.create(this._getReportedMessages.bind(this),["roomKey","local","snapshot","blobsSnapshot","files"]),this.getPinnedChatMessages=this.context.create(this._getPinnedChatMessages.bind(this),["local","snapshot","blobsSnapshot","files"]),this.getActiveMember=this.context.create(this._getActiveMember.bind(this),["snapshot","blobsSnapshot","myKey"]),this.getActiveMembers=this.context.create(this._getActiveMembers.bind(this),["snapshot","blobsSnapshot","myKey"]),this.getMembers=this.context.create(this._getMembers.bind(this),["snapshot","blobsSnapshot","myKey"]),this.getMember=this.context.create(this._getMember.bind(this),["snapshot","blobsSnapshot","myKey"]),this.getMemberCount=this.context.create(this._getMemberCount.bind(this),["db"]),this.getMemberBySwarmId=this.context.create(this._getMemberBySwarmId.bind(this),["snapshot","blobsSnapshot","myKey"]),this.getMemberByDeviceId=this.context.create(this._getMemberByDeviceId.bind(this),["snapshot","blobsSnapshot","myKey"]),this.waitUntilJoined=this.context.create(this._waitUntilJoined.bind(this),["local"]),this.isMemberMuted=this.context.create(this._isMemberMuted.bind(this),["db"]),this.getSearchMembers=this.context.create(this._getSearchMembers.bind(this),["db","blobsSnapshot","myKey"]),this.updateMember=this._timed(this._updateMember.bind(this)),this.removeMember=this._timed(this._removeMember.bind(this)),this.changeMemberRole=this._timed(this._changeMemberRole.bind(this)),this.muteMember=this._timed(this._muteMember.bind(this)),this.unmuteMember=this._timed(this._unmuteMember.bind(this)),this.blockMember=this._timed(this._blockMember.bind(this)),this.unblockMember=this._timed(this._unblockMember.bind(this)),this.getDevices=this.context.create(this._getDevices.bind(this),["db"]),this.getDevice=this.context.create(this._getDevice.bind(this),["db"]),this.getDevicesByMemberId=this.context.create(this._getDevicesByMemberId.bind(this),["db"]),this.getModerators=this.context.create(this._getModerators.bind(this),["snapshot","blobsSnapshot","myKey"]),this.saveFile=this.context.create(this._saveFile.bind(this),["files"]),this.saveFileBlob=this.context.create(this._saveFileBlob.bind(this),["files"]),this.getFileEntry=this.context.create(this._getFileEntry.bind(this),["files"]),this.getFileCleared=this.context.create(this._getFileCleared.bind(this),["files"]),this.clearFile=this.context.create(this._clearFile.bind(this),["files"]),this.unclearFile=this.context.create(this._unclearFile.bind(this),["files"]),this.clearAllFiles=this.context.create(this._clearAllFiles.bind(this),["files"]),this.clearOldFiles=this._timed(this._clearOldFiles.bind(this)),this.getLocalFiles=this.context.create(this._getLocalFiles.bind(this),["files","snapshot","blobsSnapshot"]),this.getFiles=this.context.create(this._getFiles.bind(this),["files","snapshot","blobsSnapshot"]),this.startDownload=this.context.create(this._startDownload.bind(this),["files"]),this.cancelDownload=this.context.create(this._cancelDownload.bind(this),["files"]),this.sendFile=this._timed(this._sendFile.bind(this)),this.sendFiles=this._timed(this._sendFiles.bind(this)),this.refreshFileLinks=this._timed(this._refreshFileLinks.bind(this)),this.createRoom=this._timed(this._createRoom.bind(this)),this.leaveRoom=this._timed(this._leaveRoom.bind(this)),this.getSystemDigest=this.context.create(this._getSystemDigest.bind(this),["db"]),this.getTipSize=this.context.create(this._getTipSize.bind(this),["base"]),this.getRoomKeys=this._timed(this._getRoomKeys.bind(this)),this.resyncPrivateProfile=this._timed(this._resyncPrivateProfile.bind(this)),this.restoreIdentity=this._timed(this._restoreIdentity.bind(this)),this.getRecoveryPhrase=this._timed(this._getRecoveryPhrase.bind(this)),this.getEncryptedRecoveryPhrase=this._timed(this._getEncryptedRecoveryPhrase.bind(this)),this.decryptEncryptedRecoveryPhrase=this._timed(this._decryptEncryptedRecoveryPhrase.bind(this)),this.freeRecoveryPhrase=this._timed(this._freeRecoveryPhrase.bind(this)),this.confirmRecoveryPhrase=this._timed(this._confirmRecoveryPhrase.bind(this)),this.storeRecoveryPhrase=this._timed(this._storeRecoveryPhrase.bind(this)),this.getIdentity=this.context.create(this._getIdentity.bind(this),["local","profile","profileSnapshot"]),this.getSelfContactInfo=this.context.create(this._getSelfContactInfo.bind(this),["local","profile"]),this.removeIdentityDevice=this.context.create(this._removeIdentityDevice.bind(this),["profile"]),this.createIdentityInvitation=this._timed(this._createIdentityInvitation.bind(this)),this.startPairingIdentity=this._timed(this._startPairingIdentity.bind(this)),this.updateIdentityProfile=this._timed(this._updateIdentityProfile.bind(this)),this.updateIdentityDevice=this._timed(this._updateIdentityDevice.bind(this)),this.getIdentityPairingRequest=this._timed(this._getIdentityPairingRequest.bind(this)),this.updateUserSettings=this._timed(this._updateUserSettings.bind(this)),this.updateDHTSettings=this._timed(this._updateDHTSettings.bind(this)),this.getDHTSettings=this._timed(this._getDHTSettings.bind(this)),this.getContactInfo=this.context.create(this._getContactInfo.bind(this),["local","profile"]),this.getBlockedMembers=this.context.create(this._getBlockedMembers.bind(this),["local"]),this.getDmRequestsByStatus=this.context.create(this._getDmRequestsByStatus.bind(this),["profile","profileDb","profileBlobsSnapshot"]),this.sendDMFromContact=this._timed(this._sendDMFromContact.bind(this)),this.sendDMRequest=this._timed(this._sendDMRequest.bind(this)),this.sendInvitations=this._timed(this._sendInvitations.bind(this)),this.updatePrivateMailboxRecord=this._timed(this._updatePrivateMailboxRecord.bind(this)),this.acceptDmRequest=this._timed(this._acceptDmRequest.bind(this)),this.rejectDmRequest=this._timed(this._rejectDmRequest.bind(this)),this.getRoomPreferences=this.context.create(this._getRoomPreferences.bind(this),["local"]),this.updateRoomPreferences=this.context.create(this._updateRoomPreferences.bind(this),["profile"]),this.getBlockedMembers=this.context.create(this._getBlockedMembers.bind(this),["local"]),this.updateConfig=this._timed(this._updateConfig.bind(this)),this.disableMembershipEvents=this._timed(this._disableMembershipEvents.bind(this)),this.enableMembershipEvents=this._timed(this._enableMembershipEvents.bind(this)),this.getLinkInfo=this._timed(this._getLinkInfo.bind(this)),this.lookupUsername=this._timed(this._lookupUsername.bind(this)),this.lookupUserByMemberId=this._timed(this._lookupUserByMemberId.bind(this)),this.registerUsername=this._timed(this._registerUsername.bind(this)),this.updateUsername=this._timed(this._updateUsername.bind(this)),this.searchUsername=this._timed(this._searchUsername.bind(this)),this.getReservationsByKey=this._timed(this._getReservationsByKey.bind(this)),this.checkUsername=this._timed(this._checkUsername.bind(this)),this.repair=this._timed(this._repair.bind(this)),this.rotateWriter=this._timed(this._rotateWriter.bind(this)),this.audit=this._timed(this._audit.bind(this)),this.setUnread=this._setUnread.bind(this),this.getUnread=this._getUnread.bind(this),this.setUnreadAnchor=this._setUnreadAnchor.bind(this),this.getUnreadAnchor=this._getUnreadAnchor.bind(this),this.subscribeUnreadAnchor=this._subscribeUnreadAnchor.bind(this),this.setRoomFavorite=this._setRoomFavorite.bind(this)}_timed(e){return async function(...t){const s=Date.now();try{const i=await e(...t);return this.keet.logger.debug("[Keet API]",e.name,"duration:",Date.now()-s,"args:",t),i}catch(e){throw this.keet.onerror(e),e}}}_boot(){return this.keet.backendReady()}_disableMembershipEvents(e){return this.keet.dispatch(e,"@keet/update-system-settings",{key:ie.IsMembershipEventsDisabled,settings:{isMembershipEventsDisabled:!0}})}_enableMembershipEvents(e){return this.keet.dispatch(e,"@keet/update-system-settings",{key:ie.IsMembershipEventsDisabled,settings:{isMembershipEventsDisabled:!1}})}_addKeetSubscription(e=Ke,t){return this._addRoomSubscription(e,t)}_addRoomSubscription(e,t,{isProfileSub:s=!1,_isRoomSub:i=!0}={}){if(null===e&&s)return this._profileSubscriptions.add(t);let o=this._subscriptions.get(e);return o||(o=new He(this,e),this._subscriptions.set(e,o)),o.add(t)}_refreshSubscriptionsById(e){const t=e===this.keet.privateProfile?.id?this._subscriptions.get(Ae):this._subscriptions.get(e);t&&t.refresh()}_handleIdentityPairingRequest(e){this._identityPairingRequestsByDeviceId.set(s.encode(e.deviceKey),e),this._refreshSubscriptionsById(Be)}_handleRoomInterrupted(e,{unsupportedABI:t,digest:s}){const i=this._subscriptions.get(e);if(i)for(const e of i.subscriptions)"room-version"===e.name&&e.stream.push({version:t,experimental:s&&s.settings.isExperimental})}async _handleRoomChanged(e){try{this.keet.onlineBoot.opened||await this.keet.onlineBoot.ready(),this._refreshSubscriptionsById(e)}catch(e){this.keet.onerror(e)}}_handleRecentRoomsChanged(...e){const t=this._subscriptions.get(De);t&&t.push(e)}_handleDmRoomsChanged(){const e=this._subscriptions.get(Pe);e&&e.refresh()}_handleRoomPreferencesChanged(...e){const t=this._subscriptions.get(Ue);t&&t.push(e)}_handleUnreadAnchorsChanged(){const e=this._subscriptions.get(Te);e&&e.refresh()}_handleRoomSentMessageLengthChanged(e){const t=this._subscriptions.get(e);t&&t.refresh({name:"room-info"})}_handleIdentityChanged(){this._refreshSubscriptionsById(xe)}async _handleChatChanged(...e){try{this.keet.onlineBoot.opened||await this.keet.onlineBoot.ready();const t=this._subscriptions.get(Fe);if(!t)return;const[s,i]=e;if(s===this.keet.privateProfile.id)return;t.push({roomId:s,index:i})}catch(e){this.keet.onerror(e)}}_handleMigrationStatus(e){const t=this._subscriptions.get(Le);t&&t.push(e)}_handleKeetError(e){const t=this._subscriptions.get(Ne);t&&t.push(e)}_handleForceUpdate(){const e=this._subscriptions.get(Oe);e&&e.refresh()}_handleVerifiedRoomsChanged(){for(const e of this._subscriptions.values())e.refresh({name:"room-info"})}_handleLocalFilesChanged(e){const t=this._subscriptions.get(e);t&&t.refresh({name:"room-info"})}_handleFavoriteRoomsChanged(...e){const t=this._subscriptions.get(qe);t&&t.push(e)}getVersion(){return{buildType:this.keet.buildType,abi:this.keet.abi,modules:je}}async _getSystemDigest({db:e}){return await e.get("@keet/system-digest")}subscribeSentLength(e){return this._addRoomSubscription(e,{query:async()=>{const t=this.keet.internalOpenExistingRoom(e);await t.ready();const s={deviceId:t.base.local.id,length:t.base.local.remoteContiguousLength};return this.keet.internalReleaseRoom(t),s},name:"room-sent-message"})}subscribeRoomVersion(e){return this._addRoomSubscription(e,{query:async()=>{const t=await this.getSystemDigest(e);return{version:t.abi.version,experimental:t.settings.isExperimental}},name:"room-version"})}subscribeForceUpdates(){return this._addKeetSubscription(Oe,{query:()=>({showBanner:this.keet.shouldForceUpdate()})})}async upgradeRoom(e){this.keet.opened||await this.keet.ready();const t=this.keet.isNightly?this.keet.abi.max:this.keet.abi.production;await this.keet.internalDispatchUpgrade(e,t)}async _getLinkInfo(e){const t=this.keet.internalGetLinkInfo(e);if(!t)return null;if(t.identity)return{isIdentityInvitation:!0,memberId:s.encode(t.identity.identityPublicKey),invitationSeed:s.encode(t.identity.invitationSeed),additionalNodes:t.additionalNodes};if(t.room){const e={capabilities:{mailboxKeyPair:{publicKey:t.room.mailbox}}},i=await this.keet.local.get("@local/rooms-by-mailbox",e);return{isRoomInvitation:!0,roomId:i?s.encode(i.roomKey):null,title:i?i.config.title:null,description:i?i.config.description:null,avatar:i?D(i.config.avatar):null,invitationSeed:s.encode(t.room.invitationSeed),additionalNodes:t.additionalNodes}}return t.profile?{isContactInfo:!0,memberId:s.encode(t.attestation.memberKey),displayName:t.profile.displayName,username:t.profile.username,additionalNodes:t.additionalNodes}:t.readonly?{isReadOnly:!0,additionalNodes:t.additionalNodes}:void 0}async _getSelfContactInfo({id:e,profileInfo:t}){const s=this.keet.internalCreateContactInfoStruct(e,t,{avatar:null,timestamp:0});return n.toString(s,"base64")}async _getIdentity({id:e,profile:t,profileSnapshot:i,profileInfo:o}){const[r,n]=await Promise.all([i.find("@keet/devices").toArray(),i.get("@keet-private-id/settings")]),a=[];for(const e of r)e.status.isActive&&a.push({...w(e),confirmed:!0});const c=v(o.selfMember,o.selfMember.key);return c.hasDiscoveryKey=!!o.identity.discoveryCoreKey,c.anonymous=!1,c.confirmed=e.status.isConfirmed,c.devices=a,c.profileId=t.id,c.profileDiscoveryId=t.discoveryId,c.local={deviceId:s.encode(t.deviceKey)},c.settings=F(n),c.isLoggedOut=o.selfDevice&&!o.selfDevice.status.isActive,c}_removeIdentityDevice({profile:e},t){return e.dispatch("@keet/remove-device",{key:s.decode(t)})}subscribeIdentity(){return this._addKeetSubscription(xe,{query:()=>this.getIdentity()})}async _restoreIdentity(e,t={}){await this.keet.restoreIdentity(e,t)}_getRecoveryPhrase(){return this.keet.getRecoveryPhrase()}_getEncryptedRecoveryPhrase(e){return this.keet.getEncryptedRecoveryPhrase(e)}_decryptEncryptedRecoveryPhrase(e,t){return this.keet.decryptEncryptedRecoveryPhrase(e,t)}_freeRecoveryPhrase(e){return this.keet.freeRecoveryPhrase(e)}_confirmRecoveryPhrase(e){return this.keet.confirmRecoveryPhrase(e)}_storeRecoveryPhrase(e){return this.keet.storeRecoveryPhrase(e)}confirmIdentity(...e){throw console.log("confirmIdentity",...e),new Error("Missing required method: confirmIdentity")}async _confirmPairingRequest({deviceId:e},t=!0){this.keet.onlineBoot.opened||await this.keet.onlineBoot.ready();const i=this.keet.privateProfile.key,o=s.decode(e);return t?this.keet.acceptJoinRequest(i,o):this.keet.rejectJoinRequest(i,o)}async _getIdentityPairingRequest(){const e=await this.keet.internalOpenPrivateProfile(),t=await e.db.find("@keet/join-requests").toArray();return this.keet.internalReleaseRoom(e),0===t.length?null:M(t[0])}subscribeIdentityPairingRequests(...e){return this._addKeetSubscription(xe,{query:()=>this.getIdentityPairingRequest()})}async _updateIdentityProfile({displayName:e,avatar:t}){await this.updateMember(e,t)}_updateIdentityDevice(e){return this.keet.updateDevice(e)}_startPairingIdentity(e){return this.keet.startPairingIdentity(e)}pairIdentity(...e){throw console.log("pairIdentity",...e),new Error("Missing required method: pairIdentity")}async _updateUserSettings(e,t){this.keet.onlineBoot.opened||await this.keet.onlineBoot.ready();const s={[e]:t};return this.keet.privateProfile.dispatch("@keet-private-id/update-settings",{key:e,settings:z(s)})}async _getDHTSettings(){const e=await this.keet.getDHTSettings();return B(e)}async _updateDHTSettings(e,t){if(!(e in we))return;const s=await this.keet.internalEnterLocalTransaction();try{const i=await this.keet.getDHTSettings();i[e]=t,await s.insert("@local/hyperdht",i),await s.flush()}finally{await this.keet.internalExitLocalTransaction()}}async _createRoom(e={}){const t=await this.keet.createRoom(tt(e));return s.encode(t)}_pairRoom(...e){throw console.log("pairRoom",...e),new Error("Missing required method: pairRoom")}_leaveRoom(e,t={}){return this.keet.leaveRoom(s.decode(e))}async _startPairingRoom(e,t={}){return await this.keet.startPairingRoom(e,t)}async _stopPairingRoom({profile:e},t){const i=s.decode(t),o=await e.db.find("@keet-private-id/pending-invitations").toArray();for(const e of o)if(n.equals(e.invitationSeed,i)){await this.keet.stopPairing(e.id);break}}subscribePendingRooms(){return this._addKeetSubscription(xe,{query:()=>this.getPendingRooms()})}subscribePushNotificationChanges(){return this._addKeetSubscription(Ue,{map:function(e){const[t,o,r]=e,n=r||i.discoveryKey(o);return{type:t,roomId:s.encode(o),discoveryId:s.encode(n)}}})}subscribeActivateRoom(e){const t=s.decode(e);return new c({eagerOpen:!0,open:async e=>{let s=null;try{await this.keet.activateRoom(t)}catch(e){s=e}e(s)},destroy:async e=>{let s=null;try{await this.keet.deactivateRoom(t)}catch(e){s=e}e(s)}})}_getRoomKeys(e){try{const t=s.decode(e);return{discoveryKey:n.toString(i.discoveryKey(t),"hex")}}catch{return{discoveryKey:""}}}_getTipSize({base:e}){return e.linearizer.size}async _resyncPrivateProfile(){this.keet.onlineBoot.opened||await this.keet.onlineBoot.ready();const e=[];for await(const t of this.keet.privateProfile.db.find("@keet-private-id/rooms"))await this.keet.local.get("@local/rooms",{roomKey:t.roomKey})||e.push(t);for(const t of e)this.keet.tasks.joinRoomKeys(t.roomKey,{keys:t}).runBackground()}bookmark(...e){throw console.log("bookmark",...e),new Error("Missing required method: bookmark")}unbookmark(...e){throw console.log("unbookmark",...e),new Error("Missing required method: unbookmark")}subscribeBookmarks(...e){return console.log("subscribeBookmarks",...e),new c}async _loadRecents(e,t={}){const{index:s,range:i}=function(e){return e.favorites?{index:"@local/rooms-by-favorite-and-timestamp",range:{}}:e.default||e.dms||e.broadcast?{index:"@local/rooms-by-type-and-timestamp",range:{lte:{type:n(e)},gte:{type:n(e)}}}:{index:"@local/rooms-by-timestamp",range:{}}}(t),o=await e.find(s,{...t,...i,reverse:!0}).toArray(),r=await Promise.all(o.map(t=>e.get("@local/room-preferences",{roomKey:t.roomKey})));for(let e=0;e<r.length;e++){const t=r[e];t&&!t.status.isActive&&(o[e]=null)}return o;function n(e){return e.default?W.Default:e.dms?W.DirectMessage:e.broadcast?W.Broadcast:void 0}}async _getRoomInfo({localSnapshot:e},t){const o=s.decode(t),r=await e.get("@local/rooms",{roomKey:o});if(!r)return null;let n=v(r.lastMember);const[a,c,h]=await Promise.all([e.get("@local/room-preferences",{roomKey:r.roomKey}),r.lastMessage&&!n?e.get("@local/devices",{device:{key:r.lastMessage.oplog.key}}):null,e.get("@local/file-stats",{roomKey:r.roomKey})]);if(c){const t=await e.get("@local/members",{key:c.device.memberKey});t&&(n={id:s.encode(t.key),memberId:s.encode(t.key),displayName:t.profile.displayName})}if(r.lastMessage){const e=ae(r,r.lastMessage.id);r.lastMessage.read=e}const d=r.selfDevice?i.discoveryKey(r.selfDevice.key):null,l=d?await this.keet.storage.getInfo(d,{hints:!0,auth:!1,head:!1}):null,u=k({roomInfo:r,preferences:a,lastMessageMember:n,storageInfo:l,fileStats:h});return u.isVerified=this.keet.isRoomVerified(t),u}async _searchRooms({local:e}){const t=await this._loadRecents(e),i=[];for(const e of t)e&&i.push({title:e.config.title,roomId:s.encode(e.roomKey)});return i}async _getRecentRooms({local:e},t){const[i,o]=await Promise.all([this._loadRecents(e,t),e.get("@local/stats")]),r=[];for(const e of i)e&&r.push({timestamp:e.timestamps.latestChatMessage||e.timestamps.latestSync,roomId:s.encode(e.roomKey)});return{type:"all",total:o?o.activeRooms:0,rooms:r}}async _getPendingRooms({profile:e}){return(await e.db.find("@keet-private-id/pending-invitations").toArray()).map(R)}_getLocalRoomMetadata({local:e},t){return e.get("@local/rooms",{discoveryKey:s.decode(t)})}subscribeRecentRooms(e){return this._addKeetSubscription(De,{map:function(e){const[t,s,i]=e;return{type:t,timestamp:s,roomId:i}},query:()=>this.getRecentRooms(e)})}subscribeFavoriteRooms(){return this._addKeetSubscription(qe,{map:function(e){const[t,s,i]=e;return{type:t,timestamp:s,roomId:i}},query:()=>this.getRecentRooms({favorites:!0})})}subscribeRoomInfo(e,t){return this._addRoomSubscription(e,{query:()=>this.getRoomInfo(e,t),name:"room-info"})}subscribeUnreadActivity(e={}){return this._addKeetSubscription(Fe,{map:({roomId:t,index:s})=>t?e.includeLength||e.includeIndex?{roomId:t,index:s}:{roomId:t}:null})}subscribeErrors(){return this._addKeetSubscription(Ne,{map:e=>x(e)})}subscribeNotifications(){const e=this.subscribeUnreadActivity({includeIndex:!0}),t=c.from(this._subscribeNotifications(e));return t.once("close",()=>{e.destroy()}),t}setCallRingingId(e){this._callRingingRoomId=e}setProcessingNotifications(e){this._processingNotifications=e}async*_subscribeNotifications(e){for await(const{roomId:i,index:o}of e){if(this.keet.closing)return;if(this._callRingingRoomId){if(i!==this._callRingingRoomId)continue;const e=await this.getChatMessage(i,o);if(this.keet.closing)return;e?.event?.type===ge.CALL_HANGUP&&(yield{type:ge.CALL_HANGUP})}if(this._processingNotifications)continue;if(this.keet.backendAPI.api.call.callIsActive)continue;const e=await this.getRoomPreferences(i,be.IS_FULLY_MUTED);if(this.keet.closing)return;if(e||this._processingNotifications)continue;const[r,n,a]=await Promise.all([this.getConfig(i),this.getChatMessage(i,o),this.keet.local.get("@local/identity")]);if(this.keet.closing)return;if(!n||Math.abs(Date.now()-n.timestamp)>Ie)continue;const c=await this.getBlockedMembers();if(this.keet.closing)return;if(c.some(e=>e.memberId===n.memberId)||this._processingNotifications)continue;if(a&&s.encode(a.publicKey)===n.memberId)continue;const h=`${n.id.deviceId}/b${n.id.seq}`,d=t(n),l=n.files.length>0&&n.files[0].metadata?.mimetype||"",u=await this.getMember(i,n.memberId);if(this.keet.closing)return;const m=n.chat?.text||"",p=et(r.roomType)===W.DirectMessage;if(!this._processingNotifications&&(m||d)){if(p&&"call"===d){if(Math.abs(Date.now()-n.timestamp)>Ce)continue;if(!(await this.getActiveCalls(i)).length)continue;yield{type:ge.CALL_STARTED}}const e=await this.getRoomInfo(i);if(this.keet.closing)return;const t=e?.config?.avatar?.small?.pointer?.inlined??"",s=n.message?.generic?.locationShared;yield A({messageId:h,roomId:i,avatar:t,location:s,messageText:m,messageType:d,fileType:l},r,u)}}function t(e){return e.event?.type===ge.CALL_STARTED?"call":e.files?.length>0?"file":e.message?.generic?.locationShared?"location":""}}setRoomUnread(...e){throw console.log("setRoomUnread",...e),new Error("Missing required method: setRoomUnread")}bumpRoomPriority(...e){throw console.log("bumpRoomPriority",...e),new Error("Missing required method: bumpRoomPriority")}addDevice(...e){throw console.log("addDevice",...e),new Error("Missing required method: addDevice")}removeDevice(...e){throw console.log("removeDevice",...e),new Error("Missing required method: removeDevice")}async _getDevice({db:e},t){const s=await e.findOne("@keet/devices",O({gte:t,lte:t}));return s?w(s):null}async _getDevices({db:e},t){return(await e.find("@keet/devices",O(t)).toArray()).map(e=>w(e))}async moveIndexer(e,t,i){if(!await this.keet.internalFeatureSupported(e,Re.MOVE_INDEXER))throw new Error("Move indexer not supported");const o=s.decode(t),r=s.decode(i);return this.keet.dispatch(e,"@keet/move-indexer",{deviceKey:o,fromDeviceKey:r})}subscribeDevice(e,...t){return this._addRoomSubscription(e,{query:()=>this.getDevice(e,...t)})}subscribeDevices(e,...t){return this._addRoomSubscription(e,{query:()=>this.getDevices(e,...t)})}async _createIdentityInvitation(){return this.keet.createIdentityInvitation()}_createInvitation(e,t={}){return!0===t.canIndex&&(t.canAdmin=!0),this.keet.createRoomInvitation(s.decode(e),t)}async _updateMember(e,t){this.keet.onlineBoot.opened||await this.keet.onlineBoot.ready();const i=await this.keet.local.get("@local/identity");if(i&&s.encode(i.privateProfileKey))return t=V(t),this.keet.updateProfile({displayName:e,avatar:t})}async _muteMember(e,t){const i=s.decode(t);return this.keet.dispatch(e,"@keet/change-member-status",{memberKey:i,key:he.IsMuted,status:{isMuted:!0}})}async _unmuteMember(e,t){const i=s.decode(t);return this.keet.dispatch(e,"@keet/change-member-status",{memberKey:i,key:he.IsMuted,status:{isMuted:!1}})}async _isMemberMuted({db:e},t){const i=s.decode(t);return!!await e.get("@keet/muted-members",{key:i})}async _getMemberByDeviceId({myKey:e,snapshot:t,blobsSnapshot:i},o){const r=await fe(t,s.decode(o));return r?(await ye(i,r.profile.avatar),v(r,e)):null}async _getMemberBySwarmId({myKey:e,snapshot:t,blobsSnapshot:i},o){const r=s.decode(o),n=await t.get("@keet/devices-by-swarm-key",{profile:{swarmKey:r}});if(!n)return null;const a=await fe(t,n.key);return a?(await ye(i,a.profile.avatar),v(a,e)):null}async _getMemberCount({db:e}){const t=await e.get("@keet/threads",{id:0});return t?t.stats.members.active:0}async _getDevicesByMemberId({db:e},t){const i=[],o=s.decode(t),r={gte:{memberKey:o},lte:{memberKey:o}};for await(const t of e.find("@keet/devices-by-member-key",r))i.push(w(t));return i}getCurrentDeviceId(e){const t=this.keet.internalOpenExistingRoom(e);try{return t.deviceId}finally{this.keet.internalReleaseRoom(t)}}async _getMember({roomId:e,myKey:t,base:i,snapshot:o,blobsSnapshot:r},n,a={}){const c=s.decode(n);if(!0===a.swarmId)return this.getMemberBySwarmId(e,n);const h=await o.get("@keet/members",{key:c});return h?(await ye(r,h.profile.avatar),v(h,t)):null}async _getActiveMember({myKey:e,snapshot:t,blobsSnapshot:i},o){const r=await t.get("@keet/active-members",{key:s.decode(o)});return r?(await ye(i,r.profile.avatar),v(r,e)):null}async _removeMember(e,t){const i=s.decode(e),o=await this.keet.local.get("@local/rooms",{roomKey:i});if(!o)return;const{isFeatureSupported:r,FEATURES:n}=this.keet.versions;return r(o.digest.abi.version,n.REMOVE_MEMBER_V2)?this.keet.dispatch(e,"@keet/remove-member",{key:s.decode(t)}):void 0}async _getMembers({myKey:e,snapshot:t,blobsSnapshot:s},i={}){const o=await t.find("@keet/members",O(i)).toArray();return Promise.all(o.map(async t=>(await ye(s,t.profile.avatar),v(t,e))))}async _getActiveMembers({myKey:e,snapshot:t,blobsSnapshot:s},i={}){const o=await t.find("@keet/active-members",O(i)).toArray();return Promise.all(o.map(async t=>(await ye(s,t.profile.avatar),v(t,e))))}async _getModerators({myKey:e,snapshot:t,blobsSnapshot:s},i={}){const o=await t.find("@keet/moderators",O(i)).toArray();return Promise.all(o.map(async t=>(await ye(s,t.profile.avatar),v(t,e))))}async _waitUntilJoined({roomKey:e,local:t}){const s=await t.get("@local/rooms",{roomKey:e});return s?v(s.selfMember):null}getMemberForDevice(...e){throw console.log("getMemberForDevice",...e),new Error("Missing required method: getMemberForDevice")}subscribeMemberCount(e,...t){return this._addRoomSubscription(e,{query:()=>this.getMemberCount(e,...t)})}subscribeMember(e,...t){return this._addRoomSubscription(e,{query:()=>this.getMember(e,...t)})}subscribeActiveMember(e,...t){return this._addRoomSubscription(e,{query:()=>this.getActiveMember(e,...t)})}subscribeActiveMembers(e,...t){return this._addRoomSubscription(e,{query:()=>this.getActiveMembers(e,...t)})}subscribeMembers(e,...t){return this._addRoomSubscription(e,{query:()=>this.getMembers(e,...t)})}subscribeModerators(e,...t){return this._addRoomSubscription(e,{query:()=>this.getModerators(e,...t)})}subscribeMemberForDevice(e,...t){return this._addRoomSubscription(e,{query:()=>this.getMemberByDeviceId(e,...t)})}_changeMemberRole(e,{memberId:t,role:i}){return this.keet.dispatch(e,"@keet/change-member-role",{key:s.decode(t),isAdmin:i===de.ADMIN,isModerator:i===de.ADMIN||i===de.MODERATOR})}async _getSearchMembers({myKey:e,db:t,blobsSnapshot:s},i,{limit:o=50}={}){i=i.toLowerCase();const r=await t.find("@keet/members-by-member-name",{gte:{name:i},limit:o}).toArray();return(await Promise.all(r.map(async t=>(await ye(s,t.profile.avatar),v(t,e))))).filter(e=>e.name.startsWith(i))}getPushNotificationMembers(...e){throw console.log("getPushNotificationMembers",...e),new Error("Missing required method: getPushNotificationMembers")}subscribeSearchMembers(...e){return console.log("subscribeSearchMembers",...e),new c}subscribePushNotificationMembers(...e){return console.log("subscribePushNotificationMembers",...e),new c}async _getContactInfo({local:e,profile:t},i){const o=s.decode(i),[r,n,a]=await Promise.all([e.get("@local/contacts",{memberKey:o}),e.findOne("@local/rooms-by-contact",{gte:{contact:o},lte:{contact:o}}),t.db.findOne("@keet-private-id/pending-contact-requests-by-member",{gte:{memberKey:o},lte:{memberKey:o}})]);return K(i,r,n,a)}subscribeContactInfo(e){return this._addRoomSubscription(Pe,{query:async()=>{const t=this.keet.local.snapshot();try{const i=s.decode(e),[o,r]=await Promise.all([t.get("@local/contacts",{memberKey:i}),t.findOne("@local/rooms-by-contact",{gte:{contact:i},lte:{contact:i}})]);return K(e,o,r,null)}finally{await t.close()}}})}async _blockMember(e,t){const i=s.decode(t);return this.keet.blockContact(i)}async _unblockMember(e,t){const i=s.decode(t);return this.keet.unblockContact(i)}async _getBlockedMembers({local:e}){return(await e.find("@local/blocked-contacts").toArray()).map(({memberKey:e})=>({memberId:s.encode(e)}))}subscribeBlockedMembers(){return this._addRoomSubscription(Ae,{query:()=>this.getBlockedMembers()})}getConnectedMembers(...e){throw console.log("getConnectedMembers",...e),new Error("Missing required method: getConnectedMembers")}subscribeConnectedMembers(...e){return console.log("subscribeConnectedMembers",...e),new c}async _updateConfig(e,t,s){const i=Ze(t);if(0!==i){const t={[se[i-1]]:s};await this.keet.dispatch(e,"@keet/update-room-config",{key:i,config:H(t)})}else if("roomType"===t){const t=et(s);if(0===t)throw new Error("Invalid room type");await this.keet.dispatch(e,"@keet/update-system-settings",{key:ie.RoomType,settings:{roomType:t}})}else{if("canCall"!==t)throw new Error("Invalid config key");await this.keet.dispatch(e,"@keet/update-system-settings",{key:ie.IsCallingDisabled,settings:{isCallingDisabled:"false"===s}})}}async _updateRoomPreferences({profile:e},t,i,o){if(!ue(i))throw new Error(`invalid preference key: ${i}`);const r=s.decode(t);await this.keet.dispatch(e.id,"@keet-private-id/update-room-status",{roomKey:r,key:Qe(i),status:{[me(i)]:o}})}async _updateRoomSettings(e,t,i){if(t===Q.IsAttachmentsDisabled&&!await this.keet.internalFeatureSupported(e,Re.DISABLE_FILE_ATTACHMENTS))throw new Error("Disabling file attachments not supported");if(t===Q.IsLinksDisabled&&!await this.keet.internalFeatureSupported(e,Re.DISABLE_LINKS))throw new Error("Disabling links not supported");const o=s.decode(e);return this.keet.dispatch(o,"@keet/update-system-settings",{key:t,settings:i})}async _getRoomSettings(e){const t=s.decode(e),i=this.keet.internalOpenExistingRoom(t);try{return(await i.db.get("@keet/system-digest")).settings}finally{this.keet.internalReleaseRoom(i)}}async _getRoomPreferences({local:e},t,i){const o=s.decode(t),r=await e.get("@local/room-preferences",{roomKey:o});if(!r)return null;const{status:n}=r;return ue(i)?i?n[me(i)]:n:null}async _getConfig({roomKey:e,local:t},s){const i=await t.get("@local/rooms",{roomKey:e});if(!i)return null;const{config:o,digest:r}=i,n=_(o,r)||{};return s?n[s]:n}subscribeConfig(e){return this._addRoomSubscription(e,{query:()=>this.getConfig(e)})}async _addChatMessage(e,t,i={}){const o=s.decode(e),r=await this.keet.local.get("@local/rooms",{roomKey:o});if(!r)return;const n=T(t,i),a=st(n),{isFeatureSupported:c,FEATURES:h}=this.keet.versions,d=c(r.digest.abi.version,h.MULTI_FILES);if(n.files.length&&!d)throw new Error("multi files not supported");const l=this.keet.batch(e);return 0!==await l.dispatch("@keet/add-chat-message",{timestamp:Date.now(),message:n})?((a.files.length||a.pearLink.length||a.httpLink.length)&&await it(l,a),await l.flush()):void 0}async _updateChatMessage(e,t,i,o={}){const r=s.decode(e),n=await this.keet.local.get("@local/rooms",{roomKey:r});if(!n)return;const a=N(t),c=T(i,o),h=st(c),{isFeatureSupported:d,FEATURES:l}=this.keet.versions,u=d(n.digest.abi.version,l.MULTI_FILES);if(c.files.length&&!u)throw new Error("multi files not supported");const m=this.keet.batch(e);0!==await m.dispatch("@keet/update-chat-message",{oplog:a,message:c})&&((h.files.length||h.pearLink.length||h.httpLink.length)&&await it(m,h,a),await m.flush())}async _removeChatMessage({roomKey:e,local:t,roomId:s,snapshot:i,blobsSnapshot:o,files:r},n){const a=await this._getChatMessageById({roomKey:e,local:t,snapshot:i,blobsSnapshot:o,files:r},n);if(!a)return null;if(a.files.length){const t=[];for(const s of a.files)t.push(this._clearFile({roomKey:e,files:r},s));await Promise.all(t)}return this.keet.dispatch(s,"@keet/remove-chat-message",{oplog:N(n)})}async _forwardChatMessage({roomKey:e,local:t,roomId:i,snapshot:o,blobsSnapshot:r,files:n},a,c){const[h,d]=await Promise.all([this.keet.local.get("@local/rooms",{roomKey:e}),this.keet.local.get("@local/rooms",{roomKey:s.decode(c)})]);if(!h||!d)return;const{isFeatureSupported:l,FEATURES:u}=this.keet.versions;if(!l(h.digest.abi.version,u.FORWARDED_MESSAGE))throw new Error("Message forwarding not supported");if(!l(d.digest.abi.version,u.FORWARDED_MESSAGE))throw new Error("Message forwarding not supported");const m=await o.get("@keet/chat-by-message-id",{oplog:N(a)});if(!m)throw new Error("Source message not found");if(!m.message.text)throw new Error("Source message has no text");const p=m.message.display||{};for(const e of p.httpLink||[])e.preview=null;for(const e of p.pearLink||[])e.preview=null;const b={text:m.message.text,forwarded:!0,files:[],display:p,replyTo:null,event:null};return this.keet.dispatch(c,"@keet/add-chat-message",{timestamp:Date.now(),message:b})}_pinChatMessage(e,t){return this.keet.dispatch(e,"@keet/pin-chat-message",{oplog:N(t),isPinned:!0})}_unpinChatMessage(e,t){return this.keet.dispatch(e,"@keet/pin-chat-message",{oplog:N(t),isPinned:!1})}async startCall(e,t={}){const o=await this.keet.internalFeatureSupported(e,Re.CALLS_V2);if(this.keet.backendAPI.call.setSkipJoinLeave(o),!o)return this.addCallStartedEvent(e);const r=s.decode(e),{version:n,callId:a,encryptionId:c}=t;if(!n)throw new Error("Call version required");if(2===n&&!a)throw new Error("Calls v2 requires callId");const h=await this.keet.local.get("@local/rooms",{roomKey:r}),d=2===n?s.decode(a):i.randomBytes(32),l=c?s.decode(c):h.encryptionKey,u=1===n?h.discoveryKey:null,m=Array.isArray(t?.streams)?t.streams:[];return this.keet.dispatch(e,"@keet/start-call",{version:n,callKey:d,encryptionKey:l,discoveryKey:u,streams:m.map(e=>s.decode(e))})}async joinCall(e,t,i=[]){const o=await this.keet.internalFeatureSupported(e,Re.CALLS_V2);if(this.keet.backendAPI.call.setSkipJoinLeave(o),o)return this.keet.dispatch(e,"@keet/join-call",{callKey:s.decode(t),streams:i.map(e=>s.decode(e))})}async leaveCall(e,t){if(await this.keet.internalFeatureSupported(e,Re.CALLS_V2))return this.keet.dispatch(e,"@keet/leave-call",{callKey:s.decode(t)})}async endCall(e,t){if(!await this.keet.internalFeatureSupported(e,Re.CALLS_V2)){const t=s.decode(e);if(!(await this.keet.local.get("@local/rooms",{roomKey:t})).dm)return;return this.addCallHangupEvent(e)}return this.keet.dispatch(e,"@keet/end-call",{callKey:s.decode(t)})}async addCallStream(e,t,i){if(!await this.keet.internalFeatureSupported(e,Re.CALLS_V2))throw new Error("Calls v2 is not supported");return this.keet.dispatch(e,"@keet/add-call-stream",{callKey:s.decode(t),streamKey:s.decode(i)})}async removeCallStream(e,t,i){if(!await this.keet.internalFeatureSupported(e,Re.CALLS_V2))throw new Error("Calls v2 is not supported");return this.keet.dispatch(e,"@keet/remove-call-stream",{callKey:s.decode(t),streamKey:s.decode(i)})}async _getActiveCalls({snapshot:e}){return ce(e,"@keet/active-calls-by-timestamp")}async _getCalls({snapshot:e}){return ce(e,"@keet/calls-by-timestamp")}subscribeActiveCalls(e,...t){return this._addRoomSubscription(e,{query:()=>this.getActiveCalls(e,...t)})}subscribeCalls(e,...t){return this._addRoomSubscription(e,{query:()=>this.getCalls(e,...t)})}_addCallStartedEvent(e){return this.addChatMessage(e,null,{callStarted:!0})}_addCallHangupEvent(e){return this.addChatMessage(e,null,{callHangup:!0})}_addCallMissedEvent(e){return this.addChatMessage(e,null,{callMissed:!0})}async _addLocationSharedEvent(e,t,{locationShared:{latitude:i,longitude:o}}){const r=s.decode(e),n=await this.keet.local.get("@local/rooms",{roomKey:r});if(!n)return;const{isFeatureSupported:a,FEATURES:c}=this.keet.versions;if(!a(n.digest.abi.version,c.LOCATION_SHARED_EVENT))throw new Error("Location sharing not supported");return this.addChatMessage(e,t,{locationShared:{latitude:i,longitude:o}})}addRoomAvatarChangedEvent(...e){console.log("addRoomAvatarChangedEvent",...e),console.warn("Missing required method: addRoomAvatarChangedEvent")}addEvent(...e){console.log("addEvent",...e),console.warn("Missing required method: addEvent")}removeEvent(...e){console.log("removeEvent",...e),console.warn("Missing required method: removeEvent")}async _getChatMessage({roomKey:e,local:t,snapshot:s,blobsSnapshot:i,files:o},r){return(await oe(async function(){const t=U(e,{gte:r,lte:r});return await s.findOne("@keet/chat",t)},e,t,s,i,o))[0]}async _getChatMessageById({roomKey:e,local:t,snapshot:s,blobsSnapshot:i,files:o},r){return(await oe(async function(){return await s.get("@keet/chat-by-message-id",{oplog:N(r)})},e,t,s,i,o))[0]}async _getChatMessages({roomKey:e,local:t,snapshot:s,blobsSnapshot:i,files:o},r){return await oe(async function(){const t=U(e,r);return await s.find("@keet/chat",t).toArray()},e,t,s,i,o)}async _getPinnedChatMessages({roomKey:e,local:t,snapshot:s,blobsSnapshot:i,files:o},r){return await oe(async function(){return await s.find("@keet/pinned-chat-messages",r).toArray()},e,t,s,i,o)}async _getChatLength({db:e}){const t=await e.get("@keet/threads",{id:0});return{length:t?t.count:0}}subscribeChatMessages(e,...t){return this._addRoomSubscription(e,{query:()=>this.getChatMessages(e,...t)})}subscribeChatLength(e,t){let s=0;return this._addRoomSubscription(e,{query:async()=>{if(!t||!t.reorders)return this.getChatLength(e);if(this.keet.closing)return null;const i=this.keet.internalOpenExistingRoom(e);try{const{length:t}=await this.getChatLength(e),o=i.base.view.core.fork!==s;return s=i.base.view.core.fork,{length:t,reordered:o}}finally{this.keet.internalReleaseRoom(i)}}})}async _searchChatMessages({snapshot:e,roomKey:t,local:s,blobsSnapshot:i,files:o},n,{limit:a=1e3,reverse:c=!0}={}){if(!n||!n.length)return[];const h=await s.get("@local/rooms",{roomKey:t});if(!h)return[];if(!(n=n.map(e=>e.replace(/\s/g,"").toLowerCase()).filter(e=>e)).length)return[];const d=[];for await(const s of e.find("@keet/chat",{limit:a,reverse:c})){if(!s.message?.text)continue;const a=s.message.text.replace(/\s/g,"").toLowerCase();if(n.every(e=>a.indexOf(e)>-1)){const n=re(t,e,i,h,o,s);n.catch(r),d.push(n)}}return Promise.all(d)}createChatSearchStream(e,t,s){return c.from(this._createChatSearchGenerator(e,t,s))}async*_createChatSearchGenerator(e,t,{limit:i=1e3,reverse:o=!0}={}){if(!t||!t.length)return;if(!(t=t.map(e=>e.replace(/\s/g,"").toLowerCase()).filter(e=>e)).length)return;const r=s.decode(e),n=await this.keet.local.get("@local/rooms",{roomKey:r});if(!n)return;const a=this.keet.internalOpenExistingRoom(r);await a.ready();const c=a.db.snapshot(),h=a.blobs.snapshot(),d=this.keet.local.snapshot(),l=this.keet.files,u=c.find("@keet/chat",{limit:i,reverse:o});try{for await(const e of u){const t=await m(e);t&&(yield t)}}catch(e){this.keet.onerror(e)}finally{await d.close(),await c.close(),await h.close(),this.keet.internalReleaseRoom(a)}async function m(e){if(!e.message?.text)return;const i=e.message.text.replace(/\s/g,"").toLowerCase();if(!t.every(e=>i.indexOf(e)>-1))return;const o=await re(r,c,h,n,l,e);if(o.labels.flagged||o.labels.flags>=pe)return;const a=s.decode(o.memberId);return await d.get("@local/blocked-contacts",{memberKey:a})||await c.get("@keet/muted-members",{key:a})||o.reactions.digest.reactions.find(e=>"⚠️"===e.text)?void 0:o}}_sendDMFromContact(e,{message:t=null}={}){return this.keet.sendContactRequestFromContact(e,{message:t})}_sendDMRequest(e,t,{message:s=null}={}){return this.sendInvitations(e,{receivers:[t],message:s})}async _sendInvitations(e,{receivers:t,message:i}){const o=s.decode(e),r=Array.isArray(t)?t[0]:t,n=s.decode(r);await this.keet.sendContactRequest(o,n,{message:i})}async _updatePrivateMailboxRecord({memberId:e,roomId:t},i={}){this.keet.onlineBoot.opened||await this.keet.onlineBoot.ready();const o=i.isSeen||1===i.seen;return this.keet.privateProfile.dispatch("@keet-private-id/update-contact-request-status",{memberKey:s.decode(e),roomKey:s.decode(t),key:Z.IsSeen,status:{isSeen:o}})}async _getDmRequestsByStatus({profileDb:e},t,{reverse:s=!0}={}){if(!e)return[];const i={[le.ACCEPTED]:"@keet-private-id/accepted-contact-requests-v2",[le.REJECTED]:"@keet-private-id/rejected-contact-requests-v2",[le.PENDING]:"@keet-private-id/pending-contact-requests-v2",[le.DISCARDED]:"@keet-private-id/discarded-contact-requests-v2"}[t]||"@keet-private-id/pending-contact-requests-v2";return(await e.find(i,{reverse:s}).toArray()).map(I)}subscribeDmRequestsByStatus(e,t={}){return this._addRoomSubscription(Ae,{query:()=>this.getDmRequestsByStatus(e,t)})}async _getPrivateMailboxRecords({profile:e},t={}){console.warn("Deprecated: getPrivateMailboxRecords")}subscribePrivateMailbox(){return console.warn("Deprecated: subscribePrivateMailbox"),new c}getSentPrivateMailboxRecords(...e){console.warn("Deprecated: getSentPrivateMailboxRecords")}subscribeSentPrivateMailbox(...e){return console.warn("Deprecated: subscribeSentPrivateMailbox"),new c}async _getDmByMemberId({profileSnapshot:e},t){const o=s.decode(t),[r,n]=await Promise.all([e.get("@keet-private-id/contacts",{memberKey:o}),e.get("@keet-private-id/contact-requests",{memberKey:o})]);let a=null;return r&&r.roomKey?a=r.roomKey:n&&(a=n.keys.key),{roomId:a?s.encode(a):null,discoveryId:a?s.encode(i.discoveryKey(a)):null,dmMemberId:t,recipient:t}}async updateRoomInvitationSeenStatus({discoveryId:e,invitationId:t},i){return this.keet.updateRoomInvitationSeenStatus(s.decode(e),s.decode(t),i)}async _acceptDmRequest({memberId:e,roomId:t}){return this.keet.onlineBoot.opened||await this.keet.onlineBoot.ready(),this.keet.privateProfile.dispatch("@keet-private-id/update-contact-request-status",{memberKey:s.decode(e),roomKey:s.decode(t),key:Z.IsAccepted,status:{isAccepted:!0}})}async _rejectDmRequest({memberId:e,roomId:t}){return this.keet.onlineBoot.opened||await this.keet.onlineBoot.ready(),this.keet.privateProfile.dispatch("@keet-private-id/update-contact-request-status",{memberKey:s.decode(e),roomKey:s.decode(t),key:Z.IsRejected,status:{isRejected:!0}})}async discardDmRequest({memberId:e,roomId:t}){return this.keet.onlineBoot.opened||await this.keet.onlineBoot.ready(),this.keet.privateProfile.dispatch("@keet-private-id/update-contact-request-status",{memberKey:s.decode(e),roomKey:s.decode(t),key:Z.IsDiscarded,status:{isDiscarded:!0}})}_addReaction(e,t,i){return this.keet.dispatch(e,"@keet/add-reaction",{oplog:{key:s.decode(t.deviceId),seq:t.seq},reaction:i})}_removeReaction(e,t,i){return this.keet.dispatch(e,"@keet/remove-reaction",{oplog:{key:s.decode(t.deviceId),seq:t.seq},reaction:i})}async _getLatestReactions({snapshot:e},t,s,{limit:i}={}){const{id:o}=await e.get("@keet/chat-by-message-id",{oplog:N(t)});return(await e.find("@keet/reactions-by-clock",{gte:{id:o,reaction:s},lte:{id:o,reaction:s},limit:i,reverse:!0}).toArray()).map(e=>C(e))}async _getReactions({roomKey:e,snapshot:t,local:s},i){const o=N(i);return ne({roomKey:e,snapshot:t,local:s,oplog:o})}subscribeReactions(e,t){return this._addRoomSubscription(e,{query:()=>this.getReactions(e,t)})}subscribeReportedMessages(e,...t){return this._addRoomSubscription(e,{query:()=>this.getReportedMessages(e,...t)})}subscribeReportedMembers(e,...t){return this._addRoomSubscription(e,{query:()=>this.getReportedMembers(e,...t)})}async _getReportedMembers({snapshot:e,blobsSnapshot:t},{clock:i,limit:o=50}={}){const r=await e.find("@keet/member-label-digests-by-clock",{gte:{label:$.Flag},lte:{label:$.Flag,clock:i},limit:o<=50?o:50,reverse:!0}),n=[];for await(const e of r){const t=a.bind(this);n.push(t(e))}return await Promise.all(n);async function a(i){const{key:o,total:r,flagsClock:n}=i,a=await this._getMember({snapshot:e,blobsSnapshot:t},s.encode(o));return a.labels={total:r,flagsClock:n},a}}reportMember(e,t){return this.keet.dispatch(e,"@keet/add-member-label",{key:s.decode(t),label:$.Flag})}async _getReportedMessages({roomKey:e,local:t,snapshot:s,blobsSnapshot:i,files:o},{clock:r,limit:n=50}={}){const a=await t.get("@local/rooms",{roomKey:e});if(!a)return;const c=await s.find("@keet/chat-label-digests-by-clock",{gte:{label:X.Flag},lte:{label:X.Flag,clock:r},limit:n<=50?n:50,reverse:!0}),h=[];for await(const{id:e}of c)h.push(d(e));return await Promise.all(h);async function d(t){const r=await s.findOne("@keet/chat",{gte:{id:t},lte:{id:t}});return re(e,s,i,a,o,r)}}_addChatReport(e,t){const s=N(t);return this.keet.dispatch(e,"@keet/add-chat-label",{oplog:s,label:X.Flag})}_removeChatReport(e,t){const s=N(t);return this.keet.dispatch(e,"@keet/remove-chat-label",{oplog:s,label:X.Flag})}addFileBlob(...e){throw console.log("addFileBlob",...e),new Error("Missing required method: addFileBlob")}addFile(...e){throw console.log("addFile",...e),new Error("Missing required method: addFile")}async _saveFileBlob({roomKey:e,files:t},s,i){const o=await t.saveFileBlob(e,s,i);return S(o)}async _saveFile({roomKey:e,files:t},s,i){const o=await t.saveFile(e,s,i);return S(o)}subscribeAddFile(e,t,i){const o=s.decode(e);return d(this.keet.files.subscribeAddFile(o,t,i),new h({transform(e,t){t(null,{...e,result:S(e.result)})}}))}async _sendFile(e,t){const s=t.preview;t.preview=null;const i=this.keet.batch(e),o=await i.dispatch("@keet/add-chat-message",{timestamp:Date.now(),message:T(null,{files:[t]})});0!==o&&(s&&await i.dispatch("@keet/add-file-preview",{oplog:{key:i.key,seq:o-1},index:0,preview:V(s)},{dryRun:!1}),await i.flush())}async _sendFiles(e,t=[]){const s=[];for(const e of t)s.push(e.preview),e.preview=null;const i=this.keet.batch(e),o=await i.dispatch("@keet/add-chat-message",{timestamp:Date.now(),message:T(null,{files:t})});if(0===o)return;const r={key:i.key,seq:o-1};for(let e=0;e<s.length;e++){const t=s[e];t&&await i.dispatch("@keet/add-file-preview",{oplog:r,index:e,preview:V(t)},{dryRun:!1})}await i.flush()}removeFile(...e){throw console.log("removeFile",...e),new Error("Missing required method: removeFile")}subscribeFileInfo(e,t){const i=s.decode(e),o=this;let r=null;return new c({async open(e){let s=null;try{r=await o.keet.files.monitor(i,j(t)),r.on("update",e=>{this.push(r.stats)})}catch(e){s=e}e(s)},async destroy(e){r&&r.close(),e(null)}})}async _clearAllFiles({roomId:e,roomKey:t,files:s},i){const o=await s.clearAllFiles(t,i);return this.keet.emit("local-files-changed",e),o}async _clearOldFiles(){return this.keet.files.clearOldFiles()}async _getFileEntry({roomKey:e,files:t},s){const i=await t.getFileEntry(e,j(s));return P(i)}async _getLocalFiles({roomKey:e,files:t,blobsSnapshot:s}){const i=await t.getLocalFiles(e);return Promise.all(i.map(async i=>{const o=await t.getFileEntryWithPreview(e,i.file,{loadBlob:e=>s.get(e)});return{...S(o.file),entry:P(o)}}))}async _getFiles({roomKey:e,files:t,snapshot:i,blobsSnapshot:o},r={}){const n=G(r),a=await i.find(r.type?"@keet/files-by-major-type":"@keet/active-files",n).toArray();return Promise.all(a.map(async i=>{const r=await t.getFileEntryWithPreview(e,i.file,{loadBlob:e=>o.get(e)});return{...S(r.file),id:i.id,messageId:{deviceId:s.encode(i.oplog.key),seq:i.oplog.seq},entry:P(r)}}))}_startDownload({roomKey:e,files:t},s){return t.startDownload(e,j(s))}_cancelDownload({roomKey:e,files:t},s){return t.cancelDownload(e,s)}async _clearFile({roomId:e,roomKey:t,files:s},i){i.preview?.large?.pointer?.externalBlob&&await s.clearFile(t,j(i.preview.large)),await s.clearFile(t,j(i)),this.keet.emit("local-files-changed",e)}async _unclearFile({roomId:e,roomKey:t,files:s},i){i.preview?.large?.pointer?.externalBlob&&await s.unclearFile(t,j(i.preview.large)),await s.unclearFile(t,j(i)),this.keet.emit("local-files-changed",e)}_getFileCleared({roomKey:e,files:t},s){return t.getFileCleared(e,j(s))}_refreshFileLinks(e){return this.keet.files.refreshLinks(e)}subscribeFileCleared(e,t){return this._addRoomSubscription(e,{query:()=>this.getFileCleared(e,t)})}subscribeFiles(e,...t){return this._addRoomSubscription(e,{query:async()=>this.getFiles(e,...t)})}getStats(){return{suspended:this.keet.state===Me.SUSPEND,connections:this.keet.swarm.connections.size,openRooms:this.keet.rooms.size,openCores:this.keet.store.cores.size,activeRooms:this.keet.activeRooms.size,roomSubscriptions:[...this._subscriptions.values()].filter(e=>e.isRoomSub).size,backgroundSwarmingRooms:[...this.keet.swarmWorker.sessions.keys()],dht:this.keet.swarm.dht.stats,swarm:this.keet.swarm.stats,ops:this.keet.stats.ops,uploaded:this.keet.stats.uploaded,bytesUploaded:this.keet.stats.bytesUploaded,downloaded:this.keet.stats.downloaded,bytesDownloaded:this.keet.stats.bytesDownloaded,appends:this.keet.stats.appends,bytesAppended:this.keet.stats.bytesAppended,ipc:{sent:0,recv:0},threads:[]}}async getRoomStats(e){const t=this.keet.internalOpenExistingRoom(s.decode(e));try{return await t.getStats()}finally{this.keet.internalReleaseRoom(t)}}async _lookupUsername(e){if(!e)return;const t=await this.keet.userRegistry.lookup(e);return E(t)}async _lookupUserByMemberId(e){if(!e)return;const t=s.decode(e),i=await this.keet.userRegistry.lookupByKey(t);return E(i)}async _searchUsername(e){return(await this.keet.userRegistry.search(e)).map(E)}_registerUsername(e){return this.keet.userRegistry.update(e)}_updateUsername(e){return this.keet.userRegistry.update(e)}async _getReservationsByKey(e){if(!e)return;const t=s.decode(e),i=await this.keet.userRegistry.getReservationsByKey(t);if(!i||!i.length)return null;const o=i[0];return q(o)}subscribeUsername(){const e=this.keet.userRegistry.subscribeUsername();return d(e,new h({transform(e,t){if(!e)return t(null);t(null,{status:e.status,reservation:q(e.reservation),record:E(e.record),error:e.error})}}))}_checkUsername(e){return this.keet.userRegistry.isAvailable(e)}subscribeSystemUpdateRequest(){return this._addKeetSubscription(Le,{query:()=>this.keet.migrationStatus||{remaining:0}})}close(){return this.keet.close()}suspend(){return this.keet.suspend()}resume(){return this.keet.resume()}async getDebugFlags(){const e=await this.keet.local.get("@local/debug");return e?.flags||[]}async updateDebugFlag(e,t){const s=_e.get(e);if(!(s>=0))return;const i=await this.keet.internalEnterLocalTransaction();try{const e=await i.get("@local/debug");e.flags[s].value=!0===t,await i.insert("@local/debug",e),await i.flush()}finally{await this.keet.internalExitLocalTransaction()}}createErrorStream(){return d(this.keet.local.find("@local/errors"),new h({transform(e,t){t(null,x(e))}}))}async _repair(e){const t=this.keet.internalOpenExistingRoom(s.decode(e));try{await t.ready(),await t.base.repair()}finally{this.keet.internalReleaseRoom(t)}}async _audit(e){const t=this.keet.rootCorestore.audit(e),s=[];for await(const e of t)s.push(e);return s}async _rotateWriter(e){return this.keet.rotateWriter(s.decode(e))}compact(){return this.keet.storage.compact()}async _setUnread(e,t){const i=s.decode(e),o=await this.keet.internalEnterLocalTransaction();try{await o.insert("@local/unreads",{roomKey:i,count:t}),await o.flush()}finally{await this.keet.internalExitLocalTransaction()}}async _getUnread(e){const t=s.decode(e),i=await this.keet.local.get("@local/unreads",{roomKey:t});return i?i.count:0}async _setUnreadAnchor(e,t){const i=s.decode(e);this.keet.onlineBoot.opened||await this.keet.onlineBoot.ready(),this.keet.unreads&&await this.keet.unreads.put(i,{timestamp:Date.now(),length:t});const o=await this.keet.local.get("@local/rooms",{roomKey:i});if(!o?.dm?.length)return;const{isFeatureSupported:r,FEATURES:n}=this.keet.versions;if(!r(o.digest.abi.version,n.READ_LENGTH))return;const a=await this.keet.internalOpenPrivateProfile();try{const s=await a.db.get("@keet-private-id/settings");if(s?.disableReadReceipts)return;await this.keet.dispatch(e,"@keet/update-read-length",{length:t})}finally{this.keet.internalReleaseRoom(a)}}async _getUnreadAnchor(e){if(this.keet.onlineBoot.opened||await this.keet.onlineBoot.ready(),!this.keet.unreads)return null;const t=s.decode(e);return this.keet.unreads.get(t)}_subscribeUnreadAnchor(e){return this._addKeetSubscription(Te,{query:()=>this.getUnreadAnchor(e)})}async _setRoomFavorite(e,t=!0){this.keet.onlineBoot.opened||await this.keet.onlineBoot.ready();const{privateProfileKey:i}=await this.keet.local.get("@local/identity"),o=await this.keet.local.get("@local/rooms",{roomKey:i});if(!o)return;const{isFeatureSupported:r,FEATURES:n}=this.keet.versions;if(!r(o.digest.abi.version,n.FAVORITE_ROOMS))throw new Error("Favorite rooms is not supported");await this.keet.privateProfile.dispatch("@keet-private-id/update-room-status",{roomKey:s.decode(e),key:ee.IsFavorite,status:{isFavorite:t}})}}class ze{constructor(e){this.keet=e}async ready(){return await this.keet.ready(),s.encode(this.keet.swarm.keyPair.publicKey)}}class Je{constructor(t){this.keet=t,this.preferences=new b(e.join(t.dir,Ee)),this._subs=[]}async _bump(){const e=await this.preferences.list();for(const t of this._subs)t.push(e)}async update(e,t){await this.preferences.set(e,t),await this._bump()}query(){return this.preferences.list()}subscribe(){const e=this,t=new c({async open(e){let t=null;try{await this._bump()}catch(e){t=e}e(t)},destroy(t){const s=e._subs.indexOf(this);-1!==s&&e._subs.splice(s,1),t(null)}});return this._subs.push(t),t}}class We{constructor(e,{onerror:t=r}={}){this.keet=e,this._status=null,this._subs=[],this.keet.swarm.on("update",this._handleUpdate.bind(this)),this.keet.swarm.dht.on("network-update",this._handleUpdate.bind(this))}_handleUpdate(){this._status=this.query();for(const e of this._subs)e.push(this._status)}query(){const e=[];for(const[t,i]of this.keet.swarm.peers)e.push(s.encode(i.publicKey));return{host:this.keet.swarm.dht.host,port:this.keet.swarm.dht.port,online:this.keet.swarm.dht.online,degraded:this.keet.swarm.dht.degraded,connections:this.keet.swarm.connections.size,peers:e}}subscribe(){const e=this,t=new c({open(t){e._status&&this.push(e._status),t(null)},destroy(t){const s=e._subs.indexOf(this);-1!==s&&e._subs.splice(s,1),t(null)}});return this._subs.push(t),t}subscribeDebug(e=5e3,t=0){const s=this;let i=null,o=0;const r=new c({open(t){n(),i=setInterval(()=>{n()},e),t(null)},destroy(e){i&&(clearInterval(i),i=null),e(null)}});return r;async function n(){const e=await s.debug();r.push(e),o+=1,t&&o>=t&&r.push(null)}}async debug(){return{tick:this.keet.swarm.dht._tick,localAddress:this.keet.swarm.dht.localAddress(),remoteAddress:this.keet.swarm.dht.remoteAddress(),connection:this.query(),stats:this.keet.swarm.dht.stats,health:this.keet.swarm.dht.health.stats,nodes:this.keet.swarm.dht.nodes.length,config:this.keet.swarm.dht.config,rttStats:await this.keet.swarm.dht.rttStats()}}}class Ye{constructor(){this.subscriptions=[],this._handleError=this._handleError.bind(this),this._listenersAttached=!1}_handleError(e){console.error("uncaught on worker",e);for(const t of this.subscriptions)t.push({message:e.message,stack:e.stack+""})}subscribe(e){const t=this;this._listenersAttached||(a.on(this._handleError),this._listenersAttached=!0);const s=new c({...e,destroy(e){const s=t.subscriptions.indexOf(this);-1!==s&&t.subscriptions.splice(s,1),e(null)}});return this.subscriptions.push(s),s}}class Xe{constructor(e){this.keet=e,this.inspector=new ve}_getCurrentRoom(){let e=null;for(const t of this.keet.rooms.values())(!e||t.refs>e.refs)&&(e=t);return e}async getCurrentRoomStats(){const e=this._getCurrentRoom();return{hash:(await(e?.base.core.treeHash())).toString("hex"),length:e?.base.length}}enableInspector(){return this.inspector?.enable()}disableInspector(){return this.inspector?.disable()}getInspectorKey(){return this.inspector?.key}processTop(){return p.toJSON()}hash(e){return i.hash(e)}generateSyntheticError(e){if(!e)throw new Error("KEET_CORE_ERROR_UNHANDLED");this.keet.onerror(new Error("KEET_CORE_ERROR_HANDLED"))}async heapSnapshot(e="/tmp/keet-heapsnapshot-"+Bare.pid+"."+Date.now()+".heapsnapshot"){const t=new l;t.connect();const s=new u(t),i=m.createWriteStream(e);return s.pipe(i),await new Promise(e=>i.once("close",e)),t.destroy(),e}async resetUnreads(){if(this.keet.onlineBoot.opened||await this.keet.onlineBoot.ready(),!this.keet.unreads)return null;await this.keet.unreads.reset()}}class $e{constructor(e){this._rpcClient=e.rpcClient,this.keet=e}send(e){if(this.keet.buildType===J.Production)return this._rpcClient.makeRequest(this.keet.config.services.feedback,"send",e,{requestEncoding:ke.json})}}function Qe(e){switch(e){case 1:return ee.IsFullyMuted;case 2:return ee.IsMentionsOnlyMuted;default:return 0}}function Ze(e){switch(e){case"title":return te.Title;case"avatar":return te.Avatar;case"description":return te.Description;case"supportedLanguages":return te.SupportedLanguages;case"blindPeers":return te.BlindPeers;default:return 0}}function et(e){switch(e){case"0":default:return W.Default;case"1":return W.Broadcast;case"2":return W.DirectMessage}}function tt(e={}){return{config:{title:e.config?.title,description:e.config?.description},settings:{roomType:et(e.config?.roomType),isCallingDisabled:"false"===e.config?.canCall}}}function st(e){const t={files:[],httpLink:[],pearLink:[]},s=e.files||[];for(let e=0;e<s.length;e++){const i=s[e].preview;i&&(s[e].preview=null,t.files.push({index:e,preview:i}))}const i=e.display?.httpLink||[];for(let e=0;e<i.length;e++){const s=r(i[e]);s&&t.httpLink.push({index:e,preview:s})}const o=e.display?.pearLink||[];for(let e=0;e<o.length;e++){const s=r(o[e]);s&&t.pearLink.push({index:e,preview:s})}return t;function r(e){if(!e.preview?.file?.preview)return null;const t=e.preview.file.preview;return e.preview.file.preview=null,t}}async function it(e,{files:t,httpLink:s,pearLink:i},o=null){const r=o||{key:e.key,seq:e.length-1};if(t.length)for(const{index:s,preview:i}of t)await e.dispatch("@keet/add-file-preview",{oplog:r,index:s,preview:V(i)},{dryRun:!1});if(s.length)for(const{index:t,preview:i}of s)await e.dispatch("@keet/add-file-preview",{oplog:r,index:t,preview:V(i),displayType:Y.HttpLink},{dryRun:!1});if(i.length)for(const{index:t,preview:s}of i)await e.dispatch("@keet/add-file-preview",{oplog:r,index:t,preview:V(s),displayType:Y.PearLink},{dryRun:!1})}module.exports=class extends t{constructor(e,t){super(),this.keet=e,this.opts=t,this.api={core:new Ge(e,t),swarm:null,preferences:null,network:null,error:null,debug:null,console:null,call:null,pear:{teardown:()=>{console.log("[api] teardown initiated");const t=this.keet.close();return t.catch(e.onerror),t},selfDestruct:e=>this.keet.selfDestruct(e)}},this._callBootstraps=null,this.callsByRoomId=new Map,this.ready().catch(t?.onerror||r)}async _open(){await this.keet.ready(),this.api.swarm=new ze(this.keet,this.opts),this.api.preferences=new Je(this.keet,this.opts),this.api.network=new We(this.keet,this.opts),this.api.error=new Ye(this.keet,this.opts),this.api.debug=new Xe(this.keet,this.opts),this.api.feedback=new $e(this.keet);const{isFeatureSupported:e,FEATURES:t}=this.keet.versions;this.call=this.api.call=new g(this.keet.swarm,{skipJoinLeave:e(this.keet.abi.autoupgrade,t.CALLS_V2)}),this.keet.on("call-changed",this._handleCallChanged.bind(this))}async _close(){this.call&&this.call.close(),await this.api.debug.disableInspector()}async closeActiveCalls(){if(this.callsByRoomId.size)for(const[e,t]of this.callsByRoomId){const i=s.decode(e),o=await this.keet.local.get("@local/rooms",{roomKey:i});if(!o)continue;const r=this.keet.rooms.get(e);if(!r)continue;const{isFeatureSupported:n,FEATURES:a}=this.keet.versions;if(!n(o.digest.abi.version,a.CALLS_V2))return;const c=o.dm?"@keet/end-call":"@keet/leave-call";await r.dispatch(c,{callKey:s.decode(t.callId)})}}_handleCallChanged(e,t,s){const i=L(t),o=this.callsByRoomId.get(e),r=s?.deviceKey||null;if(!s&&!o)return;const n={joinPeer:this.keet.debugJoinPeer,leavePeer:this.keet.debugLeavePeer},a=new Se(this.keet.swarm,{call:i,prev:o,deviceKey:r,debug:n});if(a.refresh(),a.ended)return this.callsByRoomId.delete(e);this.callsByRoomId.set(e,a)}async suspend(){await this.keet.suspend()}async resume(){await this.keet.resume()}};
@holepunchto/keet-core/lib/api/v1/inspector.js +1 -0
……@@ -0,0 +1 @@
1const{Console:s,Server:e}=require("bare-inspector"),{once:o}=require("bare-events");class l{constructor({port:s=0,host:e="localhost"}={}){this.port=s,this.host=e,this._server=null,this._url=null,this._bareConsole=null,this._oldConsole=global.console}get key(){return this._url}_overrideConsole(){this._bareConsole||(this._bareConsole=new s);const e={};for(const s of Object.keys(this._bareConsole))e[s]=(...e)=>{this._bareConsole[s](...e),this._oldConsole[s](...e)};global.console=e}_resetConsole(){global.console=this._oldConsole}async enable(){this._server=new e(this.port,this.host),this._server.on("close",()=>{this._resetConsole()}),await o(this._server,"listening"),this._overrideConsole();const{port:s}=this._server.address();return this._url=`devtools://devtools/bundled/js_app.html?ws=localhost:${s}`,console.log(`Keet core inspector url: ${this._url}`),this._url}async disable(){this._server&&(await new Promise(s=>{this._server.close(s)}),this._server=null,this._resetConsole(),this._bareConsole=null,this._url=null)}}module.exports=l;
@holepunchto/keet-core/lib/api/v2/base.js +1 -0
……@@ -0,0 +1 @@
1const t=require("ready-resource");class s extends t{constructor(t){super(),this.keet=t,this.room=null,this.dbSnapshot=null,this.blobSnapshot=null,this.localSnapshot=null}async _close(){await Promise.all([this.dbSnapshot?this.dbSnapshot.close():null,this.blobSnapshot?this.blobSnapshot.close():null,this.localSnapshot?this.localSnapshot.close():null]),this.room&&this.keet.internalReleaseRoom(this.room)}setRoom(t){return this.room=this.keet.internalOpenExistingRoom(t),this.room}snapshot(){if(!this.room)throw new Error("Must set a room before taking a db snapshot");return this.dbSnapshot||(this.dbSnapshot=this.room.db.snapshot()),this.dbSnapshot}blobSnapshot(){if(!this.room)throw new Error("Must set a room before taking a db snapshot");return this.blobSnapshot?this.dbSnapshot:(this.blobSnapshot=this.room.blobs.snapshot(),this.blobSnapshot)}localSnapshot(){return this.localSnapshot||(this.localSnapshot=this.keet.local.snapshot()),this.localSnapshot}}class o{constructor(t,o){this.backend=t,this.keet=t.keet,this.req=o,this.ctx=new s(this.keet)}async _run(){}async run(){this.backend.opened||await this.backend.ready();try{const t=Date.now(),s=await this._run();return{header:{duration:Date.now()-t},...s}}finally{await this.ctx.close()}}static run(t,s){return new this(t,s).run()}}module.exports={KeetMethod:o};
@holepunchto/keet-core/lib/api/v2/call/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("ready-resource");module.exports=class extends e{};
@holepunchto/keet-core/lib/api/v2/core/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("scope-lock"),t=require("ready-resource"),s=require("b4a"),{KeetMethod:i}=require("../base"),o={RoomChanged:1,RoomChatChanged:2,RoomDigestChanged:3,RoomConfigChanged:4,RoomMemberChanged:5,RoomDeviceChanged:6,RoomReactionsChanged:7,RoomStatsChanged:8,RoomJoinRequestsChanged:9,PairingChanged:10},n={Identity:100,Pairing:101,Lobby:102,Chat:103,Reactions:104,Members:105},a={Identity:200,Pairing:201,Lobby:202,Chat:203,Reactions:204,Members:205};class r{constructor(t){this.coreAPI=t,this.keet=t.keet,this.view=t.view,this.rpc=t.rpc,this.active=!1,this._queue=[],this._lock=new e({debounce:!0})}_isTracking(e,t){return!1}async _process(e,t){}async _bump(){if(await this._lock.lock())try{const e=[...this._queue];this._queue=[];for(const{type:t,event:s}of e)await this._process(t,s)}finally{this._lock.unlock()}}async bump(){try{await this._bump()}catch(e){this.keet.onerror(e)}}dispatch(e,t){this._isTracking(e,t)&&(this._queue.push({type:e,event:t}),this.bump())}}class h extends r{_isTracking(e,t){switch(e){case n.Identity:case a.Identity:return!0;case o.RoomMemberChanged:case o.RoomDeviceChanged:return this.active&&t.roomInfo.status.isPrivateProfile;default:return!1}}async _process(e,t){switch(e){case n.Identity:return this.active=!0,this._onReset(t);case a.Identity:return this.active=!1,null;case o.RoomMemberChanged:return this._onRoomMemberChanged(t.value);case o.RoomDeviceChanged:return this._onRoomDeviceChanged(t.value);default:return null}}async _onReset({clock:e}={}){this.keet.onlineBoot.opened||await this.keet.onlineBoot.ready();const[t,s,i]=await Promise.all([this.keet.local.get("@local/identity"),this.keet.privateProfile.db.findOne("@keet/members"),this.keet.privateProfile.db.find("@keet/devices").toArray()]),o=t.status,n=s.key;this.view.members.add(s);const a=[];for(const e of i)a.push(e.key),this.view.devices.add(e);this.view.identity.onReset({memberKey:n,deviceKeys:a,status:o}),e>0&&this.rpc.coreHaveIdentity({clock:e})}_onRoomMemberChanged(e){this.view.members.add(e),this.rpc.coreIdentityMember({memberKey:e.key})}_onRoomDeviceChanged(e){this.view.devices.add(e),this.rpc.coreIdentityDevice({deviceKey:e.key})}}class c extends r{_isTracking(e,t){switch(e){case n.Pairing:case a.Pairing:return!0;case o.RoomChanged:case o.RoomJoinRequestsChanged:return this.active&&t.roomId===this.keet.privateProfile.id;default:return!1}}_process(e,t){switch(e){case n.Pairing:return this.active=!0,this._onReset(t);case a.Pairing:return this.active=!1,null;case o.RoomChanged:case o.RoomJoinRequestsChanged:return this._onPrivateProfileChanged(t);default:return null}}_onPrivateProfileChanged(e){return this._onReset({clock:0})}async _onReset({clock:e}){this.keet.onlineBoot.opened||await this.keet.onlineBoot.ready();const[t,s]=await Promise.all([this.keet.privateProfile.db.find("@keet-private-id/pending-invitations").toArray(),this.keet.privateProfile.db.find("@keet/join-requests").toArray()]);this.rpc.corePairingReset({pendingInvitations:t,identityJoinRequests:s}),e>0&&this.rpc.coreHavePairing({clock:e})}}class d extends r{constructor(e){super(e),this._end=0,this._start=0,this._total=0,this._rooms=[],this._roomMap=new Map}_isTracking(e,t){switch(e){case n.Lobby:return!0;case o.RoomChanged:return this.active&&!t.roomInfo.status.isPrivateProfile;case o.RoomDigestChanged:case o.RoomConfigChanged:case o.RoomChatChanged:return this.active&&this._roomMap.has(s.toString(t.roomKey,"hex"));default:return!1}}_process(e,t){switch(e){case n.Lobby:return this.active=!0,this._onReset(t);case a.Lobby:return this.active=!1,null;case o.RoomChanged:return this._onRoomActivity(t);case o.RoomDigestChanged:return this._onRoomDigestChanged(t);case o.RoomConfigChanged:return this._onRoomConfigChanged(t);case o.RoomChatChanged:return this._onRoomLastMessageChanged(t);default:return null}}_addRoom(e,t){A(this.view,e,t)}_mapInfo(e,t){return{visible:!(!1===t?.status?.isActive||e.status.isRemoved||e.identity||e.dm&&!e.config.title),timestamp:e.timestamps.latestChatMessage||e.timestamps.latestSync}}async _resize(e){if(this._rooms.length>=e)return;let t=this._rooms.length||1;for(;t<e;)t*=2;const i=this.keet.local.snapshot(),[o,n]=await Promise.all([i.find("@local/rooms-by-timestamp",{reverse:!0,limit:t}).toArray(),i.get("@local/stats")]);await i.close(),this._total=n.activeRooms,this._rooms=[],this._roomMap.clear();for(let e=0;e<o.length;e++){const t=o[e],i=s.toString(t.roomKey,"hex"),{timestamp:n}=this._mapInfo(t),a={id:i,record:t,position:e,timestamp:n};this._rooms.push(a),this._roomMap.set(i,a)}}_pushViewport(){const e=[];for(let t=this._start;t<Math.min(this._end,this._rooms.length);t++){const{id:s,record:i}=this._rooms[t];this._addRoom(s,i),e.push(i.roomKey)}this.rpc.coreLobbyReset({keys:e,start:this._start,end:this._end,total:this._total})}async _onReset({clock:e,start:t,end:s}){this._start=t,this._end=s,await this._resize(s),this._pushViewport(),e>0&&this.rpc.coreHaveLobby({clock:e})}async _onRoomActivity({roomKey:e,roomInfo:t}){const i=s.toString(e,"hex"),o=this.keet.local.snapshot(),[n,a]=await Promise.all([o.get("@local/stats"),o.get("@local/room-preferences",{roomKey:e})]);await o.close(),this._total=n.activeRooms;const{visible:r,timestamp:h}=this._mapInfo(t,a),c=t,d=this._roomMap.get(i);if(!d&&!r)return;if(d&&r&&h<=d.timestamp)return;const m=d?.position??-1;let g=-1;if(r){let e=0,t=this._rooms.length;for(;e<t;){const s=e+t>>>1;this._rooms[s].timestamp>h?e=s+1:t=s}g=e,d&&g>m&&g--}if(m!==g){if(g<0){for(let e=m,t=this._rooms.length-1;e<t;e++)this._rooms[e]=this._rooms[e+1],this._rooms[e].position=e;this._rooms.pop(),this._roomMap.delete(i)}else if(m<0){this._rooms.push(null);for(let e=this._rooms.length-1;e>g;e--)this._rooms[e]=this._rooms[e-1],this._rooms[e].position=e;const e={id:i,record:c,position:g,timestamp:h};this._rooms[g]=e,this._roomMap.set(i,e)}else if(m>g){for(let e=m;e>g;e--)this._rooms[e]=this._rooms[e-1],this._rooms[e].position=e;this._rooms[g]=d,d.position=g,d.record=c,d.timestamp=h}else{for(let e=m;e<g;e++)this._rooms[e]=this._rooms[e+1],this._rooms[e].position=e;this._rooms[g]=d,d.position=g,d.record=c,d.timestamp=h}(m>=0&&m<this._end||g>=0&&g<this._end)&&this._pushViewport()}else d&&(d.record=c,d.timestamp=h)}_onRoomDigestChanged({roomKey:e,value:t}){const i=s.toString(e,"hex");this.view.roomInfo.onDigestChanged({id:i,digest:t})}_onRoomConfigChanged({roomKey:e,value:t}){const i=s.toString(e,"hex");this.view.roomInfo.onConfigChanged({id:i,config:t})}_onRoomLastMessageChanged({roomKey:e,roomInfo:t}){const i=s.toString(e,"hex");U(this.view,i,t)}}class m extends r{constructor(e){super(e),this.roomKey=null,this._roomId=null,this.start=0,this.size=0,this.isBottom=!1,this._chatLength=-1,this._viewportIds=[],this._memberMessages=new Map}_isTracking(e,t){let i=!1;switch(e){case n.Chat:case a.Chat:i=!0;break;case o.RoomDigestChanged:case o.RoomConfigChanged:i=this.active&&this.roomKey&&s.equals(t.roomKey,this.roomKey);break;case o.RoomChatChanged:case o.RoomReactionsChanged:case o.RoomMemberChanged:i=this.roomKey&&s.equals(t.roomKey,this.roomKey);break;default:i=!1}return i}_process(e,t){switch(e){case n.Chat:return this._chatLength=-1,this._onActivate(t);case a.Chat:return this._onDeactivate(t);case o.RoomDigestChanged:return this._onRoomDigestChanged(t);case o.RoomConfigChanged:return this._onRoomConfigChanged(t);case o.RoomChatChanged:return this._onRoomChatChanged(t);case o.RoomReactionsChanged:return this._onRoomReactionsChanged(t);case o.RoomMemberChanged:return this._onRoomMemberChanged(t);default:return null}}async _pushMessage(e,t){const[s,i]=await Promise.all([e.get("@keet/reaction-digests",{id:t.id}),e.get("@keet/devices",{key:t.oplog.key})]),o=await e.get("@keet/members",{key:i.memberKey});return this._pushMessageDirect(t,s,i,o)}_pushMessageDirect(e,t,i,o){const n=s.toString(o.key,"hex"),a=`${s.toString(e.oplog.key,"hex")}-${e.oplog.seq}`;this._memberMessages.has(n)||this._memberMessages.set(n,[]),this._memberMessages.get(n).push(e.oplog),t&&this.view.reactions.add(t,{cacheId:a}),this.view.members.add(o);const r={chat:L(e),memberKey:o.key,role:o.status};return this.view.messageInfo.onAdd(r,{cacheId:a}),e.oplog}async _pushMessages(e,t,s){this._memberMessages.clear();const i=[];for await(const s of e.find("@keet/chat",t))i.push(this._pushMessage(e,s));const o=await Promise.all(i);this._viewportIds=o,this._emitReset(s)}_emitReset(e){this.view.chat.onReset({ids:this._viewportIds,roomKey:this.roomKey,start:this.start,size:this.size,total:e,isBottom:this.isBottom})}async _pushViewport(){const e=this.keet.internalOpenExistingRoom(this.roomKey),t=e.db.snapshot();try{const e=await t.get("@keet/threads",{id:0});this._chatLength=e.count;const s=Math.max(this.isBottom?this._chatLength-this.size:this.start,0),i=Math.min(this.isBottom?this._chatLength:this.start+this.size,this._chatLength);await this._pushMessages(t,{gte:{id:{thread:0,index:s}},lt:{id:{thread:0,index:i}}},this._chatLength)}finally{t&&await t.close(),this.keet.internalReleaseRoom(e)}}async _onActivate({clock:e,roomKey:t,start:i,size:o,isBottom:n}){this.roomKey&&!s.equals(this.roomKey,t)&&(await this.keet.deactivateRoom(this.roomKey),this.view.rooms.unref(this._roomId)),this.roomKey=t,this._roomId=s.toString(t,"hex"),this.start=i,this.size=o,this.isBottom=n,this.view.rooms.ref(this._roomId),await this.keet.activateRoom(t),this.active=!0;const a=await this.keet.local.get("@local/rooms",{roomKey:t});A(this.view,this._roomId,a),await this._pushViewport(),e>0&&this.rpc.coreHaveChat({clock:e})}async _onDeactivate(){this.roomKey&&(await this.keet.deactivateRoom(this.roomKey),this.view.rooms.unref(this._roomId)),this.roomKey=null,this._roomId=null,this.active=!1}_onRoomDigestChanged({value:e}){this.view.roomInfo.onDigestChanged({id:this._roomId,digest:e})}_onRoomConfigChanged({value:e}){this.view.roomInfo.onConfigChanged({id:this._roomId,config:e})}_isInViewport(e){const t=this.isBottom?this._chatLength-this.size:this.start,s=this.isBottom?this._chatLength:this.start+this.size;return e>=t&&e<s}_onRoomChatChanged(e){const{message:t,reactions:s,device:i,member:o}=e.value,n=t.id.index;if(n>=this._chatLength){if(this.isBottom){const e=this._pushMessageDirect(t,s,i,o);for(this._viewportIds.push(e),this._chatLength=n+1;this._viewportIds.length>this.size;)this._viewportIds.shift();this._emitReset(this._chatLength)}}else this._isInViewport(n)&&this.view.messageInfo.onChatChanged({chat:L(t)})}_onRoomReactionsChanged({value:{id:e,reactions:t}}){this._isInViewport(t.id.index)&&this.view.messageInfo.onReactionsChanged({id:e,reactions:t})}_onRoomMemberChanged({value:e}){const t=s.toString(e.key,"hex"),i=this._memberMessages.get(t);i&&0!==i.length&&(this.view.members.add(e),this.view.messageInfo.onRoleChanged({ids:i,role:e.status}),this.view.messageInfo.onMemberChanged({ids:i,memberKey:e.key}))}}class g extends r{}class u extends i{async _run(){return{roomKey:await this.keet.createRoom(this.req)}}}class l extends i{_run(){return this.keet.leaveRoom(this.req.roomKey)}}class p extends i{_run(){return this.keet.activateRoom(this.req.roomKey)}}class C extends i{_run(){return this.keet.deactivateRoom(this.req.roomKey)}}class _ extends i{async _run(){const e=this.req.permissions;return{invitation:await this.keet.createRoomInvitation(this.req.roomKey,{requiresConfirmation:!!e?.requiresConfirmation,canModerate:!!e?.canModerate,canAdmin:!!e?.canAdmin,readOnly:!!e?.isReadOnly,expiration:this.req.expiration})}}}class R extends i{async _run(){return{invitation:await this.keet.createIdentityInvitation()}}}class b extends i{_run(){return this.keet.updateProfile(this.req)}}class y extends i{_run(){return this.req.isIdentity?this.keet.startPairingIdentity(this.req.invitation):this.keet.startPairingRoom(this.req.invitation)}}class k extends i{_run(){return this.keet.acceptJoinRequest(this.req.roomKey,this.req.request.deviceKey)}}class v extends i{_run(){return this.keet.rejectJoinRequest(this.req.roomKey,this.req.request.deviceKey)}}class f extends i{_run(){return this.keet.stopPairing(this.req.id)}}class w extends i{_run(){return this.keet.dispatch(this.req.roomKey,"@keet/update-room-config",this.req)}}class I extends i{_run(){}}class M extends i{_run(){}}class q extends i{async _run(){await this.keet.dispatch(this.req.roomKey,"@keet/add-chat-message",{message:this.req.message})}}class K extends i{_run(){return this.keet.dispatch(this.req.roomKey,"@keet/update-chat-message",{oplog:this.req.id,message:this.req.message})}}class P extends i{_run(){return this.keet.dispatch(this.req.roomKey,"@keet/remove-chat-message",{oplog:this.req.id})}}class x extends i{_run(){return this.keet.dispatch(this.req.roomKey,"@keet/add-reaction",{oplog:this.req.id,reaction:this.req.reaction})}}class T extends i{_run(){return this.keet.dispatch(this.req.roomKey,"@keet/remove-reaction",{oplog:this.req.id,reaction:this.req.reaction})}}function L(e){return{id:e.oplog,clock:e.clock,timestamps:{sent:e.timestamp,edited:e.editedAt},status:e.status,message:e.message,event:e.event}}function D(e){return{member:e.selfMember?.status,device:e.status}}function A(e,t,s){let i=null;s.lastMessage&&(e.members.add(s.lastMember),i=e.messageInfo.onAdd({chat:L(s.lastMessage),memberKey:s.lastMember.key,role:s.lastMember.status}));const o={id:s.roomKey,digest:s.digest,config:s.config,messageId:i?.id,role:D(s)};e.roomInfo.onAdd(o,{cacheId:t})}function U(e,t,s){if(!s.lastMessage)return;e.members.add(s.lastMember);const i=e.messageInfo.onAdd({chat:L(s.lastMessage),memberKey:s.lastMember.key,role:s.lastMember.status});e.roomInfo.onLastMessageChanged({id:t,messageId:i.id})}module.exports=class extends t{constructor(e){super(),this.backend=e,this.keet=this.backend.keet,this.rpc=this.backend.rpc,this.view=this.backend.view,this.identityTracker=new h(this),this.pairingTracker=new c(this),this.lobbyTracker=new d(this),this.chatTracker=new m(this),this.memberTracker=new g(this),this.trackers=[this.identityTracker,this.pairingTracker,this.lobbyTracker,this.chatTracker,this.memberTracker],this.rpc.onCoreCreateRoom(this.onCreateRoom.bind(this)),this.rpc.onCoreActivateRoom(this.onActivateRoom.bind(this)),this.rpc.onCoreDeactivateRoom(this.onDeactivateRoom.bind(this)),this.rpc.onCoreLeaveRoom(this.onLeaveRoom.bind(this)),this.rpc.onCoreUpdateRoomConfig(this.onUpdateRoomConfig.bind(this)),this.rpc.onCoreUpdateRoomSettings(this.onUpdateRoomSettings.bind(this)),this.rpc.onCoreUpdateRoomStatus(this.onUpdateRoomStatus.bind(this)),this.rpc.onCoreUpdateProfile(this.onUpdateProfile.bind(this)),this.rpc.onCoreStartPairing(this.onStartPairing.bind(this)),this.rpc.onCoreCreateRoomInvitation(this.onCreateRoomInvitation.bind(this)),this.rpc.onCoreCreateIdentityInvitation(this.onCreateIdentityInvitation.bind(this)),this.rpc.onCoreAcceptJoinRequest(this.onAcceptJoinRequest.bind(this)),this.rpc.onCoreRejectJoinRequest(this.onRejectJoinRequest.bind(this)),this.rpc.onCoreStopPairing(this.onStopPairing.bind(this)),this.rpc.onCoreAddChatMessage(this.onAddChatMessage.bind(this)),this.rpc.onCoreEditChatMessage(this.onEditChatMessage.bind(this)),this.rpc.onCoreRemoveChatMessage(this.onRemoveChatMessage.bind(this)),this.rpc.onCoreAddChatReaction(this.onAddChatReaction.bind(this)),this.rpc.onCoreRemoveChatReaction(this.onRemoveChatReaction.bind(this)),this.rpc.onCoreWantLobby(this.onWantLobby.bind(this)),this.rpc.onCoreUnwantLobby(this.onUnwantLobby.bind(this)),this.rpc.onCoreWantIdentity(this.onWantIdentity.bind(this)),this.rpc.onCoreUnwantIdentity(this.onUnwantIdentity.bind(this)),this.rpc.onCoreWantPairing(this.onWantPairing.bind(this)),this.rpc.onCoreUnwantPairing(this.onUnwantPairing.bind(this)),this.rpc.onCoreWantChat(this.onWantChat.bind(this)),this.rpc.onCoreUnwantChat(this.onUnwantChat.bind(this)),this.rpc.onCoreWantMembers(this.onWantMembers.bind(this)),this.rpc.onCoreUnwantMembers(this.onUnwantMembers.bind(this))}async boot(){return{}}onPairingChanged(){this._dispatch(o.PairingChanged,null)}onRoomChanged(e){this.identityTracker.dispatch(o.RoomChanged,e),this.pairingTracker.dispatch(o.RoomChanged,e),this.lobbyTracker.dispatch(o.RoomChanged,e),this.chatTracker.dispatch(o.RoomChanged,e)}onRoomChatChanged(e){this.chatTracker.dispatch(o.RoomChatChanged,e),this.lobbyTracker.dispatch(o.RoomChatChanged,e)}onRoomDigestChanged(e){this.lobbyTracker.dispatch(o.RoomDigestChanged,e),this.chatTracker.dispatch(o.RoomDigestChanged,e)}onRoomMemberChanged(e){this.identityTracker.dispatch(o.RoomMemberChanged,e),this.chatTracker.dispatch(o.RoomMemberChanged,e)}onRoomDeviceChanged(e){this.identityTracker.dispatch(o.RoomDeviceChanged,e)}onRoomConfigChanged(e){this.lobbyTracker.dispatch(o.RoomConfigChanged,e),this.chatTracker.dispatch(o.RoomConfigChanged,e)}onRoomReactionsChanged(e){this.chatTracker.dispatch(o.RoomReactionsChanged,e)}onRoomStatsChanged(e){this.chatTracker.dispatch(o.RoomStatsChanged,e)}onRoomJoinRequestsChanged(e){this.pairingTracker.dispatch(o.RoomJoinRequestsChanged,e)}onWantIdentity(e){this.identityTracker.dispatch(n.Identity,e)}onUnwantIdentity(e){this.identityTracker.dispatch(a.Identity,e)}onWantPairing(e){this.pairingTracker.dispatch(n.Pairing,e)}onUnwantPairing(e){this.pairingTracker.dispatch(a.Pairing,e)}onWantLobby(e){this.lobbyTracker.dispatch(n.Lobby,e)}onUnwantLobby(e){this.lobbyTracker.dispatch(a.Lobby,e)}onWantChat(e){this.chatTracker.dispatch(n.Chat,e)}onUnwantChat(e){this.chatTracker.dispatch(a.Chat,e)}onWantReactions(e){this.reactionTracker.dispatch(n.Reactions,e)}onUnwantReactions(e){this.reactionTracker.dispatch(a.Reactions,e)}onWantMembers(e){this.memberTracker.dispatch(n.Members,e)}onUnwantMembers(e){this.memberTracker.dispatch(a.Members,e)}onCreateRoom(e){return u.run(this.backend,e)}onLeaveRoom(e){return l.run(this.backend,e)}onActivateRoom(e){return p.run(this.backend,e)}onDeactivateRoom(e){return C.run(this.backend,e)}onUpdateRoomConfig(e){return w.run(this.backend,e)}onUpdateRoomSettings(e){return I.run(this.backend,e)}onUpdateRoomStatus(e){return M.run(this.backend,e)}onUpdateProfile(e){return b.run(this.backend,e)}onStartPairing(e){return y.run(this.backend,e)}onCreateRoomInvitation(e){return _.run(this.backend,e)}onCreateIdentityInvitation(e){return R.run(this.backend,e)}onAcceptJoinRequest(e){return k.run(this.backend,e)}onRejectJoinRequest(e){return v.run(this.backend,e)}onStopPairing(e){return f.run(this.backend,e)}onAddChatMessage(e){return q.run(this.backend,e)}onEditChatMessage(e){return K.run(this.backend,e)}onRemoveChatMessage(e){return P.run(this.backend,e)}onAddChatReaction(e){return x.run(this.backend,e)}onRemoveChatReaction(e){return T.run(this.backend,e)}};
@holepunchto/keet-core/lib/api/v2/debug/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("hypercore-id-encoding"),s=require("ready-resource"),o=require("bare-inspector"),t=require("safety-catch"),r=require("b4a"),{hashDebugPassword:i}=require("../../../core/debug"),n=global.console;class c extends s{constructor(){super(),this.url=null,this._server=null,this._console=null,this.ready().catch(t)}async _open(){console.log(0),this._server=new o.Server(0,"localhost"),console.log(1),await new Promise(e=>this._server.once("listening",e)),console.log(2);const{port:e}=this._server.address();console.log(5),this.url=`devtools://devtools/bundled/js_app.html?ws=localhost:${e}`,console.log(`Keet core inspector url: ${this.url}`),console.log(6)}async _close(){global.console=n,await new Promise((e,s)=>this._server.close(o=>{o?s(o):e(o)}))}}module.exports=class extends s{constructor(e){super(),this.backend=e,this.keet=this.backend.keet,this.rpc=this.backend.rpc,this._inspector=null,this._onupdate=this._onConfigUpdated.bind(this),this.keet.on("force-update",this._onupdate),this.rpc.onDebugEnable(this.onEnable.bind(this)),this.rpc.onDebugDisable(this.onDisable.bind(this))}_close(){this.keet.removeListener("force-update",this._onupdate)}async _onConfigUpdated(){try{await this.onDisable()}catch(e){t(e)}}_respond(e){return{header:{duration:0},...e}}async onEnable({password:s}){if(this.keet.opened||await this.keet.ready(),this.keet.isProduction){const o=this.keet.config.debug.unlockHash,t=i(e.decode(s));if(!r.equals(o,t))throw new Error("Invalid password")}return this._inspector||(this._inspector=new c),console.log("pre inspector ready"),await this._inspector.ready(),console.log("post inspector ready"),this._respond({inspector:this._inspector.url})}async onDisable(){if(this.inspector)return await this.inspector.close(),this._respond(null)}};
@holepunchto/keet-core/lib/api/v2/error/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("ready-resource");module.exports=class extends e{};
@holepunchto/keet-core/lib/api/v2/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("ready-resource"),o=require("safety-catch"),s=require("../../client/index.js"),{api:{hrpc:t}}=require("../../../schema/spec"),{KeetMethod:i}=require("./base"),n=require("./core"),h=require("./call"),r=require("./debug"),a=require("./error"),c=require("./network");class d extends i{_run(){return this.backend.coreAPI.boot()}}class u extends i{async _run(){}}module.exports=class extends e{constructor(e,i,n={}){if(super(),this.keet=e,this.stream=i,this.opts=n,this.view=new s.View,this.rpc=new t(i),this._apis=null,this.rpc.onBoot(this.onBoot.bind(this)),this.rpc.onSelfDestruct(this.onSelfDestruct.bind(this)),this.stream.on("close",this.close.bind(this)),!this.keet.opened)throw new Error("Keet must be opened before starting RPC");this.ready().catch(n.onerror||o)}async _open(){this.coreAPI=new n(this),this.callAPI=new h(this),this.debugAPI=new r(this),this.errorAPI=new a(this),this.networkAPI=new c(this),this.apis=[this.coreAPI,this.callAPI,this.debugAPI,this.errorAPI,this.networkAPI],this.keet.on("v2:room-changed",this._onRoomChanged.bind(this)),this.keet.on("v2:room-chat-changed",this._onRoomChatChanged.bind(this)),this.keet.on("v2:room-stats-changed",this._onRoomStatsChanged.bind(this)),this.keet.on("v2:room-digest-changed",this._onRoomDigestChanged.bind(this)),this.keet.on("v2:room-member-changed",this._onRoomMemberChanged.bind(this)),this.keet.on("v2:room-device-changed",this._onRoomDeviceChanged.bind(this)),this.keet.on("v2:room-config-changed",this._onRoomConfigChanged.bind(this)),this.keet.on("v2:room-reactions-changed",this._onRoomReactionsChanged.bind(this)),this.keet.on("v2:room-join-requests-changed",this._onRoomJoinRequestsChanged.bind(this)),this.view.members.on("update",this._pushMember.bind(this)),this.view.devices.on("update",this._pushDevice.bind(this)),this.view.lobby.on("reset",this._pushLobby.bind(this)),this.view.identity.on("reset",this._pushIdentity.bind(this)),this.view.roomInfo.on("update:reset",this._pushRoomInfo.bind(this)),this.view.roomInfo.on("update:role",this._pushRoomInfoRole.bind(this)),this.view.roomInfo.on("update:digest",this._pushRoomInfoDigest.bind(this)),this.view.roomInfo.on("update:config",this._pushRoomInfoConfig.bind(this)),this.view.roomInfo.on("update:message",this._pushRoomInfoMessage.bind(this)),this.view.chat.on("reset",this._pushChat.bind(this)),this.view.messageInfo.on("update:reset",this._pushMessageInfo.bind(this)),this.view.messageInfo.on("update:role",this._pushMessageInfoRole.bind(this)),this.view.messageInfo.on("update:member",this._pushMessageInfoMember.bind(this)),this.view.messageInfo.on("update:chat",this._pushMessageInfoChat.bind(this)),this.view.messageInfo.on("update:reactions",this._pushMessageInfoReactions.bind(this)),await Promise.all(this.apis.map(e=>e.ready()))}async _close(){this.apis&&await Promise.all(this.apis.map(e=>e.close()))}_onPairingChanged(e){this.coreAPI.onPairingChanged(e)}_onRoomChanged(e){this.coreAPI.onRoomChanged(e)}_onRoomStatsChanged(e){this.coreAPI.onRoomStatsChanged(e)}_onRoomChatChanged(e){this.coreAPI.onRoomChatChanged(e)}_onRoomDigestChanged(e){this.coreAPI.onRoomDigestChanged(e)}_onRoomMemberChanged(e){this.coreAPI.onRoomMemberChanged(e)}_onRoomDeviceChanged(e){this.coreAPI.onRoomDeviceChanged(e)}_onRoomConfigChanged(e){this.coreAPI.onRoomConfigChanged(e)}_onRoomReactionsChanged(e){this.coreAPI.onRoomReactionsChanged(e)}_onRoomJoinRequestsChanged(e){this.coreAPI.onRoomJoinRequestsChanged(e)}_pushMember(e,o){return this.rpc.coreMember(o)}_pushDevice(e,o){return this.rpc.coreDevice(o)}_pushMessage(e,o){return this.rpc.coreMessage(o)}_pushIdentity(){return this.rpc.coreIdentityReset(this.view.identity)}_pushLobby(){return this.rpc.coreLobbyReset(this.view.lobby)}_pushRoomInfoMessage(e){return this.rpc.coreRoomInfoLastMessage({id:e.id,lastMessage:e.messageId})}_pushRoomInfoDigest(e){return this.rpc.coreRoomInfoDigest(e)}_pushRoomInfoConfig(e){return this.rpc.coreRoomInfoConfig(e)}_pushRoomInfoRole(e){return this.rpc.coreRoomInfoRole(e)}_pushRoomInfo(e){return this.rpc.coreRoomInfo(e)}_pushChat(){return this.rpc.coreChatReset(this.view.chat)}_pushMessageInfo(e){return this.rpc.coreMessageInfo(e)}_pushMessageInfoChat(e){return this.rpc.coreMessageInfoChat(e)}_pushMessageInfoMember(e){return this.rpc.coreMessageInfoMember(e)}_pushMessageInfoRole(e){return this.rpc.coreMessageInfoRole(e)}_pushMessageInfoReactions(e){return this.rpc.coreMessageInfoReactions(e)}onBoot(){return d.run(this)}onSelfDestruct(){return u.run(this)}};
@holepunchto/keet-core/lib/api/v2/network/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("ready-resource");module.exports=class extends e{};
@holepunchto/keet-core/lib/bundle/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("ready-resource"),r=require("bundlebee"),t=require("hypercore"),s=require("b4a"),i=require("hypercore/messages"),o=require("bare-zlib"),{EXPERIMENTAL:n}=require("../../schema/versions"),{KeetContractError:u}=require("../core/contract/errors"),a=require("../core/contract/index.js"),c=require("compact-encoding"),h=c.array(i.wire.data),d=12,l=25,_="/lib/contract/index.js",b="/lib/core/contract/index.js";function y(e){return new Promise((r,t)=>{o.gunzip(e,(e,s)=>{if(e)return t(e);r(s)})})}module.exports=class extends e{constructor(e,t,{hydrate:s=!1}={}){if(super(),this.keet=e,this._ownsBee=!e.opts.bundlebee,e.opts.bundlebee)this._bee=e.opts.bundlebee;else{const s=e.opts.bundlesStore||e.rootCorestore.namespace(t);this._bee=new r(s,{key:e._bundlesKey,length:e._bundlesLength})}this._bundles={},this._routers={},this._hydrate=s}get core(){return this._bee.core}async _open(){if(!this._hydrate)return this._bee.ready();let e=[];try{const r=require("./latest-bundle.trace.js");e=c.decode(h,await y(r))}catch(e){this.keet.onerror(e,{prefix:"TRACE_LOAD_ERROR"})}for(const r of e)try{await this._bee.core.applyProof(r)}catch(e){if(r.manifest){const e=t.key(r.manifest);if(!s.equals(e,this._bee.core.key))continue}this.keet.onerror(e,{prefix:"TRACE_APPLY_ERROR"})}await this._bee.ready()}_close(){if(this._ownsBee)return this._bee.close()}async loadBundle(e){if(this._bundles[e])return this._bundles[e];if(e>=n)return this._bundles[e]=a,a;const r=e<d?d:e,t=r>=l?b:_,s=await this._bee.findABI(r);if(!s)throw u.BUNDLE_NOT_AVAILABLE(r);const i=await this._bee.load(new URL("../..",module.url),t,s);return this._bundles[e]=i.exports,this._bundles[e]}async loadRouter(e){return this._routers[e]||(await this.loadBundle(e),this._routers[e]=this._bundles[e].createRouter()),this._routers[e]}};
@holepunchto/keet-core/lib/bundle/latest-bundle.trace.js +6 -0
……@@ -0,0 +1,6 @@
1const b4a = require('b4a')
2
3module.exports = b4a.from(
4 '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e7p+WPKDbqnc2txbulia3Q1m128tX51aWF/uro/POuXq5j1nOli9m+su+FFuNghya7udmdajoBgf1bbubjlb93buNqe3qzeWL90u1HfvFK4UDw/j3Xubd1YOlxc373rX7qzfLN+5VPDXK3e7N1fcWxd2j655R43abDBTvbG6t3Vre/3a3sLe6uHewvTt9s3W+t0re3e7xfJMt3S7trt2/ShcKYVbs3utpdyuX3Ve3bvbulC/dKMd1bt3Lu6O701fXF1efdRZ23p1dq2+FKxULx3drrv3xndvTM/4hyuPbpR222s3rxbudeKlrcL48u745uK99YJXW3x0L56Jy6vX713e9vaOZsej4MJDZ7vVXuxcdu+FuavlnWjh3q2rW4eRt7zdvR4WLoxfOVpYPVwKne3y2sxK9dr16Wt3tovTC8sz5aMlIPk+qM50gsNoJ6wFtbY3vZvLBZ1OeerS1OXK1oWVxaPb7fH2nUvX1ldnw72tS49WvMW4fHdvam+vufZoq9WtLN/aGS+WjraaW5ur8cbheHl7+079erQ3E21dL25fvn1rtdU4ai0tNoLCbqNbaBRbue3DYG91Krh9u/OwGxytTrtrtzadq9HV6wuNGxevzR560zcLO0f1S8WH/l5r72599mjv6u3K2mp15kFpZ/PexqV2adqplTa6nbvRxWJ3oXI9atSurRbuTTuF8JK/52+Xty87wdHt1Si4EjdyYWsmuH2z0l2KvMLN602vMlsa3+5ciR7ONOLLe9Pl6dkHW1dWOqtbD+5eql67EF+dKec2px6UussLj7q3g+vXbq893FqvPbiz3Anv3li6svzQubH2aA8wnMgvPbx1O9yMrjp7dspKQUvMSxdS4GBfGo7TdgCnLSmc9lpV4rS3q7uOW2i2tyo7a8tbu5XLCxuV8m5up1Penp2+FR7dW9+7OL1281Ln8Mq1Kw9Kdx7enF04dO4uNu5U9h607+7V62vt1ZmVK2v3rnu5+NZi48KrmzcelV99OHN5x90q5x5di4pT4fVHd8pT7sKV+pVrlzer08GFB87F+G5pcS0obF5zrux2bkxv1Gcbu11nunlhdrt556hYu9CcqtWul/2p1fVcfHd8YWZx4VbtaHH9aiHo7NTq7WDt6vajw1zh0eqD1sP4zs2txuruwhV/urR3/dqm36gc3okv7swE3uY64MxX7j14ePfy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',
5 'base64'
6)
@holepunchto/keet-core/lib/client/constants.js +1 -0
……@@ -0,0 +1 @@
1const e={Title:1,Description:2,Avatar:3,SupportedLanguages:4,BlindPeers:5};module.exports={ConfigKey:e};
@holepunchto/keet-core/lib/client/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("ready-resource"),t=require("safety-catch"),i=require("b4a"),o=require("./view"),{ConfigKey:s}=require("./constants"),n=require("../../schema/spec"),a=n.api.hrpc;module.exports=class extends e{static View=o;static ConfigKey=s;static Schemas={Contract:n.contract.hyperschema,Local:n.local.hyperschema,Api:n.api.hyperschema,Config:n.config.hyperschema};constructor(e,i){super(),this.rpc=new a(e),this.view=new o,this.opts=i,this._wantClock=0,this._haveClock=0,this._unwants=new Map,this._gcInterval=setInterval(()=>this._gc(),1e3),this.rpc.onCoreHaveIdentity(this._handleHaveIdentity.bind(this)),this.rpc.onCoreHavePairing(this._handleHavePairing.bind(this)),this.rpc.onCoreHaveLobby(this._handleHaveLobby.bind(this)),this.rpc.onCoreHaveChat(this._handleHaveChat.bind(this)),this.rpc.onCoreHaveMembers(this._handleHaveMembers.bind(this)),this.rpc.onCoreHaveRoomInfo(this._handleHaveRoomInfo.bind(this)),this.rpc.onCoreIdentityReset(this._handleIdentityReset.bind(this)),this.rpc.onCoreIdentityMember(this._handleIdentityMember.bind(this)),this.rpc.onCoreIdentityDevice(this._handleIdentityDevice.bind(this)),this.rpc.onCorePairingReset(this._handlePairingReset.bind(this)),this.rpc.onCoreLobbyReset(this._handleLobbyReset.bind(this)),this.rpc.onCoreLobbyRoom(this._handleLobbyRoom.bind(this)),this.rpc.onCoreChatReset(this._handleChatReset.bind(this)),this.rpc.onCoreRoomInfo(this._handleRoomInfo.bind(this)),this.rpc.onCoreRoomInfoRole(this._handleRoomInfoRole.bind(this)),this.rpc.onCoreRoomInfoDigest(this._handleRoomInfoDigest.bind(this)),this.rpc.onCoreRoomInfoConfig(this._handleRoomInfoConfig.bind(this)),this.rpc.onCoreRoomInfoLastMessage(this._handleRoomInfoLastMessage.bind(this)),this.rpc.onCoreMessageInfo(this._handleMessageInfo.bind(this)),this.rpc.onCoreMessageInfoChat(this._handleMessageInfoChat.bind(this)),this.rpc.onCoreMessageInfoRole(this._handleMessageInfoRole.bind(this)),this.rpc.onCoreMessageInfoMember(this._handleMessageInfoMember.bind(this)),this.rpc.onCoreMessageInfoReactions(this._handleMessageInfoReactions.bind(this)),this.rpc.onCoreMemberListAdd(this._handleMemberListAdd.bind(this)),this.rpc.onCoreMemberListRemove(this._handleMemberListRemove.bind(this)),this.rpc.onCoreMember(this._handleMember.bind(this)),this.rpc.onCoreDevice(this._handleDevice.bind(this)),this.ready().catch(t)}_makeRequest(e){return{header:{timestamp:Date.now()},...e}}_makeWant(e){const t={clock:++this._wantClock,...e};return{want:t,unwant:{clock:t.clock}}}_awaitHave(e,t){return new Promise(i=>{const o=s=>{s===t&&(e.off("have",o),i(t))};e.on("have",o)})}_open(){}_close(){clearInterval(this._gcInterval)}_gc(){this._haveClock<this._wantClock||(this.view.members.maybeGC(),this.view.devices.maybeGC(),this.view.reactions.maybeGC(),this.view.messages.maybeGC(),this.view.rooms.maybeGC())}_handleIdentityReset(e){this.view.identity.onReset(e)}_handleIdentityMember(e){this.view.identity.onMemberChanged(e)}_handleIdentityDevice(e){this.view.identity.onDeviceChanged(e)}_handlePairingReset(e){this.view.pairing.onReset(e)}_handleLobbyReset(e){this.view.lobby.onReset(e)}_handleLobbyRoom(e){this.view.lobby.onRoom(e)}_handleRoomInfo(e){this.view.roomInfo.onAdd(e)}_handleRoomInfoRole(e){const t=i.toString(e.id,"hex");this.view.roomInfo.onRoleChanged({id:t,role:e.role})}_handleRoomInfoDigest(e){const t=i.toString(e.id,"hex");this.view.roomInfo.onDigestChanged({id:t,digest:e.digest})}_handleRoomInfoConfig(e){const t=i.toString(e.id,"hex");this.view.roomInfo.onConfigChanged({id:t,config:e.config})}_handleRoomInfoLastMessage(e){const t=i.toString(e.id,"hex");this.view.roomInfo.onLastMessageChanged({id:t,messageId:e.lastMessage})}_handleMessageInfo(e){this.view.messageInfo.onAdd(e)}_handleMessageInfoChat(e){this.view.messageInfo.onChatChanged(e)}_handleMessageInfoRole(e){this.view.messageInfo.onRoleChanged(e)}_handleMessageInfoMember(e){this.view.messageInfo.onMemberChanged(e)}_handleMessageInfoReactions(e){this.view.messageInfo.onReactionsChanged(e)}_handleChatReset(e){this.view.chat.onReset(e)}_handleMemberListAdd(){}_handleMemberListRemove(){}_handlePairingChanged(){}_handleMessage(e){this.view.messages.add(e)}_handleReactions(e){this.view.reactions.add(e)}_handleMember(e){this.view.members.add(e)}_handleDevice(e){this.view.devices.add(e)}_handleHaveIdentity({clock:e}){this._haveClock=Math.max(this._haveClock,e),this.view.identity.onHave(e)}_handleHavePairing({clock:e}){this._haveClock=Math.max(this._haveClock,e),this.view.pairing.onHave(e)}_handleHaveLobby({clock:e}){this._haveClock=Math.max(this._haveClock,e),this.view.lobby.onHave(e)}_handleHaveRoomInfo({clock:e}){this._haveClock=Math.max(this._haveClock,e),this.view.rooms.onHave(e)}_handleHaveChat({clock:e}){this._haveClock=Math.max(this._haveClock,e),this.view.chat.onHave(e)}_handleHaveMembers({clock:e}){this._haveClock=Math.max(this._haveClock,e),this.view.members.onHave(e)}viewIdentity(){const{want:e,unwant:t}=this._makeWant();return this.view.identity.onWant(e.clock),this.rpc.coreWantIdentity(e),this._unwants.set(e.clock,()=>{this.view.identity.onCancel(e.clock),this.rpc.coreUnwantIdentity(t)}),this._awaitHave(this.view.identity,e.clock)}viewPairing(){const{want:e,unwant:t}=this._makeWant();return this.view.pairing.onWant(e.clock),this.rpc.coreWantPairing(e),this._unwants.set(e.clock,()=>{this.view.pairing.onCancel(e.clock),this.rpc.coreUnwantPairing(t)}),this._awaitHave(this.view.pairing,e.clock)}viewLobby({start:e=0,end:t=0}={}){const{want:i,unwant:o}=this._makeWant({start:e,end:t});return this.view.lobby.onWant(i.clock,e,t),this.rpc.coreWantLobby(i),this._unwants.set(i.clock,()=>{this.view.lobby.onCancel(i.clock),this.rpc.coreUnwantLobby(o)}),this._awaitHave(this.view.lobby,i.clock)}viewChat({roomKey:e,start:t=0,size:i=0,isBottom:o=!1}={}){const{want:s,unwant:n}=this._makeWant({roomKey:e,start:t,size:i,isBottom:o});return this.view.chat.onWant(s.clock,e,t,i,o),this.rpc.coreWantChat(s),this._unwants.set(s.clock,()=>{this.view.chat.onCancel(s.clock),this.rpc.coreUnwantChat(n)}),this._awaitHave(this.view.chat,s.clock)}viewMembers(e,t,i){this.rpc.coreWantMembers(this._makeWant({roomKey:e,offset:t,count:i}))}viewReactions(e,t,i,o){this.rpc.coreWantReactions(this._makeWant({roomKey:e,messageId:t,offset:i,count:o}))}cancel(e){}async boot(){await this.rpc.boot(this._makeRequest(this.opts))}async createRoom(e={}){const t=await this.rpc.coreCreateRoom(this._makeRequest(e));return{roomKey:t.roomKey,roomId:i.toString(t.roomKey,"hex")}}leaveRoom(e){return this.rpc.coreLeaveRoom(this._makeRequest({roomKey:e}))}activateRoom(e){return this.rpc.coreActivateRoom(this._makeRequest({roomKey:e}))}deactivateRoom(e){return this.rpc.coreDeactivateRoom(this._makeRequest({roomKey:e}))}updateRoomConfig(e,t,i){return this.rpc.coreUpdateRoomConfig(this._makeRequest({roomKey:e,key:t,config:i}))}async startPairingRoom(e){return this.rpc.coreStartPairing(this._makeRequest({invitation:e,isIdentity:!1}))}async startPairingIdentity(e){return this.rpc.coreStartPairing(this._makeRequest({invitation:e,isIdentity:!0}))}createRoomInvitation(e,t={}){return this.rpc.coreCreateRoomInvitation(this._makeRequest({roomKey:e,permissions:t,expiration:t.expiration}))}createIdentityInvitation(){return this.rpc.coreCreateIdentityInvitation(this._makeRequest())}acceptJoinRequest(e,t){return this.rpc.coreAcceptJoinRequest(this._makeRequest({roomKey:e,request:t}))}rejectJoinRequest(e,t){return this.rpc.coreRejectJoinRequest(this._makeRequest({roomKey:e,request:t}))}stopPairing(e){return this.rpc.coreStopPairing(this._makeRequest({id:e}))}addChatMessage(e,t){return this.rpc.coreAddChatMessage(this._makeRequest({roomKey:e,message:t}))}editChatMessage(e,t,i){return this.rpc.coreEditChatMessage(this._makeRequest({roomKey:e,id:t,message:i}))}removeChatMessage(e,t){return this.rpc.coreRemoveChatMessage(this._makeRequest({roomKey:e,id:t}))}addChatReaction(e,t,i){return this.rpc.coreAddChatReaction(this._makeRequest({roomKey:e,id:t,reaction:i}))}removeChatReaction(e,t,i){return this.rpc.coreRemoveChatReaction(this._makeRequest({roomKey:e,id:t,reaction:i}))}updateProfile(e){return this.rpc.coreUpdateProfile(this._makeRequest(e))}};
@holepunchto/keet-core/lib/client/view.js +1 -0
……@@ -0,0 +1 @@
1const e=require("bare-events"),s=require("b4a"),t=200;class i{constructor(e){this.value=e,this.prev=null,this.next=null}}class h{constructor(e){this.value=e,this.refs=0,this.gc=null}}class n{constructor(){this.head=null,this.tail=null,this.size=0}add(e){const s=new i(e);return this.tail?(this.tail.next=s,s.prev=this.tail):this.head=s,this.tail=s,this.size++,s}remove(e){e.prev?e.prev.next=e.next:this.head=e.next,e.next?e.next.prev=e.prev:this.tail=e.prev,this.size--}shift(){const e=this.head;return e?(this.remove(e),e.value):null}}class o{constructor(e){this._maxSize=e,this._m=new Map,this._gc=new n}get size(){return this._m.size}maybeEvict(){for(;this._m.size>this._maxSize&&this._gc.size>0;){const e=this._gc.shift();this._m.delete(e)}}set(e,s){const t=this._m.get(e);if(t)return void(t.value=s);const i=new h(s);i.gc=this._gc.add(e),this._m.set(e,i)}get(e){return this._m.get(e)?.value}ref(e){const s=this._m.get(e);s&&(s.refs++>0||(this._gc.remove(s.gc),s.gc=null))}unref(e){const s=this._m.get(e);s&&0!==s.refs&&(--s.refs>0||(s.gc=this._gc.add(e)))}forceGC(e){const s=this._maxSize;this._maxSize=e,this.maybeEvict(),this._maxSize=s}}class a extends e{constructor({size:e=200}={}){super(),this._cache=new o(e)}get size(){return this._cache.size}id(e){}cacheId(e){}diff(e,s){return!0}ref(e){this._cache.ref(e)}unref(e){this._cache.unref(e)}maybeGC(){this._cache.maybeEvict()}getRaw(e){return this._cache.get(this.constructor.cacheId(e))}get(e){return this._cache.get(e)}add(e,s){const t=s?.cacheId||this.constructor.cacheId(this.id(e)),i=this._cache.get(t);return i&&!this.diff(i,e)||(this._cache.set(t,e),this.emit("update",t,e)),t}}class c extends a{static cacheId(e){return s.toString(e,"hex")}id(e){return e.key}diff(e,s){return e.profile.timestamp!==s.profile.timestamp}}class r extends a{static cacheId(e){return s.toString(e,"hex")}id(e){return e.key}diff(e,s){return e.status.isActive!==s.status.isActive||e.status.isIndexing!==s.status.isIndexing||e.profile.name!==s.profile.name}}class d extends a{static cacheId(e){return s.toString(e,"hex")}id(e){return e.roomKey}diff(e,s){return!0}}class m extends a{static cacheId({key:e,seq:t}){return`${s.toString(e,"hex")}-${t}`}id(e){return e.id}diff(e,s){return!0}}class g extends a{static cacheId({key:e,seq:t}){return`${s.toString(e,"hex")}-${t}`}id(e){return e.id}diff(e,s){return!0}}class u extends e{constructor(e){super(),this.view=e,this.status=null,this.member=null,this.devices=[],this.memberKey=null,this.deviceKeys=[],this._clock=0,this._memberId=null,this._deviceIds=[]}_unref(){this._memberId&&this.view.members.unref(this._memberId);for(const e of this._deviceIds)this.view.devices.unref(e)}_ref(){this._memberId&&this.view.members.ref(this._memberId);for(const e of this._deviceIds)this.view.devices.ref(e)}_inflate(){this.member=this.view.members.get(this._memberId),this.devices=this._deviceIds.map(e=>this.view.devices.get(e))}onMemberChanged(){this._inflate(),this.emit("update:member"),this.emit("update")}onDeviceChanged(){this._inflate(),this.emit("update:device"),this.emit("update")}onReset({memberKey:e,deviceKeys:s,status:t}){this._unref(),this.status=t,this.memberKey=e,this.deviceKeys=s,this._memberId=c.cacheId(this.memberKey),this._deviceIds=s.map(e=>r.cacheId(e)),this._ref(),this._inflate(),this.emit("reset")}onWant(e){this._clock=e}onHave(e){e===this._clock&&(this.emit("have",e),this.emit("update"))}onCancel(e){e===this._clock&&(this._clock=0)}}class l{constructor(e,s,t){this.id=e,this.cacheId=s,this.role=t.role,this.digest=t.digest,this.config=t.config,this.message=t.message,this.messageId=t.messageId,this.messageCacheId=m.cacheId(this.messageId)}with(e){return new l(this.id,this.cacheId,{...this,...e})}}class f extends e{constructor(e){super(),this.view=e}ref(e){this.view.rooms.ref(e.cacheId),e.messageCacheId&&this.view.messages.ref(e.messageCacheId)}unref(e){this.view.rooms.unref(e.cacheId),e.messageCacheId&&this.view.messages.unref(e.messageCacheId)}onRoleChanged({id:e,role:s}){const t=this.view.rooms.get(e);if(!t)return;const i=t.with({role:s});this.view.rooms.add(i,{cacheId:e}),this.emit("update:role",i)}onDigestChanged({id:e,digest:s}){const t=this.view.rooms.get(e);if(!t)return;const i=t.with({digest:s});this.view.rooms.add(i,{cacheId:e}),this.emit("update:digest",i)}onConfigChanged({id:e,config:s}){const t=this.view.rooms.get(e);if(!t)return;const i=t.with({config:s});this.view.rooms.add(i,{cacheId:e}),this.emit("update:config",i)}onLastMessageChanged({id:e,messageId:s}){const t=this.view.rooms.get(e);if(!t)return;const i=m.cacheId(s),h=this.view.messages.get(i),n=t.with({messageId:s,messageCacheId:i,message:h});this.view.rooms.add(n,{cacheId:e}),this.emit("update:message",n)}onAdd(e,{cacheId:t=null}={}){t||(t=s.toString(e.id,"hex"));const i=m.cacheId(e.messageId),h=(this.view.messages.get(i),{role:e.role,digest:e.digest,config:e.config,messageId:e.messageId,messageCacheId:i,message:this.view.messages.get(i)});let n=this.view.rooms.get(t);return n=n?n.with(h):new l(e.id,t,h),this.view.rooms.add(n,{cacheId:t}),this.emit("update:reset",n),n}}class I{constructor(e,s,t){this.id=e,this.cacheId=s,this.role=t.role,this.chat=t.chat,this.member=t.member,this.reactions=t.reactions,this.memberKey=t.memberKey,this.memberId=t.memberId}with(e){return new I(this.id,this.cacheId,{...this,...e})}}class _ extends e{constructor(e){super(),this.view=e}ref(e){this.view.messages.ref(e.cacheId),e.memberId&&this.view.members.ref(e.memberId)}unref(e){this.view.messages.unref(e.cacheId),e.memberId&&this.view.members.unref(e.memberId)}onChatChanged({chat:e}){const s=m.cacheId(e.id),t=this.view.messages.get(s);if(!t)return;const i=t.with({chat:e});this.view.messages.add(i,{cacheId:s}),this.emit("update:chat",{chat:e,messages:[i]})}onRoleChanged({ids:e,role:s}){const t=[];for(const i of e){const e=m.cacheId(i),h=this.view.messages.get(e);if(!h)continue;const n=h.with({role:s});this.view.messages.add(n,{cacheId:e}),t.push(n)}t.length>0&&this.emit("update:role",{ids:e,role:s,messages:t})}onMemberChanged({ids:e,memberKey:s}){const t=this.view.members.get(c.cacheId(s));if(!t)return;const i=[];for(const s of e){const e=m.cacheId(s),h=this.view.messages.get(e);if(!h)continue;const n=h.with({member:t});this.view.messages.add(n,{cacheId:e}),i.push(n)}i.length>0&&this.emit("update:member",{ids:e,memberKey:s,messages:i})}onReactionsChanged({id:e,reactions:s}){const t=m.cacheId(e),i=this.view.messages.get(t);if(!i)return;const h=i.with({reactions:s});this.view.messages.add(h,{cacheId:t}),this.emit("update:reactions",{id:e,reactions:s,messages:[h]})}onAdd(e,{cacheId:s=null}={}){s||(s=m.cacheId(e.chat.id));const t=c.cacheId(e.memberKey),i=e.memberKey;let h=this.view.messages.get(s);if(!h){const n={reactions:this.view.reactions.get(s),member:this.view.members.get(t),chat:e.chat,role:e.role,memberKey:i,memberId:t};h=new I(e.chat.id,s,n),this.view.messages.add(h,{cacheId:s})}return this.emit("update:reset",h),h}}class v extends e{constructor(e){super(),this.view=e,this.pendingInvitations=[],this.identityJoinRequests=[],this.clock=0,this._pending=!0,this._invitationIds=new Set,this._joinRequestIds=new Set}onWant(e){this.clock=e,this._pending=!0}onHave(e){e===this.clock&&(this._pending=!1,this.emit("have",e),this.emit("update"))}onCancel(e){e===this.clock&&(this.clock=0,this._pending=!0)}onReset({pendingInvitations:e,identityJoinRequests:t}){const i=new Set(e.map(e=>s.toString(e.id,"hex"))),h=new Set(t.map(e=>s.toString(e.deviceKey,"hex"))),n=!b(this._invitationIds,i),o=!b(this._joinRequestIds,h);(n||o)&&(this.pendingInvitations=e,this.identityJoinRequests=t,this._invitationIds=i,this._joinRequestIds=h,this.emit("reset"),this._pending||this.emit("update"))}}class w extends e{constructor(e){super(),this.view=e,this.rooms=null,this.keys=null,this.start=0,this.end=0,this.total=0,this.clock=0,this._pending=!0,this._ids=null,this._cacheIdSet=null}_unref(){if(this.rooms)for(const e of this.rooms)e&&this.view.roomInfo.unref(e)}_ref(){if(this._ids)for(const e of this._ids){this.view.rooms.ref(e);const s=this.view.rooms.get(e);s?.messageCacheId&&this.view.messages.ref(s.messageCacheId)}}_refreshRooms(){this.rooms=this._ids.map(e=>this.view.rooms.get(e))}onRoomChanged(e,s){this._cacheIdSet&&this._cacheIdSet.has(e.cacheId)&&(this._unref(),this._refreshRooms(),this._ref(),this.emit("update:"+s,e),this._pending||this.emit("update"))}onWant(e,s,t){this.clock=e,this.start=s,this.end=t,this._pending=!0}onHave(e){e===this.clock&&(this._pending=!1,this.emit("have",e),this.emit("update"))}onCancel(e){e===this.clock&&(this.start=0,this.end=0,this._pending=!0,this._cacheIdSet=null)}onReset({keys:e,start:t,end:i,total:h}){const n=this._ids;if(this.keys=e,this.start=t,this.end=i,this.total=h,this._ids=e.map(e=>s.toString(e,"hex")),this._cacheIdSet=new Set(this._ids),this._ref(),n)for(const e of n){const s=this.view.rooms.get(e);s&&this.view.roomInfo.unref(s)}this._refreshRooms(),this.emit("reset"),this._pending||this.emit("update")}}class p extends e{constructor(e){super(),this.view=e,this.messages=null,this.ids=null,this.room=null,this.roomKey=null,this.start=0,this.end=0,this.total=0,this.isBottom=!1,this.clock=0,this._pending=!0,this._ids=null,this._cacheIdSet=null,this._roomCacheId=null}_unref(){if(this._cacheIds)for(const e of this._cacheIds){const s=this.view.messages.get(e);s&&this.view.messageInfo.unref(s)}}_ref(){if(this._cacheIds)for(const e of this._cacheIds){this.view.messages.ref(e);const s=this.view.messages.get(e);s?.memberId&&this.view.members.ref(s.memberId)}}_refreshMessages(){this.messages=this._cacheIds.map(e=>this.view.messages.get(e))}_refreshRoom(){this.room=this._roomCacheId?this.view.rooms.get(this._roomCacheId):null}onRoomChanged(e,s){this._roomCacheId&&this._roomCacheId===e.cacheId&&(this._refreshRoom(),this.emit("update:room:"+s,this.room),this.emit("update:room",this.room),this._pending||this.emit("update"))}onMessagesChanged(e,s){const t=e.filter(e=>this._cacheIdSet?.has(e.cacheId));0!==t.length&&(this._unref(),this._refreshMessages(),this._ref(),this.emit("update:"+s,t),this._pending||this.emit("update"))}onWant(e,s,t,i,h){this.clock=e,this.roomKey=s,this._roomCacheId=d.cacheId(s),this.start=t,this.size=i,this.isBottom=h,this._pending=!0}onHave(e){e===this.clock&&(this._pending=!1,this.emit("have",e),this.emit("update"))}onCancel(e){e===this.clock&&(this.room=null,this.roomKey=null,this.start=0,this.end=0,this._pending=!0,this._roomCacheId=null,this._cacheIdSet=null)}onReset({ids:e,roomKey:s,start:t,size:i,total:h,isBottom:n}){const o=this._cacheIds;if(this.ids=e,this.roomKey=s,this.start=t,this.size=i,this.total=h,this.isBottom=n,this._roomCacheId=d.cacheId(s),this._cacheIds=e.map(e=>m.cacheId(e)),this._cacheIdSet=new Set(this._cacheIds),this._ref(),o)for(const e of o){const s=this.view.messages.get(e);s&&this.view.messageInfo.unref(s)}this._refreshMessages(),this._refreshRoom(),this.emit("reset"),this._pending||this.emit("update")}}function b(e,s){if(e.size!==s.size)return!1;for(const t of e)if(!s.has(t))return!1;return!0}module.exports=class{constructor(){this.members=new c,this.devices=new r,this.reactions=new g,this.messages=new m,this.rooms=new d,this.identity=new u(this),this.pairing=new v(this),this.lobby=new w(this),this.chat=new p(this),this.roomInfo=new f(this),this.messageInfo=new _(this),this.roomInfo.on("update:reset",e=>{this.chat.onRoomChanged(e,"reset")}),this.roomInfo.on("update:role",e=>{this.lobby.onRoomChanged(e,"role"),this.chat.onRoomChanged(e,"role")}),this.roomInfo.on("update:digest",e=>{this.lobby.onRoomChanged(e,"digest"),this.chat.onRoomChanged(e,"digest")}),this.roomInfo.on("update:config",e=>{this.lobby.onRoomChanged(e,"config"),this.chat.onRoomChanged(e,"config")}),this.roomInfo.on("update:message",e=>{this.lobby.onRoomChanged(e,"message")}),this.messageInfo.on("update:chat",({messages:e})=>this.chat.onMessagesChanged(e,"chat")),this.messageInfo.on("update:role",({messages:e})=>this.chat.onMessagesChanged(e,"role")),this.messageInfo.on("update:member",({messages:e})=>this.chat.onMessagesChanged(e,"member")),this.messageInfo.on("update:reactions",({messages:e})=>this.chat.onMessagesChanged(e,"reactions"))}};
@holepunchto/keet-core/lib/core/contract/avatars.js +1 -0
……@@ -0,0 +1 @@
1const e=require("b4a"),{KeetContractError:i}=require("./errors"),{fileStats:r}=require("./stats"),n=524288;async function t(r,t,l){if(!t&&!l)return;if(!g(l))return;if(l.preview&&(l.preview=null),!l.pointer.inlined&&l.pointer.blob&&(l.pointer.blob=null),!l||!l.pointer.inlined)return t||l;if(t&&t.hash&&l.hash&&e.equals(t.hash,l.hash))return{...l,pointer:t.pointer};if(l.pointer.inlined.byteLength>n)throw i.INLINED_FILESIZE_TOO_LARGE("Cannot inline a blob that is larger than 512 KB");const a=await r.put(l.pointer.inlined);return{...l,pointer:{blob:a}}}async function l(e,i,r){return{small:await t(e,i?.small,r?.small),medium:await t(e,i?.medium,r?.medium),large:await t(e,i?.large,r?.large)}}async function a(e,i,r){return await l(e,i,r)}async function s(e,i){return o(e,i)}async function o(e,i){i&&await Promise.all([p(e,i.small),p(e,i.medium),p(e,i.large)])}async function p(e,i){if(!i)return;if(!i.pointer.blob)return;const r=await e.get(i.pointer.blob);i.pointer={inlined:r}}async function f({primaryThread:e,id:i,blobs:n,db:t,oplog:a,file:s}){s.preview&&(s.preview=await l(n,null,s.preview)),s.pointer.inlined&&(s.pointer.inlined=null),s.pointer.blob&&(s.pointer.blob=null);const o={id:i,oplog:a,status:{isDeleted:!1},file:s};return await t.insert("@keet/files",o),await r(t,e,o),i}async function u({primaryThread:e,files:r,id:n,blobs:t,db:l,oplog:a}){if(!r||r.length<1)return[];if(!v(r))throw i.FILE_RECORD_INVALID();const s=[];for(const i of r)s.push(await f({primaryThread:e,id:n++,blobs:t,db:l,oplog:a,file:i}));return s}async function d({primaryThread:e,clock:i,message:r,blobs:n,db:t,oplog:l}){const a=r.files||[],s=await u({primaryThread:e,files:a,id:i,blobs:n,db:t,oplog:l});return await b({primaryThread:e,clock:i+a.length,message:r,blobs:n,db:t,oplog:l}),s}async function b({primaryThread:e,clock:i,message:r,blobs:n,db:t,oplog:l}){let a=0;const s=r?.display?.httpLink||[];for(const r of s)r.preview?.files&&(r.preview.files=[]),r.preview?.file&&(r.preview.files=await u({primaryThread:e,id:i+a,files:[r.preview.file],blobs:n,db:t,oplog:l}),a+=r.preview.files.length);const o=r?.display?.pearLink||[];for(const r of o)r.preview?.files&&(r.preview.files=[]),r.preview?.file&&(r.preview.files=await u({primaryThread:e,id:i+a,files:[r.preview.file],blobs:n,db:t,oplog:l}),a+=r.preview.files.length)}async function c({primaryThread:e,message:i,db:r,blobs:n}){const t=i.message?.files||[],l=i.message?.display?.httpLink||[];for(const{preview:e}of l)e&&e.files&&e.files.length&&t.push(...e.files);const a=i.message?.display?.pearLink||[];for(const{preview:e}of a)e&&e.files&&e.files.length&&t.push(...e.files);await w({primaryThread:e,files:t,db:r,blobs:n})}async function w({primaryThread:e,files:i,db:n,blobs:t}){if(!i||!i.length)return;const l=await Promise.all(i.map(e=>n.get("@keet/files",{id:e}))),a=[];for(const i of l)i.status.isDeleted=!0,a.push(n.insert("@keet/files",i)),a.push(r(n,e,i,i));await Promise.all(a)}function m(i,r){return!i&&!r||!(!i&&r)&&!(i&&!r)&&(i.hash&&r.hash?e.equals(i.hash,r.hash):e.equals(i.pointer.inlined,r.pointer.inlined))}function h(e,i){const r=m(e?.small,i?.small),n=m(e?.medium,i?.medium),t=m(e?.large,i?.large);return r&&n&&t}function g(e){return e.preview&&(e.preview?.small?.preview&&(e.preview.small.preview=null),e.preview?.medium?.preview&&(e.preview.medium.preview=null),e.preview?.large?.preview&&(e.preview.large.preview=null)),!(e.pointer.externalDrive&&!e.pointer.externalDrive.path||e.pointer.externalDrive&&e.pointer.externalBlob)}function v(e){const i=Array.isArray(e)?e:[e];for(const e of i)if(!g(e))return!1;return!0}module.exports={isSameAvatar:h,updateAvatar:a,updateImageFile:l,restoreAvatar:s,restoreFile:o,insertMessageFiles:d,deleteMessageFiles:c,MAX_INLINED_FILE_SIZE:n};
@holepunchto/keet-core/lib/core/contract/calls.js +1 -0
……@@ -0,0 +1 @@
1const e=require("./registration"),{isMemberActive:t,getMemberForDeviceKey:a}=require("./query"),{KeetContractError:l}=require("./errors"),{addEvent:r}=require("./chat"),{contract:{hyperschema:{getEnum:c}}}=require("../../../schema/spec"),i=c("@keet/room-type");async function s(e,{db:c,writer:i}){const s=i.key,[y,m,o,d]=await Promise.all([a(c,s),c.get("@keet/calls",{callKey:e.callKey}),c.get("@keet/devices",{key:s}),c.findOne("@keet/active-calls-by-timestamp")]);if(!t(y))throw l.INACTIVE_MEMBER();if(m)throw l.CALL_KEY_EXISTS();if(d)throw l.ACTIVE_CALL_EXISTS();if(!o)throw l.ABORT();if(await c.insert("@keet/calls",{version:e.version,callKey:e.callKey,encryptionKey:e.encryptionKey,discoveryKey:e.discoveryKey,createdAt:e.header.timestamp}),await c.insert("@keet/call-members",{callKey:e.callKey,memberKey:y.key,createdAt:e.header.timestamp}),await c.insert("@keet/call-devices",{callKey:e.callKey,deviceKey:o.key,swarmKey:o.profile.swarmKey,memberKey:y.key,createdAt:e.header.timestamp}),e.streams?.length)for await(const t of e.streams)await c.insert("@keet/call-streams",{callKey:e.callKey,deviceKey:o.key,streamKey:t,createdAt:e.header.timestamp});await r(c,i,{callStarted:!0},e.header.timestamp)}async function y(e,{db:r,writer:c}){const i=e.callKey,s=c.key,[y,m,o]=await Promise.all([a(r,s),r.get("@keet/calls",{callKey:i}),r.get("@keet/devices",{key:s})]);if(!t(y))throw l.INACTIVE_MEMBER();if(!m)throw l.CALL_NOT_FOUND();if(m.endedAt)throw l.CALL_ENDED();if(!o)throw l.ABORT();const[d,K]=await Promise.all([r.get("@keet/call-members",{callKey:e.callKey,memberKey:y.key}),r.get("@keet/call-devices",{callKey:e.callKey,deviceKey:s})]);if(K)throw l.CALL_DEVICE_EXISTS();if(await r.insert("@keet/call-devices",{callKey:e.callKey,deviceKey:o.key,swarmKey:o.profile.swarmKey,memberKey:y.key,createdAt:e.header.timestamp}),e.streams?.length)for await(const t of e.streams)await r.insert("@keet/call-streams",{callKey:e.callKey,deviceKey:o.key,streamKey:t,createdAt:e.header.timestamp});d||await r.insert("@keet/call-members",{callKey:e.callKey,memberKey:y.key,createdAt:e.header.timestamp})}async function m({header:e,callKey:r},{db:c,writer:s}){const y=s.key,m={gte:{callKey:r},lte:{callKey:r}},[o,d,K,n]=await Promise.all([a(c,y),c.get("@keet/calls",{callKey:r}),c.find("@keet/call-members",m).toArray(),c.get("@keet/system-digest")]);if(n.settings.roomType===i.DirectMessage)throw l.CALL_LEAVE_NOT_ALLOWED();if(!t(o))throw l.INACTIVE_MEMBER();if(!d)throw l.CALL_NOT_FOUND();const k=o.key,w={gte:{callKey:r,memberKey:k},lte:{callKey:r,memberKey:k}},f={gte:{callKey:r,deviceKey:y},lte:{callKey:r,deviceKey:y}},[h,A,E,_]=await Promise.all([c.get("@keet/call-members",{callKey:r,memberKey:k}),c.get("@keet/call-devices",{callKey:r,deviceKey:y}),c.find("@keet/call-devices-by-member-key",w).toArray(),c.find("@keet/call-streams-by-device-key",f).toArray()]);if(!h)throw l.CALL_MEMBER_NOT_FOUND();if(!A)throw l.CALL_DEVICE_NOT_FOUND();const L=[];L.push(c.delete("@keet/call-devices",A));for(const e of _)L.push(c.delete("@keet/call-streams",e));return E.length>1||(L.push(c.delete("@keet/call-members",h)),1===K.length&&(d.endedAt=e.timestamp,L.push(c.insert("@keet/calls",d)))),Promise.all(L)}async function o({header:e,callKey:c},{db:s,writer:y}){const m=y.key,[o,d,K,n]=await Promise.all([a(s,m),s.get("@keet/calls",{callKey:c}),s.get("@keet/call-devices",{callKey:c,deviceKey:m}),s.get("@keet/system-digest")]);if(!t(o))throw l.INACTIVE_MEMBER();if(!d)throw l.CALL_NOT_FOUND();if(d.endedAt)throw l.CALL_ENDED();if(!K)throw l.CALL_DEVICE_NOT_FOUND();d.endedAt=e.timestamp,await s.insert("@keet/calls",d);const k={gte:{callKey:c},lte:{callKey:c}},[w,f,h]=await Promise.all([s.find("@keet/call-members",k).toArray(),s.find("@keet/call-devices",k).toArray(),s.find("@keet/call-streams",k).toArray()]),A=[];for(const e of w)A.push(s.delete("@keet/call-members",e));for(const e of f)A.push(s.delete("@keet/call-devices",e));for(const e of h)A.push(s.delete("@keet/call-streams",e));if(await Promise.all(A),n.settings.roomType===i.DirectMessage)return w.length>1?await r(s,y,{callHangup:!0},e.timestamp):void await r(s,y,{callMissed:!0},e.timestamp)}async function d({header:e,callKey:r,streamKey:c},{db:i,writer:s}){const y=s.key,[m,o,d,K]=await Promise.all([a(i,y),i.get("@keet/calls",{callKey:r}),i.get("@keet/call-devices",{callKey:r,deviceKey:y}),i.get("@keet/call-streams",{callKey:r,streamKey:c})]);if(!t(m))throw l.INACTIVE_MEMBER();if(!o)throw l.CALL_NOT_FOUND();if(o.endedAt)throw l.CALL_ENDED();if(!d)throw l.CALL_DEVICE_NOT_FOUND();if(K)throw l.CALL_STREAM_EXISTS();await i.insert("@keet/call-streams",{callKey:r,deviceKey:d.deviceKey,streamKey:c,createdAt:e.timestamp})}async function K({callKey:e,streamKey:r},{db:c,writer:i}){const s=i.key,[y,m,o,d]=await Promise.all([a(c,s),c.get("@keet/calls",{callKey:e}),c.get("@keet/call-devices",{callKey:e,deviceKey:s}),c.get("@keet/call-streams",{callKey:e,streamKey:r})]);if(!t(y))throw l.INACTIVE_MEMBER();if(!m)throw l.CALL_NOT_FOUND();if(m.endedAt)throw l.CALL_ENDED();if(!o)throw l.CALL_DEVICE_NOT_FOUND();if(!d)throw l.CALL_STREAM_NOT_FOUND();await c.delete("@keet/call-streams",d)}function n(e){e.add("@keet/start-call",s),e.add("@keet/join-call",y),e.add("@keet/leave-call",m),e.add("@keet/end-call",o),e.add("@keet/add-call-stream",d),e.add("@keet/remove-call-stream",K)}module.exports={[e]:n};
@holepunchto/keet-core/lib/core/contract/chat.js +1 -0
……@@ -0,0 +1 @@
1const e=require("b4a"),t=require("./registration"),{getMemberForDeviceKey:s,isMemberActive:i}=require("./query"),{KeetContractError:a}=require("./errors"),{insertMessageFiles:r,deleteMessageFiles:o,updateImageFile:n}=require("./avatars"),{contract:{hyperschema:{getEnum:l}}}=require("../../../schema/spec"),{chatStats:d,fileStats:c}=require("./stats"),g=l("@keet/room-type");async function h(e,t,s,i){const a=await e.get("@keet/threads",{id:0}),r={id:{thread:0,index:a.count},oplog:t,clock:a.stats.chat.clock,timestamp:i,event:s,status:{isEdited:!1,isPinned:!1,isDeleted:!1}};await e.insert("@keet/chat",r),await d(e,a,r)}async function p({message:e,header:t},{db:o,blobs:n,writer:l}){let[c,h,p,w,k,m]=await Promise.all([s(o,l.key),o.get("@keet/threads",{id:0}),e.parent?o.get("@keet/threads-by-parent",{oplog:e.parent}):null,e.parent?o.get("@keet/chat-by-message-id",{oplog:e.parent}):null,e.replyTo?o.get("@keet/chat-by-message-id",{oplog:e.replyTo}):null,o.get("@keet/system-digest")]);if(!i(c))throw a.INACTIVE_MEMBER();if(c.status.isMuted)throw a.WRITER_IS_MUTED();const y=m.settings.roomType===g.Broadcast||m.settings.isAppendingDisabled;if(!c.status.isModerator&&y)throw a.MODERATORS_ONLY();if(e.parent&&!w)throw a.PARENT_MSG_INVALID();if(e.replyTo&&!k)throw a.REPLYTO_MSG_INVALID();if(e.parent||(p=h),e.event?.callMissed){const e=await o.get("@keet/chat",{id:{thread:p.id,index:p.count-1}});if(e&&e.event.callMissed)throw a.NO_DUPLICATE_CALL_EVENTS()}if(m.settings.isAttachmentsDisabled&&T(e))throw a.FILE_ATTACHMENTS_DISABLED();if(m.settings.isLinksDisabled&&_(e))throw a.LINKS_DISABLED();const E=h.stats.files.clock;e.files=await r({primaryThread:h,clock:E,message:e,blobs:n,db:o,oplog:l});const f={id:{thread:p.id,index:p.count},oplog:l,clock:h.stats.chat.clock,timestamp:t.timestamp,message:e,status:{isEdited:!1,isPinned:!1,isDeleted:!1},event:e.event};await o.insert("@keet/chat",f),await d(o,h,f)}async function w({header:t,oplog:n,message:l},{db:c,blobs:g,writer:h}){const[p,w,k,m,y,E]=await Promise.all([s(c,h.key),s(c,n.key),c.get("@keet/chat-by-message-id",{oplog:n}),c.get("@keet/threads",{id:0}),l.replyTo?c.get("@keet/chat-by-message-id",{oplog:l.replyTo}):null,c.get("@keet/system-digest")]);if(!i(p))throw a.INACTIVE_MEMBER();if(!k)throw a.TARGET_MSG_INVALID();if(!w)throw a.TARGET_MEMBER_NOT_FOUND();if(!e.equals(p.key,w.key))throw a.SELF_ONLY();if(k.status.isDeleted)throw a.TARGET_MSG_IS_DELETED();if(l.replyTo&&!y)throw a.REPLYTO_MSG_INVALID();if(E.settings.isAttachmentsDisabled&&T(l))throw a.FILE_ATTACHMENTS_DISABLED();if(E.settings.isLinksDisabled&&_(l))throw a.LINKS_DISABLED();const f=[];k.message?.files?.length&&(f.push(...k.message.files),k.message.files=[]),l.files=[],await o({primaryThread:m,message:k,db:c,blobs:g});const u=m.stats.files.clock;await r({primaryThread:m,clock:u,message:l,blobs:g,db:c,oplog:h});const b={...k,message:{...k.message,text:l.text,files:f,display:l.display},status:{...k.status,isEdited:!0},editedAt:t.timestamp};await c.insert("@keet/chat",b),await d(c,m,b,k)}async function k({oplog:t},{db:r,blobs:n,writer:l}){const[c,g,h,p]=await Promise.all([s(r,l.key),s(r,t.key),r.get("@keet/chat-by-message-id",{oplog:t}),r.get("@keet/threads",{id:0})]);if(!i(c))throw a.INACTIVE_MEMBER();if(!h)throw a.TARGET_MSG_INVALID();if(!c.status.isModerator&&!e.equals(c.key,g.key))throw a.MODERATORS_OR_SELF_ONLY();await o({primaryThread:p,message:h,db:r,blobs:n});const w={...h,message:null,status:{...h.status,isDeleted:!0,isPinned:!1}};await r.insert("@keet/chat",w),await d(r,p,w,h);const k=await r.get("@keet/chat-label-digests",{id:h.id});k&&await r.insert("@keet/chat-label-digests",{...k,isDeleted:!0})}async function m({oplog:e,isPinned:t},{db:r,writer:o}){const[n,l,c]=await Promise.all([s(r,o.key),r.get("@keet/chat-by-message-id",{oplog:e}),r.get("@keet/threads",{id:0})]);if(!i(n))throw a.INACTIVE_MEMBER();if(!l)throw a.TARGET_MSG_INVALID();if(!n.status.isModerator)throw a.MODERATORS_ONLY();const g={...l,status:{...l.status,isPinned:t}};await r.insert("@keet/chat",g),await d(r,c,g,l)}async function y({oplog:t,index:r,preview:o,displayType:l},{db:d,blobs:g,writer:h}){const[p,w,k,m]=await Promise.all([s(d,h.key),s(d,t.key),d.get("@keet/chat-by-message-id",{oplog:t}),d.get("@keet/threads",{id:0})]);if(!i(p))throw a.INACTIVE_MEMBER();if(!k)throw a.TARGET_MSG_INVALID();if(!e.equals(p.key,w.key))throw a.SELF_ONLY();const y=l?u(k,l,r):k.message?.files,E=l?0:r;if(!y||y.length<=E)throw a.FILE_REFERENCE_INVALID("files is falsy or invalid index");const f=await d.get("@keet/files",{id:y[E]});if(!f)throw a.FILE_RECORD_INVALID("record is falsy");f.file.preview=await n(g,null,o),await d.insert("@keet/files",f),await c(d,m,f,f)}async function E({length:e},{db:t,writer:a}){const[r,o]=await Promise.all([t.get("@keet/system-digest"),s(t,a.key)]);i(o)&&!o.status.isMuted&&r.settings.roomType===g.DirectMessage&&await t.insert("@keet/read-lengths",{memberKey:o.key,length:e})}function f(e){e.add("@keet/add-chat-message",p),e.add("@keet/update-chat-message",w),e.add("@keet/remove-chat-message",k),e.add("@keet/pin-chat-message",m),e.add("@keet/add-file-preview",y),e.add("@keet/update-read-length",E)}function u(e,t,s){switch(t){case 1:return e.message.display.httpLink[s].preview.files;case 2:return e.message.display.pearLink[s].preview.files}}function T(e){return e?.files?.length>0||e?.display?.httpLink?.some(e=>e.preview)||e?.display?.pearLink?.some(e=>e.preview)}function _(e){return e.display?.httpLink?.length>0||e?.display?.pearLink?.length>0}module.exports={addEvent:h,[t]:f};
@holepunchto/keet-core/lib/core/contract/config.js +1 -0
……@@ -0,0 +1 @@
1const e=require("./registration"),{addEvent:t}=require("./chat"),{isMemberActive:r,getMemberForDeviceKey:i}=require("./query"),{updateAvatar:a}=require("./avatars"),{KeetContractError:o}=require("./errors"),n=10,s=["title","description","avatar","supportedLanguages","blindPeers"],l={Title:1,Description:2,Avatar:3,SupportedLanguages:4,BlindPeers:5};async function u({header:e,key:u,config:c},{db:d,writer:g,blobs:f}){const[m,p]=await Promise.all([i(d,g.key),d.get("@keet/room-config")]);if(!r(m)||!m.status.isModerator)return;if(0===u||u>s.length)return;const v=s[u-1],b={...p,[v]:c[v]};if(u===l.Avatar){const e=p&&p[v],t=c[v];if(null!==t.small&&!t.small?.pointer?.inlined)throw o.ABORT();const r=null!==t.small?await a(f,e,t):null;b[v]=r}if(u===l.Title){const r=p&&p[v],i=c[v];r&&r!==i&&await t(d,g,{titleChanged:{from:r,to:i}},e.timestamp)}u===l.BlindPeers&&(b[v]=c[v].slice(0,n)),await d.insert("@keet/room-config",b)}function c(e){e.add("@keet/update-room-config",u)}module.exports={[e]:c,CONFIG_INDEX_TO_KEY:s,Config:l};
@holepunchto/keet-core/lib/core/contract/errors.js +1 -0
……@@ -0,0 +1 @@
1const _={CORRUPT:"KEET_CONTRACT_CORRUPT",ABORT:"KEET_CONTRACT_ABORT",BUNDLE_NOT_AVAILABLE:"BUNDLE_NOT_AVAILABLE",ADMINS_ONLY:"ADMINS_ONLY",MODERATORS_ONLY:"MODERATORS_ONLY",SELF_ONLY:"SELF_ONLY",MODERATORS_OR_SELF_ONLY:"MODERATORS_OR_SELF_ONLY",WRITER_IS_MUTED:"WRITER_IS_MUTED",PARENT_MSG_INVALID:"PARENT_MSG_INVALID",REPLYTO_MSG_INVALID:"REPLYTO_MSG_INVALID",TARGET_MSG_INVALID:"TARGET_MSG_INVALID",TARGET_MSG_IS_DELETED:"TARGET_MSG_IS_DELETED",FILE_REFERENCE_INVALID:"FILE_REFERENCE_INVALID",FILE_RECORD_INVALID:"FILE_RECORD_INVALID",INLINED_FILESIZE_TOO_LARGE:"INLINED_FILESIZE_TOO_LARGE",FILE_ATTACHMENTS_DISABLED:"FILE_ATTACHMENTS_DISABLED",LINKS_DISABLED:"LINKS_DISABLED",INACTIVE_MEMBER:"INACTIVE_MEMBER",TARGET_MEMBER_NOT_FOUND:"TARGET_MEMBER_NOT_FOUND",INVALID_MEMBER_STATUS:"INVALID_MEMBER_STATUS",NO_DUPLICATE_CALL_EVENTS:"NO_DUPLICATE_CALL_EVENTS",GENESIS_NOT_FIRST:"GENESIS_NOT_FIRST",INVALID_SYSTEM_SETTING:"INVALID_SYSTEM_SETTING",ACTIVE_CALL_EXISTS:"ACTIVE_CALL_EXISTS",CALL_KEY_EXISTS:"CALL_KEY_EXISTS",CALL_NOT_FOUND:"CALL_NOT_FOUND",CALL_ENDED:"CALL_ENDED",CALL_DEVICE_EXISTS:"CALL_DEVICE_EXISTS",CALL_DEVICE_NOT_FOUND:"CALL_DEVICE_NOT_FOUND",CALL_MEMBER_NOT_FOUND:"CALL_MEMBER_NOT_FOUND",CALL_STREAM_EXISTS:"CALL_STREAM_EXISTS",CALL_STREAM_NOT_FOUND:"CALL_STREAM_NOT_FOUND",CALL_LEAVE_NOT_ALLOWED:"CALL_LEAVE_NOT_ALLOWED",INVALID_BUILD_TYPE:"INVALID_BUILD_TYPE",DISPATCH_ERROR:"DISPATCH_ERROR"};class E extends Error{constructor(_,L,T=E){super(_?`${L}: ${_}`:L),this.code=L,this.isContractError=!0,this.abi=null,this.roomKey=null,Error.captureStackTrace&&Error.captureStackTrace(this,T)}static isContractError(_){return!!_.isContractError||"KEET_CONTRACT_ABORT"===_.code}static CORRUPT(L=""){return new E(L,_.CORRUPT,E.CORRUPT)}static ABORT(L=""){return new E(L,_.ABORT,E.ABORT)}static BUNDLE_NOT_AVAILABLE(L){const T=new E("ABI "+L,_.BUNDLE_NOT_AVAILABLE,E.BUNDLE_NOT_AVAILABLE);return T.abi=L,T}static ADMINS_ONLY(L=""){return new E(L,_.ADMINS_ONLY,E.ADMINS_ONLY)}static MODERATORS_ONLY(L=""){return new E(L,_.MODERATORS_ONLY,E.MODERATORS_ONLY)}static SELF_ONLY(L=""){return new E(L,_.SELF_ONLY,E.SELF_ONLY)}static MODERATORS_OR_SELF_ONLY(L=""){return new E(L,_.MODERATORS_OR_SELF_ONLY,E.MODERATORS_OR_SELF_ONLY)}static WRITER_IS_MUTED(L=""){return new E(L,_.WRITER_IS_MUTED,E.WRITER_IS_MUTED)}static PARENT_MSG_INVALID(L=""){return new E(L,_.PARENT_MSG_INVALID,E.PARENT_MSG_INVALID)}static REPLYTO_MSG_INVALID(L=""){return new E(L,_.REPLYTO_MSG_INVALID,E.REPLYTO_MSG_INVALID)}static TARGET_MSG_INVALID(L=""){return new E(L,_.TARGET_MSG_INVALID,E.TARGET_MSG_INVALID)}static TARGET_MSG_IS_DELETED(L=""){return new E(L,_.TARGET_MSG_IS_DELETED,E.TARGET_MSG_IS_DELETED)}static FILE_REFERENCE_INVALID(L=""){return new E(L,_.FILE_REFERENCE_INVALID,E.FILE_REFERENCE_INVALID)}static FILE_RECORD_INVALID(L=""){return new E(L,_.FILE_RECORD_INVALID,E.FILE_RECORD_INVALID)}static INLINED_FILESIZE_TOO_LARGE(L=""){return new E(L,_.INLINED_FILESIZE_TOO_LARGE,E.INLINED_FILESIZE_TOO_LARGE)}static FILE_ATTACHMENTS_DISABLED(L=""){return new E(L,_.FILE_ATTACHMENTS_DISABLED,E.FILE_ATTACHMENTS_DISABLED)}static LINKS_DISABLED(L=""){return new E(L,_.LINKS_DISABLED,E.LINKS_DISABLED)}static INACTIVE_MEMBER(L=""){return new E(L,_.INACTIVE_MEMBER,E.INACTIVE_MEMBER)}static TARGET_MEMBER_NOT_FOUND(L=""){return new E(L,_.TARGET_MEMBER_NOT_FOUND,E.TARGET_MEMBER_NOT_FOUND)}static INVALID_MEMBER_STATUS(L=""){return new E(L,_.INVALID_MEMBER_STATUS,E.INVALID_MEMBER_STATUS)}static NO_DUPLICATE_CALL_EVENTS(L=""){return new E(L,_.NO_DUPLICATE_CALL_EVENTS,E.NO_DUPLICATE_CALL_EVENTS)}static GENESIS_NOT_FIRST(L=""){return new E(L,_.GENESIS_NOT_FIRST,E.GENESIS_NOT_FIRST)}static INVALID_SYSTEM_SETTING(L=""){return new E(L,_.INVALID_SYSTEM_SETTING,E.INVALID_SYSTEM_SETTING)}static ACTIVE_CALL_EXISTS(L=""){return new E(L,_.ACTIVE_CALL_EXISTS,E.ACTIVE_CALL_EXISTS)}static CALL_KEY_EXISTS(L=""){return new E(L,_.CALL_KEY_EXISTS,E.CALL_KEY_EXISTS)}static CALL_NOT_FOUND(L=""){return new E(L,_.CALL_NOT_FOUND,E.CALL_NOT_FOUND)}static CALL_ENDED(L=""){return new E(L,_.CALL_ENDED,E.CALL_ENDED)}static CALL_DEVICE_EXISTS(L=""){return new E(L,_.CALL_DEVICE_EXISTS,E.CALL_DEVICE_EXISTS)}static CALL_DEVICE_NOT_FOUND(L=""){return new E(L,_.CALL_DEVICE_NOT_FOUND,E.CALL_DEVICE_NOT_FOUND)}static CALL_MEMBER_NOT_FOUND(L=""){return new E(L,_.CALL_MEMBER_NOT_FOUND,E.CALL_MEMBER_NOT_FOUND)}static CALL_STREAM_EXISTS(L=""){return new E(L,_.CALL_STREAM_EXISTS,E.CALL_STREAM_EXISTS)}static CALL_STREAM_NOT_FOUND(L=""){return new E(L,_.CALL_STREAM_NOT_FOUND,E.CALL_STREAM_NOT_FOUND)}static CALL_LEAVE_NOT_ALLOWED(L=""){return new E(L,_.CALL_LEAVE_NOT_ALLOWED,E.CALL_LEAVE_NOT_ALLOWED)}static INVALID_BUILD_TYPE(L=""){return new E(L,_.INVALID_BUILD_TYPE,E.INVALID_BUILD_TYPE)}static DISPATCH_ERROR(L=""){return new E(L,_.DISPATCH_ERROR,E.DISPATCH_ERROR)}}module.exports={CONTRACT_ERRORS:_,KeetContractError:E};
@holepunchto/keet-core/lib/core/contract/helpers.js +1 -0
……@@ -0,0 +1 @@
1const{contract:{hyperschema:{getEnum:e}}}=require("../../../schema/spec"),t=e("@keet/build-type");function c(e,c){return!(e!==t.Production||c)||e===c}module.exports={isValidBuildType:c};
@holepunchto/keet-core/lib/core/contract/identity/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("../registration"),r=require("./private.js");function i(i){r[e](i)}module.exports={[e]:i,private:r};
@holepunchto/keet-core/lib/core/contract/identity/private.js +1 -0
……@@ -0,0 +1 @@
1const e=require("b4a"),{contract:{hyperschema:{encode:t}}}=require("../../../../schema/spec"),{verifyAttestation:i,verifyDeviceResponse:a,decryptContactRequest:s,generateMailboxKeyPair:r,generateRoomCapabilities:o}=require("../../invitations"),n=require("../registration"),{KeetContractError:c}=require("../errors"),{isMemberActive:d,getMemberForDeviceKey:y}=require("../query"),{profileRoomStats:l,profileContactStats:u,profileContactRequestStats:m}=require("../stats/profile"),{isValidBuildType:k}=require("../helpers"),p=["isActive","isFullyMuted","isMentionsOnlyMuted","isFavorite"],v={IsActive:1,IsFullyMuted:2,IsMentionsOnlyMuted:3,IsFavorite:4},w=["isBlocked"],f={IsBlocked:1},b=["isPending","isAccepted","isRejected","isDiscarded","isSeen"],g={IsPending:1,IsAccepted:2,IsRejected:3,IsDiscarded:4,IsSeen:5};async function K({sharedRooms:e,blockedContacts:t},{db:i,writer:a}){const[s,r]=await Promise.all([y(i,a.key),i.get("@keet-private-id/counters")]);if(!d(s))throw c.ABORT();for(let t=0;t<e.length;t++){const{roomKey:a,initiator:s,fastForwardTo:r,encryptionKey:n,seed:c}=e[t],d={roomKey:a,encryptionKey:n,mailbox:o(a,c).mailboxKeyPair.publicKey,clock:t+1,status:{isActive:!0,isFullyMuted:!1,isMentionsOnlyMuted:!1},initiator:s,fastForwardTo:r,identitySwap:null};await i.insert("@keet-private-id/rooms",d)}for(let e=0;e<t.length;e++){const a=r?r.contacts+1:0,s={memberKey:t[e],clock:a,status:{isBlocked:!0},mailbox:null,roomKey:null};await i.insert("@keet-private-id/contacts",s)}}async function A({identity:t},{db:i,writer:a}){const[s,r]=await Promise.all([y(i,a.key),i.get("@keet-private-id/identity")]);if(!d(s)||!r||!e.equals(t.publicKey,r.publicKey))throw c.ABORT();t.discoveryCoreKey&&(r.discoveryCoreKey=t.discoveryCoreKey),await i.insert("@keet-private-id/identity",r)}async function R({key:e,settings:t},{db:i,writer:a}){const[s,r]=await Promise.all([y(i,a.key),i.get("@keet-private-id/settings")]);if(!d(s))throw c.ABORT();const o={...r,[e]:t[e]};await i.insert("@keet-private-id/settings",o)}async function h({invitation:e},{db:t,writer:i}){const[a,s]=await Promise.all([y(t,i.key),t.get("@keet/system-digest")]);if(!d(a))throw c.ABORT();const r=s.settings.buildType,o=e.buildType;if(!k(r,o))throw c.INVALID_BUILD_TYPE();await t.insert("@keet-private-id/pending-invitations",e)}async function O({id:e},{db:t,writer:i}){const a=await y(t,i.key);if(!d(a))throw c.ABORT();await t.delete("@keet-private-id/pending-invitations",{id:e})}async function T({blindResponse:t},{db:i,writer:s,hostcalls:o}){const n=await i.get("@keet/room-capabilities");if(!n)throw c.ABORT();let d=null;try{const e=r(o.key,n.seed);d=a(e,t)}catch(e){throw c.ABORT()}if(!d)throw c.ABORT();const{id:y,response:u}=d,{roomKeys:m}=u;if(!m.key||!m.encryptionKey)throw c.ABORT();const[k,p,v,w]=await Promise.all([i.get("@keet-private-id/pending-invitations",{id:y}),i.get("@keet-private-id/rooms",{roomKey:m.key}),i.get("@keet-private-id/counters"),i.get("@keet/system-digest")]);if(!k)throw c.ABORT();const f=v?v.rooms+1:0,b=p;let g=p;if(g?(!g.status.isActive||w.abi.version>=12)&&(g.clock=f,g.status.isActive=!0,g.status.isReadOnly=!1):g={clock:f,roomKey:m.key,encryptionKey:m.encryptionKey,fastForwardTo:m.fastForwardTo,status:{isActive:!0,isReadOnly:!1},initiator:k.initiator,mailbox:k.mailbox,identitySwapV2:k.identity},await i.insert("@keet-private-id/rooms",g),await l(i,g,b),w.abi.version<11)await i.delete("@keet-private-id/pending-invitations",{id:y});else for await(const t of i.find("@keet-private-id/pending-invitations"))e.equals(t.mailbox,g.mailbox)&&await i.delete("@keet-private-id/pending-invitations",t);await o.ackWriter(s.key)}async function B({header:e,...t},{db:i,writer:a}){const[s,r,o,n,u]=await Promise.all([y(i,a.key),i.get("@keet-private-id/rooms",{roomKey:t.roomKey}),i.get("@keet-private-id/stats"),i.get("@keet-private-id/counters"),i.get("@keet/system-digest")]);if(!u||!d(s))throw c.ABORT();const m=r;let k=0;u.abi.version<10?r?k=r.clock:o&&(k=o.rooms+1):n&&(k=n.rooms+1);let p=r?.status.isReadOnly;!p&&t.isReadOnly&&(p=!0);const v={...t,clock:k,status:{isActive:!0,isReadOnly:p},contact:t.dm};await i.insert("@keet-private-id/rooms",v),await l(i,v,m)}async function q({roomKey:e},{db:t,writer:i}){const a=await y(t,i.key);if(d(a))return t.delete("@keet-private-id/rooms",{roomKey:e})}async function P({header:t,roomKey:i,key:a,status:s},{db:r,writer:o}){const[n,u,m,k]=await Promise.all([y(r,o.key),r.get("@keet-private-id/rooms",{roomKey:i}),r.get("@keet-private-id/counters"),r.get("@keet/system-digest")]);if(!d(n)||!u)throw c.ABORT();if(!L(a))throw c.ABORT();const p=u,v=E(a),w=m.rooms+1;if(u.status={...u.status,[v]:s[v]},u.clock=w,!u.status.isActive&&k.abi.version>=12)for await(const t of r.find("@keet-private-id/pending-invitations"))e.equals(t.mailbox,u.mailbox)&&await r.delete("@keet-private-id/pending-invitations",t);await r.insert("@keet-private-id/rooms",u),await l(r,u,p)}async function x({contact:{memberKey:e,mailbox:t,roomKey:i,status:a}},{db:s,writer:r}){const[o,n,l]=await Promise.all([y(s,r.key),s.get("@keet-private-id/contacts",{memberKey:e}),s.get("@keet-private-id/counters")]);if(!d(o))throw c.ABORT();const m=n,k=l?l.contacts+1:0;let p=n;p?(p.mailbox=t,p.status=a,p.clock=k):p={memberKey:e,mailbox:t,status:a,clock:k},await s.insert("@keet-private-id/contacts",p),await u(s,p,m)}async function I({memberKey:e,key:t,status:i},{db:a,writer:s}){const[r,o,n]=await Promise.all([y(a,s.key),a.get("@keet-private-id/contacts",{memberKey:e}),a.get("@keet-private-id/counters")]);if(!d(r)||!o)throw c.ABORT();if(!_(t))throw c.ABORT();const l=o,m=W(t);o.status={...o.status,[m]:i[m]},o.clock=n?n.contacts+1:0,await a.insert("@keet-private-id/contacts",o),await u(a,o,l)}async function S({memberKey:e},{db:t,writer:i}){const[a,s]=await Promise.all([y(t,i.key),t.get("@keet-private-id/contacts",{memberKey:e})]);if(!d(a)||!s)throw c.ABORT;await t.delete("@keet-private-id/contacts",s)}async function M({blindRequest:e,header:a},{db:o,hostcalls:n,writer:d}){const y=await o.get("@keet/room-capabilities");if(!y)throw c.ABORT();let l=null;try{const t=r(n.key,y.seed);l=s(t,e)}catch(e){throw c.ABORT()}if(!l)throw c.ABORT();const{body:u,attestation:k}=l,{sender:p,keys:v,mailbox:w,message:f}=u,[b,g,K]=await Promise.all([o.get("@keet-private-id/contacts",{memberKey:p.attestation.memberKey}),o.get("@keet-private-id/stats"),o.get("@keet/system-digest")]);if(b&&b.status.isBlocked)throw c.ABORT();if(b&&b.roomKey&&K.abi.version<12)throw c.ABORT();const A=t("@keet-private-id/contact-request-body",u),R=t("@keet/member-profile",p.profile);if(!i(k,A))throw c.ABORT();if(!i(p.attestation,R))throw c.ABORT();let h=!0;const O=a.timestamp,T=o.find("@keet-private-id/pending-contact-requests-by-member",{gte:{memberKey:p.attestation.memberKey},lte:{memberKey:p.attestation.memberKey}});for await(const e of T)e.sentAt>O?h=!1:(e.status.isPending=!1,e.status.isDiscarded=!0,await o.insert("@keet-private-id/contact-requests-v2",e));if(!h)return;const B=g?.contactRequests||0,q={memberKey:p.attestation.memberKey,sender:p.profile,status:{isPending:!0},clock:B,keys:v,mailbox:w,message:f,sentAt:O};await o.insert("@keet-private-id/contact-requests-v2",q),await m(o,q,null),await n.ackWriter(d.key)}async function C({memberKey:e,roomKey:t,key:i,status:a},{db:s,writer:r}){if(!t)throw c.ABORT();const[o,n,m]=await Promise.all([y(s,r.key),s.get("@keet-private-id/contact-requests-v2",{memberKey:e,keys:{key:t}}),s.get("@keet-private-id/counters")]);if(!d(o)||!n)throw c.ABORT();if(!U(i))throw c.ABORT();const k=N(i),p=n.sender,v=!n.status.isAccepted&&i===g.IsAccepted,w=i===g.IsSeen;if(!w&&n.status.isAccepted)throw c.ABORT();const f={isPending:!1,isAccepted:!1,isRejected:!1,isDiscarded:!1,isSeen:n.status.isSeen},b=w?n.status:f;if(n.status={...b,[k]:a[k]},(n.status.isAccepted||n.status.isRejected||n.status.isDiscarded)&&(n.status.isPending=!1),await s.insert("@keet-private-id/contact-requests-v2",n),!v)return;const K=(m?.rooms||0)+1,A=(m?.contacts||0)+1,R={clock:K,roomKey:n.keys.key,encryptionKey:n.keys.encryptionKey,mailbox:n.mailbox,status:{isActive:!0}},h={memberKey:n.memberKey,mailbox:p.mailbox,clock:A,status:{isBlocked:!1}};await s.insert("@keet-private-id/rooms",R),await l(s,R,null),await s.insert("@keet-private-id/contacts",h),await u(s,h,null)}async function F({memberKey:e},{db:t,writer:i}){}async function D({key:e},{db:t,writer:i}){const a=await y(t,i.key);if(!d(a))throw c.ABORT();await t.insert("@keet-private-id/unreads-v2",{deviceKey:i.key,key:e})}async function j({key:e},{db:t,writer:i}){const a=await y(t,i.key);if(!d(a))throw c.ABORT();await t.delete("@keet-private-id/unreads-v2",{deviceKey:i.key,key:e})}function V(e){e.add("@keet-private-id/run-v3-migration",K),e.add("@keet-private-id/update-identity",A),e.add("@keet-private-id/update-settings",R),e.add("@keet-private-id/add-room",B),e.add("@keet-private-id/remove-room",q),e.add("@keet-private-id/update-room-status",P),e.add("@keet-private-id/add-pending-invitation",h),e.add("@keet-private-id/remove-pending-invitation",O),e.add("@keet-private-id/resolve-pending-invitation",T),e.add("@keet-private-id/add-contact",x),e.add("@keet-private-id/update-contact-status",I),e.add("@keet-private-id/remove-contact",S),e.add("@keet-private-id/add-contact-request",M),e.add("@keet-private-id/update-contact-request-status",C),e.add("@keet-private-id/activate-contact-room",F),e.add("@keet-private-id/add-unreads-key",D),e.add("@keet-private-id/remove-unreads-key",j)}function E(e){return p[e-1]}function L(e){return e>=1&&e<=p.length}function W(e){return w[e-1]}function _(e){return e>=1&&e<=w.length}function N(e){return b[e-1]}function U(e){return e>=1&&e<=b.length}module.exports={[n]:V,RoomStatus:v,ContactStatus:f,ContactRequestStatus:g};
@holepunchto/keet-core/lib/core/contract/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("path"),r=require("rocksdb-blobs"),t=require("hyperblobs"),o=require("hyperdb"),s=require("../../../schema/spec"),{contract:{hyperdispatch:{Router:i,encode:c},hyperdb:n}}=s,a=require("./identity"),b=require("./internal"),h=require("./members"),u=require("./members/labels"),l=require("./chat"),d=require("./reactions"),p=require("./config"),q=require("./labels"),m=require("./calls"),w=require("./testing"),E=require("./registration");class v{constructor(e,r,{abi:t,bootstrap:o,router:s,hostcalls:i,writer:c,genesis:n,dryRun:a,trace:b,fork:h}){if(this.db=e,this.blobs=r,this.writer=c,this.genesis=!!n,this.bootstrap=o,this.router=s,this.hostcalls=i,this.dryRun=a,this.trace=b,this.fork=h,this.abi=t,!i.addWriter)throw new Error("An addWriter hostcall must be provided as context");if(!i.removeWriter)throw new Error("A removeWriter hostcall must be provided as context");if(!i.removeable)throw new Error("A removeable hostcall must be provided as context");if(!i.interrupt)throw new Error("An interrupt hostcall must be provided as context");if(!i.createAnchor)throw new Error("A createAnchor hostcall must be provided as context")}}class A{static OpContext=v;static bee(e,r={}){const s=e.get(A.DB_VIEW_NAME),i=e.get(A.BLOB_VIEW_NAME),c=o.bee(s,n,r.hyperdb);return{blobs:new t(i),db:c,cores:{db:s,blobs:i}}}static rocks(t,s={}){const i=e.join(t,"db"),c=e.join(t,"blobs"),a=o.rocks(i,n,s.hyperdb);return{blobs:new r(c),db:a}}static DB_VIEW_NAME="keet/v3/db";static BLOB_VIEW_NAME="keet/v3/blobs"}function f(){const e=new i;return a[E](e),b[E](e),h[E](e),u[E](e),l[E](e),d[E](e),p[E](e),q[E](e),m[E](e),w[E](e),e}module.exports={KeetContract:A,createRouter:f,encodeOperation:c,spec:s};
@holepunchto/keet-core/lib/core/contract/internal.js +1 -0
……@@ -0,0 +1 @@
1const e=require("b4a"),t=require("./registration"),{KeetContractError:i}=require("./errors"),{isMemberActive:s,getMemberForDeviceKey:a}=require("./query"),{addDevice:r,addMember:n}=require("./members"),{contract:{hyperschema:{getEnum:o}}}=require("../../../schema/spec"),d=o("@keet/room-type"),c=o("@keet/build-type"),m=["roomType","isExperimental","isJoiningDisabled","isAppendingDisabled","isCallingDisabled","isMembershipEventsDisabled","isAttachmentsDisabled","isLinksDisabled"],u={RoomType:1,IsExperimental:2,IsJoiningDisabled:3,IsAppendingDisabled:4,IsCallingDisabled:5,IsMembershipEventsDisabled:6,IsAttachmentsDisabled:7,IsLinksDisabled:8};async function l({header:t,digest:s,config:o,capabilities:c,identity:m,bootstrapDevice:u,initialMembers:l},p){const{genesis:y,db:g,writer:b}=p;if(!y)throw i.GENESIS_NOT_FIRST();const k={id:0,count:0,parent:null,stats:I()};if(await g.insert("@keet/threads",k),s.settings.roomType===d.Broadcast&&(s.settings.isCallingDisabled=!0),await g.insert("@keet/system-digest",s),c&&await g.insert("@keet/room-capabilities",c),m&&await g.insert("@keet-private-id/identity",m),o&&await g.insert("@keet/room-config",o),l)for(const i of l){const s=e.equals(i.attestation.memberKey,u.attestation.memberKey)?{isAdmin:!0,isModerator:!0}:{isAdmin:!1,isModerator:!0};await n(t,i.profile,i.attestation,s,p)}await r(t,b.key,u.profile,u.attestation,{isActive:!0,isIndexing:!0},p);const w=await a(g,b.key);if(!u||!w)throw i.ABORT()}async function p({version:e},{db:t,writer:r,abi:n,hostcalls:o}){const[d,c]=await Promise.all([a(t,r.key),t.get("@keet/system-digest")]);if(!(9!==e||s(d)&&d.status.isModerator))return;if(!s(d)||!d.status.isModerator)throw i.ABORT();if(c.abi.version>=e)return;e>(c.settings.isExperimental?n.max:n.production)&&o.interrupt({unsupportedABI:e,digest:c});const m=c.abi.version;c.abi.version=e,await A(t,m,e),await t.insert("@keet/system-digest",c)}async function y({key:e,settings:t},{db:r,writer:n}){const[o,d]=await Promise.all([a(r,n.key),r.get("@keet/system-digest")]);if(!s(o))throw i.INACTIVE_MEMBER();if(!o.status.isModerator)throw i.MODERATORS_ONLY();if(0===e||e>m.length)throw i.INVALID_SYSTEM_SETTING();const c=d?.settings,u=m[e-1],l={...c,[u]:t[u]};await r.insert("@keet/system-digest",{...d,settings:l})}async function g({peer:e},{db:t,writer:i}){const r=await a(t,i.key);s(r)&&r.status.isModerator&&await t.insert("@keet/blind-peers",e)}async function b({key:e},{db:t,writer:i}){const r=await a(t,i.key);s(r)&&r.status.isModerator&&await t.delete("@keet/blind-peers",{key:e})}async function k({from:e,to:t,buildType:i},{db:r,writer:n}){const o=await a(r,n.key);s(o)&&o.status.isModerator&&(e<14&&t>=14&&(await v(r),await h(r)),e<20&&t>=20&&await D(r),e<24&&t>=24&&await f(r),e<25&&t>=25&&await w(r,i))}async function w(e,t){const i=await e.get("@keet/system-digest");c[i.settings.buildType]||c[t]&&(i.settings.buildType=c[t],await e.insert("@keet/system-digest",i))}async function f(e){if((await e.get("@keet/system-digest")).settings.roomType===d.DirectMessage)for await(const t of e.find("@keet/members"))t.status.isModerator||(t.status.isModerator=!0,await e.insert("@keet/members",t))}async function h(e){if(!await e.get("@keet-private-id/identity"))return;const t={isPending:!1,isAccepted:!1,isRejected:!1,isDiscarded:!1,isSeen:!1},i=[];for(const s of await e.find("@keet-private-id/contact-requests").toArray()){const{isSeen:a,isAccepted:r,isRejected:n,isDiscarded:o}=s.status;s.status.isAccepted&&(s.status={...t,isAccepted:r,isSeen:a}),s.status.isRejected&&(s.status={...t,isRejected:n,isSeen:a}),s.status.isDiscarded&&(s.status={...t,isDiscarded:o,isSeen:a}),i.push(e.insert("@keet-private-id/contact-requests-v2",s))}await Promise.all(i)}async function v(e){if(!await e.get("@keet-private-id/identity"))return;const t=[];for(const{memberKey:i,roomKey:s}of await e.find("@keet-private-id/contacts").toArray()){if(!s||!i)continue;const a=await e.get("@keet-private-id/rooms",{roomKey:s});a&&(a.contact=i,t.push(e.insert("@keet-private-id/rooms",a)))}await Promise.all(t)}async function D(e){const[t,i,s]=await Promise.all([e.get("@keet-private-id/identity"),e.get("@keet/threads",{id:0}),e.find("@keet/pinned-chat-messages").toArray()]);!t&&i&&(i.stats.chat.pinned=s.length,await e.insert("@keet/threads",i))}function A(e,t,i){return Promise.resolve()}function M(e){e.add("@keet/genesis",l),e.add("@keet/upgrade",p),e.add("@keet/add-blind-peer",g),e.add("@keet/remove-blind-peer",b),e.add("@keet/update-system-settings",y),e.add("@keet/migrate-abi",k)}function I(){return{devices:{total:0,active:0},members:{total:0,active:0,pending:0},chat:{clock:0,pinned:0,threads:0,timestamp:0},files:{clock:0}}}module.exports={[t]:M,Settings:u};
@holepunchto/keet-core/lib/core/contract/labels.js +1 -0
……@@ -0,0 +1 @@
1const e=require("./registration"),{isMemberActive:t,getMemberForDeviceKey:a}=require("./query"),s=require("b4a"),{KeetContractError:i}=require("./errors"),{chatLabelStats:r}=require("./stats");async function l({header:e,oplog:l,label:d},{db:o,writer:c}){const[k,n,u,b]=await Promise.all([a(o,c.key),a(o,l.key),o.get("@keet/chat-by-message-id",{oplog:l}),o.get("@keet/threads",{id:0})]);if(!t(k)||!u||u.status.isDeleted||k.status.isMuted||s.equals(k.key,n.key))return;if(await o.get("@keet/chat-labels",{id:u.id,sender:k.key,label:d}))throw i.ABORT();const y={id:u.id,sender:k.key,clock:b.stats.chat.clock,label:d};await o.insert("@keet/chat-labels",y),await r(o,b,y,null,e.timestamp)}async function d({header:e,oplog:l,label:d},{db:o,writer:c}){const[k,n,u,b]=await Promise.all([a(o,c.key),a(o,l.key),o.get("@keet/chat-by-message-id",{oplog:l}),o.get("@keet/threads",{id:0})]);if(!t(k)||!u||u.status.isDeleted||k.status.isMuted||s.equals(k.key,n.key))return;const y=await o.get("@keet/chat-labels",{id:u.id,sender:k.key,label:d});if(!y)throw i.ABORT();await o.delete("@keet/chat-labels",y),await r(o,b,null,y,e.timestamp)}function o(e){e.add("@keet/add-chat-label",l),e.add("@keet/remove-chat-label",d)}module.exports={[e]:o};
@holepunchto/keet-core/lib/core/contract/members/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("autobase"),t=require("b4a"),{contract:{hyperschema:{getEnum:i,encode:a},hyperdispatch:{encode:s}}}=require("../../../../schema/spec"),{createDeviceResponse:r,decryptDeviceRequest:n,verifyAttestation:o,verifyInvitationDeviceRequest:d,generateMailboxKeyPair:c}=require("../../invitations"),m=i("@keet/room-type"),{deviceStats:y,memberStats:k}=require("../stats"),{isMemberActive:l,getMemberForDeviceKey:u}=require("../query"),{addEvent:w}=require("../chat"),{updateAvatar:v}=require("../avatars"),{KeetContractError:f}=require("../errors"),b=require("../registration"),{isValidBuildType:p}=require("../helpers"),A=["isMuted","isBanned","isShadowBanned"],h={IsMuted:1,IsBanned:2,IsShadowBanned:3};async function g(e,t,i){const{db:a,hostcalls:s}=i,[r,n]=await Promise.all([a.get("@keet-private-id/identity"),a.get("@keet/threads",{id:0})]),o=await a.get("@keet/members",{key:r.publicKey}),d={...o,status:{...o.status}},c={key:e,memberKey:r.publicKey,profile:t,status:{isActive:!0,isIndexing:!0}};return o.status.isPending=!1,await s.addWriter(e,{indexer:!0}),await a.insert("@keet/members",o),await k(a,n,o,d),await a.insert("@keet/devices",c),await y(a,n,c,null),{added:!0,device:c}}async function R(e,t,i,a,s,{db:r,writer:n,hostcalls:d,genesis:c}){const[l,u,v,b,p]=await Promise.all([r.get("@keet/devices",{key:t}),r.get("@keet/members",{key:a.memberKey}),r.get("@keet/member-proofs",{key:a.memberKey}),r.get("@keet/system-digest"),r.get("@keet/threads",{id:0})]);if(!u||!v)throw f.ABORT();if(l)return{added:!1,device:l};const A={...u,status:{...u.status}},h=u.status.isPending,g=o(a,t,v.latestReceipt);v.latestReceipt=g;const R={isActive:!0,isIndexing:!!s?.isIndexing};u.status.isActive=!0,u.status.isPending=!1,h&&!u.status.isModerator&&s?.isModerator&&(u.status.isModerator=!0),R.isIndexing&&!u.status.isAdmin&&(u.status.isAdmin=!0);const T={key:t,memberKey:u.key,status:R,profile:i};if(await r.insert("@keet/members",u),await k(r,p,u,A),await r.insert("@keet/devices",T),await y(r,p,T,null),await r.insert("@keet/member-proofs",v),c||await d.addWriter(t,{indexer:R.isIndexing}),!h||b.settings.roomType===m.Broadcast)return{added:!0,device:T};if(b.abi.version>=11&&b.settings.isMembershipEventsDisabled)return{added:!0,device:T};const M={memberJoined:{memberKey:u.key}};return await w(r,n,M,e.timestamp),{added:!0,device:T}}async function T(e,t,i,s,{db:r,blobs:n,writer:d,genesis:c}){const[m,y,l]=await Promise.all([r.get("@keet/members",{key:i.memberKey}),r.get("@keet/member-proofs",{key:i.memberKey}),r.get("@keet/threads",{id:0})]);if(m)throw f.ABORT();const u=a("@keet/member-profile",t),w=o(i,u,y?.latestReceipt);let b=y;b?(b.latestReceipt=w,b.profileAttestation=i.proof):b={key:i.memberKey,latestReceipt:w,profileAttestation:i.proof},t.avatar?t.avatar=await v(n,m?.profile.avatar,t.avatar):t.avatar=null;const p={isAdmin:!!s.isAdmin,isModerator:!!s.isModerator,isPending:!0,isActive:!0,isMuted:!1,isBanned:!1,isShadowBanned:!1},A={key:i.memberKey,devices:[],status:p,profile:t};return await r.insert("@keet/members",A),await k(r,l,A),await r.insert("@keet/member-proofs",b),A}async function M(e,t,i,{db:s,blobs:r}){const[n,d]=await Promise.all([s.get("@keet/members",{key:i.memberKey}),s.get("@keet/member-proofs",{key:i.memberKey})]);if(!n)throw f.ABORT();const c=a("@keet/member-profile",t),m=o(i,c,d?.latestReceipt);let y=d;y?(y.latestReceipt=m,y.profileAttestation=i.proof):y={key:i.memberKey,latestReceipt:m,profileAttestation:i.proof},n.profile.timestamp>=t.timestamp||(n.profile=t,t.avatar?n.profile.avatar=await v(r,n.profile.avatar,t.avatar):n.profile.avatar=null,await s.insert("@keet/members",n),await s.insert("@keet/member-proofs",y))}async function B(t,i,a,n,o,d){const{db:c,trace:m,hostcalls:y,dryRun:k}=d,l=await c.get("@keet/room-capabilities"),u=y.discoveryKey,w=y.key,v=n.metadata,b={isAdmin:v.canAdmin,isModerator:v.canModerate||v.canAdmin},p={isIndexing:v.canAdmin,isModerator:v.canModerate};let A=null;if(o)A=await g(i,a.device.profile,d),await c.insert("@keet-private-id/device-identities",{deviceKey:i,privateProfileIdentity:o.privateProfileIdentity,deviceProof:o.deviceProof});else{const e=await c.get("@keet/members",{key:a.device.attestation.memberKey});if(e){if(e.status.isRemoved)throw new f.ABORT;await M(t,a.member.profile,a.member.attestation,d)}else await T(t,a.member.profile,a.member.attestation,b,d);A=await R(t,i,a.device.profile,a.device.attestation,p,d)}const{device:h,added:B}=A,O=a.member.profile.mailbox,K=l.seed,{blindResponse:q}=r(O,K,n),I=s("@keet-private-id/resolve-pending-invitation",{header:{timestamp:0},blindResponse:q}),P=e.encodeValue(I,{optimistic:!0,encrypted:!0});if(B&&(n.metadata.canAdmin=!1,n.metadata.canModerate=!1,h.invitation={id:n.id,response:P},await c.insert("@keet/devices",h),await c.insert("@keet/invitations",n)),m&&!k){const e={roomKey:w,discoveryKey:u,request:a,response:P,invitation:n};await m({type:"@keet/add-device",value:e})}}async function O({device:e,member:t},i,a){const{db:s,hostcalls:r,writer:n}=a,[o,d,c]=await Promise.all([s.get("@keet/members",{key:e.attestation.memberKey}),s.get("@keet/member-proofs",{key:e.attestation.memberKey}),s.get("@keet/system-digest")]);if(!o||!d)throw f.ABORT();const y=c.settings.roomType===m.DirectMessage;if(c.abi.version>=12&&!o.status.isActive&&!y)throw f.ABORT();await R(i,n.key,e.profile,e.attestation,{isActive:!0,isIndexing:!1},a),await r.ackWriter(n.key),t&&await M(i,t.profile,t.attestation,a)}async function K(e,i,a){const{db:s,hostcalls:r,writer:n}=a;let o=null;try{o=d(e)}catch(e){throw f.ABORT()}if(!o)throw f.ABORT();const{id:c,request:m}=o;if(!t.equals(m.deviceKey,n.key))throw f.ABORT();const[y,k,l]=await Promise.all([s.get("@keet/join-requests",{deviceKey:n.key}),s.get("@keet/invitations",{id:c}),s.get("@keet-private-id/identity")]);if(!k||y)throw f.ABORT();const u=k.metadata.buildType,w=m.device.profile.buildType;if(!p(w,u))throw f.INVALID_BUILD_TYPE();await r.ackWriter(n.key),k.requiresConfirmation||l?await s.insert("@keet/join-requests",{deviceKey:n.key,id:c,request:m}):await B(i,n.key,m,k,null,a)}async function q({header:e,deviceKey:t,identity:i},a){const{db:s,writer:r}=a,[n,o]=await Promise.all([u(s,r.key),s.get("@keet/join-requests",{deviceKey:t})]);if(!l(n)||!o)throw f.ABORT();const{id:d,request:c}=o,m=await s.get("@keet/invitations",{id:d});if(!m)throw f.ABORT();await B(e,t,c,m,i,a),await s.delete("@keet/join-requests",{deviceKey:t})}async function I({header:e,deviceKey:t},i){const{db:a,writer:s}=i,[r,n]=await Promise.all([u(a,s.key),a.get("@keet/join-requests",{deviceKey:t})]);if(!l(r)||!n)throw f.ABORT();await a.delete("@keet/join-requests",{deviceKey:t})}async function P({invitation:e},{db:t,writer:i,hostcalls:a}){const[s,r,n]=await Promise.all([u(t,i.key),t.get("@keet/invitations",{id:e.id}),t.get("@keet/system-digest")]);if(!l(s))throw f.ABORT();if(s.status.isMuted)return;const o=e.metadata;if(r||n.settings.roomType===m.DirectMessage)throw f.ABORT();return o.buildType=n.settings.buildType,o.canModerate&&!s.status.isModerator&&(o.canModerate=!1),o.canAdmin&&!s.status.isAdmin&&(o.canAdmin=!1),e.isActive=!0,e.anchor=await a.createAnchor(i.key,i.seq+1),t.insert("@keet/invitations",e)}async function x({id:e},{db:t,writer:i}){const[a,s]=await Promise.all([u(t,i.key),t.get("@keet/invitations",{id:e})]);if(!l(a)||!a.status.isModerator||!s)throw f.ABORT();s.isActive=!1,await t.insert("@keet/invitations",s)}async function E({deviceKey:e,fromDeviceKey:i},{db:a,writer:s,hostcalls:r}){const[n,o,d]=await Promise.all([u(a,s.key),u(a,e),u(a,i)]);if(!l(n))throw f.ABORT();if(!t.equals(n.key,o.key))throw f.ABORT();if(!t.equals(n.key,d.key))throw f.ABORT();const[c,m]=await Promise.all([a.get("@keet/devices",{key:i}),a.get("@keet/devices",{key:e})]);if(!c||!m)throw f.ABORT();if(!c.status.isActive)throw f.ABORT();if(!m.status.isActive)throw f.ABORT();if(!c.status.isIndexing)throw f.ABORT();if(m.status.isIndexing)throw f.ABORT();if(t.equals(c.key,m.key))throw f.ABORT();await r.addWriter(m.key,{isIndexer:!0}),await r.addWriter(c.key,{isIndexer:!1}),m.status.isIndexing=!0,c.status.isIndexing=!1,await a.insert("@keet/devices",c),await a.insert("@keet/devices",m)}async function D(e,{db:t,writer:i,hostcalls:a}){const[s,r]=await Promise.all([t.get("@keet/devices",{key:i.key}),u(t,i.key)]);if(!s.status.isActive||!l(r)||!r.status.canAdmin)throw f.ABORT();await a.addWriter(i.key,{indexer:!0}),s.status.isIndexing=!0,await t.insert("@keet/devices",s)}async function _(e,{db:t,writer:i,hostcalls:a}){const[s,r]=await Promise.all([t.get("@keet/devices",{key:i.key}),u(t,i.key)]);if(!s.status.isActive||!l(r)||!r.status.canAdmin)throw f.ABORT();await a.addWriter(i.key,{indexer:!1}),s.status.isIndexing=!1,await t.insert("@keet/devices",s)}async function N({header:e,blindRequest:t},i){const{db:a}=i,s=await a.get("@keet/room-capabilities");if(!s)throw f.ABORT();let r=null;try{const e=c(i.hostcalls.key,s.seed);r=n(e,t)}catch(e){throw f.ABORT()}if(!r)throw f.ABORT();const{withInvitation:o,withMemberProof:d}=r;return o?K(o,e,i):d?O(d,e,i):void 0}async function S({header:e,member:{profile:t,attestation:i}},a){return M(e,t,i,a)}async function W({profile:e},{db:i,writer:a}){const[s,r]=await Promise.all([u(i,a.key),i.get("@keet/devices",{key:a.key})]);if(!(r.status.isActive&&l(s)&&r&&t.equals(r.key,a.key)))throw f.ABORT();r.profile=e,await i.insert("@keet/devices",r)}async function j({key:e},{db:i,writer:a,hostcalls:s}){const[r,n,o]=await Promise.all([u(i,a.key),i.get("@keet/devices",{key:e}),i.get("@keet/threads",{id:0})]);if(!n||!l(r)||!t.equals(n.memberKey,r.key))throw f.ABORT();const d={...n,status:{...n.status}};n.status.isActive=!1,n.status.isIndexing=!1,s.removeable(n.key)&&await s.removeWriter(n.key),await i.insert("@keet/devices",n),await y(i,o,n,d)}async function L({memberKey:e,key:t,status:i},{db:a,writer:s}){const[r,n]=await Promise.all([u(a,s.key),a.get("@keet/members",{key:e})]);if(!l(r))throw f.INACTIVE_MEMBER();if(!n)throw f.TARGET_MEMBER_NOT_FOUND();if(!r.status.isModerator)throw f.MODERATORS_ONLY();if(0===t||t>A.length)throw f.INVALID_MEMBER_STATUS();const o=A[t-1];n.status[o]=i[o],await a.insert("@keet/members",n)}async function V({key:e,isModerator:t,isAdmin:i},{db:a,writer:s,hostcalls:r}){const[n,o,d]=await Promise.all([u(a,s.key),a.get("@keet/members",{key:e}),a.find("@keet/active-devices-by-member-key",{gte:{memberKey:e},lte:{memberKey:e}}).toArray()]);if(!l(n))throw f.INACTIVE_MEMBER();if(!o)throw f.TARGET_MEMBER_NOT_FOUND();const c=n.status.isAdmin,m=n.status.isModerator,y=o.status.isAdmin;if(!c&&(y||i))throw f.ADMINS_ONLY();if(!m)throw f.MODERATORS_ONLY();let k=!1;if(y&&!i)for(const e of d)r.removeable(e.key)?await r.addWriter(e.key,{indexer:!1}):k=!0;k||(o.status.isAdmin=i),o.status.isModerator=t||i,await a.insert("@keet/members",o)}async function C({header:e,key:i},{db:a,writer:s,hostcalls:r}){const[n,o,d,c,v]=await Promise.all([u(a,s.key),a.get("@keet/members",{key:i}),a.get("@keet/system-digest"),a.find("@keet/active-devices-by-member-key",{gte:{memberKey:i},lte:{memberKey:i}}).toArray(),a.get("@keet/threads",{id:0})]);if(!l(n))throw f.INACTIVE_MEMBER();if(!o)throw f.TARGET_MEMBER_NOT_FOUND();const b={...o,status:{...o.status}},p=t.equals(n.key,o.key),A=n.status.isModerator,h=o.status.isAdmin;if(!p&&h)throw f.ABORT();if(!p&&!A)throw f.MODERATORS_ONLY();o.status.isActive=!1,o.status.isModerator=!1,o.status.isAdmin=!1,o.status.isPending=!!p,p||(o.status.isRemoved=!0,await a.insert("@keet/tmp-removed-members",{key:o.key}));for(const e of c){const t={...e,status:{...e.status}};r.removeable(e.key)&&(await r.removeWriter(e.key,{indexer:!1}),e.status.isIndexing=!1),e.status.isActive=!1,await a.insert("@keet/devices",e),await y(a,v,e,t)}if(await a.insert("@keet/members",o),await k(a,v,o,b),d.settings.roomType===m.Broadcast)return;if(d.abi.version>=11&&d.settings.isMembershipEventsDisabled)return;const g=p?{memberLeft:{memberKey:o.key}}:{memberRemoved:{memberKey:o.key}};await w(a,s,g,e.timestamp)}function U(e){e.add("@keet/add-device",N),e.add("@keet/update-device",W),e.add("@keet/remove-device",j),e.add("@keet/start-indexing",D),e.add("@keet/stop-indexing",_),e.add("@keet/accept-join-request",q),e.add("@keet/reject-join-request",I),e.add("@keet/update-member",S),e.add("@keet/change-member-role",V),e.add("@keet/change-member-status",L),e.add("@keet/remove-member",C),e.add("@keet/add-invitation",P),e.add("@keet/remove-invitation",x),e.add("@keet/move-indexer",E)}module.exports={[b]:U,MemberStatus:h,addDevice:R,addMember:T};
@holepunchto/keet-core/lib/core/contract/members/labels.js +1 -0
……@@ -0,0 +1 @@
1const e=require("../registration"),{isMemberActive:t,getMemberForDeviceKey:l}=require("../query"),a=require("b4a"),{KeetContractError:s}=require("../errors");async function r({header:e,key:r,label:c},{db:o,writer:n}){const[b,k,d]=await Promise.all([l(o,n.key),o.get("@keet/members",{key:r}),o.get("@keet/threads",{id:0})]);if(!t(b)||!k||a.equals(b.key,k.key))throw s.ABORT();if(await o.get("@keet/member-labels",{key:k.key,sender:b.key,label:c}))throw s.ABORT();const u={key:k.key,sender:b.key,clock:d.stats.chat.clock,label:c};await o.insert("@keet/member-labels",u),await i(o,d,u,null,e.timestamp)}function c(e){e.add("@keet/add-member-label",r)}async function i(e,t,l,a,s){if(l&&a||!l&&!a)return;const r=l?l.key:a.key,c=await e.get("@keet/member-label-digests",{key:r})||{key:r,total:0,labels:[],editedAt:0,flagsClock:0};1===(l||a).label&&!a&&(t.stats.chat.flagsClock+=1,c.flagsClock=t.stats.chat.flagsClock),c.editedAt=s,l?(o(c,l.label),t.stats.chat.clock+=1,c.total+=1):(n(c,a.label),t.stats.chat.clock-=1,c.total-=1),await Promise.all([e.insert("@keet/threads",t),e.insert("@keet/member-label-digests",c)])}function o(e,t){const l=e.labels.findIndex(e=>e.label===t);-1===l?e.labels.push({label:t,count:1}):e.labels[l].count+=1}function n(e,t){const l=e.labels.findIndex(e=>e.label===t);if(-1===l)return;const a=e.labels[l];a.count-=1,a.count>0||e.labels.splice(l,1)}module.exports={[e]:c};
@holepunchto/keet-core/lib/core/contract/members/legacy.js +1 -0
……@@ -0,0 +1 @@
1const e=require("compact-encoding"),i={preencode(i,d){e.fixed32.preencode(i,d.deviceKey),e.fixed32.preencode(i,d.noisePublicKey),d.attestation?e.buffer.preencode(i,d.attestation):(d.deviceName||d.identityDevicePublicKey)&&e.buffer.preencode(i,null);let c=0;d.deviceName&&(c|=1),d.identityDevicePublicKey&&(c|=2),e.uint.preencode(i,c),d.deviceName&&e.string.preencode(i,d.deviceName),d.identityDevicePublicKey&&e.fixed32.preencode(i,d.identityDevicePublicKey)},encode(i,d){e.fixed32.encode(i,d.deviceKey),e.fixed32.encode(i,d.noisePublicKey),d.attestation?e.buffer.encode(i,d.attestation):(d.deviceName||d.identityDevicePublicKey)&&e.buffer.encode(i,null);let c=0;d.deviceName&&(c|=1),d.identityDevicePublicKey&&(c|=2),e.uint.encode(i,c),d.deviceName&&e.string.encode(i,d.deviceName),d.identityDevicePublicKey&&e.fixed32.encode(i,d.identityDevicePublicKey)},decode(i){const d={deviceKey:e.fixed32.decode(i),noisePublicKey:e.fixed32.decode(i),attestation:i.start<i.end?e.buffer.decode(i):null,deviceName:null,identityDevicePublicKey:null};if(i.start<i.end){const c=e.uint.decode(i);d.deviceName=1&c?e.string.decode(i):null,d.identityDevicePublicKey=2&c?e.fixed32.decode(i):null}return d}},d={preencode(i,d){if(e.fixed32.preencode(i,d.fastForwardTo),d.deviceProof){const c=1;e.uint.preencode(i,c),e.buffer.preencode(i,d.deviceProof)}},encode(i,d){if(e.fixed32.encode(i,d.fastForwardTo),d.deviceProof){const c=1;e.uint.encode(i,c),e.buffer.encode(i,d.deviceProof)}},decode(i){const d={fastForwardTo:null,deviceProof:null};return d.fastForwardTo=e.fixed32.decode(i),i.start<i.end&&1&e.uint.decode(i)&&(d.deviceProof=e.buffer.decode(i)),d}};module.exports={InvitationAdditionalData:d,InvitationUserData:i};
@holepunchto/keet-core/lib/core/contract/query.js +1 -0
……@@ -0,0 +1 @@
1async function e(e,t){const r=await e.get("@keet/devices",{key:t});return r?e.get("@keet/members",{key:r.memberKey}):null}function t(e){return e&&e.status.isActive}module.exports={getMemberForDeviceKey:e,isMemberActive:t};
@holepunchto/keet-core/lib/core/contract/reactions.js +1 -0
……@@ -0,0 +1 @@
1const e=require("./registration"),{isMemberActive:t,getMemberForDeviceKey:i}=require("./query"),{reactionStats:r}=require("./stats"),{KeetContractError:a}=require("./errors");async function o({header:e,oplog:o,reaction:s},{db:n,writer:c}){const[d,k,u]=await Promise.all([i(n,c.key),n.get("@keet/chat-by-message-id",{oplog:o}),n.get("@keet/threads",{id:0})]);if(!t(d)||!k||d.status.isMuted||!s)return;if(await n.get("@keet/reactions",{id:k.id,sender:d.key,reaction:s}))throw a.ABORT();const l={id:k.id,sender:d.key,clock:u.stats.chat.clock,reaction:s};await n.insert("@keet/reactions",l),await r(n,u,l,null,e.timestamp)}async function s({header:e,oplog:o,reaction:s},{db:n,writer:c}){const[d,k,u]=await Promise.all([i(n,c.key),n.get("@keet/chat-by-message-id",{oplog:o}),n.get("@keet/threads",{id:0})]);if(!t(d)||!k||d.status.isMuted)return;const l=await n.get("@keet/reactions",{id:k.id,sender:d.key,reaction:s});if(!l)throw a.ABORT();await n.delete("@keet/reactions",l),await r(n,u,null,l,e.timestamp)}function n(e){e.add("@keet/add-reaction",o),e.add("@keet/remove-reaction",s)}module.exports={[e]:n};
@holepunchto/keet-core/lib/core/contract/registration.js +1 -0
……@@ -0,0 +1 @@
1module.exports=Symbol("register-routes");
@holepunchto/keet-core/lib/core/contract/stats/chat.js +1 -0
……@@ -0,0 +1 @@
1const t=require("b4a");module.exports=async function(e,s,n,a){const i=s,m=n.message?.display?.mention||[],o=a?.message?.display?.mention||[],c=o.length?new Set(o.map(({memberKey:e})=>t.toString(e,"hex"))):null,r=c?m.filter(({memberKey:e})=>!c.has(t.toString(e,"hex"))):m,h=[];for(const{memberKey:t}of r)h.push(e.get("@keet/member-activity",{key:t}));const l=await Promise.all(h);if(n&&!a){const t=Math.max(i.stats.chat.timestamp,n.timestamp);i.stats.chat.clock+=1,i.stats.chat.timestamp=t,i.count+=1}const p=!!a&&a.status.isPinned,y=!!n&&n.status.isPinned;y&&!p&&(i.stats.chat.pinned+=1),!y&&p&&(i.stats.chat.pinned-=1);const u=[];if(r.length)for(let t=0;t<r.length;t++){const s=r[t],n=l[t];u.push(e.insert("@keet/member-activity",{...n,key:s.memberKey,mentions:n?n.mentions+1:1}))}u.push(e.insert("@keet/threads",i)),await Promise.all(u)};
@holepunchto/keet-core/lib/core/contract/stats/devices.js +1 -0
……@@ -0,0 +1 @@
1module.exports=async function(t,s,e,a){const i=!!a&&a.status.isActive,c=!!e&&e.status.isActive;e&&!a&&(s.stats.devices.total+=1),!e&&a&&(s.stats.devices.total-=1),!i&&c&&(s.stats.devices.active+=1),i&&!c&&(s.stats.devices.active-=1),await t.insert("@keet/threads",s)};
@holepunchto/keet-core/lib/core/contract/stats/files.js +1 -0
……@@ -0,0 +1 @@
1module.exports=async function(t,e,s,a){s&&!a&&(e.stats.files.clock+=1),await t.insert("@keet/threads",e)};
@holepunchto/keet-core/lib/core/contract/stats/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("./chat.js"),t=require("./labels.js"),r=require("./files.js"),s=require("./reactions.js"),a=require("./devices"),i=require("./members");module.exports={chatStats:e,chatLabelStats:t,fileStats:r,reactionStats:s,deviceStats:a,memberStats:i};
@holepunchto/keet-core/lib/core/contract/stats/labels.js +1 -0
……@@ -0,0 +1 @@
1function t(t,l){const a=t.labels.findIndex(t=>t.label===l);-1===a?t.labels.push({label:l,count:1}):t.labels[a].count+=1}function l(t,l){const a=t.labels.findIndex(t=>t.label===l);if(-1===a)return;const e=t.labels[a];e.count-=1,e.count>0||t.labels.splice(a,1)}module.exports=async function(a,e,s,c,n){if(s&&c||!s&&!c)return;const o=s?s.id:c.id,i=await a.get("@keet/chat-label-digests",{id:o})||{id:o,total:0,labels:[],editedAt:0,flagsClock:0};1===(s||c).label&&!c&&(e.stats.chat.flagsClock+=1,i.flagsClock=e.stats.chat.flagsClock),i.editedAt=n,s?(t(i,s.label),e.stats.chat.clock+=1,i.total+=1):(l(i,c.label),e.stats.chat.clock-=1,i.total-=1),await Promise.all([a.insert("@keet/threads",e),a.insert("@keet/chat-label-digests",i)])};
@holepunchto/keet-core/lib/core/contract/stats/local/index.js +1 -0
……@@ -0,0 +1 @@
1const o=require("./room.js"),r=require("./room-migrations.js");module.exports={roomsStats:o,roomMigrationsStats:r};
@holepunchto/keet-core/lib/core/contract/stats/local/room-migrations.js +1 -0
……@@ -0,0 +1 @@
1module.exports=async function(t,o,a){if(o&&a||!o&&!a)return;let n=await t.get("@local/room-migration-stats");n||(n={count:0}),o&&!a&&(n.count+=1),!o&&a&&(n.count-=1),await t.insert("@local/room-migration-stats",n)};
@holepunchto/keet-core/lib/core/contract/stats/local/room.js +1 -0
……@@ -0,0 +1 @@
1function t(t){return t.status.isRemoved||t.identity||t.dm&&!t.config.title?0:t.timestamps.latestChatMessage||t.timestamps.latestSync}module.exports=async function(s,o,e){if(!o&&!e)return;let a=await s.get("@local/stats");a||(a={rooms:0,activeRooms:0});const i=!!e&&0!==t(e),m=!!o&&0!==t(o);o&&!e&&(a.rooms+=1),!o&&e&&(a.rooms-=1),!i&&m&&(a.activeRooms+=1),i&&!m&&(a.activeRooms-=1),await s.insert("@local/stats",a)};
@holepunchto/keet-core/lib/core/contract/stats/members.js +1 -0
……@@ -0,0 +1 @@
1module.exports=async function(s,t,e,a){const i=!!a&&a.status.isActive,m=!!e&&e.status.isActive,n=!!a&&a.status.isPending,r=!!e&&e.status.isPending;e&&!a&&(t.stats.members.total+=1),!e&&a&&(t.stats.members.total-=1),!i&&m&&(t.stats.members.active+=1),i&&!m&&(t.stats.members.active-=1),!n&&r&&(t.stats.members.pending+=1),n&&!r&&(t.stats.members.pending-=1),await s.insert("@keet/threads",t)};
@holepunchto/keet-core/lib/core/contract/stats/profile/contact-requests.js +1 -0
……@@ -0,0 +1 @@
1module.exports=async function(t,e,s){let a=await t.get("@keet-private-id/stats");a||(a={rooms:0,contactRequests:0}),e&&!s&&(a.contactRequests+=1),await t.insert("@keet-private-id/stats",a)};
@holepunchto/keet-core/lib/core/contract/stats/profile/contacts.js +1 -0
……@@ -0,0 +1 @@
1module.exports=async function(t,e,a){let o=await t.get("@keet-private-id/counters");o||(o={rooms:0,contacts:0}),o.contacts+=1,await t.insert("@keet-private-id/counters",o)};
@holepunchto/keet-core/lib/core/contract/stats/profile/index.js +1 -0
……@@ -0,0 +1 @@
1const t=require("./rooms.js"),e=require("./contacts.js"),o=require("./contact-requests.js");module.exports={profileRoomStats:t,profileContactStats:e,profileContactRequestStats:o};
@holepunchto/keet-core/lib/core/contract/stats/profile/rooms.js +1 -0
……@@ -0,0 +1 @@
1module.exports=async function(t,e,s){let[o,r]=await Promise.all([t.get("@keet-private-id/stats"),t.get("@keet-private-id/counters")]);o||(o={rooms:0,contactRequests:0}),r||(r={rooms:0,contacts:0}),e&&!s&&(o.rooms+=1),!e&&s&&(o.rooms-=1),r.rooms+=1,await Promise.all([t.insert("@keet-private-id/counters",r),t.insert("@keet-private-id/stats",o)])};
@holepunchto/keet-core/lib/core/contract/stats/reactions.js +1 -0
……@@ -0,0 +1 @@
1const t=32;function e(e,n,i){const o=e.reactions.findIndex(t=>t.text===i);-1===o?e.reactions.push({text:i,count:1,latest:[n]}):e.reactions[o].count+=1,e.reactions.length>t&&e.reactions.pop()}function n(t,e,n){const i=t.reactions.findIndex(t=>t.text===n);if(-1===i)return;const o=t.reactions[i];o.count-=1,o.count>0||t.reactions.splice(i,1)}module.exports=async function(t,i,o,c,s){if(o&&c||!o&&!c)return;const a=o?o.id:c.id,r=await t.get("@keet/reaction-digests",{id:a})||{id:a,total:0,reactions:[],editedAt:0};r.editedAt=s,o?(e(r,o.sender,o.reaction),i.stats.chat.clock+=1,r.total+=1):(n(r,c.sender,c.reaction),i.stats.chat.clock-=1,r.total-=1),await Promise.all([t.insert("@keet/threads",i),t.insert("@keet/reaction-digests",r)])};
@holepunchto/keet-core/lib/core/contract/testing.js +1 -0
……@@ -0,0 +1 @@
1const e=require("./registration"),{isMemberActive:t,getMemberForDeviceKey:r}=require("./query"),{KeetContractError:c}=require("./errors"),{contract:{hyperdispatch:{DispatchError:i}}}=require("../../../schema/spec");async function o({value:e},{db:i,writer:o}){const a=await r(i,o.key);if(!t(a))throw c.ABORT();const s=await i.get("@keet/test-collection-1",{key:e}),n=s?s.value+2:1;await i.insert("@keet/test-collection-1",{key:e,value:n})}async function a(){throw new Error("test crash")}async function s(){throw i.HANDLER_NOT_FOUND_BY_ID()}function n(e){e.add("@keet/test-increment",o),e.add("@keet/test-crash",a),e.add("@keet/test-dispatch-error",s)}module.exports={[e]:n};
@holepunchto/keet-core/lib/core/crypto.js +1 -0
……@@ -0,0 +1 @@
1const r=require("sodium-native"),o=1,t=1;function e(o,t){const e=r.sodium_malloc(r.crypto_secretbox_KEYBYTES),s=r.sodium_malloc(Buffer.byteLength(t,"utf-8")),c=r.sodium_malloc(Buffer.byteLength(o,"utf-8"));if(s.write(t,"utf-8"),c.write(o,"utf-8"),c.byteLength<32)throw r.sodium_memzero(s),r.sodium_memzero(c),new Error("Phrase is too small");const a=r.crypto_pwhash_SALTBYTES,y=r.crypto_secretbox_NONCEBYTES,u=r.crypto_secretbox_MACBYTES,p=Buffer.alloc(1+a+y+c.length+u);p[0]=1;const h=p.subarray(1,1+a),n=p.subarray(1+a,1+a+y),f=p.subarray(1+a+y);r.randombytes_buf(h),r.randombytes_buf(n);try{r.crypto_pwhash(e,s,h,r.crypto_pwhash_OPSLIMIT_INTERACTIVE,r.crypto_pwhash_MEMLIMIT_INTERACTIVE,r.crypto_pwhash_ALG_ARGON2ID13),r.crypto_secretbox_easy(f,c,n,e)}finally{_(e),_(s),_(c)}return p}function s(o,t){const e=r.sodium_malloc(r.crypto_secretbox_KEYBYTES),s=r.sodium_malloc(Buffer.byteLength(t),"utf-8");s.write(t,"utf-8");const c=r.crypto_pwhash_SALTBYTES,a=r.crypto_secretbox_NONCEBYTES,y=r.crypto_secretbox_MACBYTES;if(1!==o[0])throw new Error("Version mismatch");const u=o.subarray(1,1+c),p=o.subarray(1+c,1+c+a),h=o.subarray(1+c+a),n=Buffer.alloc(h.length-y);try{if(r.crypto_pwhash(e,s,u,r.crypto_pwhash_OPSLIMIT_INTERACTIVE,r.crypto_pwhash_MEMLIMIT_INTERACTIVE,r.crypto_pwhash_ALG_ARGON2ID13),!r.crypto_secretbox_open_easy(n,h,p,e))throw new Error("Decryption failed – bad password or corrupted data")}finally{_(e),_(s)}return n}function _(o){r.sodium_memzero(o),r.sodium_free(o)}module.exports={encryptPhrase:e,decryptPhrase:s,free:_};
@holepunchto/keet-core/lib/core/debug/debugging.js +1 -0
……@@ -0,0 +1 @@
1const e=[{key:"disableSwarming",value:!1,description:"Disable swarming"},{key:"disableMirrors",value:!1,description:"Disable all mirrors"},{key:"disableFastForward",value:!1,description:"Disable fast forward"}],r={concurrency:10,maxWindow:80,randomPunchInterval:2e4,connectionKeepAlive:5e3},a=new Map;for(let r=0;r<e.length;r++)a.set(e[r].key,r);module.exports={DEBUG_FLAGS:e,DEBUG_FLAG_INDEX_BY_KEY:a,DHT_SETTINGS:r};
@holepunchto/keet-core/lib/core/debug/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("hypercore-crypto"),r=require("b4a"),a=r.from("9ddc90e82a1ebb1e20826ad12d75bca6f8c3caa9d92aa9bcffe7619e42310c0e","hex");module.exports.hashDebugPassword=function(r){return e.hash([r,a])};
@holepunchto/keet-core/lib/core/files/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("path"),t=require("fs"),a=require("hypercore-blob-server"),i=require("ready-resource"),r=require("safety-catch"),l=require("hypercore-id-encoding"),{pipelinePromise:o,Readable:n}=require("streamx"),s=require("b4a"),c=6048e5;module.exports=class extends i{constructor(e,t={}){super(),this.keet=e,this.local=e.local,this.store=e.store,this.server=new a(this.store.session(),{resolve:this._resolveEncryptionKey.bind(this)}),this._activeDownloads=new Map,this._onerror=t.onerror||r,this.ready().catch(this._onerror)}_open(){return this.server.listen()}_close(){return this.server.close()}async _resolveEncryptionKey(e,{blob:t,filename:a,drive:i,version:r}){const l=i?"@local/drive-files":"@local/blob-files",o={pointer:{externalDrive:{key:i,path:a&&a.startsWith("/")?a.slice(1):a,version:r},externalBlob:{key:e,blob:t}}},n=await this.local.get(l,{file:o});return n&&await this.keet.internalBlobsActiveInRoom(n.roomKey),n?{key:e,encryptionKey:n.encryptionKey}:null}_getLinkOptions(e){if(!e.pointer.externalBlob&&!e.pointer.externalDrive)throw new Error("Invalid file pointer");return e.pointer.externalBlob?{collection:"@local/blob-files",key:e.pointer.externalBlob.key,opts:{blob:e.pointer.externalBlob.blob,type:e.metadata?.mimetype}}:{collection:"@local/drive-files",key:e.pointer.externalDrive.key,opts:{filename:e.pointer.externalDrive.path,version:e.pointer.externalDrive.version}}}async _clearAllFiles(e,t,a,{leaving:i=!1}={}){const l=t?"@local/blob-files":"@local/drive-files",o=t?"@local/blob-files-by-room":"@local/drive-files-by-room",n=[];for await(const t of e.find(o,{gte:{roomKey:a},lte:{roomKey:a}})){if(t.cleared)continue;const{key:a,opts:o}=this._getLinkOptions(t.file),s=this.server.clear(a,o);s.catch(r),n.push(s),i?await e.delete(l,t):await e.insert(l,{...t,cleared:!0})}return(await Promise.allSettled(n)).filter(e=>"fulfilled"===e.status).reduce((e,t)=>e+t.value,0)}async _findAndClearOldFiles(e,t){const a=[];for await(const i of this.local.find(e,{lte:{lastAccessed:t}}))i.cleared||a.push(i);const i=[];for(const e of a){const{key:t,opts:a}=this._getLinkOptions(e.file),l=this.server.clear(t,a);l.catch(r),i.push(l)}return{recordsToClear:a,bytesCleared:(await Promise.allSettled(i)).filter(e=>"fulfilled"===e.status).reduce((e,t)=>e+t.value,0)}}async _createFile(e,t,a){const i={metadata:a,pointer:{externalBlob:{key:e.externalBlobs.key,blob:t}}};i.metadata?.userdata&&(i.metadata.userdata=s.from(i.metadata.userdata,"base64"));const r=await this.keet.internalEnterLocalTransaction();try{const t={file:i,roomKey:e.key,encryptionKey:e.encryptionKey,cleared:!1,own:!0,lastAccessed:Date.now()};await r.insert("@local/blob-files",t),await this._updateFileStats(r,t),await r.flush()}finally{await this.keet.internalExitLocalTransaction()}return i}async saveFile(a,i,r){this.opened||await this.ready();const l=e.basename(i),n=this.keet.internalOpenExistingRoom(a);try{await this.keet.internalBlobsActiveInRoom(a);const e=t.createReadStream(i),s=n.externalBlobs.createWriteStream(r);return await o(e,s),this._createFile(n,s.id,{name:l,...r})}finally{this.keet.internalReleaseRoom(n)}}subscribeAddFile(a,i,l={}){const o=e.basename(i),s=this,c=new n;return t.stat(i,(e,n)=>{if(c.destroyed)return;if(e)return c.destroy(e);let d=0;const y=n.size,h=t.createReadStream(i),w=s.keet.internalOpenExistingRoom(a),p=w.externalBlobs.createWriteStream(l);this.keet.internalBlobsActiveInRoom(a).catch(r);let f=setInterval(()=>{c.destroyed||d<y&&c.push({bytesAdded:d,byteLength:y,result:null})},l?.debounceTime??500);h.pipe(p),h.on("data",e=>{d+=e.byteLength}),h.on("error",e=>c.destroy(e)),p.on("close",async()=>{if(f&&clearInterval(f),f=null,!c.destroyed)try{const e=await s._createFile(w,p.id,{name:o,...l});c.push({bytesAdded:d,byteLength:y,result:e}),c.push(null)}catch(e){c.destroy(e)}}),c.on("error",e=>{h.destroy(e)}),c.on("close",()=>{f&&clearInterval(f),f=null,h.destroy(),p.destroy(),s.keet.internalReleaseRoom(w)}),l.onFileStat&&l.onFileStat()}),c}async saveFileBlob(e,t,a){this.opened||await this.ready();const i=this.keet.internalOpenExistingRoom(e);try{await this.keet.internalBlobsActiveInRoom(e);const r=await i.externalBlobs.put(t);return this._createFile(i,r,a)}finally{this.keet.internalReleaseRoom(i)}}async clearAllFiles(e,t){let a=0,i=0;const r=await this.keet.internalEnterLocalTransaction();try{a=await this._clearAllFiles(r,!0,e,t),i=await this._clearAllFiles(r,!1,e,t),await r.insert("@local/file-stats",{roomKey:e,total:0}),await r.flush()}finally{await this.keet.internalExitLocalTransaction()}return{bytesCleared:a+i}}async clearOldFiles(){const e=Date.now()-c,t=new Set,a=await this._findAndClearOldFiles("@local/blob-files-by-last-accessed",e),i=await this._findAndClearOldFiles("@local/drive-files-by-last-accessed",e),r=await this.keet.internalEnterLocalTransaction();try{for(const e of a.recordsToClear)await r.insert("@local/blob-files",{...e,cleared:!0}),await this._updateFileStats(r,{...e,cleared:!0}),t.add(l.encode(e.roomKey));for(const e of i.recordsToClear)await r.insert("@local/drive-files",{...e,cleared:!0}),await this._updateFileStats(r,{...e,cleared:!0}),t.add(l.encode(e.roomKey));await r.insert("@local/file-gc-info",{lastCleared:Date.now()}),await r.flush()}finally{await this.keet.internalExitLocalTransaction()}for(const e of t)this.keet.emit("local-files-changed",e);return{bytesCleared:a.bytesCleared+i.bytesCleared}}async _ensureLocalFile(e,t,a){const i=await this.keet.internalEnterLocalTransaction();try{await this.keet.internalBlobsActiveInRoom(t);const r=await i.get(e,{roomKey:t,file:a});let o=r?.encryptionKey;if(!o){const e=await i.get("@local/rooms",{roomKey:t});o=e?.encryptionKey}const n={...r,cleared:r?.cleared??!1,roomKey:t,encryptionKey:o,file:a,lastAccessed:Date.now()};return await i.insert(e,n),r||await this._updateFileStats(i,n),await i.flush(),r||this.keet.emit("local-files-changed",l.encode(t)),n}finally{await this.keet.internalExitLocalTransaction()}}async _loadBlob(e,t){const a=this.keet.internalOpenExistingRoom(e);try{return await a.ready(),await a.blobs.get(t)}finally{this.keet.internalReleaseRoom(a)}}async getFileLink(e,t){if(this.opened||await this.ready(),t.pointer.blob){const a=await this._loadBlob(e,t.pointer.blob);return this.server.getBlobLink(a,{type:t.metadata?.mimetype})}const{collection:a,key:i,opts:r}=this._getLinkOptions(t);return await this._ensureLocalFile(a,e,t),this.server.getLink(i,r)}async getFileEntry(e,t,a={}){if(!t)return null;this.opened||await this.ready();const i={roomKey:e,encryptionKey:null,cleared:!1,httpLink:null};if(!t.pointer.externalBlob&&!t.pointer.externalDrive&&!t.pointer.blob)return i;if(t.pointer.blob){const r=a.loadBlob?await a.loadBlob(t.pointer.blob):await this._loadBlob(e,t.pointer.blob);return i.httpLink=this.server.getBlobLink(r,{type:t.metadata?.mimetype}),i}const{collection:r,key:l,opts:o}=this._getLinkOptions(t);return{...await this._ensureLocalFile(r,e,t),httpLink:this.server.getLink(l,o)}}async getFileEntryWithPreview(e,t,a={}){this.opened||await this.ready();const i=await this.getFileEntry(e,t,a);if(!t.preview)return i;const[r,l,o]=await Promise.all([this.getFileEntry(e,t.preview.small,a),this.getFileEntry(e,t.preview.medium,a),this.getFileEntry(e,t.preview.large,a)]);return i.preview={small:r,medium:l,large:o},i}async getFileCleared(e,t){const{collection:a}=this._getLinkOptions(t),i=await this.local.get(a,{file:t});return!!i&&i.cleared}async getLocalFiles(e){return(await Promise.all([this.local.find("@local/blob-files-by-room",{gte:{roomKey:e},lte:{roomKey:e}}).toArray(),this.local.find("@local/drive-files-by-room",{gte:{roomKey:e},lte:{roomKey:e}}).toArray()])).flat()}async clearFile(e,t){if(!t?.pointer?.externalBlob&&!t?.pointer?.externalDrive)return;const{collection:a,key:i,opts:r}=this._getLinkOptions(t),l=await this.keet.internalEnterLocalTransaction();try{const o=await l.get(a,{roomKey:e,file:t});if(!o||o.cleared)return;await this.server.clear(i,r);const n={roomKey:e,file:t,lastAccessed:o.lastAccessed??Date.now(),cleared:!0};await l.insert(a,n),await this._updateFileStats(l,n),await l.flush()}finally{await this.keet.internalExitLocalTransaction()}}async unclearFile(e,t){const{collection:a}=this._getLinkOptions(t),i=await this.keet.internalEnterLocalTransaction();try{const r=await i.get(a,{roomKey:e,file:t});if(!r||!r.cleared)return;const l={roomKey:e,file:t,lastAccessed:Date.now(),cleared:!1};await i.insert(a,l),await this._updateFileStats(i,l),await i.flush()}finally{await this.keet.internalExitLocalTransaction()}}async startDownload(e,t){this.opened||await this.ready();const{key:a,opts:i}=this._getLinkOptions(t),r=this.server.getLink(a,{...i,url:!1}),l=this.server.download(a,i);return this._activeDownloads.set(r,l),l.done().then(()=>{this._activeDownloads.get(r)===l&&this._activeDownloads.delete(r)}),r}async cancelDownload(e,t){this.opened||await this.ready();const a=this._activeDownloads.get(t);t&&a&&await a.close().finally(()=>{this._activeDownloads.get(t)===a&&this._activeDownloads.delete(t)})}async refreshLinks(e){this.opened||await this.ready();const t=[];for(const a of e)t.push(this.server.refreshLink(a));return t}async monitor(e,t){this.opened||await this.ready();const{key:a,opts:i}=this._getLinkOptions(t);return this.server.monitor(a,i)}async _updateFileStats(e,{roomKey:t,file:a,cleared:i}){const r=a.pointer.externalBlob?.blob.byteLength;if(!r)return;let l=await e.get("@local/file-stats",{roomKey:t});l||(l={roomKey:t,total:0});const o=i?-r:r;l.total=Math.max(l.total+o,0),await e.insert("@local/file-stats",l)}};
@holepunchto/keet-core/lib/core/hyperdb/contract/keet-private-id.js +1 -0
……@@ -0,0 +1 @@
1module.exports.roomsTrigger=async function(t,e,c){},module.exports.contactsTrigger=async function(t,e,c){},module.exports.contactRequestsTrigger=async function(t,e,c){},module.exports.pendingContactRequestsMap=function(t){return t.status.isPending?[{clock:t.clock}]:[]},module.exports.pendingContactRequestsByMemberMap=function(t){return t.status.isPending?[{memberKey:t.memberKey}]:[]},module.exports.acceptedContactRequestsMap=function(t){return t.status.isAccepted?[{clock:t.clock}]:[]},module.exports.rejectedContactRequestsMap=function(t){return t.status.isRejected?[{clock:t.clock}]:[]},module.exports.discardedContactRequestsMap=function(t){return t.status.isDiscarded?[{clock:t.clock}]:[]},module.exports.roomsByContactMap=function(t){return t.contact&&t.status.isActive?[{contact:t.contact}]:[]};
@holepunchto/keet-core/lib/core/hyperdb/contract/keet.js +1 -0
……@@ -0,0 +1 @@
1module.exports.devicesTrigger=async function(e,t,s){},module.exports.membersTrigger=async function(e,t,s){},module.exports.moderatorsMap=function(e){return e.status.isModerator&&e.status.isActive?[{key:e.key}]:[]},module.exports.adminsMap=function(e){return e.status.isAdmin&&e.status.isActive?[{key:e.key}]:[]},module.exports.activeMembersMap=function(e){return e.status.isActive?[{key:e.key}]:[]},module.exports.activeDevicesMap=function(e){return e.status.isActive?[{key:e.key}]:[]},module.exports.activeDevicesByMemberKeyMap=function(e){return e.status.isActive?[{memberKey:e.memberKey}]:[]},module.exports.mutedMembersMap=function(e){return e.status.isMuted&&e.status.isActive?[{key:e.key}]:[]},module.exports.membersByMemberNameMap=function(e){return e.profile.displayName&&e.status.isActive?[{name:e.profile.displayName.toLowerCase()}]:[]},module.exports.threadsByParentMap=function(e){return e.parent?[{thread:e.parent.key,index:e.parent.seq}]:[]},module.exports.chatTrigger=async function(e,t,s){},module.exports.chatByMessageIdMap=function(e){return[{key:e.id.key,seq:e.id.seq}]},module.exports.chatMentionsByMemberIdMap=function(e){const t=e.message?.display?.mention;if(!t)return[];const s=[];for(const i of t)s.push({key:i.memberKey,clock:e.clock});return s},module.exports.pinnedChatMessagesMap=function(e){return!e.status.isPinned||e.status.isDeleted?[]:[{thread:e.id.thread,index:e.id.index}]},module.exports.filesTrigger=async function(e,t,s){},module.exports.filesByTypeMap=function(e){const{file:t}=e;return t.metadata&&t.metadata.mimetype&&!t.metadata.isPreview?[{type:t.metadata.mimetype.split("/")[0],id:e.id}]:[]},module.exports.filesByMajorTypeMap=function(e){const{file:t,status:s}=e;if(t.metadata?.isPreview)return[];if(s.isDeleted)return[];const i=t.metadata?.mimetype&&t.metadata.mimetype.split("/")[0];return"image"===i||"video"===i||"audio"===i?[{type:i,id:e.id}]:[{type:"other",id:e.id}]},module.exports.deletedFilesMap=function(e){return e.status.isDeleted?[{id:e.id}]:[]},module.exports.activeFilesMap=function(e){return e.status.isDeleted?[]:[{id:e.id}]},module.exports.reactionsTrigger=async function(e,t,s){},module.exports.chatLabelTrigger=async function(e,t,s){},module.exports.chatLabelDigestFlagMap=function(e){const t=e.labels.find(({label:e})=>1===e);return!t||e.isDeleted?[]:[{label:t.label,clock:e.flagsClock}]},module.exports.memberLabelDigestFlagMap=function(e){const t=e.labels.find(({label:e})=>1===e);return t?[{label:t.label,clock:e.flagsClock}]:[]},module.exports.activeCallsMap=function(e){return e.endedAt?[]:[{createdAt:e.createdAt}]};
@holepunchto/keet-core/lib/core/hyperdb/local/local.js +1 -0
……@@ -0,0 +1 @@
1const e=require("hypercore-crypto");function t(e){return e.status.isRemoved||e.identity||e.dm&&!e.config.title?0:e.timestamps.latestChatMessage||e.timestamps.latestSync}function o(t){return e.discoveryKey(t)}module.exports.roomMigrationsTrigger=async function(e,t,o){},module.exports.roomsTrigger=async function(e,t,o){},module.exports.writersByRoomKeyMap=function(e){return e.roomKey?[{roomKey:e.roomKey}]:[]},module.exports.writersByWakeupTopicMap=function(e){return[{wakeupTopic:o(e.mailbox)}]},module.exports.roomsByTimestampMap=function(e){const o=t(e);return 0===o?[]:[{timestamp:o}]},module.exports.roomsByTypeAndTimestampMap=function(e){const o=t(e);return 0===o?[]:[{type:e.digest.settings.roomType,timestamp:o}]},module.exports.roomsByMailboxMap=function(e){return e.mailbox?[{mailbox:e.mailbox}]:[]},module.exports.roomsByWakeupMap=function(t){return[{discoveryKey:e.discoveryKey(t.mailbox)}]},module.exports.membersByDeviceKeyMap=function(e){return e.devices.map(e=>({key:e}))},module.exports.blockedContactsMap=function(e){return e.status.isBlocked?[{memberKey:e.memberKey}]:[]},module.exports.dirtyByTimestampMap=function(e){return e.dirty?[{timestamp:e.timestamp}]:[]},module.exports.roomsByContactMap=function(e){return t(e)?!e.dm||e.dm.length>1?[]:[{contact:e.dm[0]}]:[]},module.exports.roomsByFavoriteAndTimestampMap=function(e){const o=t(e);return 0===o?[]:e.preferences?.isFavorite?[{timestamp:o}]:[]};
@holepunchto/keet-core/lib/core/invitations/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("autobase"),t=require("hypercore"),r=require("deterministic-sealed-box"),n=require("keet-identity-key"),i=require("hypercore-crypto"),{contract:{hyperschema:{encode:o,decode:c},hyperdispatch:{encode:a}}}=require("../../../schema/spec"),{KeetContractError:u}=require("./../contract/errors"),s=require("@holepunchto/keet-registry"),[d,y,p,v,f,l,m]=i.namespace("@holepunchto/keet-core/invitations",7);function h(e,t,r){let i=null;try{i=n.verify(e.proof,t,{expectedIdentity:e.memberKey})}catch{throw u.ABORT()}if(!i)throw u.ABORT();return i.receipt}function K(e,t={}){const{canModerate:r=!1,canAdmin:n=!1,expiration:c=0}=t,a=i.randomBytes(32),u=J(a),s=u.publicKey,d=o("@keet/room-keys",e);return{invitation:{id:s,metadata:{canModerate:r,canAdmin:n,expiration:c},anchor:null,response:{id:s,data:d,signature:i.sign(i.hash([p,d]),u.secretKey)}},seed:a}}function b(e,t,r){const c=o("@keet-private-id/contact-request-body",r),a=n.attestData(c,t.deviceKeyPair,t.deviceProof),u={memberKey:t.publicKey,proof:a},s=o("@keet-private-id/contact-request",{body:r,attestation:u});return i.encrypt(s,e)}function q(t,r,n){const i=b(t,r,n),o=a("@keet-private-id/add-contact-request",{header:{timestamp:Date.now()},blindRequest:i});return e.encodeValue(o,{optimistic:!0,encrypted:!0})}function k(t,{heads:r}={}){const n=a("@keet/add-device",{header:{timestamp:Date.now()},blindRequest:t});return e.encodeValue(n,{optimistic:!0,encrypted:!0,heads:r})}function P(e,t,r,n,i,o){const{blindRequest:c}=w(e,t,r,n,i,o);return k(c,o)}function g(e,t,r){const{blindRequest:n}=R(e,t);return k(n,r)}function R(e,{device:t,member:r}){const n=o("@keet/device-request",{withMemberProof:{device:t,member:r}});return{blindRequest:i.encrypt(n,e)}}function w(e,t,r,n,{device:c,member:a},u){const s=J(n),d=s.publicKey,p={deviceKey:e,identity:u?.identity,keyPair:r,device:c,member:a},v=o("@keet/device-request-with-invitation",p),f=i.sign(i.hash([y,v]),s.secretKey),l=o("@keet/device-request",{withInvitation:{id:d,request:p,signature:f}});return{blindRequest:i.encrypt(l,t)}}function I(e,t,n){const c=o("@keet/device-response",{signedKeys:n.response}),a=i.hash([f,t]);return{blindResponse:r.encrypt(c,e,a)}}function x(e,{publicKey:t,deviceKeyPair:r,deviceProof:i}){const o=s.encodeReservation({username:e});return{username:e,attestation:{memberKey:t,proof:n.attestData(o,r,i)}}}function D({id:e,request:t,signature:r}){const n=o("@keet/device-request-with-invitation",t);return i.verify(i.hash([y,n]),r,e)?{id:e,request:t}:null}function T(e,t){const n=r.decrypt(t,e);return n?c("@keet/device-request",n):null}function M(e,t){const r=i.decrypt(t,e);return r?c("@keet-private-id/contact-request",r):null}function C(e,t){const r=i.decrypt(t,e);if(!r)return null;const n=c("@keet/device-response",r),{signedKeys:{id:o,data:a,signature:u},identity:s}=n;return i.verify(i.hash([p,a]),u,o)?{id:o,response:{roomKeys:c("@keet/room-keys",a),identity:s}}:null}function A(e,t){const r=t?.deviceProof,i=t?.privateProfileIdentity,o=e.writerKey,c=e.publicKey,a=e.devicePublicKey;if(!r||!i)return null;if(!i.memberKey||!i.proof)return null;const u=n.verify(r,null,{expectedIdentity:c,expectedDevice:a}),s=n.verify(i.proof,o,{expectedIdentity:c});return u&&s}function O(){return i.encryptionKeyPair()}function B(){return i.keyPair()}function J(e){return i.keyPair(i.hash([d,e]))}function W(e){return J(e).publicKey}function N(e){return t.key({version:2,signers:[{publicKey:e}]})}function V(e){return{key:e,discoveryKey:i.discoveryKey(e)}}function E(e,t){return i.encryptionKeyPair(i.hash([v,e,t]))}function S(e){return i.keyPair(e)}function U(e){return i.discoveryKey(e)}function j(e){return i.discoveryKey(e)}function z(e,t){const r=E(e,t),n=S(r.publicKey),i=U(r.publicKey);return{mailboxKeyPair:r,discoveryKeyPair:n,swarmTopic:j(n.publicKey),wakeupTopic:i}}function F(e){const t=S(e),r=U(e);return{discoveryKeyPair:t,swarmTopic:j(t.publicKey),wakeupTopic:r}}function G(e){return i.hash([l,e])}function H(e){return i.hash([m,e])}module.exports={generateIdentityPairingName:G,generateRoomPairingName:H,generateSwarmTopic:j,generateWakeupTopic:U,generateMailboxKeyPair:E,generateDiscoveryKeyPair:S,generateRoomCapabilities:z,generatePairingCapabilities:F,getWakeup:V,getWriterKey:N,getInvitationId:W,createInvitation:K,createDeviceResponse:I,decryptDeviceRequest:T,decryptContactRequest:M,verifyAttestation:h,verifyDeviceResponse:C,verifyIdentityProofs:A,verifyInvitationDeviceRequest:D,createMailboxKeyPair:O,createDiscoveryKeyPair:B,createInvitationJoinRequest:w,createInvitationJoinOperation:P,createMemberProofJoinRequest:R,createMemberProofJoinOperation:g,createBlindContactRequest:b,createContactRequestOperation:q,createUsernameReservationRequest:x};
@holepunchto/keet-core/lib/core/local/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("hyperdb"),{local:{hyperdb:r}}=require("../../../schema/spec");module.exports=class{static bee(s,c={}){return e.bee(s,r,c.hyperdb)}static rocks(s,c={}){return e.rocks(s,r,c.hyperdb)}};
@holepunchto/keet-core/lib/core/log.js +1 -0
……@@ -0,0 +1 @@
1const e=require("bare-file-logger"),i=require("bare-system-logger"),t={debug:0,info:1,warn:2,error:3};class s{constructor({dev:s=!1,verbose:r=!1,logFile:o,logLevel:l="info",logFileMaxSize:h}={}){this._muted=!1,this._dev=s,this.verbose=r,this.level=t[l]??t.info,this._system=new i,this._file=o?new e(o,{maxSize:h||1e8}):null}mute(){this._muted=!0}unmute(){this._muted=!1}debug(...e){this._write("debug",...e)}verboseDebug(...e){this.verbose&&this._write("debug",...e)}verboseInfo(...e){this.verbose&&this._write("info",...e)}info(...e){this._write("info",...e)}warn(...e){this._write("warn",...e)}error(...e){this._write("error",...e)}_write(e,...i){this._muted||t[e]<this.level||(this._dev&&this.level===t.debug&&(console[e]||console.log)(...i),this._system[e](...i),this._file&&this._file[e](...i))}}module.exports=s;
@holepunchto/keet-core/lib/core/migrations/3/apply.js +1 -0
……@@ -0,0 +1 @@
1const e=require("hypercore-id-encoding"),t=require("hypercore-crypto"),i=require("compact-encoding"),a=require("@holepunchto/keet-indexing"),{InternalSchema:n,KeetSchema:s,ConfigSchema:r}=require("@holepunchto/legacy-keet-core-schemas"),{CONFIG:o}=require("@holepunchto/keet-core-api"),{InternalOperation:c,UpgradeOperation:l}=n.Operations,{contract:{hyperschema:{getEnum:u}}}=require("../../../../schema/spec"),m=u("@keet/room-type"),d=7,p=9,[f]=t.namespace("@holepunchto/keet-core/v3-migrations",1),v=19;function y(e){if(!e)throw new Error("Encryption key is required");return t.hash([f,e])}async function h(e,t,i){const a=e.get({key:t,active:!1}),n=await a.getUserData(i);return await a.close(),n}async function g(e,t){return await h(e,t,"autobase/local")||t}async function b(e,t,n){const r=[];for(const t of e){if(i.decode(i.uint,t.value)>1)break;t.value=i.decode(s.Messages.KeetOplogMessage,t.value),r.push(t)}let o=await O(t.bee);for(const e of r){o=Math.max(o,e.value.abi);for(const t of e.value.ops)t.type===c.TYPE&&t.value.subtype===l.SUBTYPE&&(o=Math.max(o,t.value.value.version))}return o>7?n.interrupt({unsupportedABI:o,digest:null}):(r.length&&await a.autobaseApply(r,t),r.length)}async function k(e,t,i,a,n,s){const{isPrivateProfile:r,digest:o,config:c,capabilities:l,identity:u,primaryThread:m,devices:d,members:p,avatars:f,files:y,messages:h,reactions:g,dmRooms:b}=await w(t,i),k=Math.min(o.abi.version,v);a.setDefinition((await s.loadBundle(k)).spec.contract.hyperdb),await a.insert("@keet/system-digest",o),await a.insert("@keet/room-config",c),await a.insert("@keet/threads",m),await a.insert("@keet/room-capabilities",l),r&&await a.insert("@keet-private-id/identity",u);for(const e of d.values())e.memberKey&&await a.insert("@keet/devices",e);for(const[e,t]of f){if(!p.has(e))continue;const i=await n.put(t),{member:a}=p.get(e);a.profile.avatar={small:{pointer:{blob:i}}}}for(const{member:e}of p.values())await a.insert("@keet/members",e);for(const e of y)await a.insert("@keet/files",e);for(const e of h)await a.insert("@keet/chat",e);for(const e of g)await a.insert("@keet/reactions",e);if(r){await a.insert("@keet-private-id/identity",u);for(let e=0;e<b.length;e++){const{memberKey:t,roomKey:i}=b[e],n={memberKey:t,clock:e+1,status:{isBlocked:!1},mailbox:null,roomKey:i};await a.insert("@keet-private-id/contacts",n)}}}async function w(t,i){const a=i.core.download(),[{isPrivateProfile:n,digest:s,config:r,identity:o,primaryThread:c,pinnedMessages:l},{files:u,messages:m,messagesByOplogId:d},p,f,v,h]=await Promise.all([D(i),S(i),M(i),K(i),T(i),x(i)]);a.destroy();const g={seed:y(t.encryptionKey)},b=await E(i,f);if(l)for(const e of l)d.get(e).status.isPinned=!0;for(const{member:t,activeDevices:i,inactiveDevices:a}of f.values()){if(i)for(const a of i){const i=e.encode(a),n=p.get(i);n?n.memberKey=t.key:p.delete(i)}if(a)for(const i of a){const a={key:i,memberKey:t.key,profile:{swarmKey:null,name:null,isMobile:!1},status:{isIndexing:!1,isActive:!1}};p.set(e.encode(i),a)}}return s.creationTime=m.length>0?m[0].timestamp:0,{isPrivateProfile:n,digest:s,config:r,capabilities:g,identity:o,primaryThread:c,devices:p,members:f,avatars:b,files:u,messages:m,reactions:v,dmRooms:h}}async function D(t){const i={abi:{version:9},settings:{roomType:m.Default,isExperimental:!1,isJoiningDisabled:!1,isAppendingDisabled:!1,isCallingDisabled:!1,isMembershipEventsDisabled:!1}},a={title:null,avatar:null,description:null},s={publicKey:null,discoveryCoreKey:null,userRegistry:null},c={id:0,count:0,parent:null,stats:C()};let l=null;const u=await t.bee.get(n.ExperimentalModeKey,n.UpgraderEncoding);i.settings.isExperimental=!!u;for await(const n of t.bee.createReadStream(r.Encoding)){const t=r.getValue(n);switch(n.key){case o.ROOM_TITLE:a.title=t;break;case o.ROOM_DESCRIPTION:a.description=t;break;case o.ROOM_CAN_CALL:i.settings.isCallingDisabled="false"===t;break;case o.ID_PUBLIC_KEY:s.publicKey=e.decode(t);break;case o.PINNED_MESSAGES:l=t.map(t=>e.encode(t.key)+":"+t.seq);break;case o.ROOM_TYPE:i.settings.roomType=N(Number.parseInt(t));break;case o.DISABLE_MEMBERSHIP_EVENTS:i.settings.isMembershipEventsDisabled=!0;break;default:continue}}return{isPrivateProfile:!!s.publicKey,digest:i,config:a,identity:s,primaryThread:c,pinnedMessages:l}}async function M(t){const i=new Map;for await(const{value:a}of t.devices.devices.createReadStream()){const t={key:a.key,memberKey:null,profile:{swarmKey:a.noisePublicKey,name:a.name,isMobile:a.isMobile},status:q(a)};i.set(e.encode(t.key),t)}return i}async function K(t){const i=new Map;for await(const{value:a}of t.members.members.createReadStream()){const{member:t,activeDevices:n,inactiveDevices:s}=A(a);i.set(e.encode(t.key),{member:t,activeDevices:n,inactiveDevices:s,hasAvatar:a.hasAvatar})}for await(const{value:a}of t.members.inactiveMembers.createReadStream()){const{member:t,activeDevices:n,inactiveDevices:s}=A(a);i.set(e.encode(t.key),{member:t,activeDevices:n,inactiveDevices:s,hasAvatar:a.hasAvatar})}for await(const{_id:a}of t.members.mutedMembers.createReadStream()){const t=e.encode(a),n=i.get(t);n&&(n.member.status.isMuted=!0)}return i}async function E(e,t){const i=[];for(const[a,{member:n,hasAvatar:s}]of t)s&&i.push(P(e,a,n.key));const a=await Promise.all(i);return new Map(a)}async function P(e,t,i){return[t,(await e.members.avatars.get(i)).value]}async function S(t){const i=new Map,a=[],n=[];let s=0,r=0;for await(const{value:o}of t.chat.chat.createReadStream()){const t=s++,c=e.encode(o.id.key)+":"+o.id.seq,l={id:{thread:0,index:t},oplog:o.id,clock:t,timestamp:o.timestamp,status:{isEdited:!!o.chat?.edited,isDeleted:!!o.deleted,isPinned:!1},message:null,event:null};if(o.chat)l.message={text:o.chat.text,files:null,display:o.display?B(o.display):null,replyTo:o.replyTo,parent:null};else if(o.file){const e=I(o.file),t=r++;n.push({id:t,oplog:o.id,status:{isDeleted:!1},file:e}),l.message={text:null,files:[t],display:null,replyTo:null,parent:null}}else o.event&&(l.event=R(o.event));i.set(c,l),a.push(l)}return{files:n,messages:a,messagesByOplogId:i}}async function T(e){const t=[];let i=0;for await(const{_id:[a,n,s,r]}of e.reactions.reactions.createReadStream())t.push({id:{thread:a,index:n},sender:s,clock:i++,reaction:r});return t}async function x(e){const t=[];for await(const{key:i,value:{roomKey:a}}of e.indexes.dmByMember.createReadStream())t.push({memberKey:i,roomKey:a});return t}function A(e){const t=e.devices,i=e.inactive;return{member:{key:e.key,profile:{timestamp:0,mailbox:null,displayName:e.displayName,avatar:null},status:_(e)},activeDevices:t,inactiveDevices:i}}function I(e){return{pointer:{externalDrive:{key:e.key,path:e.path,version:e.version,size:0}},metadata:{name:e.path,mimetype:e.type,dimensions:e.dimensions},preview:e.previewPointer?{medium:{metadata:{isPreview:!0},pointer:{externalDrive:{key:e.previewPointer.key,path:e.previewPointer.path,version:e.previewPointer.version,size:0}}}}:null}}function R(e){switch(e.type){case 1:return{memberJoined:{memberKey:null}};case 2:return{callStarted:!0};case 3:return{roomAvatarChanged:!0};case 4:return{invitationCreated:!0};case 5:return{memberLeft:{memberKey:null}};case 6:return{titleChanged:{from:e.value.from,to:e.value.to}};case 7:return{memberRemoved:{memberKey:null}};case 8:return{callHangup:!0};case 9:return{callMissed:!0};default:return null}}function B(e){const t={mention:null,httpLink:null,pearLink:null,bold:null,italic:null,strikeThrough:null,code:null,codeBlock:null,emoji:null};for(const{type:i,value:a}of e)switch(i){case 1:t.mention||(t.mention=[]),t.mention.push({range:{start:a.start,length:a.length},memberKey:a.memberId});break;case 2:t.httpLink||(t.httpLink=[]),t.httpLink.push(L(a));break;case 3:t.pearLink||(t.pearLink=[]),t.pearLink.push(L(a));break;case 4:t.bold||(t.bold=[]),t.bold.push({start:a.start,length:a.length});break;case 5:t.italic||(t.italic=[]),t.italic.push({start:a.start,length:a.length});break;case 6:t.code||(t.code=[]),t.code.push({start:a.start,length:a.length});break;case 7:t.emoji||(t.emoji=[]),t.emoji.push({range:{start:a.start,length:a.length},content:a.content});break;case 8:t.codeBlock||(t.codeBlock=[]),t.codeBlock.push({start:a.start,length:a.length});break;case 9:t.strikeThrough||(t.strikeThrough=[]),t.strikeThrough.push({start:a.start,length:a.length});break;default:continue}return t}function L(e){return{range:{start:e.start,length:e.length},url:e.content,preview:e.preview?{title:e.preview.title,description:e.preview.description,file:e.preview.file?{pointer:{externalDrive:{key:e.preview.file.key,path:e.preview.file.path,version:e.preview.file.version,size:0}},metadata:{mimetype:e.preview.file.type,dimensions:e.preview.file.dimensions}}:null}:null}}async function O(e){const t=await e.get(n.CodeVersionKey,n.UpgraderEncoding);return t?t.value:0}function C(){return{devices:{total:0,active:0},members:{total:0,active:0,pending:0},chat:{clock:0,pinned:0,threads:0,timestamp:0},files:{clock:0}}}function _(e){return{isAdmin:!!(2&e.capabilities),isModerator:!!(4&e.capabilities),isPending:!1,isActive:!e.inactive||0===e.inactive.length,isMuted:!1,isBanned:!1,isShadowBanned:!1}}function q(e){return{isIndexing:!!(2&e.capabilities),isActive:!0}}function N(e){switch(e){case 0:return m.Default;case 1:return m.Broadcast;case 2:return m.DirectMessage;default:return 0}}module.exports={generateCompatSeed:y,getLegacyUserData:h,getLegacyLocalKey:g,autobaseApply:b,migrate:k};
@holepunchto/keet-core/lib/core/migrations/3/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("autobase"),i=require("hyperbee"),t=require("@holepunchto/hyperindex"),o=require("compact-encoding"),a=require("b4a"),{mnemonicToEntropy:r}=require("bip39-mnemonic"),{IndexFilePointer:n,FileRecord:c,RoomRecord:l,BookmarksRecord:s,PendingInvitationRecord:d,LocalIdentityRecord:y}=require("./messages.js"),{getLegacyUserData:u,getLegacyLocalKey:m,generateCompatSeed:p}=require("./apply"),{generateRoomCapabilities:g}=require("../../invitations/index.js"),{roomMigrationsStats:v}=require("../../contract/stats/local");async function f(e,i,t){const o=await e.createKeyPair(t.identity.identityPublicKey),n=await u(e,t.privateProfileKey,"keet-seed-phrase"),c=n?r(a.toString(n)):null,l={publicKey:t.identity.identityPublicKey,privateProfileKey:t.privateProfileKey,deviceKeyPair:o,deviceProof:t.identity.deviceProof,status:{isConfirmed:!0},entropy:c,swap:null};await i.insert("@local/identity",l)}function w(e){return e.createCollections([{keyEncoding:t.BUFFER,valueEncoding:l},{keyEncoding:t.UINT,valueEncoding:s},{keyEncoding:n,valueEncoding:c},{keyEncoding:t.BUFFER,valueEncoding:d},{keyEncoding:t.BUFFER},{keyEncoding:[t.BUFFER,t.BUFFER]}])}module.exports=async function(r,n){const c=r.store,l=c.get({name:"local",compat:!1,active:!1});if(await l.ready(),!l.length)return void await l.close();const s=new t(new i(c.get({name:"local",compat:!1,active:!1}))),d=new i(c.get({name:"local-recents-3",compat:!1,active:!1})),K=new i(c.get({name:"keet-local-identity",compat:!1,active:!1})),E=w(s),k=E[0],P=E[2],R=E[5],b=[],h=[],F=await K.get(a.from([1]),{valueEncoding:y}),q=F?.value;if(q?.identity){const e=await k.get(F.value.privateProfileKey);e&&b.push({priority:0,record:e}),await f(c,n,q)}const x=d.createReadStream({valueEncoding:o.array(o.fixed32),keyEncoding:o.lexint,reverse:!0});for await(const{key:e,value:i}of x)for(const t of i){const i=await k.get(t);i&&!i.value.hidden&&b.push({priority:e,record:i})}for await(const{_id:[e,i,t],value:{roomKey:o,cleared:a}}of P.createReadStream()){const r=i.startsWith("/")?i.slice(1):i;await n.insert("@local/drive-files",{file:{pointer:{externalDrive:{key:e,path:r,version:t,size:0}}},roomKey:o,encryptionKey:null,cleared:a,own:!1,lastAccessed:0})}for await(const{_id:e}of R.createReadStream())h.push(e[1]);for(const{priority:i,record:{_id:t,value:o}}of b){const[r,l]=await Promise.all([u(c,t,"autobase/encryption"),m(c,t)]);if(!r)continue;const s=p(r),d=g(t,s);let y=null;if(q&&a.equals(q.privateProfileKey,t)&&(y={blockedMembers:h}),o.hidden&&!y)continue;const f=c.get({key:l,active:!1});await f.ready();const w=f.length;await f.close();const K={roomKey:t,priority:i,v3:{encryptionKey:r,seed:s,capabilities:d,initiator:{key:l,length:w},fastForwardTo:(await e.getBootRecord(c,t)).key,privateProfile:y},errored:!1,timestamp:Date.now()},E=await n.get("@local/room-migrations",{roomKey:t});await n.insert("@local/room-migrations",K),await v(n,K,E),await n.insert("@local/writers",{mailbox:d.mailboxKeyPair.publicKey,key:l,roomKey:t})}await Promise.allSettled([s.close(),d.close(),K.close()])};
@holepunchto/keet-core/lib/core/migrations/3/messages.js +1 -0
……@@ -0,0 +1 @@
1const e=require("@holepunchto/hyperindex"),d=require("compact-encoding");module.exports.IndexFilePointer=[e.BUFFER,e.STRING,e.UINT],module.exports.RecentsKeyEncoding={preencode(e,o){d.lexint.preencode(e,o)},encode(e,o){d.lexint.encode(e,o)},decode(e){const o=e.start;try{return d.lexint.decode(e)}catch{return e.start=o,d.uint.decode(e)}}};const o={preencode(e,o){e.end++,o.displayName&&d.string.preencode(e,o.displayName),o.avatar&&d.buffer.preencode(e,o.avatar)},encode(e,o){const n=e.start++;let c=0;o.displayName&&(c|=1,d.string.encode(e,o.displayName)),o.avatar&&(c|=2,d.buffer.encode(e,o.avatar)),e.buffer[n]=c},decode(e){const o=d.uint.decode(e);return{displayName:1&o?d.string.decode(e):null,avatar:2&o?d.buffer.decode(e):null}}};module.exports.FileRecord={preencode(e,o){d.uint.preencode(e,0),d.fixed32.preencode(e,o.roomKey)},encode(e,o){const n=e.start++;d.fixed32.encode(e,o.roomKey);let c=0;o.cleared&&(c|=1),e.buffer[n]=c},decode(e){const o=d.uint.decode(e);return{roomKey:d.fixed32.decode(e),cleared:!!(1&o)}}},module.exports.RoomRecord={preencode(e,o){e.end++,d.uint.preencode(e,o.unread),d.uint.preencode(e,o.priority),d.bool.preencode(e,o.bookmarked),o.indexing&&d.bool.preencode(e,o.indexing)},encode(e,n){const c=e.start++;d.uint.encode(e,n.unread),d.uint.encode(e,n.priority),d.bool.encode(e,n.bookmarked);let i=0;n.indexing&&(i|=1,d.bool.encode(e,n.indexing)),n.incognito&&(i|=2,o.encode(e,n.incognito)),n.hidden&&(i|=4),e.buffer[c]=i},decode(e){const n=d.uint.decode(e);return{unread:d.uint.decode(e),priority:d.uint.decode(e),bookmarked:d.bool.decode(e),indexing:!!(1&n)&&d.bool.decode(e),incognito:2&n?o.decode(e):null,hidden:!!(4&n)}}};const n={preencode(e,o){e.end++,d.fixed32.preencode(e,o.identityPublicKey),d.buffer.preencode(e,o.deviceProof),d.buffer.preencode(e,o.sharedInviteSeed)},encode(e,o){const n=e.start++;d.fixed32.encode(e,o.identityPublicKey);let c=0;o.deviceProof&&(c|=1,d.buffer.encode(e,o.deviceProof)),o.sharedInviteSeed&&(c|=2,d.buffer.encode(e,o.sharedInviteSeed)),e.buffer[n]=c},decode(e){const o=d.uint.decode(e);return{identityPublicKey:d.fixed32.decode(e),deviceProof:1&o?d.buffer.decode(e):null,sharedInviteSeed:2&o?d.buffer.decode(e):null}}};module.exports.LocalIdentityRecord={preencode(e,o){d.uint.preencode(e,2),d.fixed32.preencode(e,o.privateProfileKey),o.deviceName&&d.string.preencode(e,o.deviceName),o.identity&&n.preencode(e,o.identity)},encode(e,o){let c=0;o.deviceName&&(c|=1),o.identity&&(c|=2),d.uint.encode(e,c),d.fixed32.encode(e,o.privateProfileKey),o.deviceName&&d.string.encode(e,o.deviceName),o.identity&&n.encode(e,o.identity)},decode(e){const o=d.uint.decode(e);return{privateProfileKey:d.fixed32.decode(e),deviceName:1&o?d.string.decode(e):null,identity:2&o?n.decode(e):null}}};
@holepunchto/keet-core/lib/core/migrations/3/room.js +1 -0
……@@ -0,0 +1 @@
1const e=require("b4a"),i=require("keet-identity-key"),{mnemonicToEntropy:t}=require("bip39-mnemonic"),a=require("compact-encoding"),{ConfigSchema:o}=require("@holepunchto/legacy-keet-core-schemas"),{CONFIG:r}=require("@holepunchto/keet-core-api"),n=1711547109544,c="keet-seed-phrase";function s(e){for(const i of e.peers)if(!(i.remoteLength<=e.signedLength))return!0;return!1}async function l(e,i){await i.core.ready();const t=i.core.findingPeers(),a=setTimeout(t,e.isTesting?75:7500);try{await i.core.update();for(let t=0;t<5&&s(i.core);t++)t>0&&await new Promise(i=>setTimeout(i,e.isTesting?10:1e3)),await i.update()}finally{clearTimeout(a),t()}}async function y(i,n,s,y,f){if(i.debugForceMigrationFailure&&e.equals(i.debugForceMigrationFailure,n.key))throw new Error("Migration failed");if(await l(i,n.base),!await n.db.get("@keet/system-digest")){let e=null;if(f){const i=[];for(const e of f.blockedMembers)i.push(e);const t=[];for(const{roomKey:e,v3:i}of y){const{seed:a,encryptionKey:o,initiator:r,fastForwardTo:n}=i,c={roomKey:e,encryptionKey:o,seed:a,initiator:r,fastForwardTo:n};t.push(c)}e={sharedRooms:t,blockedContacts:i}}await n.dispatch("@keet/upgrade",{version:9},{dryRun:!1,optimistic:!0}),e&&await n.dispatch("@keet-private-id/run-v3-migration",e,{dryRun:!1})}const m=await i.local.get("@local/rooms",{roomKey:n.key});if(m.digest&&m.dm&&m.dm.length&&(m.config.title||await i.privateProfile.dispatch("@keet-private-id/remove-contact",{memberKey:m.dm[0]})),!f)return void await n.internalEnsureProfileUpdated();const[u,p,w]=await Promise.all([n.db.findOne("@keet/members"),n.base.view.legacy.bee.get(r.ID_RECOVERY_PHRASE,o.Encoding),n.base.getUserData(c)]),g=p?a.decode(a.string,p.value):w&&e.toString(w,"utf-8");if(u){const e={...u.profile,mailbox:s.mailboxKeyPair.publicKey};await i.internalUpdateProfile({profile:e},{opening:!0})}if(g){const e=await i.internalEnterLocalTransaction();try{const i=await e.get("@local/identity");i.entropy=t(g),await e.insert("@local/identity",i),await e.flush()}finally{await i.internalExitLocalTransaction()}await d(i,n,g,s)}}async function d(e,t,a,o){const r=await i.from({mnemonic:a});if(await e.internalCreateDiscoveryCore(r),e.discoveryCore.length>0){const i=Math.floor((Date.now()-n)/1e3);await e.discoveryCore.truncate(e.discoveryCore.length,i)}const c=o.mailboxKeyPair.publicKey;await e.discoveryCore.append({version:1,timestamp:Date.now(),key:t.key,mailbox:c}),await t.dispatch("@keet-private-id/update-identity",{identity:{publicKey:r.identityPublicKey,discoveryCoreKey:e.discoveryCore.key}})}module.exports=async function(e,i,{capabilities:t,encryptionKey:a,privateProfile:o},{migratingRooms:r}){const n=await e.local.find("@local/drive-files-by-room",{gte:{roomKey:i},lte:{roomKey:i}}).toArray();for(const e of n)e.encryptionKey=a;const c=await e.internalEnterLocalTransaction();try{for(const e of n)await c.insert("@local/drive-files",e);await c.flush()}finally{await e.internalExitLocalTransaction()}const s=e.internalOpenRoom(i,a,{mailbox:t.mailboxKeyPair.publicKey,isPrivateProfile:!!o});try{await y(e,s,t,r,o),await e.blindPeering.addAutobase(s.base)}finally{e.internalReleaseRoom(s)}};
@holepunchto/keet-core/lib/core/migrations/4/index.js +1 -0
……@@ -0,0 +1 @@
1module.exports=async function(n,o){};
@holepunchto/keet-core/lib/core/migrations/4/post.js +1 -0
……@@ -0,0 +1 @@
1async function o(o){const r=[];for await(const e of o.privateProfile.db.find("@keet-private-id/rooms"))await o.local.get("@local/rooms",{roomKey:e.roomKey})||r.push(e);for(const e of r)o.tasks.joinRoomKeys(e.roomKey,{keys:e}).runBackground()}module.exports=async function(r){o(r).catch(r.onerror)};
@holepunchto/keet-core/lib/core/migrations/7/index.js +1 -0
……@@ -0,0 +1 @@
1module.exports=async function(o){const s=[];for await(const a of o.find("@local/rooms"))a.dm&&s.push(o.insert("@local/rooms",a));await Promise.all(s)};
@holepunchto/keet-core/lib/core/migrations/8/index.js +1 -0
……@@ -0,0 +1 @@
1const o=require("hypercore-id-encoding");module.exports=async function(e){const t=new Map;for await(const{roomKey:n,file:c,cleared:i}of e.find("@local/blob-files")){if(i)continue;const e=c.pointer.externalBlob?.blob.byteLength;if(!e)continue;const l=o.encode(n);t.set(l,(t.get(l)??0)+e)}const n=[];for(const[c,i]of t)n.push(e.insert("@local/file-stats",{roomKey:o.decode(c),total:i}));await Promise.all(n)};
@holepunchto/keet-core/lib/core/swarm/index.js +1 -0
……@@ -0,0 +1 @@
1const r=require("./worker");module.exports={SwarmWorker:r};
@holepunchto/keet-core/lib/core/swarm/worker.js +1 -0
……@@ -0,0 +1 @@
1const s=require("ready-resource"),e=require("hypercore-id-encoding"),t=require("scope-lock"),{local:{hyperschema:{getEnum:i}}}=require("../../../schema/spec"),r=i("@local/keet-state"),a=8,o=1e3,n=3e4,c=6e4,l=1e4,h=5e3,m=5e3;async function d(s){await s.swarm.flushed(),await s.swarm.destroy(),s.swarmStatus.isClient=!1,s.swarmStatus.isServer=!1,s.swarm=null}module.exports=class extends s{constructor(s,e={}){super();const{gcDefaultDiscoveryTimeout:i=c,gcUpdatedDiscoveryTimeout:r=l,gcStartDiscoverySwarmingDelay:d=h,gcStartFallbackSwarmingDelay:u=m,refreshInterval:w=o,fallbackSwarmingLimit:S=a,gcIdleTime:g=n}=e;this.keet=s,this.swarm=null,this.sessions=new Map,this.sessionsByRoomId=new Map,this._refreshLock=new t({debounce:!0}),this._refreshTimer=null,this._gcEnabled=!1!==e.gc,this._deferSwarming=!1!==e.deferSwarming,this._fallbackSwarmingEnabled=!1!==e.fallbackSwarming,this._fallbackSwarmingLimit=S,this._gcIdleTime=g,this._refreshInterval=w,this._gcDefaultDiscoveryTimeout=i,this._gcUpdatedDiscoveryTimeout=r,this._gcStartDiscoverySwarmingDelay=d,this._gcStartFallbackSwarmingDelay=u,this._serverModeAllowed=!0,this._backgrounded=!1}_runOpen(){this._refreshTimer||(this._refreshTimer=setInterval(this.refresh.bind(this),this._refreshInterval)),this.refresh().catch(this.keet.onerror)}async _runClose(){this._refreshTimer&&(clearInterval(this._refreshTimer),this._refreshTimer=null);const s=[];for(const e of this.sessions.values())e.swarm&&s.push(e.swarm.destroy());this.sessions.clear(),await Promise.allSettled(s)}_open(){this.swarm=this.keet.swarm,this._runOpen()}_close(){return this._runClose()}async _refreshFallbackSwarming(){if(!this._fallbackSwarmingEnabled)return;const s=await this.keet.local.find("@local/rooms-by-timestamp",{limit:this._fallbackSwarmingLimit,reverse:!0}).toArray(),t=new Set;for(const i of s){const s=e.encode(i.capabilities.swarmTopic),r=this._createSession(s,i.capabilities.swarmTopic);if(!r.status.isFallback){r.status.isFallback=!0;const s=Math.floor(.5*Math.random()*this._gcStartFallbackSwarmingDelay),e=this._gcStartFallbackSwarmingDelay+s;r.fallbackSwarmingStartTime=Date.now()+e}t.add(s)}for(const s of this.sessions.values())t.has(s.id)||(s.status.isFallback=!1)}async _refreshSessions(){const s=[],e=[];for(const t of this.sessions.values())this._checkInactivity(t)?s.push(t):e.push(this._refreshSession(t));await Promise.allSettled(e);const t=[];for(const e of s)this.sessions.delete(e.id),e.roomId&&this.sessionsByRoomId.delete(e.roomId),e.swarm&&t.push(e.swarm.destroy());await Promise.allSettled(t)}_checkInactivity(s){if(!this._gcEnabled)return!1;let e=!1;s.status.isDiscovering&&(e=Date.now()-s.discoveryStartTime>s.discoveryTimeout);const t=s.status.isFallback||s.status.isActive;let i=s.status.isDiscovering&&!e;return s.status.isDiscovering&&e&&(this.keet.internalDiscoveryCompleted(s.discoveryKey,s.roomId),s.status.isDiscovering=!1,i=!1),!(t||i||(0===s.idleStartTime&&(s.idleStartTime=Date.now()),s.idleDuration=Date.now()-s.idleStartTime,s.idleDuration<this._gcIdleTime))}async _refreshSession(s){let e=!1,t=!1;s.status.isFallback&&(t=Date.now()>=s.fallbackSwarmingStartTime||s.swarmStatus.isServer),s.status.isDiscovering&&(e=Date.now()>=s.discoverySwarmingStartTime||s.swarmStatus.isClient),s.status.isActive&&(e=!0,t=!0);const i=e===s.swarmStatus.isClient,a=t===s.swarmStatus.isServer;if(i&&a)return;const o=s.swarm;this._serverModeAllowed||(t=!1),s.swarmStatus.isClient=e,s.swarmStatus.isServer=t,this.keet.debug.disableSwarming||this.keet.state===r.WAKEUP||(s.swarm=this.swarm.join(s.discoveryKey,{client:e,server:t,limit:s.limit}),o&&await o.destroy())}async refresh(){if(!this.keet.closing&&await this._refreshLock.lock())try{await this._refreshFallbackSwarming(),await this._refreshSessions()}catch(s){this.keet.onerror(s)}finally{this._refreshLock.unlock()}}_createSession(s,e,{roomId:t,limit:i}={}){let r=this.sessions.get(s);return r?(t&&!this.sessionsByRoomId.has(t)&&(r.roomId=t,this.sessionsByRoomId.set(t,r)),r):(r={id:s,roomId:t,discoveryKey:e,swarm:null,lastActiveTime:0,discoveryStartTime:0,discoveryTimeout:0,discoverySwarmingStartTime:0,fallbackSwarmingStartTime:0,idleStartTime:0,idleDuration:0,status:{isActive:!1,isFallback:!1,isDiscovering:!1},limit:i,swarmStatus:{isClient:!1,isServer:!1}},this.sessions.set(s,r),t&&this.sessionsByRoomId.set(t,r),r)}setServerMode(s){this._serverModeAllowed=s}startActiveSwarming(s){const t=e.encode(s),i=this._createSession(t,s);i.status.isActive=!0,i.lastActiveTime=Date.now(),this.refresh()}stopActiveSwarming(s){const t=e.encode(s),i=this.sessions.get(t);i&&(i.status.isActive=!1,this.refresh())}startDiscoverySwarming(s,t){const i=e.encode(s),r=this._createSession(i,s,t);if(r.status.isDiscovering=!0,r.discoveryStartTime=Date.now(),r.discoveryTimeout=this._gcDefaultDiscoveryTimeout,!1!==t.deferSwarming&&this._deferSwarming){const s=Math.floor(.5*Math.random()*this._gcStartDiscoverySwarmingDelay),e=this._gcStartDiscoverySwarmingDelay+s;r.discoverySwarmingStartTime=Date.now()+e}else r.discoverySwarmingStartTime=r.discoveryStartTime;this.refresh()}notifyDiscoveryUpdate(s){const e=this.sessionsByRoomId.get(s);e&&e.status.isDiscovering&&(e.discoveryStartTime=Date.now(),e.discoveryTimeout=this._gcUpdatedDiscoveryTimeout,this.refresh())}async background(){if(this._backgrounded)return;this._backgrounded=!0;const s=[];for(const e of this.sessions.values())e.swarm&&s.push(d(e));await Promise.allSettled(s)}async unbackground(){this._backgrounded&&(this._backgrounded=!1,await this._runOpen())}async suspend(){await this._runClose()}async resume(){await this._runOpen()}async flush(){await this.refresh(),await this.swarm.flush()}};
@holepunchto/keet-core/lib/core/sync/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("hypercore-id-encoding"),t=require("ready-resource"),s=require("./updater"),{roomsStats:a}=require("../contract/stats/local");module.exports=class extends t{constructor(e,t,s,a){super(),this.keet=e,this.view=t,this.base=s,this.changes=a,this._events=[],this._swappedId=!1,this._updater=null}async _close(){this._updater&&await this._updater.close()}async _save(){const t=await this.keet.internalEnterLocalTransaction();try{const s=this._updater.updates.startIdentitySwap,i=this._updater.updates.finishIdentitySwap;if(s){const e=this._updater.currentIdentityInfo;e.swapV2=s,await t.insert("@local/identity",e)}if(i&&(await t.insert("@local/identity",i),this._swappedId=!0),this._updater.updates.contacts)for(const e of this._updater.updates.contacts)await t.insert("@local/contacts",e);if(this._updater.updates.sharedPreferences)for(const s of this._updater.updates.sharedPreferences){const a=await t.get("@local/room-preferences",s);await t.insert("@local/room-preferences",s);const i=await t.get("@local/rooms",s);i&&(i.preferences=s.status,await t.insert("@local/rooms",i)),s.status.isActive&&this._events.push({type:"recent-rooms-changed",args:["changed",0,e.encode(s.roomKey)]});const r=!1===a?.status.isFavorite&&s.status.isFavorite,o=!0===a?.status.isFavorite&&!s.status.isFavorite;r||o?this._events.push({type:"favorite-rooms-changed",args:[o?"removed":"added",0,e.encode(s.roomKey)]}):s.status.isFavorite&&s.status.isActive&&this._events.push({type:"favorite-rooms-changed",args:["changed",0,e.encode(s.roomKey)]})}if(this._updater.updates.cache){const e=this._updater.updates.cache;e.device&&await t.insert("@local/devices",{roomKey:this.base.key,device:e.device}),e.member&&await t.insert("@local/members",e.member)}const r=await t.get("@local/rooms",this._updater.roomInfo);if(!r){const e=await t.get("@local/room-preferences",this._updater.roomInfo);e&&(this._updater.roomInfo.preferences=e.status)}await t.insert("@local/rooms",this._updater.roomInfo),await a(t,this._updater.roomInfo,r),await t.flush()}finally{await this.keet.internalExitLocalTransaction()}}async _dispatch(){const e=this._updater.updates.dispatches;if(e&&0!==e.length)try{await this.keet.dispatchBatch(this.base.id,e)}catch(e){this.keet.onerror(e)}}async _profileDispatch(){if(!this._updater.currentIdentityInfo)return;const t=this._updater.updates.profileDispatches;if(t&&0!==t.length)try{const s=e.encode(this._updater.currentIdentityInfo.privateProfileKey);await this.keet.dispatchBatch(s,t)}catch(e){this.keet.onerror(e)}}_generateEvents(){this._events.push({type:"room-changed",args:[this.base.id]});const{roomKey:t,discoveryKey:s,timestamps:a}=this._updater.roomInfo,i=a.latestChatMessage||a.latestSync,r=this._updater.roomInfo&&!this._updater.currentRoomInfo,o=!this._updater.roomInfo.status.isRemoved&&this._updater.currentRoomInfo?.status.isRemoved,n=this._updater.roomInfo.status.isRemoved&&!this._updater.currentRoomInfo?.status.isRemoved,h=this._updater.roomInfo.status.isRemoved,d=!!this._updater.roomInfo.dm,c=!(h||n||r||o);if((r||o||n)&&(this._events.push({type:"recent-rooms-changed",args:[n?"removed":"added",i,this.base.id]}),this._updater.roomInfo.preferences?.isFavorite&&this._events.push({type:"favorite-rooms-changed",args:[n?"removed":"added",i,this.base.id]}),(r||o)&&this._events.push({type:"room-preferences-changed",args:["join",t,s]}),n&&this._events.push({type:"room-preferences-changed",args:["leave",t,s]}),r&&d&&this._events.push({type:"dm-rooms-changed",args:[]})),this._updater.updates.chat&&(c&&(this._events.push({type:"recent-rooms-changed",args:["changed",i,this.base.id]}),this._updater.roomInfo.preferences?.isFavorite&&this._events.push({type:"favorite-rooms-changed",args:["changed",i,this.base.id]})),h||this._events.push({type:"chat-changed",args:[this.base.id,this._updater.updates.chat.id.index]})),this._updater.isCurrentPrivateProfile&&this._events.push({type:"identity-changed",args:[]}),this._updater.updates.sharedPreferences)for(const{roomKey:t,status:s}of this._updater.updates.sharedPreferences)s.isFullyMuted&&this._events.push({type:"room-preferences-changed",args:["mute",t]}),s.isFullyMuted||this._events.push({type:"room-preferences-changed",args:["unmute",t]}),this._events.push({type:"room-changed",args:[e.encode(t)]});if(this._updater.updates.activeCallSynced){const e=this._updater.updates.activeCall,t=this._updater.updates.activeCallDevice;this._events.push({type:"call-changed",args:[this.base.id,e,t]})}}async _runPostUpdate(){try{if(await this.base.update(),this.keet.closing)return;if(await this._dispatch(),this.keet.closing)return;if(await this._profileDispatch(),this.keet.closing)return;if(this._updater.updates.shouldUpgrade){const t=e.encode(this._updater.roomInfo.roomKey);await this.keet.internalDispatchUpgrade(t,this.keet.abi.autoupgrade)}if(this._updater.updates.tasks)for(const e of this._updater.updates.tasks)e.runBackground();for(const{type:e,args:t}of this._events)this.keet.emit(e,...t);this._updater.changes.logout&&await this.keet.logout(),this._updater.updates.unreadKeys&&await this.keet.internalRefreshUnreads();for(const{type:e,value:t}of this._updater.events){const s={roomKey:this.base.key,roomId:this.base.id,roomInfo:this._updater.roomInfo,value:t};this.keet.emit(e,s)}}catch(e){this.keet.onerror(e)}}async run(){try{if(this._updater=new s(this.keet,this.view,this.base,this.changes),!await this._updater.run()||this.closing)return;if(await this._save(),this.closing)return;this._swappedId&&this.keet.internalSafeSwapPrivateProfiles(),this._generateEvents()}finally{await this.close()}}runPostUpdate(){queueMicrotask(this._runPostUpdate.bind(this))}};
@holepunchto/keet-core/lib/core/sync/loader.js +1 -0
……@@ -0,0 +1 @@
1const t=require("ready-resource"),e=require("hypercore-id-encoding"),i=require("safety-catch"),a=require("b4a"),{KeetContractError:s}=require("../contract/errors"),{contract:{hyperschema:{getEnum:n}}}=require("../../../schema/spec"),o=n("@keet/room-type"),{restoreAvatar:l,restoreFile:r}=require("../contract/avatars"),{getMemberForDeviceKey:h}=require("../contract/query"),{getCall:d}=require("../../api/v1/helpers"),g=20;module.exports=class extends t{constructor(t,e,a){super(),this.local=t,this.view=e,this.base=a,this.shared=0,this.syncTime=null,this.output=null,this.input=null,this.inputBlobs=null,this.core=null,this._loadingLocalPrivateProfileInfo=null,this._loadingLocalIdentityInfo=null,this._loadingLocalRoomInfo=null,this._loadingLatestMessages=null,this._loadingLatestMembers=null,this._loadingDigest=null,this._loadingConfig=null,this._loadingCapabilities=null,this._loadingIdentity=null,this._loadingPrimaryThread=null,this._loadingLastMessage=null,this._loadingDMMembers=null,this._loadingReadLengths=null,this._loadingChatChanges=null,this._loadingContactChanges=null,this._loadingSharedRoomChanges=null,this._loadingPendingInvitations=null,this.ready().catch(i)}_close(){return Promise.all([this.input.close(),this.output.close(),this.inputBlobs.close()])}async _open(){this.view.db.update(),this.output=this.local.snapshot(),this.input=this.view.db.snapshot(),this.inputBlobs=this.view.blobs.snapshot(),this.core=this.input.engine.db.core,this.syncTime=Date.now()}async _getChangeRange(t){const e=await this.input.findOne(t,{reverse:!0,checkout:this.shared});return e?{gt:{clock:e.clock}}:{}}async _runLoadConfig(){const[t,e,i,s]=await Promise.all([this.loadLocalRoomInfo(),this.loadDigest(),this.loadSelfMember(),this.input.get("@keet/room-config")]);let n=s?.title||null,r=s?.avatar||null;if(i&&e?.settings.roomType===o.DirectMessage){const t=await this.input.find("@keet/members").toArray();for(const e of t)if(!a.equals(i.key,e.key)){n=e.profile.displayName,r=e.profile.avatar;break}}if(r){const e=t?.config?.avatar?.small?.hash,i=r?.small?.hash;e&&i&&a.equals(e,i)?s.avatar=t.config.avatar:await l(this.inputBlobs,r)}return{...s,title:n,avatar:r}}async _runLoadSelfMember(){const t=await h(this.input,this.base.local.key);if(!t)return null;const e=await this.input.get("@keet/member-proofs",{key:t.key}),i={...t,proofs:e};return i?.profile.avatar?(await l(this.inputBlobs,i.profile.avatar),i):i}async _runLoadLastMessage(){const t=await this.loadPrimaryThread();if(!t||0===t.count)return null;const e={thread:0,index:t.count-1};return this.loadMessage(e)}async _runLoadDMMembers(){const[t,e]=await Promise.all([this.loadDigest(),this.loadSelfMember()]);if(!t||!e||t.settings.roomType!==o.DirectMessage)return[];const i=await this.input.find("@keet/members").toArray(),s=[];for(const t of i)a.equals(t.key,e.key)||s.push(t.key);return s}async _runLoadChatChanges(){const[t,e]=await Promise.all([this.loadLocalRoomInfo(),this.loadLastMessage()]),i=t?.lastMessage?.oplog.key,s=t?.lastMessage?.oplog.seq,n=e?.oplog.key,o=e?.oplog.seq;let l=!1;return l=!i||!(a.equals(i,n)&&s===o),{lastMessage:e,changed:l}}async _runLoadLatestMessages(){const t=await this.loadLocalIdentityInfo();return t&&a.equals(this.base.key,t.privateProfileKey)?[]:this.input.find("@keet/chat",{gte:{id:{thread:0}},lte:{id:{thread:0}},limit:g,reverse:!0}).toArray()}async _loadFiles(t){const e=await Promise.all(t.map(t=>this.input.get("@keet/files",{id:t})));return await Promise.all(e.map(async t=>(await r(this.inputBlobs,t.file.preview),t.file)))}async _loadMemberForDeviceKey(t,i,a){const s=await h(this.input,a);if(!s)return null;const n=e.encode(s.key);t.has(n)||(t.add(n),s.avatar&&await l(this.inputBlobs,s.avatar),i.push(s))}async _runLoadLatestMembers(){const t=await this.loadLatestMessages();if(this.closing||!t.length)return[];const i=[],a=[],s=new Set,n=new Set;for(const o of t){const t=e.encode(o.oplog.key);s.has(t)||(s.add(t),a.push(this._loadMemberForDeviceKey(n,i,o.oplog.key)))}return await Promise.all(a),i}async _runLoadSharedRoomChanges(){const t=await this._getChangeRange("@keet-private-id/rooms-by-clock"),e=[];for await(const i of this.input.find("@keet-private-id/rooms-by-clock",t))e.push(i);return e}async _runLoadContactChanges(){const t=await this._getChangeRange("@keet-private-id/contacts-by-clock"),e=[];for await(const i of this.input.find("@keet-private-id/contacts-by-clock",t))e.push(i);return e}_runLoadPendingInvitations(){return this.input.find("@keet-private-id/pending-invitations").toArray()}async _runLoadLocalPrivateProfileInfo(){const t=await this.loadLocalIdentityInfo();return this.closing||!t?null:this.output.get("@local/rooms",{roomKey:t.privateProfileKey})}_runLoadReadLengths(){return this.input.find("@keet/read-lengths").toArray()}_runLoadActiveCall(){return d(this.input,"@keet/active-calls-by-timestamp")}_runLoadActiveCallDevice(t,e){return this.input.get("@keet/call-devices",{callKey:t,deviceKey:e})}loadLocalRoomInfo(){return this._loadingLocalRoomInfo||(this._loadingLocalRoomInfo=this.output.get("@local/rooms",{roomKey:this.base.key}),this._loadingLocalRoomInfo.catch(i)),this._loadingLocalRoomInfo}loadLocalPrivateProfileInfo(){return this._loadingLocalPrivateProfileInfo||(this._loadingLocalPrivateProfileInfo=this._runLoadLocalPrivateProfileInfo(),this._loadingLocalPrivateProfileInfo.catch(i)),this._loadingLocalPrivateProfileInfo}loadLocalIdentityInfo(){return this._loadingLocalIdentityInfo||(this._loadingLocalIdentityInfo=this.output.get("@local/identity"),this._loadingLocalIdentityInfo.catch(i)),this._loadingLocalIdentityInfo}loadDigest(){return this._loadingDigest||(this._loadingDigest=this.input.get("@keet/system-digest"),this._loadingDigest.catch(i)),this._loadingDigest}loadConfig(){return this._loadingConfig||(this._loadingConfig=this._runLoadConfig(),this._loadingConfig.catch(i)),this._loadingConfig}loadCapabilities(){return this._loadingCapabilities||(this._loadingCapabilities=this.input.get("@keet/room-capabilities"),this._loadingCapabilities.catch(i)),this._loadingCapabilities}loadPrimaryThread(){return this._loadingPrimaryThread||(this._loadingPrimaryThread=this.input.get("@keet/threads",{id:0}),this._loadingPrimaryThread.catch(i)),this._loadingPrimaryThread}loadSelfDevice(){return this._loadingSelfDevice||(this._loadingSelfDevice=this.input.get("@keet/devices",{key:this.base.local.key}),this._loadingSelfDevice.catch(i)),this._loadingSelfDevice}loadSelfMember(){return this._loadingSelfMember||(this._loadingSelfMember=this._runLoadSelfMember(),this._loadingSelfMember.catch(i)),this._loadingSelfMember}loadLastMessage(){return this._loadingLastMessage||(this._loadingLastMessage=this._runLoadLastMessage(),this._loadingLastMessage.catch(i)),this._loadingLastMessage}loadDMMembers(){return this._loadingDMMembers||(this._loadingDMMembers=this._runLoadDMMembers(),this._loadingDMMembers.catch(i)),this._loadingDMMembers}loadIdentity(){return this._loadingIdentity||(this._loadingIdentity=this.input.get("@keet-private-id/identity"),this._loadingIdentity.catch(i)),this._loadingIdentity}loadChatChanges(){return this._loadingChatChanges||(this._loadingChatChanges=this._runLoadChatChanges(),this._loadingChatChanges.catch(i)),this._loadingChatChanges}loadContactChanges(){return this._loadingContactChanges||(this._loadingContactChanges=this._runLoadContactChanges(),this._loadingContactChanges.catch(i)),this._loadingContactChanges}loadSharedRoomChanges(){return this._loadingSharedRoomChanges||(this._loadingSharedRoomChanges=this._runLoadSharedRoomChanges(),this._loadingSharedRoomChanges.catch(i)),this._loadingSharedRoomChanges}loadPendingInvitations(){return this._loadingPendingInvitations||(this._loadingPendingInvitations=this._runLoadPendingInvitations(),this._loadingPendingInvitations.catch(i)),this._loadingPendingInvitations}loadLatestMessages(){return this._loadingLatestMessages||(this._loadingLatestMessages=this._runLoadLatestMessages(),this._loadingLatestMessages.catch(i)),this._loadingLatestMessages}loadLatestMembers(){return this._loadingLatestMembers||(this._loadingLatestMembers=this._runLoadLatestMembers(),this._loadingLatestMembers.catch(i)),this._loadingLatestMembers}loadReadLengths(){return this._loadingReadLengths||(this._loadingReadLengths=this._runLoadReadLengths(),this._loadingReadLengths.catch(i)),this._loadingReadLengths}loadActiveCall(){return this._loadingActiveCall||(this._loadingActiveCall=this._runLoadActiveCall(),this._loadingActiveCall.catch(i)),this._loadingActiveCall}loadActiveCallDevice(t,e){return this._loadingActiveCallDevice||(this._loadingActiveCallDevice=this._runLoadActiveCallDevice(t,e),this._loadingActiveCallDevice.catch(i)),this._loadingActiveCallDevice}loadPreferences(){return this._loadingPreferences||(this._loadingPreferences=this.local.get("@local/room-preferences",{roomKey:this.base.key}),this._loadingPreferences.catch(i)),this._loadingPreferences}async loadMessage(t){const[e,i]=await Promise.all([this.input.get("@keet/chat",{id:t}),this.input.get("@keet/reaction-digests",{id:t})]);if(!e)return null;const a=e.message?.files,n=!!a&&a.length>0,[o,r,d]=await Promise.all([this.input.get("@keet/devices",{key:e.oplog.key}),h(this.input,e.oplog.key),n?this._loadFiles(a):null]);if(!r)throw s.CORRUPT("Last chat message does not have a member");return r.profile.avatar&&await l(this.inputBlobs,r.profile.avatar),d&&(e.message.files=d),{message:e,reactions:i,device:o,member:r}}};
@holepunchto/keet-core/lib/core/sync/updater.js +1 -0
……@@ -0,0 +1 @@
1const e=require("ready-resource"),t=require("safety-catch"),s=require("b4a"),i=require("./loader"),{KeetContract:a}=require("../contract"),{contract:{hyperschema:{getEnum:o}}}=require("../../../schema/spec"),{verifyIdentityProofs:n,generateRoomCapabilities:r,generateIdentityPairingName:l}=require("../invitations"),{RoomStatus:h}=require("../contract/identity/private"),{KeetErrorV2:c}=require("../../errors"),d=o("@keet/room-type"),u="insert",m=16;function f(e,t){return s.equals(e.oplog.key,t.oplog.key)&&e.oplog.seq===t.oplog.seq}module.exports=class extends e{constructor(e,t,s,i){super(),this.keet=e,this.swarm=e.swarm,this.local=e.local,this.view=t,this.base=s,this.changes=i,this.isCurrentPrivateProfile=!1,this.currentPrivateProfileInfo=null,this.currentIdentityInfo=null,this.currentWriterInfo=null,this.currentRoomInfo=null,this.roomInfo=null,this.updated=!1,this.updates={cache:null,tasks:null,contacts:null,dispatches:null,shouldUpgrade:!1,profileDispatches:null,unreadKeys:!1,activeCall:null,activeCallDevice:null,activeCallSynced:!1,sharedRooms:null,sharedPreferences:null,pendingInvitations:null,startIdentitySwap:null,attemptIdentitySwap:null,finishIdentitySwap:null,logout:!1},this.events=[],this._loader=null,this._running=null}_open(){return this._loader=new i(this.local,this.view,this.base),this._loader.ready()}async _close(){this._loader&&await this._loader.close()}async _syncDigest(e){if(e||(e=await this._loader.loadDigest()),e){if(!this.keet.isValidBuildType(e))throw c.INVALID_BUILD_TYPE();this.events.push({type:"v2:room-digest-changed",value:e}),this.roomInfo.digest=e}}async _syncConfig(){const e=await this._loader.loadConfig();e&&(this.events.push({type:"v2:room-config-changed",value:e}),this.roomInfo.config=e)}async _syncRoomCapabilities(e){e||(e=await this._loader.loadCapabilities()),e&&(this.roomInfo.seed&&s.equals(this.roomInfo.seed,e.seed)||(this.events.push({type:"v2:room-capabilities-changed",value:e}),this.roomInfo.seed=e.seed,this.roomInfo.capabilities=r(this.base.key,e.seed)))}async _syncSelf(){const[e,t,s]=await Promise.all([this._loader.loadDigest(),this._loader.loadSelfDevice(),this._loader.loadSelfMember()]);if(this.roomInfo.selfDevice=t,this.roomInfo.selfMember=s,!e||e.settings.roomType!==d.DirectMessage)return;const[i,a]=await Promise.all([this._loader.loadConfig(),this._loader.loadDMMembers()]);this.roomInfo.config=i,this.roomInfo.dm=a}async _syncSelfMember(e){if(this.events.push({type:"v2:room-member-changed",value:e}),!e||s.equals(e.key,this.currentIdentityInfo.publicKey))return this._syncSelf()}async _syncDevice(e){if(this.events.push({type:"v2:room-device-changed",value:e}),!e||s.equals(e.key,this.base.local.key))return this._syncSelf()}_setLastMessage(e){this.events.push({type:"v2:room-last-message-changed",value:e}),this.roomInfo.lastMessage=e.message,this.roomInfo.lastMember=e.member,this.roomInfo.lastMessageReactions=e.reactions,this.updates.cache={member:e.member,device:e.device};const t=this.currentRoomInfo?.lastMessage;t&&f(t,e.message)||(this.updates.chat=e.message)}async _syncLastMessage(){const e=await this._loader.loadLastMessage();e&&this._setLastMessage(e)}async _syncMessage(e){if(!e)return;const[t,s]=await Promise.all([this._loader.loadPrimaryThread(),this._loader.loadMessage(e.id)]);0===e.id.thread&&e.id.index===t.count-1&&this._setLastMessage(s),this.events.push({type:"v2:room-chat-changed",value:s})}async _syncReactions(e){const t=await this._loader.input.get("@keet/chat",{id:e.id});this.events.push({type:"v2:room-reactions-changed",value:{id:t.oplog,reactions:e}})}_syncJoinRequests(e){this.events.push({type:"v2:room-join-requests-changed",value:e})}async _syncReadLengths(){const e=await this._loader.loadReadLengths();e?.length&&(this.events.push({type:"v2:read-lengths-changed",value:e}),this.roomInfo.readLengths=e)}async _syncActiveCall(){this.updates.activeCallSynced=!0,this.roomInfo.activeCall=null;const e=await this._loader.loadActiveCall();if(e){const t=e.callKey,s=this.base.local.key,i=await this._loader.loadActiveCallDevice(t,s),a=i?i.deviceKey:null;this.updates.activeCallDevice=i,this.roomInfo.activeCall={callKey:t,selfDeviceKey:a}}this.updates.activeCall=e}async _syncPreferences(){const e=await this._loader.loadPreferences();e&&(this.roomInfo.preferences=e.status)}async _syncStats(e){e||(e=await this._loader.loadPrimaryThread()),e&&(this.events.push({type:"v2:room-stats-changed",value:e}),this.roomInfo.stats=e.stats)}async _syncRoomIdentity(e){e||(e=await this._loader.loadIdentity()),e&&(this.events.push({type:"v2:room-identity-changed",value:e}),this.roomInfo.identity=e)}async _syncUnreadAnchors(){this.updates.unreadKeys=!0}async _syncMember(e){const i=[this._syncSelfMember(e)];this.roomInfo.dm?.length&&i.push(this._syncConfig().catch(t));const{lastMember:a}=this.roomInfo;a&&s.equals(a.key,e.key)&&i.push(this._syncLastMessage().catch(t)),await Promise.all(i)}async _incrementalRoomInfoLoad(e,s){const i=[],a=["@keet/calls","@keet/call-devices","@keet/call-members"];for await(const{type:o,collection:n,value:r}of this._loader.input.changes({gte:e,lt:s})){if(!a.includes(n)&&o!==u)continue;let e=null;switch(n){case"@keet/system-digest":e=this._syncDigest(r);break;case"@keet/room-config":e=this._syncConfig();break;case"@keet/room-capabilities":e=this._syncRoomCapabilities(r);break;case"@keet/members":e=this._syncMember(r);break;case"@keet/devices":e=this._syncDevice(r);break;case"@keet/chat":e=this._syncMessage(r);break;case"@keet/reaction-digests":e=this._syncReactions(r);break;case"@keet/threads":e=this._syncStats(r);break;case"@keet-private-id/identity":e=this._syncRoomIdentity(r);break;case"@keet/join-requests":e=this._syncJoinRequests(r);break;case"@keet-private-id/unreads-v2":case"@keet-private-id/unreads":e=this._syncUnreadAnchors();break;case"@keet/read-lengths":e=this._syncReadLengths();break;case"@keet/calls":case"@keet/call-devices":case"@keet/call-members":e=this._syncActiveCall();break;default:continue}e&&(e.catch(t),i.push(e))}return await Promise.all(i),!!this.roomInfo.digest}async _fullRoomInfoLoad(){return this.events.push({type:"v2:room-fast-forward"}),this.roomInfo={roomKey:this.base.key,discoveryKey:this.base.discoveryKey,encryptionKey:this.base.encryptionKey,digest:null,stats:null,fork:0,length:0,timestamps:{creation:0,latestActivity:0,latestChatMessage:0},status:null,mailbox:null,selfDevice:null,selfMember:null,config:null,capabilities:null,identity:null,lastMessage:null,lastMember:null,lastMessageReactions:null,dm:null,activeCall:null,preferences:null},await Promise.all([this._syncDigest(null),this._syncRoomCapabilities(null),this._syncDevice(null),this._syncMember(null),this._syncStats(null),this._syncRoomIdentity(null),this._syncUnreadAnchors(),this._syncConfig(),this._syncReadLengths(),this._syncLastMessage(),this._syncActiveCall(),this._syncPreferences()]),!!this.roomInfo.digest}async _loadPrivateProfileChanges(){let e=null;if(this.isCurrentPrivateProfile&&this.roomInfo.selfDevice){const t=this.changes.get(a.DB_VIEW_NAME);this._loader.shared=this.currentRoomInfo?.selfDevice?t.shared:1,e=await Promise.all([this._loader.loadContactChanges(),this._loader.loadSharedRoomChanges(),this._loader.loadPendingInvitations()])}e&&(this.updates.contacts=e[0],this.updates.sharedRooms=e[1],this.updates.pendingInvitations=e[2])}async _loadLocalInfo(){const[e,t,i]=await Promise.all([this._loader.loadLocalRoomInfo(),this._loader.loadLocalIdentityInfo(),this._loader.loadLocalPrivateProfileInfo()]);this.currentRoomInfo=e,this.roomInfo={...this.currentRoomInfo},this.currentIdentityInfo=t,this.currentPrivateProfileInfo=i,this.isCurrentPrivateProfile=!!t&&s.equals(t.privateProfileKey,this.base.key);const a=this.currentIdentityInfo?.swapV2;return!a||!s.equals(a.privateProfileKey,this.base.key)||(this.updates.attemptIdentitySwap=a,!0)}async _load(){let[e,t]=await Promise.all([this._loadLocalInfo(),this.base.system.get(this.base.local.key)]);if(this.closing||!e)return!1;if(this.updates.attemptIdentitySwap){const e=this.updates.attemptIdentitySwap,t=e.writerKey,[i,a,o]=await Promise.all([this._loader.input.get("@keet-private-id/device-identities",{deviceKey:t}),this._loader.input.get("@keet/devices",{key:t}),this.local.get("@local/rooms",{roomKey:this.base.key})]);if(!i||!a||!n(e,i))return!1;const r=i.deviceProof,h=l(e.publicKey),c=await this.keet.store.createKeyPair(h);if(!s.equals(c.publicKey,e.devicePublicKey))return!1;this.isCurrentPrivateProfile=!0,this.currentPrivateProfileInfo=o,this.currentIdentityInfo=this.currentIdentityInfo.swapV2,this.updates.finishIdentitySwap={publicKey:this.updates.attemptIdentitySwap.publicKey,privateProfileKey:this.base.key,deviceKeyPair:c,deviceProof:r,status:{isConfirmed:!0}}}this.currentWriterInfo=t;let i=null;if(this.changes&&this.currentRoomInfo){const e=this.changes.get("_system");if(e.to-e.shared<m){const e=this.changes.get("keet/v3/db");i={from:e.shared,to:e.to}}}if(e=!1,e=i?await this._incrementalRoomInfoLoad(i.from,i.to):await this._fullRoomInfoLoad(),!e)return!1;this.events.push({type:"v2:room-changed"}),this.roomInfo.length=this._loader.core.length,this.roomInfo.fork=this._loader.core.fork,this.isCurrentPrivateProfile&&await this._loadPrivateProfileChanges();const a=!!this.roomInfo.selfMember?.status.isRemoved,o=!!this.roomInfo.selfMember?.status.isActive,r=!!this.roomInfo.selfDevice?.status.isActive,h=a||!r&&!!this.currentWriterInfo,c=this.base.writable&&r&&o,d=!!this.roomInfo.identity;return this.roomInfo.status={isWritable:c,isReadable:!0,isPrivateProfile:d,isRemoved:h},this.roomInfo.timestamps.latestSync=Date.now(),this.roomInfo.timestamps.creation=this.roomInfo.digest.creationTime,this.roomInfo.lastMessage&&(this.roomInfo.timestamps.latestChatMessage=this.roomInfo.lastMessage.timestamp),!0}_shouldUpgrade(){return this.roomInfo.selfMember.status.isModerator&&!(this.roomInfo.digest.abi.version>=this.keet.abi.autoupgrade)||null}_generateMemberUpdate(){const e=this.currentPrivateProfileInfo.selfMember,t=this.roomInfo.selfMember,s=t.profile.timestamp>0,i=e.profile.timestamp<=t.profile.timestamp;if(!e?.profile||s&&i)return null;const a={identity:this.currentIdentityInfo,privateProfile:this.currentPrivateProfileInfo};return{type:"@keet/update-member",op:{member:this.keet.internalGetMemberUpdate(a)}}}_generatePrivateProfileDispatches(){this.updates.profileDispatches=[],this.updates.profileDispatches.push({type:"@keet-private-id/update-room-status",op:{roomKey:this.roomInfo.roomKey,key:h.IsActive,status:{isActive:!1}}})}_generateDispatches(){if(this.updates.dispatches=[],this.updates.shouldUpgrade=this._shouldUpgrade(),!this.currentPrivateProfileInfo?.selfMember)return;const e=this._generateMemberUpdate();e&&this.updates.dispatches.push(e)}_generateTasks(){if(this.updates.sharedRooms){this.updates.tasks=[],this.updates.sharedPreferences=[];for(const e of this.updates.sharedRooms){const t=e.mailbox;if(e.identitySwapV2){this.updates.startIdentitySwap={...e.identitySwapV2,privateProfileKey:e.roomKey},this.updates.tasks=[this.keet.tasks.joinRoomKeys(t,{keys:e})];break}e.status.isActive?this.updates.tasks.push(this.keet.tasks.joinRoomKeys(t,{keys:e})):this.updates.tasks.push(this.keet.tasks.leaveRoom(t,{roomKey:e.roomKey})),this.updates.sharedPreferences.push({roomKey:e.roomKey,status:e.status})}if(!this.updates.startIdentitySwap&&this.updates.pendingInvitations)for(const e of this.updates.pendingInvitations)this.updates.tasks.push(this.keet.tasks.joinRoomInvitation(e.mailbox,{invitation:e}))}}async _maybeUpdateOpenRooms(e){try{const t=this.currentRoomInfo?.selfMember?.profile.timestamp||0;if(!this.roomInfo?.selfMember||t>=this.roomInfo.selfMember.profile.timestamp)return;const i={profile:this.roomInfo.selfMember.profile,attestation:{memberKey:this.roomInfo.selfMember.key,proof:this.roomInfo.selfMember.proofs.profileAttestation}},a=[];for(const t of this.keet.rooms.values())s.equals(t.key,e)||a.push(t.dispatch("@keet/update-member",{member:i}));await Promise.allSettled(a)}catch(e){this.keet.onerror(e)}}async _run(){if(this.opened||await this.ready(),!await this._load()||this.closing)return!1;this.roomInfo.status.isWritable&&this._generateDispatches(),this.isCurrentPrivateProfile&&(this.roomInfo.selfDevice?.status.isActive?(this._generateTasks(),this._maybeUpdateOpenRooms(this.base.key)):this.changes.logout=!0);const e=this.roomInfo.selfMember,t=this.currentRoomInfo?.selfMember;return e?.status.isRemoved&&!t?.status.isRemoved&&this._generatePrivateProfileDispatches(),!0}run(){return this._running||(this._running=this._run(),this._running.catch(t)),this._running}};
@holepunchto/keet-core/lib/core/tasks/contacts/request.js +1 -0
……@@ -0,0 +1 @@
1const e=require("hypercore-crypto"),t=require("signal-promise"),i=require("safety-catch"),{Task:o}=require("../task"),{restoreAvatar:s}=require("../../contract/avatars"),{contract:{hyperschema:{getEnum:r}}}=require("../../../../schema/spec"),{getWriterKey:a,createContactRequestOperation:n,generateRoomCapabilities:m,generatePairingCapabilities:h}=require("../../invitations"),l=r("@keet/room-type");module.exports=class extends o{constructor(e){super(e);const t=this.description.sendContactRequest;this._roomKey=t.roomKey,this._memberKey=t.memberKey,this._message=t.message,this._contactInfo=t.contactInfo,this._member=null,this._contact=null,this._writerInfo=null,this._contactRoomInfo=null,this._privateContactRoom=null,this._selfMember=null,this._targetMember=null,this._roomMailbox=null,this._memberMailbox=null,this._memberMailboxDiscoveryKey=null,this._core=null,this._dmRoom=null,this._memberRoom=null,this._privateProfile=null,this._wakeupSession=null,this._watcher=null,this._privateProfileWatcher=null}async _close(){this._dmRoom&&(this._watcher&&this._dmRoom.db.unwatch(this._watcher),this.keet.internalReleaseRoom(this._dmRoom)),this._memberRoom&&this.keet.internalReleaseRoom(this._memberRoom),this._privateProfile&&(this._privateProfileWatcher&&this._privateProfile.db.unwatch(this._privateProfileWatcher),this.keet.internalReleaseRoom(this._privateProfile)),this._wakeupSession&&this._wakeupSession.destroy()}async _createRoom(){const t=e.keyPair(),i=e.randomBytes(32),o=a(t.publicKey),s=m(o,i),r={identity:this._identityInfo,privateProfile:this._privateProfileInfo},n=this.keet.internalCreateDeviceUpdate(r,o);return this._roomMailbox=s.mailboxKeyPair.publicKey,this._dmRoom=await this.keet.internalCreateRoom({settings:{roomType:l.DirectMessage},initialMembers:[this._selfMember,this._targetMember],bootstrapDevice:n,keyPair:t,seed:i}),this._message&&await this._dmRoom.dispatch("@keet/add-chat-message",{message:{text:this._message}}),!0}async _appendContactRequest(){if(!await this.keet.internalVerifyOptimisticCore(this._core)||this.closing)return;const e={message:this._message,sender:this._selfMember,mailbox:this._roomMailbox,keys:{key:this._dmRoom.key,encryptionKey:this._dmRoom.encryptionKey}},t=n(this._memberMailbox,this._identityInfo,e),i={memberKey:this._memberKey,mailbox:this._memberMailbox,roomKey:this._dmRoom.key,status:{isBlocked:!1}};return await Promise.all([this._core.append(t),this._privateProfile.dispatch("@keet-private-id/add-contact",{contact:i})]),!0}async _loadRequestWriter(){if(this._writerInfo=await this.local.get("@local/writers",{mailbox:this._memberMailbox}),this._writerInfo)return;const t=e.keyPair(),i=a(t.publicKey);this._writerInfo={mailbox:this._memberMailbox,keyPair:t,key:i};const o=await this.keet.internalEnterLocalTransaction();try{await o.insert("@local/writers",this._writerInfo),await o.flush()}finally{await this.keet.internalExitLocalTransaction()}}_getQueryRange(){return{gte:{contact:this._targetMember.attestation.memberKey},lte:{contact:this._targetMember.attestation.memberKey}}}async _load(){if(this.keet.onlineBoot.opened||await this.keet.onlineBoot.ready(),this._identityInfo=await this.local.get("@local/identity"),this.closing)return!1;const e=this._identityInfo.privateProfileKey;if(this._privateProfileInfo=await this.local.get("@local/rooms",{roomKey:e}),this.closing)return!1;if(this._privateProfile=this.keet.internalOpenExistingRoom(e),await this._privateProfile.ready(),this.closing)return!1;let t=!1;return t=this._contactInfo?await this._useContactInfo():await this._useRoomKey(),!(!this._targetMember?.profile?.displayName||(await this._loadRequestWriter(),this.closing||(this._core=this.store.get({keyPair:this._writerInfo.keyPair}),await this._core.ready(),this.closing||(this._privateContactRoom=await this._privateProfile.db.findOne("@keet-private-id/rooms-by-contact",this._getQueryRange()),(!t||this._privateContactRoom)&&(await this._waitForMember(),1)))))}async _useContactInfo(){const e=await this._privateProfile.db.get("@keet-private-id/contacts",{memberKey:this._memberKey});if(this._contact=e,this._memberMailbox=this._contactInfo.profile.mailbox,this._member=null,this._memberProofs=null,this._memberPairingCapabilities=h(this._memberMailbox),this._targetMember={profile:this._contactInfo.profile,attestation:this._contactInfo.attestation},e?.roomKey&&(this._contactRoomInfo=await this._privateProfile.db.get("@keet-private-id/rooms",{roomKey:this._contact.roomKey})),this.closing||this._contactRoomInfo?.status.isActive)return!1;const t=this._privateProfileInfo.selfMember;return this._selfMember={profile:t.profile,attestation:{memberKey:t.key,proof:t.proofs.profileAttestation}},!0}async _useRoomKey(){if(this._memberRoom=this.keet.internalOpenExistingRoom(this._roomKey),await this._memberRoom.ready(),this.closing)return!1;const[e,t,i]=await Promise.all([this._privateProfile.db.get("@keet-private-id/contacts",{memberKey:this._memberKey}),this._memberRoom.db.get("@keet/members",{key:this._memberKey}),this._memberRoom.db.get("@keet/member-proofs",{key:this._memberKey})]);if(this._contact=e,this._member=t,this._memberProofs=i,this._memberMailbox=this._member.profile.mailbox,this._memberPairingCapabilities=h(this._memberMailbox),this.closing||!t||!i)return!1;if(this._targetMember={profile:this._member.profile,attestation:{memberKey:this._member.key,proof:this._memberProofs.profileAttestation}},e?.roomKey&&(this._contactRoomInfo=await this._privateProfile.db.get("@keet-private-id/rooms",{roomKey:this._contact.roomKey})),this.closing||this._contactRoomInfo?.status.isActive)return!1;const o=this._privateProfileInfo.selfMember;return this._selfMember={profile:o.profile,attestation:{memberKey:o.key,proof:o.proofs.profileAttestation}},this._targetMember.profile.avatar&&await s(this._memberRoom.blobs,this._targetMember.profile.avatar),!0}async _waitForMember(){if(!this._dmRoom){const e=this._privateContactRoom?.roomKey||this._contact.roomKey;this._dmRoom=this.keet.internalOpenExistingRoom(e)}this.swarmWorker.startActiveSwarming(this._memberPairingCapabilities.swarmTopic);const e=e=>{this._wakeupSession.announce(e,[{key:this._core.key,length:this._core.length}])};this._wakeupSession=this.keet.protomuxWakeup.session(this._memberMailbox,{discoveryKey:this._memberPairingCapabilities.wakeupTopic,onpeeractive:e});for(const t of this._wakeupSession.peers)t.active&&e(t);this.keet.blindPeering.addCoreBackground(this._core,{target:this._memberMailbox,referrer:this._memberMailbox,priority:1}),this._signal=new t,this._watcher=async()=>{try{const e=this._targetMember.attestation.memberKey;await this._dmRoom.db.findOne("@keet/devices-by-member-key",{gte:{memberKey:e},lte:{memberKey:e}})&&this._signal.notify()}catch(e){i(e)}},this._dmRoom.db.watch(this._watcher),this._watcher(),this._privateProfileWatcher=async()=>{try{const e=await await this._privateProfile.db.get("@keet-private-id/rooms",{roomKey:this._dmRoom.key});e&&!1===e.status.isActive&&this._signal.notify()}catch(e){i(e)}},this._privateProfile.db.watch(this._privateProfileWatcher),this._privateProfileWatcher(),await this._signal.wait(),this.swarmWorker.stopActiveSwarming(this._memberPairingCapabilities.swarmTopic)}async _run(){const e=await this._load();if(this.closing||!e)return;const t=await this._createRoom();if(this.closing||!t)return;const i=await this._appendContactRequest();!this.closing&&i&&await this._waitForMember()}};
@holepunchto/keet-core/lib/core/tasks/identity/restore.js +1 -0
……@@ -0,0 +1 @@
1const e=require("keet-identity-key"),i=require("hypercore-crypto"),t=require("b4a"),{mnemonicToEntropy:r}=require("bip39-mnemonic"),{Task:s}=require("../task"),{getWriterKey:o,generateRoomCapabilities:a}=require("../../invitations"),n=1711547109544;module.exports=class extends s{constructor(e){super(e);const i=this.description.restoreIdentity;this.swarmWorker=this.keet.swarmWorker,this.store=this.keet.store,this._mnemonic=i.mnemonic,this._recover=i.recover,this._profileDiscoveryTimeout=i.profileDiscoveryTimeout,this._discoveredProfileInfo=null,this._currentIdentityInfo=null,this._currentPrivateProfileInfo=null,this._newIdentityInfo=null,this._newPrivateProfile=null,this._newMailbox=null,this._identity=null,this._deviceProof=null,this._deviceKeyPair=null,this._privateProfileKey=null,this._mailboxKey=null,this._joinTask=null}async _close(){this._newPrivateProfile&&this.keet.internalReleaseRoom(this._newPrivateProfile)}_maybeEmitEvents(){this.keet.emit("identity-changed")}async _refreshSwarming(){this._currentPrivateProfileInfo&&this.swarmWorker.stopActiveSwarming(this._currentPrivateProfileInfo.capabilities.swarmTopic),this.swarmWorker.startActiveSwarming(this._newCapabilities.swarmTopic)}async _recoverPrivateProfile(){if(await this.keet.swarm.flush(),await new Promise(e=>setTimeout(e,this._profileDiscoveryTimeout)),!this.keet.discoveryCore.length)return!1;const e=await this.keet.discoveryCore.get(this.keet.discoveryCore.length-1);return!!e&&(this._newIdentityInfo.privateProfileKey=e.key,this._privateProfileKey=e.key,this._mailboxKey=e.mailbox,!0)}async _createInitialKeyPairs(){return this._deviceKeyPair=await this.store.createKeyPair(this._identity.identityPublicKey),!this.closing&&(this._deviceProof=await this._identity.bootstrap(this._deviceKeyPair.publicKey),!this.closing&&(this._newIdentityInfo={publicKey:this._identity.identityPublicKey,privateProfileKey:null,deviceKeyPair:this._deviceKeyPair,deviceProof:this._deviceProof,entropy:r(this._mnemonic),status:{isConfirmed:!1}},!0))}async _createNewPrivateProfile(){const e=i.randomBytes(32),t=i.keyPair(),r=o(t.publicKey),s=a(r,e);this._newCapabilities=s,this._newMailbox=s.mailboxKeyPair.publicKey,this._newIdentityInfo.privateProfileKey=r,this._privateProfileKey=r;const l={identity:this._newIdentityInfo,privateProfile:this._currentPrivateProfileInfo},h=this.keet.internalCreateDeviceUpdate(l,r,{isPrivateProfile:!0}),y=[this.keet.internalCreateMemberUpdate(l,{profile:{mailbox:this._newMailbox}})],c={publicKey:this._identity.identityPublicKey,discoveryCoreKey:this.keet.discoveryCore.key},_=this._identity.getEncryptionKey(r);this._newPrivateProfile=await this.keet.internalCreateRoom({identity:c,isPrivateProfile:!0,bootstrapDevice:h,initialMembers:y,encryptionKey:_,keyPair:t,seed:e});const P=Math.floor((Date.now()-n)/1e3);await this.keet.discoveryCore.truncate(this.keet.discoveryCore.length,P),await this.keet.discoveryCore.append({version:1,timestamp:Date.now(),key:r,mailbox:this._newMailbox})}async _joinExistingPrivateProfile(){const e=this._identity.getEncryptionKey(this._privateProfileKey);this._newPrivateProfile=this.keet.internalOpenRoom(this._privateProfileKey,e,{mailbox:this._mailboxKey}),await this._newPrivateProfile.ready(),await new Promise(e=>setTimeout(e,this._profileDiscoveryTimeout));const[i,r]=await Promise.all([this._newPrivateProfile.db.get("@keet-private-id/identity"),this._newPrivateProfile.db.get("@keet/room-capabilities")]);if(!i||!r||!t.equals(i.publicKey,this._identity.identityPublicKey))return!1;this._newCapabilities=a(this._privateProfileKey,r.seed);const s=this._newCapabilities.mailboxKeyPair;return!!s&&(this._newMailbox=s.publicKey,this._joinTask=await this.keet.tasks.joinRoomKeys(this._privateProfileKey,{keys:{roomKey:this._privateProfileKey,encryptionKey:e,initiator:{key:this._privateProfileKey,length:1},mailbox:this._newCapabilities.mailboxKeyPair.publicKey,status:{isReadOnly:!1}}}),this._newIdentityInfo.status.isConfirmed=!0,!0)}async _load(){const[i,r]=await Promise.all([this.local.get("@local/identity"),e.from({mnemonic:this._mnemonic})]);this._identity=r,this._currentIdentityInfo=i,this._currentPrivateProfileInfo=null,this._currentIdentityInfo&&(this._currentPrivateProfileInfo=await this.local.get("@local/rooms",{roomKey:i.privateProfileKey}));const s=i?.publicKey;return s&&t.equals(s,r.identityPublicKey)}async _save(){const e=await this.keet.internalEnterLocalTransaction();try{await e.insert("@local/identity",this._newIdentityInfo),await e.flush()}finally{await this.keet.internalExitLocalTransaction()}}async _run(){if(await this._load()||this.closing)return;if(!await this._createInitialKeyPairs())return;await this.keet.internalCreateDiscoveryCore(this._identity);let e=!1;if(this._recover&&(e=await this._recoverPrivateProfile(),this.closing))return;let i=!1;if(!e||(i=await this._joinExistingPrivateProfile(),!this.closing)){if(!e||!i){if(this._recover)throw new Error("Could not recover identity from seed phrase");await this._createNewPrivateProfile()}await this._save(),this._joinTask&&await this._joinTask.run(),this._refreshSwarming(),this._maybeEmitEvents()}}};
@holepunchto/keet-core/lib/core/tasks/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("ready-resource"),t=require("hypercore-id-encoding"),s=require("scope-lock"),r=require("resolve-reject-promise"),i=require("safety-catch"),{local:{hyperschema:{getEnum:n}}}=require("../../../schema/spec"),{Task:a}=require("./task"),o=n("@local/tasks"),c=require("./rooms/leave"),l=require("./rooms/clear"),h=require("./rooms/create"),u=require("./identity/restore"),d=require("./pairing/invitation"),k=require("./pairing/response"),p=require("./pairing/keys"),y=require("./contacts/request"),m=require("./testing/fast"),_=require("./testing/slow"),w=require("./testing/error"),g=10;class R extends e{constructor(e,s,n){super(),this.description=n,this.manager=e,this.idx=0,this.id=s,this.keet=this.manager.keet,this.scope=this.description.discoveryKey,this.scopeId=t.encode(this.scope),this.running=null,this.waiting=!0,this.completed=!1,this._task=null;const{resolve:a,reject:o,promise:c}=r();this._resolve=a,this._reject=o,this._promise=c,this._promise.catch(i)}get taskClosing(){return this._task&&this._task.closing}async _close(){this._task&&await this._task.close(),this._reject(new Error("Task was cancelled"))}async _run(){if(this.manager.closing)return;if(await this.manager.internalFlushTasks(),this._task=this._createTask(),await this.manager.internalHandleTaskStarted(this),this.manager.closing)return;this.waiting=!1;let e=null,t=null;try{e=await this._task.run()}catch(e){if(this.manager.closing)return;t=e}finally{this.completed=!0,await this.manager.internalHandleTaskCompleted(this),t?this._reject(t):this._resolve(e)}}_createTask(){switch(this.description.type){case o.RestoreIdentity:return new u(this);case o.CreateRoom:return new h(this);case o.LeaveRoom:return new c(this);case o.ClearRoom:return new l(this);case o.JoinRoomInvitation:return new d(this);case o.JoinRoomKeys:return new p(this);case o.JoinRoomResponse:return new k(this);case o.SendContactRequest:return new y(this);case o.TestFastTask:return new m(this);case o.TestSlowTask:return new _(this);case o.TestErrorTask:return new w(this);default:throw new Error("Unknown task type: "+this.description.type)}}run(){return this.running||(this.running=this._run(),this.running.catch(this.keet.onerror)),this._promise}runBackground(){this.run().catch(this.keet.onerror)}}function f(e){const t={type:e.type,discoveryKey:e.discoveryKey};return{gte:t,lte:t}}module.exports=class extends e{constructor(e){super(),this.keet=e,this.local=this.keet.local,this._flushLock=new s({debounce:!0}),this._scopeLocks=new Map,this._handles=[],this.ready().catch(e.onerror)}async _open(){if(!this.keet.readOnly)for await(const e of this.local.find("@local/tasks")){const t=e.type,s=e.discoveryKey;this._createHandle(t,s,e).runBackground()}}_close(){const e=[];for(const t of this._handles)e.push(t.close());return Promise.allSettled(e)}async flush(){await this.internalFlushTasks();const e=[];for(const t of this._handles)e.push(t.running);await Promise.allSettled(e)}async internalFlushTasks(){if(await this._flushLock.lock()&&!this.closing)try{const e=await this.keet.internalEnterLocalTransaction();try{let t=!1;for(const s of this._handles)s.running&&!s.completed&&(await e.get("@local/tasks-by-type",s.description)||(await e.insert("@local/tasks",s.description),t=!0));t&&await e.flush()}finally{await this.keet.internalExitLocalTransaction()}}catch(e){this.keet.onerror(e)}finally{this._flushLock.unlock()}}_createHandle(e,t,s,r={}){const i={...s,type:e,discoveryKey:t,timestamp:Date.now(),priority:r.priority||g},n=a.getId(i),o=new R(this,n,i);return o.idx=this._handles.push(o)-1,o}async internalHandleTaskStarted(e){let t=this._scopeLocks.get(e.scopeId);t||(t=new s,this._scopeLocks.set(e.scopeId,t)),await t.lock()}async internalHandleTaskCompleted(e){if(this.closing)return;const t=this._handles.pop();t!==e&&(t.idx=e.idx,this._handles[e.idx]=t);const s=await this.keet.internalEnterLocalTransaction();try{for await(const t of s.find("@local/tasks-by-type",f(e.description)))await s.delete("@local/tasks",t);await s.flush()}catch(e){this.keet.onerror(e)}finally{await this.keet.internalExitLocalTransaction()}const r=this._scopeLocks.get(e.scopeId),i=r.waiting.length;r.unlock(),0===i&&this._scopeLocks.delete(e.scopeId)}restoreIdentity(e,t){return this._createHandle(o.RestoreIdentity,e,{restoreIdentity:t})}createRoom(e,t){return this._createHandle(o.CreateRoom,e,{createRoom:t})}leaveRoom(e,t){return this._createHandle(o.LeaveRoom,e,{leaveRoom:t})}clearRoom(e,t){return this._createHandle(o.ClearRoom,e,{clearRoom:t})}joinRoomInvitation(e,t){return this._createHandle(o.JoinRoomInvitation,e,{joinRoomInvitation:t})}joinRoomKeys(e,t){return this._createHandle(o.JoinRoomKeys,e,{joinRoomKeys:t})}joinRoomResponse(e,t){return this._createHandle(o.JoinRoomResponse,e,{joinRoomResponse:t})}sendContactRequest(e,t){return this._createHandle(o.SendContactRequest,e,{sendContactRequest:t})}testFastTask(e){return this._createHandle(o.TestFastTask,e)}testSlowTask(e){return this._createHandle(o.TestSlowTask,e)}testErrorTask(e){return this._createHandle(o.TestErrorTask,e)}};
@holepunchto/keet-core/lib/core/tasks/pairing/invitation.js +1 -0
……@@ -0,0 +1 @@
1const i=require("b4a"),t=require("safety-catch"),e=require("signal-promise"),{Task:s}=require("../task"),{getInvitationId:a,generatePairingCapabilities:o,generateRoomPairingName:n,createInvitationJoinOperation:r}=require("../../invitations");module.exports=class extends s{constructor(i){super(i);const t=this.description.joinRoomInvitation;this._invitation=t.invitation,this._initiator=t.invitation.initiator,this._inviter=t.invitation.inviter,this._identity=t.invitation.identity,this._mailboxPublicKey=t.invitation.mailbox,this._responseKeyPair=t.invitation.responseKeyPair,this._invitationSeed=this._invitation.invitationSeed,this._capabilities=o(this._mailboxPublicKey),this._invitationId=a(this._invitationSeed),this._roomInfo=null,this._sharedRoomInfo=null,this._writerInfo=null,this._identityInfo=null,this._privateProfileInfo=null,this._room=null,this._core=null,this._responseCore=null,this._wakeupSession=null,this._privateProfile=null,this._signal=null,this._watcher=null}async _close(){this._signal&&this._signal.notify(new Error("Invitation join task closed before resolving")),this._watcher&&this._privateProfile.db.unwatch(this._watcher),this._wakeupSession&&(this.swarmWorker.stopActiveSwarming(this._capabilities.swarmTopic),this._wakeupSession.destroy()),this._core&&await this._core.close(),this._responseCore&&await this._responseCore.close(),this._room&&this.keet.internalReleaseRoom(this._room),this._privateProfile&&this.keet.internalReleaseRoom(this._privateProfile)}_samePendingInvitation(t){return i.equals(t.id,this._invitationId)&&i.equals(t.responseKeyPair.publicKey,this._responseKeyPair.publicKey)}async _appendJoinRequest(){const i={key:this._core.key,responsePublicKey:this._responseKeyPair.publicKey};if(await this.local.get("@local/writer-appends",i))return;const t={identity:this._identityInfo,privateProfile:this._privateProfileInfo},e={device:this.keet.internalCreateDeviceUpdate(t,this._core.key,{isPrivateProfile:!!this._identity,buildType:this._invitation.buildType}),member:this.keet.internalGetMemberUpdate(t)};let s=null;this._identity&&(s={devicePublicKey:this._identity.devicePublicKey});const a=this.keet.internalGetHeads(this._inviter,this._room),o=r(this._core.key,this._mailboxPublicKey,this._responseKeyPair,this._invitationSeed,e,{identity:s,heads:a});if(await this.keet.internalAppendOptimisticOperation(this._core.key,o),this.closing)return;const n=await this.keet.internalEnterLocalTransaction();try{await n.insert("@local/writer-appends",i),await n.flush()}finally{await this.keet.internalExitLocalTransaction()}}async _waitForResponse(){this._responseCore=this.store.get({keyPair:this._responseKeyPair,writable:!1}),await this._responseCore.ready();const i=this._privateProfileInfo.capabilities.mailboxKeyPair.publicKey;if(this.keet.blindPeering.addCoreBackground(this._responseCore,{target:i,referrer:i,priority:1}),this.closing)return;const t=i=>{this._wakeupSession.announce(i,[{key:this._core.key,length:this._core.length}])};this._wakeupSession=this.keet.protomuxWakeup.session(this._mailboxPublicKey,{discoveryKey:this._capabilities.wakeupTopic,onpeeractive:t});for(const i of this._wakeupSession.peers)i.active&&t(i);this.swarmWorker.startActiveSwarming(this._capabilities.swarmTopic),this.keet.discovery&&this.keet.discovery.announce(this._capabilities.discoveryKeyPair);try{await this._responseCore.get(0)}catch(i){if(this.closing)return;throw i}this.closing||(this.swarmWorker.stopActiveSwarming(this._capabilities.swarmTopic),this.keet.discovery&&this.keet.discovery.subscribe(this._capabilities.discoveryKeyPair.publicKey,{since:Date.now()}),await this._responseCore.close(),this.closing||this._privateProfile.base.hintWakeup([{key:this._responseCore.key,length:1}]))}async _append(){const i=await this.keet.store.createKeyPair(n(this._responseKeyPair.publicKey)),t=await this.keet.internalEnterLocalTransaction();try{this._writerInfo={keyPair:i,key:this._core.key,mailbox:this._mailboxPublicKey,responseKeyPair:this._responseKeyPair},await t.insert("@local/writers",this._writerInfo),await t.flush()}finally{await this.keet.internalExitLocalTransaction()}await this._appendJoinRequest()}async _run(){if(this.closing)return;this.keet.onlineBoot.opened||await this.keet.onlineBoot.ready();const[i,s]=await Promise.all([this.local.get("@local/writers",{mailbox:this._mailboxPublicKey}),this.local.get("@local/identity")]),[a,o]=await Promise.all([this.local.get("@local/rooms",{roomKey:s.privateProfileKey}),this.local.get("@local/rooms-by-mailbox",{capabilities:{mailboxKeyPair:{publicKey:this._mailboxPublicKey}}})]);if(this.closing)return;if(this._roomInfo=o,this._writerInfo=i,this._identityInfo=s,this._privateProfileInfo=a,this._privateProfile=this.keet.internalOpenExistingRoom(this._identityInfo.privateProfileKey),await this._privateProfile.ready(),this.closing)return;if(this._room=this._roomInfo?this.keet.internalOpenExistingRoom(this._roomInfo.roomKey):null,this._room&&(await this._room.ready(),this.closing))return;const n=await this._privateProfile.db.get("@keet-private-id/pending-invitations",{id:this._invitationId});!this.closing&&n&&this._samePendingInvitation(n)&&(this._core=this.store.get({key:this._initiator.key}),await this._core.ready(),this.closing||this._core.writable&&(await this._append(),this._room&&(await this._room.base.setLocal(this._core.key),this.closing))||(this.keet.emit("pending-rooms-changed"),this.keet.blindPeering.addCoreBackground(this._core,{target:this._mailboxPublicKey,referrer:this._mailboxPublicKey,priority:1}),this._waitForResponse().catch(this.keet.onerror),this._signal=new e,this._watcher=async()=>{try{const i=await this._privateProfile.db.get("@keet-private-id/pending-invitations",{id:this._invitationId});i&&this._samePendingInvitation(i)||this._signal.notify()}catch(i){t(i)}},this._privateProfile.db.watch(this._watcher),this._watcher(),await this._signal.wait()))}};
@holepunchto/keet-core/lib/core/tasks/pairing/keys.js +1 -0
……@@ -0,0 +1 @@
1const t=require("hypercore-crypto"),i=require("safety-catch"),e=require("signal-promise"),{createMemberProofJoinOperation:s}=require("../../invitations"),{Task:o}=require("../task"),a=12e4;module.exports=class extends o{constructor(t){super(t);const i=this.description.joinRoomKeys;this._keys=i.keys,this._isReadOnly=this._keys.status?.isReadOnly,this._identityInfo=null,this._writerInfo=null,this._roomInfo=null,this._roomPreferences=null,this._room=null,this._timer=null,this._signal=null,this._watcher=null,this._localWatcher=null}_close(){this._signal&&this._signal.notify(new Error("Fast join closed before resolving digest")),this._localWatcher&&this.local.unwatch(this._localWatcher),this._room&&this.keet.internalReleaseRoom(this._room),this._timer&&clearTimeout(this._timer)}async _save(){const t=await this.keet.internalEnterLocalTransaction();try{await t.insert("@local/writers",this._writerInfo),await t.flush()}finally{await this.keet.internalExitLocalTransaction()}}async _appendJoinRequest(){if(!await this.keet.internalVerifyOptimisticCore(this._core)||this.closing)return;const t={device:this.keet.internalCreateDeviceUpdate(this._identityInfo,this._core.key),member:this.keet.internalGetMemberUpdate(this._identityInfo)};let i=null;i=this._keys.initiator?this.keet.internalGetHeads(this._keys.initiator,this._room):[{key:this._keys.roomKey,length:1}];const e=s(this._keys.mailbox,t,{heads:i});await this.keet.internalAppendOptimisticOperation(this._core.key,e)}async _openRoom(){this._room=this.keet.internalOpenRoom(this._keys.roomKey,this._keys.encryptionKey,{fastForwardTo:this._keys.fastForwardTo?{key:this._keys.fastForwardTo}:null,mailbox:this._keys.mailbox,bigBatches:!!this._keys.identitySwap}),await this._room.ready()}async _doRun(){if(this._identityInfo=await this.keet.internalGetIdentityInfo(),this.closing)return;const[s,o,a]=await Promise.all([this.local.get("@local/writers",{mailbox:this._keys.mailbox}),this.local.get("@local/rooms",{roomKey:this._keys.roomKey}),this.local.get("@local/room-preferences",{roomKey:this._keys.roomKey})]);this._writerInfo=s,this._roomInfo=o,this._roomPreferences=a;let n=null;this._writerInfo?this._core=this.store.get(this._writerInfo.key):(n=t.keyPair(),this._core=this.store.get({keyPair:n})),await this._core.ready(),this.closing||(this._roomInfo&&await this._openRoom(),this.closing||(this._writerInfo||(this._writerInfo={keyPair:n,key:this._core.key,mailbox:this._keys.mailbox,responseKeyPair:null,roomKey:null}),this._writerInfo.roomKey=this._keys.roomKey,0!==this._core.length||this._isReadOnly||await this._appendJoinRequest(),this.closing||(await this._save(),this.closing||(this._room||await this._openRoom(),this._isReadOnly||await this._room.base.setLocal(this._core.key),this._signal=new e,this._localWatcher=async()=>{try{await this.local.get("@local/rooms",{roomKey:this._keys.roomKey})&&this._signal.notify()}catch(t){i(t)}},this.local.watch(this._localWatcher),this._localWatcher(),await this._signal.wait()))))}_release(){this.keet.debugRunningFastJoins--,this.keet.internalFastJoinSemaphore.signal()}async _run(){await this.keet.internalFastJoinSemaphore.wait(),this.keet.debugRunningFastJoins++,this.keet.debugMaxRunningFastJoins=Math.max(this.keet.debugMaxRunningFastJoins,this.keet.debugRunningFastJoins);try{if(this.closing)return;this._timer=setTimeout(()=>this._release(),a),await this._doRun()}finally{this._release()}}};
@holepunchto/keet-core/lib/core/tasks/pairing/response.js +1 -0
……@@ -0,0 +1 @@
1const{Task:e}=require("../task");module.exports=class extends e{constructor(e){super(e);const i=this.description.joinRoomResponse;this._keyPair=i.keyPair,this._response=i.response,this._mailbox=i.mailbox,this._core=null}async _close(){this._core&&await this._core.close()}async _run(){if(this._core=this.store.get({keyPair:this._keyPair}),await this._core.ready(),0===this._core.length){if(await this.keet.internalVerifyOptimisticCore(this._core),this.closing)return;0===this._core.length&&await this._core.append(this._response,{maxLength:1})}await this.keet.blindPeering.addCore(this._core,{target:this._mailbox,referrer:this._mailbox,priority:1}),await new Promise(e=>setTimeout(e,this.keet.internalPairingTimeout))}};
@holepunchto/keet-core/lib/core/tasks/rooms/clear.js +1 -0
……@@ -0,0 +1 @@
1const{Task:s}=require("../task");module.exports=class extends s{constructor(s){super(s);const o=this.description.clearRoom;this._roomKey=o.roomKey}async _close(){}async _run(){}};
@holepunchto/keet-core/lib/core/tasks/rooms/create.js +1 -0
……@@ -0,0 +1 @@
1const{contract:{hyperschema:{getEnum:e}}}=require("../../../../schema/spec"),{Task:t}=require("../task"),i=require("b4a"),s=e("@keet/room-type"),o=require("../../sync/updater"),{roomsStats:a}=require("../../contract/stats/local");module.exports=class extends t{constructor(e){super(e);const t=this.description.createRoom;this._key=t.roomKey,this._mailbox=t.mailbox,this._keyPair=t.keyPair,this._genesis=t.genesis,this._fastForwardTo=t.fastForwardTo,this._encryptionKey=t.encryptionKey,this._isPrivateProfile=t.isPrivateProfile,this._room=null,this._updater=null,this._privateProfile=null}async _close(){this._updater&&await this._updater.close(),this._room&&this.keet.internalReleaseRoom(this._room),this._privateProfile&&this.keet.internalReleaseRoom(this._privateProfile)}async _save(){const e=await this.keet.internalEnterLocalTransaction();try{const t=await e.get("@local/rooms",this._updater.roomInfo);await e.insert("@local/rooms",this._updater.roomInfo),await a(e,this._updater.roomInfo,t),await e.flush()}finally{await this.keet.internalExitLocalTransaction()}}_getDmMemberKey(){if(this._genesis.digest.settings.roomType!==s.DirectMessage)return null;for(const{attestation:e}of this._genesis.initialMembers)if(!i.equals(e.memberKey,this._genesis.bootstrapDevice.attestation.memberKey))return e.memberKey}_maybeEmitEvents(){this.keet.emit("room-changed",this._room.id)}async _create(){if(await this._room.ready(),this.closing)return;let e=this._genesis.bootstrapDevice,t=this._genesis.initialMembers;if(!e){const i=await this.keet.internalGetIdentityInfo();if(this.closing)return;e=this.keet.internalCreateDeviceUpdate(i,this._room.deviceKey),t=[this.keet.internalGetMemberUpdate(i)]}await this._room.dispatch("@keet/genesis",{...this._genesis,bootstrapDevice:e,initialMembers:t}),this._updater=new o(this.keet,this._room.base.view,this._room.base,null);const i=await this._updater.run();if(!this.closing&&i&&(await this._save(),!this.closing)){if(this._privateProfile){const e=this._room.base.getSystemKey(),t={key:this._room.base.local.key,length:this._room.base.local.length};await this._privateProfile.dispatch("@keet-private-id/add-room",{roomKey:this._room.key,encryptionKey:this._room.encryptionKey,mailbox:this._mailbox,fastForwardTo:e,initiator:t,dm:this._getDmMemberKey()})}this._maybeEmitEvents()}}async _run(){if(this._room=this.keet.internalOpenRoom(this._key,this._encryptionKey,{fastForwardTo:this._fastForwardTo,keyPair:this._keyPair,mailbox:this._mailbox}),!this._isPrivateProfile){this.keet.onlineBoot.opened||await this.keet.onlineBoot.ready();const e=await this.local.get("@local/identity");this._privateProfile=this.keet.internalOpenExistingRoom(e.privateProfileKey)}await this._create()}};
@holepunchto/keet-core/lib/core/tasks/rooms/leave.js +1 -0
……@@ -0,0 +1 @@
1const{Task:i}=require("../task"),t=require("b4a");module.exports=class extends i{constructor(i){super(i);const t=this.description.leaveRoom;this._roomKey=t.roomKey,this._isGossiped=t.isGossiped,this._roomInfo=null,this._identityInfo=null,this._room=null,this._privateProfile=null}async _close(){this._room&&this.keet.internalReleaseRoom(this._room),this._privateProfile&&this.keet.internalReleaseRoom(this._privateProfile)}async _load(){this.keet.onlineBoot.opened||await this.keet.onlineBoot.ready();const[i,e]=await Promise.all([this.local.get("@local/rooms",{roomKey:this._roomKey}),this.local.get("@local/identity")]);if(this.closing||!i||!e)return!1;if(this._roomInfo=i,this._identityInfo=e,this._privateProfile=this.keet.internalOpenExistingRoom(this._identityInfo.privateProfileKey),await this._privateProfile.ready(),this.closing)return!1;if(this.discovery&&this._roomInfo){const i=this._roomInfo.capabilities.discoveryKeyPair.publicKey;this.discovery.unsubscribe(i)}if(this._room=this.keet.internalOpenExistingRoom(this._roomKey),await this._room.ready(),this.closing)return!1;let o=!1;const s=await this._privateProfile.db.find("@keet-private-id/pending-invitations").toArray();for(const i of s)t.equals(i.mailbox,this._roomInfo.capabilities.mailboxKeyPair.publicKey)&&(o=!0);return!this.closing&&!o}async _save(){const i=await this.keet.internalEnterLocalTransaction();try{await i.delete("@local/writers",{mailbox:this._roomInfo.capabilities.mailboxKeyPair.publicKey}),await i.flush()}finally{await this.keet.internalExitLocalTransaction()}await this.files.clearAllFiles(this._roomKey,{leaving:!0})}async _run(){const i=await this._load();!this.closing&&i&&await this._save()}};
@holepunchto/keet-core/lib/core/tasks/task.js +1 -0
……@@ -0,0 +1 @@
1const t=require("ready-resource"),i=require("hypercore-id-encoding");class e extends t{constructor(t){super(),this.handle=t,this.description=t.description,this.type=this.description.type,this.scope=this.description.discoveryKey,this.priority=this.description.priority,this.keet=this.handle.manager.keet,this.store=this.keet.store,this.local=this.keet.local,this.swarm=this.keet.swarm,this.swarmWorker=this.keet.swarmWorker,this.files=this.keet.files,this._running=null}_open(){this._running=this._run(),this._running.catch(this.keet.onerror)}get id(){return this._id||(this._id=e.getId(this.description)),this._id}async run(){this.opened||await this.ready(),await this._running,await this.close()}async _run(){}async _close(){}static getId(t){return`${t.timestamp}:${i.encode(t.discoveryKey)}:${t.type}`}}module.exports={Task:e};
@holepunchto/keet-core/lib/core/tasks/testing/error.js +1 -0
……@@ -0,0 +1 @@
1const{Task:e}=require("../task");module.exports=class extends e{_run(){return Promise.reject(new Error("Simulated task failure"))}};
@holepunchto/keet-core/lib/core/tasks/testing/fast.js +1 -0
……@@ -0,0 +1 @@
1const e=require("resolve-reject-promise"),{Task:s}=require("../task");module.exports=class extends s{constructor(e){super(e),this.timer=null}_close(){this.timer&&clearTimeout(this.timer)}async _run(){const{resolve:s,promise:t}=e();this.timer=setTimeout(()=>s(),100),await t}};
@holepunchto/keet-core/lib/core/tasks/testing/slow.js +1 -0
……@@ -0,0 +1 @@
1const e=require("resolve-reject-promise"),{Task:s}=require("../task");module.exports=class extends s{constructor(e){super(e),this._timer=null,this._resolve=null,this._reject=null}_close(){this._timer&&clearTimeout(this.timer),this._reject(new Error("Slow task was closed"))}async _run(){const{resolve:s,reject:t,promise:r}=e();this._resolve=s,this._reject=t,this._timer=setTimeout(()=>s(),1e3),await r}};
@holepunchto/keet-core/lib/core/users/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("@holepunchto/keet-registry-client"),t=require("ready-resource"),s=require("@holepunchto/keet-registry"),i=require("b4a"),{createUsernameReservationRequest:r}=require("../invitations"),{Readable:n}=require("streamx"),a=require("@holepunchto/keet-registry/lib/errors");class o extends t{constructor(e,{db:t,reserved:s,blobs:i,rpc:r,rateLimit:n={}}={}){super(),this.dbKey=t,this.reservedKey=s,this.blobsKey=i,this.rpcKeys=r,this.keet=e,this.store=null,this.swarm=null,this.swarmWorker=null,this.db=null,this.reserved=null,this.blobs=null,this._keetRegistry=null,this._rpcClient=null,this._registryRpcOpts={rateLimit:n},this._subs=[],this._watchingReservation=!1,this._watchingRecord=!1,this._boundEmit=this._emit.bind(this),this._boundCatch=this._catch.bind(this),this._boundLookupOwn=null}async _open(){this.store=this.keet.store.session(),this.swarmWorker=this.keet.swarmWorker,this.db=this.store.get({key:this.dbKey}),this.reserved=this.store.get({key:this.reservedKey}),this.blobs=this.store.get({key:this.blobsKey}),this._keetRegistry=new s(this.db,this.reserved,this.blobs,{extension:!1}),this._rpcClient=new e(this.rpcKeys,this.keet.rpcClient,this._registryRpcOpts),await this._keetRegistry.ready();const t=await this._getIdentity();this._boundLookupOwn=this._safeLookupOwn.bind(this,t),this._lookupOwn(t).catch(this.keet.onerror),this._keetRegistry.reserved.core.once("append",this._boundLookupOwn)}async _emit(e,t=null,s=null){for(const i of this._subs){if(this.keet.closing)return;i.push({status:h(e),reservation:t,record:this._encode(s)})}}async _catch(e){this._unwatch();for(const t of this._subs)t.push({status:h({hasError:!0}),error:e.code??e.message})}async _close(){this._unwatch(),this._rpcClient.destroy();try{await this._keetRegistry.close()}catch(e){if("REQUEST_CANCELLED"!==e.code)throw e}await this.store.close()}async _getIdentity(){const e=await this.keet.local.get("@local/identity");if(!e)throw new Error("Identity is required");return e}_encode(e){return e?{...e,contactInfo:this.keet.internalEncodeContactInfo(e)}:null}async _safeLookupOwn(e){try{return await this._lookupOwn(e)}catch(e){this.keet.onerror(e)}}async _lookupOwn(e){const[t,s]=await Promise.all([this._keetRegistry.getByKey(e.publicKey),this._keetRegistry.getReservationsByKey(e.publicKey)]);if(!t){if(s.length&&!this._watchingRecord){const e=s.pop();this._boundEmit({isReserved:!0},{username:e.username}),this._claimReservation(e)}return null}return this._encode(t)}async lookup(e){if(!e)throw new Error("Username required");this.opened||await this.ready(),this.swarmWorker.startDiscoverySwarming(this.db.discoveryKey,{deferSwarming:!1,limit:1});const t=await this._keetRegistry.get(e);return this._encode(t)}async lookupByKey(e){if(!e)throw new Error("Public key required");this.opened||await this.ready(),this.swarmWorker.startDiscoverySwarming(this.db.discoveryKey,{deferSwarming:!1,limit:1});const t=await this._getIdentity();if(i.equals(t.publicKey,e))return this._lookupOwn(t);const s=await this._keetRegistry.getByKey(e);return this._encode(s)}async search(e,t){if(!e)return[];this.opened||await this.ready(),this.swarmWorker.startDiscoverySwarming(this.db.discoveryKey,{deferSwarming:!1,limit:1});const s=[];for await(const i of this._keetRegistry.search(e,t))s.push(this._encode(i));return s}async isAvailable(e){if(!e)throw new Error("Username required");return this.opened||await this.ready(),this.swarmWorker.startDiscoverySwarming(this.db.discoveryKey,{deferSwarming:!1,limit:1}),this._keetRegistry.isAvailable(e)}async getReservationsByKey(e){if(!e)throw new Error("Public key required");return this.opened||await this.ready(),this.swarmWorker.startDiscoverySwarming(this.db.discoveryKey,{deferSwarming:!1,limit:1}),this._keetRegistry.getReservationsByKey(e)}async internalUpdateRegistryMember(e){try{await s.verifyPut(this._keetRegistry,e),await this._rpcClient.putRecord(e)}catch(e){this._boundCatch(e)}}async _pushOwnRecord(){const{publicKey:e}=await this._getIdentity(),t=await this._keetRegistry.getByKey(e);t&&this._boundEmit({hasRecord:!0},null,t)}subscribeUsername(){const e=this;return new n({open(t){e._subs.push(this),e._pushOwnRecord().catch(e.keet.onerror),t(null)},destroy(t){const s=e._subs.indexOf(this);-1!==s&&e._subs.splice(s,1),t(null)}})}async update(e){if(!e)throw new Error("Username required");if(this.opened||await this.ready(),this._watchingReservation)throw new Error("Registration already in progress");const{publicKey:t,deviceKeyPair:i,deviceProof:n}=await this._getIdentity();this.swarmWorker.startDiscoverySwarming(this.db.discoveryKey,{deferSwarming:!1,limit:1}),this._watchReservation(e,t);try{this._boundEmit({isReserving:!0},{username:e});const a=r(e,{publicKey:t,deviceKeyPair:i,deviceProof:n});await s.verifyReservation(a),await this._rpcClient.reserve(a)}catch(e){return this._boundCatch(e),!1}return!0}_unwatch(){this._keetRegistry.unwatch(),this._watchingRecord=!1,this._watchingReservation=!1}async _claimReservation({username:e,memberKey:t}){this._keetRegistry.reserved.core.removeListener("append",this._boundLookupOwn),this._boundEmit({isReserved:!0},{username:e,memberKey:t}),this._watchRecord(e,t),await this.keet.internalUpdateProfile({username:e},{forceUpdateRegistry:!0}).catch(this._boundCatch)}_watchReservation(e,t){const s=this;this._watchingReservation=!0,this._keetRegistry.watchReservation(e).then(async function(e){s._watchingReservation=!1,null!==e&&(i.equals(e.memberKey,t)?await s._claimReservation(e):s._boundCatch(a.NAME_UNAVAILABLE()))},this._boundCatch)}_watchRecord(e,t){const s=this,i={attestation:{memberKey:t}};this._watchingRecord=!0,this._keetRegistry.watchRecord(i,function(t){return t.profile.username===e}).then(function(e){s._watchingRecord=!1,null!==e&&s._boundEmit({hasRecord:!0},null,e)},this._boundCatch)}}function h(e){return{hasRecord:!0===e.hasRecord,hasError:!0===e.hasError,isReserving:!0===e.isReserving,isReserved:!0===e.isReserved||!0===e.hasRecord}}module.exports=o;
@holepunchto/keet-core/lib/env.js +1 -0
……@@ -0,0 +1 @@
1const e=require("hypercore-id-encoding"),n=require("../env.json");module.exports=function(o){const r=n[o];if(!r)throw new Error("Invalid buildType: "+o);return{bundles:{key:e.decode(r.bundles.key),length:r.bundles.length},config:{key:e.decode(r.config.key),length:r.config.length}}};
@holepunchto/keet-core/lib/errors/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("ready-resource"),t=require("scope-lock"),{KeetContractError:r}=require("../core/contract/errors"),s=1e4,i=12096e5,a={INVALID_INVITATION_TYPE:"INVALID_INVITATION_TYPE",UNKNOWN_EXPIRATION:"UNKNOWN_EXPIRATION",INVALID_INVITE:"INVALID_INVITE",INVALID_CONTACT_INFO:"INVALID_CONTACT_INFO",MODERATORS_ONLY:"MODERATORS_ONLY",UNEXPECTED_ERROR:"UNEXPECTED_ERROR",INVALID_BUILD_TYPE:"INVALID_BUILD_TYPE"};class o extends e{constructor(e,r){super(),this.keet=e,this.errors=[],this._flushLock=new t({debounce:!0}),this._flushInterval=r.errorFlushInterval||s,this._flushTimerDisabled=null===r.errorFlushTimer,this._flushTimer=null,this._gcMaxAge=r.errorGcMaxAge||i,this.ready().catch(e.onerror)}async _open(){await this.keet.ready(),await this._gc()}async _close(){this._flushTimerDisabled=!0,this._resetTimeout(),await this._flush()}add(e){this.errors.push(e),this.keet.emit("caught-error",e),this._flushTimerDisabled||this._scheduleFlush()}normalize(e,t={}){return n.isKeetError(e)?e:r.isContractError(e)?(e.timestamp=Date.now(),e):n.fromError(e,t)}_scheduleFlush(){this._flushTimer||(this._flushTimer=setTimeout(this._flush.bind(this),this._flushInterval))}_resetTimeout(){this._flushTimer&&(clearTimeout(this._flushTimer),this._flushTimer=null)}debugPauseFlush(){this._resetTimeout()}debugResumeFlush(){this._scheduleFlush()}async _flush(){if(!this.keet.readOnly&&await this._flushLock.lock())try{const e=await this.keet.internalEnterLocalTransaction();try{const t=[...this.errors];this.errors=[];for(const r of t)await e.insert("@local/errors",{code:r.code,message:r.message,stack:r.stack,details:r.details,timestamp:r.timestamp});await e.flush()}finally{await this.keet.internalExitLocalTransaction()}}finally{this._flushLock.unlock(),this._resetTimeout()}}async _gc(){if(this.closing)return;const e=Date.now()-this._gcMaxAge,t=await this.keet.local.find("@local/errors",{lte:{timestamp:e}}).toArray(),r=await this.keet.internalEnterLocalTransaction();try{for(const e of t)await r.delete("@local/errors",e);await r.flush()}finally{await this.keet.internalExitLocalTransaction()}}}class n extends Error{constructor(e,t,r={},s=this.constructor){super(t?`${e}: ${t}`:e),this.isKeetError=!0,this.code=e,this.details=r,this.timestamp=Date.now(),Error.captureStackTrace&&Error.captureStackTrace(this,s)}static isKeetError(e){return e?.isKeetError}static fromError(e,t={}){const r=c(e,t);return e.code=r,e.message=`${r}: ${e.message}`,e.timestamp=Date.now(),e.stack||(e.stack=""),e.details={},t.roomKey&&(e.details.roomKey=t.roomKey),t.coreKey&&(e.details.coreKey=t.coreKey),e}static INVALID_INVITATION_TYPE(e="Attempting to use a device sync invitation as a room invitation",t={}){return new n(a.INVALID_INVITATION_TYPE,e,t,n.INVALID_INVITATION_TYPE)}static UNKNOWN_EXPIRATION(e="Unknown expiration",t={}){return new n(a.UNKNOWN_EXPIRATION,e,t,n.UNKNOWN_EXPIRATION)}static INVALID_INVITE(e="Invalid invite",t={}){return new n(a.INVALID_INVITE,e,t,n.INVALID_INVITE)}static INVALID_CONTACT_INFO(e="Invalid contact info",t={}){return new n(a.INVALID_CONTACT_INFO,e,t,n.INVALID_CONTACT_INFO)}static MODERATORS_ONLY(e="",t={}){return new n(a.MODERATORS_ONLY,e,t,n.MODERATORS_ONLY)}static UNEXPECTED_ERROR(e="",t={}){return new n(a.UNEXPECTED_ERROR,e,t,n.UNEXPECTED_ERROR)}static INVALID_BUILD_TYPE(e="",t={}){return new n(a.INVALID_BUILD_TYPE,e,t,n.INVALID_BUILD_TYPE)}}function c(e,t){return e.cause?.code?e.cause.code:t.prefix?t.prefix:t.roomKey?"UNEXPECTED_ROOM_ERROR":"UNEXPECTED_ERROR"}module.exports={ERRORS:a,KeetErrorV2:n,KeetErrorManager:o};
@holepunchto/keet-core/lib/features.js +1 -0
……@@ -0,0 +1 @@
1const{FEATURES:e,isFeatureSupported:r}=require("../schema/versions");module.exports={FEATURES:e,isFeatureSupported:r};
@holepunchto/keet-core/lib/legacy-constants.js +1 -0
……@@ -0,0 +1 @@
1const E=require("@holepunchto/keet-core-api"),{ERRORS:S,DISPLAY_TYPES:R,DM_STATUSES:e,PREFERENCES:p,GENERIC_EVENTS:o,isDisplaySupported:T}=E;module.exports={ERRORS:S,DISPLAY_TYPES:R,DM_STATUSES:e,PREFERENCES:p,GENERIC_EVENTS:o,isDisplaySupported:T};
@holepunchto/keet-core/lib/push/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("hypercore-id-encoding"),l=require("hypercore-storage"),t=require("multi-profile-store"),a=require("@holepunchto/keet-push/lib/notifications.js"),{decodeValue:o}=require("autobase/lib/values.js"),n=require("b4a"),{contract:{hyperdispatch:{decode:i},hyperschema:{getEnum:r}}}=require("../../schema/spec"),c=r("@keet/room-type"),s=require("../core/local"),u=require("keet-identity-key");function d(e){return"@keet/start-call"===e.name?"call":"@keet/join-call"===e.name?"call_joined":"@keet/end-call"===e.name||"@keet/leave-call"===e.name?"call_hangup":void 0}function m(e){return"@keet/start-call"===e.name?"Message for call":"@keet/join-call"===e.name?"Message for call joined":"@keet/end-call"===e.name||"@keet/leave-call"===e.name?"Message for call hangup":void 0}function y(e,l){switch(e){case c.Default:return l("Room type is default"),"0";case c.Broadcast:return l("Room type is Broadcast"),"1";case c.DirectMessage:return l("Room type is DirectMessage"),"2";default:throw new Error("Incompatible legacy room type:",e)}}function f(e,l,t){try{return!!u.verify(e,l,{expectedIdentity:t})}catch{return!1}}module.exports=async function(r,c,{log:u=()=>{},profile:p=!0}={}){const g=t.open(r).active();if(!g&&p)return u("no active profile is made"),null;const{version:k,discoveryKey:h,proof:v}=a.decode(c),b=new l(g?g.storage:r,{readOnly:!0,blockCache:!1,tableCacheIndexAndFilterBlocks:!1,optimizeFiltersForMemory:!0,maxOpenFiles:1,useDirectReads:!0,filterPolicy:null});try{const l=s.rocks(b.rocks.columnFamily("keet/local-database"));await l.ready(),u("Keet local database is ready");const[t,r]=await Promise.all([l.get("@local/rooms-by-discovery-key",{discoveryKey:h}),l.get("@local/identity")]);if(!t||t.status.isRemoved)return u("Room member was removed from room"),null;const c=await l.get("@local/room-preferences",{roomKey:t.roomKey});if(c&&(!c.status.isActive||c.status.isFullyMuted))return null;const p=await a.receive(b,t.roomKey,v,k),g=1===k?p?.result:p,x=1===k?p?.attest:null;if(u("Receiving notification"),!g)return null;if(u("Notification is good"),!g.block)return null;if(u("Notification was not blocked"),!g.newer)return null;const K=g.key,w=g.discoveryKey,M=o(n.from(g.proof.block.value),{autobase:t.roomKey,encryptionKey:t.encryptionKey,key:K,manifest:g.proof.manifest,index:g.block.index}),[T,q]=await Promise.all([l.get("@local/devices",{device:{key:K}}),M]),I=T?.device,R=i(q),[j,D]=await Promise.all([I?l.get("@local/contacts",{memberKey:I.memberKey}):null,I?l.get("@local/members",{key:I.memberKey}):null]),F=!!j?.status.isBlocked;u("Blocked?: ",F);const B=x?f(x,K,r.publicKey):D&&n.equals(D.key,r.publicKey);u(`Member exists ?: ${null!==D} and keys are equal?: ${null!==D&&n.equals(D.key,r.publicKey)}`);const A=D?D.profile.displayName:null,P=D?D.profile.avatar:null,S=t?t.config.avatar:null,E=t?t.digest.abi.version:0;let N=null;switch(R.name){case"@keet/add-chat-message":{const l=R.value.header.timestamp,a=R.value.message;if(a?.files&&a.files.length>0){const e=a.files[0];N={timestamp:l,type:"file",chatText:null,callId:null,fileType:e.metadata?.mimetype,location:null},u("Message for file")}else if(a?.event?.locationShared)N={timestamp:l,type:"location",chatText:a.text,callId:null,fileType:null,location:a.event.locationShared},u("Message for location");else if(a.text)N={timestamp:l,type:"text",chatText:a.text,callId:null,fileType:null,location:null},u("Message for text");else if(a.event.callStarted&&E<23){if(Math.abs(Date.now()-l)>12e4)return;N={timestamp:l,type:"call",chatText:null,callId:e.encode(t.discoveryKey),fileType:null,location:null},u("Message for call")}else if(a.event.callHangup&&E<23){if(Math.abs(Date.now()-l)>12e4)return;N={timestamp:l,type:"call_hangup",chatText:null,callId:e.encode(t.discoveryKey),fileType:null,location:null},u("Message for call hangup")}break}case"@keet/start-call":case"@keet/join-call":case"@keet/leave-call":case"@keet/end-call":{if(E<23)return;const l=R.value.header.timestamp;if(Math.abs(Date.now()-l)>12e4)return;const t=d(R),a=m(R);N={timestamp:l,type:t,chatText:null,callId:e.encode(R.value.callKey),fileType:null,location:null},u(a);break}}const _={id:null,sender:{id:e.encode(K),length:g.length,blocked:F,self:B,name:A,memberAvatar:P},room:{key:t.roomKey,title:t.config.title,type:y(t.digest.settings.roomType,u),roomAvatar:S},proof:{discoveryKey:w,data:g.proof},index:g.block.index,message:N};return _.id=_.sender.id+(-1!==_.index?"/b"+_.index:"/l"+_.sender.length),u("Returning result"),_}catch(e){return u("Error:",e),null}finally{await b.close(),u("Storage closed")}};
@holepunchto/keet-core/lib/rpc/client.js +1 -0
……@@ -0,0 +1 @@
1const e=require("tiny-buffer-rpc/any"),r=require("safety-catch");module.exports=function(s){const t=s.register(0,{request:e,response:e}),o=s.register(1,{request:e,response:e}),n=s.register(2,{request:e,response:e}),u=s.register(3,{request:e,response:e}),a=s.register(4,{request:e,response:e}),q=s.register(5,{request:e,response:e}),i=s.register(6,{request:e,response:e}),c=s.register(7,{request:e,response:e}),m=s.register(8,{request:e,response:e}),g=s.register(9,{request:e,response:e}),p=s.register(10,{request:e,response:e}),y=s.register(11,{request:e,response:e}),f=s.register(12,{request:e,response:e}),A=s.register(13,{request:e,response:e}),d=s.register(14,{request:e,response:e}),b=s.register(15,{request:e,response:e}),R=s.register(16,{request:e,response:e}),l=s.register(17,{request:e,response:e}),S=s.register(18,{request:e,response:e}),w=s.register(19,{request:e,response:e}),v=s.register(20,{request:e,response:e}),M=s.register(21,{request:e,response:e}),h=s.register(22,{request:e,response:e}),C=s.register(23,{request:e,response:e}),P=s.register(24,{request:e,response:e}),I=s.register(25,{request:e,response:e}),F=s.register(26,{request:e,response:e}),k=s.register(27,{request:e,response:e}),D=s.register(28,{request:e,response:e}),U=s.register(29,{request:e,response:e}),E=s.register(30,{request:e,response:e}),T=s.register(31,{request:e,response:e}),B=s.register(32,{request:e,response:e}),L=s.register(33,{request:e,response:e}),x=s.register(34,{request:e,response:e}),N=s.register(35,{request:e,response:e}),j=s.register(36,{request:e,response:e}),z=s.register(37,{request:e,response:e}),H=s.register(38,{request:e,response:e}),K=s.register(39,{request:e,response:e}),V=s.register(40,{request:e,response:e}),J=s.register(41,{request:e,response:e}),O=s.register(42,{request:e,response:e}),W=s.register(43,{request:e,response:e}),G=s.register(44,{request:e,response:e}),Q=s.register(45,{request:e,response:e}),X=s.register(46,{request:e,response:e}),Y=s.register(47,{request:e,response:e}),Z=s.register(48,{request:e,response:e}),$=s.register(49,{request:e,response:e}),_=s.register(50,{request:e,response:e}),ee=s.register(51,{request:e,response:e}),re=s.register(52,{request:e,response:e}),se=s.register(53,{request:e,response:e}),te=s.register(54,{request:e,response:e}),oe=s.register(55,{request:e,response:e}),ne=s.register(56,{request:e,response:e}),ue=s.register(57,{request:e,response:e}),ae=s.register(58,{request:e,response:e}),qe=s.register(59,{request:e,response:e}),ie=s.register(60,{request:e,response:e}),ce=s.register(61,{request:e,response:e}),me=s.register(62,{request:e,response:e}),ge=s.register(63,{request:e,response:e}),pe=s.register(64,{request:e,response:e}),ye=s.register(65,{request:e,response:e}),fe=s.register(66,{request:e,response:e}),Ae=s.register(67,{request:e,response:e}),de=s.register(68,{request:e,response:e}),be=s.register(69,{request:e,response:e}),Re=s.register(70,{request:e,response:e}),le=s.register(71,{request:e,response:e}),Se=s.register(72,{request:e,response:e}),we=s.register(73,{request:e,response:e}),ve=s.register(74,{request:e,response:e}),Me=s.register(75,{request:e,response:e}),he=s.register(76,{request:e,response:e}),Ce=s.register(77,{request:e,response:e}),Pe=s.register(78,{request:e,response:e}),Ie=s.register(79,{request:e,response:e}),Fe=s.register(80,{request:e,response:e}),ke=s.register(81,{request:e,response:e}),De=s.register(82,{request:e,response:e}),Ue=s.register(83,{request:e,response:e}),Ee=s.register(84,{request:e,response:e}),Te=s.register(85,{request:e,response:e}),Be=s.register(86,{request:e,response:e}),Le=s.register(87,{request:e,response:e}),xe=s.register(88,{request:e,response:e}),Ne=s.register(89,{request:e,response:e}),je=s.register(90,{request:e,response:e}),ze=s.register(91,{request:e,response:e}),He=s.register(92,{request:e,response:e}),Ke=s.register(93,{request:e,response:e}),Ve=s.register(94,{request:e,response:e}),Je=s.register(95,{request:e,response:e}),Oe=s.register(96,{request:e,response:e}),We=s.register(97,{request:e,response:e}),Ge=s.register(98,{request:e,response:e}),Qe=s.register(99,{request:e,response:e}),Xe=s.register(100,{request:e,response:e}),Ye=s.register(101,{request:e,response:e}),Ze=s.register(102,{request:e,response:e}),$e=s.register(103,{request:e,response:e}),_e=s.register(104,{request:e,response:e}),er=s.register(105,{request:e,response:e}),rr=s.register(106,{request:e,response:e}),sr=s.register(107,{request:e,response:e}),tr=s.register(108,{request:e,response:e}),or=s.register(109,{request:e,response:e}),nr=s.register(110,{request:e,response:e}),ur=s.register(111,{request:e,response:e}),ar=s.register(112,{request:e,response:e}),qr=s.register(113,{request:e,response:e}),ir=s.register(114,{request:e,response:e}),cr=s.register(115,{request:e,response:e}),mr=s.register(116,{request:e,response:e}),gr=s.register(117,{request:e,response:e}),pr=s.register(118,{request:e,response:e}),yr=s.register(119,{request:e,response:e}),fr=s.register(120,{request:e,response:e}),Ar=s.register(121,{request:e,response:e}),dr=s.register(122,{request:e,response:e}),br=s.register(123,{request:e,response:e}),Rr=s.register(124,{request:e,response:e}),lr=s.register(125,{request:e,response:e}),Sr=s.register(126,{request:e,response:e}),wr=s.register(127,{request:e,response:e}),vr=s.register(128,{request:e,response:e}),Mr=s.register(129,{request:e,response:e}),hr=s.register(130,{request:e,response:e}),Cr=s.register(131,{request:e,response:e}),Pr=s.register(132,{request:e,response:e}),Ir=s.register(133,{request:e,response:e}),Fr=s.register(134,{request:e,response:e}),kr=s.register(135,{request:e,response:e}),Dr=s.register(136,{request:e,response:e}),Ur=s.register(137,{request:e,response:e}),Er=s.register(138,{request:e,response:e}),Tr=s.register(139,{request:e,response:e}),Br=s.register(140,{request:e,response:e}),Lr=s.register(141,{request:e,response:e}),xr=s.register(142,{request:e,response:e}),Nr=s.register(143,{request:e,response:e}),jr=s.register(144,{request:e,response:e}),zr=s.register(145,{request:e,response:e}),Hr=s.register(146,{request:e,response:e}),Kr=s.register(147,{request:e,response:e}),Vr=s.register(148,{request:e,response:e}),Jr=s.register(149,{request:e,response:e}),Or=s.register(150,{request:e,response:e}),Wr=s.register(151,{request:e,response:e}),Gr=s.register(152,{request:e,response:e}),Qr=s.register(153,{request:e,response:e}),Xr=s.register(154,{request:e,response:e}),Yr=s.register(155,{request:e,response:e}),Zr=s.register(156,{request:e,response:e}),$r=s.register(157,{request:e,response:e}),_r=s.register(158,{request:e,response:e}),es=s.register(159,{request:e,response:e}),rs=s.register(160,{request:e,response:e}),ss=s.register(161,{request:e,response:e}),ts=s.register(162,{request:e,response:e}),os=s.register(163,{request:e,response:e}),ns=s.register(164,{request:e,response:e}),us=s.register(165,{request:e,response:e}),as=s.register(166,{request:e,response:e}),qs=s.register(167,{request:e,response:e}),is=s.register(168,{request:e,response:e}),cs=s.register(169,{request:e,response:e}),ms=s.register(170,{request:e,response:e}),gs=s.register(171,{request:e,response:e}),ps=s.register(172,{request:e,response:e}),ys=s.register(173,{request:e,response:e}),fs=s.register(174,{request:e,response:e}),As=s.register(175,{request:e,response:e}),ds=s.register(176,{request:e,response:e}),bs=s.register(177,{request:e,response:e}),Rs=s.register(178,{request:e,response:e}),ls=s.register(179,{request:e,response:e}),Ss=s.register(180,{request:e,response:e}),ws=s.register(181,{request:e,response:e}),vs=s.register(182,{request:e,response:e}),Ms=s.register(183,{request:e,response:e}),hs=s.register(184,{request:e,response:e}),Cs=s.register(185,{request:e,response:e}),Ps=s.register(186,{request:e,response:e}),Is=s.register(187,{request:e,response:e}),Fs=s.register(188,{request:e,response:e}),ks=s.register(189,{request:e,response:e}),Ds=s.register(190,{request:e,response:e}),Us=s.register(191,{request:e,response:e}),Es=s.register(192,{request:e,response:e}),Ts=s.register(193,{request:e,response:e}),Bs=s.register(194,{request:e,response:e}),Ls=s.register(195,{request:e,response:e}),xs=s.register(196,{request:e,response:e}),Ns=s.register(197,{request:e,response:e}),js=s.register(198,{request:e,response:e}),zs=s.register(199,{request:e,response:e}),Hs=s.register(200,{request:e,response:e}),Ks=s.register(201,{request:e,response:e}),Vs=s.register(202,{request:e,response:e}),Js=s.register(203,{request:e,response:e}),Os=s.register(204,{request:e,response:e}),Ws=s.register(205,{request:e,response:e}),Gs=s.register(206,{request:e,response:e}),Qs=s.register(207,{request:e,response:e}),Xs=s.register(208,{request:e,response:e}),Ys=s.register(209,{request:e,response:e}),Zs=s.register(210,{request:e,response:e}),$s=s.register(211,{request:e,response:e}),_s=s.register(212,{request:e,response:e}),et=s.register(213,{request:e,response:e}),rt=s.register(214,{request:e,response:e}),st=s.register(215,{request:e,response:e}),tt=s.register(216,{request:e,response:e}),ot=s.register(217,{request:e,response:e}),nt=s.register(218,{request:e,response:e}),ut=s.register(219,{request:e,response:e}),at=s.register(220,{request:e,response:e}),qt=s.register(221,{request:e,response:e}),it=s.register(222,{request:e,response:e}),ct=s.register(223,{request:e,response:e}),mt=s.register(224,{request:e,response:e}),gt=s.register(225,{request:e,response:e}),pt=s.register(226,{request:e,response:e}),yt=s.register(227,{request:e,response:e}),ft=s.register(228,{request:e,response:e}),At=s.register(229,{request:e,response:e}),dt=s.register(230,{request:e,response:e}),bt=s.register(231,{request:e,response:e}),Rt=s.register(232,{request:e,response:e}),lt=s.register(233,{request:e,response:e}),St=s.register(234,{request:e,response:e}),wt=s.register(235,{request:e,response:e}),vt=s.register(236,{request:e,response:e}),Mt=s.register(237,{request:e,response:e}),ht=s.register(238,{request:e,response:e}),Ct=s.register(239,{request:e,response:e}),Pt=s.register(240,{request:e,response:e}),It=s.register(241,{request:e,response:e}),Ft=s.register(242,{request:e,response:e}),kt=s.register(243,{request:e,response:e}),Dt=s.register(244,{request:e,response:e}),Ut=s.register(245,{request:e,response:e}),Et=s.register(246,{request:e,response:e}),Tt=s.register(247,{request:e,response:e}),Bt=s.register(248,{request:e,response:e}),Lt=s.register(249,{request:e,response:e}),xt=s.register(250,{request:e,response:e}),Nt=s.register(251,{request:e,response:e}),jt=s.register(252,{request:e,response:e}),zt=s.register(253,{request:e,response:e}),Ht=s.register(254,{request:e,response:e}),Kt=s.register(255,{request:e,response:e}),Vt=s.register(256,{request:e,response:e}),Jt=s.register(257,{request:e,response:e}),Ot=s.register(258,{request:e,response:e});return{swarm:{ready:(...e)=>{const r=Array.from(e);return t.request(r)}},core:{getVersion:(...e)=>{const r=Array.from(e);return o.request(r)},subscribeRoomVersion:(...e)=>{const s=Array.from(e),t=n.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},subscribeForceUpdates:(...e)=>{const s=Array.from(e),t=u.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},upgradeRoom:(...e)=>{const r=Array.from(e);return a.request(r)},updateUserSettings:(...e)=>{const r=Array.from(e);return q.request(r)},getIdentity:(...e)=>{const r=Array.from(e);return i.request(r)},subscribeIdentity:(...e)=>{const s=Array.from(e),t=c.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},generateIdentity:(...e)=>{const r=Array.from(e);return m.request(r)},restoreIdentity:(...e)=>{const r=Array.from(e);return g.request(r)},getRecoveryPhrase:(...e)=>{const r=Array.from(e);return p.request(r)},getEncryptedRecoveryPhrase:(...e)=>{const r=Array.from(e);return y.request(r)},decryptEncryptedRecoveryPhrase:(...e)=>{const r=Array.from(e);return f.request(r)},freeRecoveryPhrase:(...e)=>{const r=Array.from(e);return A.request(r)},confirmRecoveryPhrase:(...e)=>{const r=Array.from(e);return d.request(r)},storeRecoveryPhrase:(...e)=>{const r=Array.from(e);return b.request(r)},confirmIdentity:(...e)=>{const r=Array.from(e);return R.request(r)},confirmPairingRequest:(...e)=>{const r=Array.from(e);return l.request(r)},subscribeIdentityPairingRequests:(...e)=>{const s=Array.from(e),t=S.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},updateIdentityProfile:(...e)=>{const r=Array.from(e);return w.request(r)},updateIdentityDevice:(...e)=>{const r=Array.from(e);return v.request(r)},removeIdentityDevice:(...e)=>{const r=Array.from(e);return M.request(r)},getLinkInfo:(...e)=>{const r=Array.from(e);return h.request(r)},startPairingIdentity:(...e)=>{const r=Array.from(e);return C.request(r)},pairIdentity:(...e)=>{const r=Array.from(e);return P.request(r)},createRoom:(...e)=>{const r=Array.from(e);return I.request(r)},pairRoom:(...e)=>{const r=Array.from(e);return F.request(r)},leaveRoom:(...e)=>{const r=Array.from(e);return k.request(r)},startPairingRoom:(...e)=>{const r=Array.from(e);return D.request(r)},stopPairingRoom:(...e)=>{const r=Array.from(e);return U.request(r)},subscribePendingRooms:(...e)=>{const s=Array.from(e),t=E.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},subscribePushNotificationChanges:(...e)=>{const s=Array.from(e),t=T.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},subscribeActivateRoom:(...e)=>{const s=Array.from(e),t=B.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},getRoomKeys:(...e)=>{const r=Array.from(e);return L.request(r)},resyncPrivateProfile:(...e)=>{const r=Array.from(e);return x.request(r)},getTipSize:(...e)=>{const r=Array.from(e);return N.request(r)},bookmark:(...e)=>{const r=Array.from(e);return j.request(r)},unbookmark:(...e)=>{const r=Array.from(e);return z.request(r)},subscribeBookmarks:(...e)=>{const s=Array.from(e),t=H.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},getRoomInfo:(...e)=>{const r=Array.from(e);return K.request(r)},subscribeRoomInfo:(...e)=>{const s=Array.from(e),t=V.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},searchRooms:(...e)=>{const r=Array.from(e);return J.request(r)},getRecentRooms:(...e)=>{const r=Array.from(e);return O.request(r)},getLocalRoomMetadata:(...e)=>{const r=Array.from(e);return W.request(r)},subscribeRecentRooms:(...e)=>{const s=Array.from(e),t=G.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},subscribeFavoriteRooms:(...e)=>{const s=Array.from(e),t=Q.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},subscribeUnreadActivity:(...e)=>{const s=Array.from(e),t=X.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},setRoomUnread:(...e)=>{const r=Array.from(e);return Y.request(r)},bumpRoomPriority:(...e)=>{const r=Array.from(e);return Z.request(r)},addDevice:(...e)=>{const r=Array.from(e);return $.request(r)},removeDevice:(...e)=>{const r=Array.from(e);return _.request(r)},getDevice:(...e)=>{const r=Array.from(e);return ee.request(r)},getDevices:(...e)=>{const r=Array.from(e);return re.request(r)},getDevicesByMemberId:(...e)=>{const r=Array.from(e);return se.request(r)},getCurrentDeviceId:(...e)=>{const r=Array.from(e);return te.request(r)},moveIndexer:(...e)=>{const r=Array.from(e);return oe.request(r)},subscribeDevice:(...e)=>{const s=Array.from(e),t=ne.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},subscribeDevices:(...e)=>{const s=Array.from(e),t=ue.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},createIdentityInvitation:(...e)=>{const r=Array.from(e);return ae.request(r)},createInvitation:(...e)=>{const r=Array.from(e);return qe.request(r)},updateMember:(...e)=>{const r=Array.from(e);return ie.request(r)},isMemberMuted:(...e)=>{const r=Array.from(e);return ce.request(r)},getMember:(...e)=>{const r=Array.from(e);return me.request(r)},removeMember:(...e)=>{const r=Array.from(e);return ge.request(r)},getMembers:(...e)=>{const r=Array.from(e);return pe.request(r)},getActiveMembers:(...e)=>{const r=Array.from(e);return ye.request(r)},subscribeActiveMembers:(...e)=>{const s=Array.from(e),t=fe.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},getModerators:(...e)=>{const r=Array.from(e);return Ae.request(r)},getMemberCount:(...e)=>{const r=Array.from(e);return de.request(r)},waitUntilJoined:(...e)=>{const r=Array.from(e);return be.request(r)},getMemberForDevice:(...e)=>{const r=Array.from(e);return Re.request(r)},subscribeMemberCount:(...e)=>{const s=Array.from(e),t=le.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},subscribeMember:(...e)=>{const s=Array.from(e),t=Se.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},subscribeMembers:(...e)=>{const s=Array.from(e),t=we.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},subscribeModerators:(...e)=>{const s=Array.from(e),t=ve.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},subscribeMemberForDevice:(...e)=>{const s=Array.from(e),t=Me.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},changeMemberRole:(...e)=>{const r=Array.from(e);return he.request(r)},muteMember:(...e)=>{const r=Array.from(e);return Ce.request(r)},unmuteMember:(...e)=>{const r=Array.from(e);return Pe.request(r)},getSearchMembers:(...e)=>{const r=Array.from(e);return Ie.request(r)},getPushNotificationMembers:(...e)=>{const r=Array.from(e);return Fe.request(r)},subscribeSearchMembers:(...e)=>{const s=Array.from(e),t=ke.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},subscribePushNotificationMembers:(...e)=>{const s=Array.from(e),t=De.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},getContactInfo:(...e)=>{const r=Array.from(e);return Ue.request(r)},subscribeContactInfo:(...e)=>{const s=Array.from(e),t=Ee.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},getSelfContactInfo:(...e)=>{const r=Array.from(e);return Te.request(r)},blockMember:(...e)=>{const r=Array.from(e);return Be.request(r)},unblockMember:(...e)=>{const r=Array.from(e);return Le.request(r)},getBlockedMembers:(...e)=>{const r=Array.from(e);return xe.request(r)},subscribeBlockedMembers:(...e)=>{const s=Array.from(e),t=Ne.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},getConnectedMembers:(...e)=>{const r=Array.from(e);return je.request(r)},subscribeConnectedMembers:(...e)=>{const s=Array.from(e),t=ze.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},updateConfig:(...e)=>{const r=Array.from(e);return He.request(r)},getConfig:(...e)=>{const r=Array.from(e);return Ke.request(r)},subscribeConfig:(...e)=>{const s=Array.from(e),t=Ve.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},updateRoomSettings:(...e)=>{const r=Array.from(e);return Je.request(r)},disableMembershipEvents:(...e)=>{const r=Array.from(e);return Oe.request(r)},enableMembershipEvents:(...e)=>{const r=Array.from(e);return We.request(r)},addChatMessage:(...e)=>{const r=Array.from(e);return Ge.request(r)},updateChatMessage:(...e)=>{const r=Array.from(e);return Qe.request(r)},removeChatMessage:(...e)=>{const r=Array.from(e);return Xe.request(r)},forwardChatMessage:(...e)=>{const r=Array.from(e);return Ye.request(r)},pinChatMessage:(...e)=>{const r=Array.from(e);return Ze.request(r)},unpinChatMessage:(...e)=>{const r=Array.from(e);return $e.request(r)},startCall:(...e)=>{const r=Array.from(e);return _e.request(r)},joinCall:(...e)=>{const r=Array.from(e);return er.request(r)},leaveCall:(...e)=>{const r=Array.from(e);return rr.request(r)},endCall:(...e)=>{const r=Array.from(e);return sr.request(r)},addCallStream:(...e)=>{const r=Array.from(e);return tr.request(r)},removeCallStream:(...e)=>{const r=Array.from(e);return or.request(r)},getActiveCalls:(...e)=>{const r=Array.from(e);return nr.request(r)},getCalls:(...e)=>{const r=Array.from(e);return ur.request(r)},subscribeActiveCalls:(...e)=>{const s=Array.from(e),t=ar.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},subscribeCalls:(...e)=>{const s=Array.from(e),t=qr.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},addCallStartedEvent:(...e)=>{const r=Array.from(e);return ir.request(r)},addCallHangupEvent:(...e)=>{const r=Array.from(e);return cr.request(r)},addCallMissedEvent:(...e)=>{const r=Array.from(e);return mr.request(r)},addLocationSharedEvent:(...e)=>{const r=Array.from(e);return gr.request(r)},addRoomAvatarChangedEvent:(...e)=>{const r=Array.from(e);return pr.request(r)},addEvent:(...e)=>{const r=Array.from(e);return yr.request(r)},removeEvent:(...e)=>{const r=Array.from(e);return fr.request(r)},getChatMessage:(...e)=>{const r=Array.from(e);return Ar.request(r)},getChatMessageById:(...e)=>{const r=Array.from(e);return dr.request(r)},getChatMessages:(...e)=>{const r=Array.from(e);return br.request(r)},getPinnedChatMessages:(...e)=>{const r=Array.from(e);return Rr.request(r)},getChatLength:(...e)=>{const r=Array.from(e);return lr.request(r)},subscribeChatMessages:(...e)=>{const s=Array.from(e),t=Sr.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},subscribeChatLength:(...e)=>{const s=Array.from(e),t=wr.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},searchChatMessages:(...e)=>{const r=Array.from(e);return vr.request(r)},createChatSearchStream:(...e)=>{const s=Array.from(e),t=Mr.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},sendDMFromContact:(...e)=>{const r=Array.from(e);return hr.request(r)},sendDMRequest:(...e)=>{const r=Array.from(e);return Cr.request(r)},sendInvitations:(...e)=>{const r=Array.from(e);return Pr.request(r)},updatePrivateMailboxRecord:(...e)=>{const r=Array.from(e);return Ir.request(r)},getPrivateMailboxRecords:(...e)=>{const r=Array.from(e);return Fr.request(r)},subscribePrivateMailbox:(...e)=>{const s=Array.from(e),t=kr.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},getSentPrivateMailboxRecords:(...e)=>{const r=Array.from(e);return Dr.request(r)},subscribeSentPrivateMailbox:(...e)=>{const s=Array.from(e),t=Ur.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},getDmByMemberId:(...e)=>{const r=Array.from(e);return Er.request(r)},getDmRequestsByStatus:(...e)=>{const r=Array.from(e);return Tr.request(r)},subscribeDmRequestsByStatus:(...e)=>{const s=Array.from(e),t=Br.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},acceptDmRequest:(...e)=>{const r=Array.from(e);return Lr.request(r)},rejectDmRequest:(...e)=>{const r=Array.from(e);return xr.request(r)},addReaction:(...e)=>{const r=Array.from(e);return Nr.request(r)},removeReaction:(...e)=>{const r=Array.from(e);return jr.request(r)},getLatestReactions:(...e)=>{const r=Array.from(e);return zr.request(r)},getReactions:(...e)=>{const r=Array.from(e);return Hr.request(r)},subscribeReactions:(...e)=>{const s=Array.from(e),t=Kr.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},addChatReport:(...e)=>{const r=Array.from(e);return Vr.request(r)},removeChatReport:(...e)=>{const r=Array.from(e);return Jr.request(r)},reportMember:(...e)=>{const r=Array.from(e);return Or.request(r)},getReportedMembers:(...e)=>{const r=Array.from(e);return Wr.request(r)},subscribeReportedMembers:(...e)=>{const s=Array.from(e),t=Gr.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},getReportedMessages:(...e)=>{const r=Array.from(e);return Qr.request(r)},subscribeReportedMessages:(...e)=>{const s=Array.from(e),t=Xr.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},addFileBlob:(...e)=>{const r=Array.from(e);return Yr.request(r)},addFile:(...e)=>{const r=Array.from(e);return Zr.request(r)},saveFileBlob:(...e)=>{const r=Array.from(e);return $r.request(r)},saveFile:(...e)=>{const r=Array.from(e);return _r.request(r)},subscribeAddFile:(...e)=>{const s=Array.from(e),t=es.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},sendFile:(...e)=>{const r=Array.from(e);return rs.request(r)},removeFile:(...e)=>{const r=Array.from(e);return ss.request(r)},refreshFileLinks:(...e)=>{const r=Array.from(e);return ts.request(r)},subscribeFileInfo:(...e)=>{const s=Array.from(e),t=os.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},clearAllFiles:(...e)=>{const r=Array.from(e);return ns.request(r)},getFileEntry:(...e)=>{const r=Array.from(e);return us.request(r)},getLocalFiles:(...e)=>{const r=Array.from(e);return as.request(r)},getFiles:(...e)=>{const r=Array.from(e);return qs.request(r)},startDownload:(...e)=>{const r=Array.from(e);return is.request(r)},cancelDownload:(...e)=>{const r=Array.from(e);return cs.request(r)},clearFile:(...e)=>{const r=Array.from(e);return ms.request(r)},unclearFile:(...e)=>{const r=Array.from(e);return gs.request(r)},getFileCleared:(...e)=>{const r=Array.from(e);return ps.request(r)},subscribeFileCleared:(...e)=>{const s=Array.from(e),t=ys.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},subscribeFiles:(...e)=>{const s=Array.from(e),t=fs.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},getStats:(...e)=>{const r=Array.from(e);return As.request(r)},subscribeProgress:(...e)=>{const s=Array.from(e),t=ds.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},subscribeSystemUpdateRequest:(...e)=>{const s=Array.from(e),t=bs.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},lookupUsername:(...e)=>{const r=Array.from(e);return Rs.request(r)},lookupUserByMemberId:(...e)=>{const r=Array.from(e);return ls.request(r)},subscribeUsername:(...e)=>{const s=Array.from(e),t=Ss.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},registerUsername:(...e)=>{const r=Array.from(e);return ws.request(r)},updateUsername:(...e)=>{const r=Array.from(e);return vs.request(r)},searchUsername:(...e)=>{const r=Array.from(e);return Ms.request(r)},getReservationsByKey:(...e)=>{const r=Array.from(e);return hs.request(r)},checkUsername:(...e)=>{const r=Array.from(e);return Cs.request(r)},updateRoomPreferences:(...e)=>{const r=Array.from(e);return Ps.request(r)},getRoomPreferences:(...e)=>{const r=Array.from(e);return Is.request(r)},audit:(...e)=>{const r=Array.from(e);return Fs.request(r)},close:(...e)=>{const r=Array.from(e);return ks.request(r)},suspend:(...e)=>{const r=Array.from(e);return Ds.request(r)},resume:(...e)=>{const r=Array.from(e);return Us.request(r)},getDebugFlags:(...e)=>{const r=Array.from(e);return Es.request(r)},updateDebugFlag:(...e)=>{const r=Array.from(e);return Ts.request(r)},repair:(...e)=>{const r=Array.from(e);return Bs.request(r)},rotateWriter:(...e)=>{const r=Array.from(e);return Ls.request(r)},getRoomStats:(...e)=>{const r=Array.from(e);return xs.request(r)},compact:(...e)=>{const r=Array.from(e);return Ns.request(r)},setUnread:(...e)=>{const r=Array.from(e);return js.request(r)},getUnread:(...e)=>{const r=Array.from(e);return zs.request(r)},getUnreadAnchor:(...e)=>{const r=Array.from(e);return Hs.request(r)},setUnreadAnchor:(...e)=>{const r=Array.from(e);return Ks.request(r)},subscribeUnreadAnchor:(...e)=>{const s=Array.from(e),t=Vs.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},subscribeSentLength:(...e)=>{const s=Array.from(e),t=Js.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},createErrorStream:(...e)=>{const s=Array.from(e),t=Os.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},boot:(...e)=>{const r=Array.from(e);return Ws.request(r)},subscribeErrors:(...e)=>{const s=Array.from(e),t=Gs.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},setCallRingingId:(...e)=>{const r=Array.from(e);return Qs.request(r)},subscribeNotifications:(...e)=>{const s=Array.from(e),t=Xs.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},getDHTSettings:(...e)=>{const r=Array.from(e);return Ys.request(r)},updateDHTSettings:(...e)=>{const r=Array.from(e);return Zs.request(r)},setRoomFavorite:(...e)=>{const r=Array.from(e);return $s.request(r)},clearOldFiles:(...e)=>{const r=Array.from(e);return _s.request(r)}},preferences:{subscribe:(...e)=>{const s=Array.from(e),t=et.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},update:(...e)=>{const r=Array.from(e);return rt.request(r)},query:(...e)=>{const r=Array.from(e);return st.request(r)}},call:{authorize:(...e)=>{const r=Array.from(e);return tt.request(r)},deauthorize:(...e)=>{const r=Array.from(e);return ot.request(r)},joinPeer:(...e)=>{const r=Array.from(e);return nt.request(r)},leavePeer:(...e)=>{const r=Array.from(e);return ut.request(r)},requestTrack:(...e)=>{const r=Array.from(e);return at.request(r)},unrequestTrack:(...e)=>{const r=Array.from(e);return qt.request(r)},signalMedia:(...e)=>{const r=Array.from(e);return it.request(r)},getRequestedTracks:(...e)=>{const r=Array.from(e);return ct.request(r)},subscribeRequestedTracks:(...e)=>{const s=Array.from(e),t=mt.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},subscribeMediaSignals:(...e)=>{const s=Array.from(e),t=gt.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},subscribeProxyUpdates:(...e)=>{const s=Array.from(e),t=pt.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},shareTrack:(...e)=>{const r=Array.from(e);return yt.request(r)},unshareTrack:(...e)=>{const r=Array.from(e);return ft.request(r)},relayTrack:(...e)=>{const r=Array.from(e);return At.request(r)},unrelayTrack:(...e)=>{const r=Array.from(e);return dt.request(r)},subscribeAvailableTracks:(...e)=>{const s=Array.from(e),t=bt.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},getAvailableTracks:(...e)=>{const r=Array.from(e);return Rt.request(r)},setPresent:(...e)=>{const r=Array.from(e);return lt.request(r)},setNotPresent:(...e)=>{const r=Array.from(e);return St.request(r)},subscribePresence:(...e)=>{const s=Array.from(e),t=wt.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},getPresence:(...e)=>{const r=Array.from(e);return vt.request(r)}},tracing:{start:(...e)=>{const r=Array.from(e);return Mt.request(r)},addFrontendTrace:(...e)=>{const r=Array.from(e);return ht.request(r)}},console:{log:(...e)=>{const r=Array.from(e);return Ct.request(r)},warn:(...e)=>{const r=Array.from(e);return Pt.request(r)},error:(...e)=>{const r=Array.from(e);return It.request(r)}},network:{subscribe:(...e)=>{const s=Array.from(e),t=Ft.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},query:(...e)=>{const r=Array.from(e);return kt.request(r)},subscribeDebug:(...e)=>{const s=Array.from(e),t=Dt.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t},debug:(...e)=>{const r=Array.from(e);return Ut.request(r)}},error:{subscribe:(...e)=>{const s=Array.from(e),t=Et.createRequestStream();return t.write(s),t.end(),t.on("error",e=>r(e)),t}},debug:{getCurrentRoomStats:(...e)=>{const r=Array.from(e);return Tt.request(r)},enableInspector:(...e)=>{const r=Array.from(e);return Bt.request(r)},disableInspector:(...e)=>{const r=Array.from(e);return Lt.request(r)},getInspectorKey:(...e)=>{const r=Array.from(e);return xt.request(r)},processTop:(...e)=>{const r=Array.from(e);return Nt.request(r)},heapSnapshot:(...e)=>{const r=Array.from(e);return jt.request(r)},hash:(...e)=>{const r=Array.from(e);return zt.request(r)},generateSyntheticError:(...e)=>{const r=Array.from(e);return Ht.request(r)},resetUnreads:(...e)=>{const r=Array.from(e);return Kt.request(r)}},pear:{teardown:(...e)=>{const r=Array.from(e);return Vt.request(r)},selfDestruct:(...e)=>{const r=Array.from(e);return Jt.request(r)}},feedback:{send:(...e)=>{const r=Array.from(e);return Ot.request(r)}}}};
@holepunchto/keet-core/lib/rpc/server.js +1 -0
……@@ -0,0 +1 @@
1const e=require("tiny-buffer-rpc/any"),{pipeline:r}=require("streamx");function s(){}module.exports=function(t,o){o.register(0,{request:e,response:e,onrequest:e=>t.api.swarm.ready(...e)}),o.register(1,{request:e,response:e,onrequest:e=>t.api.core.getVersion(...e)}),o.register(2,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeRoomVersion(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(3,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeForceUpdates(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(4,{request:e,response:e,onrequest:e=>t.api.core.upgradeRoom(...e)}),o.register(5,{request:e,response:e,onrequest:e=>t.api.core.updateUserSettings(...e)}),o.register(6,{request:e,response:e,onrequest:e=>t.api.core.getIdentity(...e)}),o.register(7,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeIdentity(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(8,{request:e,response:e,onrequest:e=>t.api.core.generateIdentity(...e)}),o.register(9,{request:e,response:e,onrequest:e=>t.api.core.restoreIdentity(...e)}),o.register(10,{request:e,response:e,onrequest:e=>t.api.core.getRecoveryPhrase(...e)}),o.register(11,{request:e,response:e,onrequest:e=>t.api.core.getEncryptedRecoveryPhrase(...e)}),o.register(12,{request:e,response:e,onrequest:e=>t.api.core.decryptEncryptedRecoveryPhrase(...e)}),o.register(13,{request:e,response:e,onrequest:e=>t.api.core.freeRecoveryPhrase(...e)}),o.register(14,{request:e,response:e,onrequest:e=>t.api.core.confirmRecoveryPhrase(...e)}),o.register(15,{request:e,response:e,onrequest:e=>t.api.core.storeRecoveryPhrase(...e)}),o.register(16,{request:e,response:e,onrequest:e=>t.api.core.confirmIdentity(...e)}),o.register(17,{request:e,response:e,onrequest:e=>t.api.core.confirmPairingRequest(...e)}),o.register(18,{request:e,response:e,dedup:!1,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeIdentityPairingRequests(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(19,{request:e,response:e,onrequest:e=>t.api.core.updateIdentityProfile(...e)}),o.register(20,{request:e,response:e,onrequest:e=>t.api.core.updateIdentityDevice(...e)}),o.register(21,{request:e,response:e,onrequest:e=>t.api.core.removeIdentityDevice(...e)}),o.register(22,{request:e,response:e,onrequest:e=>t.api.core.getLinkInfo(...e)}),o.register(23,{request:e,response:e,onrequest:e=>t.api.core.startPairingIdentity(...e)}),o.register(24,{request:e,response:e,onrequest:e=>t.api.core.pairIdentity(...e)}),o.register(25,{request:e,response:e,onrequest:e=>t.api.core.createRoom(...e)}),o.register(26,{request:e,response:e,onrequest:e=>t.api.core.pairRoom(...e)}),o.register(27,{request:e,response:e,onrequest:e=>t.api.core.leaveRoom(...e)}),o.register(28,{request:e,response:e,onrequest:e=>t.api.core.startPairingRoom(...e)}),o.register(29,{request:e,response:e,onrequest:e=>t.api.core.stopPairingRoom(...e)}),o.register(30,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribePendingRooms(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(31,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribePushNotificationChanges(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(32,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeActivateRoom(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(33,{request:e,response:e,onrequest:e=>t.api.core.getRoomKeys(...e)}),o.register(34,{request:e,response:e,onrequest:e=>t.api.core.resyncPrivateProfile(...e)}),o.register(35,{request:e,response:e,onrequest:e=>t.api.core.getTipSize(...e)}),o.register(36,{request:e,response:e,onrequest:e=>t.api.core.bookmark(...e)}),o.register(37,{request:e,response:e,onrequest:e=>t.api.core.unbookmark(...e)}),o.register(38,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeBookmarks(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(39,{request:e,response:e,onrequest:e=>t.api.core.getRoomInfo(...e)}),o.register(40,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeRoomInfo(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(41,{request:e,response:e,onrequest:e=>t.api.core.searchRooms(...e)}),o.register(42,{request:e,response:e,onrequest:e=>t.api.core.getRecentRooms(...e)}),o.register(43,{request:e,response:e,onrequest:e=>t.api.core.getLocalRoomMetadata(...e)}),o.register(44,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeRecentRooms(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(45,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeFavoriteRooms(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(46,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeUnreadActivity(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(47,{request:e,response:e,onrequest:e=>t.api.core.setRoomUnread(...e)}),o.register(48,{request:e,response:e,onrequest:e=>t.api.core.bumpRoomPriority(...e)}),o.register(49,{request:e,response:e,onrequest:e=>t.api.core.addDevice(...e)}),o.register(50,{request:e,response:e,onrequest:e=>t.api.core.removeDevice(...e)}),o.register(51,{request:e,response:e,onrequest:e=>t.api.core.getDevice(...e)}),o.register(52,{request:e,response:e,onrequest:e=>t.api.core.getDevices(...e)}),o.register(53,{request:e,response:e,onrequest:e=>t.api.core.getDevicesByMemberId(...e)}),o.register(54,{request:e,response:e,onrequest:e=>t.api.core.getCurrentDeviceId(...e)}),o.register(55,{request:e,response:e,onrequest:e=>t.api.core.moveIndexer(...e)}),o.register(56,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeDevice(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(57,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeDevices(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(58,{request:e,response:e,onrequest:e=>t.api.core.createIdentityInvitation(...e)}),o.register(59,{request:e,response:e,onrequest:e=>t.api.core.createInvitation(...e)}),o.register(60,{request:e,response:e,onrequest:e=>t.api.core.updateMember(...e)}),o.register(61,{request:e,response:e,onrequest:e=>t.api.core.isMemberMuted(...e)}),o.register(62,{request:e,response:e,onrequest:e=>t.api.core.getMember(...e)}),o.register(63,{request:e,response:e,onrequest:e=>t.api.core.removeMember(...e)}),o.register(64,{request:e,response:e,onrequest:e=>t.api.core.getMembers(...e)}),o.register(65,{request:e,response:e,onrequest:e=>t.api.core.getActiveMembers(...e)}),o.register(66,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeActiveMembers(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(67,{request:e,response:e,onrequest:e=>t.api.core.getModerators(...e)}),o.register(68,{request:e,response:e,onrequest:e=>t.api.core.getMemberCount(...e)}),o.register(69,{request:e,response:e,onrequest:e=>t.api.core.waitUntilJoined(...e)}),o.register(70,{request:e,response:e,onrequest:e=>t.api.core.getMemberForDevice(...e)}),o.register(71,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeMemberCount(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(72,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeMember(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(73,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeMembers(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(74,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeModerators(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(75,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeMemberForDevice(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(76,{request:e,response:e,onrequest:e=>t.api.core.changeMemberRole(...e)}),o.register(77,{request:e,response:e,onrequest:e=>t.api.core.muteMember(...e)}),o.register(78,{request:e,response:e,onrequest:e=>t.api.core.unmuteMember(...e)}),o.register(79,{request:e,response:e,onrequest:e=>t.api.core.getSearchMembers(...e)}),o.register(80,{request:e,response:e,onrequest:e=>t.api.core.getPushNotificationMembers(...e)}),o.register(81,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeSearchMembers(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(82,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribePushNotificationMembers(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(83,{request:e,response:e,onrequest:e=>t.api.core.getContactInfo(...e)}),o.register(84,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeContactInfo(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(85,{request:e,response:e,onrequest:e=>t.api.core.getSelfContactInfo(...e)}),o.register(86,{request:e,response:e,onrequest:e=>t.api.core.blockMember(...e)}),o.register(87,{request:e,response:e,onrequest:e=>t.api.core.unblockMember(...e)}),o.register(88,{request:e,response:e,onrequest:e=>t.api.core.getBlockedMembers(...e)}),o.register(89,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeBlockedMembers(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(90,{request:e,response:e,onrequest:e=>t.api.core.getConnectedMembers(...e)}),o.register(91,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeConnectedMembers(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(92,{request:e,response:e,onrequest:e=>t.api.core.updateConfig(...e)}),o.register(93,{request:e,response:e,onrequest:e=>t.api.core.getConfig(...e)}),o.register(94,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeConfig(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(95,{request:e,response:e,onrequest:e=>t.api.core.updateRoomSettings(...e)}),o.register(96,{request:e,response:e,onrequest:e=>t.api.core.disableMembershipEvents(...e)}),o.register(97,{request:e,response:e,onrequest:e=>t.api.core.enableMembershipEvents(...e)}),o.register(98,{request:e,response:e,onrequest:e=>t.api.core.addChatMessage(...e)}),o.register(99,{request:e,response:e,onrequest:e=>t.api.core.updateChatMessage(...e)}),o.register(100,{request:e,response:e,onrequest:e=>t.api.core.removeChatMessage(...e)}),o.register(101,{request:e,response:e,onrequest:e=>t.api.core.forwardChatMessage(...e)}),o.register(102,{request:e,response:e,onrequest:e=>t.api.core.pinChatMessage(...e)}),o.register(103,{request:e,response:e,onrequest:e=>t.api.core.unpinChatMessage(...e)}),o.register(104,{request:e,response:e,onrequest:e=>t.api.core.startCall(...e)}),o.register(105,{request:e,response:e,onrequest:e=>t.api.core.joinCall(...e)}),o.register(106,{request:e,response:e,onrequest:e=>t.api.core.leaveCall(...e)}),o.register(107,{request:e,response:e,onrequest:e=>t.api.core.endCall(...e)}),o.register(108,{request:e,response:e,onrequest:e=>t.api.core.addCallStream(...e)}),o.register(109,{request:e,response:e,onrequest:e=>t.api.core.removeCallStream(...e)}),o.register(110,{request:e,response:e,onrequest:e=>t.api.core.getActiveCalls(...e)}),o.register(111,{request:e,response:e,onrequest:e=>t.api.core.getCalls(...e)}),o.register(112,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeActiveCalls(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(113,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeCalls(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(114,{request:e,response:e,onrequest:e=>t.api.core.addCallStartedEvent(...e)}),o.register(115,{request:e,response:e,onrequest:e=>t.api.core.addCallHangupEvent(...e)}),o.register(116,{request:e,response:e,onrequest:e=>t.api.core.addCallMissedEvent(...e)}),o.register(117,{request:e,response:e,onrequest:e=>t.api.core.addLocationSharedEvent(...e)}),o.register(118,{request:e,response:e,onrequest:e=>t.api.core.addRoomAvatarChangedEvent(...e)}),o.register(119,{request:e,response:e,onrequest:e=>t.api.core.addEvent(...e)}),o.register(120,{request:e,response:e,onrequest:e=>t.api.core.removeEvent(...e)}),o.register(121,{request:e,response:e,onrequest:e=>t.api.core.getChatMessage(...e)}),o.register(122,{request:e,response:e,onrequest:e=>t.api.core.getChatMessageById(...e)}),o.register(123,{request:e,response:e,onrequest:e=>t.api.core.getChatMessages(...e)}),o.register(124,{request:e,response:e,onrequest:e=>t.api.core.getPinnedChatMessages(...e)}),o.register(125,{request:e,response:e,onrequest:e=>t.api.core.getChatLength(...e)}),o.register(126,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeChatMessages(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(127,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeChatLength(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(128,{request:e,response:e,onrequest:e=>t.api.core.searchChatMessages(...e)}),o.register(129,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.createChatSearchStream(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(130,{request:e,response:e,onrequest:e=>t.api.core.sendDMFromContact(...e)}),o.register(131,{request:e,response:e,onrequest:e=>t.api.core.sendDMRequest(...e)}),o.register(132,{request:e,response:e,onrequest:e=>t.api.core.sendInvitations(...e)}),o.register(133,{request:e,response:e,onrequest:e=>t.api.core.updatePrivateMailboxRecord(...e)}),o.register(134,{request:e,response:e,onrequest:e=>t.api.core.getPrivateMailboxRecords(...e)}),o.register(135,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribePrivateMailbox(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(136,{request:e,response:e,onrequest:e=>t.api.core.getSentPrivateMailboxRecords(...e)}),o.register(137,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeSentPrivateMailbox(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(138,{request:e,response:e,onrequest:e=>t.api.core.getDmByMemberId(...e)}),o.register(139,{request:e,response:e,onrequest:e=>t.api.core.getDmRequestsByStatus(...e)}),o.register(140,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeDmRequestsByStatus(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(141,{request:e,response:e,onrequest:e=>t.api.core.acceptDmRequest(...e)}),o.register(142,{request:e,response:e,onrequest:e=>t.api.core.rejectDmRequest(...e)}),o.register(143,{request:e,response:e,onrequest:e=>t.api.core.addReaction(...e)}),o.register(144,{request:e,response:e,onrequest:e=>t.api.core.removeReaction(...e)}),o.register(145,{request:e,response:e,onrequest:e=>t.api.core.getLatestReactions(...e)}),o.register(146,{request:e,response:e,onrequest:e=>t.api.core.getReactions(...e)}),o.register(147,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeReactions(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(148,{request:e,response:e,onrequest:e=>t.api.core.addChatReport(...e)}),o.register(149,{request:e,response:e,onrequest:e=>t.api.core.removeChatReport(...e)}),o.register(150,{request:e,response:e,onrequest:e=>t.api.core.reportMember(...e)}),o.register(151,{request:e,response:e,onrequest:e=>t.api.core.getReportedMembers(...e)}),o.register(152,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeReportedMembers(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(153,{request:e,response:e,onrequest:e=>t.api.core.getReportedMessages(...e)}),o.register(154,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeReportedMessages(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(155,{request:e,response:e,onrequest:e=>t.api.core.addFileBlob(...e)}),o.register(156,{request:e,response:e,onrequest:e=>t.api.core.addFile(...e)}),o.register(157,{request:e,response:e,onrequest:e=>t.api.core.saveFileBlob(...e)}),o.register(158,{request:e,response:e,onrequest:e=>t.api.core.saveFile(...e)}),o.register(159,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeAddFile(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(160,{request:e,response:e,onrequest:e=>t.api.core.sendFile(...e)}),o.register(161,{request:e,response:e,onrequest:e=>t.api.core.removeFile(...e)}),o.register(162,{request:e,response:e,onrequest:e=>t.api.core.refreshFileLinks(...e)}),o.register(163,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeFileInfo(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(164,{request:e,response:e,onrequest:e=>t.api.core.clearAllFiles(...e)}),o.register(165,{request:e,response:e,onrequest:e=>t.api.core.getFileEntry(...e)}),o.register(166,{request:e,response:e,onrequest:e=>t.api.core.getLocalFiles(...e)}),o.register(167,{request:e,response:e,onrequest:e=>t.api.core.getFiles(...e)}),o.register(168,{request:e,response:e,onrequest:e=>t.api.core.startDownload(...e)}),o.register(169,{request:e,response:e,onrequest:e=>t.api.core.cancelDownload(...e)}),o.register(170,{request:e,response:e,onrequest:e=>t.api.core.clearFile(...e)}),o.register(171,{request:e,response:e,onrequest:e=>t.api.core.unclearFile(...e)}),o.register(172,{request:e,response:e,onrequest:e=>t.api.core.getFileCleared(...e)}),o.register(173,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeFileCleared(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(174,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeFiles(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(175,{request:e,response:e,onrequest:e=>t.api.core.getStats(...e)}),o.register(176,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeProgress(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(177,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeSystemUpdateRequest(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(178,{request:e,response:e,onrequest:e=>t.api.core.lookupUsername(...e)}),o.register(179,{request:e,response:e,onrequest:e=>t.api.core.lookupUserByMemberId(...e)}),o.register(180,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeUsername(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(181,{request:e,response:e,onrequest:e=>t.api.core.registerUsername(...e)}),o.register(182,{request:e,response:e,onrequest:e=>t.api.core.updateUsername(...e)}),o.register(183,{request:e,response:e,onrequest:e=>t.api.core.searchUsername(...e)}),o.register(184,{request:e,response:e,onrequest:e=>t.api.core.getReservationsByKey(...e)}),o.register(185,{request:e,response:e,onrequest:e=>t.api.core.checkUsername(...e)}),o.register(186,{request:e,response:e,onrequest:e=>t.api.core.updateRoomPreferences(...e)}),o.register(187,{request:e,response:e,onrequest:e=>t.api.core.getRoomPreferences(...e)}),o.register(188,{request:e,response:e,onrequest:e=>t.api.core.audit(...e)}),o.register(189,{request:e,response:e,onrequest:e=>t.api.core.close(...e)}),o.register(190,{request:e,response:e,onrequest:e=>t.api.core.suspend(...e)}),o.register(191,{request:e,response:e,onrequest:e=>t.api.core.resume(...e)}),o.register(192,{request:e,response:e,onrequest:e=>t.api.core.getDebugFlags(...e)}),o.register(193,{request:e,response:e,onrequest:e=>t.api.core.updateDebugFlag(...e)}),o.register(194,{request:e,response:e,onrequest:e=>t.api.core.repair(...e)}),o.register(195,{request:e,response:e,onrequest:e=>t.api.core.rotateWriter(...e)}),o.register(196,{request:e,response:e,onrequest:e=>t.api.core.getRoomStats(...e)}),o.register(197,{request:e,response:e,onrequest:e=>t.api.core.compact(...e)}),o.register(198,{request:e,response:e,onrequest:e=>t.api.core.setUnread(...e)}),o.register(199,{request:e,response:e,onrequest:e=>t.api.core.getUnread(...e)}),o.register(200,{request:e,response:e,onrequest:e=>t.api.core.getUnreadAnchor(...e)}),o.register(201,{request:e,response:e,onrequest:e=>t.api.core.setUnreadAnchor(...e)}),o.register(202,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeUnreadAnchor(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(203,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeSentLength(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(204,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.createErrorStream(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(205,{request:e,response:e,onrequest:e=>t.api.core.boot(...e)}),o.register(206,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeErrors(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(207,{request:e,response:e,onrequest:e=>t.api.core.setCallRingingId(...e)}),o.register(208,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.core.subscribeNotifications(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(209,{request:e,response:e,onrequest:e=>t.api.core.getDHTSettings(...e)}),o.register(210,{request:e,response:e,onrequest:e=>t.api.core.updateDHTSettings(...e)}),o.register(211,{request:e,response:e,onrequest:e=>t.api.core.setRoomFavorite(...e)}),o.register(212,{request:e,response:e,onrequest:e=>t.api.core.clearOldFiles(...e)}),o.register(213,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.preferences.subscribe(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(214,{request:e,response:e,onrequest:e=>t.api.preferences.update(...e)}),o.register(215,{request:e,response:e,onrequest:e=>t.api.preferences.query(...e)}),o.register(216,{request:e,response:e,onrequest:e=>t.api.call.authorize(...e)}),o.register(217,{request:e,response:e,onrequest:e=>t.api.call.deauthorize(...e)}),o.register(218,{request:e,response:e,onrequest:e=>t.api.call.joinPeer(...e)}),o.register(219,{request:e,response:e,onrequest:e=>t.api.call.leavePeer(...e)}),o.register(220,{request:e,response:e,onrequest:e=>t.api.call.requestTrack(...e)}),o.register(221,{request:e,response:e,onrequest:e=>t.api.call.unrequestTrack(...e)}),o.register(222,{request:e,response:e,onrequest:e=>t.api.call.signalMedia(...e)}),o.register(223,{request:e,response:e,onrequest:e=>t.api.call.getRequestedTracks(...e)}),o.register(224,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.call.subscribeRequestedTracks(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(225,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.call.subscribeMediaSignals(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(226,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.call.subscribeProxyUpdates(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(227,{request:e,response:e,onrequest:e=>t.api.call.shareTrack(...e)}),o.register(228,{request:e,response:e,onrequest:e=>t.api.call.unshareTrack(...e)}),o.register(229,{request:e,response:e,onrequest:e=>t.api.call.relayTrack(...e)}),o.register(230,{request:e,response:e,onrequest:e=>t.api.call.unrelayTrack(...e)}),o.register(231,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.call.subscribeAvailableTracks(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(232,{request:e,response:e,onrequest:e=>t.api.call.getAvailableTracks(...e)}),o.register(233,{request:e,response:e,onrequest:e=>t.api.call.setPresent(...e)}),o.register(234,{request:e,response:e,onrequest:e=>t.api.call.setNotPresent(...e)}),o.register(235,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.call.subscribePresence(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(236,{request:e,response:e,onrequest:e=>t.api.call.getPresence(...e)}),o.register(237,{request:e,response:e,onrequest:e=>t.api.tracing.start(...e)}),o.register(238,{request:e,response:e,onrequest:e=>t.api.tracing.addFrontendTrace(...e)}),o.register(239,{request:e,response:e,onrequest:e=>t.api.console.log(...e)}),o.register(240,{request:e,response:e,onrequest:e=>t.api.console.warn(...e)}),o.register(241,{request:e,response:e,onrequest:e=>t.api.console.error(...e)}),o.register(242,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.network.subscribe(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(243,{request:e,response:e,onrequest:e=>t.api.network.query(...e)}),o.register(244,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.network.subscribeDebug(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(245,{request:e,response:e,onrequest:e=>t.api.network.debug(...e)}),o.register(246,{request:e,response:e,dedup:!0,onstream:async e=>{try{for await(const o of e){const n=t.api.error.subscribe(...o);r(n,e).on("error",s)}}catch(r){e.destroy(r)}}}),o.register(247,{request:e,response:e,onrequest:e=>t.api.debug.getCurrentRoomStats(...e)}),o.register(248,{request:e,response:e,onrequest:e=>t.api.debug.enableInspector(...e)}),o.register(249,{request:e,response:e,onrequest:e=>t.api.debug.disableInspector(...e)}),o.register(250,{request:e,response:e,onrequest:e=>t.api.debug.getInspectorKey(...e)}),o.register(251,{request:e,response:e,onrequest:e=>t.api.debug.processTop(...e)}),o.register(252,{request:e,response:e,onrequest:e=>t.api.debug.heapSnapshot(...e)}),o.register(253,{request:e,response:e,onrequest:e=>t.api.debug.hash(...e)}),o.register(254,{request:e,response:e,onrequest:e=>t.api.debug.generateSyntheticError(...e)}),o.register(255,{request:e,response:e,onrequest:e=>t.api.debug.resetUnreads(...e)}),o.register(256,{request:e,response:e,onrequest:e=>t.api.pear.teardown(...e)}),o.register(257,{request:e,response:e,onrequest:e=>t.api.pear.selfDestruct(...e)}),o.register(258,{request:e,response:e,onrequest:e=>t.api.feedback.send(...e)})};
@holepunchto/keet-core/package.json +185 -0
……@@ -0,0 +1,185 @@
1{
2 "name": "@holepunchto/keet-core",
3 "version": "4.14.4",
4 "description": "A version of keet-core built with rocksdb and hyperdb",
5 "main": "index.js",
6 "imports": {
7 "events": {
8 "bare": "bare-events",
9 "default": "events"
10 },
11 "path": {
12 "bare": "bare-path",
13 "default": "path"
14 },
15 "fs": {
16 "bare": "bare-fs",
17 "default": "fs"
18 },
19 "fs/*": {
20 "bare": "bare-fs/*",
21 "default": "fs/*"
22 },
23 "fetch": {
24 "bare": "bare-fetch",
25 "default": "fetch"
26 },
27 "process": {
28 "bare": "bare-process",
29 "default": "process"
30 },
31 "#runtime": {
32 "pear": "./workers/desktop.js",
33 "default": "./workers/mobile.js"
34 }
35 },
36 "exports": {
37 ".": "./index.js",
38 "./client": "./lib/client/index.js",
39 "./client/view": "./lib/client/view.js",
40 "./rpc/client": "./lib/rpc/client.js",
41 "./rpc/server": "./lib/rpc/server.js",
42 "./schemas": "./schema/index.js",
43 "./schemas/versions": "./schema/versions.js",
44 "./errors": "./lib/errors/index.js",
45 "./push": "./lib/push/index.js",
46 "./features": "./lib/features.js",
47 "./legacy-constants": "./lib/legacy-constants.js",
48 "./debugging": "./lib/core/debug/debugging.js",
49 "./package.json": "./package.json"
50 },
51 "files": [
52 "index.js",
53 "env.json",
54 "lib",
55 "schema",
56 "workers"
57 ],
58 "scripts": {
59 "format": "prettier . --write",
60 "lint": "prettier . --check && lunte",
61 "test": "brittle-bare test/index.js",
62 "test:consistency": "brittle-bare test/fuzz/consistency-test.js",
63 "test:chaos": "brittle-bare test/core/chaos.js",
64 "test:prod": "prettier . --check && PROD_SPEC=1 brittle-bare test/index.js",
65 "test:integration": "brittle-bare test/integration/index.js",
66 "test:e2e": "scripts/is-not-linux || brittle-bare test/e2e/index.js",
67 "build": "npm run build:rpc && npm run build:schema && prettier lib/rpc --write",
68 "build:rpc": "bare scripts/build/rpc.js",
69 "build:schema": "bare scripts/build/schema.js",
70 "build:config": "bare scripts/build/config.js",
71 "ops": "bare scripts/ops",
72 "debug:rotate-password": "bare scripts/debug/rotate-password.js"
73 },
74 "repository": {
75 "type": "git",
76 "url": "git+https://github.com/holepunchto/keet-core.git"
77 },
78 "author": "Holepunch",
79 "license": "UNLICENSED",
80 "bugs": {
81 "url": "https://github.com/holepunchto/keet-core/issues"
82 },
83 "homepage": "https://github.com/holepunchto/keet-core#readme",
84 "dependencies": {
85 "@holepunchto/hyperdiscovery": "^1.1.0",
86 "@holepunchto/hyperindex": "2.3.5",
87 "@holepunchto/keet-call": "^10.3.3",
88 "@holepunchto/keet-core-api": "^2.0.0",
89 "@holepunchto/keet-debug-helper": "^2.0.3",
90 "@holepunchto/keet-default-config": "^3.0.0",
91 "@holepunchto/keet-indexing": "6.3.2",
92 "@holepunchto/keet-push": "^4.0.0",
93 "@holepunchto/keet-registry": "^3.3.1",
94 "@holepunchto/keet-registry-client": "^5.0.0",
95 "@holepunchto/keet-unread-anchors": "^2.0.0",
96 "@holepunchto/legacy-keet-core-schemas": "^2.17.0",
97 "autobase": "^7.13.2",
98 "b4a": "^1.6.7",
99 "bare-addon-resolve": "^1.9.4",
100 "bare-bundle": "^1.8.4",
101 "bare-console": "^6.1.0",
102 "bare-events": "^2.8.2",
103 "bare-file-logger": "^1.2.1",
104 "bare-fs": "^4.4.4",
105 "bare-inspector": "^4.0.3",
106 "bare-logger": "^2.0.2",
107 "bare-performance": "^1.3.0",
108 "bare-semver": "^1.0.2",
109 "bare-zlib": "^1.3.1",
110 "bip39-mnemonic": "^2.4.0",
111 "blind-peering": "^2.0.1",
112 "bundlebee": "^1.2.0",
113 "compact-encoding": "^2.16.1",
114 "corestore": "^7.6.0",
115 "db-lock": "^1.2.0",
116 "deterministic-sealed-box": "^1.0.0",
117 "framed-stream": "^1.0.1",
118 "fs-native-lock": "^1.2.0",
119 "hrpc": "^4.1.0",
120 "hyperblobs": "^2.8.0",
121 "hyperconf": "^1.0.1",
122 "hypercore-blob-server": "^1.9.0",
123 "hypercore-crypto": "^3.4.2",
124 "hypercore-id-encoding": "^1.3.0",
125 "hypercore-proof-queue": "^2.0.2",
126 "hypercore-storage": "^2.0.0",
127 "hyperdb": "^5.0.0",
128 "hyperdht": "^6.28.0",
129 "hyperdispatch": "^1.1.0",
130 "hyperschema": "^1.10.4",
131 "hyperswarm": "^4.11.5",
132 "keet-identity-key": "^3.1.0",
133 "multi-profile-store": "^1.0.1",
134 "process-top": "^1.6.0",
135 "promaphore": "^1.0.0",
136 "protomux-rpc-client": "^2.0.1",
137 "protomux-wakeup": "^2.2.2",
138 "rache": "^1.0.0",
139 "ready-guard": "^1.0.0",
140 "resolve-reject-promise": "^1.1.0",
141 "rocksdb-blobs": "^1.0.0",
142 "rocksdb-native": "^3.5.10",
143 "safety-catch": "^1.0.2",
144 "scope-lock": "^1.2.4",
145 "sentry-bare": "^0.1.0",
146 "sodium-native": "^5.0.1",
147 "suspendify": "^1.7.0",
148 "task-backoff": "^1.0.1",
149 "tiny-buffer-rpc": "^2.3.1",
150 "tiny-preferences": "^1.1.0",
151 "uncaughts": "^1.1.1",
152 "xache": "^1.2.1",
153 "z32": "^1.1.0"
154 },
155 "devDependencies": {
156 "@holepunchto/keet-fcm-gatekeeper": "^1.0.0",
157 "@hyperswarm/rpc": "^3.4.1",
158 "@holepunchto/hyperschema-regen": "^2.0.7",
159 "@holepunchto/keet-package": "^3.0.0",
160 "@holepunchto/keet-registry-service": "^6.0.0",
161 "@hyperswarm/testnet": "^3.1.4",
162 "bare-channel": "^5.2.0",
163 "bare-fetch": "^2.2.1",
164 "bare-path": "^3.0.0",
165 "bare-process": "^4.2.1",
166 "bare-subprocess": "^5.1.0",
167 "blind-peer": "^3.2.0",
168 "brittle": "^3.7.0",
169 "graceful-goodbye": "^1.3.3",
170 "hyperbee": "^2.20.4",
171 "hyperbee2": "^2.9.1",
172 "hypercore": "^11.26.0",
173 "hyperdrive": "^12.2.0",
174 "hypermininet": "^1.4.0",
175 "lunte": "^1.3.0",
176 "math-random-seed": "^2.0.0",
177 "passthrough-pair": "^1.0.0",
178 "prettier": "^3.6.2",
179 "prettier-config-holepunch": "^2.0.0",
180 "protomux-rpc-router": "^1.2.0",
181 "random-bytes-seed": "^2.0.1",
182 "tar-fs": "^3.0.8",
183 "test-tmp": "^1.3.0"
184 }
185}
@holepunchto/keet-core/schema/api/call/index.js +1 -0
……@@ -0,0 +1 @@
1module.exports=function(o){};
@holepunchto/keet-core/schema/api/common.js +1 -0
……@@ -0,0 +1 @@
1function e(e=[]){return[{name:"header",type:"@api/request-header",required:!0},...e]}function r(e=[]){return[{name:"header",type:"@api/response-header",required:!0},...e]}function n(e=[]){return[{name:"clock",type:"uint",required:!0},...e]}function t(){return[{name:"clock",type:"uint",required:!0}]}module.exports={createRequest:e,createResponse:r,createWant:n,createUnwant:t};
@holepunchto/keet-core/schema/api/core/files.js +1 -0
……@@ -0,0 +1 @@
1module.exports=function(o){};
@holepunchto/keet-core/schema/api/core/identity.js +1 -0
……@@ -0,0 +1 @@
1const{createRequest:e,createWant:t,createUnwant:i}=require("../common.js");module.exports=function(r){r.register({name:"update-profile-request",fields:e([{name:"displayName",type:"string",required:!0},{name:"avatar",type:"@api/core/inline-avatar"}])}),r.register({name:"want-identity",fields:t([])}),r.register({name:"unwant-identity",fields:i()}),r.register({name:"identity-status",fields:[{name:"isConfirmed",type:"bool"},{name:"isLoggedOut",type:"bool"}]}),r.register({name:"identity",fields:[{name:"memberKey",type:"@keet/member-key",required:!0},{name:"status",type:"@api/core/identity-status",required:!0},{name:"deviceKeys",type:"@keet/device-key",array:!0,required:!0}]}),r.register({name:"identity-member",fields:[{name:"memberKey",type:"@keet/member-key",required:!0}]}),r.register({name:"identity-device",fields:[{name:"deviceKey",type:"@keet/device-key",required:!0}]})};
@holepunchto/keet-core/schema/api/core/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("./identity"),r=require("./pairing"),i=require("./files"),a=require("./users"),n=require("./room");module.exports=function(t){t.register({name:"inline-avatar",alias:"buffer"}),t.register({name:"have",compact:!0,fields:[{name:"clock",type:"uint",required:!0}]}),n(t),a(t),i(t),r(t),e(t)};
@holepunchto/keet-core/schema/api/core/pairing.js +1 -0
……@@ -0,0 +1 @@
1const{createRequest:e,createResponse:i,createWant:r,createUnwant:t}=require("../common.js");module.exports=function(n){n.register({name:"want-pairing",fields:r([])}),n.register({name:"unwant-pairing",fields:t([])}),n.register({name:"pending-invitations",fields:[{name:"invitations",type:"@keet-private-id/pending-invitation",array:!0,required:!0}]}),n.register({name:"join-request",fields:[{name:"roomKey",type:"@keet/room-key",required:!0},{name:"request",type:"@keet/join-request",required:!0}]}),n.register({name:"join-requests",fields:[{name:"requests",type:"@api/core/join-request",array:!0,required:!0}]}),n.register({name:"pairing",fields:[{name:"pendingInvitations",type:"@keet-private-id/pending-invitation",array:!0,required:!0},{name:"identityJoinRequests",type:"@keet/join-request",array:!0,required:!0}]}),n.register({name:"start-pairing-request",fields:e([{name:"invitation",type:"string",required:!0},{name:"isIdentity",type:"bool"}])}),n.register({name:"start-pairing-response",fields:i([])}),n.register({name:"invitation-permissions",fields:[{name:"canModerate",type:"bool"},{name:"canAdmin",type:"bool"},{name:"requiresConfirmation",type:"bool"},{name:"isReadOnly",type:"bool"}]}),n.register({name:"create-room-invitation-request",fields:e([{name:"roomKey",type:"@keet/room-key",required:!0},{name:"permissions",type:"@api/core/invitation-permissions"},{name:"expiration",type:"uint"}])}),n.register({name:"create-room-invitation-response",fields:i([{name:"invitation",type:"string",required:!0}])}),n.register({name:"create-identity-invitation-request",fields:e([])}),n.register({name:"create-identity-invitation-response",fields:i([{name:"invitation",type:"string",required:!0}])}),n.register({name:"accept-join-request-request",fields:e([{name:"roomKey",type:"@keet/room-key",required:!0},{name:"request",type:"@keet/join-request",required:!0}])}),n.register({name:"accept-join-request-response",fields:i([])}),n.register({name:"reject-join-request-request",fields:e([{name:"roomKey",type:"@keet/room-key",required:!0},{name:"request",type:"@keet/join-request",required:!0}])}),n.register({name:"reject-join-request-response",fields:i([])}),n.register({name:"stop-pairing-request",fields:e([{name:"id",type:"@keet/invitation-id",required:!0}])}),n.register({name:"stop-pairing-response",fields:i([])})};
@holepunchto/keet-core/schema/api/core/room.js +1 -0
……@@ -0,0 +1 @@
1const{createRequest:e,createResponse:r,createWant:t,createUnwant:i}=require("../common.js");module.exports=function(m){m.register({name:"create-room-request",fields:e([{name:"config",type:"@keet/room-config"},{name:"settings",type:"@keet/system-settings"}])}),m.register({name:"create-room-response",fields:r([{name:"roomKey",type:"@keet/room-key"}])}),m.register({name:"activate-room-request",fields:e([{name:"roomKey",type:"@keet/room-key",required:!0}])}),m.register({name:"deactivate-room-request",fields:e([{name:"roomKey",type:"@keet/room-key",required:!0}])}),m.register({name:"leave-room-request",fields:e([{name:"roomKey",type:"@keet/room-key",required:!0}])}),m.register({name:"leave-room-response",fields:r()}),m.register({name:"update-room-config-request",fields:e([{name:"roomKey",type:"@keet/room-key",required:!0},{name:"key",type:"uint",required:!0},{name:"config",type:"@keet/room-config",required:!0}])}),m.register({name:"update-room-settings-request",fields:e([{name:"roomKey",type:"@keet/room-key",required:!0},{name:"key",type:"uint",required:!0},{name:"settings",type:"@keet/system-settings",required:!0}])}),m.register({name:"update-room-status-request",fields:e([{name:"roomKey",type:"@keet/room-key",required:!0},{name:"key",type:"uint",required:!0},{name:"status",type:"@keet-private-id/room-status",required:!0}])}),m.register({name:"add-chat-message-request",fields:e([{name:"roomKey",type:"@keet/room-key",required:!0},{name:"message",type:"@keet/oplog-message",required:!0}])}),m.register({name:"add-chat-message-response",fields:r()}),m.register({name:"edit-chat-message-request",fields:e([{name:"roomKey",type:"@keet/room-key",required:!0},{name:"id",type:"@keet/oplog-id",required:!0},{name:"message",type:"@keet/oplog-message",required:!0}])}),m.register({name:"edit-chat-message-response",fields:r()}),m.register({name:"remove-chat-message-request",fields:e([{name:"roomKey",type:"@keet/room-key",required:!0},{name:"id",type:"@keet/oplog-id",required:!0}])}),m.register({name:"remove-chat-message-response",fields:r()}),m.register({name:"add-chat-reaction-request",fields:e([{name:"roomKey",type:"@keet/room-key",required:!0},{name:"id",type:"@keet/oplog-id",required:!0},{name:"reaction",type:"string",required:!0}])}),m.register({name:"add-chat-reaction-response",fields:r()}),m.register({name:"remove-chat-reaction-request",fields:e([{name:"roomKey",type:"@keet/room-key",required:!0},{name:"id",type:"@keet/oplog-id",required:!0},{name:"reaction",type:"string",required:!0}])}),m.register({name:"remove-chat-reaction-response",fields:r()}),m.register({name:"want-lobby",fields:t([{name:"start",type:"uint",required:!0},{name:"end",type:"uint",required:!0}])}),m.register({name:"unwant-lobby",fields:i()}),m.register({name:"want-room-info",fields:t([{name:"keys",type:"@keet/room-key",array:!0,required:!0}])}),m.register({name:"want-chat",fields:t([{name:"roomKey",type:"@keet/room-key",required:!0},{name:"start",type:"uint"},{name:"size",type:"uint"},{name:"isBottom",type:"bool"}])}),m.register({name:"unwant-chat",fields:i()}),m.register({name:"want-members",fields:t([{name:"roomKey",type:"@keet/room-key",required:!0},{name:"offset",type:"@keet/member-key"},{name:"count",type:"uint"}])}),m.register({name:"unwant-members",fields:i()}),m.register({name:"lobby-record",compact:!0,fields:[{name:"timestamp",type:"uint",required:!0},{name:"id",type:"@keet/room-key",required:!0}]}),m.register({name:"lobby-record-change-type",enum:["Changed","Removed"]}),m.register({name:"lobby",fields:[{name:"keys",type:"@keet/room-key",array:!0,required:!0},{name:"start",type:"uint",required:!0},{name:"end",type:"uint",required:!0},{name:"total",type:"uint",required:!0}]}),m.register({name:"lobby-room",fields:[{name:"type",type:"@api/core/lobby-record-change-type",required:!0},{name:"room",type:"@api/core/lobby-record",required:!0}]}),m.register({name:"room-role",fields:[{name:"device",type:"@local/room-status",required:!0},{name:"member",type:"@keet/member-status"}]}),m.register({name:"room-info",fields:[{name:"id",type:"@keet/room-key",required:!0},{name:"role",type:"@api/core/room-role",required:!0},{name:"digest",type:"@keet/system-digest",required:!0},{name:"config",type:"@keet/room-config",required:!0},{name:"messageId",type:"@keet/oplog-id"}]}),m.register({name:"room-info-status",fields:[{name:"id",type:"@keet/room-key",required:!0},{name:"status",type:"@local/room-status",required:!0}]}),m.register({name:"room-info-digest",fields:[{name:"id",type:"@keet/room-key",required:!0},{name:"digest",type:"@keet/system-digest",required:!0}]}),m.register({name:"room-info-config",fields:[{name:"id",type:"@keet/room-key",required:!0},{name:"config",type:"@keet/room-config",required:!0}]}),m.register({name:"room-info-role",fields:[{name:"id",type:"@keet/room-key",required:!0},{name:"role",type:"@api/core/room-role"}]}),m.register({name:"room-info-last-message",fields:[{name:"id",type:"@keet/room-key",required:!0},{name:"lastMessage",type:"@keet/oplog-id",required:!0}]}),m.register({name:"member",fields:[{name:"key",type:"@keet/member-key",required:!0},{name:"profile",type:"@keet/member-profile",required:!0}]}),m.register({name:"device",fields:[{name:"key",type:"@keet/device-key",required:!0},{name:"status",type:"@keet/device-status",required:!0},{name:"profile",type:"@keet/device-profile",required:!0}]}),m.register({name:"member-list-add",fields:[{name:"roomKey",type:"@keet/room-key",required:!0},{name:"key",type:"@keet/member-key",required:!0}]}),m.register({name:"member-list-remove",fields:[{name:"roomKey",type:"@keet/room-key",required:!0},{name:"key",type:"@keet/member-key",required:!0}]}),m.register({name:"chat-reset",fields:[{name:"roomKey",type:"@keet/room-key",required:!0},{name:"start",type:"uint",required:!0},{name:"size",type:"uint",required:!0},{name:"total",type:"uint",required:!0},{name:"ids",type:"@keet/oplog-id",required:!0,array:!0},{name:"isBottom",type:"bool"}]}),m.register({name:"message-timestamps",fields:[{name:"sent",type:"uint",required:!0},{name:"edited",type:"uint"}]}),m.register({name:"message",fields:[{name:"id",type:"@keet/oplog-id",required:!0},{name:"clock",type:"uint",required:!0},{name:"timestamps",type:"@api/core/message-timestamps",required:!0},{name:"status",type:"@keet/message-status",required:!0},{name:"message",type:"@keet/index-message"},{name:"event",type:"@keet/chat-event"}]}),m.register({name:"message-info",fields:[{name:"chat",type:"@api/core/message",required:!0},{name:"memberKey",type:"@keet/member-key",required:!0},{name:"role",type:"@keet/member-status",required:!0}]}),m.register({name:"message-info-chat",fields:[{name:"chat",type:"@api/core/message",required:!0}]}),m.register({name:"message-info-member",fields:[{name:"ids",type:"@keet/oplog-id",array:!0,required:!0},{name:"memberKey",type:"@keet/member-key",required:!0}]}),m.register({name:"message-info-role",fields:[{name:"ids",type:"@keet/oplog-id",array:!0,required:!0},{name:"role",type:"@keet/member-status",required:!0}]}),m.register({name:"message-info-reactions",fields:[{name:"id",type:"@keet/oplog-id",required:!0},{name:"reactions",type:"@keet/reactions-digest",required:!0}]}),m.register({name:"reactions",fields:[{name:"id",type:"@keet/oplog-id",required:!0},{name:"digest",type:"@keet/reactions-digest",required:!0}]})};
@holepunchto/keet-core/schema/api/core/users.js +1 -0
……@@ -0,0 +1 @@
1module.exports=function(o){};
@holepunchto/keet-core/schema/api/debug/index.js +1 -0
……@@ -0,0 +1 @@
1const{createRequest:e,createResponse:s}=require("../common.js");module.exports=function(r){r.register({name:"enable-request",fields:e([{name:"password",type:"string",required:!0}])}),r.register({name:"enable-response",fields:s([{name:"inspector",type:"string",required:!0}])}),r.register({name:"disable-request",fields:s([])}),r.register({name:"disable-response",fields:s([])})};
@holepunchto/keet-core/schema/api/error/index.js +1 -0
……@@ -0,0 +1 @@
1module.exports=function(o){};
@holepunchto/keet-core/schema/api/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("../local"),{createRequest:r,createResponse:s}=require("./common.js"),i=require("./core"),a=require("./call"),t=require("./debug"),n=require("./error"),u=require("./network");module.exports=function(o){const c=o.namespace("api");e(o),c.register({name:"request-header",fields:[{name:"timestamp",type:"uint",required:!0}]}),c.register({name:"response-header",fields:[{name:"duration",type:"uint",required:!0}]}),c.register({name:"subscription-request-header",fields:[{name:"clock",type:"uint",required:!0}]}),c.register({name:"subscription-response-header",fields:[{name:"clock",type:"uint",required:!0}]}),c.register({name:"boot-request",fields:r([])}),c.register({name:"boot-response",fields:s([])}),c.register({name:"self-destruct-request",fields:r([])}),i(o.namespace("api/core")),a(o.namespace("api/call")),t(o.namespace("api/debug")),n(o.namespace("api/error")),u(o.namespace("api/network"))};
@holepunchto/keet-core/schema/api/network/index.js +1 -0
……@@ -0,0 +1 @@
1module.exports=function(o){};
@holepunchto/keet-core/schema/api/pear/index.js +1 -0
……@@ -0,0 +1 @@
1module.exports=function(o){};
@holepunchto/keet-core/schema/builder/api/hrpc.js +1 -0
……@@ -0,0 +1 @@
1module.exports=function(e){const r=e.namespace("api");r.register({name:"self-destruct",request:{name:"@api/self-destruct-request",stream:!1}}),r.register({name:"boot",request:{name:"@api/boot-request",stream:!1},response:{name:"@api/boot-response",stream:!1}}),r.register({name:"core-create-room",request:{name:"@api/core/create-room-request",stream:!1},response:{name:"@api/core/create-room-response",stream:!1}}),r.register({name:"core-activate-room",request:{name:"@api/core/activate-room-request",send:!0}}),r.register({name:"core-deactivate-room",request:{name:"@api/core/deactivate-room-request",send:!0}}),r.register({name:"core-leave-room",request:{name:"@api/core/leave-room-request"},response:{name:"@api/core/leave-room-response"}}),r.register({name:"core-update-room-config",request:{name:"@api/core/update-room-config-request",send:!0}}),r.register({name:"core-update-room-settings",request:{name:"@api/core/update-room-settings-request",send:!0}}),r.register({name:"core-update-room-status",request:{name:"@api/core/update-room-status-request",send:!0}}),r.register({name:"core-update-profile",request:{name:"@api/core/update-profile-request",send:!0}}),r.register({name:"core-create-room-invitation",request:{name:"@api/core/create-room-invitation-request"},response:{name:"@api/core/create-room-invitation-response"}}),r.register({name:"core-create-identity-invitation",request:{name:"@api/core/create-identity-invitation-request"},response:{name:"@api/core/create-identity-invitation-response"}}),r.register({name:"core-start-pairing",request:{name:"@api/core/start-pairing-request"},response:{name:"@api/core/start-pairing-response"}}),r.register({name:"core-accept-join-request",request:{name:"@api/core/accept-join-request-request"},response:{name:"@api/core/accept-join-request-response"}}),r.register({name:"core-reject-join-request",request:{name:"@api/core/reject-join-request-request"},response:{name:"@api/core/reject-join-request-response"}}),r.register({name:"core-stop-pairing",request:{name:"@api/core/stop-pairing-request"},response:{name:"@api/core/stop-pairing-response"}}),r.register({name:"core-add-chat-message",request:{name:"@api/core/add-chat-message-request"},response:{name:"@api/core/add-chat-message-response"}}),r.register({name:"core-edit-chat-message",request:{name:"@api/core/edit-chat-message-request"},response:{name:"@api/core/edit-chat-message-response"}}),r.register({name:"core-remove-chat-message",request:{name:"@api/core/remove-chat-message-request"},response:{name:"@api/core/remove-chat-message-response"}}),r.register({name:"core-add-chat-reaction",request:{name:"@api/core/add-chat-reaction-request"},response:{name:"@api/core/add-chat-reaction-response"}}),r.register({name:"core-remove-chat-reaction",request:{name:"@api/core/remove-chat-reaction-request"},response:{name:"@api/core/remove-chat-reaction-response"}}),r.register({name:"core-want-identity",request:{name:"@api/core/want-identity",send:!0}}),r.register({name:"core-unwant-identity",request:{name:"@api/core/unwant-identity",send:!0}}),r.register({name:"core-have-identity",request:{name:"@api/core/have",send:!0}}),r.register({name:"core-identity-reset",request:{name:"@api/core/identity",send:!0}}),r.register({name:"core-identity-member",request:{name:"@api/core/identity-member",send:!0}}),r.register({name:"core-identity-device",request:{name:"@api/core/identity-device",send:!0}}),r.register({name:"core-want-pairing",request:{name:"@api/core/want-pairing",send:!0}}),r.register({name:"core-unwant-pairing",request:{name:"@api/core/unwant-pairing",send:!0}}),r.register({name:"core-have-pairing",request:{name:"@api/core/have",send:!0}}),r.register({name:"core-pairing-reset",request:{name:"@api/core/pairing",send:!0}}),r.register({name:"core-want-lobby",request:{name:"@api/core/want-lobby",send:!0}}),r.register({name:"core-unwant-lobby",request:{name:"@api/core/unwant-lobby",send:!0}}),r.register({name:"core-have-lobby",request:{name:"@api/core/have",send:!0}}),r.register({name:"core-lobby-reset",request:{name:"@api/core/lobby",send:!0}}),r.register({name:"core-lobby-room",request:{name:"@api/core/lobby-room",send:!0}}),r.register({name:"core-want-room-info",request:{name:"@api/core/want-room-info",send:!0}}),r.register({name:"core-have-room-info",request:{name:"@api/core/have",send:!0}}),r.register({name:"core-room-info",request:{name:"@api/core/room-info",send:!0}}),r.register({name:"core-room-info-digest",request:{name:"@api/core/room-info-digest",send:!0}}),r.register({name:"core-room-info-config",request:{name:"@api/core/room-info-config",send:!0}}),r.register({name:"core-room-info-role",request:{name:"@api/core/room-info-role",send:!0}}),r.register({name:"core-room-info-last-message",request:{name:"@api/core/room-info-last-message",send:!0}}),r.register({name:"core-want-chat",request:{name:"@api/core/want-chat",send:!0}}),r.register({name:"core-unwant-chat",request:{name:"@api/core/unwant-chat",send:!0}}),r.register({name:"core-have-chat",request:{name:"@api/core/have",send:!0}}),r.register({name:"core-chat-reset",request:{name:"@api/core/chat-reset",send:!0}}),r.register({name:"core-message-info",request:{name:"@api/core/message-info",send:!0}}),r.register({name:"core-message-info-chat",request:{name:"@api/core/message-info-chat",send:!0}}),r.register({name:"core-message-info-member",request:{name:"@api/core/message-info-member",send:!0}}),r.register({name:"core-message-info-role",request:{name:"@api/core/message-info-role",send:!0}}),r.register({name:"core-message-info-reactions",request:{name:"@api/core/message-info-reactions",send:!0}}),r.register({name:"core-want-members",request:{name:"@api/core/want-members",send:!0}}),r.register({name:"core-unwant-members",request:{name:"@api/core/unwant-members",send:!0}}),r.register({name:"core-have-members",request:{name:"@api/core/have",send:!0}}),r.register({name:"core-member-list-add",request:{name:"@api/core/member-list-add",send:!0}}),r.register({name:"core-member-list-remove",request:{name:"@api/core/member-list-remove",send:!0}}),r.register({name:"core-member",request:{name:"@api/core/member",send:!0}}),r.register({name:"core-device",request:{name:"@api/core/device",send:!0}}),r.register({name:"debug-enable",request:{name:"@api/debug/enable-request"},response:{name:"@api/debug/enable-response"}}),r.register({name:"debug-disable",request:{name:"@api/debug/disable-request"},response:{name:"@api/debug/disable-response"}}),r.register({name:"send-legacy",request:{name:"buffer",send:!0}})};
@holepunchto/keet-core/schema/builder/contract/hyperdb.js +1 -0
……@@ -0,0 +1 @@
1const e=require("path");module.exports=function(t){const i=t.namespace("keet");i.require(e.join(__dirname,"../../../lib/core/hyperdb/contract/keet.js")),i.collections.register({name:"system-digest",schema:"@keet/system-digest",key:[]}),i.collections.register({name:"blind-peers",schema:"@keet/blind-peer",key:["key"]}),i.collections.register({name:"room-config",schema:"@keet/room-config",key:[]}),i.collections.register({name:"room-capabilities",schema:"@keet/room-seed",key:[]}),i.collections.register({name:"join-requests",schema:"@keet/join-request",key:["deviceKey"]}),i.collections.register({name:"devices",schema:"@keet/device",key:["key"],trigger:"devicesTrigger"}),i.indexes.register({name:"devices-by-member-key",collection:"@keet/devices",key:["memberKey"]}),i.indexes.register({name:"devices-by-swarm-key",collection:"@keet/devices",key:["profile.swarmKey"],unique:!0}),i.indexes.register({name:"active-devices-by-member-key",collection:"@keet/devices",key:{type:{fields:[{name:"memberKey",type:"@keet/member-key"}]},map:"activeDevicesByMemberKeyMap"}}),i.indexes.register({name:"active-devices",collection:"@keet/devices",unique:!0,key:{type:{fields:[{name:"key",type:"@keet/device-key"}]},map:"activeDevicesMap"}}),i.collections.register({name:"member-proofs",schema:"@keet/member-proofs",key:["key"]}),i.collections.register({name:"members",schema:"@keet/member",key:["key"],trigger:"membersTrigger"}),i.indexes.register({name:"moderators",collection:"@keet/members",unique:!0,key:{type:{fields:[{name:"key",type:"@keet/member-key"}]},map:"moderatorsMap"}}),i.indexes.register({name:"admins",collection:"@keet/members",unique:!0,key:{type:{fields:[{name:"key",type:"@keet/member-key"}]},map:"adminsMap"}}),i.indexes.register({name:"active-members",collection:"@keet/members",unique:!0,key:{type:{fields:[{name:"key",type:"@keet/member-key"}]},map:"activeMembersMap"}}),i.indexes.register({name:"muted-members",collection:"@keet/members",unique:!0,key:{type:{fields:[{name:"key",type:"@keet/member-key"}]},map:"mutedMembersMap"}}),i.indexes.register({name:"members-by-member-name",collection:"@keet/members",key:{type:{fields:[{name:"name",type:"string"}]},map:"membersByMemberNameMap"}}),i.collections.register({name:"member-activity",schema:"@keet/member-activity",key:["key"]}),i.collections.register({name:"invitations",schema:"@keet/invitation",key:["id"]}),i.collections.register({name:"threads",schema:"@keet/thread",key:["id"]}),i.indexes.register({name:"threads-by-parent",collection:"@keet/threads",unique:!0,key:{type:{fields:[{name:"key",type:"@keet/member-key"},{name:"seq",type:"uint"}]},map:"threadsByParentMap"}}),i.collections.register({name:"chat",schema:"@keet/chat-message-record",key:["id.thread","id.index"],trigger:"chatTrigger"}),i.indexes.register({name:"chat-by-message-id",collection:"@keet/chat",key:["oplog.key","oplog.seq"],unique:!0}),i.indexes.register({name:"chat-mentions-by-member-id",collection:"@keet/chat",key:{type:{fields:[{name:"key",type:"@keet/member-key"},{name:"clock",type:"uint"}]},map:"chatMentionsByMemberIdMap"}}),i.indexes.register({name:"pinned-chat-messages",collection:"@keet/chat",key:{type:{fields:[{name:"thread",type:"uint"},{name:"index",type:"uint"}]},map:"pinnedChatMessagesMap"}}),i.collections.register({name:"reaction-digests",schema:"@keet/reactions-digest",key:["id.thread","id.index"]}),i.collections.register({name:"reactions",schema:"@keet/reaction",key:["id.thread","id.index","sender","reaction"],trigger:"reactionsTrigger"}),i.indexes.register({name:"reactions-by-clock",collection:"@keet/reactions",key:["id.thread","id.index","reaction","clock","sender"]}),i.collections.register({name:"files",schema:"@keet/file-record",key:["id"],versionField:"version",trigger:"filesTrigger"}),i.indexes.register({name:"files-by-message-id",collection:"@keet/files",key:["oplog.key","oplog.seq"]}),i.indexes.register({name:"files-by-type",collection:"@keet/files",key:{type:{fields:[{name:"type",type:"string"},{name:"id",type:"uint"}]},map:"filesByTypeMap"},deprecated:!0}),i.indexes.register({name:"deleted-files",collection:"@keet/files",key:{type:{fields:[{name:"id",type:"uint"}]},map:"deletedFilesMap"},deprecated:!0}),i.indexes.register({name:"files-by-major-type",collection:"@keet/files",key:{type:{fields:[{name:"type",type:"string"},{name:"id",type:"uint"}]},map:"filesByMajorTypeMap"}}),i.indexes.register({name:"active-files",collection:"@keet/files",key:{type:{fields:[{name:"id",type:"uint"}]},map:"activeFilesMap"}}),i.collections.register({name:"chat-labels",schema:"@keet/chat-label",key:["id.thread","id.index","sender","label"],trigger:"chatLabelTrigger"}),i.collections.register({name:"chat-label-digests",schema:"@keet/chat-label-digest",versionField:"version",key:["id.thread","id.index"]}),i.indexes.register({name:"chat-label-digests-by-clock",collection:"@keet/chat-label-digests",key:{type:{fields:[{name:"label",type:"@keet/label-type"},{name:"clock",type:"uint"}]},map:"chatLabelDigestFlagMap"}}),i.collections.register({name:"member-labels",schema:"@keet/member-label",key:["key","sender","label"]}),i.collections.register({name:"member-label-digests",schema:"@keet/member-label-digest",key:["key"]}),i.indexes.register({name:"member-label-digests-by-clock",collection:"@keet/member-label-digests",key:{type:{fields:[{name:"label",type:"@keet/member-label-type"},{name:"clock",type:"uint"}]},map:"memberLabelDigestFlagMap"}}),i.collections.register({name:"read-lengths",schema:"@keet/read-length",key:["memberKey"]}),i.collections.register({name:"test-collection-1",schema:"@keet/test-collection-record-1",key:["key"]}),i.collections.register({name:"tmp-removed-members",schema:"@keet/tmp-removed-member",key:["key"]}),i.collections.register({name:"calls",schema:"@keet/call-record",key:["callKey"]}),i.indexes.register({name:"calls-by-timestamp",collection:"@keet/calls",key:["createdAt"]}),i.indexes.register({name:"active-calls-by-timestamp",collection:"@keet/calls",key:{type:{fields:[{name:"createdAt",type:"uint"}]},map:"activeCallsMap"}}),i.collections.register({name:"call-members",schema:"@keet/call-member-record",key:["callKey","memberKey"]}),i.collections.register({name:"call-devices",schema:"@keet/call-device-record",key:["callKey","deviceKey"]}),i.indexes.register({name:"call-devices-by-member-key",collection:"@keet/call-devices",key:["callKey","memberKey"]}),i.collections.register({name:"call-streams",schema:"@keet/call-stream-record",key:["callKey","streamKey"]}),i.indexes.register({name:"call-streams-by-device-key",collection:"@keet/call-streams",key:["callKey","deviceKey"]});const s=t.namespace("keet-private-id");s.require(e.join(__dirname,"../../../lib/core/hyperdb/contract/keet-private-id.js")),s.collections.register({name:"identity",schema:"@keet/room-identity",key:[]}),s.collections.register({name:"stats",schema:"@keet-private-id/stats",key:[]}),s.collections.register({name:"counters",schema:"@keet-private-id/counters",key:[]}),s.collections.register({name:"pending-invitations",schema:"@keet-private-id/pending-invitation",key:["id"]}),s.collections.register({name:"rooms",schema:"@keet-private-id/room",key:["roomKey"],trigger:"roomsTrigger"}),s.indexes.register({name:"rooms-by-clock",collection:"@keet-private-id/rooms",key:["clock"]}),s.indexes.register({name:"rooms-by-contact",collection:"@keet-private-id/rooms",key:{type:{fields:[{name:"contact",type:"@keet/member-key"}]},map:"roomsByContactMap"}}),s.collections.register({name:"contacts",schema:"@keet-private-id/contact-record",key:["memberKey"],trigger:"contactsTrigger"}),s.indexes.register({name:"contacts-by-clock",collection:"@keet-private-id/contacts",key:["clock"]}),s.collections.register({name:"contact-requests",schema:"@keet-private-id/contact-request-record",key:["memberKey"],trigger:"contactRequestsTrigger"}),s.indexes.register({name:"contact-requests-by-clock",collection:"@keet-private-id/contact-requests",key:["clock"]}),s.indexes.register({name:"pending-contact-requests",collection:"@keet-private-id/contact-requests",key:{type:{fields:[{name:"clock",type:"uint"}]},map:"pendingContactRequestsMap"}}),s.indexes.register({name:"accepted-contact-requests",collection:"@keet-private-id/contact-requests",key:{type:{fields:[{name:"clock",type:"uint"}]},map:"acceptedContactRequestsMap"}}),s.indexes.register({name:"rejected-contact-requests",collection:"@keet-private-id/contact-requests",key:{type:{fields:[{name:"clock",type:"uint"}]},map:"rejectedContactRequestsMap"}}),s.indexes.register({name:"discarded-contact-requests",collection:"@keet-private-id/contact-requests",key:{type:{fields:[{name:"clock",type:"uint"}]},map:"discardedContactRequestsMap"}}),s.collections.register({name:"device-identities",schema:"@keet/device-identity",key:["deviceKey"]}),s.collections.register({name:"contact-requests-v2",schema:"@keet-private-id/contact-request-record",key:["memberKey","keys.key"],trigger:"contactRequestsTrigger"}),s.indexes.register({name:"contact-requests-by-member",collection:"@keet-private-id/contact-requests-v2",key:["memberKey"]}),s.indexes.register({name:"contact-requests-by-clock-v2",collection:"@keet-private-id/contact-requests-v2",key:["clock"]}),s.indexes.register({name:"pending-contact-requests-v2",collection:"@keet-private-id/contact-requests-v2",key:{type:{fields:[{name:"clock",type:"uint"}]},map:"pendingContactRequestsMap"}}),s.indexes.register({name:"pending-contact-requests-by-member",collection:"@keet-private-id/contact-requests-v2",key:{type:{fields:[{name:"memberKey",type:"@keet/member-key"}]},map:"pendingContactRequestsByMemberMap"}}),s.indexes.register({name:"accepted-contact-requests-v2",collection:"@keet-private-id/contact-requests-v2",key:{type:{fields:[{name:"clock",type:"uint"}]},map:"acceptedContactRequestsMap"}}),s.indexes.register({name:"rejected-contact-requests-v2",collection:"@keet-private-id/contact-requests-v2",key:{type:{fields:[{name:"clock",type:"uint"}]},map:"rejectedContactRequestsMap"}}),s.indexes.register({name:"discarded-contact-requests-v2",collection:"@keet-private-id/contact-requests-v2",key:{type:{fields:[{name:"clock",type:"uint"}]},map:"discardedContactRequestsMap"}}),s.collections.register({name:"unreads-v2",schema:"@keet-private-id/unreads",key:["deviceKey"]}),s.collections.register({name:"unreads",schema:"@keet-private-id/unreads",key:["deviceKey"]}),s.collections.register({name:"settings",schema:"@keet-private-id/settings",key:[]})};
@holepunchto/keet-core/schema/builder/contract/hyperdispatch.js +1 -0
……@@ -0,0 +1 @@
1module.exports=function(e){const t=e.namespace("keet");t.register({name:"genesis",requestType:"@keet/genesis-operation"}),t.register({name:"upgrade",requestType:"@keet/upgrade-operation"}),t.register({name:"update-system-settings",requestType:"@keet/update-system-settings-operation"}),t.register({name:"add-blind-peer",requestType:"@keet/add-blind-peer-operation"}),t.register({name:"remove-blind-peer",requestType:"@keet/remove-blind-peer-operation"}),t.register({name:"add-device",requestType:"@keet/add-device-operation"}),t.register({name:"update-device",requestType:"@keet/update-device-operation"}),t.register({name:"start-indexing",requestType:"@keet/start-indexing-operation"}),t.register({name:"stop-indexing",requestType:"@keet/stop-indexing-operation"}),t.register({name:"accept-join-request",requestType:"@keet/accept-join-request-operation"}),t.register({name:"reject-join-request",requestType:"@keet/reject-join-request-operation"}),t.register({name:"update-member",requestType:"@keet/update-member-operation"}),t.register({name:"change-member-role",requestType:"@keet/change-member-role-operation"}),t.register({name:"change-member-status",requestType:"@keet/change-member-status-operation"}),t.register({name:"remove-member",requestType:"@keet/remove-member-operation"}),t.register({name:"add-invitation",requestType:"@keet/add-invitation-operation"}),t.register({name:"remove-invitation",requestType:"@keet/remove-invitation-operation"}),t.register({name:"add-chat-message",requestType:"@keet/add-chat-message-operation"}),t.register({name:"remove-chat-message",requestType:"@keet/remove-chat-message-operation"}),t.register({name:"update-chat-message",requestType:"@keet/update-chat-message-operation"}),t.register({name:"pin-chat-message",requestType:"@keet/pin-chat-message-operation"}),t.register({name:"add-reaction",requestType:"@keet/add-reaction-operation"}),t.register({name:"remove-reaction",requestType:"@keet/remove-reaction-operation"}),t.register({name:"update-room-config",requestType:"@keet/update-room-config-operation"});const r=e.namespace("keet-private-id");r.register({name:"run-v3-migration",requestType:"@keet-private-id/run-v3-migration-operation"}),r.register({name:"update-identity",requestType:"@keet-private-id/update-identity-operation"}),r.register({name:"resolve-pending-invitation",requestType:"@keet-private-id/resolve-pending-invitation-operation"}),r.register({name:"add-pending-invitation",requestType:"@keet-private-id/add-pending-invitation-operation"}),r.register({name:"remove-pending-invitation",requestType:"@keet-private-id/remove-pending-invitation-operation"}),r.register({name:"add-room",requestType:"@keet-private-id/add-room-operation"}),r.register({name:"remove-room",requestType:"@keet-private-id/remove-room-operation"}),r.register({name:"update-room-status",requestType:"@keet-private-id/update-room-status-operation"}),r.register({name:"add-contact",requestType:"@keet-private-id/add-contact-operation"}),r.register({name:"update-contact-status",requestType:"@keet-private-id/update-contact-status-operation"}),r.register({name:"remove-contact",requestType:"@keet-private-id/remove-contact-operation"}),r.register({name:"add-contact-request",requestType:"@keet-private-id/add-contact-request-operation"}),r.register({name:"update-contact-request-status",requestType:"@keet-private-id/update-contact-request-status-operation"}),t.register({name:"add-file-preview",requestType:"@keet/add-file-preview-operation"}),t.register({name:"remove-device",requestType:"@keet/remove-device-operation"}),r.register({name:"activate-contact-room",requestType:"@keet-private-id/activate-contact-room-operation"}),t.register({name:"test-increment",requestType:"@keet/test-increment-operation"}),t.register({name:"migrate-abi",requestType:"@keet/migrate-abi-operation"}),r.register({name:"add-unreads-key",requestType:"@keet-private-id/add-unreads-key-operation"}),r.register({name:"remove-unreads-key",requestType:"@keet-private-id/remove-unreads-key-operation"}),t.register({name:"add-chat-label",requestType:"@keet/add-chat-label-operation"}),t.register({name:"remove-chat-label",requestType:"@keet/remove-chat-label-operation"}),t.register({name:"update-read-length",requestType:"@keet/update-read-length-operation"}),r.register({name:"update-settings",requestType:"@keet-private-id/update-settings-operation"}),t.register({name:"add-member-label",requestType:"@keet/add-member-label-operation"}),t.register({name:"move-indexer",requestType:"@keet/move-indexer-operation"}),t.register({name:"start-call",requestType:"@keet/start-call"}),t.register({name:"join-call",requestType:"@keet/join-call"}),t.register({name:"leave-call",requestType:"@keet/leave-call"}),t.register({name:"end-call",requestType:"@keet/end-call"}),t.register({name:"add-call-stream",requestType:"@keet/add-call-stream"}),t.register({name:"remove-call-stream",requestType:"@keet/remove-call-stream"}),t.register({name:"test-crash",requestType:"@keet/test-crash-operation"}),t.register({name:"test-dispatch-error",requestType:"@keet/test-dispatch-error-operation"})};
@holepunchto/keet-core/schema/builder/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("path"),r=require("@holepunchto/hyperschema-regen"),c=require("hyperdispatch"),o=require("hyperschema"),h=require("hyperdb/builder"),n=require("hyperconf/builder"),t=require("hrpc"),{generateContractSchema:i,generateConfigSchema:a,generateLocalSchema:p,generateAPISchema:s}=require("../index.js");function y(r){const c=e.join(r,"contract"),o=e.join(r,"local"),h=e.join(r,"config"),n=e.join(r,"api");return{contract:{hyperschema:e.join(c,"hyperschema"),hyperdb:e.join(c,"hyperdb"),hyperdispatch:e.join(c,"hyperdispatch")},local:{hyperschema:e.join(o,"hyperschema"),hyperdb:e.join(o,"hyperdb")},config:{hyperschema:e.join(h,"hyperschema"),hyperconf:e.join(h,"hyperconf")},api:{hyperschema:e.join(n,"hyperschema"),hrpc:e.join(n,"hrpc")}}}function m(e){const r=require("./contract/hyperdispatch"),n=require("./contract/hyperdb"),t=o.from(e.contract.hyperschema);i(t),o.toDisk(t);const a=h.from(e.contract.hyperschema,e.contract.hyperdb);n(a),h.toDisk(a);const p=c.from(e.contract.hyperschema,e.contract.hyperdispatch,{offset:2});r(p),c.toDisk(p)}function f(e){const r=require("./local/hyperdb"),c=o.from(e.local.hyperschema);p(c),o.toDisk(c);const n=h.from(e.local.hyperschema,e.local.hyperdb);r(n),h.toDisk(n)}function u(e,r){const c=require("../config/generate"),h=o.from(e.config.hyperschema);a(h),o.toDisk(h);const t=n.from(e.config.hyperschema,e.config.hyperconf);c(t,r),n.toDisk(t)}function d(e){const r=require("./api/hrpc"),c=o.from(e.api.hyperschema);s(c),o.toDisk(c);const h=t.from(e.api.hyperschema,e.api.hrpc);r(h),t.toDisk(h)}module.exports=function(e,{testing:c=!1}={}){c||r.checkout("schema/spec");const o=y(e);m(o),f(o),u(o,{testing:c}),d(o),c||r.validate("schema/spec/contract/hyperdb/db.json","schema/spec/local/hyperdb/db.json")};
@holepunchto/keet-core/schema/builder/local/hyperdb.js +1 -0
……@@ -0,0 +1 @@
1const e=require("path");module.exports=function(o){const i=o.namespace("local");i.require(e.join(__dirname,"../../../lib/core/hyperdb/local/local.js")),i.collections.register({name:"stats",schema:"@local/stats",key:[]}),i.collections.register({name:"migrations",schema:"@local/migration-status",key:[]}),i.collections.register({name:"room-migration-stats",schema:"@local/room-migration-stats",key:[]}),i.collections.register({name:"room-migrations",schema:"@local/room-migration",key:["roomKey"],trigger:"roomMigrationsTrigger"}),i.indexes.register({name:"room-migrations-by-priority",collection:"@local/room-migrations",key:["priority"]}),i.collections.register({name:"identity",schema:"@local/identity-record",key:[]}),i.collections.register({name:"hyperdht",schema:"@local/hyperdht-record",key:[]}),i.collections.register({name:"rooms",schema:"@local/room",versionField:"version",key:["roomKey"],trigger:"roomsTrigger"}),i.indexes.register({name:"rooms-by-discovery-key",collection:"@local/rooms",unique:!0,key:["discoveryKey"]}),i.indexes.register({name:"rooms-by-timestamp",collection:"@local/rooms",unique:!1,key:{type:{fields:[{name:"timestamp",type:"uint"}]},map:"roomsByTimestampMap"}}),i.indexes.register({name:"rooms-by-type-and-timestamp",collection:"@local/rooms",unique:!1,key:{type:{fields:[{name:"type",type:"uint"},{name:"timestamp",type:"uint"}]},map:"roomsByTypeAndTimestampMap"}}),i.indexes.register({name:"rooms-by-contact",collection:"@local/rooms",key:{type:{fields:[{name:"contact",type:"@keet/member-key"}]},map:"roomsByContactMap"}}),i.indexes.register({name:"rooms-by-wakeup-topic",collection:"@local/rooms",unique:!0,key:["capabilities.wakeupTopic"]}),i.indexes.register({name:"rooms-by-mailbox",collection:"@local/rooms",unique:!0,key:["capabilities.mailboxKeyPair.publicKey"]}),i.indexes.register({name:"rooms-by-discovery",collection:"@local/rooms",unique:!0,key:["capabilities.discoveryKeyPair.publicKey"]}),i.collections.register({name:"room-preferences",schema:"@local/room-preferences",key:["roomKey"]}),i.collections.register({name:"room-metadata",schema:"@local/room-metadata",key:["roomKey"]}),i.collections.register({name:"writers",schema:"@local/writer",key:["mailbox"]}),i.collections.register({name:"writer-appends",schema:"@local/writer-append",key:["key","responsePublicKey"]}),i.indexes.register({name:"writers-by-wakeup-topic",collection:"@local/writers",unique:!0,key:{type:{fields:[{name:"wakeupTopic",type:"@keet/room-discovery-key"}]},map:"writersByWakeupTopicMap"}}),i.indexes.register({name:"writers-by-room-key",collection:"@local/writers",unique:!0,key:{type:{fields:[{name:"roomKey",type:"@keet/room-key"}]},map:"writersByRoomKeyMap"}}),i.collections.register({name:"members",schema:"@local/member",key:["key"]}),i.collections.register({name:"devices",schema:"@local/device",key:["device.key"]}),i.collections.register({name:"contacts",schema:"@keet-private-id/contact",key:["memberKey"]}),i.indexes.register({name:"blocked-contacts",collection:"@local/contacts",unique:!0,key:{type:{fields:[{name:"memberKey",type:"@keet/member-key"}]},map:"blockedContactsMap"}}),i.collections.register({name:"tasks",schema:"@local/task",key:["priority","timestamp","type","discoveryKey"]}),i.indexes.register({name:"tasks-by-type",collection:"@local/tasks",key:["type","discoveryKey"],unique:!0}),i.collections.register({name:"blob-files",schema:"@local/file",versionField:"version",key:["file.pointer.externalBlob.key","file.pointer.externalBlob.blob.blockOffset"]}),i.collections.register({name:"drive-files",schema:"@local/file",versionField:"version",key:["file.pointer.externalDrive.key","file.pointer.externalDrive.path","file.pointer.externalDrive.version"]}),i.indexes.register({name:"blob-files-by-room",collection:"@local/blob-files",unique:!1,key:["roomKey"]}),i.indexes.register({name:"drive-files-by-room",collection:"@local/drive-files",unique:!1,key:["roomKey"]}),i.indexes.register({name:"blob-files-by-last-accessed",collection:"@local/blob-files",unique:!1,key:["lastAccessed"]}),i.indexes.register({name:"drive-files-by-last-accessed",collection:"@local/drive-files",unique:!1,key:["lastAccessed"]}),i.collections.register({name:"background-sync",schema:"@local/background-sync-room",key:["discoveryPublicKey"]}),i.indexes.register({name:"background-sync-by-dirty",collection:"@local/background-sync",unique:!1,key:{type:{fields:[{name:"timestamp",type:"uint"}]},map:"dirtyByTimestampMap"}}),i.collections.register({name:"debug",schema:"@local/debug"}),i.collections.register({name:"unreads",schema:"@local/unread",key:["roomKey"]}),i.collections.register({name:"errors",schema:"@local/error-record",key:["timestamp"]}),i.indexes.register({name:"errors-by-code",collection:"@local/errors",unique:!1,key:["code"]}),i.collections.register({name:"file-stats",schema:"@local/file-stats",key:["roomKey"]}),i.collections.register({name:"file-gc-info",schema:"@local/file-gc-info"}),i.indexes.register({name:"rooms-by-favorite-and-timestamp",collection:"@local/rooms",unique:!1,key:{type:{fields:[{name:"timestamp",type:"uint"}]},map:"roomsByFavoriteAndTimestampMap"}}),i.collections.register({name:"environment",schema:"@local/environment-record",key:[]})};
@holepunchto/keet-core/schema/config/generate.js +1 -0
……@@ -0,0 +1 @@
1const o=require("b4a"),n=require("./internal.js"),e=require("./production.js");module.exports=function(r,{testing:t}){const i=n(r),c=e(r);t||(console.log("internal config:",o.toString(i,"hex")),console.log(),console.log("prod config:",o.toString(c,"hex")))};
@holepunchto/keet-core/schema/config/index.js +1 -0
……@@ -0,0 +1 @@
1module.exports=function(e){const r=e.namespace("config");r.register({name:"semver",fields:[{name:"major",type:"uint",required:!0},{name:"minor",type:"uint",required:!0},{name:"patch",type:"uint",required:!0}]}),r.register({name:"versions",fields:[{name:"minimum",type:"uint",required:!0},{name:"autoupgrade",type:"uint"},{name:"forceUpdate",type:"uint"},{name:"minVersion",type:"@config/semver"}]}),r.register({name:"user-registry",fields:[{name:"db",type:"fixed32",required:!0},{name:"reserved",type:"fixed32",required:!0},{name:"blobs",type:"fixed32",required:!0},{name:"rpc",type:"fixed32",array:!0,required:!0}]}),r.register({name:"services",fields:[{name:"userRegistries",type:"@config/user-registry",array:!0},{name:"blindPeers",type:"fixed32",array:!0},{name:"blindRelays",type:"fixed32",array:!0},{name:"gatekeepers",type:"fixed32",array:!0},{name:"discovery",type:"fixed32",array:!0},{name:"feedback",type:"fixed32"}]}),r.register({name:"rooms",fields:[{name:"disabled",type:"fixed32",array:!0},{name:"verified",type:"fixed32",array:!0}]}),r.register({name:"profile",fields:[{name:"disableUnreadSync",type:"bool"}]}),r.register({name:"debug",fields:[{name:"unlockHash",type:"fixed32"}]}),r.register({name:"keet-config",fields:[{name:"versions",type:"@config/versions",required:!0},{name:"services",type:"@config/services"},{name:"rooms",type:"@config/rooms"},{name:"profile",type:"@config/profile"},{name:"debug",type:"@config/debug"}]})};
@holepunchto/keet-core/schema/config/internal.js +1 -0
……@@ -0,0 +1 @@
1const e=require("hypercore-id-encoding");module.exports=function(a){const d=[{db:e.decode("pyjsuabgzd57rmnd4p95yum74u4wsb4t57nsztcunuuwfw8mbx6y"),reserved:e.decode("dxrpazirghdxpgykkzxirqhakjrozqfptdamcthmmpkowzt78nqy"),blobs:e.decode("5z5k5q4jhxq7qcpcp97cxumzx7hb6j8op58eg1tatszg4aqytqoy"),rpc:["o3ihjhb8ep1phi81ppr5tze319n5o6r59bot5sx9fdgs4a9yqary","nioheeafykgbfb1miysfeh79ky31wquksi4y9ffra83848noqg8y","u3m66zs6kmpetdtun6xxdg8kcq9tiaofc1fdfsjfetk1nqwm15ny"].map(a=>e.decode(a))}],c=["ep4bxqnksbeikpjc99kibih314f33ox64318gogz7c5ra4pecqqy","naraymtsa7ob85bchpazs76dqqefscuiqo6cdxwqyku7gbf93ipy","jer19u85dibjcdabhcrt1gehzrtux4caos5p5aqjfjpw3ayqnkry","11acfj3mo8x3prq348e8fuuihbhuakbe55xstybk4aktur6dgado","78xqipa6khjzbwufj38ijom8m89gz7uc9xoo93iw3iioap1cys3o","133tphu316kggjpq3hoakmg4cmjrbkg14e1xznijqgbdd6ydshiy","ui47euoy6u5g8aaxd49x5d6goe1gi69uaz39ug9hzy5ps6g67zxy","a89erh4bmm31ig1tn45cmgruf7smin5j9q11pk93eqdndbcx9wwy","4c39n36w8ho48qtuqcguu8pwubu6ohxr4wq1jxqj7drhq4j3edho","qp4qtzgfeom9yuyurc9p5j5y8gmmjefggzrbu5gzxewpjp8o5kqy","7bzpaaj7oxpd5fraupngyjnq1abrjiada5z57ig38f3n6rbdunry","czgrdix4yj3t6a3rbbhihr6rpna3c8xe5ebrww8ikragkykoixky"].map(a=>e.decode(a)),o=["eszrfraa6fddr5q7sjasow3cxti1d1sx5ifr8ij3hbi7kgf8tr7y","r5i1j1m6kxhw4qjeek3hbc9751ho8ere8mns18u8hur7g4xxrc3y","mt8qfwywy3amec6y9bnxhqbgjobnoospup5mmww8c64grwa7943y","taig1guqbc8ph3i7ei41symfkf8571rreho6syhxzunbfmaqs4eo","q16atydb6oczes6onr58qr8yzkcqbsakf6a1iapndqtpnxmiwcgy","dz94965h9arysfpq9m19wggns6sw86sctnbmmiow9in1cm3u78ro","6rkwz3shauha6qfmjs96qwkfxrd5nupc8t5pd5mfjkufa4ecffwy"].map(a=>e.decode(a)),r=["2c64e9baa7529518937c541567cb2a0da371239937ab9cd1a85c372c18b396f2"].map(a=>e.decode(a)),i=["39720256e9d51be850afe8596c2aca8c4ad1e2d539a16c1470652791b7be2d10"].map(a=>e.decode(a)),p=e.decode("05f1ec96118a019d1a02bea752745d47b6a8c562aca3cb65d6ba76a1641fc83b"),b=["h4r95z83do6mfmpfs64ue74phc9hrcbe9dcqwypastq35i8xhp3o"].map(a=>e.decode(a)),s=["hq1e4ymj8ed54xnm4uisr1qz31dkz19m69yfyo868r3k3koxhc6o"].map(a=>e.decode(a)),m=e.decode("3h14o8dftqwxgecpqrak5y1d6bfjwjfh4tzuymr73kkiic7cns1o");return a.setDevelopment("@config/keet-config",{versions:{minimum:14,forceUpdate:1,autoupgrade:26,minVersion:{major:4,minor:12,patch:3}},services:{userRegistries:d,blindPeers:c,blindRelays:o,gatekeepers:i,discovery:r,feedback:p},rooms:{disabled:b,verified:s},debug:{unlockHash:m}})};
@holepunchto/keet-core/schema/config/production.js +1 -0
……@@ -0,0 +1 @@
1const e=require("hypercore-id-encoding");module.exports=function(c){const o=[{db:e.decode("497ub4optrizbb7p79o6zmhrdisc8bacqcfdtwurzw1j9z99syyo"),reserved:e.decode("eekg7oi737xhj541pn4huxnjjuzp8efe3qf1u95kuwoq5bs5f1jy"),blobs:e.decode("htmeph5re4jcb1ozbz64gt58m9csifp1eq1bz3bf85txkzbhkjjo"),rpc:["3sjsj8x3xgnqsbq53oy1sguooo7hayne33fr669qj9hnfbkmymjo","4cxrxktsjcm3hkxuihompmz67s1uadn9tcgss6wpgogsxwgeu8yy","5c9zwzdpfaesuaqiefj4okt8fze7egio65fhbo4wmsxxuzyw7hjo"].map(c=>e.decode(c))}],a=["ep4bxqnksbeikpjc99kibih314f33ox64318gogz7c5ra4pecqqy","naraymtsa7ob85bchpazs76dqqefscuiqo6cdxwqyku7gbf93ipy","jer19u85dibjcdabhcrt1gehzrtux4caos5p5aqjfjpw3ayqnkry","11acfj3mo8x3prq348e8fuuihbhuakbe55xstybk4aktur6dgado","78xqipa6khjzbwufj38ijom8m89gz7uc9xoo93iw3iioap1cys3o","133tphu316kggjpq3hoakmg4cmjrbkg14e1xznijqgbdd6ydshiy","ui47euoy6u5g8aaxd49x5d6goe1gi69uaz39ug9hzy5ps6g67zxy","a89erh4bmm31ig1tn45cmgruf7smin5j9q11pk93eqdndbcx9wwy","4c39n36w8ho48qtuqcguu8pwubu6ohxr4wq1jxqj7drhq4j3edho","qp4qtzgfeom9yuyurc9p5j5y8gmmjefggzrbu5gzxewpjp8o5kqy","7bzpaaj7oxpd5fraupngyjnq1abrjiada5z57ig38f3n6rbdunry","czgrdix4yj3t6a3rbbhihr6rpna3c8xe5ebrww8ikragkykoixky"].map(c=>e.decode(c)),d=["eszrfraa6fddr5q7sjasow3cxti1d1sx5ifr8ij3hbi7kgf8tr7y","r5i1j1m6kxhw4qjeek3hbc9751ho8ere8mns18u8hur7g4xxrc3y","mt8qfwywy3amec6y9bnxhqbgjobnoospup5mmww8c64grwa7943y","taig1guqbc8ph3i7ei41symfkf8571rreho6syhxzunbfmaqs4eo","q16atydb6oczes6onr58qr8yzkcqbsakf6a1iapndqtpnxmiwcgy","dz94965h9arysfpq9m19wggns6sw86sctnbmmiow9in1cm3u78ro","6rkwz3shauha6qfmjs96qwkfxrd5nupc8t5pd5mfjkufa4ecffwy"].map(c=>e.decode(c)),r=["2c64e9baa7529518937c541567cb2a0da371239937ab9cd1a85c372c18b396f2"].map(c=>e.decode(c)),b=["39720256e9d51be850afe8596c2aca8c4ad1e2d539a16c1470652791b7be2d10"].map(c=>e.decode(c)),i=e.decode("05f1ec96118a019d1a02bea752745d47b6a8c562aca3cb65d6ba76a1641fc83b"),s=["h4r95z83do6mfmpfs64ue74phc9hrcbe9dcqwypastq35i8xhp3o"].map(c=>e.decode(c)),u=e.decode("3h14o8dftqwxgecpqrak5y1d6bfjwjfh4tzuymr73kkiic7cns1o");return c.setProduction("@config/keet-config",{versions:{minimum:14,forceUpdate:1,autoupgrade:23,minVersion:{major:4,minor:12,patch:3}},services:{userRegistries:o,blindPeers:a,blindRelays:d,gatekeepers:b,discovery:r,feedback:i},rooms:{disabled:s},debug:{unlockHash:u}})};
@holepunchto/keet-core/schema/contract/index.js +1 -0
……@@ -0,0 +1 @@
1module.exports=function(e){const t=e.namespace("keet");t.register({name:"public-key",alias:"fixed32"}),t.register({name:"secret-key",alias:"buffer"}),t.register({name:"room-key",alias:"fixed32"}),t.register({name:"encryption-key",alias:"buffer"}),t.register({name:"room-discovery-key",alias:"fixed32"}),t.register({name:"core-key",alias:"fixed32"}),t.register({name:"device-key",alias:"fixed32"}),t.register({name:"invitation-id",alias:"fixed32"}),t.register({name:"member-key",alias:"fixed32"}),t.register({name:"swarm-key",alias:"fixed32"}),t.register({name:"core-seq",alias:"uint"}),t.register({name:"head",compact:!0,fields:[{name:"key",type:"@keet/device-key",required:!0},{name:"length",type:"uint",required:!0}]}),t.register({name:"oplog-id",compact:!0,fields:[{name:"key",type:"@keet/device-key",required:!0},{name:"seq",type:"@keet/core-seq",required:!0}]}),t.register({name:"encryption-keypair",compact:!0,fields:[{name:"publicKey",type:"fixed32",required:!0},{name:"secretKey",type:"fixed32",required:!0}]}),t.register({name:"signing-keypair",compact:!0,fields:[{name:"publicKey",type:"fixed32",required:!0},{name:"secretKey",type:"fixed64",required:!0}]}),t.register({name:"room-keys",fields:[{name:"key",type:"@keet/room-key",required:!0},{name:"encryptionKey",type:"@keet/encryption-key"},{name:"fastForwardTo",type:"fixed32"}]});const i={name:"header",type:"@keet/operation-header",required:!0};t.register({name:"operation-header",fields:[{name:"timestamp",type:"uint",required:!0}]}),t.register({name:"blob-pointer",compact:!0,fields:[{name:"blockOffset",type:"uint",required:!0},{name:"blockLength",type:"uint",required:!0},{name:"byteOffset",type:"uint",required:!0},{name:"byteLength",type:"uint",required:!0}]}),t.register({name:"file-dimensions",fields:[{name:"width",type:"uint",required:!0},{name:"height",type:"uint",required:!0}]}),t.register({name:"file-metadata",fields:[{name:"name",type:"string"},{name:"mimetype",type:"string"},{name:"dimensions",type:"@keet/file-dimensions"},{name:"userdata",type:"buffer"},{name:"duration",type:"uint"},{name:"isPreview",type:"bool"}]}),t.register({name:"external-drive-pointer",fields:[{name:"key",type:"@keet/core-key",required:!0},{name:"path",type:"string",required:!0},{name:"version",type:"uint",required:!0},{name:"size",type:"uint",required:!0}]}),t.register({name:"external-blob-pointer",fields:[{name:"key",type:"@keet/core-key",required:!0},{name:"blob",type:"@keet/blob-pointer",required:!0}]}),t.register({name:"file-pointer",fields:[{name:"inlined",type:"buffer"},{name:"blob",type:"@keet/blob-pointer"},{name:"externalBlob",type:"@keet/external-blob-pointer"},{name:"externalDrive",type:"@keet/external-drive-pointer"}]}),t.register({name:"file",fields:[{name:"pointer",type:"@keet/file-pointer",required:!0},{name:"metadata",type:"@keet/file-metadata"},{name:"preview",type:"@keet/image-file"},{name:"hash",type:"fixed32"}]}),t.register({name:"image-file",fields:[{name:"small",type:"@keet/file"},{name:"medium",type:"@keet/file"},{name:"large",type:"@keet/file"}]}),t.register({name:"file-status",fields:[{name:"isDeleted",type:"bool"}]}),t.register({name:"file-record",fields:[{name:"id",type:"uint",required:!0},{name:"oplog",type:"@keet/oplog-id",required:!0},{name:"status",type:"@keet/file-status",required:!0},{name:"file",type:"@keet/file",required:!0},{name:"version",type:"uint"}]}),t.register({name:"device-status",fields:[{name:"isActive",type:"bool"},{name:"isIndexing",type:"bool"}]}),t.register({name:"member-status",fields:[{name:"isAdmin",type:"bool"},{name:"isModerator",type:"bool"},{name:"isPending",type:"bool"},{name:"isActive",type:"bool"},{name:"isMuted",type:"bool"},{name:"isBanned",type:"bool"},{name:"isShadowBanned",type:"bool"},{name:"isRemoved",type:"bool"}]}),t.register({name:"member-moderation-status",fields:[{name:"isMuted",type:"bool"},{name:"isBanned",type:"bool"},{name:"isShadowBanned",type:"bool"}]}),t.register({name:"abi",fields:[{name:"version",type:"uint",required:!0}]}),t.register({name:"device-stats",fields:[{name:"total",type:"uint",required:!0},{name:"active",type:"uint",required:!0}]}),t.register({name:"member-stats",fields:[{name:"total",type:"uint",required:!0},{name:"active",type:"uint",required:!0},{name:"pending",type:"uint",required:!0}]}),t.register({name:"chat-stats",fields:[{name:"clock",type:"uint",required:!0},{name:"pinned",type:"uint",required:!0},{name:"threads",type:"uint",required:!0},{name:"timestamp",type:"uint",required:!0},{name:"flagsClock",type:"uint"}]}),t.register({name:"file-stats",fields:[{name:"clock",type:"uint",required:!0}]}),t.register({name:"stats",fields:[{name:"devices",type:"@keet/device-stats",required:!0},{name:"members",type:"@keet/member-stats",required:!0},{name:"chat",type:"@keet/chat-stats",required:!0},{name:"files",type:"@keet/file-stats",required:!0}]}),t.register({name:"room-type",enum:["Default","Broadcast","DirectMessage"]}),t.register({name:"system-settings",fields:[{name:"roomType",type:"@keet/room-type"},{name:"isExperimental",type:"bool"},{name:"isJoiningDisabled",type:"bool"},{name:"isAppendingDisabled",type:"bool"},{name:"isCallingDisabled",type:"bool"},{name:"isMembershipEventsDisabled",type:"bool"},{name:"isAttachmentsDisabled",type:"bool"},{name:"isLinksDisabled",type:"bool"},{name:"buildType",type:"@keet/build-type"}]}),t.register({name:"system-digest",fields:[{name:"abi",type:"@keet/abi",required:!0},{name:"settings",type:"@keet/system-settings",required:!0},{name:"creationTime",type:"uint",required:!0}]}),t.register({name:"room-seed",fields:[{name:"seed",type:"fixed32",required:!0}]}),t.register({name:"room-capabilities",fields:[{name:"mailboxKeyPair",type:"@keet/encryption-keypair",required:!0},{name:"discoveryKeyPair",type:"@keet/signing-keypair",required:!0},{name:"wakeupTopic",type:"@keet/room-discovery-key",required:!0},{name:"swarmTopic",type:"@keet/room-discovery-key",required:!0}]}),t.register({name:"room-supported-language",strings:!0,enum:["en","it","ru","es","de"]}),t.register({name:"room-config",fields:[{name:"title",type:"string"},{name:"avatar",type:"@keet/image-file"},{name:"description",type:"string"},{name:"supportedLanguages",array:!0,type:"@keet/room-supported-language"},{name:"blindPeers",type:"fixed32",array:!0}]}),t.register({name:"blind-peer",fields:[{name:"key",type:"@keet/public-key",required:!0}]}),t.register({name:"add-blind-peer-operation",fields:[i,{name:"peer",type:"@keet/blind-peer",required:!0}]}),t.register({name:"remove-blind-peer-operation",fields:[i,{name:"key",type:"@keet/public-key",required:!0}]}),t.register({name:"identity-attestation",compact:!0,fields:[{name:"memberKey",type:"@keet/member-key",required:!0},{name:"proof",type:"buffer",required:!0}]}),t.register({name:"device-invitation",fields:[{name:"id",type:"@keet/invitation-id",required:!0},{name:"response",type:"buffer",required:!0}]}),t.register({name:"device",fields:[{name:"key",type:"@keet/device-key",required:!0},{name:"memberKey",type:"@keet/member-key",required:!0},{name:"status",type:"@keet/device-status",required:!0},{name:"profile",type:"@keet/device-profile",required:!0},{name:"invitation",type:"@keet/device-invitation"}]}),t.register({name:"member-profile",fields:[{name:"timestamp",type:"uint",required:!0},{name:"mailbox",type:"@keet/public-key"},{name:"displayName",type:"string"},{name:"avatar",type:"@keet/image-file"},{name:"username",type:"string"}]}),t.register({name:"device-profile",fields:[{name:"swarmKey",type:"@keet/swarm-key"},{name:"name",type:"string"},{name:"isMobile",type:"bool"},{name:"buildType",type:"@keet/build-type"}]}),t.register({name:"member-update",fields:[{name:"profile",type:"@keet/member-profile",required:!0},{name:"attestation",type:"@keet/identity-attestation",required:!0}]}),t.register({name:"device-update",fields:[{name:"profile",type:"@keet/device-profile",required:!0},{name:"attestation",type:"@keet/identity-attestation",required:!0}]}),t.register({name:"member-contact-info",fields:[{name:"profile",type:"@keet/member-profile",required:!0},{name:"attestation",type:"@keet/identity-attestation",required:!0}]}),t.register({name:"build-type",strings:!0,enum:["Nightly","Internal","Production"]}),t.register({name:"signed-pairing-data",fields:[{name:"id",type:"@keet/invitation-id",required:!0},{name:"data",type:"buffer",required:!0},{name:"signature",type:"buffer",required:!0}]}),t.register({name:"device-request-identity",fields:[{name:"devicePublicKey",type:"@keet/public-key",required:!0}]}),t.register({name:"device-response-identity",fields:[{name:"privateProfileIdentity",type:"@keet/identity-attestation",required:!0},{name:"deviceProof",type:"buffer",required:!0}]}),t.register({name:"device-identity",fields:[{name:"deviceKey",type:"@keet/device-key",required:!0},{name:"privateProfileIdentity",type:"@keet/identity-attestation",required:!0},{name:"deviceProof",type:"buffer",required:!0}]}),t.register({name:"device-request-with-invitation",fields:[{name:"deviceKey",type:"@keet/device-key",required:!0},{name:"keyPair",type:"@keet/signing-keypair",required:!0},{name:"device",type:"@keet/device-update",required:!0},{name:"member",type:"@keet/member-update",required:!0},{name:"identity",type:"@keet/device-request-identity"}]}),t.register({name:"device-request-with-invitation-and-proof",fields:[{name:"id",type:"@keet/invitation-id",required:!0},{name:"request",type:"@keet/device-request-with-invitation",required:!0},{name:"signature",type:"buffer",required:!0}]}),t.register({name:"device-request-with-member-proof",fields:[{name:"device",type:"@keet/device-update",required:!0},{name:"member",type:"@keet/member-update"}]}),t.register({name:"device-request",fields:[{name:"withInvitation",type:"@keet/device-request-with-invitation-and-proof"},{name:"withMemberProof",type:"@keet/device-request-with-member-proof"}]}),t.register({name:"device-response",fields:[{name:"signedKeys",type:"@keet/signed-pairing-data",required:!0},{name:"identity",type:"@keet/device-response-identity"}]}),t.register({name:"invitation-metadata",fields:[{name:"expiration",type:"uint"},{name:"requiresConfirmation",type:"bool"},{name:"canModerate",type:"bool"},{name:"canAdmin",type:"bool"},{name:"buildType",type:"@keet/build-type"}]}),t.register({name:"invitation",fields:[{name:"id",type:"@keet/invitation-id",required:!0},{name:"response",type:"@keet/signed-pairing-data",required:!0},{name:"metadata",type:"@keet/invitation-metadata",required:!0},{name:"anchor",type:"@keet/head"},{name:"isActive",type:"bool"}]}),t.register({name:"add-invitation-operation",fields:[i,{name:"invitation",type:"@keet/invitation",required:!0}]}),t.register({name:"remove-invitation-operation",fields:[i,{name:"id",type:"fixed32",required:!0}]}),t.register({name:"sendable-room-invitation",fields:[{name:"mailbox",type:"fixed32",required:!0},{name:"invitationSeed",type:"fixed32",required:!0},{name:"anchor",type:"@keet/head",required:!0}]}),t.register({name:"readonly-room-invitation",fields:[{name:"roomKey",type:"fixed32",required:!0},{name:"encryptionKey",type:"fixed32",required:!0},{name:"seed",type:"fixed32",required:!0},{name:"fastForwardTo",type:"fixed32"}]}),t.register({name:"sendable-identity-invitation",fields:[{name:"mailbox",type:"fixed32",required:!0},{name:"invitationSeed",type:"fixed32",required:!0},{name:"anchor",type:"@keet/head",required:!0},{name:"identityPublicKey",type:"@keet/member-key",required:!0}]}),t.register({name:"sendable-contact-invitation",fields:[{name:"mailbox",type:"fixed32",required:!0}]}),t.register({name:"sendable-invitation",fields:[{name:"room",type:"@keet/sendable-room-invitation"},{name:"identity",type:"@keet/sendable-identity-invitation"},{name:"contact",type:"@keet/sendable-contact-invitation"},{name:"readonly",type:"@keet/readonly-room-invitation"},{name:"additionalNodes",array:!0,type:"ipv4Address"},{name:"buildType",type:"@keet/build-type"}]}),t.register({name:"add-device-operation",fields:[i,{name:"blindRequest",type:"buffer",required:!0}]}),t.register({name:"update-device-operation",fields:[i,{name:"profile",type:"@keet/device-profile"}]}),t.register({name:"remove-device-operation",fields:[i,{name:"key",type:"@keet/device-key",required:!0}]}),t.register({name:"start-indexing-operation",fields:[]}),t.register({name:"stop-indexing-operation",fields:[]}),t.register({name:"join-request",fields:[{name:"deviceKey",type:"@keet/device-key",required:!0},{name:"id",type:"@keet/invitation-id",required:!0},{name:"request",type:"@keet/device-request-with-invitation",required:!0}]}),t.register({name:"accept-join-request-operation",fields:[i,{name:"deviceKey",type:"@keet/device-key",required:!0},{name:"identity",type:"@keet/device-response-identity"}]}),t.register({name:"reject-join-request-operation",fields:[i,{name:"deviceKey",type:"@keet/device-key",required:!0}]});const r=[{name:"key",type:"@keet/member-key",required:!0},{name:"status",type:"@keet/member-status",required:!0},{name:"profile",type:"@keet/member-profile",required:!0}];t.register({name:"member",fields:r}),t.register({name:"full-member",fields:[...r,{name:"proofs",type:"@keet/member-proofs"}]}),t.register({name:"member-proofs",fields:[{name:"key",type:"@keet/member-key",required:!0},{name:"profileAttestation",type:"buffer"},{name:"latestReceipt",type:"buffer"}]}),t.register({name:"update-member-operation",fields:[i,{name:"member",type:"@keet/member-update",required:!0}]}),t.register({name:"change-member-status-operation",fields:[i,{name:"memberKey",type:"@keet/member-key",required:!0},{name:"key",type:"uint",required:!0},{name:"status",type:"@keet/member-moderation-status",required:!0}]}),t.register({name:"change-member-role-operation",fields:[i,{name:"key",type:"@keet/member-key",required:!0},{name:"isModerator",type:"bool"},{name:"isAdmin",type:"bool"}]}),t.register({name:"remove-member-operation",fields:[i,{name:"key",type:"@keet/member-key",required:!0}]}),t.register({name:"member-activity",fields:[{name:"key",type:"@keet/member-key",required:!0},{name:"mentions",type:"uint",required:!0}]}),t.register({name:"member-joined-event",fields:[{name:"memberKey",type:"@keet/member-key"}]}),t.register({name:"member-left-event",fields:[{name:"memberKey",type:"@keet/member-key"}]}),t.register({name:"member-removed-event",fields:[{name:"memberKey",type:"@keet/member-key"}]}),t.register({name:"title-changed-chat-event",fields:[{name:"from",type:"string"},{name:"to",type:"string"}]}),t.register({name:"location-shared-event",fields:[{name:"latitude",type:"float64",required:!0},{name:"longitude",type:"float64",required:!0}]}),t.register({name:"chat-event",fields:[{name:"memberJoined",type:"@keet/member-joined-event"},{name:"memberLeft",type:"@keet/member-left-event"},{name:"titleChanged",type:"@keet/title-changed-chat-event"},{name:"callStarted",type:"bool"},{name:"callHangup",type:"bool"},{name:"callMissed",type:"bool"},{name:"roomAvatarChanged",type:"bool"},{name:"invitationCreated",type:"bool"},{name:"memberRemoved",type:"@keet/member-removed-event"},{name:"locationShared",type:"@keet/location-shared-event"}]}),t.register({name:"sendable-event",fields:[{name:"callStarted",type:"bool"},{name:"callHangup",type:"bool"},{name:"callMissed",type:"bool"},{name:"locationShared",type:"@keet/location-shared-event"}]}),t.register({name:"display-range",fields:[{name:"start",type:"uint",required:!0},{name:"length",type:"uint",required:!0}]}),t.register({name:"display-content-range",fields:[{name:"range",type:"@keet/display-range",required:!0},{name:"content",type:"string",required:!0}]}),t.register({name:"mention-display-item",fields:[{name:"range",type:"@keet/display-range",required:!0},{name:"memberKey",type:"@keet/member-key",required:!0}]}),t.register({name:"translation-display-item",fields:[{name:"range",type:"@keet/display-range",required:!0},{name:"language",type:"@keet/room-supported-language",required:!0},{name:"text",type:"string",required:!0}]}),t.register({name:"link-preview",fields:[{name:"title",type:"string"},{name:"description",type:"string"},{name:"file",type:"@keet/file"},{name:"files",type:"uint",array:!0}]}),t.register({name:"display-link-item",fields:[{name:"range",type:"@keet/display-range",required:!0},{name:"url",type:"string",required:!0},{name:"preview",type:"@keet/link-preview"}]}),t.register({name:"display",fields:[{name:"mention",type:"@keet/mention-display-item",array:!0},{name:"httpLink",type:"@keet/display-link-item",array:!0},{name:"pearLink",type:"@keet/display-link-item",array:!0},{name:"bold",type:"@keet/display-range",array:!0},{name:"italic",type:"@keet/display-range",array:!0},{name:"code",type:"@keet/display-range",array:!0},{name:"emoji",type:"@keet/display-content-range",array:!0},{name:"codeBlock",type:"@keet/display-range",array:!0},{name:"strike",type:"@keet/display-range",array:!0},{name:"translation",type:"@keet/translation-display-item",array:!0}]}),t.register({name:"oplog-message",fields:[{name:"text",type:"string"},{name:"files",type:"@keet/file",array:!0},{name:"display",type:"@keet/display"},{name:"replyTo",type:"@keet/oplog-id"},{name:"parent",type:"@keet/oplog-id"},{name:"event",type:"@keet/sendable-event"},{name:"forwarded",type:"bool"}]}),t.register({name:"index-message",fields:[{name:"text",type:"string"},{name:"files",type:"uint",array:!0},{name:"display",type:"@keet/display"},{name:"replyTo",type:"@keet/oplog-id"},{name:"parent",type:"@keet/oplog-id"},{name:"forwarded",type:"bool"}]}),t.register({name:"full-index-message",fields:[{name:"text",type:"string"},{name:"files",type:"@keet/file",array:!0},{name:"display",type:"@keet/display"},{name:"replyTo",type:"@keet/oplog-id"},{name:"parent",type:"@keet/oplog-id"},{name:"forwarded",type:"bool"}]}),t.register({name:"message-status",fields:[{name:"isEdited",type:"bool"},{name:"isDeleted",type:"bool"},{name:"isPinned",type:"bool"}]}),t.register({name:"message-index-id",compact:!0,fields:[{name:"thread",type:"uint",required:!0},{name:"index",type:"uint",required:!0}]}),t.register({name:"thread",fields:[{name:"id",type:"uint",required:!0},{name:"count",type:"uint",required:!0},{name:"parent",type:"@keet/oplog-id"},{name:"stats",type:"@keet/stats"}]}),t.register({name:"chat-message-record",fields:[{name:"id",type:"@keet/message-index-id",required:!0},{name:"oplog",type:"@keet/oplog-id",required:!0},{name:"clock",type:"uint",required:!0},{name:"timestamp",type:"uint",required:!0},{name:"editedAt",type:"uint"},{name:"status",type:"@keet/message-status",required:!0},{name:"message",type:"@keet/index-message"},{name:"event",type:"@keet/chat-event"}]}),t.register({name:"full-chat-message-record",fields:[{name:"id",type:"@keet/message-index-id",required:!0},{name:"oplog",type:"@keet/oplog-id",required:!0},{name:"clock",type:"uint",required:!0},{name:"timestamp",type:"uint",required:!0},{name:"editedAt",type:"uint"},{name:"status",type:"@keet/message-status",required:!0},{name:"message",type:"@keet/full-index-message"},{name:"event",type:"@keet/chat-event"}]}),t.register({name:"add-chat-message-operation",fields:[i,{name:"message",type:"@keet/oplog-message",required:!0}]}),t.register({name:"remove-chat-message-operation",fields:[i,{name:"oplog",type:"@keet/oplog-id",required:!0}]}),t.register({name:"update-chat-message-operation",fields:[i,{name:"oplog",type:"@keet/oplog-id",required:!0},{name:"message",type:"@keet/oplog-message",required:!0}]}),t.register({name:"pin-chat-message-operation",fields:[i,{name:"oplog",type:"@keet/oplog-id",required:!0},{name:"isPinned",type:"bool"}]}),t.register({name:"display-type",enum:["HttpLink","PearLink"]}),t.register({name:"add-file-preview-operation",fields:[i,{name:"oplog",type:"@keet/oplog-id",required:!0},{name:"index",type:"uint",required:!0},{name:"preview",type:"@keet/image-file",required:!0},{name:"displayType",type:"@keet/display-type"}]}),t.register({name:"reaction",fields:[{name:"id",type:"@keet/message-index-id",required:!0},{name:"sender",type:"@keet/member-key",required:!0},{name:"clock",type:"uint",required:!0},{name:"reaction",type:"string",required:!0}]}),t.register({name:"reactions-summary",fields:[{name:"text",type:"string",required:!0},{name:"count",type:"uint",required:!0}]}),t.register({name:"reactions-digest",fields:[{name:"id",type:"@keet/message-index-id",required:!0},{name:"total",type:"uint",required:!0},{name:"reactions",type:"@keet/reactions-summary",required:!0,array:!0},{name:"editedAt",type:"uint"}]}),t.register({name:"add-reaction-operation",fields:[i,{name:"oplog",type:"@keet/oplog-id",required:!0},{name:"reaction",type:"string",required:!0}]}),t.register({name:"remove-reaction-operation",fields:[i,{name:"oplog",type:"@keet/oplog-id",required:!0},{name:"reaction",type:"string",required:!0}]}),t.register({name:"update-room-config-operation",fields:[i,{name:"key",type:"uint",required:!0},{name:"config",type:"@keet/room-config",required:!0}]}),t.register({name:"group-member",fields:[{name:"memberKey",type:"@keet/member-key",required:!0},{name:"displayName",type:"string",required:!0},{name:"avatar",type:"@keet/image-file"}]}),t.register({name:"user-registry-info",fields:[{name:"key",type:"@keet/core-key",required:!0},{name:"username",type:"string"}]}),t.register({name:"room-identity",fields:[{name:"publicKey",type:"@keet/member-key",required:!0},{name:"discoveryCoreKey",type:"@keet/core-key"},{name:"userRegistry",type:"@keet/user-registry-info"}]}),t.register({name:"genesis-operation",fields:[i,{name:"digest",type:"@keet/system-digest",required:!0},{name:"capabilities",type:"@keet/room-seed",required:!0},{name:"config",type:"@keet/room-config"},{name:"identity",type:"@keet/room-identity"},{name:"bootstrapDevice",type:"@keet/device-update"},{name:"initialMembers",type:"@keet/member-update",array:!0}]}),t.register({name:"upgrade-operation",fields:[i,{name:"version",type:"uint",required:!0}]}),t.register({name:"migrate-abi-operation",fields:[i,{name:"from",type:"uint",required:!0},{name:"to",type:"uint",required:!0},{name:"buildType",type:"@keet/build-type"}]}),t.register({name:"system-settings-keys",enum:["RoomType","IsExperimental","IsJoiningDisabled","IsAppendingDisabled","IsCallingDisabled","IsMembershipEventsDisabled","IsAttachmentsDisabled","IsLinksDisabled"]}),t.register({name:"update-system-settings-operation",fields:[i,{name:"key",type:"uint",required:!0},{name:"settings",type:"@keet/system-settings",required:!0}]}),t.register({name:"test-increment-operation",fields:[i,{name:"value",type:"uint",required:!0}]}),t.register({name:"test-collection-record-1",fields:[{name:"key",type:"uint",required:!0},{name:"value",type:"uint",required:!0}]}),t.register({name:"label-type",enum:["Flag"]}),t.register({name:"chat-label",fields:[{name:"id",type:"@keet/message-index-id",required:!0},{name:"sender",type:"@keet/member-key",required:!0},{name:"clock",type:"uint",required:!0},{name:"label",type:"@keet/label-type",required:!0}]}),t.register({name:"add-chat-label-operation",fields:[i,{name:"oplog",type:"@keet/oplog-id",required:!0},{name:"label",type:"@keet/label-type",required:!0}]}),t.register({name:"remove-chat-label-operation",fields:[i,{name:"oplog",type:"@keet/oplog-id",required:!0},{name:"label",type:"@keet/label-type",required:!0}]}),t.register({name:"chat-label-summary",fields:[{name:"label",type:"@keet/label-type",required:!0},{name:"count",type:"uint",required:!0}]}),t.register({name:"chat-label-digest",fields:[{name:"id",type:"@keet/message-index-id",required:!0},{name:"total",type:"uint",required:!0},{name:"labels",type:"@keet/chat-label-summary",required:!0,array:!0},{name:"editedAt",type:"uint",required:!0},{name:"flagsClock",type:"uint"},{name:"version",type:"uint"},{name:"isDeleted",type:"bool"}]}),t.register({name:"member-label-type",enum:["Flag"]}),t.register({name:"member-label",fields:[{name:"key",type:"@keet/member-key",required:!0},{name:"sender",type:"@keet/member-key",required:!0},{name:"clock",type:"uint",required:!0},{name:"label",type:"@keet/member-label-type",required:!0}]}),t.register({name:"add-member-label-operation",fields:[i,{name:"key",type:"@keet/member-key",required:!0},{name:"label",type:"@keet/member-label-type",required:!0}]}),t.register({name:"member-label-summary",fields:[{name:"label",type:"@keet/member-label-type",required:!0},{name:"count",type:"uint",required:!0}]}),t.register({name:"member-label-digest",fields:[{name:"key",type:"@keet/member-key",required:!0},{name:"total",type:"uint",required:!0},{name:"labels",type:"@keet/member-label-summary",required:!0,array:!0},{name:"editedAt",type:"uint",required:!0},{name:"flagsClock",type:"uint",required:!0}]}),t.register({name:"update-read-length-operation",fields:[i,{name:"length",type:"uint",required:!0}]}),t.register({name:"read-length",fields:[{name:"memberKey",type:"@keet/member-key",required:!0},{name:"length",type:"uint",required:!0}]}),t.register({name:"move-indexer-operation",fields:[i,{name:"deviceKey",type:"@keet/device-key",required:!0},{name:"fromDeviceKey",type:"@keet/device-key",required:!0}]}),t.register({name:"tmp-removed-member",fields:[{name:"key",type:"@keet/member-key",required:!0}]}),t.register({name:"start-call",fields:[i,{name:"callKey",type:"fixed32",required:!0},{name:"encryptionKey",type:"@keet/encryption-key",required:!0},{name:"streams",type:"@keet/core-key",array:!0},{name:"discoveryKey",type:"@keet/room-discovery-key"},{name:"version",type:"uint"}]}),t.register({name:"join-call",fields:[i,{name:"callKey",type:"fixed32",required:!0},{name:"streams",type:"@keet/core-key",array:!0}]}),t.register({name:"leave-call",fields:[i,{name:"callKey",type:"fixed32",required:!0}]}),t.register({name:"end-call",fields:[i,{name:"callKey",type:"fixed32",required:!0}]}),t.register({name:"add-call-stream",fields:[i,{name:"callKey",type:"fixed32",required:!0},{name:"streamKey",type:"@keet/core-key",required:!0}]}),t.register({name:"remove-call-stream",fields:[i,{name:"callKey",type:"fixed32",required:!0},{name:"streamKey",type:"@keet/core-key",required:!0}]}),t.register({name:"call-record",fields:[{name:"callKey",type:"fixed32",required:!0},{name:"encryptionKey",type:"@keet/encryption-key",required:!0},{name:"createdAt",type:"uint",required:!0},{name:"endedAt",type:"uint"},{name:"discoveryKey",type:"@keet/room-discovery-key"},{name:"version",type:"uint"}]}),t.register({name:"call-member-record",fields:[{name:"callKey",type:"fixed32",required:!0},{name:"memberKey",type:"@keet/member-key",required:!0},{name:"createdAt",type:"uint",required:!0}]}),t.register({name:"call-device-record",fields:[{name:"callKey",type:"fixed32",required:!0},{name:"deviceKey",type:"@keet/device-key",required:!0},{name:"memberKey",type:"@keet/member-key",required:!0},{name:"createdAt",type:"uint",required:!0},{name:"swarmKey",type:"@keet/swarm-key"}]}),t.register({name:"call-stream-record",fields:[{name:"callKey",type:"fixed32",required:!0},{name:"deviceKey",type:"@keet/device-key",required:!0},{name:"streamKey",type:"buffer",required:!0},{name:"createdAt",type:"uint",required:!0}]}),t.register({name:"test-crash-operation",fields:[i]}),t.register({name:"test-dispatch-error-operation",fields:[i]});const a=e.namespace("keet-private-id");a.register({name:"contact",fields:[{name:"memberKey",type:"@keet/member-key",required:!0},{name:"status",type:"@keet-private-id/contact-status",required:!0},{name:"mailbox",type:"@keet/public-key"},{name:"roomKey",type:"@keet/room-key"}]}),a.register({name:"v3-room-migration-info",fields:[{name:"roomKey",type:"@keet/room-key",required:!0},{name:"encryptionKey",type:"@keet/encryption-key",required:!0},{name:"seed",type:"fixed32",required:!0},{name:"initiator",type:"@keet/head",required:!0},{name:"fastForwardTo",type:"fixed32",required:!0}]}),a.register({name:"run-v3-migration-operation",fields:[{name:"sharedRooms",type:"@keet-private-id/v3-room-migration-info",array:!0,required:!0},{name:"blockedContacts",type:"@keet/member-key",array:!0,required:!0}]}),a.register({name:"update-identity-operation",fields:[{name:"identity",type:"@keet/room-identity",required:!0}]}),a.register({name:"counters",fields:[{name:"rooms",type:"uint",required:!0},{name:"contacts",type:"uint",required:!0}]}),a.register({name:"stats",fields:[{name:"rooms",type:"uint",required:!0},{name:"contactRequests",type:"uint",required:!0}]}),a.register({name:"add-entropy-operation",fields:[{name:"entropy",type:"buffer",required:!0}]}),a.register({name:"pending-invitation-identity",fields:[{name:"publicKey",type:"@keet/member-key",required:!0},{name:"devicePublicKey",type:"@keet/public-key",required:!0},{name:"writerKey",type:"@keet/device-key",required:!0}]}),a.register({name:"pending-invitation",fields:[{name:"id",type:"fixed32",required:!0},{name:"invitationSeed",type:"fixed32",required:!0},{name:"mailbox",type:"fixed32",required:!0},{name:"responseKeyPair",type:"@keet/signing-keypair",required:!0},{name:"initiator",type:"@keet/head",required:!0},{name:"inviter",type:"@keet/head",required:!0},{name:"identity",type:"@keet-private-id/pending-invitation-identity"},{name:"buildType",type:"@keet/build-type"}]}),a.register({name:"resolve-pending-invitation-operation",fields:[i,{name:"blindResponse",type:"buffer",required:!0}]}),a.register({name:"add-pending-invitation-operation",fields:[i,{name:"invitation",type:"@keet-private-id/pending-invitation",required:!0}]}),a.register({name:"remove-pending-invitation-operation",fields:[i,{name:"id",type:"fixed32",required:!0}]}),a.register({name:"identity-swap",fields:[{name:"publicKey",type:"@keet/member-key",required:!0},{name:"devicePublicKey",type:"@keet/public-key",required:!0},{name:"privateProfileKey",type:"@keet/room-key"},{name:"deviceKeyPair",type:"@keet/signing-keypair"},{name:"deviceProof",type:"buffer",required:!0}]}),a.register({name:"identity-swap-v2",fields:[{name:"publicKey",type:"@keet/member-key",required:!0},{name:"writerKey",type:"@keet/core-key",required:!0},{name:"devicePublicKey",type:"@keet/public-key",required:!0},{name:"privateProfileKey",type:"@keet/room-key"}]}),a.register({name:"room-status",fields:[{name:"isActive",type:"bool"},{name:"isFullyMuted",type:"bool"},{name:"isMentionsOnlyMuted",type:"bool"},{name:"isReadOnly",type:"bool"},{name:"isFavorite",type:"bool"}]}),a.register({name:"room",fields:[{name:"roomKey",type:"@keet/room-key",required:!0},{name:"encryptionKey",type:"@keet/encryption-key",required:!0},{name:"mailbox",type:"@keet/public-key",required:!0},{name:"status",type:"@keet-private-id/room-status",required:!0},{name:"clock",type:"uint",required:!0},{name:"initiator",type:"@keet/head"},{name:"fastForwardTo",type:"fixed32"},{name:"identitySwap",type:"@keet-private-id/identity-swap"},{name:"identitySwapV2",type:"@keet-private-id/pending-invitation-identity"},{name:"contact",type:"@keet/member-key"}]}),a.register({name:"add-room-operation",fields:[i,{name:"roomKey",type:"@keet/room-key",required:!0},{name:"encryptionKey",type:"@keet/encryption-key",required:!0},{name:"mailbox",type:"@keet/public-key",required:!0},{name:"fastForwardTo",type:"fixed32"},{name:"initiator",type:"@keet/head"},{name:"dm",type:"@keet/member-key"},{name:"isReadOnly",type:"bool"}]}),a.register({name:"remove-room-operation",fields:[i,{name:"discoveryKey",type:"@keet/room-discovery-key",required:!0}]}),a.register({name:"update-room-status-operation",fields:[i,{name:"roomKey",type:"@keet/room-key",required:!0},{name:"key",type:"uint",required:!0},{name:"status",type:"@keet-private-id/room-status",required:!0}]}),a.register({name:"contact-status",fields:[{name:"isBlocked",type:"bool"}]}),a.register({name:"contact-record",fields:[{name:"memberKey",type:"@keet/member-key",required:!0},{name:"clock",type:"uint",required:!0},{name:"status",type:"@keet-private-id/contact-status",required:!0},{name:"mailbox",type:"@keet/public-key"},{name:"roomKey",type:"@keet/room-key"}]}),a.register({name:"add-contact-operation",fields:[i,{name:"contact",type:"@keet-private-id/contact",required:!0}]}),a.register({name:"update-contact-status-operation",fields:[i,{name:"memberKey",type:"@keet/member-key",required:!0},{name:"key",type:"uint",required:!0},{name:"status",type:"@keet-private-id/contact-status",required:!0}]}),a.register({name:"remove-contact-operation",fields:[i,{name:"memberKey",type:"@keet/member-key",required:!0}]}),a.register({name:"activate-contact-room-operation",fields:[i,{name:"memberKey",type:"@keet/member-key",required:!0}]}),a.register({name:"contact-request-status",fields:[{name:"isPending",type:"bool"},{name:"isAccepted",type:"bool"},{name:"isRejected",type:"bool"},{name:"isDiscarded",type:"bool"},{name:"isSeen",type:"bool"}]}),a.register({name:"contact-request-body",fields:[{name:"sender",type:"@keet/member-update",required:!0},{name:"keys",type:"@keet/room-keys",required:!0},{name:"mailbox",type:"@keet/public-key",required:!0},{name:"message",type:"string"}]}),a.register({name:"contact-request",fields:[{name:"body",type:"@keet-private-id/contact-request-body",required:!0},{name:"attestation",type:"@keet/identity-attestation",required:!0}]}),a.register({name:"contact-request-record",fields:[{name:"memberKey",type:"@keet/member-key",required:!0},{name:"clock",type:"uint",required:!0},{name:"sender",type:"@keet/member-profile",required:!0},{name:"status",type:"@keet-private-id/contact-request-status",required:!0},{name:"keys",type:"@keet/room-keys",required:!0},{name:"mailbox",type:"@keet/public-key",required:!0},{name:"message",type:"string"},{name:"sentAt",type:"uint"}]}),a.register({name:"add-contact-request-operation",fields:[i,{name:"blindRequest",type:"buffer",required:!0}]}),a.register({name:"update-contact-request-status-operation",fields:[i,{name:"memberKey",type:"@keet/member-key",required:!0},{name:"key",type:"uint",required:!0},{name:"status",type:"@keet-private-id/contact-request-status",required:!0},{name:"roomKey",type:"@keet/room-key"}]}),a.register({name:"profile-discovery-record-v1",fields:[{name:"timestamp",type:"uint",required:!0},{name:"key",type:"@keet/core-key",required:!0},{name:"mailbox",type:"@keet/public-key",required:!0}]}),a.register({name:"profile-discovery-record",versions:[{version:1,type:"@keet-private-id/profile-discovery-record-v1"}]}),a.register({name:"unreads",fields:[{name:"deviceKey",type:"@keet/device-key",required:!0},{name:"key",type:"@keet/core-key",required:!0}]}),a.register({name:"add-unreads-key-operation",fields:[i,{name:"key",type:"@keet/core-key",required:!0}]}),a.register({name:"remove-unreads-key-operation",fields:[i,{name:"key",type:"@keet/core-key",required:!0}]}),a.register({name:"settings",fields:[{name:"disableReadReceipts",type:"bool"}]}),a.register({name:"user-settings-key",strings:!0,enum:["disableReadReceipts"]}),a.register({name:"update-settings-operation",fields:[i,{name:"key",type:"@keet-private-id/user-settings-key",required:!0},{name:"settings",type:"@keet-private-id/settings",required:!0}]})};
@holepunchto/keet-core/schema/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("./contract"),r=require("./config"),a=require("./local"),c=require("./api");module.exports={generateContractSchema:e,generateConfigSchema:r,generateLocalSchema:a,generateAPISchema:c};
@holepunchto/keet-core/schema/local/index.js +1 -0
……@@ -0,0 +1 @@
1const e=require("../contract");module.exports=function(t){const r=t.namespace("local");e(t),r.register({name:"background-sync-room",fields:[{name:"discoveryPublicKey",type:"@keet/room-discovery-key",required:!0},{name:"timestamp",type:"uint",required:!0},{name:"lastSynced",type:"uint"},{name:"dirty",type:"bool"}]}),r.register({name:"stats",fields:[{name:"rooms",type:"uint",required:!0},{name:"activeRooms",type:"uint",required:!0}]}),r.register({name:"migration-status",fields:[{name:"version",type:"uint",required:!0}]}),r.register({name:"v3-private-profile-migration",fields:[{name:"blockedMembers",type:"@keet/member-key",array:!0}]}),r.register({name:"v3-room-migration",fields:[{name:"encryptionKey",type:"@keet/encryption-key",required:!0},{name:"seed",type:"fixed32",required:!0},{name:"capabilities",type:"@keet/room-capabilities",required:!0},{name:"initiator",type:"@keet/head",required:!0},{name:"fastForwardTo",type:"fixed32",required:!0},{name:"privateProfile",type:"@local/v3-private-profile-migration"}]}),r.register({name:"room-migration-stats",fields:[{name:"count",type:"uint",require:!0}]}),r.register({name:"room-migration",fields:[{name:"roomKey",type:"@keet/room-key",required:!0},{name:"priority",type:"uint",required:!0},{name:"v3",type:"@local/v3-room-migration"},{name:"errored",type:"bool"},{name:"timestamp",type:"uint"}]}),r.register({name:"identity-status",fields:[{name:"isConfirmed",type:"bool"}]}),r.register({name:"identity-swap",fields:[{name:"privateProfileKey",type:"@keet/room-key",required:!0}]}),r.register({name:"identity-record",fields:[{name:"publicKey",type:"@keet/public-key",required:!0},{name:"privateProfileKey",type:"@keet/room-key",required:!0},{name:"deviceKeyPair",type:"@keet/signing-keypair",required:!0},{name:"deviceProof",type:"buffer",required:!0},{name:"status",type:"@local/identity-status",required:!0},{name:"entropy",type:"buffer"},{name:"swap",type:"@keet-private-id/identity-swap"},{name:"swapV2",type:"@keet-private-id/identity-swap-v2"}]}),r.register({name:"tasks",enum:["RestoreIdentity","CreateRoom","LeaveRoom","ClearRoom","JoinRoomInvitation","JoinRoomKeys","JoinRoomResponse","SendContactRequest","TestFastTask","TestSlowTask","TestErrorTask"]});const i=[{name:"roomKey",type:"@keet/room-key",required:!0},{name:"encryptionKey",type:"@keet/encryption-key",required:!0},{name:"fastForwardTo",type:"fixed32"},{name:"initiator",type:"@keet/head"}];r.register({name:"room-keys",fields:i}),r.register({name:"join-room-invitation-task",fields:[{name:"invitation",type:"@keet-private-id/pending-invitation",required:!0}]}),r.register({name:"join-room-response-task",fields:[{name:"mailbox",type:"@keet/public-key",required:!0},{name:"keyPair",type:"@keet/signing-keypair",required:!0},{name:"response",type:"buffer",required:!0}]}),r.register({name:"fast-forward-to",fields:[{name:"key",type:"@keet/core-key",required:!0}]});const a=[...i,{name:"mailbox",type:"@keet/public-key"}];r.register({name:"add-room-fields",fields:a}),r.register({name:"join-room-keys-task",fields:[{name:"keys",type:"@local/add-room-fields",required:!0}]}),r.register({name:"create-room-task",fields:[...a,{name:"keyPair",type:"@keet/signing-keypair"},{name:"genesis",type:"@keet/genesis-operation"},{name:"isPrivateProfile",type:"bool"}]}),r.register({name:"leave-room-task",fields:[{name:"roomKey",type:"@keet/room-key",required:!0},{name:"isGossiped",type:"bool"}]}),r.register({name:"clear-room-task",fields:[{name:"roomKey",type:"@keet/room-key",required:!0}]}),r.register({name:"restore-identity-task",fields:[{name:"mnemonic",type:"string",required:!0},{name:"profileDiscoveryTimeout",type:"uint"},{name:"recover",type:"bool"}]}),r.register({name:"send-contact-request-task",fields:[{name:"roomKey",type:"@keet/room-key",required:!0},{name:"memberKey",type:"@keet/member-key",required:!0},{name:"message",type:"string"},{name:"contactInfo",type:"@keet/member-contact-info"}]}),r.register({name:"migrate-v2-room-task",fields:[{name:"key",type:"@keet/room-key",required:!0},{name:"isPrivateProfile",type:"bool"}]}),r.register({name:"task",fields:[{name:"discoveryKey",type:"@keet/room-discovery-key",required:!0},{name:"priority",type:"uint",required:!0},{name:"timestamp",type:"uint",required:!0},{name:"type",type:"uint",required:!0},{name:"restoreIdentity",type:"@local/restore-identity-task"},{name:"createRoom",type:"@local/create-room-task"},{name:"leaveRoom",type:"@local/leave-room-task"},{name:"clearRoom",type:"@local/clear-room-task"},{name:"joinRoomInvitation",type:"@local/join-room-invitation-task"},{name:"joinRoomKeys",type:"@local/join-room-keys-task"},{name:"joinRoomResponse",type:"@local/join-room-response-task"},{name:"sendContactRequest",type:"@local/send-contact-request-task"},{name:"migrateV2Room",type:"@local/migrate-v2-room-task"}]}),r.register({name:"shared-invitation",fields:[{name:"seed",type:"buffer",required:!0},{name:"invitation",type:"@keet/invitation",required:!0}]}),r.register({name:"room-status",fields:[{name:"isWritable",type:"bool"},{name:"isReadable",type:"bool"},{name:"isPrivateProfile",type:"bool"},{name:"isRemoved",type:"bool"}]}),r.register({name:"room-timestamps",fields:[{name:"creation",type:"uint",required:!0},{name:"latestSync",type:"uint",required:!0},{name:"latestChatMessage",type:"uint",required:!0}]}),r.register({name:"room",fields:[{name:"roomKey",type:"@keet/room-key",required:!0},{name:"discoveryKey",type:"@keet/room-discovery-key",required:!0},{name:"encryptionKey",type:"@keet/encryption-key",required:!0},{name:"digest",type:"@keet/system-digest",required:!0},{name:"stats",type:"@keet/stats",required:!0},{name:"timestamps",type:"@local/room-timestamps",required:!0},{name:"fork",type:"uint",required:!0},{name:"length",type:"uint",required:!0},{name:"seed",type:"fixed32",required:!0},{name:"capabilities",type:"@keet/room-capabilities",required:!0},{name:"status",type:"@local/room-status",required:!0},{name:"selfDevice",type:"@keet/device"},{name:"selfMember",type:"@keet/full-member"},{name:"config",type:"@keet/room-config"},{name:"identity",type:"@keet/room-identity"},{name:"lastMessage",type:"@keet/full-chat-message-record"},{name:"dm",type:"@keet/member-key",array:!0},{name:"readLengths",type:"@keet/read-length",array:!0},{name:"lastMember",type:"@keet/member"},{name:"version",type:"uint"},{name:"preferences",type:"@keet-private-id/room-status"},{name:"activeCall",type:"@local/active-call"}]}),r.register({name:"active-call",fields:[{name:"callKey",type:"fixed32",required:!0},{name:"selfDeviceKey",type:"@keet/device-key"}]}),r.register({name:"room-preferences",fields:[{name:"roomKey",type:"@keet/room-key",required:!0},{name:"status",type:"@keet-private-id/room-status",required:!0}]}),r.register({name:"room-metadata",fields:[{name:"roomKey",type:"@keet/room-key",required:!0},{name:"repairs",type:"uint"}]}),r.register({name:"writer",fields:[{name:"mailbox",type:"@keet/public-key",required:!0},{name:"key",type:"@keet/core-key",required:!0},{name:"roomKey",type:"@keet/room-key"},{name:"keyPair",type:"@keet/signing-keypair"},{name:"responseKeyPair",type:"@keet/signing-keypair"}]}),r.register({name:"writer-append",fields:[{name:"key",type:"@keet/core-key",required:!0},{name:"responsePublicKey",type:"fixed32",required:!0}]}),r.register({name:"member",fields:[{name:"key",type:"@keet/member-key",required:!0},{name:"profile",type:"@keet/member-profile",required:!0}]}),r.register({name:"device",fields:[{name:"roomKey",type:"@keet/room-key",required:!0},{name:"device",type:"@keet/device",required:!0}]}),r.register({name:"file",fields:[{name:"file",type:"@keet/file",required:!0},{name:"roomKey",type:"@keet/room-key",required:!0},{name:"encryptionKey",type:"@keet/encryption-key"},{name:"cleared",type:"bool"},{name:"own",type:"bool"},{name:"lastAccessed",type:"uint"},{name:"version",type:"uint"}]}),r.register({name:"debug-flag",fields:[{name:"key",type:"string"},{name:"value",type:"bool"},{name:"description",type:"string"}]}),r.register({name:"debug",fields:[{name:"flags",type:"@local/debug-flag",array:!0}]}),r.register({name:"hyperdht-record",fields:[{name:"nodes",type:"ipv4Address",array:!0},{name:"concurrency",type:"uint"},{name:"maxWindow",type:"uint"},{name:"randomPunchInterval",type:"uint"},{name:"connectionKeepAlive",type:"uint"}]}),r.register({name:"unread",fields:[{name:"roomKey",type:"@keet/room-key",required:!0},{name:"count",type:"uint",required:!0}]}),r.register({name:"error-record-details",fields:[{name:"roomKey",type:"@keet/room-key"},{name:"coreKey",type:"@keet/core-key"}]}),r.register({name:"error-record",fields:[{name:"code",type:"string",required:!0},{name:"message",type:"string",required:!0},{name:"stack",type:"string",required:!0},{name:"timestamp",type:"uint",required:!0},{name:"details",type:"@local/error-record-details"}]}),r.register({name:"keet-state",enum:["RESUME","WAKEUP","PRESUSPEND","SUSPEND"]}),r.register({name:"file-stats",fields:[{name:"roomKey",type:"@keet/room-key",required:!0},{name:"total",type:"uint",required:!0}]}),r.register({name:"file-gc-info",fields:[{name:"lastCleared",type:"uint",required:!0}]}),r.register({name:"environment-record",fields:[{name:"buildType",type:"@keet/build-type",required:!0},{name:"latestOfflineAbi",type:"uint"}]})};
@holepunchto/keet-core/schema/spec/api/hrpc/hrpc.json +599 -0
……@@ -0,0 +1,599 @@
1{
2 "version": 2,
3 "schema": [
4 {
5 "id": 0,
6 "name": "@api/self-destruct",
7 "request": {
8 "name": "@api/self-destruct-request",
9 "stream": false
10 },
11 "version": 1
12 },
13 {
14 "id": 1,
15 "name": "@api/boot",
16 "request": {
17 "name": "@api/boot-request",
18 "stream": false
19 },
20 "response": {
21 "name": "@api/boot-response",
22 "stream": false
23 },
24 "version": 1
25 },
26 {
27 "id": 2,
28 "name": "@api/core-create-room",
29 "request": {
30 "name": "@api/core/create-room-request",
31 "stream": false
32 },
33 "response": {
34 "name": "@api/core/create-room-response",
35 "stream": false
36 },
37 "version": 1
38 },
39 {
40 "id": 3,
41 "name": "@api/core-activate-room",
42 "request": {
43 "name": "@api/core/activate-room-request",
44 "send": true
45 },
46 "version": 1
47 },
48 {
49 "id": 4,
50 "name": "@api/core-deactivate-room",
51 "request": {
52 "name": "@api/core/deactivate-room-request",
53 "send": true
54 },
55 "version": 1
56 },
57 {
58 "id": 5,
59 "name": "@api/core-leave-room",
60 "request": {
61 "name": "@api/core/leave-room-request"
62 },
63 "response": {
64 "name": "@api/core/leave-room-response"
65 },
66 "version": 1
67 },
68 {
69 "id": 6,
70 "name": "@api/core-update-room-config",
71 "request": {
72 "name": "@api/core/update-room-config-request",
73 "send": true
74 },
75 "version": 1
76 },
77 {
78 "id": 7,
79 "name": "@api/core-update-room-settings",
80 "request": {
81 "name": "@api/core/update-room-settings-request",
82 "send": true
83 },
84 "version": 1
85 },
86 {
87 "id": 8,
88 "name": "@api/core-update-room-status",
89 "request": {
90 "name": "@api/core/update-room-status-request",
91 "send": true
92 },
93 "version": 1
94 },
95 {
96 "id": 9,
97 "name": "@api/core-update-profile",
98 "request": {
99 "name": "@api/core/update-profile-request",
100 "send": true
101 },
102 "version": 1
103 },
104 {
105 "id": 10,
106 "name": "@api/core-create-room-invitation",
107 "request": {
108 "name": "@api/core/create-room-invitation-request"
109 },
110 "response": {
111 "name": "@api/core/create-room-invitation-response"
112 },
113 "version": 1
114 },
115 {
116 "id": 11,
117 "name": "@api/core-create-identity-invitation",
118 "request": {
119 "name": "@api/core/create-identity-invitation-request"
120 },
121 "response": {
122 "name": "@api/core/create-identity-invitation-response"
123 },
124 "version": 1
125 },
126 {
127 "id": 12,
128 "name": "@api/core-start-pairing",
129 "request": {
130 "name": "@api/core/start-pairing-request"
131 },
132 "response": {
133 "name": "@api/core/start-pairing-response"
134 },
135 "version": 1
136 },
137 {
138 "id": 13,
139 "name": "@api/core-accept-join-request",
140 "request": {
141 "name": "@api/core/accept-join-request-request"
142 },
143 "response": {
144 "name": "@api/core/accept-join-request-response"
145 },
146 "version": 1
147 },
148 {
149 "id": 14,
150 "name": "@api/core-reject-join-request",
151 "request": {
152 "name": "@api/core/reject-join-request-request"
153 },
154 "response": {
155 "name": "@api/core/reject-join-request-response"
156 },
157 "version": 1
158 },
159 {
160 "id": 15,
161 "name": "@api/core-stop-pairing",
162 "request": {
163 "name": "@api/core/stop-pairing-request"
164 },
165 "response": {
166 "name": "@api/core/stop-pairing-response"
167 },
168 "version": 1
169 },
170 {
171 "id": 16,
172 "name": "@api/core-add-chat-message",
173 "request": {
174 "name": "@api/core/add-chat-message-request"
175 },
176 "response": {
177 "name": "@api/core/add-chat-message-response"
178 },
179 "version": 1
180 },
181 {
182 "id": 17,
183 "name": "@api/core-edit-chat-message",
184 "request": {
185 "name": "@api/core/edit-chat-message-request"
186 },
187 "response": {
188 "name": "@api/core/edit-chat-message-response"
189 },
190 "version": 1
191 },
192 {
193 "id": 18,
194 "name": "@api/core-remove-chat-message",
195 "request": {
196 "name": "@api/core/remove-chat-message-request"
197 },
198 "response": {
199 "name": "@api/core/remove-chat-message-response"
200 },
201 "version": 1
202 },
203 {
204 "id": 19,
205 "name": "@api/core-add-chat-reaction",
206 "request": {
207 "name": "@api/core/add-chat-reaction-request"
208 },
209 "response": {
210 "name": "@api/core/add-chat-reaction-response"
211 },
212 "version": 1
213 },
214 {
215 "id": 20,
216 "name": "@api/core-remove-chat-reaction",
217 "request": {
218 "name": "@api/core/remove-chat-reaction-request"
219 },
220 "response": {
221 "name": "@api/core/remove-chat-reaction-response"
222 },
223 "version": 1
224 },
225 {
226 "id": 21,
227 "name": "@api/core-want-identity",
228 "request": {
229 "name": "@api/core/want-identity",
230 "send": true
231 },
232 "version": 1
233 },
234 {
235 "id": 22,
236 "name": "@api/core-unwant-identity",
237 "request": {
238 "name": "@api/core/unwant-identity",
239 "send": true
240 },
241 "version": 1
242 },
243 {
244 "id": 23,
245 "name": "@api/core-have-identity",
246 "request": {
247 "name": "@api/core/have",
248 "send": true
249 },
250 "version": 1
251 },
252 {
253 "id": 24,
254 "name": "@api/core-identity-reset",
255 "request": {
256 "name": "@api/core/identity",
257 "send": true
258 },
259 "version": 1
260 },
261 {
262 "id": 25,
263 "name": "@api/core-identity-member",
264 "request": {
265 "name": "@api/core/identity-member",
266 "send": true
267 },
268 "version": 1
269 },
270 {
271 "id": 26,
272 "name": "@api/core-identity-device",
273 "request": {
274 "name": "@api/core/identity-device",
275 "send": true
276 },
277 "version": 1
278 },
279 {
280 "id": 27,
281 "name": "@api/core-want-pairing",
282 "request": {
283 "name": "@api/core/want-pairing",
284 "send": true
285 },
286 "version": 1
287 },
288 {
289 "id": 28,
290 "name": "@api/core-unwant-pairing",
291 "request": {
292 "name": "@api/core/unwant-pairing",
293 "send": true
294 },
295 "version": 1
296 },
297 {
298 "id": 29,
299 "name": "@api/core-have-pairing",
300 "request": {
301 "name": "@api/core/have",
302 "send": true
303 },
304 "version": 1
305 },
306 {
307 "id": 30,
308 "name": "@api/core-pairing-reset",
309 "request": {
310 "name": "@api/core/pairing",
311 "send": true
312 },
313 "version": 1
314 },
315 {
316 "id": 31,
317 "name": "@api/core-want-lobby",
318 "request": {
319 "name": "@api/core/want-lobby",
320 "send": true
321 },
322 "version": 1
323 },
324 {
325 "id": 32,
326 "name": "@api/core-unwant-lobby",
327 "request": {
328 "name": "@api/core/unwant-lobby",
329 "send": true
330 },
331 "version": 1
332 },
333 {
334 "id": 33,
335 "name": "@api/core-have-lobby",
336 "request": {
337 "name": "@api/core/have",
338 "send": true
339 },
340 "version": 1
341 },
342 {
343 "id": 34,
344 "name": "@api/core-lobby-reset",
345 "request": {
346 "name": "@api/core/lobby",
347 "send": true
348 },
349 "version": 1
350 },
351 {
352 "id": 35,
353 "name": "@api/core-lobby-room",
354 "request": {
355 "name": "@api/core/lobby-room",
356 "send": true
357 },
358 "version": 1
359 },
360 {
361 "id": 36,
362 "name": "@api/core-want-room-info",
363 "request": {
364 "name": "@api/core/want-room-info",
365 "send": true
366 },
367 "version": 1
368 },
369 {
370 "id": 37,
371 "name": "@api/core-have-room-info",
372 "request": {
373 "name": "@api/core/have",
374 "send": true
375 },
376 "version": 1
377 },
378 {
379 "id": 38,
380 "name": "@api/core-room-info",
381 "request": {
382 "name": "@api/core/room-info",
383 "send": true
384 },
385 "version": 1
386 },
387 {
388 "id": 39,
389 "name": "@api/core-room-info-digest",
390 "request": {
391 "name": "@api/core/room-info-digest",
392 "send": true
393 },
394 "version": 1
395 },
396 {
397 "id": 40,
398 "name": "@api/core-room-info-config",
399 "request": {
400 "name": "@api/core/room-info-config",
401 "send": true
402 },
403 "version": 1
404 },
405 {
406 "id": 41,
407 "name": "@api/core-room-info-role",
408 "request": {
409 "name": "@api/core/room-info-role",
410 "send": true
411 },
412 "version": 1
413 },
414 {
415 "id": 42,
416 "name": "@api/core-room-info-last-message",
417 "request": {
418 "name": "@api/core/room-info-last-message",
419 "send": true
420 },
421 "version": 1
422 },
423 {
424 "id": 43,
425 "name": "@api/core-want-chat",
426 "request": {
427 "name": "@api/core/want-chat",
428 "send": true
429 },
430 "version": 1
431 },
432 {
433 "id": 44,
434 "name": "@api/core-unwant-chat",
435 "request": {
436 "name": "@api/core/unwant-chat",
437 "send": true
438 },
439 "version": 1
440 },
441 {
442 "id": 45,
443 "name": "@api/core-have-chat",
444 "request": {
445 "name": "@api/core/have",
446 "send": true
447 },
448 "version": 1
449 },
450 {
451 "id": 46,
452 "name": "@api/core-chat-reset",
453 "request": {
454 "name": "@api/core/chat-reset",
455 "send": true
456 },
457 "version": 1
458 },
459 {
460 "id": 47,
461 "name": "@api/core-message-info",
462 "request": {
463 "name": "@api/core/message-info",
464 "send": true
465 },
466 "version": 1
467 },
468 {
469 "id": 48,
470 "name": "@api/core-message-info-chat",
471 "request": {
472 "name": "@api/core/message-info-chat",
473 "send": true
474 },
475 "version": 1
476 },
477 {
478 "id": 49,
479 "name": "@api/core-message-info-member",
480 "request": {
481 "name": "@api/core/message-info-member",
482 "send": true
483 },
484 "version": 1
485 },
486 {
487 "id": 50,
488 "name": "@api/core-message-info-role",
489 "request": {
490 "name": "@api/core/message-info-role",
491 "send": true
492 },
493 "version": 1
494 },
495 {
496 "id": 51,
497 "name": "@api/core-message-info-reactions",
498 "request": {
499 "name": "@api/core/message-info-reactions",
500 "send": true
501 },
502 "version": 1
503 },
504 {
505 "id": 52,
506 "name": "@api/core-want-members",
507 "request": {
508 "name": "@api/core/want-members",
509 "send": true
510 },
511 "version": 1
512 },
513 {
514 "id": 53,
515 "name": "@api/core-unwant-members",
516 "request": {
517 "name": "@api/core/unwant-members",
518 "send": true
519 },
520 "version": 1
521 },
522 {
523 "id": 54,
524 "name": "@api/core-have-members",
525 "request": {
526 "name": "@api/core/have",
527 "send": true
528 },
529 "version": 1
530 },
531 {
532 "id": 55,
533 "name": "@api/core-member-list-add",
534 "request": {
535 "name": "@api/core/member-list-add",
536 "send": true
537 },
538 "version": 1
539 },
540 {
541 "id": 56,
542 "name": "@api/core-member-list-remove",
543 "request": {
544 "name": "@api/core/member-list-remove",
545 "send": true
546 },
547 "version": 1
548 },
549 {
550 "id": 57,
551 "name": "@api/core-member",
552 "request": {
553 "name": "@api/core/member",
554 "send": true
555 },
556 "version": 1
557 },
558 {
559 "id": 58,
560 "name": "@api/core-device",
561 "request": {
562 "name": "@api/core/device",
563 "send": true
564 },
565 "version": 1
566 },
567 {
568 "id": 59,
569 "name": "@api/debug-enable",
570 "request": {
571 "name": "@api/debug/enable-request"
572 },
573 "response": {
574 "name": "@api/debug/enable-response"
575 },
576 "version": 1
577 },
578 {
579 "id": 60,
580 "name": "@api/debug-disable",
581 "request": {
582 "name": "@api/debug/disable-request"
583 },
584 "response": {
585 "name": "@api/debug/disable-response"
586 },
587 "version": 1
588 },
589 {
590 "id": 61,
591 "name": "@api/send-legacy",
592 "request": {
593 "name": "buffer",
594 "send": true
595 },
596 "version": 2
597 }
598 ]
599}
@holepunchto/keet-core/schema/spec/api/hrpc/index.js +1 -0
……@@ -0,0 +1 @@
1const{c:e,RPC:a,RPCStream:o,RPCRequestStream:r}=require("hrpc/runtime"),{getEncoding:i}=require("./messages.js"),t=new Map([["@api/self-destruct",0],[0,"@api/self-destruct"],["@api/boot",1],[1,"@api/boot"],["@api/core-create-room",2],[2,"@api/core-create-room"],["@api/core-activate-room",3],[3,"@api/core-activate-room"],["@api/core-deactivate-room",4],[4,"@api/core-deactivate-room"],["@api/core-leave-room",5],[5,"@api/core-leave-room"],["@api/core-update-room-config",6],[6,"@api/core-update-room-config"],["@api/core-update-room-settings",7],[7,"@api/core-update-room-settings"],["@api/core-update-room-status",8],[8,"@api/core-update-room-status"],["@api/core-update-profile",9],[9,"@api/core-update-profile"],["@api/core-create-room-invitation",10],[10,"@api/core-create-room-invitation"],["@api/core-create-identity-invitation",11],[11,"@api/core-create-identity-invitation"],["@api/core-start-pairing",12],[12,"@api/core-start-pairing"],["@api/core-accept-join-request",13],[13,"@api/core-accept-join-request"],["@api/core-reject-join-request",14],[14,"@api/core-reject-join-request"],["@api/core-stop-pairing",15],[15,"@api/core-stop-pairing"],["@api/core-add-chat-message",16],[16,"@api/core-add-chat-message"],["@api/core-edit-chat-message",17],[17,"@api/core-edit-chat-message"],["@api/core-remove-chat-message",18],[18,"@api/core-remove-chat-message"],["@api/core-add-chat-reaction",19],[19,"@api/core-add-chat-reaction"],["@api/core-remove-chat-reaction",20],[20,"@api/core-remove-chat-reaction"],["@api/core-want-identity",21],[21,"@api/core-want-identity"],["@api/core-unwant-identity",22],[22,"@api/core-unwant-identity"],["@api/core-have-identity",23],[23,"@api/core-have-identity"],["@api/core-identity-reset",24],[24,"@api/core-identity-reset"],["@api/core-identity-member",25],[25,"@api/core-identity-member"],["@api/core-identity-device",26],[26,"@api/core-identity-device"],["@api/core-want-pairing",27],[27,"@api/core-want-pairing"],["@api/core-unwant-pairing",28],[28,"@api/core-unwant-pairing"],["@api/core-have-pairing",29],[29,"@api/core-have-pairing"],["@api/core-pairing-reset",30],[30,"@api/core-pairing-reset"],["@api/core-want-lobby",31],[31,"@api/core-want-lobby"],["@api/core-unwant-lobby",32],[32,"@api/core-unwant-lobby"],["@api/core-have-lobby",33],[33,"@api/core-have-lobby"],["@api/core-lobby-reset",34],[34,"@api/core-lobby-reset"],["@api/core-lobby-room",35],[35,"@api/core-lobby-room"],["@api/core-want-room-info",36],[36,"@api/core-want-room-info"],["@api/core-have-room-info",37],[37,"@api/core-have-room-info"],["@api/core-room-info",38],[38,"@api/core-room-info"],["@api/core-room-info-digest",39],[39,"@api/core-room-info-digest"],["@api/core-room-info-config",40],[40,"@api/core-room-info-config"],["@api/core-room-info-role",41],[41,"@api/core-room-info-role"],["@api/core-room-info-last-message",42],[42,"@api/core-room-info-last-message"],["@api/core-want-chat",43],[43,"@api/core-want-chat"],["@api/core-unwant-chat",44],[44,"@api/core-unwant-chat"],["@api/core-have-chat",45],[45,"@api/core-have-chat"],["@api/core-chat-reset",46],[46,"@api/core-chat-reset"],["@api/core-message-info",47],[47,"@api/core-message-info"],["@api/core-message-info-chat",48],[48,"@api/core-message-info-chat"],["@api/core-message-info-member",49],[49,"@api/core-message-info-member"],["@api/core-message-info-role",50],[50,"@api/core-message-info-role"],["@api/core-message-info-reactions",51],[51,"@api/core-message-info-reactions"],["@api/core-want-members",52],[52,"@api/core-want-members"],["@api/core-unwant-members",53],[53,"@api/core-unwant-members"],["@api/core-have-members",54],[54,"@api/core-have-members"],["@api/core-member-list-add",55],[55,"@api/core-member-list-add"],["@api/core-member-list-remove",56],[56,"@api/core-member-list-remove"],["@api/core-member",57],[57,"@api/core-member"],["@api/core-device",58],[58,"@api/core-device"],["@api/debug-enable",59],[59,"@api/debug-enable"],["@api/debug-disable",60],[60,"@api/debug-disable"],["@api/send-legacy",61],[61,"@api/send-legacy"]]);class c{constructor(c){this._stream=c,this._handlers=[],this._requestEncodings=new Map([["@api/self-destruct",i("@api/self-destruct-request")],["@api/boot",i("@api/boot-request")],["@api/core-create-room",i("@api/core/create-room-request")],["@api/core-activate-room",i("@api/core/activate-room-request")],["@api/core-deactivate-room",i("@api/core/deactivate-room-request")],["@api/core-leave-room",i("@api/core/leave-room-request")],["@api/core-update-room-config",i("@api/core/update-room-config-request")],["@api/core-update-room-settings",i("@api/core/update-room-settings-request")],["@api/core-update-room-status",i("@api/core/update-room-status-request")],["@api/core-update-profile",i("@api/core/update-profile-request")],["@api/core-create-room-invitation",i("@api/core/create-room-invitation-request")],["@api/core-create-identity-invitation",i("@api/core/create-identity-invitation-request")],["@api/core-start-pairing",i("@api/core/start-pairing-request")],["@api/core-accept-join-request",i("@api/core/accept-join-request-request")],["@api/core-reject-join-request",i("@api/core/reject-join-request-request")],["@api/core-stop-pairing",i("@api/core/stop-pairing-request")],["@api/core-add-chat-message",i("@api/core/add-chat-message-request")],["@api/core-edit-chat-message",i("@api/core/edit-chat-message-request")],["@api/core-remove-chat-message",i("@api/core/remove-chat-message-request")],["@api/core-add-chat-reaction",i("@api/core/add-chat-reaction-request")],["@api/core-remove-chat-reaction",i("@api/core/remove-chat-reaction-request")],["@api/core-want-identity",i("@api/core/want-identity")],["@api/core-unwant-identity",i("@api/core/unwant-identity")],["@api/core-have-identity",i("@api/core/have")],["@api/core-identity-reset",i("@api/core/identity")],["@api/core-identity-member",i("@api/core/identity-member")],["@api/core-identity-device",i("@api/core/identity-device")],["@api/core-want-pairing",i("@api/core/want-pairing")],["@api/core-unwant-pairing",i("@api/core/unwant-pairing")],["@api/core-have-pairing",i("@api/core/have")],["@api/core-pairing-reset",i("@api/core/pairing")],["@api/core-want-lobby",i("@api/core/want-lobby")],["@api/core-unwant-lobby",i("@api/core/unwant-lobby")],["@api/core-have-lobby",i("@api/core/have")],["@api/core-lobby-reset",i("@api/core/lobby")],["@api/core-lobby-room",i("@api/core/lobby-room")],["@api/core-want-room-info",i("@api/core/want-room-info")],["@api/core-have-room-info",i("@api/core/have")],["@api/core-room-info",i("@api/core/room-info")],["@api/core-room-info-digest",i("@api/core/room-info-digest")],["@api/core-room-info-config",i("@api/core/room-info-config")],["@api/core-room-info-role",i("@api/core/room-info-role")],["@api/core-room-info-last-message",i("@api/core/room-info-last-message")],["@api/core-want-chat",i("@api/core/want-chat")],["@api/core-unwant-chat",i("@api/core/unwant-chat")],["@api/core-have-chat",i("@api/core/have")],["@api/core-chat-reset",i("@api/core/chat-reset")],["@api/core-message-info",i("@api/core/message-info")],["@api/core-message-info-chat",i("@api/core/message-info-chat")],["@api/core-message-info-member",i("@api/core/message-info-member")],["@api/core-message-info-role",i("@api/core/message-info-role")],["@api/core-message-info-reactions",i("@api/core/message-info-reactions")],["@api/core-want-members",i("@api/core/want-members")],["@api/core-unwant-members",i("@api/core/unwant-members")],["@api/core-have-members",i("@api/core/have")],["@api/core-member-list-add",i("@api/core/member-list-add")],["@api/core-member-list-remove",i("@api/core/member-list-remove")],["@api/core-member",i("@api/core/member")],["@api/core-device",i("@api/core/device")],["@api/debug-enable",i("@api/debug/enable-request")],["@api/debug-disable",i("@api/debug/disable-request")],["@api/send-legacy",e.buffer]]),this._responseEncodings=new Map([["@api/boot",i("@api/boot-response")],["@api/core-create-room",i("@api/core/create-room-response")],["@api/core-leave-room",i("@api/core/leave-room-response")],["@api/core-create-room-invitation",i("@api/core/create-room-invitation-response")],["@api/core-create-identity-invitation",i("@api/core/create-identity-invitation-response")],["@api/core-start-pairing",i("@api/core/start-pairing-response")],["@api/core-accept-join-request",i("@api/core/accept-join-request-response")],["@api/core-reject-join-request",i("@api/core/reject-join-request-response")],["@api/core-stop-pairing",i("@api/core/stop-pairing-response")],["@api/core-add-chat-message",i("@api/core/add-chat-message-response")],["@api/core-edit-chat-message",i("@api/core/edit-chat-message-response")],["@api/core-remove-chat-message",i("@api/core/remove-chat-message-response")],["@api/core-add-chat-reaction",i("@api/core/add-chat-reaction-response")],["@api/core-remove-chat-reaction",i("@api/core/remove-chat-reaction-response")],["@api/debug-enable",i("@api/debug/enable-response")],["@api/debug-disable",i("@api/debug/disable-response")]]),this._rpc=new a(c,async a=>{const i=t.get(a.command),c=this._responseEncodings.get(i),n=this._requestEncodings.get(i);if(this._requestIsSend(i)){const o=a.data?e.decode(n,a.data):null;return void await this._handlers[i](o)}if(!this._requestIsStream(i)&&!this._responseIsStream(i)){const o=a.data?e.decode(n,a.data):null,r=await this._handlers[i](o);a.reply(e.encode(c,r))}if(!this._requestIsStream(i)&&this._responseIsStream(i)){const r=a.data?e.decode(n,a.data):null,t=new o(null,null,a.createResponseStream(),c);t.data=r,await this._handlers[i](t)}if(this._requestIsStream(i)&&!this._responseIsStream(i)){const o=new r(a,c,a.createRequestStream(),n),t=await this._handlers[i](o);a.reply(e.encode(c,t))}if(this._requestIsStream(i)&&this._responseIsStream(i)){const e=new r(a,c,a.createRequestStream(),n,a.createResponseStream(),c);await this._handlers[i](e)}})}async _call(a,o){const r=this._requestEncodings.get(a),i=this._responseEncodings.get(a),c=this._rpc.request(t.get(a)),n=e.encode(r,o);return c.send(n),e.decode(i,await c.reply())}_callSync(a,i){const c=this._requestEncodings.get(a),n=this._responseEncodings.get(a);if(this._requestIsSend(a)){const o=e.encode(c,i);this._rpc.event(t.get(a)).send(o)}const s=this._rpc.request(t.get(a));if(!this._requestIsStream(a)&&this._responseIsStream(a)){const a=e.encode(c,i);return s.send(a),new o(s.createResponseStream(),n)}return this._requestIsStream(a)&&!this._responseIsStream(a)?new r(s,n,null,null,s.createRequestStream(),c):this._requestIsStream(a)&&this._responseIsStream(a)?new r(s,n,s.createResponseStream(),n,s.createRequestStream(),c):void 0}async selfDestruct(e){return this._call("@api/self-destruct",e)}async boot(e){return this._call("@api/boot",e)}async coreCreateRoom(e){return this._call("@api/core-create-room",e)}coreActivateRoom(e){return this._callSync("@api/core-activate-room",e)}coreDeactivateRoom(e){return this._callSync("@api/core-deactivate-room",e)}async coreLeaveRoom(e){return this._call("@api/core-leave-room",e)}coreUpdateRoomConfig(e){return this._callSync("@api/core-update-room-config",e)}coreUpdateRoomSettings(e){return this._callSync("@api/core-update-room-settings",e)}coreUpdateRoomStatus(e){return this._callSync("@api/core-update-room-status",e)}coreUpdateProfile(e){return this._callSync("@api/core-update-profile",e)}async coreCreateRoomInvitation(e){return this._call("@api/core-create-room-invitation",e)}async coreCreateIdentityInvitation(e){return this._call("@api/core-create-identity-invitation",e)}async coreStartPairing(e){return this._call("@api/core-start-pairing",e)}async coreAcceptJoinRequest(e){return this._call("@api/core-accept-join-request",e)}async coreRejectJoinRequest(e){return this._call("@api/core-reject-join-request",e)}async coreStopPairing(e){return this._call("@api/core-stop-pairing",e)}async coreAddChatMessage(e){return this._call("@api/core-add-chat-message",e)}async coreEditChatMessage(e){return this._call("@api/core-edit-chat-message",e)}async coreRemoveChatMessage(e){return this._call("@api/core-remove-chat-message",e)}async coreAddChatReaction(e){return this._call("@api/core-add-chat-reaction",e)}async coreRemoveChatReaction(e){return this._call("@api/core-remove-chat-reaction",e)}coreWantIdentity(e){return this._callSync("@api/core-want-identity",e)}coreUnwantIdentity(e){return this._callSync("@api/core-unwant-identity",e)}coreHaveIdentity(e){return this._callSync("@api/core-have-identity",e)}coreIdentityReset(e){return this._callSync("@api/core-identity-reset",e)}coreIdentityMember(e){return this._callSync("@api/core-identity-member",e)}coreIdentityDevice(e){return this._callSync("@api/core-identity-device",e)}coreWantPairing(e){return this._callSync("@api/core-want-pairing",e)}coreUnwantPairing(e){return this._callSync("@api/core-unwant-pairing",e)}coreHavePairing(e){return this._callSync("@api/core-have-pairing",e)}corePairingReset(e){return this._callSync("@api/core-pairing-reset",e)}coreWantLobby(e){return this._callSync("@api/core-want-lobby",e)}coreUnwantLobby(e){return this._callSync("@api/core-unwant-lobby",e)}coreHaveLobby(e){return this._callSync("@api/core-have-lobby",e)}coreLobbyReset(e){return this._callSync("@api/core-lobby-reset",e)}coreLobbyRoom(e){return this._callSync("@api/core-lobby-room",e)}coreWantRoomInfo(e){return this._callSync("@api/core-want-room-info",e)}coreHaveRoomInfo(e){return this._callSync("@api/core-have-room-info",e)}coreRoomInfo(e){return this._callSync("@api/core-room-info",e)}coreRoomInfoDigest(e){return this._callSync("@api/core-room-info-digest",e)}coreRoomInfoConfig(e){return this._callSync("@api/core-room-info-config",e)}coreRoomInfoRole(e){return this._callSync("@api/core-room-info-role",e)}coreRoomInfoLastMessage(e){return this._callSync("@api/core-room-info-last-message",e)}coreWantChat(e){return this._callSync("@api/core-want-chat",e)}coreUnwantChat(e){return this._callSync("@api/core-unwant-chat",e)}coreHaveChat(e){return this._callSync("@api/core-have-chat",e)}coreChatReset(e){return this._callSync("@api/core-chat-reset",e)}coreMessageInfo(e){return this._callSync("@api/core-message-info",e)}coreMessageInfoChat(e){return this._callSync("@api/core-message-info-chat",e)}coreMessageInfoMember(e){return this._callSync("@api/core-message-info-member",e)}coreMessageInfoRole(e){return this._callSync("@api/core-message-info-role",e)}coreMessageInfoReactions(e){return this._callSync("@api/core-message-info-reactions",e)}coreWantMembers(e){return this._callSync("@api/core-want-members",e)}coreUnwantMembers(e){return this._callSync("@api/core-unwant-members",e)}coreHaveMembers(e){return this._callSync("@api/core-have-members",e)}coreMemberListAdd(e){return this._callSync("@api/core-member-list-add",e)}coreMemberListRemove(e){return this._callSync("@api/core-member-list-remove",e)}coreMember(e){return this._callSync("@api/core-member",e)}coreDevice(e){return this._callSync("@api/core-device",e)}async debugEnable(e){return this._call("@api/debug-enable",e)}async debugDisable(e){return this._call("@api/debug-disable",e)}sendLegacy(e){return this._callSync("@api/send-legacy",e)}onSelfDestruct(e){this._handlers["@api/self-destruct"]=e}onBoot(e){this._handlers["@api/boot"]=e}onCoreCreateRoom(e){this._handlers["@api/core-create-room"]=e}onCoreActivateRoom(e){this._handlers["@api/core-activate-room"]=e}onCoreDeactivateRoom(e){this._handlers["@api/core-deactivate-room"]=e}onCoreLeaveRoom(e){this._handlers["@api/core-leave-room"]=e}onCoreUpdateRoomConfig(e){this._handlers["@api/core-update-room-config"]=e}onCoreUpdateRoomSettings(e){this._handlers["@api/core-update-room-settings"]=e}onCoreUpdateRoomStatus(e){this._handlers["@api/core-update-room-status"]=e}onCoreUpdateProfile(e){this._handlers["@api/core-update-profile"]=e}onCoreCreateRoomInvitation(e){this._handlers["@api/core-create-room-invitation"]=e}onCoreCreateIdentityInvitation(e){this._handlers["@api/core-create-identity-invitation"]=e}onCoreStartPairing(e){this._handlers["@api/core-start-pairing"]=e}onCoreAcceptJoinRequest(e){this._handlers["@api/core-accept-join-request"]=e}onCoreRejectJoinRequest(e){this._handlers["@api/core-reject-join-request"]=e}onCoreStopPairing(e){this._handlers["@api/core-stop-pairing"]=e}onCoreAddChatMessage(e){this._handlers["@api/core-add-chat-message"]=e}onCoreEditChatMessage(e){this._handlers["@api/core-edit-chat-message"]=e}onCoreRemoveChatMessage(e){this._handlers["@api/core-remove-chat-message"]=e}onCoreAddChatReaction(e){this._handlers["@api/core-add-chat-reaction"]=e}onCoreRemoveChatReaction(e){this._handlers["@api/core-remove-chat-reaction"]=e}onCoreWantIdentity(e){this._handlers["@api/core-want-identity"]=e}onCoreUnwantIdentity(e){this._handlers["@api/core-unwant-identity"]=e}onCoreHaveIdentity(e){this._handlers["@api/core-have-identity"]=e}onCoreIdentityReset(e){this._handlers["@api/core-identity-reset"]=e}onCoreIdentityMember(e){this._handlers["@api/core-identity-member"]=e}onCoreIdentityDevice(e){this._handlers["@api/core-identity-device"]=e}onCoreWantPairing(e){this._handlers["@api/core-want-pairing"]=e}onCoreUnwantPairing(e){this._handlers["@api/core-unwant-pairing"]=e}onCoreHavePairing(e){this._handlers["@api/core-have-pairing"]=e}onCorePairingReset(e){this._handlers["@api/core-pairing-reset"]=e}onCoreWantLobby(e){this._handlers["@api/core-want-lobby"]=e}onCoreUnwantLobby(e){this._handlers["@api/core-unwant-lobby"]=e}onCoreHaveLobby(e){this._handlers["@api/core-have-lobby"]=e}onCoreLobbyReset(e){this._handlers["@api/core-lobby-reset"]=e}onCoreLobbyRoom(e){this._handlers["@api/core-lobby-room"]=e}onCoreWantRoomInfo(e){this._handlers["@api/core-want-room-info"]=e}onCoreHaveRoomInfo(e){this._handlers["@api/core-have-room-info"]=e}onCoreRoomInfo(e){this._handlers["@api/core-room-info"]=e}onCoreRoomInfoDigest(e){this._handlers["@api/core-room-info-digest"]=e}onCoreRoomInfoConfig(e){this._handlers["@api/core-room-info-config"]=e}onCoreRoomInfoRole(e){this._handlers["@api/core-room-info-role"]=e}onCoreRoomInfoLastMessage(e){this._handlers["@api/core-room-info-last-message"]=e}onCoreWantChat(e){this._handlers["@api/core-want-chat"]=e}onCoreUnwantChat(e){this._handlers["@api/core-unwant-chat"]=e}onCoreHaveChat(e){this._handlers["@api/core-have-chat"]=e}onCoreChatReset(e){this._handlers["@api/core-chat-reset"]=e}onCoreMessageInfo(e){this._handlers["@api/core-message-info"]=e}onCoreMessageInfoChat(e){this._handlers["@api/core-message-info-chat"]=e}onCoreMessageInfoMember(e){this._handlers["@api/core-message-info-member"]=e}onCoreMessageInfoRole(e){this._handlers["@api/core-message-info-role"]=e}onCoreMessageInfoReactions(e){this._handlers["@api/core-message-info-reactions"]=e}onCoreWantMembers(e){this._handlers["@api/core-want-members"]=e}onCoreUnwantMembers(e){this._handlers["@api/core-unwant-members"]=e}onCoreHaveMembers(e){this._handlers["@api/core-have-members"]=e}onCoreMemberListAdd(e){this._handlers["@api/core-member-list-add"]=e}onCoreMemberListRemove(e){this._handlers["@api/core-member-list-remove"]=e}onCoreMember(e){this._handlers["@api/core-member"]=e}onCoreDevice(e){this._handlers["@api/core-device"]=e}onDebugEnable(e){this._handlers["@api/debug-enable"]=e}onDebugDisable(e){this._handlers["@api/debug-disable"]=e}onSendLegacy(e){this._handlers["@api/send-legacy"]=e}_requestIsStream(e){return[].includes(e)}_responseIsStream(e){return[].includes(e)}_requestIsSend(e){return["@api/core-activate-room","@api/core-deactivate-room","@api/core-update-room-config","@api/core-update-room-settings","@api/core-update-room-status","@api/core-update-profile","@api/core-want-identity","@api/core-unwant-identity","@api/core-have-identity","@api/core-identity-reset","@api/core-identity-member","@api/core-identity-device","@api/core-want-pairing","@api/core-unwant-pairing","@api/core-have-pairing","@api/core-pairing-reset","@api/core-want-lobby","@api/core-unwant-lobby","@api/core-have-lobby","@api/core-lobby-reset","@api/core-lobby-room","@api/core-want-room-info","@api/core-have-room-info","@api/core-room-info","@api/core-room-info-digest","@api/core-room-info-config","@api/core-room-info-role","@api/core-room-info-last-message","@api/core-want-chat","@api/core-unwant-chat","@api/core-have-chat","@api/core-chat-reset","@api/core-message-info","@api/core-message-info-chat","@api/core-message-info-member","@api/core-message-info-role","@api/core-message-info-reactions","@api/core-want-members","@api/core-unwant-members","@api/core-have-members","@api/core-member-list-add","@api/core-member-list-remove","@api/core-member","@api/core-device","@api/send-legacy"].includes(e)}}module.exports=c;
@holepunchto/keet-core/schema/spec/api/hrpc/messages.js +1 -0
……@@ -0,0 +1 @@
1const{c:e}=require("hyperschema/runtime"),d=6;let o=6;const n={preencode(d,o){e.fixed32.preencode(d,o.key),e.uint.preencode(d,o.length)},encode(d,o){e.fixed32.encode(d,o.key),e.uint.encode(d,o.length)},decode:d=>({key:e.fixed32.decode(d),length:e.uint.decode(d)})},c={preencode(d,o){e.fixed32.preencode(d,o.key),e.uint.preencode(d,o.seq)},encode(d,o){e.fixed32.encode(d,o.key),e.uint.encode(d,o.seq)},decode:d=>({key:e.fixed32.decode(d),seq:e.uint.decode(d)})},r={preencode(d,o){e.fixed32.preencode(d,o.publicKey),e.fixed32.preencode(d,o.secretKey)},encode(d,o){e.fixed32.encode(d,o.publicKey),e.fixed32.encode(d,o.secretKey)},decode:d=>({publicKey:e.fixed32.decode(d),secretKey:e.fixed32.decode(d)})},t={preencode(d,o){e.fixed32.preencode(d,o.publicKey),e.fixed64.preencode(d,o.secretKey)},encode(d,o){e.fixed32.encode(d,o.publicKey),e.fixed64.encode(d,o.secretKey)},decode:d=>({publicKey:e.fixed32.decode(d),secretKey:e.fixed64.decode(d)})},i={preencode(d,o){e.fixed32.preencode(d,o.key),d.end++,o.encryptionKey&&e.buffer.preencode(d,o.encryptionKey),o.fastForwardTo&&e.fixed32.preencode(d,o.fastForwardTo)},encode(d,o){const n=(o.encryptionKey?1:0)|(o.fastForwardTo?2:0);e.fixed32.encode(d,o.key),e.uint.encode(d,n),o.encryptionKey&&e.buffer.encode(d,o.encryptionKey),o.fastForwardTo&&e.fixed32.encode(d,o.fastForwardTo)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d);return{key:o,encryptionKey:1&n?e.buffer.decode(d):null,fastForwardTo:2&n?e.fixed32.decode(d):null}}},a={preencode(d,o){e.uint.preencode(d,o.timestamp)},encode(d,o){e.uint.encode(d,o.timestamp)},decode:d=>({timestamp:e.uint.decode(d)})},s={preencode(d,o){e.uint.preencode(d,o.blockOffset),e.uint.preencode(d,o.blockLength),e.uint.preencode(d,o.byteOffset),e.uint.preencode(d,o.byteLength)},encode(d,o){e.uint.encode(d,o.blockOffset),e.uint.encode(d,o.blockLength),e.uint.encode(d,o.byteOffset),e.uint.encode(d,o.byteLength)},decode:d=>({blockOffset:e.uint.decode(d),blockLength:e.uint.decode(d),byteOffset:e.uint.decode(d),byteLength:e.uint.decode(d)})},p={preencode(d,o){e.uint.preencode(d,o.width),e.uint.preencode(d,o.height)},encode(d,o){e.uint.encode(d,o.width),e.uint.encode(d,o.height)},decode:d=>({width:e.uint.decode(d),height:e.uint.decode(d)})},u=e.frame(p),l={preencode(d,o){d.end++,o.name&&e.string.preencode(d,o.name),o.mimetype&&e.string.preencode(d,o.mimetype),o.dimensions&&u.preencode(d,o.dimensions),o.userdata&&e.buffer.preencode(d,o.userdata),o.duration&&e.uint.preencode(d,o.duration)},encode(d,o){const n=(o.name?1:0)|(o.mimetype?2:0)|(o.dimensions?4:0)|(o.userdata?8:0)|(o.duration?16:0)|(o.isPreview?32:0);e.uint.encode(d,n),o.name&&e.string.encode(d,o.name),o.mimetype&&e.string.encode(d,o.mimetype),o.dimensions&&u.encode(d,o.dimensions),o.userdata&&e.buffer.encode(d,o.userdata),o.duration&&e.uint.encode(d,o.duration)},decode(d){const o=e.uint.decode(d);return{name:1&o?e.string.decode(d):null,mimetype:2&o?e.string.decode(d):null,dimensions:4&o?u.decode(d):null,userdata:8&o?e.buffer.decode(d):null,duration:16&o?e.uint.decode(d):0,isPreview:!!(32&o)}}},f={preencode(d,o){e.fixed32.preencode(d,o.key),e.string.preencode(d,o.path),e.uint.preencode(d,o.version),e.uint.preencode(d,o.size)},encode(d,o){e.fixed32.encode(d,o.key),e.string.encode(d,o.path),e.uint.encode(d,o.version),e.uint.encode(d,o.size)},decode:d=>({key:e.fixed32.decode(d),path:e.string.decode(d),version:e.uint.decode(d),size:e.uint.decode(d)})},m={preencode(d,o){e.fixed32.preencode(d,o.key),s.preencode(d,o.blob)},encode(d,o){e.fixed32.encode(d,o.key),s.encode(d,o.blob)},decode:d=>({key:e.fixed32.decode(d),blob:s.decode(d)})},y=e.frame(m),x=e.frame(f),b={preencode(d,o){d.end++,o.inlined&&e.buffer.preencode(d,o.inlined),o.blob&&s.preencode(d,o.blob),o.externalBlob&&y.preencode(d,o.externalBlob),o.externalDrive&&x.preencode(d,o.externalDrive)},encode(d,o){const n=(o.inlined?1:0)|(o.blob?2:0)|(o.externalBlob?4:0)|(o.externalDrive?8:0);e.uint.encode(d,n),o.inlined&&e.buffer.encode(d,o.inlined),o.blob&&s.encode(d,o.blob),o.externalBlob&&y.encode(d,o.externalBlob),o.externalDrive&&x.encode(d,o.externalDrive)},decode(d){const o=e.uint.decode(d);return{inlined:1&o?e.buffer.decode(d):null,blob:2&o?s.decode(d):null,externalBlob:4&o?y.decode(d):null,externalDrive:8&o?x.decode(d):null}}},v=e.frame(b),g=e.frame(l),k={preencode(d,o){v.preencode(d,o.pointer),d.end++,o.metadata&&g.preencode(d,o.metadata),o.preview&&Op.preencode(d,o.preview),o.hash&&e.fixed32.preencode(d,o.hash)},encode(d,o){const n=(o.metadata?1:0)|(o.preview?2:0)|(o.hash?4:0);v.encode(d,o.pointer),e.uint.encode(d,n),o.metadata&&g.encode(d,o.metadata),o.preview&&Op.encode(d,o.preview),o.hash&&e.fixed32.encode(d,o.hash)},decode(d){const o=v.decode(d),n=e.uint.decode(d);return{pointer:o,metadata:1&n?g.decode(d):null,preview:2&n?Op.decode(d):null,hash:4&n?e.fixed32.decode(d):null}}},h=e.frame(k),K=h,w=h,P={preencode(e,d){e.end++,d.small&&h.preencode(e,d.small),d.medium&&K.preencode(e,d.medium),d.large&&w.preencode(e,d.large)},encode(d,o){const n=(o.small?1:0)|(o.medium?2:0)|(o.large?4:0);e.uint.encode(d,n),o.small&&h.encode(d,o.small),o.medium&&K.encode(d,o.medium),o.large&&w.encode(d,o.large)},decode(d){const o=e.uint.decode(d);return{small:1&o?h.decode(d):null,medium:2&o?K.decode(d):null,large:4&o?w.decode(d):null}}},R={preencode(e,d){e.end++},encode(d,o){const n=o.isDeleted?1:0;e.uint.encode(d,n)},decode:d=>({isDeleted:!!(1&e.uint.decode(d))})},T=e.frame(R),A=h,q={preencode(d,o){e.uint.preencode(d,o.id),c.preencode(d,o.oplog),T.preencode(d,o.status),A.preencode(d,o.file),d.end++,o.version&&e.uint.preencode(d,o.version)},encode(d,o){const n=o.version?1:0;e.uint.encode(d,o.id),c.encode(d,o.oplog),T.encode(d,o.status),A.encode(d,o.file),e.uint.encode(d,n),o.version&&e.uint.encode(d,o.version)},decode:d=>({id:e.uint.decode(d),oplog:c.decode(d),status:T.decode(d),file:A.decode(d),version:1&e.uint.decode(d)?e.uint.decode(d):0})},M={preencode(e,d){e.end++},encode(d,o){const n=(o.isActive?1:0)|(o.isIndexing?2:0);e.uint.encode(d,n)},decode(d){const o=e.uint.decode(d);return{isActive:!!(1&o),isIndexing:!!(2&o)}}},C={preencode(d,o){const n=(o.isAdmin?1:0)|(o.isModerator?2:0)|(o.isPending?4:0)|(o.isActive?8:0)|(o.isMuted?16:0)|(o.isBanned?32:0)|(o.isShadowBanned?64:0)|(o.isRemoved?128:0);e.uint.preencode(d,n)},encode(d,o){const n=(o.isAdmin?1:0)|(o.isModerator?2:0)|(o.isPending?4:0)|(o.isActive?8:0)|(o.isMuted?16:0)|(o.isBanned?32:0)|(o.isShadowBanned?64:0)|(o.isRemoved?128:0);e.uint.encode(d,n)},decode(d){const o=e.uint.decode(d);return{isAdmin:!!(1&o),isModerator:!!(2&o),isPending:!!(4&o),isActive:!!(8&o),isMuted:!!(16&o),isBanned:!!(32&o),isShadowBanned:!!(64&o),isRemoved:!!(128&o)}}},D={preencode(e,d){e.end++},encode(d,o){const n=(o.isMuted?1:0)|(o.isBanned?2:0)|(o.isShadowBanned?4:0);e.uint.encode(d,n)},decode(d){const o=e.uint.decode(d);return{isMuted:!!(1&o),isBanned:!!(2&o),isShadowBanned:!!(4&o)}}},I={preencode(d,o){e.uint.preencode(d,o.version)},encode(d,o){e.uint.encode(d,o.version)},decode:d=>({version:e.uint.decode(d)})},S={preencode(d,o){e.uint.preencode(d,o.total),e.uint.preencode(d,o.active)},encode(d,o){e.uint.encode(d,o.total),e.uint.encode(d,o.active)},decode:d=>({total:e.uint.decode(d),active:e.uint.decode(d)})},F={preencode(d,o){e.uint.preencode(d,o.total),e.uint.preencode(d,o.active),e.uint.preencode(d,o.pending)},encode(d,o){e.uint.encode(d,o.total),e.uint.encode(d,o.active),e.uint.encode(d,o.pending)},decode:d=>({total:e.uint.decode(d),active:e.uint.decode(d),pending:e.uint.decode(d)})},L={preencode(d,o){e.uint.preencode(d,o.clock),e.uint.preencode(d,o.pinned),e.uint.preencode(d,o.threads),e.uint.preencode(d,o.timestamp),d.end++,o.flagsClock&&e.uint.preencode(d,o.flagsClock)},encode(d,o){const n=o.flagsClock?1:0;e.uint.encode(d,o.clock),e.uint.encode(d,o.pinned),e.uint.encode(d,o.threads),e.uint.encode(d,o.timestamp),e.uint.encode(d,n),o.flagsClock&&e.uint.encode(d,o.flagsClock)},decode:d=>({clock:e.uint.decode(d),pinned:e.uint.decode(d),threads:e.uint.decode(d),timestamp:e.uint.decode(d),flagsClock:1&e.uint.decode(d)?e.uint.decode(d):0})},j={preencode(d,o){e.uint.preencode(d,o.clock)},encode(d,o){e.uint.encode(d,o.clock)},decode:d=>({clock:e.uint.decode(d)})},E=e.frame(S),B=e.frame(F),N=e.frame(L),O=e.frame(j),V={preencode(e,d){E.preencode(e,d.devices),B.preencode(e,d.members),N.preencode(e,d.chat),O.preencode(e,d.files)},encode(e,d){E.encode(e,d.devices),B.encode(e,d.members),N.encode(e,d.chat),O.encode(e,d.files)},decode:e=>({devices:E.decode(e),members:B.decode(e),chat:N.decode(e),files:O.decode(e)})},U={Default:1,Broadcast:2,DirectMessage:3},J={preencode(e,d){e.end++},encode(d,o){if(o>3)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},z={preencode(d,n){const c=(n.roomType?1:0)|(n.isExperimental?2:0)|(n.isJoiningDisabled?4:0)|(n.isAppendingDisabled?8:0)|(n.isCallingDisabled?16:0)|(n.isMembershipEventsDisabled?32:0)|(o>=4&&n.isAttachmentsDisabled?64:0)|(o>=4&&n.isLinksDisabled?128:0)|(o>=5&&n.buildType?256:0);e.uint.preencode(d,c),n.roomType&&J.preencode(d,n.roomType),o>=5&&n.buildType&&Fp.preencode(d,n.buildType)},encode(d,n){const c=(n.roomType?1:0)|(n.isExperimental?2:0)|(n.isJoiningDisabled?4:0)|(n.isAppendingDisabled?8:0)|(n.isCallingDisabled?16:0)|(n.isMembershipEventsDisabled?32:0)|(o>=4&&n.isAttachmentsDisabled?64:0)|(o>=4&&n.isLinksDisabled?128:0)|(o>=5&&n.buildType?256:0);e.uint.encode(d,c),n.roomType&&J.encode(d,n.roomType),o>=5&&n.buildType&&Fp.encode(d,n.buildType)},decode(d){const n=e.uint.decode(d);return{roomType:1&n?J.decode(d):0,isExperimental:!!(2&n),isJoiningDisabled:!!(4&n),isAppendingDisabled:!!(8&n),isCallingDisabled:!!(16&n),isMembershipEventsDisabled:!!(32&n),isAttachmentsDisabled:o>=4&&!!(64&n),isLinksDisabled:o>=4&&!!(128&n),buildType:o>=5&&256&n?Fp.decode(d):null}}},W=e.frame(I),H=e.frame(z),G={preencode(d,o){W.preencode(d,o.abi),H.preencode(d,o.settings),e.uint.preencode(d,o.creationTime)},encode(d,o){W.encode(d,o.abi),H.encode(d,o.settings),e.uint.encode(d,o.creationTime)},decode:d=>({abi:W.decode(d),settings:H.decode(d),creationTime:e.uint.decode(d)})},Q={preencode(d,o){e.fixed32.preencode(d,o.seed)},encode(d,o){e.fixed32.encode(d,o.seed)},decode:d=>({seed:e.fixed32.decode(d)})},X={preencode(d,o){r.preencode(d,o.mailboxKeyPair),t.preencode(d,o.discoveryKeyPair),e.fixed32.preencode(d,o.wakeupTopic),e.fixed32.preencode(d,o.swarmTopic)},encode(d,o){r.encode(d,o.mailboxKeyPair),t.encode(d,o.discoveryKeyPair),e.fixed32.encode(d,o.wakeupTopic),e.fixed32.encode(d,o.swarmTopic)},decode:d=>({mailboxKeyPair:r.decode(d),discoveryKeyPair:t.decode(d),wakeupTopic:e.fixed32.decode(d),swarmTopic:e.fixed32.decode(d)})},Y={en:"en",it:"it",ru:"ru",es:"es",de:"de"},Z={preencode(e,d){e.end++},encode(d,o){switch(o){case"en":e.uint.encode(d,1);break;case"it":e.uint.encode(d,2);break;case"ru":e.uint.encode(d,3);break;case"es":e.uint.encode(d,4);break;case"de":e.uint.encode(d,5);break;default:throw new Error("Unknown enum")}},decode(d){switch(e.uint.decode(d)){case 1:return"en";case 2:return"it";case 3:return"ru";case 4:return"es";case 5:return"de";default:return null}}},$=e.array(Z),_=e.array(e.fixed32),ee={preencode(d,o){d.end++,o.title&&e.string.preencode(d,o.title),o.avatar&&Vp.preencode(d,o.avatar),o.description&&e.string.preencode(d,o.description),o.supportedLanguages&&$.preencode(d,o.supportedLanguages),o.blindPeers&&_.preencode(d,o.blindPeers)},encode(d,o){const n=(o.title?1:0)|(o.avatar?2:0)|(o.description?4:0)|(o.supportedLanguages?8:0)|(o.blindPeers?16:0);e.uint.encode(d,n),o.title&&e.string.encode(d,o.title),o.avatar&&Vp.encode(d,o.avatar),o.description&&e.string.encode(d,o.description),o.supportedLanguages&&$.encode(d,o.supportedLanguages),o.blindPeers&&_.encode(d,o.blindPeers)},decode(d){const o=e.uint.decode(d);return{title:1&o?e.string.decode(d):null,avatar:2&o?Vp.decode(d):null,description:4&o?e.string.decode(d):null,supportedLanguages:8&o?$.decode(d):null,blindPeers:16&o?_.decode(d):null}}},de={preencode(d,o){e.fixed32.preencode(d,o.key)},encode(d,o){e.fixed32.encode(d,o.key)},decode:d=>({key:e.fixed32.decode(d)})},oe=e.frame(a),ne=e.frame(de),ce={preencode(e,d){oe.preencode(e,d.header),ne.preencode(e,d.peer)},encode(e,d){oe.encode(e,d.header),ne.encode(e,d.peer)},decode:e=>({header:oe.decode(e),peer:ne.decode(e)})},re=oe,te={preencode(d,o){re.preencode(d,o.header),e.fixed32.preencode(d,o.key)},encode(d,o){re.encode(d,o.header),e.fixed32.encode(d,o.key)},decode:d=>({header:re.decode(d),key:e.fixed32.decode(d)})},ie={preencode(d,o){e.fixed32.preencode(d,o.memberKey),e.buffer.preencode(d,o.proof)},encode(d,o){e.fixed32.encode(d,o.memberKey),e.buffer.encode(d,o.proof)},decode:d=>({memberKey:e.fixed32.decode(d),proof:e.buffer.decode(d)})},ae={preencode(d,o){e.fixed32.preencode(d,o.id),e.buffer.preencode(d,o.response)},encode(d,o){e.fixed32.encode(d,o.id),e.buffer.encode(d,o.response)},decode:d=>({id:e.fixed32.decode(d),response:e.buffer.decode(d)})},se=e.frame(M),pe=e.frame(ae),ue={preencode(d,o){e.fixed32.preencode(d,o.key),e.fixed32.preencode(d,o.memberKey),se.preencode(d,o.status),Up.preencode(d,o.profile),d.end++,o.invitation&&pe.preencode(d,o.invitation)},encode(d,o){const n=o.invitation?1:0;e.fixed32.encode(d,o.key),e.fixed32.encode(d,o.memberKey),se.encode(d,o.status),Up.encode(d,o.profile),e.uint.encode(d,n),o.invitation&&pe.encode(d,o.invitation)},decode:d=>({key:e.fixed32.decode(d),memberKey:e.fixed32.decode(d),status:se.decode(d),profile:Up.decode(d),invitation:1&e.uint.decode(d)?pe.decode(d):null})},le={preencode(d,o){e.uint.preencode(d,o.timestamp),d.end++,o.mailbox&&e.fixed32.preencode(d,o.mailbox),o.displayName&&e.string.preencode(d,o.displayName),o.avatar&&Jp.preencode(d,o.avatar),o.username&&e.string.preencode(d,o.username)},encode(d,o){const n=(o.mailbox?1:0)|(o.displayName?2:0)|(o.avatar?4:0)|(o.username?8:0);e.uint.encode(d,o.timestamp),e.uint.encode(d,n),o.mailbox&&e.fixed32.encode(d,o.mailbox),o.displayName&&e.string.encode(d,o.displayName),o.avatar&&Jp.encode(d,o.avatar),o.username&&e.string.encode(d,o.username)},decode(d){const o=e.uint.decode(d),n=e.uint.decode(d);return{timestamp:o,mailbox:1&n?e.fixed32.decode(d):null,displayName:2&n?e.string.decode(d):null,avatar:4&n?Jp.decode(d):null,username:8&n?e.string.decode(d):null}}},fe={preencode(d,n){d.end++,n.swarmKey&&e.fixed32.preencode(d,n.swarmKey),n.name&&e.string.preencode(d,n.name),o>=5&&n.buildType&&Fp.preencode(d,n.buildType)},encode(d,n){const c=(n.swarmKey?1:0)|(n.name?2:0)|(n.isMobile?4:0)|(o>=5&&n.buildType?8:0);e.uint.encode(d,c),n.swarmKey&&e.fixed32.encode(d,n.swarmKey),n.name&&e.string.encode(d,n.name),o>=5&&n.buildType&&Fp.encode(d,n.buildType)},decode(d){const n=e.uint.decode(d);return{swarmKey:1&n?e.fixed32.decode(d):null,name:2&n?e.string.decode(d):null,isMobile:!!(4&n),buildType:o>=5&&8&n?Fp.decode(d):null}}},me=e.frame(le),ye={preencode(e,d){me.preencode(e,d.profile),ie.preencode(e,d.attestation)},encode(e,d){me.encode(e,d.profile),ie.encode(e,d.attestation)},decode:e=>({profile:me.decode(e),attestation:ie.decode(e)})},xe={preencode(e,d){zp.preencode(e,d.profile),ie.preencode(e,d.attestation)},encode(e,d){zp.encode(e,d.profile),ie.encode(e,d.attestation)},decode:e=>({profile:zp.decode(e),attestation:ie.decode(e)})},be=me,ve={preencode(e,d){be.preencode(e,d.profile),ie.preencode(e,d.attestation)},encode(e,d){be.encode(e,d.profile),ie.encode(e,d.attestation)},decode:e=>({profile:be.decode(e),attestation:ie.decode(e)})},ge={preencode(d,o){e.fixed32.preencode(d,o.id),e.buffer.preencode(d,o.data),e.buffer.preencode(d,o.signature)},encode(d,o){e.fixed32.encode(d,o.id),e.buffer.encode(d,o.data),e.buffer.encode(d,o.signature)},decode:d=>({id:e.fixed32.decode(d),data:e.buffer.decode(d),signature:e.buffer.decode(d)})},ke={preencode(d,o){e.fixed32.preencode(d,o.devicePublicKey)},encode(d,o){e.fixed32.encode(d,o.devicePublicKey)},decode:d=>({devicePublicKey:e.fixed32.decode(d)})},he={preencode(d,o){ie.preencode(d,o.privateProfileIdentity),e.buffer.preencode(d,o.deviceProof)},encode(d,o){ie.encode(d,o.privateProfileIdentity),e.buffer.encode(d,o.deviceProof)},decode:d=>({privateProfileIdentity:ie.decode(d),deviceProof:e.buffer.decode(d)})},Ke={preencode(d,o){e.fixed32.preencode(d,o.deviceKey),ie.preencode(d,o.privateProfileIdentity),e.buffer.preencode(d,o.deviceProof)},encode(d,o){e.fixed32.encode(d,o.deviceKey),ie.encode(d,o.privateProfileIdentity),e.buffer.encode(d,o.deviceProof)},decode:d=>({deviceKey:e.fixed32.decode(d),privateProfileIdentity:ie.decode(d),deviceProof:e.buffer.decode(d)})},we=e.frame(xe),Pe=e.frame(ye),Re=e.frame(ke),Te={preencode(d,o){e.fixed32.preencode(d,o.deviceKey),t.preencode(d,o.keyPair),we.preencode(d,o.device),Pe.preencode(d,o.member),d.end++,o.identity&&Re.preencode(d,o.identity)},encode(d,o){const n=o.identity?1:0;e.fixed32.encode(d,o.deviceKey),t.encode(d,o.keyPair),we.encode(d,o.device),Pe.encode(d,o.member),e.uint.encode(d,n),o.identity&&Re.encode(d,o.identity)},decode:d=>({deviceKey:e.fixed32.decode(d),keyPair:t.decode(d),device:we.decode(d),member:Pe.decode(d),identity:1&e.uint.decode(d)?Re.decode(d):null})},Ae=e.frame(Te),qe={preencode(d,o){e.fixed32.preencode(d,o.id),Ae.preencode(d,o.request),e.buffer.preencode(d,o.signature)},encode(d,o){e.fixed32.encode(d,o.id),Ae.encode(d,o.request),e.buffer.encode(d,o.signature)},decode:d=>({id:e.fixed32.decode(d),request:Ae.decode(d),signature:e.buffer.decode(d)})},Me=we,Ce=Pe,De={preencode(e,d){Me.preencode(e,d.device),e.end++,d.member&&Ce.preencode(e,d.member)},encode(d,o){const n=o.member?1:0;Me.encode(d,o.device),e.uint.encode(d,n),o.member&&Ce.encode(d,o.member)},decode:d=>({device:Me.decode(d),member:1&e.uint.decode(d)?Ce.decode(d):null})},Ie=e.frame(qe),Se=e.frame(De),Fe={preencode(e,d){e.end++,d.withInvitation&&Ie.preencode(e,d.withInvitation),d.withMemberProof&&Se.preencode(e,d.withMemberProof)},encode(d,o){const n=(o.withInvitation?1:0)|(o.withMemberProof?2:0);e.uint.encode(d,n),o.withInvitation&&Ie.encode(d,o.withInvitation),o.withMemberProof&&Se.encode(d,o.withMemberProof)},decode(d){const o=e.uint.decode(d);return{withInvitation:1&o?Ie.decode(d):null,withMemberProof:2&o?Se.decode(d):null}}},Le=e.frame(ge),je=e.frame(he),Ee={preencode(e,d){Le.preencode(e,d.signedKeys),e.end++,d.identity&&je.preencode(e,d.identity)},encode(d,o){const n=o.identity?1:0;Le.encode(d,o.signedKeys),e.uint.encode(d,n),o.identity&&je.encode(d,o.identity)},decode:d=>({signedKeys:Le.decode(d),identity:1&e.uint.decode(d)?je.decode(d):null})},Be={preencode(d,n){d.end++,n.expiration&&e.uint.preencode(d,n.expiration),o>=5&&n.buildType&&Fp.preencode(d,n.buildType)},encode(d,n){const c=(n.expiration?1:0)|(n.requiresConfirmation?2:0)|(n.canModerate?4:0)|(n.canAdmin?8:0)|(o>=5&&n.buildType?16:0);e.uint.encode(d,c),n.expiration&&e.uint.encode(d,n.expiration),o>=5&&n.buildType&&Fp.encode(d,n.buildType)},decode(d){const n=e.uint.decode(d);return{expiration:1&n?e.uint.decode(d):0,requiresConfirmation:!!(2&n),canModerate:!!(4&n),canAdmin:!!(8&n),buildType:o>=5&&16&n?Fp.decode(d):null}}},Ne=Le,Oe=e.frame(Be),Ve={preencode(d,o){e.fixed32.preencode(d,o.id),Ne.preencode(d,o.response),Oe.preencode(d,o.metadata),d.end++,o.anchor&&n.preencode(d,o.anchor)},encode(d,o){const c=(o.anchor?1:0)|(o.isActive?2:0);e.fixed32.encode(d,o.id),Ne.encode(d,o.response),Oe.encode(d,o.metadata),e.uint.encode(d,c),o.anchor&&n.encode(d,o.anchor)},decode(d){const o=e.fixed32.decode(d),c=Ne.decode(d),r=Oe.decode(d),t=e.uint.decode(d);return{id:o,response:c,metadata:r,anchor:1&t?n.decode(d):null,isActive:!!(2&t)}}},Ue=oe,Je=e.frame(Ve),ze={preencode(e,d){Ue.preencode(e,d.header),Je.preencode(e,d.invitation)},encode(e,d){Ue.encode(e,d.header),Je.encode(e,d.invitation)},decode:e=>({header:Ue.decode(e),invitation:Je.decode(e)})},We=oe,He={preencode(d,o){We.preencode(d,o.header),e.fixed32.preencode(d,o.id)},encode(d,o){We.encode(d,o.header),e.fixed32.encode(d,o.id)},decode:d=>({header:We.decode(d),id:e.fixed32.decode(d)})},Ge={preencode(d,o){e.fixed32.preencode(d,o.mailbox),e.fixed32.preencode(d,o.invitationSeed),n.preencode(d,o.anchor)},encode(d,o){e.fixed32.encode(d,o.mailbox),e.fixed32.encode(d,o.invitationSeed),n.encode(d,o.anchor)},decode:d=>({mailbox:e.fixed32.decode(d),invitationSeed:e.fixed32.decode(d),anchor:n.decode(d)})},Qe={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.fixed32.preencode(d,o.encryptionKey),e.fixed32.preencode(d,o.seed),d.end++,o.fastForwardTo&&e.fixed32.preencode(d,o.fastForwardTo)},encode(d,o){const n=o.fastForwardTo?1:0;e.fixed32.encode(d,o.roomKey),e.fixed32.encode(d,o.encryptionKey),e.fixed32.encode(d,o.seed),e.uint.encode(d,n),o.fastForwardTo&&e.fixed32.encode(d,o.fastForwardTo)},decode:d=>({roomKey:e.fixed32.decode(d),encryptionKey:e.fixed32.decode(d),seed:e.fixed32.decode(d),fastForwardTo:1&e.uint.decode(d)?e.fixed32.decode(d):null})},Xe={preencode(d,o){e.fixed32.preencode(d,o.mailbox),e.fixed32.preencode(d,o.invitationSeed),n.preencode(d,o.anchor),e.fixed32.preencode(d,o.identityPublicKey)},encode(d,o){e.fixed32.encode(d,o.mailbox),e.fixed32.encode(d,o.invitationSeed),n.encode(d,o.anchor),e.fixed32.encode(d,o.identityPublicKey)},decode:d=>({mailbox:e.fixed32.decode(d),invitationSeed:e.fixed32.decode(d),anchor:n.decode(d),identityPublicKey:e.fixed32.decode(d)})},Ye={preencode(d,o){e.fixed32.preencode(d,o.mailbox)},encode(d,o){e.fixed32.encode(d,o.mailbox)},decode:d=>({mailbox:e.fixed32.decode(d)})},Ze=e.frame(Ge),$e=e.frame(Xe),_e=e.frame(Ye),ed=e.frame(Qe),dd=e.array(e.ipv4Address),od={preencode(e,d){e.end++,d.room&&Ze.preencode(e,d.room),d.identity&&$e.preencode(e,d.identity),d.contact&&_e.preencode(e,d.contact),d.readonly&&ed.preencode(e,d.readonly),d.additionalNodes&&dd.preencode(e,d.additionalNodes),o>=5&&d.buildType&&Fp.preencode(e,d.buildType)},encode(d,n){const c=(n.room?1:0)|(n.identity?2:0)|(n.contact?4:0)|(n.readonly?8:0)|(n.additionalNodes?16:0)|(o>=5&&n.buildType?32:0);e.uint.encode(d,c),n.room&&Ze.encode(d,n.room),n.identity&&$e.encode(d,n.identity),n.contact&&_e.encode(d,n.contact),n.readonly&&ed.encode(d,n.readonly),n.additionalNodes&&dd.encode(d,n.additionalNodes),o>=5&&n.buildType&&Fp.encode(d,n.buildType)},decode(d){const n=e.uint.decode(d);return{room:1&n?Ze.decode(d):null,identity:2&n?$e.decode(d):null,contact:4&n?_e.decode(d):null,readonly:8&n?ed.decode(d):null,additionalNodes:16&n?dd.decode(d):null,buildType:o>=5&&32&n?Fp.decode(d):null}}},nd=oe,cd={preencode(d,o){nd.preencode(d,o.header),e.buffer.preencode(d,o.blindRequest)},encode(d,o){nd.encode(d,o.header),e.buffer.encode(d,o.blindRequest)},decode:d=>({header:nd.decode(d),blindRequest:e.buffer.decode(d)})},rd=oe,td={preencode(e,d){rd.preencode(e,d.header),e.end++,d.profile&&Wp.preencode(e,d.profile)},encode(d,o){const n=o.profile?1:0;rd.encode(d,o.header),e.uint.encode(d,n),o.profile&&Wp.encode(d,o.profile)},decode:d=>({header:rd.decode(d),profile:1&e.uint.decode(d)?Wp.decode(d):null})},id=oe,ad={preencode(d,o){id.preencode(d,o.header),e.fixed32.preencode(d,o.key)},encode(d,o){id.encode(d,o.header),e.fixed32.encode(d,o.key)},decode:d=>({header:id.decode(d),key:e.fixed32.decode(d)})},sd={preencode(e,d){},encode(e,d){},decode:e=>({})},pd=sd,ud=Ae,ld={preencode(d,o){e.fixed32.preencode(d,o.deviceKey),e.fixed32.preencode(d,o.id),ud.preencode(d,o.request)},encode(d,o){e.fixed32.encode(d,o.deviceKey),e.fixed32.encode(d,o.id),ud.encode(d,o.request)},decode:d=>({deviceKey:e.fixed32.decode(d),id:e.fixed32.decode(d),request:ud.decode(d)})},fd=oe,md=je,yd={preencode(d,o){fd.preencode(d,o.header),e.fixed32.preencode(d,o.deviceKey),d.end++,o.identity&&md.preencode(d,o.identity)},encode(d,o){const n=o.identity?1:0;fd.encode(d,o.header),e.fixed32.encode(d,o.deviceKey),e.uint.encode(d,n),o.identity&&md.encode(d,o.identity)},decode:d=>({header:fd.decode(d),deviceKey:e.fixed32.decode(d),identity:1&e.uint.decode(d)?md.decode(d):null})},xd=oe,bd={preencode(d,o){xd.preencode(d,o.header),e.fixed32.preencode(d,o.deviceKey)},encode(d,o){xd.encode(d,o.header),e.fixed32.encode(d,o.deviceKey)},decode:d=>({header:xd.decode(d),deviceKey:e.fixed32.decode(d)})},vd=e.frame(C),gd=me,kd={preencode(d,o){e.fixed32.preencode(d,o.key),vd.preencode(d,o.status),gd.preencode(d,o.profile)},encode(d,o){e.fixed32.encode(d,o.key),vd.encode(d,o.status),gd.encode(d,o.profile)},decode:d=>({key:e.fixed32.decode(d),status:vd.decode(d),profile:gd.decode(d)})},hd=vd,Kd=me,wd={preencode(d,o){e.fixed32.preencode(d,o.key),hd.preencode(d,o.status),Kd.preencode(d,o.profile),d.end++,o.proofs&&Hp.preencode(d,o.proofs)},encode(d,o){const n=o.proofs?1:0;e.fixed32.encode(d,o.key),hd.encode(d,o.status),Kd.encode(d,o.profile),e.uint.encode(d,n),o.proofs&&Hp.encode(d,o.proofs)},decode:d=>({key:e.fixed32.decode(d),status:hd.decode(d),profile:Kd.decode(d),proofs:1&e.uint.decode(d)?Hp.decode(d):null})},Pd={preencode(d,o){e.fixed32.preencode(d,o.key),d.end++,o.profileAttestation&&e.buffer.preencode(d,o.profileAttestation),o.latestReceipt&&e.buffer.preencode(d,o.latestReceipt)},encode(d,o){const n=(o.profileAttestation?1:0)|(o.latestReceipt?2:0);e.fixed32.encode(d,o.key),e.uint.encode(d,n),o.profileAttestation&&e.buffer.encode(d,o.profileAttestation),o.latestReceipt&&e.buffer.encode(d,o.latestReceipt)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d);return{key:o,profileAttestation:1&n?e.buffer.decode(d):null,latestReceipt:2&n?e.buffer.decode(d):null}}},Rd=oe,Td=Pe,Ad={preencode(e,d){Rd.preencode(e,d.header),Td.preencode(e,d.member)},encode(e,d){Rd.encode(e,d.header),Td.encode(e,d.member)},decode:e=>({header:Rd.decode(e),member:Td.decode(e)})},qd=oe,Md=e.frame(D),Cd={preencode(d,o){qd.preencode(d,o.header),e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.key),Md.preencode(d,o.status)},encode(d,o){qd.encode(d,o.header),e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.key),Md.encode(d,o.status)},decode:d=>({header:qd.decode(d),memberKey:e.fixed32.decode(d),key:e.uint.decode(d),status:Md.decode(d)})},Dd=oe,Id={preencode(d,o){Dd.preencode(d,o.header),e.fixed32.preencode(d,o.key),d.end++},encode(d,o){const n=(o.isModerator?1:0)|(o.isAdmin?2:0);Dd.encode(d,o.header),e.fixed32.encode(d,o.key),e.uint.encode(d,n)},decode(d){const o=Dd.decode(d),n=e.fixed32.decode(d),c=e.uint.decode(d);return{header:o,key:n,isModerator:!!(1&c),isAdmin:!!(2&c)}}},Sd=oe,Fd={preencode(d,o){Sd.preencode(d,o.header),e.fixed32.preencode(d,o.key)},encode(d,o){Sd.encode(d,o.header),e.fixed32.encode(d,o.key)},decode:d=>({header:Sd.decode(d),key:e.fixed32.decode(d)})},Ld={preencode(d,o){e.fixed32.preencode(d,o.key),e.uint.preencode(d,o.mentions)},encode(d,o){e.fixed32.encode(d,o.key),e.uint.encode(d,o.mentions)},decode:d=>({key:e.fixed32.decode(d),mentions:e.uint.decode(d)})},jd={preencode(d,o){d.end++,o.memberKey&&e.fixed32.preencode(d,o.memberKey)},encode(d,o){const n=o.memberKey?1:0;e.uint.encode(d,n),o.memberKey&&e.fixed32.encode(d,o.memberKey)},decode:d=>({memberKey:1&e.uint.decode(d)?e.fixed32.decode(d):null})},Ed=jd,Bd=jd,Nd={preencode(d,o){d.end++,o.from&&e.string.preencode(d,o.from),o.to&&e.string.preencode(d,o.to)},encode(d,o){const n=(o.from?1:0)|(o.to?2:0);e.uint.encode(d,n),o.from&&e.string.encode(d,o.from),o.to&&e.string.encode(d,o.to)},decode(d){const o=e.uint.decode(d);return{from:1&o?e.string.decode(d):null,to:2&o?e.string.decode(d):null}}},Od=e.frame(jd),Vd=e.frame(Ed),Ud=e.frame(Nd),Jd=e.frame(Bd),zd={preencode(d,n){const c=(n.memberJoined?1:0)|(n.memberLeft?2:0)|(n.titleChanged?4:0)|(n.callStarted?8:0)|(n.callHangup?16:0)|(n.callMissed?32:0)|(n.roomAvatarChanged?64:0)|(n.invitationCreated?128:0)|(n.memberRemoved?256:0)|(o>=3&&n.locationShared?512:0);e.uint.preencode(d,c),n.memberJoined&&Od.preencode(d,n.memberJoined),n.memberLeft&&Vd.preencode(d,n.memberLeft),n.titleChanged&&Ud.preencode(d,n.titleChanged),n.memberRemoved&&Jd.preencode(d,n.memberRemoved),o>=3&&n.locationShared&&Gp.preencode(d,n.locationShared)},encode(d,n){const c=(n.memberJoined?1:0)|(n.memberLeft?2:0)|(n.titleChanged?4:0)|(n.callStarted?8:0)|(n.callHangup?16:0)|(n.callMissed?32:0)|(n.roomAvatarChanged?64:0)|(n.invitationCreated?128:0)|(n.memberRemoved?256:0)|(o>=3&&n.locationShared?512:0);e.uint.encode(d,c),n.memberJoined&&Od.encode(d,n.memberJoined),n.memberLeft&&Vd.encode(d,n.memberLeft),n.titleChanged&&Ud.encode(d,n.titleChanged),n.memberRemoved&&Jd.encode(d,n.memberRemoved),o>=3&&n.locationShared&&Gp.encode(d,n.locationShared)},decode(d){const n=e.uint.decode(d);return{memberJoined:1&n?Od.decode(d):null,memberLeft:2&n?Vd.decode(d):null,titleChanged:4&n?Ud.decode(d):null,callStarted:!!(8&n),callHangup:!!(16&n),callMissed:!!(32&n),roomAvatarChanged:!!(64&n),invitationCreated:!!(128&n),memberRemoved:256&n?Jd.decode(d):null,locationShared:o>=3&&512&n?Gp.decode(d):null}}},Wd={preencode(e,d){e.end++,o>=3&&d.locationShared&&Qp.preencode(e,d.locationShared)},encode(d,n){const c=(n.callStarted?1:0)|(n.callHangup?2:0)|(n.callMissed?4:0)|(o>=3&&n.locationShared?8:0);e.uint.encode(d,c),o>=3&&n.locationShared&&Qp.encode(d,n.locationShared)},decode(d){const n=e.uint.decode(d);return{callStarted:!!(1&n),callHangup:!!(2&n),callMissed:!!(4&n),locationShared:o>=3&&8&n?Qp.decode(d):null}}},Hd={preencode(d,o){e.uint.preencode(d,o.start),e.uint.preencode(d,o.length)},encode(d,o){e.uint.encode(d,o.start),e.uint.encode(d,o.length)},decode:d=>({start:e.uint.decode(d),length:e.uint.decode(d)})},Gd=e.frame(Hd),Qd={preencode(d,o){Gd.preencode(d,o.range),e.string.preencode(d,o.content)},encode(d,o){Gd.encode(d,o.range),e.string.encode(d,o.content)},decode:d=>({range:Gd.decode(d),content:e.string.decode(d)})},Xd=Gd,Yd={preencode(d,o){Xd.preencode(d,o.range),e.fixed32.preencode(d,o.memberKey)},encode(d,o){Xd.encode(d,o.range),e.fixed32.encode(d,o.memberKey)},decode:d=>({range:Xd.decode(d),memberKey:e.fixed32.decode(d)})},Zd=Gd,$d={preencode(d,o){Zd.preencode(d,o.range),Z.preencode(d,o.language),e.string.preencode(d,o.text)},encode(d,o){Zd.encode(d,o.range),Z.encode(d,o.language),e.string.encode(d,o.text)},decode:d=>({range:Zd.decode(d),language:Z.decode(d),text:e.string.decode(d)})},_d=h,eo=e.array(e.uint),oo={preencode(d,o){d.end++,o.title&&e.string.preencode(d,o.title),o.description&&e.string.preencode(d,o.description),o.file&&_d.preencode(d,o.file),o.files&&eo.preencode(d,o.files)},encode(d,o){const n=(o.title?1:0)|(o.description?2:0)|(o.file?4:0)|(o.files?8:0);e.uint.encode(d,n),o.title&&e.string.encode(d,o.title),o.description&&e.string.encode(d,o.description),o.file&&_d.encode(d,o.file),o.files&&eo.encode(d,o.files)},decode(d){const o=e.uint.decode(d);return{title:1&o?e.string.decode(d):null,description:2&o?e.string.decode(d):null,file:4&o?_d.decode(d):null,files:8&o?eo.decode(d):null}}},no=Gd,co=e.frame(oo),ro={preencode(d,o){no.preencode(d,o.range),e.string.preencode(d,o.url),d.end++,o.preview&&co.preencode(d,o.preview)},encode(d,o){const n=o.preview?1:0;no.encode(d,o.range),e.string.encode(d,o.url),e.uint.encode(d,n),o.preview&&co.encode(d,o.preview)},decode:d=>({range:no.decode(d),url:e.string.decode(d),preview:1&e.uint.decode(d)?co.decode(d):null})},to=e.array(e.frame(Yd)),io=e.array(e.frame(ro)),ao=io,so=e.array(e.frame(Hd)),po=so,uo=so,lo=e.array(e.frame(Qd)),fo=so,mo=so,yo=e.array(e.frame($d)),xo={preencode(d,o){const n=(o.mention?1:0)|(o.httpLink?2:0)|(o.pearLink?4:0)|(o.bold?8:0)|(o.italic?16:0)|(o.code?32:0)|(o.emoji?64:0)|(o.codeBlock?128:0)|(o.strike?256:0)|(o.translation?512:0);e.uint.preencode(d,n),o.mention&&to.preencode(d,o.mention),o.httpLink&&io.preencode(d,o.httpLink),o.pearLink&&ao.preencode(d,o.pearLink),o.bold&&so.preencode(d,o.bold),o.italic&&po.preencode(d,o.italic),o.code&&uo.preencode(d,o.code),o.emoji&&lo.preencode(d,o.emoji),o.codeBlock&&fo.preencode(d,o.codeBlock),o.strike&&mo.preencode(d,o.strike),o.translation&&yo.preencode(d,o.translation)},encode(d,o){const n=(o.mention?1:0)|(o.httpLink?2:0)|(o.pearLink?4:0)|(o.bold?8:0)|(o.italic?16:0)|(o.code?32:0)|(o.emoji?64:0)|(o.codeBlock?128:0)|(o.strike?256:0)|(o.translation?512:0);e.uint.encode(d,n),o.mention&&to.encode(d,o.mention),o.httpLink&&io.encode(d,o.httpLink),o.pearLink&&ao.encode(d,o.pearLink),o.bold&&so.encode(d,o.bold),o.italic&&po.encode(d,o.italic),o.code&&uo.encode(d,o.code),o.emoji&&lo.encode(d,o.emoji),o.codeBlock&&fo.encode(d,o.codeBlock),o.strike&&mo.encode(d,o.strike),o.translation&&yo.encode(d,o.translation)},decode(d){const o=e.uint.decode(d);return{mention:1&o?to.decode(d):null,httpLink:2&o?io.decode(d):null,pearLink:4&o?ao.decode(d):null,bold:8&o?so.decode(d):null,italic:16&o?po.decode(d):null,code:32&o?uo.decode(d):null,emoji:64&o?lo.decode(d):null,codeBlock:128&o?fo.decode(d):null,strike:256&o?mo.decode(d):null,translation:512&o?yo.decode(d):null}}},bo=e.array(e.frame(k)),vo=e.frame(xo),go=e.frame(Wd),ko={preencode(d,o){d.end++,o.text&&e.string.preencode(d,o.text),o.files&&bo.preencode(d,o.files),o.display&&vo.preencode(d,o.display),o.replyTo&&c.preencode(d,o.replyTo),o.parent&&c.preencode(d,o.parent),o.event&&go.preencode(d,o.event)},encode(d,n){const r=(n.text?1:0)|(n.files?2:0)|(n.display?4:0)|(n.replyTo?8:0)|(n.parent?16:0)|(n.event?32:0)|(o>=3&&n.forwarded?64:0);e.uint.encode(d,r),n.text&&e.string.encode(d,n.text),n.files&&bo.encode(d,n.files),n.display&&vo.encode(d,n.display),n.replyTo&&c.encode(d,n.replyTo),n.parent&&c.encode(d,n.parent),n.event&&go.encode(d,n.event)},decode(d){const n=e.uint.decode(d);return{text:1&n?e.string.decode(d):null,files:2&n?bo.decode(d):null,display:4&n?vo.decode(d):null,replyTo:8&n?c.decode(d):null,parent:16&n?c.decode(d):null,event:32&n?go.decode(d):null,forwarded:o>=3&&!!(64&n)}}},ho=eo,Ko=vo,wo={preencode(d,o){d.end++,o.text&&e.string.preencode(d,o.text),o.files&&ho.preencode(d,o.files),o.display&&Ko.preencode(d,o.display),o.replyTo&&c.preencode(d,o.replyTo),o.parent&&c.preencode(d,o.parent)},encode(d,n){const r=(n.text?1:0)|(n.files?2:0)|(n.display?4:0)|(n.replyTo?8:0)|(n.parent?16:0)|(o>=3&&n.forwarded?32:0);e.uint.encode(d,r),n.text&&e.string.encode(d,n.text),n.files&&ho.encode(d,n.files),n.display&&Ko.encode(d,n.display),n.replyTo&&c.encode(d,n.replyTo),n.parent&&c.encode(d,n.parent)},decode(d){const n=e.uint.decode(d);return{text:1&n?e.string.decode(d):null,files:2&n?ho.decode(d):null,display:4&n?Ko.decode(d):null,replyTo:8&n?c.decode(d):null,parent:16&n?c.decode(d):null,forwarded:o>=3&&!!(32&n)}}},Po=bo,Ro=vo,To={preencode(d,o){d.end++,o.text&&e.string.preencode(d,o.text),o.files&&Po.preencode(d,o.files),o.display&&Ro.preencode(d,o.display),o.replyTo&&c.preencode(d,o.replyTo),o.parent&&c.preencode(d,o.parent)},encode(d,n){const r=(n.text?1:0)|(n.files?2:0)|(n.display?4:0)|(n.replyTo?8:0)|(n.parent?16:0)|(o>=3&&n.forwarded?32:0);e.uint.encode(d,r),n.text&&e.string.encode(d,n.text),n.files&&Po.encode(d,n.files),n.display&&Ro.encode(d,n.display),n.replyTo&&c.encode(d,n.replyTo),n.parent&&c.encode(d,n.parent)},decode(d){const n=e.uint.decode(d);return{text:1&n?e.string.decode(d):null,files:2&n?Po.decode(d):null,display:4&n?Ro.decode(d):null,replyTo:8&n?c.decode(d):null,parent:16&n?c.decode(d):null,forwarded:o>=3&&!!(32&n)}}},Ao={preencode(e,d){e.end++},encode(d,o){const n=(o.isEdited?1:0)|(o.isDeleted?2:0)|(o.isPinned?4:0);e.uint.encode(d,n)},decode(d){const o=e.uint.decode(d);return{isEdited:!!(1&o),isDeleted:!!(2&o),isPinned:!!(4&o)}}},qo={preencode(d,o){e.uint.preencode(d,o.thread),e.uint.preencode(d,o.index)},encode(d,o){e.uint.encode(d,o.thread),e.uint.encode(d,o.index)},decode:d=>({thread:e.uint.decode(d),index:e.uint.decode(d)})},Mo=e.frame(V),Co={preencode(d,o){e.uint.preencode(d,o.id),e.uint.preencode(d,o.count),d.end++,o.parent&&c.preencode(d,o.parent),o.stats&&Mo.preencode(d,o.stats)},encode(d,o){const n=(o.parent?1:0)|(o.stats?2:0);e.uint.encode(d,o.id),e.uint.encode(d,o.count),e.uint.encode(d,n),o.parent&&c.encode(d,o.parent),o.stats&&Mo.encode(d,o.stats)},decode(d){const o=e.uint.decode(d),n=e.uint.decode(d),r=e.uint.decode(d);return{id:o,count:n,parent:1&r?c.decode(d):null,stats:2&r?Mo.decode(d):null}}},Do=e.frame(Ao),Io=e.frame(wo),So=e.frame(zd),Fo={preencode(d,o){qo.preencode(d,o.id),c.preencode(d,o.oplog),e.uint.preencode(d,o.clock),e.uint.preencode(d,o.timestamp),d.end++,o.editedAt&&e.uint.preencode(d,o.editedAt),Do.preencode(d,o.status),o.message&&Io.preencode(d,o.message),o.event&&So.preencode(d,o.event)},encode(d,o){const n=(o.editedAt?1:0)|(o.message?2:0)|(o.event?4:0);qo.encode(d,o.id),c.encode(d,o.oplog),e.uint.encode(d,o.clock),e.uint.encode(d,o.timestamp),e.uint.encode(d,n),o.editedAt&&e.uint.encode(d,o.editedAt),Do.encode(d,o.status),o.message&&Io.encode(d,o.message),o.event&&So.encode(d,o.event)},decode(d){const o=qo.decode(d),n=c.decode(d),r=e.uint.decode(d),t=e.uint.decode(d),i=e.uint.decode(d);return{id:o,oplog:n,clock:r,timestamp:t,editedAt:1&i?e.uint.decode(d):0,status:Do.decode(d),message:2&i?Io.decode(d):null,event:4&i?So.decode(d):null}}},Lo=Do,jo=e.frame(To),Eo=So,Bo={preencode(d,o){qo.preencode(d,o.id),c.preencode(d,o.oplog),e.uint.preencode(d,o.clock),e.uint.preencode(d,o.timestamp),d.end++,o.editedAt&&e.uint.preencode(d,o.editedAt),Lo.preencode(d,o.status),o.message&&jo.preencode(d,o.message),o.event&&Eo.preencode(d,o.event)},encode(d,o){const n=(o.editedAt?1:0)|(o.message?2:0)|(o.event?4:0);qo.encode(d,o.id),c.encode(d,o.oplog),e.uint.encode(d,o.clock),e.uint.encode(d,o.timestamp),e.uint.encode(d,n),o.editedAt&&e.uint.encode(d,o.editedAt),Lo.encode(d,o.status),o.message&&jo.encode(d,o.message),o.event&&Eo.encode(d,o.event)},decode(d){const o=qo.decode(d),n=c.decode(d),r=e.uint.decode(d),t=e.uint.decode(d),i=e.uint.decode(d);return{id:o,oplog:n,clock:r,timestamp:t,editedAt:1&i?e.uint.decode(d):0,status:Lo.decode(d),message:2&i?jo.decode(d):null,event:4&i?Eo.decode(d):null}}},No=oe,Oo=e.frame(ko),Vo={preencode(e,d){No.preencode(e,d.header),Oo.preencode(e,d.message)},encode(e,d){No.encode(e,d.header),Oo.encode(e,d.message)},decode:e=>({header:No.decode(e),message:Oo.decode(e)})},Uo=oe,Jo={preencode(e,d){Uo.preencode(e,d.header),c.preencode(e,d.oplog)},encode(e,d){Uo.encode(e,d.header),c.encode(e,d.oplog)},decode:e=>({header:Uo.decode(e),oplog:c.decode(e)})},zo=oe,Wo=Oo,Ho={preencode(e,d){zo.preencode(e,d.header),c.preencode(e,d.oplog),Wo.preencode(e,d.message)},encode(e,d){zo.encode(e,d.header),c.encode(e,d.oplog),Wo.encode(e,d.message)},decode:e=>({header:zo.decode(e),oplog:c.decode(e),message:Wo.decode(e)})},Go=oe,Qo={preencode(e,d){Go.preencode(e,d.header),c.preencode(e,d.oplog),e.end++},encode(d,o){const n=o.isPinned?1:0;Go.encode(d,o.header),c.encode(d,o.oplog),e.uint.encode(d,n)},decode:d=>({header:Go.decode(d),oplog:c.decode(d),isPinned:!!(1&e.uint.decode(d))})},Xo={HttpLink:1,PearLink:2},Yo={preencode(e,d){e.end++},encode(d,o){if(o>2)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},Zo=oe,$o={preencode(d,o){Zo.preencode(d,o.header),c.preencode(d,o.oplog),e.uint.preencode(d,o.index),Xp.preencode(d,o.preview),d.end++,o.displayType&&Yo.preencode(d,o.displayType)},encode(d,o){const n=o.displayType?1:0;Zo.encode(d,o.header),c.encode(d,o.oplog),e.uint.encode(d,o.index),Xp.encode(d,o.preview),e.uint.encode(d,n),o.displayType&&Yo.encode(d,o.displayType)},decode:d=>({header:Zo.decode(d),oplog:c.decode(d),index:e.uint.decode(d),preview:Xp.decode(d),displayType:1&e.uint.decode(d)?Yo.decode(d):0})},_o={preencode(d,o){qo.preencode(d,o.id),e.fixed32.preencode(d,o.sender),e.uint.preencode(d,o.clock),e.string.preencode(d,o.reaction)},encode(d,o){qo.encode(d,o.id),e.fixed32.encode(d,o.sender),e.uint.encode(d,o.clock),e.string.encode(d,o.reaction)},decode:d=>({id:qo.decode(d),sender:e.fixed32.decode(d),clock:e.uint.decode(d),reaction:e.string.decode(d)})},en={preencode(d,o){e.string.preencode(d,o.text),e.uint.preencode(d,o.count)},encode(d,o){e.string.encode(d,o.text),e.uint.encode(d,o.count)},decode:d=>({text:e.string.decode(d),count:e.uint.decode(d)})},dn=e.array(e.frame(en)),on={preencode(d,o){qo.preencode(d,o.id),e.uint.preencode(d,o.total),dn.preencode(d,o.reactions),d.end++,o.editedAt&&e.uint.preencode(d,o.editedAt)},encode(d,o){const n=o.editedAt?1:0;qo.encode(d,o.id),e.uint.encode(d,o.total),dn.encode(d,o.reactions),e.uint.encode(d,n),o.editedAt&&e.uint.encode(d,o.editedAt)},decode:d=>({id:qo.decode(d),total:e.uint.decode(d),reactions:dn.decode(d),editedAt:1&e.uint.decode(d)?e.uint.decode(d):0})},nn=oe,cn={preencode(d,o){nn.preencode(d,o.header),c.preencode(d,o.oplog),e.string.preencode(d,o.reaction)},encode(d,o){nn.encode(d,o.header),c.encode(d,o.oplog),e.string.encode(d,o.reaction)},decode:d=>({header:nn.decode(d),oplog:c.decode(d),reaction:e.string.decode(d)})},rn=oe,tn={preencode(d,o){rn.preencode(d,o.header),c.preencode(d,o.oplog),e.string.preencode(d,o.reaction)},encode(d,o){rn.encode(d,o.header),c.encode(d,o.oplog),e.string.encode(d,o.reaction)},decode:d=>({header:rn.decode(d),oplog:c.decode(d),reaction:e.string.decode(d)})},an=oe,sn=e.frame(ee),pn={preencode(d,o){an.preencode(d,o.header),e.uint.preencode(d,o.key),sn.preencode(d,o.config)},encode(d,o){an.encode(d,o.header),e.uint.encode(d,o.key),sn.encode(d,o.config)},decode:d=>({header:an.decode(d),key:e.uint.decode(d),config:sn.decode(d)})},un={preencode(d,o){e.fixed32.preencode(d,o.memberKey),e.string.preencode(d,o.displayName),d.end++,o.avatar&&Yp.preencode(d,o.avatar)},encode(d,o){const n=o.avatar?1:0;e.fixed32.encode(d,o.memberKey),e.string.encode(d,o.displayName),e.uint.encode(d,n),o.avatar&&Yp.encode(d,o.avatar)},decode:d=>({memberKey:e.fixed32.decode(d),displayName:e.string.decode(d),avatar:1&e.uint.decode(d)?Yp.decode(d):null})},ln={preencode(d,o){e.fixed32.preencode(d,o.key),d.end++,o.username&&e.string.preencode(d,o.username)},encode(d,o){const n=o.username?1:0;e.fixed32.encode(d,o.key),e.uint.encode(d,n),o.username&&e.string.encode(d,o.username)},decode:d=>({key:e.fixed32.decode(d),username:1&e.uint.decode(d)?e.string.decode(d):null})},fn=e.frame(ln),mn={preencode(d,o){e.fixed32.preencode(d,o.publicKey),d.end++,o.discoveryCoreKey&&e.fixed32.preencode(d,o.discoveryCoreKey),o.userRegistry&&fn.preencode(d,o.userRegistry)},encode(d,o){const n=(o.discoveryCoreKey?1:0)|(o.userRegistry?2:0);e.fixed32.encode(d,o.publicKey),e.uint.encode(d,n),o.discoveryCoreKey&&e.fixed32.encode(d,o.discoveryCoreKey),o.userRegistry&&fn.encode(d,o.userRegistry)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d);return{publicKey:o,discoveryCoreKey:1&n?e.fixed32.decode(d):null,userRegistry:2&n?fn.decode(d):null}}},yn=oe,xn=e.frame(G),bn=e.frame(Q),vn=sn,gn=e.frame(mn),kn=we,hn=e.array(e.frame(ye)),Kn={preencode(e,d){yn.preencode(e,d.header),xn.preencode(e,d.digest),bn.preencode(e,d.capabilities),e.end++,d.config&&vn.preencode(e,d.config),d.identity&&gn.preencode(e,d.identity),d.bootstrapDevice&&kn.preencode(e,d.bootstrapDevice),d.initialMembers&&hn.preencode(e,d.initialMembers)},encode(d,o){const n=(o.config?1:0)|(o.identity?2:0)|(o.bootstrapDevice?4:0)|(o.initialMembers?8:0);yn.encode(d,o.header),xn.encode(d,o.digest),bn.encode(d,o.capabilities),e.uint.encode(d,n),o.config&&vn.encode(d,o.config),o.identity&&gn.encode(d,o.identity),o.bootstrapDevice&&kn.encode(d,o.bootstrapDevice),o.initialMembers&&hn.encode(d,o.initialMembers)},decode(d){const o=yn.decode(d),n=xn.decode(d),c=bn.decode(d),r=e.uint.decode(d);return{header:o,digest:n,capabilities:c,config:1&r?vn.decode(d):null,identity:2&r?gn.decode(d):null,bootstrapDevice:4&r?kn.decode(d):null,initialMembers:8&r?hn.decode(d):null}}},wn=oe,Pn={preencode(d,o){wn.preencode(d,o.header),e.uint.preencode(d,o.version)},encode(d,o){wn.encode(d,o.header),e.uint.encode(d,o.version)},decode:d=>({header:wn.decode(d),version:e.uint.decode(d)})},Rn=oe,Tn={preencode(d,n){Rn.preencode(d,n.header),e.uint.preencode(d,n.from),e.uint.preencode(d,n.to),d.end++,o>=5&&n.buildType&&Fp.preencode(d,n.buildType)},encode(d,n){const c=o>=5&&n.buildType?1:0;Rn.encode(d,n.header),e.uint.encode(d,n.from),e.uint.encode(d,n.to),e.uint.encode(d,c),o>=5&&n.buildType&&Fp.encode(d,n.buildType)},decode(d){const n=Rn.decode(d),c=e.uint.decode(d),r=e.uint.decode(d),t=d.start<d.end?e.uint.decode(d):0;return{header:n,from:c,to:r,buildType:o>=5&&1&t?Fp.decode(d):null}}},An={RoomType:1,IsExperimental:2,IsJoiningDisabled:3,IsAppendingDisabled:4,IsCallingDisabled:5,IsMembershipEventsDisabled:6,IsAttachmentsDisabled:7,IsLinksDisabled:8},qn={preencode(e,d){e.end++},encode(d,o){if(o>8)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},Mn=oe,Cn=H,Dn={preencode(d,o){Mn.preencode(d,o.header),e.uint.preencode(d,o.key),Cn.preencode(d,o.settings)},encode(d,o){Mn.encode(d,o.header),e.uint.encode(d,o.key),Cn.encode(d,o.settings)},decode:d=>({header:Mn.decode(d),key:e.uint.decode(d),settings:Cn.decode(d)})},In=oe,Sn={preencode(d,o){In.preencode(d,o.header),e.uint.preencode(d,o.value)},encode(d,o){In.encode(d,o.header),e.uint.encode(d,o.value)},decode:d=>({header:In.decode(d),value:e.uint.decode(d)})},Fn={preencode(d,o){e.uint.preencode(d,o.key),e.uint.preencode(d,o.value)},encode(d,o){e.uint.encode(d,o.key),e.uint.encode(d,o.value)},decode:d=>({key:e.uint.decode(d),value:e.uint.decode(d)})},Ln={Flag:1},jn={preencode(e,d){e.end++},encode(d,o){if(o>1)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},En={preencode(d,o){qo.preencode(d,o.id),e.fixed32.preencode(d,o.sender),e.uint.preencode(d,o.clock),jn.preencode(d,o.label)},encode(d,o){qo.encode(d,o.id),e.fixed32.encode(d,o.sender),e.uint.encode(d,o.clock),jn.encode(d,o.label)},decode:d=>({id:qo.decode(d),sender:e.fixed32.decode(d),clock:e.uint.decode(d),label:jn.decode(d)})},Bn=oe,Nn={preencode(e,d){Bn.preencode(e,d.header),c.preencode(e,d.oplog),jn.preencode(e,d.label)},encode(e,d){Bn.encode(e,d.header),c.encode(e,d.oplog),jn.encode(e,d.label)},decode:e=>({header:Bn.decode(e),oplog:c.decode(e),label:jn.decode(e)})},On=oe,Vn={preencode(e,d){On.preencode(e,d.header),c.preencode(e,d.oplog),jn.preencode(e,d.label)},encode(e,d){On.encode(e,d.header),c.encode(e,d.oplog),jn.encode(e,d.label)},decode:e=>({header:On.decode(e),oplog:c.decode(e),label:jn.decode(e)})},Un={preencode(d,o){jn.preencode(d,o.label),e.uint.preencode(d,o.count)},encode(d,o){jn.encode(d,o.label),e.uint.encode(d,o.count)},decode:d=>({label:jn.decode(d),count:e.uint.decode(d)})},Jn=e.array(e.frame(Un)),zn={preencode(d,o){qo.preencode(d,o.id),e.uint.preencode(d,o.total),Jn.preencode(d,o.labels),e.uint.preencode(d,o.editedAt),d.end++,o.flagsClock&&e.uint.preencode(d,o.flagsClock),o.version&&e.uint.preencode(d,o.version)},encode(d,o){const n=(o.flagsClock?1:0)|(o.version?2:0)|(o.isDeleted?4:0);qo.encode(d,o.id),e.uint.encode(d,o.total),Jn.encode(d,o.labels),e.uint.encode(d,o.editedAt),e.uint.encode(d,n),o.flagsClock&&e.uint.encode(d,o.flagsClock),o.version&&e.uint.encode(d,o.version)},decode(d){const o=qo.decode(d),n=e.uint.decode(d),c=Jn.decode(d),r=e.uint.decode(d),t=e.uint.decode(d);return{id:o,total:n,labels:c,editedAt:r,flagsClock:1&t?e.uint.decode(d):0,version:2&t?e.uint.decode(d):0,isDeleted:!!(4&t)}}},Wn=oe,Hn={preencode(d,o){Wn.preencode(d,o.header),e.uint.preencode(d,o.length)},encode(d,o){Wn.encode(d,o.header),e.uint.encode(d,o.length)},decode:d=>({header:Wn.decode(d),length:e.uint.decode(d)})},Gn={preencode(d,o){e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.length)},encode(d,o){e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.length)},decode:d=>({memberKey:e.fixed32.decode(d),length:e.uint.decode(d)})},Qn=de,Xn={preencode(d,o){e.fixed32.preencode(d,o.memberKey),Zp.preencode(d,o.status),d.end++,o.mailbox&&e.fixed32.preencode(d,o.mailbox),o.roomKey&&e.fixed32.preencode(d,o.roomKey)},encode(d,o){const n=(o.mailbox?1:0)|(o.roomKey?2:0);e.fixed32.encode(d,o.memberKey),Zp.encode(d,o.status),e.uint.encode(d,n),o.mailbox&&e.fixed32.encode(d,o.mailbox),o.roomKey&&e.fixed32.encode(d,o.roomKey)},decode(d){const o=e.fixed32.decode(d),n=Zp.decode(d),c=e.uint.decode(d);return{memberKey:o,status:n,mailbox:1&c?e.fixed32.decode(d):null,roomKey:2&c?e.fixed32.decode(d):null}}},Yn={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.buffer.preencode(d,o.encryptionKey),e.fixed32.preencode(d,o.seed),n.preencode(d,o.initiator),e.fixed32.preencode(d,o.fastForwardTo)},encode(d,o){e.fixed32.encode(d,o.roomKey),e.buffer.encode(d,o.encryptionKey),e.fixed32.encode(d,o.seed),n.encode(d,o.initiator),e.fixed32.encode(d,o.fastForwardTo)},decode:d=>({roomKey:e.fixed32.decode(d),encryptionKey:e.buffer.decode(d),seed:e.fixed32.decode(d),initiator:n.decode(d),fastForwardTo:e.fixed32.decode(d)})},Zn=e.array(e.frame(Yn)),$n=_,_n={preencode(e,d){Zn.preencode(e,d.sharedRooms),$n.preencode(e,d.blockedContacts)},encode(e,d){Zn.encode(e,d.sharedRooms),$n.encode(e,d.blockedContacts)},decode:e=>({sharedRooms:Zn.decode(e),blockedContacts:$n.decode(e)})},ec=gn,dc={preencode(e,d){ec.preencode(e,d.identity)},encode(e,d){ec.encode(e,d.identity)},decode:e=>({identity:ec.decode(e)})},oc={preencode(d,o){e.uint.preencode(d,o.rooms),e.uint.preencode(d,o.contacts)},encode(d,o){e.uint.encode(d,o.rooms),e.uint.encode(d,o.contacts)},decode:d=>({rooms:e.uint.decode(d),contacts:e.uint.decode(d)})},nc={preencode(d,o){e.uint.preencode(d,o.rooms),e.uint.preencode(d,o.contactRequests)},encode(d,o){e.uint.encode(d,o.rooms),e.uint.encode(d,o.contactRequests)},decode:d=>({rooms:e.uint.decode(d),contactRequests:e.uint.decode(d)})},cc={preencode(d,o){e.buffer.preencode(d,o.entropy)},encode(d,o){e.buffer.encode(d,o.entropy)},decode:d=>({entropy:e.buffer.decode(d)})},rc={preencode(d,o){e.fixed32.preencode(d,o.publicKey),e.fixed32.preencode(d,o.devicePublicKey),e.fixed32.preencode(d,o.writerKey)},encode(d,o){e.fixed32.encode(d,o.publicKey),e.fixed32.encode(d,o.devicePublicKey),e.fixed32.encode(d,o.writerKey)},decode:d=>({publicKey:e.fixed32.decode(d),devicePublicKey:e.fixed32.decode(d),writerKey:e.fixed32.decode(d)})},tc=e.frame(rc),ic={preencode(d,c){e.fixed32.preencode(d,c.id),e.fixed32.preencode(d,c.invitationSeed),e.fixed32.preencode(d,c.mailbox),t.preencode(d,c.responseKeyPair),n.preencode(d,c.initiator),n.preencode(d,c.inviter),d.end++,c.identity&&tc.preencode(d,c.identity),o>=5&&c.buildType&&Fp.preencode(d,c.buildType)},encode(d,c){const r=(c.identity?1:0)|(o>=5&&c.buildType?2:0);e.fixed32.encode(d,c.id),e.fixed32.encode(d,c.invitationSeed),e.fixed32.encode(d,c.mailbox),t.encode(d,c.responseKeyPair),n.encode(d,c.initiator),n.encode(d,c.inviter),e.uint.encode(d,r),c.identity&&tc.encode(d,c.identity),o>=5&&c.buildType&&Fp.encode(d,c.buildType)},decode(d){const c=e.fixed32.decode(d),r=e.fixed32.decode(d),i=e.fixed32.decode(d),a=t.decode(d),s=n.decode(d),p=n.decode(d),u=e.uint.decode(d);return{id:c,invitationSeed:r,mailbox:i,responseKeyPair:a,initiator:s,inviter:p,identity:1&u?tc.decode(d):null,buildType:o>=5&&2&u?Fp.decode(d):null}}},ac=oe,sc={preencode(d,o){ac.preencode(d,o.header),e.buffer.preencode(d,o.blindResponse)},encode(d,o){ac.encode(d,o.header),e.buffer.encode(d,o.blindResponse)},decode:d=>({header:ac.decode(d),blindResponse:e.buffer.decode(d)})},pc=oe,uc=e.frame(ic),lc={preencode(e,d){pc.preencode(e,d.header),uc.preencode(e,d.invitation)},encode(e,d){pc.encode(e,d.header),uc.encode(e,d.invitation)},decode:e=>({header:pc.decode(e),invitation:uc.decode(e)})},fc=oe,mc={preencode(d,o){fc.preencode(d,o.header),e.fixed32.preencode(d,o.id)},encode(d,o){fc.encode(d,o.header),e.fixed32.encode(d,o.id)},decode:d=>({header:fc.decode(d),id:e.fixed32.decode(d)})},yc={preencode(d,o){e.fixed32.preencode(d,o.publicKey),e.fixed32.preencode(d,o.devicePublicKey),d.end++,o.privateProfileKey&&e.fixed32.preencode(d,o.privateProfileKey),o.deviceKeyPair&&t.preencode(d,o.deviceKeyPair),e.buffer.preencode(d,o.deviceProof)},encode(d,o){const n=(o.privateProfileKey?1:0)|(o.deviceKeyPair?2:0);e.fixed32.encode(d,o.publicKey),e.fixed32.encode(d,o.devicePublicKey),e.uint.encode(d,n),o.privateProfileKey&&e.fixed32.encode(d,o.privateProfileKey),o.deviceKeyPair&&t.encode(d,o.deviceKeyPair),e.buffer.encode(d,o.deviceProof)},decode(d){const o=e.fixed32.decode(d),n=e.fixed32.decode(d),c=e.uint.decode(d);return{publicKey:o,devicePublicKey:n,privateProfileKey:1&c?e.fixed32.decode(d):null,deviceKeyPair:2&c?t.decode(d):null,deviceProof:e.buffer.decode(d)}}},xc={preencode(d,o){e.fixed32.preencode(d,o.publicKey),e.fixed32.preencode(d,o.writerKey),e.fixed32.preencode(d,o.devicePublicKey),d.end++,o.privateProfileKey&&e.fixed32.preencode(d,o.privateProfileKey)},encode(d,o){const n=o.privateProfileKey?1:0;e.fixed32.encode(d,o.publicKey),e.fixed32.encode(d,o.writerKey),e.fixed32.encode(d,o.devicePublicKey),e.uint.encode(d,n),o.privateProfileKey&&e.fixed32.encode(d,o.privateProfileKey)},decode:d=>({publicKey:e.fixed32.decode(d),writerKey:e.fixed32.decode(d),devicePublicKey:e.fixed32.decode(d),privateProfileKey:1&e.uint.decode(d)?e.fixed32.decode(d):null})},bc={preencode(e,d){e.end++},encode(d,n){const c=(n.isActive?1:0)|(n.isFullyMuted?2:0)|(n.isMentionsOnlyMuted?4:0)|(n.isReadOnly?8:0)|(o>=3&&n.isFavorite?16:0);e.uint.encode(d,c)},decode(d){const n=e.uint.decode(d);return{isActive:!!(1&n),isFullyMuted:!!(2&n),isMentionsOnlyMuted:!!(4&n),isReadOnly:!!(8&n),isFavorite:o>=3&&!!(16&n)}}},vc=e.frame(bc),gc=e.frame(yc),kc=tc,hc={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.buffer.preencode(d,o.encryptionKey),e.fixed32.preencode(d,o.mailbox),vc.preencode(d,o.status),e.uint.preencode(d,o.clock),d.end++,o.initiator&&n.preencode(d,o.initiator),o.fastForwardTo&&e.fixed32.preencode(d,o.fastForwardTo),o.identitySwap&&gc.preencode(d,o.identitySwap),o.identitySwapV2&&kc.preencode(d,o.identitySwapV2),o.contact&&e.fixed32.preencode(d,o.contact)},encode(d,o){const c=(o.initiator?1:0)|(o.fastForwardTo?2:0)|(o.identitySwap?4:0)|(o.identitySwapV2?8:0)|(o.contact?16:0);e.fixed32.encode(d,o.roomKey),e.buffer.encode(d,o.encryptionKey),e.fixed32.encode(d,o.mailbox),vc.encode(d,o.status),e.uint.encode(d,o.clock),e.uint.encode(d,c),o.initiator&&n.encode(d,o.initiator),o.fastForwardTo&&e.fixed32.encode(d,o.fastForwardTo),o.identitySwap&&gc.encode(d,o.identitySwap),o.identitySwapV2&&kc.encode(d,o.identitySwapV2),o.contact&&e.fixed32.encode(d,o.contact)},decode(d){const o=e.fixed32.decode(d),c=e.buffer.decode(d),r=e.fixed32.decode(d),t=vc.decode(d),i=e.uint.decode(d),a=e.uint.decode(d);return{roomKey:o,encryptionKey:c,mailbox:r,status:t,clock:i,initiator:1&a?n.decode(d):null,fastForwardTo:2&a?e.fixed32.decode(d):null,identitySwap:4&a?gc.decode(d):null,identitySwapV2:8&a?kc.decode(d):null,contact:16&a?e.fixed32.decode(d):null}}},Kc=oe,wc={preencode(d,o){Kc.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),e.buffer.preencode(d,o.encryptionKey),e.fixed32.preencode(d,o.mailbox),d.end++,o.fastForwardTo&&e.fixed32.preencode(d,o.fastForwardTo),o.initiator&&n.preencode(d,o.initiator),o.dm&&e.fixed32.preencode(d,o.dm)},encode(d,o){const c=(o.fastForwardTo?1:0)|(o.initiator?2:0)|(o.dm?4:0)|(o.isReadOnly?8:0);Kc.encode(d,o.header),e.fixed32.encode(d,o.roomKey),e.buffer.encode(d,o.encryptionKey),e.fixed32.encode(d,o.mailbox),e.uint.encode(d,c),o.fastForwardTo&&e.fixed32.encode(d,o.fastForwardTo),o.initiator&&n.encode(d,o.initiator),o.dm&&e.fixed32.encode(d,o.dm)},decode(d){const o=Kc.decode(d),c=e.fixed32.decode(d),r=e.buffer.decode(d),t=e.fixed32.decode(d),i=e.uint.decode(d);return{header:o,roomKey:c,encryptionKey:r,mailbox:t,fastForwardTo:1&i?e.fixed32.decode(d):null,initiator:2&i?n.decode(d):null,dm:4&i?e.fixed32.decode(d):null,isReadOnly:!!(8&i)}}},Pc=oe,Rc={preencode(d,o){Pc.preencode(d,o.header),e.fixed32.preencode(d,o.discoveryKey)},encode(d,o){Pc.encode(d,o.header),e.fixed32.encode(d,o.discoveryKey)},decode:d=>({header:Pc.decode(d),discoveryKey:e.fixed32.decode(d)})},Tc=oe,Ac=vc,qc={preencode(d,o){Tc.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),e.uint.preencode(d,o.key),Ac.preencode(d,o.status)},encode(d,o){Tc.encode(d,o.header),e.fixed32.encode(d,o.roomKey),e.uint.encode(d,o.key),Ac.encode(d,o.status)},decode:d=>({header:Tc.decode(d),roomKey:e.fixed32.decode(d),key:e.uint.decode(d),status:Ac.decode(d)})},Mc={preencode(e,d){e.end++},encode(d,o){const n=o.isBlocked?1:0;e.uint.encode(d,n)},decode:d=>({isBlocked:!!(1&e.uint.decode(d))})},Cc={preencode(d,o){e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.clock),$p.preencode(d,o.status),d.end++,o.mailbox&&e.fixed32.preencode(d,o.mailbox),o.roomKey&&e.fixed32.preencode(d,o.roomKey)},encode(d,o){const n=(o.mailbox?1:0)|(o.roomKey?2:0);e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.clock),$p.encode(d,o.status),e.uint.encode(d,n),o.mailbox&&e.fixed32.encode(d,o.mailbox),o.roomKey&&e.fixed32.encode(d,o.roomKey)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d),c=$p.decode(d),r=e.uint.decode(d);return{memberKey:o,clock:n,status:c,mailbox:1&r?e.fixed32.decode(d):null,roomKey:2&r?e.fixed32.decode(d):null}}},Dc=oe,Ic=e.frame(Xn),Sc={preencode(e,d){Dc.preencode(e,d.header),Ic.preencode(e,d.contact)},encode(e,d){Dc.encode(e,d.header),Ic.encode(e,d.contact)},decode:e=>({header:Dc.decode(e),contact:Ic.decode(e)})},Fc=oe,Lc={preencode(d,o){Fc.preencode(d,o.header),e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.key),_p.preencode(d,o.status)},encode(d,o){Fc.encode(d,o.header),e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.key),_p.encode(d,o.status)},decode:d=>({header:Fc.decode(d),memberKey:e.fixed32.decode(d),key:e.uint.decode(d),status:_p.decode(d)})},jc=oe,Ec={preencode(d,o){jc.preencode(d,o.header),e.fixed32.preencode(d,o.memberKey)},encode(d,o){jc.encode(d,o.header),e.fixed32.encode(d,o.memberKey)},decode:d=>({header:jc.decode(d),memberKey:e.fixed32.decode(d)})},Bc=oe,Nc={preencode(d,o){Bc.preencode(d,o.header),e.fixed32.preencode(d,o.memberKey)},encode(d,o){Bc.encode(d,o.header),e.fixed32.encode(d,o.memberKey)},decode:d=>({header:Bc.decode(d),memberKey:e.fixed32.decode(d)})},Oc={preencode(e,d){e.end++},encode(d,o){const n=(o.isPending?1:0)|(o.isAccepted?2:0)|(o.isRejected?4:0)|(o.isDiscarded?8:0)|(o.isSeen?16:0);e.uint.encode(d,n)},decode(d){const o=e.uint.decode(d);return{isPending:!!(1&o),isAccepted:!!(2&o),isRejected:!!(4&o),isDiscarded:!!(8&o),isSeen:!!(16&o)}}},Vc=Pe,Uc=e.frame(i),Jc={preencode(d,o){Vc.preencode(d,o.sender),Uc.preencode(d,o.keys),e.fixed32.preencode(d,o.mailbox),d.end++,o.message&&e.string.preencode(d,o.message)},encode(d,o){const n=o.message?1:0;Vc.encode(d,o.sender),Uc.encode(d,o.keys),e.fixed32.encode(d,o.mailbox),e.uint.encode(d,n),o.message&&e.string.encode(d,o.message)},decode:d=>({sender:Vc.decode(d),keys:Uc.decode(d),mailbox:e.fixed32.decode(d),message:1&e.uint.decode(d)?e.string.decode(d):null})},zc=e.frame(Jc),Wc={preencode(e,d){zc.preencode(e,d.body),ie.preencode(e,d.attestation)},encode(e,d){zc.encode(e,d.body),ie.encode(e,d.attestation)},decode:e=>({body:zc.decode(e),attestation:ie.decode(e)})},Hc=me,Gc=e.frame(Oc),Qc=Uc,Xc={preencode(d,o){e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.clock),Hc.preencode(d,o.sender),Gc.preencode(d,o.status),Qc.preencode(d,o.keys),e.fixed32.preencode(d,o.mailbox),d.end++,o.message&&e.string.preencode(d,o.message),o.sentAt&&e.uint.preencode(d,o.sentAt)},encode(d,o){const n=(o.message?1:0)|(o.sentAt?2:0);e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.clock),Hc.encode(d,o.sender),Gc.encode(d,o.status),Qc.encode(d,o.keys),e.fixed32.encode(d,o.mailbox),e.uint.encode(d,n),o.message&&e.string.encode(d,o.message),o.sentAt&&e.uint.encode(d,o.sentAt)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d),c=Hc.decode(d),r=Gc.decode(d),t=Qc.decode(d),i=e.fixed32.decode(d),a=e.uint.decode(d);return{memberKey:o,clock:n,sender:c,status:r,keys:t,mailbox:i,message:1&a?e.string.decode(d):null,sentAt:2&a?e.uint.decode(d):0}}},Yc=oe,Zc={preencode(d,o){Yc.preencode(d,o.header),e.buffer.preencode(d,o.blindRequest)},encode(d,o){Yc.encode(d,o.header),e.buffer.encode(d,o.blindRequest)},decode:d=>({header:Yc.decode(d),blindRequest:e.buffer.decode(d)})},$c=oe,_c=Gc,er={preencode(d,o){$c.preencode(d,o.header),e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.key),_c.preencode(d,o.status),d.end++,o.roomKey&&e.fixed32.preencode(d,o.roomKey)},encode(d,o){const n=o.roomKey?1:0;$c.encode(d,o.header),e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.key),_c.encode(d,o.status),e.uint.encode(d,n),o.roomKey&&e.fixed32.encode(d,o.roomKey)},decode:d=>({header:$c.decode(d),memberKey:e.fixed32.decode(d),key:e.uint.decode(d),status:_c.decode(d),roomKey:1&e.uint.decode(d)?e.fixed32.decode(d):null})},dr={preencode(d,o){e.uint.preencode(d,o.timestamp),e.fixed32.preencode(d,o.key),e.fixed32.preencode(d,o.mailbox)},encode(d,o){e.uint.encode(d,o.timestamp),e.fixed32.encode(d,o.key),e.fixed32.encode(d,o.mailbox)},decode:d=>({version:e.uint.decode(d),timestamp:e.uint.decode(d),key:e.fixed32.decode(d),mailbox:e.fixed32.decode(d)})},or={preencode(d,o){switch(e.uint.preencode(d,o.version),o.version){case 0:case 1:dr.preencode(d,o);break;default:throw new Error("Unsupported version")}},encode(d,o){switch(e.uint.encode(d,o.version),o.version){case 0:case 1:dr.encode(d,o);break;default:throw new Error("Unsupported version")}},decode(d){const o=d.start,n=e.uint.decode(d);switch(d.start=o,n){case 0:case 1:return dr.decode(d);default:throw new Error("Unsupported version")}}},nr={preencode(d,o){e.fixed32.preencode(d,o.deviceKey),e.fixed32.preencode(d,o.key)},encode(d,o){e.fixed32.encode(d,o.deviceKey),e.fixed32.encode(d,o.key)},decode:d=>({deviceKey:e.fixed32.decode(d),key:e.fixed32.decode(d)})},cr=oe,rr={preencode(d,o){cr.preencode(d,o.header),e.fixed32.preencode(d,o.key)},encode(d,o){cr.encode(d,o.header),e.fixed32.encode(d,o.key)},decode:d=>({header:cr.decode(d),key:e.fixed32.decode(d)})},tr=oe,ir={preencode(d,o){tr.preencode(d,o.header),e.fixed32.preencode(d,o.key)},encode(d,o){tr.encode(d,o.header),e.fixed32.encode(d,o.key)},decode:d=>({header:tr.decode(d),key:e.fixed32.decode(d)})},ar={preencode(e,d){e.end++},encode(d,o){const n=o.disableReadReceipts?1:0;e.uint.encode(d,n)},decode:d=>({disableReadReceipts:!!(1&e.uint.decode(d))})},sr={disableReadReceipts:"disableReadReceipts"},pr={preencode(e,d){e.end++},encode(d,o){if("disableReadReceipts"!==o)throw new Error("Unknown enum");e.uint.encode(d,1)},decode:d=>1===e.uint.decode(d)?"disableReadReceipts":null},ur=oe,lr=e.frame(ar),fr={preencode(e,d){ur.preencode(e,d.header),pr.preencode(e,d.key),lr.preencode(e,d.settings)},encode(e,d){ur.encode(e,d.header),pr.encode(e,d.key),lr.encode(e,d.settings)},decode:e=>({header:ur.decode(e),key:pr.decode(e),settings:lr.decode(e)})},mr={preencode(d,o){e.fixed32.preencode(d,o.discoveryPublicKey),e.uint.preencode(d,o.timestamp),d.end++,o.lastSynced&&e.uint.preencode(d,o.lastSynced)},encode(d,o){const n=(o.lastSynced?1:0)|(o.dirty?2:0);e.fixed32.encode(d,o.discoveryPublicKey),e.uint.encode(d,o.timestamp),e.uint.encode(d,n),o.lastSynced&&e.uint.encode(d,o.lastSynced)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d),c=e.uint.decode(d);return{discoveryPublicKey:o,timestamp:n,lastSynced:1&c?e.uint.decode(d):0,dirty:!!(2&c)}}},yr={preencode(d,o){e.uint.preencode(d,o.rooms),e.uint.preencode(d,o.activeRooms)},encode(d,o){e.uint.encode(d,o.rooms),e.uint.encode(d,o.activeRooms)},decode:d=>({rooms:e.uint.decode(d),activeRooms:e.uint.decode(d)})},xr=I,br=_,vr={preencode(e,d){e.end++,d.blockedMembers&&br.preencode(e,d.blockedMembers)},encode(d,o){const n=o.blockedMembers?1:0;e.uint.encode(d,n),o.blockedMembers&&br.encode(d,o.blockedMembers)},decode:d=>({blockedMembers:1&e.uint.decode(d)?br.decode(d):null})},gr=e.frame(X),kr=e.frame(vr),hr={preencode(d,o){e.buffer.preencode(d,o.encryptionKey),e.fixed32.preencode(d,o.seed),gr.preencode(d,o.capabilities),n.preencode(d,o.initiator),e.fixed32.preencode(d,o.fastForwardTo),d.end++,o.privateProfile&&kr.preencode(d,o.privateProfile)},encode(d,o){const c=o.privateProfile?1:0;e.buffer.encode(d,o.encryptionKey),e.fixed32.encode(d,o.seed),gr.encode(d,o.capabilities),n.encode(d,o.initiator),e.fixed32.encode(d,o.fastForwardTo),e.uint.encode(d,c),o.privateProfile&&kr.encode(d,o.privateProfile)},decode:d=>({encryptionKey:e.buffer.decode(d),seed:e.fixed32.decode(d),capabilities:gr.decode(d),initiator:n.decode(d),fastForwardTo:e.fixed32.decode(d),privateProfile:1&e.uint.decode(d)?kr.decode(d):null})},Kr={preencode(d,o){d.end++,o.count&&e.uint.preencode(d,o.count)},encode(d,o){const n=o.count?1:0;e.uint.encode(d,n),o.count&&e.uint.encode(d,o.count)},decode:d=>({count:1&e.uint.decode(d)?e.uint.decode(d):0})},wr=e.frame(hr),Pr={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.uint.preencode(d,o.priority),d.end++,o.v3&&wr.preencode(d,o.v3),o.timestamp&&e.uint.preencode(d,o.timestamp)},encode(d,o){const n=(o.v3?1:0)|(o.errored?2:0)|(o.timestamp?4:0);e.fixed32.encode(d,o.roomKey),e.uint.encode(d,o.priority),e.uint.encode(d,n),o.v3&&wr.encode(d,o.v3),o.timestamp&&e.uint.encode(d,o.timestamp)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d),c=e.uint.decode(d);return{roomKey:o,priority:n,v3:1&c?wr.decode(d):null,errored:!!(2&c),timestamp:4&c?e.uint.decode(d):0}}},Rr={preencode(e,d){e.end++},encode(d,o){const n=o.isConfirmed?1:0;e.uint.encode(d,n)},decode:d=>({isConfirmed:!!(1&e.uint.decode(d))})},Tr={preencode(d,o){e.fixed32.preencode(d,o.privateProfileKey)},encode(d,o){e.fixed32.encode(d,o.privateProfileKey)},decode:d=>({privateProfileKey:e.fixed32.decode(d)})},Ar=e.frame(Rr),qr=gc,Mr=e.frame(xc),Cr={preencode(d,o){e.fixed32.preencode(d,o.publicKey),e.fixed32.preencode(d,o.privateProfileKey),t.preencode(d,o.deviceKeyPair),e.buffer.preencode(d,o.deviceProof),Ar.preencode(d,o.status),d.end++,o.entropy&&e.buffer.preencode(d,o.entropy),o.swap&&qr.preencode(d,o.swap),o.swapV2&&Mr.preencode(d,o.swapV2)},encode(d,o){const n=(o.entropy?1:0)|(o.swap?2:0)|(o.swapV2?4:0);e.fixed32.encode(d,o.publicKey),e.fixed32.encode(d,o.privateProfileKey),t.encode(d,o.deviceKeyPair),e.buffer.encode(d,o.deviceProof),Ar.encode(d,o.status),e.uint.encode(d,n),o.entropy&&e.buffer.encode(d,o.entropy),o.swap&&qr.encode(d,o.swap),o.swapV2&&Mr.encode(d,o.swapV2)},decode(d){const o=e.fixed32.decode(d),n=e.fixed32.decode(d),c=t.decode(d),r=e.buffer.decode(d),i=Ar.decode(d),a=e.uint.decode(d);return{publicKey:o,privateProfileKey:n,deviceKeyPair:c,deviceProof:r,status:i,entropy:1&a?e.buffer.decode(d):null,swap:2&a?qr.decode(d):null,swapV2:4&a?Mr.decode(d):null}}},Dr={RestoreIdentity:1,CreateRoom:2,LeaveRoom:3,ClearRoom:4,JoinRoomInvitation:5,JoinRoomKeys:6,JoinRoomResponse:7,SendContactRequest:8,TestFastTask:9,TestSlowTask:10,TestErrorTask:11},Ir={preencode(e,d){e.end++},encode(d,o){if(o>11)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},Sr={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.buffer.preencode(d,o.encryptionKey),d.end++,o.fastForwardTo&&e.fixed32.preencode(d,o.fastForwardTo),o.initiator&&n.preencode(d,o.initiator)},encode(d,o){const c=(o.fastForwardTo?1:0)|(o.initiator?2:0);e.fixed32.encode(d,o.roomKey),e.buffer.encode(d,o.encryptionKey),e.uint.encode(d,c),o.fastForwardTo&&e.fixed32.encode(d,o.fastForwardTo),o.initiator&&n.encode(d,o.initiator)},decode(d){const o=e.fixed32.decode(d),c=e.buffer.decode(d),r=e.uint.decode(d);return{roomKey:o,encryptionKey:c,fastForwardTo:1&r?e.fixed32.decode(d):null,initiator:2&r?n.decode(d):null}}},Fr=uc,Lr={preencode(e,d){Fr.preencode(e,d.invitation)},encode(e,d){Fr.encode(e,d.invitation)},decode:e=>({invitation:Fr.decode(e)})},jr={preencode(d,o){e.fixed32.preencode(d,o.mailbox),t.preencode(d,o.keyPair),e.buffer.preencode(d,o.response)},encode(d,o){e.fixed32.encode(d,o.mailbox),t.encode(d,o.keyPair),e.buffer.encode(d,o.response)},decode:d=>({mailbox:e.fixed32.decode(d),keyPair:t.decode(d),response:e.buffer.decode(d)})},Er=de,Br={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.buffer.preencode(d,o.encryptionKey),d.end++,o.fastForwardTo&&e.fixed32.preencode(d,o.fastForwardTo),o.initiator&&n.preencode(d,o.initiator),o.mailbox&&e.fixed32.preencode(d,o.mailbox)},encode(d,o){const c=(o.fastForwardTo?1:0)|(o.initiator?2:0)|(o.mailbox?4:0);e.fixed32.encode(d,o.roomKey),e.buffer.encode(d,o.encryptionKey),e.uint.encode(d,c),o.fastForwardTo&&e.fixed32.encode(d,o.fastForwardTo),o.initiator&&n.encode(d,o.initiator),o.mailbox&&e.fixed32.encode(d,o.mailbox)},decode(d){const o=e.fixed32.decode(d),c=e.buffer.decode(d),r=e.uint.decode(d);return{roomKey:o,encryptionKey:c,fastForwardTo:1&r?e.fixed32.decode(d):null,initiator:2&r?n.decode(d):null,mailbox:4&r?e.fixed32.decode(d):null}}},Nr=e.frame(Br),Or={preencode(e,d){Nr.preencode(e,d.keys)},encode(e,d){Nr.encode(e,d.keys)},decode:e=>({keys:Nr.decode(e)})},Vr=e.frame(Kn),Ur={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.buffer.preencode(d,o.encryptionKey),d.end++,o.fastForwardTo&&e.fixed32.preencode(d,o.fastForwardTo),o.initiator&&n.preencode(d,o.initiator),o.mailbox&&e.fixed32.preencode(d,o.mailbox),o.keyPair&&t.preencode(d,o.keyPair),o.genesis&&Vr.preencode(d,o.genesis)},encode(d,o){const c=(o.fastForwardTo?1:0)|(o.initiator?2:0)|(o.mailbox?4:0)|(o.keyPair?8:0)|(o.genesis?16:0)|(o.isPrivateProfile?32:0);e.fixed32.encode(d,o.roomKey),e.buffer.encode(d,o.encryptionKey),e.uint.encode(d,c),o.fastForwardTo&&e.fixed32.encode(d,o.fastForwardTo),o.initiator&&n.encode(d,o.initiator),o.mailbox&&e.fixed32.encode(d,o.mailbox),o.keyPair&&t.encode(d,o.keyPair),o.genesis&&Vr.encode(d,o.genesis)},decode(d){const o=e.fixed32.decode(d),c=e.buffer.decode(d),r=e.uint.decode(d);return{roomKey:o,encryptionKey:c,fastForwardTo:1&r?e.fixed32.decode(d):null,initiator:2&r?n.decode(d):null,mailbox:4&r?e.fixed32.decode(d):null,keyPair:8&r?t.decode(d):null,genesis:16&r?Vr.decode(d):null,isPrivateProfile:!!(32&r)}}},Jr={preencode(d,o){e.fixed32.preencode(d,o.roomKey),d.end++},encode(d,o){const n=o.isGossiped?1:0;e.fixed32.encode(d,o.roomKey),e.uint.encode(d,n)},decode:d=>({roomKey:e.fixed32.decode(d),isGossiped:!!(1&e.uint.decode(d))})},zr={preencode(d,o){e.fixed32.preencode(d,o.roomKey)},encode(d,o){e.fixed32.encode(d,o.roomKey)},decode:d=>({roomKey:e.fixed32.decode(d)})},Wr={preencode(d,o){e.string.preencode(d,o.mnemonic),d.end++,o.profileDiscoveryTimeout&&e.uint.preencode(d,o.profileDiscoveryTimeout)},encode(d,o){const n=(o.profileDiscoveryTimeout?1:0)|(o.recover?2:0);e.string.encode(d,o.mnemonic),e.uint.encode(d,n),o.profileDiscoveryTimeout&&e.uint.encode(d,o.profileDiscoveryTimeout)},decode(d){const o=e.string.decode(d),n=e.uint.decode(d);return{mnemonic:o,profileDiscoveryTimeout:1&n?e.uint.decode(d):0,recover:!!(2&n)}}},Hr=e.frame(ve),Gr={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.fixed32.preencode(d,o.memberKey),d.end++,o.message&&e.string.preencode(d,o.message),o.contactInfo&&Hr.preencode(d,o.contactInfo)},encode(d,o){const n=(o.message?1:0)|(o.contactInfo?2:0);e.fixed32.encode(d,o.roomKey),e.fixed32.encode(d,o.memberKey),e.uint.encode(d,n),o.message&&e.string.encode(d,o.message),o.contactInfo&&Hr.encode(d,o.contactInfo)},decode(d){const o=e.fixed32.decode(d),n=e.fixed32.decode(d),c=e.uint.decode(d);return{roomKey:o,memberKey:n,message:1&c?e.string.decode(d):null,contactInfo:2&c?Hr.decode(d):null}}},Qr={preencode(d,o){e.fixed32.preencode(d,o.key),d.end++},encode(d,o){const n=o.isPrivateProfile?1:0;e.fixed32.encode(d,o.key),e.uint.encode(d,n)},decode:d=>({key:e.fixed32.decode(d),isPrivateProfile:!!(1&e.uint.decode(d))})},Xr=e.frame(Wr),Yr=e.frame(Ur),Zr=e.frame(Jr),$r=e.frame(zr),_r=e.frame(Lr),et=e.frame(Or),dt=e.frame(jr),ot=e.frame(Gr),nt=e.frame(Qr),ct={preencode(d,o){const n=(o.restoreIdentity?1:0)|(o.createRoom?2:0)|(o.leaveRoom?4:0)|(o.clearRoom?8:0)|(o.joinRoomInvitation?16:0)|(o.joinRoomKeys?32:0)|(o.joinRoomResponse?64:0)|(o.sendContactRequest?128:0)|(o.migrateV2Room?256:0);e.fixed32.preencode(d,o.discoveryKey),e.uint.preencode(d,o.priority),e.uint.preencode(d,o.timestamp),e.uint.preencode(d,o.type),e.uint.preencode(d,n),o.restoreIdentity&&Xr.preencode(d,o.restoreIdentity),o.createRoom&&Yr.preencode(d,o.createRoom),o.leaveRoom&&Zr.preencode(d,o.leaveRoom),o.clearRoom&&$r.preencode(d,o.clearRoom),o.joinRoomInvitation&&_r.preencode(d,o.joinRoomInvitation),o.joinRoomKeys&&et.preencode(d,o.joinRoomKeys),o.joinRoomResponse&&dt.preencode(d,o.joinRoomResponse),o.sendContactRequest&&ot.preencode(d,o.sendContactRequest),o.migrateV2Room&&nt.preencode(d,o.migrateV2Room)},encode(d,o){const n=(o.restoreIdentity?1:0)|(o.createRoom?2:0)|(o.leaveRoom?4:0)|(o.clearRoom?8:0)|(o.joinRoomInvitation?16:0)|(o.joinRoomKeys?32:0)|(o.joinRoomResponse?64:0)|(o.sendContactRequest?128:0)|(o.migrateV2Room?256:0);e.fixed32.encode(d,o.discoveryKey),e.uint.encode(d,o.priority),e.uint.encode(d,o.timestamp),e.uint.encode(d,o.type),e.uint.encode(d,n),o.restoreIdentity&&Xr.encode(d,o.restoreIdentity),o.createRoom&&Yr.encode(d,o.createRoom),o.leaveRoom&&Zr.encode(d,o.leaveRoom),o.clearRoom&&$r.encode(d,o.clearRoom),o.joinRoomInvitation&&_r.encode(d,o.joinRoomInvitation),o.joinRoomKeys&&et.encode(d,o.joinRoomKeys),o.joinRoomResponse&&dt.encode(d,o.joinRoomResponse),o.sendContactRequest&&ot.encode(d,o.sendContactRequest),o.migrateV2Room&&nt.encode(d,o.migrateV2Room)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d),c=e.uint.decode(d),r=e.uint.decode(d),t=e.uint.decode(d);return{discoveryKey:o,priority:n,timestamp:c,type:r,restoreIdentity:1&t?Xr.decode(d):null,createRoom:2&t?Yr.decode(d):null,leaveRoom:4&t?Zr.decode(d):null,clearRoom:8&t?$r.decode(d):null,joinRoomInvitation:16&t?_r.decode(d):null,joinRoomKeys:32&t?et.decode(d):null,joinRoomResponse:64&t?dt.decode(d):null,sendContactRequest:128&t?ot.decode(d):null,migrateV2Room:256&t?nt.decode(d):null}}},rt=Je,tt={preencode(d,o){e.buffer.preencode(d,o.seed),rt.preencode(d,o.invitation)},encode(d,o){e.buffer.encode(d,o.seed),rt.encode(d,o.invitation)},decode:d=>({seed:e.buffer.decode(d),invitation:rt.decode(d)})},it={preencode(e,d){e.end++},encode(d,o){const n=(o.isWritable?1:0)|(o.isReadable?2:0)|(o.isPrivateProfile?4:0)|(o.isRemoved?8:0);e.uint.encode(d,n)},decode(d){const o=e.uint.decode(d);return{isWritable:!!(1&o),isReadable:!!(2&o),isPrivateProfile:!!(4&o),isRemoved:!!(8&o)}}},at={preencode(d,o){e.uint.preencode(d,o.creation),e.uint.preencode(d,o.latestSync),e.uint.preencode(d,o.latestChatMessage)},encode(d,o){e.uint.encode(d,o.creation),e.uint.encode(d,o.latestSync),e.uint.encode(d,o.latestChatMessage)},decode:d=>({creation:e.uint.decode(d),latestSync:e.uint.decode(d),latestChatMessage:e.uint.decode(d)})},st=xn,pt=Mo,ut=e.frame(at),lt=gr,ft=e.frame(it),mt=e.frame(ue),yt=e.frame(wd),xt=sn,bt=gn,vt=e.frame(Bo),gt=_,kt=e.array(e.frame(Gn)),ht=e.frame(kd),Kt=vc,wt={preencode(d,n){const c=(n.selfDevice?1:0)|(n.selfMember?2:0)|(n.config?4:0)|(n.identity?8:0)|(n.lastMessage?16:0)|(n.dm?32:0)|(n.readLengths?64:0)|(n.lastMember?128:0)|(n.version?256:0)|(o>=3&&n.preferences?512:0)|(o>=4&&n.activeCall?1024:0);e.fixed32.preencode(d,n.roomKey),e.fixed32.preencode(d,n.discoveryKey),e.buffer.preencode(d,n.encryptionKey),st.preencode(d,n.digest),pt.preencode(d,n.stats),ut.preencode(d,n.timestamps),e.uint.preencode(d,n.fork),e.uint.preencode(d,n.length),e.fixed32.preencode(d,n.seed),lt.preencode(d,n.capabilities),ft.preencode(d,n.status),e.uint.preencode(d,c),n.selfDevice&&mt.preencode(d,n.selfDevice),n.selfMember&&yt.preencode(d,n.selfMember),n.config&&xt.preencode(d,n.config),n.identity&&bt.preencode(d,n.identity),n.lastMessage&&vt.preencode(d,n.lastMessage),n.dm&&gt.preencode(d,n.dm),n.readLengths&&kt.preencode(d,n.readLengths),n.lastMember&&ht.preencode(d,n.lastMember),n.version&&e.uint.preencode(d,n.version),o>=3&&n.preferences&&Kt.preencode(d,n.preferences),o>=4&&n.activeCall&&eu.preencode(d,n.activeCall)},encode(d,n){const c=(n.selfDevice?1:0)|(n.selfMember?2:0)|(n.config?4:0)|(n.identity?8:0)|(n.lastMessage?16:0)|(n.dm?32:0)|(n.readLengths?64:0)|(n.lastMember?128:0)|(n.version?256:0)|(o>=3&&n.preferences?512:0)|(o>=4&&n.activeCall?1024:0);e.fixed32.encode(d,n.roomKey),e.fixed32.encode(d,n.discoveryKey),e.buffer.encode(d,n.encryptionKey),st.encode(d,n.digest),pt.encode(d,n.stats),ut.encode(d,n.timestamps),e.uint.encode(d,n.fork),e.uint.encode(d,n.length),e.fixed32.encode(d,n.seed),lt.encode(d,n.capabilities),ft.encode(d,n.status),e.uint.encode(d,c),n.selfDevice&&mt.encode(d,n.selfDevice),n.selfMember&&yt.encode(d,n.selfMember),n.config&&xt.encode(d,n.config),n.identity&&bt.encode(d,n.identity),n.lastMessage&&vt.encode(d,n.lastMessage),n.dm&&gt.encode(d,n.dm),n.readLengths&&kt.encode(d,n.readLengths),n.lastMember&&ht.encode(d,n.lastMember),n.version&&e.uint.encode(d,n.version),o>=3&&n.preferences&&Kt.encode(d,n.preferences),o>=4&&n.activeCall&&eu.encode(d,n.activeCall)},decode(d){const n=e.fixed32.decode(d),c=e.fixed32.decode(d),r=e.buffer.decode(d),t=st.decode(d),i=pt.decode(d),a=ut.decode(d),s=e.uint.decode(d),p=e.uint.decode(d),u=e.fixed32.decode(d),l=lt.decode(d),f=ft.decode(d),m=e.uint.decode(d);return{roomKey:n,discoveryKey:c,encryptionKey:r,digest:t,stats:i,timestamps:a,fork:s,length:p,seed:u,capabilities:l,status:f,selfDevice:1&m?mt.decode(d):null,selfMember:2&m?yt.decode(d):null,config:4&m?xt.decode(d):null,identity:8&m?bt.decode(d):null,lastMessage:16&m?vt.decode(d):null,dm:32&m?gt.decode(d):null,readLengths:64&m?kt.decode(d):null,lastMember:128&m?ht.decode(d):null,version:256&m?e.uint.decode(d):0,preferences:o>=3&&512&m?Kt.decode(d):null,activeCall:o>=4&&1024&m?eu.decode(d):null}}},Pt=vc,Rt={preencode(d,o){e.fixed32.preencode(d,o.roomKey),Pt.preencode(d,o.status)},encode(d,o){e.fixed32.encode(d,o.roomKey),Pt.encode(d,o.status)},decode:d=>({roomKey:e.fixed32.decode(d),status:Pt.decode(d)})},Tt={preencode(d,o){e.fixed32.preencode(d,o.roomKey),d.end++,o.repairs&&e.uint.preencode(d,o.repairs)},encode(d,o){const n=o.repairs?1:0;e.fixed32.encode(d,o.roomKey),e.uint.encode(d,n),o.repairs&&e.uint.encode(d,o.repairs)},decode:d=>({roomKey:e.fixed32.decode(d),repairs:1&e.uint.decode(d)?e.uint.decode(d):0})},At={preencode(d,o){e.fixed32.preencode(d,o.mailbox),e.fixed32.preencode(d,o.key),d.end++,o.roomKey&&e.fixed32.preencode(d,o.roomKey),o.keyPair&&t.preencode(d,o.keyPair),o.responseKeyPair&&t.preencode(d,o.responseKeyPair)},encode(d,o){const n=(o.roomKey?1:0)|(o.keyPair?2:0)|(o.responseKeyPair?4:0);e.fixed32.encode(d,o.mailbox),e.fixed32.encode(d,o.key),e.uint.encode(d,n),o.roomKey&&e.fixed32.encode(d,o.roomKey),o.keyPair&&t.encode(d,o.keyPair),o.responseKeyPair&&t.encode(d,o.responseKeyPair)},decode(d){const o=e.fixed32.decode(d),n=e.fixed32.decode(d),c=e.uint.decode(d);return{mailbox:o,key:n,roomKey:1&c?e.fixed32.decode(d):null,keyPair:2&c?t.decode(d):null,responseKeyPair:4&c?t.decode(d):null}}},qt={preencode(d,o){e.fixed32.preencode(d,o.key),e.fixed32.preencode(d,o.responsePublicKey)},encode(d,o){e.fixed32.encode(d,o.key),e.fixed32.encode(d,o.responsePublicKey)},decode:d=>({key:e.fixed32.decode(d),responsePublicKey:e.fixed32.decode(d)})},Mt=me,Ct={preencode(d,o){e.fixed32.preencode(d,o.key),Mt.preencode(d,o.profile)},encode(d,o){e.fixed32.encode(d,o.key),Mt.encode(d,o.profile)},decode:d=>({key:e.fixed32.decode(d),profile:Mt.decode(d)})},Dt=mt,It={preencode(d,o){e.fixed32.preencode(d,o.roomKey),Dt.preencode(d,o.device)},encode(d,o){e.fixed32.encode(d,o.roomKey),Dt.encode(d,o.device)},decode:d=>({roomKey:e.fixed32.decode(d),device:Dt.decode(d)})},St=h,Ft={preencode(d,n){St.preencode(d,n.file),e.fixed32.preencode(d,n.roomKey),d.end++,n.encryptionKey&&e.buffer.preencode(d,n.encryptionKey),o>=4&&n.lastAccessed&&e.uint.preencode(d,n.lastAccessed),o>=4&&n.version&&e.uint.preencode(d,n.version)},encode(d,n){const c=(n.encryptionKey?1:0)|(n.cleared?2:0)|(n.own?4:0)|(o>=4&&n.lastAccessed?8:0)|(o>=4&&n.version?16:0);St.encode(d,n.file),e.fixed32.encode(d,n.roomKey),e.uint.encode(d,c),n.encryptionKey&&e.buffer.encode(d,n.encryptionKey),o>=4&&n.lastAccessed&&e.uint.encode(d,n.lastAccessed),o>=4&&n.version&&e.uint.encode(d,n.version)},decode(d){const n=St.decode(d),c=e.fixed32.decode(d),r=e.uint.decode(d);return{file:n,roomKey:c,encryptionKey:1&r?e.buffer.decode(d):null,cleared:!!(2&r),own:!!(4&r),lastAccessed:o>=4&&8&r?e.uint.decode(d):0,version:o>=4&&16&r?e.uint.decode(d):0}}},Lt={preencode(d,o){d.end++,o.key&&e.string.preencode(d,o.key),o.description&&e.string.preencode(d,o.description)},encode(d,o){const n=(o.key?1:0)|(o.value?2:0)|(o.description?4:0);e.uint.encode(d,n),o.key&&e.string.encode(d,o.key),o.description&&e.string.encode(d,o.description)},decode(d){const o=e.uint.decode(d);return{key:1&o?e.string.decode(d):null,value:!!(2&o),description:4&o?e.string.decode(d):null}}},jt=e.array(e.frame(Lt)),Et={preencode(e,d){e.end++,d.flags&&jt.preencode(e,d.flags)},encode(d,o){const n=o.flags?1:0;e.uint.encode(d,n),o.flags&&jt.encode(d,o.flags)},decode:d=>({flags:1&e.uint.decode(d)?jt.decode(d):null})},Bt=dd,Nt={preencode(d,o){d.end++,o.nodes&&Bt.preencode(d,o.nodes),o.concurrency&&e.uint.preencode(d,o.concurrency),o.maxWindow&&e.uint.preencode(d,o.maxWindow),o.randomPunchInterval&&e.uint.preencode(d,o.randomPunchInterval),o.connectionKeepAlive&&e.uint.preencode(d,o.connectionKeepAlive)},encode(d,o){const n=(o.nodes?1:0)|(o.concurrency?2:0)|(o.maxWindow?4:0)|(o.randomPunchInterval?8:0)|(o.connectionKeepAlive?16:0);e.uint.encode(d,n),o.nodes&&Bt.encode(d,o.nodes),o.concurrency&&e.uint.encode(d,o.concurrency),o.maxWindow&&e.uint.encode(d,o.maxWindow),o.randomPunchInterval&&e.uint.encode(d,o.randomPunchInterval),o.connectionKeepAlive&&e.uint.encode(d,o.connectionKeepAlive)},decode(d){const o=e.uint.decode(d);return{nodes:1&o?Bt.decode(d):null,concurrency:2&o?e.uint.decode(d):0,maxWindow:4&o?e.uint.decode(d):0,randomPunchInterval:8&o?e.uint.decode(d):0,connectionKeepAlive:16&o?e.uint.decode(d):0}}},Ot={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.uint.preencode(d,o.count)},encode(d,o){e.fixed32.encode(d,o.roomKey),e.uint.encode(d,o.count)},decode:d=>({roomKey:e.fixed32.decode(d),count:e.uint.decode(d)})},Vt={preencode(d,o){d.end++,o.roomKey&&e.fixed32.preencode(d,o.roomKey),o.coreKey&&e.fixed32.preencode(d,o.coreKey)},encode(d,o){const n=(o.roomKey?1:0)|(o.coreKey?2:0);e.uint.encode(d,n),o.roomKey&&e.fixed32.encode(d,o.roomKey),o.coreKey&&e.fixed32.encode(d,o.coreKey)},decode(d){const o=e.uint.decode(d);return{roomKey:1&o?e.fixed32.decode(d):null,coreKey:2&o?e.fixed32.decode(d):null}}},Ut=e.frame(Vt),Jt={preencode(d,o){e.string.preencode(d,o.code),e.string.preencode(d,o.message),e.string.preencode(d,o.stack),e.uint.preencode(d,o.timestamp),d.end++,o.details&&Ut.preencode(d,o.details)},encode(d,o){const n=o.details?1:0;e.string.encode(d,o.code),e.string.encode(d,o.message),e.string.encode(d,o.stack),e.uint.encode(d,o.timestamp),e.uint.encode(d,n),o.details&&Ut.encode(d,o.details)},decode:d=>({code:e.string.decode(d),message:e.string.decode(d),stack:e.string.decode(d),timestamp:e.uint.decode(d),details:1&e.uint.decode(d)?Ut.decode(d):null})},zt={RESUME:1,WAKEUP:2,PRESUSPEND:3,SUSPEND:4},Wt={preencode(e,d){e.end++},encode(d,o){if(o>4)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},Ht={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.uint.preencode(d,o.total)},encode(d,o){e.fixed32.encode(d,o.roomKey),e.uint.encode(d,o.total)},decode:d=>({roomKey:e.fixed32.decode(d),total:e.uint.decode(d)})},Gt=a,Qt={preencode(d,o){e.uint.preencode(d,o.duration)},encode(d,o){e.uint.encode(d,o.duration)},decode:d=>({duration:e.uint.decode(d)})},Xt=j,Yt=j,Zt=e.frame(Gt),$t={preencode(e,d){Zt.preencode(e,d.header)},encode(e,d){Zt.encode(e,d.header)},decode:e=>({header:Zt.decode(e)})},_t=e.frame(Qt),ei={preencode(e,d){_t.preencode(e,d.header)},encode(e,d){_t.encode(e,d.header)},decode:e=>({header:_t.decode(e)})},di=Zt,oi={preencode(e,d){di.preencode(e,d.header)},encode(e,d){di.encode(e,d.header)},decode:e=>({header:di.decode(e)})},ni=j,ci=Zt,ri=sn,ti=H,ii={preencode(e,d){ci.preencode(e,d.header),e.end++,d.config&&ri.preencode(e,d.config),d.settings&&ti.preencode(e,d.settings)},encode(d,o){const n=(o.config?1:0)|(o.settings?2:0);ci.encode(d,o.header),e.uint.encode(d,n),o.config&&ri.encode(d,o.config),o.settings&&ti.encode(d,o.settings)},decode(d){const o=ci.decode(d),n=e.uint.decode(d);return{header:o,config:1&n?ri.decode(d):null,settings:2&n?ti.decode(d):null}}},ai=_t,si={preencode(d,o){ai.preencode(d,o.header),d.end++,o.roomKey&&e.fixed32.preencode(d,o.roomKey)},encode(d,o){const n=o.roomKey?1:0;ai.encode(d,o.header),e.uint.encode(d,n),o.roomKey&&e.fixed32.encode(d,o.roomKey)},decode:d=>({header:ai.decode(d),roomKey:1&e.uint.decode(d)?e.fixed32.decode(d):null})},pi=Zt,ui={preencode(d,o){pi.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey)},encode(d,o){pi.encode(d,o.header),e.fixed32.encode(d,o.roomKey)},decode:d=>({header:pi.decode(d),roomKey:e.fixed32.decode(d)})},li=Zt,fi={preencode(d,o){li.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey)},encode(d,o){li.encode(d,o.header),e.fixed32.encode(d,o.roomKey)},decode:d=>({header:li.decode(d),roomKey:e.fixed32.decode(d)})},mi=Zt,yi={preencode(d,o){mi.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey)},encode(d,o){mi.encode(d,o.header),e.fixed32.encode(d,o.roomKey)},decode:d=>({header:mi.decode(d),roomKey:e.fixed32.decode(d)})},xi=_t,bi={preencode(e,d){xi.preencode(e,d.header)},encode(e,d){xi.encode(e,d.header)},decode:e=>({header:xi.decode(e)})},vi=Zt,gi=sn,ki={preencode(d,o){vi.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),e.uint.preencode(d,o.key),gi.preencode(d,o.config)},encode(d,o){vi.encode(d,o.header),e.fixed32.encode(d,o.roomKey),e.uint.encode(d,o.key),gi.encode(d,o.config)},decode:d=>({header:vi.decode(d),roomKey:e.fixed32.decode(d),key:e.uint.decode(d),config:gi.decode(d)})},hi=Zt,Ki=H,wi={preencode(d,o){hi.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),e.uint.preencode(d,o.key),Ki.preencode(d,o.settings)},encode(d,o){hi.encode(d,o.header),e.fixed32.encode(d,o.roomKey),e.uint.encode(d,o.key),Ki.encode(d,o.settings)},decode:d=>({header:hi.decode(d),roomKey:e.fixed32.decode(d),key:e.uint.decode(d),settings:Ki.decode(d)})},Pi=Zt,Ri=vc,Ti={preencode(d,o){Pi.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),e.uint.preencode(d,o.key),Ri.preencode(d,o.status)},encode(d,o){Pi.encode(d,o.header),e.fixed32.encode(d,o.roomKey),e.uint.encode(d,o.key),Ri.encode(d,o.status)},decode:d=>({header:Pi.decode(d),roomKey:e.fixed32.decode(d),key:e.uint.decode(d),status:Ri.decode(d)})},Ai=Zt,qi=Oo,Mi={preencode(d,o){Ai.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),qi.preencode(d,o.message)},encode(d,o){Ai.encode(d,o.header),e.fixed32.encode(d,o.roomKey),qi.encode(d,o.message)},decode:d=>({header:Ai.decode(d),roomKey:e.fixed32.decode(d),message:qi.decode(d)})},Ci=_t,Di={preencode(e,d){Ci.preencode(e,d.header)},encode(e,d){Ci.encode(e,d.header)},decode:e=>({header:Ci.decode(e)})},Ii=Zt,Si=Oo,Fi={preencode(d,o){Ii.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),c.preencode(d,o.id),Si.preencode(d,o.message)},encode(d,o){Ii.encode(d,o.header),e.fixed32.encode(d,o.roomKey),c.encode(d,o.id),Si.encode(d,o.message)},decode:d=>({header:Ii.decode(d),roomKey:e.fixed32.decode(d),id:c.decode(d),message:Si.decode(d)})},Li=_t,ji={preencode(e,d){Li.preencode(e,d.header)},encode(e,d){Li.encode(e,d.header)},decode:e=>({header:Li.decode(e)})},Ei=Zt,Bi={preencode(d,o){Ei.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),c.preencode(d,o.id)},encode(d,o){Ei.encode(d,o.header),e.fixed32.encode(d,o.roomKey),c.encode(d,o.id)},decode:d=>({header:Ei.decode(d),roomKey:e.fixed32.decode(d),id:c.decode(d)})},Ni=_t,Oi={preencode(e,d){Ni.preencode(e,d.header)},encode(e,d){Ni.encode(e,d.header)},decode:e=>({header:Ni.decode(e)})},Vi=Zt,Ui={preencode(d,o){Vi.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),c.preencode(d,o.id),e.string.preencode(d,o.reaction)},encode(d,o){Vi.encode(d,o.header),e.fixed32.encode(d,o.roomKey),c.encode(d,o.id),e.string.encode(d,o.reaction)},decode:d=>({header:Vi.decode(d),roomKey:e.fixed32.decode(d),id:c.decode(d),reaction:e.string.decode(d)})},Ji=_t,zi={preencode(e,d){Ji.preencode(e,d.header)},encode(e,d){Ji.encode(e,d.header)},decode:e=>({header:Ji.decode(e)})},Wi=Zt,Hi={preencode(d,o){Wi.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),c.preencode(d,o.id),e.string.preencode(d,o.reaction)},encode(d,o){Wi.encode(d,o.header),e.fixed32.encode(d,o.roomKey),c.encode(d,o.id),e.string.encode(d,o.reaction)},decode:d=>({header:Wi.decode(d),roomKey:e.fixed32.decode(d),id:c.decode(d),reaction:e.string.decode(d)})},Gi=_t,Qi={preencode(e,d){Gi.preencode(e,d.header)},encode(e,d){Gi.encode(e,d.header)},decode:e=>({header:Gi.decode(e)})},Xi={preencode(d,o){e.uint.preencode(d,o.clock),e.uint.preencode(d,o.start),e.uint.preencode(d,o.end)},encode(d,o){e.uint.encode(d,o.clock),e.uint.encode(d,o.start),e.uint.encode(d,o.end)},decode:d=>({clock:e.uint.decode(d),start:e.uint.decode(d),end:e.uint.decode(d)})},Yi=j,Zi=_,$i={preencode(d,o){e.uint.preencode(d,o.clock),Zi.preencode(d,o.keys)},encode(d,o){e.uint.encode(d,o.clock),Zi.encode(d,o.keys)},decode:d=>({clock:e.uint.decode(d),keys:Zi.decode(d)})},_i={preencode(d,o){e.uint.preencode(d,o.clock),e.fixed32.preencode(d,o.roomKey),d.end++,o.start&&e.uint.preencode(d,o.start),o.size&&e.uint.preencode(d,o.size)},encode(d,o){const n=(o.start?1:0)|(o.size?2:0)|(o.isBottom?4:0);e.uint.encode(d,o.clock),e.fixed32.encode(d,o.roomKey),e.uint.encode(d,n),o.start&&e.uint.encode(d,o.start),o.size&&e.uint.encode(d,o.size)},decode(d){const o=e.uint.decode(d),n=e.fixed32.decode(d),c=e.uint.decode(d);return{clock:o,roomKey:n,start:1&c?e.uint.decode(d):0,size:2&c?e.uint.decode(d):0,isBottom:!!(4&c)}}},ea=j,da={preencode(d,o){e.uint.preencode(d,o.clock),e.fixed32.preencode(d,o.roomKey),d.end++,o.offset&&e.fixed32.preencode(d,o.offset),o.count&&e.uint.preencode(d,o.count)},encode(d,o){const n=(o.offset?1:0)|(o.count?2:0);e.uint.encode(d,o.clock),e.fixed32.encode(d,o.roomKey),e.uint.encode(d,n),o.offset&&e.fixed32.encode(d,o.offset),o.count&&e.uint.encode(d,o.count)},decode(d){const o=e.uint.decode(d),n=e.fixed32.decode(d),c=e.uint.decode(d);return{clock:o,roomKey:n,offset:1&c?e.fixed32.decode(d):null,count:2&c?e.uint.decode(d):0}}},oa=j,na={preencode(d,o){e.uint.preencode(d,o.timestamp),e.fixed32.preencode(d,o.id)},encode(d,o){e.uint.encode(d,o.timestamp),e.fixed32.encode(d,o.id)},decode:d=>({timestamp:e.uint.decode(d),id:e.fixed32.decode(d)})},ca={Changed:1,Removed:2},ra={preencode(e,d){e.end++},encode(d,o){if(o>2)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},ta=_,ia={preencode(d,o){ta.preencode(d,o.keys),e.uint.preencode(d,o.start),e.uint.preencode(d,o.end),e.uint.preencode(d,o.total)},encode(d,o){ta.encode(d,o.keys),e.uint.encode(d,o.start),e.uint.encode(d,o.end),e.uint.encode(d,o.total)},decode:d=>({keys:ta.decode(d),start:e.uint.decode(d),end:e.uint.decode(d),total:e.uint.decode(d)})},aa={preencode(e,d){ra.preencode(e,d.type),na.preencode(e,d.room)},encode(e,d){ra.encode(e,d.type),na.encode(e,d.room)},decode:e=>({type:ra.decode(e),room:na.decode(e)})},sa=ft,pa=vd,ua={preencode(e,d){sa.preencode(e,d.device),e.end++,d.member&&pa.preencode(e,d.member)},encode(d,o){const n=o.member?1:0;sa.encode(d,o.device),e.uint.encode(d,n),o.member&&pa.encode(d,o.member)},decode:d=>({device:sa.decode(d),member:1&e.uint.decode(d)?pa.decode(d):null})},la=e.frame(ua),fa=xn,ma=sn,ya={preencode(d,o){e.fixed32.preencode(d,o.id),la.preencode(d,o.role),fa.preencode(d,o.digest),ma.preencode(d,o.config),d.end++,o.messageId&&c.preencode(d,o.messageId)},encode(d,o){const n=o.messageId?1:0;e.fixed32.encode(d,o.id),la.encode(d,o.role),fa.encode(d,o.digest),ma.encode(d,o.config),e.uint.encode(d,n),o.messageId&&c.encode(d,o.messageId)},decode:d=>({id:e.fixed32.decode(d),role:la.decode(d),digest:fa.decode(d),config:ma.decode(d),messageId:1&e.uint.decode(d)?c.decode(d):null})},xa=ft,ba={preencode(d,o){e.fixed32.preencode(d,o.id),xa.preencode(d,o.status)},encode(d,o){e.fixed32.encode(d,o.id),xa.encode(d,o.status)},decode:d=>({id:e.fixed32.decode(d),status:xa.decode(d)})},va=xn,ga={preencode(d,o){e.fixed32.preencode(d,o.id),va.preencode(d,o.digest)},encode(d,o){e.fixed32.encode(d,o.id),va.encode(d,o.digest)},decode:d=>({id:e.fixed32.decode(d),digest:va.decode(d)})},ka=sn,ha={preencode(d,o){e.fixed32.preencode(d,o.id),ka.preencode(d,o.config)},encode(d,o){e.fixed32.encode(d,o.id),ka.encode(d,o.config)},decode:d=>({id:e.fixed32.decode(d),config:ka.decode(d)})},Ka=la,wa={preencode(d,o){e.fixed32.preencode(d,o.id),d.end++,o.role&&Ka.preencode(d,o.role)},encode(d,o){const n=o.role?1:0;e.fixed32.encode(d,o.id),e.uint.encode(d,n),o.role&&Ka.encode(d,o.role)},decode:d=>({id:e.fixed32.decode(d),role:1&e.uint.decode(d)?Ka.decode(d):null})},Pa={preencode(d,o){e.fixed32.preencode(d,o.id),c.preencode(d,o.lastMessage)},encode(d,o){e.fixed32.encode(d,o.id),c.encode(d,o.lastMessage)},decode:d=>({id:e.fixed32.decode(d),lastMessage:c.decode(d)})},Ra=me,Ta={preencode(d,o){e.fixed32.preencode(d,o.key),Ra.preencode(d,o.profile)},encode(d,o){e.fixed32.encode(d,o.key),Ra.encode(d,o.profile)},decode:d=>({key:e.fixed32.decode(d),profile:Ra.decode(d)})},Aa=se,qa={preencode(d,o){e.fixed32.preencode(d,o.key),Aa.preencode(d,o.status),du.preencode(d,o.profile)},encode(d,o){e.fixed32.encode(d,o.key),Aa.encode(d,o.status),du.encode(d,o.profile)},decode:d=>({key:e.fixed32.decode(d),status:Aa.decode(d),profile:du.decode(d)})},Ma={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.fixed32.preencode(d,o.key)},encode(d,o){e.fixed32.encode(d,o.roomKey),e.fixed32.encode(d,o.key)},decode:d=>({roomKey:e.fixed32.decode(d),key:e.fixed32.decode(d)})},Ca=Ma,Da=e.array(c),Ia={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.uint.preencode(d,o.start),e.uint.preencode(d,o.size),e.uint.preencode(d,o.total),Da.preencode(d,o.ids),d.end++},encode(d,o){const n=o.isBottom?1:0;e.fixed32.encode(d,o.roomKey),e.uint.encode(d,o.start),e.uint.encode(d,o.size),e.uint.encode(d,o.total),Da.encode(d,o.ids),e.uint.encode(d,n)},decode:d=>({roomKey:e.fixed32.decode(d),start:e.uint.decode(d),size:e.uint.decode(d),total:e.uint.decode(d),ids:Da.decode(d),isBottom:!!(1&e.uint.decode(d))})},Sa={preencode(d,o){e.uint.preencode(d,o.sent),d.end++,o.edited&&e.uint.preencode(d,o.edited)},encode(d,o){const n=o.edited?1:0;e.uint.encode(d,o.sent),e.uint.encode(d,n),o.edited&&e.uint.encode(d,o.edited)},decode:d=>({sent:e.uint.decode(d),edited:1&e.uint.decode(d)?e.uint.decode(d):0})},Fa=e.frame(Sa),La=Do,ja=Io,Ea=So,Ba={preencode(d,o){c.preencode(d,o.id),e.uint.preencode(d,o.clock),Fa.preencode(d,o.timestamps),La.preencode(d,o.status),d.end++,o.message&&ja.preencode(d,o.message),o.event&&Ea.preencode(d,o.event)},encode(d,o){const n=(o.message?1:0)|(o.event?2:0);c.encode(d,o.id),e.uint.encode(d,o.clock),Fa.encode(d,o.timestamps),La.encode(d,o.status),e.uint.encode(d,n),o.message&&ja.encode(d,o.message),o.event&&Ea.encode(d,o.event)},decode(d){const o=c.decode(d),n=e.uint.decode(d),r=Fa.decode(d),t=La.decode(d),i=e.uint.decode(d);return{id:o,clock:n,timestamps:r,status:t,message:1&i?ja.decode(d):null,event:2&i?Ea.decode(d):null}}},Na=e.frame(Ba),Oa=vd,Va={preencode(d,o){Na.preencode(d,o.chat),e.fixed32.preencode(d,o.memberKey),Oa.preencode(d,o.role)},encode(d,o){Na.encode(d,o.chat),e.fixed32.encode(d,o.memberKey),Oa.encode(d,o.role)},decode:d=>({chat:Na.decode(d),memberKey:e.fixed32.decode(d),role:Oa.decode(d)})},Ua=Na,Ja={preencode(e,d){Ua.preencode(e,d.chat)},encode(e,d){Ua.encode(e,d.chat)},decode:e=>({chat:Ua.decode(e)})},za=Da,Wa={preencode(d,o){za.preencode(d,o.ids),e.fixed32.preencode(d,o.memberKey)},encode(d,o){za.encode(d,o.ids),e.fixed32.encode(d,o.memberKey)},decode:d=>({ids:za.decode(d),memberKey:e.fixed32.decode(d)})},Ha=Da,Ga=vd,Qa={preencode(e,d){Ha.preencode(e,d.ids),Ga.preencode(e,d.role)},encode(e,d){Ha.encode(e,d.ids),Ga.encode(e,d.role)},decode:e=>({ids:Ha.decode(e),role:Ga.decode(e)})},Xa=e.frame(on),Ya={preencode(e,d){c.preencode(e,d.id),Xa.preencode(e,d.reactions)},encode(e,d){c.encode(e,d.id),Xa.encode(e,d.reactions)},decode:e=>({id:c.decode(e),reactions:Xa.decode(e)})},Za=Xa,$a={preencode(e,d){c.preencode(e,d.id),Za.preencode(e,d.digest)},encode(e,d){c.encode(e,d.id),Za.encode(e,d.digest)},decode:e=>({id:c.decode(e),digest:Za.decode(e)})},_a=j,es=j,ds=e.array(e.frame(ic)),os={preencode(e,d){ds.preencode(e,d.invitations)},encode(e,d){ds.encode(e,d.invitations)},decode:e=>({invitations:ds.decode(e)})},ns=e.frame(ld),cs={preencode(d,o){e.fixed32.preencode(d,o.roomKey),ns.preencode(d,o.request)},encode(d,o){e.fixed32.encode(d,o.roomKey),ns.encode(d,o.request)},decode:d=>({roomKey:e.fixed32.decode(d),request:ns.decode(d)})},rs=e.array(e.frame(cs)),ts={preencode(e,d){rs.preencode(e,d.requests)},encode(e,d){rs.encode(e,d.requests)},decode:e=>({requests:rs.decode(e)})},is=ds,as=e.array(e.frame(ld)),ss={preencode(e,d){is.preencode(e,d.pendingInvitations),as.preencode(e,d.identityJoinRequests)},encode(e,d){is.encode(e,d.pendingInvitations),as.encode(e,d.identityJoinRequests)},decode:e=>({pendingInvitations:is.decode(e),identityJoinRequests:as.decode(e)})},ps=Zt,us={preencode(d,o){ps.preencode(d,o.header),e.string.preencode(d,o.invitation),d.end++},encode(d,o){const n=o.isIdentity?1:0;ps.encode(d,o.header),e.string.encode(d,o.invitation),e.uint.encode(d,n)},decode:d=>({header:ps.decode(d),invitation:e.string.decode(d),isIdentity:!!(1&e.uint.decode(d))})},ls=_t,fs={preencode(e,d){ls.preencode(e,d.header)},encode(e,d){ls.encode(e,d.header)},decode:e=>({header:ls.decode(e)})},ms={preencode(e,d){e.end++},encode(d,o){const n=(o.canModerate?1:0)|(o.canAdmin?2:0)|(o.requiresConfirmation?4:0)|(o.isReadOnly?8:0);e.uint.encode(d,n)},decode(d){const o=e.uint.decode(d);return{canModerate:!!(1&o),canAdmin:!!(2&o),requiresConfirmation:!!(4&o),isReadOnly:!!(8&o)}}},ys=Zt,xs=e.frame(ms),bs={preencode(d,o){ys.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),d.end++,o.permissions&&xs.preencode(d,o.permissions),o.expiration&&e.uint.preencode(d,o.expiration)},encode(d,o){const n=(o.permissions?1:0)|(o.expiration?2:0);ys.encode(d,o.header),e.fixed32.encode(d,o.roomKey),e.uint.encode(d,n),o.permissions&&xs.encode(d,o.permissions),o.expiration&&e.uint.encode(d,o.expiration)},decode(d){const o=ys.decode(d),n=e.fixed32.decode(d),c=e.uint.decode(d);return{header:o,roomKey:n,permissions:1&c?xs.decode(d):null,expiration:2&c?e.uint.decode(d):0}}},vs=_t,gs={preencode(d,o){vs.preencode(d,o.header),e.string.preencode(d,o.invitation)},encode(d,o){vs.encode(d,o.header),e.string.encode(d,o.invitation)},decode:d=>({header:vs.decode(d),invitation:e.string.decode(d)})},ks=Zt,hs={preencode(e,d){ks.preencode(e,d.header)},encode(e,d){ks.encode(e,d.header)},decode:e=>({header:ks.decode(e)})},Ks=_t,ws={preencode(d,o){Ks.preencode(d,o.header),e.string.preencode(d,o.invitation)},encode(d,o){Ks.encode(d,o.header),e.string.encode(d,o.invitation)},decode:d=>({header:Ks.decode(d),invitation:e.string.decode(d)})},Ps=Zt,Rs=ns,Ts={preencode(d,o){Ps.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),Rs.preencode(d,o.request)},encode(d,o){Ps.encode(d,o.header),e.fixed32.encode(d,o.roomKey),Rs.encode(d,o.request)},decode:d=>({header:Ps.decode(d),roomKey:e.fixed32.decode(d),request:Rs.decode(d)})},As=_t,qs={preencode(e,d){As.preencode(e,d.header)},encode(e,d){As.encode(e,d.header)},decode:e=>({header:As.decode(e)})},Ms=Zt,Cs=ns,Ds={preencode(d,o){Ms.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),Cs.preencode(d,o.request)},encode(d,o){Ms.encode(d,o.header),e.fixed32.encode(d,o.roomKey),Cs.encode(d,o.request)},decode:d=>({header:Ms.decode(d),roomKey:e.fixed32.decode(d),request:Cs.decode(d)})},Is=_t,Ss={preencode(e,d){Is.preencode(e,d.header)},encode(e,d){Is.encode(e,d.header)},decode:e=>({header:Is.decode(e)})},Fs=Zt,Ls={preencode(d,o){Fs.preencode(d,o.header),e.fixed32.preencode(d,o.id)},encode(d,o){Fs.encode(d,o.header),e.fixed32.encode(d,o.id)},decode:d=>({header:Fs.decode(d),id:e.fixed32.decode(d)})},js=_t,Es={preencode(e,d){js.preencode(e,d.header)},encode(e,d){js.encode(e,d.header)},decode:e=>({header:js.decode(e)})},Bs=Zt,Ns={preencode(d,o){Bs.preencode(d,o.header),e.string.preencode(d,o.displayName),d.end++,o.avatar&&e.buffer.preencode(d,o.avatar)},encode(d,o){const n=o.avatar?1:0;Bs.encode(d,o.header),e.string.encode(d,o.displayName),e.uint.encode(d,n),o.avatar&&e.buffer.encode(d,o.avatar)},decode:d=>({header:Bs.decode(d),displayName:e.string.decode(d),avatar:1&e.uint.decode(d)?e.buffer.decode(d):null})},Os=j,Vs=j,Us={preencode(e,d){e.end++},encode(d,o){const n=(o.isConfirmed?1:0)|(o.isLoggedOut?2:0);e.uint.encode(d,n)},decode(d){const o=e.uint.decode(d);return{isConfirmed:!!(1&o),isLoggedOut:!!(2&o)}}},Js=e.frame(Us),zs=_,Ws={preencode(d,o){e.fixed32.preencode(d,o.memberKey),Js.preencode(d,o.status),zs.preencode(d,o.deviceKeys)},encode(d,o){e.fixed32.encode(d,o.memberKey),Js.encode(d,o.status),zs.encode(d,o.deviceKeys)},decode:d=>({memberKey:e.fixed32.decode(d),status:Js.decode(d),deviceKeys:zs.decode(d)})},Hs={preencode(d,o){e.fixed32.preencode(d,o.memberKey)},encode(d,o){e.fixed32.encode(d,o.memberKey)},decode:d=>({memberKey:e.fixed32.decode(d)})},Gs={preencode(d,o){e.fixed32.preencode(d,o.deviceKey)},encode(d,o){e.fixed32.encode(d,o.deviceKey)},decode:d=>({deviceKey:e.fixed32.decode(d)})},Qs=Zt,Xs={preencode(d,o){Qs.preencode(d,o.header),e.string.preencode(d,o.password)},encode(d,o){Qs.encode(d,o.header),e.string.encode(d,o.password)},decode:d=>({header:Qs.decode(d),password:e.string.decode(d)})},Ys=_t,Zs={preencode(d,o){Ys.preencode(d,o.header),e.string.preencode(d,o.inspector)},encode(d,o){Ys.encode(d,o.header),e.string.encode(d,o.inspector)},decode:d=>({header:Ys.decode(d),inspector:e.string.decode(d)})},$s=_t,_s={preencode(e,d){$s.preencode(e,d.header)},encode(e,d){$s.encode(e,d.header)},decode:e=>({header:$s.decode(e)})},ep=_t,dp={preencode(e,d){ep.preencode(e,d.header)},encode(e,d){ep.encode(e,d.header)},decode:e=>({header:ep.decode(e)})},op={Flag:1},np={preencode(e,d){e.end++},encode(d,o){if(o>1)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},cp={preencode(d,o){e.fixed32.preencode(d,o.key),e.fixed32.preencode(d,o.sender),e.uint.preencode(d,o.clock),np.preencode(d,o.label)},encode(d,o){e.fixed32.encode(d,o.key),e.fixed32.encode(d,o.sender),e.uint.encode(d,o.clock),np.encode(d,o.label)},decode:d=>({key:e.fixed32.decode(d),sender:e.fixed32.decode(d),clock:e.uint.decode(d),label:np.decode(d)})},rp=oe,tp={preencode(d,o){rp.preencode(d,o.header),e.fixed32.preencode(d,o.key),np.preencode(d,o.label)},encode(d,o){rp.encode(d,o.header),e.fixed32.encode(d,o.key),np.encode(d,o.label)},decode:d=>({header:rp.decode(d),key:e.fixed32.decode(d),label:np.decode(d)})},ip={preencode(d,o){np.preencode(d,o.label),e.uint.preencode(d,o.count)},encode(d,o){np.encode(d,o.label),e.uint.encode(d,o.count)},decode:d=>({label:np.decode(d),count:e.uint.decode(d)})},ap=e.array(e.frame(ip)),sp={preencode(d,o){e.fixed32.preencode(d,o.key),e.uint.preencode(d,o.total),ap.preencode(d,o.labels),e.uint.preencode(d,o.editedAt),e.uint.preencode(d,o.flagsClock)},encode(d,o){e.fixed32.encode(d,o.key),e.uint.encode(d,o.total),ap.encode(d,o.labels),e.uint.encode(d,o.editedAt),e.uint.encode(d,o.flagsClock)},decode:d=>({key:e.fixed32.decode(d),total:e.uint.decode(d),labels:ap.decode(d),editedAt:e.uint.decode(d),flagsClock:e.uint.decode(d)})},pp=oe,up={preencode(d,o){pp.preencode(d,o.header),e.fixed32.preencode(d,o.deviceKey),e.fixed32.preencode(d,o.fromDeviceKey)},encode(d,o){pp.encode(d,o.header),e.fixed32.encode(d,o.deviceKey),e.fixed32.encode(d,o.fromDeviceKey)},decode:d=>({header:pp.decode(d),deviceKey:e.fixed32.decode(d),fromDeviceKey:e.fixed32.decode(d)})},lp={preencode(d,o){e.float64.preencode(d,o.latitude),e.float64.preencode(d,o.longitude)},encode(d,o){e.float64.encode(d,o.latitude),e.float64.encode(d,o.longitude)},decode:d=>({latitude:e.float64.decode(d),longitude:e.float64.decode(d)})},fp=oe,mp=_,yp={preencode(d,n){fp.preencode(d,n.header),e.fixed32.preencode(d,n.callKey),e.buffer.preencode(d,n.encryptionKey),d.end++,o>=4&&n.streams&&mp.preencode(d,n.streams),o>=4&&n.discoveryKey&&e.fixed32.preencode(d,n.discoveryKey),o>=4&&n.version&&e.uint.preencode(d,n.version)},encode(d,n){const c=(o>=4&&n.streams?1:0)|(o>=4&&n.discoveryKey?2:0)|(o>=4&&n.version?4:0);fp.encode(d,n.header),e.fixed32.encode(d,n.callKey),e.buffer.encode(d,n.encryptionKey),e.uint.encode(d,c),o>=4&&n.streams&&mp.encode(d,n.streams),o>=4&&n.discoveryKey&&e.fixed32.encode(d,n.discoveryKey),o>=4&&n.version&&e.uint.encode(d,n.version)},decode(d){const n=fp.decode(d),c=e.fixed32.decode(d),r=e.buffer.decode(d),t=e.uint.decode(d);return{header:n,callKey:c,encryptionKey:r,streams:o>=4&&1&t?mp.decode(d):null,discoveryKey:o>=4&&2&t?e.fixed32.decode(d):null,version:o>=4&&4&t?e.uint.decode(d):0}}},xp=oe,bp=_,vp={preencode(d,n){xp.preencode(d,n.header),e.fixed32.preencode(d,n.callKey),d.end++,o>=4&&n.streams&&bp.preencode(d,n.streams)},encode(d,n){const c=o>=4&&n.streams?1:0;xp.encode(d,n.header),e.fixed32.encode(d,n.callKey),e.uint.encode(d,c),o>=4&&n.streams&&bp.encode(d,n.streams)},decode(d){const n=xp.decode(d),c=e.fixed32.decode(d),r=e.uint.decode(d);return{header:n,callKey:c,streams:o>=4&&1&r?bp.decode(d):null}}},gp=oe,kp={preencode(d,o){gp.preencode(d,o.header),e.fixed32.preencode(d,o.callKey)},encode(d,o){gp.encode(d,o.header),e.fixed32.encode(d,o.callKey)},decode:d=>({header:gp.decode(d),callKey:e.fixed32.decode(d)})},hp=oe,Kp={preencode(d,o){hp.preencode(d,o.header),e.fixed32.preencode(d,o.callKey)},encode(d,o){hp.encode(d,o.header),e.fixed32.encode(d,o.callKey)},decode:d=>({header:hp.decode(d),callKey:e.fixed32.decode(d)})},wp=oe,Pp={preencode(d,o){wp.preencode(d,o.header),e.fixed32.preencode(d,o.callKey),e.fixed32.preencode(d,o.streamKey)},encode(d,o){wp.encode(d,o.header),e.fixed32.encode(d,o.callKey),e.fixed32.encode(d,o.streamKey)},decode:d=>({header:wp.decode(d),callKey:e.fixed32.decode(d),streamKey:e.fixed32.decode(d)})},Rp=oe,Tp={preencode(d,o){Rp.preencode(d,o.header),e.fixed32.preencode(d,o.callKey),e.fixed32.preencode(d,o.streamKey)},encode(d,o){Rp.encode(d,o.header),e.fixed32.encode(d,o.callKey),e.fixed32.encode(d,o.streamKey)},decode:d=>({header:Rp.decode(d),callKey:e.fixed32.decode(d),streamKey:e.fixed32.decode(d)})},Ap={preencode(d,n){e.fixed32.preencode(d,n.callKey),e.buffer.preencode(d,n.encryptionKey),e.uint.preencode(d,n.createdAt),d.end++,o>=4&&n.endedAt&&e.uint.preencode(d,n.endedAt),o>=4&&n.discoveryKey&&e.fixed32.preencode(d,n.discoveryKey),o>=4&&n.version&&e.uint.preencode(d,n.version)},encode(d,n){const c=(o>=4&&n.endedAt?1:0)|(o>=4&&n.discoveryKey?2:0)|(o>=4&&n.version?4:0);e.fixed32.encode(d,n.callKey),e.buffer.encode(d,n.encryptionKey),e.uint.encode(d,n.createdAt),e.uint.encode(d,c),o>=4&&n.endedAt&&e.uint.encode(d,n.endedAt),o>=4&&n.discoveryKey&&e.fixed32.encode(d,n.discoveryKey),o>=4&&n.version&&e.uint.encode(d,n.version)},decode(d){const n=e.fixed32.decode(d),c=e.buffer.decode(d),r=e.uint.decode(d),t=e.uint.decode(d);return{callKey:n,encryptionKey:c,createdAt:r,endedAt:o>=4&&1&t?e.uint.decode(d):0,discoveryKey:o>=4&&2&t?e.fixed32.decode(d):null,version:o>=4&&4&t?e.uint.decode(d):0}}},qp={preencode(d,o){e.fixed32.preencode(d,o.callKey),e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.createdAt)},encode(d,o){e.fixed32.encode(d,o.callKey),e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.createdAt)},decode:d=>({callKey:e.fixed32.decode(d),memberKey:e.fixed32.decode(d),createdAt:e.uint.decode(d)})},Mp={preencode(d,n){e.fixed32.preencode(d,n.callKey),e.fixed32.preencode(d,n.deviceKey),e.fixed32.preencode(d,n.memberKey),e.uint.preencode(d,n.createdAt),d.end++,o>=4&&n.swarmKey&&e.fixed32.preencode(d,n.swarmKey)},encode(d,n){const c=o>=4&&n.swarmKey?1:0;e.fixed32.encode(d,n.callKey),e.fixed32.encode(d,n.deviceKey),e.fixed32.encode(d,n.memberKey),e.uint.encode(d,n.createdAt),e.uint.encode(d,c),o>=4&&n.swarmKey&&e.fixed32.encode(d,n.swarmKey)},decode(d){const n=e.fixed32.decode(d),c=e.fixed32.decode(d),r=e.fixed32.decode(d),t=e.uint.decode(d),i=e.uint.decode(d);return{callKey:n,deviceKey:c,memberKey:r,createdAt:t,swarmKey:o>=4&&1&i?e.fixed32.decode(d):null}}},Cp={preencode(d,o){e.fixed32.preencode(d,o.callKey),e.fixed32.preencode(d,o.deviceKey),e.buffer.preencode(d,o.streamKey),e.uint.preencode(d,o.createdAt)},encode(d,o){e.fixed32.encode(d,o.callKey),e.fixed32.encode(d,o.deviceKey),e.buffer.encode(d,o.streamKey),e.uint.encode(d,o.createdAt)},decode:d=>({callKey:e.fixed32.decode(d),deviceKey:e.fixed32.decode(d),streamKey:e.buffer.decode(d),createdAt:e.uint.decode(d)})},Dp={preencode(d,n){e.fixed32.preencode(d,n.callKey),d.end++,o>=4&&n.selfDeviceKey&&e.fixed32.preencode(d,n.selfDeviceKey)},encode(d,n){const c=o>=4&&n.selfDeviceKey?1:0;e.fixed32.encode(d,n.callKey),e.uint.encode(d,c),o>=4&&n.selfDeviceKey&&e.fixed32.encode(d,n.selfDeviceKey)},decode(d){const n=e.fixed32.decode(d),c=e.uint.decode(d);return{callKey:n,selfDeviceKey:o>=4&&1&c?e.fixed32.decode(d):null}}},Ip={preencode(d,o){e.uint.preencode(d,o.lastCleared)},encode(d,o){e.uint.encode(d,o.lastCleared)},decode:d=>({lastCleared:e.uint.decode(d)})},Sp={Nightly:"Nightly",Internal:"Internal",Production:"Production"},Fp={preencode(e,d){e.end++},encode(d,o){switch(o){case"Nightly":e.uint.encode(d,1);break;case"Internal":e.uint.encode(d,2);break;case"Production":e.uint.encode(d,3);break;default:throw new Error("Unknown enum")}},decode(d){switch(e.uint.decode(d)){case 1:return"Nightly";case 2:return"Internal";case 3:return"Production";default:return null}}},Lp=oe,jp={preencode(e,d){Lp.preencode(e,d.header)},encode(e,d){Lp.encode(e,d.header)},decode:e=>({header:Lp.decode(e)})},Ep=oe,Bp={preencode(e,d){Ep.preencode(e,d.header)},encode(e,d){Ep.encode(e,d.header)},decode:e=>({header:Ep.decode(e)})},Np={preencode(d,n){Fp.preencode(d,n.buildType),d.end++,o>=6&&n.latestOfflineAbi&&e.uint.preencode(d,n.latestOfflineAbi)},encode(d,n){const c=o>=6&&n.latestOfflineAbi?1:0;Fp.encode(d,n.buildType),e.uint.encode(d,c),o>=6&&n.latestOfflineAbi&&e.uint.encode(d,n.latestOfflineAbi)},decode(d){const n=Fp.decode(d),c=d.start<d.end?e.uint.decode(d):0;return{buildType:n,latestOfflineAbi:o>=6&&1&c?e.uint.decode(d):0}}},Op=e.frame(P),Vp=Op,Up=e.frame(fe),Jp=Op,zp=Up,Wp=Up,Hp=e.frame(Pd),Gp=e.frame(lp),Qp=Gp,Xp=Op,Yp=Op,Zp=e.frame(Mc),$p=Zp,_p=Zp,eu=e.frame(Dp),du=Up;function ou(e){o=e}function nu(d,n,c=6){return o=c,e.encode(tu(d),n)}function cu(d,n,c=6){return o=c,e.decode(tu(d),n)}function ru(e){switch(e){case"@keet/room-type":return U;case"@keet/room-supported-language":return Y;case"@keet/display-type":return Xo;case"@keet/system-settings-keys":return An;case"@keet/label-type":return Ln;case"@keet-private-id/user-settings-key":return sr;case"@local/tasks":return Dr;case"@local/keet-state":return zt;case"@api/core/lobby-record-change-type":return ca;case"@keet/member-label-type":return op;case"@keet/build-type":return Sp;default:throw new Error("Enum not found "+e)}}function tu(e){switch(e){case"@keet/head":return n;case"@keet/oplog-id":return c;case"@keet/encryption-keypair":return r;case"@keet/signing-keypair":return t;case"@keet/room-keys":return i;case"@keet/operation-header":return a;case"@keet/blob-pointer":return s;case"@keet/file-dimensions":return p;case"@keet/file-metadata":return l;case"@keet/external-drive-pointer":return f;case"@keet/external-blob-pointer":return m;case"@keet/file-pointer":return b;case"@keet/file":return k;case"@keet/image-file":return P;case"@keet/file-status":return R;case"@keet/file-record":return q;case"@keet/device-status":return M;case"@keet/member-status":return C;case"@keet/member-moderation-status":return D;case"@keet/abi":return I;case"@keet/device-stats":return S;case"@keet/member-stats":return F;case"@keet/chat-stats":return L;case"@keet/file-stats":return j;case"@keet/stats":return V;case"@keet/room-type":return J;case"@keet/system-settings":return z;case"@keet/system-digest":return G;case"@keet/room-seed":return Q;case"@keet/room-capabilities":return X;case"@keet/room-supported-language":return Z;case"@keet/room-config":return ee;case"@keet/blind-peer":return de;case"@keet/add-blind-peer-operation":return ce;case"@keet/remove-blind-peer-operation":return te;case"@keet/identity-attestation":return ie;case"@keet/device-invitation":return ae;case"@keet/device":return ue;case"@keet/member-profile":return le;case"@keet/device-profile":return fe;case"@keet/member-update":return ye;case"@keet/device-update":return xe;case"@keet/member-contact-info":return ve;case"@keet/signed-pairing-data":return ge;case"@keet/device-request-identity":return ke;case"@keet/device-response-identity":return he;case"@keet/device-identity":return Ke;case"@keet/device-request-with-invitation":return Te;case"@keet/device-request-with-invitation-and-proof":return qe;case"@keet/device-request-with-member-proof":return De;case"@keet/device-request":return Fe;case"@keet/device-response":return Ee;case"@keet/invitation-metadata":return Be;case"@keet/invitation":return Ve;case"@keet/add-invitation-operation":return ze;case"@keet/remove-invitation-operation":return He;case"@keet/sendable-room-invitation":return Ge;case"@keet/readonly-room-invitation":return Qe;case"@keet/sendable-identity-invitation":return Xe;case"@keet/sendable-contact-invitation":return Ye;case"@keet/sendable-invitation":return od;case"@keet/add-device-operation":return cd;case"@keet/update-device-operation":return td;case"@keet/remove-device-operation":return ad;case"@keet/start-indexing-operation":return sd;case"@keet/stop-indexing-operation":return pd;case"@keet/join-request":return ld;case"@keet/accept-join-request-operation":return yd;case"@keet/reject-join-request-operation":return bd;case"@keet/member":return kd;case"@keet/full-member":return wd;case"@keet/member-proofs":return Pd;case"@keet/update-member-operation":return Ad;case"@keet/change-member-status-operation":return Cd;case"@keet/change-member-role-operation":return Id;case"@keet/remove-member-operation":return Fd;case"@keet/member-activity":return Ld;case"@keet/member-joined-event":return jd;case"@keet/member-left-event":return Ed;case"@keet/member-removed-event":return Bd;case"@keet/title-changed-chat-event":return Nd;case"@keet/chat-event":return zd;case"@keet/sendable-event":return Wd;case"@keet/display-range":return Hd;case"@keet/display-content-range":return Qd;case"@keet/mention-display-item":return Yd;case"@keet/translation-display-item":return $d;case"@keet/link-preview":return oo;case"@keet/display-link-item":return ro;case"@keet/display":return xo;case"@keet/oplog-message":return ko;case"@keet/index-message":return wo;case"@keet/full-index-message":return To;case"@keet/message-status":return Ao;case"@keet/message-index-id":return qo;case"@keet/thread":return Co;case"@keet/chat-message-record":return Fo;case"@keet/full-chat-message-record":return Bo;case"@keet/add-chat-message-operation":return Vo;case"@keet/remove-chat-message-operation":return Jo;case"@keet/update-chat-message-operation":return Ho;case"@keet/pin-chat-message-operation":return Qo;case"@keet/display-type":return Yo;case"@keet/add-file-preview-operation":return $o;case"@keet/reaction":return _o;case"@keet/reactions-summary":return en;case"@keet/reactions-digest":return on;case"@keet/add-reaction-operation":return cn;case"@keet/remove-reaction-operation":return tn;case"@keet/update-room-config-operation":return pn;case"@keet/group-member":return un;case"@keet/user-registry-info":return ln;case"@keet/room-identity":return mn;case"@keet/genesis-operation":return Kn;case"@keet/upgrade-operation":return Pn;case"@keet/migrate-abi-operation":return Tn;case"@keet/system-settings-keys":return qn;case"@keet/update-system-settings-operation":return Dn;case"@keet/test-increment-operation":return Sn;case"@keet/test-collection-record-1":return Fn;case"@keet/label-type":return jn;case"@keet/chat-label":return En;case"@keet/add-chat-label-operation":return Nn;case"@keet/remove-chat-label-operation":return Vn;case"@keet/chat-label-summary":return Un;case"@keet/chat-label-digest":return zn;case"@keet/update-read-length-operation":return Hn;case"@keet/read-length":return Gn;case"@keet/tmp-removed-member":return Qn;case"@keet-private-id/contact":return Xn;case"@keet-private-id/v3-room-migration-info":return Yn;case"@keet-private-id/run-v3-migration-operation":return _n;case"@keet-private-id/update-identity-operation":return dc;case"@keet-private-id/counters":return oc;case"@keet-private-id/stats":return nc;case"@keet-private-id/add-entropy-operation":return cc;case"@keet-private-id/pending-invitation-identity":return rc;case"@keet-private-id/pending-invitation":return ic;case"@keet-private-id/resolve-pending-invitation-operation":return sc;case"@keet-private-id/add-pending-invitation-operation":return lc;case"@keet-private-id/remove-pending-invitation-operation":return mc;case"@keet-private-id/identity-swap":return yc;case"@keet-private-id/identity-swap-v2":return xc;case"@keet-private-id/room-status":return bc;case"@keet-private-id/room":return hc;case"@keet-private-id/add-room-operation":return wc;case"@keet-private-id/remove-room-operation":return Rc;case"@keet-private-id/update-room-status-operation":return qc;case"@keet-private-id/contact-status":return Mc;case"@keet-private-id/contact-record":return Cc;case"@keet-private-id/add-contact-operation":return Sc;case"@keet-private-id/update-contact-status-operation":return Lc;case"@keet-private-id/remove-contact-operation":return Ec;case"@keet-private-id/activate-contact-room-operation":return Nc;case"@keet-private-id/contact-request-status":return Oc;case"@keet-private-id/contact-request-body":return Jc;case"@keet-private-id/contact-request":return Wc;case"@keet-private-id/contact-request-record":return Xc;case"@keet-private-id/add-contact-request-operation":return Zc;case"@keet-private-id/update-contact-request-status-operation":return er;case"@keet-private-id/profile-discovery-record-v1":return dr;case"@keet-private-id/profile-discovery-record":return or;case"@keet-private-id/unreads":return nr;case"@keet-private-id/add-unreads-key-operation":return rr;case"@keet-private-id/remove-unreads-key-operation":return ir;case"@keet-private-id/settings":return ar;case"@keet-private-id/user-settings-key":return pr;case"@keet-private-id/update-settings-operation":return fr;case"@local/background-sync-room":return mr;case"@local/stats":return yr;case"@local/migration-status":return xr;case"@local/v3-private-profile-migration":return vr;case"@local/v3-room-migration":return hr;case"@local/room-migration-stats":return Kr;case"@local/room-migration":return Pr;case"@local/identity-status":return Rr;case"@local/identity-swap":return Tr;case"@local/identity-record":return Cr;case"@local/tasks":return Ir;case"@local/room-keys":return Sr;case"@local/join-room-invitation-task":return Lr;case"@local/join-room-response-task":return jr;case"@local/fast-forward-to":return Er;case"@local/add-room-fields":return Br;case"@local/join-room-keys-task":return Or;case"@local/create-room-task":return Ur;case"@local/leave-room-task":return Jr;case"@local/clear-room-task":return zr;case"@local/restore-identity-task":return Wr;case"@local/send-contact-request-task":return Gr;case"@local/migrate-v2-room-task":return Qr;case"@local/task":return ct;case"@local/shared-invitation":return tt;case"@local/room-status":return it;case"@local/room-timestamps":return at;case"@local/room":return wt;case"@local/room-preferences":return Rt;case"@local/room-metadata":return Tt;case"@local/writer":return At;case"@local/writer-append":return qt;case"@local/member":return Ct;case"@local/device":return It;case"@local/file":return Ft;case"@local/debug-flag":return Lt;case"@local/debug":return Et;case"@local/hyperdht-record":return Nt;case"@local/unread":return Ot;case"@local/error-record-details":return Vt;case"@local/error-record":return Jt;case"@local/keet-state":return Wt;case"@local/file-stats":return Ht;case"@api/request-header":return Gt;case"@api/response-header":return Qt;case"@api/subscription-request-header":return Xt;case"@api/subscription-response-header":return Yt;case"@api/boot-request":return $t;case"@api/boot-response":return ei;case"@api/self-destruct-request":return oi;case"@api/core/have":return ni;case"@api/core/create-room-request":return ii;case"@api/core/create-room-response":return si;case"@api/core/activate-room-request":return ui;case"@api/core/deactivate-room-request":return fi;case"@api/core/leave-room-request":return yi;case"@api/core/leave-room-response":return bi;case"@api/core/update-room-config-request":return ki;case"@api/core/update-room-settings-request":return wi;case"@api/core/update-room-status-request":return Ti;case"@api/core/add-chat-message-request":return Mi;case"@api/core/add-chat-message-response":return Di;case"@api/core/edit-chat-message-request":return Fi;case"@api/core/edit-chat-message-response":return ji;case"@api/core/remove-chat-message-request":return Bi;case"@api/core/remove-chat-message-response":return Oi;case"@api/core/add-chat-reaction-request":return Ui;case"@api/core/add-chat-reaction-response":return zi;case"@api/core/remove-chat-reaction-request":return Hi;case"@api/core/remove-chat-reaction-response":return Qi;case"@api/core/want-lobby":return Xi;case"@api/core/unwant-lobby":return Yi;case"@api/core/want-room-info":return $i;case"@api/core/want-chat":return _i;case"@api/core/unwant-chat":return ea;case"@api/core/want-members":return da;case"@api/core/unwant-members":return oa;case"@api/core/lobby-record":return na;case"@api/core/lobby-record-change-type":return ra;case"@api/core/lobby":return ia;case"@api/core/lobby-room":return aa;case"@api/core/room-role":return ua;case"@api/core/room-info":return ya;case"@api/core/room-info-status":return ba;case"@api/core/room-info-digest":return ga;case"@api/core/room-info-config":return ha;case"@api/core/room-info-role":return wa;case"@api/core/room-info-last-message":return Pa;case"@api/core/member":return Ta;case"@api/core/device":return qa;case"@api/core/member-list-add":return Ma;case"@api/core/member-list-remove":return Ca;case"@api/core/chat-reset":return Ia;case"@api/core/message-timestamps":return Sa;case"@api/core/message":return Ba;case"@api/core/message-info":return Va;case"@api/core/message-info-chat":return Ja;case"@api/core/message-info-member":return Wa;case"@api/core/message-info-role":return Qa;case"@api/core/message-info-reactions":return Ya;case"@api/core/reactions":return $a;case"@api/core/want-pairing":return _a;case"@api/core/unwant-pairing":return es;case"@api/core/pending-invitations":return os;case"@api/core/join-request":return cs;case"@api/core/join-requests":return ts;case"@api/core/pairing":return ss;case"@api/core/start-pairing-request":return us;case"@api/core/start-pairing-response":return fs;case"@api/core/invitation-permissions":return ms;case"@api/core/create-room-invitation-request":return bs;case"@api/core/create-room-invitation-response":return gs;case"@api/core/create-identity-invitation-request":return hs;case"@api/core/create-identity-invitation-response":return ws;case"@api/core/accept-join-request-request":return Ts;case"@api/core/accept-join-request-response":return qs;case"@api/core/reject-join-request-request":return Ds;case"@api/core/reject-join-request-response":return Ss;case"@api/core/stop-pairing-request":return Ls;case"@api/core/stop-pairing-response":return Es;case"@api/core/update-profile-request":return Ns;case"@api/core/want-identity":return Os;case"@api/core/unwant-identity":return Vs;case"@api/core/identity-status":return Us;case"@api/core/identity":return Ws;case"@api/core/identity-member":return Hs;case"@api/core/identity-device":return Gs;case"@api/debug/enable-request":return Xs;case"@api/debug/enable-response":return Zs;case"@api/debug/disable-request":return _s;case"@api/debug/disable-response":return dp;case"@keet/member-label-type":return np;case"@keet/member-label":return cp;case"@keet/add-member-label-operation":return tp;case"@keet/member-label-summary":return ip;case"@keet/member-label-digest":return sp;case"@keet/move-indexer-operation":return up;case"@keet/location-shared-event":return lp;case"@keet/start-call":return yp;case"@keet/join-call":return vp;case"@keet/leave-call":return kp;case"@keet/end-call":return Kp;case"@keet/add-call-stream":return Pp;case"@keet/remove-call-stream":return Tp;case"@keet/call-record":return Ap;case"@keet/call-member-record":return qp;case"@keet/call-device-record":return Mp;case"@keet/call-stream-record":return Cp;case"@local/active-call":return Dp;case"@local/file-gc-info":return Ip;case"@keet/build-type":return Fp;case"@keet/test-crash-operation":return jp;case"@keet/test-dispatch-error-operation":return Bp;case"@local/environment-record":return Np;default:throw new Error("Encoder not found "+e)}}function iu(e,d=6){const n=tu(e);return{preencode(e,c){o=d,n.preencode(e,c)},encode(e,c){o=d,n.encode(e,c)},decode:e=>(o=d,n.decode(e))}}const au=iu;module.exports={resolveStruct:au,getStruct:iu,getEnum:ru,getEncoding:tu,encode:nu,decode:cu,setVersion:ou,version:o};
@holepunchto/keet-core/schema/spec/api/hyperschema/index.js +1 -0
……@@ -0,0 +1 @@
1const{c:e}=require("hyperschema/runtime"),d=6;let o=6;const n={preencode(d,o){e.fixed32.preencode(d,o.key),e.uint.preencode(d,o.length)},encode(d,o){e.fixed32.encode(d,o.key),e.uint.encode(d,o.length)},decode:d=>({key:e.fixed32.decode(d),length:e.uint.decode(d)})},c={preencode(d,o){e.fixed32.preencode(d,o.key),e.uint.preencode(d,o.seq)},encode(d,o){e.fixed32.encode(d,o.key),e.uint.encode(d,o.seq)},decode:d=>({key:e.fixed32.decode(d),seq:e.uint.decode(d)})},r={preencode(d,o){e.fixed32.preencode(d,o.publicKey),e.fixed32.preencode(d,o.secretKey)},encode(d,o){e.fixed32.encode(d,o.publicKey),e.fixed32.encode(d,o.secretKey)},decode:d=>({publicKey:e.fixed32.decode(d),secretKey:e.fixed32.decode(d)})},t={preencode(d,o){e.fixed32.preencode(d,o.publicKey),e.fixed64.preencode(d,o.secretKey)},encode(d,o){e.fixed32.encode(d,o.publicKey),e.fixed64.encode(d,o.secretKey)},decode:d=>({publicKey:e.fixed32.decode(d),secretKey:e.fixed64.decode(d)})},i={preencode(d,o){e.fixed32.preencode(d,o.key),d.end++,o.encryptionKey&&e.buffer.preencode(d,o.encryptionKey),o.fastForwardTo&&e.fixed32.preencode(d,o.fastForwardTo)},encode(d,o){const n=(o.encryptionKey?1:0)|(o.fastForwardTo?2:0);e.fixed32.encode(d,o.key),e.uint.encode(d,n),o.encryptionKey&&e.buffer.encode(d,o.encryptionKey),o.fastForwardTo&&e.fixed32.encode(d,o.fastForwardTo)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d);return{key:o,encryptionKey:1&n?e.buffer.decode(d):null,fastForwardTo:2&n?e.fixed32.decode(d):null}}},a={preencode(d,o){e.uint.preencode(d,o.timestamp)},encode(d,o){e.uint.encode(d,o.timestamp)},decode:d=>({timestamp:e.uint.decode(d)})},s={preencode(d,o){e.uint.preencode(d,o.blockOffset),e.uint.preencode(d,o.blockLength),e.uint.preencode(d,o.byteOffset),e.uint.preencode(d,o.byteLength)},encode(d,o){e.uint.encode(d,o.blockOffset),e.uint.encode(d,o.blockLength),e.uint.encode(d,o.byteOffset),e.uint.encode(d,o.byteLength)},decode:d=>({blockOffset:e.uint.decode(d),blockLength:e.uint.decode(d),byteOffset:e.uint.decode(d),byteLength:e.uint.decode(d)})},p={preencode(d,o){e.uint.preencode(d,o.width),e.uint.preencode(d,o.height)},encode(d,o){e.uint.encode(d,o.width),e.uint.encode(d,o.height)},decode:d=>({width:e.uint.decode(d),height:e.uint.decode(d)})},u=e.frame(p),l={preencode(d,o){d.end++,o.name&&e.string.preencode(d,o.name),o.mimetype&&e.string.preencode(d,o.mimetype),o.dimensions&&u.preencode(d,o.dimensions),o.userdata&&e.buffer.preencode(d,o.userdata),o.duration&&e.uint.preencode(d,o.duration)},encode(d,o){const n=(o.name?1:0)|(o.mimetype?2:0)|(o.dimensions?4:0)|(o.userdata?8:0)|(o.duration?16:0)|(o.isPreview?32:0);e.uint.encode(d,n),o.name&&e.string.encode(d,o.name),o.mimetype&&e.string.encode(d,o.mimetype),o.dimensions&&u.encode(d,o.dimensions),o.userdata&&e.buffer.encode(d,o.userdata),o.duration&&e.uint.encode(d,o.duration)},decode(d){const o=e.uint.decode(d);return{name:1&o?e.string.decode(d):null,mimetype:2&o?e.string.decode(d):null,dimensions:4&o?u.decode(d):null,userdata:8&o?e.buffer.decode(d):null,duration:16&o?e.uint.decode(d):0,isPreview:!!(32&o)}}},f={preencode(d,o){e.fixed32.preencode(d,o.key),e.string.preencode(d,o.path),e.uint.preencode(d,o.version),e.uint.preencode(d,o.size)},encode(d,o){e.fixed32.encode(d,o.key),e.string.encode(d,o.path),e.uint.encode(d,o.version),e.uint.encode(d,o.size)},decode:d=>({key:e.fixed32.decode(d),path:e.string.decode(d),version:e.uint.decode(d),size:e.uint.decode(d)})},m={preencode(d,o){e.fixed32.preencode(d,o.key),s.preencode(d,o.blob)},encode(d,o){e.fixed32.encode(d,o.key),s.encode(d,o.blob)},decode:d=>({key:e.fixed32.decode(d),blob:s.decode(d)})},y=e.frame(m),x=e.frame(f),b={preencode(d,o){d.end++,o.inlined&&e.buffer.preencode(d,o.inlined),o.blob&&s.preencode(d,o.blob),o.externalBlob&&y.preencode(d,o.externalBlob),o.externalDrive&&x.preencode(d,o.externalDrive)},encode(d,o){const n=(o.inlined?1:0)|(o.blob?2:0)|(o.externalBlob?4:0)|(o.externalDrive?8:0);e.uint.encode(d,n),o.inlined&&e.buffer.encode(d,o.inlined),o.blob&&s.encode(d,o.blob),o.externalBlob&&y.encode(d,o.externalBlob),o.externalDrive&&x.encode(d,o.externalDrive)},decode(d){const o=e.uint.decode(d);return{inlined:1&o?e.buffer.decode(d):null,blob:2&o?s.decode(d):null,externalBlob:4&o?y.decode(d):null,externalDrive:8&o?x.decode(d):null}}},v=e.frame(b),g=e.frame(l),k={preencode(d,o){v.preencode(d,o.pointer),d.end++,o.metadata&&g.preencode(d,o.metadata),o.preview&&Op.preencode(d,o.preview),o.hash&&e.fixed32.preencode(d,o.hash)},encode(d,o){const n=(o.metadata?1:0)|(o.preview?2:0)|(o.hash?4:0);v.encode(d,o.pointer),e.uint.encode(d,n),o.metadata&&g.encode(d,o.metadata),o.preview&&Op.encode(d,o.preview),o.hash&&e.fixed32.encode(d,o.hash)},decode(d){const o=v.decode(d),n=e.uint.decode(d);return{pointer:o,metadata:1&n?g.decode(d):null,preview:2&n?Op.decode(d):null,hash:4&n?e.fixed32.decode(d):null}}},h=e.frame(k),K=h,w=h,P={preencode(e,d){e.end++,d.small&&h.preencode(e,d.small),d.medium&&K.preencode(e,d.medium),d.large&&w.preencode(e,d.large)},encode(d,o){const n=(o.small?1:0)|(o.medium?2:0)|(o.large?4:0);e.uint.encode(d,n),o.small&&h.encode(d,o.small),o.medium&&K.encode(d,o.medium),o.large&&w.encode(d,o.large)},decode(d){const o=e.uint.decode(d);return{small:1&o?h.decode(d):null,medium:2&o?K.decode(d):null,large:4&o?w.decode(d):null}}},R={preencode(e,d){e.end++},encode(d,o){const n=o.isDeleted?1:0;e.uint.encode(d,n)},decode:d=>({isDeleted:!!(1&e.uint.decode(d))})},T=e.frame(R),A=h,q={preencode(d,o){e.uint.preencode(d,o.id),c.preencode(d,o.oplog),T.preencode(d,o.status),A.preencode(d,o.file),d.end++,o.version&&e.uint.preencode(d,o.version)},encode(d,o){const n=o.version?1:0;e.uint.encode(d,o.id),c.encode(d,o.oplog),T.encode(d,o.status),A.encode(d,o.file),e.uint.encode(d,n),o.version&&e.uint.encode(d,o.version)},decode:d=>({id:e.uint.decode(d),oplog:c.decode(d),status:T.decode(d),file:A.decode(d),version:1&e.uint.decode(d)?e.uint.decode(d):0})},M={preencode(e,d){e.end++},encode(d,o){const n=(o.isActive?1:0)|(o.isIndexing?2:0);e.uint.encode(d,n)},decode(d){const o=e.uint.decode(d);return{isActive:!!(1&o),isIndexing:!!(2&o)}}},C={preencode(d,o){const n=(o.isAdmin?1:0)|(o.isModerator?2:0)|(o.isPending?4:0)|(o.isActive?8:0)|(o.isMuted?16:0)|(o.isBanned?32:0)|(o.isShadowBanned?64:0)|(o.isRemoved?128:0);e.uint.preencode(d,n)},encode(d,o){const n=(o.isAdmin?1:0)|(o.isModerator?2:0)|(o.isPending?4:0)|(o.isActive?8:0)|(o.isMuted?16:0)|(o.isBanned?32:0)|(o.isShadowBanned?64:0)|(o.isRemoved?128:0);e.uint.encode(d,n)},decode(d){const o=e.uint.decode(d);return{isAdmin:!!(1&o),isModerator:!!(2&o),isPending:!!(4&o),isActive:!!(8&o),isMuted:!!(16&o),isBanned:!!(32&o),isShadowBanned:!!(64&o),isRemoved:!!(128&o)}}},D={preencode(e,d){e.end++},encode(d,o){const n=(o.isMuted?1:0)|(o.isBanned?2:0)|(o.isShadowBanned?4:0);e.uint.encode(d,n)},decode(d){const o=e.uint.decode(d);return{isMuted:!!(1&o),isBanned:!!(2&o),isShadowBanned:!!(4&o)}}},I={preencode(d,o){e.uint.preencode(d,o.version)},encode(d,o){e.uint.encode(d,o.version)},decode:d=>({version:e.uint.decode(d)})},S={preencode(d,o){e.uint.preencode(d,o.total),e.uint.preencode(d,o.active)},encode(d,o){e.uint.encode(d,o.total),e.uint.encode(d,o.active)},decode:d=>({total:e.uint.decode(d),active:e.uint.decode(d)})},F={preencode(d,o){e.uint.preencode(d,o.total),e.uint.preencode(d,o.active),e.uint.preencode(d,o.pending)},encode(d,o){e.uint.encode(d,o.total),e.uint.encode(d,o.active),e.uint.encode(d,o.pending)},decode:d=>({total:e.uint.decode(d),active:e.uint.decode(d),pending:e.uint.decode(d)})},L={preencode(d,o){e.uint.preencode(d,o.clock),e.uint.preencode(d,o.pinned),e.uint.preencode(d,o.threads),e.uint.preencode(d,o.timestamp),d.end++,o.flagsClock&&e.uint.preencode(d,o.flagsClock)},encode(d,o){const n=o.flagsClock?1:0;e.uint.encode(d,o.clock),e.uint.encode(d,o.pinned),e.uint.encode(d,o.threads),e.uint.encode(d,o.timestamp),e.uint.encode(d,n),o.flagsClock&&e.uint.encode(d,o.flagsClock)},decode:d=>({clock:e.uint.decode(d),pinned:e.uint.decode(d),threads:e.uint.decode(d),timestamp:e.uint.decode(d),flagsClock:1&e.uint.decode(d)?e.uint.decode(d):0})},j={preencode(d,o){e.uint.preencode(d,o.clock)},encode(d,o){e.uint.encode(d,o.clock)},decode:d=>({clock:e.uint.decode(d)})},E=e.frame(S),B=e.frame(F),N=e.frame(L),O=e.frame(j),V={preencode(e,d){E.preencode(e,d.devices),B.preencode(e,d.members),N.preencode(e,d.chat),O.preencode(e,d.files)},encode(e,d){E.encode(e,d.devices),B.encode(e,d.members),N.encode(e,d.chat),O.encode(e,d.files)},decode:e=>({devices:E.decode(e),members:B.decode(e),chat:N.decode(e),files:O.decode(e)})},U={Default:1,Broadcast:2,DirectMessage:3},J={preencode(e,d){e.end++},encode(d,o){if(o>3)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},z={preencode(d,n){const c=(n.roomType?1:0)|(n.isExperimental?2:0)|(n.isJoiningDisabled?4:0)|(n.isAppendingDisabled?8:0)|(n.isCallingDisabled?16:0)|(n.isMembershipEventsDisabled?32:0)|(o>=4&&n.isAttachmentsDisabled?64:0)|(o>=4&&n.isLinksDisabled?128:0)|(o>=5&&n.buildType?256:0);e.uint.preencode(d,c),n.roomType&&J.preencode(d,n.roomType),o>=5&&n.buildType&&Fp.preencode(d,n.buildType)},encode(d,n){const c=(n.roomType?1:0)|(n.isExperimental?2:0)|(n.isJoiningDisabled?4:0)|(n.isAppendingDisabled?8:0)|(n.isCallingDisabled?16:0)|(n.isMembershipEventsDisabled?32:0)|(o>=4&&n.isAttachmentsDisabled?64:0)|(o>=4&&n.isLinksDisabled?128:0)|(o>=5&&n.buildType?256:0);e.uint.encode(d,c),n.roomType&&J.encode(d,n.roomType),o>=5&&n.buildType&&Fp.encode(d,n.buildType)},decode(d){const n=e.uint.decode(d);return{roomType:1&n?J.decode(d):0,isExperimental:!!(2&n),isJoiningDisabled:!!(4&n),isAppendingDisabled:!!(8&n),isCallingDisabled:!!(16&n),isMembershipEventsDisabled:!!(32&n),isAttachmentsDisabled:o>=4&&!!(64&n),isLinksDisabled:o>=4&&!!(128&n),buildType:o>=5&&256&n?Fp.decode(d):null}}},W=e.frame(I),H=e.frame(z),G={preencode(d,o){W.preencode(d,o.abi),H.preencode(d,o.settings),e.uint.preencode(d,o.creationTime)},encode(d,o){W.encode(d,o.abi),H.encode(d,o.settings),e.uint.encode(d,o.creationTime)},decode:d=>({abi:W.decode(d),settings:H.decode(d),creationTime:e.uint.decode(d)})},Q={preencode(d,o){e.fixed32.preencode(d,o.seed)},encode(d,o){e.fixed32.encode(d,o.seed)},decode:d=>({seed:e.fixed32.decode(d)})},X={preencode(d,o){r.preencode(d,o.mailboxKeyPair),t.preencode(d,o.discoveryKeyPair),e.fixed32.preencode(d,o.wakeupTopic),e.fixed32.preencode(d,o.swarmTopic)},encode(d,o){r.encode(d,o.mailboxKeyPair),t.encode(d,o.discoveryKeyPair),e.fixed32.encode(d,o.wakeupTopic),e.fixed32.encode(d,o.swarmTopic)},decode:d=>({mailboxKeyPair:r.decode(d),discoveryKeyPair:t.decode(d),wakeupTopic:e.fixed32.decode(d),swarmTopic:e.fixed32.decode(d)})},Y={en:"en",it:"it",ru:"ru",es:"es",de:"de"},Z={preencode(e,d){e.end++},encode(d,o){switch(o){case"en":e.uint.encode(d,1);break;case"it":e.uint.encode(d,2);break;case"ru":e.uint.encode(d,3);break;case"es":e.uint.encode(d,4);break;case"de":e.uint.encode(d,5);break;default:throw new Error("Unknown enum")}},decode(d){switch(e.uint.decode(d)){case 1:return"en";case 2:return"it";case 3:return"ru";case 4:return"es";case 5:return"de";default:return null}}},$=e.array(Z),_=e.array(e.fixed32),ee={preencode(d,o){d.end++,o.title&&e.string.preencode(d,o.title),o.avatar&&Vp.preencode(d,o.avatar),o.description&&e.string.preencode(d,o.description),o.supportedLanguages&&$.preencode(d,o.supportedLanguages),o.blindPeers&&_.preencode(d,o.blindPeers)},encode(d,o){const n=(o.title?1:0)|(o.avatar?2:0)|(o.description?4:0)|(o.supportedLanguages?8:0)|(o.blindPeers?16:0);e.uint.encode(d,n),o.title&&e.string.encode(d,o.title),o.avatar&&Vp.encode(d,o.avatar),o.description&&e.string.encode(d,o.description),o.supportedLanguages&&$.encode(d,o.supportedLanguages),o.blindPeers&&_.encode(d,o.blindPeers)},decode(d){const o=e.uint.decode(d);return{title:1&o?e.string.decode(d):null,avatar:2&o?Vp.decode(d):null,description:4&o?e.string.decode(d):null,supportedLanguages:8&o?$.decode(d):null,blindPeers:16&o?_.decode(d):null}}},de={preencode(d,o){e.fixed32.preencode(d,o.key)},encode(d,o){e.fixed32.encode(d,o.key)},decode:d=>({key:e.fixed32.decode(d)})},oe=e.frame(a),ne=e.frame(de),ce={preencode(e,d){oe.preencode(e,d.header),ne.preencode(e,d.peer)},encode(e,d){oe.encode(e,d.header),ne.encode(e,d.peer)},decode:e=>({header:oe.decode(e),peer:ne.decode(e)})},re=oe,te={preencode(d,o){re.preencode(d,o.header),e.fixed32.preencode(d,o.key)},encode(d,o){re.encode(d,o.header),e.fixed32.encode(d,o.key)},decode:d=>({header:re.decode(d),key:e.fixed32.decode(d)})},ie={preencode(d,o){e.fixed32.preencode(d,o.memberKey),e.buffer.preencode(d,o.proof)},encode(d,o){e.fixed32.encode(d,o.memberKey),e.buffer.encode(d,o.proof)},decode:d=>({memberKey:e.fixed32.decode(d),proof:e.buffer.decode(d)})},ae={preencode(d,o){e.fixed32.preencode(d,o.id),e.buffer.preencode(d,o.response)},encode(d,o){e.fixed32.encode(d,o.id),e.buffer.encode(d,o.response)},decode:d=>({id:e.fixed32.decode(d),response:e.buffer.decode(d)})},se=e.frame(M),pe=e.frame(ae),ue={preencode(d,o){e.fixed32.preencode(d,o.key),e.fixed32.preencode(d,o.memberKey),se.preencode(d,o.status),Up.preencode(d,o.profile),d.end++,o.invitation&&pe.preencode(d,o.invitation)},encode(d,o){const n=o.invitation?1:0;e.fixed32.encode(d,o.key),e.fixed32.encode(d,o.memberKey),se.encode(d,o.status),Up.encode(d,o.profile),e.uint.encode(d,n),o.invitation&&pe.encode(d,o.invitation)},decode:d=>({key:e.fixed32.decode(d),memberKey:e.fixed32.decode(d),status:se.decode(d),profile:Up.decode(d),invitation:1&e.uint.decode(d)?pe.decode(d):null})},le={preencode(d,o){e.uint.preencode(d,o.timestamp),d.end++,o.mailbox&&e.fixed32.preencode(d,o.mailbox),o.displayName&&e.string.preencode(d,o.displayName),o.avatar&&Jp.preencode(d,o.avatar),o.username&&e.string.preencode(d,o.username)},encode(d,o){const n=(o.mailbox?1:0)|(o.displayName?2:0)|(o.avatar?4:0)|(o.username?8:0);e.uint.encode(d,o.timestamp),e.uint.encode(d,n),o.mailbox&&e.fixed32.encode(d,o.mailbox),o.displayName&&e.string.encode(d,o.displayName),o.avatar&&Jp.encode(d,o.avatar),o.username&&e.string.encode(d,o.username)},decode(d){const o=e.uint.decode(d),n=e.uint.decode(d);return{timestamp:o,mailbox:1&n?e.fixed32.decode(d):null,displayName:2&n?e.string.decode(d):null,avatar:4&n?Jp.decode(d):null,username:8&n?e.string.decode(d):null}}},fe={preencode(d,n){d.end++,n.swarmKey&&e.fixed32.preencode(d,n.swarmKey),n.name&&e.string.preencode(d,n.name),o>=5&&n.buildType&&Fp.preencode(d,n.buildType)},encode(d,n){const c=(n.swarmKey?1:0)|(n.name?2:0)|(n.isMobile?4:0)|(o>=5&&n.buildType?8:0);e.uint.encode(d,c),n.swarmKey&&e.fixed32.encode(d,n.swarmKey),n.name&&e.string.encode(d,n.name),o>=5&&n.buildType&&Fp.encode(d,n.buildType)},decode(d){const n=e.uint.decode(d);return{swarmKey:1&n?e.fixed32.decode(d):null,name:2&n?e.string.decode(d):null,isMobile:!!(4&n),buildType:o>=5&&8&n?Fp.decode(d):null}}},me=e.frame(le),ye={preencode(e,d){me.preencode(e,d.profile),ie.preencode(e,d.attestation)},encode(e,d){me.encode(e,d.profile),ie.encode(e,d.attestation)},decode:e=>({profile:me.decode(e),attestation:ie.decode(e)})},xe={preencode(e,d){zp.preencode(e,d.profile),ie.preencode(e,d.attestation)},encode(e,d){zp.encode(e,d.profile),ie.encode(e,d.attestation)},decode:e=>({profile:zp.decode(e),attestation:ie.decode(e)})},be=me,ve={preencode(e,d){be.preencode(e,d.profile),ie.preencode(e,d.attestation)},encode(e,d){be.encode(e,d.profile),ie.encode(e,d.attestation)},decode:e=>({profile:be.decode(e),attestation:ie.decode(e)})},ge={preencode(d,o){e.fixed32.preencode(d,o.id),e.buffer.preencode(d,o.data),e.buffer.preencode(d,o.signature)},encode(d,o){e.fixed32.encode(d,o.id),e.buffer.encode(d,o.data),e.buffer.encode(d,o.signature)},decode:d=>({id:e.fixed32.decode(d),data:e.buffer.decode(d),signature:e.buffer.decode(d)})},ke={preencode(d,o){e.fixed32.preencode(d,o.devicePublicKey)},encode(d,o){e.fixed32.encode(d,o.devicePublicKey)},decode:d=>({devicePublicKey:e.fixed32.decode(d)})},he={preencode(d,o){ie.preencode(d,o.privateProfileIdentity),e.buffer.preencode(d,o.deviceProof)},encode(d,o){ie.encode(d,o.privateProfileIdentity),e.buffer.encode(d,o.deviceProof)},decode:d=>({privateProfileIdentity:ie.decode(d),deviceProof:e.buffer.decode(d)})},Ke={preencode(d,o){e.fixed32.preencode(d,o.deviceKey),ie.preencode(d,o.privateProfileIdentity),e.buffer.preencode(d,o.deviceProof)},encode(d,o){e.fixed32.encode(d,o.deviceKey),ie.encode(d,o.privateProfileIdentity),e.buffer.encode(d,o.deviceProof)},decode:d=>({deviceKey:e.fixed32.decode(d),privateProfileIdentity:ie.decode(d),deviceProof:e.buffer.decode(d)})},we=e.frame(xe),Pe=e.frame(ye),Re=e.frame(ke),Te={preencode(d,o){e.fixed32.preencode(d,o.deviceKey),t.preencode(d,o.keyPair),we.preencode(d,o.device),Pe.preencode(d,o.member),d.end++,o.identity&&Re.preencode(d,o.identity)},encode(d,o){const n=o.identity?1:0;e.fixed32.encode(d,o.deviceKey),t.encode(d,o.keyPair),we.encode(d,o.device),Pe.encode(d,o.member),e.uint.encode(d,n),o.identity&&Re.encode(d,o.identity)},decode:d=>({deviceKey:e.fixed32.decode(d),keyPair:t.decode(d),device:we.decode(d),member:Pe.decode(d),identity:1&e.uint.decode(d)?Re.decode(d):null})},Ae=e.frame(Te),qe={preencode(d,o){e.fixed32.preencode(d,o.id),Ae.preencode(d,o.request),e.buffer.preencode(d,o.signature)},encode(d,o){e.fixed32.encode(d,o.id),Ae.encode(d,o.request),e.buffer.encode(d,o.signature)},decode:d=>({id:e.fixed32.decode(d),request:Ae.decode(d),signature:e.buffer.decode(d)})},Me=we,Ce=Pe,De={preencode(e,d){Me.preencode(e,d.device),e.end++,d.member&&Ce.preencode(e,d.member)},encode(d,o){const n=o.member?1:0;Me.encode(d,o.device),e.uint.encode(d,n),o.member&&Ce.encode(d,o.member)},decode:d=>({device:Me.decode(d),member:1&e.uint.decode(d)?Ce.decode(d):null})},Ie=e.frame(qe),Se=e.frame(De),Fe={preencode(e,d){e.end++,d.withInvitation&&Ie.preencode(e,d.withInvitation),d.withMemberProof&&Se.preencode(e,d.withMemberProof)},encode(d,o){const n=(o.withInvitation?1:0)|(o.withMemberProof?2:0);e.uint.encode(d,n),o.withInvitation&&Ie.encode(d,o.withInvitation),o.withMemberProof&&Se.encode(d,o.withMemberProof)},decode(d){const o=e.uint.decode(d);return{withInvitation:1&o?Ie.decode(d):null,withMemberProof:2&o?Se.decode(d):null}}},Le=e.frame(ge),je=e.frame(he),Ee={preencode(e,d){Le.preencode(e,d.signedKeys),e.end++,d.identity&&je.preencode(e,d.identity)},encode(d,o){const n=o.identity?1:0;Le.encode(d,o.signedKeys),e.uint.encode(d,n),o.identity&&je.encode(d,o.identity)},decode:d=>({signedKeys:Le.decode(d),identity:1&e.uint.decode(d)?je.decode(d):null})},Be={preencode(d,n){d.end++,n.expiration&&e.uint.preencode(d,n.expiration),o>=5&&n.buildType&&Fp.preencode(d,n.buildType)},encode(d,n){const c=(n.expiration?1:0)|(n.requiresConfirmation?2:0)|(n.canModerate?4:0)|(n.canAdmin?8:0)|(o>=5&&n.buildType?16:0);e.uint.encode(d,c),n.expiration&&e.uint.encode(d,n.expiration),o>=5&&n.buildType&&Fp.encode(d,n.buildType)},decode(d){const n=e.uint.decode(d);return{expiration:1&n?e.uint.decode(d):0,requiresConfirmation:!!(2&n),canModerate:!!(4&n),canAdmin:!!(8&n),buildType:o>=5&&16&n?Fp.decode(d):null}}},Ne=Le,Oe=e.frame(Be),Ve={preencode(d,o){e.fixed32.preencode(d,o.id),Ne.preencode(d,o.response),Oe.preencode(d,o.metadata),d.end++,o.anchor&&n.preencode(d,o.anchor)},encode(d,o){const c=(o.anchor?1:0)|(o.isActive?2:0);e.fixed32.encode(d,o.id),Ne.encode(d,o.response),Oe.encode(d,o.metadata),e.uint.encode(d,c),o.anchor&&n.encode(d,o.anchor)},decode(d){const o=e.fixed32.decode(d),c=Ne.decode(d),r=Oe.decode(d),t=e.uint.decode(d);return{id:o,response:c,metadata:r,anchor:1&t?n.decode(d):null,isActive:!!(2&t)}}},Ue=oe,Je=e.frame(Ve),ze={preencode(e,d){Ue.preencode(e,d.header),Je.preencode(e,d.invitation)},encode(e,d){Ue.encode(e,d.header),Je.encode(e,d.invitation)},decode:e=>({header:Ue.decode(e),invitation:Je.decode(e)})},We=oe,He={preencode(d,o){We.preencode(d,o.header),e.fixed32.preencode(d,o.id)},encode(d,o){We.encode(d,o.header),e.fixed32.encode(d,o.id)},decode:d=>({header:We.decode(d),id:e.fixed32.decode(d)})},Ge={preencode(d,o){e.fixed32.preencode(d,o.mailbox),e.fixed32.preencode(d,o.invitationSeed),n.preencode(d,o.anchor)},encode(d,o){e.fixed32.encode(d,o.mailbox),e.fixed32.encode(d,o.invitationSeed),n.encode(d,o.anchor)},decode:d=>({mailbox:e.fixed32.decode(d),invitationSeed:e.fixed32.decode(d),anchor:n.decode(d)})},Qe={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.fixed32.preencode(d,o.encryptionKey),e.fixed32.preencode(d,o.seed),d.end++,o.fastForwardTo&&e.fixed32.preencode(d,o.fastForwardTo)},encode(d,o){const n=o.fastForwardTo?1:0;e.fixed32.encode(d,o.roomKey),e.fixed32.encode(d,o.encryptionKey),e.fixed32.encode(d,o.seed),e.uint.encode(d,n),o.fastForwardTo&&e.fixed32.encode(d,o.fastForwardTo)},decode:d=>({roomKey:e.fixed32.decode(d),encryptionKey:e.fixed32.decode(d),seed:e.fixed32.decode(d),fastForwardTo:1&e.uint.decode(d)?e.fixed32.decode(d):null})},Xe={preencode(d,o){e.fixed32.preencode(d,o.mailbox),e.fixed32.preencode(d,o.invitationSeed),n.preencode(d,o.anchor),e.fixed32.preencode(d,o.identityPublicKey)},encode(d,o){e.fixed32.encode(d,o.mailbox),e.fixed32.encode(d,o.invitationSeed),n.encode(d,o.anchor),e.fixed32.encode(d,o.identityPublicKey)},decode:d=>({mailbox:e.fixed32.decode(d),invitationSeed:e.fixed32.decode(d),anchor:n.decode(d),identityPublicKey:e.fixed32.decode(d)})},Ye={preencode(d,o){e.fixed32.preencode(d,o.mailbox)},encode(d,o){e.fixed32.encode(d,o.mailbox)},decode:d=>({mailbox:e.fixed32.decode(d)})},Ze=e.frame(Ge),$e=e.frame(Xe),_e=e.frame(Ye),ed=e.frame(Qe),dd=e.array(e.ipv4Address),od={preencode(e,d){e.end++,d.room&&Ze.preencode(e,d.room),d.identity&&$e.preencode(e,d.identity),d.contact&&_e.preencode(e,d.contact),d.readonly&&ed.preencode(e,d.readonly),d.additionalNodes&&dd.preencode(e,d.additionalNodes),o>=5&&d.buildType&&Fp.preencode(e,d.buildType)},encode(d,n){const c=(n.room?1:0)|(n.identity?2:0)|(n.contact?4:0)|(n.readonly?8:0)|(n.additionalNodes?16:0)|(o>=5&&n.buildType?32:0);e.uint.encode(d,c),n.room&&Ze.encode(d,n.room),n.identity&&$e.encode(d,n.identity),n.contact&&_e.encode(d,n.contact),n.readonly&&ed.encode(d,n.readonly),n.additionalNodes&&dd.encode(d,n.additionalNodes),o>=5&&n.buildType&&Fp.encode(d,n.buildType)},decode(d){const n=e.uint.decode(d);return{room:1&n?Ze.decode(d):null,identity:2&n?$e.decode(d):null,contact:4&n?_e.decode(d):null,readonly:8&n?ed.decode(d):null,additionalNodes:16&n?dd.decode(d):null,buildType:o>=5&&32&n?Fp.decode(d):null}}},nd=oe,cd={preencode(d,o){nd.preencode(d,o.header),e.buffer.preencode(d,o.blindRequest)},encode(d,o){nd.encode(d,o.header),e.buffer.encode(d,o.blindRequest)},decode:d=>({header:nd.decode(d),blindRequest:e.buffer.decode(d)})},rd=oe,td={preencode(e,d){rd.preencode(e,d.header),e.end++,d.profile&&Wp.preencode(e,d.profile)},encode(d,o){const n=o.profile?1:0;rd.encode(d,o.header),e.uint.encode(d,n),o.profile&&Wp.encode(d,o.profile)},decode:d=>({header:rd.decode(d),profile:1&e.uint.decode(d)?Wp.decode(d):null})},id=oe,ad={preencode(d,o){id.preencode(d,o.header),e.fixed32.preencode(d,o.key)},encode(d,o){id.encode(d,o.header),e.fixed32.encode(d,o.key)},decode:d=>({header:id.decode(d),key:e.fixed32.decode(d)})},sd={preencode(e,d){},encode(e,d){},decode:e=>({})},pd=sd,ud=Ae,ld={preencode(d,o){e.fixed32.preencode(d,o.deviceKey),e.fixed32.preencode(d,o.id),ud.preencode(d,o.request)},encode(d,o){e.fixed32.encode(d,o.deviceKey),e.fixed32.encode(d,o.id),ud.encode(d,o.request)},decode:d=>({deviceKey:e.fixed32.decode(d),id:e.fixed32.decode(d),request:ud.decode(d)})},fd=oe,md=je,yd={preencode(d,o){fd.preencode(d,o.header),e.fixed32.preencode(d,o.deviceKey),d.end++,o.identity&&md.preencode(d,o.identity)},encode(d,o){const n=o.identity?1:0;fd.encode(d,o.header),e.fixed32.encode(d,o.deviceKey),e.uint.encode(d,n),o.identity&&md.encode(d,o.identity)},decode:d=>({header:fd.decode(d),deviceKey:e.fixed32.decode(d),identity:1&e.uint.decode(d)?md.decode(d):null})},xd=oe,bd={preencode(d,o){xd.preencode(d,o.header),e.fixed32.preencode(d,o.deviceKey)},encode(d,o){xd.encode(d,o.header),e.fixed32.encode(d,o.deviceKey)},decode:d=>({header:xd.decode(d),deviceKey:e.fixed32.decode(d)})},vd=e.frame(C),gd=me,kd={preencode(d,o){e.fixed32.preencode(d,o.key),vd.preencode(d,o.status),gd.preencode(d,o.profile)},encode(d,o){e.fixed32.encode(d,o.key),vd.encode(d,o.status),gd.encode(d,o.profile)},decode:d=>({key:e.fixed32.decode(d),status:vd.decode(d),profile:gd.decode(d)})},hd=vd,Kd=me,wd={preencode(d,o){e.fixed32.preencode(d,o.key),hd.preencode(d,o.status),Kd.preencode(d,o.profile),d.end++,o.proofs&&Hp.preencode(d,o.proofs)},encode(d,o){const n=o.proofs?1:0;e.fixed32.encode(d,o.key),hd.encode(d,o.status),Kd.encode(d,o.profile),e.uint.encode(d,n),o.proofs&&Hp.encode(d,o.proofs)},decode:d=>({key:e.fixed32.decode(d),status:hd.decode(d),profile:Kd.decode(d),proofs:1&e.uint.decode(d)?Hp.decode(d):null})},Pd={preencode(d,o){e.fixed32.preencode(d,o.key),d.end++,o.profileAttestation&&e.buffer.preencode(d,o.profileAttestation),o.latestReceipt&&e.buffer.preencode(d,o.latestReceipt)},encode(d,o){const n=(o.profileAttestation?1:0)|(o.latestReceipt?2:0);e.fixed32.encode(d,o.key),e.uint.encode(d,n),o.profileAttestation&&e.buffer.encode(d,o.profileAttestation),o.latestReceipt&&e.buffer.encode(d,o.latestReceipt)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d);return{key:o,profileAttestation:1&n?e.buffer.decode(d):null,latestReceipt:2&n?e.buffer.decode(d):null}}},Rd=oe,Td=Pe,Ad={preencode(e,d){Rd.preencode(e,d.header),Td.preencode(e,d.member)},encode(e,d){Rd.encode(e,d.header),Td.encode(e,d.member)},decode:e=>({header:Rd.decode(e),member:Td.decode(e)})},qd=oe,Md=e.frame(D),Cd={preencode(d,o){qd.preencode(d,o.header),e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.key),Md.preencode(d,o.status)},encode(d,o){qd.encode(d,o.header),e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.key),Md.encode(d,o.status)},decode:d=>({header:qd.decode(d),memberKey:e.fixed32.decode(d),key:e.uint.decode(d),status:Md.decode(d)})},Dd=oe,Id={preencode(d,o){Dd.preencode(d,o.header),e.fixed32.preencode(d,o.key),d.end++},encode(d,o){const n=(o.isModerator?1:0)|(o.isAdmin?2:0);Dd.encode(d,o.header),e.fixed32.encode(d,o.key),e.uint.encode(d,n)},decode(d){const o=Dd.decode(d),n=e.fixed32.decode(d),c=e.uint.decode(d);return{header:o,key:n,isModerator:!!(1&c),isAdmin:!!(2&c)}}},Sd=oe,Fd={preencode(d,o){Sd.preencode(d,o.header),e.fixed32.preencode(d,o.key)},encode(d,o){Sd.encode(d,o.header),e.fixed32.encode(d,o.key)},decode:d=>({header:Sd.decode(d),key:e.fixed32.decode(d)})},Ld={preencode(d,o){e.fixed32.preencode(d,o.key),e.uint.preencode(d,o.mentions)},encode(d,o){e.fixed32.encode(d,o.key),e.uint.encode(d,o.mentions)},decode:d=>({key:e.fixed32.decode(d),mentions:e.uint.decode(d)})},jd={preencode(d,o){d.end++,o.memberKey&&e.fixed32.preencode(d,o.memberKey)},encode(d,o){const n=o.memberKey?1:0;e.uint.encode(d,n),o.memberKey&&e.fixed32.encode(d,o.memberKey)},decode:d=>({memberKey:1&e.uint.decode(d)?e.fixed32.decode(d):null})},Ed=jd,Bd=jd,Nd={preencode(d,o){d.end++,o.from&&e.string.preencode(d,o.from),o.to&&e.string.preencode(d,o.to)},encode(d,o){const n=(o.from?1:0)|(o.to?2:0);e.uint.encode(d,n),o.from&&e.string.encode(d,o.from),o.to&&e.string.encode(d,o.to)},decode(d){const o=e.uint.decode(d);return{from:1&o?e.string.decode(d):null,to:2&o?e.string.decode(d):null}}},Od=e.frame(jd),Vd=e.frame(Ed),Ud=e.frame(Nd),Jd=e.frame(Bd),zd={preencode(d,n){const c=(n.memberJoined?1:0)|(n.memberLeft?2:0)|(n.titleChanged?4:0)|(n.callStarted?8:0)|(n.callHangup?16:0)|(n.callMissed?32:0)|(n.roomAvatarChanged?64:0)|(n.invitationCreated?128:0)|(n.memberRemoved?256:0)|(o>=3&&n.locationShared?512:0);e.uint.preencode(d,c),n.memberJoined&&Od.preencode(d,n.memberJoined),n.memberLeft&&Vd.preencode(d,n.memberLeft),n.titleChanged&&Ud.preencode(d,n.titleChanged),n.memberRemoved&&Jd.preencode(d,n.memberRemoved),o>=3&&n.locationShared&&Gp.preencode(d,n.locationShared)},encode(d,n){const c=(n.memberJoined?1:0)|(n.memberLeft?2:0)|(n.titleChanged?4:0)|(n.callStarted?8:0)|(n.callHangup?16:0)|(n.callMissed?32:0)|(n.roomAvatarChanged?64:0)|(n.invitationCreated?128:0)|(n.memberRemoved?256:0)|(o>=3&&n.locationShared?512:0);e.uint.encode(d,c),n.memberJoined&&Od.encode(d,n.memberJoined),n.memberLeft&&Vd.encode(d,n.memberLeft),n.titleChanged&&Ud.encode(d,n.titleChanged),n.memberRemoved&&Jd.encode(d,n.memberRemoved),o>=3&&n.locationShared&&Gp.encode(d,n.locationShared)},decode(d){const n=e.uint.decode(d);return{memberJoined:1&n?Od.decode(d):null,memberLeft:2&n?Vd.decode(d):null,titleChanged:4&n?Ud.decode(d):null,callStarted:!!(8&n),callHangup:!!(16&n),callMissed:!!(32&n),roomAvatarChanged:!!(64&n),invitationCreated:!!(128&n),memberRemoved:256&n?Jd.decode(d):null,locationShared:o>=3&&512&n?Gp.decode(d):null}}},Wd={preencode(e,d){e.end++,o>=3&&d.locationShared&&Qp.preencode(e,d.locationShared)},encode(d,n){const c=(n.callStarted?1:0)|(n.callHangup?2:0)|(n.callMissed?4:0)|(o>=3&&n.locationShared?8:0);e.uint.encode(d,c),o>=3&&n.locationShared&&Qp.encode(d,n.locationShared)},decode(d){const n=e.uint.decode(d);return{callStarted:!!(1&n),callHangup:!!(2&n),callMissed:!!(4&n),locationShared:o>=3&&8&n?Qp.decode(d):null}}},Hd={preencode(d,o){e.uint.preencode(d,o.start),e.uint.preencode(d,o.length)},encode(d,o){e.uint.encode(d,o.start),e.uint.encode(d,o.length)},decode:d=>({start:e.uint.decode(d),length:e.uint.decode(d)})},Gd=e.frame(Hd),Qd={preencode(d,o){Gd.preencode(d,o.range),e.string.preencode(d,o.content)},encode(d,o){Gd.encode(d,o.range),e.string.encode(d,o.content)},decode:d=>({range:Gd.decode(d),content:e.string.decode(d)})},Xd=Gd,Yd={preencode(d,o){Xd.preencode(d,o.range),e.fixed32.preencode(d,o.memberKey)},encode(d,o){Xd.encode(d,o.range),e.fixed32.encode(d,o.memberKey)},decode:d=>({range:Xd.decode(d),memberKey:e.fixed32.decode(d)})},Zd=Gd,$d={preencode(d,o){Zd.preencode(d,o.range),Z.preencode(d,o.language),e.string.preencode(d,o.text)},encode(d,o){Zd.encode(d,o.range),Z.encode(d,o.language),e.string.encode(d,o.text)},decode:d=>({range:Zd.decode(d),language:Z.decode(d),text:e.string.decode(d)})},_d=h,eo=e.array(e.uint),oo={preencode(d,o){d.end++,o.title&&e.string.preencode(d,o.title),o.description&&e.string.preencode(d,o.description),o.file&&_d.preencode(d,o.file),o.files&&eo.preencode(d,o.files)},encode(d,o){const n=(o.title?1:0)|(o.description?2:0)|(o.file?4:0)|(o.files?8:0);e.uint.encode(d,n),o.title&&e.string.encode(d,o.title),o.description&&e.string.encode(d,o.description),o.file&&_d.encode(d,o.file),o.files&&eo.encode(d,o.files)},decode(d){const o=e.uint.decode(d);return{title:1&o?e.string.decode(d):null,description:2&o?e.string.decode(d):null,file:4&o?_d.decode(d):null,files:8&o?eo.decode(d):null}}},no=Gd,co=e.frame(oo),ro={preencode(d,o){no.preencode(d,o.range),e.string.preencode(d,o.url),d.end++,o.preview&&co.preencode(d,o.preview)},encode(d,o){const n=o.preview?1:0;no.encode(d,o.range),e.string.encode(d,o.url),e.uint.encode(d,n),o.preview&&co.encode(d,o.preview)},decode:d=>({range:no.decode(d),url:e.string.decode(d),preview:1&e.uint.decode(d)?co.decode(d):null})},to=e.array(e.frame(Yd)),io=e.array(e.frame(ro)),ao=io,so=e.array(e.frame(Hd)),po=so,uo=so,lo=e.array(e.frame(Qd)),fo=so,mo=so,yo=e.array(e.frame($d)),xo={preencode(d,o){const n=(o.mention?1:0)|(o.httpLink?2:0)|(o.pearLink?4:0)|(o.bold?8:0)|(o.italic?16:0)|(o.code?32:0)|(o.emoji?64:0)|(o.codeBlock?128:0)|(o.strike?256:0)|(o.translation?512:0);e.uint.preencode(d,n),o.mention&&to.preencode(d,o.mention),o.httpLink&&io.preencode(d,o.httpLink),o.pearLink&&ao.preencode(d,o.pearLink),o.bold&&so.preencode(d,o.bold),o.italic&&po.preencode(d,o.italic),o.code&&uo.preencode(d,o.code),o.emoji&&lo.preencode(d,o.emoji),o.codeBlock&&fo.preencode(d,o.codeBlock),o.strike&&mo.preencode(d,o.strike),o.translation&&yo.preencode(d,o.translation)},encode(d,o){const n=(o.mention?1:0)|(o.httpLink?2:0)|(o.pearLink?4:0)|(o.bold?8:0)|(o.italic?16:0)|(o.code?32:0)|(o.emoji?64:0)|(o.codeBlock?128:0)|(o.strike?256:0)|(o.translation?512:0);e.uint.encode(d,n),o.mention&&to.encode(d,o.mention),o.httpLink&&io.encode(d,o.httpLink),o.pearLink&&ao.encode(d,o.pearLink),o.bold&&so.encode(d,o.bold),o.italic&&po.encode(d,o.italic),o.code&&uo.encode(d,o.code),o.emoji&&lo.encode(d,o.emoji),o.codeBlock&&fo.encode(d,o.codeBlock),o.strike&&mo.encode(d,o.strike),o.translation&&yo.encode(d,o.translation)},decode(d){const o=e.uint.decode(d);return{mention:1&o?to.decode(d):null,httpLink:2&o?io.decode(d):null,pearLink:4&o?ao.decode(d):null,bold:8&o?so.decode(d):null,italic:16&o?po.decode(d):null,code:32&o?uo.decode(d):null,emoji:64&o?lo.decode(d):null,codeBlock:128&o?fo.decode(d):null,strike:256&o?mo.decode(d):null,translation:512&o?yo.decode(d):null}}},bo=e.array(e.frame(k)),vo=e.frame(xo),go=e.frame(Wd),ko={preencode(d,o){d.end++,o.text&&e.string.preencode(d,o.text),o.files&&bo.preencode(d,o.files),o.display&&vo.preencode(d,o.display),o.replyTo&&c.preencode(d,o.replyTo),o.parent&&c.preencode(d,o.parent),o.event&&go.preencode(d,o.event)},encode(d,n){const r=(n.text?1:0)|(n.files?2:0)|(n.display?4:0)|(n.replyTo?8:0)|(n.parent?16:0)|(n.event?32:0)|(o>=3&&n.forwarded?64:0);e.uint.encode(d,r),n.text&&e.string.encode(d,n.text),n.files&&bo.encode(d,n.files),n.display&&vo.encode(d,n.display),n.replyTo&&c.encode(d,n.replyTo),n.parent&&c.encode(d,n.parent),n.event&&go.encode(d,n.event)},decode(d){const n=e.uint.decode(d);return{text:1&n?e.string.decode(d):null,files:2&n?bo.decode(d):null,display:4&n?vo.decode(d):null,replyTo:8&n?c.decode(d):null,parent:16&n?c.decode(d):null,event:32&n?go.decode(d):null,forwarded:o>=3&&!!(64&n)}}},ho=eo,Ko=vo,wo={preencode(d,o){d.end++,o.text&&e.string.preencode(d,o.text),o.files&&ho.preencode(d,o.files),o.display&&Ko.preencode(d,o.display),o.replyTo&&c.preencode(d,o.replyTo),o.parent&&c.preencode(d,o.parent)},encode(d,n){const r=(n.text?1:0)|(n.files?2:0)|(n.display?4:0)|(n.replyTo?8:0)|(n.parent?16:0)|(o>=3&&n.forwarded?32:0);e.uint.encode(d,r),n.text&&e.string.encode(d,n.text),n.files&&ho.encode(d,n.files),n.display&&Ko.encode(d,n.display),n.replyTo&&c.encode(d,n.replyTo),n.parent&&c.encode(d,n.parent)},decode(d){const n=e.uint.decode(d);return{text:1&n?e.string.decode(d):null,files:2&n?ho.decode(d):null,display:4&n?Ko.decode(d):null,replyTo:8&n?c.decode(d):null,parent:16&n?c.decode(d):null,forwarded:o>=3&&!!(32&n)}}},Po=bo,Ro=vo,To={preencode(d,o){d.end++,o.text&&e.string.preencode(d,o.text),o.files&&Po.preencode(d,o.files),o.display&&Ro.preencode(d,o.display),o.replyTo&&c.preencode(d,o.replyTo),o.parent&&c.preencode(d,o.parent)},encode(d,n){const r=(n.text?1:0)|(n.files?2:0)|(n.display?4:0)|(n.replyTo?8:0)|(n.parent?16:0)|(o>=3&&n.forwarded?32:0);e.uint.encode(d,r),n.text&&e.string.encode(d,n.text),n.files&&Po.encode(d,n.files),n.display&&Ro.encode(d,n.display),n.replyTo&&c.encode(d,n.replyTo),n.parent&&c.encode(d,n.parent)},decode(d){const n=e.uint.decode(d);return{text:1&n?e.string.decode(d):null,files:2&n?Po.decode(d):null,display:4&n?Ro.decode(d):null,replyTo:8&n?c.decode(d):null,parent:16&n?c.decode(d):null,forwarded:o>=3&&!!(32&n)}}},Ao={preencode(e,d){e.end++},encode(d,o){const n=(o.isEdited?1:0)|(o.isDeleted?2:0)|(o.isPinned?4:0);e.uint.encode(d,n)},decode(d){const o=e.uint.decode(d);return{isEdited:!!(1&o),isDeleted:!!(2&o),isPinned:!!(4&o)}}},qo={preencode(d,o){e.uint.preencode(d,o.thread),e.uint.preencode(d,o.index)},encode(d,o){e.uint.encode(d,o.thread),e.uint.encode(d,o.index)},decode:d=>({thread:e.uint.decode(d),index:e.uint.decode(d)})},Mo=e.frame(V),Co={preencode(d,o){e.uint.preencode(d,o.id),e.uint.preencode(d,o.count),d.end++,o.parent&&c.preencode(d,o.parent),o.stats&&Mo.preencode(d,o.stats)},encode(d,o){const n=(o.parent?1:0)|(o.stats?2:0);e.uint.encode(d,o.id),e.uint.encode(d,o.count),e.uint.encode(d,n),o.parent&&c.encode(d,o.parent),o.stats&&Mo.encode(d,o.stats)},decode(d){const o=e.uint.decode(d),n=e.uint.decode(d),r=e.uint.decode(d);return{id:o,count:n,parent:1&r?c.decode(d):null,stats:2&r?Mo.decode(d):null}}},Do=e.frame(Ao),Io=e.frame(wo),So=e.frame(zd),Fo={preencode(d,o){qo.preencode(d,o.id),c.preencode(d,o.oplog),e.uint.preencode(d,o.clock),e.uint.preencode(d,o.timestamp),d.end++,o.editedAt&&e.uint.preencode(d,o.editedAt),Do.preencode(d,o.status),o.message&&Io.preencode(d,o.message),o.event&&So.preencode(d,o.event)},encode(d,o){const n=(o.editedAt?1:0)|(o.message?2:0)|(o.event?4:0);qo.encode(d,o.id),c.encode(d,o.oplog),e.uint.encode(d,o.clock),e.uint.encode(d,o.timestamp),e.uint.encode(d,n),o.editedAt&&e.uint.encode(d,o.editedAt),Do.encode(d,o.status),o.message&&Io.encode(d,o.message),o.event&&So.encode(d,o.event)},decode(d){const o=qo.decode(d),n=c.decode(d),r=e.uint.decode(d),t=e.uint.decode(d),i=e.uint.decode(d);return{id:o,oplog:n,clock:r,timestamp:t,editedAt:1&i?e.uint.decode(d):0,status:Do.decode(d),message:2&i?Io.decode(d):null,event:4&i?So.decode(d):null}}},Lo=Do,jo=e.frame(To),Eo=So,Bo={preencode(d,o){qo.preencode(d,o.id),c.preencode(d,o.oplog),e.uint.preencode(d,o.clock),e.uint.preencode(d,o.timestamp),d.end++,o.editedAt&&e.uint.preencode(d,o.editedAt),Lo.preencode(d,o.status),o.message&&jo.preencode(d,o.message),o.event&&Eo.preencode(d,o.event)},encode(d,o){const n=(o.editedAt?1:0)|(o.message?2:0)|(o.event?4:0);qo.encode(d,o.id),c.encode(d,o.oplog),e.uint.encode(d,o.clock),e.uint.encode(d,o.timestamp),e.uint.encode(d,n),o.editedAt&&e.uint.encode(d,o.editedAt),Lo.encode(d,o.status),o.message&&jo.encode(d,o.message),o.event&&Eo.encode(d,o.event)},decode(d){const o=qo.decode(d),n=c.decode(d),r=e.uint.decode(d),t=e.uint.decode(d),i=e.uint.decode(d);return{id:o,oplog:n,clock:r,timestamp:t,editedAt:1&i?e.uint.decode(d):0,status:Lo.decode(d),message:2&i?jo.decode(d):null,event:4&i?Eo.decode(d):null}}},No=oe,Oo=e.frame(ko),Vo={preencode(e,d){No.preencode(e,d.header),Oo.preencode(e,d.message)},encode(e,d){No.encode(e,d.header),Oo.encode(e,d.message)},decode:e=>({header:No.decode(e),message:Oo.decode(e)})},Uo=oe,Jo={preencode(e,d){Uo.preencode(e,d.header),c.preencode(e,d.oplog)},encode(e,d){Uo.encode(e,d.header),c.encode(e,d.oplog)},decode:e=>({header:Uo.decode(e),oplog:c.decode(e)})},zo=oe,Wo=Oo,Ho={preencode(e,d){zo.preencode(e,d.header),c.preencode(e,d.oplog),Wo.preencode(e,d.message)},encode(e,d){zo.encode(e,d.header),c.encode(e,d.oplog),Wo.encode(e,d.message)},decode:e=>({header:zo.decode(e),oplog:c.decode(e),message:Wo.decode(e)})},Go=oe,Qo={preencode(e,d){Go.preencode(e,d.header),c.preencode(e,d.oplog),e.end++},encode(d,o){const n=o.isPinned?1:0;Go.encode(d,o.header),c.encode(d,o.oplog),e.uint.encode(d,n)},decode:d=>({header:Go.decode(d),oplog:c.decode(d),isPinned:!!(1&e.uint.decode(d))})},Xo={HttpLink:1,PearLink:2},Yo={preencode(e,d){e.end++},encode(d,o){if(o>2)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},Zo=oe,$o={preencode(d,o){Zo.preencode(d,o.header),c.preencode(d,o.oplog),e.uint.preencode(d,o.index),Xp.preencode(d,o.preview),d.end++,o.displayType&&Yo.preencode(d,o.displayType)},encode(d,o){const n=o.displayType?1:0;Zo.encode(d,o.header),c.encode(d,o.oplog),e.uint.encode(d,o.index),Xp.encode(d,o.preview),e.uint.encode(d,n),o.displayType&&Yo.encode(d,o.displayType)},decode:d=>({header:Zo.decode(d),oplog:c.decode(d),index:e.uint.decode(d),preview:Xp.decode(d),displayType:1&e.uint.decode(d)?Yo.decode(d):0})},_o={preencode(d,o){qo.preencode(d,o.id),e.fixed32.preencode(d,o.sender),e.uint.preencode(d,o.clock),e.string.preencode(d,o.reaction)},encode(d,o){qo.encode(d,o.id),e.fixed32.encode(d,o.sender),e.uint.encode(d,o.clock),e.string.encode(d,o.reaction)},decode:d=>({id:qo.decode(d),sender:e.fixed32.decode(d),clock:e.uint.decode(d),reaction:e.string.decode(d)})},en={preencode(d,o){e.string.preencode(d,o.text),e.uint.preencode(d,o.count)},encode(d,o){e.string.encode(d,o.text),e.uint.encode(d,o.count)},decode:d=>({text:e.string.decode(d),count:e.uint.decode(d)})},dn=e.array(e.frame(en)),on={preencode(d,o){qo.preencode(d,o.id),e.uint.preencode(d,o.total),dn.preencode(d,o.reactions),d.end++,o.editedAt&&e.uint.preencode(d,o.editedAt)},encode(d,o){const n=o.editedAt?1:0;qo.encode(d,o.id),e.uint.encode(d,o.total),dn.encode(d,o.reactions),e.uint.encode(d,n),o.editedAt&&e.uint.encode(d,o.editedAt)},decode:d=>({id:qo.decode(d),total:e.uint.decode(d),reactions:dn.decode(d),editedAt:1&e.uint.decode(d)?e.uint.decode(d):0})},nn=oe,cn={preencode(d,o){nn.preencode(d,o.header),c.preencode(d,o.oplog),e.string.preencode(d,o.reaction)},encode(d,o){nn.encode(d,o.header),c.encode(d,o.oplog),e.string.encode(d,o.reaction)},decode:d=>({header:nn.decode(d),oplog:c.decode(d),reaction:e.string.decode(d)})},rn=oe,tn={preencode(d,o){rn.preencode(d,o.header),c.preencode(d,o.oplog),e.string.preencode(d,o.reaction)},encode(d,o){rn.encode(d,o.header),c.encode(d,o.oplog),e.string.encode(d,o.reaction)},decode:d=>({header:rn.decode(d),oplog:c.decode(d),reaction:e.string.decode(d)})},an=oe,sn=e.frame(ee),pn={preencode(d,o){an.preencode(d,o.header),e.uint.preencode(d,o.key),sn.preencode(d,o.config)},encode(d,o){an.encode(d,o.header),e.uint.encode(d,o.key),sn.encode(d,o.config)},decode:d=>({header:an.decode(d),key:e.uint.decode(d),config:sn.decode(d)})},un={preencode(d,o){e.fixed32.preencode(d,o.memberKey),e.string.preencode(d,o.displayName),d.end++,o.avatar&&Yp.preencode(d,o.avatar)},encode(d,o){const n=o.avatar?1:0;e.fixed32.encode(d,o.memberKey),e.string.encode(d,o.displayName),e.uint.encode(d,n),o.avatar&&Yp.encode(d,o.avatar)},decode:d=>({memberKey:e.fixed32.decode(d),displayName:e.string.decode(d),avatar:1&e.uint.decode(d)?Yp.decode(d):null})},ln={preencode(d,o){e.fixed32.preencode(d,o.key),d.end++,o.username&&e.string.preencode(d,o.username)},encode(d,o){const n=o.username?1:0;e.fixed32.encode(d,o.key),e.uint.encode(d,n),o.username&&e.string.encode(d,o.username)},decode:d=>({key:e.fixed32.decode(d),username:1&e.uint.decode(d)?e.string.decode(d):null})},fn=e.frame(ln),mn={preencode(d,o){e.fixed32.preencode(d,o.publicKey),d.end++,o.discoveryCoreKey&&e.fixed32.preencode(d,o.discoveryCoreKey),o.userRegistry&&fn.preencode(d,o.userRegistry)},encode(d,o){const n=(o.discoveryCoreKey?1:0)|(o.userRegistry?2:0);e.fixed32.encode(d,o.publicKey),e.uint.encode(d,n),o.discoveryCoreKey&&e.fixed32.encode(d,o.discoveryCoreKey),o.userRegistry&&fn.encode(d,o.userRegistry)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d);return{publicKey:o,discoveryCoreKey:1&n?e.fixed32.decode(d):null,userRegistry:2&n?fn.decode(d):null}}},yn=oe,xn=e.frame(G),bn=e.frame(Q),vn=sn,gn=e.frame(mn),kn=we,hn=e.array(e.frame(ye)),Kn={preencode(e,d){yn.preencode(e,d.header),xn.preencode(e,d.digest),bn.preencode(e,d.capabilities),e.end++,d.config&&vn.preencode(e,d.config),d.identity&&gn.preencode(e,d.identity),d.bootstrapDevice&&kn.preencode(e,d.bootstrapDevice),d.initialMembers&&hn.preencode(e,d.initialMembers)},encode(d,o){const n=(o.config?1:0)|(o.identity?2:0)|(o.bootstrapDevice?4:0)|(o.initialMembers?8:0);yn.encode(d,o.header),xn.encode(d,o.digest),bn.encode(d,o.capabilities),e.uint.encode(d,n),o.config&&vn.encode(d,o.config),o.identity&&gn.encode(d,o.identity),o.bootstrapDevice&&kn.encode(d,o.bootstrapDevice),o.initialMembers&&hn.encode(d,o.initialMembers)},decode(d){const o=yn.decode(d),n=xn.decode(d),c=bn.decode(d),r=e.uint.decode(d);return{header:o,digest:n,capabilities:c,config:1&r?vn.decode(d):null,identity:2&r?gn.decode(d):null,bootstrapDevice:4&r?kn.decode(d):null,initialMembers:8&r?hn.decode(d):null}}},wn=oe,Pn={preencode(d,o){wn.preencode(d,o.header),e.uint.preencode(d,o.version)},encode(d,o){wn.encode(d,o.header),e.uint.encode(d,o.version)},decode:d=>({header:wn.decode(d),version:e.uint.decode(d)})},Rn=oe,Tn={preencode(d,n){Rn.preencode(d,n.header),e.uint.preencode(d,n.from),e.uint.preencode(d,n.to),d.end++,o>=5&&n.buildType&&Fp.preencode(d,n.buildType)},encode(d,n){const c=o>=5&&n.buildType?1:0;Rn.encode(d,n.header),e.uint.encode(d,n.from),e.uint.encode(d,n.to),e.uint.encode(d,c),o>=5&&n.buildType&&Fp.encode(d,n.buildType)},decode(d){const n=Rn.decode(d),c=e.uint.decode(d),r=e.uint.decode(d),t=d.start<d.end?e.uint.decode(d):0;return{header:n,from:c,to:r,buildType:o>=5&&1&t?Fp.decode(d):null}}},An={RoomType:1,IsExperimental:2,IsJoiningDisabled:3,IsAppendingDisabled:4,IsCallingDisabled:5,IsMembershipEventsDisabled:6,IsAttachmentsDisabled:7,IsLinksDisabled:8},qn={preencode(e,d){e.end++},encode(d,o){if(o>8)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},Mn=oe,Cn=H,Dn={preencode(d,o){Mn.preencode(d,o.header),e.uint.preencode(d,o.key),Cn.preencode(d,o.settings)},encode(d,o){Mn.encode(d,o.header),e.uint.encode(d,o.key),Cn.encode(d,o.settings)},decode:d=>({header:Mn.decode(d),key:e.uint.decode(d),settings:Cn.decode(d)})},In=oe,Sn={preencode(d,o){In.preencode(d,o.header),e.uint.preencode(d,o.value)},encode(d,o){In.encode(d,o.header),e.uint.encode(d,o.value)},decode:d=>({header:In.decode(d),value:e.uint.decode(d)})},Fn={preencode(d,o){e.uint.preencode(d,o.key),e.uint.preencode(d,o.value)},encode(d,o){e.uint.encode(d,o.key),e.uint.encode(d,o.value)},decode:d=>({key:e.uint.decode(d),value:e.uint.decode(d)})},Ln={Flag:1},jn={preencode(e,d){e.end++},encode(d,o){if(o>1)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},En={preencode(d,o){qo.preencode(d,o.id),e.fixed32.preencode(d,o.sender),e.uint.preencode(d,o.clock),jn.preencode(d,o.label)},encode(d,o){qo.encode(d,o.id),e.fixed32.encode(d,o.sender),e.uint.encode(d,o.clock),jn.encode(d,o.label)},decode:d=>({id:qo.decode(d),sender:e.fixed32.decode(d),clock:e.uint.decode(d),label:jn.decode(d)})},Bn=oe,Nn={preencode(e,d){Bn.preencode(e,d.header),c.preencode(e,d.oplog),jn.preencode(e,d.label)},encode(e,d){Bn.encode(e,d.header),c.encode(e,d.oplog),jn.encode(e,d.label)},decode:e=>({header:Bn.decode(e),oplog:c.decode(e),label:jn.decode(e)})},On=oe,Vn={preencode(e,d){On.preencode(e,d.header),c.preencode(e,d.oplog),jn.preencode(e,d.label)},encode(e,d){On.encode(e,d.header),c.encode(e,d.oplog),jn.encode(e,d.label)},decode:e=>({header:On.decode(e),oplog:c.decode(e),label:jn.decode(e)})},Un={preencode(d,o){jn.preencode(d,o.label),e.uint.preencode(d,o.count)},encode(d,o){jn.encode(d,o.label),e.uint.encode(d,o.count)},decode:d=>({label:jn.decode(d),count:e.uint.decode(d)})},Jn=e.array(e.frame(Un)),zn={preencode(d,o){qo.preencode(d,o.id),e.uint.preencode(d,o.total),Jn.preencode(d,o.labels),e.uint.preencode(d,o.editedAt),d.end++,o.flagsClock&&e.uint.preencode(d,o.flagsClock),o.version&&e.uint.preencode(d,o.version)},encode(d,o){const n=(o.flagsClock?1:0)|(o.version?2:0)|(o.isDeleted?4:0);qo.encode(d,o.id),e.uint.encode(d,o.total),Jn.encode(d,o.labels),e.uint.encode(d,o.editedAt),e.uint.encode(d,n),o.flagsClock&&e.uint.encode(d,o.flagsClock),o.version&&e.uint.encode(d,o.version)},decode(d){const o=qo.decode(d),n=e.uint.decode(d),c=Jn.decode(d),r=e.uint.decode(d),t=e.uint.decode(d);return{id:o,total:n,labels:c,editedAt:r,flagsClock:1&t?e.uint.decode(d):0,version:2&t?e.uint.decode(d):0,isDeleted:!!(4&t)}}},Wn=oe,Hn={preencode(d,o){Wn.preencode(d,o.header),e.uint.preencode(d,o.length)},encode(d,o){Wn.encode(d,o.header),e.uint.encode(d,o.length)},decode:d=>({header:Wn.decode(d),length:e.uint.decode(d)})},Gn={preencode(d,o){e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.length)},encode(d,o){e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.length)},decode:d=>({memberKey:e.fixed32.decode(d),length:e.uint.decode(d)})},Qn=de,Xn={preencode(d,o){e.fixed32.preencode(d,o.memberKey),Zp.preencode(d,o.status),d.end++,o.mailbox&&e.fixed32.preencode(d,o.mailbox),o.roomKey&&e.fixed32.preencode(d,o.roomKey)},encode(d,o){const n=(o.mailbox?1:0)|(o.roomKey?2:0);e.fixed32.encode(d,o.memberKey),Zp.encode(d,o.status),e.uint.encode(d,n),o.mailbox&&e.fixed32.encode(d,o.mailbox),o.roomKey&&e.fixed32.encode(d,o.roomKey)},decode(d){const o=e.fixed32.decode(d),n=Zp.decode(d),c=e.uint.decode(d);return{memberKey:o,status:n,mailbox:1&c?e.fixed32.decode(d):null,roomKey:2&c?e.fixed32.decode(d):null}}},Yn={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.buffer.preencode(d,o.encryptionKey),e.fixed32.preencode(d,o.seed),n.preencode(d,o.initiator),e.fixed32.preencode(d,o.fastForwardTo)},encode(d,o){e.fixed32.encode(d,o.roomKey),e.buffer.encode(d,o.encryptionKey),e.fixed32.encode(d,o.seed),n.encode(d,o.initiator),e.fixed32.encode(d,o.fastForwardTo)},decode:d=>({roomKey:e.fixed32.decode(d),encryptionKey:e.buffer.decode(d),seed:e.fixed32.decode(d),initiator:n.decode(d),fastForwardTo:e.fixed32.decode(d)})},Zn=e.array(e.frame(Yn)),$n=_,_n={preencode(e,d){Zn.preencode(e,d.sharedRooms),$n.preencode(e,d.blockedContacts)},encode(e,d){Zn.encode(e,d.sharedRooms),$n.encode(e,d.blockedContacts)},decode:e=>({sharedRooms:Zn.decode(e),blockedContacts:$n.decode(e)})},ec=gn,dc={preencode(e,d){ec.preencode(e,d.identity)},encode(e,d){ec.encode(e,d.identity)},decode:e=>({identity:ec.decode(e)})},oc={preencode(d,o){e.uint.preencode(d,o.rooms),e.uint.preencode(d,o.contacts)},encode(d,o){e.uint.encode(d,o.rooms),e.uint.encode(d,o.contacts)},decode:d=>({rooms:e.uint.decode(d),contacts:e.uint.decode(d)})},nc={preencode(d,o){e.uint.preencode(d,o.rooms),e.uint.preencode(d,o.contactRequests)},encode(d,o){e.uint.encode(d,o.rooms),e.uint.encode(d,o.contactRequests)},decode:d=>({rooms:e.uint.decode(d),contactRequests:e.uint.decode(d)})},cc={preencode(d,o){e.buffer.preencode(d,o.entropy)},encode(d,o){e.buffer.encode(d,o.entropy)},decode:d=>({entropy:e.buffer.decode(d)})},rc={preencode(d,o){e.fixed32.preencode(d,o.publicKey),e.fixed32.preencode(d,o.devicePublicKey),e.fixed32.preencode(d,o.writerKey)},encode(d,o){e.fixed32.encode(d,o.publicKey),e.fixed32.encode(d,o.devicePublicKey),e.fixed32.encode(d,o.writerKey)},decode:d=>({publicKey:e.fixed32.decode(d),devicePublicKey:e.fixed32.decode(d),writerKey:e.fixed32.decode(d)})},tc=e.frame(rc),ic={preencode(d,c){e.fixed32.preencode(d,c.id),e.fixed32.preencode(d,c.invitationSeed),e.fixed32.preencode(d,c.mailbox),t.preencode(d,c.responseKeyPair),n.preencode(d,c.initiator),n.preencode(d,c.inviter),d.end++,c.identity&&tc.preencode(d,c.identity),o>=5&&c.buildType&&Fp.preencode(d,c.buildType)},encode(d,c){const r=(c.identity?1:0)|(o>=5&&c.buildType?2:0);e.fixed32.encode(d,c.id),e.fixed32.encode(d,c.invitationSeed),e.fixed32.encode(d,c.mailbox),t.encode(d,c.responseKeyPair),n.encode(d,c.initiator),n.encode(d,c.inviter),e.uint.encode(d,r),c.identity&&tc.encode(d,c.identity),o>=5&&c.buildType&&Fp.encode(d,c.buildType)},decode(d){const c=e.fixed32.decode(d),r=e.fixed32.decode(d),i=e.fixed32.decode(d),a=t.decode(d),s=n.decode(d),p=n.decode(d),u=e.uint.decode(d);return{id:c,invitationSeed:r,mailbox:i,responseKeyPair:a,initiator:s,inviter:p,identity:1&u?tc.decode(d):null,buildType:o>=5&&2&u?Fp.decode(d):null}}},ac=oe,sc={preencode(d,o){ac.preencode(d,o.header),e.buffer.preencode(d,o.blindResponse)},encode(d,o){ac.encode(d,o.header),e.buffer.encode(d,o.blindResponse)},decode:d=>({header:ac.decode(d),blindResponse:e.buffer.decode(d)})},pc=oe,uc=e.frame(ic),lc={preencode(e,d){pc.preencode(e,d.header),uc.preencode(e,d.invitation)},encode(e,d){pc.encode(e,d.header),uc.encode(e,d.invitation)},decode:e=>({header:pc.decode(e),invitation:uc.decode(e)})},fc=oe,mc={preencode(d,o){fc.preencode(d,o.header),e.fixed32.preencode(d,o.id)},encode(d,o){fc.encode(d,o.header),e.fixed32.encode(d,o.id)},decode:d=>({header:fc.decode(d),id:e.fixed32.decode(d)})},yc={preencode(d,o){e.fixed32.preencode(d,o.publicKey),e.fixed32.preencode(d,o.devicePublicKey),d.end++,o.privateProfileKey&&e.fixed32.preencode(d,o.privateProfileKey),o.deviceKeyPair&&t.preencode(d,o.deviceKeyPair),e.buffer.preencode(d,o.deviceProof)},encode(d,o){const n=(o.privateProfileKey?1:0)|(o.deviceKeyPair?2:0);e.fixed32.encode(d,o.publicKey),e.fixed32.encode(d,o.devicePublicKey),e.uint.encode(d,n),o.privateProfileKey&&e.fixed32.encode(d,o.privateProfileKey),o.deviceKeyPair&&t.encode(d,o.deviceKeyPair),e.buffer.encode(d,o.deviceProof)},decode(d){const o=e.fixed32.decode(d),n=e.fixed32.decode(d),c=e.uint.decode(d);return{publicKey:o,devicePublicKey:n,privateProfileKey:1&c?e.fixed32.decode(d):null,deviceKeyPair:2&c?t.decode(d):null,deviceProof:e.buffer.decode(d)}}},xc={preencode(d,o){e.fixed32.preencode(d,o.publicKey),e.fixed32.preencode(d,o.writerKey),e.fixed32.preencode(d,o.devicePublicKey),d.end++,o.privateProfileKey&&e.fixed32.preencode(d,o.privateProfileKey)},encode(d,o){const n=o.privateProfileKey?1:0;e.fixed32.encode(d,o.publicKey),e.fixed32.encode(d,o.writerKey),e.fixed32.encode(d,o.devicePublicKey),e.uint.encode(d,n),o.privateProfileKey&&e.fixed32.encode(d,o.privateProfileKey)},decode:d=>({publicKey:e.fixed32.decode(d),writerKey:e.fixed32.decode(d),devicePublicKey:e.fixed32.decode(d),privateProfileKey:1&e.uint.decode(d)?e.fixed32.decode(d):null})},bc={preencode(e,d){e.end++},encode(d,n){const c=(n.isActive?1:0)|(n.isFullyMuted?2:0)|(n.isMentionsOnlyMuted?4:0)|(n.isReadOnly?8:0)|(o>=3&&n.isFavorite?16:0);e.uint.encode(d,c)},decode(d){const n=e.uint.decode(d);return{isActive:!!(1&n),isFullyMuted:!!(2&n),isMentionsOnlyMuted:!!(4&n),isReadOnly:!!(8&n),isFavorite:o>=3&&!!(16&n)}}},vc=e.frame(bc),gc=e.frame(yc),kc=tc,hc={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.buffer.preencode(d,o.encryptionKey),e.fixed32.preencode(d,o.mailbox),vc.preencode(d,o.status),e.uint.preencode(d,o.clock),d.end++,o.initiator&&n.preencode(d,o.initiator),o.fastForwardTo&&e.fixed32.preencode(d,o.fastForwardTo),o.identitySwap&&gc.preencode(d,o.identitySwap),o.identitySwapV2&&kc.preencode(d,o.identitySwapV2),o.contact&&e.fixed32.preencode(d,o.contact)},encode(d,o){const c=(o.initiator?1:0)|(o.fastForwardTo?2:0)|(o.identitySwap?4:0)|(o.identitySwapV2?8:0)|(o.contact?16:0);e.fixed32.encode(d,o.roomKey),e.buffer.encode(d,o.encryptionKey),e.fixed32.encode(d,o.mailbox),vc.encode(d,o.status),e.uint.encode(d,o.clock),e.uint.encode(d,c),o.initiator&&n.encode(d,o.initiator),o.fastForwardTo&&e.fixed32.encode(d,o.fastForwardTo),o.identitySwap&&gc.encode(d,o.identitySwap),o.identitySwapV2&&kc.encode(d,o.identitySwapV2),o.contact&&e.fixed32.encode(d,o.contact)},decode(d){const o=e.fixed32.decode(d),c=e.buffer.decode(d),r=e.fixed32.decode(d),t=vc.decode(d),i=e.uint.decode(d),a=e.uint.decode(d);return{roomKey:o,encryptionKey:c,mailbox:r,status:t,clock:i,initiator:1&a?n.decode(d):null,fastForwardTo:2&a?e.fixed32.decode(d):null,identitySwap:4&a?gc.decode(d):null,identitySwapV2:8&a?kc.decode(d):null,contact:16&a?e.fixed32.decode(d):null}}},Kc=oe,wc={preencode(d,o){Kc.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),e.buffer.preencode(d,o.encryptionKey),e.fixed32.preencode(d,o.mailbox),d.end++,o.fastForwardTo&&e.fixed32.preencode(d,o.fastForwardTo),o.initiator&&n.preencode(d,o.initiator),o.dm&&e.fixed32.preencode(d,o.dm)},encode(d,o){const c=(o.fastForwardTo?1:0)|(o.initiator?2:0)|(o.dm?4:0)|(o.isReadOnly?8:0);Kc.encode(d,o.header),e.fixed32.encode(d,o.roomKey),e.buffer.encode(d,o.encryptionKey),e.fixed32.encode(d,o.mailbox),e.uint.encode(d,c),o.fastForwardTo&&e.fixed32.encode(d,o.fastForwardTo),o.initiator&&n.encode(d,o.initiator),o.dm&&e.fixed32.encode(d,o.dm)},decode(d){const o=Kc.decode(d),c=e.fixed32.decode(d),r=e.buffer.decode(d),t=e.fixed32.decode(d),i=e.uint.decode(d);return{header:o,roomKey:c,encryptionKey:r,mailbox:t,fastForwardTo:1&i?e.fixed32.decode(d):null,initiator:2&i?n.decode(d):null,dm:4&i?e.fixed32.decode(d):null,isReadOnly:!!(8&i)}}},Pc=oe,Rc={preencode(d,o){Pc.preencode(d,o.header),e.fixed32.preencode(d,o.discoveryKey)},encode(d,o){Pc.encode(d,o.header),e.fixed32.encode(d,o.discoveryKey)},decode:d=>({header:Pc.decode(d),discoveryKey:e.fixed32.decode(d)})},Tc=oe,Ac=vc,qc={preencode(d,o){Tc.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),e.uint.preencode(d,o.key),Ac.preencode(d,o.status)},encode(d,o){Tc.encode(d,o.header),e.fixed32.encode(d,o.roomKey),e.uint.encode(d,o.key),Ac.encode(d,o.status)},decode:d=>({header:Tc.decode(d),roomKey:e.fixed32.decode(d),key:e.uint.decode(d),status:Ac.decode(d)})},Mc={preencode(e,d){e.end++},encode(d,o){const n=o.isBlocked?1:0;e.uint.encode(d,n)},decode:d=>({isBlocked:!!(1&e.uint.decode(d))})},Cc={preencode(d,o){e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.clock),$p.preencode(d,o.status),d.end++,o.mailbox&&e.fixed32.preencode(d,o.mailbox),o.roomKey&&e.fixed32.preencode(d,o.roomKey)},encode(d,o){const n=(o.mailbox?1:0)|(o.roomKey?2:0);e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.clock),$p.encode(d,o.status),e.uint.encode(d,n),o.mailbox&&e.fixed32.encode(d,o.mailbox),o.roomKey&&e.fixed32.encode(d,o.roomKey)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d),c=$p.decode(d),r=e.uint.decode(d);return{memberKey:o,clock:n,status:c,mailbox:1&r?e.fixed32.decode(d):null,roomKey:2&r?e.fixed32.decode(d):null}}},Dc=oe,Ic=e.frame(Xn),Sc={preencode(e,d){Dc.preencode(e,d.header),Ic.preencode(e,d.contact)},encode(e,d){Dc.encode(e,d.header),Ic.encode(e,d.contact)},decode:e=>({header:Dc.decode(e),contact:Ic.decode(e)})},Fc=oe,Lc={preencode(d,o){Fc.preencode(d,o.header),e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.key),_p.preencode(d,o.status)},encode(d,o){Fc.encode(d,o.header),e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.key),_p.encode(d,o.status)},decode:d=>({header:Fc.decode(d),memberKey:e.fixed32.decode(d),key:e.uint.decode(d),status:_p.decode(d)})},jc=oe,Ec={preencode(d,o){jc.preencode(d,o.header),e.fixed32.preencode(d,o.memberKey)},encode(d,o){jc.encode(d,o.header),e.fixed32.encode(d,o.memberKey)},decode:d=>({header:jc.decode(d),memberKey:e.fixed32.decode(d)})},Bc=oe,Nc={preencode(d,o){Bc.preencode(d,o.header),e.fixed32.preencode(d,o.memberKey)},encode(d,o){Bc.encode(d,o.header),e.fixed32.encode(d,o.memberKey)},decode:d=>({header:Bc.decode(d),memberKey:e.fixed32.decode(d)})},Oc={preencode(e,d){e.end++},encode(d,o){const n=(o.isPending?1:0)|(o.isAccepted?2:0)|(o.isRejected?4:0)|(o.isDiscarded?8:0)|(o.isSeen?16:0);e.uint.encode(d,n)},decode(d){const o=e.uint.decode(d);return{isPending:!!(1&o),isAccepted:!!(2&o),isRejected:!!(4&o),isDiscarded:!!(8&o),isSeen:!!(16&o)}}},Vc=Pe,Uc=e.frame(i),Jc={preencode(d,o){Vc.preencode(d,o.sender),Uc.preencode(d,o.keys),e.fixed32.preencode(d,o.mailbox),d.end++,o.message&&e.string.preencode(d,o.message)},encode(d,o){const n=o.message?1:0;Vc.encode(d,o.sender),Uc.encode(d,o.keys),e.fixed32.encode(d,o.mailbox),e.uint.encode(d,n),o.message&&e.string.encode(d,o.message)},decode:d=>({sender:Vc.decode(d),keys:Uc.decode(d),mailbox:e.fixed32.decode(d),message:1&e.uint.decode(d)?e.string.decode(d):null})},zc=e.frame(Jc),Wc={preencode(e,d){zc.preencode(e,d.body),ie.preencode(e,d.attestation)},encode(e,d){zc.encode(e,d.body),ie.encode(e,d.attestation)},decode:e=>({body:zc.decode(e),attestation:ie.decode(e)})},Hc=me,Gc=e.frame(Oc),Qc=Uc,Xc={preencode(d,o){e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.clock),Hc.preencode(d,o.sender),Gc.preencode(d,o.status),Qc.preencode(d,o.keys),e.fixed32.preencode(d,o.mailbox),d.end++,o.message&&e.string.preencode(d,o.message),o.sentAt&&e.uint.preencode(d,o.sentAt)},encode(d,o){const n=(o.message?1:0)|(o.sentAt?2:0);e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.clock),Hc.encode(d,o.sender),Gc.encode(d,o.status),Qc.encode(d,o.keys),e.fixed32.encode(d,o.mailbox),e.uint.encode(d,n),o.message&&e.string.encode(d,o.message),o.sentAt&&e.uint.encode(d,o.sentAt)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d),c=Hc.decode(d),r=Gc.decode(d),t=Qc.decode(d),i=e.fixed32.decode(d),a=e.uint.decode(d);return{memberKey:o,clock:n,sender:c,status:r,keys:t,mailbox:i,message:1&a?e.string.decode(d):null,sentAt:2&a?e.uint.decode(d):0}}},Yc=oe,Zc={preencode(d,o){Yc.preencode(d,o.header),e.buffer.preencode(d,o.blindRequest)},encode(d,o){Yc.encode(d,o.header),e.buffer.encode(d,o.blindRequest)},decode:d=>({header:Yc.decode(d),blindRequest:e.buffer.decode(d)})},$c=oe,_c=Gc,er={preencode(d,o){$c.preencode(d,o.header),e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.key),_c.preencode(d,o.status),d.end++,o.roomKey&&e.fixed32.preencode(d,o.roomKey)},encode(d,o){const n=o.roomKey?1:0;$c.encode(d,o.header),e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.key),_c.encode(d,o.status),e.uint.encode(d,n),o.roomKey&&e.fixed32.encode(d,o.roomKey)},decode:d=>({header:$c.decode(d),memberKey:e.fixed32.decode(d),key:e.uint.decode(d),status:_c.decode(d),roomKey:1&e.uint.decode(d)?e.fixed32.decode(d):null})},dr={preencode(d,o){e.uint.preencode(d,o.timestamp),e.fixed32.preencode(d,o.key),e.fixed32.preencode(d,o.mailbox)},encode(d,o){e.uint.encode(d,o.timestamp),e.fixed32.encode(d,o.key),e.fixed32.encode(d,o.mailbox)},decode:d=>({version:e.uint.decode(d),timestamp:e.uint.decode(d),key:e.fixed32.decode(d),mailbox:e.fixed32.decode(d)})},or={preencode(d,o){switch(e.uint.preencode(d,o.version),o.version){case 0:case 1:dr.preencode(d,o);break;default:throw new Error("Unsupported version")}},encode(d,o){switch(e.uint.encode(d,o.version),o.version){case 0:case 1:dr.encode(d,o);break;default:throw new Error("Unsupported version")}},decode(d){const o=d.start,n=e.uint.decode(d);switch(d.start=o,n){case 0:case 1:return dr.decode(d);default:throw new Error("Unsupported version")}}},nr={preencode(d,o){e.fixed32.preencode(d,o.deviceKey),e.fixed32.preencode(d,o.key)},encode(d,o){e.fixed32.encode(d,o.deviceKey),e.fixed32.encode(d,o.key)},decode:d=>({deviceKey:e.fixed32.decode(d),key:e.fixed32.decode(d)})},cr=oe,rr={preencode(d,o){cr.preencode(d,o.header),e.fixed32.preencode(d,o.key)},encode(d,o){cr.encode(d,o.header),e.fixed32.encode(d,o.key)},decode:d=>({header:cr.decode(d),key:e.fixed32.decode(d)})},tr=oe,ir={preencode(d,o){tr.preencode(d,o.header),e.fixed32.preencode(d,o.key)},encode(d,o){tr.encode(d,o.header),e.fixed32.encode(d,o.key)},decode:d=>({header:tr.decode(d),key:e.fixed32.decode(d)})},ar={preencode(e,d){e.end++},encode(d,o){const n=o.disableReadReceipts?1:0;e.uint.encode(d,n)},decode:d=>({disableReadReceipts:!!(1&e.uint.decode(d))})},sr={disableReadReceipts:"disableReadReceipts"},pr={preencode(e,d){e.end++},encode(d,o){if("disableReadReceipts"!==o)throw new Error("Unknown enum");e.uint.encode(d,1)},decode:d=>1===e.uint.decode(d)?"disableReadReceipts":null},ur=oe,lr=e.frame(ar),fr={preencode(e,d){ur.preencode(e,d.header),pr.preencode(e,d.key),lr.preencode(e,d.settings)},encode(e,d){ur.encode(e,d.header),pr.encode(e,d.key),lr.encode(e,d.settings)},decode:e=>({header:ur.decode(e),key:pr.decode(e),settings:lr.decode(e)})},mr={preencode(d,o){e.fixed32.preencode(d,o.discoveryPublicKey),e.uint.preencode(d,o.timestamp),d.end++,o.lastSynced&&e.uint.preencode(d,o.lastSynced)},encode(d,o){const n=(o.lastSynced?1:0)|(o.dirty?2:0);e.fixed32.encode(d,o.discoveryPublicKey),e.uint.encode(d,o.timestamp),e.uint.encode(d,n),o.lastSynced&&e.uint.encode(d,o.lastSynced)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d),c=e.uint.decode(d);return{discoveryPublicKey:o,timestamp:n,lastSynced:1&c?e.uint.decode(d):0,dirty:!!(2&c)}}},yr={preencode(d,o){e.uint.preencode(d,o.rooms),e.uint.preencode(d,o.activeRooms)},encode(d,o){e.uint.encode(d,o.rooms),e.uint.encode(d,o.activeRooms)},decode:d=>({rooms:e.uint.decode(d),activeRooms:e.uint.decode(d)})},xr=I,br=_,vr={preencode(e,d){e.end++,d.blockedMembers&&br.preencode(e,d.blockedMembers)},encode(d,o){const n=o.blockedMembers?1:0;e.uint.encode(d,n),o.blockedMembers&&br.encode(d,o.blockedMembers)},decode:d=>({blockedMembers:1&e.uint.decode(d)?br.decode(d):null})},gr=e.frame(X),kr=e.frame(vr),hr={preencode(d,o){e.buffer.preencode(d,o.encryptionKey),e.fixed32.preencode(d,o.seed),gr.preencode(d,o.capabilities),n.preencode(d,o.initiator),e.fixed32.preencode(d,o.fastForwardTo),d.end++,o.privateProfile&&kr.preencode(d,o.privateProfile)},encode(d,o){const c=o.privateProfile?1:0;e.buffer.encode(d,o.encryptionKey),e.fixed32.encode(d,o.seed),gr.encode(d,o.capabilities),n.encode(d,o.initiator),e.fixed32.encode(d,o.fastForwardTo),e.uint.encode(d,c),o.privateProfile&&kr.encode(d,o.privateProfile)},decode:d=>({encryptionKey:e.buffer.decode(d),seed:e.fixed32.decode(d),capabilities:gr.decode(d),initiator:n.decode(d),fastForwardTo:e.fixed32.decode(d),privateProfile:1&e.uint.decode(d)?kr.decode(d):null})},Kr={preencode(d,o){d.end++,o.count&&e.uint.preencode(d,o.count)},encode(d,o){const n=o.count?1:0;e.uint.encode(d,n),o.count&&e.uint.encode(d,o.count)},decode:d=>({count:1&e.uint.decode(d)?e.uint.decode(d):0})},wr=e.frame(hr),Pr={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.uint.preencode(d,o.priority),d.end++,o.v3&&wr.preencode(d,o.v3),o.timestamp&&e.uint.preencode(d,o.timestamp)},encode(d,o){const n=(o.v3?1:0)|(o.errored?2:0)|(o.timestamp?4:0);e.fixed32.encode(d,o.roomKey),e.uint.encode(d,o.priority),e.uint.encode(d,n),o.v3&&wr.encode(d,o.v3),o.timestamp&&e.uint.encode(d,o.timestamp)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d),c=e.uint.decode(d);return{roomKey:o,priority:n,v3:1&c?wr.decode(d):null,errored:!!(2&c),timestamp:4&c?e.uint.decode(d):0}}},Rr={preencode(e,d){e.end++},encode(d,o){const n=o.isConfirmed?1:0;e.uint.encode(d,n)},decode:d=>({isConfirmed:!!(1&e.uint.decode(d))})},Tr={preencode(d,o){e.fixed32.preencode(d,o.privateProfileKey)},encode(d,o){e.fixed32.encode(d,o.privateProfileKey)},decode:d=>({privateProfileKey:e.fixed32.decode(d)})},Ar=e.frame(Rr),qr=gc,Mr=e.frame(xc),Cr={preencode(d,o){e.fixed32.preencode(d,o.publicKey),e.fixed32.preencode(d,o.privateProfileKey),t.preencode(d,o.deviceKeyPair),e.buffer.preencode(d,o.deviceProof),Ar.preencode(d,o.status),d.end++,o.entropy&&e.buffer.preencode(d,o.entropy),o.swap&&qr.preencode(d,o.swap),o.swapV2&&Mr.preencode(d,o.swapV2)},encode(d,o){const n=(o.entropy?1:0)|(o.swap?2:0)|(o.swapV2?4:0);e.fixed32.encode(d,o.publicKey),e.fixed32.encode(d,o.privateProfileKey),t.encode(d,o.deviceKeyPair),e.buffer.encode(d,o.deviceProof),Ar.encode(d,o.status),e.uint.encode(d,n),o.entropy&&e.buffer.encode(d,o.entropy),o.swap&&qr.encode(d,o.swap),o.swapV2&&Mr.encode(d,o.swapV2)},decode(d){const o=e.fixed32.decode(d),n=e.fixed32.decode(d),c=t.decode(d),r=e.buffer.decode(d),i=Ar.decode(d),a=e.uint.decode(d);return{publicKey:o,privateProfileKey:n,deviceKeyPair:c,deviceProof:r,status:i,entropy:1&a?e.buffer.decode(d):null,swap:2&a?qr.decode(d):null,swapV2:4&a?Mr.decode(d):null}}},Dr={RestoreIdentity:1,CreateRoom:2,LeaveRoom:3,ClearRoom:4,JoinRoomInvitation:5,JoinRoomKeys:6,JoinRoomResponse:7,SendContactRequest:8,TestFastTask:9,TestSlowTask:10,TestErrorTask:11},Ir={preencode(e,d){e.end++},encode(d,o){if(o>11)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},Sr={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.buffer.preencode(d,o.encryptionKey),d.end++,o.fastForwardTo&&e.fixed32.preencode(d,o.fastForwardTo),o.initiator&&n.preencode(d,o.initiator)},encode(d,o){const c=(o.fastForwardTo?1:0)|(o.initiator?2:0);e.fixed32.encode(d,o.roomKey),e.buffer.encode(d,o.encryptionKey),e.uint.encode(d,c),o.fastForwardTo&&e.fixed32.encode(d,o.fastForwardTo),o.initiator&&n.encode(d,o.initiator)},decode(d){const o=e.fixed32.decode(d),c=e.buffer.decode(d),r=e.uint.decode(d);return{roomKey:o,encryptionKey:c,fastForwardTo:1&r?e.fixed32.decode(d):null,initiator:2&r?n.decode(d):null}}},Fr=uc,Lr={preencode(e,d){Fr.preencode(e,d.invitation)},encode(e,d){Fr.encode(e,d.invitation)},decode:e=>({invitation:Fr.decode(e)})},jr={preencode(d,o){e.fixed32.preencode(d,o.mailbox),t.preencode(d,o.keyPair),e.buffer.preencode(d,o.response)},encode(d,o){e.fixed32.encode(d,o.mailbox),t.encode(d,o.keyPair),e.buffer.encode(d,o.response)},decode:d=>({mailbox:e.fixed32.decode(d),keyPair:t.decode(d),response:e.buffer.decode(d)})},Er=de,Br={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.buffer.preencode(d,o.encryptionKey),d.end++,o.fastForwardTo&&e.fixed32.preencode(d,o.fastForwardTo),o.initiator&&n.preencode(d,o.initiator),o.mailbox&&e.fixed32.preencode(d,o.mailbox)},encode(d,o){const c=(o.fastForwardTo?1:0)|(o.initiator?2:0)|(o.mailbox?4:0);e.fixed32.encode(d,o.roomKey),e.buffer.encode(d,o.encryptionKey),e.uint.encode(d,c),o.fastForwardTo&&e.fixed32.encode(d,o.fastForwardTo),o.initiator&&n.encode(d,o.initiator),o.mailbox&&e.fixed32.encode(d,o.mailbox)},decode(d){const o=e.fixed32.decode(d),c=e.buffer.decode(d),r=e.uint.decode(d);return{roomKey:o,encryptionKey:c,fastForwardTo:1&r?e.fixed32.decode(d):null,initiator:2&r?n.decode(d):null,mailbox:4&r?e.fixed32.decode(d):null}}},Nr=e.frame(Br),Or={preencode(e,d){Nr.preencode(e,d.keys)},encode(e,d){Nr.encode(e,d.keys)},decode:e=>({keys:Nr.decode(e)})},Vr=e.frame(Kn),Ur={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.buffer.preencode(d,o.encryptionKey),d.end++,o.fastForwardTo&&e.fixed32.preencode(d,o.fastForwardTo),o.initiator&&n.preencode(d,o.initiator),o.mailbox&&e.fixed32.preencode(d,o.mailbox),o.keyPair&&t.preencode(d,o.keyPair),o.genesis&&Vr.preencode(d,o.genesis)},encode(d,o){const c=(o.fastForwardTo?1:0)|(o.initiator?2:0)|(o.mailbox?4:0)|(o.keyPair?8:0)|(o.genesis?16:0)|(o.isPrivateProfile?32:0);e.fixed32.encode(d,o.roomKey),e.buffer.encode(d,o.encryptionKey),e.uint.encode(d,c),o.fastForwardTo&&e.fixed32.encode(d,o.fastForwardTo),o.initiator&&n.encode(d,o.initiator),o.mailbox&&e.fixed32.encode(d,o.mailbox),o.keyPair&&t.encode(d,o.keyPair),o.genesis&&Vr.encode(d,o.genesis)},decode(d){const o=e.fixed32.decode(d),c=e.buffer.decode(d),r=e.uint.decode(d);return{roomKey:o,encryptionKey:c,fastForwardTo:1&r?e.fixed32.decode(d):null,initiator:2&r?n.decode(d):null,mailbox:4&r?e.fixed32.decode(d):null,keyPair:8&r?t.decode(d):null,genesis:16&r?Vr.decode(d):null,isPrivateProfile:!!(32&r)}}},Jr={preencode(d,o){e.fixed32.preencode(d,o.roomKey),d.end++},encode(d,o){const n=o.isGossiped?1:0;e.fixed32.encode(d,o.roomKey),e.uint.encode(d,n)},decode:d=>({roomKey:e.fixed32.decode(d),isGossiped:!!(1&e.uint.decode(d))})},zr={preencode(d,o){e.fixed32.preencode(d,o.roomKey)},encode(d,o){e.fixed32.encode(d,o.roomKey)},decode:d=>({roomKey:e.fixed32.decode(d)})},Wr={preencode(d,o){e.string.preencode(d,o.mnemonic),d.end++,o.profileDiscoveryTimeout&&e.uint.preencode(d,o.profileDiscoveryTimeout)},encode(d,o){const n=(o.profileDiscoveryTimeout?1:0)|(o.recover?2:0);e.string.encode(d,o.mnemonic),e.uint.encode(d,n),o.profileDiscoveryTimeout&&e.uint.encode(d,o.profileDiscoveryTimeout)},decode(d){const o=e.string.decode(d),n=e.uint.decode(d);return{mnemonic:o,profileDiscoveryTimeout:1&n?e.uint.decode(d):0,recover:!!(2&n)}}},Hr=e.frame(ve),Gr={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.fixed32.preencode(d,o.memberKey),d.end++,o.message&&e.string.preencode(d,o.message),o.contactInfo&&Hr.preencode(d,o.contactInfo)},encode(d,o){const n=(o.message?1:0)|(o.contactInfo?2:0);e.fixed32.encode(d,o.roomKey),e.fixed32.encode(d,o.memberKey),e.uint.encode(d,n),o.message&&e.string.encode(d,o.message),o.contactInfo&&Hr.encode(d,o.contactInfo)},decode(d){const o=e.fixed32.decode(d),n=e.fixed32.decode(d),c=e.uint.decode(d);return{roomKey:o,memberKey:n,message:1&c?e.string.decode(d):null,contactInfo:2&c?Hr.decode(d):null}}},Qr={preencode(d,o){e.fixed32.preencode(d,o.key),d.end++},encode(d,o){const n=o.isPrivateProfile?1:0;e.fixed32.encode(d,o.key),e.uint.encode(d,n)},decode:d=>({key:e.fixed32.decode(d),isPrivateProfile:!!(1&e.uint.decode(d))})},Xr=e.frame(Wr),Yr=e.frame(Ur),Zr=e.frame(Jr),$r=e.frame(zr),_r=e.frame(Lr),et=e.frame(Or),dt=e.frame(jr),ot=e.frame(Gr),nt=e.frame(Qr),ct={preencode(d,o){const n=(o.restoreIdentity?1:0)|(o.createRoom?2:0)|(o.leaveRoom?4:0)|(o.clearRoom?8:0)|(o.joinRoomInvitation?16:0)|(o.joinRoomKeys?32:0)|(o.joinRoomResponse?64:0)|(o.sendContactRequest?128:0)|(o.migrateV2Room?256:0);e.fixed32.preencode(d,o.discoveryKey),e.uint.preencode(d,o.priority),e.uint.preencode(d,o.timestamp),e.uint.preencode(d,o.type),e.uint.preencode(d,n),o.restoreIdentity&&Xr.preencode(d,o.restoreIdentity),o.createRoom&&Yr.preencode(d,o.createRoom),o.leaveRoom&&Zr.preencode(d,o.leaveRoom),o.clearRoom&&$r.preencode(d,o.clearRoom),o.joinRoomInvitation&&_r.preencode(d,o.joinRoomInvitation),o.joinRoomKeys&&et.preencode(d,o.joinRoomKeys),o.joinRoomResponse&&dt.preencode(d,o.joinRoomResponse),o.sendContactRequest&&ot.preencode(d,o.sendContactRequest),o.migrateV2Room&&nt.preencode(d,o.migrateV2Room)},encode(d,o){const n=(o.restoreIdentity?1:0)|(o.createRoom?2:0)|(o.leaveRoom?4:0)|(o.clearRoom?8:0)|(o.joinRoomInvitation?16:0)|(o.joinRoomKeys?32:0)|(o.joinRoomResponse?64:0)|(o.sendContactRequest?128:0)|(o.migrateV2Room?256:0);e.fixed32.encode(d,o.discoveryKey),e.uint.encode(d,o.priority),e.uint.encode(d,o.timestamp),e.uint.encode(d,o.type),e.uint.encode(d,n),o.restoreIdentity&&Xr.encode(d,o.restoreIdentity),o.createRoom&&Yr.encode(d,o.createRoom),o.leaveRoom&&Zr.encode(d,o.leaveRoom),o.clearRoom&&$r.encode(d,o.clearRoom),o.joinRoomInvitation&&_r.encode(d,o.joinRoomInvitation),o.joinRoomKeys&&et.encode(d,o.joinRoomKeys),o.joinRoomResponse&&dt.encode(d,o.joinRoomResponse),o.sendContactRequest&&ot.encode(d,o.sendContactRequest),o.migrateV2Room&&nt.encode(d,o.migrateV2Room)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d),c=e.uint.decode(d),r=e.uint.decode(d),t=e.uint.decode(d);return{discoveryKey:o,priority:n,timestamp:c,type:r,restoreIdentity:1&t?Xr.decode(d):null,createRoom:2&t?Yr.decode(d):null,leaveRoom:4&t?Zr.decode(d):null,clearRoom:8&t?$r.decode(d):null,joinRoomInvitation:16&t?_r.decode(d):null,joinRoomKeys:32&t?et.decode(d):null,joinRoomResponse:64&t?dt.decode(d):null,sendContactRequest:128&t?ot.decode(d):null,migrateV2Room:256&t?nt.decode(d):null}}},rt=Je,tt={preencode(d,o){e.buffer.preencode(d,o.seed),rt.preencode(d,o.invitation)},encode(d,o){e.buffer.encode(d,o.seed),rt.encode(d,o.invitation)},decode:d=>({seed:e.buffer.decode(d),invitation:rt.decode(d)})},it={preencode(e,d){e.end++},encode(d,o){const n=(o.isWritable?1:0)|(o.isReadable?2:0)|(o.isPrivateProfile?4:0)|(o.isRemoved?8:0);e.uint.encode(d,n)},decode(d){const o=e.uint.decode(d);return{isWritable:!!(1&o),isReadable:!!(2&o),isPrivateProfile:!!(4&o),isRemoved:!!(8&o)}}},at={preencode(d,o){e.uint.preencode(d,o.creation),e.uint.preencode(d,o.latestSync),e.uint.preencode(d,o.latestChatMessage)},encode(d,o){e.uint.encode(d,o.creation),e.uint.encode(d,o.latestSync),e.uint.encode(d,o.latestChatMessage)},decode:d=>({creation:e.uint.decode(d),latestSync:e.uint.decode(d),latestChatMessage:e.uint.decode(d)})},st=xn,pt=Mo,ut=e.frame(at),lt=gr,ft=e.frame(it),mt=e.frame(ue),yt=e.frame(wd),xt=sn,bt=gn,vt=e.frame(Bo),gt=_,kt=e.array(e.frame(Gn)),ht=e.frame(kd),Kt=vc,wt={preencode(d,n){const c=(n.selfDevice?1:0)|(n.selfMember?2:0)|(n.config?4:0)|(n.identity?8:0)|(n.lastMessage?16:0)|(n.dm?32:0)|(n.readLengths?64:0)|(n.lastMember?128:0)|(n.version?256:0)|(o>=3&&n.preferences?512:0)|(o>=4&&n.activeCall?1024:0);e.fixed32.preencode(d,n.roomKey),e.fixed32.preencode(d,n.discoveryKey),e.buffer.preencode(d,n.encryptionKey),st.preencode(d,n.digest),pt.preencode(d,n.stats),ut.preencode(d,n.timestamps),e.uint.preencode(d,n.fork),e.uint.preencode(d,n.length),e.fixed32.preencode(d,n.seed),lt.preencode(d,n.capabilities),ft.preencode(d,n.status),e.uint.preencode(d,c),n.selfDevice&&mt.preencode(d,n.selfDevice),n.selfMember&&yt.preencode(d,n.selfMember),n.config&&xt.preencode(d,n.config),n.identity&&bt.preencode(d,n.identity),n.lastMessage&&vt.preencode(d,n.lastMessage),n.dm&&gt.preencode(d,n.dm),n.readLengths&&kt.preencode(d,n.readLengths),n.lastMember&&ht.preencode(d,n.lastMember),n.version&&e.uint.preencode(d,n.version),o>=3&&n.preferences&&Kt.preencode(d,n.preferences),o>=4&&n.activeCall&&eu.preencode(d,n.activeCall)},encode(d,n){const c=(n.selfDevice?1:0)|(n.selfMember?2:0)|(n.config?4:0)|(n.identity?8:0)|(n.lastMessage?16:0)|(n.dm?32:0)|(n.readLengths?64:0)|(n.lastMember?128:0)|(n.version?256:0)|(o>=3&&n.preferences?512:0)|(o>=4&&n.activeCall?1024:0);e.fixed32.encode(d,n.roomKey),e.fixed32.encode(d,n.discoveryKey),e.buffer.encode(d,n.encryptionKey),st.encode(d,n.digest),pt.encode(d,n.stats),ut.encode(d,n.timestamps),e.uint.encode(d,n.fork),e.uint.encode(d,n.length),e.fixed32.encode(d,n.seed),lt.encode(d,n.capabilities),ft.encode(d,n.status),e.uint.encode(d,c),n.selfDevice&&mt.encode(d,n.selfDevice),n.selfMember&&yt.encode(d,n.selfMember),n.config&&xt.encode(d,n.config),n.identity&&bt.encode(d,n.identity),n.lastMessage&&vt.encode(d,n.lastMessage),n.dm&&gt.encode(d,n.dm),n.readLengths&&kt.encode(d,n.readLengths),n.lastMember&&ht.encode(d,n.lastMember),n.version&&e.uint.encode(d,n.version),o>=3&&n.preferences&&Kt.encode(d,n.preferences),o>=4&&n.activeCall&&eu.encode(d,n.activeCall)},decode(d){const n=e.fixed32.decode(d),c=e.fixed32.decode(d),r=e.buffer.decode(d),t=st.decode(d),i=pt.decode(d),a=ut.decode(d),s=e.uint.decode(d),p=e.uint.decode(d),u=e.fixed32.decode(d),l=lt.decode(d),f=ft.decode(d),m=e.uint.decode(d);return{roomKey:n,discoveryKey:c,encryptionKey:r,digest:t,stats:i,timestamps:a,fork:s,length:p,seed:u,capabilities:l,status:f,selfDevice:1&m?mt.decode(d):null,selfMember:2&m?yt.decode(d):null,config:4&m?xt.decode(d):null,identity:8&m?bt.decode(d):null,lastMessage:16&m?vt.decode(d):null,dm:32&m?gt.decode(d):null,readLengths:64&m?kt.decode(d):null,lastMember:128&m?ht.decode(d):null,version:256&m?e.uint.decode(d):0,preferences:o>=3&&512&m?Kt.decode(d):null,activeCall:o>=4&&1024&m?eu.decode(d):null}}},Pt=vc,Rt={preencode(d,o){e.fixed32.preencode(d,o.roomKey),Pt.preencode(d,o.status)},encode(d,o){e.fixed32.encode(d,o.roomKey),Pt.encode(d,o.status)},decode:d=>({roomKey:e.fixed32.decode(d),status:Pt.decode(d)})},Tt={preencode(d,o){e.fixed32.preencode(d,o.roomKey),d.end++,o.repairs&&e.uint.preencode(d,o.repairs)},encode(d,o){const n=o.repairs?1:0;e.fixed32.encode(d,o.roomKey),e.uint.encode(d,n),o.repairs&&e.uint.encode(d,o.repairs)},decode:d=>({roomKey:e.fixed32.decode(d),repairs:1&e.uint.decode(d)?e.uint.decode(d):0})},At={preencode(d,o){e.fixed32.preencode(d,o.mailbox),e.fixed32.preencode(d,o.key),d.end++,o.roomKey&&e.fixed32.preencode(d,o.roomKey),o.keyPair&&t.preencode(d,o.keyPair),o.responseKeyPair&&t.preencode(d,o.responseKeyPair)},encode(d,o){const n=(o.roomKey?1:0)|(o.keyPair?2:0)|(o.responseKeyPair?4:0);e.fixed32.encode(d,o.mailbox),e.fixed32.encode(d,o.key),e.uint.encode(d,n),o.roomKey&&e.fixed32.encode(d,o.roomKey),o.keyPair&&t.encode(d,o.keyPair),o.responseKeyPair&&t.encode(d,o.responseKeyPair)},decode(d){const o=e.fixed32.decode(d),n=e.fixed32.decode(d),c=e.uint.decode(d);return{mailbox:o,key:n,roomKey:1&c?e.fixed32.decode(d):null,keyPair:2&c?t.decode(d):null,responseKeyPair:4&c?t.decode(d):null}}},qt={preencode(d,o){e.fixed32.preencode(d,o.key),e.fixed32.preencode(d,o.responsePublicKey)},encode(d,o){e.fixed32.encode(d,o.key),e.fixed32.encode(d,o.responsePublicKey)},decode:d=>({key:e.fixed32.decode(d),responsePublicKey:e.fixed32.decode(d)})},Mt=me,Ct={preencode(d,o){e.fixed32.preencode(d,o.key),Mt.preencode(d,o.profile)},encode(d,o){e.fixed32.encode(d,o.key),Mt.encode(d,o.profile)},decode:d=>({key:e.fixed32.decode(d),profile:Mt.decode(d)})},Dt=mt,It={preencode(d,o){e.fixed32.preencode(d,o.roomKey),Dt.preencode(d,o.device)},encode(d,o){e.fixed32.encode(d,o.roomKey),Dt.encode(d,o.device)},decode:d=>({roomKey:e.fixed32.decode(d),device:Dt.decode(d)})},St=h,Ft={preencode(d,n){St.preencode(d,n.file),e.fixed32.preencode(d,n.roomKey),d.end++,n.encryptionKey&&e.buffer.preencode(d,n.encryptionKey),o>=4&&n.lastAccessed&&e.uint.preencode(d,n.lastAccessed),o>=4&&n.version&&e.uint.preencode(d,n.version)},encode(d,n){const c=(n.encryptionKey?1:0)|(n.cleared?2:0)|(n.own?4:0)|(o>=4&&n.lastAccessed?8:0)|(o>=4&&n.version?16:0);St.encode(d,n.file),e.fixed32.encode(d,n.roomKey),e.uint.encode(d,c),n.encryptionKey&&e.buffer.encode(d,n.encryptionKey),o>=4&&n.lastAccessed&&e.uint.encode(d,n.lastAccessed),o>=4&&n.version&&e.uint.encode(d,n.version)},decode(d){const n=St.decode(d),c=e.fixed32.decode(d),r=e.uint.decode(d);return{file:n,roomKey:c,encryptionKey:1&r?e.buffer.decode(d):null,cleared:!!(2&r),own:!!(4&r),lastAccessed:o>=4&&8&r?e.uint.decode(d):0,version:o>=4&&16&r?e.uint.decode(d):0}}},Lt={preencode(d,o){d.end++,o.key&&e.string.preencode(d,o.key),o.description&&e.string.preencode(d,o.description)},encode(d,o){const n=(o.key?1:0)|(o.value?2:0)|(o.description?4:0);e.uint.encode(d,n),o.key&&e.string.encode(d,o.key),o.description&&e.string.encode(d,o.description)},decode(d){const o=e.uint.decode(d);return{key:1&o?e.string.decode(d):null,value:!!(2&o),description:4&o?e.string.decode(d):null}}},jt=e.array(e.frame(Lt)),Et={preencode(e,d){e.end++,d.flags&&jt.preencode(e,d.flags)},encode(d,o){const n=o.flags?1:0;e.uint.encode(d,n),o.flags&&jt.encode(d,o.flags)},decode:d=>({flags:1&e.uint.decode(d)?jt.decode(d):null})},Bt=dd,Nt={preencode(d,o){d.end++,o.nodes&&Bt.preencode(d,o.nodes),o.concurrency&&e.uint.preencode(d,o.concurrency),o.maxWindow&&e.uint.preencode(d,o.maxWindow),o.randomPunchInterval&&e.uint.preencode(d,o.randomPunchInterval),o.connectionKeepAlive&&e.uint.preencode(d,o.connectionKeepAlive)},encode(d,o){const n=(o.nodes?1:0)|(o.concurrency?2:0)|(o.maxWindow?4:0)|(o.randomPunchInterval?8:0)|(o.connectionKeepAlive?16:0);e.uint.encode(d,n),o.nodes&&Bt.encode(d,o.nodes),o.concurrency&&e.uint.encode(d,o.concurrency),o.maxWindow&&e.uint.encode(d,o.maxWindow),o.randomPunchInterval&&e.uint.encode(d,o.randomPunchInterval),o.connectionKeepAlive&&e.uint.encode(d,o.connectionKeepAlive)},decode(d){const o=e.uint.decode(d);return{nodes:1&o?Bt.decode(d):null,concurrency:2&o?e.uint.decode(d):0,maxWindow:4&o?e.uint.decode(d):0,randomPunchInterval:8&o?e.uint.decode(d):0,connectionKeepAlive:16&o?e.uint.decode(d):0}}},Ot={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.uint.preencode(d,o.count)},encode(d,o){e.fixed32.encode(d,o.roomKey),e.uint.encode(d,o.count)},decode:d=>({roomKey:e.fixed32.decode(d),count:e.uint.decode(d)})},Vt={preencode(d,o){d.end++,o.roomKey&&e.fixed32.preencode(d,o.roomKey),o.coreKey&&e.fixed32.preencode(d,o.coreKey)},encode(d,o){const n=(o.roomKey?1:0)|(o.coreKey?2:0);e.uint.encode(d,n),o.roomKey&&e.fixed32.encode(d,o.roomKey),o.coreKey&&e.fixed32.encode(d,o.coreKey)},decode(d){const o=e.uint.decode(d);return{roomKey:1&o?e.fixed32.decode(d):null,coreKey:2&o?e.fixed32.decode(d):null}}},Ut=e.frame(Vt),Jt={preencode(d,o){e.string.preencode(d,o.code),e.string.preencode(d,o.message),e.string.preencode(d,o.stack),e.uint.preencode(d,o.timestamp),d.end++,o.details&&Ut.preencode(d,o.details)},encode(d,o){const n=o.details?1:0;e.string.encode(d,o.code),e.string.encode(d,o.message),e.string.encode(d,o.stack),e.uint.encode(d,o.timestamp),e.uint.encode(d,n),o.details&&Ut.encode(d,o.details)},decode:d=>({code:e.string.decode(d),message:e.string.decode(d),stack:e.string.decode(d),timestamp:e.uint.decode(d),details:1&e.uint.decode(d)?Ut.decode(d):null})},zt={RESUME:1,WAKEUP:2,PRESUSPEND:3,SUSPEND:4},Wt={preencode(e,d){e.end++},encode(d,o){if(o>4)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},Ht={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.uint.preencode(d,o.total)},encode(d,o){e.fixed32.encode(d,o.roomKey),e.uint.encode(d,o.total)},decode:d=>({roomKey:e.fixed32.decode(d),total:e.uint.decode(d)})},Gt=a,Qt={preencode(d,o){e.uint.preencode(d,o.duration)},encode(d,o){e.uint.encode(d,o.duration)},decode:d=>({duration:e.uint.decode(d)})},Xt=j,Yt=j,Zt=e.frame(Gt),$t={preencode(e,d){Zt.preencode(e,d.header)},encode(e,d){Zt.encode(e,d.header)},decode:e=>({header:Zt.decode(e)})},_t=e.frame(Qt),ei={preencode(e,d){_t.preencode(e,d.header)},encode(e,d){_t.encode(e,d.header)},decode:e=>({header:_t.decode(e)})},di=Zt,oi={preencode(e,d){di.preencode(e,d.header)},encode(e,d){di.encode(e,d.header)},decode:e=>({header:di.decode(e)})},ni=j,ci=Zt,ri=sn,ti=H,ii={preencode(e,d){ci.preencode(e,d.header),e.end++,d.config&&ri.preencode(e,d.config),d.settings&&ti.preencode(e,d.settings)},encode(d,o){const n=(o.config?1:0)|(o.settings?2:0);ci.encode(d,o.header),e.uint.encode(d,n),o.config&&ri.encode(d,o.config),o.settings&&ti.encode(d,o.settings)},decode(d){const o=ci.decode(d),n=e.uint.decode(d);return{header:o,config:1&n?ri.decode(d):null,settings:2&n?ti.decode(d):null}}},ai=_t,si={preencode(d,o){ai.preencode(d,o.header),d.end++,o.roomKey&&e.fixed32.preencode(d,o.roomKey)},encode(d,o){const n=o.roomKey?1:0;ai.encode(d,o.header),e.uint.encode(d,n),o.roomKey&&e.fixed32.encode(d,o.roomKey)},decode:d=>({header:ai.decode(d),roomKey:1&e.uint.decode(d)?e.fixed32.decode(d):null})},pi=Zt,ui={preencode(d,o){pi.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey)},encode(d,o){pi.encode(d,o.header),e.fixed32.encode(d,o.roomKey)},decode:d=>({header:pi.decode(d),roomKey:e.fixed32.decode(d)})},li=Zt,fi={preencode(d,o){li.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey)},encode(d,o){li.encode(d,o.header),e.fixed32.encode(d,o.roomKey)},decode:d=>({header:li.decode(d),roomKey:e.fixed32.decode(d)})},mi=Zt,yi={preencode(d,o){mi.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey)},encode(d,o){mi.encode(d,o.header),e.fixed32.encode(d,o.roomKey)},decode:d=>({header:mi.decode(d),roomKey:e.fixed32.decode(d)})},xi=_t,bi={preencode(e,d){xi.preencode(e,d.header)},encode(e,d){xi.encode(e,d.header)},decode:e=>({header:xi.decode(e)})},vi=Zt,gi=sn,ki={preencode(d,o){vi.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),e.uint.preencode(d,o.key),gi.preencode(d,o.config)},encode(d,o){vi.encode(d,o.header),e.fixed32.encode(d,o.roomKey),e.uint.encode(d,o.key),gi.encode(d,o.config)},decode:d=>({header:vi.decode(d),roomKey:e.fixed32.decode(d),key:e.uint.decode(d),config:gi.decode(d)})},hi=Zt,Ki=H,wi={preencode(d,o){hi.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),e.uint.preencode(d,o.key),Ki.preencode(d,o.settings)},encode(d,o){hi.encode(d,o.header),e.fixed32.encode(d,o.roomKey),e.uint.encode(d,o.key),Ki.encode(d,o.settings)},decode:d=>({header:hi.decode(d),roomKey:e.fixed32.decode(d),key:e.uint.decode(d),settings:Ki.decode(d)})},Pi=Zt,Ri=vc,Ti={preencode(d,o){Pi.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),e.uint.preencode(d,o.key),Ri.preencode(d,o.status)},encode(d,o){Pi.encode(d,o.header),e.fixed32.encode(d,o.roomKey),e.uint.encode(d,o.key),Ri.encode(d,o.status)},decode:d=>({header:Pi.decode(d),roomKey:e.fixed32.decode(d),key:e.uint.decode(d),status:Ri.decode(d)})},Ai=Zt,qi=Oo,Mi={preencode(d,o){Ai.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),qi.preencode(d,o.message)},encode(d,o){Ai.encode(d,o.header),e.fixed32.encode(d,o.roomKey),qi.encode(d,o.message)},decode:d=>({header:Ai.decode(d),roomKey:e.fixed32.decode(d),message:qi.decode(d)})},Ci=_t,Di={preencode(e,d){Ci.preencode(e,d.header)},encode(e,d){Ci.encode(e,d.header)},decode:e=>({header:Ci.decode(e)})},Ii=Zt,Si=Oo,Fi={preencode(d,o){Ii.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),c.preencode(d,o.id),Si.preencode(d,o.message)},encode(d,o){Ii.encode(d,o.header),e.fixed32.encode(d,o.roomKey),c.encode(d,o.id),Si.encode(d,o.message)},decode:d=>({header:Ii.decode(d),roomKey:e.fixed32.decode(d),id:c.decode(d),message:Si.decode(d)})},Li=_t,ji={preencode(e,d){Li.preencode(e,d.header)},encode(e,d){Li.encode(e,d.header)},decode:e=>({header:Li.decode(e)})},Ei=Zt,Bi={preencode(d,o){Ei.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),c.preencode(d,o.id)},encode(d,o){Ei.encode(d,o.header),e.fixed32.encode(d,o.roomKey),c.encode(d,o.id)},decode:d=>({header:Ei.decode(d),roomKey:e.fixed32.decode(d),id:c.decode(d)})},Ni=_t,Oi={preencode(e,d){Ni.preencode(e,d.header)},encode(e,d){Ni.encode(e,d.header)},decode:e=>({header:Ni.decode(e)})},Vi=Zt,Ui={preencode(d,o){Vi.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),c.preencode(d,o.id),e.string.preencode(d,o.reaction)},encode(d,o){Vi.encode(d,o.header),e.fixed32.encode(d,o.roomKey),c.encode(d,o.id),e.string.encode(d,o.reaction)},decode:d=>({header:Vi.decode(d),roomKey:e.fixed32.decode(d),id:c.decode(d),reaction:e.string.decode(d)})},Ji=_t,zi={preencode(e,d){Ji.preencode(e,d.header)},encode(e,d){Ji.encode(e,d.header)},decode:e=>({header:Ji.decode(e)})},Wi=Zt,Hi={preencode(d,o){Wi.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),c.preencode(d,o.id),e.string.preencode(d,o.reaction)},encode(d,o){Wi.encode(d,o.header),e.fixed32.encode(d,o.roomKey),c.encode(d,o.id),e.string.encode(d,o.reaction)},decode:d=>({header:Wi.decode(d),roomKey:e.fixed32.decode(d),id:c.decode(d),reaction:e.string.decode(d)})},Gi=_t,Qi={preencode(e,d){Gi.preencode(e,d.header)},encode(e,d){Gi.encode(e,d.header)},decode:e=>({header:Gi.decode(e)})},Xi={preencode(d,o){e.uint.preencode(d,o.clock),e.uint.preencode(d,o.start),e.uint.preencode(d,o.end)},encode(d,o){e.uint.encode(d,o.clock),e.uint.encode(d,o.start),e.uint.encode(d,o.end)},decode:d=>({clock:e.uint.decode(d),start:e.uint.decode(d),end:e.uint.decode(d)})},Yi=j,Zi=_,$i={preencode(d,o){e.uint.preencode(d,o.clock),Zi.preencode(d,o.keys)},encode(d,o){e.uint.encode(d,o.clock),Zi.encode(d,o.keys)},decode:d=>({clock:e.uint.decode(d),keys:Zi.decode(d)})},_i={preencode(d,o){e.uint.preencode(d,o.clock),e.fixed32.preencode(d,o.roomKey),d.end++,o.start&&e.uint.preencode(d,o.start),o.size&&e.uint.preencode(d,o.size)},encode(d,o){const n=(o.start?1:0)|(o.size?2:0)|(o.isBottom?4:0);e.uint.encode(d,o.clock),e.fixed32.encode(d,o.roomKey),e.uint.encode(d,n),o.start&&e.uint.encode(d,o.start),o.size&&e.uint.encode(d,o.size)},decode(d){const o=e.uint.decode(d),n=e.fixed32.decode(d),c=e.uint.decode(d);return{clock:o,roomKey:n,start:1&c?e.uint.decode(d):0,size:2&c?e.uint.decode(d):0,isBottom:!!(4&c)}}},ea=j,da={preencode(d,o){e.uint.preencode(d,o.clock),e.fixed32.preencode(d,o.roomKey),d.end++,o.offset&&e.fixed32.preencode(d,o.offset),o.count&&e.uint.preencode(d,o.count)},encode(d,o){const n=(o.offset?1:0)|(o.count?2:0);e.uint.encode(d,o.clock),e.fixed32.encode(d,o.roomKey),e.uint.encode(d,n),o.offset&&e.fixed32.encode(d,o.offset),o.count&&e.uint.encode(d,o.count)},decode(d){const o=e.uint.decode(d),n=e.fixed32.decode(d),c=e.uint.decode(d);return{clock:o,roomKey:n,offset:1&c?e.fixed32.decode(d):null,count:2&c?e.uint.decode(d):0}}},oa=j,na={preencode(d,o){e.uint.preencode(d,o.timestamp),e.fixed32.preencode(d,o.id)},encode(d,o){e.uint.encode(d,o.timestamp),e.fixed32.encode(d,o.id)},decode:d=>({timestamp:e.uint.decode(d),id:e.fixed32.decode(d)})},ca={Changed:1,Removed:2},ra={preencode(e,d){e.end++},encode(d,o){if(o>2)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},ta=_,ia={preencode(d,o){ta.preencode(d,o.keys),e.uint.preencode(d,o.start),e.uint.preencode(d,o.end),e.uint.preencode(d,o.total)},encode(d,o){ta.encode(d,o.keys),e.uint.encode(d,o.start),e.uint.encode(d,o.end),e.uint.encode(d,o.total)},decode:d=>({keys:ta.decode(d),start:e.uint.decode(d),end:e.uint.decode(d),total:e.uint.decode(d)})},aa={preencode(e,d){ra.preencode(e,d.type),na.preencode(e,d.room)},encode(e,d){ra.encode(e,d.type),na.encode(e,d.room)},decode:e=>({type:ra.decode(e),room:na.decode(e)})},sa=ft,pa=vd,ua={preencode(e,d){sa.preencode(e,d.device),e.end++,d.member&&pa.preencode(e,d.member)},encode(d,o){const n=o.member?1:0;sa.encode(d,o.device),e.uint.encode(d,n),o.member&&pa.encode(d,o.member)},decode:d=>({device:sa.decode(d),member:1&e.uint.decode(d)?pa.decode(d):null})},la=e.frame(ua),fa=xn,ma=sn,ya={preencode(d,o){e.fixed32.preencode(d,o.id),la.preencode(d,o.role),fa.preencode(d,o.digest),ma.preencode(d,o.config),d.end++,o.messageId&&c.preencode(d,o.messageId)},encode(d,o){const n=o.messageId?1:0;e.fixed32.encode(d,o.id),la.encode(d,o.role),fa.encode(d,o.digest),ma.encode(d,o.config),e.uint.encode(d,n),o.messageId&&c.encode(d,o.messageId)},decode:d=>({id:e.fixed32.decode(d),role:la.decode(d),digest:fa.decode(d),config:ma.decode(d),messageId:1&e.uint.decode(d)?c.decode(d):null})},xa=ft,ba={preencode(d,o){e.fixed32.preencode(d,o.id),xa.preencode(d,o.status)},encode(d,o){e.fixed32.encode(d,o.id),xa.encode(d,o.status)},decode:d=>({id:e.fixed32.decode(d),status:xa.decode(d)})},va=xn,ga={preencode(d,o){e.fixed32.preencode(d,o.id),va.preencode(d,o.digest)},encode(d,o){e.fixed32.encode(d,o.id),va.encode(d,o.digest)},decode:d=>({id:e.fixed32.decode(d),digest:va.decode(d)})},ka=sn,ha={preencode(d,o){e.fixed32.preencode(d,o.id),ka.preencode(d,o.config)},encode(d,o){e.fixed32.encode(d,o.id),ka.encode(d,o.config)},decode:d=>({id:e.fixed32.decode(d),config:ka.decode(d)})},Ka=la,wa={preencode(d,o){e.fixed32.preencode(d,o.id),d.end++,o.role&&Ka.preencode(d,o.role)},encode(d,o){const n=o.role?1:0;e.fixed32.encode(d,o.id),e.uint.encode(d,n),o.role&&Ka.encode(d,o.role)},decode:d=>({id:e.fixed32.decode(d),role:1&e.uint.decode(d)?Ka.decode(d):null})},Pa={preencode(d,o){e.fixed32.preencode(d,o.id),c.preencode(d,o.lastMessage)},encode(d,o){e.fixed32.encode(d,o.id),c.encode(d,o.lastMessage)},decode:d=>({id:e.fixed32.decode(d),lastMessage:c.decode(d)})},Ra=me,Ta={preencode(d,o){e.fixed32.preencode(d,o.key),Ra.preencode(d,o.profile)},encode(d,o){e.fixed32.encode(d,o.key),Ra.encode(d,o.profile)},decode:d=>({key:e.fixed32.decode(d),profile:Ra.decode(d)})},Aa=se,qa={preencode(d,o){e.fixed32.preencode(d,o.key),Aa.preencode(d,o.status),du.preencode(d,o.profile)},encode(d,o){e.fixed32.encode(d,o.key),Aa.encode(d,o.status),du.encode(d,o.profile)},decode:d=>({key:e.fixed32.decode(d),status:Aa.decode(d),profile:du.decode(d)})},Ma={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.fixed32.preencode(d,o.key)},encode(d,o){e.fixed32.encode(d,o.roomKey),e.fixed32.encode(d,o.key)},decode:d=>({roomKey:e.fixed32.decode(d),key:e.fixed32.decode(d)})},Ca=Ma,Da=e.array(c),Ia={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.uint.preencode(d,o.start),e.uint.preencode(d,o.size),e.uint.preencode(d,o.total),Da.preencode(d,o.ids),d.end++},encode(d,o){const n=o.isBottom?1:0;e.fixed32.encode(d,o.roomKey),e.uint.encode(d,o.start),e.uint.encode(d,o.size),e.uint.encode(d,o.total),Da.encode(d,o.ids),e.uint.encode(d,n)},decode:d=>({roomKey:e.fixed32.decode(d),start:e.uint.decode(d),size:e.uint.decode(d),total:e.uint.decode(d),ids:Da.decode(d),isBottom:!!(1&e.uint.decode(d))})},Sa={preencode(d,o){e.uint.preencode(d,o.sent),d.end++,o.edited&&e.uint.preencode(d,o.edited)},encode(d,o){const n=o.edited?1:0;e.uint.encode(d,o.sent),e.uint.encode(d,n),o.edited&&e.uint.encode(d,o.edited)},decode:d=>({sent:e.uint.decode(d),edited:1&e.uint.decode(d)?e.uint.decode(d):0})},Fa=e.frame(Sa),La=Do,ja=Io,Ea=So,Ba={preencode(d,o){c.preencode(d,o.id),e.uint.preencode(d,o.clock),Fa.preencode(d,o.timestamps),La.preencode(d,o.status),d.end++,o.message&&ja.preencode(d,o.message),o.event&&Ea.preencode(d,o.event)},encode(d,o){const n=(o.message?1:0)|(o.event?2:0);c.encode(d,o.id),e.uint.encode(d,o.clock),Fa.encode(d,o.timestamps),La.encode(d,o.status),e.uint.encode(d,n),o.message&&ja.encode(d,o.message),o.event&&Ea.encode(d,o.event)},decode(d){const o=c.decode(d),n=e.uint.decode(d),r=Fa.decode(d),t=La.decode(d),i=e.uint.decode(d);return{id:o,clock:n,timestamps:r,status:t,message:1&i?ja.decode(d):null,event:2&i?Ea.decode(d):null}}},Na=e.frame(Ba),Oa=vd,Va={preencode(d,o){Na.preencode(d,o.chat),e.fixed32.preencode(d,o.memberKey),Oa.preencode(d,o.role)},encode(d,o){Na.encode(d,o.chat),e.fixed32.encode(d,o.memberKey),Oa.encode(d,o.role)},decode:d=>({chat:Na.decode(d),memberKey:e.fixed32.decode(d),role:Oa.decode(d)})},Ua=Na,Ja={preencode(e,d){Ua.preencode(e,d.chat)},encode(e,d){Ua.encode(e,d.chat)},decode:e=>({chat:Ua.decode(e)})},za=Da,Wa={preencode(d,o){za.preencode(d,o.ids),e.fixed32.preencode(d,o.memberKey)},encode(d,o){za.encode(d,o.ids),e.fixed32.encode(d,o.memberKey)},decode:d=>({ids:za.decode(d),memberKey:e.fixed32.decode(d)})},Ha=Da,Ga=vd,Qa={preencode(e,d){Ha.preencode(e,d.ids),Ga.preencode(e,d.role)},encode(e,d){Ha.encode(e,d.ids),Ga.encode(e,d.role)},decode:e=>({ids:Ha.decode(e),role:Ga.decode(e)})},Xa=e.frame(on),Ya={preencode(e,d){c.preencode(e,d.id),Xa.preencode(e,d.reactions)},encode(e,d){c.encode(e,d.id),Xa.encode(e,d.reactions)},decode:e=>({id:c.decode(e),reactions:Xa.decode(e)})},Za=Xa,$a={preencode(e,d){c.preencode(e,d.id),Za.preencode(e,d.digest)},encode(e,d){c.encode(e,d.id),Za.encode(e,d.digest)},decode:e=>({id:c.decode(e),digest:Za.decode(e)})},_a=j,es=j,ds=e.array(e.frame(ic)),os={preencode(e,d){ds.preencode(e,d.invitations)},encode(e,d){ds.encode(e,d.invitations)},decode:e=>({invitations:ds.decode(e)})},ns=e.frame(ld),cs={preencode(d,o){e.fixed32.preencode(d,o.roomKey),ns.preencode(d,o.request)},encode(d,o){e.fixed32.encode(d,o.roomKey),ns.encode(d,o.request)},decode:d=>({roomKey:e.fixed32.decode(d),request:ns.decode(d)})},rs=e.array(e.frame(cs)),ts={preencode(e,d){rs.preencode(e,d.requests)},encode(e,d){rs.encode(e,d.requests)},decode:e=>({requests:rs.decode(e)})},is=ds,as=e.array(e.frame(ld)),ss={preencode(e,d){is.preencode(e,d.pendingInvitations),as.preencode(e,d.identityJoinRequests)},encode(e,d){is.encode(e,d.pendingInvitations),as.encode(e,d.identityJoinRequests)},decode:e=>({pendingInvitations:is.decode(e),identityJoinRequests:as.decode(e)})},ps=Zt,us={preencode(d,o){ps.preencode(d,o.header),e.string.preencode(d,o.invitation),d.end++},encode(d,o){const n=o.isIdentity?1:0;ps.encode(d,o.header),e.string.encode(d,o.invitation),e.uint.encode(d,n)},decode:d=>({header:ps.decode(d),invitation:e.string.decode(d),isIdentity:!!(1&e.uint.decode(d))})},ls=_t,fs={preencode(e,d){ls.preencode(e,d.header)},encode(e,d){ls.encode(e,d.header)},decode:e=>({header:ls.decode(e)})},ms={preencode(e,d){e.end++},encode(d,o){const n=(o.canModerate?1:0)|(o.canAdmin?2:0)|(o.requiresConfirmation?4:0)|(o.isReadOnly?8:0);e.uint.encode(d,n)},decode(d){const o=e.uint.decode(d);return{canModerate:!!(1&o),canAdmin:!!(2&o),requiresConfirmation:!!(4&o),isReadOnly:!!(8&o)}}},ys=Zt,xs=e.frame(ms),bs={preencode(d,o){ys.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),d.end++,o.permissions&&xs.preencode(d,o.permissions),o.expiration&&e.uint.preencode(d,o.expiration)},encode(d,o){const n=(o.permissions?1:0)|(o.expiration?2:0);ys.encode(d,o.header),e.fixed32.encode(d,o.roomKey),e.uint.encode(d,n),o.permissions&&xs.encode(d,o.permissions),o.expiration&&e.uint.encode(d,o.expiration)},decode(d){const o=ys.decode(d),n=e.fixed32.decode(d),c=e.uint.decode(d);return{header:o,roomKey:n,permissions:1&c?xs.decode(d):null,expiration:2&c?e.uint.decode(d):0}}},vs=_t,gs={preencode(d,o){vs.preencode(d,o.header),e.string.preencode(d,o.invitation)},encode(d,o){vs.encode(d,o.header),e.string.encode(d,o.invitation)},decode:d=>({header:vs.decode(d),invitation:e.string.decode(d)})},ks=Zt,hs={preencode(e,d){ks.preencode(e,d.header)},encode(e,d){ks.encode(e,d.header)},decode:e=>({header:ks.decode(e)})},Ks=_t,ws={preencode(d,o){Ks.preencode(d,o.header),e.string.preencode(d,o.invitation)},encode(d,o){Ks.encode(d,o.header),e.string.encode(d,o.invitation)},decode:d=>({header:Ks.decode(d),invitation:e.string.decode(d)})},Ps=Zt,Rs=ns,Ts={preencode(d,o){Ps.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),Rs.preencode(d,o.request)},encode(d,o){Ps.encode(d,o.header),e.fixed32.encode(d,o.roomKey),Rs.encode(d,o.request)},decode:d=>({header:Ps.decode(d),roomKey:e.fixed32.decode(d),request:Rs.decode(d)})},As=_t,qs={preencode(e,d){As.preencode(e,d.header)},encode(e,d){As.encode(e,d.header)},decode:e=>({header:As.decode(e)})},Ms=Zt,Cs=ns,Ds={preencode(d,o){Ms.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),Cs.preencode(d,o.request)},encode(d,o){Ms.encode(d,o.header),e.fixed32.encode(d,o.roomKey),Cs.encode(d,o.request)},decode:d=>({header:Ms.decode(d),roomKey:e.fixed32.decode(d),request:Cs.decode(d)})},Is=_t,Ss={preencode(e,d){Is.preencode(e,d.header)},encode(e,d){Is.encode(e,d.header)},decode:e=>({header:Is.decode(e)})},Fs=Zt,Ls={preencode(d,o){Fs.preencode(d,o.header),e.fixed32.preencode(d,o.id)},encode(d,o){Fs.encode(d,o.header),e.fixed32.encode(d,o.id)},decode:d=>({header:Fs.decode(d),id:e.fixed32.decode(d)})},js=_t,Es={preencode(e,d){js.preencode(e,d.header)},encode(e,d){js.encode(e,d.header)},decode:e=>({header:js.decode(e)})},Bs=Zt,Ns={preencode(d,o){Bs.preencode(d,o.header),e.string.preencode(d,o.displayName),d.end++,o.avatar&&e.buffer.preencode(d,o.avatar)},encode(d,o){const n=o.avatar?1:0;Bs.encode(d,o.header),e.string.encode(d,o.displayName),e.uint.encode(d,n),o.avatar&&e.buffer.encode(d,o.avatar)},decode:d=>({header:Bs.decode(d),displayName:e.string.decode(d),avatar:1&e.uint.decode(d)?e.buffer.decode(d):null})},Os=j,Vs=j,Us={preencode(e,d){e.end++},encode(d,o){const n=(o.isConfirmed?1:0)|(o.isLoggedOut?2:0);e.uint.encode(d,n)},decode(d){const o=e.uint.decode(d);return{isConfirmed:!!(1&o),isLoggedOut:!!(2&o)}}},Js=e.frame(Us),zs=_,Ws={preencode(d,o){e.fixed32.preencode(d,o.memberKey),Js.preencode(d,o.status),zs.preencode(d,o.deviceKeys)},encode(d,o){e.fixed32.encode(d,o.memberKey),Js.encode(d,o.status),zs.encode(d,o.deviceKeys)},decode:d=>({memberKey:e.fixed32.decode(d),status:Js.decode(d),deviceKeys:zs.decode(d)})},Hs={preencode(d,o){e.fixed32.preencode(d,o.memberKey)},encode(d,o){e.fixed32.encode(d,o.memberKey)},decode:d=>({memberKey:e.fixed32.decode(d)})},Gs={preencode(d,o){e.fixed32.preencode(d,o.deviceKey)},encode(d,o){e.fixed32.encode(d,o.deviceKey)},decode:d=>({deviceKey:e.fixed32.decode(d)})},Qs=Zt,Xs={preencode(d,o){Qs.preencode(d,o.header),e.string.preencode(d,o.password)},encode(d,o){Qs.encode(d,o.header),e.string.encode(d,o.password)},decode:d=>({header:Qs.decode(d),password:e.string.decode(d)})},Ys=_t,Zs={preencode(d,o){Ys.preencode(d,o.header),e.string.preencode(d,o.inspector)},encode(d,o){Ys.encode(d,o.header),e.string.encode(d,o.inspector)},decode:d=>({header:Ys.decode(d),inspector:e.string.decode(d)})},$s=_t,_s={preencode(e,d){$s.preencode(e,d.header)},encode(e,d){$s.encode(e,d.header)},decode:e=>({header:$s.decode(e)})},ep=_t,dp={preencode(e,d){ep.preencode(e,d.header)},encode(e,d){ep.encode(e,d.header)},decode:e=>({header:ep.decode(e)})},op={Flag:1},np={preencode(e,d){e.end++},encode(d,o){if(o>1)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},cp={preencode(d,o){e.fixed32.preencode(d,o.key),e.fixed32.preencode(d,o.sender),e.uint.preencode(d,o.clock),np.preencode(d,o.label)},encode(d,o){e.fixed32.encode(d,o.key),e.fixed32.encode(d,o.sender),e.uint.encode(d,o.clock),np.encode(d,o.label)},decode:d=>({key:e.fixed32.decode(d),sender:e.fixed32.decode(d),clock:e.uint.decode(d),label:np.decode(d)})},rp=oe,tp={preencode(d,o){rp.preencode(d,o.header),e.fixed32.preencode(d,o.key),np.preencode(d,o.label)},encode(d,o){rp.encode(d,o.header),e.fixed32.encode(d,o.key),np.encode(d,o.label)},decode:d=>({header:rp.decode(d),key:e.fixed32.decode(d),label:np.decode(d)})},ip={preencode(d,o){np.preencode(d,o.label),e.uint.preencode(d,o.count)},encode(d,o){np.encode(d,o.label),e.uint.encode(d,o.count)},decode:d=>({label:np.decode(d),count:e.uint.decode(d)})},ap=e.array(e.frame(ip)),sp={preencode(d,o){e.fixed32.preencode(d,o.key),e.uint.preencode(d,o.total),ap.preencode(d,o.labels),e.uint.preencode(d,o.editedAt),e.uint.preencode(d,o.flagsClock)},encode(d,o){e.fixed32.encode(d,o.key),e.uint.encode(d,o.total),ap.encode(d,o.labels),e.uint.encode(d,o.editedAt),e.uint.encode(d,o.flagsClock)},decode:d=>({key:e.fixed32.decode(d),total:e.uint.decode(d),labels:ap.decode(d),editedAt:e.uint.decode(d),flagsClock:e.uint.decode(d)})},pp=oe,up={preencode(d,o){pp.preencode(d,o.header),e.fixed32.preencode(d,o.deviceKey),e.fixed32.preencode(d,o.fromDeviceKey)},encode(d,o){pp.encode(d,o.header),e.fixed32.encode(d,o.deviceKey),e.fixed32.encode(d,o.fromDeviceKey)},decode:d=>({header:pp.decode(d),deviceKey:e.fixed32.decode(d),fromDeviceKey:e.fixed32.decode(d)})},lp={preencode(d,o){e.float64.preencode(d,o.latitude),e.float64.preencode(d,o.longitude)},encode(d,o){e.float64.encode(d,o.latitude),e.float64.encode(d,o.longitude)},decode:d=>({latitude:e.float64.decode(d),longitude:e.float64.decode(d)})},fp=oe,mp=_,yp={preencode(d,n){fp.preencode(d,n.header),e.fixed32.preencode(d,n.callKey),e.buffer.preencode(d,n.encryptionKey),d.end++,o>=4&&n.streams&&mp.preencode(d,n.streams),o>=4&&n.discoveryKey&&e.fixed32.preencode(d,n.discoveryKey),o>=4&&n.version&&e.uint.preencode(d,n.version)},encode(d,n){const c=(o>=4&&n.streams?1:0)|(o>=4&&n.discoveryKey?2:0)|(o>=4&&n.version?4:0);fp.encode(d,n.header),e.fixed32.encode(d,n.callKey),e.buffer.encode(d,n.encryptionKey),e.uint.encode(d,c),o>=4&&n.streams&&mp.encode(d,n.streams),o>=4&&n.discoveryKey&&e.fixed32.encode(d,n.discoveryKey),o>=4&&n.version&&e.uint.encode(d,n.version)},decode(d){const n=fp.decode(d),c=e.fixed32.decode(d),r=e.buffer.decode(d),t=e.uint.decode(d);return{header:n,callKey:c,encryptionKey:r,streams:o>=4&&1&t?mp.decode(d):null,discoveryKey:o>=4&&2&t?e.fixed32.decode(d):null,version:o>=4&&4&t?e.uint.decode(d):0}}},xp=oe,bp=_,vp={preencode(d,n){xp.preencode(d,n.header),e.fixed32.preencode(d,n.callKey),d.end++,o>=4&&n.streams&&bp.preencode(d,n.streams)},encode(d,n){const c=o>=4&&n.streams?1:0;xp.encode(d,n.header),e.fixed32.encode(d,n.callKey),e.uint.encode(d,c),o>=4&&n.streams&&bp.encode(d,n.streams)},decode(d){const n=xp.decode(d),c=e.fixed32.decode(d),r=e.uint.decode(d);return{header:n,callKey:c,streams:o>=4&&1&r?bp.decode(d):null}}},gp=oe,kp={preencode(d,o){gp.preencode(d,o.header),e.fixed32.preencode(d,o.callKey)},encode(d,o){gp.encode(d,o.header),e.fixed32.encode(d,o.callKey)},decode:d=>({header:gp.decode(d),callKey:e.fixed32.decode(d)})},hp=oe,Kp={preencode(d,o){hp.preencode(d,o.header),e.fixed32.preencode(d,o.callKey)},encode(d,o){hp.encode(d,o.header),e.fixed32.encode(d,o.callKey)},decode:d=>({header:hp.decode(d),callKey:e.fixed32.decode(d)})},wp=oe,Pp={preencode(d,o){wp.preencode(d,o.header),e.fixed32.preencode(d,o.callKey),e.fixed32.preencode(d,o.streamKey)},encode(d,o){wp.encode(d,o.header),e.fixed32.encode(d,o.callKey),e.fixed32.encode(d,o.streamKey)},decode:d=>({header:wp.decode(d),callKey:e.fixed32.decode(d),streamKey:e.fixed32.decode(d)})},Rp=oe,Tp={preencode(d,o){Rp.preencode(d,o.header),e.fixed32.preencode(d,o.callKey),e.fixed32.preencode(d,o.streamKey)},encode(d,o){Rp.encode(d,o.header),e.fixed32.encode(d,o.callKey),e.fixed32.encode(d,o.streamKey)},decode:d=>({header:Rp.decode(d),callKey:e.fixed32.decode(d),streamKey:e.fixed32.decode(d)})},Ap={preencode(d,n){e.fixed32.preencode(d,n.callKey),e.buffer.preencode(d,n.encryptionKey),e.uint.preencode(d,n.createdAt),d.end++,o>=4&&n.endedAt&&e.uint.preencode(d,n.endedAt),o>=4&&n.discoveryKey&&e.fixed32.preencode(d,n.discoveryKey),o>=4&&n.version&&e.uint.preencode(d,n.version)},encode(d,n){const c=(o>=4&&n.endedAt?1:0)|(o>=4&&n.discoveryKey?2:0)|(o>=4&&n.version?4:0);e.fixed32.encode(d,n.callKey),e.buffer.encode(d,n.encryptionKey),e.uint.encode(d,n.createdAt),e.uint.encode(d,c),o>=4&&n.endedAt&&e.uint.encode(d,n.endedAt),o>=4&&n.discoveryKey&&e.fixed32.encode(d,n.discoveryKey),o>=4&&n.version&&e.uint.encode(d,n.version)},decode(d){const n=e.fixed32.decode(d),c=e.buffer.decode(d),r=e.uint.decode(d),t=e.uint.decode(d);return{callKey:n,encryptionKey:c,createdAt:r,endedAt:o>=4&&1&t?e.uint.decode(d):0,discoveryKey:o>=4&&2&t?e.fixed32.decode(d):null,version:o>=4&&4&t?e.uint.decode(d):0}}},qp={preencode(d,o){e.fixed32.preencode(d,o.callKey),e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.createdAt)},encode(d,o){e.fixed32.encode(d,o.callKey),e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.createdAt)},decode:d=>({callKey:e.fixed32.decode(d),memberKey:e.fixed32.decode(d),createdAt:e.uint.decode(d)})},Mp={preencode(d,n){e.fixed32.preencode(d,n.callKey),e.fixed32.preencode(d,n.deviceKey),e.fixed32.preencode(d,n.memberKey),e.uint.preencode(d,n.createdAt),d.end++,o>=4&&n.swarmKey&&e.fixed32.preencode(d,n.swarmKey)},encode(d,n){const c=o>=4&&n.swarmKey?1:0;e.fixed32.encode(d,n.callKey),e.fixed32.encode(d,n.deviceKey),e.fixed32.encode(d,n.memberKey),e.uint.encode(d,n.createdAt),e.uint.encode(d,c),o>=4&&n.swarmKey&&e.fixed32.encode(d,n.swarmKey)},decode(d){const n=e.fixed32.decode(d),c=e.fixed32.decode(d),r=e.fixed32.decode(d),t=e.uint.decode(d),i=e.uint.decode(d);return{callKey:n,deviceKey:c,memberKey:r,createdAt:t,swarmKey:o>=4&&1&i?e.fixed32.decode(d):null}}},Cp={preencode(d,o){e.fixed32.preencode(d,o.callKey),e.fixed32.preencode(d,o.deviceKey),e.buffer.preencode(d,o.streamKey),e.uint.preencode(d,o.createdAt)},encode(d,o){e.fixed32.encode(d,o.callKey),e.fixed32.encode(d,o.deviceKey),e.buffer.encode(d,o.streamKey),e.uint.encode(d,o.createdAt)},decode:d=>({callKey:e.fixed32.decode(d),deviceKey:e.fixed32.decode(d),streamKey:e.buffer.decode(d),createdAt:e.uint.decode(d)})},Dp={preencode(d,n){e.fixed32.preencode(d,n.callKey),d.end++,o>=4&&n.selfDeviceKey&&e.fixed32.preencode(d,n.selfDeviceKey)},encode(d,n){const c=o>=4&&n.selfDeviceKey?1:0;e.fixed32.encode(d,n.callKey),e.uint.encode(d,c),o>=4&&n.selfDeviceKey&&e.fixed32.encode(d,n.selfDeviceKey)},decode(d){const n=e.fixed32.decode(d),c=e.uint.decode(d);return{callKey:n,selfDeviceKey:o>=4&&1&c?e.fixed32.decode(d):null}}},Ip={preencode(d,o){e.uint.preencode(d,o.lastCleared)},encode(d,o){e.uint.encode(d,o.lastCleared)},decode:d=>({lastCleared:e.uint.decode(d)})},Sp={Nightly:"Nightly",Internal:"Internal",Production:"Production"},Fp={preencode(e,d){e.end++},encode(d,o){switch(o){case"Nightly":e.uint.encode(d,1);break;case"Internal":e.uint.encode(d,2);break;case"Production":e.uint.encode(d,3);break;default:throw new Error("Unknown enum")}},decode(d){switch(e.uint.decode(d)){case 1:return"Nightly";case 2:return"Internal";case 3:return"Production";default:return null}}},Lp=oe,jp={preencode(e,d){Lp.preencode(e,d.header)},encode(e,d){Lp.encode(e,d.header)},decode:e=>({header:Lp.decode(e)})},Ep=oe,Bp={preencode(e,d){Ep.preencode(e,d.header)},encode(e,d){Ep.encode(e,d.header)},decode:e=>({header:Ep.decode(e)})},Np={preencode(d,n){Fp.preencode(d,n.buildType),d.end++,o>=6&&n.latestOfflineAbi&&e.uint.preencode(d,n.latestOfflineAbi)},encode(d,n){const c=o>=6&&n.latestOfflineAbi?1:0;Fp.encode(d,n.buildType),e.uint.encode(d,c),o>=6&&n.latestOfflineAbi&&e.uint.encode(d,n.latestOfflineAbi)},decode(d){const n=Fp.decode(d),c=d.start<d.end?e.uint.decode(d):0;return{buildType:n,latestOfflineAbi:o>=6&&1&c?e.uint.decode(d):0}}},Op=e.frame(P),Vp=Op,Up=e.frame(fe),Jp=Op,zp=Up,Wp=Up,Hp=e.frame(Pd),Gp=e.frame(lp),Qp=Gp,Xp=Op,Yp=Op,Zp=e.frame(Mc),$p=Zp,_p=Zp,eu=e.frame(Dp),du=Up;function ou(e){o=e}function nu(d,n,c=6){return o=c,e.encode(tu(d),n)}function cu(d,n,c=6){return o=c,e.decode(tu(d),n)}function ru(e){switch(e){case"@keet/room-type":return U;case"@keet/room-supported-language":return Y;case"@keet/display-type":return Xo;case"@keet/system-settings-keys":return An;case"@keet/label-type":return Ln;case"@keet-private-id/user-settings-key":return sr;case"@local/tasks":return Dr;case"@local/keet-state":return zt;case"@api/core/lobby-record-change-type":return ca;case"@keet/member-label-type":return op;case"@keet/build-type":return Sp;default:throw new Error("Enum not found "+e)}}function tu(e){switch(e){case"@keet/head":return n;case"@keet/oplog-id":return c;case"@keet/encryption-keypair":return r;case"@keet/signing-keypair":return t;case"@keet/room-keys":return i;case"@keet/operation-header":return a;case"@keet/blob-pointer":return s;case"@keet/file-dimensions":return p;case"@keet/file-metadata":return l;case"@keet/external-drive-pointer":return f;case"@keet/external-blob-pointer":return m;case"@keet/file-pointer":return b;case"@keet/file":return k;case"@keet/image-file":return P;case"@keet/file-status":return R;case"@keet/file-record":return q;case"@keet/device-status":return M;case"@keet/member-status":return C;case"@keet/member-moderation-status":return D;case"@keet/abi":return I;case"@keet/device-stats":return S;case"@keet/member-stats":return F;case"@keet/chat-stats":return L;case"@keet/file-stats":return j;case"@keet/stats":return V;case"@keet/room-type":return J;case"@keet/system-settings":return z;case"@keet/system-digest":return G;case"@keet/room-seed":return Q;case"@keet/room-capabilities":return X;case"@keet/room-supported-language":return Z;case"@keet/room-config":return ee;case"@keet/blind-peer":return de;case"@keet/add-blind-peer-operation":return ce;case"@keet/remove-blind-peer-operation":return te;case"@keet/identity-attestation":return ie;case"@keet/device-invitation":return ae;case"@keet/device":return ue;case"@keet/member-profile":return le;case"@keet/device-profile":return fe;case"@keet/member-update":return ye;case"@keet/device-update":return xe;case"@keet/member-contact-info":return ve;case"@keet/signed-pairing-data":return ge;case"@keet/device-request-identity":return ke;case"@keet/device-response-identity":return he;case"@keet/device-identity":return Ke;case"@keet/device-request-with-invitation":return Te;case"@keet/device-request-with-invitation-and-proof":return qe;case"@keet/device-request-with-member-proof":return De;case"@keet/device-request":return Fe;case"@keet/device-response":return Ee;case"@keet/invitation-metadata":return Be;case"@keet/invitation":return Ve;case"@keet/add-invitation-operation":return ze;case"@keet/remove-invitation-operation":return He;case"@keet/sendable-room-invitation":return Ge;case"@keet/readonly-room-invitation":return Qe;case"@keet/sendable-identity-invitation":return Xe;case"@keet/sendable-contact-invitation":return Ye;case"@keet/sendable-invitation":return od;case"@keet/add-device-operation":return cd;case"@keet/update-device-operation":return td;case"@keet/remove-device-operation":return ad;case"@keet/start-indexing-operation":return sd;case"@keet/stop-indexing-operation":return pd;case"@keet/join-request":return ld;case"@keet/accept-join-request-operation":return yd;case"@keet/reject-join-request-operation":return bd;case"@keet/member":return kd;case"@keet/full-member":return wd;case"@keet/member-proofs":return Pd;case"@keet/update-member-operation":return Ad;case"@keet/change-member-status-operation":return Cd;case"@keet/change-member-role-operation":return Id;case"@keet/remove-member-operation":return Fd;case"@keet/member-activity":return Ld;case"@keet/member-joined-event":return jd;case"@keet/member-left-event":return Ed;case"@keet/member-removed-event":return Bd;case"@keet/title-changed-chat-event":return Nd;case"@keet/chat-event":return zd;case"@keet/sendable-event":return Wd;case"@keet/display-range":return Hd;case"@keet/display-content-range":return Qd;case"@keet/mention-display-item":return Yd;case"@keet/translation-display-item":return $d;case"@keet/link-preview":return oo;case"@keet/display-link-item":return ro;case"@keet/display":return xo;case"@keet/oplog-message":return ko;case"@keet/index-message":return wo;case"@keet/full-index-message":return To;case"@keet/message-status":return Ao;case"@keet/message-index-id":return qo;case"@keet/thread":return Co;case"@keet/chat-message-record":return Fo;case"@keet/full-chat-message-record":return Bo;case"@keet/add-chat-message-operation":return Vo;case"@keet/remove-chat-message-operation":return Jo;case"@keet/update-chat-message-operation":return Ho;case"@keet/pin-chat-message-operation":return Qo;case"@keet/display-type":return Yo;case"@keet/add-file-preview-operation":return $o;case"@keet/reaction":return _o;case"@keet/reactions-summary":return en;case"@keet/reactions-digest":return on;case"@keet/add-reaction-operation":return cn;case"@keet/remove-reaction-operation":return tn;case"@keet/update-room-config-operation":return pn;case"@keet/group-member":return un;case"@keet/user-registry-info":return ln;case"@keet/room-identity":return mn;case"@keet/genesis-operation":return Kn;case"@keet/upgrade-operation":return Pn;case"@keet/migrate-abi-operation":return Tn;case"@keet/system-settings-keys":return qn;case"@keet/update-system-settings-operation":return Dn;case"@keet/test-increment-operation":return Sn;case"@keet/test-collection-record-1":return Fn;case"@keet/label-type":return jn;case"@keet/chat-label":return En;case"@keet/add-chat-label-operation":return Nn;case"@keet/remove-chat-label-operation":return Vn;case"@keet/chat-label-summary":return Un;case"@keet/chat-label-digest":return zn;case"@keet/update-read-length-operation":return Hn;case"@keet/read-length":return Gn;case"@keet/tmp-removed-member":return Qn;case"@keet-private-id/contact":return Xn;case"@keet-private-id/v3-room-migration-info":return Yn;case"@keet-private-id/run-v3-migration-operation":return _n;case"@keet-private-id/update-identity-operation":return dc;case"@keet-private-id/counters":return oc;case"@keet-private-id/stats":return nc;case"@keet-private-id/add-entropy-operation":return cc;case"@keet-private-id/pending-invitation-identity":return rc;case"@keet-private-id/pending-invitation":return ic;case"@keet-private-id/resolve-pending-invitation-operation":return sc;case"@keet-private-id/add-pending-invitation-operation":return lc;case"@keet-private-id/remove-pending-invitation-operation":return mc;case"@keet-private-id/identity-swap":return yc;case"@keet-private-id/identity-swap-v2":return xc;case"@keet-private-id/room-status":return bc;case"@keet-private-id/room":return hc;case"@keet-private-id/add-room-operation":return wc;case"@keet-private-id/remove-room-operation":return Rc;case"@keet-private-id/update-room-status-operation":return qc;case"@keet-private-id/contact-status":return Mc;case"@keet-private-id/contact-record":return Cc;case"@keet-private-id/add-contact-operation":return Sc;case"@keet-private-id/update-contact-status-operation":return Lc;case"@keet-private-id/remove-contact-operation":return Ec;case"@keet-private-id/activate-contact-room-operation":return Nc;case"@keet-private-id/contact-request-status":return Oc;case"@keet-private-id/contact-request-body":return Jc;case"@keet-private-id/contact-request":return Wc;case"@keet-private-id/contact-request-record":return Xc;case"@keet-private-id/add-contact-request-operation":return Zc;case"@keet-private-id/update-contact-request-status-operation":return er;case"@keet-private-id/profile-discovery-record-v1":return dr;case"@keet-private-id/profile-discovery-record":return or;case"@keet-private-id/unreads":return nr;case"@keet-private-id/add-unreads-key-operation":return rr;case"@keet-private-id/remove-unreads-key-operation":return ir;case"@keet-private-id/settings":return ar;case"@keet-private-id/user-settings-key":return pr;case"@keet-private-id/update-settings-operation":return fr;case"@local/background-sync-room":return mr;case"@local/stats":return yr;case"@local/migration-status":return xr;case"@local/v3-private-profile-migration":return vr;case"@local/v3-room-migration":return hr;case"@local/room-migration-stats":return Kr;case"@local/room-migration":return Pr;case"@local/identity-status":return Rr;case"@local/identity-swap":return Tr;case"@local/identity-record":return Cr;case"@local/tasks":return Ir;case"@local/room-keys":return Sr;case"@local/join-room-invitation-task":return Lr;case"@local/join-room-response-task":return jr;case"@local/fast-forward-to":return Er;case"@local/add-room-fields":return Br;case"@local/join-room-keys-task":return Or;case"@local/create-room-task":return Ur;case"@local/leave-room-task":return Jr;case"@local/clear-room-task":return zr;case"@local/restore-identity-task":return Wr;case"@local/send-contact-request-task":return Gr;case"@local/migrate-v2-room-task":return Qr;case"@local/task":return ct;case"@local/shared-invitation":return tt;case"@local/room-status":return it;case"@local/room-timestamps":return at;case"@local/room":return wt;case"@local/room-preferences":return Rt;case"@local/room-metadata":return Tt;case"@local/writer":return At;case"@local/writer-append":return qt;case"@local/member":return Ct;case"@local/device":return It;case"@local/file":return Ft;case"@local/debug-flag":return Lt;case"@local/debug":return Et;case"@local/hyperdht-record":return Nt;case"@local/unread":return Ot;case"@local/error-record-details":return Vt;case"@local/error-record":return Jt;case"@local/keet-state":return Wt;case"@local/file-stats":return Ht;case"@api/request-header":return Gt;case"@api/response-header":return Qt;case"@api/subscription-request-header":return Xt;case"@api/subscription-response-header":return Yt;case"@api/boot-request":return $t;case"@api/boot-response":return ei;case"@api/self-destruct-request":return oi;case"@api/core/have":return ni;case"@api/core/create-room-request":return ii;case"@api/core/create-room-response":return si;case"@api/core/activate-room-request":return ui;case"@api/core/deactivate-room-request":return fi;case"@api/core/leave-room-request":return yi;case"@api/core/leave-room-response":return bi;case"@api/core/update-room-config-request":return ki;case"@api/core/update-room-settings-request":return wi;case"@api/core/update-room-status-request":return Ti;case"@api/core/add-chat-message-request":return Mi;case"@api/core/add-chat-message-response":return Di;case"@api/core/edit-chat-message-request":return Fi;case"@api/core/edit-chat-message-response":return ji;case"@api/core/remove-chat-message-request":return Bi;case"@api/core/remove-chat-message-response":return Oi;case"@api/core/add-chat-reaction-request":return Ui;case"@api/core/add-chat-reaction-response":return zi;case"@api/core/remove-chat-reaction-request":return Hi;case"@api/core/remove-chat-reaction-response":return Qi;case"@api/core/want-lobby":return Xi;case"@api/core/unwant-lobby":return Yi;case"@api/core/want-room-info":return $i;case"@api/core/want-chat":return _i;case"@api/core/unwant-chat":return ea;case"@api/core/want-members":return da;case"@api/core/unwant-members":return oa;case"@api/core/lobby-record":return na;case"@api/core/lobby-record-change-type":return ra;case"@api/core/lobby":return ia;case"@api/core/lobby-room":return aa;case"@api/core/room-role":return ua;case"@api/core/room-info":return ya;case"@api/core/room-info-status":return ba;case"@api/core/room-info-digest":return ga;case"@api/core/room-info-config":return ha;case"@api/core/room-info-role":return wa;case"@api/core/room-info-last-message":return Pa;case"@api/core/member":return Ta;case"@api/core/device":return qa;case"@api/core/member-list-add":return Ma;case"@api/core/member-list-remove":return Ca;case"@api/core/chat-reset":return Ia;case"@api/core/message-timestamps":return Sa;case"@api/core/message":return Ba;case"@api/core/message-info":return Va;case"@api/core/message-info-chat":return Ja;case"@api/core/message-info-member":return Wa;case"@api/core/message-info-role":return Qa;case"@api/core/message-info-reactions":return Ya;case"@api/core/reactions":return $a;case"@api/core/want-pairing":return _a;case"@api/core/unwant-pairing":return es;case"@api/core/pending-invitations":return os;case"@api/core/join-request":return cs;case"@api/core/join-requests":return ts;case"@api/core/pairing":return ss;case"@api/core/start-pairing-request":return us;case"@api/core/start-pairing-response":return fs;case"@api/core/invitation-permissions":return ms;case"@api/core/create-room-invitation-request":return bs;case"@api/core/create-room-invitation-response":return gs;case"@api/core/create-identity-invitation-request":return hs;case"@api/core/create-identity-invitation-response":return ws;case"@api/core/accept-join-request-request":return Ts;case"@api/core/accept-join-request-response":return qs;case"@api/core/reject-join-request-request":return Ds;case"@api/core/reject-join-request-response":return Ss;case"@api/core/stop-pairing-request":return Ls;case"@api/core/stop-pairing-response":return Es;case"@api/core/update-profile-request":return Ns;case"@api/core/want-identity":return Os;case"@api/core/unwant-identity":return Vs;case"@api/core/identity-status":return Us;case"@api/core/identity":return Ws;case"@api/core/identity-member":return Hs;case"@api/core/identity-device":return Gs;case"@api/debug/enable-request":return Xs;case"@api/debug/enable-response":return Zs;case"@api/debug/disable-request":return _s;case"@api/debug/disable-response":return dp;case"@keet/member-label-type":return np;case"@keet/member-label":return cp;case"@keet/add-member-label-operation":return tp;case"@keet/member-label-summary":return ip;case"@keet/member-label-digest":return sp;case"@keet/move-indexer-operation":return up;case"@keet/location-shared-event":return lp;case"@keet/start-call":return yp;case"@keet/join-call":return vp;case"@keet/leave-call":return kp;case"@keet/end-call":return Kp;case"@keet/add-call-stream":return Pp;case"@keet/remove-call-stream":return Tp;case"@keet/call-record":return Ap;case"@keet/call-member-record":return qp;case"@keet/call-device-record":return Mp;case"@keet/call-stream-record":return Cp;case"@local/active-call":return Dp;case"@local/file-gc-info":return Ip;case"@keet/build-type":return Fp;case"@keet/test-crash-operation":return jp;case"@keet/test-dispatch-error-operation":return Bp;case"@local/environment-record":return Np;default:throw new Error("Encoder not found "+e)}}function iu(e,d=6){const n=tu(e);return{preencode(e,c){o=d,n.preencode(e,c)},encode(e,c){o=d,n.encode(e,c)},decode:e=>(o=d,n.decode(e))}}const au=iu;module.exports={resolveStruct:au,getStruct:iu,getEnum:ru,getEncoding:tu,encode:nu,decode:cu,setVersion:ou,version:o};
@holepunchto/keet-core/schema/spec/api/hyperschema/schema.json +8085 -0
……@@ -0,0 +1,8085 @@
1{
2 "version": 6,
3 "schema": [
4 {
5 "name": "public-key",
6 "namespace": "keet",
7 "alias": "fixed32",
8 "version": 1
9 },
10 {
11 "name": "secret-key",
12 "namespace": "keet",
13 "alias": "buffer",
14 "version": 1
15 },
16 {
17 "name": "room-key",
18 "namespace": "keet",
19 "alias": "fixed32",
20 "version": 1
21 },
22 {
23 "name": "encryption-key",
24 "namespace": "keet",
25 "alias": "buffer",
26 "version": 1
27 },
28 {
29 "name": "room-discovery-key",
30 "namespace": "keet",
31 "alias": "fixed32",
32 "version": 1
33 },
34 {
35 "name": "core-key",
36 "namespace": "keet",
37 "alias": "fixed32",
38 "version": 1
39 },
40 {
41 "name": "device-key",
42 "namespace": "keet",
43 "alias": "fixed32",
44 "version": 1
45 },
46 {
47 "name": "invitation-id",
48 "namespace": "keet",
49 "alias": "fixed32",
50 "version": 1
51 },
52 {
53 "name": "member-key",
54 "namespace": "keet",
55 "alias": "fixed32",
56 "version": 1
57 },
58 {
59 "name": "swarm-key",
60 "namespace": "keet",
61 "alias": "fixed32",
62 "version": 1
63 },
64 {
65 "name": "core-seq",
66 "namespace": "keet",
67 "alias": "uint",
68 "version": 1
69 },
70 {
71 "name": "head",
72 "namespace": "keet",
73 "compact": true,
74 "flagsPosition": -1,
75 "fields": [
76 {
77 "name": "key",
78 "required": true,
79 "type": "@keet/device-key",
80 "version": 1
81 },
82 {
83 "name": "length",
84 "required": true,
85 "type": "uint",
86 "version": 1
87 }
88 ]
89 },
90 {
91 "name": "oplog-id",
92 "namespace": "keet",
93 "compact": true,
94 "flagsPosition": -1,
95 "fields": [
96 {
97 "name": "key",
98 "required": true,
99 "type": "@keet/device-key",
100 "version": 1
101 },
102 {
103 "name": "seq",
104 "required": true,
105 "type": "@keet/core-seq",
106 "version": 1
107 }
108 ]
109 },
110 {
111 "name": "encryption-keypair",
112 "namespace": "keet",
113 "compact": true,
114 "flagsPosition": -1,
115 "fields": [
116 {
117 "name": "publicKey",
118 "required": true,
119 "type": "fixed32",
120 "version": 1
121 },
122 {
123 "name": "secretKey",
124 "required": true,
125 "type": "fixed32",
126 "version": 1
127 }
128 ]
129 },
130 {
131 "name": "signing-keypair",
132 "namespace": "keet",
133 "compact": true,
134 "flagsPosition": -1,
135 "fields": [
136 {
137 "name": "publicKey",
138 "required": true,
139 "type": "fixed32",
140 "version": 1
141 },
142 {
143 "name": "secretKey",
144 "required": true,
145 "type": "fixed64",
146 "version": 1
147 }
148 ]
149 },
150 {
151 "name": "room-keys",
152 "namespace": "keet",
153 "compact": false,
154 "flagsPosition": 1,
155 "fields": [
156 {
157 "name": "key",
158 "required": true,
159 "type": "@keet/room-key",
160 "version": 1
161 },
162 {
163 "name": "encryptionKey",
164 "type": "@keet/encryption-key",
165 "version": 1
166 },
167 {
168 "name": "fastForwardTo",
169 "type": "fixed32",
170 "version": 1
171 }
172 ]
173 },
174 {
175 "name": "operation-header",
176 "namespace": "keet",
177 "compact": false,
178 "flagsPosition": -1,
179 "fields": [
180 {
181 "name": "timestamp",
182 "required": true,
183 "type": "uint",
184 "version": 1
185 }
186 ]
187 },
188 {
189 "name": "blob-pointer",
190 "namespace": "keet",
191 "compact": true,
192 "flagsPosition": -1,
193 "fields": [
194 {
195 "name": "blockOffset",
196 "required": true,
197 "type": "uint",
198 "version": 1
199 },
200 {
201 "name": "blockLength",
202 "required": true,
203 "type": "uint",
204 "version": 1
205 },
206 {
207 "name": "byteOffset",
208 "required": true,
209 "type": "uint",
210 "version": 1
211 },
212 {
213 "name": "byteLength",
214 "required": true,
215 "type": "uint",
216 "version": 1
217 }
218 ]
219 },
220 {
221 "name": "file-dimensions",
222 "namespace": "keet",
223 "compact": false,
224 "flagsPosition": -1,
225 "fields": [
226 {
227 "name": "width",
228 "required": true,
229 "type": "uint",
230 "version": 1
231 },
232 {
233 "name": "height",
234 "required": true,
235 "type": "uint",
236 "version": 1
237 }
238 ]
239 },
240 {
241 "name": "file-metadata",
242 "namespace": "keet",
243 "compact": false,
244 "flagsPosition": 0,
245 "fields": [
246 {
247 "name": "name",
248 "type": "string",
249 "version": 1
250 },
251 {
252 "name": "mimetype",
253 "type": "string",
254 "version": 1
255 },
256 {
257 "name": "dimensions",
258 "type": "@keet/file-dimensions",
259 "version": 1
260 },
261 {
262 "name": "userdata",
263 "type": "buffer",
264 "version": 1
265 },
266 {
267 "name": "duration",
268 "type": "uint",
269 "version": 1
270 },
271 {
272 "name": "isPreview",
273 "type": "bool",
274 "version": 1
275 }
276 ]
277 },
278 {
279 "name": "external-drive-pointer",
280 "namespace": "keet",
281 "compact": false,
282 "flagsPosition": -1,
283 "fields": [
284 {
285 "name": "key",
286 "required": true,
287 "type": "@keet/core-key",
288 "version": 1
289 },
290 {
291 "name": "path",
292 "required": true,
293 "type": "string",
294 "version": 1
295 },
296 {
297 "name": "version",
298 "required": true,
299 "type": "uint",
300 "version": 1
301 },
302 {
303 "name": "size",
304 "required": true,
305 "type": "uint",
306 "version": 1
307 }
308 ]
309 },
310 {
311 "name": "external-blob-pointer",
312 "namespace": "keet",
313 "compact": false,
314 "flagsPosition": -1,
315 "fields": [
316 {
317 "name": "key",
318 "required": true,
319 "type": "@keet/core-key",
320 "version": 1
321 },
322 {
323 "name": "blob",
324 "required": true,
325 "type": "@keet/blob-pointer",
326 "version": 1
327 }
328 ]
329 },
330 {
331 "name": "file-pointer",
332 "namespace": "keet",
333 "compact": false,
334 "flagsPosition": 0,
335 "fields": [
336 {
337 "name": "inlined",
338 "type": "buffer",
339 "version": 1
340 },
341 {
342 "name": "blob",
343 "type": "@keet/blob-pointer",
344 "version": 1
345 },
346 {
347 "name": "externalBlob",
348 "type": "@keet/external-blob-pointer",
349 "version": 1
350 },
351 {
352 "name": "externalDrive",
353 "type": "@keet/external-drive-pointer",
354 "version": 1
355 }
356 ]
357 },
358 {
359 "name": "file",
360 "namespace": "keet",
361 "compact": false,
362 "flagsPosition": 1,
363 "fields": [
364 {
365 "name": "pointer",
366 "required": true,
367 "type": "@keet/file-pointer",
368 "version": 1
369 },
370 {
371 "name": "metadata",
372 "type": "@keet/file-metadata",
373 "version": 1
374 },
375 {
376 "name": "preview",
377 "type": "@keet/image-file",
378 "version": 1
379 },
380 {
381 "name": "hash",
382 "type": "fixed32",
383 "version": 1
384 }
385 ]
386 },
387 {
388 "name": "image-file",
389 "namespace": "keet",
390 "compact": false,
391 "flagsPosition": 0,
392 "fields": [
393 {
394 "name": "small",
395 "type": "@keet/file",
396 "version": 1
397 },
398 {
399 "name": "medium",
400 "type": "@keet/file",
401 "version": 1
402 },
403 {
404 "name": "large",
405 "type": "@keet/file",
406 "version": 1
407 }
408 ]
409 },
410 {
411 "name": "file-status",
412 "namespace": "keet",
413 "compact": false,
414 "flagsPosition": 0,
415 "fields": [
416 {
417 "name": "isDeleted",
418 "type": "bool",
419 "version": 1
420 }
421 ]
422 },
423 {
424 "name": "file-record",
425 "namespace": "keet",
426 "compact": false,
427 "flagsPosition": 4,
428 "fields": [
429 {
430 "name": "id",
431 "required": true,
432 "type": "uint",
433 "version": 1
434 },
435 {
436 "name": "oplog",
437 "required": true,
438 "type": "@keet/oplog-id",
439 "version": 1
440 },
441 {
442 "name": "status",
443 "required": true,
444 "type": "@keet/file-status",
445 "version": 1
446 },
447 {
448 "name": "file",
449 "required": true,
450 "type": "@keet/file",
451 "version": 1
452 },
453 {
454 "name": "version",
455 "type": "uint",
456 "version": 1
457 }
458 ]
459 },
460 {
461 "name": "device-status",
462 "namespace": "keet",
463 "compact": false,
464 "flagsPosition": 0,
465 "fields": [
466 {
467 "name": "isActive",
468 "type": "bool",
469 "version": 1
470 },
471 {
472 "name": "isIndexing",
473 "type": "bool",
474 "version": 1
475 }
476 ]
477 },
478 {
479 "name": "member-status",
480 "namespace": "keet",
481 "compact": false,
482 "flagsPosition": 0,
483 "fields": [
484 {
485 "name": "isAdmin",
486 "type": "bool",
487 "version": 1
488 },
489 {
490 "name": "isModerator",
491 "type": "bool",
492 "version": 1
493 },
494 {
495 "name": "isPending",
496 "type": "bool",
497 "version": 1
498 },
499 {
500 "name": "isActive",
501 "type": "bool",
502 "version": 1
503 },
504 {
505 "name": "isMuted",
506 "type": "bool",
507 "version": 1
508 },
509 {
510 "name": "isBanned",
511 "type": "bool",
512 "version": 1
513 },
514 {
515 "name": "isShadowBanned",
516 "type": "bool",
517 "version": 1
518 },
519 {
520 "name": "isRemoved",
521 "type": "bool",
522 "version": 1
523 }
524 ]
525 },
526 {
527 "name": "member-moderation-status",
528 "namespace": "keet",
529 "compact": false,
530 "flagsPosition": 0,
531 "fields": [
532 {
533 "name": "isMuted",
534 "type": "bool",
535 "version": 1
536 },
537 {
538 "name": "isBanned",
539 "type": "bool",
540 "version": 1
541 },
542 {
543 "name": "isShadowBanned",
544 "type": "bool",
545 "version": 1
546 }
547 ]
548 },
549 {
550 "name": "abi",
551 "namespace": "keet",
552 "compact": false,
553 "flagsPosition": -1,
554 "fields": [
555 {
556 "name": "version",
557 "required": true,
558 "type": "uint",
559 "version": 1
560 }
561 ]
562 },
563 {
564 "name": "device-stats",
565 "namespace": "keet",
566 "compact": false,
567 "flagsPosition": -1,
568 "fields": [
569 {
570 "name": "total",
571 "required": true,
572 "type": "uint",
573 "version": 1
574 },
575 {
576 "name": "active",
577 "required": true,
578 "type": "uint",
579 "version": 1
580 }
581 ]
582 },
583 {
584 "name": "member-stats",
585 "namespace": "keet",
586 "compact": false,
587 "flagsPosition": -1,
588 "fields": [
589 {
590 "name": "total",
591 "required": true,
592 "type": "uint",
593 "version": 1
594 },
595 {
596 "name": "active",
597 "required": true,
598 "type": "uint",
599 "version": 1
600 },
601 {
602 "name": "pending",
603 "required": true,
604 "type": "uint",
605 "version": 1
606 }
607 ]
608 },
609 {
610 "name": "chat-stats",
611 "namespace": "keet",
612 "compact": false,
613 "flagsPosition": 4,
614 "fields": [
615 {
616 "name": "clock",
617 "required": true,
618 "type": "uint",
619 "version": 1
620 },
621 {
622 "name": "pinned",
623 "required": true,
624 "type": "uint",
625 "version": 1
626 },
627 {
628 "name": "threads",
629 "required": true,
630 "type": "uint",
631 "version": 1
632 },
633 {
634 "name": "timestamp",
635 "required": true,
636 "type": "uint",
637 "version": 1
638 },
639 {
640 "name": "flagsClock",
641 "type": "uint",
642 "version": 1
643 }
644 ]
645 },
646 {
647 "name": "file-stats",
648 "namespace": "keet",
649 "compact": false,
650 "flagsPosition": -1,
651 "fields": [
652 {
653 "name": "clock",
654 "required": true,
655 "type": "uint",
656 "version": 1
657 }
658 ]
659 },
660 {
661 "name": "stats",
662 "namespace": "keet",
663 "compact": false,
664 "flagsPosition": -1,
665 "fields": [
666 {
667 "name": "devices",
668 "required": true,
669 "type": "@keet/device-stats",
670 "version": 1
671 },
672 {
673 "name": "members",
674 "required": true,
675 "type": "@keet/member-stats",
676 "version": 1
677 },
678 {
679 "name": "chat",
680 "required": true,
681 "type": "@keet/chat-stats",
682 "version": 1
683 },
684 {
685 "name": "files",
686 "required": true,
687 "type": "@keet/file-stats",
688 "version": 1
689 }
690 ]
691 },
692 {
693 "name": "room-type",
694 "namespace": "keet",
695 "offset": 1,
696 "enum": [
697 {
698 "key": "Default",
699 "version": 1
700 },
701 {
702 "key": "Broadcast",
703 "version": 1
704 },
705 {
706 "key": "DirectMessage",
707 "version": 1
708 }
709 ],
710 "strings": false
711 },
712 {
713 "name": "system-settings",
714 "namespace": "keet",
715 "compact": false,
716 "flagsPosition": 0,
717 "fields": [
718 {
719 "name": "roomType",
720 "type": "@keet/room-type",
721 "version": 1
722 },
723 {
724 "name": "isExperimental",
725 "type": "bool",
726 "version": 1
727 },
728 {
729 "name": "isJoiningDisabled",
730 "type": "bool",
731 "version": 1
732 },
733 {
734 "name": "isAppendingDisabled",
735 "type": "bool",
736 "version": 1
737 },
738 {
739 "name": "isCallingDisabled",
740 "type": "bool",
741 "version": 1
742 },
743 {
744 "name": "isMembershipEventsDisabled",
745 "type": "bool",
746 "version": 1
747 },
748 {
749 "name": "isAttachmentsDisabled",
750 "type": "bool",
751 "version": 4
752 },
753 {
754 "name": "isLinksDisabled",
755 "type": "bool",
756 "version": 4
757 },
758 {
759 "name": "buildType",
760 "type": "@keet/build-type",
761 "version": 5
762 }
763 ]
764 },
765 {
766 "name": "system-digest",
767 "namespace": "keet",
768 "compact": false,
769 "flagsPosition": -1,
770 "fields": [
771 {
772 "name": "abi",
773 "required": true,
774 "type": "@keet/abi",
775 "version": 1
776 },
777 {
778 "name": "settings",
779 "required": true,
780 "type": "@keet/system-settings",
781 "version": 1
782 },
783 {
784 "name": "creationTime",
785 "required": true,
786 "type": "uint",
787 "version": 1
788 }
789 ]
790 },
791 {
792 "name": "room-seed",
793 "namespace": "keet",
794 "compact": false,
795 "flagsPosition": -1,
796 "fields": [
797 {
798 "name": "seed",
799 "required": true,
800 "type": "fixed32",
801 "version": 1
802 }
803 ]
804 },
805 {
806 "name": "room-capabilities",
807 "namespace": "keet",
808 "compact": false,
809 "flagsPosition": -1,
810 "fields": [
811 {
812 "name": "mailboxKeyPair",
813 "required": true,
814 "type": "@keet/encryption-keypair",
815 "version": 1
816 },
817 {
818 "name": "discoveryKeyPair",
819 "required": true,
820 "type": "@keet/signing-keypair",
821 "version": 1
822 },
823 {
824 "name": "wakeupTopic",
825 "required": true,
826 "type": "@keet/room-discovery-key",
827 "version": 1
828 },
829 {
830 "name": "swarmTopic",
831 "required": true,
832 "type": "@keet/room-discovery-key",
833 "version": 1
834 }
835 ]
836 },
837 {
838 "name": "room-supported-language",
839 "namespace": "keet",
840 "offset": 1,
841 "enum": [
842 {
843 "key": "en",
844 "version": 1
845 },
846 {
847 "key": "it",
848 "version": 1
849 },
850 {
851 "key": "ru",
852 "version": 1
853 },
854 {
855 "key": "es",
856 "version": 1
857 },
858 {
859 "key": "de",
860 "version": 1
861 }
862 ],
863 "strings": true
864 },
865 {
866 "name": "room-config",
867 "namespace": "keet",
868 "compact": false,
869 "flagsPosition": 0,
870 "fields": [
871 {
872 "name": "title",
873 "type": "string",
874 "version": 1
875 },
876 {
877 "name": "avatar",
878 "type": "@keet/image-file",
879 "version": 1
880 },
881 {
882 "name": "description",
883 "type": "string",
884 "version": 1
885 },
886 {
887 "name": "supportedLanguages",
888 "array": true,
889 "type": "@keet/room-supported-language",
890 "version": 1
891 },
892 {
893 "name": "blindPeers",
894 "array": true,
895 "type": "fixed32",
896 "version": 1
897 }
898 ]
899 },
900 {
901 "name": "blind-peer",
902 "namespace": "keet",
903 "compact": false,
904 "flagsPosition": -1,
905 "fields": [
906 {
907 "name": "key",
908 "required": true,
909 "type": "@keet/public-key",
910 "version": 1
911 }
912 ]
913 },
914 {
915 "name": "add-blind-peer-operation",
916 "namespace": "keet",
917 "compact": false,
918 "flagsPosition": -1,
919 "fields": [
920 {
921 "name": "header",
922 "required": true,
923 "type": "@keet/operation-header",
924 "version": 1
925 },
926 {
927 "name": "peer",
928 "required": true,
929 "type": "@keet/blind-peer",
930 "version": 1
931 }
932 ]
933 },
934 {
935 "name": "remove-blind-peer-operation",
936 "namespace": "keet",
937 "compact": false,
938 "flagsPosition": -1,
939 "fields": [
940 {
941 "name": "header",
942 "required": true,
943 "type": "@keet/operation-header",
944 "version": 1
945 },
946 {
947 "name": "key",
948 "required": true,
949 "type": "@keet/public-key",
950 "version": 1
951 }
952 ]
953 },
954 {
955 "name": "identity-attestation",
956 "namespace": "keet",
957 "compact": true,
958 "flagsPosition": -1,
959 "fields": [
960 {
961 "name": "memberKey",
962 "required": true,
963 "type": "@keet/member-key",
964 "version": 1
965 },
966 {
967 "name": "proof",
968 "required": true,
969 "type": "buffer",
970 "version": 1
971 }
972 ]
973 },
974 {
975 "name": "device-invitation",
976 "namespace": "keet",
977 "compact": false,
978 "flagsPosition": -1,
979 "fields": [
980 {
981 "name": "id",
982 "required": true,
983 "type": "@keet/invitation-id",
984 "version": 1
985 },
986 {
987 "name": "response",
988 "required": true,
989 "type": "buffer",
990 "version": 1
991 }
992 ]
993 },
994 {
995 "name": "device",
996 "namespace": "keet",
997 "compact": false,
998 "flagsPosition": 4,
999 "fields": [
1000 {
1001 "name": "key",
1002 "required": true,
1003 "type": "@keet/device-key",
1004 "version": 1
1005 },
1006 {
1007 "name": "memberKey",
1008 "required": true,
1009 "type": "@keet/member-key",
1010 "version": 1
1011 },
1012 {
1013 "name": "status",
1014 "required": true,
1015 "type": "@keet/device-status",
1016 "version": 1
1017 },
1018 {
1019 "name": "profile",
1020 "required": true,
1021 "type": "@keet/device-profile",
1022 "version": 1
1023 },
1024 {
1025 "name": "invitation",
1026 "type": "@keet/device-invitation",
1027 "version": 1
1028 }
1029 ]
1030 },
1031 {
1032 "name": "member-profile",
1033 "namespace": "keet",
1034 "compact": false,
1035 "flagsPosition": 1,
1036 "fields": [
1037 {
1038 "name": "timestamp",
1039 "required": true,
1040 "type": "uint",
1041 "version": 1
1042 },
1043 {
1044 "name": "mailbox",
1045 "type": "@keet/public-key",
1046 "version": 1
1047 },
1048 {
1049 "name": "displayName",
1050 "type": "string",
1051 "version": 1
1052 },
1053 {
1054 "name": "avatar",
1055 "type": "@keet/image-file",
1056 "version": 1
1057 },
1058 {
1059 "name": "username",
1060 "type": "string",
1061 "version": 1
1062 }
1063 ]
1064 },
1065 {
1066 "name": "device-profile",
1067 "namespace": "keet",
1068 "compact": false,
1069 "flagsPosition": 0,
1070 "fields": [
1071 {
1072 "name": "swarmKey",
1073 "type": "@keet/swarm-key",
1074 "version": 1
1075 },
1076 {
1077 "name": "name",
1078 "type": "string",
1079 "version": 1
1080 },
1081 {
1082 "name": "isMobile",
1083 "type": "bool",
1084 "version": 1
1085 },
1086 {
1087 "name": "buildType",
1088 "type": "@keet/build-type",
1089 "version": 5
1090 }
1091 ]
1092 },
1093 {
1094 "name": "member-update",
1095 "namespace": "keet",
1096 "compact": false,
1097 "flagsPosition": -1,
1098 "fields": [
1099 {
1100 "name": "profile",
1101 "required": true,
1102 "type": "@keet/member-profile",
1103 "version": 1
1104 },
1105 {
1106 "name": "attestation",
1107 "required": true,
1108 "type": "@keet/identity-attestation",
1109 "version": 1
1110 }
1111 ]
1112 },
1113 {
1114 "name": "device-update",
1115 "namespace": "keet",
1116 "compact": false,
1117 "flagsPosition": -1,
1118 "fields": [
1119 {
1120 "name": "profile",
1121 "required": true,
1122 "type": "@keet/device-profile",
1123 "version": 1
1124 },
1125 {
1126 "name": "attestation",
1127 "required": true,
1128 "type": "@keet/identity-attestation",
1129 "version": 1
1130 }
1131 ]
1132 },
1133 {
1134 "name": "member-contact-info",
1135 "namespace": "keet",
1136 "compact": false,
1137 "flagsPosition": -1,
1138 "fields": [
1139 {
1140 "name": "profile",
1141 "required": true,
1142 "type": "@keet/member-profile",
1143 "version": 1
1144 },
1145 {
1146 "name": "attestation",
1147 "required": true,
1148 "type": "@keet/identity-attestation",
1149 "version": 1
1150 }
1151 ]
1152 },
1153 {
1154 "name": "signed-pairing-data",
1155 "namespace": "keet",
1156 "compact": false,
1157 "flagsPosition": -1,
1158 "fields": [
1159 {
1160 "name": "id",
1161 "required": true,
1162 "type": "@keet/invitation-id",
1163 "version": 1
1164 },
1165 {
1166 "name": "data",
1167 "required": true,
1168 "type": "buffer",
1169 "version": 1
1170 },
1171 {
1172 "name": "signature",
1173 "required": true,
1174 "type": "buffer",
1175 "version": 1
1176 }
1177 ]
1178 },
1179 {
1180 "name": "device-request-identity",
1181 "namespace": "keet",
1182 "compact": false,
1183 "flagsPosition": -1,
1184 "fields": [
1185 {
1186 "name": "devicePublicKey",
1187 "required": true,
1188 "type": "@keet/public-key",
1189 "version": 1
1190 }
1191 ]
1192 },
1193 {
1194 "name": "device-response-identity",
1195 "namespace": "keet",
1196 "compact": false,
1197 "flagsPosition": -1,
1198 "fields": [
1199 {
1200 "name": "privateProfileIdentity",
1201 "required": true,
1202 "type": "@keet/identity-attestation",
1203 "version": 1
1204 },
1205 {
1206 "name": "deviceProof",
1207 "required": true,
1208 "type": "buffer",
1209 "version": 1
1210 }
1211 ]
1212 },
1213 {
1214 "name": "device-identity",
1215 "namespace": "keet",
1216 "compact": false,
1217 "flagsPosition": -1,
1218 "fields": [
1219 {
1220 "name": "deviceKey",
1221 "required": true,
1222 "type": "@keet/device-key",
1223 "version": 1
1224 },
1225 {
1226 "name": "privateProfileIdentity",
1227 "required": true,
1228 "type": "@keet/identity-attestation",
1229 "version": 1
1230 },
1231 {
1232 "name": "deviceProof",
1233 "required": true,
1234 "type": "buffer",
1235 "version": 1
1236 }
1237 ]
1238 },
1239 {
1240 "name": "device-request-with-invitation",
1241 "namespace": "keet",
1242 "compact": false,
1243 "flagsPosition": 4,
1244 "fields": [
1245 {
1246 "name": "deviceKey",
1247 "required": true,
1248 "type": "@keet/device-key",
1249 "version": 1
1250 },
1251 {
1252 "name": "keyPair",
1253 "required": true,
1254 "type": "@keet/signing-keypair",
1255 "version": 1
1256 },
1257 {
1258 "name": "device",
1259 "required": true,
1260 "type": "@keet/device-update",
1261 "version": 1
1262 },
1263 {
1264 "name": "member",
1265 "required": true,
1266 "type": "@keet/member-update",
1267 "version": 1
1268 },
1269 {
1270 "name": "identity",
1271 "type": "@keet/device-request-identity",
1272 "version": 1
1273 }
1274 ]
1275 },
1276 {
1277 "name": "device-request-with-invitation-and-proof",
1278 "namespace": "keet",
1279 "compact": false,
1280 "flagsPosition": -1,
1281 "fields": [
1282 {
1283 "name": "id",
1284 "required": true,
1285 "type": "@keet/invitation-id",
1286 "version": 1
1287 },
1288 {
1289 "name": "request",
1290 "required": true,
1291 "type": "@keet/device-request-with-invitation",
1292 "version": 1
1293 },
1294 {
1295 "name": "signature",
1296 "required": true,
1297 "type": "buffer",
1298 "version": 1
1299 }
1300 ]
1301 },
1302 {
1303 "name": "device-request-with-member-proof",
1304 "namespace": "keet",
1305 "compact": false,
1306 "flagsPosition": 1,
1307 "fields": [
1308 {
1309 "name": "device",
1310 "required": true,
1311 "type": "@keet/device-update",
1312 "version": 1
1313 },
1314 {
1315 "name": "member",
1316 "type": "@keet/member-update",
1317 "version": 1
1318 }
1319 ]
1320 },
1321 {
1322 "name": "device-request",
1323 "namespace": "keet",
1324 "compact": false,
1325 "flagsPosition": 0,
1326 "fields": [
1327 {
1328 "name": "withInvitation",
1329 "type": "@keet/device-request-with-invitation-and-proof",
1330 "version": 1
1331 },
1332 {
1333 "name": "withMemberProof",
1334 "type": "@keet/device-request-with-member-proof",
1335 "version": 1
1336 }
1337 ]
1338 },
1339 {
1340 "name": "device-response",
1341 "namespace": "keet",
1342 "compact": false,
1343 "flagsPosition": 1,
1344 "fields": [
1345 {
1346 "name": "signedKeys",
1347 "required": true,
1348 "type": "@keet/signed-pairing-data",
1349 "version": 1
1350 },
1351 {
1352 "name": "identity",
1353 "type": "@keet/device-response-identity",
1354 "version": 1
1355 }
1356 ]
1357 },
1358 {
1359 "name": "invitation-metadata",
1360 "namespace": "keet",
1361 "compact": false,
1362 "flagsPosition": 0,
1363 "fields": [
1364 {
1365 "name": "expiration",
1366 "type": "uint",
1367 "version": 1
1368 },
1369 {
1370 "name": "requiresConfirmation",
1371 "type": "bool",
1372 "version": 1
1373 },
1374 {
1375 "name": "canModerate",
1376 "type": "bool",
1377 "version": 1
1378 },
1379 {
1380 "name": "canAdmin",
1381 "type": "bool",
1382 "version": 1
1383 },
1384 {
1385 "name": "buildType",
1386 "type": "@keet/build-type",
1387 "version": 5
1388 }
1389 ]
1390 },
1391 {
1392 "name": "invitation",
1393 "namespace": "keet",
1394 "compact": false,
1395 "flagsPosition": 3,
1396 "fields": [
1397 {
1398 "name": "id",
1399 "required": true,
1400 "type": "@keet/invitation-id",
1401 "version": 1
1402 },
1403 {
1404 "name": "response",
1405 "required": true,
1406 "type": "@keet/signed-pairing-data",
1407 "version": 1
1408 },
1409 {
1410 "name": "metadata",
1411 "required": true,
1412 "type": "@keet/invitation-metadata",
1413 "version": 1
1414 },
1415 {
1416 "name": "anchor",
1417 "type": "@keet/head",
1418 "version": 1
1419 },
1420 {
1421 "name": "isActive",
1422 "type": "bool",
1423 "version": 1
1424 }
1425 ]
1426 },
1427 {
1428 "name": "add-invitation-operation",
1429 "namespace": "keet",
1430 "compact": false,
1431 "flagsPosition": -1,
1432 "fields": [
1433 {
1434 "name": "header",
1435 "required": true,
1436 "type": "@keet/operation-header",
1437 "version": 1
1438 },
1439 {
1440 "name": "invitation",
1441 "required": true,
1442 "type": "@keet/invitation",
1443 "version": 1
1444 }
1445 ]
1446 },
1447 {
1448 "name": "remove-invitation-operation",
1449 "namespace": "keet",
1450 "compact": false,
1451 "flagsPosition": -1,
1452 "fields": [
1453 {
1454 "name": "header",
1455 "required": true,
1456 "type": "@keet/operation-header",
1457 "version": 1
1458 },
1459 {
1460 "name": "id",
1461 "required": true,
1462 "type": "fixed32",
1463 "version": 1
1464 }
1465 ]
1466 },
1467 {
1468 "name": "sendable-room-invitation",
1469 "namespace": "keet",
1470 "compact": false,
1471 "flagsPosition": -1,
1472 "fields": [
1473 {
1474 "name": "mailbox",
1475 "required": true,
1476 "type": "fixed32",
1477 "version": 1
1478 },
1479 {
1480 "name": "invitationSeed",
1481 "required": true,
1482 "type": "fixed32",
1483 "version": 1
1484 },
1485 {
1486 "name": "anchor",
1487 "required": true,
1488 "type": "@keet/head",
1489 "version": 1
1490 }
1491 ]
1492 },
1493 {
1494 "name": "readonly-room-invitation",
1495 "namespace": "keet",
1496 "compact": false,
1497 "flagsPosition": 3,
1498 "fields": [
1499 {
1500 "name": "roomKey",
1501 "required": true,
1502 "type": "fixed32",
1503 "version": 1
1504 },
1505 {
1506 "name": "encryptionKey",
1507 "required": true,
1508 "type": "fixed32",
1509 "version": 1
1510 },
1511 {
1512 "name": "seed",
1513 "required": true,
1514 "type": "fixed32",
1515 "version": 1
1516 },
1517 {
1518 "name": "fastForwardTo",
1519 "type": "fixed32",
1520 "version": 1
1521 }
1522 ]
1523 },
1524 {
1525 "name": "sendable-identity-invitation",
1526 "namespace": "keet",
1527 "compact": false,
1528 "flagsPosition": -1,
1529 "fields": [
1530 {
1531 "name": "mailbox",
1532 "required": true,
1533 "type": "fixed32",
1534 "version": 1
1535 },
1536 {
1537 "name": "invitationSeed",
1538 "required": true,
1539 "type": "fixed32",
1540 "version": 1
1541 },
1542 {
1543 "name": "anchor",
1544 "required": true,
1545 "type": "@keet/head",
1546 "version": 1
1547 },
1548 {
1549 "name": "identityPublicKey",
1550 "required": true,
1551 "type": "@keet/member-key",
1552 "version": 1
1553 }
1554 ]
1555 },
1556 {
1557 "name": "sendable-contact-invitation",
1558 "namespace": "keet",
1559 "compact": false,
1560 "flagsPosition": -1,
1561 "fields": [
1562 {
1563 "name": "mailbox",
1564 "required": true,
1565 "type": "fixed32",
1566 "version": 1
1567 }
1568 ]
1569 },
1570 {
1571 "name": "sendable-invitation",
1572 "namespace": "keet",
1573 "compact": false,
1574 "flagsPosition": 0,
1575 "fields": [
1576 {
1577 "name": "room",
1578 "type": "@keet/sendable-room-invitation",
1579 "version": 1
1580 },
1581 {
1582 "name": "identity",
1583 "type": "@keet/sendable-identity-invitation",
1584 "version": 1
1585 },
1586 {
1587 "name": "contact",
1588 "type": "@keet/sendable-contact-invitation",
1589 "version": 1
1590 },
1591 {
1592 "name": "readonly",
1593 "type": "@keet/readonly-room-invitation",
1594 "version": 1
1595 },
1596 {
1597 "name": "additionalNodes",
1598 "array": true,
1599 "type": "ipv4Address",
1600 "version": 1
1601 },
1602 {
1603 "name": "buildType",
1604 "type": "@keet/build-type",
1605 "version": 5
1606 }
1607 ]
1608 },
1609 {
1610 "name": "add-device-operation",
1611 "namespace": "keet",
1612 "compact": false,
1613 "flagsPosition": -1,
1614 "fields": [
1615 {
1616 "name": "header",
1617 "required": true,
1618 "type": "@keet/operation-header",
1619 "version": 1
1620 },
1621 {
1622 "name": "blindRequest",
1623 "required": true,
1624 "type": "buffer",
1625 "version": 1
1626 }
1627 ]
1628 },
1629 {
1630 "name": "update-device-operation",
1631 "namespace": "keet",
1632 "compact": false,
1633 "flagsPosition": 1,
1634 "fields": [
1635 {
1636 "name": "header",
1637 "required": true,
1638 "type": "@keet/operation-header",
1639 "version": 1
1640 },
1641 {
1642 "name": "profile",
1643 "type": "@keet/device-profile",
1644 "version": 1
1645 }
1646 ]
1647 },
1648 {
1649 "name": "remove-device-operation",
1650 "namespace": "keet",
1651 "compact": false,
1652 "flagsPosition": -1,
1653 "fields": [
1654 {
1655 "name": "header",
1656 "required": true,
1657 "type": "@keet/operation-header",
1658 "version": 1
1659 },
1660 {
1661 "name": "key",
1662 "required": true,
1663 "type": "@keet/device-key",
1664 "version": 1
1665 }
1666 ]
1667 },
1668 {
1669 "name": "start-indexing-operation",
1670 "namespace": "keet",
1671 "compact": false,
1672 "flagsPosition": -1,
1673 "fields": []
1674 },
1675 {
1676 "name": "stop-indexing-operation",
1677 "namespace": "keet",
1678 "compact": false,
1679 "flagsPosition": -1,
1680 "fields": []
1681 },
1682 {
1683 "name": "join-request",
1684 "namespace": "keet",
1685 "compact": false,
1686 "flagsPosition": -1,
1687 "fields": [
1688 {
1689 "name": "deviceKey",
1690 "required": true,
1691 "type": "@keet/device-key",
1692 "version": 1
1693 },
1694 {
1695 "name": "id",
1696 "required": true,
1697 "type": "@keet/invitation-id",
1698 "version": 1
1699 },
1700 {
1701 "name": "request",
1702 "required": true,
1703 "type": "@keet/device-request-with-invitation",
1704 "version": 1
1705 }
1706 ]
1707 },
1708 {
1709 "name": "accept-join-request-operation",
1710 "namespace": "keet",
1711 "compact": false,
1712 "flagsPosition": 2,
1713 "fields": [
1714 {
1715 "name": "header",
1716 "required": true,
1717 "type": "@keet/operation-header",
1718 "version": 1
1719 },
1720 {
1721 "name": "deviceKey",
1722 "required": true,
1723 "type": "@keet/device-key",
1724 "version": 1
1725 },
1726 {
1727 "name": "identity",
1728 "type": "@keet/device-response-identity",
1729 "version": 1
1730 }
1731 ]
1732 },
1733 {
1734 "name": "reject-join-request-operation",
1735 "namespace": "keet",
1736 "compact": false,
1737 "flagsPosition": -1,
1738 "fields": [
1739 {
1740 "name": "header",
1741 "required": true,
1742 "type": "@keet/operation-header",
1743 "version": 1
1744 },
1745 {
1746 "name": "deviceKey",
1747 "required": true,
1748 "type": "@keet/device-key",
1749 "version": 1
1750 }
1751 ]
1752 },
1753 {
1754 "name": "member",
1755 "namespace": "keet",
1756 "compact": false,
1757 "flagsPosition": -1,
1758 "fields": [
1759 {
1760 "name": "key",
1761 "required": true,
1762 "type": "@keet/member-key",
1763 "version": 1
1764 },
1765 {
1766 "name": "status",
1767 "required": true,
1768 "type": "@keet/member-status",
1769 "version": 1
1770 },
1771 {
1772 "name": "profile",
1773 "required": true,
1774 "type": "@keet/member-profile",
1775 "version": 1
1776 }
1777 ]
1778 },
1779 {
1780 "name": "full-member",
1781 "namespace": "keet",
1782 "compact": false,
1783 "flagsPosition": 3,
1784 "fields": [
1785 {
1786 "name": "key",
1787 "required": true,
1788 "type": "@keet/member-key",
1789 "version": 1
1790 },
1791 {
1792 "name": "status",
1793 "required": true,
1794 "type": "@keet/member-status",
1795 "version": 1
1796 },
1797 {
1798 "name": "profile",
1799 "required": true,
1800 "type": "@keet/member-profile",
1801 "version": 1
1802 },
1803 {
1804 "name": "proofs",
1805 "type": "@keet/member-proofs",
1806 "version": 1
1807 }
1808 ]
1809 },
1810 {
1811 "name": "member-proofs",
1812 "namespace": "keet",
1813 "compact": false,
1814 "flagsPosition": 1,
1815 "fields": [
1816 {
1817 "name": "key",
1818 "required": true,
1819 "type": "@keet/member-key",
1820 "version": 1
1821 },
1822 {
1823 "name": "profileAttestation",
1824 "type": "buffer",
1825 "version": 1
1826 },
1827 {
1828 "name": "latestReceipt",
1829 "type": "buffer",
1830 "version": 1
1831 }
1832 ]
1833 },
1834 {
1835 "name": "update-member-operation",
1836 "namespace": "keet",
1837 "compact": false,
1838 "flagsPosition": -1,
1839 "fields": [
1840 {
1841 "name": "header",
1842 "required": true,
1843 "type": "@keet/operation-header",
1844 "version": 1
1845 },
1846 {
1847 "name": "member",
1848 "required": true,
1849 "type": "@keet/member-update",
1850 "version": 1
1851 }
1852 ]
1853 },
1854 {
1855 "name": "change-member-status-operation",
1856 "namespace": "keet",
1857 "compact": false,
1858 "flagsPosition": -1,
1859 "fields": [
1860 {
1861 "name": "header",
1862 "required": true,
1863 "type": "@keet/operation-header",
1864 "version": 1
1865 },
1866 {
1867 "name": "memberKey",
1868 "required": true,
1869 "type": "@keet/member-key",
1870 "version": 1
1871 },
1872 {
1873 "name": "key",
1874 "required": true,
1875 "type": "uint",
1876 "version": 1
1877 },
1878 {
1879 "name": "status",
1880 "required": true,
1881 "type": "@keet/member-moderation-status",
1882 "version": 1
1883 }
1884 ]
1885 },
1886 {
1887 "name": "change-member-role-operation",
1888 "namespace": "keet",
1889 "compact": false,
1890 "flagsPosition": 2,
1891 "fields": [
1892 {
1893 "name": "header",
1894 "required": true,
1895 "type": "@keet/operation-header",
1896 "version": 1
1897 },
1898 {
1899 "name": "key",
1900 "required": true,
1901 "type": "@keet/member-key",
1902 "version": 1
1903 },
1904 {
1905 "name": "isModerator",
1906 "type": "bool",
1907 "version": 1
1908 },
1909 {
1910 "name": "isAdmin",
1911 "type": "bool",
1912 "version": 1
1913 }
1914 ]
1915 },
1916 {
1917 "name": "remove-member-operation",
1918 "namespace": "keet",
1919 "compact": false,
1920 "flagsPosition": -1,
1921 "fields": [
1922 {
1923 "name": "header",
1924 "required": true,
1925 "type": "@keet/operation-header",
1926 "version": 1
1927 },
1928 {
1929 "name": "key",
1930 "required": true,
1931 "type": "@keet/member-key",
1932 "version": 1
1933 }
1934 ]
1935 },
1936 {
1937 "name": "member-activity",
1938 "namespace": "keet",
1939 "compact": false,
1940 "flagsPosition": -1,
1941 "fields": [
1942 {
1943 "name": "key",
1944 "required": true,
1945 "type": "@keet/member-key",
1946 "version": 1
1947 },
1948 {
1949 "name": "mentions",
1950 "required": true,
1951 "type": "uint",
1952 "version": 1
1953 }
1954 ]
1955 },
1956 {
1957 "name": "member-joined-event",
1958 "namespace": "keet",
1959 "compact": false,
1960 "flagsPosition": 0,
1961 "fields": [
1962 {
1963 "name": "memberKey",
1964 "type": "@keet/member-key",
1965 "version": 1
1966 }
1967 ]
1968 },
1969 {
1970 "name": "member-left-event",
1971 "namespace": "keet",
1972 "compact": false,
1973 "flagsPosition": 0,
1974 "fields": [
1975 {
1976 "name": "memberKey",
1977 "type": "@keet/member-key",
1978 "version": 1
1979 }
1980 ]
1981 },
1982 {
1983 "name": "member-removed-event",
1984 "namespace": "keet",
1985 "compact": false,
1986 "flagsPosition": 0,
1987 "fields": [
1988 {
1989 "name": "memberKey",
1990 "type": "@keet/member-key",
1991 "version": 1
1992 }
1993 ]
1994 },
1995 {
1996 "name": "title-changed-chat-event",
1997 "namespace": "keet",
1998 "compact": false,
1999 "flagsPosition": 0,
2000 "fields": [
2001 {
2002 "name": "from",
2003 "type": "string",
2004 "version": 1
2005 },
2006 {
2007 "name": "to",
2008 "type": "string",
2009 "version": 1
2010 }
2011 ]
2012 },
2013 {
2014 "name": "chat-event",
2015 "namespace": "keet",
2016 "compact": false,
2017 "flagsPosition": 0,
2018 "fields": [
2019 {
2020 "name": "memberJoined",
2021 "type": "@keet/member-joined-event",
2022 "version": 1
2023 },
2024 {
2025 "name": "memberLeft",
2026 "type": "@keet/member-left-event",
2027 "version": 1
2028 },
2029 {
2030 "name": "titleChanged",
2031 "type": "@keet/title-changed-chat-event",
2032 "version": 1
2033 },
2034 {
2035 "name": "callStarted",
2036 "type": "bool",
2037 "version": 1
2038 },
2039 {
2040 "name": "callHangup",
2041 "type": "bool",
2042 "version": 1
2043 },
2044 {
2045 "name": "callMissed",
2046 "type": "bool",
2047 "version": 1
2048 },
2049 {
2050 "name": "roomAvatarChanged",
2051 "type": "bool",
2052 "version": 1
2053 },
2054 {
2055 "name": "invitationCreated",
2056 "type": "bool",
2057 "version": 1
2058 },
2059 {
2060 "name": "memberRemoved",
2061 "type": "@keet/member-removed-event",
2062 "version": 1
2063 },
2064 {
2065 "name": "locationShared",
2066 "type": "@keet/location-shared-event",
2067 "version": 3
2068 }
2069 ]
2070 },
2071 {
2072 "name": "sendable-event",
2073 "namespace": "keet",
2074 "compact": false,
2075 "flagsPosition": 0,
2076 "fields": [
2077 {
2078 "name": "callStarted",
2079 "type": "bool",
2080 "version": 1
2081 },
2082 {
2083 "name": "callHangup",
2084 "type": "bool",
2085 "version": 1
2086 },
2087 {
2088 "name": "callMissed",
2089 "type": "bool",
2090 "version": 1
2091 },
2092 {
2093 "name": "locationShared",
2094 "type": "@keet/location-shared-event",
2095 "version": 3
2096 }
2097 ]
2098 },
2099 {
2100 "name": "display-range",
2101 "namespace": "keet",
2102 "compact": false,
2103 "flagsPosition": -1,
2104 "fields": [
2105 {
2106 "name": "start",
2107 "required": true,
2108 "type": "uint",
2109 "version": 1
2110 },
2111 {
2112 "name": "length",
2113 "required": true,
2114 "type": "uint",
2115 "version": 1
2116 }
2117 ]
2118 },
2119 {
2120 "name": "display-content-range",
2121 "namespace": "keet",
2122 "compact": false,
2123 "flagsPosition": -1,
2124 "fields": [
2125 {
2126 "name": "range",
2127 "required": true,
2128 "type": "@keet/display-range",
2129 "version": 1
2130 },
2131 {
2132 "name": "content",
2133 "required": true,
2134 "type": "string",
2135 "version": 1
2136 }
2137 ]
2138 },
2139 {
2140 "name": "mention-display-item",
2141 "namespace": "keet",
2142 "compact": false,
2143 "flagsPosition": -1,
2144 "fields": [
2145 {
2146 "name": "range",
2147 "required": true,
2148 "type": "@keet/display-range",
2149 "version": 1
2150 },
2151 {
2152 "name": "memberKey",
2153 "required": true,
2154 "type": "@keet/member-key",
2155 "version": 1
2156 }
2157 ]
2158 },
2159 {
2160 "name": "translation-display-item",
2161 "namespace": "keet",
2162 "compact": false,
2163 "flagsPosition": -1,
2164 "fields": [
2165 {
2166 "name": "range",
2167 "required": true,
2168 "type": "@keet/display-range",
2169 "version": 1
2170 },
2171 {
2172 "name": "language",
2173 "required": true,
2174 "type": "@keet/room-supported-language",
2175 "version": 1
2176 },
2177 {
2178 "name": "text",
2179 "required": true,
2180 "type": "string",
2181 "version": 1
2182 }
2183 ]
2184 },
2185 {
2186 "name": "link-preview",
2187 "namespace": "keet",
2188 "compact": false,
2189 "flagsPosition": 0,
2190 "fields": [
2191 {
2192 "name": "title",
2193 "type": "string",
2194 "version": 1
2195 },
2196 {
2197 "name": "description",
2198 "type": "string",
2199 "version": 1
2200 },
2201 {
2202 "name": "file",
2203 "type": "@keet/file",
2204 "version": 1
2205 },
2206 {
2207 "name": "files",
2208 "array": true,
2209 "type": "uint",
2210 "version": 1
2211 }
2212 ]
2213 },
2214 {
2215 "name": "display-link-item",
2216 "namespace": "keet",
2217 "compact": false,
2218 "flagsPosition": 2,
2219 "fields": [
2220 {
2221 "name": "range",
2222 "required": true,
2223 "type": "@keet/display-range",
2224 "version": 1
2225 },
2226 {
2227 "name": "url",
2228 "required": true,
2229 "type": "string",
2230 "version": 1
2231 },
2232 {
2233 "name": "preview",
2234 "type": "@keet/link-preview",
2235 "version": 1
2236 }
2237 ]
2238 },
2239 {
2240 "name": "display",
2241 "namespace": "keet",
2242 "compact": false,
2243 "flagsPosition": 0,
2244 "fields": [
2245 {
2246 "name": "mention",
2247 "array": true,
2248 "type": "@keet/mention-display-item",
2249 "version": 1
2250 },
2251 {
2252 "name": "httpLink",
2253 "array": true,
2254 "type": "@keet/display-link-item",
2255 "version": 1
2256 },
2257 {
2258 "name": "pearLink",
2259 "array": true,
2260 "type": "@keet/display-link-item",
2261 "version": 1
2262 },
2263 {
2264 "name": "bold",
2265 "array": true,
2266 "type": "@keet/display-range",
2267 "version": 1
2268 },
2269 {
2270 "name": "italic",
2271 "array": true,
2272 "type": "@keet/display-range",
2273 "version": 1
2274 },
2275 {
2276 "name": "code",
2277 "array": true,
2278 "type": "@keet/display-range",
2279 "version": 1
2280 },
2281 {
2282 "name": "emoji",
2283 "array": true,
2284 "type": "@keet/display-content-range",
2285 "version": 1
2286 },
2287 {
2288 "name": "codeBlock",
2289 "array": true,
2290 "type": "@keet/display-range",
2291 "version": 1
2292 },
2293 {
2294 "name": "strike",
2295 "array": true,
2296 "type": "@keet/display-range",
2297 "version": 1
2298 },
2299 {
2300 "name": "translation",
2301 "array": true,
2302 "type": "@keet/translation-display-item",
2303 "version": 1
2304 }
2305 ]
2306 },
2307 {
2308 "name": "oplog-message",
2309 "namespace": "keet",
2310 "compact": false,
2311 "flagsPosition": 0,
2312 "fields": [
2313 {
2314 "name": "text",
2315 "type": "string",
2316 "version": 1
2317 },
2318 {
2319 "name": "files",
2320 "array": true,
2321 "type": "@keet/file",
2322 "version": 1
2323 },
2324 {
2325 "name": "display",
2326 "type": "@keet/display",
2327 "version": 1
2328 },
2329 {
2330 "name": "replyTo",
2331 "type": "@keet/oplog-id",
2332 "version": 1
2333 },
2334 {
2335 "name": "parent",
2336 "type": "@keet/oplog-id",
2337 "version": 1
2338 },
2339 {
2340 "name": "event",
2341 "type": "@keet/sendable-event",
2342 "version": 1
2343 },
2344 {
2345 "name": "forwarded",
2346 "type": "bool",
2347 "version": 3
2348 }
2349 ]
2350 },
2351 {
2352 "name": "index-message",
2353 "namespace": "keet",
2354 "compact": false,
2355 "flagsPosition": 0,
2356 "fields": [
2357 {
2358 "name": "text",
2359 "type": "string",
2360 "version": 1
2361 },
2362 {
2363 "name": "files",
2364 "array": true,
2365 "type": "uint",
2366 "version": 1
2367 },
2368 {
2369 "name": "display",
2370 "type": "@keet/display",
2371 "version": 1
2372 },
2373 {
2374 "name": "replyTo",
2375 "type": "@keet/oplog-id",
2376 "version": 1
2377 },
2378 {
2379 "name": "parent",
2380 "type": "@keet/oplog-id",
2381 "version": 1
2382 },
2383 {
2384 "name": "forwarded",
2385 "type": "bool",
2386 "version": 3
2387 }
2388 ]
2389 },
2390 {
2391 "name": "full-index-message",
2392 "namespace": "keet",
2393 "compact": false,
2394 "flagsPosition": 0,
2395 "fields": [
2396 {
2397 "name": "text",
2398 "type": "string",
2399 "version": 1
2400 },
2401 {
2402 "name": "files",
2403 "array": true,
2404 "type": "@keet/file",
2405 "version": 1
2406 },
2407 {
2408 "name": "display",
2409 "type": "@keet/display",
2410 "version": 1
2411 },
2412 {
2413 "name": "replyTo",
2414 "type": "@keet/oplog-id",
2415 "version": 1
2416 },
2417 {
2418 "name": "parent",
2419 "type": "@keet/oplog-id",
2420 "version": 1
2421 },
2422 {
2423 "name": "forwarded",
2424 "type": "bool",
2425 "version": 3
2426 }
2427 ]
2428 },
2429 {
2430 "name": "message-status",
2431 "namespace": "keet",
2432 "compact": false,
2433 "flagsPosition": 0,
2434 "fields": [
2435 {
2436 "name": "isEdited",
2437 "type": "bool",
2438 "version": 1
2439 },
2440 {
2441 "name": "isDeleted",
2442 "type": "bool",
2443 "version": 1
2444 },
2445 {
2446 "name": "isPinned",
2447 "type": "bool",
2448 "version": 1
2449 }
2450 ]
2451 },
2452 {
2453 "name": "message-index-id",
2454 "namespace": "keet",
2455 "compact": true,
2456 "flagsPosition": -1,
2457 "fields": [
2458 {
2459 "name": "thread",
2460 "required": true,
2461 "type": "uint",
2462 "version": 1
2463 },
2464 {
2465 "name": "index",
2466 "required": true,
2467 "type": "uint",
2468 "version": 1
2469 }
2470 ]
2471 },
2472 {
2473 "name": "thread",
2474 "namespace": "keet",
2475 "compact": false,
2476 "flagsPosition": 2,
2477 "fields": [
2478 {
2479 "name": "id",
2480 "required": true,
2481 "type": "uint",
2482 "version": 1
2483 },
2484 {
2485 "name": "count",
2486 "required": true,
2487 "type": "uint",
2488 "version": 1
2489 },
2490 {
2491 "name": "parent",
2492 "type": "@keet/oplog-id",
2493 "version": 1
2494 },
2495 {
2496 "name": "stats",
2497 "type": "@keet/stats",
2498 "version": 1
2499 }
2500 ]
2501 },
2502 {
2503 "name": "chat-message-record",
2504 "namespace": "keet",
2505 "compact": false,
2506 "flagsPosition": 4,
2507 "fields": [
2508 {
2509 "name": "id",
2510 "required": true,
2511 "type": "@keet/message-index-id",
2512 "version": 1
2513 },
2514 {
2515 "name": "oplog",
2516 "required": true,
2517 "type": "@keet/oplog-id",
2518 "version": 1
2519 },
2520 {
2521 "name": "clock",
2522 "required": true,
2523 "type": "uint",
2524 "version": 1
2525 },
2526 {
2527 "name": "timestamp",
2528 "required": true,
2529 "type": "uint",
2530 "version": 1
2531 },
2532 {
2533 "name": "editedAt",
2534 "type": "uint",
2535 "version": 1
2536 },
2537 {
2538 "name": "status",
2539 "required": true,
2540 "type": "@keet/message-status",
2541 "version": 1
2542 },
2543 {
2544 "name": "message",
2545 "type": "@keet/index-message",
2546 "version": 1
2547 },
2548 {
2549 "name": "event",
2550 "type": "@keet/chat-event",
2551 "version": 1
2552 }
2553 ]
2554 },
2555 {
2556 "name": "full-chat-message-record",
2557 "namespace": "keet",
2558 "compact": false,
2559 "flagsPosition": 4,
2560 "fields": [
2561 {
2562 "name": "id",
2563 "required": true,
2564 "type": "@keet/message-index-id",
2565 "version": 1
2566 },
2567 {
2568 "name": "oplog",
2569 "required": true,
2570 "type": "@keet/oplog-id",
2571 "version": 1
2572 },
2573 {
2574 "name": "clock",
2575 "required": true,
2576 "type": "uint",
2577 "version": 1
2578 },
2579 {
2580 "name": "timestamp",
2581 "required": true,
2582 "type": "uint",
2583 "version": 1
2584 },
2585 {
2586 "name": "editedAt",
2587 "type": "uint",
2588 "version": 1
2589 },
2590 {
2591 "name": "status",
2592 "required": true,
2593 "type": "@keet/message-status",
2594 "version": 1
2595 },
2596 {
2597 "name": "message",
2598 "type": "@keet/full-index-message",
2599 "version": 1
2600 },
2601 {
2602 "name": "event",
2603 "type": "@keet/chat-event",
2604 "version": 1
2605 }
2606 ]
2607 },
2608 {
2609 "name": "add-chat-message-operation",
2610 "namespace": "keet",
2611 "compact": false,
2612 "flagsPosition": -1,
2613 "fields": [
2614 {
2615 "name": "header",
2616 "required": true,
2617 "type": "@keet/operation-header",
2618 "version": 1
2619 },
2620 {
2621 "name": "message",
2622 "required": true,
2623 "type": "@keet/oplog-message",
2624 "version": 1
2625 }
2626 ]
2627 },
2628 {
2629 "name": "remove-chat-message-operation",
2630 "namespace": "keet",
2631 "compact": false,
2632 "flagsPosition": -1,
2633 "fields": [
2634 {
2635 "name": "header",
2636 "required": true,
2637 "type": "@keet/operation-header",
2638 "version": 1
2639 },
2640 {
2641 "name": "oplog",
2642 "required": true,
2643 "type": "@keet/oplog-id",
2644 "version": 1
2645 }
2646 ]
2647 },
2648 {
2649 "name": "update-chat-message-operation",
2650 "namespace": "keet",
2651 "compact": false,
2652 "flagsPosition": -1,
2653 "fields": [
2654 {
2655 "name": "header",
2656 "required": true,
2657 "type": "@keet/operation-header",
2658 "version": 1
2659 },
2660 {
2661 "name": "oplog",
2662 "required": true,
2663 "type": "@keet/oplog-id",
2664 "version": 1
2665 },
2666 {
2667 "name": "message",
2668 "required": true,
2669 "type": "@keet/oplog-message",
2670 "version": 1
2671 }
2672 ]
2673 },
2674 {
2675 "name": "pin-chat-message-operation",
2676 "namespace": "keet",
2677 "compact": false,
2678 "flagsPosition": 2,
2679 "fields": [
2680 {
2681 "name": "header",
2682 "required": true,
2683 "type": "@keet/operation-header",
2684 "version": 1
2685 },
2686 {
2687 "name": "oplog",
2688 "required": true,
2689 "type": "@keet/oplog-id",
2690 "version": 1
2691 },
2692 {
2693 "name": "isPinned",
2694 "type": "bool",
2695 "version": 1
2696 }
2697 ]
2698 },
2699 {
2700 "name": "display-type",
2701 "namespace": "keet",
2702 "offset": 1,
2703 "enum": [
2704 {
2705 "key": "HttpLink",
2706 "version": 1
2707 },
2708 {
2709 "key": "PearLink",
2710 "version": 1
2711 }
2712 ],
2713 "strings": false
2714 },
2715 {
2716 "name": "add-file-preview-operation",
2717 "namespace": "keet",
2718 "compact": false,
2719 "flagsPosition": 4,
2720 "fields": [
2721 {
2722 "name": "header",
2723 "required": true,
2724 "type": "@keet/operation-header",
2725 "version": 1
2726 },
2727 {
2728 "name": "oplog",
2729 "required": true,
2730 "type": "@keet/oplog-id",
2731 "version": 1
2732 },
2733 {
2734 "name": "index",
2735 "required": true,
2736 "type": "uint",
2737 "version": 1
2738 },
2739 {
2740 "name": "preview",
2741 "required": true,
2742 "type": "@keet/image-file",
2743 "version": 1
2744 },
2745 {
2746 "name": "displayType",
2747 "type": "@keet/display-type",
2748 "version": 1
2749 }
2750 ]
2751 },
2752 {
2753 "name": "reaction",
2754 "namespace": "keet",
2755 "compact": false,
2756 "flagsPosition": -1,
2757 "fields": [
2758 {
2759 "name": "id",
2760 "required": true,
2761 "type": "@keet/message-index-id",
2762 "version": 1
2763 },
2764 {
2765 "name": "sender",
2766 "required": true,
2767 "type": "@keet/member-key",
2768 "version": 1
2769 },
2770 {
2771 "name": "clock",
2772 "required": true,
2773 "type": "uint",
2774 "version": 1
2775 },
2776 {
2777 "name": "reaction",
2778 "required": true,
2779 "type": "string",
2780 "version": 1
2781 }
2782 ]
2783 },
2784 {
2785 "name": "reactions-summary",
2786 "namespace": "keet",
2787 "compact": false,
2788 "flagsPosition": -1,
2789 "fields": [
2790 {
2791 "name": "text",
2792 "required": true,
2793 "type": "string",
2794 "version": 1
2795 },
2796 {
2797 "name": "count",
2798 "required": true,
2799 "type": "uint",
2800 "version": 1
2801 }
2802 ]
2803 },
2804 {
2805 "name": "reactions-digest",
2806 "namespace": "keet",
2807 "compact": false,
2808 "flagsPosition": 3,
2809 "fields": [
2810 {
2811 "name": "id",
2812 "required": true,
2813 "type": "@keet/message-index-id",
2814 "version": 1
2815 },
2816 {
2817 "name": "total",
2818 "required": true,
2819 "type": "uint",
2820 "version": 1
2821 },
2822 {
2823 "name": "reactions",
2824 "required": true,
2825 "array": true,
2826 "type": "@keet/reactions-summary",
2827 "version": 1
2828 },
2829 {
2830 "name": "editedAt",
2831 "type": "uint",
2832 "version": 1
2833 }
2834 ]
2835 },
2836 {
2837 "name": "add-reaction-operation",
2838 "namespace": "keet",
2839 "compact": false,
2840 "flagsPosition": -1,
2841 "fields": [
2842 {
2843 "name": "header",
2844 "required": true,
2845 "type": "@keet/operation-header",
2846 "version": 1
2847 },
2848 {
2849 "name": "oplog",
2850 "required": true,
2851 "type": "@keet/oplog-id",
2852 "version": 1
2853 },
2854 {
2855 "name": "reaction",
2856 "required": true,
2857 "type": "string",
2858 "version": 1
2859 }
2860 ]
2861 },
2862 {
2863 "name": "remove-reaction-operation",
2864 "namespace": "keet",
2865 "compact": false,
2866 "flagsPosition": -1,
2867 "fields": [
2868 {
2869 "name": "header",
2870 "required": true,
2871 "type": "@keet/operation-header",
2872 "version": 1
2873 },
2874 {
2875 "name": "oplog",
2876 "required": true,
2877 "type": "@keet/oplog-id",
2878 "version": 1
2879 },
2880 {
2881 "name": "reaction",
2882 "required": true,
2883 "type": "string",
2884 "version": 1
2885 }
2886 ]
2887 },
2888 {
2889 "name": "update-room-config-operation",
2890 "namespace": "keet",
2891 "compact": false,
2892 "flagsPosition": -1,
2893 "fields": [
2894 {
2895 "name": "header",
2896 "required": true,
2897 "type": "@keet/operation-header",
2898 "version": 1
2899 },
2900 {
2901 "name": "key",
2902 "required": true,
2903 "type": "uint",
2904 "version": 1
2905 },
2906 {
2907 "name": "config",
2908 "required": true,
2909 "type": "@keet/room-config",
2910 "version": 1
2911 }
2912 ]
2913 },
2914 {
2915 "name": "group-member",
2916 "namespace": "keet",
2917 "compact": false,
2918 "flagsPosition": 2,
2919 "fields": [
2920 {
2921 "name": "memberKey",
2922 "required": true,
2923 "type": "@keet/member-key",
2924 "version": 1
2925 },
2926 {
2927 "name": "displayName",
2928 "required": true,
2929 "type": "string",
2930 "version": 1
2931 },
2932 {
2933 "name": "avatar",
2934 "type": "@keet/image-file",
2935 "version": 1
2936 }
2937 ]
2938 },
2939 {
2940 "name": "user-registry-info",
2941 "namespace": "keet",
2942 "compact": false,
2943 "flagsPosition": 1,
2944 "fields": [
2945 {
2946 "name": "key",
2947 "required": true,
2948 "type": "@keet/core-key",
2949 "version": 1
2950 },
2951 {
2952 "name": "username",
2953 "type": "string",
2954 "version": 1
2955 }
2956 ]
2957 },
2958 {
2959 "name": "room-identity",
2960 "namespace": "keet",
2961 "compact": false,
2962 "flagsPosition": 1,
2963 "fields": [
2964 {
2965 "name": "publicKey",
2966 "required": true,
2967 "type": "@keet/member-key",
2968 "version": 1
2969 },
2970 {
2971 "name": "discoveryCoreKey",
2972 "type": "@keet/core-key",
2973 "version": 1
2974 },
2975 {
2976 "name": "userRegistry",
2977 "type": "@keet/user-registry-info",
2978 "version": 1
2979 }
2980 ]
2981 },
2982 {
2983 "name": "genesis-operation",
2984 "namespace": "keet",
2985 "compact": false,
2986 "flagsPosition": 3,
2987 "fields": [
2988 {
2989 "name": "header",
2990 "required": true,
2991 "type": "@keet/operation-header",
2992 "version": 1
2993 },
2994 {
2995 "name": "digest",
2996 "required": true,
2997 "type": "@keet/system-digest",
2998 "version": 1
2999 },
3000 {
3001 "name": "capabilities",
3002 "required": true,
3003 "type": "@keet/room-seed",
3004 "version": 1
3005 },
3006 {
3007 "name": "config",
3008 "type": "@keet/room-config",
3009 "version": 1
3010 },
3011 {
3012 "name": "identity",
3013 "type": "@keet/room-identity",
3014 "version": 1
3015 },
3016 {
3017 "name": "bootstrapDevice",
3018 "type": "@keet/device-update",
3019 "version": 1
3020 },
3021 {
3022 "name": "initialMembers",
3023 "array": true,
3024 "type": "@keet/member-update",
3025 "version": 1
3026 }
3027 ]
3028 },
3029 {
3030 "name": "upgrade-operation",
3031 "namespace": "keet",
3032 "compact": false,
3033 "flagsPosition": -1,
3034 "fields": [
3035 {
3036 "name": "header",
3037 "required": true,
3038 "type": "@keet/operation-header",
3039 "version": 1
3040 },
3041 {
3042 "name": "version",
3043 "required": true,
3044 "type": "uint",
3045 "version": 1
3046 }
3047 ]
3048 },
3049 {
3050 "name": "migrate-abi-operation",
3051 "namespace": "keet",
3052 "compact": false,
3053 "flagsPosition": 3,
3054 "fields": [
3055 {
3056 "name": "header",
3057 "required": true,
3058 "type": "@keet/operation-header",
3059 "version": 1
3060 },
3061 {
3062 "name": "from",
3063 "required": true,
3064 "type": "uint",
3065 "version": 1
3066 },
3067 {
3068 "name": "to",
3069 "required": true,
3070 "type": "uint",
3071 "version": 1
3072 },
3073 {
3074 "name": "buildType",
3075 "type": "@keet/build-type",
3076 "version": 5
3077 }
3078 ]
3079 },
3080 {
3081 "name": "system-settings-keys",
3082 "namespace": "keet",
3083 "offset": 1,
3084 "enum": [
3085 {
3086 "key": "RoomType",
3087 "version": 1
3088 },
3089 {
3090 "key": "IsExperimental",
3091 "version": 1
3092 },
3093 {
3094 "key": "IsJoiningDisabled",
3095 "version": 1
3096 },
3097 {
3098 "key": "IsAppendingDisabled",
3099 "version": 1
3100 },
3101 {
3102 "key": "IsCallingDisabled",
3103 "version": 1
3104 },
3105 {
3106 "key": "IsMembershipEventsDisabled",
3107 "version": 1
3108 },
3109 {
3110 "key": "IsAttachmentsDisabled",
3111 "version": 4
3112 },
3113 {
3114 "key": "IsLinksDisabled",
3115 "version": 4
3116 }
3117 ],
3118 "strings": false
3119 },
3120 {
3121 "name": "update-system-settings-operation",
3122 "namespace": "keet",
3123 "compact": false,
3124 "flagsPosition": -1,
3125 "fields": [
3126 {
3127 "name": "header",
3128 "required": true,
3129 "type": "@keet/operation-header",
3130 "version": 1
3131 },
3132 {
3133 "name": "key",
3134 "required": true,
3135 "type": "uint",
3136 "version": 1
3137 },
3138 {
3139 "name": "settings",
3140 "required": true,
3141 "type": "@keet/system-settings",
3142 "version": 1
3143 }
3144 ]
3145 },
3146 {
3147 "name": "test-increment-operation",
3148 "namespace": "keet",
3149 "compact": false,
3150 "flagsPosition": -1,
3151 "fields": [
3152 {
3153 "name": "header",
3154 "required": true,
3155 "type": "@keet/operation-header",
3156 "version": 1
3157 },
3158 {
3159 "name": "value",
3160 "required": true,
3161 "type": "uint",
3162 "version": 1
3163 }
3164 ]
3165 },
3166 {
3167 "name": "test-collection-record-1",
3168 "namespace": "keet",
3169 "compact": false,
3170 "flagsPosition": -1,
3171 "fields": [
3172 {
3173 "name": "key",
3174 "required": true,
3175 "type": "uint",
3176 "version": 1
3177 },
3178 {
3179 "name": "value",
3180 "required": true,
3181 "type": "uint",
3182 "version": 1
3183 }
3184 ]
3185 },
3186 {
3187 "name": "label-type",
3188 "namespace": "keet",
3189 "offset": 1,
3190 "enum": [
3191 {
3192 "key": "Flag",
3193 "version": 1
3194 }
3195 ],
3196 "strings": false
3197 },
3198 {
3199 "name": "chat-label",
3200 "namespace": "keet",
3201 "compact": false,
3202 "flagsPosition": -1,
3203 "fields": [
3204 {
3205 "name": "id",
3206 "required": true,
3207 "type": "@keet/message-index-id",
3208 "version": 1
3209 },
3210 {
3211 "name": "sender",
3212 "required": true,
3213 "type": "@keet/member-key",
3214 "version": 1
3215 },
3216 {
3217 "name": "clock",
3218 "required": true,
3219 "type": "uint",
3220 "version": 1
3221 },
3222 {
3223 "name": "label",
3224 "required": true,
3225 "type": "@keet/label-type",
3226 "version": 1
3227 }
3228 ]
3229 },
3230 {
3231 "name": "add-chat-label-operation",
3232 "namespace": "keet",
3233 "compact": false,
3234 "flagsPosition": -1,
3235 "fields": [
3236 {
3237 "name": "header",
3238 "required": true,
3239 "type": "@keet/operation-header",
3240 "version": 1
3241 },
3242 {
3243 "name": "oplog",
3244 "required": true,
3245 "type": "@keet/oplog-id",
3246 "version": 1
3247 },
3248 {
3249 "name": "label",
3250 "required": true,
3251 "type": "@keet/label-type",
3252 "version": 1
3253 }
3254 ]
3255 },
3256 {
3257 "name": "remove-chat-label-operation",
3258 "namespace": "keet",
3259 "compact": false,
3260 "flagsPosition": -1,
3261 "fields": [
3262 {
3263 "name": "header",
3264 "required": true,
3265 "type": "@keet/operation-header",
3266 "version": 1
3267 },
3268 {
3269 "name": "oplog",
3270 "required": true,
3271 "type": "@keet/oplog-id",
3272 "version": 1
3273 },
3274 {
3275 "name": "label",
3276 "required": true,
3277 "type": "@keet/label-type",
3278 "version": 1
3279 }
3280 ]
3281 },
3282 {
3283 "name": "chat-label-summary",
3284 "namespace": "keet",
3285 "compact": false,
3286 "flagsPosition": -1,
3287 "fields": [
3288 {
3289 "name": "label",
3290 "required": true,
3291 "type": "@keet/label-type",
3292 "version": 1
3293 },
3294 {
3295 "name": "count",
3296 "required": true,
3297 "type": "uint",
3298 "version": 1
3299 }
3300 ]
3301 },
3302 {
3303 "name": "chat-label-digest",
3304 "namespace": "keet",
3305 "compact": false,
3306 "flagsPosition": 4,
3307 "fields": [
3308 {
3309 "name": "id",
3310 "required": true,
3311 "type": "@keet/message-index-id",
3312 "version": 1
3313 },
3314 {
3315 "name": "total",
3316 "required": true,
3317 "type": "uint",
3318 "version": 1
3319 },
3320 {
3321 "name": "labels",
3322 "required": true,
3323 "array": true,
3324 "type": "@keet/chat-label-summary",
3325 "version": 1
3326 },
3327 {
3328 "name": "editedAt",
3329 "required": true,
3330 "type": "uint",
3331 "version": 1
3332 },
3333 {
3334 "name": "flagsClock",
3335 "type": "uint",
3336 "version": 1
3337 },
3338 {
3339 "name": "version",
3340 "type": "uint",
3341 "version": 1
3342 },
3343 {
3344 "name": "isDeleted",
3345 "type": "bool",
3346 "version": 1
3347 }
3348 ]
3349 },
3350 {
3351 "name": "update-read-length-operation",
3352 "namespace": "keet",
3353 "compact": false,
3354 "flagsPosition": -1,
3355 "fields": [
3356 {
3357 "name": "header",
3358 "required": true,
3359 "type": "@keet/operation-header",
3360 "version": 1
3361 },
3362 {
3363 "name": "length",
3364 "required": true,
3365 "type": "uint",
3366 "version": 1
3367 }
3368 ]
3369 },
3370 {
3371 "name": "read-length",
3372 "namespace": "keet",
3373 "compact": false,
3374 "flagsPosition": -1,
3375 "fields": [
3376 {
3377 "name": "memberKey",
3378 "required": true,
3379 "type": "@keet/member-key",
3380 "version": 1
3381 },
3382 {
3383 "name": "length",
3384 "required": true,
3385 "type": "uint",
3386 "version": 1
3387 }
3388 ]
3389 },
3390 {
3391 "name": "tmp-removed-member",
3392 "namespace": "keet",
3393 "compact": false,
3394 "flagsPosition": -1,
3395 "fields": [
3396 {
3397 "name": "key",
3398 "required": true,
3399 "type": "@keet/member-key",
3400 "version": 1
3401 }
3402 ]
3403 },
3404 {
3405 "name": "contact",
3406 "namespace": "keet-private-id",
3407 "compact": false,
3408 "flagsPosition": 2,
3409 "fields": [
3410 {
3411 "name": "memberKey",
3412 "required": true,
3413 "type": "@keet/member-key",
3414 "version": 1
3415 },
3416 {
3417 "name": "status",
3418 "required": true,
3419 "type": "@keet-private-id/contact-status",
3420 "version": 1
3421 },
3422 {
3423 "name": "mailbox",
3424 "type": "@keet/public-key",
3425 "version": 1
3426 },
3427 {
3428 "name": "roomKey",
3429 "type": "@keet/room-key",
3430 "version": 1
3431 }
3432 ]
3433 },
3434 {
3435 "name": "v3-room-migration-info",
3436 "namespace": "keet-private-id",
3437 "compact": false,
3438 "flagsPosition": -1,
3439 "fields": [
3440 {
3441 "name": "roomKey",
3442 "required": true,
3443 "type": "@keet/room-key",
3444 "version": 1
3445 },
3446 {
3447 "name": "encryptionKey",
3448 "required": true,
3449 "type": "@keet/encryption-key",
3450 "version": 1
3451 },
3452 {
3453 "name": "seed",
3454 "required": true,
3455 "type": "fixed32",
3456 "version": 1
3457 },
3458 {
3459 "name": "initiator",
3460 "required": true,
3461 "type": "@keet/head",
3462 "version": 1
3463 },
3464 {
3465 "name": "fastForwardTo",
3466 "required": true,
3467 "type": "fixed32",
3468 "version": 1
3469 }
3470 ]
3471 },
3472 {
3473 "name": "run-v3-migration-operation",
3474 "namespace": "keet-private-id",
3475 "compact": false,
3476 "flagsPosition": -1,
3477 "fields": [
3478 {
3479 "name": "sharedRooms",
3480 "required": true,
3481 "array": true,
3482 "type": "@keet-private-id/v3-room-migration-info",
3483 "version": 1
3484 },
3485 {
3486 "name": "blockedContacts",
3487 "required": true,
3488 "array": true,
3489 "type": "@keet/member-key",
3490 "version": 1
3491 }
3492 ]
3493 },
3494 {
3495 "name": "update-identity-operation",
3496 "namespace": "keet-private-id",
3497 "compact": false,
3498 "flagsPosition": -1,
3499 "fields": [
3500 {
3501 "name": "identity",
3502 "required": true,
3503 "type": "@keet/room-identity",
3504 "version": 1
3505 }
3506 ]
3507 },
3508 {
3509 "name": "counters",
3510 "namespace": "keet-private-id",
3511 "compact": false,
3512 "flagsPosition": -1,
3513 "fields": [
3514 {
3515 "name": "rooms",
3516 "required": true,
3517 "type": "uint",
3518 "version": 1
3519 },
3520 {
3521 "name": "contacts",
3522 "required": true,
3523 "type": "uint",
3524 "version": 1
3525 }
3526 ]
3527 },
3528 {
3529 "name": "stats",
3530 "namespace": "keet-private-id",
3531 "compact": false,
3532 "flagsPosition": -1,
3533 "fields": [
3534 {
3535 "name": "rooms",
3536 "required": true,
3537 "type": "uint",
3538 "version": 1
3539 },
3540 {
3541 "name": "contactRequests",
3542 "required": true,
3543 "type": "uint",
3544 "version": 1
3545 }
3546 ]
3547 },
3548 {
3549 "name": "add-entropy-operation",
3550 "namespace": "keet-private-id",
3551 "compact": false,
3552 "flagsPosition": -1,
3553 "fields": [
3554 {
3555 "name": "entropy",
3556 "required": true,
3557 "type": "buffer",
3558 "version": 1
3559 }
3560 ]
3561 },
3562 {
3563 "name": "pending-invitation-identity",
3564 "namespace": "keet-private-id",
3565 "compact": false,
3566 "flagsPosition": -1,
3567 "fields": [
3568 {
3569 "name": "publicKey",
3570 "required": true,
3571 "type": "@keet/member-key",
3572 "version": 1
3573 },
3574 {
3575 "name": "devicePublicKey",
3576 "required": true,
3577 "type": "@keet/public-key",
3578 "version": 1
3579 },
3580 {
3581 "name": "writerKey",
3582 "required": true,
3583 "type": "@keet/device-key",
3584 "version": 1
3585 }
3586 ]
3587 },
3588 {
3589 "name": "pending-invitation",
3590 "namespace": "keet-private-id",
3591 "compact": false,
3592 "flagsPosition": 6,
3593 "fields": [
3594 {
3595 "name": "id",
3596 "required": true,
3597 "type": "fixed32",
3598 "version": 1
3599 },
3600 {
3601 "name": "invitationSeed",
3602 "required": true,
3603 "type": "fixed32",
3604 "version": 1
3605 },
3606 {
3607 "name": "mailbox",
3608 "required": true,
3609 "type": "fixed32",
3610 "version": 1
3611 },
3612 {
3613 "name": "responseKeyPair",
3614 "required": true,
3615 "type": "@keet/signing-keypair",
3616 "version": 1
3617 },
3618 {
3619 "name": "initiator",
3620 "required": true,
3621 "type": "@keet/head",
3622 "version": 1
3623 },
3624 {
3625 "name": "inviter",
3626 "required": true,
3627 "type": "@keet/head",
3628 "version": 1
3629 },
3630 {
3631 "name": "identity",
3632 "type": "@keet-private-id/pending-invitation-identity",
3633 "version": 1
3634 },
3635 {
3636 "name": "buildType",
3637 "type": "@keet/build-type",
3638 "version": 5
3639 }
3640 ]
3641 },
3642 {
3643 "name": "resolve-pending-invitation-operation",
3644 "namespace": "keet-private-id",
3645 "compact": false,
3646 "flagsPosition": -1,
3647 "fields": [
3648 {
3649 "name": "header",
3650 "required": true,
3651 "type": "@keet/operation-header",
3652 "version": 1
3653 },
3654 {
3655 "name": "blindResponse",
3656 "required": true,
3657 "type": "buffer",
3658 "version": 1
3659 }
3660 ]
3661 },
3662 {
3663 "name": "add-pending-invitation-operation",
3664 "namespace": "keet-private-id",
3665 "compact": false,
3666 "flagsPosition": -1,
3667 "fields": [
3668 {
3669 "name": "header",
3670 "required": true,
3671 "type": "@keet/operation-header",
3672 "version": 1
3673 },
3674 {
3675 "name": "invitation",
3676 "required": true,
3677 "type": "@keet-private-id/pending-invitation",
3678 "version": 1
3679 }
3680 ]
3681 },
3682 {
3683 "name": "remove-pending-invitation-operation",
3684 "namespace": "keet-private-id",
3685 "compact": false,
3686 "flagsPosition": -1,
3687 "fields": [
3688 {
3689 "name": "header",
3690 "required": true,
3691 "type": "@keet/operation-header",
3692 "version": 1
3693 },
3694 {
3695 "name": "id",
3696 "required": true,
3697 "type": "fixed32",
3698 "version": 1
3699 }
3700 ]
3701 },
3702 {
3703 "name": "identity-swap",
3704 "namespace": "keet-private-id",
3705 "compact": false,
3706 "flagsPosition": 2,
3707 "fields": [
3708 {
3709 "name": "publicKey",
3710 "required": true,
3711 "type": "@keet/member-key",
3712 "version": 1
3713 },
3714 {
3715 "name": "devicePublicKey",
3716 "required": true,
3717 "type": "@keet/public-key",
3718 "version": 1
3719 },
3720 {
3721 "name": "privateProfileKey",
3722 "type": "@keet/room-key",
3723 "version": 1
3724 },
3725 {
3726 "name": "deviceKeyPair",
3727 "type": "@keet/signing-keypair",
3728 "version": 1
3729 },
3730 {
3731 "name": "deviceProof",
3732 "required": true,
3733 "type": "buffer",
3734 "version": 1
3735 }
3736 ]
3737 },
3738 {
3739 "name": "identity-swap-v2",
3740 "namespace": "keet-private-id",
3741 "compact": false,
3742 "flagsPosition": 3,
3743 "fields": [
3744 {
3745 "name": "publicKey",
3746 "required": true,
3747 "type": "@keet/member-key",
3748 "version": 1
3749 },
3750 {
3751 "name": "writerKey",
3752 "required": true,
3753 "type": "@keet/core-key",
3754 "version": 1
3755 },
3756 {
3757 "name": "devicePublicKey",
3758 "required": true,
3759 "type": "@keet/public-key",
3760 "version": 1
3761 },
3762 {
3763 "name": "privateProfileKey",
3764 "type": "@keet/room-key",
3765 "version": 1
3766 }
3767 ]
3768 },
3769 {
3770 "name": "room-status",
3771 "namespace": "keet-private-id",
3772 "compact": false,
3773 "flagsPosition": 0,
3774 "fields": [
3775 {
3776 "name": "isActive",
3777 "type": "bool",
3778 "version": 1
3779 },
3780 {
3781 "name": "isFullyMuted",
3782 "type": "bool",
3783 "version": 1
3784 },
3785 {
3786 "name": "isMentionsOnlyMuted",
3787 "type": "bool",
3788 "version": 1
3789 },
3790 {
3791 "name": "isReadOnly",
3792 "type": "bool",
3793 "version": 1
3794 },
3795 {
3796 "name": "isFavorite",
3797 "type": "bool",
3798 "version": 3
3799 }
3800 ]
3801 },
3802 {
3803 "name": "room",
3804 "namespace": "keet-private-id",
3805 "compact": false,
3806 "flagsPosition": 5,
3807 "fields": [
3808 {
3809 "name": "roomKey",
3810 "required": true,
3811 "type": "@keet/room-key",
3812 "version": 1
3813 },
3814 {
3815 "name": "encryptionKey",
3816 "required": true,
3817 "type": "@keet/encryption-key",
3818 "version": 1
3819 },
3820 {
3821 "name": "mailbox",
3822 "required": true,
3823 "type": "@keet/public-key",
3824 "version": 1
3825 },
3826 {
3827 "name": "status",
3828 "required": true,
3829 "type": "@keet-private-id/room-status",
3830 "version": 1
3831 },
3832 {
3833 "name": "clock",
3834 "required": true,
3835 "type": "uint",
3836 "version": 1
3837 },
3838 {
3839 "name": "initiator",
3840 "type": "@keet/head",
3841 "version": 1
3842 },
3843 {
3844 "name": "fastForwardTo",
3845 "type": "fixed32",
3846 "version": 1
3847 },
3848 {
3849 "name": "identitySwap",
3850 "type": "@keet-private-id/identity-swap",
3851 "version": 1
3852 },
3853 {
3854 "name": "identitySwapV2",
3855 "type": "@keet-private-id/pending-invitation-identity",
3856 "version": 1
3857 },
3858 {
3859 "name": "contact",
3860 "type": "@keet/member-key",
3861 "version": 1
3862 }
3863 ]
3864 },
3865 {
3866 "name": "add-room-operation",
3867 "namespace": "keet-private-id",
3868 "compact": false,
3869 "flagsPosition": 4,
3870 "fields": [
3871 {
3872 "name": "header",
3873 "required": true,
3874 "type": "@keet/operation-header",
3875 "version": 1
3876 },
3877 {
3878 "name": "roomKey",
3879 "required": true,
3880 "type": "@keet/room-key",
3881 "version": 1
3882 },
3883 {
3884 "name": "encryptionKey",
3885 "required": true,
3886 "type": "@keet/encryption-key",
3887 "version": 1
3888 },
3889 {
3890 "name": "mailbox",
3891 "required": true,
3892 "type": "@keet/public-key",
3893 "version": 1
3894 },
3895 {
3896 "name": "fastForwardTo",
3897 "type": "fixed32",
3898 "version": 1
3899 },
3900 {
3901 "name": "initiator",
3902 "type": "@keet/head",
3903 "version": 1
3904 },
3905 {
3906 "name": "dm",
3907 "type": "@keet/member-key",
3908 "version": 1
3909 },
3910 {
3911 "name": "isReadOnly",
3912 "type": "bool",
3913 "version": 1
3914 }
3915 ]
3916 },
3917 {
3918 "name": "remove-room-operation",
3919 "namespace": "keet-private-id",
3920 "compact": false,
3921 "flagsPosition": -1,
3922 "fields": [
3923 {
3924 "name": "header",
3925 "required": true,
3926 "type": "@keet/operation-header",
3927 "version": 1
3928 },
3929 {
3930 "name": "discoveryKey",
3931 "required": true,
3932 "type": "@keet/room-discovery-key",
3933 "version": 1
3934 }
3935 ]
3936 },
3937 {
3938 "name": "update-room-status-operation",
3939 "namespace": "keet-private-id",
3940 "compact": false,
3941 "flagsPosition": -1,
3942 "fields": [
3943 {
3944 "name": "header",
3945 "required": true,
3946 "type": "@keet/operation-header",
3947 "version": 1
3948 },
3949 {
3950 "name": "roomKey",
3951 "required": true,
3952 "type": "@keet/room-key",
3953 "version": 1
3954 },
3955 {
3956 "name": "key",
3957 "required": true,
3958 "type": "uint",
3959 "version": 1
3960 },
3961 {
3962 "name": "status",
3963 "required": true,
3964 "type": "@keet-private-id/room-status",
3965 "version": 1
3966 }
3967 ]
3968 },
3969 {
3970 "name": "contact-status",
3971 "namespace": "keet-private-id",
3972 "compact": false,
3973 "flagsPosition": 0,
3974 "fields": [
3975 {
3976 "name": "isBlocked",
3977 "type": "bool",
3978 "version": 1
3979 }
3980 ]
3981 },
3982 {
3983 "name": "contact-record",
3984 "namespace": "keet-private-id",
3985 "compact": false,
3986 "flagsPosition": 3,
3987 "fields": [
3988 {
3989 "name": "memberKey",
3990 "required": true,
3991 "type": "@keet/member-key",
3992 "version": 1
3993 },
3994 {
3995 "name": "clock",
3996 "required": true,
3997 "type": "uint",
3998 "version": 1
3999 },
4000 {
4001 "name": "status",
4002 "required": true,
4003 "type": "@keet-private-id/contact-status",
4004 "version": 1
4005 },
4006 {
4007 "name": "mailbox",
4008 "type": "@keet/public-key",
4009 "version": 1
4010 },
4011 {
4012 "name": "roomKey",
4013 "type": "@keet/room-key",
4014 "version": 1
4015 }
4016 ]
4017 },
4018 {
4019 "name": "add-contact-operation",
4020 "namespace": "keet-private-id",
4021 "compact": false,
4022 "flagsPosition": -1,
4023 "fields": [
4024 {
4025 "name": "header",
4026 "required": true,
4027 "type": "@keet/operation-header",
4028 "version": 1
4029 },
4030 {
4031 "name": "contact",
4032 "required": true,
4033 "type": "@keet-private-id/contact",
4034 "version": 1
4035 }
4036 ]
4037 },
4038 {
4039 "name": "update-contact-status-operation",
4040 "namespace": "keet-private-id",
4041 "compact": false,
4042 "flagsPosition": -1,
4043 "fields": [
4044 {
4045 "name": "header",
4046 "required": true,
4047 "type": "@keet/operation-header",
4048 "version": 1
4049 },
4050 {
4051 "name": "memberKey",
4052 "required": true,
4053 "type": "@keet/member-key",
4054 "version": 1
4055 },
4056 {
4057 "name": "key",
4058 "required": true,
4059 "type": "uint",
4060 "version": 1
4061 },
4062 {
4063 "name": "status",
4064 "required": true,
4065 "type": "@keet-private-id/contact-status",
4066 "version": 1
4067 }
4068 ]
4069 },
4070 {
4071 "name": "remove-contact-operation",
4072 "namespace": "keet-private-id",
4073 "compact": false,
4074 "flagsPosition": -1,
4075 "fields": [
4076 {
4077 "name": "header",
4078 "required": true,
4079 "type": "@keet/operation-header",
4080 "version": 1
4081 },
4082 {
4083 "name": "memberKey",
4084 "required": true,
4085 "type": "@keet/member-key",
4086 "version": 1
4087 }
4088 ]
4089 },
4090 {
4091 "name": "activate-contact-room-operation",
4092 "namespace": "keet-private-id",
4093 "compact": false,
4094 "flagsPosition": -1,
4095 "fields": [
4096 {
4097 "name": "header",
4098 "required": true,
4099 "type": "@keet/operation-header",
4100 "version": 1
4101 },
4102 {
4103 "name": "memberKey",
4104 "required": true,
4105 "type": "@keet/member-key",
4106 "version": 1
4107 }
4108 ]
4109 },
4110 {
4111 "name": "contact-request-status",
4112 "namespace": "keet-private-id",
4113 "compact": false,
4114 "flagsPosition": 0,
4115 "fields": [
4116 {
4117 "name": "isPending",
4118 "type": "bool",
4119 "version": 1
4120 },
4121 {
4122 "name": "isAccepted",
4123 "type": "bool",
4124 "version": 1
4125 },
4126 {
4127 "name": "isRejected",
4128 "type": "bool",
4129 "version": 1
4130 },
4131 {
4132 "name": "isDiscarded",
4133 "type": "bool",
4134 "version": 1
4135 },
4136 {
4137 "name": "isSeen",
4138 "type": "bool",
4139 "version": 1
4140 }
4141 ]
4142 },
4143 {
4144 "name": "contact-request-body",
4145 "namespace": "keet-private-id",
4146 "compact": false,
4147 "flagsPosition": 3,
4148 "fields": [
4149 {
4150 "name": "sender",
4151 "required": true,
4152 "type": "@keet/member-update",
4153 "version": 1
4154 },
4155 {
4156 "name": "keys",
4157 "required": true,
4158 "type": "@keet/room-keys",
4159 "version": 1
4160 },
4161 {
4162 "name": "mailbox",
4163 "required": true,
4164 "type": "@keet/public-key",
4165 "version": 1
4166 },
4167 {
4168 "name": "message",
4169 "type": "string",
4170 "version": 1
4171 }
4172 ]
4173 },
4174 {
4175 "name": "contact-request",
4176 "namespace": "keet-private-id",
4177 "compact": false,
4178 "flagsPosition": -1,
4179 "fields": [
4180 {
4181 "name": "body",
4182 "required": true,
4183 "type": "@keet-private-id/contact-request-body",
4184 "version": 1
4185 },
4186 {
4187 "name": "attestation",
4188 "required": true,
4189 "type": "@keet/identity-attestation",
4190 "version": 1
4191 }
4192 ]
4193 },
4194 {
4195 "name": "contact-request-record",
4196 "namespace": "keet-private-id",
4197 "compact": false,
4198 "flagsPosition": 6,
4199 "fields": [
4200 {
4201 "name": "memberKey",
4202 "required": true,
4203 "type": "@keet/member-key",
4204 "version": 1
4205 },
4206 {
4207 "name": "clock",
4208 "required": true,
4209 "type": "uint",
4210 "version": 1
4211 },
4212 {
4213 "name": "sender",
4214 "required": true,
4215 "type": "@keet/member-profile",
4216 "version": 1
4217 },
4218 {
4219 "name": "status",
4220 "required": true,
4221 "type": "@keet-private-id/contact-request-status",
4222 "version": 1
4223 },
4224 {
4225 "name": "keys",
4226 "required": true,
4227 "type": "@keet/room-keys",
4228 "version": 1
4229 },
4230 {
4231 "name": "mailbox",
4232 "required": true,
4233 "type": "@keet/public-key",
4234 "version": 1
4235 },
4236 {
4237 "name": "message",
4238 "type": "string",
4239 "version": 1
4240 },
4241 {
4242 "name": "sentAt",
4243 "type": "uint",
4244 "version": 1
4245 }
4246 ]
4247 },
4248 {
4249 "name": "add-contact-request-operation",
4250 "namespace": "keet-private-id",
4251 "compact": false,
4252 "flagsPosition": -1,
4253 "fields": [
4254 {
4255 "name": "header",
4256 "required": true,
4257 "type": "@keet/operation-header",
4258 "version": 1
4259 },
4260 {
4261 "name": "blindRequest",
4262 "required": true,
4263 "type": "buffer",
4264 "version": 1
4265 }
4266 ]
4267 },
4268 {
4269 "name": "update-contact-request-status-operation",
4270 "namespace": "keet-private-id",
4271 "compact": false,
4272 "flagsPosition": 4,
4273 "fields": [
4274 {
4275 "name": "header",
4276 "required": true,
4277 "type": "@keet/operation-header",
4278 "version": 1
4279 },
4280 {
4281 "name": "memberKey",
4282 "required": true,
4283 "type": "@keet/member-key",
4284 "version": 1
4285 },
4286 {
4287 "name": "key",
4288 "required": true,
4289 "type": "uint",
4290 "version": 1
4291 },
4292 {
4293 "name": "status",
4294 "required": true,
4295 "type": "@keet-private-id/contact-request-status",
4296 "version": 1
4297 },
4298 {
4299 "name": "roomKey",
4300 "type": "@keet/room-key",
4301 "version": 1
4302 }
4303 ]
4304 },
4305 {
4306 "name": "profile-discovery-record-v1",
4307 "namespace": "keet-private-id",
4308 "compact": false,
4309 "flagsPosition": -1,
4310 "fields": [
4311 {
4312 "name": "timestamp",
4313 "required": true,
4314 "type": "uint",
4315 "version": 1
4316 },
4317 {
4318 "name": "key",
4319 "required": true,
4320 "type": "@keet/core-key",
4321 "version": 1
4322 },
4323 {
4324 "name": "mailbox",
4325 "required": true,
4326 "type": "@keet/public-key",
4327 "version": 1
4328 }
4329 ]
4330 },
4331 {
4332 "name": "profile-discovery-record",
4333 "namespace": "keet-private-id",
4334 "versions": [
4335 {
4336 "type": "@keet-private-id/profile-discovery-record-v1",
4337 "map": null,
4338 "version": 1
4339 }
4340 ]
4341 },
4342 {
4343 "name": "unreads",
4344 "namespace": "keet-private-id",
4345 "compact": false,
4346 "flagsPosition": -1,
4347 "fields": [
4348 {
4349 "name": "deviceKey",
4350 "required": true,
4351 "type": "@keet/device-key",
4352 "version": 1
4353 },
4354 {
4355 "name": "key",
4356 "required": true,
4357 "type": "@keet/core-key",
4358 "version": 1
4359 }
4360 ]
4361 },
4362 {
4363 "name": "add-unreads-key-operation",
4364 "namespace": "keet-private-id",
4365 "compact": false,
4366 "flagsPosition": -1,
4367 "fields": [
4368 {
4369 "name": "header",
4370 "required": true,
4371 "type": "@keet/operation-header",
4372 "version": 1
4373 },
4374 {
4375 "name": "key",
4376 "required": true,
4377 "type": "@keet/core-key",
4378 "version": 1
4379 }
4380 ]
4381 },
4382 {
4383 "name": "remove-unreads-key-operation",
4384 "namespace": "keet-private-id",
4385 "compact": false,
4386 "flagsPosition": -1,
4387 "fields": [
4388 {
4389 "name": "header",
4390 "required": true,
4391 "type": "@keet/operation-header",
4392 "version": 1
4393 },
4394 {
4395 "name": "key",
4396 "required": true,
4397 "type": "@keet/core-key",
4398 "version": 1
4399 }
4400 ]
4401 },
4402 {
4403 "name": "settings",
4404 "namespace": "keet-private-id",
4405 "compact": false,
4406 "flagsPosition": 0,
4407 "fields": [
4408 {
4409 "name": "disableReadReceipts",
4410 "type": "bool",
4411 "version": 1
4412 }
4413 ]
4414 },
4415 {
4416 "name": "user-settings-key",
4417 "namespace": "keet-private-id",
4418 "offset": 1,
4419 "enum": [
4420 {
4421 "key": "disableReadReceipts",
4422 "version": 1
4423 }
4424 ],
4425 "strings": true
4426 },
4427 {
4428 "name": "update-settings-operation",
4429 "namespace": "keet-private-id",
4430 "compact": false,
4431 "flagsPosition": -1,
4432 "fields": [
4433 {
4434 "name": "header",
4435 "required": true,
4436 "type": "@keet/operation-header",
4437 "version": 1
4438 },
4439 {
4440 "name": "key",
4441 "required": true,
4442 "type": "@keet-private-id/user-settings-key",
4443 "version": 1
4444 },
4445 {
4446 "name": "settings",
4447 "required": true,
4448 "type": "@keet-private-id/settings",
4449 "version": 1
4450 }
4451 ]
4452 },
4453 {
4454 "name": "background-sync-room",
4455 "namespace": "local",
4456 "compact": false,
4457 "flagsPosition": 2,
4458 "fields": [
4459 {
4460 "name": "discoveryPublicKey",
4461 "required": true,
4462 "type": "@keet/room-discovery-key",
4463 "version": 1
4464 },
4465 {
4466 "name": "timestamp",
4467 "required": true,
4468 "type": "uint",
4469 "version": 1
4470 },
4471 {
4472 "name": "lastSynced",
4473 "type": "uint",
4474 "version": 1
4475 },
4476 {
4477 "name": "dirty",
4478 "type": "bool",
4479 "version": 1
4480 }
4481 ]
4482 },
4483 {
4484 "name": "stats",
4485 "namespace": "local",
4486 "compact": false,
4487 "flagsPosition": -1,
4488 "fields": [
4489 {
4490 "name": "rooms",
4491 "required": true,
4492 "type": "uint",
4493 "version": 1
4494 },
4495 {
4496 "name": "activeRooms",
4497 "required": true,
4498 "type": "uint",
4499 "version": 1
4500 }
4501 ]
4502 },
4503 {
4504 "name": "migration-status",
4505 "namespace": "local",
4506 "compact": false,
4507 "flagsPosition": -1,
4508 "fields": [
4509 {
4510 "name": "version",
4511 "required": true,
4512 "type": "uint",
4513 "version": 1
4514 }
4515 ]
4516 },
4517 {
4518 "name": "v3-private-profile-migration",
4519 "namespace": "local",
4520 "compact": false,
4521 "flagsPosition": 0,
4522 "fields": [
4523 {
4524 "name": "blockedMembers",
4525 "array": true,
4526 "type": "@keet/member-key",
4527 "version": 1
4528 }
4529 ]
4530 },
4531 {
4532 "name": "v3-room-migration",
4533 "namespace": "local",
4534 "compact": false,
4535 "flagsPosition": 5,
4536 "fields": [
4537 {
4538 "name": "encryptionKey",
4539 "required": true,
4540 "type": "@keet/encryption-key",
4541 "version": 1
4542 },
4543 {
4544 "name": "seed",
4545 "required": true,
4546 "type": "fixed32",
4547 "version": 1
4548 },
4549 {
4550 "name": "capabilities",
4551 "required": true,
4552 "type": "@keet/room-capabilities",
4553 "version": 1
4554 },
4555 {
4556 "name": "initiator",
4557 "required": true,
4558 "type": "@keet/head",
4559 "version": 1
4560 },
4561 {
4562 "name": "fastForwardTo",
4563 "required": true,
4564 "type": "fixed32",
4565 "version": 1
4566 },
4567 {
4568 "name": "privateProfile",
4569 "type": "@local/v3-private-profile-migration",
4570 "version": 1
4571 }
4572 ]
4573 },
4574 {
4575 "name": "room-migration-stats",
4576 "namespace": "local",
4577 "compact": false,
4578 "flagsPosition": 0,
4579 "fields": [
4580 {
4581 "name": "count",
4582 "type": "uint",
4583 "version": 1
4584 }
4585 ]
4586 },
4587 {
4588 "name": "room-migration",
4589 "namespace": "local",
4590 "compact": false,
4591 "flagsPosition": 2,
4592 "fields": [
4593 {
4594 "name": "roomKey",
4595 "required": true,
4596 "type": "@keet/room-key",
4597 "version": 1
4598 },
4599 {
4600 "name": "priority",
4601 "required": true,
4602 "type": "uint",
4603 "version": 1
4604 },
4605 {
4606 "name": "v3",
4607 "type": "@local/v3-room-migration",
4608 "version": 1
4609 },
4610 {
4611 "name": "errored",
4612 "type": "bool",
4613 "version": 1
4614 },
4615 {
4616 "name": "timestamp",
4617 "type": "uint",
4618 "version": 1
4619 }
4620 ]
4621 },
4622 {
4623 "name": "identity-status",
4624 "namespace": "local",
4625 "compact": false,
4626 "flagsPosition": 0,
4627 "fields": [
4628 {
4629 "name": "isConfirmed",
4630 "type": "bool",
4631 "version": 1
4632 }
4633 ]
4634 },
4635 {
4636 "name": "identity-swap",
4637 "namespace": "local",
4638 "compact": false,
4639 "flagsPosition": -1,
4640 "fields": [
4641 {
4642 "name": "privateProfileKey",
4643 "required": true,
4644 "type": "@keet/room-key",
4645 "version": 1
4646 }
4647 ]
4648 },
4649 {
4650 "name": "identity-record",
4651 "namespace": "local",
4652 "compact": false,
4653 "flagsPosition": 5,
4654 "fields": [
4655 {
4656 "name": "publicKey",
4657 "required": true,
4658 "type": "@keet/public-key",
4659 "version": 1
4660 },
4661 {
4662 "name": "privateProfileKey",
4663 "required": true,
4664 "type": "@keet/room-key",
4665 "version": 1
4666 },
4667 {
4668 "name": "deviceKeyPair",
4669 "required": true,
4670 "type": "@keet/signing-keypair",
4671 "version": 1
4672 },
4673 {
4674 "name": "deviceProof",
4675 "required": true,
4676 "type": "buffer",
4677 "version": 1
4678 },
4679 {
4680 "name": "status",
4681 "required": true,
4682 "type": "@local/identity-status",
4683 "version": 1
4684 },
4685 {
4686 "name": "entropy",
4687 "type": "buffer",
4688 "version": 1
4689 },
4690 {
4691 "name": "swap",
4692 "type": "@keet-private-id/identity-swap",
4693 "version": 1
4694 },
4695 {
4696 "name": "swapV2",
4697 "type": "@keet-private-id/identity-swap-v2",
4698 "version": 1
4699 }
4700 ]
4701 },
4702 {
4703 "name": "tasks",
4704 "namespace": "local",
4705 "offset": 1,
4706 "enum": [
4707 {
4708 "key": "RestoreIdentity",
4709 "version": 1
4710 },
4711 {
4712 "key": "CreateRoom",
4713 "version": 1
4714 },
4715 {
4716 "key": "LeaveRoom",
4717 "version": 1
4718 },
4719 {
4720 "key": "ClearRoom",
4721 "version": 1
4722 },
4723 {
4724 "key": "JoinRoomInvitation",
4725 "version": 1
4726 },
4727 {
4728 "key": "JoinRoomKeys",
4729 "version": 1
4730 },
4731 {
4732 "key": "JoinRoomResponse",
4733 "version": 1
4734 },
4735 {
4736 "key": "SendContactRequest",
4737 "version": 1
4738 },
4739 {
4740 "key": "TestFastTask",
4741 "version": 1
4742 },
4743 {
4744 "key": "TestSlowTask",
4745 "version": 1
4746 },
4747 {
4748 "key": "TestErrorTask",
4749 "version": 1
4750 }
4751 ],
4752 "strings": false
4753 },
4754 {
4755 "name": "room-keys",
4756 "namespace": "local",
4757 "compact": false,
4758 "flagsPosition": 2,
4759 "fields": [
4760 {
4761 "name": "roomKey",
4762 "required": true,
4763 "type": "@keet/room-key",
4764 "version": 1
4765 },
4766 {
4767 "name": "encryptionKey",
4768 "required": true,
4769 "type": "@keet/encryption-key",
4770 "version": 1
4771 },
4772 {
4773 "name": "fastForwardTo",
4774 "type": "fixed32",
4775 "version": 1
4776 },
4777 {
4778 "name": "initiator",
4779 "type": "@keet/head",
4780 "version": 1
4781 }
4782 ]
4783 },
4784 {
4785 "name": "join-room-invitation-task",
4786 "namespace": "local",
4787 "compact": false,
4788 "flagsPosition": -1,
4789 "fields": [
4790 {
4791 "name": "invitation",
4792 "required": true,
4793 "type": "@keet-private-id/pending-invitation",
4794 "version": 1
4795 }
4796 ]
4797 },
4798 {
4799 "name": "join-room-response-task",
4800 "namespace": "local",
4801 "compact": false,
4802 "flagsPosition": -1,
4803 "fields": [
4804 {
4805 "name": "mailbox",
4806 "required": true,
4807 "type": "@keet/public-key",
4808 "version": 1
4809 },
4810 {
4811 "name": "keyPair",
4812 "required": true,
4813 "type": "@keet/signing-keypair",
4814 "version": 1
4815 },
4816 {
4817 "name": "response",
4818 "required": true,
4819 "type": "buffer",
4820 "version": 1
4821 }
4822 ]
4823 },
4824 {
4825 "name": "fast-forward-to",
4826 "namespace": "local",
4827 "compact": false,
4828 "flagsPosition": -1,
4829 "fields": [
4830 {
4831 "name": "key",
4832 "required": true,
4833 "type": "@keet/core-key",
4834 "version": 1
4835 }
4836 ]
4837 },
4838 {
4839 "name": "add-room-fields",
4840 "namespace": "local",
4841 "compact": false,
4842 "flagsPosition": 2,
4843 "fields": [
4844 {
4845 "name": "roomKey",
4846 "required": true,
4847 "type": "@keet/room-key",
4848 "version": 1
4849 },
4850 {
4851 "name": "encryptionKey",
4852 "required": true,
4853 "type": "@keet/encryption-key",
4854 "version": 1
4855 },
4856 {
4857 "name": "fastForwardTo",
4858 "type": "fixed32",
4859 "version": 1
4860 },
4861 {
4862 "name": "initiator",
4863 "type": "@keet/head",
4864 "version": 1
4865 },
4866 {
4867 "name": "mailbox",
4868 "type": "@keet/public-key",
4869 "version": 1
4870 }
4871 ]
4872 },
4873 {
4874 "name": "join-room-keys-task",
4875 "namespace": "local",
4876 "compact": false,
4877 "flagsPosition": -1,
4878 "fields": [
4879 {
4880 "name": "keys",
4881 "required": true,
4882 "type": "@local/add-room-fields",
4883 "version": 1
4884 }
4885 ]
4886 },
4887 {
4888 "name": "create-room-task",
4889 "namespace": "local",
4890 "compact": false,
4891 "flagsPosition": 2,
4892 "fields": [
4893 {
4894 "name": "roomKey",
4895 "required": true,
4896 "type": "@keet/room-key",
4897 "version": 1
4898 },
4899 {
4900 "name": "encryptionKey",
4901 "required": true,
4902 "type": "@keet/encryption-key",
4903 "version": 1
4904 },
4905 {
4906 "name": "fastForwardTo",
4907 "type": "fixed32",
4908 "version": 1
4909 },
4910 {
4911 "name": "initiator",
4912 "type": "@keet/head",
4913 "version": 1
4914 },
4915 {
4916 "name": "mailbox",
4917 "type": "@keet/public-key",
4918 "version": 1
4919 },
4920 {
4921 "name": "keyPair",
4922 "type": "@keet/signing-keypair",
4923 "version": 1
4924 },
4925 {
4926 "name": "genesis",
4927 "type": "@keet/genesis-operation",
4928 "version": 1
4929 },
4930 {
4931 "name": "isPrivateProfile",
4932 "type": "bool",
4933 "version": 1
4934 }
4935 ]
4936 },
4937 {
4938 "name": "leave-room-task",
4939 "namespace": "local",
4940 "compact": false,
4941 "flagsPosition": 1,
4942 "fields": [
4943 {
4944 "name": "roomKey",
4945 "required": true,
4946 "type": "@keet/room-key",
4947 "version": 1
4948 },
4949 {
4950 "name": "isGossiped",
4951 "type": "bool",
4952 "version": 1
4953 }
4954 ]
4955 },
4956 {
4957 "name": "clear-room-task",
4958 "namespace": "local",
4959 "compact": false,
4960 "flagsPosition": -1,
4961 "fields": [
4962 {
4963 "name": "roomKey",
4964 "required": true,
4965 "type": "@keet/room-key",
4966 "version": 1
4967 }
4968 ]
4969 },
4970 {
4971 "name": "restore-identity-task",
4972 "namespace": "local",
4973 "compact": false,
4974 "flagsPosition": 1,
4975 "fields": [
4976 {
4977 "name": "mnemonic",
4978 "required": true,
4979 "type": "string",
4980 "version": 1
4981 },
4982 {
4983 "name": "profileDiscoveryTimeout",
4984 "type": "uint",
4985 "version": 1
4986 },
4987 {
4988 "name": "recover",
4989 "type": "bool",
4990 "version": 1
4991 }
4992 ]
4993 },
4994 {
4995 "name": "send-contact-request-task",
4996 "namespace": "local",
4997 "compact": false,
4998 "flagsPosition": 2,
4999 "fields": [
5000 {
5001 "name": "roomKey",
5002 "required": true,
5003 "type": "@keet/room-key",
5004 "version": 1
5005 },
5006 {
5007 "name": "memberKey",
5008 "required": true,
5009 "type": "@keet/member-key",
5010 "version": 1
5011 },
5012 {
5013 "name": "message",
5014 "type": "string",
5015 "version": 1
5016 },
5017 {
5018 "name": "contactInfo",
5019 "type": "@keet/member-contact-info",
5020 "version": 1
5021 }
5022 ]
5023 },
5024 {
5025 "name": "migrate-v2-room-task",
5026 "namespace": "local",
5027 "compact": false,
5028 "flagsPosition": 1,
5029 "fields": [
5030 {
5031 "name": "key",
5032 "required": true,
5033 "type": "@keet/room-key",
5034 "version": 1
5035 },
5036 {
5037 "name": "isPrivateProfile",
5038 "type": "bool",
5039 "version": 1
5040 }
5041 ]
5042 },
5043 {
5044 "name": "task",
5045 "namespace": "local",
5046 "compact": false,
5047 "flagsPosition": 4,
5048 "fields": [
5049 {
5050 "name": "discoveryKey",
5051 "required": true,
5052 "type": "@keet/room-discovery-key",
5053 "version": 1
5054 },
5055 {
5056 "name": "priority",
5057 "required": true,
5058 "type": "uint",
5059 "version": 1
5060 },
5061 {
5062 "name": "timestamp",
5063 "required": true,
5064 "type": "uint",
5065 "version": 1
5066 },
5067 {
5068 "name": "type",
5069 "required": true,
5070 "type": "uint",
5071 "version": 1
5072 },
5073 {
5074 "name": "restoreIdentity",
5075 "type": "@local/restore-identity-task",
5076 "version": 1
5077 },
5078 {
5079 "name": "createRoom",
5080 "type": "@local/create-room-task",
5081 "version": 1
5082 },
5083 {
5084 "name": "leaveRoom",
5085 "type": "@local/leave-room-task",
5086 "version": 1
5087 },
5088 {
5089 "name": "clearRoom",
5090 "type": "@local/clear-room-task",
5091 "version": 1
5092 },
5093 {
5094 "name": "joinRoomInvitation",
5095 "type": "@local/join-room-invitation-task",
5096 "version": 1
5097 },
5098 {
5099 "name": "joinRoomKeys",
5100 "type": "@local/join-room-keys-task",
5101 "version": 1
5102 },
5103 {
5104 "name": "joinRoomResponse",
5105 "type": "@local/join-room-response-task",
5106 "version": 1
5107 },
5108 {
5109 "name": "sendContactRequest",
5110 "type": "@local/send-contact-request-task",
5111 "version": 1
5112 },
5113 {
5114 "name": "migrateV2Room",
5115 "type": "@local/migrate-v2-room-task",
5116 "version": 1
5117 }
5118 ]
5119 },
5120 {
5121 "name": "shared-invitation",
5122 "namespace": "local",
5123 "compact": false,
5124 "flagsPosition": -1,
5125 "fields": [
5126 {
5127 "name": "seed",
5128 "required": true,
5129 "type": "buffer",
5130 "version": 1
5131 },
5132 {
5133 "name": "invitation",
5134 "required": true,
5135 "type": "@keet/invitation",
5136 "version": 1
5137 }
5138 ]
5139 },
5140 {
5141 "name": "room-status",
5142 "namespace": "local",
5143 "compact": false,
5144 "flagsPosition": 0,
5145 "fields": [
5146 {
5147 "name": "isWritable",
5148 "type": "bool",
5149 "version": 1
5150 },
5151 {
5152 "name": "isReadable",
5153 "type": "bool",
5154 "version": 1
5155 },
5156 {
5157 "name": "isPrivateProfile",
5158 "type": "bool",
5159 "version": 1
5160 },
5161 {
5162 "name": "isRemoved",
5163 "type": "bool",
5164 "version": 1
5165 }
5166 ]
5167 },
5168 {
5169 "name": "room-timestamps",
5170 "namespace": "local",
5171 "compact": false,
5172 "flagsPosition": -1,
5173 "fields": [
5174 {
5175 "name": "creation",
5176 "required": true,
5177 "type": "uint",
5178 "version": 1
5179 },
5180 {
5181 "name": "latestSync",
5182 "required": true,
5183 "type": "uint",
5184 "version": 1
5185 },
5186 {
5187 "name": "latestChatMessage",
5188 "required": true,
5189 "type": "uint",
5190 "version": 1
5191 }
5192 ]
5193 },
5194 {
5195 "name": "room",
5196 "namespace": "local",
5197 "compact": false,
5198 "flagsPosition": 11,
5199 "fields": [
5200 {
5201 "name": "roomKey",
5202 "required": true,
5203 "type": "@keet/room-key",
5204 "version": 1
5205 },
5206 {
5207 "name": "discoveryKey",
5208 "required": true,
5209 "type": "@keet/room-discovery-key",
5210 "version": 1
5211 },
5212 {
5213 "name": "encryptionKey",
5214 "required": true,
5215 "type": "@keet/encryption-key",
5216 "version": 1
5217 },
5218 {
5219 "name": "digest",
5220 "required": true,
5221 "type": "@keet/system-digest",
5222 "version": 1
5223 },
5224 {
5225 "name": "stats",
5226 "required": true,
5227 "type": "@keet/stats",
5228 "version": 1
5229 },
5230 {
5231 "name": "timestamps",
5232 "required": true,
5233 "type": "@local/room-timestamps",
5234 "version": 1
5235 },
5236 {
5237 "name": "fork",
5238 "required": true,
5239 "type": "uint",
5240 "version": 1
5241 },
5242 {
5243 "name": "length",
5244 "required": true,
5245 "type": "uint",
5246 "version": 1
5247 },
5248 {
5249 "name": "seed",
5250 "required": true,
5251 "type": "fixed32",
5252 "version": 1
5253 },
5254 {
5255 "name": "capabilities",
5256 "required": true,
5257 "type": "@keet/room-capabilities",
5258 "version": 1
5259 },
5260 {
5261 "name": "status",
5262 "required": true,
5263 "type": "@local/room-status",
5264 "version": 1
5265 },
5266 {
5267 "name": "selfDevice",
5268 "type": "@keet/device",
5269 "version": 1
5270 },
5271 {
5272 "name": "selfMember",
5273 "type": "@keet/full-member",
5274 "version": 1
5275 },
5276 {
5277 "name": "config",
5278 "type": "@keet/room-config",
5279 "version": 1
5280 },
5281 {
5282 "name": "identity",
5283 "type": "@keet/room-identity",
5284 "version": 1
5285 },
5286 {
5287 "name": "lastMessage",
5288 "type": "@keet/full-chat-message-record",
5289 "version": 1
5290 },
5291 {
5292 "name": "dm",
5293 "array": true,
5294 "type": "@keet/member-key",
5295 "version": 1
5296 },
5297 {
5298 "name": "readLengths",
5299 "array": true,
5300 "type": "@keet/read-length",
5301 "version": 1
5302 },
5303 {
5304 "name": "lastMember",
5305 "type": "@keet/member",
5306 "version": 1
5307 },
5308 {
5309 "name": "version",
5310 "type": "uint",
5311 "version": 1
5312 },
5313 {
5314 "name": "preferences",
5315 "type": "@keet-private-id/room-status",
5316 "version": 3
5317 },
5318 {
5319 "name": "activeCall",
5320 "type": "@local/active-call",
5321 "version": 4
5322 }
5323 ]
5324 },
5325 {
5326 "name": "room-preferences",
5327 "namespace": "local",
5328 "compact": false,
5329 "flagsPosition": -1,
5330 "fields": [
5331 {
5332 "name": "roomKey",
5333 "required": true,
5334 "type": "@keet/room-key",
5335 "version": 1
5336 },
5337 {
5338 "name": "status",
5339 "required": true,
5340 "type": "@keet-private-id/room-status",
5341 "version": 1
5342 }
5343 ]
5344 },
5345 {
5346 "name": "room-metadata",
5347 "namespace": "local",
5348 "compact": false,
5349 "flagsPosition": 1,
5350 "fields": [
5351 {
5352 "name": "roomKey",
5353 "required": true,
5354 "type": "@keet/room-key",
5355 "version": 1
5356 },
5357 {
5358 "name": "repairs",
5359 "type": "uint",
5360 "version": 1
5361 }
5362 ]
5363 },
5364 {
5365 "name": "writer",
5366 "namespace": "local",
5367 "compact": false,
5368 "flagsPosition": 2,
5369 "fields": [
5370 {
5371 "name": "mailbox",
5372 "required": true,
5373 "type": "@keet/public-key",
5374 "version": 1
5375 },
5376 {
5377 "name": "key",
5378 "required": true,
5379 "type": "@keet/core-key",
5380 "version": 1
5381 },
5382 {
5383 "name": "roomKey",
5384 "type": "@keet/room-key",
5385 "version": 1
5386 },
5387 {
5388 "name": "keyPair",
5389 "type": "@keet/signing-keypair",
5390 "version": 1
5391 },
5392 {
5393 "name": "responseKeyPair",
5394 "type": "@keet/signing-keypair",
5395 "version": 1
5396 }
5397 ]
5398 },
5399 {
5400 "name": "writer-append",
5401 "namespace": "local",
5402 "compact": false,
5403 "flagsPosition": -1,
5404 "fields": [
5405 {
5406 "name": "key",
5407 "required": true,
5408 "type": "@keet/core-key",
5409 "version": 1
5410 },
5411 {
5412 "name": "responsePublicKey",
5413 "required": true,
5414 "type": "fixed32",
5415 "version": 1
5416 }
5417 ]
5418 },
5419 {
5420 "name": "member",
5421 "namespace": "local",
5422 "compact": false,
5423 "flagsPosition": -1,
5424 "fields": [
5425 {
5426 "name": "key",
5427 "required": true,
5428 "type": "@keet/member-key",
5429 "version": 1
5430 },
5431 {
5432 "name": "profile",
5433 "required": true,
5434 "type": "@keet/member-profile",
5435 "version": 1
5436 }
5437 ]
5438 },
5439 {
5440 "name": "device",
5441 "namespace": "local",
5442 "compact": false,
5443 "flagsPosition": -1,
5444 "fields": [
5445 {
5446 "name": "roomKey",
5447 "required": true,
5448 "type": "@keet/room-key",
5449 "version": 1
5450 },
5451 {
5452 "name": "device",
5453 "required": true,
5454 "type": "@keet/device",
5455 "version": 1
5456 }
5457 ]
5458 },
5459 {
5460 "name": "file",
5461 "namespace": "local",
5462 "compact": false,
5463 "flagsPosition": 2,
5464 "fields": [
5465 {
5466 "name": "file",
5467 "required": true,
5468 "type": "@keet/file",
5469 "version": 1
5470 },
5471 {
5472 "name": "roomKey",
5473 "required": true,
5474 "type": "@keet/room-key",
5475 "version": 1
5476 },
5477 {
5478 "name": "encryptionKey",
5479 "type": "@keet/encryption-key",
5480 "version": 1
5481 },
5482 {
5483 "name": "cleared",
5484 "type": "bool",
5485 "version": 1
5486 },
5487 {
5488 "name": "own",
5489 "type": "bool",
5490 "version": 1
5491 },
5492 {
5493 "name": "lastAccessed",
5494 "type": "uint",
5495 "version": 4
5496 },
5497 {
5498 "name": "version",
5499 "type": "uint",
5500 "version": 4
5501 }
5502 ]
5503 },
5504 {
5505 "name": "debug-flag",
5506 "namespace": "local",
5507 "compact": false,
5508 "flagsPosition": 0,
5509 "fields": [
5510 {
5511 "name": "key",
5512 "type": "string",
5513 "version": 1
5514 },
5515 {
5516 "name": "value",
5517 "type": "bool",
5518 "version": 1
5519 },
5520 {
5521 "name": "description",
5522 "type": "string",
5523 "version": 1
5524 }
5525 ]
5526 },
5527 {
5528 "name": "debug",
5529 "namespace": "local",
5530 "compact": false,
5531 "flagsPosition": 0,
5532 "fields": [
5533 {
5534 "name": "flags",
5535 "array": true,
5536 "type": "@local/debug-flag",
5537 "version": 1
5538 }
5539 ]
5540 },
5541 {
5542 "name": "hyperdht-record",
5543 "namespace": "local",
5544 "compact": false,
5545 "flagsPosition": 0,
5546 "fields": [
5547 {
5548 "name": "nodes",
5549 "array": true,
5550 "type": "ipv4Address",
5551 "version": 1
5552 },
5553 {
5554 "name": "concurrency",
5555 "type": "uint",
5556 "version": 1
5557 },
5558 {
5559 "name": "maxWindow",
5560 "type": "uint",
5561 "version": 1
5562 },
5563 {
5564 "name": "randomPunchInterval",
5565 "type": "uint",
5566 "version": 1
5567 },
5568 {
5569 "name": "connectionKeepAlive",
5570 "type": "uint",
5571 "version": 1
5572 }
5573 ]
5574 },
5575 {
5576 "name": "unread",
5577 "namespace": "local",
5578 "compact": false,
5579 "flagsPosition": -1,
5580 "fields": [
5581 {
5582 "name": "roomKey",
5583 "required": true,
5584 "type": "@keet/room-key",
5585 "version": 1
5586 },
5587 {
5588 "name": "count",
5589 "required": true,
5590 "type": "uint",
5591 "version": 1
5592 }
5593 ]
5594 },
5595 {
5596 "name": "error-record-details",
5597 "namespace": "local",
5598 "compact": false,
5599 "flagsPosition": 0,
5600 "fields": [
5601 {
5602 "name": "roomKey",
5603 "type": "@keet/room-key",
5604 "version": 1
5605 },
5606 {
5607 "name": "coreKey",
5608 "type": "@keet/core-key",
5609 "version": 1
5610 }
5611 ]
5612 },
5613 {
5614 "name": "error-record",
5615 "namespace": "local",
5616 "compact": false,
5617 "flagsPosition": 4,
5618 "fields": [
5619 {
5620 "name": "code",
5621 "required": true,
5622 "type": "string",
5623 "version": 1
5624 },
5625 {
5626 "name": "message",
5627 "required": true,
5628 "type": "string",
5629 "version": 1
5630 },
5631 {
5632 "name": "stack",
5633 "required": true,
5634 "type": "string",
5635 "version": 1
5636 },
5637 {
5638 "name": "timestamp",
5639 "required": true,
5640 "type": "uint",
5641 "version": 1
5642 },
5643 {
5644 "name": "details",
5645 "type": "@local/error-record-details",
5646 "version": 1
5647 }
5648 ]
5649 },
5650 {
5651 "name": "keet-state",
5652 "namespace": "local",
5653 "offset": 1,
5654 "enum": [
5655 {
5656 "key": "RESUME",
5657 "version": 1
5658 },
5659 {
5660 "key": "WAKEUP",
5661 "version": 1
5662 },
5663 {
5664 "key": "PRESUSPEND",
5665 "version": 1
5666 },
5667 {
5668 "key": "SUSPEND",
5669 "version": 1
5670 }
5671 ],
5672 "strings": false
5673 },
5674 {
5675 "name": "file-stats",
5676 "namespace": "local",
5677 "compact": false,
5678 "flagsPosition": -1,
5679 "fields": [
5680 {
5681 "name": "roomKey",
5682 "required": true,
5683 "type": "@keet/room-key",
5684 "version": 1
5685 },
5686 {
5687 "name": "total",
5688 "required": true,
5689 "type": "uint",
5690 "version": 1
5691 }
5692 ]
5693 },
5694 {
5695 "name": "request-header",
5696 "namespace": "api",
5697 "compact": false,
5698 "flagsPosition": -1,
5699 "fields": [
5700 {
5701 "name": "timestamp",
5702 "required": true,
5703 "type": "uint",
5704 "version": 1
5705 }
5706 ]
5707 },
5708 {
5709 "name": "response-header",
5710 "namespace": "api",
5711 "compact": false,
5712 "flagsPosition": -1,
5713 "fields": [
5714 {
5715 "name": "duration",
5716 "required": true,
5717 "type": "uint",
5718 "version": 1
5719 }
5720 ]
5721 },
5722 {
5723 "name": "subscription-request-header",
5724 "namespace": "api",
5725 "compact": false,
5726 "flagsPosition": -1,
5727 "fields": [
5728 {
5729 "name": "clock",
5730 "required": true,
5731 "type": "uint",
5732 "version": 1
5733 }
5734 ]
5735 },
5736 {
5737 "name": "subscription-response-header",
5738 "namespace": "api",
5739 "compact": false,
5740 "flagsPosition": -1,
5741 "fields": [
5742 {
5743 "name": "clock",
5744 "required": true,
5745 "type": "uint",
5746 "version": 1
5747 }
5748 ]
5749 },
5750 {
5751 "name": "boot-request",
5752 "namespace": "api",
5753 "compact": false,
5754 "flagsPosition": -1,
5755 "fields": [
5756 {
5757 "name": "header",
5758 "required": true,
5759 "type": "@api/request-header",
5760 "version": 1
5761 }
5762 ]
5763 },
5764 {
5765 "name": "boot-response",
5766 "namespace": "api",
5767 "compact": false,
5768 "flagsPosition": -1,
5769 "fields": [
5770 {
5771 "name": "header",
5772 "required": true,
5773 "type": "@api/response-header",
5774 "version": 1
5775 }
5776 ]
5777 },
5778 {
5779 "name": "self-destruct-request",
5780 "namespace": "api",
5781 "compact": false,
5782 "flagsPosition": -1,
5783 "fields": [
5784 {
5785 "name": "header",
5786 "required": true,
5787 "type": "@api/request-header",
5788 "version": 1
5789 }
5790 ]
5791 },
5792 {
5793 "name": "inline-avatar",
5794 "namespace": "api/core",
5795 "alias": "buffer",
5796 "version": 1
5797 },
5798 {
5799 "name": "have",
5800 "namespace": "api/core",
5801 "compact": true,
5802 "flagsPosition": -1,
5803 "fields": [
5804 {
5805 "name": "clock",
5806 "required": true,
5807 "type": "uint",
5808 "version": 1
5809 }
5810 ]
5811 },
5812 {
5813 "name": "create-room-request",
5814 "namespace": "api/core",
5815 "compact": false,
5816 "flagsPosition": 1,
5817 "fields": [
5818 {
5819 "name": "header",
5820 "required": true,
5821 "type": "@api/request-header",
5822 "version": 1
5823 },
5824 {
5825 "name": "config",
5826 "type": "@keet/room-config",
5827 "version": 1
5828 },
5829 {
5830 "name": "settings",
5831 "type": "@keet/system-settings",
5832 "version": 1
5833 }
5834 ]
5835 },
5836 {
5837 "name": "create-room-response",
5838 "namespace": "api/core",
5839 "compact": false,
5840 "flagsPosition": 1,
5841 "fields": [
5842 {
5843 "name": "header",
5844 "required": true,
5845 "type": "@api/response-header",
5846 "version": 1
5847 },
5848 {
5849 "name": "roomKey",
5850 "type": "@keet/room-key",
5851 "version": 1
5852 }
5853 ]
5854 },
5855 {
5856 "name": "activate-room-request",
5857 "namespace": "api/core",
5858 "compact": false,
5859 "flagsPosition": -1,
5860 "fields": [
5861 {
5862 "name": "header",
5863 "required": true,
5864 "type": "@api/request-header",
5865 "version": 1
5866 },
5867 {
5868 "name": "roomKey",
5869 "required": true,
5870 "type": "@keet/room-key",
5871 "version": 1
5872 }
5873 ]
5874 },
5875 {
5876 "name": "deactivate-room-request",
5877 "namespace": "api/core",
5878 "compact": false,
5879 "flagsPosition": -1,
5880 "fields": [
5881 {
5882 "name": "header",
5883 "required": true,
5884 "type": "@api/request-header",
5885 "version": 1
5886 },
5887 {
5888 "name": "roomKey",
5889 "required": true,
5890 "type": "@keet/room-key",
5891 "version": 1
5892 }
5893 ]
5894 },
5895 {
5896 "name": "leave-room-request",
5897 "namespace": "api/core",
5898 "compact": false,
5899 "flagsPosition": -1,
5900 "fields": [
5901 {
5902 "name": "header",
5903 "required": true,
5904 "type": "@api/request-header",
5905 "version": 1
5906 },
5907 {
5908 "name": "roomKey",
5909 "required": true,
5910 "type": "@keet/room-key",
5911 "version": 1
5912 }
5913 ]
5914 },
5915 {
5916 "name": "leave-room-response",
5917 "namespace": "api/core",
5918 "compact": false,
5919 "flagsPosition": -1,
5920 "fields": [
5921 {
5922 "name": "header",
5923 "required": true,
5924 "type": "@api/response-header",
5925 "version": 1
5926 }
5927 ]
5928 },
5929 {
5930 "name": "update-room-config-request",
5931 "namespace": "api/core",
5932 "compact": false,
5933 "flagsPosition": -1,
5934 "fields": [
5935 {
5936 "name": "header",
5937 "required": true,
5938 "type": "@api/request-header",
5939 "version": 1
5940 },
5941 {
5942 "name": "roomKey",
5943 "required": true,
5944 "type": "@keet/room-key",
5945 "version": 1
5946 },
5947 {
5948 "name": "key",
5949 "required": true,
5950 "type": "uint",
5951 "version": 1
5952 },
5953 {
5954 "name": "config",
5955 "required": true,
5956 "type": "@keet/room-config",
5957 "version": 1
5958 }
5959 ]
5960 },
5961 {
5962 "name": "update-room-settings-request",
5963 "namespace": "api/core",
5964 "compact": false,
5965 "flagsPosition": -1,
5966 "fields": [
5967 {
5968 "name": "header",
5969 "required": true,
5970 "type": "@api/request-header",
5971 "version": 1
5972 },
5973 {
5974 "name": "roomKey",
5975 "required": true,
5976 "type": "@keet/room-key",
5977 "version": 1
5978 },
5979 {
5980 "name": "key",
5981 "required": true,
5982 "type": "uint",
5983 "version": 1
5984 },
5985 {
5986 "name": "settings",
5987 "required": true,
5988 "type": "@keet/system-settings",
5989 "version": 1
5990 }
5991 ]
5992 },
5993 {
5994 "name": "update-room-status-request",
5995 "namespace": "api/core",
5996 "compact": false,
5997 "flagsPosition": -1,
5998 "fields": [
5999 {
6000 "name": "header",
6001 "required": true,
6002 "type": "@api/request-header",
6003 "version": 1
6004 },
6005 {
6006 "name": "roomKey",
6007 "required": true,
6008 "type": "@keet/room-key",
6009 "version": 1
6010 },
6011 {
6012 "name": "key",
6013 "required": true,
6014 "type": "uint",
6015 "version": 1
6016 },
6017 {
6018 "name": "status",
6019 "required": true,
6020 "type": "@keet-private-id/room-status",
6021 "version": 1
6022 }
6023 ]
6024 },
6025 {
6026 "name": "add-chat-message-request",
6027 "namespace": "api/core",
6028 "compact": false,
6029 "flagsPosition": -1,
6030 "fields": [
6031 {
6032 "name": "header",
6033 "required": true,
6034 "type": "@api/request-header",
6035 "version": 1
6036 },
6037 {
6038 "name": "roomKey",
6039 "required": true,
6040 "type": "@keet/room-key",
6041 "version": 1
6042 },
6043 {
6044 "name": "message",
6045 "required": true,
6046 "type": "@keet/oplog-message",
6047 "version": 1
6048 }
6049 ]
6050 },
6051 {
6052 "name": "add-chat-message-response",
6053 "namespace": "api/core",
6054 "compact": false,
6055 "flagsPosition": -1,
6056 "fields": [
6057 {
6058 "name": "header",
6059 "required": true,
6060 "type": "@api/response-header",
6061 "version": 1
6062 }
6063 ]
6064 },
6065 {
6066 "name": "edit-chat-message-request",
6067 "namespace": "api/core",
6068 "compact": false,
6069 "flagsPosition": -1,
6070 "fields": [
6071 {
6072 "name": "header",
6073 "required": true,
6074 "type": "@api/request-header",
6075 "version": 1
6076 },
6077 {
6078 "name": "roomKey",
6079 "required": true,
6080 "type": "@keet/room-key",
6081 "version": 1
6082 },
6083 {
6084 "name": "id",
6085 "required": true,
6086 "type": "@keet/oplog-id",
6087 "version": 1
6088 },
6089 {
6090 "name": "message",
6091 "required": true,
6092 "type": "@keet/oplog-message",
6093 "version": 1
6094 }
6095 ]
6096 },
6097 {
6098 "name": "edit-chat-message-response",
6099 "namespace": "api/core",
6100 "compact": false,
6101 "flagsPosition": -1,
6102 "fields": [
6103 {
6104 "name": "header",
6105 "required": true,
6106 "type": "@api/response-header",
6107 "version": 1
6108 }
6109 ]
6110 },
6111 {
6112 "name": "remove-chat-message-request",
6113 "namespace": "api/core",
6114 "compact": false,
6115 "flagsPosition": -1,
6116 "fields": [
6117 {
6118 "name": "header",
6119 "required": true,
6120 "type": "@api/request-header",
6121 "version": 1
6122 },
6123 {
6124 "name": "roomKey",
6125 "required": true,
6126 "type": "@keet/room-key",
6127 "version": 1
6128 },
6129 {
6130 "name": "id",
6131 "required": true,
6132 "type": "@keet/oplog-id",
6133 "version": 1
6134 }
6135 ]
6136 },
6137 {
6138 "name": "remove-chat-message-response",
6139 "namespace": "api/core",
6140 "compact": false,
6141 "flagsPosition": -1,
6142 "fields": [
6143 {
6144 "name": "header",
6145 "required": true,
6146 "type": "@api/response-header",
6147 "version": 1
6148 }
6149 ]
6150 },
6151 {
6152 "name": "add-chat-reaction-request",
6153 "namespace": "api/core",
6154 "compact": false,
6155 "flagsPosition": -1,
6156 "fields": [
6157 {
6158 "name": "header",
6159 "required": true,
6160 "type": "@api/request-header",
6161 "version": 1
6162 },
6163 {
6164 "name": "roomKey",
6165 "required": true,
6166 "type": "@keet/room-key",
6167 "version": 1
6168 },
6169 {
6170 "name": "id",
6171 "required": true,
6172 "type": "@keet/oplog-id",
6173 "version": 1
6174 },
6175 {
6176 "name": "reaction",
6177 "required": true,
6178 "type": "string",
6179 "version": 1
6180 }
6181 ]
6182 },
6183 {
6184 "name": "add-chat-reaction-response",
6185 "namespace": "api/core",
6186 "compact": false,
6187 "flagsPosition": -1,
6188 "fields": [
6189 {
6190 "name": "header",
6191 "required": true,
6192 "type": "@api/response-header",
6193 "version": 1
6194 }
6195 ]
6196 },
6197 {
6198 "name": "remove-chat-reaction-request",
6199 "namespace": "api/core",
6200 "compact": false,
6201 "flagsPosition": -1,
6202 "fields": [
6203 {
6204 "name": "header",
6205 "required": true,
6206 "type": "@api/request-header",
6207 "version": 1
6208 },
6209 {
6210 "name": "roomKey",
6211 "required": true,
6212 "type": "@keet/room-key",
6213 "version": 1
6214 },
6215 {
6216 "name": "id",
6217 "required": true,
6218 "type": "@keet/oplog-id",
6219 "version": 1
6220 },
6221 {
6222 "name": "reaction",
6223 "required": true,
6224 "type": "string",
6225 "version": 1
6226 }
6227 ]
6228 },
6229 {
6230 "name": "remove-chat-reaction-response",
6231 "namespace": "api/core",
6232 "compact": false,
6233 "flagsPosition": -1,
6234 "fields": [
6235 {
6236 "name": "header",
6237 "required": true,
6238 "type": "@api/response-header",
6239 "version": 1
6240 }
6241 ]
6242 },
6243 {
6244 "name": "want-lobby",
6245 "namespace": "api/core",
6246 "compact": false,
6247 "flagsPosition": -1,
6248 "fields": [
6249 {
6250 "name": "clock",
6251 "required": true,
6252 "type": "uint",
6253 "version": 1
6254 },
6255 {
6256 "name": "start",
6257 "required": true,
6258 "type": "uint",
6259 "version": 1
6260 },
6261 {
6262 "name": "end",
6263 "required": true,
6264 "type": "uint",
6265 "version": 1
6266 }
6267 ]
6268 },
6269 {
6270 "name": "unwant-lobby",
6271 "namespace": "api/core",
6272 "compact": false,
6273 "flagsPosition": -1,
6274 "fields": [
6275 {
6276 "name": "clock",
6277 "required": true,
6278 "type": "uint",
6279 "version": 1
6280 }
6281 ]
6282 },
6283 {
6284 "name": "want-room-info",
6285 "namespace": "api/core",
6286 "compact": false,
6287 "flagsPosition": -1,
6288 "fields": [
6289 {
6290 "name": "clock",
6291 "required": true,
6292 "type": "uint",
6293 "version": 1
6294 },
6295 {
6296 "name": "keys",
6297 "required": true,
6298 "array": true,
6299 "type": "@keet/room-key",
6300 "version": 1
6301 }
6302 ]
6303 },
6304 {
6305 "name": "want-chat",
6306 "namespace": "api/core",
6307 "compact": false,
6308 "flagsPosition": 2,
6309 "fields": [
6310 {
6311 "name": "clock",
6312 "required": true,
6313 "type": "uint",
6314 "version": 1
6315 },
6316 {
6317 "name": "roomKey",
6318 "required": true,
6319 "type": "@keet/room-key",
6320 "version": 1
6321 },
6322 {
6323 "name": "start",
6324 "type": "uint",
6325 "version": 1
6326 },
6327 {
6328 "name": "size",
6329 "type": "uint",
6330 "version": 1
6331 },
6332 {
6333 "name": "isBottom",
6334 "type": "bool",
6335 "version": 1
6336 }
6337 ]
6338 },
6339 {
6340 "name": "unwant-chat",
6341 "namespace": "api/core",
6342 "compact": false,
6343 "flagsPosition": -1,
6344 "fields": [
6345 {
6346 "name": "clock",
6347 "required": true,
6348 "type": "uint",
6349 "version": 1
6350 }
6351 ]
6352 },
6353 {
6354 "name": "want-members",
6355 "namespace": "api/core",
6356 "compact": false,
6357 "flagsPosition": 2,
6358 "fields": [
6359 {
6360 "name": "clock",
6361 "required": true,
6362 "type": "uint",
6363 "version": 1
6364 },
6365 {
6366 "name": "roomKey",
6367 "required": true,
6368 "type": "@keet/room-key",
6369 "version": 1
6370 },
6371 {
6372 "name": "offset",
6373 "type": "@keet/member-key",
6374 "version": 1
6375 },
6376 {
6377 "name": "count",
6378 "type": "uint",
6379 "version": 1
6380 }
6381 ]
6382 },
6383 {
6384 "name": "unwant-members",
6385 "namespace": "api/core",
6386 "compact": false,
6387 "flagsPosition": -1,
6388 "fields": [
6389 {
6390 "name": "clock",
6391 "required": true,
6392 "type": "uint",
6393 "version": 1
6394 }
6395 ]
6396 },
6397 {
6398 "name": "lobby-record",
6399 "namespace": "api/core",
6400 "compact": true,
6401 "flagsPosition": -1,
6402 "fields": [
6403 {
6404 "name": "timestamp",
6405 "required": true,
6406 "type": "uint",
6407 "version": 1
6408 },
6409 {
6410 "name": "id",
6411 "required": true,
6412 "type": "@keet/room-key",
6413 "version": 1
6414 }
6415 ]
6416 },
6417 {
6418 "name": "lobby-record-change-type",
6419 "namespace": "api/core",
6420 "offset": 1,
6421 "enum": [
6422 {
6423 "key": "Changed",
6424 "version": 1
6425 },
6426 {
6427 "key": "Removed",
6428 "version": 1
6429 }
6430 ],
6431 "strings": false
6432 },
6433 {
6434 "name": "lobby",
6435 "namespace": "api/core",
6436 "compact": false,
6437 "flagsPosition": -1,
6438 "fields": [
6439 {
6440 "name": "keys",
6441 "required": true,
6442 "array": true,
6443 "type": "@keet/room-key",
6444 "version": 1
6445 },
6446 {
6447 "name": "start",
6448 "required": true,
6449 "type": "uint",
6450 "version": 1
6451 },
6452 {
6453 "name": "end",
6454 "required": true,
6455 "type": "uint",
6456 "version": 1
6457 },
6458 {
6459 "name": "total",
6460 "required": true,
6461 "type": "uint",
6462 "version": 1
6463 }
6464 ]
6465 },
6466 {
6467 "name": "lobby-room",
6468 "namespace": "api/core",
6469 "compact": false,
6470 "flagsPosition": -1,
6471 "fields": [
6472 {
6473 "name": "type",
6474 "required": true,
6475 "type": "@api/core/lobby-record-change-type",
6476 "version": 1
6477 },
6478 {
6479 "name": "room",
6480 "required": true,
6481 "type": "@api/core/lobby-record",
6482 "version": 1
6483 }
6484 ]
6485 },
6486 {
6487 "name": "room-role",
6488 "namespace": "api/core",
6489 "compact": false,
6490 "flagsPosition": 1,
6491 "fields": [
6492 {
6493 "name": "device",
6494 "required": true,
6495 "type": "@local/room-status",
6496 "version": 1
6497 },
6498 {
6499 "name": "member",
6500 "type": "@keet/member-status",
6501 "version": 1
6502 }
6503 ]
6504 },
6505 {
6506 "name": "room-info",
6507 "namespace": "api/core",
6508 "compact": false,
6509 "flagsPosition": 4,
6510 "fields": [
6511 {
6512 "name": "id",
6513 "required": true,
6514 "type": "@keet/room-key",
6515 "version": 1
6516 },
6517 {
6518 "name": "role",
6519 "required": true,
6520 "type": "@api/core/room-role",
6521 "version": 1
6522 },
6523 {
6524 "name": "digest",
6525 "required": true,
6526 "type": "@keet/system-digest",
6527 "version": 1
6528 },
6529 {
6530 "name": "config",
6531 "required": true,
6532 "type": "@keet/room-config",
6533 "version": 1
6534 },
6535 {
6536 "name": "messageId",
6537 "type": "@keet/oplog-id",
6538 "version": 1
6539 }
6540 ]
6541 },
6542 {
6543 "name": "room-info-status",
6544 "namespace": "api/core",
6545 "compact": false,
6546 "flagsPosition": -1,
6547 "fields": [
6548 {
6549 "name": "id",
6550 "required": true,
6551 "type": "@keet/room-key",
6552 "version": 1
6553 },
6554 {
6555 "name": "status",
6556 "required": true,
6557 "type": "@local/room-status",
6558 "version": 1
6559 }
6560 ]
6561 },
6562 {
6563 "name": "room-info-digest",
6564 "namespace": "api/core",
6565 "compact": false,
6566 "flagsPosition": -1,
6567 "fields": [
6568 {
6569 "name": "id",
6570 "required": true,
6571 "type": "@keet/room-key",
6572 "version": 1
6573 },
6574 {
6575 "name": "digest",
6576 "required": true,
6577 "type": "@keet/system-digest",
6578 "version": 1
6579 }
6580 ]
6581 },
6582 {
6583 "name": "room-info-config",
6584 "namespace": "api/core",
6585 "compact": false,
6586 "flagsPosition": -1,
6587 "fields": [
6588 {
6589 "name": "id",
6590 "required": true,
6591 "type": "@keet/room-key",
6592 "version": 1
6593 },
6594 {
6595 "name": "config",
6596 "required": true,
6597 "type": "@keet/room-config",
6598 "version": 1
6599 }
6600 ]
6601 },
6602 {
6603 "name": "room-info-role",
6604 "namespace": "api/core",
6605 "compact": false,
6606 "flagsPosition": 1,
6607 "fields": [
6608 {
6609 "name": "id",
6610 "required": true,
6611 "type": "@keet/room-key",
6612 "version": 1
6613 },
6614 {
6615 "name": "role",
6616 "type": "@api/core/room-role",
6617 "version": 1
6618 }
6619 ]
6620 },
6621 {
6622 "name": "room-info-last-message",
6623 "namespace": "api/core",
6624 "compact": false,
6625 "flagsPosition": -1,
6626 "fields": [
6627 {
6628 "name": "id",
6629 "required": true,
6630 "type": "@keet/room-key",
6631 "version": 1
6632 },
6633 {
6634 "name": "lastMessage",
6635 "required": true,
6636 "type": "@keet/oplog-id",
6637 "version": 1
6638 }
6639 ]
6640 },
6641 {
6642 "name": "member",
6643 "namespace": "api/core",
6644 "compact": false,
6645 "flagsPosition": -1,
6646 "fields": [
6647 {
6648 "name": "key",
6649 "required": true,
6650 "type": "@keet/member-key",
6651 "version": 1
6652 },
6653 {
6654 "name": "profile",
6655 "required": true,
6656 "type": "@keet/member-profile",
6657 "version": 1
6658 }
6659 ]
6660 },
6661 {
6662 "name": "device",
6663 "namespace": "api/core",
6664 "compact": false,
6665 "flagsPosition": -1,
6666 "fields": [
6667 {
6668 "name": "key",
6669 "required": true,
6670 "type": "@keet/device-key",
6671 "version": 1
6672 },
6673 {
6674 "name": "status",
6675 "required": true,
6676 "type": "@keet/device-status",
6677 "version": 1
6678 },
6679 {
6680 "name": "profile",
6681 "required": true,
6682 "type": "@keet/device-profile",
6683 "version": 1
6684 }
6685 ]
6686 },
6687 {
6688 "name": "member-list-add",
6689 "namespace": "api/core",
6690 "compact": false,
6691 "flagsPosition": -1,
6692 "fields": [
6693 {
6694 "name": "roomKey",
6695 "required": true,
6696 "type": "@keet/room-key",
6697 "version": 1
6698 },
6699 {
6700 "name": "key",
6701 "required": true,
6702 "type": "@keet/member-key",
6703 "version": 1
6704 }
6705 ]
6706 },
6707 {
6708 "name": "member-list-remove",
6709 "namespace": "api/core",
6710 "compact": false,
6711 "flagsPosition": -1,
6712 "fields": [
6713 {
6714 "name": "roomKey",
6715 "required": true,
6716 "type": "@keet/room-key",
6717 "version": 1
6718 },
6719 {
6720 "name": "key",
6721 "required": true,
6722 "type": "@keet/member-key",
6723 "version": 1
6724 }
6725 ]
6726 },
6727 {
6728 "name": "chat-reset",
6729 "namespace": "api/core",
6730 "compact": false,
6731 "flagsPosition": 5,
6732 "fields": [
6733 {
6734 "name": "roomKey",
6735 "required": true,
6736 "type": "@keet/room-key",
6737 "version": 1
6738 },
6739 {
6740 "name": "start",
6741 "required": true,
6742 "type": "uint",
6743 "version": 1
6744 },
6745 {
6746 "name": "size",
6747 "required": true,
6748 "type": "uint",
6749 "version": 1
6750 },
6751 {
6752 "name": "total",
6753 "required": true,
6754 "type": "uint",
6755 "version": 1
6756 },
6757 {
6758 "name": "ids",
6759 "required": true,
6760 "array": true,
6761 "type": "@keet/oplog-id",
6762 "version": 1
6763 },
6764 {
6765 "name": "isBottom",
6766 "type": "bool",
6767 "version": 1
6768 }
6769 ]
6770 },
6771 {
6772 "name": "message-timestamps",
6773 "namespace": "api/core",
6774 "compact": false,
6775 "flagsPosition": 1,
6776 "fields": [
6777 {
6778 "name": "sent",
6779 "required": true,
6780 "type": "uint",
6781 "version": 1
6782 },
6783 {
6784 "name": "edited",
6785 "type": "uint",
6786 "version": 1
6787 }
6788 ]
6789 },
6790 {
6791 "name": "message",
6792 "namespace": "api/core",
6793 "compact": false,
6794 "flagsPosition": 4,
6795 "fields": [
6796 {
6797 "name": "id",
6798 "required": true,
6799 "type": "@keet/oplog-id",
6800 "version": 1
6801 },
6802 {
6803 "name": "clock",
6804 "required": true,
6805 "type": "uint",
6806 "version": 1
6807 },
6808 {
6809 "name": "timestamps",
6810 "required": true,
6811 "type": "@api/core/message-timestamps",
6812 "version": 1
6813 },
6814 {
6815 "name": "status",
6816 "required": true,
6817 "type": "@keet/message-status",
6818 "version": 1
6819 },
6820 {
6821 "name": "message",
6822 "type": "@keet/index-message",
6823 "version": 1
6824 },
6825 {
6826 "name": "event",
6827 "type": "@keet/chat-event",
6828 "version": 1
6829 }
6830 ]
6831 },
6832 {
6833 "name": "message-info",
6834 "namespace": "api/core",
6835 "compact": false,
6836 "flagsPosition": -1,
6837 "fields": [
6838 {
6839 "name": "chat",
6840 "required": true,
6841 "type": "@api/core/message",
6842 "version": 1
6843 },
6844 {
6845 "name": "memberKey",
6846 "required": true,
6847 "type": "@keet/member-key",
6848 "version": 1
6849 },
6850 {
6851 "name": "role",
6852 "required": true,
6853 "type": "@keet/member-status",
6854 "version": 1
6855 }
6856 ]
6857 },
6858 {
6859 "name": "message-info-chat",
6860 "namespace": "api/core",
6861 "compact": false,
6862 "flagsPosition": -1,
6863 "fields": [
6864 {
6865 "name": "chat",
6866 "required": true,
6867 "type": "@api/core/message",
6868 "version": 1
6869 }
6870 ]
6871 },
6872 {
6873 "name": "message-info-member",
6874 "namespace": "api/core",
6875 "compact": false,
6876 "flagsPosition": -1,
6877 "fields": [
6878 {
6879 "name": "ids",
6880 "required": true,
6881 "array": true,
6882 "type": "@keet/oplog-id",
6883 "version": 1
6884 },
6885 {
6886 "name": "memberKey",
6887 "required": true,
6888 "type": "@keet/member-key",
6889 "version": 1
6890 }
6891 ]
6892 },
6893 {
6894 "name": "message-info-role",
6895 "namespace": "api/core",
6896 "compact": false,
6897 "flagsPosition": -1,
6898 "fields": [
6899 {
6900 "name": "ids",
6901 "required": true,
6902 "array": true,
6903 "type": "@keet/oplog-id",
6904 "version": 1
6905 },
6906 {
6907 "name": "role",
6908 "required": true,
6909 "type": "@keet/member-status",
6910 "version": 1
6911 }
6912 ]
6913 },
6914 {
6915 "name": "message-info-reactions",
6916 "namespace": "api/core",
6917 "compact": false,
6918 "flagsPosition": -1,
6919 "fields": [
6920 {
6921 "name": "id",
6922 "required": true,
6923 "type": "@keet/oplog-id",
6924 "version": 1
6925 },
6926 {
6927 "name": "reactions",
6928 "required": true,
6929 "type": "@keet/reactions-digest",
6930 "version": 1
6931 }
6932 ]
6933 },
6934 {
6935 "name": "reactions",
6936 "namespace": "api/core",
6937 "compact": false,
6938 "flagsPosition": -1,
6939 "fields": [
6940 {
6941 "name": "id",
6942 "required": true,
6943 "type": "@keet/oplog-id",
6944 "version": 1
6945 },
6946 {
6947 "name": "digest",
6948 "required": true,
6949 "type": "@keet/reactions-digest",
6950 "version": 1
6951 }
6952 ]
6953 },
6954 {
6955 "name": "want-pairing",
6956 "namespace": "api/core",
6957 "compact": false,
6958 "flagsPosition": -1,
6959 "fields": [
6960 {
6961 "name": "clock",
6962 "required": true,
6963 "type": "uint",
6964 "version": 1
6965 }
6966 ]
6967 },
6968 {
6969 "name": "unwant-pairing",
6970 "namespace": "api/core",
6971 "compact": false,
6972 "flagsPosition": -1,
6973 "fields": [
6974 {
6975 "name": "clock",
6976 "required": true,
6977 "type": "uint",
6978 "version": 1
6979 }
6980 ]
6981 },
6982 {
6983 "name": "pending-invitations",
6984 "namespace": "api/core",
6985 "compact": false,
6986 "flagsPosition": -1,
6987 "fields": [
6988 {
6989 "name": "invitations",
6990 "required": true,
6991 "array": true,
6992 "type": "@keet-private-id/pending-invitation",
6993 "version": 1
6994 }
6995 ]
6996 },
6997 {
6998 "name": "join-request",
6999 "namespace": "api/core",
7000 "compact": false,
7001 "flagsPosition": -1,
7002 "fields": [
7003 {
7004 "name": "roomKey",
7005 "required": true,
7006 "type": "@keet/room-key",
7007 "version": 1
7008 },
7009 {
7010 "name": "request",
7011 "required": true,
7012 "type": "@keet/join-request",
7013 "version": 1
7014 }
7015 ]
7016 },
7017 {
7018 "name": "join-requests",
7019 "namespace": "api/core",
7020 "compact": false,
7021 "flagsPosition": -1,
7022 "fields": [
7023 {
7024 "name": "requests",
7025 "required": true,
7026 "array": true,
7027 "type": "@api/core/join-request",
7028 "version": 1
7029 }
7030 ]
7031 },
7032 {
7033 "name": "pairing",
7034 "namespace": "api/core",
7035 "compact": false,
7036 "flagsPosition": -1,
7037 "fields": [
7038 {
7039 "name": "pendingInvitations",
7040 "required": true,
7041 "array": true,
7042 "type": "@keet-private-id/pending-invitation",
7043 "version": 1
7044 },
7045 {
7046 "name": "identityJoinRequests",
7047 "required": true,
7048 "array": true,
7049 "type": "@keet/join-request",
7050 "version": 1
7051 }
7052 ]
7053 },
7054 {
7055 "name": "start-pairing-request",
7056 "namespace": "api/core",
7057 "compact": false,
7058 "flagsPosition": 2,
7059 "fields": [
7060 {
7061 "name": "header",
7062 "required": true,
7063 "type": "@api/request-header",
7064 "version": 1
7065 },
7066 {
7067 "name": "invitation",
7068 "required": true,
7069 "type": "string",
7070 "version": 1
7071 },
7072 {
7073 "name": "isIdentity",
7074 "type": "bool",
7075 "version": 1
7076 }
7077 ]
7078 },
7079 {
7080 "name": "start-pairing-response",
7081 "namespace": "api/core",
7082 "compact": false,
7083 "flagsPosition": -1,
7084 "fields": [
7085 {
7086 "name": "header",
7087 "required": true,
7088 "type": "@api/response-header",
7089 "version": 1
7090 }
7091 ]
7092 },
7093 {
7094 "name": "invitation-permissions",
7095 "namespace": "api/core",
7096 "compact": false,
7097 "flagsPosition": 0,
7098 "fields": [
7099 {
7100 "name": "canModerate",
7101 "type": "bool",
7102 "version": 1
7103 },
7104 {
7105 "name": "canAdmin",
7106 "type": "bool",
7107 "version": 1
7108 },
7109 {
7110 "name": "requiresConfirmation",
7111 "type": "bool",
7112 "version": 1
7113 },
7114 {
7115 "name": "isReadOnly",
7116 "type": "bool",
7117 "version": 1
7118 }
7119 ]
7120 },
7121 {
7122 "name": "create-room-invitation-request",
7123 "namespace": "api/core",
7124 "compact": false,
7125 "flagsPosition": 2,
7126 "fields": [
7127 {
7128 "name": "header",
7129 "required": true,
7130 "type": "@api/request-header",
7131 "version": 1
7132 },
7133 {
7134 "name": "roomKey",
7135 "required": true,
7136 "type": "@keet/room-key",
7137 "version": 1
7138 },
7139 {
7140 "name": "permissions",
7141 "type": "@api/core/invitation-permissions",
7142 "version": 1
7143 },
7144 {
7145 "name": "expiration",
7146 "type": "uint",
7147 "version": 1
7148 }
7149 ]
7150 },
7151 {
7152 "name": "create-room-invitation-response",
7153 "namespace": "api/core",
7154 "compact": false,
7155 "flagsPosition": -1,
7156 "fields": [
7157 {
7158 "name": "header",
7159 "required": true,
7160 "type": "@api/response-header",
7161 "version": 1
7162 },
7163 {
7164 "name": "invitation",
7165 "required": true,
7166 "type": "string",
7167 "version": 1
7168 }
7169 ]
7170 },
7171 {
7172 "name": "create-identity-invitation-request",
7173 "namespace": "api/core",
7174 "compact": false,
7175 "flagsPosition": -1,
7176 "fields": [
7177 {
7178 "name": "header",
7179 "required": true,
7180 "type": "@api/request-header",
7181 "version": 1
7182 }
7183 ]
7184 },
7185 {
7186 "name": "create-identity-invitation-response",
7187 "namespace": "api/core",
7188 "compact": false,
7189 "flagsPosition": -1,
7190 "fields": [
7191 {
7192 "name": "header",
7193 "required": true,
7194 "type": "@api/response-header",
7195 "version": 1
7196 },
7197 {
7198 "name": "invitation",
7199 "required": true,
7200 "type": "string",
7201 "version": 1
7202 }
7203 ]
7204 },
7205 {
7206 "name": "accept-join-request-request",
7207 "namespace": "api/core",
7208 "compact": false,
7209 "flagsPosition": -1,
7210 "fields": [
7211 {
7212 "name": "header",
7213 "required": true,
7214 "type": "@api/request-header",
7215 "version": 1
7216 },
7217 {
7218 "name": "roomKey",
7219 "required": true,
7220 "type": "@keet/room-key",
7221 "version": 1
7222 },
7223 {
7224 "name": "request",
7225 "required": true,
7226 "type": "@keet/join-request",
7227 "version": 1
7228 }
7229 ]
7230 },
7231 {
7232 "name": "accept-join-request-response",
7233 "namespace": "api/core",
7234 "compact": false,
7235 "flagsPosition": -1,
7236 "fields": [
7237 {
7238 "name": "header",
7239 "required": true,
7240 "type": "@api/response-header",
7241 "version": 1
7242 }
7243 ]
7244 },
7245 {
7246 "name": "reject-join-request-request",
7247 "namespace": "api/core",
7248 "compact": false,
7249 "flagsPosition": -1,
7250 "fields": [
7251 {
7252 "name": "header",
7253 "required": true,
7254 "type": "@api/request-header",
7255 "version": 1
7256 },
7257 {
7258 "name": "roomKey",
7259 "required": true,
7260 "type": "@keet/room-key",
7261 "version": 1
7262 },
7263 {
7264 "name": "request",
7265 "required": true,
7266 "type": "@keet/join-request",
7267 "version": 1
7268 }
7269 ]
7270 },
7271 {
7272 "name": "reject-join-request-response",
7273 "namespace": "api/core",
7274 "compact": false,
7275 "flagsPosition": -1,
7276 "fields": [
7277 {
7278 "name": "header",
7279 "required": true,
7280 "type": "@api/response-header",
7281 "version": 1
7282 }
7283 ]
7284 },
7285 {
7286 "name": "stop-pairing-request",
7287 "namespace": "api/core",
7288 "compact": false,
7289 "flagsPosition": -1,
7290 "fields": [
7291 {
7292 "name": "header",
7293 "required": true,
7294 "type": "@api/request-header",
7295 "version": 1
7296 },
7297 {
7298 "name": "id",
7299 "required": true,
7300 "type": "@keet/invitation-id",
7301 "version": 1
7302 }
7303 ]
7304 },
7305 {
7306 "name": "stop-pairing-response",
7307 "namespace": "api/core",
7308 "compact": false,
7309 "flagsPosition": -1,
7310 "fields": [
7311 {
7312 "name": "header",
7313 "required": true,
7314 "type": "@api/response-header",
7315 "version": 1
7316 }
7317 ]
7318 },
7319 {
7320 "name": "update-profile-request",
7321 "namespace": "api/core",
7322 "compact": false,
7323 "flagsPosition": 2,
7324 "fields": [
7325 {
7326 "name": "header",
7327 "required": true,
7328 "type": "@api/request-header",
7329 "version": 1
7330 },
7331 {
7332 "name": "displayName",
7333 "required": true,
7334 "type": "string",
7335 "version": 1
7336 },
7337 {
7338 "name": "avatar",
7339 "type": "@api/core/inline-avatar",
7340 "version": 1
7341 }
7342 ]
7343 },
7344 {
7345 "name": "want-identity",
7346 "namespace": "api/core",
7347 "compact": false,
7348 "flagsPosition": -1,
7349 "fields": [
7350 {
7351 "name": "clock",
7352 "required": true,
7353 "type": "uint",
7354 "version": 1
7355 }
7356 ]
7357 },
7358 {
7359 "name": "unwant-identity",
7360 "namespace": "api/core",
7361 "compact": false,
7362 "flagsPosition": -1,
7363 "fields": [
7364 {
7365 "name": "clock",
7366 "required": true,
7367 "type": "uint",
7368 "version": 1
7369 }
7370 ]
7371 },
7372 {
7373 "name": "identity-status",
7374 "namespace": "api/core",
7375 "compact": false,
7376 "flagsPosition": 0,
7377 "fields": [
7378 {
7379 "name": "isConfirmed",
7380 "type": "bool",
7381 "version": 1
7382 },
7383 {
7384 "name": "isLoggedOut",
7385 "type": "bool",
7386 "version": 1
7387 }
7388 ]
7389 },
7390 {
7391 "name": "identity",
7392 "namespace": "api/core",
7393 "compact": false,
7394 "flagsPosition": -1,
7395 "fields": [
7396 {
7397 "name": "memberKey",
7398 "required": true,
7399 "type": "@keet/member-key",
7400 "version": 1
7401 },
7402 {
7403 "name": "status",
7404 "required": true,
7405 "type": "@api/core/identity-status",
7406 "version": 1
7407 },
7408 {
7409 "name": "deviceKeys",
7410 "required": true,
7411 "array": true,
7412 "type": "@keet/device-key",
7413 "version": 1
7414 }
7415 ]
7416 },
7417 {
7418 "name": "identity-member",
7419 "namespace": "api/core",
7420 "compact": false,
7421 "flagsPosition": -1,
7422 "fields": [
7423 {
7424 "name": "memberKey",
7425 "required": true,
7426 "type": "@keet/member-key",
7427 "version": 1
7428 }
7429 ]
7430 },
7431 {
7432 "name": "identity-device",
7433 "namespace": "api/core",
7434 "compact": false,
7435 "flagsPosition": -1,
7436 "fields": [
7437 {
7438 "name": "deviceKey",
7439 "required": true,
7440 "type": "@keet/device-key",
7441 "version": 1
7442 }
7443 ]
7444 },
7445 {
7446 "name": "enable-request",
7447 "namespace": "api/debug",
7448 "compact": false,
7449 "flagsPosition": -1,
7450 "fields": [
7451 {
7452 "name": "header",
7453 "required": true,
7454 "type": "@api/request-header",
7455 "version": 1
7456 },
7457 {
7458 "name": "password",
7459 "required": true,
7460 "type": "string",
7461 "version": 1
7462 }
7463 ]
7464 },
7465 {
7466 "name": "enable-response",
7467 "namespace": "api/debug",
7468 "compact": false,
7469 "flagsPosition": -1,
7470 "fields": [
7471 {
7472 "name": "header",
7473 "required": true,
7474 "type": "@api/response-header",
7475 "version": 1
7476 },
7477 {
7478 "name": "inspector",
7479 "required": true,
7480 "type": "string",
7481 "version": 1
7482 }
7483 ]
7484 },
7485 {
7486 "name": "disable-request",
7487 "namespace": "api/debug",
7488 "compact": false,
7489 "flagsPosition": -1,
7490 "fields": [
7491 {
7492 "name": "header",
7493 "required": true,
7494 "type": "@api/response-header",
7495 "version": 1
7496 }
7497 ]
7498 },
7499 {
7500 "name": "disable-response",
7501 "namespace": "api/debug",
7502 "compact": false,
7503 "flagsPosition": -1,
7504 "fields": [
7505 {
7506 "name": "header",
7507 "required": true,
7508 "type": "@api/response-header",
7509 "version": 1
7510 }
7511 ]
7512 },
7513 {
7514 "name": "member-label-type",
7515 "namespace": "keet",
7516 "offset": 1,
7517 "enum": [
7518 {
7519 "key": "Flag",
7520 "version": 2
7521 }
7522 ],
7523 "strings": false
7524 },
7525 {
7526 "name": "member-label",
7527 "namespace": "keet",
7528 "compact": false,
7529 "flagsPosition": -1,
7530 "fields": [
7531 {
7532 "name": "key",
7533 "required": true,
7534 "type": "@keet/member-key",
7535 "version": 2
7536 },
7537 {
7538 "name": "sender",
7539 "required": true,
7540 "type": "@keet/member-key",
7541 "version": 2
7542 },
7543 {
7544 "name": "clock",
7545 "required": true,
7546 "type": "uint",
7547 "version": 2
7548 },
7549 {
7550 "name": "label",
7551 "required": true,
7552 "type": "@keet/member-label-type",
7553 "version": 2
7554 }
7555 ]
7556 },
7557 {
7558 "name": "add-member-label-operation",
7559 "namespace": "keet",
7560 "compact": false,
7561 "flagsPosition": -1,
7562 "fields": [
7563 {
7564 "name": "header",
7565 "required": true,
7566 "type": "@keet/operation-header",
7567 "version": 2
7568 },
7569 {
7570 "name": "key",
7571 "required": true,
7572 "type": "@keet/member-key",
7573 "version": 2
7574 },
7575 {
7576 "name": "label",
7577 "required": true,
7578 "type": "@keet/member-label-type",
7579 "version": 2
7580 }
7581 ]
7582 },
7583 {
7584 "name": "member-label-summary",
7585 "namespace": "keet",
7586 "compact": false,
7587 "flagsPosition": -1,
7588 "fields": [
7589 {
7590 "name": "label",
7591 "required": true,
7592 "type": "@keet/member-label-type",
7593 "version": 2
7594 },
7595 {
7596 "name": "count",
7597 "required": true,
7598 "type": "uint",
7599 "version": 2
7600 }
7601 ]
7602 },
7603 {
7604 "name": "member-label-digest",
7605 "namespace": "keet",
7606 "compact": false,
7607 "flagsPosition": -1,
7608 "fields": [
7609 {
7610 "name": "key",
7611 "required": true,
7612 "type": "@keet/member-key",
7613 "version": 2
7614 },
7615 {
7616 "name": "total",
7617 "required": true,
7618 "type": "uint",
7619 "version": 2
7620 },
7621 {
7622 "name": "labels",
7623 "required": true,
7624 "array": true,
7625 "type": "@keet/member-label-summary",
7626 "version": 2
7627 },
7628 {
7629 "name": "editedAt",
7630 "required": true,
7631 "type": "uint",
7632 "version": 2
7633 },
7634 {
7635 "name": "flagsClock",
7636 "required": true,
7637 "type": "uint",
7638 "version": 2
7639 }
7640 ]
7641 },
7642 {
7643 "name": "move-indexer-operation",
7644 "namespace": "keet",
7645 "compact": false,
7646 "flagsPosition": -1,
7647 "fields": [
7648 {
7649 "name": "header",
7650 "required": true,
7651 "type": "@keet/operation-header",
7652 "version": 2
7653 },
7654 {
7655 "name": "deviceKey",
7656 "required": true,
7657 "type": "@keet/device-key",
7658 "version": 2
7659 },
7660 {
7661 "name": "fromDeviceKey",
7662 "required": true,
7663 "type": "@keet/device-key",
7664 "version": 3
7665 }
7666 ]
7667 },
7668 {
7669 "name": "location-shared-event",
7670 "namespace": "keet",
7671 "compact": false,
7672 "flagsPosition": -1,
7673 "fields": [
7674 {
7675 "name": "latitude",
7676 "required": true,
7677 "type": "float64",
7678 "version": 3
7679 },
7680 {
7681 "name": "longitude",
7682 "required": true,
7683 "type": "float64",
7684 "version": 3
7685 }
7686 ]
7687 },
7688 {
7689 "name": "start-call",
7690 "namespace": "keet",
7691 "compact": false,
7692 "flagsPosition": 3,
7693 "fields": [
7694 {
7695 "name": "header",
7696 "required": true,
7697 "type": "@keet/operation-header",
7698 "version": 4
7699 },
7700 {
7701 "name": "callKey",
7702 "required": true,
7703 "type": "fixed32",
7704 "version": 4
7705 },
7706 {
7707 "name": "encryptionKey",
7708 "required": true,
7709 "type": "@keet/encryption-key",
7710 "version": 4
7711 },
7712 {
7713 "name": "streams",
7714 "array": true,
7715 "type": "@keet/core-key",
7716 "version": 4
7717 },
7718 {
7719 "name": "discoveryKey",
7720 "type": "@keet/room-discovery-key",
7721 "version": 4
7722 },
7723 {
7724 "name": "version",
7725 "type": "uint",
7726 "version": 4
7727 }
7728 ]
7729 },
7730 {
7731 "name": "join-call",
7732 "namespace": "keet",
7733 "compact": false,
7734 "flagsPosition": 2,
7735 "fields": [
7736 {
7737 "name": "header",
7738 "required": true,
7739 "type": "@keet/operation-header",
7740 "version": 4
7741 },
7742 {
7743 "name": "callKey",
7744 "required": true,
7745 "type": "fixed32",
7746 "version": 4
7747 },
7748 {
7749 "name": "streams",
7750 "array": true,
7751 "type": "@keet/core-key",
7752 "version": 4
7753 }
7754 ]
7755 },
7756 {
7757 "name": "leave-call",
7758 "namespace": "keet",
7759 "compact": false,
7760 "flagsPosition": -1,
7761 "fields": [
7762 {
7763 "name": "header",
7764 "required": true,
7765 "type": "@keet/operation-header",
7766 "version": 4
7767 },
7768 {
7769 "name": "callKey",
7770 "required": true,
7771 "type": "fixed32",
7772 "version": 4
7773 }
7774 ]
7775 },
7776 {
7777 "name": "end-call",
7778 "namespace": "keet",
7779 "compact": false,
7780 "flagsPosition": -1,
7781 "fields": [
7782 {
7783 "name": "header",
7784 "required": true,
7785 "type": "@keet/operation-header",
7786 "version": 4
7787 },
7788 {
7789 "name": "callKey",
7790 "required": true,
7791 "type": "fixed32",
7792 "version": 4
7793 }
7794 ]
7795 },
7796 {
7797 "name": "add-call-stream",
7798 "namespace": "keet",
7799 "compact": false,
7800 "flagsPosition": -1,
7801 "fields": [
7802 {
7803 "name": "header",
7804 "required": true,
7805 "type": "@keet/operation-header",
7806 "version": 4
7807 },
7808 {
7809 "name": "callKey",
7810 "required": true,
7811 "type": "fixed32",
7812 "version": 4
7813 },
7814 {
7815 "name": "streamKey",
7816 "required": true,
7817 "type": "@keet/core-key",
7818 "version": 4
7819 }
7820 ]
7821 },
7822 {
7823 "name": "remove-call-stream",
7824 "namespace": "keet",
7825 "compact": false,
7826 "flagsPosition": -1,
7827 "fields": [
7828 {
7829 "name": "header",
7830 "required": true,
7831 "type": "@keet/operation-header",
7832 "version": 4
7833 },
7834 {
7835 "name": "callKey",
7836 "required": true,
7837 "type": "fixed32",
7838 "version": 4
7839 },
7840 {
7841 "name": "streamKey",
7842 "required": true,
7843 "type": "@keet/core-key",
7844 "version": 4
7845 }
7846 ]
7847 },
7848 {
7849 "name": "call-record",
7850 "namespace": "keet",
7851 "compact": false,
7852 "flagsPosition": 3,
7853 "fields": [
7854 {
7855 "name": "callKey",
7856 "required": true,
7857 "type": "fixed32",
7858 "version": 4
7859 },
7860 {
7861 "name": "encryptionKey",
7862 "required": true,
7863 "type": "@keet/encryption-key",
7864 "version": 4
7865 },
7866 {
7867 "name": "createdAt",
7868 "required": true,
7869 "type": "uint",
7870 "version": 4
7871 },
7872 {
7873 "name": "endedAt",
7874 "type": "uint",
7875 "version": 4
7876 },
7877 {
7878 "name": "discoveryKey",
7879 "type": "@keet/room-discovery-key",
7880 "version": 4
7881 },
7882 {
7883 "name": "version",
7884 "type": "uint",
7885 "version": 4
7886 }
7887 ]
7888 },
7889 {
7890 "name": "call-member-record",
7891 "namespace": "keet",
7892 "compact": false,
7893 "flagsPosition": -1,
7894 "fields": [
7895 {
7896 "name": "callKey",
7897 "required": true,
7898 "type": "fixed32",
7899 "version": 4
7900 },
7901 {
7902 "name": "memberKey",
7903 "required": true,
7904 "type": "@keet/member-key",
7905 "version": 4
7906 },
7907 {
7908 "name": "createdAt",
7909 "required": true,
7910 "type": "uint",
7911 "version": 4
7912 }
7913 ]
7914 },
7915 {
7916 "name": "call-device-record",
7917 "namespace": "keet",
7918 "compact": false,
7919 "flagsPosition": 4,
7920 "fields": [
7921 {
7922 "name": "callKey",
7923 "required": true,
7924 "type": "fixed32",
7925 "version": 4
7926 },
7927 {
7928 "name": "deviceKey",
7929 "required": true,
7930 "type": "@keet/device-key",
7931 "version": 4
7932 },
7933 {
7934 "name": "memberKey",
7935 "required": true,
7936 "type": "@keet/member-key",
7937 "version": 4
7938 },
7939 {
7940 "name": "createdAt",
7941 "required": true,
7942 "type": "uint",
7943 "version": 4
7944 },
7945 {
7946 "name": "swarmKey",
7947 "type": "@keet/swarm-key",
7948 "version": 4
7949 }
7950 ]
7951 },
7952 {
7953 "name": "call-stream-record",
7954 "namespace": "keet",
7955 "compact": false,
7956 "flagsPosition": -1,
7957 "fields": [
7958 {
7959 "name": "callKey",
7960 "required": true,
7961 "type": "fixed32",
7962 "version": 4
7963 },
7964 {
7965 "name": "deviceKey",
7966 "required": true,
7967 "type": "@keet/device-key",
7968 "version": 4
7969 },
7970 {
7971 "name": "streamKey",
7972 "required": true,
7973 "type": "buffer",
7974 "version": 4
7975 },
7976 {
7977 "name": "createdAt",
7978 "required": true,
7979 "type": "uint",
7980 "version": 4
7981 }
7982 ]
7983 },
7984 {
7985 "name": "active-call",
7986 "namespace": "local",
7987 "compact": false,
7988 "flagsPosition": 1,
7989 "fields": [
7990 {
7991 "name": "callKey",
7992 "required": true,
7993 "type": "fixed32",
7994 "version": 4
7995 },
7996 {
7997 "name": "selfDeviceKey",
7998 "type": "@keet/device-key",
7999 "version": 4
8000 }
8001 ]
8002 },
8003 {
8004 "name": "file-gc-info",
8005 "namespace": "local",
8006 "compact": false,
8007 "flagsPosition": -1,
8008 "fields": [
8009 {
8010 "name": "lastCleared",
8011 "required": true,
8012 "type": "uint",
8013 "version": 4
8014 }
8015 ]
8016 },
8017 {
8018 "name": "build-type",
8019 "namespace": "keet",
8020 "offset": 1,
8021 "enum": [
8022 {
8023 "key": "Nightly",
8024 "version": 5
8025 },
8026 {
8027 "key": "Internal",
8028 "version": 5
8029 },
8030 {
8031 "key": "Production",
8032 "version": 5
8033 }
8034 ],
8035 "strings": true
8036 },
8037 {
8038 "name": "test-crash-operation",
8039 "namespace": "keet",
8040 "compact": false,
8041 "flagsPosition": -1,
8042 "fields": [
8043 {
8044 "name": "header",
8045 "required": true,
8046 "type": "@keet/operation-header",
8047 "version": 5
8048 }
8049 ]
8050 },
8051 {
8052 "name": "test-dispatch-error-operation",
8053 "namespace": "keet",
8054 "compact": false,
8055 "flagsPosition": -1,
8056 "fields": [
8057 {
8058 "name": "header",
8059 "required": true,
8060 "type": "@keet/operation-header",
8061 "version": 5
8062 }
8063 ]
8064 },
8065 {
8066 "name": "environment-record",
8067 "namespace": "local",
8068 "compact": false,
8069 "flagsPosition": 1,
8070 "fields": [
8071 {
8072 "name": "buildType",
8073 "required": true,
8074 "type": "@keet/build-type",
8075 "version": 5
8076 },
8077 {
8078 "name": "latestOfflineAbi",
8079 "type": "uint",
8080 "version": 6
8081 }
8082 ]
8083 }
8084 ]
8085}
@holepunchto/keet-core/schema/spec/config/hyperconf/index.js +1 -0
……@@ -0,0 +1 @@
1const o=require("../hyperschema"),U=require("hyperconf/runtime"),d=o.getEncoding("@config/keet-config"),s=e(d,U.b4a.from("CA4HFwEDBAwDC/2IAz8Bwdf7MOoNiStwh63v4euvhB1sw4cMcwo40mS9JJ/f/7ABQhRuwr3PX8TvUmi1ybxJTO7ToKjLiyn/ap0g7YbbLJLkVobzZEaSwMoXDf2jR2df2WqVskOkG+QlPuL1XDxSUwPNk2Sd+XmE6wXbzAErGnCEO8wASM5KT3vuT/gihUsC09MeR6o2SxeeKfOvILau/u2lPAxfiw1reo00DWfQyJnA2z96XG0uEWnh1UFTqConLdHUGrD2y8DDVF2e+dwU7xMMQ3QXuEqwUVU1LP/VUNeZloucwf7WZHNA1+s2TGmoY5wWCYAuNsdgE+ws43F7d8NzkFsydXQ8wb6OAqfTBL/NWkoJL8z7HUKWDwHjCRkZHLkjN+mYhbbd4ckqW0zgDhKIlLDCpyuB35aR2dHQcs514Hk8KCje32iAKtYVGZPDNgfp3uq3HlcTcNJlTk9UwWdZ/mv2bPvhD+a0zWsMNkwFs5ZzFvJ5l5RjJa7PIYUs2mLSQKjS0iT7iqlxgjH4A7cqnXXUTgD09mPjDx6+/Y/GgiRq+/PF8/mb/Lg223je7d7B/oJzQVrzKppRFrbFmJMvbLqLafulJqv5Q4YhhY/9KNMz8WfUPyGjujNzDTmdtJhn6HHk1R0kvcnoycdpOUD5c3To3MVEF/BMEyM+3adgOZa0oKY1yBns13oo1LTw2pzobtxhPYPaPZSYm0RgJE6WAkTXA8bvvtTZOXIvECOYiGXMQdX6AnMfYyQIeV4TxGixlh3o2gJKUPVRMGUBUKvUB0WuQpMY8UYybd2ycWhTLHxrIcrP3UpD1Tnga9UYp4k6JuskyX5T+U05KEKzwLP93LkDoIg6xWkeZ+TJ02nvIzJcTuLQFAZwtDPA+ET+OCZMAihCzZt2tdKHZ7RiUx3+so4qaRpuCw7eZr1FdSsBZVFPvsiERyHrA4+8xBKvDraRdL2IgGH0GXRb0BE2dxDgupjg2wovsSrhohui0T11owwd/6/7fP4ICxWu+uX6GMK3rUP6zIiCtdYU/UUmLzPpyfEVS+bcxPmPOKtNv+dRRXkHsU2sPHbR7WVKplxpDCloATlyAlbp1RvoUK/oWWwqyoxK0eLVOaFsFHBlJ5G3vi0QASxk6bqnUpUYk3xUFWfLKg2jcSOZN6uc0ahcNywYs5byBfHslhGKAZ0aAr6nUnRdR7aoxWKso8tl1rp2oWQfyDsiAQHmif3c+Rw8sq2lt7U0d03jP8IwKPjY6gG4tF2d1O/jcyEBzyWoHGWLqPMhjXEwrYJD8EqaJLzUbzAsncqVWrOsFaU=","base64")),w=o.getEncoding("@config/keet-config"),c=e(w,U.b4a.from("CA4HGgEDBAwDC/2IAz8BwWgTaeAmuPfSLEPTf7BNfdT1SwdR30VrxZMU50LQ6wv8G8jcXqQ3BvaYClXfUjuYUkkLuK2I8LZHi1tVCl49OJzd9q27SePd1zGsb/rHzXd/eB8k8G7Og0o4ja5tYcCLoAOGa8TwJ0Nk3lTya0m43RmXxbh4m/hhHdn/KM1tY+B2CBVhxCMFAowShkuoLFRzv1AzKjpqtXQPlKTB8n0cUHGOnlfvXt5S2oiOMxee8ZjqY78a4gVkijLZJURVITqLlsQMQ3QXuEqwUVU1LP/VUNeZloucwf7WZHNA1+s2TGmoY5wWCYAuNsdgE+ws43F7d8NzkFsydXQ8wb6OAqfTBL/NWkoJL8z7HUKWDwHjCRkZHLkjN+mYhbbd4ckqW0zgDhKIlLDCpyuB35aR2dHQcs514Hk8KCje32iAKtYVGZPDNgfp3uq3HlcTcNJlTk9UwWdZ/mv2bPvhD+a0zWsMNkwFs5ZzFvJ5l5RjJa7PIYUs2mLSQKjS0iT7iqlxgjH4A7cqnXXUTgD09mPjDx6+/Y/GgiRq+/PF8/mb/Lg223je7d7B/oJzQVrzKppRFrbFmJMvbLqLafulJqv5Q4YhhY/9KNMz8WfUPyGjujNzDTmdtJhn6HHk1R0kvcnoycdpOUD5c3To3MVEF/BMEyM+3adgOZa0oKY1yBns13oo1LTw2pzobtxhPYPaPZSYm0RgJE6WAkTXA8bvvtTZOXIvECOYiGXMQdX6AnMfYyQIeV4TxGixlh3o2gJKUPVRMGUBUKvUB0WuQpMY8UYybd2ycWhTLHxrIcrP3UpD1Tnga9UYp4k6JuskyX5T+U05KEKzwLP93LkDoIg6xWkeZ+TJ02nvIzJcTuLQFAZwtDPA+ET+OCZMAihCzZt2tdKHZ7RiUx3+so4qaRpuCw7eZr1FdSsBZVFPvsiERyHrA4+8xBKvDraRdL2IgGH0GXRb0BE2dxDgupjg2wovsSrhohui0T11owwd/6/7fP4ICxWu+uX6GMK3rUP6zIiCtdYU/UUmLzPpyfEVS+bcxPmPOKtNv+dRRXkHsU2sPHbR7WVKplxpDCloATlyAlbp1RvoUK/oWWwqyoxK0eLVOaFsFHBlJ5G3vi0QASxk6bqnUpUYk3xUFWfLKg2jcSOZN6uc0ahcNywYs5byBfHslhGKAZ0aAr6nUnRdR7aoxWKso8tl1rp2oWQfyDsiAQHmif3c+Rw8sq2lt7U0d03jP8IwKPjY6gG4tF2d1O/jcyEBzyWoHGWLqPMhjXEwrYJD8EqaJLzUbzAsncqVWrOsFaU=","base64"));function e(o,U){return o.decode({start:0,end:U.byteLength,buffer:U})}module.exports={production:s,development:c,productionEncoding:d,developmentEncoding:w};
@holepunchto/keet-core/schema/spec/config/hyperschema/index.js +1 -0
……@@ -0,0 +1 @@
1const{c:e}=require("hyperschema/runtime"),d=6;let n=6;const o={preencode(d,o){e.uint.preencode(d,o.minimum),d.end++,o.autoupgrade&&e.uint.preencode(d,o.autoupgrade),n>=3&&o.forceUpdate&&e.uint.preencode(d,o.forceUpdate),n>=4&&o.minVersion&&R.preencode(d,o.minVersion)},encode(d,o){const c=(o.autoupgrade?1:0)|(n>=3&&o.forceUpdate?2:0)|(n>=4&&o.minVersion?4:0);e.uint.encode(d,o.minimum),e.uint.encode(d,c),o.autoupgrade&&e.uint.encode(d,o.autoupgrade),n>=3&&o.forceUpdate&&e.uint.encode(d,o.forceUpdate),n>=4&&o.minVersion&&R.encode(d,o.minVersion)},decode(d){const o=e.uint.decode(d),c=e.uint.decode(d);return{minimum:o,autoupgrade:1&c?e.uint.decode(d):0,forceUpdate:n>=3&&2&c?e.uint.decode(d):0,minVersion:n>=4&&4&c?R.decode(d):null}}},c=e.array(e.fixed32),r={preencode(d,n){e.fixed32.preencode(d,n.db),e.fixed32.preencode(d,n.reserved),e.fixed32.preencode(d,n.blobs),c.preencode(d,n.rpc)},encode(d,n){e.fixed32.encode(d,n.db),e.fixed32.encode(d,n.reserved),e.fixed32.encode(d,n.blobs),c.encode(d,n.rpc)},decode:d=>({db:e.fixed32.decode(d),reserved:e.fixed32.decode(d),blobs:e.fixed32.decode(d),rpc:c.decode(d)})},i=e.array(e.frame(r)),s=c,t=c,u=c,a=c,l={preencode(d,n){d.end++,n.userRegistries&&i.preencode(d,n.userRegistries),n.blindPeers&&s.preencode(d,n.blindPeers),n.blindRelays&&t.preencode(d,n.blindRelays),n.gatekeepers&&u.preencode(d,n.gatekeepers),n.discovery&&a.preencode(d,n.discovery),n.feedback&&e.fixed32.preencode(d,n.feedback)},encode(d,n){const o=(n.userRegistries?1:0)|(n.blindPeers?2:0)|(n.blindRelays?4:0)|(n.gatekeepers?8:0)|(n.discovery?16:0)|(n.feedback?32:0);e.uint.encode(d,o),n.userRegistries&&i.encode(d,n.userRegistries),n.blindPeers&&s.encode(d,n.blindPeers),n.blindRelays&&t.encode(d,n.blindRelays),n.gatekeepers&&u.encode(d,n.gatekeepers),n.discovery&&a.encode(d,n.discovery),n.feedback&&e.fixed32.encode(d,n.feedback)},decode(d){const n=e.uint.decode(d);return{userRegistries:1&n?i.decode(d):null,blindPeers:2&n?s.decode(d):null,blindRelays:4&n?t.decode(d):null,gatekeepers:8&n?u.decode(d):null,discovery:16&n?a.decode(d):null,feedback:32&n?e.fixed32.decode(d):null}}},p=c,f=c,b={preencode(e,d){e.end++,d.disabled&&p.preencode(e,d.disabled),n>=6&&d.verified&&f.preencode(e,d.verified)},encode(d,o){const c=(o.disabled?1:0)|(n>=6&&o.verified?2:0);e.uint.encode(d,c),o.disabled&&p.encode(d,o.disabled),n>=6&&o.verified&&f.encode(d,o.verified)},decode(d){const o=e.uint.decode(d);return{disabled:1&o?p.decode(d):null,verified:n>=6&&2&o?f.decode(d):null}}},m=e.frame(o),g=e.frame(l),v=e.frame(b),k={preencode(e,d){m.preencode(e,d.versions),e.end++,d.services&&g.preencode(e,d.services),d.rooms&&v.preencode(e,d.rooms),n>=2&&d.profile&&U.preencode(e,d.profile),n>=5&&d.debug&&V.preencode(e,d.debug)},encode(d,o){const c=(o.services?1:0)|(o.rooms?2:0)|(n>=2&&o.profile?4:0)|(n>=5&&o.debug?8:0);m.encode(d,o.versions),e.uint.encode(d,c),o.services&&g.encode(d,o.services),o.rooms&&v.encode(d,o.rooms),n>=2&&o.profile&&U.encode(d,o.profile),n>=5&&o.debug&&V.encode(d,o.debug)},decode(d){const o=m.decode(d),c=e.uint.decode(d);return{versions:o,services:1&c?g.decode(d):null,rooms:2&c?v.decode(d):null,profile:n>=2&&4&c?U.decode(d):null,debug:n>=5&&8&c?V.decode(d):null}}},y={preencode(e,d){e.end++},encode(d,o){const c=n>=2&&o.disableUnreadSync?1:0;e.uint.encode(d,c)},decode(d){const o=e.uint.decode(d);return{disableUnreadSync:n>=2&&!!(1&o)}}},x={preencode(d,n){e.uint.preencode(d,n.major),e.uint.preencode(d,n.minor),e.uint.preencode(d,n.patch)},encode(d,n){e.uint.encode(d,n.major),e.uint.encode(d,n.minor),e.uint.encode(d,n.patch)},decode:d=>({major:e.uint.decode(d),minor:e.uint.decode(d),patch:e.uint.decode(d)})},h={preencode(d,o){d.end++,n>=5&&o.unlockHash&&e.fixed32.preencode(d,o.unlockHash)},encode(d,o){const c=n>=5&&o.unlockHash?1:0;e.uint.encode(d,c),n>=5&&o.unlockHash&&e.fixed32.encode(d,o.unlockHash)},decode(d){const o=e.uint.decode(d);return{unlockHash:n>=5&&1&o?e.fixed32.decode(d):null}}},R=e.frame(x),U=e.frame(y),V=e.frame(h);function E(e){n=e}function H(d,o,c=6){return n=c,e.encode(S(d),o)}function P(d,o,c=6){return n=c,e.decode(S(d),o)}function w(e){throw new Error("Enum not found "+e)}function S(e){switch(e){case"@config/versions":return o;case"@config/user-registry":return r;case"@config/services":return l;case"@config/rooms":return b;case"@config/keet-config":return k;case"@config/profile":return y;case"@config/semver":return x;case"@config/debug":return h;default:throw new Error("Encoder not found "+e)}}function j(e,d=6){const o=S(e);return{preencode(e,c){n=d,o.preencode(e,c)},encode(e,c){n=d,o.encode(e,c)},decode:e=>(n=d,o.decode(e))}}const q=j;module.exports={resolveStruct:q,getStruct:j,getEnum:w,getEncoding:S,encode:H,decode:P,setVersion:E,version:n};
@holepunchto/keet-core/schema/spec/config/hyperschema/schema.json +216 -0
……@@ -0,0 +1,216 @@
1{
2 "version": 6,
3 "schema": [
4 {
5 "name": "versions",
6 "namespace": "config",
7 "compact": false,
8 "flagsPosition": 1,
9 "fields": [
10 {
11 "name": "minimum",
12 "required": true,
13 "type": "uint",
14 "version": 1
15 },
16 {
17 "name": "autoupgrade",
18 "type": "uint",
19 "version": 1
20 },
21 {
22 "name": "forceUpdate",
23 "type": "uint",
24 "version": 3
25 },
26 {
27 "name": "minVersion",
28 "type": "@config/semver",
29 "version": 4
30 }
31 ]
32 },
33 {
34 "name": "user-registry",
35 "namespace": "config",
36 "compact": false,
37 "flagsPosition": -1,
38 "fields": [
39 {
40 "name": "db",
41 "required": true,
42 "type": "fixed32",
43 "version": 1
44 },
45 {
46 "name": "reserved",
47 "required": true,
48 "type": "fixed32",
49 "version": 1
50 },
51 {
52 "name": "blobs",
53 "required": true,
54 "type": "fixed32",
55 "version": 1
56 },
57 {
58 "name": "rpc",
59 "required": true,
60 "array": true,
61 "type": "fixed32",
62 "version": 1
63 }
64 ]
65 },
66 {
67 "name": "services",
68 "namespace": "config",
69 "compact": false,
70 "flagsPosition": 0,
71 "fields": [
72 {
73 "name": "userRegistries",
74 "array": true,
75 "type": "@config/user-registry",
76 "version": 1
77 },
78 {
79 "name": "blindPeers",
80 "array": true,
81 "type": "fixed32",
82 "version": 1
83 },
84 {
85 "name": "blindRelays",
86 "array": true,
87 "type": "fixed32",
88 "version": 1
89 },
90 {
91 "name": "gatekeepers",
92 "array": true,
93 "type": "fixed32",
94 "version": 1
95 },
96 {
97 "name": "discovery",
98 "array": true,
99 "type": "fixed32",
100 "version": 1
101 },
102 {
103 "name": "feedback",
104 "type": "fixed32",
105 "version": 1
106 }
107 ]
108 },
109 {
110 "name": "rooms",
111 "namespace": "config",
112 "compact": false,
113 "flagsPosition": 0,
114 "fields": [
115 {
116 "name": "disabled",
117 "array": true,
118 "type": "fixed32",
119 "version": 1
120 },
121 {
122 "name": "verified",
123 "array": true,
124 "type": "fixed32",
125 "version": 6
126 }
127 ]
128 },
129 {
130 "name": "keet-config",
131 "namespace": "config",
132 "compact": false,
133 "flagsPosition": 1,
134 "fields": [
135 {
136 "name": "versions",
137 "required": true,
138 "type": "@config/versions",
139 "version": 1
140 },
141 {
142 "name": "services",
143 "type": "@config/services",
144 "version": 1
145 },
146 {
147 "name": "rooms",
148 "type": "@config/rooms",
149 "version": 1
150 },
151 {
152 "name": "profile",
153 "type": "@config/profile",
154 "version": 2
155 },
156 {
157 "name": "debug",
158 "type": "@config/debug",
159 "version": 5
160 }
161 ]
162 },
163 {
164 "name": "profile",
165 "namespace": "config",
166 "compact": false,
167 "flagsPosition": 0,
168 "fields": [
169 {
170 "name": "disableUnreadSync",
171 "type": "bool",
172 "version": 2
173 }
174 ]
175 },
176 {
177 "name": "semver",
178 "namespace": "config",
179 "compact": false,
180 "flagsPosition": -1,
181 "fields": [
182 {
183 "name": "major",
184 "required": true,
185 "type": "uint",
186 "version": 4
187 },
188 {
189 "name": "minor",
190 "required": true,
191 "type": "uint",
192 "version": 4
193 },
194 {
195 "name": "patch",
196 "required": true,
197 "type": "uint",
198 "version": 4
199 }
200 ]
201 },
202 {
203 "name": "debug",
204 "namespace": "config",
205 "compact": false,
206 "flagsPosition": 0,
207 "fields": [
208 {
209 "name": "unlockHash",
210 "type": "fixed32",
211 "version": 5
212 }
213 ]
214 }
215 ]
216}
@holepunchto/keet-core/schema/spec/contract/hyperdb/db.json +1404 -0
……@@ -0,0 +1,1404 @@
1{
2 "version": 5,
3 "offset": 0,
4 "schema": [
5 {
6 "name": "system-digest",
7 "namespace": "keet",
8 "id": 0,
9 "type": 1,
10 "version": 0,
11 "versionField": null,
12 "indexes": [],
13 "schema": "@keet/system-digest",
14 "derived": false,
15 "key": [],
16 "trigger": null
17 },
18 {
19 "name": "blind-peers",
20 "namespace": "keet",
21 "id": 1,
22 "type": 1,
23 "version": 0,
24 "versionField": null,
25 "indexes": [],
26 "schema": "@keet/blind-peer",
27 "derived": false,
28 "key": [
29 "key"
30 ],
31 "trigger": null
32 },
33 {
34 "name": "room-config",
35 "namespace": "keet",
36 "id": 2,
37 "type": 1,
38 "version": 0,
39 "versionField": null,
40 "indexes": [],
41 "schema": "@keet/room-config",
42 "derived": false,
43 "key": [],
44 "trigger": null
45 },
46 {
47 "name": "room-capabilities",
48 "namespace": "keet",
49 "id": 3,
50 "type": 1,
51 "version": 0,
52 "versionField": null,
53 "indexes": [],
54 "schema": "@keet/room-seed",
55 "derived": false,
56 "key": [],
57 "trigger": null
58 },
59 {
60 "name": "join-requests",
61 "namespace": "keet",
62 "id": 4,
63 "type": 1,
64 "version": 0,
65 "versionField": null,
66 "indexes": [],
67 "schema": "@keet/join-request",
68 "derived": false,
69 "key": [
70 "deviceKey"
71 ],
72 "trigger": null
73 },
74 {
75 "name": "devices",
76 "namespace": "keet",
77 "id": 5,
78 "type": 1,
79 "version": 0,
80 "versionField": null,
81 "indexes": [
82 "@keet/devices-by-member-key",
83 "@keet/devices-by-swarm-key",
84 "@keet/active-devices-by-member-key",
85 "@keet/active-devices"
86 ],
87 "schema": "@keet/device",
88 "derived": false,
89 "key": [
90 "key"
91 ],
92 "trigger": "devicesTrigger"
93 },
94 {
95 "name": "devices-by-member-key",
96 "namespace": "keet",
97 "id": 6,
98 "type": 2,
99 "version": 0,
100 "collection": "@keet/devices",
101 "unique": false,
102 "deprecated": false,
103 "key": [
104 "memberKey"
105 ]
106 },
107 {
108 "name": "devices-by-swarm-key",
109 "namespace": "keet",
110 "id": 7,
111 "type": 2,
112 "version": 0,
113 "collection": "@keet/devices",
114 "unique": true,
115 "deprecated": false,
116 "key": [
117 "profile.swarmKey"
118 ]
119 },
120 {
121 "name": "active-devices-by-member-key",
122 "namespace": "keet",
123 "id": 8,
124 "type": 2,
125 "version": 0,
126 "collection": "@keet/devices",
127 "unique": false,
128 "deprecated": false,
129 "key": {
130 "type": {
131 "fields": [
132 {
133 "name": "memberKey",
134 "type": "@keet/member-key"
135 }
136 ]
137 },
138 "map": "activeDevicesByMemberKeyMap"
139 }
140 },
141 {
142 "name": "active-devices",
143 "namespace": "keet",
144 "id": 9,
145 "type": 2,
146 "version": 0,
147 "collection": "@keet/devices",
148 "unique": true,
149 "deprecated": false,
150 "key": {
151 "type": {
152 "fields": [
153 {
154 "name": "key",
155 "type": "@keet/device-key"
156 }
157 ]
158 },
159 "map": "activeDevicesMap"
160 }
161 },
162 {
163 "name": "member-proofs",
164 "namespace": "keet",
165 "id": 10,
166 "type": 1,
167 "version": 0,
168 "versionField": null,
169 "indexes": [],
170 "schema": "@keet/member-proofs",
171 "derived": false,
172 "key": [
173 "key"
174 ],
175 "trigger": null
176 },
177 {
178 "name": "members",
179 "namespace": "keet",
180 "id": 11,
181 "type": 1,
182 "version": 0,
183 "versionField": null,
184 "indexes": [
185 "@keet/moderators",
186 "@keet/admins",
187 "@keet/active-members",
188 "@keet/muted-members",
189 "@keet/members-by-member-name"
190 ],
191 "schema": "@keet/member",
192 "derived": false,
193 "key": [
194 "key"
195 ],
196 "trigger": "membersTrigger"
197 },
198 {
199 "name": "moderators",
200 "namespace": "keet",
201 "id": 12,
202 "type": 2,
203 "version": 0,
204 "collection": "@keet/members",
205 "unique": true,
206 "deprecated": false,
207 "key": {
208 "type": {
209 "fields": [
210 {
211 "name": "key",
212 "type": "@keet/member-key"
213 }
214 ]
215 },
216 "map": "moderatorsMap"
217 }
218 },
219 {
220 "name": "admins",
221 "namespace": "keet",
222 "id": 13,
223 "type": 2,
224 "version": 0,
225 "collection": "@keet/members",
226 "unique": true,
227 "deprecated": false,
228 "key": {
229 "type": {
230 "fields": [
231 {
232 "name": "key",
233 "type": "@keet/member-key"
234 }
235 ]
236 },
237 "map": "adminsMap"
238 }
239 },
240 {
241 "name": "active-members",
242 "namespace": "keet",
243 "id": 14,
244 "type": 2,
245 "version": 0,
246 "collection": "@keet/members",
247 "unique": true,
248 "deprecated": false,
249 "key": {
250 "type": {
251 "fields": [
252 {
253 "name": "key",
254 "type": "@keet/member-key"
255 }
256 ]
257 },
258 "map": "activeMembersMap"
259 }
260 },
261 {
262 "name": "muted-members",
263 "namespace": "keet",
264 "id": 15,
265 "type": 2,
266 "version": 0,
267 "collection": "@keet/members",
268 "unique": true,
269 "deprecated": false,
270 "key": {
271 "type": {
272 "fields": [
273 {
274 "name": "key",
275 "type": "@keet/member-key"
276 }
277 ]
278 },
279 "map": "mutedMembersMap"
280 }
281 },
282 {
283 "name": "members-by-member-name",
284 "namespace": "keet",
285 "id": 16,
286 "type": 2,
287 "version": 0,
288 "collection": "@keet/members",
289 "unique": false,
290 "deprecated": false,
291 "key": {
292 "type": {
293 "fields": [
294 {
295 "name": "name",
296 "type": "string"
297 }
298 ]
299 },
300 "map": "membersByMemberNameMap"
301 }
302 },
303 {
304 "name": "member-activity",
305 "namespace": "keet",
306 "id": 17,
307 "type": 1,
308 "version": 0,
309 "versionField": null,
310 "indexes": [],
311 "schema": "@keet/member-activity",
312 "derived": false,
313 "key": [
314 "key"
315 ],
316 "trigger": null
317 },
318 {
319 "name": "invitations",
320 "namespace": "keet",
321 "id": 18,
322 "type": 1,
323 "version": 0,
324 "versionField": null,
325 "indexes": [],
326 "schema": "@keet/invitation",
327 "derived": false,
328 "key": [
329 "id"
330 ],
331 "trigger": null
332 },
333 {
334 "name": "threads",
335 "namespace": "keet",
336 "id": 19,
337 "type": 1,
338 "version": 0,
339 "versionField": null,
340 "indexes": [
341 "@keet/threads-by-parent"
342 ],
343 "schema": "@keet/thread",
344 "derived": false,
345 "key": [
346 "id"
347 ],
348 "trigger": null
349 },
350 {
351 "name": "threads-by-parent",
352 "namespace": "keet",
353 "id": 20,
354 "type": 2,
355 "version": 0,
356 "collection": "@keet/threads",
357 "unique": true,
358 "deprecated": false,
359 "key": {
360 "type": {
361 "fields": [
362 {
363 "name": "key",
364 "type": "@keet/member-key"
365 },
366 {
367 "name": "seq",
368 "type": "uint"
369 }
370 ]
371 },
372 "map": "threadsByParentMap"
373 }
374 },
375 {
376 "name": "chat",
377 "namespace": "keet",
378 "id": 21,
379 "type": 1,
380 "version": 0,
381 "versionField": null,
382 "indexes": [
383 "@keet/chat-by-message-id",
384 "@keet/chat-mentions-by-member-id",
385 "@keet/pinned-chat-messages"
386 ],
387 "schema": "@keet/chat-message-record",
388 "derived": false,
389 "key": [
390 "id.thread",
391 "id.index"
392 ],
393 "trigger": "chatTrigger"
394 },
395 {
396 "name": "chat-by-message-id",
397 "namespace": "keet",
398 "id": 22,
399 "type": 2,
400 "version": 0,
401 "collection": "@keet/chat",
402 "unique": true,
403 "deprecated": false,
404 "key": [
405 "oplog.key",
406 "oplog.seq"
407 ]
408 },
409 {
410 "name": "chat-mentions-by-member-id",
411 "namespace": "keet",
412 "id": 23,
413 "type": 2,
414 "version": 0,
415 "collection": "@keet/chat",
416 "unique": false,
417 "deprecated": false,
418 "key": {
419 "type": {
420 "fields": [
421 {
422 "name": "key",
423 "type": "@keet/member-key"
424 },
425 {
426 "name": "clock",
427 "type": "uint"
428 }
429 ]
430 },
431 "map": "chatMentionsByMemberIdMap"
432 }
433 },
434 {
435 "name": "pinned-chat-messages",
436 "namespace": "keet",
437 "id": 24,
438 "type": 2,
439 "version": 0,
440 "collection": "@keet/chat",
441 "unique": false,
442 "deprecated": false,
443 "key": {
444 "type": {
445 "fields": [
446 {
447 "name": "thread",
448 "type": "uint"
449 },
450 {
451 "name": "index",
452 "type": "uint"
453 }
454 ]
455 },
456 "map": "pinnedChatMessagesMap"
457 }
458 },
459 {
460 "name": "reaction-digests",
461 "namespace": "keet",
462 "id": 25,
463 "type": 1,
464 "version": 0,
465 "versionField": null,
466 "indexes": [],
467 "schema": "@keet/reactions-digest",
468 "derived": false,
469 "key": [
470 "id.thread",
471 "id.index"
472 ],
473 "trigger": null
474 },
475 {
476 "name": "reactions",
477 "namespace": "keet",
478 "id": 26,
479 "type": 1,
480 "version": 0,
481 "versionField": null,
482 "indexes": [
483 "@keet/reactions-by-clock"
484 ],
485 "schema": "@keet/reaction",
486 "derived": false,
487 "key": [
488 "id.thread",
489 "id.index",
490 "sender",
491 "reaction"
492 ],
493 "trigger": "reactionsTrigger"
494 },
495 {
496 "name": "reactions-by-clock",
497 "namespace": "keet",
498 "id": 27,
499 "type": 2,
500 "version": 0,
501 "collection": "@keet/reactions",
502 "unique": false,
503 "deprecated": false,
504 "key": [
505 "id.thread",
506 "id.index",
507 "reaction",
508 "clock",
509 "sender"
510 ]
511 },
512 {
513 "name": "files",
514 "namespace": "keet",
515 "id": 28,
516 "type": 1,
517 "version": 1,
518 "versionField": "version",
519 "indexes": [
520 "@keet/files-by-message-id",
521 "@keet/files-by-type",
522 "@keet/deleted-files",
523 "@keet/files-by-major-type",
524 "@keet/active-files"
525 ],
526 "schema": "@keet/file-record",
527 "derived": false,
528 "key": [
529 "id"
530 ],
531 "trigger": "filesTrigger"
532 },
533 {
534 "name": "files-by-message-id",
535 "namespace": "keet",
536 "id": 29,
537 "type": 2,
538 "version": 0,
539 "collection": "@keet/files",
540 "unique": false,
541 "deprecated": false,
542 "key": [
543 "oplog.key",
544 "oplog.seq"
545 ]
546 },
547 {
548 "name": "files-by-type",
549 "namespace": "keet",
550 "id": 30,
551 "type": 2,
552 "version": 0,
553 "collection": "@keet/files",
554 "unique": false,
555 "deprecated": true,
556 "key": {
557 "type": {
558 "fields": [
559 {
560 "name": "type",
561 "type": "string"
562 },
563 {
564 "name": "id",
565 "type": "uint"
566 }
567 ]
568 },
569 "map": "filesByTypeMap"
570 }
571 },
572 {
573 "name": "deleted-files",
574 "namespace": "keet",
575 "id": 31,
576 "type": 2,
577 "version": 0,
578 "collection": "@keet/files",
579 "unique": false,
580 "deprecated": true,
581 "key": {
582 "type": {
583 "fields": [
584 {
585 "name": "id",
586 "type": "uint"
587 }
588 ]
589 },
590 "map": "deletedFilesMap"
591 }
592 },
593 {
594 "name": "identity",
595 "namespace": "keet-private-id",
596 "id": 32,
597 "type": 1,
598 "version": 0,
599 "versionField": null,
600 "indexes": [],
601 "schema": "@keet/room-identity",
602 "derived": false,
603 "key": [],
604 "trigger": null
605 },
606 {
607 "name": "stats",
608 "namespace": "keet-private-id",
609 "id": 33,
610 "type": 1,
611 "version": 0,
612 "versionField": null,
613 "indexes": [],
614 "schema": "@keet-private-id/stats",
615 "derived": false,
616 "key": [],
617 "trigger": null
618 },
619 {
620 "name": "counters",
621 "namespace": "keet-private-id",
622 "id": 34,
623 "type": 1,
624 "version": 0,
625 "versionField": null,
626 "indexes": [],
627 "schema": "@keet-private-id/counters",
628 "derived": false,
629 "key": [],
630 "trigger": null
631 },
632 {
633 "name": "pending-invitations",
634 "namespace": "keet-private-id",
635 "id": 35,
636 "type": 1,
637 "version": 0,
638 "versionField": null,
639 "indexes": [],
640 "schema": "@keet-private-id/pending-invitation",
641 "derived": false,
642 "key": [
643 "id"
644 ],
645 "trigger": null
646 },
647 {
648 "name": "rooms",
649 "namespace": "keet-private-id",
650 "id": 36,
651 "type": 1,
652 "version": 0,
653 "versionField": null,
654 "indexes": [
655 "@keet-private-id/rooms-by-clock",
656 "@keet-private-id/rooms-by-contact"
657 ],
658 "schema": "@keet-private-id/room",
659 "derived": false,
660 "key": [
661 "roomKey"
662 ],
663 "trigger": "roomsTrigger"
664 },
665 {
666 "name": "rooms-by-clock",
667 "namespace": "keet-private-id",
668 "id": 37,
669 "type": 2,
670 "version": 0,
671 "collection": "@keet-private-id/rooms",
672 "unique": false,
673 "deprecated": false,
674 "key": [
675 "clock"
676 ]
677 },
678 {
679 "name": "contacts",
680 "namespace": "keet-private-id",
681 "id": 38,
682 "type": 1,
683 "version": 0,
684 "versionField": null,
685 "indexes": [
686 "@keet-private-id/contacts-by-clock"
687 ],
688 "schema": "@keet-private-id/contact-record",
689 "derived": false,
690 "key": [
691 "memberKey"
692 ],
693 "trigger": "contactsTrigger"
694 },
695 {
696 "name": "contacts-by-clock",
697 "namespace": "keet-private-id",
698 "id": 39,
699 "type": 2,
700 "version": 0,
701 "collection": "@keet-private-id/contacts",
702 "unique": false,
703 "deprecated": false,
704 "key": [
705 "clock"
706 ]
707 },
708 {
709 "name": "contact-requests",
710 "namespace": "keet-private-id",
711 "id": 40,
712 "type": 1,
713 "version": 0,
714 "versionField": null,
715 "indexes": [
716 "@keet-private-id/contact-requests-by-clock",
717 "@keet-private-id/pending-contact-requests",
718 "@keet-private-id/accepted-contact-requests",
719 "@keet-private-id/rejected-contact-requests",
720 "@keet-private-id/discarded-contact-requests"
721 ],
722 "schema": "@keet-private-id/contact-request-record",
723 "derived": false,
724 "key": [
725 "memberKey"
726 ],
727 "trigger": "contactRequestsTrigger"
728 },
729 {
730 "name": "contact-requests-by-clock",
731 "namespace": "keet-private-id",
732 "id": 41,
733 "type": 2,
734 "version": 0,
735 "collection": "@keet-private-id/contact-requests",
736 "unique": false,
737 "deprecated": false,
738 "key": [
739 "clock"
740 ]
741 },
742 {
743 "name": "pending-contact-requests",
744 "namespace": "keet-private-id",
745 "id": 42,
746 "type": 2,
747 "version": 0,
748 "collection": "@keet-private-id/contact-requests",
749 "unique": false,
750 "deprecated": false,
751 "key": {
752 "type": {
753 "fields": [
754 {
755 "name": "clock",
756 "type": "uint"
757 }
758 ]
759 },
760 "map": "pendingContactRequestsMap"
761 }
762 },
763 {
764 "name": "accepted-contact-requests",
765 "namespace": "keet-private-id",
766 "id": 43,
767 "type": 2,
768 "version": 0,
769 "collection": "@keet-private-id/contact-requests",
770 "unique": false,
771 "deprecated": false,
772 "key": {
773 "type": {
774 "fields": [
775 {
776 "name": "clock",
777 "type": "uint"
778 }
779 ]
780 },
781 "map": "acceptedContactRequestsMap"
782 }
783 },
784 {
785 "name": "rejected-contact-requests",
786 "namespace": "keet-private-id",
787 "id": 44,
788 "type": 2,
789 "version": 0,
790 "collection": "@keet-private-id/contact-requests",
791 "unique": false,
792 "deprecated": false,
793 "key": {
794 "type": {
795 "fields": [
796 {
797 "name": "clock",
798 "type": "uint"
799 }
800 ]
801 },
802 "map": "rejectedContactRequestsMap"
803 }
804 },
805 {
806 "name": "discarded-contact-requests",
807 "namespace": "keet-private-id",
808 "id": 45,
809 "type": 2,
810 "version": 0,
811 "collection": "@keet-private-id/contact-requests",
812 "unique": false,
813 "deprecated": false,
814 "key": {
815 "type": {
816 "fields": [
817 {
818 "name": "clock",
819 "type": "uint"
820 }
821 ]
822 },
823 "map": "discardedContactRequestsMap"
824 }
825 },
826 {
827 "name": "test-collection-1",
828 "namespace": "keet",
829 "id": 46,
830 "type": 1,
831 "version": 0,
832 "versionField": null,
833 "indexes": [],
834 "schema": "@keet/test-collection-record-1",
835 "derived": false,
836 "key": [
837 "key"
838 ],
839 "trigger": null
840 },
841 {
842 "name": "files-by-major-type",
843 "namespace": "keet",
844 "id": 47,
845 "type": 2,
846 "version": 1,
847 "collection": "@keet/files",
848 "unique": false,
849 "deprecated": false,
850 "key": {
851 "type": {
852 "fields": [
853 {
854 "name": "type",
855 "type": "string"
856 },
857 {
858 "name": "id",
859 "type": "uint"
860 }
861 ]
862 },
863 "map": "filesByMajorTypeMap"
864 }
865 },
866 {
867 "name": "active-files",
868 "namespace": "keet",
869 "id": 48,
870 "type": 2,
871 "version": 1,
872 "collection": "@keet/files",
873 "unique": false,
874 "deprecated": false,
875 "key": {
876 "type": {
877 "fields": [
878 {
879 "name": "id",
880 "type": "uint"
881 }
882 ]
883 },
884 "map": "activeFilesMap"
885 }
886 },
887 {
888 "name": "rooms-by-contact",
889 "namespace": "keet-private-id",
890 "id": 49,
891 "type": 2,
892 "version": 0,
893 "collection": "@keet-private-id/rooms",
894 "unique": false,
895 "deprecated": false,
896 "key": {
897 "type": {
898 "fields": [
899 {
900 "name": "contact",
901 "type": "@keet/member-key"
902 }
903 ]
904 },
905 "map": "roomsByContactMap"
906 }
907 },
908 {
909 "name": "device-identities",
910 "namespace": "keet-private-id",
911 "id": 50,
912 "type": 1,
913 "version": 0,
914 "versionField": null,
915 "indexes": [],
916 "schema": "@keet/device-identity",
917 "derived": false,
918 "key": [
919 "deviceKey"
920 ],
921 "trigger": null
922 },
923 {
924 "name": "contact-requests-v2",
925 "namespace": "keet-private-id",
926 "id": 51,
927 "type": 1,
928 "version": 0,
929 "versionField": null,
930 "indexes": [
931 "@keet-private-id/contact-requests-by-member",
932 "@keet-private-id/contact-requests-by-clock-v2",
933 "@keet-private-id/pending-contact-requests-v2",
934 "@keet-private-id/pending-contact-requests-by-member",
935 "@keet-private-id/accepted-contact-requests-v2",
936 "@keet-private-id/rejected-contact-requests-v2",
937 "@keet-private-id/discarded-contact-requests-v2"
938 ],
939 "schema": "@keet-private-id/contact-request-record",
940 "derived": false,
941 "key": [
942 "memberKey",
943 "keys.key"
944 ],
945 "trigger": "contactRequestsTrigger"
946 },
947 {
948 "name": "contact-requests-by-member",
949 "namespace": "keet-private-id",
950 "id": 52,
951 "type": 2,
952 "version": 0,
953 "collection": "@keet-private-id/contact-requests-v2",
954 "unique": false,
955 "deprecated": false,
956 "key": [
957 "memberKey"
958 ]
959 },
960 {
961 "name": "contact-requests-by-clock-v2",
962 "namespace": "keet-private-id",
963 "id": 53,
964 "type": 2,
965 "version": 0,
966 "collection": "@keet-private-id/contact-requests-v2",
967 "unique": false,
968 "deprecated": false,
969 "key": [
970 "clock"
971 ]
972 },
973 {
974 "name": "pending-contact-requests-v2",
975 "namespace": "keet-private-id",
976 "id": 54,
977 "type": 2,
978 "version": 0,
979 "collection": "@keet-private-id/contact-requests-v2",
980 "unique": false,
981 "deprecated": false,
982 "key": {
983 "type": {
984 "fields": [
985 {
986 "name": "clock",
987 "type": "uint"
988 }
989 ]
990 },
991 "map": "pendingContactRequestsMap"
992 }
993 },
994 {
995 "name": "pending-contact-requests-by-member",
996 "namespace": "keet-private-id",
997 "id": 55,
998 "type": 2,
999 "version": 0,
1000 "collection": "@keet-private-id/contact-requests-v2",
1001 "unique": false,
1002 "deprecated": false,
1003 "key": {
1004 "type": {
1005 "fields": [
1006 {
1007 "name": "memberKey",
1008 "type": "@keet/member-key"
1009 }
1010 ]
1011 },
1012 "map": "pendingContactRequestsByMemberMap"
1013 }
1014 },
1015 {
1016 "name": "accepted-contact-requests-v2",
1017 "namespace": "keet-private-id",
1018 "id": 56,
1019 "type": 2,
1020 "version": 0,
1021 "collection": "@keet-private-id/contact-requests-v2",
1022 "unique": false,
1023 "deprecated": false,
1024 "key": {
1025 "type": {
1026 "fields": [
1027 {
1028 "name": "clock",
1029 "type": "uint"
1030 }
1031 ]
1032 },
1033 "map": "acceptedContactRequestsMap"
1034 }
1035 },
1036 {
1037 "name": "rejected-contact-requests-v2",
1038 "namespace": "keet-private-id",
1039 "id": 57,
1040 "type": 2,
1041 "version": 0,
1042 "collection": "@keet-private-id/contact-requests-v2",
1043 "unique": false,
1044 "deprecated": false,
1045 "key": {
1046 "type": {
1047 "fields": [
1048 {
1049 "name": "clock",
1050 "type": "uint"
1051 }
1052 ]
1053 },
1054 "map": "rejectedContactRequestsMap"
1055 }
1056 },
1057 {
1058 "name": "discarded-contact-requests-v2",
1059 "namespace": "keet-private-id",
1060 "id": 58,
1061 "type": 2,
1062 "version": 0,
1063 "collection": "@keet-private-id/contact-requests-v2",
1064 "unique": false,
1065 "deprecated": false,
1066 "key": {
1067 "type": {
1068 "fields": [
1069 {
1070 "name": "clock",
1071 "type": "uint"
1072 }
1073 ]
1074 },
1075 "map": "discardedContactRequestsMap"
1076 }
1077 },
1078 {
1079 "name": "unreads",
1080 "namespace": "keet-private-id",
1081 "id": 59,
1082 "type": 1,
1083 "version": 0,
1084 "versionField": null,
1085 "indexes": [],
1086 "schema": "@keet-private-id/unreads",
1087 "derived": false,
1088 "key": [
1089 "deviceKey"
1090 ],
1091 "trigger": null
1092 },
1093 {
1094 "name": "chat-labels",
1095 "namespace": "keet",
1096 "id": 60,
1097 "type": 1,
1098 "version": 0,
1099 "versionField": null,
1100 "indexes": [],
1101 "schema": "@keet/chat-label",
1102 "derived": false,
1103 "key": [
1104 "id.thread",
1105 "id.index",
1106 "sender",
1107 "label"
1108 ],
1109 "trigger": "chatLabelTrigger"
1110 },
1111 {
1112 "name": "chat-label-digests",
1113 "namespace": "keet",
1114 "id": 61,
1115 "type": 1,
1116 "version": 2,
1117 "versionField": "version",
1118 "indexes": [
1119 "@keet/chat-label-digests-by-clock"
1120 ],
1121 "schema": "@keet/chat-label-digest",
1122 "derived": false,
1123 "key": [
1124 "id.thread",
1125 "id.index"
1126 ],
1127 "trigger": null
1128 },
1129 {
1130 "name": "read-lengths",
1131 "namespace": "keet",
1132 "id": 62,
1133 "type": 1,
1134 "version": 0,
1135 "versionField": null,
1136 "indexes": [],
1137 "schema": "@keet/read-length",
1138 "derived": false,
1139 "key": [
1140 "memberKey"
1141 ],
1142 "trigger": null
1143 },
1144 {
1145 "name": "tmp-removed-members",
1146 "namespace": "keet",
1147 "id": 63,
1148 "type": 1,
1149 "version": 0,
1150 "versionField": null,
1151 "indexes": [],
1152 "schema": "@keet/tmp-removed-member",
1153 "derived": false,
1154 "key": [
1155 "key"
1156 ],
1157 "trigger": null
1158 },
1159 {
1160 "name": "settings",
1161 "namespace": "keet-private-id",
1162 "id": 64,
1163 "type": 1,
1164 "version": 0,
1165 "versionField": null,
1166 "indexes": [],
1167 "schema": "@keet-private-id/settings",
1168 "derived": false,
1169 "key": [],
1170 "trigger": null
1171 },
1172 {
1173 "name": "chat-label-digests-by-clock",
1174 "namespace": "keet",
1175 "id": 65,
1176 "type": 2,
1177 "version": 2,
1178 "collection": "@keet/chat-label-digests",
1179 "unique": false,
1180 "deprecated": false,
1181 "key": {
1182 "type": {
1183 "fields": [
1184 {
1185 "name": "label",
1186 "type": "@keet/label-type"
1187 },
1188 {
1189 "name": "clock",
1190 "type": "uint"
1191 }
1192 ]
1193 },
1194 "map": "chatLabelDigestFlagMap"
1195 }
1196 },
1197 {
1198 "name": "member-labels",
1199 "namespace": "keet",
1200 "id": 66,
1201 "type": 1,
1202 "version": 3,
1203 "versionField": null,
1204 "indexes": [],
1205 "schema": "@keet/member-label",
1206 "derived": false,
1207 "key": [
1208 "key",
1209 "sender",
1210 "label"
1211 ],
1212 "trigger": null
1213 },
1214 {
1215 "name": "member-label-digests",
1216 "namespace": "keet",
1217 "id": 67,
1218 "type": 1,
1219 "version": 3,
1220 "versionField": null,
1221 "indexes": [
1222 "@keet/member-label-digests-by-clock"
1223 ],
1224 "schema": "@keet/member-label-digest",
1225 "derived": false,
1226 "key": [
1227 "key"
1228 ],
1229 "trigger": null
1230 },
1231 {
1232 "name": "member-label-digests-by-clock",
1233 "namespace": "keet",
1234 "id": 68,
1235 "type": 2,
1236 "version": 3,
1237 "collection": "@keet/member-label-digests",
1238 "unique": false,
1239 "deprecated": false,
1240 "key": {
1241 "type": {
1242 "fields": [
1243 {
1244 "name": "label",
1245 "type": "@keet/member-label-type"
1246 },
1247 {
1248 "name": "clock",
1249 "type": "uint"
1250 }
1251 ]
1252 },
1253 "map": "memberLabelDigestFlagMap"
1254 }
1255 },
1256 {
1257 "name": "calls",
1258 "namespace": "keet",
1259 "id": 69,
1260 "type": 1,
1261 "version": 4,
1262 "versionField": null,
1263 "indexes": [
1264 "@keet/calls-by-timestamp",
1265 "@keet/active-calls-by-timestamp"
1266 ],
1267 "schema": "@keet/call-record",
1268 "derived": false,
1269 "key": [
1270 "callKey"
1271 ],
1272 "trigger": null
1273 },
1274 {
1275 "name": "calls-by-timestamp",
1276 "namespace": "keet",
1277 "id": 70,
1278 "type": 2,
1279 "version": 4,
1280 "collection": "@keet/calls",
1281 "unique": false,
1282 "deprecated": false,
1283 "key": [
1284 "createdAt"
1285 ]
1286 },
1287 {
1288 "name": "active-calls-by-timestamp",
1289 "namespace": "keet",
1290 "id": 71,
1291 "type": 2,
1292 "version": 4,
1293 "collection": "@keet/calls",
1294 "unique": false,
1295 "deprecated": false,
1296 "key": {
1297 "type": {
1298 "fields": [
1299 {
1300 "name": "createdAt",
1301 "type": "uint"
1302 }
1303 ]
1304 },
1305 "map": "activeCallsMap"
1306 }
1307 },
1308 {
1309 "name": "call-members",
1310 "namespace": "keet",
1311 "id": 72,
1312 "type": 1,
1313 "version": 4,
1314 "versionField": null,
1315 "indexes": [],
1316 "schema": "@keet/call-member-record",
1317 "derived": false,
1318 "key": [
1319 "callKey",
1320 "memberKey"
1321 ],
1322 "trigger": null
1323 },
1324 {
1325 "name": "call-devices",
1326 "namespace": "keet",
1327 "id": 73,
1328 "type": 1,
1329 "version": 4,
1330 "versionField": null,
1331 "indexes": [
1332 "@keet/call-devices-by-member-key"
1333 ],
1334 "schema": "@keet/call-device-record",
1335 "derived": false,
1336 "key": [
1337 "callKey",
1338 "deviceKey"
1339 ],
1340 "trigger": null
1341 },
1342 {
1343 "name": "call-devices-by-member-key",
1344 "namespace": "keet",
1345 "id": 74,
1346 "type": 2,
1347 "version": 4,
1348 "collection": "@keet/call-devices",
1349 "unique": false,
1350 "deprecated": false,
1351 "key": [
1352 "callKey",
1353 "memberKey"
1354 ]
1355 },
1356 {
1357 "name": "call-streams",
1358 "namespace": "keet",
1359 "id": 75,
1360 "type": 1,
1361 "version": 4,
1362 "versionField": null,
1363 "indexes": [
1364 "@keet/call-streams-by-device-key"
1365 ],
1366 "schema": "@keet/call-stream-record",
1367 "derived": false,
1368 "key": [
1369 "callKey",
1370 "streamKey"
1371 ],
1372 "trigger": null
1373 },
1374 {
1375 "name": "call-streams-by-device-key",
1376 "namespace": "keet",
1377 "id": 76,
1378 "type": 2,
1379 "version": 4,
1380 "collection": "@keet/call-streams",
1381 "unique": false,
1382 "deprecated": false,
1383 "key": [
1384 "callKey",
1385 "deviceKey"
1386 ]
1387 },
1388 {
1389 "name": "unreads-v2",
1390 "namespace": "keet-private-id",
1391 "id": 77,
1392 "type": 1,
1393 "version": 5,
1394 "versionField": null,
1395 "indexes": [],
1396 "schema": "@keet-private-id/unreads",
1397 "derived": false,
1398 "key": [
1399 "deviceKey"
1400 ],
1401 "trigger": null
1402 }
1403 ]
1404}
@holepunchto/keet-core/schema/spec/contract/hyperdb/index.js +1 -0
……@@ -0,0 +1 @@
1const{IndexEncoder:e,c:n,b4a:t}=require("hyperdb/runtime"),{version:c,getEncoding:o,setVersion:r}=require("./messages.js"),d={schema:c,db:5},l=require("../../../../lib/core/hyperdb/contract/keet.js"),s=require("../../../../lib/core/hyperdb/contract/keet-private-id.js"),u=new e([],{prefix:0});function i(e){return[]}const a=o("@keet/system-digest");function f(e,n,t){r(e);const c={start:0,end:t.byteLength,buffer:t};return a.decode(c)}function g(e){return{}}const y={name:"@keet/system-digest",id:0,version:0,encodeKey:e=>u.encode([]),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>u.encodeRange({gt:e?i(e):null,lt:n?i(n):null,gte:t?i(t):null,lte:c?i(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return a.preencode(o,c),o.buffer=t.allocUnsafe(o.end),a.encode(o,c),o.buffer},trigger:null,reconstruct:f,reconstructKey:g,indexes:[],decodedVersion:0},b=new e([e.BUFFER],{prefix:1});function p(e){const n=e.key;return void 0===n?[]:[n]}const K=o("@keet/blind-peer/hyperdb#1");function v(e,n,t){const c=b.decode(n);r(e);const o={start:0,end:t.byteLength,buffer:t},d=K.decode(o);return d.key=c[0],d}function m(e){return{key:b.decode(e)[0]}}const h={name:"@keet/blind-peers",id:1,version:0,encodeKey(e){const n=[e.key];return b.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>b.encodeRange({gt:e?p(e):null,lt:n?p(n):null,gte:t?p(t):null,lte:c?p(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return K.preencode(o,c),o.buffer=t.allocUnsafe(o.end),K.encode(o,c),o.buffer},trigger:null,reconstruct:v,reconstructKey:m,indexes:[],decodedVersion:0},k=new e([],{prefix:2});function x(e){return[]}const R=o("@keet/room-config");function U(e,n,t){r(e);const c={start:0,end:t.byteLength,buffer:t};return R.decode(c)}function F(e){return{}}const w={name:"@keet/room-config",id:2,version:0,encodeKey:e=>k.encode([]),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>k.encodeRange({gt:e?x(e):null,lt:n?x(n):null,gte:t?x(t):null,lte:c?x(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return R.preencode(o,c),o.buffer=t.allocUnsafe(o.end),R.encode(o,c),o.buffer},trigger:null,reconstruct:U,reconstructKey:F,indexes:[],decodedVersion:0},V=new e([],{prefix:3});function I(e){return[]}const E=o("@keet/room-seed");function B(e,n,t){r(e);const c={start:0,end:t.byteLength,buffer:t};return E.decode(c)}function T(e){return{}}const N={name:"@keet/room-capabilities",id:3,version:0,encodeKey:e=>V.encode([]),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>V.encodeRange({gt:e?I(e):null,lt:n?I(n):null,gte:t?I(t):null,lte:c?I(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return E.preencode(o,c),o.buffer=t.allocUnsafe(o.end),E.encode(o,c),o.buffer},trigger:null,reconstruct:B,reconstructKey:T,indexes:[],decodedVersion:0},q=new e([e.BUFFER],{prefix:4});function L(e){const n=e.deviceKey;return void 0===n?[]:[n]}const M=o("@keet/join-request/hyperdb#4");function A(e,n,t){const c=q.decode(n);r(e);const o={start:0,end:t.byteLength,buffer:t},d=M.decode(o);return d.deviceKey=c[0],d}function j(e){return{deviceKey:q.decode(e)[0]}}const C={name:"@keet/join-requests",id:4,version:0,encodeKey(e){const n=[e.deviceKey];return q.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>q.encodeRange({gt:e?L(e):null,lt:n?L(n):null,gte:t?L(t):null,lte:c?L(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return M.preencode(o,c),o.buffer=t.allocUnsafe(o.end),M.encode(o,c),o.buffer},trigger:null,reconstruct:A,reconstructKey:j,indexes:[],decodedVersion:0},G=new e([e.BUFFER],{prefix:5});function S(e){const n=e.key;return void 0===n?[]:[n]}const D=o("@keet/device/hyperdb#5"),P=l.devicesTrigger;function z(e,n,t){const c=G.decode(n);r(e);const o={start:0,end:t.byteLength,buffer:t},d=D.decode(o);return d.key=c[0],d}function H(e){return{key:G.decode(e)[0]}}const J={name:"@keet/devices",id:5,version:0,encodeKey(e){const n=[e.key];return G.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>G.encodeRange({gt:e?S(e):null,lt:n?S(n):null,gte:t?S(t):null,lte:c?S(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return D.preencode(o,c),o.buffer=t.allocUnsafe(o.end),D.encode(o,c),o.buffer},trigger:P,reconstruct:z,reconstructKey:H,indexes:[],decodedVersion:0},O=new e([e.BUFFER,e.BUFFER],{prefix:6});function Q(e){const n=[],t=e.memberKey;if(void 0===t)return n;n.push(t);const c=e.key;return void 0===c||n.push(c),n}const W={name:"@keet/devices-by-member-key",version:0,id:6,encodeKey:e=>O.encode(Q(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>O.encodeRange({gt:e?Q(e):null,lt:n?Q(n):null,gte:t?Q(t):null,lte:c?Q(c):null}),encodeValue:e=>W.collection.encodeKey(e),encodeIndexKeys:(e,n)=>[O.encode([e.memberKey,e.key])],reconstruct:(e,n)=>n,offset:J.indexes.length,collection:J};J.indexes.push(W);const X=new e([e.BUFFER],{prefix:7});function Y(e){const n=e.profile?.swarmKey;return void 0===n?[]:[n]}const Z={name:"@keet/devices-by-swarm-key",version:0,id:7,encodeKey:e=>X.encode(Y(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>X.encodeRange({gt:e?Y(e):null,lt:n?Y(n):null,gte:t?Y(t):null,lte:c?Y(c):null}),encodeValue:e=>Z.collection.encodeKey(e),encodeIndexKeys:(e,n)=>[X.encode([e.profile.swarmKey])],reconstruct:(e,n)=>n,offset:J.indexes.length,collection:J};J.indexes.push(Z);const $=new e([e.BUFFER,e.BUFFER],{prefix:8}),_=l.activeDevicesByMemberKeyMap;function ee(e){const n=e.memberKey;return void 0===n?[]:[n]}const ne={name:"@keet/active-devices-by-member-key",version:0,id:8,encodeKey:e=>$.encode(ee(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>$.encodeRange({gt:e?ee(e):null,lt:n?ee(n):null,gte:t?ee(t):null,lte:c?ee(c):null}),encodeValue:e=>ne.collection.encodeKey(e),encodeIndexKeys(e,n){const t=_(e,n),c=new Array(t.length);for(let n=0;n<t.length;n++){const o=t[n];c[n]=$.encode([o.memberKey,e.key])}return c},reconstruct:(e,n)=>n,offset:J.indexes.length,collection:J};J.indexes.push(ne);const te=new e([e.BUFFER],{prefix:9}),ce=l.activeDevicesMap;function oe(e){const n=e.key;return void 0===n?[]:[n]}const re={name:"@keet/active-devices",version:0,id:9,encodeKey:e=>te.encode(oe(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>te.encodeRange({gt:e?oe(e):null,lt:n?oe(n):null,gte:t?oe(t):null,lte:c?oe(c):null}),encodeValue:e=>re.collection.encodeKey(e),encodeIndexKeys(e,n){const t=ce(e,n),c=new Array(t.length);for(let e=0;e<t.length;e++){const n=t[e];c[e]=te.encode([n.key])}return c},reconstruct:(e,n)=>n,offset:J.indexes.length,collection:J};J.indexes.push(re);const de=new e([e.BUFFER],{prefix:10});function le(e){const n=e.key;return void 0===n?[]:[n]}const se=o("@keet/member-proofs/hyperdb#10");function ue(e,n,t){const c=de.decode(n);r(e);const o={start:0,end:t.byteLength,buffer:t},d=se.decode(o);return d.key=c[0],d}function ie(e){return{key:de.decode(e)[0]}}const ae={name:"@keet/member-proofs",id:10,version:0,encodeKey(e){const n=[e.key];return de.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>de.encodeRange({gt:e?le(e):null,lt:n?le(n):null,gte:t?le(t):null,lte:c?le(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return se.preencode(o,c),o.buffer=t.allocUnsafe(o.end),se.encode(o,c),o.buffer},trigger:null,reconstruct:ue,reconstructKey:ie,indexes:[],decodedVersion:0},fe=new e([e.BUFFER],{prefix:11});function ge(e){const n=e.key;return void 0===n?[]:[n]}const ye=o("@keet/member/hyperdb#11"),be=l.membersTrigger;function pe(e,n,t){const c=fe.decode(n);r(e);const o={start:0,end:t.byteLength,buffer:t},d=ye.decode(o);return d.key=c[0],d}function Ke(e){return{key:fe.decode(e)[0]}}const ve={name:"@keet/members",id:11,version:0,encodeKey(e){const n=[e.key];return fe.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>fe.encodeRange({gt:e?ge(e):null,lt:n?ge(n):null,gte:t?ge(t):null,lte:c?ge(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return ye.preencode(o,c),o.buffer=t.allocUnsafe(o.end),ye.encode(o,c),o.buffer},trigger:be,reconstruct:pe,reconstructKey:Ke,indexes:[],decodedVersion:0},me=new e([e.BUFFER],{prefix:12}),he=l.moderatorsMap;function ke(e){const n=e.key;return void 0===n?[]:[n]}const xe={name:"@keet/moderators",version:0,id:12,encodeKey:e=>me.encode(ke(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>me.encodeRange({gt:e?ke(e):null,lt:n?ke(n):null,gte:t?ke(t):null,lte:c?ke(c):null}),encodeValue:e=>xe.collection.encodeKey(e),encodeIndexKeys(e,n){const t=he(e,n),c=new Array(t.length);for(let e=0;e<t.length;e++){const n=t[e];c[e]=me.encode([n.key])}return c},reconstruct:(e,n)=>n,offset:ve.indexes.length,collection:ve};ve.indexes.push(xe);const Re=new e([e.BUFFER],{prefix:13}),Ue=l.adminsMap;function Fe(e){const n=e.key;return void 0===n?[]:[n]}const we={name:"@keet/admins",version:0,id:13,encodeKey:e=>Re.encode(Fe(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Re.encodeRange({gt:e?Fe(e):null,lt:n?Fe(n):null,gte:t?Fe(t):null,lte:c?Fe(c):null}),encodeValue:e=>we.collection.encodeKey(e),encodeIndexKeys(e,n){const t=Ue(e,n),c=new Array(t.length);for(let e=0;e<t.length;e++){const n=t[e];c[e]=Re.encode([n.key])}return c},reconstruct:(e,n)=>n,offset:ve.indexes.length,collection:ve};ve.indexes.push(we);const Ve=new e([e.BUFFER],{prefix:14}),Ie=l.activeMembersMap;function Ee(e){const n=e.key;return void 0===n?[]:[n]}const Be={name:"@keet/active-members",version:0,id:14,encodeKey:e=>Ve.encode(Ee(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Ve.encodeRange({gt:e?Ee(e):null,lt:n?Ee(n):null,gte:t?Ee(t):null,lte:c?Ee(c):null}),encodeValue:e=>Be.collection.encodeKey(e),encodeIndexKeys(e,n){const t=Ie(e,n),c=new Array(t.length);for(let e=0;e<t.length;e++){const n=t[e];c[e]=Ve.encode([n.key])}return c},reconstruct:(e,n)=>n,offset:ve.indexes.length,collection:ve};ve.indexes.push(Be);const Te=new e([e.BUFFER],{prefix:15}),Ne=l.mutedMembersMap;function qe(e){const n=e.key;return void 0===n?[]:[n]}const Le={name:"@keet/muted-members",version:0,id:15,encodeKey:e=>Te.encode(qe(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Te.encodeRange({gt:e?qe(e):null,lt:n?qe(n):null,gte:t?qe(t):null,lte:c?qe(c):null}),encodeValue:e=>Le.collection.encodeKey(e),encodeIndexKeys(e,n){const t=Ne(e,n),c=new Array(t.length);for(let e=0;e<t.length;e++){const n=t[e];c[e]=Te.encode([n.key])}return c},reconstruct:(e,n)=>n,offset:ve.indexes.length,collection:ve};ve.indexes.push(Le);const Me=new e([e.STRING,e.BUFFER],{prefix:16}),Ae=l.membersByMemberNameMap;function je(e){const n=e.name;return void 0===n?[]:[n]}const Ce={name:"@keet/members-by-member-name",version:0,id:16,encodeKey:e=>Me.encode(je(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Me.encodeRange({gt:e?je(e):null,lt:n?je(n):null,gte:t?je(t):null,lte:c?je(c):null}),encodeValue:e=>Ce.collection.encodeKey(e),encodeIndexKeys(e,n){const t=Ae(e,n),c=new Array(t.length);for(let n=0;n<t.length;n++){const o=t[n];c[n]=Me.encode([o.name,e.key])}return c},reconstruct:(e,n)=>n,offset:ve.indexes.length,collection:ve};ve.indexes.push(Ce);const Ge=new e([e.BUFFER],{prefix:17});function Se(e){const n=e.key;return void 0===n?[]:[n]}const De=o("@keet/member-activity/hyperdb#17");function Pe(e,n,t){const c=Ge.decode(n);r(e);const o={start:0,end:t.byteLength,buffer:t},d=De.decode(o);return d.key=c[0],d}function ze(e){return{key:Ge.decode(e)[0]}}const He={name:"@keet/member-activity",id:17,version:0,encodeKey(e){const n=[e.key];return Ge.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Ge.encodeRange({gt:e?Se(e):null,lt:n?Se(n):null,gte:t?Se(t):null,lte:c?Se(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return De.preencode(o,c),o.buffer=t.allocUnsafe(o.end),De.encode(o,c),o.buffer},trigger:null,reconstruct:Pe,reconstructKey:ze,indexes:[],decodedVersion:0},Je=new e([e.BUFFER],{prefix:18});function Oe(e){const n=e.id;return void 0===n?[]:[n]}const Qe=o("@keet/invitation/hyperdb#18");function We(e,n,t){const c=Je.decode(n);r(e);const o={start:0,end:t.byteLength,buffer:t},d=Qe.decode(o);return d.id=c[0],d}function Xe(e){return{id:Je.decode(e)[0]}}const Ye={name:"@keet/invitations",id:18,version:0,encodeKey(e){const n=[e.id];return Je.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Je.encodeRange({gt:e?Oe(e):null,lt:n?Oe(n):null,gte:t?Oe(t):null,lte:c?Oe(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return Qe.preencode(o,c),o.buffer=t.allocUnsafe(o.end),Qe.encode(o,c),o.buffer},trigger:null,reconstruct:We,reconstructKey:Xe,indexes:[],decodedVersion:0},Ze=new e([e.UINT],{prefix:19});function $e(e){const n=e.id;return void 0===n?[]:[n]}const _e=o("@keet/thread/hyperdb#19");function en(e,n,t){const c=Ze.decode(n);r(e);const o={start:0,end:t.byteLength,buffer:t},d=_e.decode(o);return d.id=c[0],d}function nn(e){return{id:Ze.decode(e)[0]}}const tn={name:"@keet/threads",id:19,version:0,encodeKey(e){const n=[e.id];return Ze.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Ze.encodeRange({gt:e?$e(e):null,lt:n?$e(n):null,gte:t?$e(t):null,lte:c?$e(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return _e.preencode(o,c),o.buffer=t.allocUnsafe(o.end),_e.encode(o,c),o.buffer},trigger:null,reconstruct:en,reconstructKey:nn,indexes:[],decodedVersion:0},cn=new e([e.BUFFER,e.UINT],{prefix:20}),on=l.threadsByParentMap;function rn(e){const n=[],t=e.key;if(void 0===t)return n;n.push(t);const c=e.seq;return void 0===c||n.push(c),n}const dn={name:"@keet/threads-by-parent",version:0,id:20,encodeKey:e=>cn.encode(rn(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>cn.encodeRange({gt:e?rn(e):null,lt:n?rn(n):null,gte:t?rn(t):null,lte:c?rn(c):null}),encodeValue:e=>dn.collection.encodeKey(e),encodeIndexKeys(e,n){const t=on(e,n),c=new Array(t.length);for(let e=0;e<t.length;e++){const n=t[e];c[e]=cn.encode([n.key,n.seq])}return c},reconstruct:(e,n)=>n,offset:tn.indexes.length,collection:tn};tn.indexes.push(dn);const ln=new e([e.UINT,e.UINT],{prefix:21});function sn(e){const n=[],t=e.id?.thread;if(void 0===t)return n;n.push(t);const c=e.id?.index;return void 0===c||n.push(c),n}const un=o("@keet/chat-message-record/hyperdb#21"),an=l.chatTrigger;function fn(e,n,t){const c=ln.decode(n);r(e);const o={start:0,end:t.byteLength,buffer:t},d=un.decode(o);return d.id.thread=c[0],d.id.index=c[1],d}function gn(e){return{id:{index:ln.decode(e)[1]}}}const yn={name:"@keet/chat",id:21,version:0,encodeKey(e){const n=[e.id.thread,e.id.index];return ln.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>ln.encodeRange({gt:e?sn(e):null,lt:n?sn(n):null,gte:t?sn(t):null,lte:c?sn(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return un.preencode(o,c),o.buffer=t.allocUnsafe(o.end),un.encode(o,c),o.buffer},trigger:an,reconstruct:fn,reconstructKey:gn,indexes:[],decodedVersion:0},bn=new e([e.BUFFER,e.UINT],{prefix:22});function pn(e){const n=[],t=e.oplog?.key;if(void 0===t)return n;n.push(t);const c=e.oplog?.seq;return void 0===c||n.push(c),n}const Kn={name:"@keet/chat-by-message-id",version:0,id:22,encodeKey:e=>bn.encode(pn(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>bn.encodeRange({gt:e?pn(e):null,lt:n?pn(n):null,gte:t?pn(t):null,lte:c?pn(c):null}),encodeValue:e=>Kn.collection.encodeKey(e),encodeIndexKeys:(e,n)=>[bn.encode([e.oplog.key,e.oplog.seq])],reconstruct:(e,n)=>n,offset:yn.indexes.length,collection:yn};yn.indexes.push(Kn);const vn=new e([e.BUFFER,e.UINT,e.UINT,e.UINT],{prefix:23}),mn=l.chatMentionsByMemberIdMap;function hn(e){const n=[],t=e.key;if(void 0===t)return n;n.push(t);const c=e.clock;return void 0===c||n.push(c),n}const kn={name:"@keet/chat-mentions-by-member-id",version:0,id:23,encodeKey:e=>vn.encode(hn(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>vn.encodeRange({gt:e?hn(e):null,lt:n?hn(n):null,gte:t?hn(t):null,lte:c?hn(c):null}),encodeValue:e=>kn.collection.encodeKey(e),encodeIndexKeys(e,n){const t=mn(e,n),c=new Array(t.length);for(let n=0;n<t.length;n++){const o=t[n];c[n]=vn.encode([o.key,o.clock,e.id.thread,e.id.index])}return c},reconstruct:(e,n)=>n,offset:yn.indexes.length,collection:yn};yn.indexes.push(kn);const xn=new e([e.UINT,e.UINT,e.UINT,e.UINT],{prefix:24}),Rn=l.pinnedChatMessagesMap;function Un(e){const n=[],t=e.thread;if(void 0===t)return n;n.push(t);const c=e.index;return void 0===c||n.push(c),n}const Fn={name:"@keet/pinned-chat-messages",version:0,id:24,encodeKey:e=>xn.encode(Un(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>xn.encodeRange({gt:e?Un(e):null,lt:n?Un(n):null,gte:t?Un(t):null,lte:c?Un(c):null}),encodeValue:e=>Fn.collection.encodeKey(e),encodeIndexKeys(e,n){const t=Rn(e,n),c=new Array(t.length);for(let n=0;n<t.length;n++){const o=t[n];c[n]=xn.encode([o.thread,o.index,e.id.thread,e.id.index])}return c},reconstruct:(e,n)=>n,offset:yn.indexes.length,collection:yn};yn.indexes.push(Fn);const wn=new e([e.UINT,e.UINT],{prefix:25});function Vn(e){const n=[],t=e.id?.thread;if(void 0===t)return n;n.push(t);const c=e.id?.index;return void 0===c||n.push(c),n}const In=o("@keet/reactions-digest/hyperdb#25");function En(e,n,t){const c=wn.decode(n);r(e);const o={start:0,end:t.byteLength,buffer:t},d=In.decode(o);return d.id.thread=c[0],d.id.index=c[1],d}function Bn(e){return{id:{index:wn.decode(e)[1]}}}const Tn={name:"@keet/reaction-digests",id:25,version:0,encodeKey(e){const n=[e.id.thread,e.id.index];return wn.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>wn.encodeRange({gt:e?Vn(e):null,lt:n?Vn(n):null,gte:t?Vn(t):null,lte:c?Vn(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return In.preencode(o,c),o.buffer=t.allocUnsafe(o.end),In.encode(o,c),o.buffer},trigger:null,reconstruct:En,reconstructKey:Bn,indexes:[],decodedVersion:0},Nn=new e([e.UINT,e.UINT,e.BUFFER,e.STRING],{prefix:26});function qn(e){const n=[],t=e.id?.thread;if(void 0===t)return n;n.push(t);const c=e.id?.index;if(void 0===c)return n;n.push(c);const o=e.sender;if(void 0===o)return n;n.push(o);const r=e.reaction;return void 0===r||n.push(r),n}const Ln=o("@keet/reaction/hyperdb#26"),Mn=l.reactionsTrigger;function An(e,n,t){const c=Nn.decode(n);r(e);const o={start:0,end:t.byteLength,buffer:t},d=Ln.decode(o);return d.id.thread=c[0],d.id.index=c[1],d.sender=c[2],d.reaction=c[3],d}function jn(e){const n=Nn.decode(e);return{id:{index:n[1]},sender:n[2],reaction:n[3]}}const Cn={name:"@keet/reactions",id:26,version:0,encodeKey(e){const n=[e.id.thread,e.id.index,e.sender,e.reaction];return Nn.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Nn.encodeRange({gt:e?qn(e):null,lt:n?qn(n):null,gte:t?qn(t):null,lte:c?qn(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return Ln.preencode(o,c),o.buffer=t.allocUnsafe(o.end),Ln.encode(o,c),o.buffer},trigger:Mn,reconstruct:An,reconstructKey:jn,indexes:[],decodedVersion:0},Gn=new e([e.UINT,e.UINT,e.STRING,e.UINT,e.BUFFER,e.UINT,e.UINT,e.BUFFER,e.STRING],{prefix:27});function Sn(e){const n=[],t=e.id?.thread;if(void 0===t)return n;n.push(t);const c=e.id?.index;if(void 0===c)return n;n.push(c);const o=e.reaction;if(void 0===o)return n;n.push(o);const r=e.clock;if(void 0===r)return n;n.push(r);const d=e.sender;if(void 0===d)return n;n.push(d);const l=e.id?.thread;if(void 0===l)return n;n.push(l);const s=e.id?.index;if(void 0===s)return n;n.push(s);const u=e.sender;if(void 0===u)return n;n.push(u);const i=e.reaction;return void 0===i||n.push(i),n}const Dn={name:"@keet/reactions-by-clock",version:0,id:27,encodeKey:e=>Gn.encode(Sn(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Gn.encodeRange({gt:e?Sn(e):null,lt:n?Sn(n):null,gte:t?Sn(t):null,lte:c?Sn(c):null}),encodeValue:e=>Dn.collection.encodeKey(e),encodeIndexKeys:(e,n)=>[Gn.encode([e.id.thread,e.id.index,e.reaction,e.clock,e.sender,e.id.thread,e.id.index,e.sender,e.reaction])],reconstruct:(e,n)=>n,offset:Cn.indexes.length,collection:Cn};Cn.indexes.push(Dn);const Pn=new e([e.UINT],{prefix:28});function zn(e){const n=e.id;return void 0===n?[]:[n]}const Hn=o("@keet/file-record/hyperdb#28"),Jn=l.filesTrigger;function On(e,n,t){const c=Pn.decode(n);r(e);const o={start:0,end:t.byteLength,buffer:t},d=Hn.decode(o);return d.id=c[0],Wn.decodedVersion=d.version,d}function Qn(e){return{id:Pn.decode(e)[0]}}const Wn={name:"@keet/files",id:28,version:1,encodeKey(e){const n=[e.id];return Pn.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Pn.encodeRange({gt:e?zn(e):null,lt:n?zn(n):null,gte:t?zn(t):null,lte:c?zn(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return c.version=n,Hn.preencode(o,c),o.buffer=t.allocUnsafe(o.end),Hn.encode(o,c),o.buffer},trigger:Jn,reconstruct:On,reconstructKey:Qn,indexes:[],decodedVersion:0},Xn=new e([e.BUFFER,e.UINT,e.UINT],{prefix:29});function Yn(e){const n=[],t=e.oplog?.key;if(void 0===t)return n;n.push(t);const c=e.oplog?.seq;if(void 0===c)return n;n.push(c);const o=e.id;return void 0===o||n.push(o),n}const Zn={name:"@keet/files-by-message-id",version:0,id:29,encodeKey:e=>Xn.encode(Yn(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Xn.encodeRange({gt:e?Yn(e):null,lt:n?Yn(n):null,gte:t?Yn(t):null,lte:c?Yn(c):null}),encodeValue:e=>Zn.collection.encodeKey(e),encodeIndexKeys:(e,n)=>[Xn.encode([e.oplog.key,e.oplog.seq,e.id])],reconstruct:(e,n)=>n,offset:Wn.indexes.length,collection:Wn};Wn.indexes.push(Zn);const $n=new e([e.STRING,e.UINT,e.UINT],{prefix:30}),_n=l.filesByTypeMap;function et(e){const n=[],t=e.type;if(void 0===t)return n;n.push(t);const c=e.id;return void 0===c||n.push(c),n}const nt={name:"@keet/files-by-type",version:0,id:30,encodeKey:e=>$n.encode(et(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>$n.encodeRange({gt:e?et(e):null,lt:n?et(n):null,gte:t?et(t):null,lte:c?et(c):null}),encodeValue:e=>nt.collection.encodeKey(e),encodeIndexKeys(e,n){const t=_n(e,n),c=new Array(t.length);for(let n=0;n<t.length;n++){const o=t[n];c[n]=$n.encode([o.type,o.id,e.id])}return c},reconstruct:(e,n)=>n,offset:-1,collection:Wn},tt=new e([e.UINT,e.UINT],{prefix:31}),ct=l.deletedFilesMap;function ot(e){const n=e.id;return void 0===n?[]:[n]}const rt={name:"@keet/deleted-files",version:0,id:31,encodeKey:e=>tt.encode(ot(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>tt.encodeRange({gt:e?ot(e):null,lt:n?ot(n):null,gte:t?ot(t):null,lte:c?ot(c):null}),encodeValue:e=>rt.collection.encodeKey(e),encodeIndexKeys(e,n){const t=ct(e,n),c=new Array(t.length);for(let n=0;n<t.length;n++){const o=t[n];c[n]=tt.encode([o.id,e.id])}return c},reconstruct:(e,n)=>n,offset:-1,collection:Wn},dt=new e([],{prefix:32});function lt(e){return[]}const st=o("@keet/room-identity");function ut(e,n,t){r(e);const c={start:0,end:t.byteLength,buffer:t};return st.decode(c)}function it(e){return{}}const at={name:"@keet-private-id/identity",id:32,version:0,encodeKey:e=>dt.encode([]),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>dt.encodeRange({gt:e?lt(e):null,lt:n?lt(n):null,gte:t?lt(t):null,lte:c?lt(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return st.preencode(o,c),o.buffer=t.allocUnsafe(o.end),st.encode(o,c),o.buffer},trigger:null,reconstruct:ut,reconstructKey:it,indexes:[],decodedVersion:0},ft=new e([],{prefix:33});function gt(e){return[]}const yt=o("@keet-private-id/stats");function bt(e,n,t){r(e);const c={start:0,end:t.byteLength,buffer:t};return yt.decode(c)}function pt(e){return{}}const Kt={name:"@keet-private-id/stats",id:33,version:0,encodeKey:e=>ft.encode([]),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>ft.encodeRange({gt:e?gt(e):null,lt:n?gt(n):null,gte:t?gt(t):null,lte:c?gt(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return yt.preencode(o,c),o.buffer=t.allocUnsafe(o.end),yt.encode(o,c),o.buffer},trigger:null,reconstruct:bt,reconstructKey:pt,indexes:[],decodedVersion:0},vt=new e([],{prefix:34});function mt(e){return[]}const ht=o("@keet-private-id/counters");function kt(e,n,t){r(e);const c={start:0,end:t.byteLength,buffer:t};return ht.decode(c)}function xt(e){return{}}const Rt={name:"@keet-private-id/counters",id:34,version:0,encodeKey:e=>vt.encode([]),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>vt.encodeRange({gt:e?mt(e):null,lt:n?mt(n):null,gte:t?mt(t):null,lte:c?mt(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return ht.preencode(o,c),o.buffer=t.allocUnsafe(o.end),ht.encode(o,c),o.buffer},trigger:null,reconstruct:kt,reconstructKey:xt,indexes:[],decodedVersion:0},Ut=new e([e.BUFFER],{prefix:35});function Ft(e){const n=e.id;return void 0===n?[]:[n]}const wt=o("@keet-private-id/pending-invitation/hyperdb#35");function Vt(e,n,t){const c=Ut.decode(n);r(e);const o={start:0,end:t.byteLength,buffer:t},d=wt.decode(o);return d.id=c[0],d}function It(e){return{id:Ut.decode(e)[0]}}const Et={name:"@keet-private-id/pending-invitations",id:35,version:0,encodeKey(e){const n=[e.id];return Ut.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Ut.encodeRange({gt:e?Ft(e):null,lt:n?Ft(n):null,gte:t?Ft(t):null,lte:c?Ft(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return wt.preencode(o,c),o.buffer=t.allocUnsafe(o.end),wt.encode(o,c),o.buffer},trigger:null,reconstruct:Vt,reconstructKey:It,indexes:[],decodedVersion:0},Bt=new e([e.BUFFER],{prefix:36});function Tt(e){const n=e.roomKey;return void 0===n?[]:[n]}const Nt=o("@keet-private-id/room/hyperdb#36"),qt=s.roomsTrigger;function Lt(e,n,t){const c=Bt.decode(n);r(e);const o={start:0,end:t.byteLength,buffer:t},d=Nt.decode(o);return d.roomKey=c[0],d}function Mt(e){return{roomKey:Bt.decode(e)[0]}}const At={name:"@keet-private-id/rooms",id:36,version:0,encodeKey(e){const n=[e.roomKey];return Bt.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Bt.encodeRange({gt:e?Tt(e):null,lt:n?Tt(n):null,gte:t?Tt(t):null,lte:c?Tt(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return Nt.preencode(o,c),o.buffer=t.allocUnsafe(o.end),Nt.encode(o,c),o.buffer},trigger:qt,reconstruct:Lt,reconstructKey:Mt,indexes:[],decodedVersion:0},jt=new e([e.UINT,e.BUFFER],{prefix:37});function Ct(e){const n=[],t=e.clock;if(void 0===t)return n;n.push(t);const c=e.roomKey;return void 0===c||n.push(c),n}const Gt={name:"@keet-private-id/rooms-by-clock",version:0,id:37,encodeKey:e=>jt.encode(Ct(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>jt.encodeRange({gt:e?Ct(e):null,lt:n?Ct(n):null,gte:t?Ct(t):null,lte:c?Ct(c):null}),encodeValue:e=>Gt.collection.encodeKey(e),encodeIndexKeys:(e,n)=>[jt.encode([e.clock,e.roomKey])],reconstruct:(e,n)=>n,offset:At.indexes.length,collection:At};At.indexes.push(Gt);const St=new e([e.BUFFER],{prefix:38});function Dt(e){const n=e.memberKey;return void 0===n?[]:[n]}const Pt=o("@keet-private-id/contact-record/hyperdb#38"),zt=s.contactsTrigger;function Ht(e,n,t){const c=St.decode(n);r(e);const o={start:0,end:t.byteLength,buffer:t},d=Pt.decode(o);return d.memberKey=c[0],d}function Jt(e){return{memberKey:St.decode(e)[0]}}const Ot={name:"@keet-private-id/contacts",id:38,version:0,encodeKey(e){const n=[e.memberKey];return St.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>St.encodeRange({gt:e?Dt(e):null,lt:n?Dt(n):null,gte:t?Dt(t):null,lte:c?Dt(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return Pt.preencode(o,c),o.buffer=t.allocUnsafe(o.end),Pt.encode(o,c),o.buffer},trigger:zt,reconstruct:Ht,reconstructKey:Jt,indexes:[],decodedVersion:0},Qt=new e([e.UINT,e.BUFFER],{prefix:39});function Wt(e){const n=[],t=e.clock;if(void 0===t)return n;n.push(t);const c=e.memberKey;return void 0===c||n.push(c),n}const Xt={name:"@keet-private-id/contacts-by-clock",version:0,id:39,encodeKey:e=>Qt.encode(Wt(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Qt.encodeRange({gt:e?Wt(e):null,lt:n?Wt(n):null,gte:t?Wt(t):null,lte:c?Wt(c):null}),encodeValue:e=>Xt.collection.encodeKey(e),encodeIndexKeys:(e,n)=>[Qt.encode([e.clock,e.memberKey])],reconstruct:(e,n)=>n,offset:Ot.indexes.length,collection:Ot};Ot.indexes.push(Xt);const Yt=new e([e.BUFFER],{prefix:40});function Zt(e){const n=e.memberKey;return void 0===n?[]:[n]}const $t=o("@keet-private-id/contact-request-record/hyperdb#40"),_t=s.contactRequestsTrigger;function ec(e,n,t){const c=Yt.decode(n);r(e);const o={start:0,end:t.byteLength,buffer:t},d=$t.decode(o);return d.memberKey=c[0],d}function nc(e){return{memberKey:Yt.decode(e)[0]}}const tc={name:"@keet-private-id/contact-requests",id:40,version:0,encodeKey(e){const n=[e.memberKey];return Yt.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Yt.encodeRange({gt:e?Zt(e):null,lt:n?Zt(n):null,gte:t?Zt(t):null,lte:c?Zt(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return $t.preencode(o,c),o.buffer=t.allocUnsafe(o.end),$t.encode(o,c),o.buffer},trigger:_t,reconstruct:ec,reconstructKey:nc,indexes:[],decodedVersion:0},cc=new e([e.UINT,e.BUFFER],{prefix:41});function oc(e){const n=[],t=e.clock;if(void 0===t)return n;n.push(t);const c=e.memberKey;return void 0===c||n.push(c),n}const rc={name:"@keet-private-id/contact-requests-by-clock",version:0,id:41,encodeKey:e=>cc.encode(oc(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>cc.encodeRange({gt:e?oc(e):null,lt:n?oc(n):null,gte:t?oc(t):null,lte:c?oc(c):null}),encodeValue:e=>rc.collection.encodeKey(e),encodeIndexKeys:(e,n)=>[cc.encode([e.clock,e.memberKey])],reconstruct:(e,n)=>n,offset:tc.indexes.length,collection:tc};tc.indexes.push(rc);const dc=new e([e.UINT,e.BUFFER],{prefix:42}),lc=s.pendingContactRequestsMap;function sc(e){const n=e.clock;return void 0===n?[]:[n]}const uc={name:"@keet-private-id/pending-contact-requests",version:0,id:42,encodeKey:e=>dc.encode(sc(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>dc.encodeRange({gt:e?sc(e):null,lt:n?sc(n):null,gte:t?sc(t):null,lte:c?sc(c):null}),encodeValue:e=>uc.collection.encodeKey(e),encodeIndexKeys(e,n){const t=lc(e,n),c=new Array(t.length);for(let n=0;n<t.length;n++){const o=t[n];c[n]=dc.encode([o.clock,e.memberKey])}return c},reconstruct:(e,n)=>n,offset:tc.indexes.length,collection:tc};tc.indexes.push(uc);const ic=new e([e.UINT,e.BUFFER],{prefix:43}),ac=s.acceptedContactRequestsMap;function fc(e){const n=e.clock;return void 0===n?[]:[n]}const gc={name:"@keet-private-id/accepted-contact-requests",version:0,id:43,encodeKey:e=>ic.encode(fc(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>ic.encodeRange({gt:e?fc(e):null,lt:n?fc(n):null,gte:t?fc(t):null,lte:c?fc(c):null}),encodeValue:e=>gc.collection.encodeKey(e),encodeIndexKeys(e,n){const t=ac(e,n),c=new Array(t.length);for(let n=0;n<t.length;n++){const o=t[n];c[n]=ic.encode([o.clock,e.memberKey])}return c},reconstruct:(e,n)=>n,offset:tc.indexes.length,collection:tc};tc.indexes.push(gc);const yc=new e([e.UINT,e.BUFFER],{prefix:44}),bc=s.rejectedContactRequestsMap;function pc(e){const n=e.clock;return void 0===n?[]:[n]}const Kc={name:"@keet-private-id/rejected-contact-requests",version:0,id:44,encodeKey:e=>yc.encode(pc(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>yc.encodeRange({gt:e?pc(e):null,lt:n?pc(n):null,gte:t?pc(t):null,lte:c?pc(c):null}),encodeValue:e=>Kc.collection.encodeKey(e),encodeIndexKeys(e,n){const t=bc(e,n),c=new Array(t.length);for(let n=0;n<t.length;n++){const o=t[n];c[n]=yc.encode([o.clock,e.memberKey])}return c},reconstruct:(e,n)=>n,offset:tc.indexes.length,collection:tc};tc.indexes.push(Kc);const vc=new e([e.UINT,e.BUFFER],{prefix:45}),mc=s.discardedContactRequestsMap;function hc(e){const n=e.clock;return void 0===n?[]:[n]}const kc={name:"@keet-private-id/discarded-contact-requests",version:0,id:45,encodeKey:e=>vc.encode(hc(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>vc.encodeRange({gt:e?hc(e):null,lt:n?hc(n):null,gte:t?hc(t):null,lte:c?hc(c):null}),encodeValue:e=>kc.collection.encodeKey(e),encodeIndexKeys(e,n){const t=mc(e,n),c=new Array(t.length);for(let n=0;n<t.length;n++){const o=t[n];c[n]=vc.encode([o.clock,e.memberKey])}return c},reconstruct:(e,n)=>n,offset:tc.indexes.length,collection:tc};tc.indexes.push(kc);const xc=new e([e.UINT],{prefix:46});function Rc(e){const n=e.key;return void 0===n?[]:[n]}const Uc=o("@keet/test-collection-record-1/hyperdb#46");function Fc(e,n,t){const c=xc.decode(n);r(e);const o={start:0,end:t.byteLength,buffer:t},d=Uc.decode(o);return d.key=c[0],d}function wc(e){return{key:xc.decode(e)[0]}}const Vc={name:"@keet/test-collection-1",id:46,version:0,encodeKey(e){const n=[e.key];return xc.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>xc.encodeRange({gt:e?Rc(e):null,lt:n?Rc(n):null,gte:t?Rc(t):null,lte:c?Rc(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return Uc.preencode(o,c),o.buffer=t.allocUnsafe(o.end),Uc.encode(o,c),o.buffer},trigger:null,reconstruct:Fc,reconstructKey:wc,indexes:[],decodedVersion:0},Ic=new e([e.STRING,e.UINT,e.UINT],{prefix:47}),Ec=l.filesByMajorTypeMap;function Bc(e){const n=[],t=e.type;if(void 0===t)return n;n.push(t);const c=e.id;return void 0===c||n.push(c),n}const Tc={name:"@keet/files-by-major-type",version:1,id:47,encodeKey:e=>Ic.encode(Bc(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Ic.encodeRange({gt:e?Bc(e):null,lt:n?Bc(n):null,gte:t?Bc(t):null,lte:c?Bc(c):null}),encodeValue:e=>Tc.collection.encodeKey(e),encodeIndexKeys(e,n){const t=Ec(e,n),c=new Array(t.length);for(let n=0;n<t.length;n++){const o=t[n];c[n]=Ic.encode([o.type,o.id,e.id])}return c},reconstruct:(e,n)=>n,offset:Wn.indexes.length,collection:Wn};Wn.indexes.push(Tc);const Nc=new e([e.UINT,e.UINT],{prefix:48}),qc=l.activeFilesMap;function Lc(e){const n=e.id;return void 0===n?[]:[n]}const Mc={name:"@keet/active-files",version:1,id:48,encodeKey:e=>Nc.encode(Lc(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Nc.encodeRange({gt:e?Lc(e):null,lt:n?Lc(n):null,gte:t?Lc(t):null,lte:c?Lc(c):null}),encodeValue:e=>Mc.collection.encodeKey(e),encodeIndexKeys(e,n){const t=qc(e,n),c=new Array(t.length);for(let n=0;n<t.length;n++){const o=t[n];c[n]=Nc.encode([o.id,e.id])}return c},reconstruct:(e,n)=>n,offset:Wn.indexes.length,collection:Wn};Wn.indexes.push(Mc);const Ac=new e([e.BUFFER,e.BUFFER],{prefix:49}),jc=s.roomsByContactMap;function Cc(e){const n=e.contact;return void 0===n?[]:[n]}const Gc={name:"@keet-private-id/rooms-by-contact",version:0,id:49,encodeKey:e=>Ac.encode(Cc(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Ac.encodeRange({gt:e?Cc(e):null,lt:n?Cc(n):null,gte:t?Cc(t):null,lte:c?Cc(c):null}),encodeValue:e=>Gc.collection.encodeKey(e),encodeIndexKeys(e,n){const t=jc(e,n),c=new Array(t.length);for(let n=0;n<t.length;n++){const o=t[n];c[n]=Ac.encode([o.contact,e.roomKey])}return c},reconstruct:(e,n)=>n,offset:At.indexes.length,collection:At};At.indexes.push(Gc);const Sc=new e([e.BUFFER],{prefix:50});function Dc(e){const n=e.deviceKey;return void 0===n?[]:[n]}const Pc=o("@keet/device-identity/hyperdb#50");function zc(e,n,t){const c=Sc.decode(n);r(e);const o={start:0,end:t.byteLength,buffer:t},d=Pc.decode(o);return d.deviceKey=c[0],d}function Hc(e){return{deviceKey:Sc.decode(e)[0]}}const Jc={name:"@keet-private-id/device-identities",id:50,version:0,encodeKey(e){const n=[e.deviceKey];return Sc.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Sc.encodeRange({gt:e?Dc(e):null,lt:n?Dc(n):null,gte:t?Dc(t):null,lte:c?Dc(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return Pc.preencode(o,c),o.buffer=t.allocUnsafe(o.end),Pc.encode(o,c),o.buffer},trigger:null,reconstruct:zc,reconstructKey:Hc,indexes:[],decodedVersion:0},Oc=new e([e.BUFFER,e.BUFFER],{prefix:51});function Qc(e){const n=[],t=e.memberKey;if(void 0===t)return n;n.push(t);const c=e.keys?.key;return void 0===c||n.push(c),n}const Wc=o("@keet-private-id/contact-request-record/hyperdb#51"),Xc=s.contactRequestsTrigger;function Yc(e,n,t){const c=Oc.decode(n);r(e);const o={start:0,end:t.byteLength,buffer:t},d=Wc.decode(o);return d.memberKey=c[0],d.keys.key=c[1],d}function Zc(e){const n=Oc.decode(e);return{memberKey:n[0],keys:{key:n[1]}}}const $c={name:"@keet-private-id/contact-requests-v2",id:51,version:0,encodeKey(e){const n=[e.memberKey,e.keys.key];return Oc.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Oc.encodeRange({gt:e?Qc(e):null,lt:n?Qc(n):null,gte:t?Qc(t):null,lte:c?Qc(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return Wc.preencode(o,c),o.buffer=t.allocUnsafe(o.end),Wc.encode(o,c),o.buffer},trigger:Xc,reconstruct:Yc,reconstructKey:Zc,indexes:[],decodedVersion:0},_c=new e([e.BUFFER,e.BUFFER,e.BUFFER],{prefix:52});function eo(e){const n=[],t=e.memberKey;if(void 0===t)return n;n.push(t);const c=e.memberKey;if(void 0===c)return n;n.push(c);const o=e.keys?.key;return void 0===o||n.push(o),n}const no={name:"@keet-private-id/contact-requests-by-member",version:0,id:52,encodeKey:e=>_c.encode(eo(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>_c.encodeRange({gt:e?eo(e):null,lt:n?eo(n):null,gte:t?eo(t):null,lte:c?eo(c):null}),encodeValue:e=>no.collection.encodeKey(e),encodeIndexKeys:(e,n)=>[_c.encode([e.memberKey,e.memberKey,e.keys.key])],reconstruct:(e,n)=>n,offset:$c.indexes.length,collection:$c};$c.indexes.push(no);const to=new e([e.UINT,e.BUFFER,e.BUFFER],{prefix:53});function co(e){const n=[],t=e.clock;if(void 0===t)return n;n.push(t);const c=e.memberKey;if(void 0===c)return n;n.push(c);const o=e.keys?.key;return void 0===o||n.push(o),n}const oo={name:"@keet-private-id/contact-requests-by-clock-v2",version:0,id:53,encodeKey:e=>to.encode(co(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>to.encodeRange({gt:e?co(e):null,lt:n?co(n):null,gte:t?co(t):null,lte:c?co(c):null}),encodeValue:e=>oo.collection.encodeKey(e),encodeIndexKeys:(e,n)=>[to.encode([e.clock,e.memberKey,e.keys.key])],reconstruct:(e,n)=>n,offset:$c.indexes.length,collection:$c};$c.indexes.push(oo);const ro=new e([e.UINT,e.BUFFER,e.BUFFER],{prefix:54}),lo=s.pendingContactRequestsMap;function so(e){const n=e.clock;return void 0===n?[]:[n]}const uo={name:"@keet-private-id/pending-contact-requests-v2",version:0,id:54,encodeKey:e=>ro.encode(so(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>ro.encodeRange({gt:e?so(e):null,lt:n?so(n):null,gte:t?so(t):null,lte:c?so(c):null}),encodeValue:e=>uo.collection.encodeKey(e),encodeIndexKeys(e,n){const t=lo(e,n),c=new Array(t.length);for(let n=0;n<t.length;n++){const o=t[n];c[n]=ro.encode([o.clock,e.memberKey,e.keys.key])}return c},reconstruct:(e,n)=>n,offset:$c.indexes.length,collection:$c};$c.indexes.push(uo);const io=new e([e.BUFFER,e.BUFFER,e.BUFFER],{prefix:55}),ao=s.pendingContactRequestsByMemberMap;function fo(e){const n=e.memberKey;return void 0===n?[]:[n]}const go={name:"@keet-private-id/pending-contact-requests-by-member",version:0,id:55,encodeKey:e=>io.encode(fo(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>io.encodeRange({gt:e?fo(e):null,lt:n?fo(n):null,gte:t?fo(t):null,lte:c?fo(c):null}),encodeValue:e=>go.collection.encodeKey(e),encodeIndexKeys(e,n){const t=ao(e,n),c=new Array(t.length);for(let n=0;n<t.length;n++){const o=t[n];c[n]=io.encode([o.memberKey,e.memberKey,e.keys.key])}return c},reconstruct:(e,n)=>n,offset:$c.indexes.length,collection:$c};$c.indexes.push(go);const yo=new e([e.UINT,e.BUFFER,e.BUFFER],{prefix:56}),bo=s.acceptedContactRequestsMap;function po(e){const n=e.clock;return void 0===n?[]:[n]}const Ko={name:"@keet-private-id/accepted-contact-requests-v2",version:0,id:56,encodeKey:e=>yo.encode(po(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>yo.encodeRange({gt:e?po(e):null,lt:n?po(n):null,gte:t?po(t):null,lte:c?po(c):null}),encodeValue:e=>Ko.collection.encodeKey(e),encodeIndexKeys(e,n){const t=bo(e,n),c=new Array(t.length);for(let n=0;n<t.length;n++){const o=t[n];c[n]=yo.encode([o.clock,e.memberKey,e.keys.key])}return c},reconstruct:(e,n)=>n,offset:$c.indexes.length,collection:$c};$c.indexes.push(Ko);const vo=new e([e.UINT,e.BUFFER,e.BUFFER],{prefix:57}),mo=s.rejectedContactRequestsMap;function ho(e){const n=e.clock;return void 0===n?[]:[n]}const ko={name:"@keet-private-id/rejected-contact-requests-v2",version:0,id:57,encodeKey:e=>vo.encode(ho(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>vo.encodeRange({gt:e?ho(e):null,lt:n?ho(n):null,gte:t?ho(t):null,lte:c?ho(c):null}),encodeValue:e=>ko.collection.encodeKey(e),encodeIndexKeys(e,n){const t=mo(e,n),c=new Array(t.length);for(let n=0;n<t.length;n++){const o=t[n];c[n]=vo.encode([o.clock,e.memberKey,e.keys.key])}return c},reconstruct:(e,n)=>n,offset:$c.indexes.length,collection:$c};$c.indexes.push(ko);const xo=new e([e.UINT,e.BUFFER,e.BUFFER],{prefix:58}),Ro=s.discardedContactRequestsMap;function Uo(e){const n=e.clock;return void 0===n?[]:[n]}const Fo={name:"@keet-private-id/discarded-contact-requests-v2",version:0,id:58,encodeKey:e=>xo.encode(Uo(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>xo.encodeRange({gt:e?Uo(e):null,lt:n?Uo(n):null,gte:t?Uo(t):null,lte:c?Uo(c):null}),encodeValue:e=>Fo.collection.encodeKey(e),encodeIndexKeys(e,n){const t=Ro(e,n),c=new Array(t.length);for(let n=0;n<t.length;n++){const o=t[n];c[n]=xo.encode([o.clock,e.memberKey,e.keys.key])}return c},reconstruct:(e,n)=>n,offset:$c.indexes.length,collection:$c};$c.indexes.push(Fo);const wo=new e([e.BUFFER],{prefix:59});function Vo(e){const n=e.deviceKey;return void 0===n?[]:[n]}const Io=o("@keet-private-id/unreads/hyperdb#59");function Eo(e,n,t){const c=wo.decode(n);r(e);const o={start:0,end:t.byteLength,buffer:t},d=Io.decode(o);return d.deviceKey=c[0],d}function Bo(e){return{deviceKey:wo.decode(e)[0]}}const To={name:"@keet-private-id/unreads",id:59,version:0,encodeKey(e){const n=[e.deviceKey];return wo.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>wo.encodeRange({gt:e?Vo(e):null,lt:n?Vo(n):null,gte:t?Vo(t):null,lte:c?Vo(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return Io.preencode(o,c),o.buffer=t.allocUnsafe(o.end),Io.encode(o,c),o.buffer},trigger:null,reconstruct:Eo,reconstructKey:Bo,indexes:[],decodedVersion:0},No=new e([e.UINT,e.UINT,e.BUFFER,e.UINT],{prefix:60});function qo(e){const n=[],t=e.id?.thread;if(void 0===t)return n;n.push(t);const c=e.id?.index;if(void 0===c)return n;n.push(c);const o=e.sender;if(void 0===o)return n;n.push(o);const r=e.label;return void 0===r||n.push(r),n}const Lo=o("@keet/chat-label/hyperdb#60"),Mo=l.chatLabelTrigger;function Ao(e,n,t){const c=No.decode(n);r(e);const o={start:0,end:t.byteLength,buffer:t},d=Lo.decode(o);return d.id.thread=c[0],d.id.index=c[1],d.sender=c[2],d.label=c[3],d}function jo(e){const n=No.decode(e);return{id:{index:n[1]},sender:n[2],label:n[3]}}const Co={name:"@keet/chat-labels",id:60,version:0,encodeKey(e){const n=[e.id.thread,e.id.index,e.sender,e.label];return No.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>No.encodeRange({gt:e?qo(e):null,lt:n?qo(n):null,gte:t?qo(t):null,lte:c?qo(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return Lo.preencode(o,c),o.buffer=t.allocUnsafe(o.end),Lo.encode(o,c),o.buffer},trigger:Mo,reconstruct:Ao,reconstructKey:jo,indexes:[],decodedVersion:0},Go=new e([e.UINT,e.UINT],{prefix:61});function So(e){const n=[],t=e.id?.thread;if(void 0===t)return n;n.push(t);const c=e.id?.index;return void 0===c||n.push(c),n}const Do=o("@keet/chat-label-digest/hyperdb#61");function Po(e,n,t){const c=Go.decode(n);r(e);const o={start:0,end:t.byteLength,buffer:t},d=Do.decode(o);return d.id.thread=c[0],d.id.index=c[1],Ho.decodedVersion=d.version,d}function zo(e){return{id:{index:Go.decode(e)[1]}}}const Ho={name:"@keet/chat-label-digests",id:61,version:2,encodeKey(e){const n=[e.id.thread,e.id.index];return Go.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Go.encodeRange({gt:e?So(e):null,lt:n?So(n):null,gte:t?So(t):null,lte:c?So(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return c.version=n,Do.preencode(o,c),o.buffer=t.allocUnsafe(o.end),Do.encode(o,c),o.buffer},trigger:null,reconstruct:Po,reconstructKey:zo,indexes:[],decodedVersion:0},Jo=new e([e.BUFFER],{prefix:62});function Oo(e){const n=e.memberKey;return void 0===n?[]:[n]}const Qo=o("@keet/read-length/hyperdb#62");function Wo(e,n,t){const c=Jo.decode(n);r(e);const o={start:0,end:t.byteLength,buffer:t},d=Qo.decode(o);return d.memberKey=c[0],d}function Xo(e){return{memberKey:Jo.decode(e)[0]}}const Yo={name:"@keet/read-lengths",id:62,version:0,encodeKey(e){const n=[e.memberKey];return Jo.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Jo.encodeRange({gt:e?Oo(e):null,lt:n?Oo(n):null,gte:t?Oo(t):null,lte:c?Oo(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return Qo.preencode(o,c),o.buffer=t.allocUnsafe(o.end),Qo.encode(o,c),o.buffer},trigger:null,reconstruct:Wo,reconstructKey:Xo,indexes:[],decodedVersion:0},Zo=new e([e.BUFFER],{prefix:63});function $o(e){const n=e.key;return void 0===n?[]:[n]}const _o=o("@keet/tmp-removed-member/hyperdb#63");function er(e,n,t){const c=Zo.decode(n);r(e);const o={start:0,end:t.byteLength,buffer:t},d=_o.decode(o);return d.key=c[0],d}function nr(e){return{key:Zo.decode(e)[0]}}const tr={name:"@keet/tmp-removed-members",id:63,version:0,encodeKey(e){const n=[e.key];return Zo.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Zo.encodeRange({gt:e?$o(e):null,lt:n?$o(n):null,gte:t?$o(t):null,lte:c?$o(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return _o.preencode(o,c),o.buffer=t.allocUnsafe(o.end),_o.encode(o,c),o.buffer},trigger:null,reconstruct:er,reconstructKey:nr,indexes:[],decodedVersion:0},cr=new e([],{prefix:64});function or(e){return[]}const rr=o("@keet-private-id/settings");function dr(e,n,t){r(e);const c={start:0,end:t.byteLength,buffer:t};return rr.decode(c)}function lr(e){return{}}const sr={name:"@keet-private-id/settings",id:64,version:0,encodeKey:e=>cr.encode([]),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>cr.encodeRange({gt:e?or(e):null,lt:n?or(n):null,gte:t?or(t):null,lte:c?or(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:0,buffer:null};return rr.preencode(o,c),o.buffer=t.allocUnsafe(o.end),rr.encode(o,c),o.buffer},trigger:null,reconstruct:dr,reconstructKey:lr,indexes:[],decodedVersion:0},ur=new e([e.UINT,e.UINT,e.UINT,e.UINT],{prefix:65}),ir=l.chatLabelDigestFlagMap;function ar(e){const n=[],t=e.label;if(void 0===t)return n;n.push(t);const c=e.clock;return void 0===c||n.push(c),n}const fr={name:"@keet/chat-label-digests-by-clock",version:2,id:65,encodeKey:e=>ur.encode(ar(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>ur.encodeRange({gt:e?ar(e):null,lt:n?ar(n):null,gte:t?ar(t):null,lte:c?ar(c):null}),encodeValue:e=>fr.collection.encodeKey(e),encodeIndexKeys(e,n){const t=ir(e,n),c=new Array(t.length);for(let n=0;n<t.length;n++){const o=t[n];c[n]=ur.encode([o.label,o.clock,e.id.thread,e.id.index])}return c},reconstruct:(e,n)=>n,offset:Ho.indexes.length,collection:Ho};Ho.indexes.push(fr);const gr=new e([e.BUFFER,e.BUFFER,e.UINT],{prefix:66});function yr(e){const n=[],t=e.key;if(void 0===t)return n;n.push(t);const c=e.sender;if(void 0===c)return n;n.push(c);const o=e.label;return void 0===o||n.push(o),n}const br=o("@keet/member-label/hyperdb#66");function pr(e,t,c){const o=gr.decode(t);r(e);const d={start:0,end:c.byteLength,buffer:c},l=n.uint.decode(d);if(0!==l)throw new Error("Unknown collection type: "+l);vr.decodedVersion=n.uint.decode(d);const s=br.decode(d);return s.key=o[0],s.sender=o[1],s.label=o[2],s}function Kr(e){const n=gr.decode(e);return{key:n[0],sender:n[1],label:n[2]}}const vr={name:"@keet/member-labels",id:66,version:3,encodeKey(e){const n=[e.key,e.sender,e.label];return gr.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>gr.encodeRange({gt:e?yr(e):null,lt:n?yr(n):null,gte:t?yr(t):null,lte:c?yr(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:2,buffer:null};return br.preencode(o,c),o.buffer=t.allocUnsafe(o.end),o.buffer[o.start++]=0,o.buffer[o.start++]=n,br.encode(o,c),o.buffer},trigger:null,reconstruct:pr,reconstructKey:Kr,indexes:[],decodedVersion:0},mr=new e([e.BUFFER],{prefix:67});function hr(e){const n=e.key;return void 0===n?[]:[n]}const kr=o("@keet/member-label-digest/hyperdb#67");function xr(e,t,c){const o=mr.decode(t);r(e);const d={start:0,end:c.byteLength,buffer:c},l=n.uint.decode(d);if(0!==l)throw new Error("Unknown collection type: "+l);Ur.decodedVersion=n.uint.decode(d);const s=kr.decode(d);return s.key=o[0],s}function Rr(e){return{key:mr.decode(e)[0]}}const Ur={name:"@keet/member-label-digests",id:67,version:3,encodeKey(e){const n=[e.key];return mr.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>mr.encodeRange({gt:e?hr(e):null,lt:n?hr(n):null,gte:t?hr(t):null,lte:c?hr(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:2,buffer:null};return kr.preencode(o,c),o.buffer=t.allocUnsafe(o.end),o.buffer[o.start++]=0,o.buffer[o.start++]=n,kr.encode(o,c),o.buffer},trigger:null,reconstruct:xr,reconstructKey:Rr,indexes:[],decodedVersion:0},Fr=new e([e.UINT,e.UINT,e.BUFFER],{prefix:68}),wr=l.memberLabelDigestFlagMap;function Vr(e){const n=[],t=e.label;if(void 0===t)return n;n.push(t);const c=e.clock;return void 0===c||n.push(c),n}const Ir={name:"@keet/member-label-digests-by-clock",version:3,id:68,encodeKey:e=>Fr.encode(Vr(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Fr.encodeRange({gt:e?Vr(e):null,lt:n?Vr(n):null,gte:t?Vr(t):null,lte:c?Vr(c):null}),encodeValue:e=>Ir.collection.encodeKey(e),encodeIndexKeys(e,n){const t=wr(e,n),c=new Array(t.length);for(let n=0;n<t.length;n++){const o=t[n];c[n]=Fr.encode([o.label,o.clock,e.key])}return c},reconstruct:(e,n)=>n,offset:Ur.indexes.length,collection:Ur};Ur.indexes.push(Ir);const Er=new e([e.BUFFER],{prefix:69});function Br(e){const n=e.callKey;return void 0===n?[]:[n]}const Tr=o("@keet/call-record/hyperdb#69");function Nr(e,t,c){const o=Er.decode(t);r(e);const d={start:0,end:c.byteLength,buffer:c},l=n.uint.decode(d);if(0!==l)throw new Error("Unknown collection type: "+l);Lr.decodedVersion=n.uint.decode(d);const s=Tr.decode(d);return s.callKey=o[0],s}function qr(e){return{callKey:Er.decode(e)[0]}}const Lr={name:"@keet/calls",id:69,version:4,encodeKey(e){const n=[e.callKey];return Er.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Er.encodeRange({gt:e?Br(e):null,lt:n?Br(n):null,gte:t?Br(t):null,lte:c?Br(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:2,buffer:null};return Tr.preencode(o,c),o.buffer=t.allocUnsafe(o.end),o.buffer[o.start++]=0,o.buffer[o.start++]=n,Tr.encode(o,c),o.buffer},trigger:null,reconstruct:Nr,reconstructKey:qr,indexes:[],decodedVersion:0},Mr=new e([e.UINT,e.BUFFER],{prefix:70});function Ar(e){const n=[],t=e.createdAt;if(void 0===t)return n;n.push(t);const c=e.callKey;return void 0===c||n.push(c),n}const jr={name:"@keet/calls-by-timestamp",version:4,id:70,encodeKey:e=>Mr.encode(Ar(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Mr.encodeRange({gt:e?Ar(e):null,lt:n?Ar(n):null,gte:t?Ar(t):null,lte:c?Ar(c):null}),encodeValue:e=>jr.collection.encodeKey(e),encodeIndexKeys:(e,n)=>[Mr.encode([e.createdAt,e.callKey])],reconstruct:(e,n)=>n,offset:Lr.indexes.length,collection:Lr};Lr.indexes.push(jr);const Cr=new e([e.UINT,e.BUFFER],{prefix:71}),Gr=l.activeCallsMap;function Sr(e){const n=e.createdAt;return void 0===n?[]:[n]}const Dr={name:"@keet/active-calls-by-timestamp",version:4,id:71,encodeKey:e=>Cr.encode(Sr(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Cr.encodeRange({gt:e?Sr(e):null,lt:n?Sr(n):null,gte:t?Sr(t):null,lte:c?Sr(c):null}),encodeValue:e=>Dr.collection.encodeKey(e),encodeIndexKeys(e,n){const t=Gr(e,n),c=new Array(t.length);for(let n=0;n<t.length;n++){const o=t[n];c[n]=Cr.encode([o.createdAt,e.callKey])}return c},reconstruct:(e,n)=>n,offset:Lr.indexes.length,collection:Lr};Lr.indexes.push(Dr);const Pr=new e([e.BUFFER,e.BUFFER],{prefix:72});function zr(e){const n=[],t=e.callKey;if(void 0===t)return n;n.push(t);const c=e.memberKey;return void 0===c||n.push(c),n}const Hr=o("@keet/call-member-record/hyperdb#72");function Jr(e,t,c){const o=Pr.decode(t);r(e);const d={start:0,end:c.byteLength,buffer:c},l=n.uint.decode(d);if(0!==l)throw new Error("Unknown collection type: "+l);Qr.decodedVersion=n.uint.decode(d);const s=Hr.decode(d);return s.callKey=o[0],s.memberKey=o[1],s}function Or(e){const n=Pr.decode(e);return{callKey:n[0],memberKey:n[1]}}const Qr={name:"@keet/call-members",id:72,version:4,encodeKey(e){const n=[e.callKey,e.memberKey];return Pr.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Pr.encodeRange({gt:e?zr(e):null,lt:n?zr(n):null,gte:t?zr(t):null,lte:c?zr(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:2,buffer:null};return Hr.preencode(o,c),o.buffer=t.allocUnsafe(o.end),o.buffer[o.start++]=0,o.buffer[o.start++]=n,Hr.encode(o,c),o.buffer},trigger:null,reconstruct:Jr,reconstructKey:Or,indexes:[],decodedVersion:0},Wr=new e([e.BUFFER,e.BUFFER],{prefix:73});function Xr(e){const n=[],t=e.callKey;if(void 0===t)return n;n.push(t);const c=e.deviceKey;return void 0===c||n.push(c),n}const Yr=o("@keet/call-device-record/hyperdb#73");function Zr(e,t,c){const o=Wr.decode(t);r(e);const d={start:0,end:c.byteLength,buffer:c},l=n.uint.decode(d);if(0!==l)throw new Error("Unknown collection type: "+l);_r.decodedVersion=n.uint.decode(d);const s=Yr.decode(d);return s.callKey=o[0],s.deviceKey=o[1],s}function $r(e){const n=Wr.decode(e);return{callKey:n[0],deviceKey:n[1]}}const _r={name:"@keet/call-devices",id:73,version:4,encodeKey(e){const n=[e.callKey,e.deviceKey];return Wr.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>Wr.encodeRange({gt:e?Xr(e):null,lt:n?Xr(n):null,gte:t?Xr(t):null,lte:c?Xr(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:2,buffer:null};return Yr.preencode(o,c),o.buffer=t.allocUnsafe(o.end),o.buffer[o.start++]=0,o.buffer[o.start++]=n,Yr.encode(o,c),o.buffer},trigger:null,reconstruct:Zr,reconstructKey:$r,indexes:[],decodedVersion:0},ed=new e([e.BUFFER,e.BUFFER,e.BUFFER,e.BUFFER],{prefix:74});function nd(e){const n=[],t=e.callKey;if(void 0===t)return n;n.push(t);const c=e.memberKey;if(void 0===c)return n;n.push(c);const o=e.callKey;if(void 0===o)return n;n.push(o);const r=e.deviceKey;return void 0===r||n.push(r),n}const td={name:"@keet/call-devices-by-member-key",version:4,id:74,encodeKey:e=>ed.encode(nd(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>ed.encodeRange({gt:e?nd(e):null,lt:n?nd(n):null,gte:t?nd(t):null,lte:c?nd(c):null}),encodeValue:e=>td.collection.encodeKey(e),encodeIndexKeys:(e,n)=>[ed.encode([e.callKey,e.memberKey,e.callKey,e.deviceKey])],reconstruct:(e,n)=>n,offset:_r.indexes.length,collection:_r};_r.indexes.push(td);const cd=new e([e.BUFFER,e.BUFFER],{prefix:75});function od(e){const n=[],t=e.callKey;if(void 0===t)return n;n.push(t);const c=e.streamKey;return void 0===c||n.push(c),n}const rd=o("@keet/call-stream-record/hyperdb#75");function dd(e,t,c){const o=cd.decode(t);r(e);const d={start:0,end:c.byteLength,buffer:c},l=n.uint.decode(d);if(0!==l)throw new Error("Unknown collection type: "+l);sd.decodedVersion=n.uint.decode(d);const s=rd.decode(d);return s.callKey=o[0],s.streamKey=o[1],s}function ld(e){const n=cd.decode(e);return{callKey:n[0],streamKey:n[1]}}const sd={name:"@keet/call-streams",id:75,version:4,encodeKey(e){const n=[e.callKey,e.streamKey];return cd.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>cd.encodeRange({gt:e?od(e):null,lt:n?od(n):null,gte:t?od(t):null,lte:c?od(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:2,buffer:null};return rd.preencode(o,c),o.buffer=t.allocUnsafe(o.end),o.buffer[o.start++]=0,o.buffer[o.start++]=n,rd.encode(o,c),o.buffer},trigger:null,reconstruct:dd,reconstructKey:ld,indexes:[],decodedVersion:0},ud=new e([e.BUFFER,e.BUFFER,e.BUFFER,e.BUFFER],{prefix:76});function id(e){const n=[],t=e.callKey;if(void 0===t)return n;n.push(t);const c=e.deviceKey;if(void 0===c)return n;n.push(c);const o=e.callKey;if(void 0===o)return n;n.push(o);const r=e.streamKey;return void 0===r||n.push(r),n}const ad={name:"@keet/call-streams-by-device-key",version:4,id:76,encodeKey:e=>ud.encode(id(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>ud.encodeRange({gt:e?id(e):null,lt:n?id(n):null,gte:t?id(t):null,lte:c?id(c):null}),encodeValue:e=>ad.collection.encodeKey(e),encodeIndexKeys:(e,n)=>[ud.encode([e.callKey,e.deviceKey,e.callKey,e.streamKey])],reconstruct:(e,n)=>n,offset:sd.indexes.length,collection:sd};sd.indexes.push(ad);const fd=new e([e.BUFFER],{prefix:77});function gd(e){const n=e.deviceKey;return void 0===n?[]:[n]}const yd=o("@keet-private-id/unreads/hyperdb#77");function bd(e,t,c){const o=fd.decode(t);r(e);const d={start:0,end:c.byteLength,buffer:c},l=n.uint.decode(d);if(0!==l)throw new Error("Unknown collection type: "+l);Kd.decodedVersion=n.uint.decode(d);const s=yd.decode(d);return s.deviceKey=o[0],s}function pd(e){return{deviceKey:fd.decode(e)[0]}}const Kd={name:"@keet-private-id/unreads-v2",id:77,version:5,encodeKey(e){const n=[e.deviceKey];return fd.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:c}={})=>fd.encodeRange({gt:e?gd(e):null,lt:n?gd(n):null,gte:t?gd(t):null,lte:c?gd(c):null}),encodeValue(e,n,c){r(e);const o={start:0,end:2,buffer:null};return yd.preencode(o,c),o.buffer=t.allocUnsafe(o.end),o.buffer[o.start++]=0,o.buffer[o.start++]=n,yd.encode(o,c),o.buffer},trigger:null,reconstruct:bd,reconstructKey:pd,indexes:[],decodedVersion:0},vd=[y,h,w,N,C,J,ae,ve,He,Ye,tn,yn,Tn,Cn,Wn,at,Kt,Rt,Et,At,Ot,tc,Vc,Jc,$c,To,Co,Ho,Yo,tr,sr,vr,Ur,Lr,Qr,_r,sd,Kd],md=[W,Z,ne,re,xe,we,Be,Le,Ce,dn,Kn,kn,Fn,Dn,Zn,Gt,Xt,rc,uc,gc,Kc,kc,Tc,Mc,Gc,no,oo,uo,go,Ko,ko,Fo,fr,Ir,jr,Dr,td,ad];function hd(e){switch(e){case"@keet/system-digest":return y;case"@keet/blind-peers":return h;case"@keet/room-config":return w;case"@keet/room-capabilities":return N;case"@keet/join-requests":return C;case"@keet/devices":return J;case"@keet/member-proofs":return ae;case"@keet/members":return ve;case"@keet/member-activity":return He;case"@keet/invitations":return Ye;case"@keet/threads":return tn;case"@keet/chat":return yn;case"@keet/reaction-digests":return Tn;case"@keet/reactions":return Cn;case"@keet/files":return Wn;case"@keet-private-id/identity":return at;case"@keet-private-id/stats":return Kt;case"@keet-private-id/counters":return Rt;case"@keet-private-id/pending-invitations":return Et;case"@keet-private-id/rooms":return At;case"@keet-private-id/contacts":return Ot;case"@keet-private-id/contact-requests":return tc;case"@keet/test-collection-1":return Vc;case"@keet-private-id/device-identities":return Jc;case"@keet-private-id/contact-requests-v2":return $c;case"@keet-private-id/unreads":return To;case"@keet/chat-labels":return Co;case"@keet/chat-label-digests":return Ho;case"@keet/read-lengths":return Yo;case"@keet/tmp-removed-members":return tr;case"@keet-private-id/settings":return sr;case"@keet/member-labels":return vr;case"@keet/member-label-digests":return Ur;case"@keet/calls":return Lr;case"@keet/call-members":return Qr;case"@keet/call-devices":return _r;case"@keet/call-streams":return sd;case"@keet-private-id/unreads-v2":return Kd;default:return null}}function kd(e){switch(e){case"@keet/devices-by-member-key":return W;case"@keet/devices-by-swarm-key":return Z;case"@keet/active-devices-by-member-key":return ne;case"@keet/active-devices":return re;case"@keet/moderators":return xe;case"@keet/admins":return we;case"@keet/active-members":return Be;case"@keet/muted-members":return Le;case"@keet/members-by-member-name":return Ce;case"@keet/threads-by-parent":return dn;case"@keet/chat-by-message-id":return Kn;case"@keet/chat-mentions-by-member-id":return kn;case"@keet/pinned-chat-messages":return Fn;case"@keet/reactions-by-clock":return Dn;case"@keet/files-by-message-id":return Zn;case"@keet/files-by-type":return nt;case"@keet/deleted-files":return rt;case"@keet-private-id/rooms-by-clock":return Gt;case"@keet-private-id/contacts-by-clock":return Xt;case"@keet-private-id/contact-requests-by-clock":return rc;case"@keet-private-id/pending-contact-requests":return uc;case"@keet-private-id/accepted-contact-requests":return gc;case"@keet-private-id/rejected-contact-requests":return Kc;case"@keet-private-id/discarded-contact-requests":return kc;case"@keet/files-by-major-type":return Tc;case"@keet/active-files":return Mc;case"@keet-private-id/rooms-by-contact":return Gc;case"@keet-private-id/contact-requests-by-member":return no;case"@keet-private-id/contact-requests-by-clock-v2":return oo;case"@keet-private-id/pending-contact-requests-v2":return uo;case"@keet-private-id/pending-contact-requests-by-member":return go;case"@keet-private-id/accepted-contact-requests-v2":return Ko;case"@keet-private-id/rejected-contact-requests-v2":return ko;case"@keet-private-id/discarded-contact-requests-v2":return Fo;case"@keet/chat-label-digests-by-clock":return fr;case"@keet/member-label-digests-by-clock":return Ir;case"@keet/calls-by-timestamp":return jr;case"@keet/active-calls-by-timestamp":return Dr;case"@keet/call-devices-by-member-key":return td;case"@keet/call-streams-by-device-key":return ad;default:return null}}module.exports={versions:d,collections:vd,indexes:md,resolveCollection:hd,resolveIndex:kd};
@holepunchto/keet-core/schema/spec/contract/hyperdb/messages.js +1 -0
……@@ -0,0 +1 @@
1const{c:e}=require("hyperschema/runtime"),d=20;let n=d;const o={preencode(d,n){e.fixed32.preencode(d,n.key),e.uint.preencode(d,n.length)},encode(d,n){e.fixed32.encode(d,n.key),e.uint.encode(d,n.length)},decode:d=>({key:e.fixed32.decode(d),length:e.uint.decode(d)})},c={preencode(d,n){e.fixed32.preencode(d,n.key),e.uint.preencode(d,n.seq)},encode(d,n){e.fixed32.encode(d,n.key),e.uint.encode(d,n.seq)},decode:d=>({key:e.fixed32.decode(d),seq:e.uint.decode(d)})},t={preencode(d,n){e.fixed32.preencode(d,n.publicKey),e.fixed32.preencode(d,n.secretKey)},encode(d,n){e.fixed32.encode(d,n.publicKey),e.fixed32.encode(d,n.secretKey)},decode:d=>({publicKey:e.fixed32.decode(d),secretKey:e.fixed32.decode(d)})},r={preencode(d,n){e.fixed32.preencode(d,n.publicKey),e.fixed64.preencode(d,n.secretKey)},encode(d,n){e.fixed32.encode(d,n.publicKey),e.fixed64.encode(d,n.secretKey)},decode:d=>({publicKey:e.fixed32.decode(d),secretKey:e.fixed64.decode(d)})},i={preencode(d,n){e.fixed32.preencode(d,n.key),d.end++,n.encryptionKey&&e.buffer.preencode(d,n.encryptionKey),n.fastForwardTo&&e.fixed32.preencode(d,n.fastForwardTo)},encode(d,n){const o=(n.encryptionKey?1:0)|(n.fastForwardTo?2:0);e.fixed32.encode(d,n.key),e.uint.encode(d,o),n.encryptionKey&&e.buffer.encode(d,n.encryptionKey),n.fastForwardTo&&e.fixed32.encode(d,n.fastForwardTo)},decode(d){const n=e.fixed32.decode(d),o=e.uint.decode(d);return{key:n,encryptionKey:1&o?e.buffer.decode(d):null,fastForwardTo:2&o?e.fixed32.decode(d):null}}},a={preencode(d,n){e.uint.preencode(d,n.timestamp)},encode(d,n){e.uint.encode(d,n.timestamp)},decode:d=>({timestamp:e.uint.decode(d)})},s={preencode(d,n){e.uint.preencode(d,n.blockOffset),e.uint.preencode(d,n.blockLength),e.uint.preencode(d,n.byteOffset),e.uint.preencode(d,n.byteLength)},encode(d,n){e.uint.encode(d,n.blockOffset),e.uint.encode(d,n.blockLength),e.uint.encode(d,n.byteOffset),e.uint.encode(d,n.byteLength)},decode:d=>({blockOffset:e.uint.decode(d),blockLength:e.uint.decode(d),byteOffset:e.uint.decode(d),byteLength:e.uint.decode(d)})},p={preencode(d,n){e.uint.preencode(d,n.width),e.uint.preencode(d,n.height)},encode(d,n){e.uint.encode(d,n.width),e.uint.encode(d,n.height)},decode:d=>({width:e.uint.decode(d),height:e.uint.decode(d)})},u=e.frame(p),l={preencode(d,n){d.end++,n.name&&e.string.preencode(d,n.name),n.mimetype&&e.string.preencode(d,n.mimetype),n.dimensions&&u.preencode(d,n.dimensions),n.userdata&&e.buffer.preencode(d,n.userdata),n.duration&&e.uint.preencode(d,n.duration)},encode(d,n){const o=(n.name?1:0)|(n.mimetype?2:0)|(n.dimensions?4:0)|(n.userdata?8:0)|(n.duration?16:0)|(n.isPreview?32:0);e.uint.encode(d,o),n.name&&e.string.encode(d,n.name),n.mimetype&&e.string.encode(d,n.mimetype),n.dimensions&&u.encode(d,n.dimensions),n.userdata&&e.buffer.encode(d,n.userdata),n.duration&&e.uint.encode(d,n.duration)},decode(d){const n=e.uint.decode(d);return{name:1&n?e.string.decode(d):null,mimetype:2&n?e.string.decode(d):null,dimensions:4&n?u.decode(d):null,userdata:8&n?e.buffer.decode(d):null,duration:16&n?e.uint.decode(d):0,isPreview:!!(32&n)}}},f={preencode(d,n){e.fixed32.preencode(d,n.key),e.string.preencode(d,n.path),e.uint.preencode(d,n.version),e.uint.preencode(d,n.size)},encode(d,n){e.fixed32.encode(d,n.key),e.string.encode(d,n.path),e.uint.encode(d,n.version),e.uint.encode(d,n.size)},decode:d=>({key:e.fixed32.decode(d),path:e.string.decode(d),version:e.uint.decode(d),size:e.uint.decode(d)})},m={preencode(d,n){e.fixed32.preencode(d,n.key),s.preencode(d,n.blob)},encode(d,n){e.fixed32.encode(d,n.key),s.encode(d,n.blob)},decode:d=>({key:e.fixed32.decode(d),blob:s.decode(d)})},y=e.frame(m),b=e.frame(f),x={preencode(d,n){d.end++,n.inlined&&e.buffer.preencode(d,n.inlined),n.blob&&s.preencode(d,n.blob),n.externalBlob&&y.preencode(d,n.externalBlob),n.externalDrive&&b.preencode(d,n.externalDrive)},encode(d,n){const o=(n.inlined?1:0)|(n.blob?2:0)|(n.externalBlob?4:0)|(n.externalDrive?8:0);e.uint.encode(d,o),n.inlined&&e.buffer.encode(d,n.inlined),n.blob&&s.encode(d,n.blob),n.externalBlob&&y.encode(d,n.externalBlob),n.externalDrive&&b.encode(d,n.externalDrive)},decode(d){const n=e.uint.decode(d);return{inlined:1&n?e.buffer.decode(d):null,blob:2&n?s.decode(d):null,externalBlob:4&n?y.decode(d):null,externalDrive:8&n?b.decode(d):null}}},k=e.frame(x),v=e.frame(l),g={preencode(d,n){k.preencode(d,n.pointer),d.end++,n.metadata&&v.preencode(d,n.metadata),n.preview&&ei.preencode(d,n.preview),n.hash&&e.fixed32.preencode(d,n.hash)},encode(d,n){const o=(n.metadata?1:0)|(n.preview?2:0)|(n.hash?4:0);k.encode(d,n.pointer),e.uint.encode(d,o),n.metadata&&v.encode(d,n.metadata),n.preview&&ei.encode(d,n.preview),n.hash&&e.fixed32.encode(d,n.hash)},decode(d){const n=k.decode(d),o=e.uint.decode(d);return{pointer:n,metadata:1&o?v.decode(d):null,preview:2&o?ei.decode(d):null,hash:4&o?e.fixed32.decode(d):null}}},h=e.frame(g),K=h,w=h,A={preencode(e,d){e.end++,d.small&&h.preencode(e,d.small),d.medium&&K.preencode(e,d.medium),d.large&&w.preencode(e,d.large)},encode(d,n){const o=(n.small?1:0)|(n.medium?2:0)|(n.large?4:0);e.uint.encode(d,o),n.small&&h.encode(d,n.small),n.medium&&K.encode(d,n.medium),n.large&&w.encode(d,n.large)},decode(d){const n=e.uint.decode(d);return{small:1&n?h.decode(d):null,medium:2&n?K.decode(d):null,large:4&n?w.decode(d):null}}},T={preencode(e,d){e.end++},encode(d,n){const o=n.isDeleted?1:0;e.uint.encode(d,o)},decode:d=>({isDeleted:!!(1&e.uint.decode(d))})},P=e.frame(T),S=h,R={preencode(d,o){e.uint.preencode(d,o.id),c.preencode(d,o.oplog),P.preencode(d,o.status),S.preencode(d,o.file),d.end++,n>=14&&o.version&&e.uint.preencode(d,o.version)},encode(d,o){const t=n>=14&&o.version?1:0;e.uint.encode(d,o.id),c.encode(d,o.oplog),P.encode(d,o.status),S.encode(d,o.file),e.uint.encode(d,t),n>=14&&o.version&&e.uint.encode(d,o.version)},decode(d){const o=e.uint.decode(d),t=c.decode(d),r=P.decode(d),i=S.decode(d),a=d.start<d.end?e.uint.decode(d):0;return{id:o,oplog:t,status:r,file:i,version:n>=14&&1&a?e.uint.decode(d):0}}},C={preencode(e,d){e.end++},encode(d,n){const o=(n.isActive?1:0)|(n.isIndexing?2:0);e.uint.encode(d,o)},decode(d){const n=e.uint.decode(d);return{isActive:!!(1&n),isIndexing:!!(2&n)}}},D={preencode(d,o){const c=(o.isAdmin?1:0)|(o.isModerator?2:0)|(o.isPending?4:0)|(o.isActive?8:0)|(o.isMuted?16:0)|(o.isBanned?32:0)|(o.isShadowBanned?64:0)|(n>=13&&o.isRemoved?128:0);e.uint.preencode(d,c)},encode(d,o){const c=(o.isAdmin?1:0)|(o.isModerator?2:0)|(o.isPending?4:0)|(o.isActive?8:0)|(o.isMuted?16:0)|(o.isBanned?32:0)|(o.isShadowBanned?64:0)|(n>=13&&o.isRemoved?128:0);e.uint.encode(d,c)},decode(d){const o=e.uint.decode(d);return{isAdmin:!!(1&o),isModerator:!!(2&o),isPending:!!(4&o),isActive:!!(8&o),isMuted:!!(16&o),isBanned:!!(32&o),isShadowBanned:!!(64&o),isRemoved:n>=13&&!!(128&o)}}},F={preencode(e,d){e.end++},encode(d,n){const o=(n.isMuted?1:0)|(n.isBanned?2:0)|(n.isShadowBanned?4:0);e.uint.encode(d,o)},decode(d){const n=e.uint.decode(d);return{isMuted:!!(1&n),isBanned:!!(2&n),isShadowBanned:!!(4&n)}}},M={preencode(d,n){e.uint.preencode(d,n.version)},encode(d,n){e.uint.encode(d,n.version)},decode:d=>({version:e.uint.decode(d)})},q={preencode(d,n){e.uint.preencode(d,n.total),e.uint.preencode(d,n.active)},encode(d,n){e.uint.encode(d,n.total),e.uint.encode(d,n.active)},decode:d=>({total:e.uint.decode(d),active:e.uint.decode(d)})},L={preencode(d,n){e.uint.preencode(d,n.total),e.uint.preencode(d,n.active),e.uint.preencode(d,n.pending)},encode(d,n){e.uint.encode(d,n.total),e.uint.encode(d,n.active),e.uint.encode(d,n.pending)},decode:d=>({total:e.uint.decode(d),active:e.uint.decode(d),pending:e.uint.decode(d)})},I={preencode(d,o){e.uint.preencode(d,o.clock),e.uint.preencode(d,o.pinned),e.uint.preencode(d,o.threads),e.uint.preencode(d,o.timestamp),d.end++,n>=15&&o.flagsClock&&e.uint.preencode(d,o.flagsClock)},encode(d,o){const c=n>=15&&o.flagsClock?1:0;e.uint.encode(d,o.clock),e.uint.encode(d,o.pinned),e.uint.encode(d,o.threads),e.uint.encode(d,o.timestamp),e.uint.encode(d,c),n>=15&&o.flagsClock&&e.uint.encode(d,o.flagsClock)},decode(d){const o=e.uint.decode(d),c=e.uint.decode(d),t=e.uint.decode(d),r=e.uint.decode(d),i=d.start<d.end?e.uint.decode(d):0;return{clock:o,pinned:c,threads:t,timestamp:r,flagsClock:n>=15&&1&i?e.uint.decode(d):0}}},E={preencode(d,n){e.uint.preencode(d,n.clock)},encode(d,n){e.uint.encode(d,n.clock)},decode:d=>({clock:e.uint.decode(d)})},B=e.frame(q),N=e.frame(L),j=e.frame(I),V=e.frame(E),O={preencode(e,d){B.preencode(e,d.devices),N.preencode(e,d.members),j.preencode(e,d.chat),V.preencode(e,d.files)},encode(e,d){B.encode(e,d.devices),N.encode(e,d.members),j.encode(e,d.chat),V.encode(e,d.files)},decode:e=>({devices:B.decode(e),members:N.decode(e),chat:j.decode(e),files:V.decode(e)})},J={Default:1,Broadcast:2,DirectMessage:3},U={preencode(e,d){e.end++},encode(d,n){if(n>3)throw new Error("Unknown enum");e.uint.encode(d,n)},decode:d=>e.uint.decode(d)},H={preencode(d,o){const c=(o.roomType?1:0)|(o.isExperimental?2:0)|(o.isJoiningDisabled?4:0)|(o.isAppendingDisabled?8:0)|(o.isCallingDisabled?16:0)|(o.isMembershipEventsDisabled?32:0)|(n>=19&&o.isAttachmentsDisabled?64:0)|(n>=19&&o.isLinksDisabled?128:0)|(n>=20&&o.buildType?256:0);e.uint.preencode(d,c),o.roomType&&U.preencode(d,o.roomType),n>=20&&o.buildType&&Vt.preencode(d,o.buildType)},encode(d,o){const c=(o.roomType?1:0)|(o.isExperimental?2:0)|(o.isJoiningDisabled?4:0)|(o.isAppendingDisabled?8:0)|(o.isCallingDisabled?16:0)|(o.isMembershipEventsDisabled?32:0)|(n>=19&&o.isAttachmentsDisabled?64:0)|(n>=19&&o.isLinksDisabled?128:0)|(n>=20&&o.buildType?256:0);e.uint.encode(d,c),o.roomType&&U.encode(d,o.roomType),n>=20&&o.buildType&&Vt.encode(d,o.buildType)},decode(d){const o=e.uint.decode(d);return{roomType:1&o?U.decode(d):0,isExperimental:!!(2&o),isJoiningDisabled:!!(4&o),isAppendingDisabled:!!(8&o),isCallingDisabled:!!(16&o),isMembershipEventsDisabled:!!(32&o),isAttachmentsDisabled:n>=19&&!!(64&o),isLinksDisabled:n>=19&&!!(128&o),buildType:n>=20&&256&o?Vt.decode(d):null}}},z=e.frame(M),G=e.frame(H),Q={preencode(d,n){z.preencode(d,n.abi),G.preencode(d,n.settings),e.uint.preencode(d,n.creationTime)},encode(d,n){z.encode(d,n.abi),G.encode(d,n.settings),e.uint.encode(d,n.creationTime)},decode:d=>({abi:z.decode(d),settings:G.decode(d),creationTime:e.uint.decode(d)})},W={preencode(d,n){e.fixed32.preencode(d,n.seed)},encode(d,n){e.fixed32.encode(d,n.seed)},decode:d=>({seed:e.fixed32.decode(d)})},X={preencode(d,n){t.preencode(d,n.mailboxKeyPair),r.preencode(d,n.discoveryKeyPair),e.fixed32.preencode(d,n.wakeupTopic),e.fixed32.preencode(d,n.swarmTopic)},encode(d,n){t.encode(d,n.mailboxKeyPair),r.encode(d,n.discoveryKeyPair),e.fixed32.encode(d,n.wakeupTopic),e.fixed32.encode(d,n.swarmTopic)},decode:d=>({mailboxKeyPair:t.decode(d),discoveryKeyPair:r.decode(d),wakeupTopic:e.fixed32.decode(d),swarmTopic:e.fixed32.decode(d)})},Y=e.array(e.fixed32),Z={preencode(d,o){d.end++,o.title&&e.string.preencode(d,o.title),o.avatar&&di.preencode(d,o.avatar),o.description&&e.string.preencode(d,o.description),n>=11&&o.supportedLanguages&&ni.preencode(d,o.supportedLanguages),n>=13&&o.blindPeers&&Y.preencode(d,o.blindPeers)},encode(d,o){const c=(o.title?1:0)|(o.avatar?2:0)|(o.description?4:0)|(n>=11&&o.supportedLanguages?8:0)|(n>=13&&o.blindPeers?16:0);e.uint.encode(d,c),o.title&&e.string.encode(d,o.title),o.avatar&&di.encode(d,o.avatar),o.description&&e.string.encode(d,o.description),n>=11&&o.supportedLanguages&&ni.encode(d,o.supportedLanguages),n>=13&&o.blindPeers&&Y.encode(d,o.blindPeers)},decode(d){const o=e.uint.decode(d);return{title:1&o?e.string.decode(d):null,avatar:2&o?di.decode(d):null,description:4&o?e.string.decode(d):null,supportedLanguages:n>=11&&8&o?ni.decode(d):null,blindPeers:n>=13&&16&o?Y.decode(d):null}}},$={preencode(d,n){e.fixed32.preencode(d,n.key)},encode(d,n){e.fixed32.encode(d,n.key)},decode:d=>({key:e.fixed32.decode(d)})},_=e.frame(a),ee=e.frame($),de={preencode(e,d){_.preencode(e,d.header),ee.preencode(e,d.peer)},encode(e,d){_.encode(e,d.header),ee.encode(e,d.peer)},decode:e=>({header:_.decode(e),peer:ee.decode(e)})},ne=_,oe={preencode(d,n){ne.preencode(d,n.header),e.fixed32.preencode(d,n.key)},encode(d,n){ne.encode(d,n.header),e.fixed32.encode(d,n.key)},decode:d=>({header:ne.decode(d),key:e.fixed32.decode(d)})},ce={preencode(d,n){e.fixed32.preencode(d,n.memberKey),e.buffer.preencode(d,n.proof)},encode(d,n){e.fixed32.encode(d,n.memberKey),e.buffer.encode(d,n.proof)},decode:d=>({memberKey:e.fixed32.decode(d),proof:e.buffer.decode(d)})},te={preencode(d,n){e.fixed32.preencode(d,n.id),e.buffer.preencode(d,n.response)},encode(d,n){e.fixed32.encode(d,n.id),e.buffer.encode(d,n.response)},decode:d=>({id:e.fixed32.decode(d),response:e.buffer.decode(d)})},re=e.frame(C),ie=e.frame(te),ae={preencode(d,n){e.fixed32.preencode(d,n.key),e.fixed32.preencode(d,n.memberKey),re.preencode(d,n.status),oi.preencode(d,n.profile),d.end++,n.invitation&&ie.preencode(d,n.invitation)},encode(d,n){const o=n.invitation?1:0;e.fixed32.encode(d,n.key),e.fixed32.encode(d,n.memberKey),re.encode(d,n.status),oi.encode(d,n.profile),e.uint.encode(d,o),n.invitation&&ie.encode(d,n.invitation)},decode:d=>({key:e.fixed32.decode(d),memberKey:e.fixed32.decode(d),status:re.decode(d),profile:oi.decode(d),invitation:1&e.uint.decode(d)?ie.decode(d):null})},se={preencode(d,n){e.uint.preencode(d,n.timestamp),d.end++,n.mailbox&&e.fixed32.preencode(d,n.mailbox),n.displayName&&e.string.preencode(d,n.displayName),n.avatar&&ci.preencode(d,n.avatar),n.username&&e.string.preencode(d,n.username)},encode(d,n){const o=(n.mailbox?1:0)|(n.displayName?2:0)|(n.avatar?4:0)|(n.username?8:0);e.uint.encode(d,n.timestamp),e.uint.encode(d,o),n.mailbox&&e.fixed32.encode(d,n.mailbox),n.displayName&&e.string.encode(d,n.displayName),n.avatar&&ci.encode(d,n.avatar),n.username&&e.string.encode(d,n.username)},decode(d){const n=e.uint.decode(d),o=e.uint.decode(d);return{timestamp:n,mailbox:1&o?e.fixed32.decode(d):null,displayName:2&o?e.string.decode(d):null,avatar:4&o?ci.decode(d):null,username:8&o?e.string.decode(d):null}}},pe={preencode(d,o){d.end++,o.swarmKey&&e.fixed32.preencode(d,o.swarmKey),o.name&&e.string.preencode(d,o.name),n>=20&&o.buildType&&Vt.preencode(d,o.buildType)},encode(d,o){const c=(o.swarmKey?1:0)|(o.name?2:0)|(o.isMobile?4:0)|(n>=20&&o.buildType?8:0);e.uint.encode(d,c),o.swarmKey&&e.fixed32.encode(d,o.swarmKey),o.name&&e.string.encode(d,o.name),n>=20&&o.buildType&&Vt.encode(d,o.buildType)},decode(d){const o=e.uint.decode(d);return{swarmKey:1&o?e.fixed32.decode(d):null,name:2&o?e.string.decode(d):null,isMobile:!!(4&o),buildType:n>=20&&8&o?Vt.decode(d):null}}},ue=e.frame(se),le={preencode(e,d){ue.preencode(e,d.profile),ce.preencode(e,d.attestation)},encode(e,d){ue.encode(e,d.profile),ce.encode(e,d.attestation)},decode:e=>({profile:ue.decode(e),attestation:ce.decode(e)})},fe={preencode(e,d){ti.preencode(e,d.profile),ce.preencode(e,d.attestation)},encode(e,d){ti.encode(e,d.profile),ce.encode(e,d.attestation)},decode:e=>({profile:ti.decode(e),attestation:ce.decode(e)})},me={preencode(d,n){e.fixed32.preencode(d,n.id),e.buffer.preencode(d,n.data),e.buffer.preencode(d,n.signature)},encode(d,n){e.fixed32.encode(d,n.id),e.buffer.encode(d,n.data),e.buffer.encode(d,n.signature)},decode:d=>({id:e.fixed32.decode(d),data:e.buffer.decode(d),signature:e.buffer.decode(d)})},ye={preencode(d,n){e.fixed32.preencode(d,n.devicePublicKey)},encode(d,n){e.fixed32.encode(d,n.devicePublicKey)},decode:d=>({devicePublicKey:e.fixed32.decode(d)})},be={preencode(d,n){ce.preencode(d,n.privateProfileIdentity),e.buffer.preencode(d,n.deviceProof)},encode(d,n){ce.encode(d,n.privateProfileIdentity),e.buffer.encode(d,n.deviceProof)},decode:d=>({privateProfileIdentity:ce.decode(d),deviceProof:e.buffer.decode(d)})},xe=e.frame(fe),ke=e.frame(le),ve=e.frame(ye),ge={preencode(d,n){e.fixed32.preencode(d,n.deviceKey),r.preencode(d,n.keyPair),xe.preencode(d,n.device),ke.preencode(d,n.member),d.end++,n.identity&&ve.preencode(d,n.identity)},encode(d,n){const o=n.identity?1:0;e.fixed32.encode(d,n.deviceKey),r.encode(d,n.keyPair),xe.encode(d,n.device),ke.encode(d,n.member),e.uint.encode(d,o),n.identity&&ve.encode(d,n.identity)},decode:d=>({deviceKey:e.fixed32.decode(d),keyPair:r.decode(d),device:xe.decode(d),member:ke.decode(d),identity:1&e.uint.decode(d)?ve.decode(d):null})},he=e.frame(ge),Ke={preencode(d,n){e.fixed32.preencode(d,n.id),he.preencode(d,n.request),e.buffer.preencode(d,n.signature)},encode(d,n){e.fixed32.encode(d,n.id),he.encode(d,n.request),e.buffer.encode(d,n.signature)},decode:d=>({id:e.fixed32.decode(d),request:he.decode(d),signature:e.buffer.decode(d)})},we=xe,Ae=ke,Te={preencode(e,d){we.preencode(e,d.device),e.end++,d.member&&Ae.preencode(e,d.member)},encode(d,n){const o=n.member?1:0;we.encode(d,n.device),e.uint.encode(d,o),n.member&&Ae.encode(d,n.member)},decode:d=>({device:we.decode(d),member:1&e.uint.decode(d)?Ae.decode(d):null})},Pe=e.frame(Ke),Se=e.frame(Te),Re={preencode(e,d){e.end++,d.withInvitation&&Pe.preencode(e,d.withInvitation),d.withMemberProof&&Se.preencode(e,d.withMemberProof)},encode(d,n){const o=(n.withInvitation?1:0)|(n.withMemberProof?2:0);e.uint.encode(d,o),n.withInvitation&&Pe.encode(d,n.withInvitation),n.withMemberProof&&Se.encode(d,n.withMemberProof)},decode(d){const n=e.uint.decode(d);return{withInvitation:1&n?Pe.decode(d):null,withMemberProof:2&n?Se.decode(d):null}}},Ce=e.frame(me),De=e.frame(be),Fe={preencode(e,d){Ce.preencode(e,d.signedKeys),e.end++,d.identity&&De.preencode(e,d.identity)},encode(d,n){const o=n.identity?1:0;Ce.encode(d,n.signedKeys),e.uint.encode(d,o),n.identity&&De.encode(d,n.identity)},decode:d=>({signedKeys:Ce.decode(d),identity:1&e.uint.decode(d)?De.decode(d):null})},Me={preencode(d,o){d.end++,o.expiration&&e.uint.preencode(d,o.expiration),n>=20&&o.buildType&&Vt.preencode(d,o.buildType)},encode(d,o){const c=(o.expiration?1:0)|(o.requiresConfirmation?2:0)|(o.canModerate?4:0)|(o.canAdmin?8:0)|(n>=20&&o.buildType?16:0);e.uint.encode(d,c),o.expiration&&e.uint.encode(d,o.expiration),n>=20&&o.buildType&&Vt.encode(d,o.buildType)},decode(d){const o=e.uint.decode(d);return{expiration:1&o?e.uint.decode(d):0,requiresConfirmation:!!(2&o),canModerate:!!(4&o),canAdmin:!!(8&o),buildType:n>=20&&16&o?Vt.decode(d):null}}},qe=Ce,Le=e.frame(Me),Ie={preencode(d,n){e.fixed32.preencode(d,n.id),qe.preencode(d,n.response),Le.preencode(d,n.metadata),d.end++,n.anchor&&o.preencode(d,n.anchor)},encode(d,n){const c=(n.anchor?1:0)|(n.isActive?2:0);e.fixed32.encode(d,n.id),qe.encode(d,n.response),Le.encode(d,n.metadata),e.uint.encode(d,c),n.anchor&&o.encode(d,n.anchor)},decode(d){const n=e.fixed32.decode(d),c=qe.decode(d),t=Le.decode(d),r=e.uint.decode(d);return{id:n,response:c,metadata:t,anchor:1&r?o.decode(d):null,isActive:!!(2&r)}}},Ee=_,Be=e.frame(Ie),Ne={preencode(e,d){Ee.preencode(e,d.header),Be.preencode(e,d.invitation)},encode(e,d){Ee.encode(e,d.header),Be.encode(e,d.invitation)},decode:e=>({header:Ee.decode(e),invitation:Be.decode(e)})},je=_,Ve={preencode(d,n){je.preencode(d,n.header),e.fixed32.preencode(d,n.id)},encode(d,n){je.encode(d,n.header),e.fixed32.encode(d,n.id)},decode:d=>({header:je.decode(d),id:e.fixed32.decode(d)})},Oe={preencode(d,n){e.fixed32.preencode(d,n.mailbox),e.fixed32.preencode(d,n.invitationSeed),o.preencode(d,n.anchor)},encode(d,n){e.fixed32.encode(d,n.mailbox),e.fixed32.encode(d,n.invitationSeed),o.encode(d,n.anchor)},decode:d=>({mailbox:e.fixed32.decode(d),invitationSeed:e.fixed32.decode(d),anchor:o.decode(d)})},Je={preencode(d,n){e.fixed32.preencode(d,n.mailbox),e.fixed32.preencode(d,n.invitationSeed),o.preencode(d,n.anchor),e.fixed32.preencode(d,n.identityPublicKey)},encode(d,n){e.fixed32.encode(d,n.mailbox),e.fixed32.encode(d,n.invitationSeed),o.encode(d,n.anchor),e.fixed32.encode(d,n.identityPublicKey)},decode:d=>({mailbox:e.fixed32.decode(d),invitationSeed:e.fixed32.decode(d),anchor:o.decode(d),identityPublicKey:e.fixed32.decode(d)})},Ue={preencode(d,n){e.fixed32.preencode(d,n.mailbox)},encode(d,n){e.fixed32.encode(d,n.mailbox)},decode:d=>({mailbox:e.fixed32.decode(d)})},He=e.frame(Oe),ze=e.frame(Je),Ge=e.frame(Ue),Qe=e.array(e.ipv4Address),We={preencode(e,d){e.end++,d.room&&He.preencode(e,d.room),d.identity&&ze.preencode(e,d.identity),d.contact&&Ge.preencode(e,d.contact),n>=6&&d.readonly&&ri.preencode(e,d.readonly),n>=11&&d.additionalNodes&&Qe.preencode(e,d.additionalNodes),n>=20&&d.buildType&&Vt.preencode(e,d.buildType)},encode(d,o){const c=(o.room?1:0)|(o.identity?2:0)|(o.contact?4:0)|(n>=6&&o.readonly?8:0)|(n>=11&&o.additionalNodes?16:0)|(n>=20&&o.buildType?32:0);e.uint.encode(d,c),o.room&&He.encode(d,o.room),o.identity&&ze.encode(d,o.identity),o.contact&&Ge.encode(d,o.contact),n>=6&&o.readonly&&ri.encode(d,o.readonly),n>=11&&o.additionalNodes&&Qe.encode(d,o.additionalNodes),n>=20&&o.buildType&&Vt.encode(d,o.buildType)},decode(d){const o=e.uint.decode(d);return{room:1&o?He.decode(d):null,identity:2&o?ze.decode(d):null,contact:4&o?Ge.decode(d):null,readonly:n>=6&&8&o?ri.decode(d):null,additionalNodes:n>=11&&16&o?Qe.decode(d):null,buildType:n>=20&&32&o?Vt.decode(d):null}}},Xe=_,Ye={preencode(d,n){Xe.preencode(d,n.header),e.buffer.preencode(d,n.blindRequest)},encode(d,n){Xe.encode(d,n.header),e.buffer.encode(d,n.blindRequest)},decode:d=>({header:Xe.decode(d),blindRequest:e.buffer.decode(d)})},Ze=_,$e={preencode(e,d){Ze.preencode(e,d.header),e.end++,d.profile&&ii.preencode(e,d.profile)},encode(d,n){const o=n.profile?1:0;Ze.encode(d,n.header),e.uint.encode(d,o),n.profile&&ii.encode(d,n.profile)},decode:d=>({header:Ze.decode(d),profile:1&e.uint.decode(d)?ii.decode(d):null})},_e={preencode(e,d){},encode(e,d){},decode:e=>({})},ed=_e,dd=he,nd={preencode(d,n){e.fixed32.preencode(d,n.deviceKey),e.fixed32.preencode(d,n.id),dd.preencode(d,n.request)},encode(d,n){e.fixed32.encode(d,n.deviceKey),e.fixed32.encode(d,n.id),dd.encode(d,n.request)},decode:d=>({deviceKey:e.fixed32.decode(d),id:e.fixed32.decode(d),request:dd.decode(d)})},od=_,cd=De,td={preencode(d,n){od.preencode(d,n.header),e.fixed32.preencode(d,n.deviceKey),d.end++,n.identity&&cd.preencode(d,n.identity)},encode(d,n){const o=n.identity?1:0;od.encode(d,n.header),e.fixed32.encode(d,n.deviceKey),e.uint.encode(d,o),n.identity&&cd.encode(d,n.identity)},decode:d=>({header:od.decode(d),deviceKey:e.fixed32.decode(d),identity:1&e.uint.decode(d)?cd.decode(d):null})},rd=_,id={preencode(d,n){rd.preencode(d,n.header),e.fixed32.preencode(d,n.deviceKey)},encode(d,n){rd.encode(d,n.header),e.fixed32.encode(d,n.deviceKey)},decode:d=>({header:rd.decode(d),deviceKey:e.fixed32.decode(d)})},ad=e.frame(D),sd=ue,pd={preencode(d,n){e.fixed32.preencode(d,n.key),ad.preencode(d,n.status),sd.preencode(d,n.profile)},encode(d,n){e.fixed32.encode(d,n.key),ad.encode(d,n.status),sd.encode(d,n.profile)},decode:d=>({key:e.fixed32.decode(d),status:ad.decode(d),profile:sd.decode(d)})},ud=ad,ld=ue,fd={preencode(d,n){e.fixed32.preencode(d,n.key),ud.preencode(d,n.status),ld.preencode(d,n.profile),d.end++,n.proofs&&ai.preencode(d,n.proofs)},encode(d,n){const o=n.proofs?1:0;e.fixed32.encode(d,n.key),ud.encode(d,n.status),ld.encode(d,n.profile),e.uint.encode(d,o),n.proofs&&ai.encode(d,n.proofs)},decode:d=>({key:e.fixed32.decode(d),status:ud.decode(d),profile:ld.decode(d),proofs:1&e.uint.decode(d)?ai.decode(d):null})},md={preencode(d,n){e.fixed32.preencode(d,n.key),d.end++,n.profileAttestation&&e.buffer.preencode(d,n.profileAttestation),n.latestReceipt&&e.buffer.preencode(d,n.latestReceipt)},encode(d,n){const o=(n.profileAttestation?1:0)|(n.latestReceipt?2:0);e.fixed32.encode(d,n.key),e.uint.encode(d,o),n.profileAttestation&&e.buffer.encode(d,n.profileAttestation),n.latestReceipt&&e.buffer.encode(d,n.latestReceipt)},decode(d){const n=e.fixed32.decode(d),o=e.uint.decode(d);return{key:n,profileAttestation:1&o?e.buffer.decode(d):null,latestReceipt:2&o?e.buffer.decode(d):null}}},yd=_,bd=ke,xd={preencode(e,d){yd.preencode(e,d.header),bd.preencode(e,d.member)},encode(e,d){yd.encode(e,d.header),bd.encode(e,d.member)},decode:e=>({header:yd.decode(e),member:bd.decode(e)})},kd=_,vd=e.frame(F),gd={preencode(d,n){kd.preencode(d,n.header),e.fixed32.preencode(d,n.memberKey),e.uint.preencode(d,n.key),vd.preencode(d,n.status)},encode(d,n){kd.encode(d,n.header),e.fixed32.encode(d,n.memberKey),e.uint.encode(d,n.key),vd.encode(d,n.status)},decode:d=>({header:kd.decode(d),memberKey:e.fixed32.decode(d),key:e.uint.decode(d),status:vd.decode(d)})},hd=_,Kd={preencode(d,n){hd.preencode(d,n.header),e.fixed32.preencode(d,n.key),d.end++},encode(d,n){const o=(n.isModerator?1:0)|(n.isAdmin?2:0);hd.encode(d,n.header),e.fixed32.encode(d,n.key),e.uint.encode(d,o)},decode(d){const n=hd.decode(d),o=e.fixed32.decode(d),c=e.uint.decode(d);return{header:n,key:o,isModerator:!!(1&c),isAdmin:!!(2&c)}}},wd=_,Ad={preencode(d,n){wd.preencode(d,n.header),e.fixed32.preencode(d,n.key)},encode(d,n){wd.encode(d,n.header),e.fixed32.encode(d,n.key)},decode:d=>({header:wd.decode(d),key:e.fixed32.decode(d)})},Td={preencode(d,n){e.fixed32.preencode(d,n.key),e.uint.preencode(d,n.mentions)},encode(d,n){e.fixed32.encode(d,n.key),e.uint.encode(d,n.mentions)},decode:d=>({key:e.fixed32.decode(d),mentions:e.uint.decode(d)})},Pd={preencode(d,n){d.end++,n.memberKey&&e.fixed32.preencode(d,n.memberKey)},encode(d,n){const o=n.memberKey?1:0;e.uint.encode(d,o),n.memberKey&&e.fixed32.encode(d,n.memberKey)},decode:d=>({memberKey:1&e.uint.decode(d)?e.fixed32.decode(d):null})},Sd=Pd,Rd={preencode(d,n){d.end++,n.from&&e.string.preencode(d,n.from),n.to&&e.string.preencode(d,n.to)},encode(d,n){const o=(n.from?1:0)|(n.to?2:0);e.uint.encode(d,o),n.from&&e.string.encode(d,n.from),n.to&&e.string.encode(d,n.to)},decode(d){const n=e.uint.decode(d);return{from:1&n?e.string.decode(d):null,to:2&n?e.string.decode(d):null}}},Cd=e.frame(Pd),Dd=e.frame(Sd),Fd=e.frame(Rd),Md={preencode(d,o){const c=(o.memberJoined?1:0)|(o.memberLeft?2:0)|(o.titleChanged?4:0)|(o.callStarted?8:0)|(o.callHangup?16:0)|(o.callMissed?32:0)|(n>=3&&o.roomAvatarChanged?64:0)|(n>=3&&o.invitationCreated?128:0)|(n>=3&&o.memberRemoved?256:0)|(n>=18&&o.locationShared?512:0);e.uint.preencode(d,c),o.memberJoined&&Cd.preencode(d,o.memberJoined),o.memberLeft&&Dd.preencode(d,o.memberLeft),o.titleChanged&&Fd.preencode(d,o.titleChanged),n>=3&&o.memberRemoved&&si.preencode(d,o.memberRemoved),n>=18&&o.locationShared&&pi.preencode(d,o.locationShared)},encode(d,o){const c=(o.memberJoined?1:0)|(o.memberLeft?2:0)|(o.titleChanged?4:0)|(o.callStarted?8:0)|(o.callHangup?16:0)|(o.callMissed?32:0)|(n>=3&&o.roomAvatarChanged?64:0)|(n>=3&&o.invitationCreated?128:0)|(n>=3&&o.memberRemoved?256:0)|(n>=18&&o.locationShared?512:0);e.uint.encode(d,c),o.memberJoined&&Cd.encode(d,o.memberJoined),o.memberLeft&&Dd.encode(d,o.memberLeft),o.titleChanged&&Fd.encode(d,o.titleChanged),n>=3&&o.memberRemoved&&si.encode(d,o.memberRemoved),n>=18&&o.locationShared&&pi.encode(d,o.locationShared)},decode(d){const o=e.uint.decode(d);return{memberJoined:1&o?Cd.decode(d):null,memberLeft:2&o?Dd.decode(d):null,titleChanged:4&o?Fd.decode(d):null,callStarted:!!(8&o),callHangup:!!(16&o),callMissed:!!(32&o),roomAvatarChanged:n>=3&&!!(64&o),invitationCreated:n>=3&&!!(128&o),memberRemoved:n>=3&&256&o?si.decode(d):null,locationShared:n>=18&&512&o?pi.decode(d):null}}},qd={preencode(e,d){e.end++,n>=18&&d.locationShared&&ui.preencode(e,d.locationShared)},encode(d,o){const c=(o.callStarted?1:0)|(o.callHangup?2:0)|(o.callMissed?4:0)|(n>=18&&o.locationShared?8:0);e.uint.encode(d,c),n>=18&&o.locationShared&&ui.encode(d,o.locationShared)},decode(d){const o=e.uint.decode(d);return{callStarted:!!(1&o),callHangup:!!(2&o),callMissed:!!(4&o),locationShared:n>=18&&8&o?ui.decode(d):null}}},Ld={preencode(d,n){e.uint.preencode(d,n.start),e.uint.preencode(d,n.length)},encode(d,n){e.uint.encode(d,n.start),e.uint.encode(d,n.length)},decode:d=>({start:e.uint.decode(d),length:e.uint.decode(d)})},Id=e.frame(Ld),Ed={preencode(d,n){Id.preencode(d,n.range),e.string.preencode(d,n.content)},encode(d,n){Id.encode(d,n.range),e.string.encode(d,n.content)},decode:d=>({range:Id.decode(d),content:e.string.decode(d)})},Bd=Id,Nd={preencode(d,n){Bd.preencode(d,n.range),e.fixed32.preencode(d,n.memberKey)},encode(d,n){Bd.encode(d,n.range),e.fixed32.encode(d,n.memberKey)},decode:d=>({range:Bd.decode(d),memberKey:e.fixed32.decode(d)})},jd=h,Vd=e.array(e.uint),Od={preencode(d,o){d.end++,o.title&&e.string.preencode(d,o.title),o.description&&e.string.preencode(d,o.description),o.file&&jd.preencode(d,o.file),n>=7&&o.files&&Vd.preencode(d,o.files)},encode(d,o){const c=(o.title?1:0)|(o.description?2:0)|(o.file?4:0)|(n>=7&&o.files?8:0);e.uint.encode(d,c),o.title&&e.string.encode(d,o.title),o.description&&e.string.encode(d,o.description),o.file&&jd.encode(d,o.file),n>=7&&o.files&&Vd.encode(d,o.files)},decode(d){const o=e.uint.decode(d);return{title:1&o?e.string.decode(d):null,description:2&o?e.string.decode(d):null,file:4&o?jd.decode(d):null,files:n>=7&&8&o?Vd.decode(d):null}}},Jd=Id,Ud=e.frame(Od),Hd={preencode(d,n){Jd.preencode(d,n.range),e.string.preencode(d,n.url),d.end++,n.preview&&Ud.preencode(d,n.preview)},encode(d,n){const o=n.preview?1:0;Jd.encode(d,n.range),e.string.encode(d,n.url),e.uint.encode(d,o),n.preview&&Ud.encode(d,n.preview)},decode:d=>({range:Jd.decode(d),url:e.string.decode(d),preview:1&e.uint.decode(d)?Ud.decode(d):null})},zd=e.array(e.frame(Nd)),Gd=e.array(e.frame(Hd)),Qd=Gd,Wd=e.array(e.frame(Ld)),Xd=Wd,Yd=Wd,Zd=e.array(e.frame(Ed)),$d=Wd,_d=Wd,en={preencode(d,o){const c=(o.mention?1:0)|(o.httpLink?2:0)|(o.pearLink?4:0)|(o.bold?8:0)|(o.italic?16:0)|(o.code?32:0)|(o.emoji?64:0)|(o.codeBlock?128:0)|(o.strike?256:0)|(n>=11&&o.translation?512:0);e.uint.preencode(d,c),o.mention&&zd.preencode(d,o.mention),o.httpLink&&Gd.preencode(d,o.httpLink),o.pearLink&&Qd.preencode(d,o.pearLink),o.bold&&Wd.preencode(d,o.bold),o.italic&&Xd.preencode(d,o.italic),o.code&&Yd.preencode(d,o.code),o.emoji&&Zd.preencode(d,o.emoji),o.codeBlock&&$d.preencode(d,o.codeBlock),o.strike&&_d.preencode(d,o.strike),n>=11&&o.translation&&li.preencode(d,o.translation)},encode(d,o){const c=(o.mention?1:0)|(o.httpLink?2:0)|(o.pearLink?4:0)|(o.bold?8:0)|(o.italic?16:0)|(o.code?32:0)|(o.emoji?64:0)|(o.codeBlock?128:0)|(o.strike?256:0)|(n>=11&&o.translation?512:0);e.uint.encode(d,c),o.mention&&zd.encode(d,o.mention),o.httpLink&&Gd.encode(d,o.httpLink),o.pearLink&&Qd.encode(d,o.pearLink),o.bold&&Wd.encode(d,o.bold),o.italic&&Xd.encode(d,o.italic),o.code&&Yd.encode(d,o.code),o.emoji&&Zd.encode(d,o.emoji),o.codeBlock&&$d.encode(d,o.codeBlock),o.strike&&_d.encode(d,o.strike),n>=11&&o.translation&&li.encode(d,o.translation)},decode(d){const o=e.uint.decode(d);return{mention:1&o?zd.decode(d):null,httpLink:2&o?Gd.decode(d):null,pearLink:4&o?Qd.decode(d):null,bold:8&o?Wd.decode(d):null,italic:16&o?Xd.decode(d):null,code:32&o?Yd.decode(d):null,emoji:64&o?Zd.decode(d):null,codeBlock:128&o?$d.decode(d):null,strike:256&o?_d.decode(d):null,translation:n>=11&&512&o?li.decode(d):null}}},dn=e.array(e.frame(g)),nn=e.frame(en),on=e.frame(qd),cn={preencode(d,n){d.end++,n.text&&e.string.preencode(d,n.text),n.files&&dn.preencode(d,n.files),n.display&&nn.preencode(d,n.display),n.replyTo&&c.preencode(d,n.replyTo),n.parent&&c.preencode(d,n.parent),n.event&&on.preencode(d,n.event)},encode(d,o){const t=(o.text?1:0)|(o.files?2:0)|(o.display?4:0)|(o.replyTo?8:0)|(o.parent?16:0)|(o.event?32:0)|(n>=18&&o.forwarded?64:0);e.uint.encode(d,t),o.text&&e.string.encode(d,o.text),o.files&&dn.encode(d,o.files),o.display&&nn.encode(d,o.display),o.replyTo&&c.encode(d,o.replyTo),o.parent&&c.encode(d,o.parent),o.event&&on.encode(d,o.event)},decode(d){const o=e.uint.decode(d);return{text:1&o?e.string.decode(d):null,files:2&o?dn.decode(d):null,display:4&o?nn.decode(d):null,replyTo:8&o?c.decode(d):null,parent:16&o?c.decode(d):null,event:32&o?on.decode(d):null,forwarded:n>=18&&!!(64&o)}}},tn=Vd,rn=nn,an={preencode(d,n){d.end++,n.text&&e.string.preencode(d,n.text),n.files&&tn.preencode(d,n.files),n.display&&rn.preencode(d,n.display),n.replyTo&&c.preencode(d,n.replyTo),n.parent&&c.preencode(d,n.parent)},encode(d,o){const t=(o.text?1:0)|(o.files?2:0)|(o.display?4:0)|(o.replyTo?8:0)|(o.parent?16:0)|(n>=18&&o.forwarded?32:0);e.uint.encode(d,t),o.text&&e.string.encode(d,o.text),o.files&&tn.encode(d,o.files),o.display&&rn.encode(d,o.display),o.replyTo&&c.encode(d,o.replyTo),o.parent&&c.encode(d,o.parent)},decode(d){const o=e.uint.decode(d);return{text:1&o?e.string.decode(d):null,files:2&o?tn.decode(d):null,display:4&o?rn.decode(d):null,replyTo:8&o?c.decode(d):null,parent:16&o?c.decode(d):null,forwarded:n>=18&&!!(32&o)}}},sn=dn,pn=nn,un={preencode(d,n){d.end++,n.text&&e.string.preencode(d,n.text),n.files&&sn.preencode(d,n.files),n.display&&pn.preencode(d,n.display),n.replyTo&&c.preencode(d,n.replyTo),n.parent&&c.preencode(d,n.parent)},encode(d,o){const t=(o.text?1:0)|(o.files?2:0)|(o.display?4:0)|(o.replyTo?8:0)|(o.parent?16:0)|(n>=18&&o.forwarded?32:0);e.uint.encode(d,t),o.text&&e.string.encode(d,o.text),o.files&&sn.encode(d,o.files),o.display&&pn.encode(d,o.display),o.replyTo&&c.encode(d,o.replyTo),o.parent&&c.encode(d,o.parent)},decode(d){const o=e.uint.decode(d);return{text:1&o?e.string.decode(d):null,files:2&o?sn.decode(d):null,display:4&o?pn.decode(d):null,replyTo:8&o?c.decode(d):null,parent:16&o?c.decode(d):null,forwarded:n>=18&&!!(32&o)}}},ln={preencode(e,d){e.end++},encode(d,n){const o=(n.isEdited?1:0)|(n.isDeleted?2:0)|(n.isPinned?4:0);e.uint.encode(d,o)},decode(d){const n=e.uint.decode(d);return{isEdited:!!(1&n),isDeleted:!!(2&n),isPinned:!!(4&n)}}},fn={preencode(d,n){e.uint.preencode(d,n.thread),e.uint.preencode(d,n.index)},encode(d,n){e.uint.encode(d,n.thread),e.uint.encode(d,n.index)},decode:d=>({thread:e.uint.decode(d),index:e.uint.decode(d)})},mn=e.frame(O),yn={preencode(d,n){e.uint.preencode(d,n.id),e.uint.preencode(d,n.count),d.end++,n.parent&&c.preencode(d,n.parent),n.stats&&mn.preencode(d,n.stats)},encode(d,n){const o=(n.parent?1:0)|(n.stats?2:0);e.uint.encode(d,n.id),e.uint.encode(d,n.count),e.uint.encode(d,o),n.parent&&c.encode(d,n.parent),n.stats&&mn.encode(d,n.stats)},decode(d){const n=e.uint.decode(d),o=e.uint.decode(d),t=e.uint.decode(d);return{id:n,count:o,parent:1&t?c.decode(d):null,stats:2&t?mn.decode(d):null}}},bn=e.frame(ln),xn=e.frame(an),kn=e.frame(Md),vn={preencode(d,n){fn.preencode(d,n.id),c.preencode(d,n.oplog),e.uint.preencode(d,n.clock),e.uint.preencode(d,n.timestamp),d.end++,n.editedAt&&e.uint.preencode(d,n.editedAt),bn.preencode(d,n.status),n.message&&xn.preencode(d,n.message),n.event&&kn.preencode(d,n.event)},encode(d,n){const o=(n.editedAt?1:0)|(n.message?2:0)|(n.event?4:0);fn.encode(d,n.id),c.encode(d,n.oplog),e.uint.encode(d,n.clock),e.uint.encode(d,n.timestamp),e.uint.encode(d,o),n.editedAt&&e.uint.encode(d,n.editedAt),bn.encode(d,n.status),n.message&&xn.encode(d,n.message),n.event&&kn.encode(d,n.event)},decode(d){const n=fn.decode(d),o=c.decode(d),t=e.uint.decode(d),r=e.uint.decode(d),i=e.uint.decode(d);return{id:n,oplog:o,clock:t,timestamp:r,editedAt:1&i?e.uint.decode(d):0,status:bn.decode(d),message:2&i?xn.decode(d):null,event:4&i?kn.decode(d):null}}},gn=bn,hn=e.frame(un),Kn=kn,wn={preencode(d,n){fn.preencode(d,n.id),c.preencode(d,n.oplog),e.uint.preencode(d,n.clock),e.uint.preencode(d,n.timestamp),d.end++,n.editedAt&&e.uint.preencode(d,n.editedAt),gn.preencode(d,n.status),n.message&&hn.preencode(d,n.message),n.event&&Kn.preencode(d,n.event)},encode(d,n){const o=(n.editedAt?1:0)|(n.message?2:0)|(n.event?4:0);fn.encode(d,n.id),c.encode(d,n.oplog),e.uint.encode(d,n.clock),e.uint.encode(d,n.timestamp),e.uint.encode(d,o),n.editedAt&&e.uint.encode(d,n.editedAt),gn.encode(d,n.status),n.message&&hn.encode(d,n.message),n.event&&Kn.encode(d,n.event)},decode(d){const n=fn.decode(d),o=c.decode(d),t=e.uint.decode(d),r=e.uint.decode(d),i=e.uint.decode(d);return{id:n,oplog:o,clock:t,timestamp:r,editedAt:1&i?e.uint.decode(d):0,status:gn.decode(d),message:2&i?hn.decode(d):null,event:4&i?Kn.decode(d):null}}},An=_,Tn=e.frame(cn),Pn={preencode(e,d){An.preencode(e,d.header),Tn.preencode(e,d.message)},encode(e,d){An.encode(e,d.header),Tn.encode(e,d.message)},decode:e=>({header:An.decode(e),message:Tn.decode(e)})},Sn=_,Rn={preencode(e,d){Sn.preencode(e,d.header),c.preencode(e,d.oplog)},encode(e,d){Sn.encode(e,d.header),c.encode(e,d.oplog)},decode:e=>({header:Sn.decode(e),oplog:c.decode(e)})},Cn=_,Dn=Tn,Fn={preencode(e,d){Cn.preencode(e,d.header),c.preencode(e,d.oplog),Dn.preencode(e,d.message)},encode(e,d){Cn.encode(e,d.header),c.encode(e,d.oplog),Dn.encode(e,d.message)},decode:e=>({header:Cn.decode(e),oplog:c.decode(e),message:Dn.decode(e)})},Mn=_,qn={preencode(e,d){Mn.preencode(e,d.header),c.preencode(e,d.oplog),e.end++},encode(d,n){const o=n.isPinned?1:0;Mn.encode(d,n.header),c.encode(d,n.oplog),e.uint.encode(d,o)},decode:d=>({header:Mn.decode(d),oplog:c.decode(d),isPinned:!!(1&e.uint.decode(d))})},Ln={preencode(d,n){fn.preencode(d,n.id),e.fixed32.preencode(d,n.sender),e.uint.preencode(d,n.clock),e.string.preencode(d,n.reaction)},encode(d,n){fn.encode(d,n.id),e.fixed32.encode(d,n.sender),e.uint.encode(d,n.clock),e.string.encode(d,n.reaction)},decode:d=>({id:fn.decode(d),sender:e.fixed32.decode(d),clock:e.uint.decode(d),reaction:e.string.decode(d)})},In={preencode(d,n){e.string.preencode(d,n.text),e.uint.preencode(d,n.count)},encode(d,n){e.string.encode(d,n.text),e.uint.encode(d,n.count)},decode:d=>({text:e.string.decode(d),count:e.uint.decode(d)})},En=e.array(e.frame(In)),Bn={preencode(d,o){fn.preencode(d,o.id),e.uint.preencode(d,o.total),En.preencode(d,o.reactions),d.end++,n>=11&&o.editedAt&&e.uint.preencode(d,o.editedAt)},encode(d,o){const c=n>=11&&o.editedAt?1:0;fn.encode(d,o.id),e.uint.encode(d,o.total),En.encode(d,o.reactions),e.uint.encode(d,c),n>=11&&o.editedAt&&e.uint.encode(d,o.editedAt)},decode(d){const o=fn.decode(d),c=e.uint.decode(d),t=En.decode(d),r=d.start<d.end?e.uint.decode(d):0;return{id:o,total:c,reactions:t,editedAt:n>=11&&1&r?e.uint.decode(d):0}}},Nn=_,jn={preencode(d,n){Nn.preencode(d,n.header),c.preencode(d,n.oplog),e.string.preencode(d,n.reaction)},encode(d,n){Nn.encode(d,n.header),c.encode(d,n.oplog),e.string.encode(d,n.reaction)},decode:d=>({header:Nn.decode(d),oplog:c.decode(d),reaction:e.string.decode(d)})},Vn=_,On={preencode(d,n){Vn.preencode(d,n.header),c.preencode(d,n.oplog),e.string.preencode(d,n.reaction)},encode(d,n){Vn.encode(d,n.header),c.encode(d,n.oplog),e.string.encode(d,n.reaction)},decode:d=>({header:Vn.decode(d),oplog:c.decode(d),reaction:e.string.decode(d)})},Jn=_,Un=e.frame(Z),Hn={preencode(d,n){Jn.preencode(d,n.header),e.uint.preencode(d,n.key),Un.preencode(d,n.config)},encode(d,n){Jn.encode(d,n.header),e.uint.encode(d,n.key),Un.encode(d,n.config)},decode:d=>({header:Jn.decode(d),key:e.uint.decode(d),config:Un.decode(d)})},zn={preencode(d,n){e.fixed32.preencode(d,n.memberKey),e.string.preencode(d,n.displayName),d.end++,n.avatar&&fi.preencode(d,n.avatar)},encode(d,n){const o=n.avatar?1:0;e.fixed32.encode(d,n.memberKey),e.string.encode(d,n.displayName),e.uint.encode(d,o),n.avatar&&fi.encode(d,n.avatar)},decode:d=>({memberKey:e.fixed32.decode(d),displayName:e.string.decode(d),avatar:1&e.uint.decode(d)?fi.decode(d):null})},Gn={preencode(d,n){e.fixed32.preencode(d,n.key),d.end++,n.username&&e.string.preencode(d,n.username)},encode(d,n){const o=n.username?1:0;e.fixed32.encode(d,n.key),e.uint.encode(d,o),n.username&&e.string.encode(d,n.username)},decode:d=>({key:e.fixed32.decode(d),username:1&e.uint.decode(d)?e.string.decode(d):null})},Qn=e.frame(Gn),Wn={preencode(d,n){e.fixed32.preencode(d,n.publicKey),d.end++,n.discoveryCoreKey&&e.fixed32.preencode(d,n.discoveryCoreKey),n.userRegistry&&Qn.preencode(d,n.userRegistry)},encode(d,n){const o=(n.discoveryCoreKey?1:0)|(n.userRegistry?2:0);e.fixed32.encode(d,n.publicKey),e.uint.encode(d,o),n.discoveryCoreKey&&e.fixed32.encode(d,n.discoveryCoreKey),n.userRegistry&&Qn.encode(d,n.userRegistry)},decode(d){const n=e.fixed32.decode(d),o=e.uint.decode(d);return{publicKey:n,discoveryCoreKey:1&o?e.fixed32.decode(d):null,userRegistry:2&o?Qn.decode(d):null}}},Xn=_,Yn=e.frame(Q),Zn=e.frame(W),$n=Un,_n=e.frame(Wn),eo=xe,no=e.array(e.frame(le)),oo={preencode(e,d){Xn.preencode(e,d.header),Yn.preencode(e,d.digest),Zn.preencode(e,d.capabilities),e.end++,d.config&&$n.preencode(e,d.config),d.identity&&_n.preencode(e,d.identity),d.bootstrapDevice&&eo.preencode(e,d.bootstrapDevice),d.initialMembers&&no.preencode(e,d.initialMembers)},encode(d,n){const o=(n.config?1:0)|(n.identity?2:0)|(n.bootstrapDevice?4:0)|(n.initialMembers?8:0);Xn.encode(d,n.header),Yn.encode(d,n.digest),Zn.encode(d,n.capabilities),e.uint.encode(d,o),n.config&&$n.encode(d,n.config),n.identity&&_n.encode(d,n.identity),n.bootstrapDevice&&eo.encode(d,n.bootstrapDevice),n.initialMembers&&no.encode(d,n.initialMembers)},decode(d){const n=Xn.decode(d),o=Yn.decode(d),c=Zn.decode(d),t=e.uint.decode(d);return{header:n,digest:o,capabilities:c,config:1&t?$n.decode(d):null,identity:2&t?_n.decode(d):null,bootstrapDevice:4&t?eo.decode(d):null,initialMembers:8&t?no.decode(d):null}}},co=_,to={preencode(d,n){co.preencode(d,n.header),e.uint.preencode(d,n.version)},encode(d,n){co.encode(d,n.header),e.uint.encode(d,n.version)},decode:d=>({header:co.decode(d),version:e.uint.decode(d)})},ro=_,io=G,ao={preencode(d,n){ro.preencode(d,n.header),e.uint.preencode(d,n.key),io.preencode(d,n.settings)},encode(d,n){ro.encode(d,n.header),e.uint.encode(d,n.key),io.encode(d,n.settings)},decode:d=>({header:ro.decode(d),key:e.uint.decode(d),settings:io.decode(d)})},so={preencode(d,n){e.fixed32.preencode(d,n.memberKey),mi.preencode(d,n.status),d.end++,n.mailbox&&e.fixed32.preencode(d,n.mailbox),n.roomKey&&e.fixed32.preencode(d,n.roomKey)},encode(d,n){const o=(n.mailbox?1:0)|(n.roomKey?2:0);e.fixed32.encode(d,n.memberKey),mi.encode(d,n.status),e.uint.encode(d,o),n.mailbox&&e.fixed32.encode(d,n.mailbox),n.roomKey&&e.fixed32.encode(d,n.roomKey)},decode(d){const n=e.fixed32.decode(d),o=mi.decode(d),c=e.uint.decode(d);return{memberKey:n,status:o,mailbox:1&c?e.fixed32.decode(d):null,roomKey:2&c?e.fixed32.decode(d):null}}},po={preencode(d,n){e.fixed32.preencode(d,n.roomKey),e.buffer.preencode(d,n.encryptionKey),e.fixed32.preencode(d,n.seed),o.preencode(d,n.initiator),e.fixed32.preencode(d,n.fastForwardTo)},encode(d,n){e.fixed32.encode(d,n.roomKey),e.buffer.encode(d,n.encryptionKey),e.fixed32.encode(d,n.seed),o.encode(d,n.initiator),e.fixed32.encode(d,n.fastForwardTo)},decode:d=>({roomKey:e.fixed32.decode(d),encryptionKey:e.buffer.decode(d),seed:e.fixed32.decode(d),initiator:o.decode(d),fastForwardTo:e.fixed32.decode(d)})},uo=e.array(e.frame(po)),lo=Y,fo={preencode(e,d){uo.preencode(e,d.sharedRooms),lo.preencode(e,d.blockedContacts)},encode(e,d){uo.encode(e,d.sharedRooms),lo.encode(e,d.blockedContacts)},decode:e=>({sharedRooms:uo.decode(e),blockedContacts:lo.decode(e)})},mo=_n,yo={preencode(e,d){mo.preencode(e,d.identity)},encode(e,d){mo.encode(e,d.identity)},decode:e=>({identity:mo.decode(e)})},bo={preencode(d,n){e.uint.preencode(d,n.rooms),e.uint.preencode(d,n.contacts)},encode(d,n){e.uint.encode(d,n.rooms),e.uint.encode(d,n.contacts)},decode:d=>({rooms:e.uint.decode(d),contacts:e.uint.decode(d)})},xo={preencode(d,n){e.uint.preencode(d,n.rooms),e.uint.preencode(d,n.contactRequests)},encode(d,n){e.uint.encode(d,n.rooms),e.uint.encode(d,n.contactRequests)},decode:d=>({rooms:e.uint.decode(d),contactRequests:e.uint.decode(d)})},ko={preencode(d,n){e.buffer.preencode(d,n.entropy)},encode(d,n){e.buffer.encode(d,n.entropy)},decode:d=>({entropy:e.buffer.decode(d)})},vo={preencode(d,n){e.fixed32.preencode(d,n.publicKey),e.fixed32.preencode(d,n.devicePublicKey),e.fixed32.preencode(d,n.writerKey)},encode(d,n){e.fixed32.encode(d,n.publicKey),e.fixed32.encode(d,n.devicePublicKey),e.fixed32.encode(d,n.writerKey)},decode:d=>({publicKey:e.fixed32.decode(d),devicePublicKey:e.fixed32.decode(d),writerKey:e.fixed32.decode(d)})},go=e.frame(vo),ho={preencode(d,c){e.fixed32.preencode(d,c.id),e.fixed32.preencode(d,c.invitationSeed),e.fixed32.preencode(d,c.mailbox),r.preencode(d,c.responseKeyPair),o.preencode(d,c.initiator),o.preencode(d,c.inviter),d.end++,c.identity&&go.preencode(d,c.identity),n>=20&&c.buildType&&Vt.preencode(d,c.buildType)},encode(d,c){const t=(c.identity?1:0)|(n>=20&&c.buildType?2:0);e.fixed32.encode(d,c.id),e.fixed32.encode(d,c.invitationSeed),e.fixed32.encode(d,c.mailbox),r.encode(d,c.responseKeyPair),o.encode(d,c.initiator),o.encode(d,c.inviter),e.uint.encode(d,t),c.identity&&go.encode(d,c.identity),n>=20&&c.buildType&&Vt.encode(d,c.buildType)},decode(d){const c=e.fixed32.decode(d),t=e.fixed32.decode(d),i=e.fixed32.decode(d),a=r.decode(d),s=o.decode(d),p=o.decode(d),u=e.uint.decode(d);return{id:c,invitationSeed:t,mailbox:i,responseKeyPair:a,initiator:s,inviter:p,identity:1&u?go.decode(d):null,buildType:n>=20&&2&u?Vt.decode(d):null}}},Ko=_,wo={preencode(d,n){Ko.preencode(d,n.header),e.buffer.preencode(d,n.blindResponse)},encode(d,n){Ko.encode(d,n.header),e.buffer.encode(d,n.blindResponse)},decode:d=>({header:Ko.decode(d),blindResponse:e.buffer.decode(d)})},Ao=_,To=e.frame(ho),Po={preencode(e,d){Ao.preencode(e,d.header),To.preencode(e,d.invitation)},encode(e,d){Ao.encode(e,d.header),To.encode(e,d.invitation)},decode:e=>({header:Ao.decode(e),invitation:To.decode(e)})},So=_,Ro={preencode(d,n){So.preencode(d,n.header),e.fixed32.preencode(d,n.id)},encode(d,n){So.encode(d,n.header),e.fixed32.encode(d,n.id)},decode:d=>({header:So.decode(d),id:e.fixed32.decode(d)})},Co={preencode(d,n){e.fixed32.preencode(d,n.publicKey),e.fixed32.preencode(d,n.devicePublicKey),d.end++,n.privateProfileKey&&e.fixed32.preencode(d,n.privateProfileKey),n.deviceKeyPair&&r.preencode(d,n.deviceKeyPair),e.buffer.preencode(d,n.deviceProof)},encode(d,n){const o=(n.privateProfileKey?1:0)|(n.deviceKeyPair?2:0);e.fixed32.encode(d,n.publicKey),e.fixed32.encode(d,n.devicePublicKey),e.uint.encode(d,o),n.privateProfileKey&&e.fixed32.encode(d,n.privateProfileKey),n.deviceKeyPair&&r.encode(d,n.deviceKeyPair),e.buffer.encode(d,n.deviceProof)},decode(d){const n=e.fixed32.decode(d),o=e.fixed32.decode(d),c=e.uint.decode(d);return{publicKey:n,devicePublicKey:o,privateProfileKey:1&c?e.fixed32.decode(d):null,deviceKeyPair:2&c?r.decode(d):null,deviceProof:e.buffer.decode(d)}}},Do={preencode(e,d){e.end++},encode(d,o){const c=(o.isActive?1:0)|(o.isFullyMuted?2:0)|(o.isMentionsOnlyMuted?4:0)|(n>=9&&o.isReadOnly?8:0)|(n>=18&&o.isFavorite?16:0);e.uint.encode(d,c)},decode(d){const o=e.uint.decode(d);return{isActive:!!(1&o),isFullyMuted:!!(2&o),isMentionsOnlyMuted:!!(4&o),isReadOnly:n>=9&&!!(8&o),isFavorite:n>=18&&!!(16&o)}}},Fo=e.frame(Do),Mo=e.frame(Co),qo=go,Lo={preencode(d,c){e.fixed32.preencode(d,c.roomKey),e.buffer.preencode(d,c.encryptionKey),e.fixed32.preencode(d,c.mailbox),Fo.preencode(d,c.status),e.uint.preencode(d,c.clock),d.end++,c.initiator&&o.preencode(d,c.initiator),c.fastForwardTo&&e.fixed32.preencode(d,c.fastForwardTo),c.identitySwap&&Mo.preencode(d,c.identitySwap),n>=6&&c.identitySwapV2&&qo.preencode(d,c.identitySwapV2),n>=10&&c.contact&&e.fixed32.preencode(d,c.contact)},encode(d,c){const t=(c.initiator?1:0)|(c.fastForwardTo?2:0)|(c.identitySwap?4:0)|(n>=6&&c.identitySwapV2?8:0)|(n>=10&&c.contact?16:0);e.fixed32.encode(d,c.roomKey),e.buffer.encode(d,c.encryptionKey),e.fixed32.encode(d,c.mailbox),Fo.encode(d,c.status),e.uint.encode(d,c.clock),e.uint.encode(d,t),c.initiator&&o.encode(d,c.initiator),c.fastForwardTo&&e.fixed32.encode(d,c.fastForwardTo),c.identitySwap&&Mo.encode(d,c.identitySwap),n>=6&&c.identitySwapV2&&qo.encode(d,c.identitySwapV2),n>=10&&c.contact&&e.fixed32.encode(d,c.contact)},decode(d){const c=e.fixed32.decode(d),t=e.buffer.decode(d),r=e.fixed32.decode(d),i=Fo.decode(d),a=e.uint.decode(d),s=e.uint.decode(d);return{roomKey:c,encryptionKey:t,mailbox:r,status:i,clock:a,initiator:1&s?o.decode(d):null,fastForwardTo:2&s?e.fixed32.decode(d):null,identitySwap:4&s?Mo.decode(d):null,identitySwapV2:n>=6&&8&s?qo.decode(d):null,contact:n>=10&&16&s?e.fixed32.decode(d):null}}},Io=_,Eo={preencode(d,n){Io.preencode(d,n.header),e.fixed32.preencode(d,n.roomKey),e.buffer.preencode(d,n.encryptionKey),e.fixed32.preencode(d,n.mailbox),d.end++,n.fastForwardTo&&e.fixed32.preencode(d,n.fastForwardTo),n.initiator&&o.preencode(d,n.initiator),n.dm&&e.fixed32.preencode(d,n.dm)},encode(d,c){const t=(c.fastForwardTo?1:0)|(c.initiator?2:0)|(c.dm?4:0)|(n>=9&&c.isReadOnly?8:0);Io.encode(d,c.header),e.fixed32.encode(d,c.roomKey),e.buffer.encode(d,c.encryptionKey),e.fixed32.encode(d,c.mailbox),e.uint.encode(d,t),c.fastForwardTo&&e.fixed32.encode(d,c.fastForwardTo),c.initiator&&o.encode(d,c.initiator),c.dm&&e.fixed32.encode(d,c.dm)},decode(d){const c=Io.decode(d),t=e.fixed32.decode(d),r=e.buffer.decode(d),i=e.fixed32.decode(d),a=e.uint.decode(d);return{header:c,roomKey:t,encryptionKey:r,mailbox:i,fastForwardTo:1&a?e.fixed32.decode(d):null,initiator:2&a?o.decode(d):null,dm:4&a?e.fixed32.decode(d):null,isReadOnly:n>=9&&!!(8&a)}}},Bo=_,No={preencode(d,n){Bo.preencode(d,n.header),e.fixed32.preencode(d,n.discoveryKey)},encode(d,n){Bo.encode(d,n.header),e.fixed32.encode(d,n.discoveryKey)},decode:d=>({header:Bo.decode(d),discoveryKey:e.fixed32.decode(d)})},jo=_,Vo=Fo,Oo={preencode(d,n){jo.preencode(d,n.header),e.fixed32.preencode(d,n.roomKey),e.uint.preencode(d,n.key),Vo.preencode(d,n.status)},encode(d,n){jo.encode(d,n.header),e.fixed32.encode(d,n.roomKey),e.uint.encode(d,n.key),Vo.encode(d,n.status)},decode:d=>({header:jo.decode(d),roomKey:e.fixed32.decode(d),key:e.uint.decode(d),status:Vo.decode(d)})},Jo={preencode(e,d){e.end++},encode(d,n){const o=n.isBlocked?1:0;e.uint.encode(d,o)},decode:d=>({isBlocked:!!(1&e.uint.decode(d))})},Uo={preencode(d,n){e.fixed32.preencode(d,n.memberKey),e.uint.preencode(d,n.clock),yi.preencode(d,n.status),d.end++,n.mailbox&&e.fixed32.preencode(d,n.mailbox),n.roomKey&&e.fixed32.preencode(d,n.roomKey)},encode(d,n){const o=(n.mailbox?1:0)|(n.roomKey?2:0);e.fixed32.encode(d,n.memberKey),e.uint.encode(d,n.clock),yi.encode(d,n.status),e.uint.encode(d,o),n.mailbox&&e.fixed32.encode(d,n.mailbox),n.roomKey&&e.fixed32.encode(d,n.roomKey)},decode(d){const n=e.fixed32.decode(d),o=e.uint.decode(d),c=yi.decode(d),t=e.uint.decode(d);return{memberKey:n,clock:o,status:c,mailbox:1&t?e.fixed32.decode(d):null,roomKey:2&t?e.fixed32.decode(d):null}}},Ho=_,zo=e.frame(so),Go={preencode(e,d){Ho.preencode(e,d.header),zo.preencode(e,d.contact)},encode(e,d){Ho.encode(e,d.header),zo.encode(e,d.contact)},decode:e=>({header:Ho.decode(e),contact:zo.decode(e)})},Qo=_,Wo={preencode(d,n){Qo.preencode(d,n.header),e.fixed32.preencode(d,n.memberKey),e.uint.preencode(d,n.key),bi.preencode(d,n.status)},encode(d,n){Qo.encode(d,n.header),e.fixed32.encode(d,n.memberKey),e.uint.encode(d,n.key),bi.encode(d,n.status)},decode:d=>({header:Qo.decode(d),memberKey:e.fixed32.decode(d),key:e.uint.decode(d),status:bi.decode(d)})},Xo=_,Yo={preencode(d,n){Xo.preencode(d,n.header),e.fixed32.preencode(d,n.memberKey)},encode(d,n){Xo.encode(d,n.header),e.fixed32.encode(d,n.memberKey)},decode:d=>({header:Xo.decode(d),memberKey:e.fixed32.decode(d)})},Zo={preencode(e,d){e.end++},encode(d,n){const o=(n.isPending?1:0)|(n.isAccepted?2:0)|(n.isRejected?4:0)|(n.isDiscarded?8:0)|(n.isSeen?16:0);e.uint.encode(d,o)},decode(d){const n=e.uint.decode(d);return{isPending:!!(1&n),isAccepted:!!(2&n),isRejected:!!(4&n),isDiscarded:!!(8&n),isSeen:!!(16&n)}}},$o=ke,_o=e.frame(i),ec={preencode(d,n){$o.preencode(d,n.sender),_o.preencode(d,n.keys),e.fixed32.preencode(d,n.mailbox),d.end++,n.message&&e.string.preencode(d,n.message)},encode(d,n){const o=n.message?1:0;$o.encode(d,n.sender),_o.encode(d,n.keys),e.fixed32.encode(d,n.mailbox),e.uint.encode(d,o),n.message&&e.string.encode(d,n.message)},decode:d=>({sender:$o.decode(d),keys:_o.decode(d),mailbox:e.fixed32.decode(d),message:1&e.uint.decode(d)?e.string.decode(d):null})},dc=e.frame(ec),nc={preencode(e,d){dc.preencode(e,d.body),ce.preencode(e,d.attestation)},encode(e,d){dc.encode(e,d.body),ce.encode(e,d.attestation)},decode:e=>({body:dc.decode(e),attestation:ce.decode(e)})},oc=ue,cc=e.frame(Zo),tc=_o,rc={preencode(d,o){e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.clock),oc.preencode(d,o.sender),cc.preencode(d,o.status),tc.preencode(d,o.keys),e.fixed32.preencode(d,o.mailbox),d.end++,o.message&&e.string.preencode(d,o.message),n>=11&&o.sentAt&&e.uint.preencode(d,o.sentAt)},encode(d,o){const c=(o.message?1:0)|(n>=11&&o.sentAt?2:0);e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.clock),oc.encode(d,o.sender),cc.encode(d,o.status),tc.encode(d,o.keys),e.fixed32.encode(d,o.mailbox),e.uint.encode(d,c),o.message&&e.string.encode(d,o.message),n>=11&&o.sentAt&&e.uint.encode(d,o.sentAt)},decode(d){const o=e.fixed32.decode(d),c=e.uint.decode(d),t=oc.decode(d),r=cc.decode(d),i=tc.decode(d),a=e.fixed32.decode(d),s=e.uint.decode(d);return{memberKey:o,clock:c,sender:t,status:r,keys:i,mailbox:a,message:1&s?e.string.decode(d):null,sentAt:n>=11&&2&s?e.uint.decode(d):0}}},ic=_,ac={preencode(d,n){ic.preencode(d,n.header),e.buffer.preencode(d,n.blindRequest)},encode(d,n){ic.encode(d,n.header),e.buffer.encode(d,n.blindRequest)},decode:d=>({header:ic.decode(d),blindRequest:e.buffer.decode(d)})},sc=_,pc=cc,uc={preencode(d,o){sc.preencode(d,o.header),e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.key),pc.preencode(d,o.status),d.end++,n>=10&&o.roomKey&&e.fixed32.preencode(d,o.roomKey)},encode(d,o){const c=n>=10&&o.roomKey?1:0;sc.encode(d,o.header),e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.key),pc.encode(d,o.status),e.uint.encode(d,c),n>=10&&o.roomKey&&e.fixed32.encode(d,o.roomKey)},decode(d){const o=sc.decode(d),c=e.fixed32.decode(d),t=e.uint.decode(d),r=pc.decode(d),i=d.start<d.end?e.uint.decode(d):0;return{header:o,memberKey:c,key:t,status:r,roomKey:n>=10&&1&i?e.fixed32.decode(d):null}}},lc={preencode(d,n){e.uint.preencode(d,n.timestamp),e.fixed32.preencode(d,n.key),e.fixed32.preencode(d,n.mailbox)},encode(d,n){e.uint.encode(d,n.timestamp),e.fixed32.encode(d,n.key),e.fixed32.encode(d,n.mailbox)},decode:d=>({version:e.uint.decode(d),timestamp:e.uint.decode(d),key:e.fixed32.decode(d),mailbox:e.fixed32.decode(d)})},fc={preencode(d,n){switch(e.uint.preencode(d,n.version),n.version){case 0:case 1:lc.preencode(d,n);break;default:throw new Error("Unsupported version")}},encode(d,n){switch(e.uint.encode(d,n.version),n.version){case 0:case 1:lc.encode(d,n);break;default:throw new Error("Unsupported version")}},decode(d){const n=d.start,o=e.uint.decode(d);switch(d.start=n,o){case 0:case 1:return lc.decode(d);default:throw new Error("Unsupported version")}}},mc=_,yc={preencode(d,o){mc.preencode(d,o.header),c.preencode(d,o.oplog),e.uint.preencode(d,o.index),xi.preencode(d,o.preview),d.end++,n>=7&&o.displayType&&Sc.preencode(d,o.displayType)},encode(d,o){const t=n>=7&&o.displayType?1:0;mc.encode(d,o.header),c.encode(d,o.oplog),e.uint.encode(d,o.index),xi.encode(d,o.preview),e.uint.encode(d,t),n>=7&&o.displayType&&Sc.encode(d,o.displayType)},decode(d){const o=mc.decode(d),t=c.decode(d),r=e.uint.decode(d),i=xi.decode(d),a=d.start<d.end?e.uint.decode(d):0;return{header:o,oplog:t,index:r,preview:i,displayType:n>=7&&1&a?Sc.decode(d):0}}},bc={preencode(d,o){d.end++,n>=3&&o.memberKey&&e.fixed32.preencode(d,o.memberKey)},encode(d,o){const c=n>=3&&o.memberKey?1:0;e.uint.encode(d,c),n>=3&&o.memberKey&&e.fixed32.encode(d,o.memberKey)},decode(d){const o=e.uint.decode(d);return{memberKey:n>=3&&1&o?e.fixed32.decode(d):null}}},xc=ue,kc={preencode(e,d){xc.preencode(e,d.profile),ce.preencode(e,d.attestation)},encode(e,d){xc.encode(e,d.profile),ce.encode(e,d.attestation)},decode:e=>({profile:xc.decode(e),attestation:ce.decode(e)})},vc=_,gc={preencode(d,n){vc.preencode(d,n.header),e.fixed32.preencode(d,n.key)},encode(d,n){vc.encode(d,n.header),e.fixed32.encode(d,n.key)},decode:d=>({header:vc.decode(d),key:e.fixed32.decode(d)})},hc={preencode(d,n){e.fixed32.preencode(d,n.deviceKey),ce.preencode(d,n.privateProfileIdentity),e.buffer.preencode(d,n.deviceProof)},encode(d,n){e.fixed32.encode(d,n.deviceKey),ce.encode(d,n.privateProfileIdentity),e.buffer.encode(d,n.deviceProof)},decode:d=>({deviceKey:e.fixed32.decode(d),privateProfileIdentity:ce.decode(d),deviceProof:e.buffer.decode(d)})},Kc={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.fixed32.preencode(d,o.encryptionKey),e.fixed32.preencode(d,o.seed),d.end++,n>=6&&o.fastForwardTo&&e.fixed32.preencode(d,o.fastForwardTo)},encode(d,o){const c=n>=6&&o.fastForwardTo?1:0;e.fixed32.encode(d,o.roomKey),e.fixed32.encode(d,o.encryptionKey),e.fixed32.encode(d,o.seed),e.uint.encode(d,c),n>=6&&o.fastForwardTo&&e.fixed32.encode(d,o.fastForwardTo)},decode(d){const o=e.fixed32.decode(d),c=e.fixed32.decode(d),t=e.fixed32.decode(d),r=e.uint.decode(d);return{roomKey:o,encryptionKey:c,seed:t,fastForwardTo:n>=6&&1&r?e.fixed32.decode(d):null}}},wc={preencode(d,o){e.fixed32.preencode(d,o.publicKey),e.fixed32.preencode(d,o.writerKey),e.fixed32.preencode(d,o.devicePublicKey),d.end++,n>=6&&o.privateProfileKey&&e.fixed32.preencode(d,o.privateProfileKey)},encode(d,o){const c=n>=6&&o.privateProfileKey?1:0;e.fixed32.encode(d,o.publicKey),e.fixed32.encode(d,o.writerKey),e.fixed32.encode(d,o.devicePublicKey),e.uint.encode(d,c),n>=6&&o.privateProfileKey&&e.fixed32.encode(d,o.privateProfileKey)},decode(d){const o=e.fixed32.decode(d),c=e.fixed32.decode(d),t=e.fixed32.decode(d),r=e.uint.decode(d);return{publicKey:o,writerKey:c,devicePublicKey:t,privateProfileKey:n>=6&&1&r?e.fixed32.decode(d):null}}},Ac=_,Tc={preencode(d,n){Ac.preencode(d,n.header),e.fixed32.preencode(d,n.memberKey)},encode(d,n){Ac.encode(d,n.header),e.fixed32.encode(d,n.memberKey)},decode:d=>({header:Ac.decode(d),memberKey:e.fixed32.decode(d)})},Pc={HttpLink:1,PearLink:2},Sc={preencode(e,d){e.end++},encode(d,n){if(n>2)throw new Error("Unknown enum");e.uint.encode(d,n)},decode:d=>e.uint.decode(d)},Rc=_,Cc={preencode(d,n){Rc.preencode(d,n.header),e.uint.preencode(d,n.value)},encode(d,n){Rc.encode(d,n.header),e.uint.encode(d,n.value)},decode:d=>({header:Rc.decode(d),value:e.uint.decode(d)})},Dc={preencode(d,n){e.uint.preencode(d,n.key),e.uint.preencode(d,n.value)},encode(d,n){e.uint.encode(d,n.key),e.uint.encode(d,n.value)},decode:d=>({key:e.uint.decode(d),value:e.uint.decode(d)})},Fc=_,Mc={preencode(d,o){Fc.preencode(d,o.header),e.uint.preencode(d,o.from),e.uint.preencode(d,o.to),d.end++,n>=20&&o.buildType&&Vt.preencode(d,o.buildType)},encode(d,o){const c=n>=20&&o.buildType?1:0;Fc.encode(d,o.header),e.uint.encode(d,o.from),e.uint.encode(d,o.to),e.uint.encode(d,c),n>=20&&o.buildType&&Vt.encode(d,o.buildType)},decode(d){const o=Fc.decode(d),c=e.uint.decode(d),t=e.uint.decode(d),r=d.start<d.end?e.uint.decode(d):0;return{header:o,from:c,to:t,buildType:n>=20&&1&r?Vt.decode(d):null}}},qc={RoomType:1,IsExperimental:2,IsJoiningDisabled:3,IsAppendingDisabled:4,IsCallingDisabled:5,IsMembershipEventsDisabled:6,IsAttachmentsDisabled:7,IsLinksDisabled:8},Lc={preencode(e,d){e.end++},encode(d,n){if(n>8)throw new Error("Unknown enum");e.uint.encode(d,n)},decode:d=>e.uint.decode(d)},Ic={en:"en",it:"it",ru:"ru",es:"es",de:"de"},Ec={preencode(e,d){e.end++},encode(d,n){switch(n){case"en":e.uint.encode(d,1);break;case"it":e.uint.encode(d,2);break;case"ru":e.uint.encode(d,3);break;case"es":e.uint.encode(d,4);break;case"de":e.uint.encode(d,5);break;default:throw new Error("Unknown enum")}},decode(d){switch(e.uint.decode(d)){case 1:return"en";case 2:return"it";case 3:return"ru";case 4:return"es";case 5:return"de";default:return null}}},Bc=Id,Nc={preencode(d,n){Bc.preencode(d,n.range),Ec.preencode(d,n.language),e.string.preencode(d,n.text)},encode(d,n){Bc.encode(d,n.range),Ec.encode(d,n.language),e.string.encode(d,n.text)},decode:d=>({range:Bc.decode(d),language:Ec.decode(d),text:e.string.decode(d)})},jc={preencode(d,n){e.fixed32.preencode(d,n.deviceKey),e.fixed32.preencode(d,n.key)},encode(d,n){e.fixed32.encode(d,n.deviceKey),e.fixed32.encode(d,n.key)},decode:d=>({deviceKey:e.fixed32.decode(d),key:e.fixed32.decode(d)})},Vc=_,Oc={preencode(d,n){Vc.preencode(d,n.header),e.fixed32.preencode(d,n.key)},encode(d,n){Vc.encode(d,n.header),e.fixed32.encode(d,n.key)},decode:d=>({header:Vc.decode(d),key:e.fixed32.decode(d)})},Jc=_,Uc={preencode(d,n){Jc.preencode(d,n.header),e.fixed32.preencode(d,n.key)},encode(d,n){Jc.encode(d,n.header),e.fixed32.encode(d,n.key)},decode:d=>({header:Jc.decode(d),key:e.fixed32.decode(d)})},Hc={Flag:1},zc={preencode(e,d){e.end++},encode(d,n){if(n>1)throw new Error("Unknown enum");e.uint.encode(d,n)},decode:d=>e.uint.decode(d)},Gc={preencode(d,n){fn.preencode(d,n.id),e.fixed32.preencode(d,n.sender),e.uint.preencode(d,n.clock),zc.preencode(d,n.label)},encode(d,n){fn.encode(d,n.id),e.fixed32.encode(d,n.sender),e.uint.encode(d,n.clock),zc.encode(d,n.label)},decode:d=>({id:fn.decode(d),sender:e.fixed32.decode(d),clock:e.uint.decode(d),label:zc.decode(d)})},Qc=_,Wc={preencode(e,d){Qc.preencode(e,d.header),c.preencode(e,d.oplog),zc.preencode(e,d.label)},encode(e,d){Qc.encode(e,d.header),c.encode(e,d.oplog),zc.encode(e,d.label)},decode:e=>({header:Qc.decode(e),oplog:c.decode(e),label:zc.decode(e)})},Xc=_,Yc={preencode(e,d){Xc.preencode(e,d.header),c.preencode(e,d.oplog),zc.preencode(e,d.label)},encode(e,d){Xc.encode(e,d.header),c.encode(e,d.oplog),zc.encode(e,d.label)},decode:e=>({header:Xc.decode(e),oplog:c.decode(e),label:zc.decode(e)})},Zc={preencode(d,n){zc.preencode(d,n.label),e.uint.preencode(d,n.count)},encode(d,n){zc.encode(d,n.label),e.uint.encode(d,n.count)},decode:d=>({label:zc.decode(d),count:e.uint.decode(d)})},$c=e.array(e.frame(Zc)),_c={preencode(d,o){fn.preencode(d,o.id),e.uint.preencode(d,o.total),$c.preencode(d,o.labels),e.uint.preencode(d,o.editedAt),d.end++,n>=15&&o.flagsClock&&e.uint.preencode(d,o.flagsClock),n>=15&&o.version&&e.uint.preencode(d,o.version)},encode(d,o){const c=(n>=15&&o.flagsClock?1:0)|(n>=15&&o.version?2:0)|(n>=16&&o.isDeleted?4:0);fn.encode(d,o.id),e.uint.encode(d,o.total),$c.encode(d,o.labels),e.uint.encode(d,o.editedAt),e.uint.encode(d,c),n>=15&&o.flagsClock&&e.uint.encode(d,o.flagsClock),n>=15&&o.version&&e.uint.encode(d,o.version)},decode(d){const o=fn.decode(d),c=e.uint.decode(d),t=$c.decode(d),r=e.uint.decode(d),i=d.start<d.end?e.uint.decode(d):0;return{id:o,total:c,labels:t,editedAt:r,flagsClock:n>=15&&1&i?e.uint.decode(d):0,version:n>=15&&2&i?e.uint.decode(d):0,isDeleted:n>=16&&!!(4&i)}}},et=_,dt={preencode(d,n){et.preencode(d,n.header),e.uint.preencode(d,n.length)},encode(d,n){et.encode(d,n.header),e.uint.encode(d,n.length)},decode:d=>({header:et.decode(d),length:e.uint.decode(d)})},nt={preencode(d,n){e.fixed32.preencode(d,n.memberKey),e.uint.preencode(d,n.length)},encode(d,n){e.fixed32.encode(d,n.memberKey),e.uint.encode(d,n.length)},decode:d=>({memberKey:e.fixed32.decode(d),length:e.uint.decode(d)})},ot=$,ct={preencode(e,d){e.end++},encode(d,o){const c=n>=13&&o.disableReadReceipts?1:0;e.uint.encode(d,c)},decode(d){const o=e.uint.decode(d);return{disableReadReceipts:n>=13&&!!(1&o)}}},tt={disableReadReceipts:"disableReadReceipts"},rt={preencode(e,d){e.end++},encode(d,n){if("disableReadReceipts"!==n)throw new Error("Unknown enum");e.uint.encode(d,1)},decode:d=>1===e.uint.decode(d)?"disableReadReceipts":null},it=_,at=e.frame(ct),st={preencode(e,d){it.preencode(e,d.header),rt.preencode(e,d.key),at.preencode(e,d.settings)},encode(e,d){it.encode(e,d.header),rt.encode(e,d.key),at.encode(e,d.settings)},decode:e=>({header:it.decode(e),key:rt.decode(e),settings:at.decode(e)})},pt={Flag:1},ut={preencode(e,d){e.end++},encode(d,n){if(n>1)throw new Error("Unknown enum");e.uint.encode(d,n)},decode:d=>e.uint.decode(d)},lt={preencode(d,n){e.fixed32.preencode(d,n.key),e.fixed32.preencode(d,n.sender),e.uint.preencode(d,n.clock),ut.preencode(d,n.label)},encode(d,n){e.fixed32.encode(d,n.key),e.fixed32.encode(d,n.sender),e.uint.encode(d,n.clock),ut.encode(d,n.label)},decode:d=>({key:e.fixed32.decode(d),sender:e.fixed32.decode(d),clock:e.uint.decode(d),label:ut.decode(d)})},ft=_,mt={preencode(d,n){ft.preencode(d,n.header),e.fixed32.preencode(d,n.key),ut.preencode(d,n.label)},encode(d,n){ft.encode(d,n.header),e.fixed32.encode(d,n.key),ut.encode(d,n.label)},decode:d=>({header:ft.decode(d),key:e.fixed32.decode(d),label:ut.decode(d)})},yt={preencode(d,n){ut.preencode(d,n.label),e.uint.preencode(d,n.count)},encode(d,n){ut.encode(d,n.label),e.uint.encode(d,n.count)},decode:d=>({label:ut.decode(d),count:e.uint.decode(d)})},bt=e.array(e.frame(yt)),xt={preencode(d,n){e.fixed32.preencode(d,n.key),e.uint.preencode(d,n.total),bt.preencode(d,n.labels),e.uint.preencode(d,n.editedAt),e.uint.preencode(d,n.flagsClock)},encode(d,n){e.fixed32.encode(d,n.key),e.uint.encode(d,n.total),bt.encode(d,n.labels),e.uint.encode(d,n.editedAt),e.uint.encode(d,n.flagsClock)},decode:d=>({key:e.fixed32.decode(d),total:e.uint.decode(d),labels:bt.decode(d),editedAt:e.uint.decode(d),flagsClock:e.uint.decode(d)})},kt={preencode(d,n){e.float64.preencode(d,n.latitude),e.float64.preencode(d,n.longitude)},encode(d,n){e.float64.encode(d,n.latitude),e.float64.encode(d,n.longitude)},decode:d=>({latitude:e.float64.decode(d),longitude:e.float64.decode(d)})},vt=_,gt={preencode(d,n){vt.preencode(d,n.header),e.fixed32.preencode(d,n.deviceKey),e.fixed32.preencode(d,n.fromDeviceKey)},encode(d,n){vt.encode(d,n.header),e.fixed32.encode(d,n.deviceKey),e.fixed32.encode(d,n.fromDeviceKey)},decode:d=>({header:vt.decode(d),deviceKey:e.fixed32.decode(d),fromDeviceKey:e.fixed32.decode(d)})},ht=_,Kt=Y,wt={preencode(d,o){ht.preencode(d,o.header),e.fixed32.preencode(d,o.callKey),e.buffer.preencode(d,o.encryptionKey),d.end++,n>=19&&o.streams&&Kt.preencode(d,o.streams),n>=19&&o.discoveryKey&&e.fixed32.preencode(d,o.discoveryKey),n>=19&&o.version&&e.uint.preencode(d,o.version)},encode(d,o){const c=(n>=19&&o.streams?1:0)|(n>=19&&o.discoveryKey?2:0)|(n>=19&&o.version?4:0);ht.encode(d,o.header),e.fixed32.encode(d,o.callKey),e.buffer.encode(d,o.encryptionKey),e.uint.encode(d,c),n>=19&&o.streams&&Kt.encode(d,o.streams),n>=19&&o.discoveryKey&&e.fixed32.encode(d,o.discoveryKey),n>=19&&o.version&&e.uint.encode(d,o.version)},decode(d){const o=ht.decode(d),c=e.fixed32.decode(d),t=e.buffer.decode(d),r=e.uint.decode(d);return{header:o,callKey:c,encryptionKey:t,streams:n>=19&&1&r?Kt.decode(d):null,discoveryKey:n>=19&&2&r?e.fixed32.decode(d):null,version:n>=19&&4&r?e.uint.decode(d):0}}},At=_,Tt=Y,Pt={preencode(d,o){At.preencode(d,o.header),e.fixed32.preencode(d,o.callKey),d.end++,n>=19&&o.streams&&Tt.preencode(d,o.streams)},encode(d,o){const c=n>=19&&o.streams?1:0;At.encode(d,o.header),e.fixed32.encode(d,o.callKey),e.uint.encode(d,c),n>=19&&o.streams&&Tt.encode(d,o.streams)},decode(d){const o=At.decode(d),c=e.fixed32.decode(d),t=e.uint.decode(d);return{header:o,callKey:c,streams:n>=19&&1&t?Tt.decode(d):null}}},St=_,Rt={preencode(d,n){St.preencode(d,n.header),e.fixed32.preencode(d,n.callKey)},encode(d,n){St.encode(d,n.header),e.fixed32.encode(d,n.callKey)},decode:d=>({header:St.decode(d),callKey:e.fixed32.decode(d)})},Ct=_,Dt={preencode(d,n){Ct.preencode(d,n.header),e.fixed32.preencode(d,n.callKey)},encode(d,n){Ct.encode(d,n.header),e.fixed32.encode(d,n.callKey)},decode:d=>({header:Ct.decode(d),callKey:e.fixed32.decode(d)})},Ft=_,Mt={preencode(d,n){Ft.preencode(d,n.header),e.fixed32.preencode(d,n.callKey),e.fixed32.preencode(d,n.streamKey)},encode(d,n){Ft.encode(d,n.header),e.fixed32.encode(d,n.callKey),e.fixed32.encode(d,n.streamKey)},decode:d=>({header:Ft.decode(d),callKey:e.fixed32.decode(d),streamKey:e.fixed32.decode(d)})},qt=_,Lt={preencode(d,n){qt.preencode(d,n.header),e.fixed32.preencode(d,n.callKey),e.fixed32.preencode(d,n.streamKey)},encode(d,n){qt.encode(d,n.header),e.fixed32.encode(d,n.callKey),e.fixed32.encode(d,n.streamKey)},decode:d=>({header:qt.decode(d),callKey:e.fixed32.decode(d),streamKey:e.fixed32.decode(d)})},It={preencode(d,o){e.fixed32.preencode(d,o.callKey),e.buffer.preencode(d,o.encryptionKey),e.uint.preencode(d,o.createdAt),d.end++,n>=19&&o.endedAt&&e.uint.preencode(d,o.endedAt),n>=19&&o.discoveryKey&&e.fixed32.preencode(d,o.discoveryKey),n>=19&&o.version&&e.uint.preencode(d,o.version)},encode(d,o){const c=(n>=19&&o.endedAt?1:0)|(n>=19&&o.discoveryKey?2:0)|(n>=19&&o.version?4:0);e.fixed32.encode(d,o.callKey),e.buffer.encode(d,o.encryptionKey),e.uint.encode(d,o.createdAt),e.uint.encode(d,c),n>=19&&o.endedAt&&e.uint.encode(d,o.endedAt),n>=19&&o.discoveryKey&&e.fixed32.encode(d,o.discoveryKey),n>=19&&o.version&&e.uint.encode(d,o.version)},decode(d){const o=e.fixed32.decode(d),c=e.buffer.decode(d),t=e.uint.decode(d),r=e.uint.decode(d);return{callKey:o,encryptionKey:c,createdAt:t,endedAt:n>=19&&1&r?e.uint.decode(d):0,discoveryKey:n>=19&&2&r?e.fixed32.decode(d):null,version:n>=19&&4&r?e.uint.decode(d):0}}},Et={preencode(d,n){e.fixed32.preencode(d,n.callKey),e.fixed32.preencode(d,n.memberKey),e.uint.preencode(d,n.createdAt)},encode(d,n){e.fixed32.encode(d,n.callKey),e.fixed32.encode(d,n.memberKey),e.uint.encode(d,n.createdAt)},decode:d=>({callKey:e.fixed32.decode(d),memberKey:e.fixed32.decode(d),createdAt:e.uint.decode(d)})},Bt={preencode(d,o){e.fixed32.preencode(d,o.callKey),e.fixed32.preencode(d,o.deviceKey),e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.createdAt),d.end++,n>=19&&o.swarmKey&&e.fixed32.preencode(d,o.swarmKey)},encode(d,o){const c=n>=19&&o.swarmKey?1:0;e.fixed32.encode(d,o.callKey),e.fixed32.encode(d,o.deviceKey),e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.createdAt),e.uint.encode(d,c),n>=19&&o.swarmKey&&e.fixed32.encode(d,o.swarmKey)},decode(d){const o=e.fixed32.decode(d),c=e.fixed32.decode(d),t=e.fixed32.decode(d),r=e.uint.decode(d),i=e.uint.decode(d);return{callKey:o,deviceKey:c,memberKey:t,createdAt:r,swarmKey:n>=19&&1&i?e.fixed32.decode(d):null}}},Nt={preencode(d,n){e.fixed32.preencode(d,n.callKey),e.fixed32.preencode(d,n.deviceKey),e.buffer.preencode(d,n.streamKey),e.uint.preencode(d,n.createdAt)},encode(d,n){e.fixed32.encode(d,n.callKey),e.fixed32.encode(d,n.deviceKey),e.buffer.encode(d,n.streamKey),e.uint.encode(d,n.createdAt)},decode:d=>({callKey:e.fixed32.decode(d),deviceKey:e.fixed32.decode(d),streamKey:e.buffer.decode(d),createdAt:e.uint.decode(d)})},jt={Nightly:"Nightly",Internal:"Internal",Production:"Production"},Vt={preencode(e,d){e.end++},encode(d,n){switch(n){case"Nightly":e.uint.encode(d,1);break;case"Internal":e.uint.encode(d,2);break;case"Production":e.uint.encode(d,3);break;default:throw new Error("Unknown enum")}},decode(d){switch(e.uint.decode(d)){case 1:return"Nightly";case 2:return"Internal";case 3:return"Production";default:return null}}},Ot=_,Jt={preencode(e,d){Ot.preencode(e,d.header)},encode(e,d){Ot.encode(e,d.header)},decode:e=>({header:Ot.decode(e)})},Ut=_,Ht={preencode(e,d){Ut.preencode(e,d.header)},encode(e,d){Ut.encode(e,d.header)},decode:e=>({header:Ut.decode(e)})},zt={preencode(e,d){},encode(e,d){},decode:e=>({key:null})},Gt=he,Qt={preencode(d,n){e.fixed32.preencode(d,n.id),Gt.preencode(d,n.request)},encode(d,n){e.fixed32.encode(d,n.id),Gt.encode(d,n.request)},decode:d=>({deviceKey:null,id:e.fixed32.decode(d),request:Gt.decode(d)})},Wt=re,Xt=ie,Yt={preencode(d,n){e.fixed32.preencode(d,n.memberKey),Wt.preencode(d,n.status),ki.preencode(d,n.profile),d.end++,n.invitation&&Xt.preencode(d,n.invitation)},encode(d,n){const o=n.invitation?1:0;e.fixed32.encode(d,n.memberKey),Wt.encode(d,n.status),ki.encode(d,n.profile),e.uint.encode(d,o),n.invitation&&Xt.encode(d,n.invitation)},decode:d=>({key:null,memberKey:e.fixed32.decode(d),status:Wt.decode(d),profile:ki.decode(d),invitation:1&e.uint.decode(d)?Xt.decode(d):null})},Zt={preencode(d,n){d.end++,n.profileAttestation&&e.buffer.preencode(d,n.profileAttestation),n.latestReceipt&&e.buffer.preencode(d,n.latestReceipt)},encode(d,n){const o=(n.profileAttestation?1:0)|(n.latestReceipt?2:0);e.uint.encode(d,o),n.profileAttestation&&e.buffer.encode(d,n.profileAttestation),n.latestReceipt&&e.buffer.encode(d,n.latestReceipt)},decode(d){const n=e.uint.decode(d);return{key:null,profileAttestation:1&n?e.buffer.decode(d):null,latestReceipt:2&n?e.buffer.decode(d):null}}},$t=ad,_t=ue,er={preencode(e,d){$t.preencode(e,d.status),_t.preencode(e,d.profile)},encode(e,d){$t.encode(e,d.status),_t.encode(e,d.profile)},decode:e=>({key:null,status:$t.decode(e),profile:_t.decode(e)})},dr={preencode(d,n){e.uint.preencode(d,n.mentions)},encode(d,n){e.uint.encode(d,n.mentions)},decode:d=>({key:null,mentions:e.uint.decode(d)})},nr=Ce,or=Le,cr={preencode(e,d){nr.preencode(e,d.response),or.preencode(e,d.metadata),e.end++,d.anchor&&o.preencode(e,d.anchor)},encode(d,n){const c=(n.anchor?1:0)|(n.isActive?2:0);nr.encode(d,n.response),or.encode(d,n.metadata),e.uint.encode(d,c),n.anchor&&o.encode(d,n.anchor)},decode(d){const n=nr.decode(d),c=or.decode(d),t=e.uint.decode(d);return{id:null,response:n,metadata:c,anchor:1&t?o.decode(d):null,isActive:!!(2&t)}}},tr=mn,rr={preencode(d,n){e.uint.preencode(d,n.count),d.end++,n.parent&&c.preencode(d,n.parent),n.stats&&tr.preencode(d,n.stats)},encode(d,n){const o=(n.parent?1:0)|(n.stats?2:0);e.uint.encode(d,n.count),e.uint.encode(d,o),n.parent&&c.encode(d,n.parent),n.stats&&tr.encode(d,n.stats)},decode(d){const n=e.uint.decode(d),o=e.uint.decode(d);return{id:0,count:n,parent:1&o?c.decode(d):null,stats:2&o?tr.decode(d):null}}},ir={preencode(e,d){},encode(e,d){},decode:e=>({thread:0,index:0})},ar=bn,sr=xn,pr=kn,ur={preencode(d,n){fn.preencode(d,n.id),c.preencode(d,n.oplog),e.uint.preencode(d,n.clock),e.uint.preencode(d,n.timestamp),d.end++,n.editedAt&&e.uint.preencode(d,n.editedAt),ar.preencode(d,n.status),n.message&&sr.preencode(d,n.message),n.event&&pr.preencode(d,n.event)},encode(d,n){const o=(n.editedAt?1:0)|(n.message?2:0)|(n.event?4:0);fn.encode(d,n.id),c.encode(d,n.oplog),e.uint.encode(d,n.clock),e.uint.encode(d,n.timestamp),e.uint.encode(d,o),n.editedAt&&e.uint.encode(d,n.editedAt),ar.encode(d,n.status),n.message&&sr.encode(d,n.message),n.event&&pr.encode(d,n.event)},decode(d){const n=fn.decode(d),o=c.decode(d),t=e.uint.decode(d),r=e.uint.decode(d),i=e.uint.decode(d);return{id:n,oplog:o,clock:t,timestamp:r,editedAt:1&i?e.uint.decode(d):0,status:ar.decode(d),message:2&i?sr.decode(d):null,event:4&i?pr.decode(d):null}}},lr=ir,fr=En,mr={preencode(d,o){fn.preencode(d,o.id),e.uint.preencode(d,o.total),fr.preencode(d,o.reactions),d.end++,n>=11&&o.editedAt&&e.uint.preencode(d,o.editedAt)},encode(d,o){const c=n>=11&&o.editedAt?1:0;fn.encode(d,o.id),e.uint.encode(d,o.total),fr.encode(d,o.reactions),e.uint.encode(d,c),n>=11&&o.editedAt&&e.uint.encode(d,o.editedAt)},decode(d){const o=fn.decode(d),c=e.uint.decode(d),t=fr.decode(d),r=d.start<d.end?e.uint.decode(d):0;return{id:o,total:c,reactions:t,editedAt:n>=11&&1&r?e.uint.decode(d):0}}},yr=ir,br={preencode(d,n){fn.preencode(d,n.id),e.uint.preencode(d,n.clock)},encode(d,n){fn.encode(d,n.id),e.uint.encode(d,n.clock)},decode:d=>({id:fn.decode(d),sender:null,clock:e.uint.decode(d),reaction:null})},xr=P,kr=h,vr={preencode(d,o){c.preencode(d,o.oplog),xr.preencode(d,o.status),kr.preencode(d,o.file),d.end++,n>=14&&o.version&&e.uint.preencode(d,o.version)},encode(d,o){const t=n>=14&&o.version?1:0;c.encode(d,o.oplog),xr.encode(d,o.status),kr.encode(d,o.file),e.uint.encode(d,t),n>=14&&o.version&&e.uint.encode(d,o.version)},decode(d){const o=c.decode(d),t=xr.decode(d),r=kr.decode(d),i=d.start<d.end?e.uint.decode(d):0;return{id:0,oplog:o,status:t,file:r,version:n>=14&&1&i?e.uint.decode(d):0}}},gr=go,hr={preencode(d,c){e.fixed32.preencode(d,c.invitationSeed),e.fixed32.preencode(d,c.mailbox),r.preencode(d,c.responseKeyPair),o.preencode(d,c.initiator),o.preencode(d,c.inviter),d.end++,c.identity&&gr.preencode(d,c.identity),n>=20&&c.buildType&&Vt.preencode(d,c.buildType)},encode(d,c){const t=(c.identity?1:0)|(n>=20&&c.buildType?2:0);e.fixed32.encode(d,c.invitationSeed),e.fixed32.encode(d,c.mailbox),r.encode(d,c.responseKeyPair),o.encode(d,c.initiator),o.encode(d,c.inviter),e.uint.encode(d,t),c.identity&&gr.encode(d,c.identity),n>=20&&c.buildType&&Vt.encode(d,c.buildType)},decode(d){const c=e.fixed32.decode(d),t=e.fixed32.decode(d),i=r.decode(d),a=o.decode(d),s=o.decode(d),p=e.uint.decode(d);return{id:null,invitationSeed:c,mailbox:t,responseKeyPair:i,initiator:a,inviter:s,identity:1&p?gr.decode(d):null,buildType:n>=20&&2&p?Vt.decode(d):null}}},Kr=Fo,wr=Mo,Ar=go,Tr={preencode(d,c){e.buffer.preencode(d,c.encryptionKey),e.fixed32.preencode(d,c.mailbox),Kr.preencode(d,c.status),e.uint.preencode(d,c.clock),d.end++,c.initiator&&o.preencode(d,c.initiator),c.fastForwardTo&&e.fixed32.preencode(d,c.fastForwardTo),c.identitySwap&&wr.preencode(d,c.identitySwap),n>=6&&c.identitySwapV2&&Ar.preencode(d,c.identitySwapV2),n>=10&&c.contact&&e.fixed32.preencode(d,c.contact)},encode(d,c){const t=(c.initiator?1:0)|(c.fastForwardTo?2:0)|(c.identitySwap?4:0)|(n>=6&&c.identitySwapV2?8:0)|(n>=10&&c.contact?16:0);e.buffer.encode(d,c.encryptionKey),e.fixed32.encode(d,c.mailbox),Kr.encode(d,c.status),e.uint.encode(d,c.clock),e.uint.encode(d,t),c.initiator&&o.encode(d,c.initiator),c.fastForwardTo&&e.fixed32.encode(d,c.fastForwardTo),c.identitySwap&&wr.encode(d,c.identitySwap),n>=6&&c.identitySwapV2&&Ar.encode(d,c.identitySwapV2),n>=10&&c.contact&&e.fixed32.encode(d,c.contact)},decode(d){const c=e.buffer.decode(d),t=e.fixed32.decode(d),r=Kr.decode(d),i=e.uint.decode(d),a=e.uint.decode(d);return{roomKey:null,encryptionKey:c,mailbox:t,status:r,clock:i,initiator:1&a?o.decode(d):null,fastForwardTo:2&a?e.fixed32.decode(d):null,identitySwap:4&a?wr.decode(d):null,identitySwapV2:n>=6&&8&a?Ar.decode(d):null,contact:n>=10&&16&a?e.fixed32.decode(d):null}}},Pr={preencode(d,n){e.uint.preencode(d,n.clock),vi.preencode(d,n.status),d.end++,n.mailbox&&e.fixed32.preencode(d,n.mailbox),n.roomKey&&e.fixed32.preencode(d,n.roomKey)},encode(d,n){const o=(n.mailbox?1:0)|(n.roomKey?2:0);e.uint.encode(d,n.clock),vi.encode(d,n.status),e.uint.encode(d,o),n.mailbox&&e.fixed32.encode(d,n.mailbox),n.roomKey&&e.fixed32.encode(d,n.roomKey)},decode(d){const n=e.uint.decode(d),o=vi.decode(d),c=e.uint.decode(d);return{memberKey:null,clock:n,status:o,mailbox:1&c?e.fixed32.decode(d):null,roomKey:2&c?e.fixed32.decode(d):null}}},Sr=ue,Rr=cc,Cr=_o,Dr={preencode(d,o){e.uint.preencode(d,o.clock),Sr.preencode(d,o.sender),Rr.preencode(d,o.status),Cr.preencode(d,o.keys),e.fixed32.preencode(d,o.mailbox),d.end++,o.message&&e.string.preencode(d,o.message),n>=11&&o.sentAt&&e.uint.preencode(d,o.sentAt)},encode(d,o){const c=(o.message?1:0)|(n>=11&&o.sentAt?2:0);e.uint.encode(d,o.clock),Sr.encode(d,o.sender),Rr.encode(d,o.status),Cr.encode(d,o.keys),e.fixed32.encode(d,o.mailbox),e.uint.encode(d,c),o.message&&e.string.encode(d,o.message),n>=11&&o.sentAt&&e.uint.encode(d,o.sentAt)},decode(d){const o=e.uint.decode(d),c=Sr.decode(d),t=Rr.decode(d),r=Cr.decode(d),i=e.fixed32.decode(d),a=e.uint.decode(d);return{memberKey:null,clock:o,sender:c,status:t,keys:r,mailbox:i,message:1&a?e.string.decode(d):null,sentAt:n>=11&&2&a?e.uint.decode(d):0}}},Fr={preencode(d,n){e.uint.preencode(d,n.value)},encode(d,n){e.uint.encode(d,n.value)},decode:d=>({key:0,value:e.uint.decode(d)})},Mr={preencode(d,n){ce.preencode(d,n.privateProfileIdentity),e.buffer.preencode(d,n.deviceProof)},encode(d,n){ce.encode(d,n.privateProfileIdentity),e.buffer.encode(d,n.deviceProof)},decode:d=>({deviceKey:null,privateProfileIdentity:ce.decode(d),deviceProof:e.buffer.decode(d)})},qr={preencode(d,n){d.end++,n.encryptionKey&&e.buffer.preencode(d,n.encryptionKey),n.fastForwardTo&&e.fixed32.preencode(d,n.fastForwardTo)},encode(d,n){const o=(n.encryptionKey?1:0)|(n.fastForwardTo?2:0);e.uint.encode(d,o),n.encryptionKey&&e.buffer.encode(d,n.encryptionKey),n.fastForwardTo&&e.fixed32.encode(d,n.fastForwardTo)},decode(d){const n=e.uint.decode(d);return{key:null,encryptionKey:1&n?e.buffer.decode(d):null,fastForwardTo:2&n?e.fixed32.decode(d):null}}},Lr=ue,Ir=cc,Er=_o,Br={preencode(d,o){e.uint.preencode(d,o.clock),Lr.preencode(d,o.sender),Ir.preencode(d,o.status),Er.preencode(d,o.keys),e.fixed32.preencode(d,o.mailbox),d.end++,o.message&&e.string.preencode(d,o.message),n>=11&&o.sentAt&&e.uint.preencode(d,o.sentAt)},encode(d,o){const c=(o.message?1:0)|(n>=11&&o.sentAt?2:0);e.uint.encode(d,o.clock),Lr.encode(d,o.sender),Ir.encode(d,o.status),Er.encode(d,o.keys),e.fixed32.encode(d,o.mailbox),e.uint.encode(d,c),o.message&&e.string.encode(d,o.message),n>=11&&o.sentAt&&e.uint.encode(d,o.sentAt)},decode(d){const o=e.uint.decode(d),c=Lr.decode(d),t=Ir.decode(d),r=Er.decode(d),i=e.fixed32.decode(d),a=e.uint.decode(d);return{memberKey:null,clock:o,sender:c,status:t,keys:r,mailbox:i,message:1&a?e.string.decode(d):null,sentAt:n>=11&&2&a?e.uint.decode(d):0}}},Nr={preencode(d,n){e.fixed32.preencode(d,n.key)},encode(d,n){e.fixed32.encode(d,n.key)},decode:d=>({deviceKey:null,key:e.fixed32.decode(d)})},jr=ir,Vr={preencode(d,n){fn.preencode(d,n.id),e.uint.preencode(d,n.clock)},encode(d,n){fn.encode(d,n.id),e.uint.encode(d,n.clock)},decode:d=>({id:fn.decode(d),sender:null,clock:e.uint.decode(d),label:0})},Or=ir,Jr=$c,Ur={preencode(d,o){fn.preencode(d,o.id),e.uint.preencode(d,o.total),Jr.preencode(d,o.labels),e.uint.preencode(d,o.editedAt),d.end++,n>=15&&o.flagsClock&&e.uint.preencode(d,o.flagsClock),n>=15&&o.version&&e.uint.preencode(d,o.version)},encode(d,o){const c=(n>=15&&o.flagsClock?1:0)|(n>=15&&o.version?2:0)|(n>=16&&o.isDeleted?4:0);fn.encode(d,o.id),e.uint.encode(d,o.total),Jr.encode(d,o.labels),e.uint.encode(d,o.editedAt),e.uint.encode(d,c),n>=15&&o.flagsClock&&e.uint.encode(d,o.flagsClock),n>=15&&o.version&&e.uint.encode(d,o.version)},decode(d){const o=fn.decode(d),c=e.uint.decode(d),t=Jr.decode(d),r=e.uint.decode(d),i=d.start<d.end?e.uint.decode(d):0;return{id:o,total:c,labels:t,editedAt:r,flagsClock:n>=15&&1&i?e.uint.decode(d):0,version:n>=15&&2&i?e.uint.decode(d):0,isDeleted:n>=16&&!!(4&i)}}},Hr={preencode(d,n){e.uint.preencode(d,n.length)},encode(d,n){e.uint.encode(d,n.length)},decode:d=>({memberKey:null,length:e.uint.decode(d)})},zr=zt,Gr={preencode(d,n){e.uint.preencode(d,n.clock)},encode(d,n){e.uint.encode(d,n.clock)},decode:d=>({key:null,sender:null,clock:e.uint.decode(d),label:0})},Qr=bt,Wr={preencode(d,n){e.uint.preencode(d,n.total),Qr.preencode(d,n.labels),e.uint.preencode(d,n.editedAt),e.uint.preencode(d,n.flagsClock)},encode(d,n){e.uint.encode(d,n.total),Qr.encode(d,n.labels),e.uint.encode(d,n.editedAt),e.uint.encode(d,n.flagsClock)},decode:d=>({key:null,total:e.uint.decode(d),labels:Qr.decode(d),editedAt:e.uint.decode(d),flagsClock:e.uint.decode(d)})},Xr={preencode(d,o){e.buffer.preencode(d,o.encryptionKey),e.uint.preencode(d,o.createdAt),d.end++,n>=19&&o.endedAt&&e.uint.preencode(d,o.endedAt),n>=19&&o.discoveryKey&&e.fixed32.preencode(d,o.discoveryKey),n>=19&&o.version&&e.uint.preencode(d,o.version)},encode(d,o){const c=(n>=19&&o.endedAt?1:0)|(n>=19&&o.discoveryKey?2:0)|(n>=19&&o.version?4:0);e.buffer.encode(d,o.encryptionKey),e.uint.encode(d,o.createdAt),e.uint.encode(d,c),n>=19&&o.endedAt&&e.uint.encode(d,o.endedAt),n>=19&&o.discoveryKey&&e.fixed32.encode(d,o.discoveryKey),n>=19&&o.version&&e.uint.encode(d,o.version)},decode(d){const o=e.buffer.decode(d),c=e.uint.decode(d),t=e.uint.decode(d);return{callKey:null,encryptionKey:o,createdAt:c,endedAt:n>=19&&1&t?e.uint.decode(d):0,discoveryKey:n>=19&&2&t?e.fixed32.decode(d):null,version:n>=19&&4&t?e.uint.decode(d):0}}},Yr={preencode(d,n){e.uint.preencode(d,n.createdAt)},encode(d,n){e.uint.encode(d,n.createdAt)},decode:d=>({callKey:null,memberKey:null,createdAt:e.uint.decode(d)})},Zr={preencode(d,o){e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.createdAt),d.end++,n>=19&&o.swarmKey&&e.fixed32.preencode(d,o.swarmKey)},encode(d,o){const c=n>=19&&o.swarmKey?1:0;e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.createdAt),e.uint.encode(d,c),n>=19&&o.swarmKey&&e.fixed32.encode(d,o.swarmKey)},decode(d){const o=e.fixed32.decode(d),c=e.uint.decode(d),t=e.uint.decode(d);return{callKey:null,deviceKey:null,memberKey:o,createdAt:c,swarmKey:n>=19&&1&t?e.fixed32.decode(d):null}}},$r={preencode(d,n){e.fixed32.preencode(d,n.deviceKey),e.uint.preencode(d,n.createdAt)},encode(d,n){e.fixed32.encode(d,n.deviceKey),e.uint.encode(d,n.createdAt)},decode:d=>({callKey:null,deviceKey:e.fixed32.decode(d),streamKey:null,createdAt:e.uint.decode(d)})},_r=Nr,ei=e.frame(A),di=ei,ni=e.array(Ec),oi=e.frame(pe),ci=ei,ti=oi,ri=e.frame(Kc),ii=oi,ai=e.frame(md),si=e.frame(bc),pi=e.frame(kt),ui=pi,li=e.array(e.frame(Nc)),fi=ei,mi=e.frame(Jo),yi=mi,bi=mi,xi=ei,ki=oi,vi=mi;function gi(e){n=e}function hi(d,o,c=20){return n=c,e.encode(Ai(d),o)}function Ki(d,o,c=20){return n=c,e.decode(Ai(d),o)}function wi(e){switch(e){case"@keet/room-type":return J;case"@keet/display-type":return Pc;case"@keet/system-settings-keys":return qc;case"@keet/room-supported-language":return Ic;case"@keet/label-type":return Hc;case"@keet-private-id/user-settings-key":return tt;case"@keet/member-label-type":return pt;case"@keet/build-type":return jt;default:throw new Error("Enum not found "+e)}}function Ai(e){switch(e){case"@keet/head":return o;case"@keet/oplog-id":return c;case"@keet/encryption-keypair":return t;case"@keet/signing-keypair":return r;case"@keet/room-keys":return i;case"@keet/operation-header":return a;case"@keet/blob-pointer":return s;case"@keet/file-dimensions":return p;case"@keet/file-metadata":return l;case"@keet/external-drive-pointer":return f;case"@keet/external-blob-pointer":return m;case"@keet/file-pointer":return x;case"@keet/file":return g;case"@keet/image-file":return A;case"@keet/file-status":return T;case"@keet/file-record":return R;case"@keet/device-status":return C;case"@keet/member-status":return D;case"@keet/member-moderation-status":return F;case"@keet/abi":return M;case"@keet/device-stats":return q;case"@keet/member-stats":return L;case"@keet/chat-stats":return I;case"@keet/file-stats":return E;case"@keet/stats":return O;case"@keet/room-type":return U;case"@keet/system-settings":return H;case"@keet/system-digest":return Q;case"@keet/room-seed":return W;case"@keet/room-capabilities":return X;case"@keet/room-config":return Z;case"@keet/blind-peer":return $;case"@keet/add-blind-peer-operation":return de;case"@keet/remove-blind-peer-operation":return oe;case"@keet/identity-attestation":return ce;case"@keet/device-invitation":return te;case"@keet/device":return ae;case"@keet/member-profile":return se;case"@keet/device-profile":return pe;case"@keet/member-update":return le;case"@keet/device-update":return fe;case"@keet/signed-pairing-data":return me;case"@keet/device-request-identity":return ye;case"@keet/device-response-identity":return be;case"@keet/device-request-with-invitation":return ge;case"@keet/device-request-with-invitation-and-proof":return Ke;case"@keet/device-request-with-member-proof":return Te;case"@keet/device-request":return Re;case"@keet/device-response":return Fe;case"@keet/invitation-metadata":return Me;case"@keet/invitation":return Ie;case"@keet/add-invitation-operation":return Ne;case"@keet/remove-invitation-operation":return Ve;case"@keet/sendable-room-invitation":return Oe;case"@keet/sendable-identity-invitation":return Je;case"@keet/sendable-contact-invitation":return Ue;case"@keet/sendable-invitation":return We;case"@keet/add-device-operation":return Ye;case"@keet/update-device-operation":return $e;case"@keet/start-indexing-operation":return _e;case"@keet/stop-indexing-operation":return ed;case"@keet/join-request":return nd;case"@keet/accept-join-request-operation":return td;case"@keet/reject-join-request-operation":return id;case"@keet/member":return pd;case"@keet/full-member":return fd;case"@keet/member-proofs":return md;case"@keet/update-member-operation":return xd;case"@keet/change-member-status-operation":return gd;case"@keet/change-member-role-operation":return Kd;case"@keet/remove-member-operation":return Ad;case"@keet/member-activity":return Td;case"@keet/member-joined-event":return Pd;case"@keet/member-left-event":return Sd;case"@keet/title-changed-chat-event":return Rd;case"@keet/chat-event":return Md;case"@keet/sendable-event":return qd;case"@keet/display-range":return Ld;case"@keet/display-content-range":return Ed;case"@keet/mention-display-item":return Nd;case"@keet/link-preview":return Od;case"@keet/display-link-item":return Hd;case"@keet/display":return en;case"@keet/oplog-message":return cn;case"@keet/index-message":return an;case"@keet/full-index-message":return un;case"@keet/message-status":return ln;case"@keet/message-index-id":return fn;case"@keet/thread":return yn;case"@keet/chat-message-record":return vn;case"@keet/full-chat-message-record":return wn;case"@keet/add-chat-message-operation":return Pn;case"@keet/remove-chat-message-operation":return Rn;case"@keet/update-chat-message-operation":return Fn;case"@keet/pin-chat-message-operation":return qn;case"@keet/reaction":return Ln;case"@keet/reactions-summary":return In;case"@keet/reactions-digest":return Bn;case"@keet/add-reaction-operation":return jn;case"@keet/remove-reaction-operation":return On;case"@keet/update-room-config-operation":return Hn;case"@keet/group-member":return zn;case"@keet/user-registry-info":return Gn;case"@keet/room-identity":return Wn;case"@keet/genesis-operation":return oo;case"@keet/upgrade-operation":return to;case"@keet/update-system-settings-operation":return ao;case"@keet-private-id/contact":return so;case"@keet-private-id/v3-room-migration-info":return po;case"@keet-private-id/run-v3-migration-operation":return fo;case"@keet-private-id/update-identity-operation":return yo;case"@keet-private-id/counters":return bo;case"@keet-private-id/stats":return xo;case"@keet-private-id/add-entropy-operation":return ko;case"@keet-private-id/pending-invitation-identity":return vo;case"@keet-private-id/pending-invitation":return ho;case"@keet-private-id/resolve-pending-invitation-operation":return wo;case"@keet-private-id/add-pending-invitation-operation":return Po;case"@keet-private-id/remove-pending-invitation-operation":return Ro;case"@keet-private-id/identity-swap":return Co;case"@keet-private-id/room-status":return Do;case"@keet-private-id/room":return Lo;case"@keet-private-id/add-room-operation":return Eo;case"@keet-private-id/remove-room-operation":return No;case"@keet-private-id/update-room-status-operation":return Oo;case"@keet-private-id/contact-status":return Jo;case"@keet-private-id/contact-record":return Uo;case"@keet-private-id/add-contact-operation":return Go;case"@keet-private-id/update-contact-status-operation":return Wo;case"@keet-private-id/remove-contact-operation":return Yo;case"@keet-private-id/contact-request-status":return Zo;case"@keet-private-id/contact-request-body":return ec;case"@keet-private-id/contact-request":return nc;case"@keet-private-id/contact-request-record":return rc;case"@keet-private-id/add-contact-request-operation":return ac;case"@keet-private-id/update-contact-request-status-operation":return uc;case"@keet-private-id/profile-discovery-record-v1":return lc;case"@keet-private-id/profile-discovery-record":return fc;case"@keet/add-file-preview-operation":return yc;case"@keet/member-removed-event":return bc;case"@keet/member-contact-info":return kc;case"@keet/remove-device-operation":return gc;case"@keet/device-identity":return hc;case"@keet/readonly-room-invitation":return Kc;case"@keet-private-id/identity-swap-v2":return wc;case"@keet-private-id/activate-contact-room-operation":return Tc;case"@keet/display-type":return Sc;case"@keet/test-increment-operation":return Cc;case"@keet/test-collection-record-1":return Dc;case"@keet/migrate-abi-operation":return Mc;case"@keet/system-settings-keys":return Lc;case"@keet/room-supported-language":return Ec;case"@keet/translation-display-item":return Nc;case"@keet-private-id/unreads":return jc;case"@keet-private-id/add-unreads-key-operation":return Oc;case"@keet-private-id/remove-unreads-key-operation":return Uc;case"@keet/label-type":return zc;case"@keet/chat-label":return Gc;case"@keet/add-chat-label-operation":return Wc;case"@keet/remove-chat-label-operation":return Yc;case"@keet/chat-label-summary":return Zc;case"@keet/chat-label-digest":return _c;case"@keet/update-read-length-operation":return dt;case"@keet/read-length":return nt;case"@keet/tmp-removed-member":return ot;case"@keet-private-id/settings":return ct;case"@keet-private-id/user-settings-key":return rt;case"@keet-private-id/update-settings-operation":return st;case"@keet/member-label-type":return ut;case"@keet/member-label":return lt;case"@keet/add-member-label-operation":return mt;case"@keet/member-label-summary":return yt;case"@keet/member-label-digest":return xt;case"@keet/location-shared-event":return kt;case"@keet/move-indexer-operation":return gt;case"@keet/start-call":return wt;case"@keet/join-call":return Pt;case"@keet/leave-call":return Rt;case"@keet/end-call":return Dt;case"@keet/add-call-stream":return Mt;case"@keet/remove-call-stream":return Lt;case"@keet/call-record":return It;case"@keet/call-member-record":return Et;case"@keet/call-device-record":return Bt;case"@keet/call-stream-record":return Nt;case"@keet/build-type":return Vt;case"@keet/test-crash-operation":return Jt;case"@keet/test-dispatch-error-operation":return Ht;case"@keet/blind-peer/hyperdb#1":return zt;case"@keet/join-request/hyperdb#4":return Qt;case"@keet/device/hyperdb#5":return Yt;case"@keet/member-proofs/hyperdb#10":return Zt;case"@keet/member/hyperdb#11":return er;case"@keet/member-activity/hyperdb#17":return dr;case"@keet/invitation/hyperdb#18":return cr;case"@keet/thread/hyperdb#19":return rr;case"@keet/message-index-id/hyperdb#21":return ir;case"@keet/chat-message-record/hyperdb#21":return ur;case"@keet/message-index-id/hyperdb#25":return lr;case"@keet/reactions-digest/hyperdb#25":return mr;case"@keet/message-index-id/hyperdb#26":return yr;case"@keet/reaction/hyperdb#26":return br;case"@keet/file-record/hyperdb#28":return vr;case"@keet-private-id/pending-invitation/hyperdb#35":return hr;case"@keet-private-id/room/hyperdb#36":return Tr;case"@keet-private-id/contact-record/hyperdb#38":return Pr;case"@keet-private-id/contact-request-record/hyperdb#40":return Dr;case"@keet/test-collection-record-1/hyperdb#46":return Fr;case"@keet/device-identity/hyperdb#50":return Mr;case"@keet/room-keys/hyperdb#51":return qr;case"@keet-private-id/contact-request-record/hyperdb#51":return Br;case"@keet-private-id/unreads/hyperdb#59":return Nr;case"@keet/message-index-id/hyperdb#60":return jr;case"@keet/chat-label/hyperdb#60":return Vr;case"@keet/message-index-id/hyperdb#61":return Or;case"@keet/chat-label-digest/hyperdb#61":return Ur;case"@keet/read-length/hyperdb#62":return Hr;case"@keet/tmp-removed-member/hyperdb#63":return zr;case"@keet/member-label/hyperdb#66":return Gr;case"@keet/member-label-digest/hyperdb#67":return Wr;case"@keet/call-record/hyperdb#69":return Xr;case"@keet/call-member-record/hyperdb#72":return Yr;case"@keet/call-device-record/hyperdb#73":return Zr;case"@keet/call-stream-record/hyperdb#75":return $r;case"@keet-private-id/unreads/hyperdb#77":return _r;default:throw new Error("Encoder not found "+e)}}function Ti(e,d=20){const o=Ai(e);return{preencode(e,c){n=d,o.preencode(e,c)},encode(e,c){n=d,o.encode(e,c)},decode:e=>(n=d,o.decode(e))}}const Pi=Ti;module.exports={resolveStruct:Pi,getStruct:Ti,getEnum:wi,getEncoding:Ai,encode:hi,decode:Ki,setVersion:gi,version:n};
@holepunchto/keet-core/schema/spec/contract/hyperdispatch/dispatch.json +354 -0
……@@ -0,0 +1,354 @@
1{
2 "version": 12,
3 "offset": 2,
4 "schema": [
5 {
6 "id": 2,
7 "name": "@keet/genesis",
8 "requestType": "@keet/genesis-operation",
9 "version": 1
10 },
11 {
12 "id": 3,
13 "name": "@keet/upgrade",
14 "requestType": "@keet/upgrade-operation",
15 "version": 1
16 },
17 {
18 "id": 4,
19 "name": "@keet/update-system-settings",
20 "requestType": "@keet/update-system-settings-operation",
21 "version": 1
22 },
23 {
24 "id": 5,
25 "name": "@keet/add-blind-peer",
26 "requestType": "@keet/add-blind-peer-operation",
27 "version": 1
28 },
29 {
30 "id": 6,
31 "name": "@keet/remove-blind-peer",
32 "requestType": "@keet/remove-blind-peer-operation",
33 "version": 1
34 },
35 {
36 "id": 7,
37 "name": "@keet/add-device",
38 "requestType": "@keet/add-device-operation",
39 "version": 1
40 },
41 {
42 "id": 8,
43 "name": "@keet/update-device",
44 "requestType": "@keet/update-device-operation",
45 "version": 1
46 },
47 {
48 "id": 9,
49 "name": "@keet/start-indexing",
50 "requestType": "@keet/start-indexing-operation",
51 "version": 1
52 },
53 {
54 "id": 10,
55 "name": "@keet/stop-indexing",
56 "requestType": "@keet/stop-indexing-operation",
57 "version": 1
58 },
59 {
60 "id": 11,
61 "name": "@keet/accept-join-request",
62 "requestType": "@keet/accept-join-request-operation",
63 "version": 1
64 },
65 {
66 "id": 12,
67 "name": "@keet/reject-join-request",
68 "requestType": "@keet/reject-join-request-operation",
69 "version": 1
70 },
71 {
72 "id": 13,
73 "name": "@keet/update-member",
74 "requestType": "@keet/update-member-operation",
75 "version": 1
76 },
77 {
78 "id": 14,
79 "name": "@keet/change-member-role",
80 "requestType": "@keet/change-member-role-operation",
81 "version": 1
82 },
83 {
84 "id": 15,
85 "name": "@keet/change-member-status",
86 "requestType": "@keet/change-member-status-operation",
87 "version": 1
88 },
89 {
90 "id": 16,
91 "name": "@keet/remove-member",
92 "requestType": "@keet/remove-member-operation",
93 "version": 1
94 },
95 {
96 "id": 17,
97 "name": "@keet/add-invitation",
98 "requestType": "@keet/add-invitation-operation",
99 "version": 1
100 },
101 {
102 "id": 18,
103 "name": "@keet/remove-invitation",
104 "requestType": "@keet/remove-invitation-operation",
105 "version": 1
106 },
107 {
108 "id": 19,
109 "name": "@keet/add-chat-message",
110 "requestType": "@keet/add-chat-message-operation",
111 "version": 1
112 },
113 {
114 "id": 20,
115 "name": "@keet/remove-chat-message",
116 "requestType": "@keet/remove-chat-message-operation",
117 "version": 1
118 },
119 {
120 "id": 21,
121 "name": "@keet/update-chat-message",
122 "requestType": "@keet/update-chat-message-operation",
123 "version": 1
124 },
125 {
126 "id": 22,
127 "name": "@keet/pin-chat-message",
128 "requestType": "@keet/pin-chat-message-operation",
129 "version": 1
130 },
131 {
132 "id": 23,
133 "name": "@keet/add-reaction",
134 "requestType": "@keet/add-reaction-operation",
135 "version": 1
136 },
137 {
138 "id": 24,
139 "name": "@keet/remove-reaction",
140 "requestType": "@keet/remove-reaction-operation",
141 "version": 1
142 },
143 {
144 "id": 25,
145 "name": "@keet/update-room-config",
146 "requestType": "@keet/update-room-config-operation",
147 "version": 1
148 },
149 {
150 "id": 26,
151 "name": "@keet-private-id/run-v3-migration",
152 "requestType": "@keet-private-id/run-v3-migration-operation",
153 "version": 1
154 },
155 {
156 "id": 27,
157 "name": "@keet-private-id/update-identity",
158 "requestType": "@keet-private-id/update-identity-operation",
159 "version": 1
160 },
161 {
162 "id": 28,
163 "name": "@keet-private-id/resolve-pending-invitation",
164 "requestType": "@keet-private-id/resolve-pending-invitation-operation",
165 "version": 1
166 },
167 {
168 "id": 29,
169 "name": "@keet-private-id/add-pending-invitation",
170 "requestType": "@keet-private-id/add-pending-invitation-operation",
171 "version": 1
172 },
173 {
174 "id": 30,
175 "name": "@keet-private-id/remove-pending-invitation",
176 "requestType": "@keet-private-id/remove-pending-invitation-operation",
177 "version": 1
178 },
179 {
180 "id": 31,
181 "name": "@keet-private-id/add-room",
182 "requestType": "@keet-private-id/add-room-operation",
183 "version": 1
184 },
185 {
186 "id": 32,
187 "name": "@keet-private-id/remove-room",
188 "requestType": "@keet-private-id/remove-room-operation",
189 "version": 1
190 },
191 {
192 "id": 33,
193 "name": "@keet-private-id/update-room-status",
194 "requestType": "@keet-private-id/update-room-status-operation",
195 "version": 1
196 },
197 {
198 "id": 34,
199 "name": "@keet-private-id/add-contact",
200 "requestType": "@keet-private-id/add-contact-operation",
201 "version": 1
202 },
203 {
204 "id": 35,
205 "name": "@keet-private-id/update-contact-status",
206 "requestType": "@keet-private-id/update-contact-status-operation",
207 "version": 1
208 },
209 {
210 "id": 36,
211 "name": "@keet-private-id/remove-contact",
212 "requestType": "@keet-private-id/remove-contact-operation",
213 "version": 1
214 },
215 {
216 "id": 37,
217 "name": "@keet-private-id/add-contact-request",
218 "requestType": "@keet-private-id/add-contact-request-operation",
219 "version": 1
220 },
221 {
222 "id": 38,
223 "name": "@keet-private-id/update-contact-request-status",
224 "requestType": "@keet-private-id/update-contact-request-status-operation",
225 "version": 1
226 },
227 {
228 "id": 39,
229 "name": "@keet/add-file-preview",
230 "requestType": "@keet/add-file-preview-operation",
231 "version": 2
232 },
233 {
234 "id": 40,
235 "name": "@keet/remove-device",
236 "requestType": "@keet/remove-device-operation",
237 "version": 3
238 },
239 {
240 "id": 41,
241 "name": "@keet-private-id/activate-contact-room",
242 "requestType": "@keet-private-id/activate-contact-room-operation",
243 "version": 4
244 },
245 {
246 "id": 42,
247 "name": "@keet/test-increment",
248 "requestType": "@keet/test-increment-operation",
249 "version": 5
250 },
251 {
252 "id": 43,
253 "name": "@keet/migrate-abi",
254 "requestType": "@keet/migrate-abi-operation",
255 "version": 6
256 },
257 {
258 "id": 44,
259 "name": "@keet-private-id/add-unreads-key",
260 "requestType": "@keet-private-id/add-unreads-key-operation",
261 "version": 7
262 },
263 {
264 "id": 45,
265 "name": "@keet-private-id/remove-unreads-key",
266 "requestType": "@keet-private-id/remove-unreads-key-operation",
267 "version": 7
268 },
269 {
270 "id": 46,
271 "name": "@keet/add-chat-label",
272 "requestType": "@keet/add-chat-label-operation",
273 "version": 8
274 },
275 {
276 "id": 47,
277 "name": "@keet/remove-chat-label",
278 "requestType": "@keet/remove-chat-label-operation",
279 "version": 8
280 },
281 {
282 "id": 48,
283 "name": "@keet/update-read-length",
284 "requestType": "@keet/update-read-length-operation",
285 "version": 8
286 },
287 {
288 "id": 49,
289 "name": "@keet-private-id/update-settings",
290 "requestType": "@keet-private-id/update-settings-operation",
291 "version": 8
292 },
293 {
294 "id": 50,
295 "name": "@keet/add-member-label",
296 "requestType": "@keet/add-member-label-operation",
297 "version": 9
298 },
299 {
300 "id": 51,
301 "name": "@keet/move-indexer",
302 "requestType": "@keet/move-indexer-operation",
303 "version": 10
304 },
305 {
306 "id": 52,
307 "name": "@keet/start-call",
308 "requestType": "@keet/start-call",
309 "version": 11
310 },
311 {
312 "id": 53,
313 "name": "@keet/join-call",
314 "requestType": "@keet/join-call",
315 "version": 11
316 },
317 {
318 "id": 54,
319 "name": "@keet/leave-call",
320 "requestType": "@keet/leave-call",
321 "version": 11
322 },
323 {
324 "id": 55,
325 "name": "@keet/end-call",
326 "requestType": "@keet/end-call",
327 "version": 11
328 },
329 {
330 "id": 56,
331 "name": "@keet/add-call-stream",
332 "requestType": "@keet/add-call-stream",
333 "version": 11
334 },
335 {
336 "id": 57,
337 "name": "@keet/remove-call-stream",
338 "requestType": "@keet/remove-call-stream",
339 "version": 11
340 },
341 {
342 "id": 58,
343 "name": "@keet/test-crash",
344 "requestType": "@keet/test-crash-operation",
345 "version": 12
346 },
347 {
348 "id": 59,
349 "name": "@keet/test-dispatch-error",
350 "requestType": "@keet/test-dispatch-error-operation",
351 "version": 12
352 }
353 ]
354}
@holepunchto/keet-core/schema/spec/contract/hyperdispatch/index.js +1 -0
……@@ -0,0 +1 @@
1const{c:e,b4a:t,assert:a,DispatchError:r,ERRORS:n}=require("hyperdispatch/runtime"),{version:i,getEncoding:s,setVersion:d}=require("./messages.js"),l=i;class h{constructor(){this._handler2=null,this._handler3=null,this._handler4=null,this._handler5=null,this._handler6=null,this._handler7=null,this._handler8=null,this._handler9=null,this._handler10=null,this._handler11=null,this._handler12=null,this._handler13=null,this._handler14=null,this._handler15=null,this._handler16=null,this._handler17=null,this._handler18=null,this._handler19=null,this._handler20=null,this._handler21=null,this._handler22=null,this._handler23=null,this._handler24=null,this._handler25=null,this._handler26=null,this._handler27=null,this._handler28=null,this._handler29=null,this._handler30=null,this._handler31=null,this._handler32=null,this._handler33=null,this._handler34=null,this._handler35=null,this._handler36=null,this._handler37=null,this._handler38=null,this._handler39=null,this._handler40=null,this._handler41=null,this._handler42=null,this._handler43=null,this._handler44=null,this._handler45=null,this._handler46=null,this._handler47=null,this._handler48=null,this._handler49=null,this._handler50=null,this._handler51=null,this._handler52=null,this._handler53=null,this._handler54=null,this._handler55=null,this._handler56=null,this._handler57=null,this._handler58=null,this._handler59=null,this._missing=58}add(e,t){switch(e){case"@keet/genesis":this._handler2=t;break;case"@keet/upgrade":this._handler3=t;break;case"@keet/update-system-settings":this._handler4=t;break;case"@keet/add-blind-peer":this._handler5=t;break;case"@keet/remove-blind-peer":this._handler6=t;break;case"@keet/add-device":this._handler7=t;break;case"@keet/update-device":this._handler8=t;break;case"@keet/start-indexing":this._handler9=t;break;case"@keet/stop-indexing":this._handler10=t;break;case"@keet/accept-join-request":this._handler11=t;break;case"@keet/reject-join-request":this._handler12=t;break;case"@keet/update-member":this._handler13=t;break;case"@keet/change-member-role":this._handler14=t;break;case"@keet/change-member-status":this._handler15=t;break;case"@keet/remove-member":this._handler16=t;break;case"@keet/add-invitation":this._handler17=t;break;case"@keet/remove-invitation":this._handler18=t;break;case"@keet/add-chat-message":this._handler19=t;break;case"@keet/remove-chat-message":this._handler20=t;break;case"@keet/update-chat-message":this._handler21=t;break;case"@keet/pin-chat-message":this._handler22=t;break;case"@keet/add-reaction":this._handler23=t;break;case"@keet/remove-reaction":this._handler24=t;break;case"@keet/update-room-config":this._handler25=t;break;case"@keet-private-id/run-v3-migration":this._handler26=t;break;case"@keet-private-id/update-identity":this._handler27=t;break;case"@keet-private-id/resolve-pending-invitation":this._handler28=t;break;case"@keet-private-id/add-pending-invitation":this._handler29=t;break;case"@keet-private-id/remove-pending-invitation":this._handler30=t;break;case"@keet-private-id/add-room":this._handler31=t;break;case"@keet-private-id/remove-room":this._handler32=t;break;case"@keet-private-id/update-room-status":this._handler33=t;break;case"@keet-private-id/add-contact":this._handler34=t;break;case"@keet-private-id/update-contact-status":this._handler35=t;break;case"@keet-private-id/remove-contact":this._handler36=t;break;case"@keet-private-id/add-contact-request":this._handler37=t;break;case"@keet-private-id/update-contact-request-status":this._handler38=t;break;case"@keet/add-file-preview":this._handler39=t;break;case"@keet/remove-device":this._handler40=t;break;case"@keet-private-id/activate-contact-room":this._handler41=t;break;case"@keet/test-increment":this._handler42=t;break;case"@keet/migrate-abi":this._handler43=t;break;case"@keet-private-id/add-unreads-key":this._handler44=t;break;case"@keet-private-id/remove-unreads-key":this._handler45=t;break;case"@keet/add-chat-label":this._handler46=t;break;case"@keet/remove-chat-label":this._handler47=t;break;case"@keet/update-read-length":this._handler48=t;break;case"@keet-private-id/update-settings":this._handler49=t;break;case"@keet/add-member-label":this._handler50=t;break;case"@keet/move-indexer":this._handler51=t;break;case"@keet/start-call":this._handler52=t;break;case"@keet/join-call":this._handler53=t;break;case"@keet/leave-call":this._handler54=t;break;case"@keet/end-call":this._handler55=t;break;case"@keet/add-call-stream":this._handler56=t;break;case"@keet/remove-call-stream":this._handler57=t;break;case"@keet/test-crash":this._handler58=t;break;case"@keet/test-dispatch-error":this._handler59=t;break;default:throw r.NONEXISTENT_ROUTE(e)}this._missing--}_checkAll(){a(null!==this._handler2,'Missing handler for "@keet/genesis"'),a(null!==this._handler3,'Missing handler for "@keet/upgrade"'),a(null!==this._handler4,'Missing handler for "@keet/update-system-settings"'),a(null!==this._handler5,'Missing handler for "@keet/add-blind-peer"'),a(null!==this._handler6,'Missing handler for "@keet/remove-blind-peer"'),a(null!==this._handler7,'Missing handler for "@keet/add-device"'),a(null!==this._handler8,'Missing handler for "@keet/update-device"'),a(null!==this._handler9,'Missing handler for "@keet/start-indexing"'),a(null!==this._handler10,'Missing handler for "@keet/stop-indexing"'),a(null!==this._handler11,'Missing handler for "@keet/accept-join-request"'),a(null!==this._handler12,'Missing handler for "@keet/reject-join-request"'),a(null!==this._handler13,'Missing handler for "@keet/update-member"'),a(null!==this._handler14,'Missing handler for "@keet/change-member-role"'),a(null!==this._handler15,'Missing handler for "@keet/change-member-status"'),a(null!==this._handler16,'Missing handler for "@keet/remove-member"'),a(null!==this._handler17,'Missing handler for "@keet/add-invitation"'),a(null!==this._handler18,'Missing handler for "@keet/remove-invitation"'),a(null!==this._handler19,'Missing handler for "@keet/add-chat-message"'),a(null!==this._handler20,'Missing handler for "@keet/remove-chat-message"'),a(null!==this._handler21,'Missing handler for "@keet/update-chat-message"'),a(null!==this._handler22,'Missing handler for "@keet/pin-chat-message"'),a(null!==this._handler23,'Missing handler for "@keet/add-reaction"'),a(null!==this._handler24,'Missing handler for "@keet/remove-reaction"'),a(null!==this._handler25,'Missing handler for "@keet/update-room-config"'),a(null!==this._handler26,'Missing handler for "@keet-private-id/run-v3-migration"'),a(null!==this._handler27,'Missing handler for "@keet-private-id/update-identity"'),a(null!==this._handler28,'Missing handler for "@keet-private-id/resolve-pending-invitation"'),a(null!==this._handler29,'Missing handler for "@keet-private-id/add-pending-invitation"'),a(null!==this._handler30,'Missing handler for "@keet-private-id/remove-pending-invitation"'),a(null!==this._handler31,'Missing handler for "@keet-private-id/add-room"'),a(null!==this._handler32,'Missing handler for "@keet-private-id/remove-room"'),a(null!==this._handler33,'Missing handler for "@keet-private-id/update-room-status"'),a(null!==this._handler34,'Missing handler for "@keet-private-id/add-contact"'),a(null!==this._handler35,'Missing handler for "@keet-private-id/update-contact-status"'),a(null!==this._handler36,'Missing handler for "@keet-private-id/remove-contact"'),a(null!==this._handler37,'Missing handler for "@keet-private-id/add-contact-request"'),a(null!==this._handler38,'Missing handler for "@keet-private-id/update-contact-request-status"'),a(null!==this._handler39,'Missing handler for "@keet/add-file-preview"'),a(null!==this._handler40,'Missing handler for "@keet/remove-device"'),a(null!==this._handler41,'Missing handler for "@keet-private-id/activate-contact-room"'),a(null!==this._handler42,'Missing handler for "@keet/test-increment"'),a(null!==this._handler43,'Missing handler for "@keet/migrate-abi"'),a(null!==this._handler44,'Missing handler for "@keet-private-id/add-unreads-key"'),a(null!==this._handler45,'Missing handler for "@keet-private-id/remove-unreads-key"'),a(null!==this._handler46,'Missing handler for "@keet/add-chat-label"'),a(null!==this._handler47,'Missing handler for "@keet/remove-chat-label"'),a(null!==this._handler48,'Missing handler for "@keet/update-read-length"'),a(null!==this._handler49,'Missing handler for "@keet-private-id/update-settings"'),a(null!==this._handler50,'Missing handler for "@keet/add-member-label"'),a(null!==this._handler51,'Missing handler for "@keet/move-indexer"'),a(null!==this._handler52,'Missing handler for "@keet/start-call"'),a(null!==this._handler53,'Missing handler for "@keet/join-call"'),a(null!==this._handler54,'Missing handler for "@keet/leave-call"'),a(null!==this._handler55,'Missing handler for "@keet/end-call"'),a(null!==this._handler56,'Missing handler for "@keet/add-call-stream"'),a(null!==this._handler57,'Missing handler for "@keet/remove-call-stream"'),a(null!==this._handler58,'Missing handler for "@keet/test-crash"'),a(null!==this._handler59,'Missing handler for "@keet/test-dispatch-error"')}async dispatch(e,a){this._missing>0&&this._checkAll(),d(l);const n=t.isBuffer(e)?u(e):e;switch(n.id){case 2:return this._handler2(n.value,a);case 3:return this._handler3(n.value,a);case 4:return this._handler4(n.value,a);case 5:return this._handler5(n.value,a);case 6:return this._handler6(n.value,a);case 7:return this._handler7(n.value,a);case 8:return this._handler8(n.value,a);case 9:return this._handler9(n.value,a);case 10:return this._handler10(n.value,a);case 11:return this._handler11(n.value,a);case 12:return this._handler12(n.value,a);case 13:return this._handler13(n.value,a);case 14:return this._handler14(n.value,a);case 15:return this._handler15(n.value,a);case 16:return this._handler16(n.value,a);case 17:return this._handler17(n.value,a);case 18:return this._handler18(n.value,a);case 19:return this._handler19(n.value,a);case 20:return this._handler20(n.value,a);case 21:return this._handler21(n.value,a);case 22:return this._handler22(n.value,a);case 23:return this._handler23(n.value,a);case 24:return this._handler24(n.value,a);case 25:return this._handler25(n.value,a);case 26:return this._handler26(n.value,a);case 27:return this._handler27(n.value,a);case 28:return this._handler28(n.value,a);case 29:return this._handler29(n.value,a);case 30:return this._handler30(n.value,a);case 31:return this._handler31(n.value,a);case 32:return this._handler32(n.value,a);case 33:return this._handler33(n.value,a);case 34:return this._handler34(n.value,a);case 35:return this._handler35(n.value,a);case 36:return this._handler36(n.value,a);case 37:return this._handler37(n.value,a);case 38:return this._handler38(n.value,a);case 39:return this._handler39(n.value,a);case 40:return this._handler40(n.value,a);case 41:return this._handler41(n.value,a);case 42:return this._handler42(n.value,a);case 43:return this._handler43(n.value,a);case 44:return this._handler44(n.value,a);case 45:return this._handler45(n.value,a);case 46:return this._handler46(n.value,a);case 47:return this._handler47(n.value,a);case 48:return this._handler48(n.value,a);case 49:return this._handler49(n.value,a);case 50:return this._handler50(n.value,a);case 51:return this._handler51(n.value,a);case 52:return this._handler52(n.value,a);case 53:return this._handler53(n.value,a);case 54:return this._handler54(n.value,a);case 55:return this._handler55(n.value,a);case 56:return this._handler56(n.value,a);case 57:return this._handler57(n.value,a);case 58:return this._handler58(n.value,a);case 59:return this._handler59(n.value,a);default:throw r.HANDLER_NOT_FOUND_BY_ID(n.id)}}}function c(a,r,{version:n=l}={}){const i={buffer:null,start:0,end:0},s=pe(a);return d(n),e.uint.preencode(i,s.id),s.enc.preencode(i,r),i.buffer=t.allocUnsafe(i.end),e.uint.encode(i,s.id),s.enc.encode(i,r),i.buffer}function u(t,{version:a=l}={}){const r={buffer:t,start:0,end:t.length},n=e.uint.decode(r),i=_e(n);d(a);const s=i.enc.decode(r);return{id:n,name:i.name,value:s}}const o={name:"@keet/genesis",id:2,enc:s("@keet/genesis-operation")},k={name:"@keet/upgrade",id:3,enc:s("@keet/upgrade-operation")},v={name:"@keet/update-system-settings",id:4,enc:s("@keet/update-system-settings-operation")},m={name:"@keet/add-blind-peer",id:5,enc:s("@keet/add-blind-peer-operation")},p={name:"@keet/remove-blind-peer",id:6,enc:s("@keet/remove-blind-peer-operation")},_={name:"@keet/add-device",id:7,enc:s("@keet/add-device-operation")},g={name:"@keet/update-device",id:8,enc:s("@keet/update-device-operation")},b={name:"@keet/start-indexing",id:9,enc:s("@keet/start-indexing-operation")},f={name:"@keet/stop-indexing",id:10,enc:s("@keet/stop-indexing-operation")},M={name:"@keet/accept-join-request",id:11,enc:s("@keet/accept-join-request-operation")},q={name:"@keet/reject-join-request",id:12,enc:s("@keet/reject-join-request-operation")},y={name:"@keet/update-member",id:13,enc:s("@keet/update-member-operation")},j={name:"@keet/change-member-role",id:14,enc:s("@keet/change-member-role-operation")},x={name:"@keet/change-member-status",id:15,enc:s("@keet/change-member-status-operation")},w={name:"@keet/remove-member",id:16,enc:s("@keet/remove-member-operation")},E={name:"@keet/add-invitation",id:17,enc:s("@keet/add-invitation-operation")},N={name:"@keet/remove-invitation",id:18,enc:s("@keet/remove-invitation-operation")},O={name:"@keet/add-chat-message",id:19,enc:s("@keet/add-chat-message-operation")},R={name:"@keet/remove-chat-message",id:20,enc:s("@keet/remove-chat-message-operation")},D={name:"@keet/update-chat-message",id:21,enc:s("@keet/update-chat-message-operation")},T={name:"@keet/pin-chat-message",id:22,enc:s("@keet/pin-chat-message-operation")},U={name:"@keet/add-reaction",id:23,enc:s("@keet/add-reaction-operation")},A={name:"@keet/remove-reaction",id:24,enc:s("@keet/remove-reaction-operation")},B={name:"@keet/update-room-config",id:25,enc:s("@keet/update-room-config-operation")},F={name:"@keet-private-id/run-v3-migration",id:26,enc:s("@keet-private-id/run-v3-migration-operation")},I={name:"@keet-private-id/update-identity",id:27,enc:s("@keet-private-id/update-identity-operation")},S={name:"@keet-private-id/resolve-pending-invitation",id:28,enc:s("@keet-private-id/resolve-pending-invitation-operation")},Y={name:"@keet-private-id/add-pending-invitation",id:29,enc:s("@keet-private-id/add-pending-invitation-operation")},H={name:"@keet-private-id/remove-pending-invitation",id:30,enc:s("@keet-private-id/remove-pending-invitation-operation")},L={name:"@keet-private-id/add-room",id:31,enc:s("@keet-private-id/add-room-operation")},V={name:"@keet-private-id/remove-room",id:32,enc:s("@keet-private-id/remove-room-operation")},X={name:"@keet-private-id/update-room-status",id:33,enc:s("@keet-private-id/update-room-status-operation")},z={name:"@keet-private-id/add-contact",id:34,enc:s("@keet-private-id/add-contact-operation")},C={name:"@keet-private-id/update-contact-status",id:35,enc:s("@keet-private-id/update-contact-status-operation")},G={name:"@keet-private-id/remove-contact",id:36,enc:s("@keet-private-id/remove-contact-operation")},J={name:"@keet-private-id/add-contact-request",id:37,enc:s("@keet-private-id/add-contact-request-operation")},K={name:"@keet-private-id/update-contact-request-status",id:38,enc:s("@keet-private-id/update-contact-request-status-operation")},P={name:"@keet/add-file-preview",id:39,enc:s("@keet/add-file-preview-operation")},Q={name:"@keet/remove-device",id:40,enc:s("@keet/remove-device-operation")},W={name:"@keet-private-id/activate-contact-room",id:41,enc:s("@keet-private-id/activate-contact-room-operation")},Z={name:"@keet/test-increment",id:42,enc:s("@keet/test-increment-operation")},$={name:"@keet/migrate-abi",id:43,enc:s("@keet/migrate-abi-operation")},ee={name:"@keet-private-id/add-unreads-key",id:44,enc:s("@keet-private-id/add-unreads-key-operation")},te={name:"@keet-private-id/remove-unreads-key",id:45,enc:s("@keet-private-id/remove-unreads-key-operation")},ae={name:"@keet/add-chat-label",id:46,enc:s("@keet/add-chat-label-operation")},re={name:"@keet/remove-chat-label",id:47,enc:s("@keet/remove-chat-label-operation")},ne={name:"@keet/update-read-length",id:48,enc:s("@keet/update-read-length-operation")},ie={name:"@keet-private-id/update-settings",id:49,enc:s("@keet-private-id/update-settings-operation")},se={name:"@keet/add-member-label",id:50,enc:s("@keet/add-member-label-operation")},de={name:"@keet/move-indexer",id:51,enc:s("@keet/move-indexer-operation")},le={name:"@keet/start-call",id:52,enc:s("@keet/start-call")},he={name:"@keet/join-call",id:53,enc:s("@keet/join-call")},ce={name:"@keet/leave-call",id:54,enc:s("@keet/leave-call")},ue={name:"@keet/end-call",id:55,enc:s("@keet/end-call")},oe={name:"@keet/add-call-stream",id:56,enc:s("@keet/add-call-stream")},ke={name:"@keet/remove-call-stream",id:57,enc:s("@keet/remove-call-stream")},ve={name:"@keet/test-crash",id:58,enc:s("@keet/test-crash-operation")},me={name:"@keet/test-dispatch-error",id:59,enc:s("@keet/test-dispatch-error-operation")};function pe(e){switch(e){case"@keet/genesis":return o;case"@keet/upgrade":return k;case"@keet/update-system-settings":return v;case"@keet/add-blind-peer":return m;case"@keet/remove-blind-peer":return p;case"@keet/add-device":return _;case"@keet/update-device":return g;case"@keet/start-indexing":return b;case"@keet/stop-indexing":return f;case"@keet/accept-join-request":return M;case"@keet/reject-join-request":return q;case"@keet/update-member":return y;case"@keet/change-member-role":return j;case"@keet/change-member-status":return x;case"@keet/remove-member":return w;case"@keet/add-invitation":return E;case"@keet/remove-invitation":return N;case"@keet/add-chat-message":return O;case"@keet/remove-chat-message":return R;case"@keet/update-chat-message":return D;case"@keet/pin-chat-message":return T;case"@keet/add-reaction":return U;case"@keet/remove-reaction":return A;case"@keet/update-room-config":return B;case"@keet-private-id/run-v3-migration":return F;case"@keet-private-id/update-identity":return I;case"@keet-private-id/resolve-pending-invitation":return S;case"@keet-private-id/add-pending-invitation":return Y;case"@keet-private-id/remove-pending-invitation":return H;case"@keet-private-id/add-room":return L;case"@keet-private-id/remove-room":return V;case"@keet-private-id/update-room-status":return X;case"@keet-private-id/add-contact":return z;case"@keet-private-id/update-contact-status":return C;case"@keet-private-id/remove-contact":return G;case"@keet-private-id/add-contact-request":return J;case"@keet-private-id/update-contact-request-status":return K;case"@keet/add-file-preview":return P;case"@keet/remove-device":return Q;case"@keet-private-id/activate-contact-room":return W;case"@keet/test-increment":return Z;case"@keet/migrate-abi":return $;case"@keet-private-id/add-unreads-key":return ee;case"@keet-private-id/remove-unreads-key":return te;case"@keet/add-chat-label":return ae;case"@keet/remove-chat-label":return re;case"@keet/update-read-length":return ne;case"@keet-private-id/update-settings":return ie;case"@keet/add-member-label":return se;case"@keet/move-indexer":return de;case"@keet/start-call":return le;case"@keet/join-call":return he;case"@keet/leave-call":return ce;case"@keet/end-call":return ue;case"@keet/add-call-stream":return oe;case"@keet/remove-call-stream":return ke;case"@keet/test-crash":return ve;case"@keet/test-dispatch-error":return me;default:throw r.ROUTE_NOT_FOUND_BY_NAME(e)}}function _e(e){switch(e){case 2:return o;case 3:return k;case 4:return v;case 5:return m;case 6:return p;case 7:return _;case 8:return g;case 9:return b;case 10:return f;case 11:return M;case 12:return q;case 13:return y;case 14:return j;case 15:return x;case 16:return w;case 17:return E;case 18:return N;case 19:return O;case 20:return R;case 21:return D;case 22:return T;case 23:return U;case 24:return A;case 25:return B;case 26:return F;case 27:return I;case 28:return S;case 29:return Y;case 30:return H;case 31:return L;case 32:return V;case 33:return X;case 34:return z;case 35:return C;case 36:return G;case 37:return J;case 38:return K;case 39:return P;case 40:return Q;case 41:return W;case 42:return Z;case 43:return $;case 44:return ee;case 45:return te;case 46:return ae;case 47:return re;case 48:return ne;case 49:return ie;case 50:return se;case 51:return de;case 52:return le;case 53:return he;case 54:return ce;case 55:return ue;case 56:return oe;case 57:return ke;case 58:return ve;case 59:return me;default:throw r.HANDLER_NOT_FOUND_BY_ID(e)}}module.exports={version:i,encode:c,decode:u,Router:h,DispatchError:r,ERRORS:n};
@holepunchto/keet-core/schema/spec/contract/hyperdispatch/messages.js +1 -0
……@@ -0,0 +1 @@
1const{c:e}=require("hyperschema/runtime"),d=20;let n=d;const o={preencode(d,n){e.fixed32.preencode(d,n.key),e.uint.preencode(d,n.length)},encode(d,n){e.fixed32.encode(d,n.key),e.uint.encode(d,n.length)},decode:d=>({key:e.fixed32.decode(d),length:e.uint.decode(d)})},c={preencode(d,n){e.fixed32.preencode(d,n.key),e.uint.preencode(d,n.seq)},encode(d,n){e.fixed32.encode(d,n.key),e.uint.encode(d,n.seq)},decode:d=>({key:e.fixed32.decode(d),seq:e.uint.decode(d)})},r={preencode(d,n){e.fixed32.preencode(d,n.publicKey),e.fixed32.preencode(d,n.secretKey)},encode(d,n){e.fixed32.encode(d,n.publicKey),e.fixed32.encode(d,n.secretKey)},decode:d=>({publicKey:e.fixed32.decode(d),secretKey:e.fixed32.decode(d)})},t={preencode(d,n){e.fixed32.preencode(d,n.publicKey),e.fixed64.preencode(d,n.secretKey)},encode(d,n){e.fixed32.encode(d,n.publicKey),e.fixed64.encode(d,n.secretKey)},decode:d=>({publicKey:e.fixed32.decode(d),secretKey:e.fixed64.decode(d)})},i={preencode(d,n){e.fixed32.preencode(d,n.key),d.end++,n.encryptionKey&&e.buffer.preencode(d,n.encryptionKey),n.fastForwardTo&&e.fixed32.preencode(d,n.fastForwardTo)},encode(d,n){const o=(n.encryptionKey?1:0)|(n.fastForwardTo?2:0);e.fixed32.encode(d,n.key),e.uint.encode(d,o),n.encryptionKey&&e.buffer.encode(d,n.encryptionKey),n.fastForwardTo&&e.fixed32.encode(d,n.fastForwardTo)},decode(d){const n=e.fixed32.decode(d),o=e.uint.decode(d);return{key:n,encryptionKey:1&o?e.buffer.decode(d):null,fastForwardTo:2&o?e.fixed32.decode(d):null}}},a={preencode(d,n){e.uint.preencode(d,n.timestamp)},encode(d,n){e.uint.encode(d,n.timestamp)},decode:d=>({timestamp:e.uint.decode(d)})},s={preencode(d,n){e.uint.preencode(d,n.blockOffset),e.uint.preencode(d,n.blockLength),e.uint.preencode(d,n.byteOffset),e.uint.preencode(d,n.byteLength)},encode(d,n){e.uint.encode(d,n.blockOffset),e.uint.encode(d,n.blockLength),e.uint.encode(d,n.byteOffset),e.uint.encode(d,n.byteLength)},decode:d=>({blockOffset:e.uint.decode(d),blockLength:e.uint.decode(d),byteOffset:e.uint.decode(d),byteLength:e.uint.decode(d)})},p={preencode(d,n){e.uint.preencode(d,n.width),e.uint.preencode(d,n.height)},encode(d,n){e.uint.encode(d,n.width),e.uint.encode(d,n.height)},decode:d=>({width:e.uint.decode(d),height:e.uint.decode(d)})},u=e.frame(p),l={preencode(d,n){d.end++,n.name&&e.string.preencode(d,n.name),n.mimetype&&e.string.preencode(d,n.mimetype),n.dimensions&&u.preencode(d,n.dimensions),n.userdata&&e.buffer.preencode(d,n.userdata),n.duration&&e.uint.preencode(d,n.duration)},encode(d,n){const o=(n.name?1:0)|(n.mimetype?2:0)|(n.dimensions?4:0)|(n.userdata?8:0)|(n.duration?16:0)|(n.isPreview?32:0);e.uint.encode(d,o),n.name&&e.string.encode(d,n.name),n.mimetype&&e.string.encode(d,n.mimetype),n.dimensions&&u.encode(d,n.dimensions),n.userdata&&e.buffer.encode(d,n.userdata),n.duration&&e.uint.encode(d,n.duration)},decode(d){const n=e.uint.decode(d);return{name:1&n?e.string.decode(d):null,mimetype:2&n?e.string.decode(d):null,dimensions:4&n?u.decode(d):null,userdata:8&n?e.buffer.decode(d):null,duration:16&n?e.uint.decode(d):0,isPreview:!!(32&n)}}},f={preencode(d,n){e.fixed32.preencode(d,n.key),e.string.preencode(d,n.path),e.uint.preencode(d,n.version),e.uint.preencode(d,n.size)},encode(d,n){e.fixed32.encode(d,n.key),e.string.encode(d,n.path),e.uint.encode(d,n.version),e.uint.encode(d,n.size)},decode:d=>({key:e.fixed32.decode(d),path:e.string.decode(d),version:e.uint.decode(d),size:e.uint.decode(d)})},m={preencode(d,n){e.fixed32.preencode(d,n.key),s.preencode(d,n.blob)},encode(d,n){e.fixed32.encode(d,n.key),s.encode(d,n.blob)},decode:d=>({key:e.fixed32.decode(d),blob:s.decode(d)})},y=e.frame(m),x=e.frame(f),b={preencode(d,n){d.end++,n.inlined&&e.buffer.preencode(d,n.inlined),n.blob&&s.preencode(d,n.blob),n.externalBlob&&y.preencode(d,n.externalBlob),n.externalDrive&&x.preencode(d,n.externalDrive)},encode(d,n){const o=(n.inlined?1:0)|(n.blob?2:0)|(n.externalBlob?4:0)|(n.externalDrive?8:0);e.uint.encode(d,o),n.inlined&&e.buffer.encode(d,n.inlined),n.blob&&s.encode(d,n.blob),n.externalBlob&&y.encode(d,n.externalBlob),n.externalDrive&&x.encode(d,n.externalDrive)},decode(d){const n=e.uint.decode(d);return{inlined:1&n?e.buffer.decode(d):null,blob:2&n?s.decode(d):null,externalBlob:4&n?y.decode(d):null,externalDrive:8&n?x.decode(d):null}}},k=e.frame(b),v=e.frame(l),g={preencode(d,n){k.preencode(d,n.pointer),d.end++,n.metadata&&v.preencode(d,n.metadata),n.preview&&zr.preencode(d,n.preview),n.hash&&e.fixed32.preencode(d,n.hash)},encode(d,n){const o=(n.metadata?1:0)|(n.preview?2:0)|(n.hash?4:0);k.encode(d,n.pointer),e.uint.encode(d,o),n.metadata&&v.encode(d,n.metadata),n.preview&&zr.encode(d,n.preview),n.hash&&e.fixed32.encode(d,n.hash)},decode(d){const n=k.decode(d),o=e.uint.decode(d);return{pointer:n,metadata:1&o?v.decode(d):null,preview:2&o?zr.decode(d):null,hash:4&o?e.fixed32.decode(d):null}}},h=e.frame(g),K=h,w=h,T={preencode(e,d){e.end++,d.small&&h.preencode(e,d.small),d.medium&&K.preencode(e,d.medium),d.large&&w.preencode(e,d.large)},encode(d,n){const o=(n.small?1:0)|(n.medium?2:0)|(n.large?4:0);e.uint.encode(d,o),n.small&&h.encode(d,n.small),n.medium&&K.encode(d,n.medium),n.large&&w.encode(d,n.large)},decode(d){const n=e.uint.decode(d);return{small:1&n?h.decode(d):null,medium:2&n?K.decode(d):null,large:4&n?w.decode(d):null}}},P={preencode(e,d){e.end++},encode(d,n){const o=n.isDeleted?1:0;e.uint.encode(d,o)},decode:d=>({isDeleted:!!(1&e.uint.decode(d))})},A=e.frame(P),R=h,D={preencode(d,o){e.uint.preencode(d,o.id),c.preencode(d,o.oplog),A.preencode(d,o.status),R.preencode(d,o.file),d.end++,n>=14&&o.version&&e.uint.preencode(d,o.version)},encode(d,o){const r=n>=14&&o.version?1:0;e.uint.encode(d,o.id),c.encode(d,o.oplog),A.encode(d,o.status),R.encode(d,o.file),e.uint.encode(d,r),n>=14&&o.version&&e.uint.encode(d,o.version)},decode(d){const o=e.uint.decode(d),r=c.decode(d),t=A.decode(d),i=R.decode(d),a=d.start<d.end?e.uint.decode(d):0;return{id:o,oplog:r,status:t,file:i,version:n>=14&&1&a?e.uint.decode(d):0}}},S={preencode(e,d){e.end++},encode(d,n){const o=(n.isActive?1:0)|(n.isIndexing?2:0);e.uint.encode(d,o)},decode(d){const n=e.uint.decode(d);return{isActive:!!(1&n),isIndexing:!!(2&n)}}},C={preencode(d,o){const c=(o.isAdmin?1:0)|(o.isModerator?2:0)|(o.isPending?4:0)|(o.isActive?8:0)|(o.isMuted?16:0)|(o.isBanned?32:0)|(o.isShadowBanned?64:0)|(n>=13&&o.isRemoved?128:0);e.uint.preencode(d,c)},encode(d,o){const c=(o.isAdmin?1:0)|(o.isModerator?2:0)|(o.isPending?4:0)|(o.isActive?8:0)|(o.isMuted?16:0)|(o.isBanned?32:0)|(o.isShadowBanned?64:0)|(n>=13&&o.isRemoved?128:0);e.uint.encode(d,c)},decode(d){const o=e.uint.decode(d);return{isAdmin:!!(1&o),isModerator:!!(2&o),isPending:!!(4&o),isActive:!!(8&o),isMuted:!!(16&o),isBanned:!!(32&o),isShadowBanned:!!(64&o),isRemoved:n>=13&&!!(128&o)}}},M={preencode(e,d){e.end++},encode(d,n){const o=(n.isMuted?1:0)|(n.isBanned?2:0)|(n.isShadowBanned?4:0);e.uint.encode(d,o)},decode(d){const n=e.uint.decode(d);return{isMuted:!!(1&n),isBanned:!!(2&n),isShadowBanned:!!(4&n)}}},L={preencode(d,n){e.uint.preencode(d,n.version)},encode(d,n){e.uint.encode(d,n.version)},decode:d=>({version:e.uint.decode(d)})},q={preencode(d,n){e.uint.preencode(d,n.total),e.uint.preencode(d,n.active)},encode(d,n){e.uint.encode(d,n.total),e.uint.encode(d,n.active)},decode:d=>({total:e.uint.decode(d),active:e.uint.decode(d)})},F={preencode(d,n){e.uint.preencode(d,n.total),e.uint.preencode(d,n.active),e.uint.preencode(d,n.pending)},encode(d,n){e.uint.encode(d,n.total),e.uint.encode(d,n.active),e.uint.encode(d,n.pending)},decode:d=>({total:e.uint.decode(d),active:e.uint.decode(d),pending:e.uint.decode(d)})},E={preencode(d,o){e.uint.preencode(d,o.clock),e.uint.preencode(d,o.pinned),e.uint.preencode(d,o.threads),e.uint.preencode(d,o.timestamp),d.end++,n>=15&&o.flagsClock&&e.uint.preencode(d,o.flagsClock)},encode(d,o){const c=n>=15&&o.flagsClock?1:0;e.uint.encode(d,o.clock),e.uint.encode(d,o.pinned),e.uint.encode(d,o.threads),e.uint.encode(d,o.timestamp),e.uint.encode(d,c),n>=15&&o.flagsClock&&e.uint.encode(d,o.flagsClock)},decode(d){const o=e.uint.decode(d),c=e.uint.decode(d),r=e.uint.decode(d),t=e.uint.decode(d),i=d.start<d.end?e.uint.decode(d):0;return{clock:o,pinned:c,threads:r,timestamp:t,flagsClock:n>=15&&1&i?e.uint.decode(d):0}}},B={preencode(d,n){e.uint.preencode(d,n.clock)},encode(d,n){e.uint.encode(d,n.clock)},decode:d=>({clock:e.uint.decode(d)})},I=e.frame(q),N=e.frame(F),j=e.frame(E),O=e.frame(B),J={preencode(e,d){I.preencode(e,d.devices),N.preencode(e,d.members),j.preencode(e,d.chat),O.preencode(e,d.files)},encode(e,d){I.encode(e,d.devices),N.encode(e,d.members),j.encode(e,d.chat),O.encode(e,d.files)},decode:e=>({devices:I.decode(e),members:N.decode(e),chat:j.decode(e),files:O.decode(e)})},U={Default:1,Broadcast:2,DirectMessage:3},V={preencode(e,d){e.end++},encode(d,n){if(n>3)throw new Error("Unknown enum");e.uint.encode(d,n)},decode:d=>e.uint.decode(d)},H={preencode(d,o){const c=(o.roomType?1:0)|(o.isExperimental?2:0)|(o.isJoiningDisabled?4:0)|(o.isAppendingDisabled?8:0)|(o.isCallingDisabled?16:0)|(o.isMembershipEventsDisabled?32:0)|(n>=19&&o.isAttachmentsDisabled?64:0)|(n>=19&&o.isLinksDisabled?128:0)|(n>=20&&o.buildType?256:0);e.uint.preencode(d,c),o.roomType&&V.preencode(d,o.roomType),n>=20&&o.buildType&&Or.preencode(d,o.buildType)},encode(d,o){const c=(o.roomType?1:0)|(o.isExperimental?2:0)|(o.isJoiningDisabled?4:0)|(o.isAppendingDisabled?8:0)|(o.isCallingDisabled?16:0)|(o.isMembershipEventsDisabled?32:0)|(n>=19&&o.isAttachmentsDisabled?64:0)|(n>=19&&o.isLinksDisabled?128:0)|(n>=20&&o.buildType?256:0);e.uint.encode(d,c),o.roomType&&V.encode(d,o.roomType),n>=20&&o.buildType&&Or.encode(d,o.buildType)},decode(d){const o=e.uint.decode(d);return{roomType:1&o?V.decode(d):0,isExperimental:!!(2&o),isJoiningDisabled:!!(4&o),isAppendingDisabled:!!(8&o),isCallingDisabled:!!(16&o),isMembershipEventsDisabled:!!(32&o),isAttachmentsDisabled:n>=19&&!!(64&o),isLinksDisabled:n>=19&&!!(128&o),buildType:n>=20&&256&o?Or.decode(d):null}}},z=e.frame(L),G=e.frame(H),Q={preencode(d,n){z.preencode(d,n.abi),G.preencode(d,n.settings),e.uint.preencode(d,n.creationTime)},encode(d,n){z.encode(d,n.abi),G.encode(d,n.settings),e.uint.encode(d,n.creationTime)},decode:d=>({abi:z.decode(d),settings:G.decode(d),creationTime:e.uint.decode(d)})},W={preencode(d,n){e.fixed32.preencode(d,n.seed)},encode(d,n){e.fixed32.encode(d,n.seed)},decode:d=>({seed:e.fixed32.decode(d)})},X={preencode(d,n){r.preencode(d,n.mailboxKeyPair),t.preencode(d,n.discoveryKeyPair),e.fixed32.preencode(d,n.wakeupTopic),e.fixed32.preencode(d,n.swarmTopic)},encode(d,n){r.encode(d,n.mailboxKeyPair),t.encode(d,n.discoveryKeyPair),e.fixed32.encode(d,n.wakeupTopic),e.fixed32.encode(d,n.swarmTopic)},decode:d=>({mailboxKeyPair:r.decode(d),discoveryKeyPair:t.decode(d),wakeupTopic:e.fixed32.decode(d),swarmTopic:e.fixed32.decode(d)})},Y=e.array(e.fixed32),Z={preencode(d,o){d.end++,o.title&&e.string.preencode(d,o.title),o.avatar&&Gr.preencode(d,o.avatar),o.description&&e.string.preencode(d,o.description),n>=11&&o.supportedLanguages&&Qr.preencode(d,o.supportedLanguages),n>=13&&o.blindPeers&&Y.preencode(d,o.blindPeers)},encode(d,o){const c=(o.title?1:0)|(o.avatar?2:0)|(o.description?4:0)|(n>=11&&o.supportedLanguages?8:0)|(n>=13&&o.blindPeers?16:0);e.uint.encode(d,c),o.title&&e.string.encode(d,o.title),o.avatar&&Gr.encode(d,o.avatar),o.description&&e.string.encode(d,o.description),n>=11&&o.supportedLanguages&&Qr.encode(d,o.supportedLanguages),n>=13&&o.blindPeers&&Y.encode(d,o.blindPeers)},decode(d){const o=e.uint.decode(d);return{title:1&o?e.string.decode(d):null,avatar:2&o?Gr.decode(d):null,description:4&o?e.string.decode(d):null,supportedLanguages:n>=11&&8&o?Qr.decode(d):null,blindPeers:n>=13&&16&o?Y.decode(d):null}}},$={preencode(d,n){e.fixed32.preencode(d,n.key)},encode(d,n){e.fixed32.encode(d,n.key)},decode:d=>({key:e.fixed32.decode(d)})},_=e.frame(a),ee=e.frame($),de={preencode(e,d){_.preencode(e,d.header),ee.preencode(e,d.peer)},encode(e,d){_.encode(e,d.header),ee.encode(e,d.peer)},decode:e=>({header:_.decode(e),peer:ee.decode(e)})},ne=_,oe={preencode(d,n){ne.preencode(d,n.header),e.fixed32.preencode(d,n.key)},encode(d,n){ne.encode(d,n.header),e.fixed32.encode(d,n.key)},decode:d=>({header:ne.decode(d),key:e.fixed32.decode(d)})},ce={preencode(d,n){e.fixed32.preencode(d,n.memberKey),e.buffer.preencode(d,n.proof)},encode(d,n){e.fixed32.encode(d,n.memberKey),e.buffer.encode(d,n.proof)},decode:d=>({memberKey:e.fixed32.decode(d),proof:e.buffer.decode(d)})},re={preencode(d,n){e.fixed32.preencode(d,n.id),e.buffer.preencode(d,n.response)},encode(d,n){e.fixed32.encode(d,n.id),e.buffer.encode(d,n.response)},decode:d=>({id:e.fixed32.decode(d),response:e.buffer.decode(d)})},te=e.frame(S),ie=e.frame(re),ae={preencode(d,n){e.fixed32.preencode(d,n.key),e.fixed32.preencode(d,n.memberKey),te.preencode(d,n.status),Wr.preencode(d,n.profile),d.end++,n.invitation&&ie.preencode(d,n.invitation)},encode(d,n){const o=n.invitation?1:0;e.fixed32.encode(d,n.key),e.fixed32.encode(d,n.memberKey),te.encode(d,n.status),Wr.encode(d,n.profile),e.uint.encode(d,o),n.invitation&&ie.encode(d,n.invitation)},decode:d=>({key:e.fixed32.decode(d),memberKey:e.fixed32.decode(d),status:te.decode(d),profile:Wr.decode(d),invitation:1&e.uint.decode(d)?ie.decode(d):null})},se={preencode(d,n){e.uint.preencode(d,n.timestamp),d.end++,n.mailbox&&e.fixed32.preencode(d,n.mailbox),n.displayName&&e.string.preencode(d,n.displayName),n.avatar&&Xr.preencode(d,n.avatar),n.username&&e.string.preencode(d,n.username)},encode(d,n){const o=(n.mailbox?1:0)|(n.displayName?2:0)|(n.avatar?4:0)|(n.username?8:0);e.uint.encode(d,n.timestamp),e.uint.encode(d,o),n.mailbox&&e.fixed32.encode(d,n.mailbox),n.displayName&&e.string.encode(d,n.displayName),n.avatar&&Xr.encode(d,n.avatar),n.username&&e.string.encode(d,n.username)},decode(d){const n=e.uint.decode(d),o=e.uint.decode(d);return{timestamp:n,mailbox:1&o?e.fixed32.decode(d):null,displayName:2&o?e.string.decode(d):null,avatar:4&o?Xr.decode(d):null,username:8&o?e.string.decode(d):null}}},pe={preencode(d,o){d.end++,o.swarmKey&&e.fixed32.preencode(d,o.swarmKey),o.name&&e.string.preencode(d,o.name),n>=20&&o.buildType&&Or.preencode(d,o.buildType)},encode(d,o){const c=(o.swarmKey?1:0)|(o.name?2:0)|(o.isMobile?4:0)|(n>=20&&o.buildType?8:0);e.uint.encode(d,c),o.swarmKey&&e.fixed32.encode(d,o.swarmKey),o.name&&e.string.encode(d,o.name),n>=20&&o.buildType&&Or.encode(d,o.buildType)},decode(d){const o=e.uint.decode(d);return{swarmKey:1&o?e.fixed32.decode(d):null,name:2&o?e.string.decode(d):null,isMobile:!!(4&o),buildType:n>=20&&8&o?Or.decode(d):null}}},ue=e.frame(se),le={preencode(e,d){ue.preencode(e,d.profile),ce.preencode(e,d.attestation)},encode(e,d){ue.encode(e,d.profile),ce.encode(e,d.attestation)},decode:e=>({profile:ue.decode(e),attestation:ce.decode(e)})},fe={preencode(e,d){Yr.preencode(e,d.profile),ce.preencode(e,d.attestation)},encode(e,d){Yr.encode(e,d.profile),ce.encode(e,d.attestation)},decode:e=>({profile:Yr.decode(e),attestation:ce.decode(e)})},me={preencode(d,n){e.fixed32.preencode(d,n.id),e.buffer.preencode(d,n.data),e.buffer.preencode(d,n.signature)},encode(d,n){e.fixed32.encode(d,n.id),e.buffer.encode(d,n.data),e.buffer.encode(d,n.signature)},decode:d=>({id:e.fixed32.decode(d),data:e.buffer.decode(d),signature:e.buffer.decode(d)})},ye={preencode(d,n){e.fixed32.preencode(d,n.devicePublicKey)},encode(d,n){e.fixed32.encode(d,n.devicePublicKey)},decode:d=>({devicePublicKey:e.fixed32.decode(d)})},xe={preencode(d,n){ce.preencode(d,n.privateProfileIdentity),e.buffer.preencode(d,n.deviceProof)},encode(d,n){ce.encode(d,n.privateProfileIdentity),e.buffer.encode(d,n.deviceProof)},decode:d=>({privateProfileIdentity:ce.decode(d),deviceProof:e.buffer.decode(d)})},be=e.frame(fe),ke=e.frame(le),ve=e.frame(ye),ge={preencode(d,n){e.fixed32.preencode(d,n.deviceKey),t.preencode(d,n.keyPair),be.preencode(d,n.device),ke.preencode(d,n.member),d.end++,n.identity&&ve.preencode(d,n.identity)},encode(d,n){const o=n.identity?1:0;e.fixed32.encode(d,n.deviceKey),t.encode(d,n.keyPair),be.encode(d,n.device),ke.encode(d,n.member),e.uint.encode(d,o),n.identity&&ve.encode(d,n.identity)},decode:d=>({deviceKey:e.fixed32.decode(d),keyPair:t.decode(d),device:be.decode(d),member:ke.decode(d),identity:1&e.uint.decode(d)?ve.decode(d):null})},he=e.frame(ge),Ke={preencode(d,n){e.fixed32.preencode(d,n.id),he.preencode(d,n.request),e.buffer.preencode(d,n.signature)},encode(d,n){e.fixed32.encode(d,n.id),he.encode(d,n.request),e.buffer.encode(d,n.signature)},decode:d=>({id:e.fixed32.decode(d),request:he.decode(d),signature:e.buffer.decode(d)})},we=be,Te=ke,Pe={preencode(e,d){we.preencode(e,d.device),e.end++,d.member&&Te.preencode(e,d.member)},encode(d,n){const o=n.member?1:0;we.encode(d,n.device),e.uint.encode(d,o),n.member&&Te.encode(d,n.member)},decode:d=>({device:we.decode(d),member:1&e.uint.decode(d)?Te.decode(d):null})},Ae=e.frame(Ke),Re=e.frame(Pe),De={preencode(e,d){e.end++,d.withInvitation&&Ae.preencode(e,d.withInvitation),d.withMemberProof&&Re.preencode(e,d.withMemberProof)},encode(d,n){const o=(n.withInvitation?1:0)|(n.withMemberProof?2:0);e.uint.encode(d,o),n.withInvitation&&Ae.encode(d,n.withInvitation),n.withMemberProof&&Re.encode(d,n.withMemberProof)},decode(d){const n=e.uint.decode(d);return{withInvitation:1&n?Ae.decode(d):null,withMemberProof:2&n?Re.decode(d):null}}},Se=e.frame(me),Ce=e.frame(xe),Me={preencode(e,d){Se.preencode(e,d.signedKeys),e.end++,d.identity&&Ce.preencode(e,d.identity)},encode(d,n){const o=n.identity?1:0;Se.encode(d,n.signedKeys),e.uint.encode(d,o),n.identity&&Ce.encode(d,n.identity)},decode:d=>({signedKeys:Se.decode(d),identity:1&e.uint.decode(d)?Ce.decode(d):null})},Le={preencode(d,o){d.end++,o.expiration&&e.uint.preencode(d,o.expiration),n>=20&&o.buildType&&Or.preencode(d,o.buildType)},encode(d,o){const c=(o.expiration?1:0)|(o.requiresConfirmation?2:0)|(o.canModerate?4:0)|(o.canAdmin?8:0)|(n>=20&&o.buildType?16:0);e.uint.encode(d,c),o.expiration&&e.uint.encode(d,o.expiration),n>=20&&o.buildType&&Or.encode(d,o.buildType)},decode(d){const o=e.uint.decode(d);return{expiration:1&o?e.uint.decode(d):0,requiresConfirmation:!!(2&o),canModerate:!!(4&o),canAdmin:!!(8&o),buildType:n>=20&&16&o?Or.decode(d):null}}},qe=Se,Fe=e.frame(Le),Ee={preencode(d,n){e.fixed32.preencode(d,n.id),qe.preencode(d,n.response),Fe.preencode(d,n.metadata),d.end++,n.anchor&&o.preencode(d,n.anchor)},encode(d,n){const c=(n.anchor?1:0)|(n.isActive?2:0);e.fixed32.encode(d,n.id),qe.encode(d,n.response),Fe.encode(d,n.metadata),e.uint.encode(d,c),n.anchor&&o.encode(d,n.anchor)},decode(d){const n=e.fixed32.decode(d),c=qe.decode(d),r=Fe.decode(d),t=e.uint.decode(d);return{id:n,response:c,metadata:r,anchor:1&t?o.decode(d):null,isActive:!!(2&t)}}},Be=_,Ie=e.frame(Ee),Ne={preencode(e,d){Be.preencode(e,d.header),Ie.preencode(e,d.invitation)},encode(e,d){Be.encode(e,d.header),Ie.encode(e,d.invitation)},decode:e=>({header:Be.decode(e),invitation:Ie.decode(e)})},je=_,Oe={preencode(d,n){je.preencode(d,n.header),e.fixed32.preencode(d,n.id)},encode(d,n){je.encode(d,n.header),e.fixed32.encode(d,n.id)},decode:d=>({header:je.decode(d),id:e.fixed32.decode(d)})},Je={preencode(d,n){e.fixed32.preencode(d,n.mailbox),e.fixed32.preencode(d,n.invitationSeed),o.preencode(d,n.anchor)},encode(d,n){e.fixed32.encode(d,n.mailbox),e.fixed32.encode(d,n.invitationSeed),o.encode(d,n.anchor)},decode:d=>({mailbox:e.fixed32.decode(d),invitationSeed:e.fixed32.decode(d),anchor:o.decode(d)})},Ue={preencode(d,n){e.fixed32.preencode(d,n.mailbox),e.fixed32.preencode(d,n.invitationSeed),o.preencode(d,n.anchor),e.fixed32.preencode(d,n.identityPublicKey)},encode(d,n){e.fixed32.encode(d,n.mailbox),e.fixed32.encode(d,n.invitationSeed),o.encode(d,n.anchor),e.fixed32.encode(d,n.identityPublicKey)},decode:d=>({mailbox:e.fixed32.decode(d),invitationSeed:e.fixed32.decode(d),anchor:o.decode(d),identityPublicKey:e.fixed32.decode(d)})},Ve={preencode(d,n){e.fixed32.preencode(d,n.mailbox)},encode(d,n){e.fixed32.encode(d,n.mailbox)},decode:d=>({mailbox:e.fixed32.decode(d)})},He=e.frame(Je),ze=e.frame(Ue),Ge=e.frame(Ve),Qe=e.array(e.ipv4Address),We={preencode(e,d){e.end++,d.room&&He.preencode(e,d.room),d.identity&&ze.preencode(e,d.identity),d.contact&&Ge.preencode(e,d.contact),n>=6&&d.readonly&&Zr.preencode(e,d.readonly),n>=11&&d.additionalNodes&&Qe.preencode(e,d.additionalNodes),n>=20&&d.buildType&&Or.preencode(e,d.buildType)},encode(d,o){const c=(o.room?1:0)|(o.identity?2:0)|(o.contact?4:0)|(n>=6&&o.readonly?8:0)|(n>=11&&o.additionalNodes?16:0)|(n>=20&&o.buildType?32:0);e.uint.encode(d,c),o.room&&He.encode(d,o.room),o.identity&&ze.encode(d,o.identity),o.contact&&Ge.encode(d,o.contact),n>=6&&o.readonly&&Zr.encode(d,o.readonly),n>=11&&o.additionalNodes&&Qe.encode(d,o.additionalNodes),n>=20&&o.buildType&&Or.encode(d,o.buildType)},decode(d){const o=e.uint.decode(d);return{room:1&o?He.decode(d):null,identity:2&o?ze.decode(d):null,contact:4&o?Ge.decode(d):null,readonly:n>=6&&8&o?Zr.decode(d):null,additionalNodes:n>=11&&16&o?Qe.decode(d):null,buildType:n>=20&&32&o?Or.decode(d):null}}},Xe=_,Ye={preencode(d,n){Xe.preencode(d,n.header),e.buffer.preencode(d,n.blindRequest)},encode(d,n){Xe.encode(d,n.header),e.buffer.encode(d,n.blindRequest)},decode:d=>({header:Xe.decode(d),blindRequest:e.buffer.decode(d)})},Ze=_,$e={preencode(e,d){Ze.preencode(e,d.header),e.end++,d.profile&&$r.preencode(e,d.profile)},encode(d,n){const o=n.profile?1:0;Ze.encode(d,n.header),e.uint.encode(d,o),n.profile&&$r.encode(d,n.profile)},decode:d=>({header:Ze.decode(d),profile:1&e.uint.decode(d)?$r.decode(d):null})},_e={preencode(e,d){},encode(e,d){},decode:e=>({})},ed=_e,dd=he,nd={preencode(d,n){e.fixed32.preencode(d,n.deviceKey),e.fixed32.preencode(d,n.id),dd.preencode(d,n.request)},encode(d,n){e.fixed32.encode(d,n.deviceKey),e.fixed32.encode(d,n.id),dd.encode(d,n.request)},decode:d=>({deviceKey:e.fixed32.decode(d),id:e.fixed32.decode(d),request:dd.decode(d)})},od=_,cd=Ce,rd={preencode(d,n){od.preencode(d,n.header),e.fixed32.preencode(d,n.deviceKey),d.end++,n.identity&&cd.preencode(d,n.identity)},encode(d,n){const o=n.identity?1:0;od.encode(d,n.header),e.fixed32.encode(d,n.deviceKey),e.uint.encode(d,o),n.identity&&cd.encode(d,n.identity)},decode:d=>({header:od.decode(d),deviceKey:e.fixed32.decode(d),identity:1&e.uint.decode(d)?cd.decode(d):null})},td=_,id={preencode(d,n){td.preencode(d,n.header),e.fixed32.preencode(d,n.deviceKey)},encode(d,n){td.encode(d,n.header),e.fixed32.encode(d,n.deviceKey)},decode:d=>({header:td.decode(d),deviceKey:e.fixed32.decode(d)})},ad=e.frame(C),sd=ue,pd={preencode(d,n){e.fixed32.preencode(d,n.key),ad.preencode(d,n.status),sd.preencode(d,n.profile)},encode(d,n){e.fixed32.encode(d,n.key),ad.encode(d,n.status),sd.encode(d,n.profile)},decode:d=>({key:e.fixed32.decode(d),status:ad.decode(d),profile:sd.decode(d)})},ud=ad,ld=ue,fd={preencode(d,n){e.fixed32.preencode(d,n.key),ud.preencode(d,n.status),ld.preencode(d,n.profile),d.end++,n.proofs&&_r.preencode(d,n.proofs)},encode(d,n){const o=n.proofs?1:0;e.fixed32.encode(d,n.key),ud.encode(d,n.status),ld.encode(d,n.profile),e.uint.encode(d,o),n.proofs&&_r.encode(d,n.proofs)},decode:d=>({key:e.fixed32.decode(d),status:ud.decode(d),profile:ld.decode(d),proofs:1&e.uint.decode(d)?_r.decode(d):null})},md={preencode(d,n){e.fixed32.preencode(d,n.key),d.end++,n.profileAttestation&&e.buffer.preencode(d,n.profileAttestation),n.latestReceipt&&e.buffer.preencode(d,n.latestReceipt)},encode(d,n){const o=(n.profileAttestation?1:0)|(n.latestReceipt?2:0);e.fixed32.encode(d,n.key),e.uint.encode(d,o),n.profileAttestation&&e.buffer.encode(d,n.profileAttestation),n.latestReceipt&&e.buffer.encode(d,n.latestReceipt)},decode(d){const n=e.fixed32.decode(d),o=e.uint.decode(d);return{key:n,profileAttestation:1&o?e.buffer.decode(d):null,latestReceipt:2&o?e.buffer.decode(d):null}}},yd=_,xd=ke,bd={preencode(e,d){yd.preencode(e,d.header),xd.preencode(e,d.member)},encode(e,d){yd.encode(e,d.header),xd.encode(e,d.member)},decode:e=>({header:yd.decode(e),member:xd.decode(e)})},kd=_,vd=e.frame(M),gd={preencode(d,n){kd.preencode(d,n.header),e.fixed32.preencode(d,n.memberKey),e.uint.preencode(d,n.key),vd.preencode(d,n.status)},encode(d,n){kd.encode(d,n.header),e.fixed32.encode(d,n.memberKey),e.uint.encode(d,n.key),vd.encode(d,n.status)},decode:d=>({header:kd.decode(d),memberKey:e.fixed32.decode(d),key:e.uint.decode(d),status:vd.decode(d)})},hd=_,Kd={preencode(d,n){hd.preencode(d,n.header),e.fixed32.preencode(d,n.key),d.end++},encode(d,n){const o=(n.isModerator?1:0)|(n.isAdmin?2:0);hd.encode(d,n.header),e.fixed32.encode(d,n.key),e.uint.encode(d,o)},decode(d){const n=hd.decode(d),o=e.fixed32.decode(d),c=e.uint.decode(d);return{header:n,key:o,isModerator:!!(1&c),isAdmin:!!(2&c)}}},wd=_,Td={preencode(d,n){wd.preencode(d,n.header),e.fixed32.preencode(d,n.key)},encode(d,n){wd.encode(d,n.header),e.fixed32.encode(d,n.key)},decode:d=>({header:wd.decode(d),key:e.fixed32.decode(d)})},Pd={preencode(d,n){e.fixed32.preencode(d,n.key),e.uint.preencode(d,n.mentions)},encode(d,n){e.fixed32.encode(d,n.key),e.uint.encode(d,n.mentions)},decode:d=>({key:e.fixed32.decode(d),mentions:e.uint.decode(d)})},Ad={preencode(d,n){d.end++,n.memberKey&&e.fixed32.preencode(d,n.memberKey)},encode(d,n){const o=n.memberKey?1:0;e.uint.encode(d,o),n.memberKey&&e.fixed32.encode(d,n.memberKey)},decode:d=>({memberKey:1&e.uint.decode(d)?e.fixed32.decode(d):null})},Rd=Ad,Dd={preencode(d,n){d.end++,n.from&&e.string.preencode(d,n.from),n.to&&e.string.preencode(d,n.to)},encode(d,n){const o=(n.from?1:0)|(n.to?2:0);e.uint.encode(d,o),n.from&&e.string.encode(d,n.from),n.to&&e.string.encode(d,n.to)},decode(d){const n=e.uint.decode(d);return{from:1&n?e.string.decode(d):null,to:2&n?e.string.decode(d):null}}},Sd=e.frame(Ad),Cd=e.frame(Rd),Md=e.frame(Dd),Ld={preencode(d,o){const c=(o.memberJoined?1:0)|(o.memberLeft?2:0)|(o.titleChanged?4:0)|(o.callStarted?8:0)|(o.callHangup?16:0)|(o.callMissed?32:0)|(n>=3&&o.roomAvatarChanged?64:0)|(n>=3&&o.invitationCreated?128:0)|(n>=3&&o.memberRemoved?256:0)|(n>=18&&o.locationShared?512:0);e.uint.preencode(d,c),o.memberJoined&&Sd.preencode(d,o.memberJoined),o.memberLeft&&Cd.preencode(d,o.memberLeft),o.titleChanged&&Md.preencode(d,o.titleChanged),n>=3&&o.memberRemoved&&et.preencode(d,o.memberRemoved),n>=18&&o.locationShared&&dt.preencode(d,o.locationShared)},encode(d,o){const c=(o.memberJoined?1:0)|(o.memberLeft?2:0)|(o.titleChanged?4:0)|(o.callStarted?8:0)|(o.callHangup?16:0)|(o.callMissed?32:0)|(n>=3&&o.roomAvatarChanged?64:0)|(n>=3&&o.invitationCreated?128:0)|(n>=3&&o.memberRemoved?256:0)|(n>=18&&o.locationShared?512:0);e.uint.encode(d,c),o.memberJoined&&Sd.encode(d,o.memberJoined),o.memberLeft&&Cd.encode(d,o.memberLeft),o.titleChanged&&Md.encode(d,o.titleChanged),n>=3&&o.memberRemoved&&et.encode(d,o.memberRemoved),n>=18&&o.locationShared&&dt.encode(d,o.locationShared)},decode(d){const o=e.uint.decode(d);return{memberJoined:1&o?Sd.decode(d):null,memberLeft:2&o?Cd.decode(d):null,titleChanged:4&o?Md.decode(d):null,callStarted:!!(8&o),callHangup:!!(16&o),callMissed:!!(32&o),roomAvatarChanged:n>=3&&!!(64&o),invitationCreated:n>=3&&!!(128&o),memberRemoved:n>=3&&256&o?et.decode(d):null,locationShared:n>=18&&512&o?dt.decode(d):null}}},qd={preencode(e,d){e.end++,n>=18&&d.locationShared&&nt.preencode(e,d.locationShared)},encode(d,o){const c=(o.callStarted?1:0)|(o.callHangup?2:0)|(o.callMissed?4:0)|(n>=18&&o.locationShared?8:0);e.uint.encode(d,c),n>=18&&o.locationShared&&nt.encode(d,o.locationShared)},decode(d){const o=e.uint.decode(d);return{callStarted:!!(1&o),callHangup:!!(2&o),callMissed:!!(4&o),locationShared:n>=18&&8&o?nt.decode(d):null}}},Fd={preencode(d,n){e.uint.preencode(d,n.start),e.uint.preencode(d,n.length)},encode(d,n){e.uint.encode(d,n.start),e.uint.encode(d,n.length)},decode:d=>({start:e.uint.decode(d),length:e.uint.decode(d)})},Ed=e.frame(Fd),Bd={preencode(d,n){Ed.preencode(d,n.range),e.string.preencode(d,n.content)},encode(d,n){Ed.encode(d,n.range),e.string.encode(d,n.content)},decode:d=>({range:Ed.decode(d),content:e.string.decode(d)})},Id=Ed,Nd={preencode(d,n){Id.preencode(d,n.range),e.fixed32.preencode(d,n.memberKey)},encode(d,n){Id.encode(d,n.range),e.fixed32.encode(d,n.memberKey)},decode:d=>({range:Id.decode(d),memberKey:e.fixed32.decode(d)})},jd=h,Od=e.array(e.uint),Jd={preencode(d,o){d.end++,o.title&&e.string.preencode(d,o.title),o.description&&e.string.preencode(d,o.description),o.file&&jd.preencode(d,o.file),n>=7&&o.files&&Od.preencode(d,o.files)},encode(d,o){const c=(o.title?1:0)|(o.description?2:0)|(o.file?4:0)|(n>=7&&o.files?8:0);e.uint.encode(d,c),o.title&&e.string.encode(d,o.title),o.description&&e.string.encode(d,o.description),o.file&&jd.encode(d,o.file),n>=7&&o.files&&Od.encode(d,o.files)},decode(d){const o=e.uint.decode(d);return{title:1&o?e.string.decode(d):null,description:2&o?e.string.decode(d):null,file:4&o?jd.decode(d):null,files:n>=7&&8&o?Od.decode(d):null}}},Ud=Ed,Vd=e.frame(Jd),Hd={preencode(d,n){Ud.preencode(d,n.range),e.string.preencode(d,n.url),d.end++,n.preview&&Vd.preencode(d,n.preview)},encode(d,n){const o=n.preview?1:0;Ud.encode(d,n.range),e.string.encode(d,n.url),e.uint.encode(d,o),n.preview&&Vd.encode(d,n.preview)},decode:d=>({range:Ud.decode(d),url:e.string.decode(d),preview:1&e.uint.decode(d)?Vd.decode(d):null})},zd=e.array(e.frame(Nd)),Gd=e.array(e.frame(Hd)),Qd=Gd,Wd=e.array(e.frame(Fd)),Xd=Wd,Yd=Wd,Zd=e.array(e.frame(Bd)),$d=Wd,_d=Wd,en={preencode(d,o){const c=(o.mention?1:0)|(o.httpLink?2:0)|(o.pearLink?4:0)|(o.bold?8:0)|(o.italic?16:0)|(o.code?32:0)|(o.emoji?64:0)|(o.codeBlock?128:0)|(o.strike?256:0)|(n>=11&&o.translation?512:0);e.uint.preencode(d,c),o.mention&&zd.preencode(d,o.mention),o.httpLink&&Gd.preencode(d,o.httpLink),o.pearLink&&Qd.preencode(d,o.pearLink),o.bold&&Wd.preencode(d,o.bold),o.italic&&Xd.preencode(d,o.italic),o.code&&Yd.preencode(d,o.code),o.emoji&&Zd.preencode(d,o.emoji),o.codeBlock&&$d.preencode(d,o.codeBlock),o.strike&&_d.preencode(d,o.strike),n>=11&&o.translation&&ot.preencode(d,o.translation)},encode(d,o){const c=(o.mention?1:0)|(o.httpLink?2:0)|(o.pearLink?4:0)|(o.bold?8:0)|(o.italic?16:0)|(o.code?32:0)|(o.emoji?64:0)|(o.codeBlock?128:0)|(o.strike?256:0)|(n>=11&&o.translation?512:0);e.uint.encode(d,c),o.mention&&zd.encode(d,o.mention),o.httpLink&&Gd.encode(d,o.httpLink),o.pearLink&&Qd.encode(d,o.pearLink),o.bold&&Wd.encode(d,o.bold),o.italic&&Xd.encode(d,o.italic),o.code&&Yd.encode(d,o.code),o.emoji&&Zd.encode(d,o.emoji),o.codeBlock&&$d.encode(d,o.codeBlock),o.strike&&_d.encode(d,o.strike),n>=11&&o.translation&&ot.encode(d,o.translation)},decode(d){const o=e.uint.decode(d);return{mention:1&o?zd.decode(d):null,httpLink:2&o?Gd.decode(d):null,pearLink:4&o?Qd.decode(d):null,bold:8&o?Wd.decode(d):null,italic:16&o?Xd.decode(d):null,code:32&o?Yd.decode(d):null,emoji:64&o?Zd.decode(d):null,codeBlock:128&o?$d.decode(d):null,strike:256&o?_d.decode(d):null,translation:n>=11&&512&o?ot.decode(d):null}}},dn=e.array(e.frame(g)),nn=e.frame(en),on=e.frame(qd),cn={preencode(d,n){d.end++,n.text&&e.string.preencode(d,n.text),n.files&&dn.preencode(d,n.files),n.display&&nn.preencode(d,n.display),n.replyTo&&c.preencode(d,n.replyTo),n.parent&&c.preencode(d,n.parent),n.event&&on.preencode(d,n.event)},encode(d,o){const r=(o.text?1:0)|(o.files?2:0)|(o.display?4:0)|(o.replyTo?8:0)|(o.parent?16:0)|(o.event?32:0)|(n>=18&&o.forwarded?64:0);e.uint.encode(d,r),o.text&&e.string.encode(d,o.text),o.files&&dn.encode(d,o.files),o.display&&nn.encode(d,o.display),o.replyTo&&c.encode(d,o.replyTo),o.parent&&c.encode(d,o.parent),o.event&&on.encode(d,o.event)},decode(d){const o=e.uint.decode(d);return{text:1&o?e.string.decode(d):null,files:2&o?dn.decode(d):null,display:4&o?nn.decode(d):null,replyTo:8&o?c.decode(d):null,parent:16&o?c.decode(d):null,event:32&o?on.decode(d):null,forwarded:n>=18&&!!(64&o)}}},rn=Od,tn=nn,an={preencode(d,n){d.end++,n.text&&e.string.preencode(d,n.text),n.files&&rn.preencode(d,n.files),n.display&&tn.preencode(d,n.display),n.replyTo&&c.preencode(d,n.replyTo),n.parent&&c.preencode(d,n.parent)},encode(d,o){const r=(o.text?1:0)|(o.files?2:0)|(o.display?4:0)|(o.replyTo?8:0)|(o.parent?16:0)|(n>=18&&o.forwarded?32:0);e.uint.encode(d,r),o.text&&e.string.encode(d,o.text),o.files&&rn.encode(d,o.files),o.display&&tn.encode(d,o.display),o.replyTo&&c.encode(d,o.replyTo),o.parent&&c.encode(d,o.parent)},decode(d){const o=e.uint.decode(d);return{text:1&o?e.string.decode(d):null,files:2&o?rn.decode(d):null,display:4&o?tn.decode(d):null,replyTo:8&o?c.decode(d):null,parent:16&o?c.decode(d):null,forwarded:n>=18&&!!(32&o)}}},sn=dn,pn=nn,un={preencode(d,n){d.end++,n.text&&e.string.preencode(d,n.text),n.files&&sn.preencode(d,n.files),n.display&&pn.preencode(d,n.display),n.replyTo&&c.preencode(d,n.replyTo),n.parent&&c.preencode(d,n.parent)},encode(d,o){const r=(o.text?1:0)|(o.files?2:0)|(o.display?4:0)|(o.replyTo?8:0)|(o.parent?16:0)|(n>=18&&o.forwarded?32:0);e.uint.encode(d,r),o.text&&e.string.encode(d,o.text),o.files&&sn.encode(d,o.files),o.display&&pn.encode(d,o.display),o.replyTo&&c.encode(d,o.replyTo),o.parent&&c.encode(d,o.parent)},decode(d){const o=e.uint.decode(d);return{text:1&o?e.string.decode(d):null,files:2&o?sn.decode(d):null,display:4&o?pn.decode(d):null,replyTo:8&o?c.decode(d):null,parent:16&o?c.decode(d):null,forwarded:n>=18&&!!(32&o)}}},ln={preencode(e,d){e.end++},encode(d,n){const o=(n.isEdited?1:0)|(n.isDeleted?2:0)|(n.isPinned?4:0);e.uint.encode(d,o)},decode(d){const n=e.uint.decode(d);return{isEdited:!!(1&n),isDeleted:!!(2&n),isPinned:!!(4&n)}}},fn={preencode(d,n){e.uint.preencode(d,n.thread),e.uint.preencode(d,n.index)},encode(d,n){e.uint.encode(d,n.thread),e.uint.encode(d,n.index)},decode:d=>({thread:e.uint.decode(d),index:e.uint.decode(d)})},mn=e.frame(J),yn={preencode(d,n){e.uint.preencode(d,n.id),e.uint.preencode(d,n.count),d.end++,n.parent&&c.preencode(d,n.parent),n.stats&&mn.preencode(d,n.stats)},encode(d,n){const o=(n.parent?1:0)|(n.stats?2:0);e.uint.encode(d,n.id),e.uint.encode(d,n.count),e.uint.encode(d,o),n.parent&&c.encode(d,n.parent),n.stats&&mn.encode(d,n.stats)},decode(d){const n=e.uint.decode(d),o=e.uint.decode(d),r=e.uint.decode(d);return{id:n,count:o,parent:1&r?c.decode(d):null,stats:2&r?mn.decode(d):null}}},xn=e.frame(ln),bn=e.frame(an),kn=e.frame(Ld),vn={preencode(d,n){fn.preencode(d,n.id),c.preencode(d,n.oplog),e.uint.preencode(d,n.clock),e.uint.preencode(d,n.timestamp),d.end++,n.editedAt&&e.uint.preencode(d,n.editedAt),xn.preencode(d,n.status),n.message&&bn.preencode(d,n.message),n.event&&kn.preencode(d,n.event)},encode(d,n){const o=(n.editedAt?1:0)|(n.message?2:0)|(n.event?4:0);fn.encode(d,n.id),c.encode(d,n.oplog),e.uint.encode(d,n.clock),e.uint.encode(d,n.timestamp),e.uint.encode(d,o),n.editedAt&&e.uint.encode(d,n.editedAt),xn.encode(d,n.status),n.message&&bn.encode(d,n.message),n.event&&kn.encode(d,n.event)},decode(d){const n=fn.decode(d),o=c.decode(d),r=e.uint.decode(d),t=e.uint.decode(d),i=e.uint.decode(d);return{id:n,oplog:o,clock:r,timestamp:t,editedAt:1&i?e.uint.decode(d):0,status:xn.decode(d),message:2&i?bn.decode(d):null,event:4&i?kn.decode(d):null}}},gn=xn,hn=e.frame(un),Kn=kn,wn={preencode(d,n){fn.preencode(d,n.id),c.preencode(d,n.oplog),e.uint.preencode(d,n.clock),e.uint.preencode(d,n.timestamp),d.end++,n.editedAt&&e.uint.preencode(d,n.editedAt),gn.preencode(d,n.status),n.message&&hn.preencode(d,n.message),n.event&&Kn.preencode(d,n.event)},encode(d,n){const o=(n.editedAt?1:0)|(n.message?2:0)|(n.event?4:0);fn.encode(d,n.id),c.encode(d,n.oplog),e.uint.encode(d,n.clock),e.uint.encode(d,n.timestamp),e.uint.encode(d,o),n.editedAt&&e.uint.encode(d,n.editedAt),gn.encode(d,n.status),n.message&&hn.encode(d,n.message),n.event&&Kn.encode(d,n.event)},decode(d){const n=fn.decode(d),o=c.decode(d),r=e.uint.decode(d),t=e.uint.decode(d),i=e.uint.decode(d);return{id:n,oplog:o,clock:r,timestamp:t,editedAt:1&i?e.uint.decode(d):0,status:gn.decode(d),message:2&i?hn.decode(d):null,event:4&i?Kn.decode(d):null}}},Tn=_,Pn=e.frame(cn),An={preencode(e,d){Tn.preencode(e,d.header),Pn.preencode(e,d.message)},encode(e,d){Tn.encode(e,d.header),Pn.encode(e,d.message)},decode:e=>({header:Tn.decode(e),message:Pn.decode(e)})},Rn=_,Dn={preencode(e,d){Rn.preencode(e,d.header),c.preencode(e,d.oplog)},encode(e,d){Rn.encode(e,d.header),c.encode(e,d.oplog)},decode:e=>({header:Rn.decode(e),oplog:c.decode(e)})},Sn=_,Cn=Pn,Mn={preencode(e,d){Sn.preencode(e,d.header),c.preencode(e,d.oplog),Cn.preencode(e,d.message)},encode(e,d){Sn.encode(e,d.header),c.encode(e,d.oplog),Cn.encode(e,d.message)},decode:e=>({header:Sn.decode(e),oplog:c.decode(e),message:Cn.decode(e)})},Ln=_,qn={preencode(e,d){Ln.preencode(e,d.header),c.preencode(e,d.oplog),e.end++},encode(d,n){const o=n.isPinned?1:0;Ln.encode(d,n.header),c.encode(d,n.oplog),e.uint.encode(d,o)},decode:d=>({header:Ln.decode(d),oplog:c.decode(d),isPinned:!!(1&e.uint.decode(d))})},Fn={preencode(d,n){fn.preencode(d,n.id),e.fixed32.preencode(d,n.sender),e.uint.preencode(d,n.clock),e.string.preencode(d,n.reaction)},encode(d,n){fn.encode(d,n.id),e.fixed32.encode(d,n.sender),e.uint.encode(d,n.clock),e.string.encode(d,n.reaction)},decode:d=>({id:fn.decode(d),sender:e.fixed32.decode(d),clock:e.uint.decode(d),reaction:e.string.decode(d)})},En={preencode(d,n){e.string.preencode(d,n.text),e.uint.preencode(d,n.count)},encode(d,n){e.string.encode(d,n.text),e.uint.encode(d,n.count)},decode:d=>({text:e.string.decode(d),count:e.uint.decode(d)})},Bn=e.array(e.frame(En)),In={preencode(d,o){fn.preencode(d,o.id),e.uint.preencode(d,o.total),Bn.preencode(d,o.reactions),d.end++,n>=11&&o.editedAt&&e.uint.preencode(d,o.editedAt)},encode(d,o){const c=n>=11&&o.editedAt?1:0;fn.encode(d,o.id),e.uint.encode(d,o.total),Bn.encode(d,o.reactions),e.uint.encode(d,c),n>=11&&o.editedAt&&e.uint.encode(d,o.editedAt)},decode(d){const o=fn.decode(d),c=e.uint.decode(d),r=Bn.decode(d),t=d.start<d.end?e.uint.decode(d):0;return{id:o,total:c,reactions:r,editedAt:n>=11&&1&t?e.uint.decode(d):0}}},Nn=_,jn={preencode(d,n){Nn.preencode(d,n.header),c.preencode(d,n.oplog),e.string.preencode(d,n.reaction)},encode(d,n){Nn.encode(d,n.header),c.encode(d,n.oplog),e.string.encode(d,n.reaction)},decode:d=>({header:Nn.decode(d),oplog:c.decode(d),reaction:e.string.decode(d)})},On=_,Jn={preencode(d,n){On.preencode(d,n.header),c.preencode(d,n.oplog),e.string.preencode(d,n.reaction)},encode(d,n){On.encode(d,n.header),c.encode(d,n.oplog),e.string.encode(d,n.reaction)},decode:d=>({header:On.decode(d),oplog:c.decode(d),reaction:e.string.decode(d)})},Un=_,Vn=e.frame(Z),Hn={preencode(d,n){Un.preencode(d,n.header),e.uint.preencode(d,n.key),Vn.preencode(d,n.config)},encode(d,n){Un.encode(d,n.header),e.uint.encode(d,n.key),Vn.encode(d,n.config)},decode:d=>({header:Un.decode(d),key:e.uint.decode(d),config:Vn.decode(d)})},zn={preencode(d,n){e.fixed32.preencode(d,n.memberKey),e.string.preencode(d,n.displayName),d.end++,n.avatar&&ct.preencode(d,n.avatar)},encode(d,n){const o=n.avatar?1:0;e.fixed32.encode(d,n.memberKey),e.string.encode(d,n.displayName),e.uint.encode(d,o),n.avatar&&ct.encode(d,n.avatar)},decode:d=>({memberKey:e.fixed32.decode(d),displayName:e.string.decode(d),avatar:1&e.uint.decode(d)?ct.decode(d):null})},Gn={preencode(d,n){e.fixed32.preencode(d,n.key),d.end++,n.username&&e.string.preencode(d,n.username)},encode(d,n){const o=n.username?1:0;e.fixed32.encode(d,n.key),e.uint.encode(d,o),n.username&&e.string.encode(d,n.username)},decode:d=>({key:e.fixed32.decode(d),username:1&e.uint.decode(d)?e.string.decode(d):null})},Qn=e.frame(Gn),Wn={preencode(d,n){e.fixed32.preencode(d,n.publicKey),d.end++,n.discoveryCoreKey&&e.fixed32.preencode(d,n.discoveryCoreKey),n.userRegistry&&Qn.preencode(d,n.userRegistry)},encode(d,n){const o=(n.discoveryCoreKey?1:0)|(n.userRegistry?2:0);e.fixed32.encode(d,n.publicKey),e.uint.encode(d,o),n.discoveryCoreKey&&e.fixed32.encode(d,n.discoveryCoreKey),n.userRegistry&&Qn.encode(d,n.userRegistry)},decode(d){const n=e.fixed32.decode(d),o=e.uint.decode(d);return{publicKey:n,discoveryCoreKey:1&o?e.fixed32.decode(d):null,userRegistry:2&o?Qn.decode(d):null}}},Xn=_,Yn=e.frame(Q),Zn=e.frame(W),$n=Vn,_n=e.frame(Wn),eo=be,no=e.array(e.frame(le)),oo={preencode(e,d){Xn.preencode(e,d.header),Yn.preencode(e,d.digest),Zn.preencode(e,d.capabilities),e.end++,d.config&&$n.preencode(e,d.config),d.identity&&_n.preencode(e,d.identity),d.bootstrapDevice&&eo.preencode(e,d.bootstrapDevice),d.initialMembers&&no.preencode(e,d.initialMembers)},encode(d,n){const o=(n.config?1:0)|(n.identity?2:0)|(n.bootstrapDevice?4:0)|(n.initialMembers?8:0);Xn.encode(d,n.header),Yn.encode(d,n.digest),Zn.encode(d,n.capabilities),e.uint.encode(d,o),n.config&&$n.encode(d,n.config),n.identity&&_n.encode(d,n.identity),n.bootstrapDevice&&eo.encode(d,n.bootstrapDevice),n.initialMembers&&no.encode(d,n.initialMembers)},decode(d){const n=Xn.decode(d),o=Yn.decode(d),c=Zn.decode(d),r=e.uint.decode(d);return{header:n,digest:o,capabilities:c,config:1&r?$n.decode(d):null,identity:2&r?_n.decode(d):null,bootstrapDevice:4&r?eo.decode(d):null,initialMembers:8&r?no.decode(d):null}}},co=_,ro={preencode(d,n){co.preencode(d,n.header),e.uint.preencode(d,n.version)},encode(d,n){co.encode(d,n.header),e.uint.encode(d,n.version)},decode:d=>({header:co.decode(d),version:e.uint.decode(d)})},to=_,io=G,ao={preencode(d,n){to.preencode(d,n.header),e.uint.preencode(d,n.key),io.preencode(d,n.settings)},encode(d,n){to.encode(d,n.header),e.uint.encode(d,n.key),io.encode(d,n.settings)},decode:d=>({header:to.decode(d),key:e.uint.decode(d),settings:io.decode(d)})},so={preencode(d,n){e.fixed32.preencode(d,n.memberKey),rt.preencode(d,n.status),d.end++,n.mailbox&&e.fixed32.preencode(d,n.mailbox),n.roomKey&&e.fixed32.preencode(d,n.roomKey)},encode(d,n){const o=(n.mailbox?1:0)|(n.roomKey?2:0);e.fixed32.encode(d,n.memberKey),rt.encode(d,n.status),e.uint.encode(d,o),n.mailbox&&e.fixed32.encode(d,n.mailbox),n.roomKey&&e.fixed32.encode(d,n.roomKey)},decode(d){const n=e.fixed32.decode(d),o=rt.decode(d),c=e.uint.decode(d);return{memberKey:n,status:o,mailbox:1&c?e.fixed32.decode(d):null,roomKey:2&c?e.fixed32.decode(d):null}}},po={preencode(d,n){e.fixed32.preencode(d,n.roomKey),e.buffer.preencode(d,n.encryptionKey),e.fixed32.preencode(d,n.seed),o.preencode(d,n.initiator),e.fixed32.preencode(d,n.fastForwardTo)},encode(d,n){e.fixed32.encode(d,n.roomKey),e.buffer.encode(d,n.encryptionKey),e.fixed32.encode(d,n.seed),o.encode(d,n.initiator),e.fixed32.encode(d,n.fastForwardTo)},decode:d=>({roomKey:e.fixed32.decode(d),encryptionKey:e.buffer.decode(d),seed:e.fixed32.decode(d),initiator:o.decode(d),fastForwardTo:e.fixed32.decode(d)})},uo=e.array(e.frame(po)),lo=Y,fo={preencode(e,d){uo.preencode(e,d.sharedRooms),lo.preencode(e,d.blockedContacts)},encode(e,d){uo.encode(e,d.sharedRooms),lo.encode(e,d.blockedContacts)},decode:e=>({sharedRooms:uo.decode(e),blockedContacts:lo.decode(e)})},mo=_n,yo={preencode(e,d){mo.preencode(e,d.identity)},encode(e,d){mo.encode(e,d.identity)},decode:e=>({identity:mo.decode(e)})},xo={preencode(d,n){e.uint.preencode(d,n.rooms),e.uint.preencode(d,n.contacts)},encode(d,n){e.uint.encode(d,n.rooms),e.uint.encode(d,n.contacts)},decode:d=>({rooms:e.uint.decode(d),contacts:e.uint.decode(d)})},bo={preencode(d,n){e.uint.preencode(d,n.rooms),e.uint.preencode(d,n.contactRequests)},encode(d,n){e.uint.encode(d,n.rooms),e.uint.encode(d,n.contactRequests)},decode:d=>({rooms:e.uint.decode(d),contactRequests:e.uint.decode(d)})},ko={preencode(d,n){e.buffer.preencode(d,n.entropy)},encode(d,n){e.buffer.encode(d,n.entropy)},decode:d=>({entropy:e.buffer.decode(d)})},vo={preencode(d,n){e.fixed32.preencode(d,n.publicKey),e.fixed32.preencode(d,n.devicePublicKey),e.fixed32.preencode(d,n.writerKey)},encode(d,n){e.fixed32.encode(d,n.publicKey),e.fixed32.encode(d,n.devicePublicKey),e.fixed32.encode(d,n.writerKey)},decode:d=>({publicKey:e.fixed32.decode(d),devicePublicKey:e.fixed32.decode(d),writerKey:e.fixed32.decode(d)})},go=e.frame(vo),ho={preencode(d,c){e.fixed32.preencode(d,c.id),e.fixed32.preencode(d,c.invitationSeed),e.fixed32.preencode(d,c.mailbox),t.preencode(d,c.responseKeyPair),o.preencode(d,c.initiator),o.preencode(d,c.inviter),d.end++,c.identity&&go.preencode(d,c.identity),n>=20&&c.buildType&&Or.preencode(d,c.buildType)},encode(d,c){const r=(c.identity?1:0)|(n>=20&&c.buildType?2:0);e.fixed32.encode(d,c.id),e.fixed32.encode(d,c.invitationSeed),e.fixed32.encode(d,c.mailbox),t.encode(d,c.responseKeyPair),o.encode(d,c.initiator),o.encode(d,c.inviter),e.uint.encode(d,r),c.identity&&go.encode(d,c.identity),n>=20&&c.buildType&&Or.encode(d,c.buildType)},decode(d){const c=e.fixed32.decode(d),r=e.fixed32.decode(d),i=e.fixed32.decode(d),a=t.decode(d),s=o.decode(d),p=o.decode(d),u=e.uint.decode(d);return{id:c,invitationSeed:r,mailbox:i,responseKeyPair:a,initiator:s,inviter:p,identity:1&u?go.decode(d):null,buildType:n>=20&&2&u?Or.decode(d):null}}},Ko=_,wo={preencode(d,n){Ko.preencode(d,n.header),e.buffer.preencode(d,n.blindResponse)},encode(d,n){Ko.encode(d,n.header),e.buffer.encode(d,n.blindResponse)},decode:d=>({header:Ko.decode(d),blindResponse:e.buffer.decode(d)})},To=_,Po=e.frame(ho),Ao={preencode(e,d){To.preencode(e,d.header),Po.preencode(e,d.invitation)},encode(e,d){To.encode(e,d.header),Po.encode(e,d.invitation)},decode:e=>({header:To.decode(e),invitation:Po.decode(e)})},Ro=_,Do={preencode(d,n){Ro.preencode(d,n.header),e.fixed32.preencode(d,n.id)},encode(d,n){Ro.encode(d,n.header),e.fixed32.encode(d,n.id)},decode:d=>({header:Ro.decode(d),id:e.fixed32.decode(d)})},So={preencode(d,n){e.fixed32.preencode(d,n.publicKey),e.fixed32.preencode(d,n.devicePublicKey),d.end++,n.privateProfileKey&&e.fixed32.preencode(d,n.privateProfileKey),n.deviceKeyPair&&t.preencode(d,n.deviceKeyPair),e.buffer.preencode(d,n.deviceProof)},encode(d,n){const o=(n.privateProfileKey?1:0)|(n.deviceKeyPair?2:0);e.fixed32.encode(d,n.publicKey),e.fixed32.encode(d,n.devicePublicKey),e.uint.encode(d,o),n.privateProfileKey&&e.fixed32.encode(d,n.privateProfileKey),n.deviceKeyPair&&t.encode(d,n.deviceKeyPair),e.buffer.encode(d,n.deviceProof)},decode(d){const n=e.fixed32.decode(d),o=e.fixed32.decode(d),c=e.uint.decode(d);return{publicKey:n,devicePublicKey:o,privateProfileKey:1&c?e.fixed32.decode(d):null,deviceKeyPair:2&c?t.decode(d):null,deviceProof:e.buffer.decode(d)}}},Co={preencode(e,d){e.end++},encode(d,o){const c=(o.isActive?1:0)|(o.isFullyMuted?2:0)|(o.isMentionsOnlyMuted?4:0)|(n>=9&&o.isReadOnly?8:0)|(n>=18&&o.isFavorite?16:0);e.uint.encode(d,c)},decode(d){const o=e.uint.decode(d);return{isActive:!!(1&o),isFullyMuted:!!(2&o),isMentionsOnlyMuted:!!(4&o),isReadOnly:n>=9&&!!(8&o),isFavorite:n>=18&&!!(16&o)}}},Mo=e.frame(Co),Lo=e.frame(So),qo=go,Fo={preencode(d,c){e.fixed32.preencode(d,c.roomKey),e.buffer.preencode(d,c.encryptionKey),e.fixed32.preencode(d,c.mailbox),Mo.preencode(d,c.status),e.uint.preencode(d,c.clock),d.end++,c.initiator&&o.preencode(d,c.initiator),c.fastForwardTo&&e.fixed32.preencode(d,c.fastForwardTo),c.identitySwap&&Lo.preencode(d,c.identitySwap),n>=6&&c.identitySwapV2&&qo.preencode(d,c.identitySwapV2),n>=10&&c.contact&&e.fixed32.preencode(d,c.contact)},encode(d,c){const r=(c.initiator?1:0)|(c.fastForwardTo?2:0)|(c.identitySwap?4:0)|(n>=6&&c.identitySwapV2?8:0)|(n>=10&&c.contact?16:0);e.fixed32.encode(d,c.roomKey),e.buffer.encode(d,c.encryptionKey),e.fixed32.encode(d,c.mailbox),Mo.encode(d,c.status),e.uint.encode(d,c.clock),e.uint.encode(d,r),c.initiator&&o.encode(d,c.initiator),c.fastForwardTo&&e.fixed32.encode(d,c.fastForwardTo),c.identitySwap&&Lo.encode(d,c.identitySwap),n>=6&&c.identitySwapV2&&qo.encode(d,c.identitySwapV2),n>=10&&c.contact&&e.fixed32.encode(d,c.contact)},decode(d){const c=e.fixed32.decode(d),r=e.buffer.decode(d),t=e.fixed32.decode(d),i=Mo.decode(d),a=e.uint.decode(d),s=e.uint.decode(d);return{roomKey:c,encryptionKey:r,mailbox:t,status:i,clock:a,initiator:1&s?o.decode(d):null,fastForwardTo:2&s?e.fixed32.decode(d):null,identitySwap:4&s?Lo.decode(d):null,identitySwapV2:n>=6&&8&s?qo.decode(d):null,contact:n>=10&&16&s?e.fixed32.decode(d):null}}},Eo=_,Bo={preencode(d,n){Eo.preencode(d,n.header),e.fixed32.preencode(d,n.roomKey),e.buffer.preencode(d,n.encryptionKey),e.fixed32.preencode(d,n.mailbox),d.end++,n.fastForwardTo&&e.fixed32.preencode(d,n.fastForwardTo),n.initiator&&o.preencode(d,n.initiator),n.dm&&e.fixed32.preencode(d,n.dm)},encode(d,c){const r=(c.fastForwardTo?1:0)|(c.initiator?2:0)|(c.dm?4:0)|(n>=9&&c.isReadOnly?8:0);Eo.encode(d,c.header),e.fixed32.encode(d,c.roomKey),e.buffer.encode(d,c.encryptionKey),e.fixed32.encode(d,c.mailbox),e.uint.encode(d,r),c.fastForwardTo&&e.fixed32.encode(d,c.fastForwardTo),c.initiator&&o.encode(d,c.initiator),c.dm&&e.fixed32.encode(d,c.dm)},decode(d){const c=Eo.decode(d),r=e.fixed32.decode(d),t=e.buffer.decode(d),i=e.fixed32.decode(d),a=e.uint.decode(d);return{header:c,roomKey:r,encryptionKey:t,mailbox:i,fastForwardTo:1&a?e.fixed32.decode(d):null,initiator:2&a?o.decode(d):null,dm:4&a?e.fixed32.decode(d):null,isReadOnly:n>=9&&!!(8&a)}}},Io=_,No={preencode(d,n){Io.preencode(d,n.header),e.fixed32.preencode(d,n.discoveryKey)},encode(d,n){Io.encode(d,n.header),e.fixed32.encode(d,n.discoveryKey)},decode:d=>({header:Io.decode(d),discoveryKey:e.fixed32.decode(d)})},jo=_,Oo=Mo,Jo={preencode(d,n){jo.preencode(d,n.header),e.fixed32.preencode(d,n.roomKey),e.uint.preencode(d,n.key),Oo.preencode(d,n.status)},encode(d,n){jo.encode(d,n.header),e.fixed32.encode(d,n.roomKey),e.uint.encode(d,n.key),Oo.encode(d,n.status)},decode:d=>({header:jo.decode(d),roomKey:e.fixed32.decode(d),key:e.uint.decode(d),status:Oo.decode(d)})},Uo={preencode(e,d){e.end++},encode(d,n){const o=n.isBlocked?1:0;e.uint.encode(d,o)},decode:d=>({isBlocked:!!(1&e.uint.decode(d))})},Vo={preencode(d,n){e.fixed32.preencode(d,n.memberKey),e.uint.preencode(d,n.clock),tt.preencode(d,n.status),d.end++,n.mailbox&&e.fixed32.preencode(d,n.mailbox),n.roomKey&&e.fixed32.preencode(d,n.roomKey)},encode(d,n){const o=(n.mailbox?1:0)|(n.roomKey?2:0);e.fixed32.encode(d,n.memberKey),e.uint.encode(d,n.clock),tt.encode(d,n.status),e.uint.encode(d,o),n.mailbox&&e.fixed32.encode(d,n.mailbox),n.roomKey&&e.fixed32.encode(d,n.roomKey)},decode(d){const n=e.fixed32.decode(d),o=e.uint.decode(d),c=tt.decode(d),r=e.uint.decode(d);return{memberKey:n,clock:o,status:c,mailbox:1&r?e.fixed32.decode(d):null,roomKey:2&r?e.fixed32.decode(d):null}}},Ho=_,zo=e.frame(so),Go={preencode(e,d){Ho.preencode(e,d.header),zo.preencode(e,d.contact)},encode(e,d){Ho.encode(e,d.header),zo.encode(e,d.contact)},decode:e=>({header:Ho.decode(e),contact:zo.decode(e)})},Qo=_,Wo={preencode(d,n){Qo.preencode(d,n.header),e.fixed32.preencode(d,n.memberKey),e.uint.preencode(d,n.key),it.preencode(d,n.status)},encode(d,n){Qo.encode(d,n.header),e.fixed32.encode(d,n.memberKey),e.uint.encode(d,n.key),it.encode(d,n.status)},decode:d=>({header:Qo.decode(d),memberKey:e.fixed32.decode(d),key:e.uint.decode(d),status:it.decode(d)})},Xo=_,Yo={preencode(d,n){Xo.preencode(d,n.header),e.fixed32.preencode(d,n.memberKey)},encode(d,n){Xo.encode(d,n.header),e.fixed32.encode(d,n.memberKey)},decode:d=>({header:Xo.decode(d),memberKey:e.fixed32.decode(d)})},Zo={preencode(e,d){e.end++},encode(d,n){const o=(n.isPending?1:0)|(n.isAccepted?2:0)|(n.isRejected?4:0)|(n.isDiscarded?8:0)|(n.isSeen?16:0);e.uint.encode(d,o)},decode(d){const n=e.uint.decode(d);return{isPending:!!(1&n),isAccepted:!!(2&n),isRejected:!!(4&n),isDiscarded:!!(8&n),isSeen:!!(16&n)}}},$o=ke,_o=e.frame(i),ec={preencode(d,n){$o.preencode(d,n.sender),_o.preencode(d,n.keys),e.fixed32.preencode(d,n.mailbox),d.end++,n.message&&e.string.preencode(d,n.message)},encode(d,n){const o=n.message?1:0;$o.encode(d,n.sender),_o.encode(d,n.keys),e.fixed32.encode(d,n.mailbox),e.uint.encode(d,o),n.message&&e.string.encode(d,n.message)},decode:d=>({sender:$o.decode(d),keys:_o.decode(d),mailbox:e.fixed32.decode(d),message:1&e.uint.decode(d)?e.string.decode(d):null})},dc=e.frame(ec),nc={preencode(e,d){dc.preencode(e,d.body),ce.preencode(e,d.attestation)},encode(e,d){dc.encode(e,d.body),ce.encode(e,d.attestation)},decode:e=>({body:dc.decode(e),attestation:ce.decode(e)})},oc=ue,cc=e.frame(Zo),rc=_o,tc={preencode(d,o){e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.clock),oc.preencode(d,o.sender),cc.preencode(d,o.status),rc.preencode(d,o.keys),e.fixed32.preencode(d,o.mailbox),d.end++,o.message&&e.string.preencode(d,o.message),n>=11&&o.sentAt&&e.uint.preencode(d,o.sentAt)},encode(d,o){const c=(o.message?1:0)|(n>=11&&o.sentAt?2:0);e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.clock),oc.encode(d,o.sender),cc.encode(d,o.status),rc.encode(d,o.keys),e.fixed32.encode(d,o.mailbox),e.uint.encode(d,c),o.message&&e.string.encode(d,o.message),n>=11&&o.sentAt&&e.uint.encode(d,o.sentAt)},decode(d){const o=e.fixed32.decode(d),c=e.uint.decode(d),r=oc.decode(d),t=cc.decode(d),i=rc.decode(d),a=e.fixed32.decode(d),s=e.uint.decode(d);return{memberKey:o,clock:c,sender:r,status:t,keys:i,mailbox:a,message:1&s?e.string.decode(d):null,sentAt:n>=11&&2&s?e.uint.decode(d):0}}},ic=_,ac={preencode(d,n){ic.preencode(d,n.header),e.buffer.preencode(d,n.blindRequest)},encode(d,n){ic.encode(d,n.header),e.buffer.encode(d,n.blindRequest)},decode:d=>({header:ic.decode(d),blindRequest:e.buffer.decode(d)})},sc=_,pc=cc,uc={preencode(d,o){sc.preencode(d,o.header),e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.key),pc.preencode(d,o.status),d.end++,n>=10&&o.roomKey&&e.fixed32.preencode(d,o.roomKey)},encode(d,o){const c=n>=10&&o.roomKey?1:0;sc.encode(d,o.header),e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.key),pc.encode(d,o.status),e.uint.encode(d,c),n>=10&&o.roomKey&&e.fixed32.encode(d,o.roomKey)},decode(d){const o=sc.decode(d),c=e.fixed32.decode(d),r=e.uint.decode(d),t=pc.decode(d),i=d.start<d.end?e.uint.decode(d):0;return{header:o,memberKey:c,key:r,status:t,roomKey:n>=10&&1&i?e.fixed32.decode(d):null}}},lc={preencode(d,n){e.uint.preencode(d,n.timestamp),e.fixed32.preencode(d,n.key),e.fixed32.preencode(d,n.mailbox)},encode(d,n){e.uint.encode(d,n.timestamp),e.fixed32.encode(d,n.key),e.fixed32.encode(d,n.mailbox)},decode:d=>({version:e.uint.decode(d),timestamp:e.uint.decode(d),key:e.fixed32.decode(d),mailbox:e.fixed32.decode(d)})},fc={preencode(d,n){switch(e.uint.preencode(d,n.version),n.version){case 0:case 1:lc.preencode(d,n);break;default:throw new Error("Unsupported version")}},encode(d,n){switch(e.uint.encode(d,n.version),n.version){case 0:case 1:lc.encode(d,n);break;default:throw new Error("Unsupported version")}},decode(d){const n=d.start,o=e.uint.decode(d);switch(d.start=n,o){case 0:case 1:return lc.decode(d);default:throw new Error("Unsupported version")}}},mc=_,yc={preencode(d,o){mc.preencode(d,o.header),c.preencode(d,o.oplog),e.uint.preencode(d,o.index),at.preencode(d,o.preview),d.end++,n>=7&&o.displayType&&Rc.preencode(d,o.displayType)},encode(d,o){const r=n>=7&&o.displayType?1:0;mc.encode(d,o.header),c.encode(d,o.oplog),e.uint.encode(d,o.index),at.encode(d,o.preview),e.uint.encode(d,r),n>=7&&o.displayType&&Rc.encode(d,o.displayType)},decode(d){const o=mc.decode(d),r=c.decode(d),t=e.uint.decode(d),i=at.decode(d),a=d.start<d.end?e.uint.decode(d):0;return{header:o,oplog:r,index:t,preview:i,displayType:n>=7&&1&a?Rc.decode(d):0}}},xc={preencode(d,o){d.end++,n>=3&&o.memberKey&&e.fixed32.preencode(d,o.memberKey)},encode(d,o){const c=n>=3&&o.memberKey?1:0;e.uint.encode(d,c),n>=3&&o.memberKey&&e.fixed32.encode(d,o.memberKey)},decode(d){const o=e.uint.decode(d);return{memberKey:n>=3&&1&o?e.fixed32.decode(d):null}}},bc=ue,kc={preencode(e,d){bc.preencode(e,d.profile),ce.preencode(e,d.attestation)},encode(e,d){bc.encode(e,d.profile),ce.encode(e,d.attestation)},decode:e=>({profile:bc.decode(e),attestation:ce.decode(e)})},vc=_,gc={preencode(d,n){vc.preencode(d,n.header),e.fixed32.preencode(d,n.key)},encode(d,n){vc.encode(d,n.header),e.fixed32.encode(d,n.key)},decode:d=>({header:vc.decode(d),key:e.fixed32.decode(d)})},hc={preencode(d,n){e.fixed32.preencode(d,n.deviceKey),ce.preencode(d,n.privateProfileIdentity),e.buffer.preencode(d,n.deviceProof)},encode(d,n){e.fixed32.encode(d,n.deviceKey),ce.encode(d,n.privateProfileIdentity),e.buffer.encode(d,n.deviceProof)},decode:d=>({deviceKey:e.fixed32.decode(d),privateProfileIdentity:ce.decode(d),deviceProof:e.buffer.decode(d)})},Kc={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.fixed32.preencode(d,o.encryptionKey),e.fixed32.preencode(d,o.seed),d.end++,n>=6&&o.fastForwardTo&&e.fixed32.preencode(d,o.fastForwardTo)},encode(d,o){const c=n>=6&&o.fastForwardTo?1:0;e.fixed32.encode(d,o.roomKey),e.fixed32.encode(d,o.encryptionKey),e.fixed32.encode(d,o.seed),e.uint.encode(d,c),n>=6&&o.fastForwardTo&&e.fixed32.encode(d,o.fastForwardTo)},decode(d){const o=e.fixed32.decode(d),c=e.fixed32.decode(d),r=e.fixed32.decode(d),t=e.uint.decode(d);return{roomKey:o,encryptionKey:c,seed:r,fastForwardTo:n>=6&&1&t?e.fixed32.decode(d):null}}},wc={preencode(d,o){e.fixed32.preencode(d,o.publicKey),e.fixed32.preencode(d,o.writerKey),e.fixed32.preencode(d,o.devicePublicKey),d.end++,n>=6&&o.privateProfileKey&&e.fixed32.preencode(d,o.privateProfileKey)},encode(d,o){const c=n>=6&&o.privateProfileKey?1:0;e.fixed32.encode(d,o.publicKey),e.fixed32.encode(d,o.writerKey),e.fixed32.encode(d,o.devicePublicKey),e.uint.encode(d,c),n>=6&&o.privateProfileKey&&e.fixed32.encode(d,o.privateProfileKey)},decode(d){const o=e.fixed32.decode(d),c=e.fixed32.decode(d),r=e.fixed32.decode(d),t=e.uint.decode(d);return{publicKey:o,writerKey:c,devicePublicKey:r,privateProfileKey:n>=6&&1&t?e.fixed32.decode(d):null}}},Tc=_,Pc={preencode(d,n){Tc.preencode(d,n.header),e.fixed32.preencode(d,n.memberKey)},encode(d,n){Tc.encode(d,n.header),e.fixed32.encode(d,n.memberKey)},decode:d=>({header:Tc.decode(d),memberKey:e.fixed32.decode(d)})},Ac={HttpLink:1,PearLink:2},Rc={preencode(e,d){e.end++},encode(d,n){if(n>2)throw new Error("Unknown enum");e.uint.encode(d,n)},decode:d=>e.uint.decode(d)},Dc=_,Sc={preencode(d,n){Dc.preencode(d,n.header),e.uint.preencode(d,n.value)},encode(d,n){Dc.encode(d,n.header),e.uint.encode(d,n.value)},decode:d=>({header:Dc.decode(d),value:e.uint.decode(d)})},Cc={preencode(d,n){e.uint.preencode(d,n.key),e.uint.preencode(d,n.value)},encode(d,n){e.uint.encode(d,n.key),e.uint.encode(d,n.value)},decode:d=>({key:e.uint.decode(d),value:e.uint.decode(d)})},Mc=_,Lc={preencode(d,o){Mc.preencode(d,o.header),e.uint.preencode(d,o.from),e.uint.preencode(d,o.to),d.end++,n>=20&&o.buildType&&Or.preencode(d,o.buildType)},encode(d,o){const c=n>=20&&o.buildType?1:0;Mc.encode(d,o.header),e.uint.encode(d,o.from),e.uint.encode(d,o.to),e.uint.encode(d,c),n>=20&&o.buildType&&Or.encode(d,o.buildType)},decode(d){const o=Mc.decode(d),c=e.uint.decode(d),r=e.uint.decode(d),t=d.start<d.end?e.uint.decode(d):0;return{header:o,from:c,to:r,buildType:n>=20&&1&t?Or.decode(d):null}}},qc={RoomType:1,IsExperimental:2,IsJoiningDisabled:3,IsAppendingDisabled:4,IsCallingDisabled:5,IsMembershipEventsDisabled:6,IsAttachmentsDisabled:7,IsLinksDisabled:8},Fc={preencode(e,d){e.end++},encode(d,n){if(n>8)throw new Error("Unknown enum");e.uint.encode(d,n)},decode:d=>e.uint.decode(d)},Ec={en:"en",it:"it",ru:"ru",es:"es",de:"de"},Bc={preencode(e,d){e.end++},encode(d,n){switch(n){case"en":e.uint.encode(d,1);break;case"it":e.uint.encode(d,2);break;case"ru":e.uint.encode(d,3);break;case"es":e.uint.encode(d,4);break;case"de":e.uint.encode(d,5);break;default:throw new Error("Unknown enum")}},decode(d){switch(e.uint.decode(d)){case 1:return"en";case 2:return"it";case 3:return"ru";case 4:return"es";case 5:return"de";default:return null}}},Ic=Ed,Nc={preencode(d,n){Ic.preencode(d,n.range),Bc.preencode(d,n.language),e.string.preencode(d,n.text)},encode(d,n){Ic.encode(d,n.range),Bc.encode(d,n.language),e.string.encode(d,n.text)},decode:d=>({range:Ic.decode(d),language:Bc.decode(d),text:e.string.decode(d)})},jc={preencode(d,n){e.fixed32.preencode(d,n.deviceKey),e.fixed32.preencode(d,n.key)},encode(d,n){e.fixed32.encode(d,n.deviceKey),e.fixed32.encode(d,n.key)},decode:d=>({deviceKey:e.fixed32.decode(d),key:e.fixed32.decode(d)})},Oc=_,Jc={preencode(d,n){Oc.preencode(d,n.header),e.fixed32.preencode(d,n.key)},encode(d,n){Oc.encode(d,n.header),e.fixed32.encode(d,n.key)},decode:d=>({header:Oc.decode(d),key:e.fixed32.decode(d)})},Uc=_,Vc={preencode(d,n){Uc.preencode(d,n.header),e.fixed32.preencode(d,n.key)},encode(d,n){Uc.encode(d,n.header),e.fixed32.encode(d,n.key)},decode:d=>({header:Uc.decode(d),key:e.fixed32.decode(d)})},Hc={Flag:1},zc={preencode(e,d){e.end++},encode(d,n){if(n>1)throw new Error("Unknown enum");e.uint.encode(d,n)},decode:d=>e.uint.decode(d)},Gc={preencode(d,n){fn.preencode(d,n.id),e.fixed32.preencode(d,n.sender),e.uint.preencode(d,n.clock),zc.preencode(d,n.label)},encode(d,n){fn.encode(d,n.id),e.fixed32.encode(d,n.sender),e.uint.encode(d,n.clock),zc.encode(d,n.label)},decode:d=>({id:fn.decode(d),sender:e.fixed32.decode(d),clock:e.uint.decode(d),label:zc.decode(d)})},Qc=_,Wc={preencode(e,d){Qc.preencode(e,d.header),c.preencode(e,d.oplog),zc.preencode(e,d.label)},encode(e,d){Qc.encode(e,d.header),c.encode(e,d.oplog),zc.encode(e,d.label)},decode:e=>({header:Qc.decode(e),oplog:c.decode(e),label:zc.decode(e)})},Xc=_,Yc={preencode(e,d){Xc.preencode(e,d.header),c.preencode(e,d.oplog),zc.preencode(e,d.label)},encode(e,d){Xc.encode(e,d.header),c.encode(e,d.oplog),zc.encode(e,d.label)},decode:e=>({header:Xc.decode(e),oplog:c.decode(e),label:zc.decode(e)})},Zc={preencode(d,n){zc.preencode(d,n.label),e.uint.preencode(d,n.count)},encode(d,n){zc.encode(d,n.label),e.uint.encode(d,n.count)},decode:d=>({label:zc.decode(d),count:e.uint.decode(d)})},$c=e.array(e.frame(Zc)),_c={preencode(d,o){fn.preencode(d,o.id),e.uint.preencode(d,o.total),$c.preencode(d,o.labels),e.uint.preencode(d,o.editedAt),d.end++,n>=15&&o.flagsClock&&e.uint.preencode(d,o.flagsClock),n>=15&&o.version&&e.uint.preencode(d,o.version)},encode(d,o){const c=(n>=15&&o.flagsClock?1:0)|(n>=15&&o.version?2:0)|(n>=16&&o.isDeleted?4:0);fn.encode(d,o.id),e.uint.encode(d,o.total),$c.encode(d,o.labels),e.uint.encode(d,o.editedAt),e.uint.encode(d,c),n>=15&&o.flagsClock&&e.uint.encode(d,o.flagsClock),n>=15&&o.version&&e.uint.encode(d,o.version)},decode(d){const o=fn.decode(d),c=e.uint.decode(d),r=$c.decode(d),t=e.uint.decode(d),i=d.start<d.end?e.uint.decode(d):0;return{id:o,total:c,labels:r,editedAt:t,flagsClock:n>=15&&1&i?e.uint.decode(d):0,version:n>=15&&2&i?e.uint.decode(d):0,isDeleted:n>=16&&!!(4&i)}}},er=_,dr={preencode(d,n){er.preencode(d,n.header),e.uint.preencode(d,n.length)},encode(d,n){er.encode(d,n.header),e.uint.encode(d,n.length)},decode:d=>({header:er.decode(d),length:e.uint.decode(d)})},nr={preencode(d,n){e.fixed32.preencode(d,n.memberKey),e.uint.preencode(d,n.length)},encode(d,n){e.fixed32.encode(d,n.memberKey),e.uint.encode(d,n.length)},decode:d=>({memberKey:e.fixed32.decode(d),length:e.uint.decode(d)})},or=$,cr={preencode(e,d){e.end++},encode(d,o){const c=n>=13&&o.disableReadReceipts?1:0;e.uint.encode(d,c)},decode(d){const o=e.uint.decode(d);return{disableReadReceipts:n>=13&&!!(1&o)}}},rr={disableReadReceipts:"disableReadReceipts"},tr={preencode(e,d){e.end++},encode(d,n){if("disableReadReceipts"!==n)throw new Error("Unknown enum");e.uint.encode(d,1)},decode:d=>1===e.uint.decode(d)?"disableReadReceipts":null},ir=_,ar=e.frame(cr),sr={preencode(e,d){ir.preencode(e,d.header),tr.preencode(e,d.key),ar.preencode(e,d.settings)},encode(e,d){ir.encode(e,d.header),tr.encode(e,d.key),ar.encode(e,d.settings)},decode:e=>({header:ir.decode(e),key:tr.decode(e),settings:ar.decode(e)})},pr={Flag:1},ur={preencode(e,d){e.end++},encode(d,n){if(n>1)throw new Error("Unknown enum");e.uint.encode(d,n)},decode:d=>e.uint.decode(d)},lr={preencode(d,n){e.fixed32.preencode(d,n.key),e.fixed32.preencode(d,n.sender),e.uint.preencode(d,n.clock),ur.preencode(d,n.label)},encode(d,n){e.fixed32.encode(d,n.key),e.fixed32.encode(d,n.sender),e.uint.encode(d,n.clock),ur.encode(d,n.label)},decode:d=>({key:e.fixed32.decode(d),sender:e.fixed32.decode(d),clock:e.uint.decode(d),label:ur.decode(d)})},fr=_,mr={preencode(d,n){fr.preencode(d,n.header),e.fixed32.preencode(d,n.key),ur.preencode(d,n.label)},encode(d,n){fr.encode(d,n.header),e.fixed32.encode(d,n.key),ur.encode(d,n.label)},decode:d=>({header:fr.decode(d),key:e.fixed32.decode(d),label:ur.decode(d)})},yr={preencode(d,n){ur.preencode(d,n.label),e.uint.preencode(d,n.count)},encode(d,n){ur.encode(d,n.label),e.uint.encode(d,n.count)},decode:d=>({label:ur.decode(d),count:e.uint.decode(d)})},xr=e.array(e.frame(yr)),br={preencode(d,n){e.fixed32.preencode(d,n.key),e.uint.preencode(d,n.total),xr.preencode(d,n.labels),e.uint.preencode(d,n.editedAt),e.uint.preencode(d,n.flagsClock)},encode(d,n){e.fixed32.encode(d,n.key),e.uint.encode(d,n.total),xr.encode(d,n.labels),e.uint.encode(d,n.editedAt),e.uint.encode(d,n.flagsClock)},decode:d=>({key:e.fixed32.decode(d),total:e.uint.decode(d),labels:xr.decode(d),editedAt:e.uint.decode(d),flagsClock:e.uint.decode(d)})},kr={preencode(d,n){e.float64.preencode(d,n.latitude),e.float64.preencode(d,n.longitude)},encode(d,n){e.float64.encode(d,n.latitude),e.float64.encode(d,n.longitude)},decode:d=>({latitude:e.float64.decode(d),longitude:e.float64.decode(d)})},vr=_,gr={preencode(d,n){vr.preencode(d,n.header),e.fixed32.preencode(d,n.deviceKey),e.fixed32.preencode(d,n.fromDeviceKey)},encode(d,n){vr.encode(d,n.header),e.fixed32.encode(d,n.deviceKey),e.fixed32.encode(d,n.fromDeviceKey)},decode:d=>({header:vr.decode(d),deviceKey:e.fixed32.decode(d),fromDeviceKey:e.fixed32.decode(d)})},hr=_,Kr=Y,wr={preencode(d,o){hr.preencode(d,o.header),e.fixed32.preencode(d,o.callKey),e.buffer.preencode(d,o.encryptionKey),d.end++,n>=19&&o.streams&&Kr.preencode(d,o.streams),n>=19&&o.discoveryKey&&e.fixed32.preencode(d,o.discoveryKey),n>=19&&o.version&&e.uint.preencode(d,o.version)},encode(d,o){const c=(n>=19&&o.streams?1:0)|(n>=19&&o.discoveryKey?2:0)|(n>=19&&o.version?4:0);hr.encode(d,o.header),e.fixed32.encode(d,o.callKey),e.buffer.encode(d,o.encryptionKey),e.uint.encode(d,c),n>=19&&o.streams&&Kr.encode(d,o.streams),n>=19&&o.discoveryKey&&e.fixed32.encode(d,o.discoveryKey),n>=19&&o.version&&e.uint.encode(d,o.version)},decode(d){const o=hr.decode(d),c=e.fixed32.decode(d),r=e.buffer.decode(d),t=e.uint.decode(d);return{header:o,callKey:c,encryptionKey:r,streams:n>=19&&1&t?Kr.decode(d):null,discoveryKey:n>=19&&2&t?e.fixed32.decode(d):null,version:n>=19&&4&t?e.uint.decode(d):0}}},Tr=_,Pr=Y,Ar={preencode(d,o){Tr.preencode(d,o.header),e.fixed32.preencode(d,o.callKey),d.end++,n>=19&&o.streams&&Pr.preencode(d,o.streams)},encode(d,o){const c=n>=19&&o.streams?1:0;Tr.encode(d,o.header),e.fixed32.encode(d,o.callKey),e.uint.encode(d,c),n>=19&&o.streams&&Pr.encode(d,o.streams)},decode(d){const o=Tr.decode(d),c=e.fixed32.decode(d),r=e.uint.decode(d);return{header:o,callKey:c,streams:n>=19&&1&r?Pr.decode(d):null}}},Rr=_,Dr={preencode(d,n){Rr.preencode(d,n.header),e.fixed32.preencode(d,n.callKey)},encode(d,n){Rr.encode(d,n.header),e.fixed32.encode(d,n.callKey)},decode:d=>({header:Rr.decode(d),callKey:e.fixed32.decode(d)})},Sr=_,Cr={preencode(d,n){Sr.preencode(d,n.header),e.fixed32.preencode(d,n.callKey)},encode(d,n){Sr.encode(d,n.header),e.fixed32.encode(d,n.callKey)},decode:d=>({header:Sr.decode(d),callKey:e.fixed32.decode(d)})},Mr=_,Lr={preencode(d,n){Mr.preencode(d,n.header),e.fixed32.preencode(d,n.callKey),e.fixed32.preencode(d,n.streamKey)},encode(d,n){Mr.encode(d,n.header),e.fixed32.encode(d,n.callKey),e.fixed32.encode(d,n.streamKey)},decode:d=>({header:Mr.decode(d),callKey:e.fixed32.decode(d),streamKey:e.fixed32.decode(d)})},qr=_,Fr={preencode(d,n){qr.preencode(d,n.header),e.fixed32.preencode(d,n.callKey),e.fixed32.preencode(d,n.streamKey)},encode(d,n){qr.encode(d,n.header),e.fixed32.encode(d,n.callKey),e.fixed32.encode(d,n.streamKey)},decode:d=>({header:qr.decode(d),callKey:e.fixed32.decode(d),streamKey:e.fixed32.decode(d)})},Er={preencode(d,o){e.fixed32.preencode(d,o.callKey),e.buffer.preencode(d,o.encryptionKey),e.uint.preencode(d,o.createdAt),d.end++,n>=19&&o.endedAt&&e.uint.preencode(d,o.endedAt),n>=19&&o.discoveryKey&&e.fixed32.preencode(d,o.discoveryKey),n>=19&&o.version&&e.uint.preencode(d,o.version)},encode(d,o){const c=(n>=19&&o.endedAt?1:0)|(n>=19&&o.discoveryKey?2:0)|(n>=19&&o.version?4:0);e.fixed32.encode(d,o.callKey),e.buffer.encode(d,o.encryptionKey),e.uint.encode(d,o.createdAt),e.uint.encode(d,c),n>=19&&o.endedAt&&e.uint.encode(d,o.endedAt),n>=19&&o.discoveryKey&&e.fixed32.encode(d,o.discoveryKey),n>=19&&o.version&&e.uint.encode(d,o.version)},decode(d){const o=e.fixed32.decode(d),c=e.buffer.decode(d),r=e.uint.decode(d),t=e.uint.decode(d);return{callKey:o,encryptionKey:c,createdAt:r,endedAt:n>=19&&1&t?e.uint.decode(d):0,discoveryKey:n>=19&&2&t?e.fixed32.decode(d):null,version:n>=19&&4&t?e.uint.decode(d):0}}},Br={preencode(d,n){e.fixed32.preencode(d,n.callKey),e.fixed32.preencode(d,n.memberKey),e.uint.preencode(d,n.createdAt)},encode(d,n){e.fixed32.encode(d,n.callKey),e.fixed32.encode(d,n.memberKey),e.uint.encode(d,n.createdAt)},decode:d=>({callKey:e.fixed32.decode(d),memberKey:e.fixed32.decode(d),createdAt:e.uint.decode(d)})},Ir={preencode(d,o){e.fixed32.preencode(d,o.callKey),e.fixed32.preencode(d,o.deviceKey),e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.createdAt),d.end++,n>=19&&o.swarmKey&&e.fixed32.preencode(d,o.swarmKey)},encode(d,o){const c=n>=19&&o.swarmKey?1:0;e.fixed32.encode(d,o.callKey),e.fixed32.encode(d,o.deviceKey),e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.createdAt),e.uint.encode(d,c),n>=19&&o.swarmKey&&e.fixed32.encode(d,o.swarmKey)},decode(d){const o=e.fixed32.decode(d),c=e.fixed32.decode(d),r=e.fixed32.decode(d),t=e.uint.decode(d),i=e.uint.decode(d);return{callKey:o,deviceKey:c,memberKey:r,createdAt:t,swarmKey:n>=19&&1&i?e.fixed32.decode(d):null}}},Nr={preencode(d,n){e.fixed32.preencode(d,n.callKey),e.fixed32.preencode(d,n.deviceKey),e.buffer.preencode(d,n.streamKey),e.uint.preencode(d,n.createdAt)},encode(d,n){e.fixed32.encode(d,n.callKey),e.fixed32.encode(d,n.deviceKey),e.buffer.encode(d,n.streamKey),e.uint.encode(d,n.createdAt)},decode:d=>({callKey:e.fixed32.decode(d),deviceKey:e.fixed32.decode(d),streamKey:e.buffer.decode(d),createdAt:e.uint.decode(d)})},jr={Nightly:"Nightly",Internal:"Internal",Production:"Production"},Or={preencode(e,d){e.end++},encode(d,n){switch(n){case"Nightly":e.uint.encode(d,1);break;case"Internal":e.uint.encode(d,2);break;case"Production":e.uint.encode(d,3);break;default:throw new Error("Unknown enum")}},decode(d){switch(e.uint.decode(d)){case 1:return"Nightly";case 2:return"Internal";case 3:return"Production";default:return null}}},Jr=_,Ur={preencode(e,d){Jr.preencode(e,d.header)},encode(e,d){Jr.encode(e,d.header)},decode:e=>({header:Jr.decode(e)})},Vr=_,Hr={preencode(e,d){Vr.preencode(e,d.header)},encode(e,d){Vr.encode(e,d.header)},decode:e=>({header:Vr.decode(e)})},zr=e.frame(T),Gr=zr,Qr=e.array(Bc),Wr=e.frame(pe),Xr=zr,Yr=Wr,Zr=e.frame(Kc),$r=Wr,_r=e.frame(md),et=e.frame(xc),dt=e.frame(kr),nt=dt,ot=e.array(e.frame(Nc)),ct=zr,rt=e.frame(Uo),tt=rt,it=rt,at=zr;function st(e){n=e}function pt(d,o,c=20){return n=c,e.encode(ft(d),o)}function ut(d,o,c=20){return n=c,e.decode(ft(d),o)}function lt(e){switch(e){case"@keet/room-type":return U;case"@keet/display-type":return Ac;case"@keet/system-settings-keys":return qc;case"@keet/room-supported-language":return Ec;case"@keet/label-type":return Hc;case"@keet-private-id/user-settings-key":return rr;case"@keet/member-label-type":return pr;case"@keet/build-type":return jr;default:throw new Error("Enum not found "+e)}}function ft(e){switch(e){case"@keet/head":return o;case"@keet/oplog-id":return c;case"@keet/encryption-keypair":return r;case"@keet/signing-keypair":return t;case"@keet/room-keys":return i;case"@keet/operation-header":return a;case"@keet/blob-pointer":return s;case"@keet/file-dimensions":return p;case"@keet/file-metadata":return l;case"@keet/external-drive-pointer":return f;case"@keet/external-blob-pointer":return m;case"@keet/file-pointer":return b;case"@keet/file":return g;case"@keet/image-file":return T;case"@keet/file-status":return P;case"@keet/file-record":return D;case"@keet/device-status":return S;case"@keet/member-status":return C;case"@keet/member-moderation-status":return M;case"@keet/abi":return L;case"@keet/device-stats":return q;case"@keet/member-stats":return F;case"@keet/chat-stats":return E;case"@keet/file-stats":return B;case"@keet/stats":return J;case"@keet/room-type":return V;case"@keet/system-settings":return H;case"@keet/system-digest":return Q;case"@keet/room-seed":return W;case"@keet/room-capabilities":return X;case"@keet/room-config":return Z;case"@keet/blind-peer":return $;case"@keet/add-blind-peer-operation":return de;case"@keet/remove-blind-peer-operation":return oe;case"@keet/identity-attestation":return ce;case"@keet/device-invitation":return re;case"@keet/device":return ae;case"@keet/member-profile":return se;case"@keet/device-profile":return pe;case"@keet/member-update":return le;case"@keet/device-update":return fe;case"@keet/signed-pairing-data":return me;case"@keet/device-request-identity":return ye;case"@keet/device-response-identity":return xe;case"@keet/device-request-with-invitation":return ge;case"@keet/device-request-with-invitation-and-proof":return Ke;case"@keet/device-request-with-member-proof":return Pe;case"@keet/device-request":return De;case"@keet/device-response":return Me;case"@keet/invitation-metadata":return Le;case"@keet/invitation":return Ee;case"@keet/add-invitation-operation":return Ne;case"@keet/remove-invitation-operation":return Oe;case"@keet/sendable-room-invitation":return Je;case"@keet/sendable-identity-invitation":return Ue;case"@keet/sendable-contact-invitation":return Ve;case"@keet/sendable-invitation":return We;case"@keet/add-device-operation":return Ye;case"@keet/update-device-operation":return $e;case"@keet/start-indexing-operation":return _e;case"@keet/stop-indexing-operation":return ed;case"@keet/join-request":return nd;case"@keet/accept-join-request-operation":return rd;case"@keet/reject-join-request-operation":return id;case"@keet/member":return pd;case"@keet/full-member":return fd;case"@keet/member-proofs":return md;case"@keet/update-member-operation":return bd;case"@keet/change-member-status-operation":return gd;case"@keet/change-member-role-operation":return Kd;case"@keet/remove-member-operation":return Td;case"@keet/member-activity":return Pd;case"@keet/member-joined-event":return Ad;case"@keet/member-left-event":return Rd;case"@keet/title-changed-chat-event":return Dd;case"@keet/chat-event":return Ld;case"@keet/sendable-event":return qd;case"@keet/display-range":return Fd;case"@keet/display-content-range":return Bd;case"@keet/mention-display-item":return Nd;case"@keet/link-preview":return Jd;case"@keet/display-link-item":return Hd;case"@keet/display":return en;case"@keet/oplog-message":return cn;case"@keet/index-message":return an;case"@keet/full-index-message":return un;case"@keet/message-status":return ln;case"@keet/message-index-id":return fn;case"@keet/thread":return yn;case"@keet/chat-message-record":return vn;case"@keet/full-chat-message-record":return wn;case"@keet/add-chat-message-operation":return An;case"@keet/remove-chat-message-operation":return Dn;case"@keet/update-chat-message-operation":return Mn;case"@keet/pin-chat-message-operation":return qn;case"@keet/reaction":return Fn;case"@keet/reactions-summary":return En;case"@keet/reactions-digest":return In;case"@keet/add-reaction-operation":return jn;case"@keet/remove-reaction-operation":return Jn;case"@keet/update-room-config-operation":return Hn;case"@keet/group-member":return zn;case"@keet/user-registry-info":return Gn;case"@keet/room-identity":return Wn;case"@keet/genesis-operation":return oo;case"@keet/upgrade-operation":return ro;case"@keet/update-system-settings-operation":return ao;case"@keet-private-id/contact":return so;case"@keet-private-id/v3-room-migration-info":return po;case"@keet-private-id/run-v3-migration-operation":return fo;case"@keet-private-id/update-identity-operation":return yo;case"@keet-private-id/counters":return xo;case"@keet-private-id/stats":return bo;case"@keet-private-id/add-entropy-operation":return ko;case"@keet-private-id/pending-invitation-identity":return vo;case"@keet-private-id/pending-invitation":return ho;case"@keet-private-id/resolve-pending-invitation-operation":return wo;case"@keet-private-id/add-pending-invitation-operation":return Ao;case"@keet-private-id/remove-pending-invitation-operation":return Do;case"@keet-private-id/identity-swap":return So;case"@keet-private-id/room-status":return Co;case"@keet-private-id/room":return Fo;case"@keet-private-id/add-room-operation":return Bo;case"@keet-private-id/remove-room-operation":return No;case"@keet-private-id/update-room-status-operation":return Jo;case"@keet-private-id/contact-status":return Uo;case"@keet-private-id/contact-record":return Vo;case"@keet-private-id/add-contact-operation":return Go;case"@keet-private-id/update-contact-status-operation":return Wo;case"@keet-private-id/remove-contact-operation":return Yo;case"@keet-private-id/contact-request-status":return Zo;case"@keet-private-id/contact-request-body":return ec;case"@keet-private-id/contact-request":return nc;case"@keet-private-id/contact-request-record":return tc;case"@keet-private-id/add-contact-request-operation":return ac;case"@keet-private-id/update-contact-request-status-operation":return uc;case"@keet-private-id/profile-discovery-record-v1":return lc;case"@keet-private-id/profile-discovery-record":return fc;case"@keet/add-file-preview-operation":return yc;case"@keet/member-removed-event":return xc;case"@keet/member-contact-info":return kc;case"@keet/remove-device-operation":return gc;case"@keet/device-identity":return hc;case"@keet/readonly-room-invitation":return Kc;case"@keet-private-id/identity-swap-v2":return wc;case"@keet-private-id/activate-contact-room-operation":return Pc;case"@keet/display-type":return Rc;case"@keet/test-increment-operation":return Sc;case"@keet/test-collection-record-1":return Cc;case"@keet/migrate-abi-operation":return Lc;case"@keet/system-settings-keys":return Fc;case"@keet/room-supported-language":return Bc;case"@keet/translation-display-item":return Nc;case"@keet-private-id/unreads":return jc;case"@keet-private-id/add-unreads-key-operation":return Jc;case"@keet-private-id/remove-unreads-key-operation":return Vc;case"@keet/label-type":return zc;case"@keet/chat-label":return Gc;case"@keet/add-chat-label-operation":return Wc;case"@keet/remove-chat-label-operation":return Yc;case"@keet/chat-label-summary":return Zc;case"@keet/chat-label-digest":return _c;case"@keet/update-read-length-operation":return dr;case"@keet/read-length":return nr;case"@keet/tmp-removed-member":return or;case"@keet-private-id/settings":return cr;case"@keet-private-id/user-settings-key":return tr;case"@keet-private-id/update-settings-operation":return sr;case"@keet/member-label-type":return ur;case"@keet/member-label":return lr;case"@keet/add-member-label-operation":return mr;case"@keet/member-label-summary":return yr;case"@keet/member-label-digest":return br;case"@keet/location-shared-event":return kr;case"@keet/move-indexer-operation":return gr;case"@keet/start-call":return wr;case"@keet/join-call":return Ar;case"@keet/leave-call":return Dr;case"@keet/end-call":return Cr;case"@keet/add-call-stream":return Lr;case"@keet/remove-call-stream":return Fr;case"@keet/call-record":return Er;case"@keet/call-member-record":return Br;case"@keet/call-device-record":return Ir;case"@keet/call-stream-record":return Nr;case"@keet/build-type":return Or;case"@keet/test-crash-operation":return Ur;case"@keet/test-dispatch-error-operation":return Hr;default:throw new Error("Encoder not found "+e)}}function mt(e,d=20){const o=ft(e);return{preencode(e,c){n=d,o.preencode(e,c)},encode(e,c){n=d,o.encode(e,c)},decode:e=>(n=d,o.decode(e))}}const yt=mt;module.exports={resolveStruct:yt,getStruct:mt,getEnum:lt,getEncoding:ft,encode:pt,decode:ut,setVersion:st,version:n};
@holepunchto/keet-core/schema/spec/contract/hyperschema/index.js +1 -0
……@@ -0,0 +1 @@
1const{c:e}=require("hyperschema/runtime"),d=20;let n=d;const o={preencode(d,n){e.fixed32.preencode(d,n.key),e.uint.preencode(d,n.length)},encode(d,n){e.fixed32.encode(d,n.key),e.uint.encode(d,n.length)},decode:d=>({key:e.fixed32.decode(d),length:e.uint.decode(d)})},c={preencode(d,n){e.fixed32.preencode(d,n.key),e.uint.preencode(d,n.seq)},encode(d,n){e.fixed32.encode(d,n.key),e.uint.encode(d,n.seq)},decode:d=>({key:e.fixed32.decode(d),seq:e.uint.decode(d)})},r={preencode(d,n){e.fixed32.preencode(d,n.publicKey),e.fixed32.preencode(d,n.secretKey)},encode(d,n){e.fixed32.encode(d,n.publicKey),e.fixed32.encode(d,n.secretKey)},decode:d=>({publicKey:e.fixed32.decode(d),secretKey:e.fixed32.decode(d)})},t={preencode(d,n){e.fixed32.preencode(d,n.publicKey),e.fixed64.preencode(d,n.secretKey)},encode(d,n){e.fixed32.encode(d,n.publicKey),e.fixed64.encode(d,n.secretKey)},decode:d=>({publicKey:e.fixed32.decode(d),secretKey:e.fixed64.decode(d)})},i={preencode(d,n){e.fixed32.preencode(d,n.key),d.end++,n.encryptionKey&&e.buffer.preencode(d,n.encryptionKey),n.fastForwardTo&&e.fixed32.preencode(d,n.fastForwardTo)},encode(d,n){const o=(n.encryptionKey?1:0)|(n.fastForwardTo?2:0);e.fixed32.encode(d,n.key),e.uint.encode(d,o),n.encryptionKey&&e.buffer.encode(d,n.encryptionKey),n.fastForwardTo&&e.fixed32.encode(d,n.fastForwardTo)},decode(d){const n=e.fixed32.decode(d),o=e.uint.decode(d);return{key:n,encryptionKey:1&o?e.buffer.decode(d):null,fastForwardTo:2&o?e.fixed32.decode(d):null}}},a={preencode(d,n){e.uint.preencode(d,n.timestamp)},encode(d,n){e.uint.encode(d,n.timestamp)},decode:d=>({timestamp:e.uint.decode(d)})},s={preencode(d,n){e.uint.preencode(d,n.blockOffset),e.uint.preencode(d,n.blockLength),e.uint.preencode(d,n.byteOffset),e.uint.preencode(d,n.byteLength)},encode(d,n){e.uint.encode(d,n.blockOffset),e.uint.encode(d,n.blockLength),e.uint.encode(d,n.byteOffset),e.uint.encode(d,n.byteLength)},decode:d=>({blockOffset:e.uint.decode(d),blockLength:e.uint.decode(d),byteOffset:e.uint.decode(d),byteLength:e.uint.decode(d)})},p={preencode(d,n){e.uint.preencode(d,n.width),e.uint.preencode(d,n.height)},encode(d,n){e.uint.encode(d,n.width),e.uint.encode(d,n.height)},decode:d=>({width:e.uint.decode(d),height:e.uint.decode(d)})},u=e.frame(p),l={preencode(d,n){d.end++,n.name&&e.string.preencode(d,n.name),n.mimetype&&e.string.preencode(d,n.mimetype),n.dimensions&&u.preencode(d,n.dimensions),n.userdata&&e.buffer.preencode(d,n.userdata),n.duration&&e.uint.preencode(d,n.duration)},encode(d,n){const o=(n.name?1:0)|(n.mimetype?2:0)|(n.dimensions?4:0)|(n.userdata?8:0)|(n.duration?16:0)|(n.isPreview?32:0);e.uint.encode(d,o),n.name&&e.string.encode(d,n.name),n.mimetype&&e.string.encode(d,n.mimetype),n.dimensions&&u.encode(d,n.dimensions),n.userdata&&e.buffer.encode(d,n.userdata),n.duration&&e.uint.encode(d,n.duration)},decode(d){const n=e.uint.decode(d);return{name:1&n?e.string.decode(d):null,mimetype:2&n?e.string.decode(d):null,dimensions:4&n?u.decode(d):null,userdata:8&n?e.buffer.decode(d):null,duration:16&n?e.uint.decode(d):0,isPreview:!!(32&n)}}},f={preencode(d,n){e.fixed32.preencode(d,n.key),e.string.preencode(d,n.path),e.uint.preencode(d,n.version),e.uint.preencode(d,n.size)},encode(d,n){e.fixed32.encode(d,n.key),e.string.encode(d,n.path),e.uint.encode(d,n.version),e.uint.encode(d,n.size)},decode:d=>({key:e.fixed32.decode(d),path:e.string.decode(d),version:e.uint.decode(d),size:e.uint.decode(d)})},m={preencode(d,n){e.fixed32.preencode(d,n.key),s.preencode(d,n.blob)},encode(d,n){e.fixed32.encode(d,n.key),s.encode(d,n.blob)},decode:d=>({key:e.fixed32.decode(d),blob:s.decode(d)})},y=e.frame(m),x=e.frame(f),b={preencode(d,n){d.end++,n.inlined&&e.buffer.preencode(d,n.inlined),n.blob&&s.preencode(d,n.blob),n.externalBlob&&y.preencode(d,n.externalBlob),n.externalDrive&&x.preencode(d,n.externalDrive)},encode(d,n){const o=(n.inlined?1:0)|(n.blob?2:0)|(n.externalBlob?4:0)|(n.externalDrive?8:0);e.uint.encode(d,o),n.inlined&&e.buffer.encode(d,n.inlined),n.blob&&s.encode(d,n.blob),n.externalBlob&&y.encode(d,n.externalBlob),n.externalDrive&&x.encode(d,n.externalDrive)},decode(d){const n=e.uint.decode(d);return{inlined:1&n?e.buffer.decode(d):null,blob:2&n?s.decode(d):null,externalBlob:4&n?y.decode(d):null,externalDrive:8&n?x.decode(d):null}}},k=e.frame(b),v=e.frame(l),g={preencode(d,n){k.preencode(d,n.pointer),d.end++,n.metadata&&v.preencode(d,n.metadata),n.preview&&zr.preencode(d,n.preview),n.hash&&e.fixed32.preencode(d,n.hash)},encode(d,n){const o=(n.metadata?1:0)|(n.preview?2:0)|(n.hash?4:0);k.encode(d,n.pointer),e.uint.encode(d,o),n.metadata&&v.encode(d,n.metadata),n.preview&&zr.encode(d,n.preview),n.hash&&e.fixed32.encode(d,n.hash)},decode(d){const n=k.decode(d),o=e.uint.decode(d);return{pointer:n,metadata:1&o?v.decode(d):null,preview:2&o?zr.decode(d):null,hash:4&o?e.fixed32.decode(d):null}}},h=e.frame(g),K=h,w=h,T={preencode(e,d){e.end++,d.small&&h.preencode(e,d.small),d.medium&&K.preencode(e,d.medium),d.large&&w.preencode(e,d.large)},encode(d,n){const o=(n.small?1:0)|(n.medium?2:0)|(n.large?4:0);e.uint.encode(d,o),n.small&&h.encode(d,n.small),n.medium&&K.encode(d,n.medium),n.large&&w.encode(d,n.large)},decode(d){const n=e.uint.decode(d);return{small:1&n?h.decode(d):null,medium:2&n?K.decode(d):null,large:4&n?w.decode(d):null}}},P={preencode(e,d){e.end++},encode(d,n){const o=n.isDeleted?1:0;e.uint.encode(d,o)},decode:d=>({isDeleted:!!(1&e.uint.decode(d))})},A=e.frame(P),R=h,D={preencode(d,o){e.uint.preencode(d,o.id),c.preencode(d,o.oplog),A.preencode(d,o.status),R.preencode(d,o.file),d.end++,n>=14&&o.version&&e.uint.preencode(d,o.version)},encode(d,o){const r=n>=14&&o.version?1:0;e.uint.encode(d,o.id),c.encode(d,o.oplog),A.encode(d,o.status),R.encode(d,o.file),e.uint.encode(d,r),n>=14&&o.version&&e.uint.encode(d,o.version)},decode(d){const o=e.uint.decode(d),r=c.decode(d),t=A.decode(d),i=R.decode(d),a=d.start<d.end?e.uint.decode(d):0;return{id:o,oplog:r,status:t,file:i,version:n>=14&&1&a?e.uint.decode(d):0}}},S={preencode(e,d){e.end++},encode(d,n){const o=(n.isActive?1:0)|(n.isIndexing?2:0);e.uint.encode(d,o)},decode(d){const n=e.uint.decode(d);return{isActive:!!(1&n),isIndexing:!!(2&n)}}},C={preencode(d,o){const c=(o.isAdmin?1:0)|(o.isModerator?2:0)|(o.isPending?4:0)|(o.isActive?8:0)|(o.isMuted?16:0)|(o.isBanned?32:0)|(o.isShadowBanned?64:0)|(n>=13&&o.isRemoved?128:0);e.uint.preencode(d,c)},encode(d,o){const c=(o.isAdmin?1:0)|(o.isModerator?2:0)|(o.isPending?4:0)|(o.isActive?8:0)|(o.isMuted?16:0)|(o.isBanned?32:0)|(o.isShadowBanned?64:0)|(n>=13&&o.isRemoved?128:0);e.uint.encode(d,c)},decode(d){const o=e.uint.decode(d);return{isAdmin:!!(1&o),isModerator:!!(2&o),isPending:!!(4&o),isActive:!!(8&o),isMuted:!!(16&o),isBanned:!!(32&o),isShadowBanned:!!(64&o),isRemoved:n>=13&&!!(128&o)}}},M={preencode(e,d){e.end++},encode(d,n){const o=(n.isMuted?1:0)|(n.isBanned?2:0)|(n.isShadowBanned?4:0);e.uint.encode(d,o)},decode(d){const n=e.uint.decode(d);return{isMuted:!!(1&n),isBanned:!!(2&n),isShadowBanned:!!(4&n)}}},L={preencode(d,n){e.uint.preencode(d,n.version)},encode(d,n){e.uint.encode(d,n.version)},decode:d=>({version:e.uint.decode(d)})},q={preencode(d,n){e.uint.preencode(d,n.total),e.uint.preencode(d,n.active)},encode(d,n){e.uint.encode(d,n.total),e.uint.encode(d,n.active)},decode:d=>({total:e.uint.decode(d),active:e.uint.decode(d)})},F={preencode(d,n){e.uint.preencode(d,n.total),e.uint.preencode(d,n.active),e.uint.preencode(d,n.pending)},encode(d,n){e.uint.encode(d,n.total),e.uint.encode(d,n.active),e.uint.encode(d,n.pending)},decode:d=>({total:e.uint.decode(d),active:e.uint.decode(d),pending:e.uint.decode(d)})},E={preencode(d,o){e.uint.preencode(d,o.clock),e.uint.preencode(d,o.pinned),e.uint.preencode(d,o.threads),e.uint.preencode(d,o.timestamp),d.end++,n>=15&&o.flagsClock&&e.uint.preencode(d,o.flagsClock)},encode(d,o){const c=n>=15&&o.flagsClock?1:0;e.uint.encode(d,o.clock),e.uint.encode(d,o.pinned),e.uint.encode(d,o.threads),e.uint.encode(d,o.timestamp),e.uint.encode(d,c),n>=15&&o.flagsClock&&e.uint.encode(d,o.flagsClock)},decode(d){const o=e.uint.decode(d),c=e.uint.decode(d),r=e.uint.decode(d),t=e.uint.decode(d),i=d.start<d.end?e.uint.decode(d):0;return{clock:o,pinned:c,threads:r,timestamp:t,flagsClock:n>=15&&1&i?e.uint.decode(d):0}}},B={preencode(d,n){e.uint.preencode(d,n.clock)},encode(d,n){e.uint.encode(d,n.clock)},decode:d=>({clock:e.uint.decode(d)})},I=e.frame(q),N=e.frame(F),j=e.frame(E),O=e.frame(B),J={preencode(e,d){I.preencode(e,d.devices),N.preencode(e,d.members),j.preencode(e,d.chat),O.preencode(e,d.files)},encode(e,d){I.encode(e,d.devices),N.encode(e,d.members),j.encode(e,d.chat),O.encode(e,d.files)},decode:e=>({devices:I.decode(e),members:N.decode(e),chat:j.decode(e),files:O.decode(e)})},U={Default:1,Broadcast:2,DirectMessage:3},V={preencode(e,d){e.end++},encode(d,n){if(n>3)throw new Error("Unknown enum");e.uint.encode(d,n)},decode:d=>e.uint.decode(d)},H={preencode(d,o){const c=(o.roomType?1:0)|(o.isExperimental?2:0)|(o.isJoiningDisabled?4:0)|(o.isAppendingDisabled?8:0)|(o.isCallingDisabled?16:0)|(o.isMembershipEventsDisabled?32:0)|(n>=19&&o.isAttachmentsDisabled?64:0)|(n>=19&&o.isLinksDisabled?128:0)|(n>=20&&o.buildType?256:0);e.uint.preencode(d,c),o.roomType&&V.preencode(d,o.roomType),n>=20&&o.buildType&&Or.preencode(d,o.buildType)},encode(d,o){const c=(o.roomType?1:0)|(o.isExperimental?2:0)|(o.isJoiningDisabled?4:0)|(o.isAppendingDisabled?8:0)|(o.isCallingDisabled?16:0)|(o.isMembershipEventsDisabled?32:0)|(n>=19&&o.isAttachmentsDisabled?64:0)|(n>=19&&o.isLinksDisabled?128:0)|(n>=20&&o.buildType?256:0);e.uint.encode(d,c),o.roomType&&V.encode(d,o.roomType),n>=20&&o.buildType&&Or.encode(d,o.buildType)},decode(d){const o=e.uint.decode(d);return{roomType:1&o?V.decode(d):0,isExperimental:!!(2&o),isJoiningDisabled:!!(4&o),isAppendingDisabled:!!(8&o),isCallingDisabled:!!(16&o),isMembershipEventsDisabled:!!(32&o),isAttachmentsDisabled:n>=19&&!!(64&o),isLinksDisabled:n>=19&&!!(128&o),buildType:n>=20&&256&o?Or.decode(d):null}}},z=e.frame(L),G=e.frame(H),Q={preencode(d,n){z.preencode(d,n.abi),G.preencode(d,n.settings),e.uint.preencode(d,n.creationTime)},encode(d,n){z.encode(d,n.abi),G.encode(d,n.settings),e.uint.encode(d,n.creationTime)},decode:d=>({abi:z.decode(d),settings:G.decode(d),creationTime:e.uint.decode(d)})},W={preencode(d,n){e.fixed32.preencode(d,n.seed)},encode(d,n){e.fixed32.encode(d,n.seed)},decode:d=>({seed:e.fixed32.decode(d)})},X={preencode(d,n){r.preencode(d,n.mailboxKeyPair),t.preencode(d,n.discoveryKeyPair),e.fixed32.preencode(d,n.wakeupTopic),e.fixed32.preencode(d,n.swarmTopic)},encode(d,n){r.encode(d,n.mailboxKeyPair),t.encode(d,n.discoveryKeyPair),e.fixed32.encode(d,n.wakeupTopic),e.fixed32.encode(d,n.swarmTopic)},decode:d=>({mailboxKeyPair:r.decode(d),discoveryKeyPair:t.decode(d),wakeupTopic:e.fixed32.decode(d),swarmTopic:e.fixed32.decode(d)})},Y=e.array(e.fixed32),Z={preencode(d,o){d.end++,o.title&&e.string.preencode(d,o.title),o.avatar&&Gr.preencode(d,o.avatar),o.description&&e.string.preencode(d,o.description),n>=11&&o.supportedLanguages&&Qr.preencode(d,o.supportedLanguages),n>=13&&o.blindPeers&&Y.preencode(d,o.blindPeers)},encode(d,o){const c=(o.title?1:0)|(o.avatar?2:0)|(o.description?4:0)|(n>=11&&o.supportedLanguages?8:0)|(n>=13&&o.blindPeers?16:0);e.uint.encode(d,c),o.title&&e.string.encode(d,o.title),o.avatar&&Gr.encode(d,o.avatar),o.description&&e.string.encode(d,o.description),n>=11&&o.supportedLanguages&&Qr.encode(d,o.supportedLanguages),n>=13&&o.blindPeers&&Y.encode(d,o.blindPeers)},decode(d){const o=e.uint.decode(d);return{title:1&o?e.string.decode(d):null,avatar:2&o?Gr.decode(d):null,description:4&o?e.string.decode(d):null,supportedLanguages:n>=11&&8&o?Qr.decode(d):null,blindPeers:n>=13&&16&o?Y.decode(d):null}}},$={preencode(d,n){e.fixed32.preencode(d,n.key)},encode(d,n){e.fixed32.encode(d,n.key)},decode:d=>({key:e.fixed32.decode(d)})},_=e.frame(a),ee=e.frame($),de={preencode(e,d){_.preencode(e,d.header),ee.preencode(e,d.peer)},encode(e,d){_.encode(e,d.header),ee.encode(e,d.peer)},decode:e=>({header:_.decode(e),peer:ee.decode(e)})},ne=_,oe={preencode(d,n){ne.preencode(d,n.header),e.fixed32.preencode(d,n.key)},encode(d,n){ne.encode(d,n.header),e.fixed32.encode(d,n.key)},decode:d=>({header:ne.decode(d),key:e.fixed32.decode(d)})},ce={preencode(d,n){e.fixed32.preencode(d,n.memberKey),e.buffer.preencode(d,n.proof)},encode(d,n){e.fixed32.encode(d,n.memberKey),e.buffer.encode(d,n.proof)},decode:d=>({memberKey:e.fixed32.decode(d),proof:e.buffer.decode(d)})},re={preencode(d,n){e.fixed32.preencode(d,n.id),e.buffer.preencode(d,n.response)},encode(d,n){e.fixed32.encode(d,n.id),e.buffer.encode(d,n.response)},decode:d=>({id:e.fixed32.decode(d),response:e.buffer.decode(d)})},te=e.frame(S),ie=e.frame(re),ae={preencode(d,n){e.fixed32.preencode(d,n.key),e.fixed32.preencode(d,n.memberKey),te.preencode(d,n.status),Wr.preencode(d,n.profile),d.end++,n.invitation&&ie.preencode(d,n.invitation)},encode(d,n){const o=n.invitation?1:0;e.fixed32.encode(d,n.key),e.fixed32.encode(d,n.memberKey),te.encode(d,n.status),Wr.encode(d,n.profile),e.uint.encode(d,o),n.invitation&&ie.encode(d,n.invitation)},decode:d=>({key:e.fixed32.decode(d),memberKey:e.fixed32.decode(d),status:te.decode(d),profile:Wr.decode(d),invitation:1&e.uint.decode(d)?ie.decode(d):null})},se={preencode(d,n){e.uint.preencode(d,n.timestamp),d.end++,n.mailbox&&e.fixed32.preencode(d,n.mailbox),n.displayName&&e.string.preencode(d,n.displayName),n.avatar&&Xr.preencode(d,n.avatar),n.username&&e.string.preencode(d,n.username)},encode(d,n){const o=(n.mailbox?1:0)|(n.displayName?2:0)|(n.avatar?4:0)|(n.username?8:0);e.uint.encode(d,n.timestamp),e.uint.encode(d,o),n.mailbox&&e.fixed32.encode(d,n.mailbox),n.displayName&&e.string.encode(d,n.displayName),n.avatar&&Xr.encode(d,n.avatar),n.username&&e.string.encode(d,n.username)},decode(d){const n=e.uint.decode(d),o=e.uint.decode(d);return{timestamp:n,mailbox:1&o?e.fixed32.decode(d):null,displayName:2&o?e.string.decode(d):null,avatar:4&o?Xr.decode(d):null,username:8&o?e.string.decode(d):null}}},pe={preencode(d,o){d.end++,o.swarmKey&&e.fixed32.preencode(d,o.swarmKey),o.name&&e.string.preencode(d,o.name),n>=20&&o.buildType&&Or.preencode(d,o.buildType)},encode(d,o){const c=(o.swarmKey?1:0)|(o.name?2:0)|(o.isMobile?4:0)|(n>=20&&o.buildType?8:0);e.uint.encode(d,c),o.swarmKey&&e.fixed32.encode(d,o.swarmKey),o.name&&e.string.encode(d,o.name),n>=20&&o.buildType&&Or.encode(d,o.buildType)},decode(d){const o=e.uint.decode(d);return{swarmKey:1&o?e.fixed32.decode(d):null,name:2&o?e.string.decode(d):null,isMobile:!!(4&o),buildType:n>=20&&8&o?Or.decode(d):null}}},ue=e.frame(se),le={preencode(e,d){ue.preencode(e,d.profile),ce.preencode(e,d.attestation)},encode(e,d){ue.encode(e,d.profile),ce.encode(e,d.attestation)},decode:e=>({profile:ue.decode(e),attestation:ce.decode(e)})},fe={preencode(e,d){Yr.preencode(e,d.profile),ce.preencode(e,d.attestation)},encode(e,d){Yr.encode(e,d.profile),ce.encode(e,d.attestation)},decode:e=>({profile:Yr.decode(e),attestation:ce.decode(e)})},me={preencode(d,n){e.fixed32.preencode(d,n.id),e.buffer.preencode(d,n.data),e.buffer.preencode(d,n.signature)},encode(d,n){e.fixed32.encode(d,n.id),e.buffer.encode(d,n.data),e.buffer.encode(d,n.signature)},decode:d=>({id:e.fixed32.decode(d),data:e.buffer.decode(d),signature:e.buffer.decode(d)})},ye={preencode(d,n){e.fixed32.preencode(d,n.devicePublicKey)},encode(d,n){e.fixed32.encode(d,n.devicePublicKey)},decode:d=>({devicePublicKey:e.fixed32.decode(d)})},xe={preencode(d,n){ce.preencode(d,n.privateProfileIdentity),e.buffer.preencode(d,n.deviceProof)},encode(d,n){ce.encode(d,n.privateProfileIdentity),e.buffer.encode(d,n.deviceProof)},decode:d=>({privateProfileIdentity:ce.decode(d),deviceProof:e.buffer.decode(d)})},be=e.frame(fe),ke=e.frame(le),ve=e.frame(ye),ge={preencode(d,n){e.fixed32.preencode(d,n.deviceKey),t.preencode(d,n.keyPair),be.preencode(d,n.device),ke.preencode(d,n.member),d.end++,n.identity&&ve.preencode(d,n.identity)},encode(d,n){const o=n.identity?1:0;e.fixed32.encode(d,n.deviceKey),t.encode(d,n.keyPair),be.encode(d,n.device),ke.encode(d,n.member),e.uint.encode(d,o),n.identity&&ve.encode(d,n.identity)},decode:d=>({deviceKey:e.fixed32.decode(d),keyPair:t.decode(d),device:be.decode(d),member:ke.decode(d),identity:1&e.uint.decode(d)?ve.decode(d):null})},he=e.frame(ge),Ke={preencode(d,n){e.fixed32.preencode(d,n.id),he.preencode(d,n.request),e.buffer.preencode(d,n.signature)},encode(d,n){e.fixed32.encode(d,n.id),he.encode(d,n.request),e.buffer.encode(d,n.signature)},decode:d=>({id:e.fixed32.decode(d),request:he.decode(d),signature:e.buffer.decode(d)})},we=be,Te=ke,Pe={preencode(e,d){we.preencode(e,d.device),e.end++,d.member&&Te.preencode(e,d.member)},encode(d,n){const o=n.member?1:0;we.encode(d,n.device),e.uint.encode(d,o),n.member&&Te.encode(d,n.member)},decode:d=>({device:we.decode(d),member:1&e.uint.decode(d)?Te.decode(d):null})},Ae=e.frame(Ke),Re=e.frame(Pe),De={preencode(e,d){e.end++,d.withInvitation&&Ae.preencode(e,d.withInvitation),d.withMemberProof&&Re.preencode(e,d.withMemberProof)},encode(d,n){const o=(n.withInvitation?1:0)|(n.withMemberProof?2:0);e.uint.encode(d,o),n.withInvitation&&Ae.encode(d,n.withInvitation),n.withMemberProof&&Re.encode(d,n.withMemberProof)},decode(d){const n=e.uint.decode(d);return{withInvitation:1&n?Ae.decode(d):null,withMemberProof:2&n?Re.decode(d):null}}},Se=e.frame(me),Ce=e.frame(xe),Me={preencode(e,d){Se.preencode(e,d.signedKeys),e.end++,d.identity&&Ce.preencode(e,d.identity)},encode(d,n){const o=n.identity?1:0;Se.encode(d,n.signedKeys),e.uint.encode(d,o),n.identity&&Ce.encode(d,n.identity)},decode:d=>({signedKeys:Se.decode(d),identity:1&e.uint.decode(d)?Ce.decode(d):null})},Le={preencode(d,o){d.end++,o.expiration&&e.uint.preencode(d,o.expiration),n>=20&&o.buildType&&Or.preencode(d,o.buildType)},encode(d,o){const c=(o.expiration?1:0)|(o.requiresConfirmation?2:0)|(o.canModerate?4:0)|(o.canAdmin?8:0)|(n>=20&&o.buildType?16:0);e.uint.encode(d,c),o.expiration&&e.uint.encode(d,o.expiration),n>=20&&o.buildType&&Or.encode(d,o.buildType)},decode(d){const o=e.uint.decode(d);return{expiration:1&o?e.uint.decode(d):0,requiresConfirmation:!!(2&o),canModerate:!!(4&o),canAdmin:!!(8&o),buildType:n>=20&&16&o?Or.decode(d):null}}},qe=Se,Fe=e.frame(Le),Ee={preencode(d,n){e.fixed32.preencode(d,n.id),qe.preencode(d,n.response),Fe.preencode(d,n.metadata),d.end++,n.anchor&&o.preencode(d,n.anchor)},encode(d,n){const c=(n.anchor?1:0)|(n.isActive?2:0);e.fixed32.encode(d,n.id),qe.encode(d,n.response),Fe.encode(d,n.metadata),e.uint.encode(d,c),n.anchor&&o.encode(d,n.anchor)},decode(d){const n=e.fixed32.decode(d),c=qe.decode(d),r=Fe.decode(d),t=e.uint.decode(d);return{id:n,response:c,metadata:r,anchor:1&t?o.decode(d):null,isActive:!!(2&t)}}},Be=_,Ie=e.frame(Ee),Ne={preencode(e,d){Be.preencode(e,d.header),Ie.preencode(e,d.invitation)},encode(e,d){Be.encode(e,d.header),Ie.encode(e,d.invitation)},decode:e=>({header:Be.decode(e),invitation:Ie.decode(e)})},je=_,Oe={preencode(d,n){je.preencode(d,n.header),e.fixed32.preencode(d,n.id)},encode(d,n){je.encode(d,n.header),e.fixed32.encode(d,n.id)},decode:d=>({header:je.decode(d),id:e.fixed32.decode(d)})},Je={preencode(d,n){e.fixed32.preencode(d,n.mailbox),e.fixed32.preencode(d,n.invitationSeed),o.preencode(d,n.anchor)},encode(d,n){e.fixed32.encode(d,n.mailbox),e.fixed32.encode(d,n.invitationSeed),o.encode(d,n.anchor)},decode:d=>({mailbox:e.fixed32.decode(d),invitationSeed:e.fixed32.decode(d),anchor:o.decode(d)})},Ue={preencode(d,n){e.fixed32.preencode(d,n.mailbox),e.fixed32.preencode(d,n.invitationSeed),o.preencode(d,n.anchor),e.fixed32.preencode(d,n.identityPublicKey)},encode(d,n){e.fixed32.encode(d,n.mailbox),e.fixed32.encode(d,n.invitationSeed),o.encode(d,n.anchor),e.fixed32.encode(d,n.identityPublicKey)},decode:d=>({mailbox:e.fixed32.decode(d),invitationSeed:e.fixed32.decode(d),anchor:o.decode(d),identityPublicKey:e.fixed32.decode(d)})},Ve={preencode(d,n){e.fixed32.preencode(d,n.mailbox)},encode(d,n){e.fixed32.encode(d,n.mailbox)},decode:d=>({mailbox:e.fixed32.decode(d)})},He=e.frame(Je),ze=e.frame(Ue),Ge=e.frame(Ve),Qe=e.array(e.ipv4Address),We={preencode(e,d){e.end++,d.room&&He.preencode(e,d.room),d.identity&&ze.preencode(e,d.identity),d.contact&&Ge.preencode(e,d.contact),n>=6&&d.readonly&&Zr.preencode(e,d.readonly),n>=11&&d.additionalNodes&&Qe.preencode(e,d.additionalNodes),n>=20&&d.buildType&&Or.preencode(e,d.buildType)},encode(d,o){const c=(o.room?1:0)|(o.identity?2:0)|(o.contact?4:0)|(n>=6&&o.readonly?8:0)|(n>=11&&o.additionalNodes?16:0)|(n>=20&&o.buildType?32:0);e.uint.encode(d,c),o.room&&He.encode(d,o.room),o.identity&&ze.encode(d,o.identity),o.contact&&Ge.encode(d,o.contact),n>=6&&o.readonly&&Zr.encode(d,o.readonly),n>=11&&o.additionalNodes&&Qe.encode(d,o.additionalNodes),n>=20&&o.buildType&&Or.encode(d,o.buildType)},decode(d){const o=e.uint.decode(d);return{room:1&o?He.decode(d):null,identity:2&o?ze.decode(d):null,contact:4&o?Ge.decode(d):null,readonly:n>=6&&8&o?Zr.decode(d):null,additionalNodes:n>=11&&16&o?Qe.decode(d):null,buildType:n>=20&&32&o?Or.decode(d):null}}},Xe=_,Ye={preencode(d,n){Xe.preencode(d,n.header),e.buffer.preencode(d,n.blindRequest)},encode(d,n){Xe.encode(d,n.header),e.buffer.encode(d,n.blindRequest)},decode:d=>({header:Xe.decode(d),blindRequest:e.buffer.decode(d)})},Ze=_,$e={preencode(e,d){Ze.preencode(e,d.header),e.end++,d.profile&&$r.preencode(e,d.profile)},encode(d,n){const o=n.profile?1:0;Ze.encode(d,n.header),e.uint.encode(d,o),n.profile&&$r.encode(d,n.profile)},decode:d=>({header:Ze.decode(d),profile:1&e.uint.decode(d)?$r.decode(d):null})},_e={preencode(e,d){},encode(e,d){},decode:e=>({})},ed=_e,dd=he,nd={preencode(d,n){e.fixed32.preencode(d,n.deviceKey),e.fixed32.preencode(d,n.id),dd.preencode(d,n.request)},encode(d,n){e.fixed32.encode(d,n.deviceKey),e.fixed32.encode(d,n.id),dd.encode(d,n.request)},decode:d=>({deviceKey:e.fixed32.decode(d),id:e.fixed32.decode(d),request:dd.decode(d)})},od=_,cd=Ce,rd={preencode(d,n){od.preencode(d,n.header),e.fixed32.preencode(d,n.deviceKey),d.end++,n.identity&&cd.preencode(d,n.identity)},encode(d,n){const o=n.identity?1:0;od.encode(d,n.header),e.fixed32.encode(d,n.deviceKey),e.uint.encode(d,o),n.identity&&cd.encode(d,n.identity)},decode:d=>({header:od.decode(d),deviceKey:e.fixed32.decode(d),identity:1&e.uint.decode(d)?cd.decode(d):null})},td=_,id={preencode(d,n){td.preencode(d,n.header),e.fixed32.preencode(d,n.deviceKey)},encode(d,n){td.encode(d,n.header),e.fixed32.encode(d,n.deviceKey)},decode:d=>({header:td.decode(d),deviceKey:e.fixed32.decode(d)})},ad=e.frame(C),sd=ue,pd={preencode(d,n){e.fixed32.preencode(d,n.key),ad.preencode(d,n.status),sd.preencode(d,n.profile)},encode(d,n){e.fixed32.encode(d,n.key),ad.encode(d,n.status),sd.encode(d,n.profile)},decode:d=>({key:e.fixed32.decode(d),status:ad.decode(d),profile:sd.decode(d)})},ud=ad,ld=ue,fd={preencode(d,n){e.fixed32.preencode(d,n.key),ud.preencode(d,n.status),ld.preencode(d,n.profile),d.end++,n.proofs&&_r.preencode(d,n.proofs)},encode(d,n){const o=n.proofs?1:0;e.fixed32.encode(d,n.key),ud.encode(d,n.status),ld.encode(d,n.profile),e.uint.encode(d,o),n.proofs&&_r.encode(d,n.proofs)},decode:d=>({key:e.fixed32.decode(d),status:ud.decode(d),profile:ld.decode(d),proofs:1&e.uint.decode(d)?_r.decode(d):null})},md={preencode(d,n){e.fixed32.preencode(d,n.key),d.end++,n.profileAttestation&&e.buffer.preencode(d,n.profileAttestation),n.latestReceipt&&e.buffer.preencode(d,n.latestReceipt)},encode(d,n){const o=(n.profileAttestation?1:0)|(n.latestReceipt?2:0);e.fixed32.encode(d,n.key),e.uint.encode(d,o),n.profileAttestation&&e.buffer.encode(d,n.profileAttestation),n.latestReceipt&&e.buffer.encode(d,n.latestReceipt)},decode(d){const n=e.fixed32.decode(d),o=e.uint.decode(d);return{key:n,profileAttestation:1&o?e.buffer.decode(d):null,latestReceipt:2&o?e.buffer.decode(d):null}}},yd=_,xd=ke,bd={preencode(e,d){yd.preencode(e,d.header),xd.preencode(e,d.member)},encode(e,d){yd.encode(e,d.header),xd.encode(e,d.member)},decode:e=>({header:yd.decode(e),member:xd.decode(e)})},kd=_,vd=e.frame(M),gd={preencode(d,n){kd.preencode(d,n.header),e.fixed32.preencode(d,n.memberKey),e.uint.preencode(d,n.key),vd.preencode(d,n.status)},encode(d,n){kd.encode(d,n.header),e.fixed32.encode(d,n.memberKey),e.uint.encode(d,n.key),vd.encode(d,n.status)},decode:d=>({header:kd.decode(d),memberKey:e.fixed32.decode(d),key:e.uint.decode(d),status:vd.decode(d)})},hd=_,Kd={preencode(d,n){hd.preencode(d,n.header),e.fixed32.preencode(d,n.key),d.end++},encode(d,n){const o=(n.isModerator?1:0)|(n.isAdmin?2:0);hd.encode(d,n.header),e.fixed32.encode(d,n.key),e.uint.encode(d,o)},decode(d){const n=hd.decode(d),o=e.fixed32.decode(d),c=e.uint.decode(d);return{header:n,key:o,isModerator:!!(1&c),isAdmin:!!(2&c)}}},wd=_,Td={preencode(d,n){wd.preencode(d,n.header),e.fixed32.preencode(d,n.key)},encode(d,n){wd.encode(d,n.header),e.fixed32.encode(d,n.key)},decode:d=>({header:wd.decode(d),key:e.fixed32.decode(d)})},Pd={preencode(d,n){e.fixed32.preencode(d,n.key),e.uint.preencode(d,n.mentions)},encode(d,n){e.fixed32.encode(d,n.key),e.uint.encode(d,n.mentions)},decode:d=>({key:e.fixed32.decode(d),mentions:e.uint.decode(d)})},Ad={preencode(d,n){d.end++,n.memberKey&&e.fixed32.preencode(d,n.memberKey)},encode(d,n){const o=n.memberKey?1:0;e.uint.encode(d,o),n.memberKey&&e.fixed32.encode(d,n.memberKey)},decode:d=>({memberKey:1&e.uint.decode(d)?e.fixed32.decode(d):null})},Rd=Ad,Dd={preencode(d,n){d.end++,n.from&&e.string.preencode(d,n.from),n.to&&e.string.preencode(d,n.to)},encode(d,n){const o=(n.from?1:0)|(n.to?2:0);e.uint.encode(d,o),n.from&&e.string.encode(d,n.from),n.to&&e.string.encode(d,n.to)},decode(d){const n=e.uint.decode(d);return{from:1&n?e.string.decode(d):null,to:2&n?e.string.decode(d):null}}},Sd=e.frame(Ad),Cd=e.frame(Rd),Md=e.frame(Dd),Ld={preencode(d,o){const c=(o.memberJoined?1:0)|(o.memberLeft?2:0)|(o.titleChanged?4:0)|(o.callStarted?8:0)|(o.callHangup?16:0)|(o.callMissed?32:0)|(n>=3&&o.roomAvatarChanged?64:0)|(n>=3&&o.invitationCreated?128:0)|(n>=3&&o.memberRemoved?256:0)|(n>=18&&o.locationShared?512:0);e.uint.preencode(d,c),o.memberJoined&&Sd.preencode(d,o.memberJoined),o.memberLeft&&Cd.preencode(d,o.memberLeft),o.titleChanged&&Md.preencode(d,o.titleChanged),n>=3&&o.memberRemoved&&et.preencode(d,o.memberRemoved),n>=18&&o.locationShared&&dt.preencode(d,o.locationShared)},encode(d,o){const c=(o.memberJoined?1:0)|(o.memberLeft?2:0)|(o.titleChanged?4:0)|(o.callStarted?8:0)|(o.callHangup?16:0)|(o.callMissed?32:0)|(n>=3&&o.roomAvatarChanged?64:0)|(n>=3&&o.invitationCreated?128:0)|(n>=3&&o.memberRemoved?256:0)|(n>=18&&o.locationShared?512:0);e.uint.encode(d,c),o.memberJoined&&Sd.encode(d,o.memberJoined),o.memberLeft&&Cd.encode(d,o.memberLeft),o.titleChanged&&Md.encode(d,o.titleChanged),n>=3&&o.memberRemoved&&et.encode(d,o.memberRemoved),n>=18&&o.locationShared&&dt.encode(d,o.locationShared)},decode(d){const o=e.uint.decode(d);return{memberJoined:1&o?Sd.decode(d):null,memberLeft:2&o?Cd.decode(d):null,titleChanged:4&o?Md.decode(d):null,callStarted:!!(8&o),callHangup:!!(16&o),callMissed:!!(32&o),roomAvatarChanged:n>=3&&!!(64&o),invitationCreated:n>=3&&!!(128&o),memberRemoved:n>=3&&256&o?et.decode(d):null,locationShared:n>=18&&512&o?dt.decode(d):null}}},qd={preencode(e,d){e.end++,n>=18&&d.locationShared&&nt.preencode(e,d.locationShared)},encode(d,o){const c=(o.callStarted?1:0)|(o.callHangup?2:0)|(o.callMissed?4:0)|(n>=18&&o.locationShared?8:0);e.uint.encode(d,c),n>=18&&o.locationShared&&nt.encode(d,o.locationShared)},decode(d){const o=e.uint.decode(d);return{callStarted:!!(1&o),callHangup:!!(2&o),callMissed:!!(4&o),locationShared:n>=18&&8&o?nt.decode(d):null}}},Fd={preencode(d,n){e.uint.preencode(d,n.start),e.uint.preencode(d,n.length)},encode(d,n){e.uint.encode(d,n.start),e.uint.encode(d,n.length)},decode:d=>({start:e.uint.decode(d),length:e.uint.decode(d)})},Ed=e.frame(Fd),Bd={preencode(d,n){Ed.preencode(d,n.range),e.string.preencode(d,n.content)},encode(d,n){Ed.encode(d,n.range),e.string.encode(d,n.content)},decode:d=>({range:Ed.decode(d),content:e.string.decode(d)})},Id=Ed,Nd={preencode(d,n){Id.preencode(d,n.range),e.fixed32.preencode(d,n.memberKey)},encode(d,n){Id.encode(d,n.range),e.fixed32.encode(d,n.memberKey)},decode:d=>({range:Id.decode(d),memberKey:e.fixed32.decode(d)})},jd=h,Od=e.array(e.uint),Jd={preencode(d,o){d.end++,o.title&&e.string.preencode(d,o.title),o.description&&e.string.preencode(d,o.description),o.file&&jd.preencode(d,o.file),n>=7&&o.files&&Od.preencode(d,o.files)},encode(d,o){const c=(o.title?1:0)|(o.description?2:0)|(o.file?4:0)|(n>=7&&o.files?8:0);e.uint.encode(d,c),o.title&&e.string.encode(d,o.title),o.description&&e.string.encode(d,o.description),o.file&&jd.encode(d,o.file),n>=7&&o.files&&Od.encode(d,o.files)},decode(d){const o=e.uint.decode(d);return{title:1&o?e.string.decode(d):null,description:2&o?e.string.decode(d):null,file:4&o?jd.decode(d):null,files:n>=7&&8&o?Od.decode(d):null}}},Ud=Ed,Vd=e.frame(Jd),Hd={preencode(d,n){Ud.preencode(d,n.range),e.string.preencode(d,n.url),d.end++,n.preview&&Vd.preencode(d,n.preview)},encode(d,n){const o=n.preview?1:0;Ud.encode(d,n.range),e.string.encode(d,n.url),e.uint.encode(d,o),n.preview&&Vd.encode(d,n.preview)},decode:d=>({range:Ud.decode(d),url:e.string.decode(d),preview:1&e.uint.decode(d)?Vd.decode(d):null})},zd=e.array(e.frame(Nd)),Gd=e.array(e.frame(Hd)),Qd=Gd,Wd=e.array(e.frame(Fd)),Xd=Wd,Yd=Wd,Zd=e.array(e.frame(Bd)),$d=Wd,_d=Wd,en={preencode(d,o){const c=(o.mention?1:0)|(o.httpLink?2:0)|(o.pearLink?4:0)|(o.bold?8:0)|(o.italic?16:0)|(o.code?32:0)|(o.emoji?64:0)|(o.codeBlock?128:0)|(o.strike?256:0)|(n>=11&&o.translation?512:0);e.uint.preencode(d,c),o.mention&&zd.preencode(d,o.mention),o.httpLink&&Gd.preencode(d,o.httpLink),o.pearLink&&Qd.preencode(d,o.pearLink),o.bold&&Wd.preencode(d,o.bold),o.italic&&Xd.preencode(d,o.italic),o.code&&Yd.preencode(d,o.code),o.emoji&&Zd.preencode(d,o.emoji),o.codeBlock&&$d.preencode(d,o.codeBlock),o.strike&&_d.preencode(d,o.strike),n>=11&&o.translation&&ot.preencode(d,o.translation)},encode(d,o){const c=(o.mention?1:0)|(o.httpLink?2:0)|(o.pearLink?4:0)|(o.bold?8:0)|(o.italic?16:0)|(o.code?32:0)|(o.emoji?64:0)|(o.codeBlock?128:0)|(o.strike?256:0)|(n>=11&&o.translation?512:0);e.uint.encode(d,c),o.mention&&zd.encode(d,o.mention),o.httpLink&&Gd.encode(d,o.httpLink),o.pearLink&&Qd.encode(d,o.pearLink),o.bold&&Wd.encode(d,o.bold),o.italic&&Xd.encode(d,o.italic),o.code&&Yd.encode(d,o.code),o.emoji&&Zd.encode(d,o.emoji),o.codeBlock&&$d.encode(d,o.codeBlock),o.strike&&_d.encode(d,o.strike),n>=11&&o.translation&&ot.encode(d,o.translation)},decode(d){const o=e.uint.decode(d);return{mention:1&o?zd.decode(d):null,httpLink:2&o?Gd.decode(d):null,pearLink:4&o?Qd.decode(d):null,bold:8&o?Wd.decode(d):null,italic:16&o?Xd.decode(d):null,code:32&o?Yd.decode(d):null,emoji:64&o?Zd.decode(d):null,codeBlock:128&o?$d.decode(d):null,strike:256&o?_d.decode(d):null,translation:n>=11&&512&o?ot.decode(d):null}}},dn=e.array(e.frame(g)),nn=e.frame(en),on=e.frame(qd),cn={preencode(d,n){d.end++,n.text&&e.string.preencode(d,n.text),n.files&&dn.preencode(d,n.files),n.display&&nn.preencode(d,n.display),n.replyTo&&c.preencode(d,n.replyTo),n.parent&&c.preencode(d,n.parent),n.event&&on.preencode(d,n.event)},encode(d,o){const r=(o.text?1:0)|(o.files?2:0)|(o.display?4:0)|(o.replyTo?8:0)|(o.parent?16:0)|(o.event?32:0)|(n>=18&&o.forwarded?64:0);e.uint.encode(d,r),o.text&&e.string.encode(d,o.text),o.files&&dn.encode(d,o.files),o.display&&nn.encode(d,o.display),o.replyTo&&c.encode(d,o.replyTo),o.parent&&c.encode(d,o.parent),o.event&&on.encode(d,o.event)},decode(d){const o=e.uint.decode(d);return{text:1&o?e.string.decode(d):null,files:2&o?dn.decode(d):null,display:4&o?nn.decode(d):null,replyTo:8&o?c.decode(d):null,parent:16&o?c.decode(d):null,event:32&o?on.decode(d):null,forwarded:n>=18&&!!(64&o)}}},rn=Od,tn=nn,an={preencode(d,n){d.end++,n.text&&e.string.preencode(d,n.text),n.files&&rn.preencode(d,n.files),n.display&&tn.preencode(d,n.display),n.replyTo&&c.preencode(d,n.replyTo),n.parent&&c.preencode(d,n.parent)},encode(d,o){const r=(o.text?1:0)|(o.files?2:0)|(o.display?4:0)|(o.replyTo?8:0)|(o.parent?16:0)|(n>=18&&o.forwarded?32:0);e.uint.encode(d,r),o.text&&e.string.encode(d,o.text),o.files&&rn.encode(d,o.files),o.display&&tn.encode(d,o.display),o.replyTo&&c.encode(d,o.replyTo),o.parent&&c.encode(d,o.parent)},decode(d){const o=e.uint.decode(d);return{text:1&o?e.string.decode(d):null,files:2&o?rn.decode(d):null,display:4&o?tn.decode(d):null,replyTo:8&o?c.decode(d):null,parent:16&o?c.decode(d):null,forwarded:n>=18&&!!(32&o)}}},sn=dn,pn=nn,un={preencode(d,n){d.end++,n.text&&e.string.preencode(d,n.text),n.files&&sn.preencode(d,n.files),n.display&&pn.preencode(d,n.display),n.replyTo&&c.preencode(d,n.replyTo),n.parent&&c.preencode(d,n.parent)},encode(d,o){const r=(o.text?1:0)|(o.files?2:0)|(o.display?4:0)|(o.replyTo?8:0)|(o.parent?16:0)|(n>=18&&o.forwarded?32:0);e.uint.encode(d,r),o.text&&e.string.encode(d,o.text),o.files&&sn.encode(d,o.files),o.display&&pn.encode(d,o.display),o.replyTo&&c.encode(d,o.replyTo),o.parent&&c.encode(d,o.parent)},decode(d){const o=e.uint.decode(d);return{text:1&o?e.string.decode(d):null,files:2&o?sn.decode(d):null,display:4&o?pn.decode(d):null,replyTo:8&o?c.decode(d):null,parent:16&o?c.decode(d):null,forwarded:n>=18&&!!(32&o)}}},ln={preencode(e,d){e.end++},encode(d,n){const o=(n.isEdited?1:0)|(n.isDeleted?2:0)|(n.isPinned?4:0);e.uint.encode(d,o)},decode(d){const n=e.uint.decode(d);return{isEdited:!!(1&n),isDeleted:!!(2&n),isPinned:!!(4&n)}}},fn={preencode(d,n){e.uint.preencode(d,n.thread),e.uint.preencode(d,n.index)},encode(d,n){e.uint.encode(d,n.thread),e.uint.encode(d,n.index)},decode:d=>({thread:e.uint.decode(d),index:e.uint.decode(d)})},mn=e.frame(J),yn={preencode(d,n){e.uint.preencode(d,n.id),e.uint.preencode(d,n.count),d.end++,n.parent&&c.preencode(d,n.parent),n.stats&&mn.preencode(d,n.stats)},encode(d,n){const o=(n.parent?1:0)|(n.stats?2:0);e.uint.encode(d,n.id),e.uint.encode(d,n.count),e.uint.encode(d,o),n.parent&&c.encode(d,n.parent),n.stats&&mn.encode(d,n.stats)},decode(d){const n=e.uint.decode(d),o=e.uint.decode(d),r=e.uint.decode(d);return{id:n,count:o,parent:1&r?c.decode(d):null,stats:2&r?mn.decode(d):null}}},xn=e.frame(ln),bn=e.frame(an),kn=e.frame(Ld),vn={preencode(d,n){fn.preencode(d,n.id),c.preencode(d,n.oplog),e.uint.preencode(d,n.clock),e.uint.preencode(d,n.timestamp),d.end++,n.editedAt&&e.uint.preencode(d,n.editedAt),xn.preencode(d,n.status),n.message&&bn.preencode(d,n.message),n.event&&kn.preencode(d,n.event)},encode(d,n){const o=(n.editedAt?1:0)|(n.message?2:0)|(n.event?4:0);fn.encode(d,n.id),c.encode(d,n.oplog),e.uint.encode(d,n.clock),e.uint.encode(d,n.timestamp),e.uint.encode(d,o),n.editedAt&&e.uint.encode(d,n.editedAt),xn.encode(d,n.status),n.message&&bn.encode(d,n.message),n.event&&kn.encode(d,n.event)},decode(d){const n=fn.decode(d),o=c.decode(d),r=e.uint.decode(d),t=e.uint.decode(d),i=e.uint.decode(d);return{id:n,oplog:o,clock:r,timestamp:t,editedAt:1&i?e.uint.decode(d):0,status:xn.decode(d),message:2&i?bn.decode(d):null,event:4&i?kn.decode(d):null}}},gn=xn,hn=e.frame(un),Kn=kn,wn={preencode(d,n){fn.preencode(d,n.id),c.preencode(d,n.oplog),e.uint.preencode(d,n.clock),e.uint.preencode(d,n.timestamp),d.end++,n.editedAt&&e.uint.preencode(d,n.editedAt),gn.preencode(d,n.status),n.message&&hn.preencode(d,n.message),n.event&&Kn.preencode(d,n.event)},encode(d,n){const o=(n.editedAt?1:0)|(n.message?2:0)|(n.event?4:0);fn.encode(d,n.id),c.encode(d,n.oplog),e.uint.encode(d,n.clock),e.uint.encode(d,n.timestamp),e.uint.encode(d,o),n.editedAt&&e.uint.encode(d,n.editedAt),gn.encode(d,n.status),n.message&&hn.encode(d,n.message),n.event&&Kn.encode(d,n.event)},decode(d){const n=fn.decode(d),o=c.decode(d),r=e.uint.decode(d),t=e.uint.decode(d),i=e.uint.decode(d);return{id:n,oplog:o,clock:r,timestamp:t,editedAt:1&i?e.uint.decode(d):0,status:gn.decode(d),message:2&i?hn.decode(d):null,event:4&i?Kn.decode(d):null}}},Tn=_,Pn=e.frame(cn),An={preencode(e,d){Tn.preencode(e,d.header),Pn.preencode(e,d.message)},encode(e,d){Tn.encode(e,d.header),Pn.encode(e,d.message)},decode:e=>({header:Tn.decode(e),message:Pn.decode(e)})},Rn=_,Dn={preencode(e,d){Rn.preencode(e,d.header),c.preencode(e,d.oplog)},encode(e,d){Rn.encode(e,d.header),c.encode(e,d.oplog)},decode:e=>({header:Rn.decode(e),oplog:c.decode(e)})},Sn=_,Cn=Pn,Mn={preencode(e,d){Sn.preencode(e,d.header),c.preencode(e,d.oplog),Cn.preencode(e,d.message)},encode(e,d){Sn.encode(e,d.header),c.encode(e,d.oplog),Cn.encode(e,d.message)},decode:e=>({header:Sn.decode(e),oplog:c.decode(e),message:Cn.decode(e)})},Ln=_,qn={preencode(e,d){Ln.preencode(e,d.header),c.preencode(e,d.oplog),e.end++},encode(d,n){const o=n.isPinned?1:0;Ln.encode(d,n.header),c.encode(d,n.oplog),e.uint.encode(d,o)},decode:d=>({header:Ln.decode(d),oplog:c.decode(d),isPinned:!!(1&e.uint.decode(d))})},Fn={preencode(d,n){fn.preencode(d,n.id),e.fixed32.preencode(d,n.sender),e.uint.preencode(d,n.clock),e.string.preencode(d,n.reaction)},encode(d,n){fn.encode(d,n.id),e.fixed32.encode(d,n.sender),e.uint.encode(d,n.clock),e.string.encode(d,n.reaction)},decode:d=>({id:fn.decode(d),sender:e.fixed32.decode(d),clock:e.uint.decode(d),reaction:e.string.decode(d)})},En={preencode(d,n){e.string.preencode(d,n.text),e.uint.preencode(d,n.count)},encode(d,n){e.string.encode(d,n.text),e.uint.encode(d,n.count)},decode:d=>({text:e.string.decode(d),count:e.uint.decode(d)})},Bn=e.array(e.frame(En)),In={preencode(d,o){fn.preencode(d,o.id),e.uint.preencode(d,o.total),Bn.preencode(d,o.reactions),d.end++,n>=11&&o.editedAt&&e.uint.preencode(d,o.editedAt)},encode(d,o){const c=n>=11&&o.editedAt?1:0;fn.encode(d,o.id),e.uint.encode(d,o.total),Bn.encode(d,o.reactions),e.uint.encode(d,c),n>=11&&o.editedAt&&e.uint.encode(d,o.editedAt)},decode(d){const o=fn.decode(d),c=e.uint.decode(d),r=Bn.decode(d),t=d.start<d.end?e.uint.decode(d):0;return{id:o,total:c,reactions:r,editedAt:n>=11&&1&t?e.uint.decode(d):0}}},Nn=_,jn={preencode(d,n){Nn.preencode(d,n.header),c.preencode(d,n.oplog),e.string.preencode(d,n.reaction)},encode(d,n){Nn.encode(d,n.header),c.encode(d,n.oplog),e.string.encode(d,n.reaction)},decode:d=>({header:Nn.decode(d),oplog:c.decode(d),reaction:e.string.decode(d)})},On=_,Jn={preencode(d,n){On.preencode(d,n.header),c.preencode(d,n.oplog),e.string.preencode(d,n.reaction)},encode(d,n){On.encode(d,n.header),c.encode(d,n.oplog),e.string.encode(d,n.reaction)},decode:d=>({header:On.decode(d),oplog:c.decode(d),reaction:e.string.decode(d)})},Un=_,Vn=e.frame(Z),Hn={preencode(d,n){Un.preencode(d,n.header),e.uint.preencode(d,n.key),Vn.preencode(d,n.config)},encode(d,n){Un.encode(d,n.header),e.uint.encode(d,n.key),Vn.encode(d,n.config)},decode:d=>({header:Un.decode(d),key:e.uint.decode(d),config:Vn.decode(d)})},zn={preencode(d,n){e.fixed32.preencode(d,n.memberKey),e.string.preencode(d,n.displayName),d.end++,n.avatar&&ct.preencode(d,n.avatar)},encode(d,n){const o=n.avatar?1:0;e.fixed32.encode(d,n.memberKey),e.string.encode(d,n.displayName),e.uint.encode(d,o),n.avatar&&ct.encode(d,n.avatar)},decode:d=>({memberKey:e.fixed32.decode(d),displayName:e.string.decode(d),avatar:1&e.uint.decode(d)?ct.decode(d):null})},Gn={preencode(d,n){e.fixed32.preencode(d,n.key),d.end++,n.username&&e.string.preencode(d,n.username)},encode(d,n){const o=n.username?1:0;e.fixed32.encode(d,n.key),e.uint.encode(d,o),n.username&&e.string.encode(d,n.username)},decode:d=>({key:e.fixed32.decode(d),username:1&e.uint.decode(d)?e.string.decode(d):null})},Qn=e.frame(Gn),Wn={preencode(d,n){e.fixed32.preencode(d,n.publicKey),d.end++,n.discoveryCoreKey&&e.fixed32.preencode(d,n.discoveryCoreKey),n.userRegistry&&Qn.preencode(d,n.userRegistry)},encode(d,n){const o=(n.discoveryCoreKey?1:0)|(n.userRegistry?2:0);e.fixed32.encode(d,n.publicKey),e.uint.encode(d,o),n.discoveryCoreKey&&e.fixed32.encode(d,n.discoveryCoreKey),n.userRegistry&&Qn.encode(d,n.userRegistry)},decode(d){const n=e.fixed32.decode(d),o=e.uint.decode(d);return{publicKey:n,discoveryCoreKey:1&o?e.fixed32.decode(d):null,userRegistry:2&o?Qn.decode(d):null}}},Xn=_,Yn=e.frame(Q),Zn=e.frame(W),$n=Vn,_n=e.frame(Wn),eo=be,no=e.array(e.frame(le)),oo={preencode(e,d){Xn.preencode(e,d.header),Yn.preencode(e,d.digest),Zn.preencode(e,d.capabilities),e.end++,d.config&&$n.preencode(e,d.config),d.identity&&_n.preencode(e,d.identity),d.bootstrapDevice&&eo.preencode(e,d.bootstrapDevice),d.initialMembers&&no.preencode(e,d.initialMembers)},encode(d,n){const o=(n.config?1:0)|(n.identity?2:0)|(n.bootstrapDevice?4:0)|(n.initialMembers?8:0);Xn.encode(d,n.header),Yn.encode(d,n.digest),Zn.encode(d,n.capabilities),e.uint.encode(d,o),n.config&&$n.encode(d,n.config),n.identity&&_n.encode(d,n.identity),n.bootstrapDevice&&eo.encode(d,n.bootstrapDevice),n.initialMembers&&no.encode(d,n.initialMembers)},decode(d){const n=Xn.decode(d),o=Yn.decode(d),c=Zn.decode(d),r=e.uint.decode(d);return{header:n,digest:o,capabilities:c,config:1&r?$n.decode(d):null,identity:2&r?_n.decode(d):null,bootstrapDevice:4&r?eo.decode(d):null,initialMembers:8&r?no.decode(d):null}}},co=_,ro={preencode(d,n){co.preencode(d,n.header),e.uint.preencode(d,n.version)},encode(d,n){co.encode(d,n.header),e.uint.encode(d,n.version)},decode:d=>({header:co.decode(d),version:e.uint.decode(d)})},to=_,io=G,ao={preencode(d,n){to.preencode(d,n.header),e.uint.preencode(d,n.key),io.preencode(d,n.settings)},encode(d,n){to.encode(d,n.header),e.uint.encode(d,n.key),io.encode(d,n.settings)},decode:d=>({header:to.decode(d),key:e.uint.decode(d),settings:io.decode(d)})},so={preencode(d,n){e.fixed32.preencode(d,n.memberKey),rt.preencode(d,n.status),d.end++,n.mailbox&&e.fixed32.preencode(d,n.mailbox),n.roomKey&&e.fixed32.preencode(d,n.roomKey)},encode(d,n){const o=(n.mailbox?1:0)|(n.roomKey?2:0);e.fixed32.encode(d,n.memberKey),rt.encode(d,n.status),e.uint.encode(d,o),n.mailbox&&e.fixed32.encode(d,n.mailbox),n.roomKey&&e.fixed32.encode(d,n.roomKey)},decode(d){const n=e.fixed32.decode(d),o=rt.decode(d),c=e.uint.decode(d);return{memberKey:n,status:o,mailbox:1&c?e.fixed32.decode(d):null,roomKey:2&c?e.fixed32.decode(d):null}}},po={preencode(d,n){e.fixed32.preencode(d,n.roomKey),e.buffer.preencode(d,n.encryptionKey),e.fixed32.preencode(d,n.seed),o.preencode(d,n.initiator),e.fixed32.preencode(d,n.fastForwardTo)},encode(d,n){e.fixed32.encode(d,n.roomKey),e.buffer.encode(d,n.encryptionKey),e.fixed32.encode(d,n.seed),o.encode(d,n.initiator),e.fixed32.encode(d,n.fastForwardTo)},decode:d=>({roomKey:e.fixed32.decode(d),encryptionKey:e.buffer.decode(d),seed:e.fixed32.decode(d),initiator:o.decode(d),fastForwardTo:e.fixed32.decode(d)})},uo=e.array(e.frame(po)),lo=Y,fo={preencode(e,d){uo.preencode(e,d.sharedRooms),lo.preencode(e,d.blockedContacts)},encode(e,d){uo.encode(e,d.sharedRooms),lo.encode(e,d.blockedContacts)},decode:e=>({sharedRooms:uo.decode(e),blockedContacts:lo.decode(e)})},mo=_n,yo={preencode(e,d){mo.preencode(e,d.identity)},encode(e,d){mo.encode(e,d.identity)},decode:e=>({identity:mo.decode(e)})},xo={preencode(d,n){e.uint.preencode(d,n.rooms),e.uint.preencode(d,n.contacts)},encode(d,n){e.uint.encode(d,n.rooms),e.uint.encode(d,n.contacts)},decode:d=>({rooms:e.uint.decode(d),contacts:e.uint.decode(d)})},bo={preencode(d,n){e.uint.preencode(d,n.rooms),e.uint.preencode(d,n.contactRequests)},encode(d,n){e.uint.encode(d,n.rooms),e.uint.encode(d,n.contactRequests)},decode:d=>({rooms:e.uint.decode(d),contactRequests:e.uint.decode(d)})},ko={preencode(d,n){e.buffer.preencode(d,n.entropy)},encode(d,n){e.buffer.encode(d,n.entropy)},decode:d=>({entropy:e.buffer.decode(d)})},vo={preencode(d,n){e.fixed32.preencode(d,n.publicKey),e.fixed32.preencode(d,n.devicePublicKey),e.fixed32.preencode(d,n.writerKey)},encode(d,n){e.fixed32.encode(d,n.publicKey),e.fixed32.encode(d,n.devicePublicKey),e.fixed32.encode(d,n.writerKey)},decode:d=>({publicKey:e.fixed32.decode(d),devicePublicKey:e.fixed32.decode(d),writerKey:e.fixed32.decode(d)})},go=e.frame(vo),ho={preencode(d,c){e.fixed32.preencode(d,c.id),e.fixed32.preencode(d,c.invitationSeed),e.fixed32.preencode(d,c.mailbox),t.preencode(d,c.responseKeyPair),o.preencode(d,c.initiator),o.preencode(d,c.inviter),d.end++,c.identity&&go.preencode(d,c.identity),n>=20&&c.buildType&&Or.preencode(d,c.buildType)},encode(d,c){const r=(c.identity?1:0)|(n>=20&&c.buildType?2:0);e.fixed32.encode(d,c.id),e.fixed32.encode(d,c.invitationSeed),e.fixed32.encode(d,c.mailbox),t.encode(d,c.responseKeyPair),o.encode(d,c.initiator),o.encode(d,c.inviter),e.uint.encode(d,r),c.identity&&go.encode(d,c.identity),n>=20&&c.buildType&&Or.encode(d,c.buildType)},decode(d){const c=e.fixed32.decode(d),r=e.fixed32.decode(d),i=e.fixed32.decode(d),a=t.decode(d),s=o.decode(d),p=o.decode(d),u=e.uint.decode(d);return{id:c,invitationSeed:r,mailbox:i,responseKeyPair:a,initiator:s,inviter:p,identity:1&u?go.decode(d):null,buildType:n>=20&&2&u?Or.decode(d):null}}},Ko=_,wo={preencode(d,n){Ko.preencode(d,n.header),e.buffer.preencode(d,n.blindResponse)},encode(d,n){Ko.encode(d,n.header),e.buffer.encode(d,n.blindResponse)},decode:d=>({header:Ko.decode(d),blindResponse:e.buffer.decode(d)})},To=_,Po=e.frame(ho),Ao={preencode(e,d){To.preencode(e,d.header),Po.preencode(e,d.invitation)},encode(e,d){To.encode(e,d.header),Po.encode(e,d.invitation)},decode:e=>({header:To.decode(e),invitation:Po.decode(e)})},Ro=_,Do={preencode(d,n){Ro.preencode(d,n.header),e.fixed32.preencode(d,n.id)},encode(d,n){Ro.encode(d,n.header),e.fixed32.encode(d,n.id)},decode:d=>({header:Ro.decode(d),id:e.fixed32.decode(d)})},So={preencode(d,n){e.fixed32.preencode(d,n.publicKey),e.fixed32.preencode(d,n.devicePublicKey),d.end++,n.privateProfileKey&&e.fixed32.preencode(d,n.privateProfileKey),n.deviceKeyPair&&t.preencode(d,n.deviceKeyPair),e.buffer.preencode(d,n.deviceProof)},encode(d,n){const o=(n.privateProfileKey?1:0)|(n.deviceKeyPair?2:0);e.fixed32.encode(d,n.publicKey),e.fixed32.encode(d,n.devicePublicKey),e.uint.encode(d,o),n.privateProfileKey&&e.fixed32.encode(d,n.privateProfileKey),n.deviceKeyPair&&t.encode(d,n.deviceKeyPair),e.buffer.encode(d,n.deviceProof)},decode(d){const n=e.fixed32.decode(d),o=e.fixed32.decode(d),c=e.uint.decode(d);return{publicKey:n,devicePublicKey:o,privateProfileKey:1&c?e.fixed32.decode(d):null,deviceKeyPair:2&c?t.decode(d):null,deviceProof:e.buffer.decode(d)}}},Co={preencode(e,d){e.end++},encode(d,o){const c=(o.isActive?1:0)|(o.isFullyMuted?2:0)|(o.isMentionsOnlyMuted?4:0)|(n>=9&&o.isReadOnly?8:0)|(n>=18&&o.isFavorite?16:0);e.uint.encode(d,c)},decode(d){const o=e.uint.decode(d);return{isActive:!!(1&o),isFullyMuted:!!(2&o),isMentionsOnlyMuted:!!(4&o),isReadOnly:n>=9&&!!(8&o),isFavorite:n>=18&&!!(16&o)}}},Mo=e.frame(Co),Lo=e.frame(So),qo=go,Fo={preencode(d,c){e.fixed32.preencode(d,c.roomKey),e.buffer.preencode(d,c.encryptionKey),e.fixed32.preencode(d,c.mailbox),Mo.preencode(d,c.status),e.uint.preencode(d,c.clock),d.end++,c.initiator&&o.preencode(d,c.initiator),c.fastForwardTo&&e.fixed32.preencode(d,c.fastForwardTo),c.identitySwap&&Lo.preencode(d,c.identitySwap),n>=6&&c.identitySwapV2&&qo.preencode(d,c.identitySwapV2),n>=10&&c.contact&&e.fixed32.preencode(d,c.contact)},encode(d,c){const r=(c.initiator?1:0)|(c.fastForwardTo?2:0)|(c.identitySwap?4:0)|(n>=6&&c.identitySwapV2?8:0)|(n>=10&&c.contact?16:0);e.fixed32.encode(d,c.roomKey),e.buffer.encode(d,c.encryptionKey),e.fixed32.encode(d,c.mailbox),Mo.encode(d,c.status),e.uint.encode(d,c.clock),e.uint.encode(d,r),c.initiator&&o.encode(d,c.initiator),c.fastForwardTo&&e.fixed32.encode(d,c.fastForwardTo),c.identitySwap&&Lo.encode(d,c.identitySwap),n>=6&&c.identitySwapV2&&qo.encode(d,c.identitySwapV2),n>=10&&c.contact&&e.fixed32.encode(d,c.contact)},decode(d){const c=e.fixed32.decode(d),r=e.buffer.decode(d),t=e.fixed32.decode(d),i=Mo.decode(d),a=e.uint.decode(d),s=e.uint.decode(d);return{roomKey:c,encryptionKey:r,mailbox:t,status:i,clock:a,initiator:1&s?o.decode(d):null,fastForwardTo:2&s?e.fixed32.decode(d):null,identitySwap:4&s?Lo.decode(d):null,identitySwapV2:n>=6&&8&s?qo.decode(d):null,contact:n>=10&&16&s?e.fixed32.decode(d):null}}},Eo=_,Bo={preencode(d,n){Eo.preencode(d,n.header),e.fixed32.preencode(d,n.roomKey),e.buffer.preencode(d,n.encryptionKey),e.fixed32.preencode(d,n.mailbox),d.end++,n.fastForwardTo&&e.fixed32.preencode(d,n.fastForwardTo),n.initiator&&o.preencode(d,n.initiator),n.dm&&e.fixed32.preencode(d,n.dm)},encode(d,c){const r=(c.fastForwardTo?1:0)|(c.initiator?2:0)|(c.dm?4:0)|(n>=9&&c.isReadOnly?8:0);Eo.encode(d,c.header),e.fixed32.encode(d,c.roomKey),e.buffer.encode(d,c.encryptionKey),e.fixed32.encode(d,c.mailbox),e.uint.encode(d,r),c.fastForwardTo&&e.fixed32.encode(d,c.fastForwardTo),c.initiator&&o.encode(d,c.initiator),c.dm&&e.fixed32.encode(d,c.dm)},decode(d){const c=Eo.decode(d),r=e.fixed32.decode(d),t=e.buffer.decode(d),i=e.fixed32.decode(d),a=e.uint.decode(d);return{header:c,roomKey:r,encryptionKey:t,mailbox:i,fastForwardTo:1&a?e.fixed32.decode(d):null,initiator:2&a?o.decode(d):null,dm:4&a?e.fixed32.decode(d):null,isReadOnly:n>=9&&!!(8&a)}}},Io=_,No={preencode(d,n){Io.preencode(d,n.header),e.fixed32.preencode(d,n.discoveryKey)},encode(d,n){Io.encode(d,n.header),e.fixed32.encode(d,n.discoveryKey)},decode:d=>({header:Io.decode(d),discoveryKey:e.fixed32.decode(d)})},jo=_,Oo=Mo,Jo={preencode(d,n){jo.preencode(d,n.header),e.fixed32.preencode(d,n.roomKey),e.uint.preencode(d,n.key),Oo.preencode(d,n.status)},encode(d,n){jo.encode(d,n.header),e.fixed32.encode(d,n.roomKey),e.uint.encode(d,n.key),Oo.encode(d,n.status)},decode:d=>({header:jo.decode(d),roomKey:e.fixed32.decode(d),key:e.uint.decode(d),status:Oo.decode(d)})},Uo={preencode(e,d){e.end++},encode(d,n){const o=n.isBlocked?1:0;e.uint.encode(d,o)},decode:d=>({isBlocked:!!(1&e.uint.decode(d))})},Vo={preencode(d,n){e.fixed32.preencode(d,n.memberKey),e.uint.preencode(d,n.clock),tt.preencode(d,n.status),d.end++,n.mailbox&&e.fixed32.preencode(d,n.mailbox),n.roomKey&&e.fixed32.preencode(d,n.roomKey)},encode(d,n){const o=(n.mailbox?1:0)|(n.roomKey?2:0);e.fixed32.encode(d,n.memberKey),e.uint.encode(d,n.clock),tt.encode(d,n.status),e.uint.encode(d,o),n.mailbox&&e.fixed32.encode(d,n.mailbox),n.roomKey&&e.fixed32.encode(d,n.roomKey)},decode(d){const n=e.fixed32.decode(d),o=e.uint.decode(d),c=tt.decode(d),r=e.uint.decode(d);return{memberKey:n,clock:o,status:c,mailbox:1&r?e.fixed32.decode(d):null,roomKey:2&r?e.fixed32.decode(d):null}}},Ho=_,zo=e.frame(so),Go={preencode(e,d){Ho.preencode(e,d.header),zo.preencode(e,d.contact)},encode(e,d){Ho.encode(e,d.header),zo.encode(e,d.contact)},decode:e=>({header:Ho.decode(e),contact:zo.decode(e)})},Qo=_,Wo={preencode(d,n){Qo.preencode(d,n.header),e.fixed32.preencode(d,n.memberKey),e.uint.preencode(d,n.key),it.preencode(d,n.status)},encode(d,n){Qo.encode(d,n.header),e.fixed32.encode(d,n.memberKey),e.uint.encode(d,n.key),it.encode(d,n.status)},decode:d=>({header:Qo.decode(d),memberKey:e.fixed32.decode(d),key:e.uint.decode(d),status:it.decode(d)})},Xo=_,Yo={preencode(d,n){Xo.preencode(d,n.header),e.fixed32.preencode(d,n.memberKey)},encode(d,n){Xo.encode(d,n.header),e.fixed32.encode(d,n.memberKey)},decode:d=>({header:Xo.decode(d),memberKey:e.fixed32.decode(d)})},Zo={preencode(e,d){e.end++},encode(d,n){const o=(n.isPending?1:0)|(n.isAccepted?2:0)|(n.isRejected?4:0)|(n.isDiscarded?8:0)|(n.isSeen?16:0);e.uint.encode(d,o)},decode(d){const n=e.uint.decode(d);return{isPending:!!(1&n),isAccepted:!!(2&n),isRejected:!!(4&n),isDiscarded:!!(8&n),isSeen:!!(16&n)}}},$o=ke,_o=e.frame(i),ec={preencode(d,n){$o.preencode(d,n.sender),_o.preencode(d,n.keys),e.fixed32.preencode(d,n.mailbox),d.end++,n.message&&e.string.preencode(d,n.message)},encode(d,n){const o=n.message?1:0;$o.encode(d,n.sender),_o.encode(d,n.keys),e.fixed32.encode(d,n.mailbox),e.uint.encode(d,o),n.message&&e.string.encode(d,n.message)},decode:d=>({sender:$o.decode(d),keys:_o.decode(d),mailbox:e.fixed32.decode(d),message:1&e.uint.decode(d)?e.string.decode(d):null})},dc=e.frame(ec),nc={preencode(e,d){dc.preencode(e,d.body),ce.preencode(e,d.attestation)},encode(e,d){dc.encode(e,d.body),ce.encode(e,d.attestation)},decode:e=>({body:dc.decode(e),attestation:ce.decode(e)})},oc=ue,cc=e.frame(Zo),rc=_o,tc={preencode(d,o){e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.clock),oc.preencode(d,o.sender),cc.preencode(d,o.status),rc.preencode(d,o.keys),e.fixed32.preencode(d,o.mailbox),d.end++,o.message&&e.string.preencode(d,o.message),n>=11&&o.sentAt&&e.uint.preencode(d,o.sentAt)},encode(d,o){const c=(o.message?1:0)|(n>=11&&o.sentAt?2:0);e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.clock),oc.encode(d,o.sender),cc.encode(d,o.status),rc.encode(d,o.keys),e.fixed32.encode(d,o.mailbox),e.uint.encode(d,c),o.message&&e.string.encode(d,o.message),n>=11&&o.sentAt&&e.uint.encode(d,o.sentAt)},decode(d){const o=e.fixed32.decode(d),c=e.uint.decode(d),r=oc.decode(d),t=cc.decode(d),i=rc.decode(d),a=e.fixed32.decode(d),s=e.uint.decode(d);return{memberKey:o,clock:c,sender:r,status:t,keys:i,mailbox:a,message:1&s?e.string.decode(d):null,sentAt:n>=11&&2&s?e.uint.decode(d):0}}},ic=_,ac={preencode(d,n){ic.preencode(d,n.header),e.buffer.preencode(d,n.blindRequest)},encode(d,n){ic.encode(d,n.header),e.buffer.encode(d,n.blindRequest)},decode:d=>({header:ic.decode(d),blindRequest:e.buffer.decode(d)})},sc=_,pc=cc,uc={preencode(d,o){sc.preencode(d,o.header),e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.key),pc.preencode(d,o.status),d.end++,n>=10&&o.roomKey&&e.fixed32.preencode(d,o.roomKey)},encode(d,o){const c=n>=10&&o.roomKey?1:0;sc.encode(d,o.header),e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.key),pc.encode(d,o.status),e.uint.encode(d,c),n>=10&&o.roomKey&&e.fixed32.encode(d,o.roomKey)},decode(d){const o=sc.decode(d),c=e.fixed32.decode(d),r=e.uint.decode(d),t=pc.decode(d),i=d.start<d.end?e.uint.decode(d):0;return{header:o,memberKey:c,key:r,status:t,roomKey:n>=10&&1&i?e.fixed32.decode(d):null}}},lc={preencode(d,n){e.uint.preencode(d,n.timestamp),e.fixed32.preencode(d,n.key),e.fixed32.preencode(d,n.mailbox)},encode(d,n){e.uint.encode(d,n.timestamp),e.fixed32.encode(d,n.key),e.fixed32.encode(d,n.mailbox)},decode:d=>({version:e.uint.decode(d),timestamp:e.uint.decode(d),key:e.fixed32.decode(d),mailbox:e.fixed32.decode(d)})},fc={preencode(d,n){switch(e.uint.preencode(d,n.version),n.version){case 0:case 1:lc.preencode(d,n);break;default:throw new Error("Unsupported version")}},encode(d,n){switch(e.uint.encode(d,n.version),n.version){case 0:case 1:lc.encode(d,n);break;default:throw new Error("Unsupported version")}},decode(d){const n=d.start,o=e.uint.decode(d);switch(d.start=n,o){case 0:case 1:return lc.decode(d);default:throw new Error("Unsupported version")}}},mc=_,yc={preencode(d,o){mc.preencode(d,o.header),c.preencode(d,o.oplog),e.uint.preencode(d,o.index),at.preencode(d,o.preview),d.end++,n>=7&&o.displayType&&Rc.preencode(d,o.displayType)},encode(d,o){const r=n>=7&&o.displayType?1:0;mc.encode(d,o.header),c.encode(d,o.oplog),e.uint.encode(d,o.index),at.encode(d,o.preview),e.uint.encode(d,r),n>=7&&o.displayType&&Rc.encode(d,o.displayType)},decode(d){const o=mc.decode(d),r=c.decode(d),t=e.uint.decode(d),i=at.decode(d),a=d.start<d.end?e.uint.decode(d):0;return{header:o,oplog:r,index:t,preview:i,displayType:n>=7&&1&a?Rc.decode(d):0}}},xc={preencode(d,o){d.end++,n>=3&&o.memberKey&&e.fixed32.preencode(d,o.memberKey)},encode(d,o){const c=n>=3&&o.memberKey?1:0;e.uint.encode(d,c),n>=3&&o.memberKey&&e.fixed32.encode(d,o.memberKey)},decode(d){const o=e.uint.decode(d);return{memberKey:n>=3&&1&o?e.fixed32.decode(d):null}}},bc=ue,kc={preencode(e,d){bc.preencode(e,d.profile),ce.preencode(e,d.attestation)},encode(e,d){bc.encode(e,d.profile),ce.encode(e,d.attestation)},decode:e=>({profile:bc.decode(e),attestation:ce.decode(e)})},vc=_,gc={preencode(d,n){vc.preencode(d,n.header),e.fixed32.preencode(d,n.key)},encode(d,n){vc.encode(d,n.header),e.fixed32.encode(d,n.key)},decode:d=>({header:vc.decode(d),key:e.fixed32.decode(d)})},hc={preencode(d,n){e.fixed32.preencode(d,n.deviceKey),ce.preencode(d,n.privateProfileIdentity),e.buffer.preencode(d,n.deviceProof)},encode(d,n){e.fixed32.encode(d,n.deviceKey),ce.encode(d,n.privateProfileIdentity),e.buffer.encode(d,n.deviceProof)},decode:d=>({deviceKey:e.fixed32.decode(d),privateProfileIdentity:ce.decode(d),deviceProof:e.buffer.decode(d)})},Kc={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.fixed32.preencode(d,o.encryptionKey),e.fixed32.preencode(d,o.seed),d.end++,n>=6&&o.fastForwardTo&&e.fixed32.preencode(d,o.fastForwardTo)},encode(d,o){const c=n>=6&&o.fastForwardTo?1:0;e.fixed32.encode(d,o.roomKey),e.fixed32.encode(d,o.encryptionKey),e.fixed32.encode(d,o.seed),e.uint.encode(d,c),n>=6&&o.fastForwardTo&&e.fixed32.encode(d,o.fastForwardTo)},decode(d){const o=e.fixed32.decode(d),c=e.fixed32.decode(d),r=e.fixed32.decode(d),t=e.uint.decode(d);return{roomKey:o,encryptionKey:c,seed:r,fastForwardTo:n>=6&&1&t?e.fixed32.decode(d):null}}},wc={preencode(d,o){e.fixed32.preencode(d,o.publicKey),e.fixed32.preencode(d,o.writerKey),e.fixed32.preencode(d,o.devicePublicKey),d.end++,n>=6&&o.privateProfileKey&&e.fixed32.preencode(d,o.privateProfileKey)},encode(d,o){const c=n>=6&&o.privateProfileKey?1:0;e.fixed32.encode(d,o.publicKey),e.fixed32.encode(d,o.writerKey),e.fixed32.encode(d,o.devicePublicKey),e.uint.encode(d,c),n>=6&&o.privateProfileKey&&e.fixed32.encode(d,o.privateProfileKey)},decode(d){const o=e.fixed32.decode(d),c=e.fixed32.decode(d),r=e.fixed32.decode(d),t=e.uint.decode(d);return{publicKey:o,writerKey:c,devicePublicKey:r,privateProfileKey:n>=6&&1&t?e.fixed32.decode(d):null}}},Tc=_,Pc={preencode(d,n){Tc.preencode(d,n.header),e.fixed32.preencode(d,n.memberKey)},encode(d,n){Tc.encode(d,n.header),e.fixed32.encode(d,n.memberKey)},decode:d=>({header:Tc.decode(d),memberKey:e.fixed32.decode(d)})},Ac={HttpLink:1,PearLink:2},Rc={preencode(e,d){e.end++},encode(d,n){if(n>2)throw new Error("Unknown enum");e.uint.encode(d,n)},decode:d=>e.uint.decode(d)},Dc=_,Sc={preencode(d,n){Dc.preencode(d,n.header),e.uint.preencode(d,n.value)},encode(d,n){Dc.encode(d,n.header),e.uint.encode(d,n.value)},decode:d=>({header:Dc.decode(d),value:e.uint.decode(d)})},Cc={preencode(d,n){e.uint.preencode(d,n.key),e.uint.preencode(d,n.value)},encode(d,n){e.uint.encode(d,n.key),e.uint.encode(d,n.value)},decode:d=>({key:e.uint.decode(d),value:e.uint.decode(d)})},Mc=_,Lc={preencode(d,o){Mc.preencode(d,o.header),e.uint.preencode(d,o.from),e.uint.preencode(d,o.to),d.end++,n>=20&&o.buildType&&Or.preencode(d,o.buildType)},encode(d,o){const c=n>=20&&o.buildType?1:0;Mc.encode(d,o.header),e.uint.encode(d,o.from),e.uint.encode(d,o.to),e.uint.encode(d,c),n>=20&&o.buildType&&Or.encode(d,o.buildType)},decode(d){const o=Mc.decode(d),c=e.uint.decode(d),r=e.uint.decode(d),t=d.start<d.end?e.uint.decode(d):0;return{header:o,from:c,to:r,buildType:n>=20&&1&t?Or.decode(d):null}}},qc={RoomType:1,IsExperimental:2,IsJoiningDisabled:3,IsAppendingDisabled:4,IsCallingDisabled:5,IsMembershipEventsDisabled:6,IsAttachmentsDisabled:7,IsLinksDisabled:8},Fc={preencode(e,d){e.end++},encode(d,n){if(n>8)throw new Error("Unknown enum");e.uint.encode(d,n)},decode:d=>e.uint.decode(d)},Ec={en:"en",it:"it",ru:"ru",es:"es",de:"de"},Bc={preencode(e,d){e.end++},encode(d,n){switch(n){case"en":e.uint.encode(d,1);break;case"it":e.uint.encode(d,2);break;case"ru":e.uint.encode(d,3);break;case"es":e.uint.encode(d,4);break;case"de":e.uint.encode(d,5);break;default:throw new Error("Unknown enum")}},decode(d){switch(e.uint.decode(d)){case 1:return"en";case 2:return"it";case 3:return"ru";case 4:return"es";case 5:return"de";default:return null}}},Ic=Ed,Nc={preencode(d,n){Ic.preencode(d,n.range),Bc.preencode(d,n.language),e.string.preencode(d,n.text)},encode(d,n){Ic.encode(d,n.range),Bc.encode(d,n.language),e.string.encode(d,n.text)},decode:d=>({range:Ic.decode(d),language:Bc.decode(d),text:e.string.decode(d)})},jc={preencode(d,n){e.fixed32.preencode(d,n.deviceKey),e.fixed32.preencode(d,n.key)},encode(d,n){e.fixed32.encode(d,n.deviceKey),e.fixed32.encode(d,n.key)},decode:d=>({deviceKey:e.fixed32.decode(d),key:e.fixed32.decode(d)})},Oc=_,Jc={preencode(d,n){Oc.preencode(d,n.header),e.fixed32.preencode(d,n.key)},encode(d,n){Oc.encode(d,n.header),e.fixed32.encode(d,n.key)},decode:d=>({header:Oc.decode(d),key:e.fixed32.decode(d)})},Uc=_,Vc={preencode(d,n){Uc.preencode(d,n.header),e.fixed32.preencode(d,n.key)},encode(d,n){Uc.encode(d,n.header),e.fixed32.encode(d,n.key)},decode:d=>({header:Uc.decode(d),key:e.fixed32.decode(d)})},Hc={Flag:1},zc={preencode(e,d){e.end++},encode(d,n){if(n>1)throw new Error("Unknown enum");e.uint.encode(d,n)},decode:d=>e.uint.decode(d)},Gc={preencode(d,n){fn.preencode(d,n.id),e.fixed32.preencode(d,n.sender),e.uint.preencode(d,n.clock),zc.preencode(d,n.label)},encode(d,n){fn.encode(d,n.id),e.fixed32.encode(d,n.sender),e.uint.encode(d,n.clock),zc.encode(d,n.label)},decode:d=>({id:fn.decode(d),sender:e.fixed32.decode(d),clock:e.uint.decode(d),label:zc.decode(d)})},Qc=_,Wc={preencode(e,d){Qc.preencode(e,d.header),c.preencode(e,d.oplog),zc.preencode(e,d.label)},encode(e,d){Qc.encode(e,d.header),c.encode(e,d.oplog),zc.encode(e,d.label)},decode:e=>({header:Qc.decode(e),oplog:c.decode(e),label:zc.decode(e)})},Xc=_,Yc={preencode(e,d){Xc.preencode(e,d.header),c.preencode(e,d.oplog),zc.preencode(e,d.label)},encode(e,d){Xc.encode(e,d.header),c.encode(e,d.oplog),zc.encode(e,d.label)},decode:e=>({header:Xc.decode(e),oplog:c.decode(e),label:zc.decode(e)})},Zc={preencode(d,n){zc.preencode(d,n.label),e.uint.preencode(d,n.count)},encode(d,n){zc.encode(d,n.label),e.uint.encode(d,n.count)},decode:d=>({label:zc.decode(d),count:e.uint.decode(d)})},$c=e.array(e.frame(Zc)),_c={preencode(d,o){fn.preencode(d,o.id),e.uint.preencode(d,o.total),$c.preencode(d,o.labels),e.uint.preencode(d,o.editedAt),d.end++,n>=15&&o.flagsClock&&e.uint.preencode(d,o.flagsClock),n>=15&&o.version&&e.uint.preencode(d,o.version)},encode(d,o){const c=(n>=15&&o.flagsClock?1:0)|(n>=15&&o.version?2:0)|(n>=16&&o.isDeleted?4:0);fn.encode(d,o.id),e.uint.encode(d,o.total),$c.encode(d,o.labels),e.uint.encode(d,o.editedAt),e.uint.encode(d,c),n>=15&&o.flagsClock&&e.uint.encode(d,o.flagsClock),n>=15&&o.version&&e.uint.encode(d,o.version)},decode(d){const o=fn.decode(d),c=e.uint.decode(d),r=$c.decode(d),t=e.uint.decode(d),i=d.start<d.end?e.uint.decode(d):0;return{id:o,total:c,labels:r,editedAt:t,flagsClock:n>=15&&1&i?e.uint.decode(d):0,version:n>=15&&2&i?e.uint.decode(d):0,isDeleted:n>=16&&!!(4&i)}}},er=_,dr={preencode(d,n){er.preencode(d,n.header),e.uint.preencode(d,n.length)},encode(d,n){er.encode(d,n.header),e.uint.encode(d,n.length)},decode:d=>({header:er.decode(d),length:e.uint.decode(d)})},nr={preencode(d,n){e.fixed32.preencode(d,n.memberKey),e.uint.preencode(d,n.length)},encode(d,n){e.fixed32.encode(d,n.memberKey),e.uint.encode(d,n.length)},decode:d=>({memberKey:e.fixed32.decode(d),length:e.uint.decode(d)})},or=$,cr={preencode(e,d){e.end++},encode(d,o){const c=n>=13&&o.disableReadReceipts?1:0;e.uint.encode(d,c)},decode(d){const o=e.uint.decode(d);return{disableReadReceipts:n>=13&&!!(1&o)}}},rr={disableReadReceipts:"disableReadReceipts"},tr={preencode(e,d){e.end++},encode(d,n){if("disableReadReceipts"!==n)throw new Error("Unknown enum");e.uint.encode(d,1)},decode:d=>1===e.uint.decode(d)?"disableReadReceipts":null},ir=_,ar=e.frame(cr),sr={preencode(e,d){ir.preencode(e,d.header),tr.preencode(e,d.key),ar.preencode(e,d.settings)},encode(e,d){ir.encode(e,d.header),tr.encode(e,d.key),ar.encode(e,d.settings)},decode:e=>({header:ir.decode(e),key:tr.decode(e),settings:ar.decode(e)})},pr={Flag:1},ur={preencode(e,d){e.end++},encode(d,n){if(n>1)throw new Error("Unknown enum");e.uint.encode(d,n)},decode:d=>e.uint.decode(d)},lr={preencode(d,n){e.fixed32.preencode(d,n.key),e.fixed32.preencode(d,n.sender),e.uint.preencode(d,n.clock),ur.preencode(d,n.label)},encode(d,n){e.fixed32.encode(d,n.key),e.fixed32.encode(d,n.sender),e.uint.encode(d,n.clock),ur.encode(d,n.label)},decode:d=>({key:e.fixed32.decode(d),sender:e.fixed32.decode(d),clock:e.uint.decode(d),label:ur.decode(d)})},fr=_,mr={preencode(d,n){fr.preencode(d,n.header),e.fixed32.preencode(d,n.key),ur.preencode(d,n.label)},encode(d,n){fr.encode(d,n.header),e.fixed32.encode(d,n.key),ur.encode(d,n.label)},decode:d=>({header:fr.decode(d),key:e.fixed32.decode(d),label:ur.decode(d)})},yr={preencode(d,n){ur.preencode(d,n.label),e.uint.preencode(d,n.count)},encode(d,n){ur.encode(d,n.label),e.uint.encode(d,n.count)},decode:d=>({label:ur.decode(d),count:e.uint.decode(d)})},xr=e.array(e.frame(yr)),br={preencode(d,n){e.fixed32.preencode(d,n.key),e.uint.preencode(d,n.total),xr.preencode(d,n.labels),e.uint.preencode(d,n.editedAt),e.uint.preencode(d,n.flagsClock)},encode(d,n){e.fixed32.encode(d,n.key),e.uint.encode(d,n.total),xr.encode(d,n.labels),e.uint.encode(d,n.editedAt),e.uint.encode(d,n.flagsClock)},decode:d=>({key:e.fixed32.decode(d),total:e.uint.decode(d),labels:xr.decode(d),editedAt:e.uint.decode(d),flagsClock:e.uint.decode(d)})},kr={preencode(d,n){e.float64.preencode(d,n.latitude),e.float64.preencode(d,n.longitude)},encode(d,n){e.float64.encode(d,n.latitude),e.float64.encode(d,n.longitude)},decode:d=>({latitude:e.float64.decode(d),longitude:e.float64.decode(d)})},vr=_,gr={preencode(d,n){vr.preencode(d,n.header),e.fixed32.preencode(d,n.deviceKey),e.fixed32.preencode(d,n.fromDeviceKey)},encode(d,n){vr.encode(d,n.header),e.fixed32.encode(d,n.deviceKey),e.fixed32.encode(d,n.fromDeviceKey)},decode:d=>({header:vr.decode(d),deviceKey:e.fixed32.decode(d),fromDeviceKey:e.fixed32.decode(d)})},hr=_,Kr=Y,wr={preencode(d,o){hr.preencode(d,o.header),e.fixed32.preencode(d,o.callKey),e.buffer.preencode(d,o.encryptionKey),d.end++,n>=19&&o.streams&&Kr.preencode(d,o.streams),n>=19&&o.discoveryKey&&e.fixed32.preencode(d,o.discoveryKey),n>=19&&o.version&&e.uint.preencode(d,o.version)},encode(d,o){const c=(n>=19&&o.streams?1:0)|(n>=19&&o.discoveryKey?2:0)|(n>=19&&o.version?4:0);hr.encode(d,o.header),e.fixed32.encode(d,o.callKey),e.buffer.encode(d,o.encryptionKey),e.uint.encode(d,c),n>=19&&o.streams&&Kr.encode(d,o.streams),n>=19&&o.discoveryKey&&e.fixed32.encode(d,o.discoveryKey),n>=19&&o.version&&e.uint.encode(d,o.version)},decode(d){const o=hr.decode(d),c=e.fixed32.decode(d),r=e.buffer.decode(d),t=e.uint.decode(d);return{header:o,callKey:c,encryptionKey:r,streams:n>=19&&1&t?Kr.decode(d):null,discoveryKey:n>=19&&2&t?e.fixed32.decode(d):null,version:n>=19&&4&t?e.uint.decode(d):0}}},Tr=_,Pr=Y,Ar={preencode(d,o){Tr.preencode(d,o.header),e.fixed32.preencode(d,o.callKey),d.end++,n>=19&&o.streams&&Pr.preencode(d,o.streams)},encode(d,o){const c=n>=19&&o.streams?1:0;Tr.encode(d,o.header),e.fixed32.encode(d,o.callKey),e.uint.encode(d,c),n>=19&&o.streams&&Pr.encode(d,o.streams)},decode(d){const o=Tr.decode(d),c=e.fixed32.decode(d),r=e.uint.decode(d);return{header:o,callKey:c,streams:n>=19&&1&r?Pr.decode(d):null}}},Rr=_,Dr={preencode(d,n){Rr.preencode(d,n.header),e.fixed32.preencode(d,n.callKey)},encode(d,n){Rr.encode(d,n.header),e.fixed32.encode(d,n.callKey)},decode:d=>({header:Rr.decode(d),callKey:e.fixed32.decode(d)})},Sr=_,Cr={preencode(d,n){Sr.preencode(d,n.header),e.fixed32.preencode(d,n.callKey)},encode(d,n){Sr.encode(d,n.header),e.fixed32.encode(d,n.callKey)},decode:d=>({header:Sr.decode(d),callKey:e.fixed32.decode(d)})},Mr=_,Lr={preencode(d,n){Mr.preencode(d,n.header),e.fixed32.preencode(d,n.callKey),e.fixed32.preencode(d,n.streamKey)},encode(d,n){Mr.encode(d,n.header),e.fixed32.encode(d,n.callKey),e.fixed32.encode(d,n.streamKey)},decode:d=>({header:Mr.decode(d),callKey:e.fixed32.decode(d),streamKey:e.fixed32.decode(d)})},qr=_,Fr={preencode(d,n){qr.preencode(d,n.header),e.fixed32.preencode(d,n.callKey),e.fixed32.preencode(d,n.streamKey)},encode(d,n){qr.encode(d,n.header),e.fixed32.encode(d,n.callKey),e.fixed32.encode(d,n.streamKey)},decode:d=>({header:qr.decode(d),callKey:e.fixed32.decode(d),streamKey:e.fixed32.decode(d)})},Er={preencode(d,o){e.fixed32.preencode(d,o.callKey),e.buffer.preencode(d,o.encryptionKey),e.uint.preencode(d,o.createdAt),d.end++,n>=19&&o.endedAt&&e.uint.preencode(d,o.endedAt),n>=19&&o.discoveryKey&&e.fixed32.preencode(d,o.discoveryKey),n>=19&&o.version&&e.uint.preencode(d,o.version)},encode(d,o){const c=(n>=19&&o.endedAt?1:0)|(n>=19&&o.discoveryKey?2:0)|(n>=19&&o.version?4:0);e.fixed32.encode(d,o.callKey),e.buffer.encode(d,o.encryptionKey),e.uint.encode(d,o.createdAt),e.uint.encode(d,c),n>=19&&o.endedAt&&e.uint.encode(d,o.endedAt),n>=19&&o.discoveryKey&&e.fixed32.encode(d,o.discoveryKey),n>=19&&o.version&&e.uint.encode(d,o.version)},decode(d){const o=e.fixed32.decode(d),c=e.buffer.decode(d),r=e.uint.decode(d),t=e.uint.decode(d);return{callKey:o,encryptionKey:c,createdAt:r,endedAt:n>=19&&1&t?e.uint.decode(d):0,discoveryKey:n>=19&&2&t?e.fixed32.decode(d):null,version:n>=19&&4&t?e.uint.decode(d):0}}},Br={preencode(d,n){e.fixed32.preencode(d,n.callKey),e.fixed32.preencode(d,n.memberKey),e.uint.preencode(d,n.createdAt)},encode(d,n){e.fixed32.encode(d,n.callKey),e.fixed32.encode(d,n.memberKey),e.uint.encode(d,n.createdAt)},decode:d=>({callKey:e.fixed32.decode(d),memberKey:e.fixed32.decode(d),createdAt:e.uint.decode(d)})},Ir={preencode(d,o){e.fixed32.preencode(d,o.callKey),e.fixed32.preencode(d,o.deviceKey),e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.createdAt),d.end++,n>=19&&o.swarmKey&&e.fixed32.preencode(d,o.swarmKey)},encode(d,o){const c=n>=19&&o.swarmKey?1:0;e.fixed32.encode(d,o.callKey),e.fixed32.encode(d,o.deviceKey),e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.createdAt),e.uint.encode(d,c),n>=19&&o.swarmKey&&e.fixed32.encode(d,o.swarmKey)},decode(d){const o=e.fixed32.decode(d),c=e.fixed32.decode(d),r=e.fixed32.decode(d),t=e.uint.decode(d),i=e.uint.decode(d);return{callKey:o,deviceKey:c,memberKey:r,createdAt:t,swarmKey:n>=19&&1&i?e.fixed32.decode(d):null}}},Nr={preencode(d,n){e.fixed32.preencode(d,n.callKey),e.fixed32.preencode(d,n.deviceKey),e.buffer.preencode(d,n.streamKey),e.uint.preencode(d,n.createdAt)},encode(d,n){e.fixed32.encode(d,n.callKey),e.fixed32.encode(d,n.deviceKey),e.buffer.encode(d,n.streamKey),e.uint.encode(d,n.createdAt)},decode:d=>({callKey:e.fixed32.decode(d),deviceKey:e.fixed32.decode(d),streamKey:e.buffer.decode(d),createdAt:e.uint.decode(d)})},jr={Nightly:"Nightly",Internal:"Internal",Production:"Production"},Or={preencode(e,d){e.end++},encode(d,n){switch(n){case"Nightly":e.uint.encode(d,1);break;case"Internal":e.uint.encode(d,2);break;case"Production":e.uint.encode(d,3);break;default:throw new Error("Unknown enum")}},decode(d){switch(e.uint.decode(d)){case 1:return"Nightly";case 2:return"Internal";case 3:return"Production";default:return null}}},Jr=_,Ur={preencode(e,d){Jr.preencode(e,d.header)},encode(e,d){Jr.encode(e,d.header)},decode:e=>({header:Jr.decode(e)})},Vr=_,Hr={preencode(e,d){Vr.preencode(e,d.header)},encode(e,d){Vr.encode(e,d.header)},decode:e=>({header:Vr.decode(e)})},zr=e.frame(T),Gr=zr,Qr=e.array(Bc),Wr=e.frame(pe),Xr=zr,Yr=Wr,Zr=e.frame(Kc),$r=Wr,_r=e.frame(md),et=e.frame(xc),dt=e.frame(kr),nt=dt,ot=e.array(e.frame(Nc)),ct=zr,rt=e.frame(Uo),tt=rt,it=rt,at=zr;function st(e){n=e}function pt(d,o,c=20){return n=c,e.encode(ft(d),o)}function ut(d,o,c=20){return n=c,e.decode(ft(d),o)}function lt(e){switch(e){case"@keet/room-type":return U;case"@keet/display-type":return Ac;case"@keet/system-settings-keys":return qc;case"@keet/room-supported-language":return Ec;case"@keet/label-type":return Hc;case"@keet-private-id/user-settings-key":return rr;case"@keet/member-label-type":return pr;case"@keet/build-type":return jr;default:throw new Error("Enum not found "+e)}}function ft(e){switch(e){case"@keet/head":return o;case"@keet/oplog-id":return c;case"@keet/encryption-keypair":return r;case"@keet/signing-keypair":return t;case"@keet/room-keys":return i;case"@keet/operation-header":return a;case"@keet/blob-pointer":return s;case"@keet/file-dimensions":return p;case"@keet/file-metadata":return l;case"@keet/external-drive-pointer":return f;case"@keet/external-blob-pointer":return m;case"@keet/file-pointer":return b;case"@keet/file":return g;case"@keet/image-file":return T;case"@keet/file-status":return P;case"@keet/file-record":return D;case"@keet/device-status":return S;case"@keet/member-status":return C;case"@keet/member-moderation-status":return M;case"@keet/abi":return L;case"@keet/device-stats":return q;case"@keet/member-stats":return F;case"@keet/chat-stats":return E;case"@keet/file-stats":return B;case"@keet/stats":return J;case"@keet/room-type":return V;case"@keet/system-settings":return H;case"@keet/system-digest":return Q;case"@keet/room-seed":return W;case"@keet/room-capabilities":return X;case"@keet/room-config":return Z;case"@keet/blind-peer":return $;case"@keet/add-blind-peer-operation":return de;case"@keet/remove-blind-peer-operation":return oe;case"@keet/identity-attestation":return ce;case"@keet/device-invitation":return re;case"@keet/device":return ae;case"@keet/member-profile":return se;case"@keet/device-profile":return pe;case"@keet/member-update":return le;case"@keet/device-update":return fe;case"@keet/signed-pairing-data":return me;case"@keet/device-request-identity":return ye;case"@keet/device-response-identity":return xe;case"@keet/device-request-with-invitation":return ge;case"@keet/device-request-with-invitation-and-proof":return Ke;case"@keet/device-request-with-member-proof":return Pe;case"@keet/device-request":return De;case"@keet/device-response":return Me;case"@keet/invitation-metadata":return Le;case"@keet/invitation":return Ee;case"@keet/add-invitation-operation":return Ne;case"@keet/remove-invitation-operation":return Oe;case"@keet/sendable-room-invitation":return Je;case"@keet/sendable-identity-invitation":return Ue;case"@keet/sendable-contact-invitation":return Ve;case"@keet/sendable-invitation":return We;case"@keet/add-device-operation":return Ye;case"@keet/update-device-operation":return $e;case"@keet/start-indexing-operation":return _e;case"@keet/stop-indexing-operation":return ed;case"@keet/join-request":return nd;case"@keet/accept-join-request-operation":return rd;case"@keet/reject-join-request-operation":return id;case"@keet/member":return pd;case"@keet/full-member":return fd;case"@keet/member-proofs":return md;case"@keet/update-member-operation":return bd;case"@keet/change-member-status-operation":return gd;case"@keet/change-member-role-operation":return Kd;case"@keet/remove-member-operation":return Td;case"@keet/member-activity":return Pd;case"@keet/member-joined-event":return Ad;case"@keet/member-left-event":return Rd;case"@keet/title-changed-chat-event":return Dd;case"@keet/chat-event":return Ld;case"@keet/sendable-event":return qd;case"@keet/display-range":return Fd;case"@keet/display-content-range":return Bd;case"@keet/mention-display-item":return Nd;case"@keet/link-preview":return Jd;case"@keet/display-link-item":return Hd;case"@keet/display":return en;case"@keet/oplog-message":return cn;case"@keet/index-message":return an;case"@keet/full-index-message":return un;case"@keet/message-status":return ln;case"@keet/message-index-id":return fn;case"@keet/thread":return yn;case"@keet/chat-message-record":return vn;case"@keet/full-chat-message-record":return wn;case"@keet/add-chat-message-operation":return An;case"@keet/remove-chat-message-operation":return Dn;case"@keet/update-chat-message-operation":return Mn;case"@keet/pin-chat-message-operation":return qn;case"@keet/reaction":return Fn;case"@keet/reactions-summary":return En;case"@keet/reactions-digest":return In;case"@keet/add-reaction-operation":return jn;case"@keet/remove-reaction-operation":return Jn;case"@keet/update-room-config-operation":return Hn;case"@keet/group-member":return zn;case"@keet/user-registry-info":return Gn;case"@keet/room-identity":return Wn;case"@keet/genesis-operation":return oo;case"@keet/upgrade-operation":return ro;case"@keet/update-system-settings-operation":return ao;case"@keet-private-id/contact":return so;case"@keet-private-id/v3-room-migration-info":return po;case"@keet-private-id/run-v3-migration-operation":return fo;case"@keet-private-id/update-identity-operation":return yo;case"@keet-private-id/counters":return xo;case"@keet-private-id/stats":return bo;case"@keet-private-id/add-entropy-operation":return ko;case"@keet-private-id/pending-invitation-identity":return vo;case"@keet-private-id/pending-invitation":return ho;case"@keet-private-id/resolve-pending-invitation-operation":return wo;case"@keet-private-id/add-pending-invitation-operation":return Ao;case"@keet-private-id/remove-pending-invitation-operation":return Do;case"@keet-private-id/identity-swap":return So;case"@keet-private-id/room-status":return Co;case"@keet-private-id/room":return Fo;case"@keet-private-id/add-room-operation":return Bo;case"@keet-private-id/remove-room-operation":return No;case"@keet-private-id/update-room-status-operation":return Jo;case"@keet-private-id/contact-status":return Uo;case"@keet-private-id/contact-record":return Vo;case"@keet-private-id/add-contact-operation":return Go;case"@keet-private-id/update-contact-status-operation":return Wo;case"@keet-private-id/remove-contact-operation":return Yo;case"@keet-private-id/contact-request-status":return Zo;case"@keet-private-id/contact-request-body":return ec;case"@keet-private-id/contact-request":return nc;case"@keet-private-id/contact-request-record":return tc;case"@keet-private-id/add-contact-request-operation":return ac;case"@keet-private-id/update-contact-request-status-operation":return uc;case"@keet-private-id/profile-discovery-record-v1":return lc;case"@keet-private-id/profile-discovery-record":return fc;case"@keet/add-file-preview-operation":return yc;case"@keet/member-removed-event":return xc;case"@keet/member-contact-info":return kc;case"@keet/remove-device-operation":return gc;case"@keet/device-identity":return hc;case"@keet/readonly-room-invitation":return Kc;case"@keet-private-id/identity-swap-v2":return wc;case"@keet-private-id/activate-contact-room-operation":return Pc;case"@keet/display-type":return Rc;case"@keet/test-increment-operation":return Sc;case"@keet/test-collection-record-1":return Cc;case"@keet/migrate-abi-operation":return Lc;case"@keet/system-settings-keys":return Fc;case"@keet/room-supported-language":return Bc;case"@keet/translation-display-item":return Nc;case"@keet-private-id/unreads":return jc;case"@keet-private-id/add-unreads-key-operation":return Jc;case"@keet-private-id/remove-unreads-key-operation":return Vc;case"@keet/label-type":return zc;case"@keet/chat-label":return Gc;case"@keet/add-chat-label-operation":return Wc;case"@keet/remove-chat-label-operation":return Yc;case"@keet/chat-label-summary":return Zc;case"@keet/chat-label-digest":return _c;case"@keet/update-read-length-operation":return dr;case"@keet/read-length":return nr;case"@keet/tmp-removed-member":return or;case"@keet-private-id/settings":return cr;case"@keet-private-id/user-settings-key":return tr;case"@keet-private-id/update-settings-operation":return sr;case"@keet/member-label-type":return ur;case"@keet/member-label":return lr;case"@keet/add-member-label-operation":return mr;case"@keet/member-label-summary":return yr;case"@keet/member-label-digest":return br;case"@keet/location-shared-event":return kr;case"@keet/move-indexer-operation":return gr;case"@keet/start-call":return wr;case"@keet/join-call":return Ar;case"@keet/leave-call":return Dr;case"@keet/end-call":return Cr;case"@keet/add-call-stream":return Lr;case"@keet/remove-call-stream":return Fr;case"@keet/call-record":return Er;case"@keet/call-member-record":return Br;case"@keet/call-device-record":return Ir;case"@keet/call-stream-record":return Nr;case"@keet/build-type":return Or;case"@keet/test-crash-operation":return Ur;case"@keet/test-dispatch-error-operation":return Hr;default:throw new Error("Encoder not found "+e)}}function mt(e,d=20){const o=ft(e);return{preencode(e,c){n=d,o.preencode(e,c)},encode(e,c){n=d,o.encode(e,c)},decode:e=>(n=d,o.decode(e))}}const yt=mt;module.exports={resolveStruct:yt,getStruct:mt,getEnum:lt,getEncoding:ft,encode:pt,decode:ut,setVersion:st,version:n};
@holepunchto/keet-core/schema/spec/contract/hyperschema/schema.json +4973 -0
……@@ -0,0 +1,4973 @@
1{
2 "version": 20,
3 "schema": [
4 {
5 "name": "public-key",
6 "namespace": "keet",
7 "alias": "fixed32",
8 "version": 1
9 },
10 {
11 "name": "secret-key",
12 "namespace": "keet",
13 "alias": "buffer",
14 "version": 1
15 },
16 {
17 "name": "room-key",
18 "namespace": "keet",
19 "alias": "fixed32",
20 "version": 1
21 },
22 {
23 "name": "encryption-key",
24 "namespace": "keet",
25 "alias": "buffer",
26 "version": 1
27 },
28 {
29 "name": "room-discovery-key",
30 "namespace": "keet",
31 "alias": "fixed32",
32 "version": 1
33 },
34 {
35 "name": "core-key",
36 "namespace": "keet",
37 "alias": "fixed32",
38 "version": 1
39 },
40 {
41 "name": "device-key",
42 "namespace": "keet",
43 "alias": "fixed32",
44 "version": 1
45 },
46 {
47 "name": "invitation-id",
48 "namespace": "keet",
49 "alias": "fixed32",
50 "version": 1
51 },
52 {
53 "name": "member-key",
54 "namespace": "keet",
55 "alias": "fixed32",
56 "version": 1
57 },
58 {
59 "name": "swarm-key",
60 "namespace": "keet",
61 "alias": "fixed32",
62 "version": 1
63 },
64 {
65 "name": "core-seq",
66 "namespace": "keet",
67 "alias": "uint",
68 "version": 1
69 },
70 {
71 "name": "head",
72 "namespace": "keet",
73 "compact": true,
74 "flagsPosition": -1,
75 "fields": [
76 {
77 "name": "key",
78 "required": true,
79 "type": "@keet/device-key",
80 "version": 1
81 },
82 {
83 "name": "length",
84 "required": true,
85 "type": "uint",
86 "version": 1
87 }
88 ]
89 },
90 {
91 "name": "oplog-id",
92 "namespace": "keet",
93 "compact": true,
94 "flagsPosition": -1,
95 "fields": [
96 {
97 "name": "key",
98 "required": true,
99 "type": "@keet/device-key",
100 "version": 1
101 },
102 {
103 "name": "seq",
104 "required": true,
105 "type": "@keet/core-seq",
106 "version": 1
107 }
108 ]
109 },
110 {
111 "name": "encryption-keypair",
112 "namespace": "keet",
113 "compact": true,
114 "flagsPosition": -1,
115 "fields": [
116 {
117 "name": "publicKey",
118 "required": true,
119 "type": "fixed32",
120 "version": 1
121 },
122 {
123 "name": "secretKey",
124 "required": true,
125 "type": "fixed32",
126 "version": 1
127 }
128 ]
129 },
130 {
131 "name": "signing-keypair",
132 "namespace": "keet",
133 "compact": true,
134 "flagsPosition": -1,
135 "fields": [
136 {
137 "name": "publicKey",
138 "required": true,
139 "type": "fixed32",
140 "version": 1
141 },
142 {
143 "name": "secretKey",
144 "required": true,
145 "type": "fixed64",
146 "version": 1
147 }
148 ]
149 },
150 {
151 "name": "room-keys",
152 "namespace": "keet",
153 "compact": false,
154 "flagsPosition": 1,
155 "fields": [
156 {
157 "name": "key",
158 "required": true,
159 "type": "@keet/room-key",
160 "version": 1
161 },
162 {
163 "name": "encryptionKey",
164 "type": "@keet/encryption-key",
165 "version": 1
166 },
167 {
168 "name": "fastForwardTo",
169 "type": "fixed32",
170 "version": 1
171 }
172 ]
173 },
174 {
175 "name": "operation-header",
176 "namespace": "keet",
177 "compact": false,
178 "flagsPosition": -1,
179 "fields": [
180 {
181 "name": "timestamp",
182 "required": true,
183 "type": "uint",
184 "version": 1
185 }
186 ]
187 },
188 {
189 "name": "blob-pointer",
190 "namespace": "keet",
191 "compact": true,
192 "flagsPosition": -1,
193 "fields": [
194 {
195 "name": "blockOffset",
196 "required": true,
197 "type": "uint",
198 "version": 1
199 },
200 {
201 "name": "blockLength",
202 "required": true,
203 "type": "uint",
204 "version": 1
205 },
206 {
207 "name": "byteOffset",
208 "required": true,
209 "type": "uint",
210 "version": 1
211 },
212 {
213 "name": "byteLength",
214 "required": true,
215 "type": "uint",
216 "version": 1
217 }
218 ]
219 },
220 {
221 "name": "file-dimensions",
222 "namespace": "keet",
223 "compact": false,
224 "flagsPosition": -1,
225 "fields": [
226 {
227 "name": "width",
228 "required": true,
229 "type": "uint",
230 "version": 1
231 },
232 {
233 "name": "height",
234 "required": true,
235 "type": "uint",
236 "version": 1
237 }
238 ]
239 },
240 {
241 "name": "file-metadata",
242 "namespace": "keet",
243 "compact": false,
244 "flagsPosition": 0,
245 "fields": [
246 {
247 "name": "name",
248 "type": "string",
249 "version": 1
250 },
251 {
252 "name": "mimetype",
253 "type": "string",
254 "version": 1
255 },
256 {
257 "name": "dimensions",
258 "type": "@keet/file-dimensions",
259 "version": 1
260 },
261 {
262 "name": "userdata",
263 "type": "buffer",
264 "version": 1
265 },
266 {
267 "name": "duration",
268 "type": "uint",
269 "version": 1
270 },
271 {
272 "name": "isPreview",
273 "type": "bool",
274 "version": 1
275 }
276 ]
277 },
278 {
279 "name": "external-drive-pointer",
280 "namespace": "keet",
281 "compact": false,
282 "flagsPosition": -1,
283 "fields": [
284 {
285 "name": "key",
286 "required": true,
287 "type": "@keet/core-key",
288 "version": 1
289 },
290 {
291 "name": "path",
292 "required": true,
293 "type": "string",
294 "version": 1
295 },
296 {
297 "name": "version",
298 "required": true,
299 "type": "uint",
300 "version": 1
301 },
302 {
303 "name": "size",
304 "required": true,
305 "type": "uint",
306 "version": 1
307 }
308 ]
309 },
310 {
311 "name": "external-blob-pointer",
312 "namespace": "keet",
313 "compact": false,
314 "flagsPosition": -1,
315 "fields": [
316 {
317 "name": "key",
318 "required": true,
319 "type": "@keet/core-key",
320 "version": 1
321 },
322 {
323 "name": "blob",
324 "required": true,
325 "type": "@keet/blob-pointer",
326 "version": 1
327 }
328 ]
329 },
330 {
331 "name": "file-pointer",
332 "namespace": "keet",
333 "compact": false,
334 "flagsPosition": 0,
335 "fields": [
336 {
337 "name": "inlined",
338 "type": "buffer",
339 "version": 1
340 },
341 {
342 "name": "blob",
343 "type": "@keet/blob-pointer",
344 "version": 1
345 },
346 {
347 "name": "externalBlob",
348 "type": "@keet/external-blob-pointer",
349 "version": 1
350 },
351 {
352 "name": "externalDrive",
353 "type": "@keet/external-drive-pointer",
354 "version": 1
355 }
356 ]
357 },
358 {
359 "name": "file",
360 "namespace": "keet",
361 "compact": false,
362 "flagsPosition": 1,
363 "fields": [
364 {
365 "name": "pointer",
366 "required": true,
367 "type": "@keet/file-pointer",
368 "version": 1
369 },
370 {
371 "name": "metadata",
372 "type": "@keet/file-metadata",
373 "version": 1
374 },
375 {
376 "name": "preview",
377 "type": "@keet/image-file",
378 "version": 1
379 },
380 {
381 "name": "hash",
382 "type": "fixed32",
383 "version": 1
384 }
385 ]
386 },
387 {
388 "name": "image-file",
389 "namespace": "keet",
390 "compact": false,
391 "flagsPosition": 0,
392 "fields": [
393 {
394 "name": "small",
395 "type": "@keet/file",
396 "version": 1
397 },
398 {
399 "name": "medium",
400 "type": "@keet/file",
401 "version": 1
402 },
403 {
404 "name": "large",
405 "type": "@keet/file",
406 "version": 1
407 }
408 ]
409 },
410 {
411 "name": "file-status",
412 "namespace": "keet",
413 "compact": false,
414 "flagsPosition": 0,
415 "fields": [
416 {
417 "name": "isDeleted",
418 "type": "bool",
419 "version": 1
420 }
421 ]
422 },
423 {
424 "name": "file-record",
425 "namespace": "keet",
426 "compact": false,
427 "flagsPosition": 4,
428 "fields": [
429 {
430 "name": "id",
431 "required": true,
432 "type": "uint",
433 "version": 1
434 },
435 {
436 "name": "oplog",
437 "required": true,
438 "type": "@keet/oplog-id",
439 "version": 1
440 },
441 {
442 "name": "status",
443 "required": true,
444 "type": "@keet/file-status",
445 "version": 1
446 },
447 {
448 "name": "file",
449 "required": true,
450 "type": "@keet/file",
451 "version": 1
452 },
453 {
454 "name": "version",
455 "type": "uint",
456 "version": 14
457 }
458 ]
459 },
460 {
461 "name": "device-status",
462 "namespace": "keet",
463 "compact": false,
464 "flagsPosition": 0,
465 "fields": [
466 {
467 "name": "isActive",
468 "type": "bool",
469 "version": 1
470 },
471 {
472 "name": "isIndexing",
473 "type": "bool",
474 "version": 1
475 }
476 ]
477 },
478 {
479 "name": "member-status",
480 "namespace": "keet",
481 "compact": false,
482 "flagsPosition": 0,
483 "fields": [
484 {
485 "name": "isAdmin",
486 "type": "bool",
487 "version": 1
488 },
489 {
490 "name": "isModerator",
491 "type": "bool",
492 "version": 1
493 },
494 {
495 "name": "isPending",
496 "type": "bool",
497 "version": 1
498 },
499 {
500 "name": "isActive",
501 "type": "bool",
502 "version": 1
503 },
504 {
505 "name": "isMuted",
506 "type": "bool",
507 "version": 1
508 },
509 {
510 "name": "isBanned",
511 "type": "bool",
512 "version": 1
513 },
514 {
515 "name": "isShadowBanned",
516 "type": "bool",
517 "version": 1
518 },
519 {
520 "name": "isRemoved",
521 "type": "bool",
522 "version": 13
523 }
524 ]
525 },
526 {
527 "name": "member-moderation-status",
528 "namespace": "keet",
529 "compact": false,
530 "flagsPosition": 0,
531 "fields": [
532 {
533 "name": "isMuted",
534 "type": "bool",
535 "version": 1
536 },
537 {
538 "name": "isBanned",
539 "type": "bool",
540 "version": 1
541 },
542 {
543 "name": "isShadowBanned",
544 "type": "bool",
545 "version": 1
546 }
547 ]
548 },
549 {
550 "name": "abi",
551 "namespace": "keet",
552 "compact": false,
553 "flagsPosition": -1,
554 "fields": [
555 {
556 "name": "version",
557 "required": true,
558 "type": "uint",
559 "version": 1
560 }
561 ]
562 },
563 {
564 "name": "device-stats",
565 "namespace": "keet",
566 "compact": false,
567 "flagsPosition": -1,
568 "fields": [
569 {
570 "name": "total",
571 "required": true,
572 "type": "uint",
573 "version": 1
574 },
575 {
576 "name": "active",
577 "required": true,
578 "type": "uint",
579 "version": 1
580 }
581 ]
582 },
583 {
584 "name": "member-stats",
585 "namespace": "keet",
586 "compact": false,
587 "flagsPosition": -1,
588 "fields": [
589 {
590 "name": "total",
591 "required": true,
592 "type": "uint",
593 "version": 1
594 },
595 {
596 "name": "active",
597 "required": true,
598 "type": "uint",
599 "version": 1
600 },
601 {
602 "name": "pending",
603 "required": true,
604 "type": "uint",
605 "version": 1
606 }
607 ]
608 },
609 {
610 "name": "chat-stats",
611 "namespace": "keet",
612 "compact": false,
613 "flagsPosition": 4,
614 "fields": [
615 {
616 "name": "clock",
617 "required": true,
618 "type": "uint",
619 "version": 1
620 },
621 {
622 "name": "pinned",
623 "required": true,
624 "type": "uint",
625 "version": 1
626 },
627 {
628 "name": "threads",
629 "required": true,
630 "type": "uint",
631 "version": 1
632 },
633 {
634 "name": "timestamp",
635 "required": true,
636 "type": "uint",
637 "version": 1
638 },
639 {
640 "name": "flagsClock",
641 "type": "uint",
642 "version": 15
643 }
644 ]
645 },
646 {
647 "name": "file-stats",
648 "namespace": "keet",
649 "compact": false,
650 "flagsPosition": -1,
651 "fields": [
652 {
653 "name": "clock",
654 "required": true,
655 "type": "uint",
656 "version": 1
657 }
658 ]
659 },
660 {
661 "name": "stats",
662 "namespace": "keet",
663 "compact": false,
664 "flagsPosition": -1,
665 "fields": [
666 {
667 "name": "devices",
668 "required": true,
669 "type": "@keet/device-stats",
670 "version": 1
671 },
672 {
673 "name": "members",
674 "required": true,
675 "type": "@keet/member-stats",
676 "version": 1
677 },
678 {
679 "name": "chat",
680 "required": true,
681 "type": "@keet/chat-stats",
682 "version": 1
683 },
684 {
685 "name": "files",
686 "required": true,
687 "type": "@keet/file-stats",
688 "version": 1
689 }
690 ]
691 },
692 {
693 "name": "room-type",
694 "namespace": "keet",
695 "offset": 1,
696 "enum": [
697 {
698 "key": "Default",
699 "version": 1
700 },
701 {
702 "key": "Broadcast",
703 "version": 1
704 },
705 {
706 "key": "DirectMessage",
707 "version": 1
708 }
709 ],
710 "strings": false
711 },
712 {
713 "name": "system-settings",
714 "namespace": "keet",
715 "compact": false,
716 "flagsPosition": 0,
717 "fields": [
718 {
719 "name": "roomType",
720 "type": "@keet/room-type",
721 "version": 1
722 },
723 {
724 "name": "isExperimental",
725 "type": "bool",
726 "version": 1
727 },
728 {
729 "name": "isJoiningDisabled",
730 "type": "bool",
731 "version": 1
732 },
733 {
734 "name": "isAppendingDisabled",
735 "type": "bool",
736 "version": 1
737 },
738 {
739 "name": "isCallingDisabled",
740 "type": "bool",
741 "version": 1
742 },
743 {
744 "name": "isMembershipEventsDisabled",
745 "type": "bool",
746 "version": 1
747 },
748 {
749 "name": "isAttachmentsDisabled",
750 "type": "bool",
751 "version": 19
752 },
753 {
754 "name": "isLinksDisabled",
755 "type": "bool",
756 "version": 19
757 },
758 {
759 "name": "buildType",
760 "type": "@keet/build-type",
761 "version": 20
762 }
763 ]
764 },
765 {
766 "name": "system-digest",
767 "namespace": "keet",
768 "compact": false,
769 "flagsPosition": -1,
770 "fields": [
771 {
772 "name": "abi",
773 "required": true,
774 "type": "@keet/abi",
775 "version": 1
776 },
777 {
778 "name": "settings",
779 "required": true,
780 "type": "@keet/system-settings",
781 "version": 1
782 },
783 {
784 "name": "creationTime",
785 "required": true,
786 "type": "uint",
787 "version": 1
788 }
789 ]
790 },
791 {
792 "name": "room-seed",
793 "namespace": "keet",
794 "compact": false,
795 "flagsPosition": -1,
796 "fields": [
797 {
798 "name": "seed",
799 "required": true,
800 "type": "fixed32",
801 "version": 1
802 }
803 ]
804 },
805 {
806 "name": "room-capabilities",
807 "namespace": "keet",
808 "compact": false,
809 "flagsPosition": -1,
810 "fields": [
811 {
812 "name": "mailboxKeyPair",
813 "required": true,
814 "type": "@keet/encryption-keypair",
815 "version": 1
816 },
817 {
818 "name": "discoveryKeyPair",
819 "required": true,
820 "type": "@keet/signing-keypair",
821 "version": 1
822 },
823 {
824 "name": "wakeupTopic",
825 "required": true,
826 "type": "@keet/room-discovery-key",
827 "version": 1
828 },
829 {
830 "name": "swarmTopic",
831 "required": true,
832 "type": "@keet/room-discovery-key",
833 "version": 1
834 }
835 ]
836 },
837 {
838 "name": "room-config",
839 "namespace": "keet",
840 "compact": false,
841 "flagsPosition": 0,
842 "fields": [
843 {
844 "name": "title",
845 "type": "string",
846 "version": 1
847 },
848 {
849 "name": "avatar",
850 "type": "@keet/image-file",
851 "version": 1
852 },
853 {
854 "name": "description",
855 "type": "string",
856 "version": 1
857 },
858 {
859 "name": "supportedLanguages",
860 "array": true,
861 "type": "@keet/room-supported-language",
862 "version": 11
863 },
864 {
865 "name": "blindPeers",
866 "array": true,
867 "type": "fixed32",
868 "version": 13
869 }
870 ]
871 },
872 {
873 "name": "blind-peer",
874 "namespace": "keet",
875 "compact": false,
876 "flagsPosition": -1,
877 "fields": [
878 {
879 "name": "key",
880 "required": true,
881 "type": "@keet/public-key",
882 "version": 1
883 }
884 ]
885 },
886 {
887 "name": "add-blind-peer-operation",
888 "namespace": "keet",
889 "compact": false,
890 "flagsPosition": -1,
891 "fields": [
892 {
893 "name": "header",
894 "required": true,
895 "type": "@keet/operation-header",
896 "version": 1
897 },
898 {
899 "name": "peer",
900 "required": true,
901 "type": "@keet/blind-peer",
902 "version": 1
903 }
904 ]
905 },
906 {
907 "name": "remove-blind-peer-operation",
908 "namespace": "keet",
909 "compact": false,
910 "flagsPosition": -1,
911 "fields": [
912 {
913 "name": "header",
914 "required": true,
915 "type": "@keet/operation-header",
916 "version": 1
917 },
918 {
919 "name": "key",
920 "required": true,
921 "type": "@keet/public-key",
922 "version": 1
923 }
924 ]
925 },
926 {
927 "name": "identity-attestation",
928 "namespace": "keet",
929 "compact": true,
930 "flagsPosition": -1,
931 "fields": [
932 {
933 "name": "memberKey",
934 "required": true,
935 "type": "@keet/member-key",
936 "version": 1
937 },
938 {
939 "name": "proof",
940 "required": true,
941 "type": "buffer",
942 "version": 1
943 }
944 ]
945 },
946 {
947 "name": "device-invitation",
948 "namespace": "keet",
949 "compact": false,
950 "flagsPosition": -1,
951 "fields": [
952 {
953 "name": "id",
954 "required": true,
955 "type": "@keet/invitation-id",
956 "version": 1
957 },
958 {
959 "name": "response",
960 "required": true,
961 "type": "buffer",
962 "version": 1
963 }
964 ]
965 },
966 {
967 "name": "device",
968 "namespace": "keet",
969 "compact": false,
970 "flagsPosition": 4,
971 "fields": [
972 {
973 "name": "key",
974 "required": true,
975 "type": "@keet/device-key",
976 "version": 1
977 },
978 {
979 "name": "memberKey",
980 "required": true,
981 "type": "@keet/member-key",
982 "version": 1
983 },
984 {
985 "name": "status",
986 "required": true,
987 "type": "@keet/device-status",
988 "version": 1
989 },
990 {
991 "name": "profile",
992 "required": true,
993 "type": "@keet/device-profile",
994 "version": 1
995 },
996 {
997 "name": "invitation",
998 "type": "@keet/device-invitation",
999 "version": 1
1000 }
1001 ]
1002 },
1003 {
1004 "name": "member-profile",
1005 "namespace": "keet",
1006 "compact": false,
1007 "flagsPosition": 1,
1008 "fields": [
1009 {
1010 "name": "timestamp",
1011 "required": true,
1012 "type": "uint",
1013 "version": 1
1014 },
1015 {
1016 "name": "mailbox",
1017 "type": "@keet/public-key",
1018 "version": 1
1019 },
1020 {
1021 "name": "displayName",
1022 "type": "string",
1023 "version": 1
1024 },
1025 {
1026 "name": "avatar",
1027 "type": "@keet/image-file",
1028 "version": 1
1029 },
1030 {
1031 "name": "username",
1032 "type": "string",
1033 "version": 1
1034 }
1035 ]
1036 },
1037 {
1038 "name": "device-profile",
1039 "namespace": "keet",
1040 "compact": false,
1041 "flagsPosition": 0,
1042 "fields": [
1043 {
1044 "name": "swarmKey",
1045 "type": "@keet/swarm-key",
1046 "version": 1
1047 },
1048 {
1049 "name": "name",
1050 "type": "string",
1051 "version": 1
1052 },
1053 {
1054 "name": "isMobile",
1055 "type": "bool",
1056 "version": 1
1057 },
1058 {
1059 "name": "buildType",
1060 "type": "@keet/build-type",
1061 "version": 20
1062 }
1063 ]
1064 },
1065 {
1066 "name": "member-update",
1067 "namespace": "keet",
1068 "compact": false,
1069 "flagsPosition": -1,
1070 "fields": [
1071 {
1072 "name": "profile",
1073 "required": true,
1074 "type": "@keet/member-profile",
1075 "version": 1
1076 },
1077 {
1078 "name": "attestation",
1079 "required": true,
1080 "type": "@keet/identity-attestation",
1081 "version": 1
1082 }
1083 ]
1084 },
1085 {
1086 "name": "device-update",
1087 "namespace": "keet",
1088 "compact": false,
1089 "flagsPosition": -1,
1090 "fields": [
1091 {
1092 "name": "profile",
1093 "required": true,
1094 "type": "@keet/device-profile",
1095 "version": 1
1096 },
1097 {
1098 "name": "attestation",
1099 "required": true,
1100 "type": "@keet/identity-attestation",
1101 "version": 1
1102 }
1103 ]
1104 },
1105 {
1106 "name": "signed-pairing-data",
1107 "namespace": "keet",
1108 "compact": false,
1109 "flagsPosition": -1,
1110 "fields": [
1111 {
1112 "name": "id",
1113 "required": true,
1114 "type": "@keet/invitation-id",
1115 "version": 1
1116 },
1117 {
1118 "name": "data",
1119 "required": true,
1120 "type": "buffer",
1121 "version": 1
1122 },
1123 {
1124 "name": "signature",
1125 "required": true,
1126 "type": "buffer",
1127 "version": 1
1128 }
1129 ]
1130 },
1131 {
1132 "name": "device-request-identity",
1133 "namespace": "keet",
1134 "compact": false,
1135 "flagsPosition": -1,
1136 "fields": [
1137 {
1138 "name": "devicePublicKey",
1139 "required": true,
1140 "type": "@keet/public-key",
1141 "version": 1
1142 }
1143 ]
1144 },
1145 {
1146 "name": "device-response-identity",
1147 "namespace": "keet",
1148 "compact": false,
1149 "flagsPosition": -1,
1150 "fields": [
1151 {
1152 "name": "privateProfileIdentity",
1153 "required": true,
1154 "type": "@keet/identity-attestation",
1155 "version": 1
1156 },
1157 {
1158 "name": "deviceProof",
1159 "required": true,
1160 "type": "buffer",
1161 "version": 1
1162 }
1163 ]
1164 },
1165 {
1166 "name": "device-request-with-invitation",
1167 "namespace": "keet",
1168 "compact": false,
1169 "flagsPosition": 4,
1170 "fields": [
1171 {
1172 "name": "deviceKey",
1173 "required": true,
1174 "type": "@keet/device-key",
1175 "version": 1
1176 },
1177 {
1178 "name": "keyPair",
1179 "required": true,
1180 "type": "@keet/signing-keypair",
1181 "version": 1
1182 },
1183 {
1184 "name": "device",
1185 "required": true,
1186 "type": "@keet/device-update",
1187 "version": 1
1188 },
1189 {
1190 "name": "member",
1191 "required": true,
1192 "type": "@keet/member-update",
1193 "version": 1
1194 },
1195 {
1196 "name": "identity",
1197 "type": "@keet/device-request-identity",
1198 "version": 1
1199 }
1200 ]
1201 },
1202 {
1203 "name": "device-request-with-invitation-and-proof",
1204 "namespace": "keet",
1205 "compact": false,
1206 "flagsPosition": -1,
1207 "fields": [
1208 {
1209 "name": "id",
1210 "required": true,
1211 "type": "@keet/invitation-id",
1212 "version": 1
1213 },
1214 {
1215 "name": "request",
1216 "required": true,
1217 "type": "@keet/device-request-with-invitation",
1218 "version": 1
1219 },
1220 {
1221 "name": "signature",
1222 "required": true,
1223 "type": "buffer",
1224 "version": 1
1225 }
1226 ]
1227 },
1228 {
1229 "name": "device-request-with-member-proof",
1230 "namespace": "keet",
1231 "compact": false,
1232 "flagsPosition": 1,
1233 "fields": [
1234 {
1235 "name": "device",
1236 "required": true,
1237 "type": "@keet/device-update",
1238 "version": 1
1239 },
1240 {
1241 "name": "member",
1242 "type": "@keet/member-update",
1243 "version": 1
1244 }
1245 ]
1246 },
1247 {
1248 "name": "device-request",
1249 "namespace": "keet",
1250 "compact": false,
1251 "flagsPosition": 0,
1252 "fields": [
1253 {
1254 "name": "withInvitation",
1255 "type": "@keet/device-request-with-invitation-and-proof",
1256 "version": 1
1257 },
1258 {
1259 "name": "withMemberProof",
1260 "type": "@keet/device-request-with-member-proof",
1261 "version": 1
1262 }
1263 ]
1264 },
1265 {
1266 "name": "device-response",
1267 "namespace": "keet",
1268 "compact": false,
1269 "flagsPosition": 1,
1270 "fields": [
1271 {
1272 "name": "signedKeys",
1273 "required": true,
1274 "type": "@keet/signed-pairing-data",
1275 "version": 1
1276 },
1277 {
1278 "name": "identity",
1279 "type": "@keet/device-response-identity",
1280 "version": 1
1281 }
1282 ]
1283 },
1284 {
1285 "name": "invitation-metadata",
1286 "namespace": "keet",
1287 "compact": false,
1288 "flagsPosition": 0,
1289 "fields": [
1290 {
1291 "name": "expiration",
1292 "type": "uint",
1293 "version": 1
1294 },
1295 {
1296 "name": "requiresConfirmation",
1297 "type": "bool",
1298 "version": 1
1299 },
1300 {
1301 "name": "canModerate",
1302 "type": "bool",
1303 "version": 1
1304 },
1305 {
1306 "name": "canAdmin",
1307 "type": "bool",
1308 "version": 1
1309 },
1310 {
1311 "name": "buildType",
1312 "type": "@keet/build-type",
1313 "version": 20
1314 }
1315 ]
1316 },
1317 {
1318 "name": "invitation",
1319 "namespace": "keet",
1320 "compact": false,
1321 "flagsPosition": 3,
1322 "fields": [
1323 {
1324 "name": "id",
1325 "required": true,
1326 "type": "@keet/invitation-id",
1327 "version": 1
1328 },
1329 {
1330 "name": "response",
1331 "required": true,
1332 "type": "@keet/signed-pairing-data",
1333 "version": 1
1334 },
1335 {
1336 "name": "metadata",
1337 "required": true,
1338 "type": "@keet/invitation-metadata",
1339 "version": 1
1340 },
1341 {
1342 "name": "anchor",
1343 "type": "@keet/head",
1344 "version": 1
1345 },
1346 {
1347 "name": "isActive",
1348 "type": "bool",
1349 "version": 1
1350 }
1351 ]
1352 },
1353 {
1354 "name": "add-invitation-operation",
1355 "namespace": "keet",
1356 "compact": false,
1357 "flagsPosition": -1,
1358 "fields": [
1359 {
1360 "name": "header",
1361 "required": true,
1362 "type": "@keet/operation-header",
1363 "version": 1
1364 },
1365 {
1366 "name": "invitation",
1367 "required": true,
1368 "type": "@keet/invitation",
1369 "version": 1
1370 }
1371 ]
1372 },
1373 {
1374 "name": "remove-invitation-operation",
1375 "namespace": "keet",
1376 "compact": false,
1377 "flagsPosition": -1,
1378 "fields": [
1379 {
1380 "name": "header",
1381 "required": true,
1382 "type": "@keet/operation-header",
1383 "version": 1
1384 },
1385 {
1386 "name": "id",
1387 "required": true,
1388 "type": "fixed32",
1389 "version": 1
1390 }
1391 ]
1392 },
1393 {
1394 "name": "sendable-room-invitation",
1395 "namespace": "keet",
1396 "compact": false,
1397 "flagsPosition": -1,
1398 "fields": [
1399 {
1400 "name": "mailbox",
1401 "required": true,
1402 "type": "fixed32",
1403 "version": 1
1404 },
1405 {
1406 "name": "invitationSeed",
1407 "required": true,
1408 "type": "fixed32",
1409 "version": 1
1410 },
1411 {
1412 "name": "anchor",
1413 "required": true,
1414 "type": "@keet/head",
1415 "version": 1
1416 }
1417 ]
1418 },
1419 {
1420 "name": "sendable-identity-invitation",
1421 "namespace": "keet",
1422 "compact": false,
1423 "flagsPosition": -1,
1424 "fields": [
1425 {
1426 "name": "mailbox",
1427 "required": true,
1428 "type": "fixed32",
1429 "version": 1
1430 },
1431 {
1432 "name": "invitationSeed",
1433 "required": true,
1434 "type": "fixed32",
1435 "version": 1
1436 },
1437 {
1438 "name": "anchor",
1439 "required": true,
1440 "type": "@keet/head",
1441 "version": 1
1442 },
1443 {
1444 "name": "identityPublicKey",
1445 "required": true,
1446 "type": "@keet/member-key",
1447 "version": 1
1448 }
1449 ]
1450 },
1451 {
1452 "name": "sendable-contact-invitation",
1453 "namespace": "keet",
1454 "compact": false,
1455 "flagsPosition": -1,
1456 "fields": [
1457 {
1458 "name": "mailbox",
1459 "required": true,
1460 "type": "fixed32",
1461 "version": 1
1462 }
1463 ]
1464 },
1465 {
1466 "name": "sendable-invitation",
1467 "namespace": "keet",
1468 "compact": false,
1469 "flagsPosition": 0,
1470 "fields": [
1471 {
1472 "name": "room",
1473 "type": "@keet/sendable-room-invitation",
1474 "version": 1
1475 },
1476 {
1477 "name": "identity",
1478 "type": "@keet/sendable-identity-invitation",
1479 "version": 1
1480 },
1481 {
1482 "name": "contact",
1483 "type": "@keet/sendable-contact-invitation",
1484 "version": 1
1485 },
1486 {
1487 "name": "readonly",
1488 "type": "@keet/readonly-room-invitation",
1489 "version": 6
1490 },
1491 {
1492 "name": "additionalNodes",
1493 "array": true,
1494 "type": "ipv4Address",
1495 "version": 11
1496 },
1497 {
1498 "name": "buildType",
1499 "type": "@keet/build-type",
1500 "version": 20
1501 }
1502 ]
1503 },
1504 {
1505 "name": "add-device-operation",
1506 "namespace": "keet",
1507 "compact": false,
1508 "flagsPosition": -1,
1509 "fields": [
1510 {
1511 "name": "header",
1512 "required": true,
1513 "type": "@keet/operation-header",
1514 "version": 1
1515 },
1516 {
1517 "name": "blindRequest",
1518 "required": true,
1519 "type": "buffer",
1520 "version": 1
1521 }
1522 ]
1523 },
1524 {
1525 "name": "update-device-operation",
1526 "namespace": "keet",
1527 "compact": false,
1528 "flagsPosition": 1,
1529 "fields": [
1530 {
1531 "name": "header",
1532 "required": true,
1533 "type": "@keet/operation-header",
1534 "version": 1
1535 },
1536 {
1537 "name": "profile",
1538 "type": "@keet/device-profile",
1539 "version": 1
1540 }
1541 ]
1542 },
1543 {
1544 "name": "start-indexing-operation",
1545 "namespace": "keet",
1546 "compact": false,
1547 "flagsPosition": -1,
1548 "fields": []
1549 },
1550 {
1551 "name": "stop-indexing-operation",
1552 "namespace": "keet",
1553 "compact": false,
1554 "flagsPosition": -1,
1555 "fields": []
1556 },
1557 {
1558 "name": "join-request",
1559 "namespace": "keet",
1560 "compact": false,
1561 "flagsPosition": -1,
1562 "fields": [
1563 {
1564 "name": "deviceKey",
1565 "required": true,
1566 "type": "@keet/device-key",
1567 "version": 1
1568 },
1569 {
1570 "name": "id",
1571 "required": true,
1572 "type": "@keet/invitation-id",
1573 "version": 1
1574 },
1575 {
1576 "name": "request",
1577 "required": true,
1578 "type": "@keet/device-request-with-invitation",
1579 "version": 1
1580 }
1581 ]
1582 },
1583 {
1584 "name": "accept-join-request-operation",
1585 "namespace": "keet",
1586 "compact": false,
1587 "flagsPosition": 2,
1588 "fields": [
1589 {
1590 "name": "header",
1591 "required": true,
1592 "type": "@keet/operation-header",
1593 "version": 1
1594 },
1595 {
1596 "name": "deviceKey",
1597 "required": true,
1598 "type": "@keet/device-key",
1599 "version": 1
1600 },
1601 {
1602 "name": "identity",
1603 "type": "@keet/device-response-identity",
1604 "version": 1
1605 }
1606 ]
1607 },
1608 {
1609 "name": "reject-join-request-operation",
1610 "namespace": "keet",
1611 "compact": false,
1612 "flagsPosition": -1,
1613 "fields": [
1614 {
1615 "name": "header",
1616 "required": true,
1617 "type": "@keet/operation-header",
1618 "version": 1
1619 },
1620 {
1621 "name": "deviceKey",
1622 "required": true,
1623 "type": "@keet/device-key",
1624 "version": 1
1625 }
1626 ]
1627 },
1628 {
1629 "name": "member",
1630 "namespace": "keet",
1631 "compact": false,
1632 "flagsPosition": -1,
1633 "fields": [
1634 {
1635 "name": "key",
1636 "required": true,
1637 "type": "@keet/member-key",
1638 "version": 1
1639 },
1640 {
1641 "name": "status",
1642 "required": true,
1643 "type": "@keet/member-status",
1644 "version": 1
1645 },
1646 {
1647 "name": "profile",
1648 "required": true,
1649 "type": "@keet/member-profile",
1650 "version": 1
1651 }
1652 ]
1653 },
1654 {
1655 "name": "full-member",
1656 "namespace": "keet",
1657 "compact": false,
1658 "flagsPosition": 3,
1659 "fields": [
1660 {
1661 "name": "key",
1662 "required": true,
1663 "type": "@keet/member-key",
1664 "version": 1
1665 },
1666 {
1667 "name": "status",
1668 "required": true,
1669 "type": "@keet/member-status",
1670 "version": 1
1671 },
1672 {
1673 "name": "profile",
1674 "required": true,
1675 "type": "@keet/member-profile",
1676 "version": 1
1677 },
1678 {
1679 "name": "proofs",
1680 "type": "@keet/member-proofs",
1681 "version": 1
1682 }
1683 ]
1684 },
1685 {
1686 "name": "member-proofs",
1687 "namespace": "keet",
1688 "compact": false,
1689 "flagsPosition": 1,
1690 "fields": [
1691 {
1692 "name": "key",
1693 "required": true,
1694 "type": "@keet/member-key",
1695 "version": 1
1696 },
1697 {
1698 "name": "profileAttestation",
1699 "type": "buffer",
1700 "version": 1
1701 },
1702 {
1703 "name": "latestReceipt",
1704 "type": "buffer",
1705 "version": 1
1706 }
1707 ]
1708 },
1709 {
1710 "name": "update-member-operation",
1711 "namespace": "keet",
1712 "compact": false,
1713 "flagsPosition": -1,
1714 "fields": [
1715 {
1716 "name": "header",
1717 "required": true,
1718 "type": "@keet/operation-header",
1719 "version": 1
1720 },
1721 {
1722 "name": "member",
1723 "required": true,
1724 "type": "@keet/member-update",
1725 "version": 1
1726 }
1727 ]
1728 },
1729 {
1730 "name": "change-member-status-operation",
1731 "namespace": "keet",
1732 "compact": false,
1733 "flagsPosition": -1,
1734 "fields": [
1735 {
1736 "name": "header",
1737 "required": true,
1738 "type": "@keet/operation-header",
1739 "version": 1
1740 },
1741 {
1742 "name": "memberKey",
1743 "required": true,
1744 "type": "@keet/member-key",
1745 "version": 1
1746 },
1747 {
1748 "name": "key",
1749 "required": true,
1750 "type": "uint",
1751 "version": 1
1752 },
1753 {
1754 "name": "status",
1755 "required": true,
1756 "type": "@keet/member-moderation-status",
1757 "version": 1
1758 }
1759 ]
1760 },
1761 {
1762 "name": "change-member-role-operation",
1763 "namespace": "keet",
1764 "compact": false,
1765 "flagsPosition": 2,
1766 "fields": [
1767 {
1768 "name": "header",
1769 "required": true,
1770 "type": "@keet/operation-header",
1771 "version": 1
1772 },
1773 {
1774 "name": "key",
1775 "required": true,
1776 "type": "@keet/member-key",
1777 "version": 1
1778 },
1779 {
1780 "name": "isModerator",
1781 "type": "bool",
1782 "version": 1
1783 },
1784 {
1785 "name": "isAdmin",
1786 "type": "bool",
1787 "version": 1
1788 }
1789 ]
1790 },
1791 {
1792 "name": "remove-member-operation",
1793 "namespace": "keet",
1794 "compact": false,
1795 "flagsPosition": -1,
1796 "fields": [
1797 {
1798 "name": "header",
1799 "required": true,
1800 "type": "@keet/operation-header",
1801 "version": 1
1802 },
1803 {
1804 "name": "key",
1805 "required": true,
1806 "type": "@keet/member-key",
1807 "version": 1
1808 }
1809 ]
1810 },
1811 {
1812 "name": "member-activity",
1813 "namespace": "keet",
1814 "compact": false,
1815 "flagsPosition": -1,
1816 "fields": [
1817 {
1818 "name": "key",
1819 "required": true,
1820 "type": "@keet/member-key",
1821 "version": 1
1822 },
1823 {
1824 "name": "mentions",
1825 "required": true,
1826 "type": "uint",
1827 "version": 1
1828 }
1829 ]
1830 },
1831 {
1832 "name": "member-joined-event",
1833 "namespace": "keet",
1834 "compact": false,
1835 "flagsPosition": 0,
1836 "fields": [
1837 {
1838 "name": "memberKey",
1839 "type": "@keet/member-key",
1840 "version": 1
1841 }
1842 ]
1843 },
1844 {
1845 "name": "member-left-event",
1846 "namespace": "keet",
1847 "compact": false,
1848 "flagsPosition": 0,
1849 "fields": [
1850 {
1851 "name": "memberKey",
1852 "type": "@keet/member-key",
1853 "version": 1
1854 }
1855 ]
1856 },
1857 {
1858 "name": "title-changed-chat-event",
1859 "namespace": "keet",
1860 "compact": false,
1861 "flagsPosition": 0,
1862 "fields": [
1863 {
1864 "name": "from",
1865 "type": "string",
1866 "version": 1
1867 },
1868 {
1869 "name": "to",
1870 "type": "string",
1871 "version": 1
1872 }
1873 ]
1874 },
1875 {
1876 "name": "chat-event",
1877 "namespace": "keet",
1878 "compact": false,
1879 "flagsPosition": 0,
1880 "fields": [
1881 {
1882 "name": "memberJoined",
1883 "type": "@keet/member-joined-event",
1884 "version": 1
1885 },
1886 {
1887 "name": "memberLeft",
1888 "type": "@keet/member-left-event",
1889 "version": 1
1890 },
1891 {
1892 "name": "titleChanged",
1893 "type": "@keet/title-changed-chat-event",
1894 "version": 1
1895 },
1896 {
1897 "name": "callStarted",
1898 "type": "bool",
1899 "version": 1
1900 },
1901 {
1902 "name": "callHangup",
1903 "type": "bool",
1904 "version": 1
1905 },
1906 {
1907 "name": "callMissed",
1908 "type": "bool",
1909 "version": 1
1910 },
1911 {
1912 "name": "roomAvatarChanged",
1913 "type": "bool",
1914 "version": 3
1915 },
1916 {
1917 "name": "invitationCreated",
1918 "type": "bool",
1919 "version": 3
1920 },
1921 {
1922 "name": "memberRemoved",
1923 "type": "@keet/member-removed-event",
1924 "version": 3
1925 },
1926 {
1927 "name": "locationShared",
1928 "type": "@keet/location-shared-event",
1929 "version": 18
1930 }
1931 ]
1932 },
1933 {
1934 "name": "sendable-event",
1935 "namespace": "keet",
1936 "compact": false,
1937 "flagsPosition": 0,
1938 "fields": [
1939 {
1940 "name": "callStarted",
1941 "type": "bool",
1942 "version": 1
1943 },
1944 {
1945 "name": "callHangup",
1946 "type": "bool",
1947 "version": 1
1948 },
1949 {
1950 "name": "callMissed",
1951 "type": "bool",
1952 "version": 1
1953 },
1954 {
1955 "name": "locationShared",
1956 "type": "@keet/location-shared-event",
1957 "version": 18
1958 }
1959 ]
1960 },
1961 {
1962 "name": "display-range",
1963 "namespace": "keet",
1964 "compact": false,
1965 "flagsPosition": -1,
1966 "fields": [
1967 {
1968 "name": "start",
1969 "required": true,
1970 "type": "uint",
1971 "version": 1
1972 },
1973 {
1974 "name": "length",
1975 "required": true,
1976 "type": "uint",
1977 "version": 1
1978 }
1979 ]
1980 },
1981 {
1982 "name": "display-content-range",
1983 "namespace": "keet",
1984 "compact": false,
1985 "flagsPosition": -1,
1986 "fields": [
1987 {
1988 "name": "range",
1989 "required": true,
1990 "type": "@keet/display-range",
1991 "version": 1
1992 },
1993 {
1994 "name": "content",
1995 "required": true,
1996 "type": "string",
1997 "version": 1
1998 }
1999 ]
2000 },
2001 {
2002 "name": "mention-display-item",
2003 "namespace": "keet",
2004 "compact": false,
2005 "flagsPosition": -1,
2006 "fields": [
2007 {
2008 "name": "range",
2009 "required": true,
2010 "type": "@keet/display-range",
2011 "version": 1
2012 },
2013 {
2014 "name": "memberKey",
2015 "required": true,
2016 "type": "@keet/member-key",
2017 "version": 1
2018 }
2019 ]
2020 },
2021 {
2022 "name": "link-preview",
2023 "namespace": "keet",
2024 "compact": false,
2025 "flagsPosition": 0,
2026 "fields": [
2027 {
2028 "name": "title",
2029 "type": "string",
2030 "version": 1
2031 },
2032 {
2033 "name": "description",
2034 "type": "string",
2035 "version": 1
2036 },
2037 {
2038 "name": "file",
2039 "type": "@keet/file",
2040 "version": 1
2041 },
2042 {
2043 "name": "files",
2044 "array": true,
2045 "type": "uint",
2046 "version": 7
2047 }
2048 ]
2049 },
2050 {
2051 "name": "display-link-item",
2052 "namespace": "keet",
2053 "compact": false,
2054 "flagsPosition": 2,
2055 "fields": [
2056 {
2057 "name": "range",
2058 "required": true,
2059 "type": "@keet/display-range",
2060 "version": 1
2061 },
2062 {
2063 "name": "url",
2064 "required": true,
2065 "type": "string",
2066 "version": 1
2067 },
2068 {
2069 "name": "preview",
2070 "type": "@keet/link-preview",
2071 "version": 1
2072 }
2073 ]
2074 },
2075 {
2076 "name": "display",
2077 "namespace": "keet",
2078 "compact": false,
2079 "flagsPosition": 0,
2080 "fields": [
2081 {
2082 "name": "mention",
2083 "array": true,
2084 "type": "@keet/mention-display-item",
2085 "version": 1
2086 },
2087 {
2088 "name": "httpLink",
2089 "array": true,
2090 "type": "@keet/display-link-item",
2091 "version": 1
2092 },
2093 {
2094 "name": "pearLink",
2095 "array": true,
2096 "type": "@keet/display-link-item",
2097 "version": 1
2098 },
2099 {
2100 "name": "bold",
2101 "array": true,
2102 "type": "@keet/display-range",
2103 "version": 1
2104 },
2105 {
2106 "name": "italic",
2107 "array": true,
2108 "type": "@keet/display-range",
2109 "version": 1
2110 },
2111 {
2112 "name": "code",
2113 "array": true,
2114 "type": "@keet/display-range",
2115 "version": 1
2116 },
2117 {
2118 "name": "emoji",
2119 "array": true,
2120 "type": "@keet/display-content-range",
2121 "version": 1
2122 },
2123 {
2124 "name": "codeBlock",
2125 "array": true,
2126 "type": "@keet/display-range",
2127 "version": 1
2128 },
2129 {
2130 "name": "strike",
2131 "array": true,
2132 "type": "@keet/display-range",
2133 "version": 1
2134 },
2135 {
2136 "name": "translation",
2137 "array": true,
2138 "type": "@keet/translation-display-item",
2139 "version": 11
2140 }
2141 ]
2142 },
2143 {
2144 "name": "oplog-message",
2145 "namespace": "keet",
2146 "compact": false,
2147 "flagsPosition": 0,
2148 "fields": [
2149 {
2150 "name": "text",
2151 "type": "string",
2152 "version": 1
2153 },
2154 {
2155 "name": "files",
2156 "array": true,
2157 "type": "@keet/file",
2158 "version": 1
2159 },
2160 {
2161 "name": "display",
2162 "type": "@keet/display",
2163 "version": 1
2164 },
2165 {
2166 "name": "replyTo",
2167 "type": "@keet/oplog-id",
2168 "version": 1
2169 },
2170 {
2171 "name": "parent",
2172 "type": "@keet/oplog-id",
2173 "version": 1
2174 },
2175 {
2176 "name": "event",
2177 "type": "@keet/sendable-event",
2178 "version": 1
2179 },
2180 {
2181 "name": "forwarded",
2182 "type": "bool",
2183 "version": 18
2184 }
2185 ]
2186 },
2187 {
2188 "name": "index-message",
2189 "namespace": "keet",
2190 "compact": false,
2191 "flagsPosition": 0,
2192 "fields": [
2193 {
2194 "name": "text",
2195 "type": "string",
2196 "version": 1
2197 },
2198 {
2199 "name": "files",
2200 "array": true,
2201 "type": "uint",
2202 "version": 1
2203 },
2204 {
2205 "name": "display",
2206 "type": "@keet/display",
2207 "version": 1
2208 },
2209 {
2210 "name": "replyTo",
2211 "type": "@keet/oplog-id",
2212 "version": 1
2213 },
2214 {
2215 "name": "parent",
2216 "type": "@keet/oplog-id",
2217 "version": 1
2218 },
2219 {
2220 "name": "forwarded",
2221 "type": "bool",
2222 "version": 18
2223 }
2224 ]
2225 },
2226 {
2227 "name": "full-index-message",
2228 "namespace": "keet",
2229 "compact": false,
2230 "flagsPosition": 0,
2231 "fields": [
2232 {
2233 "name": "text",
2234 "type": "string",
2235 "version": 1
2236 },
2237 {
2238 "name": "files",
2239 "array": true,
2240 "type": "@keet/file",
2241 "version": 1
2242 },
2243 {
2244 "name": "display",
2245 "type": "@keet/display",
2246 "version": 1
2247 },
2248 {
2249 "name": "replyTo",
2250 "type": "@keet/oplog-id",
2251 "version": 1
2252 },
2253 {
2254 "name": "parent",
2255 "type": "@keet/oplog-id",
2256 "version": 1
2257 },
2258 {
2259 "name": "forwarded",
2260 "type": "bool",
2261 "version": 18
2262 }
2263 ]
2264 },
2265 {
2266 "name": "message-status",
2267 "namespace": "keet",
2268 "compact": false,
2269 "flagsPosition": 0,
2270 "fields": [
2271 {
2272 "name": "isEdited",
2273 "type": "bool",
2274 "version": 1
2275 },
2276 {
2277 "name": "isDeleted",
2278 "type": "bool",
2279 "version": 1
2280 },
2281 {
2282 "name": "isPinned",
2283 "type": "bool",
2284 "version": 1
2285 }
2286 ]
2287 },
2288 {
2289 "name": "message-index-id",
2290 "namespace": "keet",
2291 "compact": true,
2292 "flagsPosition": -1,
2293 "fields": [
2294 {
2295 "name": "thread",
2296 "required": true,
2297 "type": "uint",
2298 "version": 1
2299 },
2300 {
2301 "name": "index",
2302 "required": true,
2303 "type": "uint",
2304 "version": 1
2305 }
2306 ]
2307 },
2308 {
2309 "name": "thread",
2310 "namespace": "keet",
2311 "compact": false,
2312 "flagsPosition": 2,
2313 "fields": [
2314 {
2315 "name": "id",
2316 "required": true,
2317 "type": "uint",
2318 "version": 1
2319 },
2320 {
2321 "name": "count",
2322 "required": true,
2323 "type": "uint",
2324 "version": 1
2325 },
2326 {
2327 "name": "parent",
2328 "type": "@keet/oplog-id",
2329 "version": 1
2330 },
2331 {
2332 "name": "stats",
2333 "type": "@keet/stats",
2334 "version": 1
2335 }
2336 ]
2337 },
2338 {
2339 "name": "chat-message-record",
2340 "namespace": "keet",
2341 "compact": false,
2342 "flagsPosition": 4,
2343 "fields": [
2344 {
2345 "name": "id",
2346 "required": true,
2347 "type": "@keet/message-index-id",
2348 "version": 1
2349 },
2350 {
2351 "name": "oplog",
2352 "required": true,
2353 "type": "@keet/oplog-id",
2354 "version": 1
2355 },
2356 {
2357 "name": "clock",
2358 "required": true,
2359 "type": "uint",
2360 "version": 1
2361 },
2362 {
2363 "name": "timestamp",
2364 "required": true,
2365 "type": "uint",
2366 "version": 1
2367 },
2368 {
2369 "name": "editedAt",
2370 "type": "uint",
2371 "version": 1
2372 },
2373 {
2374 "name": "status",
2375 "required": true,
2376 "type": "@keet/message-status",
2377 "version": 1
2378 },
2379 {
2380 "name": "message",
2381 "type": "@keet/index-message",
2382 "version": 1
2383 },
2384 {
2385 "name": "event",
2386 "type": "@keet/chat-event",
2387 "version": 1
2388 }
2389 ]
2390 },
2391 {
2392 "name": "full-chat-message-record",
2393 "namespace": "keet",
2394 "compact": false,
2395 "flagsPosition": 4,
2396 "fields": [
2397 {
2398 "name": "id",
2399 "required": true,
2400 "type": "@keet/message-index-id",
2401 "version": 1
2402 },
2403 {
2404 "name": "oplog",
2405 "required": true,
2406 "type": "@keet/oplog-id",
2407 "version": 1
2408 },
2409 {
2410 "name": "clock",
2411 "required": true,
2412 "type": "uint",
2413 "version": 1
2414 },
2415 {
2416 "name": "timestamp",
2417 "required": true,
2418 "type": "uint",
2419 "version": 1
2420 },
2421 {
2422 "name": "editedAt",
2423 "type": "uint",
2424 "version": 1
2425 },
2426 {
2427 "name": "status",
2428 "required": true,
2429 "type": "@keet/message-status",
2430 "version": 1
2431 },
2432 {
2433 "name": "message",
2434 "type": "@keet/full-index-message",
2435 "version": 1
2436 },
2437 {
2438 "name": "event",
2439 "type": "@keet/chat-event",
2440 "version": 1
2441 }
2442 ]
2443 },
2444 {
2445 "name": "add-chat-message-operation",
2446 "namespace": "keet",
2447 "compact": false,
2448 "flagsPosition": -1,
2449 "fields": [
2450 {
2451 "name": "header",
2452 "required": true,
2453 "type": "@keet/operation-header",
2454 "version": 1
2455 },
2456 {
2457 "name": "message",
2458 "required": true,
2459 "type": "@keet/oplog-message",
2460 "version": 1
2461 }
2462 ]
2463 },
2464 {
2465 "name": "remove-chat-message-operation",
2466 "namespace": "keet",
2467 "compact": false,
2468 "flagsPosition": -1,
2469 "fields": [
2470 {
2471 "name": "header",
2472 "required": true,
2473 "type": "@keet/operation-header",
2474 "version": 1
2475 },
2476 {
2477 "name": "oplog",
2478 "required": true,
2479 "type": "@keet/oplog-id",
2480 "version": 1
2481 }
2482 ]
2483 },
2484 {
2485 "name": "update-chat-message-operation",
2486 "namespace": "keet",
2487 "compact": false,
2488 "flagsPosition": -1,
2489 "fields": [
2490 {
2491 "name": "header",
2492 "required": true,
2493 "type": "@keet/operation-header",
2494 "version": 1
2495 },
2496 {
2497 "name": "oplog",
2498 "required": true,
2499 "type": "@keet/oplog-id",
2500 "version": 1
2501 },
2502 {
2503 "name": "message",
2504 "required": true,
2505 "type": "@keet/oplog-message",
2506 "version": 1
2507 }
2508 ]
2509 },
2510 {
2511 "name": "pin-chat-message-operation",
2512 "namespace": "keet",
2513 "compact": false,
2514 "flagsPosition": 2,
2515 "fields": [
2516 {
2517 "name": "header",
2518 "required": true,
2519 "type": "@keet/operation-header",
2520 "version": 1
2521 },
2522 {
2523 "name": "oplog",
2524 "required": true,
2525 "type": "@keet/oplog-id",
2526 "version": 1
2527 },
2528 {
2529 "name": "isPinned",
2530 "type": "bool",
2531 "version": 1
2532 }
2533 ]
2534 },
2535 {
2536 "name": "reaction",
2537 "namespace": "keet",
2538 "compact": false,
2539 "flagsPosition": -1,
2540 "fields": [
2541 {
2542 "name": "id",
2543 "required": true,
2544 "type": "@keet/message-index-id",
2545 "version": 1
2546 },
2547 {
2548 "name": "sender",
2549 "required": true,
2550 "type": "@keet/member-key",
2551 "version": 1
2552 },
2553 {
2554 "name": "clock",
2555 "required": true,
2556 "type": "uint",
2557 "version": 1
2558 },
2559 {
2560 "name": "reaction",
2561 "required": true,
2562 "type": "string",
2563 "version": 1
2564 }
2565 ]
2566 },
2567 {
2568 "name": "reactions-summary",
2569 "namespace": "keet",
2570 "compact": false,
2571 "flagsPosition": -1,
2572 "fields": [
2573 {
2574 "name": "text",
2575 "required": true,
2576 "type": "string",
2577 "version": 1
2578 },
2579 {
2580 "name": "count",
2581 "required": true,
2582 "type": "uint",
2583 "version": 1
2584 }
2585 ]
2586 },
2587 {
2588 "name": "reactions-digest",
2589 "namespace": "keet",
2590 "compact": false,
2591 "flagsPosition": 3,
2592 "fields": [
2593 {
2594 "name": "id",
2595 "required": true,
2596 "type": "@keet/message-index-id",
2597 "version": 1
2598 },
2599 {
2600 "name": "total",
2601 "required": true,
2602 "type": "uint",
2603 "version": 1
2604 },
2605 {
2606 "name": "reactions",
2607 "required": true,
2608 "array": true,
2609 "type": "@keet/reactions-summary",
2610 "version": 1
2611 },
2612 {
2613 "name": "editedAt",
2614 "type": "uint",
2615 "version": 11
2616 }
2617 ]
2618 },
2619 {
2620 "name": "add-reaction-operation",
2621 "namespace": "keet",
2622 "compact": false,
2623 "flagsPosition": -1,
2624 "fields": [
2625 {
2626 "name": "header",
2627 "required": true,
2628 "type": "@keet/operation-header",
2629 "version": 1
2630 },
2631 {
2632 "name": "oplog",
2633 "required": true,
2634 "type": "@keet/oplog-id",
2635 "version": 1
2636 },
2637 {
2638 "name": "reaction",
2639 "required": true,
2640 "type": "string",
2641 "version": 1
2642 }
2643 ]
2644 },
2645 {
2646 "name": "remove-reaction-operation",
2647 "namespace": "keet",
2648 "compact": false,
2649 "flagsPosition": -1,
2650 "fields": [
2651 {
2652 "name": "header",
2653 "required": true,
2654 "type": "@keet/operation-header",
2655 "version": 1
2656 },
2657 {
2658 "name": "oplog",
2659 "required": true,
2660 "type": "@keet/oplog-id",
2661 "version": 1
2662 },
2663 {
2664 "name": "reaction",
2665 "required": true,
2666 "type": "string",
2667 "version": 1
2668 }
2669 ]
2670 },
2671 {
2672 "name": "update-room-config-operation",
2673 "namespace": "keet",
2674 "compact": false,
2675 "flagsPosition": -1,
2676 "fields": [
2677 {
2678 "name": "header",
2679 "required": true,
2680 "type": "@keet/operation-header",
2681 "version": 1
2682 },
2683 {
2684 "name": "key",
2685 "required": true,
2686 "type": "uint",
2687 "version": 1
2688 },
2689 {
2690 "name": "config",
2691 "required": true,
2692 "type": "@keet/room-config",
2693 "version": 1
2694 }
2695 ]
2696 },
2697 {
2698 "name": "group-member",
2699 "namespace": "keet",
2700 "compact": false,
2701 "flagsPosition": 2,
2702 "fields": [
2703 {
2704 "name": "memberKey",
2705 "required": true,
2706 "type": "@keet/member-key",
2707 "version": 1
2708 },
2709 {
2710 "name": "displayName",
2711 "required": true,
2712 "type": "string",
2713 "version": 1
2714 },
2715 {
2716 "name": "avatar",
2717 "type": "@keet/image-file",
2718 "version": 1
2719 }
2720 ]
2721 },
2722 {
2723 "name": "user-registry-info",
2724 "namespace": "keet",
2725 "compact": false,
2726 "flagsPosition": 1,
2727 "fields": [
2728 {
2729 "name": "key",
2730 "required": true,
2731 "type": "@keet/core-key",
2732 "version": 1
2733 },
2734 {
2735 "name": "username",
2736 "type": "string",
2737 "version": 1
2738 }
2739 ]
2740 },
2741 {
2742 "name": "room-identity",
2743 "namespace": "keet",
2744 "compact": false,
2745 "flagsPosition": 1,
2746 "fields": [
2747 {
2748 "name": "publicKey",
2749 "required": true,
2750 "type": "@keet/member-key",
2751 "version": 1
2752 },
2753 {
2754 "name": "discoveryCoreKey",
2755 "type": "@keet/core-key",
2756 "version": 1
2757 },
2758 {
2759 "name": "userRegistry",
2760 "type": "@keet/user-registry-info",
2761 "version": 1
2762 }
2763 ]
2764 },
2765 {
2766 "name": "genesis-operation",
2767 "namespace": "keet",
2768 "compact": false,
2769 "flagsPosition": 3,
2770 "fields": [
2771 {
2772 "name": "header",
2773 "required": true,
2774 "type": "@keet/operation-header",
2775 "version": 1
2776 },
2777 {
2778 "name": "digest",
2779 "required": true,
2780 "type": "@keet/system-digest",
2781 "version": 1
2782 },
2783 {
2784 "name": "capabilities",
2785 "required": true,
2786 "type": "@keet/room-seed",
2787 "version": 1
2788 },
2789 {
2790 "name": "config",
2791 "type": "@keet/room-config",
2792 "version": 1
2793 },
2794 {
2795 "name": "identity",
2796 "type": "@keet/room-identity",
2797 "version": 1
2798 },
2799 {
2800 "name": "bootstrapDevice",
2801 "type": "@keet/device-update",
2802 "version": 1
2803 },
2804 {
2805 "name": "initialMembers",
2806 "array": true,
2807 "type": "@keet/member-update",
2808 "version": 1
2809 }
2810 ]
2811 },
2812 {
2813 "name": "upgrade-operation",
2814 "namespace": "keet",
2815 "compact": false,
2816 "flagsPosition": -1,
2817 "fields": [
2818 {
2819 "name": "header",
2820 "required": true,
2821 "type": "@keet/operation-header",
2822 "version": 1
2823 },
2824 {
2825 "name": "version",
2826 "required": true,
2827 "type": "uint",
2828 "version": 1
2829 }
2830 ]
2831 },
2832 {
2833 "name": "update-system-settings-operation",
2834 "namespace": "keet",
2835 "compact": false,
2836 "flagsPosition": -1,
2837 "fields": [
2838 {
2839 "name": "header",
2840 "required": true,
2841 "type": "@keet/operation-header",
2842 "version": 1
2843 },
2844 {
2845 "name": "key",
2846 "required": true,
2847 "type": "uint",
2848 "version": 1
2849 },
2850 {
2851 "name": "settings",
2852 "required": true,
2853 "type": "@keet/system-settings",
2854 "version": 1
2855 }
2856 ]
2857 },
2858 {
2859 "name": "contact",
2860 "namespace": "keet-private-id",
2861 "compact": false,
2862 "flagsPosition": 2,
2863 "fields": [
2864 {
2865 "name": "memberKey",
2866 "required": true,
2867 "type": "@keet/member-key",
2868 "version": 1
2869 },
2870 {
2871 "name": "status",
2872 "required": true,
2873 "type": "@keet-private-id/contact-status",
2874 "version": 1
2875 },
2876 {
2877 "name": "mailbox",
2878 "type": "@keet/public-key",
2879 "version": 1
2880 },
2881 {
2882 "name": "roomKey",
2883 "type": "@keet/room-key",
2884 "version": 1
2885 }
2886 ]
2887 },
2888 {
2889 "name": "v3-room-migration-info",
2890 "namespace": "keet-private-id",
2891 "compact": false,
2892 "flagsPosition": -1,
2893 "fields": [
2894 {
2895 "name": "roomKey",
2896 "required": true,
2897 "type": "@keet/room-key",
2898 "version": 1
2899 },
2900 {
2901 "name": "encryptionKey",
2902 "required": true,
2903 "type": "@keet/encryption-key",
2904 "version": 1
2905 },
2906 {
2907 "name": "seed",
2908 "required": true,
2909 "type": "fixed32",
2910 "version": 1
2911 },
2912 {
2913 "name": "initiator",
2914 "required": true,
2915 "type": "@keet/head",
2916 "version": 1
2917 },
2918 {
2919 "name": "fastForwardTo",
2920 "required": true,
2921 "type": "fixed32",
2922 "version": 1
2923 }
2924 ]
2925 },
2926 {
2927 "name": "run-v3-migration-operation",
2928 "namespace": "keet-private-id",
2929 "compact": false,
2930 "flagsPosition": -1,
2931 "fields": [
2932 {
2933 "name": "sharedRooms",
2934 "required": true,
2935 "array": true,
2936 "type": "@keet-private-id/v3-room-migration-info",
2937 "version": 1
2938 },
2939 {
2940 "name": "blockedContacts",
2941 "required": true,
2942 "array": true,
2943 "type": "@keet/member-key",
2944 "version": 1
2945 }
2946 ]
2947 },
2948 {
2949 "name": "update-identity-operation",
2950 "namespace": "keet-private-id",
2951 "compact": false,
2952 "flagsPosition": -1,
2953 "fields": [
2954 {
2955 "name": "identity",
2956 "required": true,
2957 "type": "@keet/room-identity",
2958 "version": 1
2959 }
2960 ]
2961 },
2962 {
2963 "name": "counters",
2964 "namespace": "keet-private-id",
2965 "compact": false,
2966 "flagsPosition": -1,
2967 "fields": [
2968 {
2969 "name": "rooms",
2970 "required": true,
2971 "type": "uint",
2972 "version": 1
2973 },
2974 {
2975 "name": "contacts",
2976 "required": true,
2977 "type": "uint",
2978 "version": 1
2979 }
2980 ]
2981 },
2982 {
2983 "name": "stats",
2984 "namespace": "keet-private-id",
2985 "compact": false,
2986 "flagsPosition": -1,
2987 "fields": [
2988 {
2989 "name": "rooms",
2990 "required": true,
2991 "type": "uint",
2992 "version": 1
2993 },
2994 {
2995 "name": "contactRequests",
2996 "required": true,
2997 "type": "uint",
2998 "version": 1
2999 }
3000 ]
3001 },
3002 {
3003 "name": "add-entropy-operation",
3004 "namespace": "keet-private-id",
3005 "compact": false,
3006 "flagsPosition": -1,
3007 "fields": [
3008 {
3009 "name": "entropy",
3010 "required": true,
3011 "type": "buffer",
3012 "version": 1
3013 }
3014 ]
3015 },
3016 {
3017 "name": "pending-invitation-identity",
3018 "namespace": "keet-private-id",
3019 "compact": false,
3020 "flagsPosition": -1,
3021 "fields": [
3022 {
3023 "name": "publicKey",
3024 "required": true,
3025 "type": "@keet/member-key",
3026 "version": 1
3027 },
3028 {
3029 "name": "devicePublicKey",
3030 "required": true,
3031 "type": "@keet/public-key",
3032 "version": 1
3033 },
3034 {
3035 "name": "writerKey",
3036 "required": true,
3037 "type": "@keet/device-key",
3038 "version": 1
3039 }
3040 ]
3041 },
3042 {
3043 "name": "pending-invitation",
3044 "namespace": "keet-private-id",
3045 "compact": false,
3046 "flagsPosition": 6,
3047 "fields": [
3048 {
3049 "name": "id",
3050 "required": true,
3051 "type": "fixed32",
3052 "version": 1
3053 },
3054 {
3055 "name": "invitationSeed",
3056 "required": true,
3057 "type": "fixed32",
3058 "version": 1
3059 },
3060 {
3061 "name": "mailbox",
3062 "required": true,
3063 "type": "fixed32",
3064 "version": 1
3065 },
3066 {
3067 "name": "responseKeyPair",
3068 "required": true,
3069 "type": "@keet/signing-keypair",
3070 "version": 1
3071 },
3072 {
3073 "name": "initiator",
3074 "required": true,
3075 "type": "@keet/head",
3076 "version": 1
3077 },
3078 {
3079 "name": "inviter",
3080 "required": true,
3081 "type": "@keet/head",
3082 "version": 1
3083 },
3084 {
3085 "name": "identity",
3086 "type": "@keet-private-id/pending-invitation-identity",
3087 "version": 1
3088 },
3089 {
3090 "name": "buildType",
3091 "type": "@keet/build-type",
3092 "version": 20
3093 }
3094 ]
3095 },
3096 {
3097 "name": "resolve-pending-invitation-operation",
3098 "namespace": "keet-private-id",
3099 "compact": false,
3100 "flagsPosition": -1,
3101 "fields": [
3102 {
3103 "name": "header",
3104 "required": true,
3105 "type": "@keet/operation-header",
3106 "version": 1
3107 },
3108 {
3109 "name": "blindResponse",
3110 "required": true,
3111 "type": "buffer",
3112 "version": 1
3113 }
3114 ]
3115 },
3116 {
3117 "name": "add-pending-invitation-operation",
3118 "namespace": "keet-private-id",
3119 "compact": false,
3120 "flagsPosition": -1,
3121 "fields": [
3122 {
3123 "name": "header",
3124 "required": true,
3125 "type": "@keet/operation-header",
3126 "version": 1
3127 },
3128 {
3129 "name": "invitation",
3130 "required": true,
3131 "type": "@keet-private-id/pending-invitation",
3132 "version": 1
3133 }
3134 ]
3135 },
3136 {
3137 "name": "remove-pending-invitation-operation",
3138 "namespace": "keet-private-id",
3139 "compact": false,
3140 "flagsPosition": -1,
3141 "fields": [
3142 {
3143 "name": "header",
3144 "required": true,
3145 "type": "@keet/operation-header",
3146 "version": 1
3147 },
3148 {
3149 "name": "id",
3150 "required": true,
3151 "type": "fixed32",
3152 "version": 1
3153 }
3154 ]
3155 },
3156 {
3157 "name": "identity-swap",
3158 "namespace": "keet-private-id",
3159 "compact": false,
3160 "flagsPosition": 2,
3161 "fields": [
3162 {
3163 "name": "publicKey",
3164 "required": true,
3165 "type": "@keet/member-key",
3166 "version": 1
3167 },
3168 {
3169 "name": "devicePublicKey",
3170 "required": true,
3171 "type": "@keet/public-key",
3172 "version": 1
3173 },
3174 {
3175 "name": "privateProfileKey",
3176 "type": "@keet/room-key",
3177 "version": 1
3178 },
3179 {
3180 "name": "deviceKeyPair",
3181 "type": "@keet/signing-keypair",
3182 "version": 1
3183 },
3184 {
3185 "name": "deviceProof",
3186 "required": true,
3187 "type": "buffer",
3188 "version": 1
3189 }
3190 ]
3191 },
3192 {
3193 "name": "room-status",
3194 "namespace": "keet-private-id",
3195 "compact": false,
3196 "flagsPosition": 0,
3197 "fields": [
3198 {
3199 "name": "isActive",
3200 "type": "bool",
3201 "version": 1
3202 },
3203 {
3204 "name": "isFullyMuted",
3205 "type": "bool",
3206 "version": 1
3207 },
3208 {
3209 "name": "isMentionsOnlyMuted",
3210 "type": "bool",
3211 "version": 1
3212 },
3213 {
3214 "name": "isReadOnly",
3215 "type": "bool",
3216 "version": 9
3217 },
3218 {
3219 "name": "isFavorite",
3220 "type": "bool",
3221 "version": 18
3222 }
3223 ]
3224 },
3225 {
3226 "name": "room",
3227 "namespace": "keet-private-id",
3228 "compact": false,
3229 "flagsPosition": 5,
3230 "fields": [
3231 {
3232 "name": "roomKey",
3233 "required": true,
3234 "type": "@keet/room-key",
3235 "version": 1
3236 },
3237 {
3238 "name": "encryptionKey",
3239 "required": true,
3240 "type": "@keet/encryption-key",
3241 "version": 1
3242 },
3243 {
3244 "name": "mailbox",
3245 "required": true,
3246 "type": "@keet/public-key",
3247 "version": 1
3248 },
3249 {
3250 "name": "status",
3251 "required": true,
3252 "type": "@keet-private-id/room-status",
3253 "version": 1
3254 },
3255 {
3256 "name": "clock",
3257 "required": true,
3258 "type": "uint",
3259 "version": 1
3260 },
3261 {
3262 "name": "initiator",
3263 "type": "@keet/head",
3264 "version": 1
3265 },
3266 {
3267 "name": "fastForwardTo",
3268 "type": "fixed32",
3269 "version": 1
3270 },
3271 {
3272 "name": "identitySwap",
3273 "type": "@keet-private-id/identity-swap",
3274 "version": 1
3275 },
3276 {
3277 "name": "identitySwapV2",
3278 "type": "@keet-private-id/pending-invitation-identity",
3279 "version": 6
3280 },
3281 {
3282 "name": "contact",
3283 "type": "@keet/member-key",
3284 "version": 10
3285 }
3286 ]
3287 },
3288 {
3289 "name": "add-room-operation",
3290 "namespace": "keet-private-id",
3291 "compact": false,
3292 "flagsPosition": 4,
3293 "fields": [
3294 {
3295 "name": "header",
3296 "required": true,
3297 "type": "@keet/operation-header",
3298 "version": 1
3299 },
3300 {
3301 "name": "roomKey",
3302 "required": true,
3303 "type": "@keet/room-key",
3304 "version": 1
3305 },
3306 {
3307 "name": "encryptionKey",
3308 "required": true,
3309 "type": "@keet/encryption-key",
3310 "version": 1
3311 },
3312 {
3313 "name": "mailbox",
3314 "required": true,
3315 "type": "@keet/public-key",
3316 "version": 1
3317 },
3318 {
3319 "name": "fastForwardTo",
3320 "type": "fixed32",
3321 "version": 1
3322 },
3323 {
3324 "name": "initiator",
3325 "type": "@keet/head",
3326 "version": 1
3327 },
3328 {
3329 "name": "dm",
3330 "type": "@keet/member-key",
3331 "version": 1
3332 },
3333 {
3334 "name": "isReadOnly",
3335 "type": "bool",
3336 "version": 9
3337 }
3338 ]
3339 },
3340 {
3341 "name": "remove-room-operation",
3342 "namespace": "keet-private-id",
3343 "compact": false,
3344 "flagsPosition": -1,
3345 "fields": [
3346 {
3347 "name": "header",
3348 "required": true,
3349 "type": "@keet/operation-header",
3350 "version": 1
3351 },
3352 {
3353 "name": "discoveryKey",
3354 "required": true,
3355 "type": "@keet/room-discovery-key",
3356 "version": 1
3357 }
3358 ]
3359 },
3360 {
3361 "name": "update-room-status-operation",
3362 "namespace": "keet-private-id",
3363 "compact": false,
3364 "flagsPosition": -1,
3365 "fields": [
3366 {
3367 "name": "header",
3368 "required": true,
3369 "type": "@keet/operation-header",
3370 "version": 1
3371 },
3372 {
3373 "name": "roomKey",
3374 "required": true,
3375 "type": "@keet/room-key",
3376 "version": 1
3377 },
3378 {
3379 "name": "key",
3380 "required": true,
3381 "type": "uint",
3382 "version": 1
3383 },
3384 {
3385 "name": "status",
3386 "required": true,
3387 "type": "@keet-private-id/room-status",
3388 "version": 1
3389 }
3390 ]
3391 },
3392 {
3393 "name": "contact-status",
3394 "namespace": "keet-private-id",
3395 "compact": false,
3396 "flagsPosition": 0,
3397 "fields": [
3398 {
3399 "name": "isBlocked",
3400 "type": "bool",
3401 "version": 1
3402 }
3403 ]
3404 },
3405 {
3406 "name": "contact-record",
3407 "namespace": "keet-private-id",
3408 "compact": false,
3409 "flagsPosition": 3,
3410 "fields": [
3411 {
3412 "name": "memberKey",
3413 "required": true,
3414 "type": "@keet/member-key",
3415 "version": 1
3416 },
3417 {
3418 "name": "clock",
3419 "required": true,
3420 "type": "uint",
3421 "version": 1
3422 },
3423 {
3424 "name": "status",
3425 "required": true,
3426 "type": "@keet-private-id/contact-status",
3427 "version": 1
3428 },
3429 {
3430 "name": "mailbox",
3431 "type": "@keet/public-key",
3432 "version": 1
3433 },
3434 {
3435 "name": "roomKey",
3436 "type": "@keet/room-key",
3437 "version": 1
3438 }
3439 ]
3440 },
3441 {
3442 "name": "add-contact-operation",
3443 "namespace": "keet-private-id",
3444 "compact": false,
3445 "flagsPosition": -1,
3446 "fields": [
3447 {
3448 "name": "header",
3449 "required": true,
3450 "type": "@keet/operation-header",
3451 "version": 1
3452 },
3453 {
3454 "name": "contact",
3455 "required": true,
3456 "type": "@keet-private-id/contact",
3457 "version": 1
3458 }
3459 ]
3460 },
3461 {
3462 "name": "update-contact-status-operation",
3463 "namespace": "keet-private-id",
3464 "compact": false,
3465 "flagsPosition": -1,
3466 "fields": [
3467 {
3468 "name": "header",
3469 "required": true,
3470 "type": "@keet/operation-header",
3471 "version": 1
3472 },
3473 {
3474 "name": "memberKey",
3475 "required": true,
3476 "type": "@keet/member-key",
3477 "version": 1
3478 },
3479 {
3480 "name": "key",
3481 "required": true,
3482 "type": "uint",
3483 "version": 1
3484 },
3485 {
3486 "name": "status",
3487 "required": true,
3488 "type": "@keet-private-id/contact-status",
3489 "version": 1
3490 }
3491 ]
3492 },
3493 {
3494 "name": "remove-contact-operation",
3495 "namespace": "keet-private-id",
3496 "compact": false,
3497 "flagsPosition": -1,
3498 "fields": [
3499 {
3500 "name": "header",
3501 "required": true,
3502 "type": "@keet/operation-header",
3503 "version": 1
3504 },
3505 {
3506 "name": "memberKey",
3507 "required": true,
3508 "type": "@keet/member-key",
3509 "version": 1
3510 }
3511 ]
3512 },
3513 {
3514 "name": "contact-request-status",
3515 "namespace": "keet-private-id",
3516 "compact": false,
3517 "flagsPosition": 0,
3518 "fields": [
3519 {
3520 "name": "isPending",
3521 "type": "bool",
3522 "version": 1
3523 },
3524 {
3525 "name": "isAccepted",
3526 "type": "bool",
3527 "version": 1
3528 },
3529 {
3530 "name": "isRejected",
3531 "type": "bool",
3532 "version": 1
3533 },
3534 {
3535 "name": "isDiscarded",
3536 "type": "bool",
3537 "version": 1
3538 },
3539 {
3540 "name": "isSeen",
3541 "type": "bool",
3542 "version": 1
3543 }
3544 ]
3545 },
3546 {
3547 "name": "contact-request-body",
3548 "namespace": "keet-private-id",
3549 "compact": false,
3550 "flagsPosition": 3,
3551 "fields": [
3552 {
3553 "name": "sender",
3554 "required": true,
3555 "type": "@keet/member-update",
3556 "version": 1
3557 },
3558 {
3559 "name": "keys",
3560 "required": true,
3561 "type": "@keet/room-keys",
3562 "version": 1
3563 },
3564 {
3565 "name": "mailbox",
3566 "required": true,
3567 "type": "@keet/public-key",
3568 "version": 1
3569 },
3570 {
3571 "name": "message",
3572 "type": "string",
3573 "version": 1
3574 }
3575 ]
3576 },
3577 {
3578 "name": "contact-request",
3579 "namespace": "keet-private-id",
3580 "compact": false,
3581 "flagsPosition": -1,
3582 "fields": [
3583 {
3584 "name": "body",
3585 "required": true,
3586 "type": "@keet-private-id/contact-request-body",
3587 "version": 1
3588 },
3589 {
3590 "name": "attestation",
3591 "required": true,
3592 "type": "@keet/identity-attestation",
3593 "version": 1
3594 }
3595 ]
3596 },
3597 {
3598 "name": "contact-request-record",
3599 "namespace": "keet-private-id",
3600 "compact": false,
3601 "flagsPosition": 6,
3602 "fields": [
3603 {
3604 "name": "memberKey",
3605 "required": true,
3606 "type": "@keet/member-key",
3607 "version": 1
3608 },
3609 {
3610 "name": "clock",
3611 "required": true,
3612 "type": "uint",
3613 "version": 1
3614 },
3615 {
3616 "name": "sender",
3617 "required": true,
3618 "type": "@keet/member-profile",
3619 "version": 1
3620 },
3621 {
3622 "name": "status",
3623 "required": true,
3624 "type": "@keet-private-id/contact-request-status",
3625 "version": 1
3626 },
3627 {
3628 "name": "keys",
3629 "required": true,
3630 "type": "@keet/room-keys",
3631 "version": 1
3632 },
3633 {
3634 "name": "mailbox",
3635 "required": true,
3636 "type": "@keet/public-key",
3637 "version": 1
3638 },
3639 {
3640 "name": "message",
3641 "type": "string",
3642 "version": 1
3643 },
3644 {
3645 "name": "sentAt",
3646 "type": "uint",
3647 "version": 11
3648 }
3649 ]
3650 },
3651 {
3652 "name": "add-contact-request-operation",
3653 "namespace": "keet-private-id",
3654 "compact": false,
3655 "flagsPosition": -1,
3656 "fields": [
3657 {
3658 "name": "header",
3659 "required": true,
3660 "type": "@keet/operation-header",
3661 "version": 1
3662 },
3663 {
3664 "name": "blindRequest",
3665 "required": true,
3666 "type": "buffer",
3667 "version": 1
3668 }
3669 ]
3670 },
3671 {
3672 "name": "update-contact-request-status-operation",
3673 "namespace": "keet-private-id",
3674 "compact": false,
3675 "flagsPosition": 4,
3676 "fields": [
3677 {
3678 "name": "header",
3679 "required": true,
3680 "type": "@keet/operation-header",
3681 "version": 1
3682 },
3683 {
3684 "name": "memberKey",
3685 "required": true,
3686 "type": "@keet/member-key",
3687 "version": 1
3688 },
3689 {
3690 "name": "key",
3691 "required": true,
3692 "type": "uint",
3693 "version": 1
3694 },
3695 {
3696 "name": "status",
3697 "required": true,
3698 "type": "@keet-private-id/contact-request-status",
3699 "version": 1
3700 },
3701 {
3702 "name": "roomKey",
3703 "type": "@keet/room-key",
3704 "version": 10
3705 }
3706 ]
3707 },
3708 {
3709 "name": "profile-discovery-record-v1",
3710 "namespace": "keet-private-id",
3711 "compact": false,
3712 "flagsPosition": -1,
3713 "fields": [
3714 {
3715 "name": "timestamp",
3716 "required": true,
3717 "type": "uint",
3718 "version": 1
3719 },
3720 {
3721 "name": "key",
3722 "required": true,
3723 "type": "@keet/core-key",
3724 "version": 1
3725 },
3726 {
3727 "name": "mailbox",
3728 "required": true,
3729 "type": "@keet/public-key",
3730 "version": 1
3731 }
3732 ]
3733 },
3734 {
3735 "name": "profile-discovery-record",
3736 "namespace": "keet-private-id",
3737 "versions": [
3738 {
3739 "type": "@keet-private-id/profile-discovery-record-v1",
3740 "map": null,
3741 "version": 1
3742 }
3743 ]
3744 },
3745 {
3746 "name": "add-file-preview-operation",
3747 "namespace": "keet",
3748 "compact": false,
3749 "flagsPosition": 4,
3750 "fields": [
3751 {
3752 "name": "header",
3753 "required": true,
3754 "type": "@keet/operation-header",
3755 "version": 2
3756 },
3757 {
3758 "name": "oplog",
3759 "required": true,
3760 "type": "@keet/oplog-id",
3761 "version": 2
3762 },
3763 {
3764 "name": "index",
3765 "required": true,
3766 "type": "uint",
3767 "version": 2
3768 },
3769 {
3770 "name": "preview",
3771 "required": true,
3772 "type": "@keet/image-file",
3773 "version": 2
3774 },
3775 {
3776 "name": "displayType",
3777 "type": "@keet/display-type",
3778 "version": 7
3779 }
3780 ]
3781 },
3782 {
3783 "name": "member-removed-event",
3784 "namespace": "keet",
3785 "compact": false,
3786 "flagsPosition": 0,
3787 "fields": [
3788 {
3789 "name": "memberKey",
3790 "type": "@keet/member-key",
3791 "version": 3
3792 }
3793 ]
3794 },
3795 {
3796 "name": "member-contact-info",
3797 "namespace": "keet",
3798 "compact": false,
3799 "flagsPosition": -1,
3800 "fields": [
3801 {
3802 "name": "profile",
3803 "required": true,
3804 "type": "@keet/member-profile",
3805 "version": 4
3806 },
3807 {
3808 "name": "attestation",
3809 "required": true,
3810 "type": "@keet/identity-attestation",
3811 "version": 4
3812 }
3813 ]
3814 },
3815 {
3816 "name": "remove-device-operation",
3817 "namespace": "keet",
3818 "compact": false,
3819 "flagsPosition": -1,
3820 "fields": [
3821 {
3822 "name": "header",
3823 "required": true,
3824 "type": "@keet/operation-header",
3825 "version": 5
3826 },
3827 {
3828 "name": "key",
3829 "required": true,
3830 "type": "@keet/device-key",
3831 "version": 5
3832 }
3833 ]
3834 },
3835 {
3836 "name": "device-identity",
3837 "namespace": "keet",
3838 "compact": false,
3839 "flagsPosition": -1,
3840 "fields": [
3841 {
3842 "name": "deviceKey",
3843 "required": true,
3844 "type": "@keet/device-key",
3845 "version": 6
3846 },
3847 {
3848 "name": "privateProfileIdentity",
3849 "required": true,
3850 "type": "@keet/identity-attestation",
3851 "version": 6
3852 },
3853 {
3854 "name": "deviceProof",
3855 "required": true,
3856 "type": "buffer",
3857 "version": 6
3858 }
3859 ]
3860 },
3861 {
3862 "name": "readonly-room-invitation",
3863 "namespace": "keet",
3864 "compact": false,
3865 "flagsPosition": 3,
3866 "fields": [
3867 {
3868 "name": "roomKey",
3869 "required": true,
3870 "type": "fixed32",
3871 "version": 6
3872 },
3873 {
3874 "name": "encryptionKey",
3875 "required": true,
3876 "type": "fixed32",
3877 "version": 6
3878 },
3879 {
3880 "name": "seed",
3881 "required": true,
3882 "type": "fixed32",
3883 "version": 6
3884 },
3885 {
3886 "name": "fastForwardTo",
3887 "type": "fixed32",
3888 "version": 6
3889 }
3890 ]
3891 },
3892 {
3893 "name": "identity-swap-v2",
3894 "namespace": "keet-private-id",
3895 "compact": false,
3896 "flagsPosition": 3,
3897 "fields": [
3898 {
3899 "name": "publicKey",
3900 "required": true,
3901 "type": "@keet/member-key",
3902 "version": 6
3903 },
3904 {
3905 "name": "writerKey",
3906 "required": true,
3907 "type": "@keet/core-key",
3908 "version": 6
3909 },
3910 {
3911 "name": "devicePublicKey",
3912 "required": true,
3913 "type": "@keet/public-key",
3914 "version": 6
3915 },
3916 {
3917 "name": "privateProfileKey",
3918 "type": "@keet/room-key",
3919 "version": 6
3920 }
3921 ]
3922 },
3923 {
3924 "name": "activate-contact-room-operation",
3925 "namespace": "keet-private-id",
3926 "compact": false,
3927 "flagsPosition": -1,
3928 "fields": [
3929 {
3930 "name": "header",
3931 "required": true,
3932 "type": "@keet/operation-header",
3933 "version": 6
3934 },
3935 {
3936 "name": "memberKey",
3937 "required": true,
3938 "type": "@keet/member-key",
3939 "version": 6
3940 }
3941 ]
3942 },
3943 {
3944 "name": "display-type",
3945 "namespace": "keet",
3946 "offset": 1,
3947 "enum": [
3948 {
3949 "key": "HttpLink",
3950 "version": 7
3951 },
3952 {
3953 "key": "PearLink",
3954 "version": 7
3955 }
3956 ],
3957 "strings": false
3958 },
3959 {
3960 "name": "test-increment-operation",
3961 "namespace": "keet",
3962 "compact": false,
3963 "flagsPosition": -1,
3964 "fields": [
3965 {
3966 "name": "header",
3967 "required": true,
3968 "type": "@keet/operation-header",
3969 "version": 8
3970 },
3971 {
3972 "name": "value",
3973 "required": true,
3974 "type": "uint",
3975 "version": 8
3976 }
3977 ]
3978 },
3979 {
3980 "name": "test-collection-record-1",
3981 "namespace": "keet",
3982 "compact": false,
3983 "flagsPosition": -1,
3984 "fields": [
3985 {
3986 "name": "key",
3987 "required": true,
3988 "type": "uint",
3989 "version": 8
3990 },
3991 {
3992 "name": "value",
3993 "required": true,
3994 "type": "uint",
3995 "version": 8
3996 }
3997 ]
3998 },
3999 {
4000 "name": "migrate-abi-operation",
4001 "namespace": "keet",
4002 "compact": false,
4003 "flagsPosition": 3,
4004 "fields": [
4005 {
4006 "name": "header",
4007 "required": true,
4008 "type": "@keet/operation-header",
4009 "version": 10
4010 },
4011 {
4012 "name": "from",
4013 "required": true,
4014 "type": "uint",
4015 "version": 10
4016 },
4017 {
4018 "name": "to",
4019 "required": true,
4020 "type": "uint",
4021 "version": 10
4022 },
4023 {
4024 "name": "buildType",
4025 "type": "@keet/build-type",
4026 "version": 20
4027 }
4028 ]
4029 },
4030 {
4031 "name": "system-settings-keys",
4032 "namespace": "keet",
4033 "offset": 1,
4034 "enum": [
4035 {
4036 "key": "RoomType",
4037 "version": 10
4038 },
4039 {
4040 "key": "IsExperimental",
4041 "version": 10
4042 },
4043 {
4044 "key": "IsJoiningDisabled",
4045 "version": 10
4046 },
4047 {
4048 "key": "IsAppendingDisabled",
4049 "version": 10
4050 },
4051 {
4052 "key": "IsCallingDisabled",
4053 "version": 10
4054 },
4055 {
4056 "key": "IsMembershipEventsDisabled",
4057 "version": 10
4058 },
4059 {
4060 "key": "IsAttachmentsDisabled",
4061 "version": 19
4062 },
4063 {
4064 "key": "IsLinksDisabled",
4065 "version": 19
4066 }
4067 ],
4068 "strings": false
4069 },
4070 {
4071 "name": "room-supported-language",
4072 "namespace": "keet",
4073 "offset": 1,
4074 "enum": [
4075 {
4076 "key": "en",
4077 "version": 11
4078 },
4079 {
4080 "key": "it",
4081 "version": 11
4082 },
4083 {
4084 "key": "ru",
4085 "version": 11
4086 },
4087 {
4088 "key": "es",
4089 "version": 11
4090 },
4091 {
4092 "key": "de",
4093 "version": 11
4094 }
4095 ],
4096 "strings": true
4097 },
4098 {
4099 "name": "translation-display-item",
4100 "namespace": "keet",
4101 "compact": false,
4102 "flagsPosition": -1,
4103 "fields": [
4104 {
4105 "name": "range",
4106 "required": true,
4107 "type": "@keet/display-range",
4108 "version": 11
4109 },
4110 {
4111 "name": "language",
4112 "required": true,
4113 "type": "@keet/room-supported-language",
4114 "version": 11
4115 },
4116 {
4117 "name": "text",
4118 "required": true,
4119 "type": "string",
4120 "version": 11
4121 }
4122 ]
4123 },
4124 {
4125 "name": "unreads",
4126 "namespace": "keet-private-id",
4127 "compact": false,
4128 "flagsPosition": -1,
4129 "fields": [
4130 {
4131 "name": "deviceKey",
4132 "required": true,
4133 "type": "@keet/device-key",
4134 "version": 12
4135 },
4136 {
4137 "name": "key",
4138 "required": true,
4139 "type": "@keet/core-key",
4140 "version": 12
4141 }
4142 ]
4143 },
4144 {
4145 "name": "add-unreads-key-operation",
4146 "namespace": "keet-private-id",
4147 "compact": false,
4148 "flagsPosition": -1,
4149 "fields": [
4150 {
4151 "name": "header",
4152 "required": true,
4153 "type": "@keet/operation-header",
4154 "version": 12
4155 },
4156 {
4157 "name": "key",
4158 "required": true,
4159 "type": "@keet/core-key",
4160 "version": 12
4161 }
4162 ]
4163 },
4164 {
4165 "name": "remove-unreads-key-operation",
4166 "namespace": "keet-private-id",
4167 "compact": false,
4168 "flagsPosition": -1,
4169 "fields": [
4170 {
4171 "name": "header",
4172 "required": true,
4173 "type": "@keet/operation-header",
4174 "version": 12
4175 },
4176 {
4177 "name": "key",
4178 "required": true,
4179 "type": "@keet/core-key",
4180 "version": 12
4181 }
4182 ]
4183 },
4184 {
4185 "name": "label-type",
4186 "namespace": "keet",
4187 "offset": 1,
4188 "enum": [
4189 {
4190 "key": "Flag",
4191 "version": 13
4192 }
4193 ],
4194 "strings": false
4195 },
4196 {
4197 "name": "chat-label",
4198 "namespace": "keet",
4199 "compact": false,
4200 "flagsPosition": -1,
4201 "fields": [
4202 {
4203 "name": "id",
4204 "required": true,
4205 "type": "@keet/message-index-id",
4206 "version": 13
4207 },
4208 {
4209 "name": "sender",
4210 "required": true,
4211 "type": "@keet/member-key",
4212 "version": 13
4213 },
4214 {
4215 "name": "clock",
4216 "required": true,
4217 "type": "uint",
4218 "version": 13
4219 },
4220 {
4221 "name": "label",
4222 "required": true,
4223 "type": "@keet/label-type",
4224 "version": 13
4225 }
4226 ]
4227 },
4228 {
4229 "name": "add-chat-label-operation",
4230 "namespace": "keet",
4231 "compact": false,
4232 "flagsPosition": -1,
4233 "fields": [
4234 {
4235 "name": "header",
4236 "required": true,
4237 "type": "@keet/operation-header",
4238 "version": 13
4239 },
4240 {
4241 "name": "oplog",
4242 "required": true,
4243 "type": "@keet/oplog-id",
4244 "version": 13
4245 },
4246 {
4247 "name": "label",
4248 "required": true,
4249 "type": "@keet/label-type",
4250 "version": 13
4251 }
4252 ]
4253 },
4254 {
4255 "name": "remove-chat-label-operation",
4256 "namespace": "keet",
4257 "compact": false,
4258 "flagsPosition": -1,
4259 "fields": [
4260 {
4261 "name": "header",
4262 "required": true,
4263 "type": "@keet/operation-header",
4264 "version": 13
4265 },
4266 {
4267 "name": "oplog",
4268 "required": true,
4269 "type": "@keet/oplog-id",
4270 "version": 13
4271 },
4272 {
4273 "name": "label",
4274 "required": true,
4275 "type": "@keet/label-type",
4276 "version": 13
4277 }
4278 ]
4279 },
4280 {
4281 "name": "chat-label-summary",
4282 "namespace": "keet",
4283 "compact": false,
4284 "flagsPosition": -1,
4285 "fields": [
4286 {
4287 "name": "label",
4288 "required": true,
4289 "type": "@keet/label-type",
4290 "version": 13
4291 },
4292 {
4293 "name": "count",
4294 "required": true,
4295 "type": "uint",
4296 "version": 13
4297 }
4298 ]
4299 },
4300 {
4301 "name": "chat-label-digest",
4302 "namespace": "keet",
4303 "compact": false,
4304 "flagsPosition": 4,
4305 "fields": [
4306 {
4307 "name": "id",
4308 "required": true,
4309 "type": "@keet/message-index-id",
4310 "version": 13
4311 },
4312 {
4313 "name": "total",
4314 "required": true,
4315 "type": "uint",
4316 "version": 13
4317 },
4318 {
4319 "name": "labels",
4320 "required": true,
4321 "array": true,
4322 "type": "@keet/chat-label-summary",
4323 "version": 13
4324 },
4325 {
4326 "name": "editedAt",
4327 "required": true,
4328 "type": "uint",
4329 "version": 13
4330 },
4331 {
4332 "name": "flagsClock",
4333 "type": "uint",
4334 "version": 15
4335 },
4336 {
4337 "name": "version",
4338 "type": "uint",
4339 "version": 15
4340 },
4341 {
4342 "name": "isDeleted",
4343 "type": "bool",
4344 "version": 16
4345 }
4346 ]
4347 },
4348 {
4349 "name": "update-read-length-operation",
4350 "namespace": "keet",
4351 "compact": false,
4352 "flagsPosition": -1,
4353 "fields": [
4354 {
4355 "name": "header",
4356 "required": true,
4357 "type": "@keet/operation-header",
4358 "version": 13
4359 },
4360 {
4361 "name": "length",
4362 "required": true,
4363 "type": "uint",
4364 "version": 13
4365 }
4366 ]
4367 },
4368 {
4369 "name": "read-length",
4370 "namespace": "keet",
4371 "compact": false,
4372 "flagsPosition": -1,
4373 "fields": [
4374 {
4375 "name": "memberKey",
4376 "required": true,
4377 "type": "@keet/member-key",
4378 "version": 13
4379 },
4380 {
4381 "name": "length",
4382 "required": true,
4383 "type": "uint",
4384 "version": 13
4385 }
4386 ]
4387 },
4388 {
4389 "name": "tmp-removed-member",
4390 "namespace": "keet",
4391 "compact": false,
4392 "flagsPosition": -1,
4393 "fields": [
4394 {
4395 "name": "key",
4396 "required": true,
4397 "type": "@keet/member-key",
4398 "version": 13
4399 }
4400 ]
4401 },
4402 {
4403 "name": "settings",
4404 "namespace": "keet-private-id",
4405 "compact": false,
4406 "flagsPosition": 0,
4407 "fields": [
4408 {
4409 "name": "disableReadReceipts",
4410 "type": "bool",
4411 "version": 13
4412 }
4413 ]
4414 },
4415 {
4416 "name": "user-settings-key",
4417 "namespace": "keet-private-id",
4418 "offset": 1,
4419 "enum": [
4420 {
4421 "key": "disableReadReceipts",
4422 "version": 13
4423 }
4424 ],
4425 "strings": true
4426 },
4427 {
4428 "name": "update-settings-operation",
4429 "namespace": "keet-private-id",
4430 "compact": false,
4431 "flagsPosition": -1,
4432 "fields": [
4433 {
4434 "name": "header",
4435 "required": true,
4436 "type": "@keet/operation-header",
4437 "version": 13
4438 },
4439 {
4440 "name": "key",
4441 "required": true,
4442 "type": "@keet-private-id/user-settings-key",
4443 "version": 13
4444 },
4445 {
4446 "name": "settings",
4447 "required": true,
4448 "type": "@keet-private-id/settings",
4449 "version": 13
4450 }
4451 ]
4452 },
4453 {
4454 "name": "member-label-type",
4455 "namespace": "keet",
4456 "offset": 1,
4457 "enum": [
4458 {
4459 "key": "Flag",
4460 "version": 17
4461 }
4462 ],
4463 "strings": false
4464 },
4465 {
4466 "name": "member-label",
4467 "namespace": "keet",
4468 "compact": false,
4469 "flagsPosition": -1,
4470 "fields": [
4471 {
4472 "name": "key",
4473 "required": true,
4474 "type": "@keet/member-key",
4475 "version": 17
4476 },
4477 {
4478 "name": "sender",
4479 "required": true,
4480 "type": "@keet/member-key",
4481 "version": 17
4482 },
4483 {
4484 "name": "clock",
4485 "required": true,
4486 "type": "uint",
4487 "version": 17
4488 },
4489 {
4490 "name": "label",
4491 "required": true,
4492 "type": "@keet/member-label-type",
4493 "version": 17
4494 }
4495 ]
4496 },
4497 {
4498 "name": "add-member-label-operation",
4499 "namespace": "keet",
4500 "compact": false,
4501 "flagsPosition": -1,
4502 "fields": [
4503 {
4504 "name": "header",
4505 "required": true,
4506 "type": "@keet/operation-header",
4507 "version": 17
4508 },
4509 {
4510 "name": "key",
4511 "required": true,
4512 "type": "@keet/member-key",
4513 "version": 17
4514 },
4515 {
4516 "name": "label",
4517 "required": true,
4518 "type": "@keet/member-label-type",
4519 "version": 17
4520 }
4521 ]
4522 },
4523 {
4524 "name": "member-label-summary",
4525 "namespace": "keet",
4526 "compact": false,
4527 "flagsPosition": -1,
4528 "fields": [
4529 {
4530 "name": "label",
4531 "required": true,
4532 "type": "@keet/member-label-type",
4533 "version": 17
4534 },
4535 {
4536 "name": "count",
4537 "required": true,
4538 "type": "uint",
4539 "version": 17
4540 }
4541 ]
4542 },
4543 {
4544 "name": "member-label-digest",
4545 "namespace": "keet",
4546 "compact": false,
4547 "flagsPosition": -1,
4548 "fields": [
4549 {
4550 "name": "key",
4551 "required": true,
4552 "type": "@keet/member-key",
4553 "version": 17
4554 },
4555 {
4556 "name": "total",
4557 "required": true,
4558 "type": "uint",
4559 "version": 17
4560 },
4561 {
4562 "name": "labels",
4563 "required": true,
4564 "array": true,
4565 "type": "@keet/member-label-summary",
4566 "version": 17
4567 },
4568 {
4569 "name": "editedAt",
4570 "required": true,
4571 "type": "uint",
4572 "version": 17
4573 },
4574 {
4575 "name": "flagsClock",
4576 "required": true,
4577 "type": "uint",
4578 "version": 17
4579 }
4580 ]
4581 },
4582 {
4583 "name": "location-shared-event",
4584 "namespace": "keet",
4585 "compact": false,
4586 "flagsPosition": -1,
4587 "fields": [
4588 {
4589 "name": "latitude",
4590 "required": true,
4591 "type": "float64",
4592 "version": 18
4593 },
4594 {
4595 "name": "longitude",
4596 "required": true,
4597 "type": "float64",
4598 "version": 18
4599 }
4600 ]
4601 },
4602 {
4603 "name": "move-indexer-operation",
4604 "namespace": "keet",
4605 "compact": false,
4606 "flagsPosition": -1,
4607 "fields": [
4608 {
4609 "name": "header",
4610 "required": true,
4611 "type": "@keet/operation-header",
4612 "version": 18
4613 },
4614 {
4615 "name": "deviceKey",
4616 "required": true,
4617 "type": "@keet/device-key",
4618 "version": 18
4619 },
4620 {
4621 "name": "fromDeviceKey",
4622 "required": true,
4623 "type": "@keet/device-key",
4624 "version": 18
4625 }
4626 ]
4627 },
4628 {
4629 "name": "start-call",
4630 "namespace": "keet",
4631 "compact": false,
4632 "flagsPosition": 3,
4633 "fields": [
4634 {
4635 "name": "header",
4636 "required": true,
4637 "type": "@keet/operation-header",
4638 "version": 19
4639 },
4640 {
4641 "name": "callKey",
4642 "required": true,
4643 "type": "fixed32",
4644 "version": 19
4645 },
4646 {
4647 "name": "encryptionKey",
4648 "required": true,
4649 "type": "@keet/encryption-key",
4650 "version": 19
4651 },
4652 {
4653 "name": "streams",
4654 "array": true,
4655 "type": "@keet/core-key",
4656 "version": 19
4657 },
4658 {
4659 "name": "discoveryKey",
4660 "type": "@keet/room-discovery-key",
4661 "version": 19
4662 },
4663 {
4664 "name": "version",
4665 "type": "uint",
4666 "version": 19
4667 }
4668 ]
4669 },
4670 {
4671 "name": "join-call",
4672 "namespace": "keet",
4673 "compact": false,
4674 "flagsPosition": 2,
4675 "fields": [
4676 {
4677 "name": "header",
4678 "required": true,
4679 "type": "@keet/operation-header",
4680 "version": 19
4681 },
4682 {
4683 "name": "callKey",
4684 "required": true,
4685 "type": "fixed32",
4686 "version": 19
4687 },
4688 {
4689 "name": "streams",
4690 "array": true,
4691 "type": "@keet/core-key",
4692 "version": 19
4693 }
4694 ]
4695 },
4696 {
4697 "name": "leave-call",
4698 "namespace": "keet",
4699 "compact": false,
4700 "flagsPosition": -1,
4701 "fields": [
4702 {
4703 "name": "header",
4704 "required": true,
4705 "type": "@keet/operation-header",
4706 "version": 19
4707 },
4708 {
4709 "name": "callKey",
4710 "required": true,
4711 "type": "fixed32",
4712 "version": 19
4713 }
4714 ]
4715 },
4716 {
4717 "name": "end-call",
4718 "namespace": "keet",
4719 "compact": false,
4720 "flagsPosition": -1,
4721 "fields": [
4722 {
4723 "name": "header",
4724 "required": true,
4725 "type": "@keet/operation-header",
4726 "version": 19
4727 },
4728 {
4729 "name": "callKey",
4730 "required": true,
4731 "type": "fixed32",
4732 "version": 19
4733 }
4734 ]
4735 },
4736 {
4737 "name": "add-call-stream",
4738 "namespace": "keet",
4739 "compact": false,
4740 "flagsPosition": -1,
4741 "fields": [
4742 {
4743 "name": "header",
4744 "required": true,
4745 "type": "@keet/operation-header",
4746 "version": 19
4747 },
4748 {
4749 "name": "callKey",
4750 "required": true,
4751 "type": "fixed32",
4752 "version": 19
4753 },
4754 {
4755 "name": "streamKey",
4756 "required": true,
4757 "type": "@keet/core-key",
4758 "version": 19
4759 }
4760 ]
4761 },
4762 {
4763 "name": "remove-call-stream",
4764 "namespace": "keet",
4765 "compact": false,
4766 "flagsPosition": -1,
4767 "fields": [
4768 {
4769 "name": "header",
4770 "required": true,
4771 "type": "@keet/operation-header",
4772 "version": 19
4773 },
4774 {
4775 "name": "callKey",
4776 "required": true,
4777 "type": "fixed32",
4778 "version": 19
4779 },
4780 {
4781 "name": "streamKey",
4782 "required": true,
4783 "type": "@keet/core-key",
4784 "version": 19
4785 }
4786 ]
4787 },
4788 {
4789 "name": "call-record",
4790 "namespace": "keet",
4791 "compact": false,
4792 "flagsPosition": 3,
4793 "fields": [
4794 {
4795 "name": "callKey",
4796 "required": true,
4797 "type": "fixed32",
4798 "version": 19
4799 },
4800 {
4801 "name": "encryptionKey",
4802 "required": true,
4803 "type": "@keet/encryption-key",
4804 "version": 19
4805 },
4806 {
4807 "name": "createdAt",
4808 "required": true,
4809 "type": "uint",
4810 "version": 19
4811 },
4812 {
4813 "name": "endedAt",
4814 "type": "uint",
4815 "version": 19
4816 },
4817 {
4818 "name": "discoveryKey",
4819 "type": "@keet/room-discovery-key",
4820 "version": 19
4821 },
4822 {
4823 "name": "version",
4824 "type": "uint",
4825 "version": 19
4826 }
4827 ]
4828 },
4829 {
4830 "name": "call-member-record",
4831 "namespace": "keet",
4832 "compact": false,
4833 "flagsPosition": -1,
4834 "fields": [
4835 {
4836 "name": "callKey",
4837 "required": true,
4838 "type": "fixed32",
4839 "version": 19
4840 },
4841 {
4842 "name": "memberKey",
4843 "required": true,
4844 "type": "@keet/member-key",
4845 "version": 19
4846 },
4847 {
4848 "name": "createdAt",
4849 "required": true,
4850 "type": "uint",
4851 "version": 19
4852 }
4853 ]
4854 },
4855 {
4856 "name": "call-device-record",
4857 "namespace": "keet",
4858 "compact": false,
4859 "flagsPosition": 4,
4860 "fields": [
4861 {
4862 "name": "callKey",
4863 "required": true,
4864 "type": "fixed32",
4865 "version": 19
4866 },
4867 {
4868 "name": "deviceKey",
4869 "required": true,
4870 "type": "@keet/device-key",
4871 "version": 19
4872 },
4873 {
4874 "name": "memberKey",
4875 "required": true,
4876 "type": "@keet/member-key",
4877 "version": 19
4878 },
4879 {
4880 "name": "createdAt",
4881 "required": true,
4882 "type": "uint",
4883 "version": 19
4884 },
4885 {
4886 "name": "swarmKey",
4887 "type": "@keet/swarm-key",
4888 "version": 19
4889 }
4890 ]
4891 },
4892 {
4893 "name": "call-stream-record",
4894 "namespace": "keet",
4895 "compact": false,
4896 "flagsPosition": -1,
4897 "fields": [
4898 {
4899 "name": "callKey",
4900 "required": true,
4901 "type": "fixed32",
4902 "version": 19
4903 },
4904 {
4905 "name": "deviceKey",
4906 "required": true,
4907 "type": "@keet/device-key",
4908 "version": 19
4909 },
4910 {
4911 "name": "streamKey",
4912 "required": true,
4913 "type": "buffer",
4914 "version": 19
4915 },
4916 {
4917 "name": "createdAt",
4918 "required": true,
4919 "type": "uint",
4920 "version": 19
4921 }
4922 ]
4923 },
4924 {
4925 "name": "build-type",
4926 "namespace": "keet",
4927 "offset": 1,
4928 "enum": [
4929 {
4930 "key": "Nightly",
4931 "version": 20
4932 },
4933 {
4934 "key": "Internal",
4935 "version": 20
4936 },
4937 {
4938 "key": "Production",
4939 "version": 20
4940 }
4941 ],
4942 "strings": true
4943 },
4944 {
4945 "name": "test-crash-operation",
4946 "namespace": "keet",
4947 "compact": false,
4948 "flagsPosition": -1,
4949 "fields": [
4950 {
4951 "name": "header",
4952 "required": true,
4953 "type": "@keet/operation-header",
4954 "version": 20
4955 }
4956 ]
4957 },
4958 {
4959 "name": "test-dispatch-error-operation",
4960 "namespace": "keet",
4961 "compact": false,
4962 "flagsPosition": -1,
4963 "fields": [
4964 {
4965 "name": "header",
4966 "required": true,
4967 "type": "@keet/operation-header",
4968 "version": 20
4969 }
4970 ]
4971 }
4972 ]
4973}
@holepunchto/keet-core/schema/spec/index.js +1 -0
……@@ -0,0 +1 @@
1module.exports={contract:{hyperschemaJson:require("./contract/hyperschema/schema.json"),hyperschema:require("./contract/hyperschema"),hyperdispatch:require("./contract/hyperdispatch"),hyperdb:require("./contract/hyperdb")},local:{hyperschema:require("./local/hyperschema"),hyperdb:require("./local/hyperdb")},config:{hyperschema:require("./config/hyperschema"),hyperconf:require("./config/hyperconf")},api:{hyperschema:require("./api/hyperschema"),hrpc:require("./api/hrpc")}};
@holepunchto/keet-core/schema/spec/local/hyperdb/db.json +701 -0
……@@ -0,0 +1,701 @@
1{
2 "version": 5,
3 "offset": 0,
4 "schema": [
5 {
6 "name": "stats",
7 "namespace": "local",
8 "id": 0,
9 "type": 1,
10 "version": 0,
11 "versionField": null,
12 "indexes": [],
13 "schema": "@local/stats",
14 "derived": false,
15 "key": [],
16 "trigger": null
17 },
18 {
19 "name": "migrations",
20 "namespace": "local",
21 "id": 1,
22 "type": 1,
23 "version": 0,
24 "versionField": null,
25 "indexes": [],
26 "schema": "@local/migration-status",
27 "derived": false,
28 "key": [],
29 "trigger": null
30 },
31 {
32 "name": "room-migration-stats",
33 "namespace": "local",
34 "id": 2,
35 "type": 1,
36 "version": 0,
37 "versionField": null,
38 "indexes": [],
39 "schema": "@local/room-migration-stats",
40 "derived": false,
41 "key": [],
42 "trigger": null
43 },
44 {
45 "name": "room-migrations",
46 "namespace": "local",
47 "id": 3,
48 "type": 1,
49 "version": 0,
50 "versionField": null,
51 "indexes": [
52 "@local/room-migrations-by-priority"
53 ],
54 "schema": "@local/room-migration",
55 "derived": false,
56 "key": [
57 "roomKey"
58 ],
59 "trigger": "roomMigrationsTrigger"
60 },
61 {
62 "name": "room-migrations-by-priority",
63 "namespace": "local",
64 "id": 4,
65 "type": 2,
66 "version": 0,
67 "collection": "@local/room-migrations",
68 "unique": false,
69 "deprecated": false,
70 "key": [
71 "priority"
72 ]
73 },
74 {
75 "name": "identity",
76 "namespace": "local",
77 "id": 5,
78 "type": 1,
79 "version": 0,
80 "versionField": null,
81 "indexes": [],
82 "schema": "@local/identity-record",
83 "derived": false,
84 "key": [],
85 "trigger": null
86 },
87 {
88 "name": "rooms",
89 "namespace": "local",
90 "id": 6,
91 "type": 1,
92 "version": 3,
93 "versionField": "version",
94 "indexes": [
95 "@local/rooms-by-discovery-key",
96 "@local/rooms-by-timestamp",
97 "@local/rooms-by-type-and-timestamp",
98 "@local/rooms-by-wakeup-topic",
99 "@local/rooms-by-mailbox",
100 "@local/rooms-by-discovery",
101 "@local/rooms-by-contact",
102 "@local/rooms-by-favorite-and-timestamp"
103 ],
104 "schema": "@local/room",
105 "derived": false,
106 "key": [
107 "roomKey"
108 ],
109 "trigger": "roomsTrigger"
110 },
111 {
112 "name": "rooms-by-discovery-key",
113 "namespace": "local",
114 "id": 7,
115 "type": 2,
116 "version": 0,
117 "collection": "@local/rooms",
118 "unique": true,
119 "deprecated": false,
120 "key": [
121 "discoveryKey"
122 ]
123 },
124 {
125 "name": "rooms-by-timestamp",
126 "namespace": "local",
127 "id": 8,
128 "type": 2,
129 "version": 0,
130 "collection": "@local/rooms",
131 "unique": false,
132 "deprecated": false,
133 "key": {
134 "type": {
135 "fields": [
136 {
137 "name": "timestamp",
138 "type": "uint"
139 }
140 ]
141 },
142 "map": "roomsByTimestampMap"
143 }
144 },
145 {
146 "name": "rooms-by-type-and-timestamp",
147 "namespace": "local",
148 "id": 9,
149 "type": 2,
150 "version": 0,
151 "collection": "@local/rooms",
152 "unique": false,
153 "deprecated": false,
154 "key": {
155 "type": {
156 "fields": [
157 {
158 "name": "type",
159 "type": "uint"
160 },
161 {
162 "name": "timestamp",
163 "type": "uint"
164 }
165 ]
166 },
167 "map": "roomsByTypeAndTimestampMap"
168 }
169 },
170 {
171 "name": "rooms-by-wakeup-topic",
172 "namespace": "local",
173 "id": 10,
174 "type": 2,
175 "version": 0,
176 "collection": "@local/rooms",
177 "unique": true,
178 "deprecated": false,
179 "key": [
180 "capabilities.wakeupTopic"
181 ]
182 },
183 {
184 "name": "rooms-by-mailbox",
185 "namespace": "local",
186 "id": 11,
187 "type": 2,
188 "version": 0,
189 "collection": "@local/rooms",
190 "unique": true,
191 "deprecated": false,
192 "key": [
193 "capabilities.mailboxKeyPair.publicKey"
194 ]
195 },
196 {
197 "name": "rooms-by-discovery",
198 "namespace": "local",
199 "id": 12,
200 "type": 2,
201 "version": 0,
202 "collection": "@local/rooms",
203 "unique": true,
204 "deprecated": false,
205 "key": [
206 "capabilities.discoveryKeyPair.publicKey"
207 ]
208 },
209 {
210 "name": "room-preferences",
211 "namespace": "local",
212 "id": 13,
213 "type": 1,
214 "version": 0,
215 "versionField": null,
216 "indexes": [],
217 "schema": "@local/room-preferences",
218 "derived": false,
219 "key": [
220 "roomKey"
221 ],
222 "trigger": null
223 },
224 {
225 "name": "writers",
226 "namespace": "local",
227 "id": 14,
228 "type": 1,
229 "version": 0,
230 "versionField": null,
231 "indexes": [
232 "@local/writers-by-wakeup-topic",
233 "@local/writers-by-room-key"
234 ],
235 "schema": "@local/writer",
236 "derived": false,
237 "key": [
238 "mailbox"
239 ],
240 "trigger": null
241 },
242 {
243 "name": "writers-by-wakeup-topic",
244 "namespace": "local",
245 "id": 15,
246 "type": 2,
247 "version": 0,
248 "collection": "@local/writers",
249 "unique": true,
250 "deprecated": false,
251 "key": {
252 "type": {
253 "fields": [
254 {
255 "name": "wakeupTopic",
256 "type": "@keet/room-discovery-key"
257 }
258 ]
259 },
260 "map": "writersByWakeupTopicMap"
261 }
262 },
263 {
264 "name": "writers-by-room-key",
265 "namespace": "local",
266 "id": 16,
267 "type": 2,
268 "version": 0,
269 "collection": "@local/writers",
270 "unique": true,
271 "deprecated": false,
272 "key": {
273 "type": {
274 "fields": [
275 {
276 "name": "roomKey",
277 "type": "@keet/room-key"
278 }
279 ]
280 },
281 "map": "writersByRoomKeyMap"
282 }
283 },
284 {
285 "name": "members",
286 "namespace": "local",
287 "id": 17,
288 "type": 1,
289 "version": 0,
290 "versionField": null,
291 "indexes": [],
292 "schema": "@local/member",
293 "derived": false,
294 "key": [
295 "key"
296 ],
297 "trigger": null
298 },
299 {
300 "name": "devices",
301 "namespace": "local",
302 "id": 18,
303 "type": 1,
304 "version": 0,
305 "versionField": null,
306 "indexes": [],
307 "schema": "@local/device",
308 "derived": false,
309 "key": [
310 "device.key"
311 ],
312 "trigger": null
313 },
314 {
315 "name": "contacts",
316 "namespace": "local",
317 "id": 19,
318 "type": 1,
319 "version": 0,
320 "versionField": null,
321 "indexes": [
322 "@local/blocked-contacts"
323 ],
324 "schema": "@keet-private-id/contact",
325 "derived": false,
326 "key": [
327 "memberKey"
328 ],
329 "trigger": null
330 },
331 {
332 "name": "blocked-contacts",
333 "namespace": "local",
334 "id": 20,
335 "type": 2,
336 "version": 0,
337 "collection": "@local/contacts",
338 "unique": true,
339 "deprecated": false,
340 "key": {
341 "type": {
342 "fields": [
343 {
344 "name": "memberKey",
345 "type": "@keet/member-key"
346 }
347 ]
348 },
349 "map": "blockedContactsMap"
350 }
351 },
352 {
353 "name": "tasks",
354 "namespace": "local",
355 "id": 21,
356 "type": 1,
357 "version": 0,
358 "versionField": null,
359 "indexes": [
360 "@local/tasks-by-type"
361 ],
362 "schema": "@local/task",
363 "derived": false,
364 "key": [
365 "priority",
366 "timestamp",
367 "type",
368 "discoveryKey"
369 ],
370 "trigger": null
371 },
372 {
373 "name": "tasks-by-type",
374 "namespace": "local",
375 "id": 22,
376 "type": 2,
377 "version": 0,
378 "collection": "@local/tasks",
379 "unique": true,
380 "deprecated": false,
381 "key": [
382 "type",
383 "discoveryKey"
384 ]
385 },
386 {
387 "name": "blob-files",
388 "namespace": "local",
389 "id": 23,
390 "type": 1,
391 "version": 4,
392 "versionField": "version",
393 "indexes": [
394 "@local/blob-files-by-room",
395 "@local/blob-files-by-last-accessed"
396 ],
397 "schema": "@local/file",
398 "derived": false,
399 "key": [
400 "file.pointer.externalBlob.key",
401 "file.pointer.externalBlob.blob.blockOffset"
402 ],
403 "trigger": null
404 },
405 {
406 "name": "drive-files",
407 "namespace": "local",
408 "id": 24,
409 "type": 1,
410 "version": 4,
411 "versionField": "version",
412 "indexes": [
413 "@local/drive-files-by-room",
414 "@local/drive-files-by-last-accessed"
415 ],
416 "schema": "@local/file",
417 "derived": false,
418 "key": [
419 "file.pointer.externalDrive.key",
420 "file.pointer.externalDrive.path",
421 "file.pointer.externalDrive.version"
422 ],
423 "trigger": null
424 },
425 {
426 "name": "blob-files-by-room",
427 "namespace": "local",
428 "id": 25,
429 "type": 2,
430 "version": 0,
431 "collection": "@local/blob-files",
432 "unique": false,
433 "deprecated": false,
434 "key": [
435 "roomKey"
436 ]
437 },
438 {
439 "name": "drive-files-by-room",
440 "namespace": "local",
441 "id": 26,
442 "type": 2,
443 "version": 0,
444 "collection": "@local/drive-files",
445 "unique": false,
446 "deprecated": false,
447 "key": [
448 "roomKey"
449 ]
450 },
451 {
452 "name": "background-sync",
453 "namespace": "local",
454 "id": 27,
455 "type": 1,
456 "version": 0,
457 "versionField": null,
458 "indexes": [
459 "@local/background-sync-by-dirty"
460 ],
461 "schema": "@local/background-sync-room",
462 "derived": false,
463 "key": [
464 "discoveryPublicKey"
465 ],
466 "trigger": null
467 },
468 {
469 "name": "background-sync-by-dirty",
470 "namespace": "local",
471 "id": 28,
472 "type": 2,
473 "version": 0,
474 "collection": "@local/background-sync",
475 "unique": false,
476 "deprecated": false,
477 "key": {
478 "type": {
479 "fields": [
480 {
481 "name": "timestamp",
482 "type": "uint"
483 }
484 ]
485 },
486 "map": "dirtyByTimestampMap"
487 }
488 },
489 {
490 "name": "writer-appends",
491 "namespace": "local",
492 "id": 29,
493 "type": 1,
494 "version": 0,
495 "versionField": null,
496 "indexes": [],
497 "schema": "@local/writer-append",
498 "derived": false,
499 "key": [
500 "key",
501 "responsePublicKey"
502 ],
503 "trigger": null
504 },
505 {
506 "name": "room-metadata",
507 "namespace": "local",
508 "id": 30,
509 "type": 1,
510 "version": 0,
511 "versionField": null,
512 "indexes": [],
513 "schema": "@local/room-metadata",
514 "derived": false,
515 "key": [
516 "roomKey"
517 ],
518 "trigger": null
519 },
520 {
521 "name": "debug",
522 "namespace": "local",
523 "id": 31,
524 "type": 1,
525 "version": 0,
526 "versionField": null,
527 "indexes": [],
528 "schema": "@local/debug",
529 "derived": false,
530 "key": [],
531 "trigger": null
532 },
533 {
534 "name": "rooms-by-contact",
535 "namespace": "local",
536 "id": 32,
537 "type": 2,
538 "version": 1,
539 "collection": "@local/rooms",
540 "unique": false,
541 "deprecated": false,
542 "key": {
543 "type": {
544 "fields": [
545 {
546 "name": "contact",
547 "type": "@keet/member-key"
548 }
549 ]
550 },
551 "map": "roomsByContactMap"
552 }
553 },
554 {
555 "name": "unreads",
556 "namespace": "local",
557 "id": 33,
558 "type": 1,
559 "version": 0,
560 "versionField": null,
561 "indexes": [],
562 "schema": "@local/unread",
563 "derived": false,
564 "key": [
565 "roomKey"
566 ],
567 "trigger": null
568 },
569 {
570 "name": "hyperdht",
571 "namespace": "local",
572 "id": 34,
573 "type": 1,
574 "version": 0,
575 "versionField": null,
576 "indexes": [],
577 "schema": "@local/hyperdht-record",
578 "derived": false,
579 "key": [],
580 "trigger": null
581 },
582 {
583 "name": "errors",
584 "namespace": "local",
585 "id": 35,
586 "type": 1,
587 "version": 0,
588 "versionField": null,
589 "indexes": [
590 "@local/errors-by-code"
591 ],
592 "schema": "@local/error-record",
593 "derived": false,
594 "key": [
595 "timestamp"
596 ],
597 "trigger": null
598 },
599 {
600 "name": "errors-by-code",
601 "namespace": "local",
602 "id": 36,
603 "type": 2,
604 "version": 0,
605 "collection": "@local/errors",
606 "unique": false,
607 "deprecated": false,
608 "key": [
609 "code"
610 ]
611 },
612 {
613 "name": "file-stats",
614 "namespace": "local",
615 "id": 37,
616 "type": 1,
617 "version": 2,
618 "versionField": null,
619 "indexes": [],
620 "schema": "@local/file-stats",
621 "derived": false,
622 "key": [
623 "roomKey"
624 ],
625 "trigger": null
626 },
627 {
628 "name": "rooms-by-favorite-and-timestamp",
629 "namespace": "local",
630 "id": 38,
631 "type": 2,
632 "version": 3,
633 "collection": "@local/rooms",
634 "unique": false,
635 "deprecated": false,
636 "key": {
637 "type": {
638 "fields": [
639 {
640 "name": "timestamp",
641 "type": "uint"
642 }
643 ]
644 },
645 "map": "roomsByFavoriteAndTimestampMap"
646 }
647 },
648 {
649 "name": "blob-files-by-last-accessed",
650 "namespace": "local",
651 "id": 39,
652 "type": 2,
653 "version": 4,
654 "collection": "@local/blob-files",
655 "unique": false,
656 "deprecated": false,
657 "key": [
658 "lastAccessed"
659 ]
660 },
661 {
662 "name": "drive-files-by-last-accessed",
663 "namespace": "local",
664 "id": 40,
665 "type": 2,
666 "version": 4,
667 "collection": "@local/drive-files",
668 "unique": false,
669 "deprecated": false,
670 "key": [
671 "lastAccessed"
672 ]
673 },
674 {
675 "name": "file-gc-info",
676 "namespace": "local",
677 "id": 41,
678 "type": 1,
679 "version": 4,
680 "versionField": null,
681 "indexes": [],
682 "schema": "@local/file-gc-info",
683 "derived": false,
684 "key": [],
685 "trigger": null
686 },
687 {
688 "name": "environment",
689 "namespace": "local",
690 "id": 42,
691 "type": 1,
692 "version": 5,
693 "versionField": null,
694 "indexes": [],
695 "schema": "@local/environment-record",
696 "derived": false,
697 "key": [],
698 "trigger": null
699 }
700 ]
701}
@holepunchto/keet-core/schema/spec/local/hyperdb/index.js +1 -0
……@@ -0,0 +1 @@
1const{IndexEncoder:e,c:n,b4a:t}=require("hyperdb/runtime"),{version:o,getEncoding:r,setVersion:c}=require("./messages.js"),l={schema:o,db:5},d=require("../../../../lib/core/hyperdb/local/local.js"),s=new e([],{prefix:0});function u(e){return[]}const i=r("@local/stats");function a(e,n,t){c(e);const o={start:0,end:t.byteLength,buffer:t};return i.decode(o)}function f(e){return{}}const y={name:"@local/stats",id:0,version:0,encodeKey:e=>s.encode([]),encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>s.encodeRange({gt:e?u(e):null,lt:n?u(n):null,gte:t?u(t):null,lte:o?u(o):null}),encodeValue(e,n,o){c(e);const r={start:0,end:0,buffer:null};return i.preencode(r,o),r.buffer=t.allocUnsafe(r.end),i.encode(r,o),r.buffer},trigger:null,reconstruct:a,reconstructKey:f,indexes:[],decodedVersion:0},g=new e([],{prefix:1});function p(e){return[]}const b=r("@local/migration-status");function m(e,n,t){c(e);const o={start:0,end:t.byteLength,buffer:t};return b.decode(o)}function K(e){return{}}const v={name:"@local/migrations",id:1,version:0,encodeKey:e=>g.encode([]),encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>g.encodeRange({gt:e?p(e):null,lt:n?p(n):null,gte:t?p(t):null,lte:o?p(o):null}),encodeValue(e,n,o){c(e);const r={start:0,end:0,buffer:null};return b.preencode(r,o),r.buffer=t.allocUnsafe(r.end),b.encode(r,o),r.buffer},trigger:null,reconstruct:m,reconstructKey:K,indexes:[],decodedVersion:0},x=new e([],{prefix:2});function h(e){return[]}const R=r("@local/room-migration-stats");function U(e,n,t){c(e);const o={start:0,end:t.byteLength,buffer:t};return R.decode(o)}function w(e){return{}}const F={name:"@local/room-migration-stats",id:2,version:0,encodeKey:e=>x.encode([]),encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>x.encodeRange({gt:e?h(e):null,lt:n?h(n):null,gte:t?h(t):null,lte:o?h(o):null}),encodeValue(e,n,o){c(e);const r={start:0,end:0,buffer:null};return R.preencode(r,o),r.buffer=t.allocUnsafe(r.end),R.encode(r,o),r.buffer},trigger:null,reconstruct:U,reconstructKey:w,indexes:[],decodedVersion:0},V=new e([e.BUFFER],{prefix:3});function k(e){const n=e.roomKey;return void 0===n?[]:[n]}const B=r("@local/room-migration/hyperdb#3"),I=d.roomMigrationsTrigger;function E(e,n,t){const o=V.decode(n);c(e);const r={start:0,end:t.byteLength,buffer:t},l=B.decode(r);return l.roomKey=o[0],l}function T(e){return{roomKey:V.decode(e)[0]}}const L={name:"@local/room-migrations",id:3,version:0,encodeKey(e){const n=[e.roomKey];return V.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>V.encodeRange({gt:e?k(e):null,lt:n?k(n):null,gte:t?k(t):null,lte:o?k(o):null}),encodeValue(e,n,o){c(e);const r={start:0,end:0,buffer:null};return B.preencode(r,o),r.buffer=t.allocUnsafe(r.end),B.encode(r,o),r.buffer},trigger:I,reconstruct:E,reconstructKey:T,indexes:[],decodedVersion:0},N=new e([e.UINT,e.BUFFER],{prefix:4});function D(e){const n=[],t=e.priority;if(void 0===t)return n;n.push(t);const o=e.roomKey;return void 0===o||n.push(o),n}const A={name:"@local/room-migrations-by-priority",version:0,id:4,encodeKey:e=>N.encode(D(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>N.encodeRange({gt:e?D(e):null,lt:n?D(n):null,gte:t?D(t):null,lte:o?D(o):null}),encodeValue:e=>A.collection.encodeKey(e),encodeIndexKeys:(e,n)=>[N.encode([e.priority,e.roomKey])],reconstruct:(e,n)=>n,offset:L.indexes.length,collection:L};L.indexes.push(A);const P=new e([],{prefix:5});function M(e){return[]}const O=r("@local/identity-record");function G(e,n,t){c(e);const o={start:0,end:t.byteLength,buffer:t};return O.decode(o)}function S(e){return{}}const q={name:"@local/identity",id:5,version:0,encodeKey:e=>P.encode([]),encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>P.encodeRange({gt:e?M(e):null,lt:n?M(n):null,gte:t?M(t):null,lte:o?M(o):null}),encodeValue(e,n,o){c(e);const r={start:0,end:0,buffer:null};return O.preencode(r,o),r.buffer=t.allocUnsafe(r.end),O.encode(r,o),r.buffer},trigger:null,reconstruct:G,reconstructKey:S,indexes:[],decodedVersion:0},C=new e([e.BUFFER],{prefix:6});function j(e){const n=e.roomKey;return void 0===n?[]:[n]}const W=r("@local/room/hyperdb#6"),z=d.roomsTrigger;function H(e,n,t){const o=C.decode(n);c(e);const r={start:0,end:t.byteLength,buffer:t},l=W.decode(r);return l.roomKey=o[0],Q.decodedVersion=l.version,l}function J(e){return{roomKey:C.decode(e)[0]}}const Q={name:"@local/rooms",id:6,version:3,encodeKey(e){const n=[e.roomKey];return C.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>C.encodeRange({gt:e?j(e):null,lt:n?j(n):null,gte:t?j(t):null,lte:o?j(o):null}),encodeValue(e,n,o){c(e);const r={start:0,end:0,buffer:null};return o.version=n,W.preencode(r,o),r.buffer=t.allocUnsafe(r.end),W.encode(r,o),r.buffer},trigger:z,reconstruct:H,reconstructKey:J,indexes:[],decodedVersion:0},X=new e([e.BUFFER],{prefix:7});function Y(e){const n=e.discoveryKey;return void 0===n?[]:[n]}const Z={name:"@local/rooms-by-discovery-key",version:0,id:7,encodeKey:e=>X.encode(Y(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>X.encodeRange({gt:e?Y(e):null,lt:n?Y(n):null,gte:t?Y(t):null,lte:o?Y(o):null}),encodeValue:e=>Z.collection.encodeKey(e),encodeIndexKeys:(e,n)=>[X.encode([e.discoveryKey])],reconstruct:(e,n)=>n,offset:Q.indexes.length,collection:Q};Q.indexes.push(Z);const $=new e([e.UINT,e.BUFFER],{prefix:8}),_=d.roomsByTimestampMap;function ee(e){const n=e.timestamp;return void 0===n?[]:[n]}const ne={name:"@local/rooms-by-timestamp",version:0,id:8,encodeKey:e=>$.encode(ee(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>$.encodeRange({gt:e?ee(e):null,lt:n?ee(n):null,gte:t?ee(t):null,lte:o?ee(o):null}),encodeValue:e=>ne.collection.encodeKey(e),encodeIndexKeys(e,n){const t=_(e,n),o=new Array(t.length);for(let n=0;n<t.length;n++){const r=t[n];o[n]=$.encode([r.timestamp,e.roomKey])}return o},reconstruct:(e,n)=>n,offset:Q.indexes.length,collection:Q};Q.indexes.push(ne);const te=new e([e.UINT,e.UINT,e.BUFFER],{prefix:9}),oe=d.roomsByTypeAndTimestampMap;function re(e){const n=[],t=e.type;if(void 0===t)return n;n.push(t);const o=e.timestamp;return void 0===o||n.push(o),n}const ce={name:"@local/rooms-by-type-and-timestamp",version:0,id:9,encodeKey:e=>te.encode(re(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>te.encodeRange({gt:e?re(e):null,lt:n?re(n):null,gte:t?re(t):null,lte:o?re(o):null}),encodeValue:e=>ce.collection.encodeKey(e),encodeIndexKeys(e,n){const t=oe(e,n),o=new Array(t.length);for(let n=0;n<t.length;n++){const r=t[n];o[n]=te.encode([r.type,r.timestamp,e.roomKey])}return o},reconstruct:(e,n)=>n,offset:Q.indexes.length,collection:Q};Q.indexes.push(ce);const le=new e([e.BUFFER],{prefix:10});function de(e){const n=e.capabilities?.wakeupTopic;return void 0===n?[]:[n]}const se={name:"@local/rooms-by-wakeup-topic",version:0,id:10,encodeKey:e=>le.encode(de(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>le.encodeRange({gt:e?de(e):null,lt:n?de(n):null,gte:t?de(t):null,lte:o?de(o):null}),encodeValue:e=>se.collection.encodeKey(e),encodeIndexKeys:(e,n)=>[le.encode([e.capabilities.wakeupTopic])],reconstruct:(e,n)=>n,offset:Q.indexes.length,collection:Q};Q.indexes.push(se);const ue=new e([e.BUFFER],{prefix:11});function ie(e){const n=e.capabilities?.mailboxKeyPair?.publicKey;return void 0===n?[]:[n]}const ae={name:"@local/rooms-by-mailbox",version:0,id:11,encodeKey:e=>ue.encode(ie(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>ue.encodeRange({gt:e?ie(e):null,lt:n?ie(n):null,gte:t?ie(t):null,lte:o?ie(o):null}),encodeValue:e=>ae.collection.encodeKey(e),encodeIndexKeys:(e,n)=>[ue.encode([e.capabilities.mailboxKeyPair.publicKey])],reconstruct:(e,n)=>n,offset:Q.indexes.length,collection:Q};Q.indexes.push(ae);const fe=new e([e.BUFFER],{prefix:12});function ye(e){const n=e.capabilities?.discoveryKeyPair?.publicKey;return void 0===n?[]:[n]}const ge={name:"@local/rooms-by-discovery",version:0,id:12,encodeKey:e=>fe.encode(ye(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>fe.encodeRange({gt:e?ye(e):null,lt:n?ye(n):null,gte:t?ye(t):null,lte:o?ye(o):null}),encodeValue:e=>ge.collection.encodeKey(e),encodeIndexKeys:(e,n)=>[fe.encode([e.capabilities.discoveryKeyPair.publicKey])],reconstruct:(e,n)=>n,offset:Q.indexes.length,collection:Q};Q.indexes.push(ge);const pe=new e([e.BUFFER],{prefix:13});function be(e){const n=e.roomKey;return void 0===n?[]:[n]}const me=r("@local/room-preferences/hyperdb#13");function Ke(e,n,t){const o=pe.decode(n);c(e);const r={start:0,end:t.byteLength,buffer:t},l=me.decode(r);return l.roomKey=o[0],l}function ve(e){return{roomKey:pe.decode(e)[0]}}const xe={name:"@local/room-preferences",id:13,version:0,encodeKey(e){const n=[e.roomKey];return pe.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>pe.encodeRange({gt:e?be(e):null,lt:n?be(n):null,gte:t?be(t):null,lte:o?be(o):null}),encodeValue(e,n,o){c(e);const r={start:0,end:0,buffer:null};return me.preencode(r,o),r.buffer=t.allocUnsafe(r.end),me.encode(r,o),r.buffer},trigger:null,reconstruct:Ke,reconstructKey:ve,indexes:[],decodedVersion:0},he=new e([e.BUFFER],{prefix:14});function Re(e){const n=e.mailbox;return void 0===n?[]:[n]}const Ue=r("@local/writer/hyperdb#14");function we(e,n,t){const o=he.decode(n);c(e);const r={start:0,end:t.byteLength,buffer:t},l=Ue.decode(r);return l.mailbox=o[0],l}function Fe(e){return{mailbox:he.decode(e)[0]}}const Ve={name:"@local/writers",id:14,version:0,encodeKey(e){const n=[e.mailbox];return he.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>he.encodeRange({gt:e?Re(e):null,lt:n?Re(n):null,gte:t?Re(t):null,lte:o?Re(o):null}),encodeValue(e,n,o){c(e);const r={start:0,end:0,buffer:null};return Ue.preencode(r,o),r.buffer=t.allocUnsafe(r.end),Ue.encode(r,o),r.buffer},trigger:null,reconstruct:we,reconstructKey:Fe,indexes:[],decodedVersion:0},ke=new e([e.BUFFER],{prefix:15}),Be=d.writersByWakeupTopicMap;function Ie(e){const n=e.wakeupTopic;return void 0===n?[]:[n]}const Ee={name:"@local/writers-by-wakeup-topic",version:0,id:15,encodeKey:e=>ke.encode(Ie(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>ke.encodeRange({gt:e?Ie(e):null,lt:n?Ie(n):null,gte:t?Ie(t):null,lte:o?Ie(o):null}),encodeValue:e=>Ee.collection.encodeKey(e),encodeIndexKeys(e,n){const t=Be(e,n),o=new Array(t.length);for(let e=0;e<t.length;e++){const n=t[e];o[e]=ke.encode([n.wakeupTopic])}return o},reconstruct:(e,n)=>n,offset:Ve.indexes.length,collection:Ve};Ve.indexes.push(Ee);const Te=new e([e.BUFFER],{prefix:16}),Le=d.writersByRoomKeyMap;function Ne(e){const n=e.roomKey;return void 0===n?[]:[n]}const De={name:"@local/writers-by-room-key",version:0,id:16,encodeKey:e=>Te.encode(Ne(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>Te.encodeRange({gt:e?Ne(e):null,lt:n?Ne(n):null,gte:t?Ne(t):null,lte:o?Ne(o):null}),encodeValue:e=>De.collection.encodeKey(e),encodeIndexKeys(e,n){const t=Le(e,n),o=new Array(t.length);for(let e=0;e<t.length;e++){const n=t[e];o[e]=Te.encode([n.roomKey])}return o},reconstruct:(e,n)=>n,offset:Ve.indexes.length,collection:Ve};Ve.indexes.push(De);const Ae=new e([e.BUFFER],{prefix:17});function Pe(e){const n=e.key;return void 0===n?[]:[n]}const Me=r("@local/member/hyperdb#17");function Oe(e,n,t){const o=Ae.decode(n);c(e);const r={start:0,end:t.byteLength,buffer:t},l=Me.decode(r);return l.key=o[0],l}function Ge(e){return{key:Ae.decode(e)[0]}}const Se={name:"@local/members",id:17,version:0,encodeKey(e){const n=[e.key];return Ae.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>Ae.encodeRange({gt:e?Pe(e):null,lt:n?Pe(n):null,gte:t?Pe(t):null,lte:o?Pe(o):null}),encodeValue(e,n,o){c(e);const r={start:0,end:0,buffer:null};return Me.preencode(r,o),r.buffer=t.allocUnsafe(r.end),Me.encode(r,o),r.buffer},trigger:null,reconstruct:Oe,reconstructKey:Ge,indexes:[],decodedVersion:0},qe=new e([e.BUFFER],{prefix:18});function Ce(e){const n=e.device?.key;return void 0===n?[]:[n]}const je=r("@local/device/hyperdb#18");function We(e,n,t){const o=qe.decode(n);c(e);const r={start:0,end:t.byteLength,buffer:t},l=je.decode(r);return l.device.key=o[0],l}function ze(e){return{device:{key:qe.decode(e)[0]}}}const He={name:"@local/devices",id:18,version:0,encodeKey(e){const n=[e.device.key];return qe.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>qe.encodeRange({gt:e?Ce(e):null,lt:n?Ce(n):null,gte:t?Ce(t):null,lte:o?Ce(o):null}),encodeValue(e,n,o){c(e);const r={start:0,end:0,buffer:null};return je.preencode(r,o),r.buffer=t.allocUnsafe(r.end),je.encode(r,o),r.buffer},trigger:null,reconstruct:We,reconstructKey:ze,indexes:[],decodedVersion:0},Je=new e([e.BUFFER],{prefix:19});function Qe(e){const n=e.memberKey;return void 0===n?[]:[n]}const Xe=r("@keet-private-id/contact/hyperdb#19");function Ye(e,n,t){const o=Je.decode(n);c(e);const r={start:0,end:t.byteLength,buffer:t},l=Xe.decode(r);return l.memberKey=o[0],l}function Ze(e){return{memberKey:Je.decode(e)[0]}}const $e={name:"@local/contacts",id:19,version:0,encodeKey(e){const n=[e.memberKey];return Je.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>Je.encodeRange({gt:e?Qe(e):null,lt:n?Qe(n):null,gte:t?Qe(t):null,lte:o?Qe(o):null}),encodeValue(e,n,o){c(e);const r={start:0,end:0,buffer:null};return Xe.preencode(r,o),r.buffer=t.allocUnsafe(r.end),Xe.encode(r,o),r.buffer},trigger:null,reconstruct:Ye,reconstructKey:Ze,indexes:[],decodedVersion:0},_e=new e([e.BUFFER],{prefix:20}),en=d.blockedContactsMap;function nn(e){const n=e.memberKey;return void 0===n?[]:[n]}const tn={name:"@local/blocked-contacts",version:0,id:20,encodeKey:e=>_e.encode(nn(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>_e.encodeRange({gt:e?nn(e):null,lt:n?nn(n):null,gte:t?nn(t):null,lte:o?nn(o):null}),encodeValue:e=>tn.collection.encodeKey(e),encodeIndexKeys(e,n){const t=en(e,n),o=new Array(t.length);for(let e=0;e<t.length;e++){const n=t[e];o[e]=_e.encode([n.memberKey])}return o},reconstruct:(e,n)=>n,offset:$e.indexes.length,collection:$e};$e.indexes.push(tn);const on=new e([e.UINT,e.UINT,e.UINT,e.BUFFER],{prefix:21});function rn(e){const n=[],t=e.priority;if(void 0===t)return n;n.push(t);const o=e.timestamp;if(void 0===o)return n;n.push(o);const r=e.type;if(void 0===r)return n;n.push(r);const c=e.discoveryKey;return void 0===c||n.push(c),n}const cn=r("@local/task/hyperdb#21");function ln(e,n,t){const o=on.decode(n);c(e);const r={start:0,end:t.byteLength,buffer:t},l=cn.decode(r);return l.priority=o[0],l.timestamp=o[1],l.type=o[2],l.discoveryKey=o[3],l}function dn(e){const n=on.decode(e);return{priority:n[0],timestamp:n[1],type:n[2],discoveryKey:n[3]}}const sn={name:"@local/tasks",id:21,version:0,encodeKey(e){const n=[e.priority,e.timestamp,e.type,e.discoveryKey];return on.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>on.encodeRange({gt:e?rn(e):null,lt:n?rn(n):null,gte:t?rn(t):null,lte:o?rn(o):null}),encodeValue(e,n,o){c(e);const r={start:0,end:0,buffer:null};return cn.preencode(r,o),r.buffer=t.allocUnsafe(r.end),cn.encode(r,o),r.buffer},trigger:null,reconstruct:ln,reconstructKey:dn,indexes:[],decodedVersion:0},un=new e([e.UINT,e.BUFFER],{prefix:22});function an(e){const n=[],t=e.type;if(void 0===t)return n;n.push(t);const o=e.discoveryKey;return void 0===o||n.push(o),n}const fn={name:"@local/tasks-by-type",version:0,id:22,encodeKey:e=>un.encode(an(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>un.encodeRange({gt:e?an(e):null,lt:n?an(n):null,gte:t?an(t):null,lte:o?an(o):null}),encodeValue:e=>fn.collection.encodeKey(e),encodeIndexKeys:(e,n)=>[un.encode([e.type,e.discoveryKey])],reconstruct:(e,n)=>n,offset:sn.indexes.length,collection:sn};sn.indexes.push(fn);const yn=new e([e.BUFFER,e.UINT],{prefix:23});function gn(e){const n=[],t=e.file?.pointer?.externalBlob?.key;if(void 0===t)return n;n.push(t);const o=e.file?.pointer?.externalBlob?.blob?.blockOffset;return void 0===o||n.push(o),n}const pn=r("@local/file/hyperdb#23");function bn(e,n,t){const o=yn.decode(n);c(e);const r={start:0,end:t.byteLength,buffer:t},l=pn.decode(r);return l.file.pointer.externalBlob.key=o[0],l.file.pointer.externalBlob.blob.blockOffset=o[1],Kn.decodedVersion=l.version,l}function mn(e){return{file:{pointer:{externalBlob:{blob:{blockOffset:yn.decode(e)[1]}}}}}}const Kn={name:"@local/blob-files",id:23,version:4,encodeKey(e){const n=[e.file.pointer.externalBlob.key,e.file.pointer.externalBlob.blob.blockOffset];return yn.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>yn.encodeRange({gt:e?gn(e):null,lt:n?gn(n):null,gte:t?gn(t):null,lte:o?gn(o):null}),encodeValue(e,n,o){c(e);const r={start:0,end:0,buffer:null};return o.version=n,pn.preencode(r,o),r.buffer=t.allocUnsafe(r.end),pn.encode(r,o),r.buffer},trigger:null,reconstruct:bn,reconstructKey:mn,indexes:[],decodedVersion:0},vn=new e([e.BUFFER,e.STRING,e.UINT],{prefix:24});function xn(e){const n=[],t=e.file?.pointer?.externalDrive?.key;if(void 0===t)return n;n.push(t);const o=e.file?.pointer?.externalDrive?.path;if(void 0===o)return n;n.push(o);const r=e.file?.pointer?.externalDrive?.version;return void 0===r||n.push(r),n}const hn=r("@local/file/hyperdb#24");function Rn(e,n,t){const o=vn.decode(n);c(e);const r={start:0,end:t.byteLength,buffer:t},l=hn.decode(r);return l.file.pointer.externalDrive.key=o[0],l.file.pointer.externalDrive.path=o[1],l.file.pointer.externalDrive.version=o[2],wn.decodedVersion=l.version,l}function Un(e){return{file:{pointer:{externalDrive:{version:vn.decode(e)[2]}}}}}const wn={name:"@local/drive-files",id:24,version:4,encodeKey(e){const n=[e.file.pointer.externalDrive.key,e.file.pointer.externalDrive.path,e.file.pointer.externalDrive.version];return vn.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>vn.encodeRange({gt:e?xn(e):null,lt:n?xn(n):null,gte:t?xn(t):null,lte:o?xn(o):null}),encodeValue(e,n,o){c(e);const r={start:0,end:0,buffer:null};return o.version=n,hn.preencode(r,o),r.buffer=t.allocUnsafe(r.end),hn.encode(r,o),r.buffer},trigger:null,reconstruct:Rn,reconstructKey:Un,indexes:[],decodedVersion:0},Fn=new e([e.BUFFER,e.BUFFER,e.UINT],{prefix:25});function Vn(e){const n=[],t=e.roomKey;if(void 0===t)return n;n.push(t);const o=e.file?.pointer?.externalBlob?.key;if(void 0===o)return n;n.push(o);const r=e.file?.pointer?.externalBlob?.blob?.blockOffset;return void 0===r||n.push(r),n}const kn={name:"@local/blob-files-by-room",version:0,id:25,encodeKey:e=>Fn.encode(Vn(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>Fn.encodeRange({gt:e?Vn(e):null,lt:n?Vn(n):null,gte:t?Vn(t):null,lte:o?Vn(o):null}),encodeValue:e=>kn.collection.encodeKey(e),encodeIndexKeys:(e,n)=>[Fn.encode([e.roomKey,e.file.pointer.externalBlob.key,e.file.pointer.externalBlob.blob.blockOffset])],reconstruct:(e,n)=>n,offset:Kn.indexes.length,collection:Kn};Kn.indexes.push(kn);const Bn=new e([e.BUFFER,e.BUFFER,e.STRING,e.UINT],{prefix:26});function In(e){const n=[],t=e.roomKey;if(void 0===t)return n;n.push(t);const o=e.file?.pointer?.externalDrive?.key;if(void 0===o)return n;n.push(o);const r=e.file?.pointer?.externalDrive?.path;if(void 0===r)return n;n.push(r);const c=e.file?.pointer?.externalDrive?.version;return void 0===c||n.push(c),n}const En={name:"@local/drive-files-by-room",version:0,id:26,encodeKey:e=>Bn.encode(In(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>Bn.encodeRange({gt:e?In(e):null,lt:n?In(n):null,gte:t?In(t):null,lte:o?In(o):null}),encodeValue:e=>En.collection.encodeKey(e),encodeIndexKeys:(e,n)=>[Bn.encode([e.roomKey,e.file.pointer.externalDrive.key,e.file.pointer.externalDrive.path,e.file.pointer.externalDrive.version])],reconstruct:(e,n)=>n,offset:wn.indexes.length,collection:wn};wn.indexes.push(En);const Tn=new e([e.BUFFER],{prefix:27});function Ln(e){const n=e.discoveryPublicKey;return void 0===n?[]:[n]}const Nn=r("@local/background-sync-room/hyperdb#27");function Dn(e,n,t){const o=Tn.decode(n);c(e);const r={start:0,end:t.byteLength,buffer:t},l=Nn.decode(r);return l.discoveryPublicKey=o[0],l}function An(e){return{discoveryPublicKey:Tn.decode(e)[0]}}const Pn={name:"@local/background-sync",id:27,version:0,encodeKey(e){const n=[e.discoveryPublicKey];return Tn.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>Tn.encodeRange({gt:e?Ln(e):null,lt:n?Ln(n):null,gte:t?Ln(t):null,lte:o?Ln(o):null}),encodeValue(e,n,o){c(e);const r={start:0,end:0,buffer:null};return Nn.preencode(r,o),r.buffer=t.allocUnsafe(r.end),Nn.encode(r,o),r.buffer},trigger:null,reconstruct:Dn,reconstructKey:An,indexes:[],decodedVersion:0},Mn=new e([e.UINT,e.BUFFER],{prefix:28}),On=d.dirtyByTimestampMap;function Gn(e){const n=e.timestamp;return void 0===n?[]:[n]}const Sn={name:"@local/background-sync-by-dirty",version:0,id:28,encodeKey:e=>Mn.encode(Gn(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>Mn.encodeRange({gt:e?Gn(e):null,lt:n?Gn(n):null,gte:t?Gn(t):null,lte:o?Gn(o):null}),encodeValue:e=>Sn.collection.encodeKey(e),encodeIndexKeys(e,n){const t=On(e,n),o=new Array(t.length);for(let n=0;n<t.length;n++){const r=t[n];o[n]=Mn.encode([r.timestamp,e.discoveryPublicKey])}return o},reconstruct:(e,n)=>n,offset:Pn.indexes.length,collection:Pn};Pn.indexes.push(Sn);const qn=new e([e.BUFFER,e.BUFFER],{prefix:29});function Cn(e){const n=[],t=e.key;if(void 0===t)return n;n.push(t);const o=e.responsePublicKey;return void 0===o||n.push(o),n}const jn=r("@local/writer-append/hyperdb#29");function Wn(e,n,t){const o=qn.decode(n);c(e);const r={start:0,end:t.byteLength,buffer:t},l=jn.decode(r);return l.key=o[0],l.responsePublicKey=o[1],l}function zn(e){const n=qn.decode(e);return{key:n[0],responsePublicKey:n[1]}}const Hn={name:"@local/writer-appends",id:29,version:0,encodeKey(e){const n=[e.key,e.responsePublicKey];return qn.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>qn.encodeRange({gt:e?Cn(e):null,lt:n?Cn(n):null,gte:t?Cn(t):null,lte:o?Cn(o):null}),encodeValue(e,n,o){c(e);const r={start:0,end:0,buffer:null};return jn.preencode(r,o),r.buffer=t.allocUnsafe(r.end),jn.encode(r,o),r.buffer},trigger:null,reconstruct:Wn,reconstructKey:zn,indexes:[],decodedVersion:0},Jn=new e([e.BUFFER],{prefix:30});function Qn(e){const n=e.roomKey;return void 0===n?[]:[n]}const Xn=r("@local/room-metadata/hyperdb#30");function Yn(e,n,t){const o=Jn.decode(n);c(e);const r={start:0,end:t.byteLength,buffer:t},l=Xn.decode(r);return l.roomKey=o[0],l}function Zn(e){return{roomKey:Jn.decode(e)[0]}}const $n={name:"@local/room-metadata",id:30,version:0,encodeKey(e){const n=[e.roomKey];return Jn.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>Jn.encodeRange({gt:e?Qn(e):null,lt:n?Qn(n):null,gte:t?Qn(t):null,lte:o?Qn(o):null}),encodeValue(e,n,o){c(e);const r={start:0,end:0,buffer:null};return Xn.preencode(r,o),r.buffer=t.allocUnsafe(r.end),Xn.encode(r,o),r.buffer},trigger:null,reconstruct:Yn,reconstructKey:Zn,indexes:[],decodedVersion:0},_n=new e([],{prefix:31});function et(e){return[]}const nt=r("@local/debug");function tt(e,n,t){c(e);const o={start:0,end:t.byteLength,buffer:t};return nt.decode(o)}function ot(e){return{}}const rt={name:"@local/debug",id:31,version:0,encodeKey:e=>_n.encode([]),encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>_n.encodeRange({gt:e?et(e):null,lt:n?et(n):null,gte:t?et(t):null,lte:o?et(o):null}),encodeValue(e,n,o){c(e);const r={start:0,end:0,buffer:null};return nt.preencode(r,o),r.buffer=t.allocUnsafe(r.end),nt.encode(r,o),r.buffer},trigger:null,reconstruct:tt,reconstructKey:ot,indexes:[],decodedVersion:0},ct=new e([e.BUFFER,e.BUFFER],{prefix:32}),lt=d.roomsByContactMap;function dt(e){const n=e.contact;return void 0===n?[]:[n]}const st={name:"@local/rooms-by-contact",version:1,id:32,encodeKey:e=>ct.encode(dt(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>ct.encodeRange({gt:e?dt(e):null,lt:n?dt(n):null,gte:t?dt(t):null,lte:o?dt(o):null}),encodeValue:e=>st.collection.encodeKey(e),encodeIndexKeys(e,n){const t=lt(e,n),o=new Array(t.length);for(let n=0;n<t.length;n++){const r=t[n];o[n]=ct.encode([r.contact,e.roomKey])}return o},reconstruct:(e,n)=>n,offset:Q.indexes.length,collection:Q};Q.indexes.push(st);const ut=new e([e.BUFFER],{prefix:33});function it(e){const n=e.roomKey;return void 0===n?[]:[n]}const at=r("@local/unread/hyperdb#33");function ft(e,n,t){const o=ut.decode(n);c(e);const r={start:0,end:t.byteLength,buffer:t},l=at.decode(r);return l.roomKey=o[0],l}function yt(e){return{roomKey:ut.decode(e)[0]}}const gt={name:"@local/unreads",id:33,version:0,encodeKey(e){const n=[e.roomKey];return ut.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>ut.encodeRange({gt:e?it(e):null,lt:n?it(n):null,gte:t?it(t):null,lte:o?it(o):null}),encodeValue(e,n,o){c(e);const r={start:0,end:0,buffer:null};return at.preencode(r,o),r.buffer=t.allocUnsafe(r.end),at.encode(r,o),r.buffer},trigger:null,reconstruct:ft,reconstructKey:yt,indexes:[],decodedVersion:0},pt=new e([],{prefix:34});function bt(e){return[]}const mt=r("@local/hyperdht-record");function Kt(e,n,t){c(e);const o={start:0,end:t.byteLength,buffer:t};return mt.decode(o)}function vt(e){return{}}const xt={name:"@local/hyperdht",id:34,version:0,encodeKey:e=>pt.encode([]),encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>pt.encodeRange({gt:e?bt(e):null,lt:n?bt(n):null,gte:t?bt(t):null,lte:o?bt(o):null}),encodeValue(e,n,o){c(e);const r={start:0,end:0,buffer:null};return mt.preencode(r,o),r.buffer=t.allocUnsafe(r.end),mt.encode(r,o),r.buffer},trigger:null,reconstruct:Kt,reconstructKey:vt,indexes:[],decodedVersion:0},ht=new e([e.UINT],{prefix:35});function Rt(e){const n=e.timestamp;return void 0===n?[]:[n]}const Ut=r("@local/error-record/hyperdb#35");function wt(e,n,t){const o=ht.decode(n);c(e);const r={start:0,end:t.byteLength,buffer:t},l=Ut.decode(r);return l.timestamp=o[0],l}function Ft(e){return{timestamp:ht.decode(e)[0]}}const Vt={name:"@local/errors",id:35,version:0,encodeKey(e){const n=[e.timestamp];return ht.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>ht.encodeRange({gt:e?Rt(e):null,lt:n?Rt(n):null,gte:t?Rt(t):null,lte:o?Rt(o):null}),encodeValue(e,n,o){c(e);const r={start:0,end:0,buffer:null};return Ut.preencode(r,o),r.buffer=t.allocUnsafe(r.end),Ut.encode(r,o),r.buffer},trigger:null,reconstruct:wt,reconstructKey:Ft,indexes:[],decodedVersion:0},kt=new e([e.STRING,e.UINT],{prefix:36});function Bt(e){const n=[],t=e.code;if(void 0===t)return n;n.push(t);const o=e.timestamp;return void 0===o||n.push(o),n}const It={name:"@local/errors-by-code",version:0,id:36,encodeKey:e=>kt.encode(Bt(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>kt.encodeRange({gt:e?Bt(e):null,lt:n?Bt(n):null,gte:t?Bt(t):null,lte:o?Bt(o):null}),encodeValue:e=>It.collection.encodeKey(e),encodeIndexKeys:(e,n)=>[kt.encode([e.code,e.timestamp])],reconstruct:(e,n)=>n,offset:Vt.indexes.length,collection:Vt};Vt.indexes.push(It);const Et=new e([e.BUFFER],{prefix:37});function Tt(e){const n=e.roomKey;return void 0===n?[]:[n]}const Lt=r("@local/file-stats/hyperdb#37");function Nt(e,t,o){const r=Et.decode(t);c(e);const l={start:0,end:o.byteLength,buffer:o},d=n.uint.decode(l);if(0!==d)throw new Error("Unknown collection type: "+d);At.decodedVersion=n.uint.decode(l);const s=Lt.decode(l);return s.roomKey=r[0],s}function Dt(e){return{roomKey:Et.decode(e)[0]}}const At={name:"@local/file-stats",id:37,version:2,encodeKey(e){const n=[e.roomKey];return Et.encode(n)},encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>Et.encodeRange({gt:e?Tt(e):null,lt:n?Tt(n):null,gte:t?Tt(t):null,lte:o?Tt(o):null}),encodeValue(e,n,o){c(e);const r={start:0,end:2,buffer:null};return Lt.preencode(r,o),r.buffer=t.allocUnsafe(r.end),r.buffer[r.start++]=0,r.buffer[r.start++]=n,Lt.encode(r,o),r.buffer},trigger:null,reconstruct:Nt,reconstructKey:Dt,indexes:[],decodedVersion:0},Pt=new e([e.UINT,e.BUFFER],{prefix:38}),Mt=d.roomsByFavoriteAndTimestampMap;function Ot(e){const n=e.timestamp;return void 0===n?[]:[n]}const Gt={name:"@local/rooms-by-favorite-and-timestamp",version:3,id:38,encodeKey:e=>Pt.encode(Ot(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>Pt.encodeRange({gt:e?Ot(e):null,lt:n?Ot(n):null,gte:t?Ot(t):null,lte:o?Ot(o):null}),encodeValue:e=>Gt.collection.encodeKey(e),encodeIndexKeys(e,n){const t=Mt(e,n),o=new Array(t.length);for(let n=0;n<t.length;n++){const r=t[n];o[n]=Pt.encode([r.timestamp,e.roomKey])}return o},reconstruct:(e,n)=>n,offset:Q.indexes.length,collection:Q};Q.indexes.push(Gt);const St=new e([e.UINT,e.BUFFER,e.UINT],{prefix:39});function qt(e){const n=[],t=e.lastAccessed;if(void 0===t)return n;n.push(t);const o=e.file?.pointer?.externalBlob?.key;if(void 0===o)return n;n.push(o);const r=e.file?.pointer?.externalBlob?.blob?.blockOffset;return void 0===r||n.push(r),n}const Ct={name:"@local/blob-files-by-last-accessed",version:4,id:39,encodeKey:e=>St.encode(qt(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>St.encodeRange({gt:e?qt(e):null,lt:n?qt(n):null,gte:t?qt(t):null,lte:o?qt(o):null}),encodeValue:e=>Ct.collection.encodeKey(e),encodeIndexKeys:(e,n)=>[St.encode([e.lastAccessed,e.file.pointer.externalBlob.key,e.file.pointer.externalBlob.blob.blockOffset])],reconstruct:(e,n)=>n,offset:Kn.indexes.length,collection:Kn};Kn.indexes.push(Ct);const jt=new e([e.UINT,e.BUFFER,e.STRING,e.UINT],{prefix:40});function Wt(e){const n=[],t=e.lastAccessed;if(void 0===t)return n;n.push(t);const o=e.file?.pointer?.externalDrive?.key;if(void 0===o)return n;n.push(o);const r=e.file?.pointer?.externalDrive?.path;if(void 0===r)return n;n.push(r);const c=e.file?.pointer?.externalDrive?.version;return void 0===c||n.push(c),n}const zt={name:"@local/drive-files-by-last-accessed",version:4,id:40,encodeKey:e=>jt.encode(Wt(e)),encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>jt.encodeRange({gt:e?Wt(e):null,lt:n?Wt(n):null,gte:t?Wt(t):null,lte:o?Wt(o):null}),encodeValue:e=>zt.collection.encodeKey(e),encodeIndexKeys:(e,n)=>[jt.encode([e.lastAccessed,e.file.pointer.externalDrive.key,e.file.pointer.externalDrive.path,e.file.pointer.externalDrive.version])],reconstruct:(e,n)=>n,offset:wn.indexes.length,collection:wn};wn.indexes.push(zt);const Ht=new e([],{prefix:41});function Jt(e){return[]}const Qt=r("@local/file-gc-info");function Xt(e,t,o){c(e);const r={start:0,end:o.byteLength,buffer:o},l=n.uint.decode(r);if(0!==l)throw new Error("Unknown collection type: "+l);return Zt.decodedVersion=n.uint.decode(r),Qt.decode(r)}function Yt(e){return{}}const Zt={name:"@local/file-gc-info",id:41,version:4,encodeKey:e=>Ht.encode([]),encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>Ht.encodeRange({gt:e?Jt(e):null,lt:n?Jt(n):null,gte:t?Jt(t):null,lte:o?Jt(o):null}),encodeValue(e,n,o){c(e);const r={start:0,end:2,buffer:null};return Qt.preencode(r,o),r.buffer=t.allocUnsafe(r.end),r.buffer[r.start++]=0,r.buffer[r.start++]=n,Qt.encode(r,o),r.buffer},trigger:null,reconstruct:Xt,reconstructKey:Yt,indexes:[],decodedVersion:0},$t=new e([],{prefix:42});function _t(e){return[]}const eo=r("@local/environment-record");function no(e,t,o){c(e);const r={start:0,end:o.byteLength,buffer:o},l=n.uint.decode(r);if(0!==l)throw new Error("Unknown collection type: "+l);return oo.decodedVersion=n.uint.decode(r),eo.decode(r)}function to(e){return{}}const oo={name:"@local/environment",id:42,version:5,encodeKey:e=>$t.encode([]),encodeKeyRange:({gt:e,lt:n,gte:t,lte:o}={})=>$t.encodeRange({gt:e?_t(e):null,lt:n?_t(n):null,gte:t?_t(t):null,lte:o?_t(o):null}),encodeValue(e,n,o){c(e);const r={start:0,end:2,buffer:null};return eo.preencode(r,o),r.buffer=t.allocUnsafe(r.end),r.buffer[r.start++]=0,r.buffer[r.start++]=n,eo.encode(r,o),r.buffer},trigger:null,reconstruct:no,reconstructKey:to,indexes:[],decodedVersion:0},ro=[y,v,F,L,q,Q,xe,Ve,Se,He,$e,sn,Kn,wn,Pn,Hn,$n,rt,gt,xt,Vt,At,Zt,oo],co=[A,Z,ne,ce,se,ae,ge,Ee,De,tn,fn,kn,En,Sn,st,It,Gt,Ct,zt];function lo(e){switch(e){case"@local/stats":return y;case"@local/migrations":return v;case"@local/room-migration-stats":return F;case"@local/room-migrations":return L;case"@local/identity":return q;case"@local/rooms":return Q;case"@local/room-preferences":return xe;case"@local/writers":return Ve;case"@local/members":return Se;case"@local/devices":return He;case"@local/contacts":return $e;case"@local/tasks":return sn;case"@local/blob-files":return Kn;case"@local/drive-files":return wn;case"@local/background-sync":return Pn;case"@local/writer-appends":return Hn;case"@local/room-metadata":return $n;case"@local/debug":return rt;case"@local/unreads":return gt;case"@local/hyperdht":return xt;case"@local/errors":return Vt;case"@local/file-stats":return At;case"@local/file-gc-info":return Zt;case"@local/environment":return oo;default:return null}}function so(e){switch(e){case"@local/room-migrations-by-priority":return A;case"@local/rooms-by-discovery-key":return Z;case"@local/rooms-by-timestamp":return ne;case"@local/rooms-by-type-and-timestamp":return ce;case"@local/rooms-by-wakeup-topic":return se;case"@local/rooms-by-mailbox":return ae;case"@local/rooms-by-discovery":return ge;case"@local/writers-by-wakeup-topic":return Ee;case"@local/writers-by-room-key":return De;case"@local/blocked-contacts":return tn;case"@local/tasks-by-type":return fn;case"@local/blob-files-by-room":return kn;case"@local/drive-files-by-room":return En;case"@local/background-sync-by-dirty":return Sn;case"@local/rooms-by-contact":return st;case"@local/errors-by-code":return It;case"@local/rooms-by-favorite-and-timestamp":return Gt;case"@local/blob-files-by-last-accessed":return Ct;case"@local/drive-files-by-last-accessed":return zt;default:return null}}module.exports={versions:l,collections:ro,indexes:co,resolveCollection:lo,resolveIndex:so};
@holepunchto/keet-core/schema/spec/local/hyperdb/messages.js +1 -0
……@@ -0,0 +1 @@
1const{c:e}=require("hyperschema/runtime"),d=30;let o=d;const n={preencode(d,o){e.fixed32.preencode(d,o.key),e.uint.preencode(d,o.length)},encode(d,o){e.fixed32.encode(d,o.key),e.uint.encode(d,o.length)},decode:d=>({key:e.fixed32.decode(d),length:e.uint.decode(d)})},c={preencode(d,o){e.fixed32.preencode(d,o.key),e.uint.preencode(d,o.seq)},encode(d,o){e.fixed32.encode(d,o.key),e.uint.encode(d,o.seq)},decode:d=>({key:e.fixed32.decode(d),seq:e.uint.decode(d)})},r={preencode(d,o){e.fixed32.preencode(d,o.publicKey),e.fixed32.preencode(d,o.secretKey)},encode(d,o){e.fixed32.encode(d,o.publicKey),e.fixed32.encode(d,o.secretKey)},decode:d=>({publicKey:e.fixed32.decode(d),secretKey:e.fixed32.decode(d)})},t={preencode(d,o){e.fixed32.preencode(d,o.publicKey),e.fixed64.preencode(d,o.secretKey)},encode(d,o){e.fixed32.encode(d,o.publicKey),e.fixed64.encode(d,o.secretKey)},decode:d=>({publicKey:e.fixed32.decode(d),secretKey:e.fixed64.decode(d)})},i={preencode(d,o){e.fixed32.preencode(d,o.key),d.end++,o.encryptionKey&&e.buffer.preencode(d,o.encryptionKey),o.fastForwardTo&&e.fixed32.preencode(d,o.fastForwardTo)},encode(d,o){const n=(o.encryptionKey?1:0)|(o.fastForwardTo?2:0);e.fixed32.encode(d,o.key),e.uint.encode(d,n),o.encryptionKey&&e.buffer.encode(d,o.encryptionKey),o.fastForwardTo&&e.fixed32.encode(d,o.fastForwardTo)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d);return{key:o,encryptionKey:1&n?e.buffer.decode(d):null,fastForwardTo:2&n?e.fixed32.decode(d):null}}},a={preencode(d,o){e.uint.preencode(d,o.timestamp)},encode(d,o){e.uint.encode(d,o.timestamp)},decode:d=>({timestamp:e.uint.decode(d)})},s={preencode(d,o){e.uint.preencode(d,o.blockOffset),e.uint.preencode(d,o.blockLength),e.uint.preencode(d,o.byteOffset),e.uint.preencode(d,o.byteLength)},encode(d,o){e.uint.encode(d,o.blockOffset),e.uint.encode(d,o.blockLength),e.uint.encode(d,o.byteOffset),e.uint.encode(d,o.byteLength)},decode:d=>({blockOffset:e.uint.decode(d),blockLength:e.uint.decode(d),byteOffset:e.uint.decode(d),byteLength:e.uint.decode(d)})},l={preencode(d,o){e.uint.preencode(d,o.width),e.uint.preencode(d,o.height)},encode(d,o){e.uint.encode(d,o.width),e.uint.encode(d,o.height)},decode:d=>({width:e.uint.decode(d),height:e.uint.decode(d)})},p=e.frame(l),u={preencode(d,o){d.end++,o.name&&e.string.preencode(d,o.name),o.mimetype&&e.string.preencode(d,o.mimetype),o.dimensions&&p.preencode(d,o.dimensions),o.userdata&&e.buffer.preencode(d,o.userdata),o.duration&&e.uint.preencode(d,o.duration)},encode(d,o){const n=(o.name?1:0)|(o.mimetype?2:0)|(o.dimensions?4:0)|(o.userdata?8:0)|(o.duration?16:0)|(o.isPreview?32:0);e.uint.encode(d,n),o.name&&e.string.encode(d,o.name),o.mimetype&&e.string.encode(d,o.mimetype),o.dimensions&&p.encode(d,o.dimensions),o.userdata&&e.buffer.encode(d,o.userdata),o.duration&&e.uint.encode(d,o.duration)},decode(d){const o=e.uint.decode(d);return{name:1&o?e.string.decode(d):null,mimetype:2&o?e.string.decode(d):null,dimensions:4&o?p.decode(d):null,userdata:8&o?e.buffer.decode(d):null,duration:16&o?e.uint.decode(d):0,isPreview:!!(32&o)}}},f={preencode(d,o){e.fixed32.preencode(d,o.key),e.string.preencode(d,o.path),e.uint.preencode(d,o.version),e.uint.preencode(d,o.size)},encode(d,o){e.fixed32.encode(d,o.key),e.string.encode(d,o.path),e.uint.encode(d,o.version),e.uint.encode(d,o.size)},decode:d=>({key:e.fixed32.decode(d),path:e.string.decode(d),version:e.uint.decode(d),size:e.uint.decode(d)})},m={preencode(d,o){e.fixed32.preencode(d,o.key),s.preencode(d,o.blob)},encode(d,o){e.fixed32.encode(d,o.key),s.encode(d,o.blob)},decode:d=>({key:e.fixed32.decode(d),blob:s.decode(d)})},y=e.frame(m),b=e.frame(f),x={preencode(d,o){d.end++,o.inlined&&e.buffer.preencode(d,o.inlined),o.blob&&s.preencode(d,o.blob),o.externalBlob&&y.preencode(d,o.externalBlob),o.externalDrive&&b.preencode(d,o.externalDrive)},encode(d,o){const n=(o.inlined?1:0)|(o.blob?2:0)|(o.externalBlob?4:0)|(o.externalDrive?8:0);e.uint.encode(d,n),o.inlined&&e.buffer.encode(d,o.inlined),o.blob&&s.encode(d,o.blob),o.externalBlob&&y.encode(d,o.externalBlob),o.externalDrive&&b.encode(d,o.externalDrive)},decode(d){const o=e.uint.decode(d);return{inlined:1&o?e.buffer.decode(d):null,blob:2&o?s.decode(d):null,externalBlob:4&o?y.decode(d):null,externalDrive:8&o?b.decode(d):null}}},v=e.frame(x),k=e.frame(u),g={preencode(d,o){v.preencode(d,o.pointer),d.end++,o.metadata&&k.preencode(d,o.metadata),o.preview&&ja.preencode(d,o.preview),o.hash&&e.fixed32.preencode(d,o.hash)},encode(d,o){const n=(o.metadata?1:0)|(o.preview?2:0)|(o.hash?4:0);v.encode(d,o.pointer),e.uint.encode(d,n),o.metadata&&k.encode(d,o.metadata),o.preview&&ja.encode(d,o.preview),o.hash&&e.fixed32.encode(d,o.hash)},decode(d){const o=v.decode(d),n=e.uint.decode(d);return{pointer:o,metadata:1&n?k.decode(d):null,preview:2&n?ja.decode(d):null,hash:4&n?e.fixed32.decode(d):null}}},K=e.frame(g),h=K,w=K,R={preencode(e,d){e.end++,d.small&&K.preencode(e,d.small),d.medium&&h.preencode(e,d.medium),d.large&&w.preencode(e,d.large)},encode(d,o){const n=(o.small?1:0)|(o.medium?2:0)|(o.large?4:0);e.uint.encode(d,n),o.small&&K.encode(d,o.small),o.medium&&h.encode(d,o.medium),o.large&&w.encode(d,o.large)},decode(d){const o=e.uint.decode(d);return{small:1&o?K.decode(d):null,medium:2&o?h.decode(d):null,large:4&o?w.decode(d):null}}},P={preencode(e,d){e.end++},encode(d,o){const n=o.isDeleted?1:0;e.uint.encode(d,n)},decode:d=>({isDeleted:!!(1&e.uint.decode(d))})},T=e.frame(P),A=K,M={preencode(d,n){e.uint.preencode(d,n.id),c.preencode(d,n.oplog),T.preencode(d,n.status),A.preencode(d,n.file),d.end++,o>=22&&n.version&&e.uint.preencode(d,n.version)},encode(d,n){const r=o>=22&&n.version?1:0;e.uint.encode(d,n.id),c.encode(d,n.oplog),T.encode(d,n.status),A.encode(d,n.file),e.uint.encode(d,r),o>=22&&n.version&&e.uint.encode(d,n.version)},decode(d){const n=e.uint.decode(d),r=c.decode(d),t=T.decode(d),i=A.decode(d),a=d.start<d.end?e.uint.decode(d):0;return{id:n,oplog:r,status:t,file:i,version:o>=22&&1&a?e.uint.decode(d):0}}},D={preencode(e,d){e.end++},encode(d,o){const n=(o.isActive?1:0)|(o.isIndexing?2:0);e.uint.encode(d,n)},decode(d){const o=e.uint.decode(d);return{isActive:!!(1&o),isIndexing:!!(2&o)}}},C={preencode(d,n){const c=(n.isAdmin?1:0)|(n.isModerator?2:0)|(n.isPending?4:0)|(n.isActive?8:0)|(n.isMuted?16:0)|(n.isBanned?32:0)|(n.isShadowBanned?64:0)|(o>=19&&n.isRemoved?128:0);e.uint.preencode(d,c)},encode(d,n){const c=(n.isAdmin?1:0)|(n.isModerator?2:0)|(n.isPending?4:0)|(n.isActive?8:0)|(n.isMuted?16:0)|(n.isBanned?32:0)|(n.isShadowBanned?64:0)|(o>=19&&n.isRemoved?128:0);e.uint.encode(d,c)},decode(d){const n=e.uint.decode(d);return{isAdmin:!!(1&n),isModerator:!!(2&n),isPending:!!(4&n),isActive:!!(8&n),isMuted:!!(16&n),isBanned:!!(32&n),isShadowBanned:!!(64&n),isRemoved:o>=19&&!!(128&n)}}},S={preencode(e,d){e.end++},encode(d,o){const n=(o.isMuted?1:0)|(o.isBanned?2:0)|(o.isShadowBanned?4:0);e.uint.encode(d,n)},decode(d){const o=e.uint.decode(d);return{isMuted:!!(1&o),isBanned:!!(2&o),isShadowBanned:!!(4&o)}}},I={preencode(d,o){e.uint.preencode(d,o.version)},encode(d,o){e.uint.encode(d,o.version)},decode:d=>({version:e.uint.decode(d)})},j={preencode(d,o){e.uint.preencode(d,o.total),e.uint.preencode(d,o.active)},encode(d,o){e.uint.encode(d,o.total),e.uint.encode(d,o.active)},decode:d=>({total:e.uint.decode(d),active:e.uint.decode(d)})},L={preencode(d,o){e.uint.preencode(d,o.total),e.uint.preencode(d,o.active),e.uint.preencode(d,o.pending)},encode(d,o){e.uint.encode(d,o.total),e.uint.encode(d,o.active),e.uint.encode(d,o.pending)},decode:d=>({total:e.uint.decode(d),active:e.uint.decode(d),pending:e.uint.decode(d)})},F={preencode(d,n){e.uint.preencode(d,n.clock),e.uint.preencode(d,n.pinned),e.uint.preencode(d,n.threads),e.uint.preencode(d,n.timestamp),d.end++,o>=24&&n.flagsClock&&e.uint.preencode(d,n.flagsClock)},encode(d,n){const c=o>=24&&n.flagsClock?1:0;e.uint.encode(d,n.clock),e.uint.encode(d,n.pinned),e.uint.encode(d,n.threads),e.uint.encode(d,n.timestamp),e.uint.encode(d,c),o>=24&&n.flagsClock&&e.uint.encode(d,n.flagsClock)},decode(d){const n=e.uint.decode(d),c=e.uint.decode(d),r=e.uint.decode(d),t=e.uint.decode(d),i=d.start<d.end?e.uint.decode(d):0;return{clock:n,pinned:c,threads:r,timestamp:t,flagsClock:o>=24&&1&i?e.uint.decode(d):0}}},q={preencode(d,o){e.uint.preencode(d,o.clock)},encode(d,o){e.uint.encode(d,o.clock)},decode:d=>({clock:e.uint.decode(d)})},B=e.frame(j),E=e.frame(L),V=e.frame(F),O=e.frame(q),N={preencode(e,d){B.preencode(e,d.devices),E.preencode(e,d.members),V.preencode(e,d.chat),O.preencode(e,d.files)},encode(e,d){B.encode(e,d.devices),E.encode(e,d.members),V.encode(e,d.chat),O.encode(e,d.files)},decode:e=>({devices:B.decode(e),members:E.decode(e),chat:V.decode(e),files:O.decode(e)})},U={Default:1,Broadcast:2,DirectMessage:3},J={preencode(e,d){e.end++},encode(d,o){if(o>3)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},W={preencode(d,n){const c=(n.roomType?1:0)|(n.isExperimental?2:0)|(n.isJoiningDisabled?4:0)|(n.isAppendingDisabled?8:0)|(n.isCallingDisabled?16:0)|(n.isMembershipEventsDisabled?32:0)|(o>=28&&n.isAttachmentsDisabled?64:0)|(o>=28&&n.isLinksDisabled?128:0)|(o>=29&&n.buildType?256:0);e.uint.preencode(d,c),n.roomType&&J.preencode(d,n.roomType),o>=29&&n.buildType&&vi.preencode(d,n.buildType)},encode(d,n){const c=(n.roomType?1:0)|(n.isExperimental?2:0)|(n.isJoiningDisabled?4:0)|(n.isAppendingDisabled?8:0)|(n.isCallingDisabled?16:0)|(n.isMembershipEventsDisabled?32:0)|(o>=28&&n.isAttachmentsDisabled?64:0)|(o>=28&&n.isLinksDisabled?128:0)|(o>=29&&n.buildType?256:0);e.uint.encode(d,c),n.roomType&&J.encode(d,n.roomType),o>=29&&n.buildType&&vi.encode(d,n.buildType)},decode(d){const n=e.uint.decode(d);return{roomType:1&n?J.decode(d):0,isExperimental:!!(2&n),isJoiningDisabled:!!(4&n),isAppendingDisabled:!!(8&n),isCallingDisabled:!!(16&n),isMembershipEventsDisabled:!!(32&n),isAttachmentsDisabled:o>=28&&!!(64&n),isLinksDisabled:o>=28&&!!(128&n),buildType:o>=29&&256&n?vi.decode(d):null}}},z=e.frame(I),H=e.frame(W),G={preencode(d,o){z.preencode(d,o.abi),H.preencode(d,o.settings),e.uint.preencode(d,o.creationTime)},encode(d,o){z.encode(d,o.abi),H.encode(d,o.settings),e.uint.encode(d,o.creationTime)},decode:d=>({abi:z.decode(d),settings:H.decode(d),creationTime:e.uint.decode(d)})},Q={preencode(d,o){e.fixed32.preencode(d,o.seed)},encode(d,o){e.fixed32.encode(d,o.seed)},decode:d=>({seed:e.fixed32.decode(d)})},X={preencode(d,o){r.preencode(d,o.mailboxKeyPair),t.preencode(d,o.discoveryKeyPair),e.fixed32.preencode(d,o.wakeupTopic),e.fixed32.preencode(d,o.swarmTopic)},encode(d,o){r.encode(d,o.mailboxKeyPair),t.encode(d,o.discoveryKeyPair),e.fixed32.encode(d,o.wakeupTopic),e.fixed32.encode(d,o.swarmTopic)},decode:d=>({mailboxKeyPair:r.decode(d),discoveryKeyPair:t.decode(d),wakeupTopic:e.fixed32.decode(d),swarmTopic:e.fixed32.decode(d)})},Y=e.array(e.fixed32),Z={preencode(d,n){d.end++,n.title&&e.string.preencode(d,n.title),n.avatar&&La.preencode(d,n.avatar),n.description&&e.string.preencode(d,n.description),o>=17&&n.supportedLanguages&&Fa.preencode(d,n.supportedLanguages),o>=19&&n.blindPeers&&Y.preencode(d,n.blindPeers)},encode(d,n){const c=(n.title?1:0)|(n.avatar?2:0)|(n.description?4:0)|(o>=17&&n.supportedLanguages?8:0)|(o>=19&&n.blindPeers?16:0);e.uint.encode(d,c),n.title&&e.string.encode(d,n.title),n.avatar&&La.encode(d,n.avatar),n.description&&e.string.encode(d,n.description),o>=17&&n.supportedLanguages&&Fa.encode(d,n.supportedLanguages),o>=19&&n.blindPeers&&Y.encode(d,n.blindPeers)},decode(d){const n=e.uint.decode(d);return{title:1&n?e.string.decode(d):null,avatar:2&n?La.decode(d):null,description:4&n?e.string.decode(d):null,supportedLanguages:o>=17&&8&n?Fa.decode(d):null,blindPeers:o>=19&&16&n?Y.decode(d):null}}},$={preencode(d,o){e.fixed32.preencode(d,o.key)},encode(d,o){e.fixed32.encode(d,o.key)},decode:d=>({key:e.fixed32.decode(d)})},_=e.frame(a),ee=e.frame($),de={preencode(e,d){_.preencode(e,d.header),ee.preencode(e,d.peer)},encode(e,d){_.encode(e,d.header),ee.encode(e,d.peer)},decode:e=>({header:_.decode(e),peer:ee.decode(e)})},oe=_,ne={preencode(d,o){oe.preencode(d,o.header),e.fixed32.preencode(d,o.key)},encode(d,o){oe.encode(d,o.header),e.fixed32.encode(d,o.key)},decode:d=>({header:oe.decode(d),key:e.fixed32.decode(d)})},ce={preencode(d,o){e.fixed32.preencode(d,o.memberKey),e.buffer.preencode(d,o.proof)},encode(d,o){e.fixed32.encode(d,o.memberKey),e.buffer.encode(d,o.proof)},decode:d=>({memberKey:e.fixed32.decode(d),proof:e.buffer.decode(d)})},re={preencode(d,o){e.fixed32.preencode(d,o.id),e.buffer.preencode(d,o.response)},encode(d,o){e.fixed32.encode(d,o.id),e.buffer.encode(d,o.response)},decode:d=>({id:e.fixed32.decode(d),response:e.buffer.decode(d)})},te=e.frame(D),ie=e.frame(re),ae={preencode(d,o){e.fixed32.preencode(d,o.key),e.fixed32.preencode(d,o.memberKey),te.preencode(d,o.status),qa.preencode(d,o.profile),d.end++,o.invitation&&ie.preencode(d,o.invitation)},encode(d,o){const n=o.invitation?1:0;e.fixed32.encode(d,o.key),e.fixed32.encode(d,o.memberKey),te.encode(d,o.status),qa.encode(d,o.profile),e.uint.encode(d,n),o.invitation&&ie.encode(d,o.invitation)},decode:d=>({key:e.fixed32.decode(d),memberKey:e.fixed32.decode(d),status:te.decode(d),profile:qa.decode(d),invitation:1&e.uint.decode(d)?ie.decode(d):null})},se={preencode(d,o){e.uint.preencode(d,o.timestamp),d.end++,o.mailbox&&e.fixed32.preencode(d,o.mailbox),o.displayName&&e.string.preencode(d,o.displayName),o.avatar&&Ba.preencode(d,o.avatar),o.username&&e.string.preencode(d,o.username)},encode(d,o){const n=(o.mailbox?1:0)|(o.displayName?2:0)|(o.avatar?4:0)|(o.username?8:0);e.uint.encode(d,o.timestamp),e.uint.encode(d,n),o.mailbox&&e.fixed32.encode(d,o.mailbox),o.displayName&&e.string.encode(d,o.displayName),o.avatar&&Ba.encode(d,o.avatar),o.username&&e.string.encode(d,o.username)},decode(d){const o=e.uint.decode(d),n=e.uint.decode(d);return{timestamp:o,mailbox:1&n?e.fixed32.decode(d):null,displayName:2&n?e.string.decode(d):null,avatar:4&n?Ba.decode(d):null,username:8&n?e.string.decode(d):null}}},le={preencode(d,n){d.end++,n.swarmKey&&e.fixed32.preencode(d,n.swarmKey),n.name&&e.string.preencode(d,n.name),o>=29&&n.buildType&&vi.preencode(d,n.buildType)},encode(d,n){const c=(n.swarmKey?1:0)|(n.name?2:0)|(n.isMobile?4:0)|(o>=29&&n.buildType?8:0);e.uint.encode(d,c),n.swarmKey&&e.fixed32.encode(d,n.swarmKey),n.name&&e.string.encode(d,n.name),o>=29&&n.buildType&&vi.encode(d,n.buildType)},decode(d){const n=e.uint.decode(d);return{swarmKey:1&n?e.fixed32.decode(d):null,name:2&n?e.string.decode(d):null,isMobile:!!(4&n),buildType:o>=29&&8&n?vi.decode(d):null}}},pe=e.frame(se),ue={preencode(e,d){pe.preencode(e,d.profile),ce.preencode(e,d.attestation)},encode(e,d){pe.encode(e,d.profile),ce.encode(e,d.attestation)},decode:e=>({profile:pe.decode(e),attestation:ce.decode(e)})},fe={preencode(e,d){Ea.preencode(e,d.profile),ce.preencode(e,d.attestation)},encode(e,d){Ea.encode(e,d.profile),ce.encode(e,d.attestation)},decode:e=>({profile:Ea.decode(e),attestation:ce.decode(e)})},me={preencode(d,o){e.fixed32.preencode(d,o.id),e.buffer.preencode(d,o.data),e.buffer.preencode(d,o.signature)},encode(d,o){e.fixed32.encode(d,o.id),e.buffer.encode(d,o.data),e.buffer.encode(d,o.signature)},decode:d=>({id:e.fixed32.decode(d),data:e.buffer.decode(d),signature:e.buffer.decode(d)})},ye={preencode(d,o){e.fixed32.preencode(d,o.devicePublicKey)},encode(d,o){e.fixed32.encode(d,o.devicePublicKey)},decode:d=>({devicePublicKey:e.fixed32.decode(d)})},be={preencode(d,o){ce.preencode(d,o.privateProfileIdentity),e.buffer.preencode(d,o.deviceProof)},encode(d,o){ce.encode(d,o.privateProfileIdentity),e.buffer.encode(d,o.deviceProof)},decode:d=>({privateProfileIdentity:ce.decode(d),deviceProof:e.buffer.decode(d)})},xe=e.frame(fe),ve=e.frame(ue),ke=e.frame(ye),ge={preencode(d,o){e.fixed32.preencode(d,o.deviceKey),t.preencode(d,o.keyPair),xe.preencode(d,o.device),ve.preencode(d,o.member),d.end++,o.identity&&ke.preencode(d,o.identity)},encode(d,o){const n=o.identity?1:0;e.fixed32.encode(d,o.deviceKey),t.encode(d,o.keyPair),xe.encode(d,o.device),ve.encode(d,o.member),e.uint.encode(d,n),o.identity&&ke.encode(d,o.identity)},decode:d=>({deviceKey:e.fixed32.decode(d),keyPair:t.decode(d),device:xe.decode(d),member:ve.decode(d),identity:1&e.uint.decode(d)?ke.decode(d):null})},Ke=e.frame(ge),he={preencode(d,o){e.fixed32.preencode(d,o.id),Ke.preencode(d,o.request),e.buffer.preencode(d,o.signature)},encode(d,o){e.fixed32.encode(d,o.id),Ke.encode(d,o.request),e.buffer.encode(d,o.signature)},decode:d=>({id:e.fixed32.decode(d),request:Ke.decode(d),signature:e.buffer.decode(d)})},we=xe,Re=ve,Pe={preencode(e,d){we.preencode(e,d.device),e.end++,d.member&&Re.preencode(e,d.member)},encode(d,o){const n=o.member?1:0;we.encode(d,o.device),e.uint.encode(d,n),o.member&&Re.encode(d,o.member)},decode:d=>({device:we.decode(d),member:1&e.uint.decode(d)?Re.decode(d):null})},Te=e.frame(he),Ae=e.frame(Pe),Me={preencode(e,d){e.end++,d.withInvitation&&Te.preencode(e,d.withInvitation),d.withMemberProof&&Ae.preencode(e,d.withMemberProof)},encode(d,o){const n=(o.withInvitation?1:0)|(o.withMemberProof?2:0);e.uint.encode(d,n),o.withInvitation&&Te.encode(d,o.withInvitation),o.withMemberProof&&Ae.encode(d,o.withMemberProof)},decode(d){const o=e.uint.decode(d);return{withInvitation:1&o?Te.decode(d):null,withMemberProof:2&o?Ae.decode(d):null}}},De=e.frame(me),Ce=e.frame(be),Se={preencode(e,d){De.preencode(e,d.signedKeys),e.end++,d.identity&&Ce.preencode(e,d.identity)},encode(d,o){const n=o.identity?1:0;De.encode(d,o.signedKeys),e.uint.encode(d,n),o.identity&&Ce.encode(d,o.identity)},decode:d=>({signedKeys:De.decode(d),identity:1&e.uint.decode(d)?Ce.decode(d):null})},Ie={preencode(d,n){d.end++,n.expiration&&e.uint.preencode(d,n.expiration),o>=29&&n.buildType&&vi.preencode(d,n.buildType)},encode(d,n){const c=(n.expiration?1:0)|(n.requiresConfirmation?2:0)|(n.canModerate?4:0)|(n.canAdmin?8:0)|(o>=29&&n.buildType?16:0);e.uint.encode(d,c),n.expiration&&e.uint.encode(d,n.expiration),o>=29&&n.buildType&&vi.encode(d,n.buildType)},decode(d){const n=e.uint.decode(d);return{expiration:1&n?e.uint.decode(d):0,requiresConfirmation:!!(2&n),canModerate:!!(4&n),canAdmin:!!(8&n),buildType:o>=29&&16&n?vi.decode(d):null}}},je=De,Le=e.frame(Ie),Fe={preencode(d,o){e.fixed32.preencode(d,o.id),je.preencode(d,o.response),Le.preencode(d,o.metadata),d.end++,o.anchor&&n.preencode(d,o.anchor)},encode(d,o){const c=(o.anchor?1:0)|(o.isActive?2:0);e.fixed32.encode(d,o.id),je.encode(d,o.response),Le.encode(d,o.metadata),e.uint.encode(d,c),o.anchor&&n.encode(d,o.anchor)},decode(d){const o=e.fixed32.decode(d),c=je.decode(d),r=Le.decode(d),t=e.uint.decode(d);return{id:o,response:c,metadata:r,anchor:1&t?n.decode(d):null,isActive:!!(2&t)}}},qe=_,Be=e.frame(Fe),Ee={preencode(e,d){qe.preencode(e,d.header),Be.preencode(e,d.invitation)},encode(e,d){qe.encode(e,d.header),Be.encode(e,d.invitation)},decode:e=>({header:qe.decode(e),invitation:Be.decode(e)})},Ve=_,Oe={preencode(d,o){Ve.preencode(d,o.header),e.fixed32.preencode(d,o.id)},encode(d,o){Ve.encode(d,o.header),e.fixed32.encode(d,o.id)},decode:d=>({header:Ve.decode(d),id:e.fixed32.decode(d)})},Ne={preencode(d,o){e.fixed32.preencode(d,o.mailbox),e.fixed32.preencode(d,o.invitationSeed),n.preencode(d,o.anchor)},encode(d,o){e.fixed32.encode(d,o.mailbox),e.fixed32.encode(d,o.invitationSeed),n.encode(d,o.anchor)},decode:d=>({mailbox:e.fixed32.decode(d),invitationSeed:e.fixed32.decode(d),anchor:n.decode(d)})},Ue={preencode(d,o){e.fixed32.preencode(d,o.mailbox),e.fixed32.preencode(d,o.invitationSeed),n.preencode(d,o.anchor),e.fixed32.preencode(d,o.identityPublicKey)},encode(d,o){e.fixed32.encode(d,o.mailbox),e.fixed32.encode(d,o.invitationSeed),n.encode(d,o.anchor),e.fixed32.encode(d,o.identityPublicKey)},decode:d=>({mailbox:e.fixed32.decode(d),invitationSeed:e.fixed32.decode(d),anchor:n.decode(d),identityPublicKey:e.fixed32.decode(d)})},Je={preencode(d,o){e.fixed32.preencode(d,o.mailbox)},encode(d,o){e.fixed32.encode(d,o.mailbox)},decode:d=>({mailbox:e.fixed32.decode(d)})},We=e.frame(Ne),ze=e.frame(Ue),He=e.frame(Je),Ge=e.array(e.ipv4Address),Qe={preencode(e,d){e.end++,d.room&&We.preencode(e,d.room),d.identity&&ze.preencode(e,d.identity),d.contact&&He.preencode(e,d.contact),o>=9&&d.readonly&&Va.preencode(e,d.readonly),o>=17&&d.additionalNodes&&Ge.preencode(e,d.additionalNodes),o>=29&&d.buildType&&vi.preencode(e,d.buildType)},encode(d,n){const c=(n.room?1:0)|(n.identity?2:0)|(n.contact?4:0)|(o>=9&&n.readonly?8:0)|(o>=17&&n.additionalNodes?16:0)|(o>=29&&n.buildType?32:0);e.uint.encode(d,c),n.room&&We.encode(d,n.room),n.identity&&ze.encode(d,n.identity),n.contact&&He.encode(d,n.contact),o>=9&&n.readonly&&Va.encode(d,n.readonly),o>=17&&n.additionalNodes&&Ge.encode(d,n.additionalNodes),o>=29&&n.buildType&&vi.encode(d,n.buildType)},decode(d){const n=e.uint.decode(d);return{room:1&n?We.decode(d):null,identity:2&n?ze.decode(d):null,contact:4&n?He.decode(d):null,readonly:o>=9&&8&n?Va.decode(d):null,additionalNodes:o>=17&&16&n?Ge.decode(d):null,buildType:o>=29&&32&n?vi.decode(d):null}}},Xe=_,Ye={preencode(d,o){Xe.preencode(d,o.header),e.buffer.preencode(d,o.blindRequest)},encode(d,o){Xe.encode(d,o.header),e.buffer.encode(d,o.blindRequest)},decode:d=>({header:Xe.decode(d),blindRequest:e.buffer.decode(d)})},Ze=_,$e={preencode(e,d){Ze.preencode(e,d.header),e.end++,d.profile&&Oa.preencode(e,d.profile)},encode(d,o){const n=o.profile?1:0;Ze.encode(d,o.header),e.uint.encode(d,n),o.profile&&Oa.encode(d,o.profile)},decode:d=>({header:Ze.decode(d),profile:1&e.uint.decode(d)?Oa.decode(d):null})},_e={preencode(e,d){},encode(e,d){},decode:e=>({})},ed=_e,dd=Ke,od={preencode(d,o){e.fixed32.preencode(d,o.deviceKey),e.fixed32.preencode(d,o.id),dd.preencode(d,o.request)},encode(d,o){e.fixed32.encode(d,o.deviceKey),e.fixed32.encode(d,o.id),dd.encode(d,o.request)},decode:d=>({deviceKey:e.fixed32.decode(d),id:e.fixed32.decode(d),request:dd.decode(d)})},nd=_,cd=Ce,rd={preencode(d,o){nd.preencode(d,o.header),e.fixed32.preencode(d,o.deviceKey),d.end++,o.identity&&cd.preencode(d,o.identity)},encode(d,o){const n=o.identity?1:0;nd.encode(d,o.header),e.fixed32.encode(d,o.deviceKey),e.uint.encode(d,n),o.identity&&cd.encode(d,o.identity)},decode:d=>({header:nd.decode(d),deviceKey:e.fixed32.decode(d),identity:1&e.uint.decode(d)?cd.decode(d):null})},td=_,id={preencode(d,o){td.preencode(d,o.header),e.fixed32.preencode(d,o.deviceKey)},encode(d,o){td.encode(d,o.header),e.fixed32.encode(d,o.deviceKey)},decode:d=>({header:td.decode(d),deviceKey:e.fixed32.decode(d)})},ad=e.frame(C),sd=pe,ld={preencode(d,o){e.fixed32.preencode(d,o.key),ad.preencode(d,o.status),sd.preencode(d,o.profile)},encode(d,o){e.fixed32.encode(d,o.key),ad.encode(d,o.status),sd.encode(d,o.profile)},decode:d=>({key:e.fixed32.decode(d),status:ad.decode(d),profile:sd.decode(d)})},pd=ad,ud=pe,fd={preencode(d,o){e.fixed32.preencode(d,o.key),pd.preencode(d,o.status),ud.preencode(d,o.profile),d.end++,o.proofs&&Na.preencode(d,o.proofs)},encode(d,o){const n=o.proofs?1:0;e.fixed32.encode(d,o.key),pd.encode(d,o.status),ud.encode(d,o.profile),e.uint.encode(d,n),o.proofs&&Na.encode(d,o.proofs)},decode:d=>({key:e.fixed32.decode(d),status:pd.decode(d),profile:ud.decode(d),proofs:1&e.uint.decode(d)?Na.decode(d):null})},md={preencode(d,o){e.fixed32.preencode(d,o.key),d.end++,o.profileAttestation&&e.buffer.preencode(d,o.profileAttestation),o.latestReceipt&&e.buffer.preencode(d,o.latestReceipt)},encode(d,o){const n=(o.profileAttestation?1:0)|(o.latestReceipt?2:0);e.fixed32.encode(d,o.key),e.uint.encode(d,n),o.profileAttestation&&e.buffer.encode(d,o.profileAttestation),o.latestReceipt&&e.buffer.encode(d,o.latestReceipt)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d);return{key:o,profileAttestation:1&n?e.buffer.decode(d):null,latestReceipt:2&n?e.buffer.decode(d):null}}},yd=_,bd=ve,xd={preencode(e,d){yd.preencode(e,d.header),bd.preencode(e,d.member)},encode(e,d){yd.encode(e,d.header),bd.encode(e,d.member)},decode:e=>({header:yd.decode(e),member:bd.decode(e)})},vd=_,kd=e.frame(S),gd={preencode(d,o){vd.preencode(d,o.header),e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.key),kd.preencode(d,o.status)},encode(d,o){vd.encode(d,o.header),e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.key),kd.encode(d,o.status)},decode:d=>({header:vd.decode(d),memberKey:e.fixed32.decode(d),key:e.uint.decode(d),status:kd.decode(d)})},Kd=_,hd={preencode(d,o){Kd.preencode(d,o.header),e.fixed32.preencode(d,o.key),d.end++},encode(d,o){const n=(o.isModerator?1:0)|(o.isAdmin?2:0);Kd.encode(d,o.header),e.fixed32.encode(d,o.key),e.uint.encode(d,n)},decode(d){const o=Kd.decode(d),n=e.fixed32.decode(d),c=e.uint.decode(d);return{header:o,key:n,isModerator:!!(1&c),isAdmin:!!(2&c)}}},wd=_,Rd={preencode(d,o){wd.preencode(d,o.header),e.fixed32.preencode(d,o.key)},encode(d,o){wd.encode(d,o.header),e.fixed32.encode(d,o.key)},decode:d=>({header:wd.decode(d),key:e.fixed32.decode(d)})},Pd={preencode(d,o){e.fixed32.preencode(d,o.key),e.uint.preencode(d,o.mentions)},encode(d,o){e.fixed32.encode(d,o.key),e.uint.encode(d,o.mentions)},decode:d=>({key:e.fixed32.decode(d),mentions:e.uint.decode(d)})},Td={preencode(d,o){d.end++,o.memberKey&&e.fixed32.preencode(d,o.memberKey)},encode(d,o){const n=o.memberKey?1:0;e.uint.encode(d,n),o.memberKey&&e.fixed32.encode(d,o.memberKey)},decode:d=>({memberKey:1&e.uint.decode(d)?e.fixed32.decode(d):null})},Ad=Td,Md={preencode(d,o){d.end++,o.from&&e.string.preencode(d,o.from),o.to&&e.string.preencode(d,o.to)},encode(d,o){const n=(o.from?1:0)|(o.to?2:0);e.uint.encode(d,n),o.from&&e.string.encode(d,o.from),o.to&&e.string.encode(d,o.to)},decode(d){const o=e.uint.decode(d);return{from:1&o?e.string.decode(d):null,to:2&o?e.string.decode(d):null}}},Dd=e.frame(Td),Cd=e.frame(Ad),Sd=e.frame(Md),Id={preencode(d,n){const c=(n.memberJoined?1:0)|(n.memberLeft?2:0)|(n.titleChanged?4:0)|(n.callStarted?8:0)|(n.callHangup?16:0)|(n.callMissed?32:0)|(o>=4&&n.roomAvatarChanged?64:0)|(o>=4&&n.invitationCreated?128:0)|(o>=4&&n.memberRemoved?256:0)|(o>=27&&n.locationShared?512:0);e.uint.preencode(d,c),n.memberJoined&&Dd.preencode(d,n.memberJoined),n.memberLeft&&Cd.preencode(d,n.memberLeft),n.titleChanged&&Sd.preencode(d,n.titleChanged),o>=4&&n.memberRemoved&&Ua.preencode(d,n.memberRemoved),o>=27&&n.locationShared&&Ja.preencode(d,n.locationShared)},encode(d,n){const c=(n.memberJoined?1:0)|(n.memberLeft?2:0)|(n.titleChanged?4:0)|(n.callStarted?8:0)|(n.callHangup?16:0)|(n.callMissed?32:0)|(o>=4&&n.roomAvatarChanged?64:0)|(o>=4&&n.invitationCreated?128:0)|(o>=4&&n.memberRemoved?256:0)|(o>=27&&n.locationShared?512:0);e.uint.encode(d,c),n.memberJoined&&Dd.encode(d,n.memberJoined),n.memberLeft&&Cd.encode(d,n.memberLeft),n.titleChanged&&Sd.encode(d,n.titleChanged),o>=4&&n.memberRemoved&&Ua.encode(d,n.memberRemoved),o>=27&&n.locationShared&&Ja.encode(d,n.locationShared)},decode(d){const n=e.uint.decode(d);return{memberJoined:1&n?Dd.decode(d):null,memberLeft:2&n?Cd.decode(d):null,titleChanged:4&n?Sd.decode(d):null,callStarted:!!(8&n),callHangup:!!(16&n),callMissed:!!(32&n),roomAvatarChanged:o>=4&&!!(64&n),invitationCreated:o>=4&&!!(128&n),memberRemoved:o>=4&&256&n?Ua.decode(d):null,locationShared:o>=27&&512&n?Ja.decode(d):null}}},jd={preencode(e,d){e.end++,o>=27&&d.locationShared&&Wa.preencode(e,d.locationShared)},encode(d,n){const c=(n.callStarted?1:0)|(n.callHangup?2:0)|(n.callMissed?4:0)|(o>=27&&n.locationShared?8:0);e.uint.encode(d,c),o>=27&&n.locationShared&&Wa.encode(d,n.locationShared)},decode(d){const n=e.uint.decode(d);return{callStarted:!!(1&n),callHangup:!!(2&n),callMissed:!!(4&n),locationShared:o>=27&&8&n?Wa.decode(d):null}}},Ld={preencode(d,o){e.uint.preencode(d,o.start),e.uint.preencode(d,o.length)},encode(d,o){e.uint.encode(d,o.start),e.uint.encode(d,o.length)},decode:d=>({start:e.uint.decode(d),length:e.uint.decode(d)})},Fd=e.frame(Ld),qd={preencode(d,o){Fd.preencode(d,o.range),e.string.preencode(d,o.content)},encode(d,o){Fd.encode(d,o.range),e.string.encode(d,o.content)},decode:d=>({range:Fd.decode(d),content:e.string.decode(d)})},Bd=Fd,Ed={preencode(d,o){Bd.preencode(d,o.range),e.fixed32.preencode(d,o.memberKey)},encode(d,o){Bd.encode(d,o.range),e.fixed32.encode(d,o.memberKey)},decode:d=>({range:Bd.decode(d),memberKey:e.fixed32.decode(d)})},Vd=K,Od=e.array(e.uint),Nd={preencode(d,n){d.end++,n.title&&e.string.preencode(d,n.title),n.description&&e.string.preencode(d,n.description),n.file&&Vd.preencode(d,n.file),o>=12&&n.files&&Od.preencode(d,n.files)},encode(d,n){const c=(n.title?1:0)|(n.description?2:0)|(n.file?4:0)|(o>=12&&n.files?8:0);e.uint.encode(d,c),n.title&&e.string.encode(d,n.title),n.description&&e.string.encode(d,n.description),n.file&&Vd.encode(d,n.file),o>=12&&n.files&&Od.encode(d,n.files)},decode(d){const n=e.uint.decode(d);return{title:1&n?e.string.decode(d):null,description:2&n?e.string.decode(d):null,file:4&n?Vd.decode(d):null,files:o>=12&&8&n?Od.decode(d):null}}},Ud=Fd,Jd=e.frame(Nd),Wd={preencode(d,o){Ud.preencode(d,o.range),e.string.preencode(d,o.url),d.end++,o.preview&&Jd.preencode(d,o.preview)},encode(d,o){const n=o.preview?1:0;Ud.encode(d,o.range),e.string.encode(d,o.url),e.uint.encode(d,n),o.preview&&Jd.encode(d,o.preview)},decode:d=>({range:Ud.decode(d),url:e.string.decode(d),preview:1&e.uint.decode(d)?Jd.decode(d):null})},zd=e.array(e.frame(Ed)),Hd=e.array(e.frame(Wd)),Gd=Hd,Qd=e.array(e.frame(Ld)),Xd=Qd,Yd=Qd,Zd=e.array(e.frame(qd)),$d=Qd,_d=Qd,eo={preencode(d,n){const c=(n.mention?1:0)|(n.httpLink?2:0)|(n.pearLink?4:0)|(n.bold?8:0)|(n.italic?16:0)|(n.code?32:0)|(n.emoji?64:0)|(n.codeBlock?128:0)|(n.strike?256:0)|(o>=17&&n.translation?512:0);e.uint.preencode(d,c),n.mention&&zd.preencode(d,n.mention),n.httpLink&&Hd.preencode(d,n.httpLink),n.pearLink&&Gd.preencode(d,n.pearLink),n.bold&&Qd.preencode(d,n.bold),n.italic&&Xd.preencode(d,n.italic),n.code&&Yd.preencode(d,n.code),n.emoji&&Zd.preencode(d,n.emoji),n.codeBlock&&$d.preencode(d,n.codeBlock),n.strike&&_d.preencode(d,n.strike),o>=17&&n.translation&&za.preencode(d,n.translation)},encode(d,n){const c=(n.mention?1:0)|(n.httpLink?2:0)|(n.pearLink?4:0)|(n.bold?8:0)|(n.italic?16:0)|(n.code?32:0)|(n.emoji?64:0)|(n.codeBlock?128:0)|(n.strike?256:0)|(o>=17&&n.translation?512:0);e.uint.encode(d,c),n.mention&&zd.encode(d,n.mention),n.httpLink&&Hd.encode(d,n.httpLink),n.pearLink&&Gd.encode(d,n.pearLink),n.bold&&Qd.encode(d,n.bold),n.italic&&Xd.encode(d,n.italic),n.code&&Yd.encode(d,n.code),n.emoji&&Zd.encode(d,n.emoji),n.codeBlock&&$d.encode(d,n.codeBlock),n.strike&&_d.encode(d,n.strike),o>=17&&n.translation&&za.encode(d,n.translation)},decode(d){const n=e.uint.decode(d);return{mention:1&n?zd.decode(d):null,httpLink:2&n?Hd.decode(d):null,pearLink:4&n?Gd.decode(d):null,bold:8&n?Qd.decode(d):null,italic:16&n?Xd.decode(d):null,code:32&n?Yd.decode(d):null,emoji:64&n?Zd.decode(d):null,codeBlock:128&n?$d.decode(d):null,strike:256&n?_d.decode(d):null,translation:o>=17&&512&n?za.decode(d):null}}},oo=e.array(e.frame(g)),no=e.frame(eo),co=e.frame(jd),ro={preencode(d,o){d.end++,o.text&&e.string.preencode(d,o.text),o.files&&oo.preencode(d,o.files),o.display&&no.preencode(d,o.display),o.replyTo&&c.preencode(d,o.replyTo),o.parent&&c.preencode(d,o.parent),o.event&&co.preencode(d,o.event)},encode(d,n){const r=(n.text?1:0)|(n.files?2:0)|(n.display?4:0)|(n.replyTo?8:0)|(n.parent?16:0)|(n.event?32:0)|(o>=27&&n.forwarded?64:0);e.uint.encode(d,r),n.text&&e.string.encode(d,n.text),n.files&&oo.encode(d,n.files),n.display&&no.encode(d,n.display),n.replyTo&&c.encode(d,n.replyTo),n.parent&&c.encode(d,n.parent),n.event&&co.encode(d,n.event)},decode(d){const n=e.uint.decode(d);return{text:1&n?e.string.decode(d):null,files:2&n?oo.decode(d):null,display:4&n?no.decode(d):null,replyTo:8&n?c.decode(d):null,parent:16&n?c.decode(d):null,event:32&n?co.decode(d):null,forwarded:o>=27&&!!(64&n)}}},to=Od,io=no,ao={preencode(d,o){d.end++,o.text&&e.string.preencode(d,o.text),o.files&&to.preencode(d,o.files),o.display&&io.preencode(d,o.display),o.replyTo&&c.preencode(d,o.replyTo),o.parent&&c.preencode(d,o.parent)},encode(d,n){const r=(n.text?1:0)|(n.files?2:0)|(n.display?4:0)|(n.replyTo?8:0)|(n.parent?16:0)|(o>=27&&n.forwarded?32:0);e.uint.encode(d,r),n.text&&e.string.encode(d,n.text),n.files&&to.encode(d,n.files),n.display&&io.encode(d,n.display),n.replyTo&&c.encode(d,n.replyTo),n.parent&&c.encode(d,n.parent)},decode(d){const n=e.uint.decode(d);return{text:1&n?e.string.decode(d):null,files:2&n?to.decode(d):null,display:4&n?io.decode(d):null,replyTo:8&n?c.decode(d):null,parent:16&n?c.decode(d):null,forwarded:o>=27&&!!(32&n)}}},so=oo,lo=no,po={preencode(d,o){d.end++,o.text&&e.string.preencode(d,o.text),o.files&&so.preencode(d,o.files),o.display&&lo.preencode(d,o.display),o.replyTo&&c.preencode(d,o.replyTo),o.parent&&c.preencode(d,o.parent)},encode(d,n){const r=(n.text?1:0)|(n.files?2:0)|(n.display?4:0)|(n.replyTo?8:0)|(n.parent?16:0)|(o>=27&&n.forwarded?32:0);e.uint.encode(d,r),n.text&&e.string.encode(d,n.text),n.files&&so.encode(d,n.files),n.display&&lo.encode(d,n.display),n.replyTo&&c.encode(d,n.replyTo),n.parent&&c.encode(d,n.parent)},decode(d){const n=e.uint.decode(d);return{text:1&n?e.string.decode(d):null,files:2&n?so.decode(d):null,display:4&n?lo.decode(d):null,replyTo:8&n?c.decode(d):null,parent:16&n?c.decode(d):null,forwarded:o>=27&&!!(32&n)}}},uo={preencode(e,d){e.end++},encode(d,o){const n=(o.isEdited?1:0)|(o.isDeleted?2:0)|(o.isPinned?4:0);e.uint.encode(d,n)},decode(d){const o=e.uint.decode(d);return{isEdited:!!(1&o),isDeleted:!!(2&o),isPinned:!!(4&o)}}},fo={preencode(d,o){e.uint.preencode(d,o.thread),e.uint.preencode(d,o.index)},encode(d,o){e.uint.encode(d,o.thread),e.uint.encode(d,o.index)},decode:d=>({thread:e.uint.decode(d),index:e.uint.decode(d)})},mo=e.frame(N),yo={preencode(d,o){e.uint.preencode(d,o.id),e.uint.preencode(d,o.count),d.end++,o.parent&&c.preencode(d,o.parent),o.stats&&mo.preencode(d,o.stats)},encode(d,o){const n=(o.parent?1:0)|(o.stats?2:0);e.uint.encode(d,o.id),e.uint.encode(d,o.count),e.uint.encode(d,n),o.parent&&c.encode(d,o.parent),o.stats&&mo.encode(d,o.stats)},decode(d){const o=e.uint.decode(d),n=e.uint.decode(d),r=e.uint.decode(d);return{id:o,count:n,parent:1&r?c.decode(d):null,stats:2&r?mo.decode(d):null}}},bo=e.frame(uo),xo=e.frame(ao),vo=e.frame(Id),ko={preencode(d,o){fo.preencode(d,o.id),c.preencode(d,o.oplog),e.uint.preencode(d,o.clock),e.uint.preencode(d,o.timestamp),d.end++,o.editedAt&&e.uint.preencode(d,o.editedAt),bo.preencode(d,o.status),o.message&&xo.preencode(d,o.message),o.event&&vo.preencode(d,o.event)},encode(d,o){const n=(o.editedAt?1:0)|(o.message?2:0)|(o.event?4:0);fo.encode(d,o.id),c.encode(d,o.oplog),e.uint.encode(d,o.clock),e.uint.encode(d,o.timestamp),e.uint.encode(d,n),o.editedAt&&e.uint.encode(d,o.editedAt),bo.encode(d,o.status),o.message&&xo.encode(d,o.message),o.event&&vo.encode(d,o.event)},decode(d){const o=fo.decode(d),n=c.decode(d),r=e.uint.decode(d),t=e.uint.decode(d),i=e.uint.decode(d);return{id:o,oplog:n,clock:r,timestamp:t,editedAt:1&i?e.uint.decode(d):0,status:bo.decode(d),message:2&i?xo.decode(d):null,event:4&i?vo.decode(d):null}}},go=bo,Ko=e.frame(po),ho=vo,wo={preencode(d,o){fo.preencode(d,o.id),c.preencode(d,o.oplog),e.uint.preencode(d,o.clock),e.uint.preencode(d,o.timestamp),d.end++,o.editedAt&&e.uint.preencode(d,o.editedAt),go.preencode(d,o.status),o.message&&Ko.preencode(d,o.message),o.event&&ho.preencode(d,o.event)},encode(d,o){const n=(o.editedAt?1:0)|(o.message?2:0)|(o.event?4:0);fo.encode(d,o.id),c.encode(d,o.oplog),e.uint.encode(d,o.clock),e.uint.encode(d,o.timestamp),e.uint.encode(d,n),o.editedAt&&e.uint.encode(d,o.editedAt),go.encode(d,o.status),o.message&&Ko.encode(d,o.message),o.event&&ho.encode(d,o.event)},decode(d){const o=fo.decode(d),n=c.decode(d),r=e.uint.decode(d),t=e.uint.decode(d),i=e.uint.decode(d);return{id:o,oplog:n,clock:r,timestamp:t,editedAt:1&i?e.uint.decode(d):0,status:go.decode(d),message:2&i?Ko.decode(d):null,event:4&i?ho.decode(d):null}}},Ro=_,Po=e.frame(ro),To={preencode(e,d){Ro.preencode(e,d.header),Po.preencode(e,d.message)},encode(e,d){Ro.encode(e,d.header),Po.encode(e,d.message)},decode:e=>({header:Ro.decode(e),message:Po.decode(e)})},Ao=_,Mo={preencode(e,d){Ao.preencode(e,d.header),c.preencode(e,d.oplog)},encode(e,d){Ao.encode(e,d.header),c.encode(e,d.oplog)},decode:e=>({header:Ao.decode(e),oplog:c.decode(e)})},Do=_,Co=Po,So={preencode(e,d){Do.preencode(e,d.header),c.preencode(e,d.oplog),Co.preencode(e,d.message)},encode(e,d){Do.encode(e,d.header),c.encode(e,d.oplog),Co.encode(e,d.message)},decode:e=>({header:Do.decode(e),oplog:c.decode(e),message:Co.decode(e)})},Io=_,jo={preencode(e,d){Io.preencode(e,d.header),c.preencode(e,d.oplog),e.end++},encode(d,o){const n=o.isPinned?1:0;Io.encode(d,o.header),c.encode(d,o.oplog),e.uint.encode(d,n)},decode:d=>({header:Io.decode(d),oplog:c.decode(d),isPinned:!!(1&e.uint.decode(d))})},Lo={preencode(d,o){fo.preencode(d,o.id),e.fixed32.preencode(d,o.sender),e.uint.preencode(d,o.clock),e.string.preencode(d,o.reaction)},encode(d,o){fo.encode(d,o.id),e.fixed32.encode(d,o.sender),e.uint.encode(d,o.clock),e.string.encode(d,o.reaction)},decode:d=>({id:fo.decode(d),sender:e.fixed32.decode(d),clock:e.uint.decode(d),reaction:e.string.decode(d)})},Fo={preencode(d,o){e.string.preencode(d,o.text),e.uint.preencode(d,o.count)},encode(d,o){e.string.encode(d,o.text),e.uint.encode(d,o.count)},decode:d=>({text:e.string.decode(d),count:e.uint.decode(d)})},qo=e.array(e.frame(Fo)),Bo={preencode(d,n){fo.preencode(d,n.id),e.uint.preencode(d,n.total),qo.preencode(d,n.reactions),d.end++,o>=17&&n.editedAt&&e.uint.preencode(d,n.editedAt)},encode(d,n){const c=o>=17&&n.editedAt?1:0;fo.encode(d,n.id),e.uint.encode(d,n.total),qo.encode(d,n.reactions),e.uint.encode(d,c),o>=17&&n.editedAt&&e.uint.encode(d,n.editedAt)},decode(d){const n=fo.decode(d),c=e.uint.decode(d),r=qo.decode(d),t=d.start<d.end?e.uint.decode(d):0;return{id:n,total:c,reactions:r,editedAt:o>=17&&1&t?e.uint.decode(d):0}}},Eo=_,Vo={preencode(d,o){Eo.preencode(d,o.header),c.preencode(d,o.oplog),e.string.preencode(d,o.reaction)},encode(d,o){Eo.encode(d,o.header),c.encode(d,o.oplog),e.string.encode(d,o.reaction)},decode:d=>({header:Eo.decode(d),oplog:c.decode(d),reaction:e.string.decode(d)})},Oo=_,No={preencode(d,o){Oo.preencode(d,o.header),c.preencode(d,o.oplog),e.string.preencode(d,o.reaction)},encode(d,o){Oo.encode(d,o.header),c.encode(d,o.oplog),e.string.encode(d,o.reaction)},decode:d=>({header:Oo.decode(d),oplog:c.decode(d),reaction:e.string.decode(d)})},Uo=_,Jo=e.frame(Z),Wo={preencode(d,o){Uo.preencode(d,o.header),e.uint.preencode(d,o.key),Jo.preencode(d,o.config)},encode(d,o){Uo.encode(d,o.header),e.uint.encode(d,o.key),Jo.encode(d,o.config)},decode:d=>({header:Uo.decode(d),key:e.uint.decode(d),config:Jo.decode(d)})},zo={preencode(d,o){e.fixed32.preencode(d,o.memberKey),e.string.preencode(d,o.displayName),d.end++,o.avatar&&Ha.preencode(d,o.avatar)},encode(d,o){const n=o.avatar?1:0;e.fixed32.encode(d,o.memberKey),e.string.encode(d,o.displayName),e.uint.encode(d,n),o.avatar&&Ha.encode(d,o.avatar)},decode:d=>({memberKey:e.fixed32.decode(d),displayName:e.string.decode(d),avatar:1&e.uint.decode(d)?Ha.decode(d):null})},Ho={preencode(d,o){e.fixed32.preencode(d,o.key),d.end++,o.username&&e.string.preencode(d,o.username)},encode(d,o){const n=o.username?1:0;e.fixed32.encode(d,o.key),e.uint.encode(d,n),o.username&&e.string.encode(d,o.username)},decode:d=>({key:e.fixed32.decode(d),username:1&e.uint.decode(d)?e.string.decode(d):null})},Go=e.frame(Ho),Qo={preencode(d,o){e.fixed32.preencode(d,o.publicKey),d.end++,o.discoveryCoreKey&&e.fixed32.preencode(d,o.discoveryCoreKey),o.userRegistry&&Go.preencode(d,o.userRegistry)},encode(d,o){const n=(o.discoveryCoreKey?1:0)|(o.userRegistry?2:0);e.fixed32.encode(d,o.publicKey),e.uint.encode(d,n),o.discoveryCoreKey&&e.fixed32.encode(d,o.discoveryCoreKey),o.userRegistry&&Go.encode(d,o.userRegistry)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d);return{publicKey:o,discoveryCoreKey:1&n?e.fixed32.decode(d):null,userRegistry:2&n?Go.decode(d):null}}},Xo=_,Yo=e.frame(G),Zo=e.frame(Q),$o=Jo,_o=e.frame(Qo),en=xe,dn=e.array(e.frame(ue)),on={preencode(e,d){Xo.preencode(e,d.header),Yo.preencode(e,d.digest),Zo.preencode(e,d.capabilities),e.end++,d.config&&$o.preencode(e,d.config),d.identity&&_o.preencode(e,d.identity),d.bootstrapDevice&&en.preencode(e,d.bootstrapDevice),d.initialMembers&&dn.preencode(e,d.initialMembers)},encode(d,o){const n=(o.config?1:0)|(o.identity?2:0)|(o.bootstrapDevice?4:0)|(o.initialMembers?8:0);Xo.encode(d,o.header),Yo.encode(d,o.digest),Zo.encode(d,o.capabilities),e.uint.encode(d,n),o.config&&$o.encode(d,o.config),o.identity&&_o.encode(d,o.identity),o.bootstrapDevice&&en.encode(d,o.bootstrapDevice),o.initialMembers&&dn.encode(d,o.initialMembers)},decode(d){const o=Xo.decode(d),n=Yo.decode(d),c=Zo.decode(d),r=e.uint.decode(d);return{header:o,digest:n,capabilities:c,config:1&r?$o.decode(d):null,identity:2&r?_o.decode(d):null,bootstrapDevice:4&r?en.decode(d):null,initialMembers:8&r?dn.decode(d):null}}},nn=_,cn={preencode(d,o){nn.preencode(d,o.header),e.uint.preencode(d,o.version)},encode(d,o){nn.encode(d,o.header),e.uint.encode(d,o.version)},decode:d=>({header:nn.decode(d),version:e.uint.decode(d)})},rn=_,tn=H,an={preencode(d,o){rn.preencode(d,o.header),e.uint.preencode(d,o.key),tn.preencode(d,o.settings)},encode(d,o){rn.encode(d,o.header),e.uint.encode(d,o.key),tn.encode(d,o.settings)},decode:d=>({header:rn.decode(d),key:e.uint.decode(d),settings:tn.decode(d)})},sn={preencode(d,o){e.fixed32.preencode(d,o.memberKey),Ga.preencode(d,o.status),d.end++,o.mailbox&&e.fixed32.preencode(d,o.mailbox),o.roomKey&&e.fixed32.preencode(d,o.roomKey)},encode(d,o){const n=(o.mailbox?1:0)|(o.roomKey?2:0);e.fixed32.encode(d,o.memberKey),Ga.encode(d,o.status),e.uint.encode(d,n),o.mailbox&&e.fixed32.encode(d,o.mailbox),o.roomKey&&e.fixed32.encode(d,o.roomKey)},decode(d){const o=e.fixed32.decode(d),n=Ga.decode(d),c=e.uint.decode(d);return{memberKey:o,status:n,mailbox:1&c?e.fixed32.decode(d):null,roomKey:2&c?e.fixed32.decode(d):null}}},ln={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.buffer.preencode(d,o.encryptionKey),e.fixed32.preencode(d,o.seed),n.preencode(d,o.initiator),e.fixed32.preencode(d,o.fastForwardTo)},encode(d,o){e.fixed32.encode(d,o.roomKey),e.buffer.encode(d,o.encryptionKey),e.fixed32.encode(d,o.seed),n.encode(d,o.initiator),e.fixed32.encode(d,o.fastForwardTo)},decode:d=>({roomKey:e.fixed32.decode(d),encryptionKey:e.buffer.decode(d),seed:e.fixed32.decode(d),initiator:n.decode(d),fastForwardTo:e.fixed32.decode(d)})},pn=e.array(e.frame(ln)),un=Y,fn={preencode(e,d){pn.preencode(e,d.sharedRooms),un.preencode(e,d.blockedContacts)},encode(e,d){pn.encode(e,d.sharedRooms),un.encode(e,d.blockedContacts)},decode:e=>({sharedRooms:pn.decode(e),blockedContacts:un.decode(e)})},mn=_o,yn={preencode(e,d){mn.preencode(e,d.identity)},encode(e,d){mn.encode(e,d.identity)},decode:e=>({identity:mn.decode(e)})},bn={preencode(d,o){e.uint.preencode(d,o.rooms),e.uint.preencode(d,o.contacts)},encode(d,o){e.uint.encode(d,o.rooms),e.uint.encode(d,o.contacts)},decode:d=>({rooms:e.uint.decode(d),contacts:e.uint.decode(d)})},xn={preencode(d,o){e.uint.preencode(d,o.rooms),e.uint.preencode(d,o.contactRequests)},encode(d,o){e.uint.encode(d,o.rooms),e.uint.encode(d,o.contactRequests)},decode:d=>({rooms:e.uint.decode(d),contactRequests:e.uint.decode(d)})},vn={preencode(d,o){e.buffer.preencode(d,o.entropy)},encode(d,o){e.buffer.encode(d,o.entropy)},decode:d=>({entropy:e.buffer.decode(d)})},kn={preencode(d,o){e.fixed32.preencode(d,o.publicKey),e.fixed32.preencode(d,o.devicePublicKey),e.fixed32.preencode(d,o.writerKey)},encode(d,o){e.fixed32.encode(d,o.publicKey),e.fixed32.encode(d,o.devicePublicKey),e.fixed32.encode(d,o.writerKey)},decode:d=>({publicKey:e.fixed32.decode(d),devicePublicKey:e.fixed32.decode(d),writerKey:e.fixed32.decode(d)})},gn=e.frame(kn),Kn={preencode(d,c){e.fixed32.preencode(d,c.id),e.fixed32.preencode(d,c.invitationSeed),e.fixed32.preencode(d,c.mailbox),t.preencode(d,c.responseKeyPair),n.preencode(d,c.initiator),n.preencode(d,c.inviter),d.end++,c.identity&&gn.preencode(d,c.identity),o>=29&&c.buildType&&vi.preencode(d,c.buildType)},encode(d,c){const r=(c.identity?1:0)|(o>=29&&c.buildType?2:0);e.fixed32.encode(d,c.id),e.fixed32.encode(d,c.invitationSeed),e.fixed32.encode(d,c.mailbox),t.encode(d,c.responseKeyPair),n.encode(d,c.initiator),n.encode(d,c.inviter),e.uint.encode(d,r),c.identity&&gn.encode(d,c.identity),o>=29&&c.buildType&&vi.encode(d,c.buildType)},decode(d){const c=e.fixed32.decode(d),r=e.fixed32.decode(d),i=e.fixed32.decode(d),a=t.decode(d),s=n.decode(d),l=n.decode(d),p=e.uint.decode(d);return{id:c,invitationSeed:r,mailbox:i,responseKeyPair:a,initiator:s,inviter:l,identity:1&p?gn.decode(d):null,buildType:o>=29&&2&p?vi.decode(d):null}}},hn=_,wn={preencode(d,o){hn.preencode(d,o.header),e.buffer.preencode(d,o.blindResponse)},encode(d,o){hn.encode(d,o.header),e.buffer.encode(d,o.blindResponse)},decode:d=>({header:hn.decode(d),blindResponse:e.buffer.decode(d)})},Rn=_,Pn=e.frame(Kn),Tn={preencode(e,d){Rn.preencode(e,d.header),Pn.preencode(e,d.invitation)},encode(e,d){Rn.encode(e,d.header),Pn.encode(e,d.invitation)},decode:e=>({header:Rn.decode(e),invitation:Pn.decode(e)})},An=_,Mn={preencode(d,o){An.preencode(d,o.header),e.fixed32.preencode(d,o.id)},encode(d,o){An.encode(d,o.header),e.fixed32.encode(d,o.id)},decode:d=>({header:An.decode(d),id:e.fixed32.decode(d)})},Dn={preencode(d,o){e.fixed32.preencode(d,o.publicKey),e.fixed32.preencode(d,o.devicePublicKey),d.end++,o.privateProfileKey&&e.fixed32.preencode(d,o.privateProfileKey),o.deviceKeyPair&&t.preencode(d,o.deviceKeyPair),e.buffer.preencode(d,o.deviceProof)},encode(d,o){const n=(o.privateProfileKey?1:0)|(o.deviceKeyPair?2:0);e.fixed32.encode(d,o.publicKey),e.fixed32.encode(d,o.devicePublicKey),e.uint.encode(d,n),o.privateProfileKey&&e.fixed32.encode(d,o.privateProfileKey),o.deviceKeyPair&&t.encode(d,o.deviceKeyPair),e.buffer.encode(d,o.deviceProof)},decode(d){const o=e.fixed32.decode(d),n=e.fixed32.decode(d),c=e.uint.decode(d);return{publicKey:o,devicePublicKey:n,privateProfileKey:1&c?e.fixed32.decode(d):null,deviceKeyPair:2&c?t.decode(d):null,deviceProof:e.buffer.decode(d)}}},Cn={preencode(e,d){e.end++},encode(d,n){const c=(n.isActive?1:0)|(n.isFullyMuted?2:0)|(n.isMentionsOnlyMuted?4:0)|(o>=14&&n.isReadOnly?8:0)|(o>=27&&n.isFavorite?16:0);e.uint.encode(d,c)},decode(d){const n=e.uint.decode(d);return{isActive:!!(1&n),isFullyMuted:!!(2&n),isMentionsOnlyMuted:!!(4&n),isReadOnly:o>=14&&!!(8&n),isFavorite:o>=27&&!!(16&n)}}},Sn=e.frame(Cn),In=e.frame(Dn),jn=gn,Ln={preencode(d,c){e.fixed32.preencode(d,c.roomKey),e.buffer.preencode(d,c.encryptionKey),e.fixed32.preencode(d,c.mailbox),Sn.preencode(d,c.status),e.uint.preencode(d,c.clock),d.end++,c.initiator&&n.preencode(d,c.initiator),c.fastForwardTo&&e.fixed32.preencode(d,c.fastForwardTo),c.identitySwap&&In.preencode(d,c.identitySwap),o>=9&&c.identitySwapV2&&jn.preencode(d,c.identitySwapV2),o>=15&&c.contact&&e.fixed32.preencode(d,c.contact)},encode(d,c){const r=(c.initiator?1:0)|(c.fastForwardTo?2:0)|(c.identitySwap?4:0)|(o>=9&&c.identitySwapV2?8:0)|(o>=15&&c.contact?16:0);e.fixed32.encode(d,c.roomKey),e.buffer.encode(d,c.encryptionKey),e.fixed32.encode(d,c.mailbox),Sn.encode(d,c.status),e.uint.encode(d,c.clock),e.uint.encode(d,r),c.initiator&&n.encode(d,c.initiator),c.fastForwardTo&&e.fixed32.encode(d,c.fastForwardTo),c.identitySwap&&In.encode(d,c.identitySwap),o>=9&&c.identitySwapV2&&jn.encode(d,c.identitySwapV2),o>=15&&c.contact&&e.fixed32.encode(d,c.contact)},decode(d){const c=e.fixed32.decode(d),r=e.buffer.decode(d),t=e.fixed32.decode(d),i=Sn.decode(d),a=e.uint.decode(d),s=e.uint.decode(d);return{roomKey:c,encryptionKey:r,mailbox:t,status:i,clock:a,initiator:1&s?n.decode(d):null,fastForwardTo:2&s?e.fixed32.decode(d):null,identitySwap:4&s?In.decode(d):null,identitySwapV2:o>=9&&8&s?jn.decode(d):null,contact:o>=15&&16&s?e.fixed32.decode(d):null}}},Fn=_,qn={preencode(d,o){Fn.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),e.buffer.preencode(d,o.encryptionKey),e.fixed32.preencode(d,o.mailbox),d.end++,o.fastForwardTo&&e.fixed32.preencode(d,o.fastForwardTo),o.initiator&&n.preencode(d,o.initiator),o.dm&&e.fixed32.preencode(d,o.dm)},encode(d,c){const r=(c.fastForwardTo?1:0)|(c.initiator?2:0)|(c.dm?4:0)|(o>=14&&c.isReadOnly?8:0);Fn.encode(d,c.header),e.fixed32.encode(d,c.roomKey),e.buffer.encode(d,c.encryptionKey),e.fixed32.encode(d,c.mailbox),e.uint.encode(d,r),c.fastForwardTo&&e.fixed32.encode(d,c.fastForwardTo),c.initiator&&n.encode(d,c.initiator),c.dm&&e.fixed32.encode(d,c.dm)},decode(d){const c=Fn.decode(d),r=e.fixed32.decode(d),t=e.buffer.decode(d),i=e.fixed32.decode(d),a=e.uint.decode(d);return{header:c,roomKey:r,encryptionKey:t,mailbox:i,fastForwardTo:1&a?e.fixed32.decode(d):null,initiator:2&a?n.decode(d):null,dm:4&a?e.fixed32.decode(d):null,isReadOnly:o>=14&&!!(8&a)}}},Bn=_,En={preencode(d,o){Bn.preencode(d,o.header),e.fixed32.preencode(d,o.discoveryKey)},encode(d,o){Bn.encode(d,o.header),e.fixed32.encode(d,o.discoveryKey)},decode:d=>({header:Bn.decode(d),discoveryKey:e.fixed32.decode(d)})},Vn=_,On=Sn,Nn={preencode(d,o){Vn.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),e.uint.preencode(d,o.key),On.preencode(d,o.status)},encode(d,o){Vn.encode(d,o.header),e.fixed32.encode(d,o.roomKey),e.uint.encode(d,o.key),On.encode(d,o.status)},decode:d=>({header:Vn.decode(d),roomKey:e.fixed32.decode(d),key:e.uint.decode(d),status:On.decode(d)})},Un={preencode(e,d){e.end++},encode(d,o){const n=o.isBlocked?1:0;e.uint.encode(d,n)},decode:d=>({isBlocked:!!(1&e.uint.decode(d))})},Jn={preencode(d,o){e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.clock),Qa.preencode(d,o.status),d.end++,o.mailbox&&e.fixed32.preencode(d,o.mailbox),o.roomKey&&e.fixed32.preencode(d,o.roomKey)},encode(d,o){const n=(o.mailbox?1:0)|(o.roomKey?2:0);e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.clock),Qa.encode(d,o.status),e.uint.encode(d,n),o.mailbox&&e.fixed32.encode(d,o.mailbox),o.roomKey&&e.fixed32.encode(d,o.roomKey)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d),c=Qa.decode(d),r=e.uint.decode(d);return{memberKey:o,clock:n,status:c,mailbox:1&r?e.fixed32.decode(d):null,roomKey:2&r?e.fixed32.decode(d):null}}},Wn=_,zn=e.frame(sn),Hn={preencode(e,d){Wn.preencode(e,d.header),zn.preencode(e,d.contact)},encode(e,d){Wn.encode(e,d.header),zn.encode(e,d.contact)},decode:e=>({header:Wn.decode(e),contact:zn.decode(e)})},Gn=_,Qn={preencode(d,o){Gn.preencode(d,o.header),e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.key),Xa.preencode(d,o.status)},encode(d,o){Gn.encode(d,o.header),e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.key),Xa.encode(d,o.status)},decode:d=>({header:Gn.decode(d),memberKey:e.fixed32.decode(d),key:e.uint.decode(d),status:Xa.decode(d)})},Xn=_,Yn={preencode(d,o){Xn.preencode(d,o.header),e.fixed32.preencode(d,o.memberKey)},encode(d,o){Xn.encode(d,o.header),e.fixed32.encode(d,o.memberKey)},decode:d=>({header:Xn.decode(d),memberKey:e.fixed32.decode(d)})},Zn={preencode(e,d){e.end++},encode(d,o){const n=(o.isPending?1:0)|(o.isAccepted?2:0)|(o.isRejected?4:0)|(o.isDiscarded?8:0)|(o.isSeen?16:0);e.uint.encode(d,n)},decode(d){const o=e.uint.decode(d);return{isPending:!!(1&o),isAccepted:!!(2&o),isRejected:!!(4&o),isDiscarded:!!(8&o),isSeen:!!(16&o)}}},$n=ve,_n=e.frame(i),ec={preencode(d,o){$n.preencode(d,o.sender),_n.preencode(d,o.keys),e.fixed32.preencode(d,o.mailbox),d.end++,o.message&&e.string.preencode(d,o.message)},encode(d,o){const n=o.message?1:0;$n.encode(d,o.sender),_n.encode(d,o.keys),e.fixed32.encode(d,o.mailbox),e.uint.encode(d,n),o.message&&e.string.encode(d,o.message)},decode:d=>({sender:$n.decode(d),keys:_n.decode(d),mailbox:e.fixed32.decode(d),message:1&e.uint.decode(d)?e.string.decode(d):null})},dc=e.frame(ec),oc={preencode(e,d){dc.preencode(e,d.body),ce.preencode(e,d.attestation)},encode(e,d){dc.encode(e,d.body),ce.encode(e,d.attestation)},decode:e=>({body:dc.decode(e),attestation:ce.decode(e)})},nc=pe,cc=e.frame(Zn),rc=_n,tc={preencode(d,n){e.fixed32.preencode(d,n.memberKey),e.uint.preencode(d,n.clock),nc.preencode(d,n.sender),cc.preencode(d,n.status),rc.preencode(d,n.keys),e.fixed32.preencode(d,n.mailbox),d.end++,n.message&&e.string.preencode(d,n.message),o>=17&&n.sentAt&&e.uint.preencode(d,n.sentAt)},encode(d,n){const c=(n.message?1:0)|(o>=17&&n.sentAt?2:0);e.fixed32.encode(d,n.memberKey),e.uint.encode(d,n.clock),nc.encode(d,n.sender),cc.encode(d,n.status),rc.encode(d,n.keys),e.fixed32.encode(d,n.mailbox),e.uint.encode(d,c),n.message&&e.string.encode(d,n.message),o>=17&&n.sentAt&&e.uint.encode(d,n.sentAt)},decode(d){const n=e.fixed32.decode(d),c=e.uint.decode(d),r=nc.decode(d),t=cc.decode(d),i=rc.decode(d),a=e.fixed32.decode(d),s=e.uint.decode(d);return{memberKey:n,clock:c,sender:r,status:t,keys:i,mailbox:a,message:1&s?e.string.decode(d):null,sentAt:o>=17&&2&s?e.uint.decode(d):0}}},ic=_,ac={preencode(d,o){ic.preencode(d,o.header),e.buffer.preencode(d,o.blindRequest)},encode(d,o){ic.encode(d,o.header),e.buffer.encode(d,o.blindRequest)},decode:d=>({header:ic.decode(d),blindRequest:e.buffer.decode(d)})},sc=_,lc=cc,pc={preencode(d,n){sc.preencode(d,n.header),e.fixed32.preencode(d,n.memberKey),e.uint.preencode(d,n.key),lc.preencode(d,n.status),d.end++,o>=15&&n.roomKey&&e.fixed32.preencode(d,n.roomKey)},encode(d,n){const c=o>=15&&n.roomKey?1:0;sc.encode(d,n.header),e.fixed32.encode(d,n.memberKey),e.uint.encode(d,n.key),lc.encode(d,n.status),e.uint.encode(d,c),o>=15&&n.roomKey&&e.fixed32.encode(d,n.roomKey)},decode(d){const n=sc.decode(d),c=e.fixed32.decode(d),r=e.uint.decode(d),t=lc.decode(d),i=d.start<d.end?e.uint.decode(d):0;return{header:n,memberKey:c,key:r,status:t,roomKey:o>=15&&1&i?e.fixed32.decode(d):null}}},uc={preencode(d,o){e.uint.preencode(d,o.timestamp),e.fixed32.preencode(d,o.key),e.fixed32.preencode(d,o.mailbox)},encode(d,o){e.uint.encode(d,o.timestamp),e.fixed32.encode(d,o.key),e.fixed32.encode(d,o.mailbox)},decode:d=>({version:e.uint.decode(d),timestamp:e.uint.decode(d),key:e.fixed32.decode(d),mailbox:e.fixed32.decode(d)})},fc={preencode(d,o){switch(e.uint.preencode(d,o.version),o.version){case 0:case 1:uc.preencode(d,o);break;default:throw new Error("Unsupported version")}},encode(d,o){switch(e.uint.encode(d,o.version),o.version){case 0:case 1:uc.encode(d,o);break;default:throw new Error("Unsupported version")}},decode(d){const o=d.start,n=e.uint.decode(d);switch(d.start=o,n){case 0:case 1:return uc.decode(d);default:throw new Error("Unsupported version")}}},mc={preencode(d,o){e.fixed32.preencode(d,o.discoveryPublicKey),e.uint.preencode(d,o.timestamp),d.end++,o.lastSynced&&e.uint.preencode(d,o.lastSynced)},encode(d,o){const n=(o.lastSynced?1:0)|(o.dirty?2:0);e.fixed32.encode(d,o.discoveryPublicKey),e.uint.encode(d,o.timestamp),e.uint.encode(d,n),o.lastSynced&&e.uint.encode(d,o.lastSynced)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d),c=e.uint.decode(d);return{discoveryPublicKey:o,timestamp:n,lastSynced:1&c?e.uint.decode(d):0,dirty:!!(2&c)}}},yc={preencode(d,o){e.uint.preencode(d,o.rooms),e.uint.preencode(d,o.activeRooms)},encode(d,o){e.uint.encode(d,o.rooms),e.uint.encode(d,o.activeRooms)},decode:d=>({rooms:e.uint.decode(d),activeRooms:e.uint.decode(d)})},bc=I,xc=Y,vc={preencode(e,d){e.end++,d.blockedMembers&&xc.preencode(e,d.blockedMembers)},encode(d,o){const n=o.blockedMembers?1:0;e.uint.encode(d,n),o.blockedMembers&&xc.encode(d,o.blockedMembers)},decode:d=>({blockedMembers:1&e.uint.decode(d)?xc.decode(d):null})},kc=e.frame(X),gc=e.frame(vc),Kc={preencode(d,o){e.buffer.preencode(d,o.encryptionKey),e.fixed32.preencode(d,o.seed),kc.preencode(d,o.capabilities),n.preencode(d,o.initiator),e.fixed32.preencode(d,o.fastForwardTo),d.end++,o.privateProfile&&gc.preencode(d,o.privateProfile)},encode(d,o){const c=o.privateProfile?1:0;e.buffer.encode(d,o.encryptionKey),e.fixed32.encode(d,o.seed),kc.encode(d,o.capabilities),n.encode(d,o.initiator),e.fixed32.encode(d,o.fastForwardTo),e.uint.encode(d,c),o.privateProfile&&gc.encode(d,o.privateProfile)},decode:d=>({encryptionKey:e.buffer.decode(d),seed:e.fixed32.decode(d),capabilities:kc.decode(d),initiator:n.decode(d),fastForwardTo:e.fixed32.decode(d),privateProfile:1&e.uint.decode(d)?gc.decode(d):null})},hc={preencode(d,o){d.end++,o.count&&e.uint.preencode(d,o.count)},encode(d,o){const n=o.count?1:0;e.uint.encode(d,n),o.count&&e.uint.encode(d,o.count)},decode:d=>({count:1&e.uint.decode(d)?e.uint.decode(d):0})},wc=e.frame(Kc),Rc={preencode(d,n){e.fixed32.preencode(d,n.roomKey),e.uint.preencode(d,n.priority),d.end++,n.v3&&wc.preencode(d,n.v3),o>=5&&n.timestamp&&e.uint.preencode(d,n.timestamp)},encode(d,n){const c=(n.v3?1:0)|(o>=3&&n.errored?2:0)|(o>=5&&n.timestamp?4:0);e.fixed32.encode(d,n.roomKey),e.uint.encode(d,n.priority),e.uint.encode(d,c),n.v3&&wc.encode(d,n.v3),o>=5&&n.timestamp&&e.uint.encode(d,n.timestamp)},decode(d){const n=e.fixed32.decode(d),c=e.uint.decode(d),r=e.uint.decode(d);return{roomKey:n,priority:c,v3:1&r?wc.decode(d):null,errored:o>=3&&!!(2&r),timestamp:o>=5&&4&r?e.uint.decode(d):0}}},Pc={preencode(e,d){e.end++},encode(d,o){const n=o.isConfirmed?1:0;e.uint.encode(d,n)},decode:d=>({isConfirmed:!!(1&e.uint.decode(d))})},Tc=e.frame(Pc),Ac=In,Mc={preencode(d,n){e.fixed32.preencode(d,n.publicKey),e.fixed32.preencode(d,n.privateProfileKey),t.preencode(d,n.deviceKeyPair),e.buffer.preencode(d,n.deviceProof),Tc.preencode(d,n.status),d.end++,n.entropy&&e.buffer.preencode(d,n.entropy),n.swap&&Ac.preencode(d,n.swap),o>=9&&n.swapV2&&Ya.preencode(d,n.swapV2)},encode(d,n){const c=(n.entropy?1:0)|(n.swap?2:0)|(o>=9&&n.swapV2?4:0);e.fixed32.encode(d,n.publicKey),e.fixed32.encode(d,n.privateProfileKey),t.encode(d,n.deviceKeyPair),e.buffer.encode(d,n.deviceProof),Tc.encode(d,n.status),e.uint.encode(d,c),n.entropy&&e.buffer.encode(d,n.entropy),n.swap&&Ac.encode(d,n.swap),o>=9&&n.swapV2&&Ya.encode(d,n.swapV2)},decode(d){const n=e.fixed32.decode(d),c=e.fixed32.decode(d),r=t.decode(d),i=e.buffer.decode(d),a=Tc.decode(d),s=e.uint.decode(d);return{publicKey:n,privateProfileKey:c,deviceKeyPair:r,deviceProof:i,status:a,entropy:1&s?e.buffer.decode(d):null,swap:2&s?Ac.decode(d):null,swapV2:o>=9&&4&s?Ya.decode(d):null}}},Dc={RestoreIdentity:1,CreateRoom:2,LeaveRoom:3,ClearRoom:4,JoinRoomInvitation:5,JoinRoomKeys:6,JoinRoomResponse:7,SendContactRequest:8,TestFastTask:9,TestSlowTask:10,TestErrorTask:11},Cc={preencode(e,d){e.end++},encode(d,o){if(o>11)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},Sc={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.buffer.preencode(d,o.encryptionKey),d.end++,o.fastForwardTo&&e.fixed32.preencode(d,o.fastForwardTo),o.initiator&&n.preencode(d,o.initiator)},encode(d,o){const c=(o.fastForwardTo?1:0)|(o.initiator?2:0);e.fixed32.encode(d,o.roomKey),e.buffer.encode(d,o.encryptionKey),e.uint.encode(d,c),o.fastForwardTo&&e.fixed32.encode(d,o.fastForwardTo),o.initiator&&n.encode(d,o.initiator)},decode(d){const o=e.fixed32.decode(d),c=e.buffer.decode(d),r=e.uint.decode(d);return{roomKey:o,encryptionKey:c,fastForwardTo:1&r?e.fixed32.decode(d):null,initiator:2&r?n.decode(d):null}}},Ic=Pn,jc={preencode(e,d){Ic.preencode(e,d.invitation)},encode(e,d){Ic.encode(e,d.invitation)},decode:e=>({invitation:Ic.decode(e)})},Lc={preencode(d,o){e.fixed32.preencode(d,o.mailbox),t.preencode(d,o.keyPair),e.buffer.preencode(d,o.response)},encode(d,o){e.fixed32.encode(d,o.mailbox),t.encode(d,o.keyPair),e.buffer.encode(d,o.response)},decode:d=>({mailbox:e.fixed32.decode(d),keyPair:t.decode(d),response:e.buffer.decode(d)})},Fc=$,qc={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.buffer.preencode(d,o.encryptionKey),d.end++,o.fastForwardTo&&e.fixed32.preencode(d,o.fastForwardTo),o.initiator&&n.preencode(d,o.initiator),o.mailbox&&e.fixed32.preencode(d,o.mailbox)},encode(d,o){const c=(o.fastForwardTo?1:0)|(o.initiator?2:0)|(o.mailbox?4:0);e.fixed32.encode(d,o.roomKey),e.buffer.encode(d,o.encryptionKey),e.uint.encode(d,c),o.fastForwardTo&&e.fixed32.encode(d,o.fastForwardTo),o.initiator&&n.encode(d,o.initiator),o.mailbox&&e.fixed32.encode(d,o.mailbox)},decode(d){const o=e.fixed32.decode(d),c=e.buffer.decode(d),r=e.uint.decode(d);return{roomKey:o,encryptionKey:c,fastForwardTo:1&r?e.fixed32.decode(d):null,initiator:2&r?n.decode(d):null,mailbox:4&r?e.fixed32.decode(d):null}}},Bc=e.frame(qc),Ec={preencode(e,d){Bc.preencode(e,d.keys)},encode(e,d){Bc.encode(e,d.keys)},decode:e=>({keys:Bc.decode(e)})},Vc=e.frame(on),Oc={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.buffer.preencode(d,o.encryptionKey),d.end++,o.fastForwardTo&&e.fixed32.preencode(d,o.fastForwardTo),o.initiator&&n.preencode(d,o.initiator),o.mailbox&&e.fixed32.preencode(d,o.mailbox),o.keyPair&&t.preencode(d,o.keyPair),o.genesis&&Vc.preencode(d,o.genesis)},encode(d,o){const c=(o.fastForwardTo?1:0)|(o.initiator?2:0)|(o.mailbox?4:0)|(o.keyPair?8:0)|(o.genesis?16:0)|(o.isPrivateProfile?32:0);e.fixed32.encode(d,o.roomKey),e.buffer.encode(d,o.encryptionKey),e.uint.encode(d,c),o.fastForwardTo&&e.fixed32.encode(d,o.fastForwardTo),o.initiator&&n.encode(d,o.initiator),o.mailbox&&e.fixed32.encode(d,o.mailbox),o.keyPair&&t.encode(d,o.keyPair),o.genesis&&Vc.encode(d,o.genesis)},decode(d){const o=e.fixed32.decode(d),c=e.buffer.decode(d),r=e.uint.decode(d);return{roomKey:o,encryptionKey:c,fastForwardTo:1&r?e.fixed32.decode(d):null,initiator:2&r?n.decode(d):null,mailbox:4&r?e.fixed32.decode(d):null,keyPair:8&r?t.decode(d):null,genesis:16&r?Vc.decode(d):null,isPrivateProfile:!!(32&r)}}},Nc={preencode(d,o){e.fixed32.preencode(d,o.roomKey),d.end++},encode(d,o){const n=o.isGossiped?1:0;e.fixed32.encode(d,o.roomKey),e.uint.encode(d,n)},decode:d=>({roomKey:e.fixed32.decode(d),isGossiped:!!(1&e.uint.decode(d))})},Uc={preencode(d,o){e.fixed32.preencode(d,o.roomKey)},encode(d,o){e.fixed32.encode(d,o.roomKey)},decode:d=>({roomKey:e.fixed32.decode(d)})},Jc={preencode(d,o){e.string.preencode(d,o.mnemonic),d.end++,o.profileDiscoveryTimeout&&e.uint.preencode(d,o.profileDiscoveryTimeout)},encode(d,o){const n=(o.profileDiscoveryTimeout?1:0)|(o.recover?2:0);e.string.encode(d,o.mnemonic),e.uint.encode(d,n),o.profileDiscoveryTimeout&&e.uint.encode(d,o.profileDiscoveryTimeout)},decode(d){const o=e.string.decode(d),n=e.uint.decode(d);return{mnemonic:o,profileDiscoveryTimeout:1&n?e.uint.decode(d):0,recover:!!(2&n)}}},Wc={preencode(d,n){e.fixed32.preencode(d,n.roomKey),e.fixed32.preencode(d,n.memberKey),d.end++,n.message&&e.string.preencode(d,n.message),o>=6&&n.contactInfo&&Za.preencode(d,n.contactInfo)},encode(d,n){const c=(n.message?1:0)|(o>=6&&n.contactInfo?2:0);e.fixed32.encode(d,n.roomKey),e.fixed32.encode(d,n.memberKey),e.uint.encode(d,c),n.message&&e.string.encode(d,n.message),o>=6&&n.contactInfo&&Za.encode(d,n.contactInfo)},decode(d){const n=e.fixed32.decode(d),c=e.fixed32.decode(d),r=e.uint.decode(d);return{roomKey:n,memberKey:c,message:1&r?e.string.decode(d):null,contactInfo:o>=6&&2&r?Za.decode(d):null}}},zc={preencode(d,o){e.fixed32.preencode(d,o.key),d.end++},encode(d,o){const n=o.isPrivateProfile?1:0;e.fixed32.encode(d,o.key),e.uint.encode(d,n)},decode:d=>({key:e.fixed32.decode(d),isPrivateProfile:!!(1&e.uint.decode(d))})},Hc=e.frame(Jc),Gc=e.frame(Oc),Qc=e.frame(Nc),Xc=e.frame(Uc),Yc=e.frame(jc),Zc=e.frame(Ec),$c=e.frame(Lc),_c=e.frame(Wc),er=e.frame(zc),dr={preencode(d,o){const n=(o.restoreIdentity?1:0)|(o.createRoom?2:0)|(o.leaveRoom?4:0)|(o.clearRoom?8:0)|(o.joinRoomInvitation?16:0)|(o.joinRoomKeys?32:0)|(o.joinRoomResponse?64:0)|(o.sendContactRequest?128:0)|(o.migrateV2Room?256:0);e.fixed32.preencode(d,o.discoveryKey),e.uint.preencode(d,o.priority),e.uint.preencode(d,o.timestamp),e.uint.preencode(d,o.type),e.uint.preencode(d,n),o.restoreIdentity&&Hc.preencode(d,o.restoreIdentity),o.createRoom&&Gc.preencode(d,o.createRoom),o.leaveRoom&&Qc.preencode(d,o.leaveRoom),o.clearRoom&&Xc.preencode(d,o.clearRoom),o.joinRoomInvitation&&Yc.preencode(d,o.joinRoomInvitation),o.joinRoomKeys&&Zc.preencode(d,o.joinRoomKeys),o.joinRoomResponse&&$c.preencode(d,o.joinRoomResponse),o.sendContactRequest&&_c.preencode(d,o.sendContactRequest),o.migrateV2Room&&er.preencode(d,o.migrateV2Room)},encode(d,o){const n=(o.restoreIdentity?1:0)|(o.createRoom?2:0)|(o.leaveRoom?4:0)|(o.clearRoom?8:0)|(o.joinRoomInvitation?16:0)|(o.joinRoomKeys?32:0)|(o.joinRoomResponse?64:0)|(o.sendContactRequest?128:0)|(o.migrateV2Room?256:0);e.fixed32.encode(d,o.discoveryKey),e.uint.encode(d,o.priority),e.uint.encode(d,o.timestamp),e.uint.encode(d,o.type),e.uint.encode(d,n),o.restoreIdentity&&Hc.encode(d,o.restoreIdentity),o.createRoom&&Gc.encode(d,o.createRoom),o.leaveRoom&&Qc.encode(d,o.leaveRoom),o.clearRoom&&Xc.encode(d,o.clearRoom),o.joinRoomInvitation&&Yc.encode(d,o.joinRoomInvitation),o.joinRoomKeys&&Zc.encode(d,o.joinRoomKeys),o.joinRoomResponse&&$c.encode(d,o.joinRoomResponse),o.sendContactRequest&&_c.encode(d,o.sendContactRequest),o.migrateV2Room&&er.encode(d,o.migrateV2Room)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d),c=e.uint.decode(d),r=e.uint.decode(d),t=e.uint.decode(d);return{discoveryKey:o,priority:n,timestamp:c,type:r,restoreIdentity:1&t?Hc.decode(d):null,createRoom:2&t?Gc.decode(d):null,leaveRoom:4&t?Qc.decode(d):null,clearRoom:8&t?Xc.decode(d):null,joinRoomInvitation:16&t?Yc.decode(d):null,joinRoomKeys:32&t?Zc.decode(d):null,joinRoomResponse:64&t?$c.decode(d):null,sendContactRequest:128&t?_c.decode(d):null,migrateV2Room:256&t?er.decode(d):null}}},or=Be,nr={preencode(d,o){e.buffer.preencode(d,o.seed),or.preencode(d,o.invitation)},encode(d,o){e.buffer.encode(d,o.seed),or.encode(d,o.invitation)},decode:d=>({seed:e.buffer.decode(d),invitation:or.decode(d)})},cr={preencode(e,d){e.end++},encode(d,n){const c=(n.isWritable?1:0)|(n.isReadable?2:0)|(n.isPrivateProfile?4:0)|(o>=8&&n.isRemoved?8:0);e.uint.encode(d,c)},decode(d){const n=e.uint.decode(d);return{isWritable:!!(1&n),isReadable:!!(2&n),isPrivateProfile:!!(4&n),isRemoved:o>=8&&!!(8&n)}}},rr={preencode(d,o){e.uint.preencode(d,o.creation),e.uint.preencode(d,o.latestSync),e.uint.preencode(d,o.latestChatMessage)},encode(d,o){e.uint.encode(d,o.creation),e.uint.encode(d,o.latestSync),e.uint.encode(d,o.latestChatMessage)},decode:d=>({creation:e.uint.decode(d),latestSync:e.uint.decode(d),latestChatMessage:e.uint.decode(d)})},tr=Yo,ir=mo,ar=e.frame(rr),sr=kc,lr=e.frame(cr),pr=e.frame(ae),ur=e.frame(fd),fr=Jo,mr=_o,yr=e.frame(wo),br=Y,xr=e.frame(ld),vr=Sn,kr={preencode(d,n){const c=(n.selfDevice?1:0)|(n.selfMember?2:0)|(n.config?4:0)|(n.identity?8:0)|(n.lastMessage?16:0)|(n.dm?32:0)|(o>=19&&n.readLengths?64:0)|(o>=19&&n.lastMember?128:0)|(o>=21&&n.version?256:0)|(o>=27&&n.preferences?512:0)|(o>=28&&n.activeCall?1024:0);e.fixed32.preencode(d,n.roomKey),e.fixed32.preencode(d,n.discoveryKey),e.buffer.preencode(d,n.encryptionKey),tr.preencode(d,n.digest),ir.preencode(d,n.stats),ar.preencode(d,n.timestamps),e.uint.preencode(d,n.fork),e.uint.preencode(d,n.length),e.fixed32.preencode(d,n.seed),sr.preencode(d,n.capabilities),lr.preencode(d,n.status),e.uint.preencode(d,c),n.selfDevice&&pr.preencode(d,n.selfDevice),n.selfMember&&ur.preencode(d,n.selfMember),n.config&&fr.preencode(d,n.config),n.identity&&mr.preencode(d,n.identity),n.lastMessage&&yr.preencode(d,n.lastMessage),n.dm&&br.preencode(d,n.dm),o>=19&&n.readLengths&&$a.preencode(d,n.readLengths),o>=19&&n.lastMember&&xr.preencode(d,n.lastMember),o>=21&&n.version&&e.uint.preencode(d,n.version),o>=27&&n.preferences&&vr.preencode(d,n.preferences),o>=28&&n.activeCall&&_a.preencode(d,n.activeCall)},encode(d,n){const c=(n.selfDevice?1:0)|(n.selfMember?2:0)|(n.config?4:0)|(n.identity?8:0)|(n.lastMessage?16:0)|(n.dm?32:0)|(o>=19&&n.readLengths?64:0)|(o>=19&&n.lastMember?128:0)|(o>=21&&n.version?256:0)|(o>=27&&n.preferences?512:0)|(o>=28&&n.activeCall?1024:0);e.fixed32.encode(d,n.roomKey),e.fixed32.encode(d,n.discoveryKey),e.buffer.encode(d,n.encryptionKey),tr.encode(d,n.digest),ir.encode(d,n.stats),ar.encode(d,n.timestamps),e.uint.encode(d,n.fork),e.uint.encode(d,n.length),e.fixed32.encode(d,n.seed),sr.encode(d,n.capabilities),lr.encode(d,n.status),e.uint.encode(d,c),n.selfDevice&&pr.encode(d,n.selfDevice),n.selfMember&&ur.encode(d,n.selfMember),n.config&&fr.encode(d,n.config),n.identity&&mr.encode(d,n.identity),n.lastMessage&&yr.encode(d,n.lastMessage),n.dm&&br.encode(d,n.dm),o>=19&&n.readLengths&&$a.encode(d,n.readLengths),o>=19&&n.lastMember&&xr.encode(d,n.lastMember),o>=21&&n.version&&e.uint.encode(d,n.version),o>=27&&n.preferences&&vr.encode(d,n.preferences),o>=28&&n.activeCall&&_a.encode(d,n.activeCall)},decode(d){const n=e.fixed32.decode(d),c=e.fixed32.decode(d),r=e.buffer.decode(d),t=tr.decode(d),i=ir.decode(d),a=ar.decode(d),s=e.uint.decode(d),l=e.uint.decode(d),p=e.fixed32.decode(d),u=sr.decode(d),f=lr.decode(d),m=e.uint.decode(d);return{roomKey:n,discoveryKey:c,encryptionKey:r,digest:t,stats:i,timestamps:a,fork:s,length:l,seed:p,capabilities:u,status:f,selfDevice:1&m?pr.decode(d):null,selfMember:2&m?ur.decode(d):null,config:4&m?fr.decode(d):null,identity:8&m?mr.decode(d):null,lastMessage:16&m?yr.decode(d):null,dm:32&m?br.decode(d):null,readLengths:o>=19&&64&m?$a.decode(d):null,lastMember:o>=19&&128&m?xr.decode(d):null,version:o>=21&&256&m?e.uint.decode(d):0,preferences:o>=27&&512&m?vr.decode(d):null,activeCall:o>=28&&1024&m?_a.decode(d):null}}},gr=Sn,Kr={preencode(d,o){e.fixed32.preencode(d,o.roomKey),gr.preencode(d,o.status)},encode(d,o){e.fixed32.encode(d,o.roomKey),gr.encode(d,o.status)},decode:d=>({roomKey:e.fixed32.decode(d),status:gr.decode(d)})},hr={preencode(d,o){e.fixed32.preencode(d,o.mailbox),e.fixed32.preencode(d,o.key),d.end++,o.roomKey&&e.fixed32.preencode(d,o.roomKey),o.keyPair&&t.preencode(d,o.keyPair),o.responseKeyPair&&t.preencode(d,o.responseKeyPair)},encode(d,o){const n=(o.roomKey?1:0)|(o.keyPair?2:0)|(o.responseKeyPair?4:0);e.fixed32.encode(d,o.mailbox),e.fixed32.encode(d,o.key),e.uint.encode(d,n),o.roomKey&&e.fixed32.encode(d,o.roomKey),o.keyPair&&t.encode(d,o.keyPair),o.responseKeyPair&&t.encode(d,o.responseKeyPair)},decode(d){const o=e.fixed32.decode(d),n=e.fixed32.decode(d),c=e.uint.decode(d);return{mailbox:o,key:n,roomKey:1&c?e.fixed32.decode(d):null,keyPair:2&c?t.decode(d):null,responseKeyPair:4&c?t.decode(d):null}}},wr=pe,Rr={preencode(d,o){e.fixed32.preencode(d,o.key),wr.preencode(d,o.profile)},encode(d,o){e.fixed32.encode(d,o.key),wr.encode(d,o.profile)},decode:d=>({key:e.fixed32.decode(d),profile:wr.decode(d)})},Pr=pr,Tr={preencode(d,o){e.fixed32.preencode(d,o.roomKey),Pr.preencode(d,o.device)},encode(d,o){e.fixed32.encode(d,o.roomKey),Pr.encode(d,o.device)},decode:d=>({roomKey:e.fixed32.decode(d),device:Pr.decode(d)})},Ar=K,Mr={preencode(d,n){Ar.preencode(d,n.file),e.fixed32.preencode(d,n.roomKey),d.end++,n.encryptionKey&&e.buffer.preencode(d,n.encryptionKey),o>=28&&n.lastAccessed&&e.uint.preencode(d,n.lastAccessed),o>=28&&n.version&&e.uint.preencode(d,n.version)},encode(d,n){const c=(n.encryptionKey?1:0)|(n.cleared?2:0)|(n.own?4:0)|(o>=28&&n.lastAccessed?8:0)|(o>=28&&n.version?16:0);Ar.encode(d,n.file),e.fixed32.encode(d,n.roomKey),e.uint.encode(d,c),n.encryptionKey&&e.buffer.encode(d,n.encryptionKey),o>=28&&n.lastAccessed&&e.uint.encode(d,n.lastAccessed),o>=28&&n.version&&e.uint.encode(d,n.version)},decode(d){const n=Ar.decode(d),c=e.fixed32.decode(d),r=e.uint.decode(d);return{file:n,roomKey:c,encryptionKey:1&r?e.buffer.decode(d):null,cleared:!!(2&r),own:!!(4&r),lastAccessed:o>=28&&8&r?e.uint.decode(d):0,version:o>=28&&16&r?e.uint.decode(d):0}}},Dr=_,Cr={preencode(d,n){Dr.preencode(d,n.header),c.preencode(d,n.oplog),e.uint.preencode(d,n.index),es.preencode(d,n.preview),d.end++,o>=12&&n.displayType&&Qr.preencode(d,n.displayType)},encode(d,n){const r=o>=12&&n.displayType?1:0;Dr.encode(d,n.header),c.encode(d,n.oplog),e.uint.encode(d,n.index),es.encode(d,n.preview),e.uint.encode(d,r),o>=12&&n.displayType&&Qr.encode(d,n.displayType)},decode(d){const n=Dr.decode(d),r=c.decode(d),t=e.uint.decode(d),i=es.decode(d),a=d.start<d.end?e.uint.decode(d):0;return{header:n,oplog:r,index:t,preview:i,displayType:o>=12&&1&a?Qr.decode(d):0}}},Sr={preencode(d,n){d.end++,o>=4&&n.memberKey&&e.fixed32.preencode(d,n.memberKey)},encode(d,n){const c=o>=4&&n.memberKey?1:0;e.uint.encode(d,c),o>=4&&n.memberKey&&e.fixed32.encode(d,n.memberKey)},decode(d){const n=e.uint.decode(d);return{memberKey:o>=4&&1&n?e.fixed32.decode(d):null}}},Ir=pe,jr={preencode(e,d){Ir.preencode(e,d.profile),ce.preencode(e,d.attestation)},encode(e,d){Ir.encode(e,d.profile),ce.encode(e,d.attestation)},decode:e=>({profile:Ir.decode(e),attestation:ce.decode(e)})},Lr=_,Fr={preencode(d,o){Lr.preencode(d,o.header),e.fixed32.preencode(d,o.key)},encode(d,o){Lr.encode(d,o.header),e.fixed32.encode(d,o.key)},decode:d=>({header:Lr.decode(d),key:e.fixed32.decode(d)})},qr={preencode(d,o){e.fixed32.preencode(d,o.deviceKey),ce.preencode(d,o.privateProfileIdentity),e.buffer.preencode(d,o.deviceProof)},encode(d,o){e.fixed32.encode(d,o.deviceKey),ce.encode(d,o.privateProfileIdentity),e.buffer.encode(d,o.deviceProof)},decode:d=>({deviceKey:e.fixed32.decode(d),privateProfileIdentity:ce.decode(d),deviceProof:e.buffer.decode(d)})},Br={preencode(d,n){e.fixed32.preencode(d,n.roomKey),e.fixed32.preencode(d,n.encryptionKey),e.fixed32.preencode(d,n.seed),d.end++,o>=9&&n.fastForwardTo&&e.fixed32.preencode(d,n.fastForwardTo)},encode(d,n){const c=o>=9&&n.fastForwardTo?1:0;e.fixed32.encode(d,n.roomKey),e.fixed32.encode(d,n.encryptionKey),e.fixed32.encode(d,n.seed),e.uint.encode(d,c),o>=9&&n.fastForwardTo&&e.fixed32.encode(d,n.fastForwardTo)},decode(d){const n=e.fixed32.decode(d),c=e.fixed32.decode(d),r=e.fixed32.decode(d),t=e.uint.decode(d);return{roomKey:n,encryptionKey:c,seed:r,fastForwardTo:o>=9&&1&t?e.fixed32.decode(d):null}}},Er={preencode(d,n){e.fixed32.preencode(d,n.publicKey),e.fixed32.preencode(d,n.writerKey),e.fixed32.preencode(d,n.devicePublicKey),d.end++,o>=9&&n.privateProfileKey&&e.fixed32.preencode(d,n.privateProfileKey)},encode(d,n){const c=o>=9&&n.privateProfileKey?1:0;e.fixed32.encode(d,n.publicKey),e.fixed32.encode(d,n.writerKey),e.fixed32.encode(d,n.devicePublicKey),e.uint.encode(d,c),o>=9&&n.privateProfileKey&&e.fixed32.encode(d,n.privateProfileKey)},decode(d){const n=e.fixed32.decode(d),c=e.fixed32.decode(d),r=e.fixed32.decode(d),t=e.uint.decode(d);return{publicKey:n,writerKey:c,devicePublicKey:r,privateProfileKey:o>=9&&1&t?e.fixed32.decode(d):null}}},Vr=_,Or={preencode(d,o){Vr.preencode(d,o.header),e.fixed32.preencode(d,o.memberKey)},encode(d,o){Vr.encode(d,o.header),e.fixed32.encode(d,o.memberKey)},decode:d=>({header:Vr.decode(d),memberKey:e.fixed32.decode(d)})},Nr={preencode(d,o){e.fixed32.preencode(d,o.privateProfileKey)},encode(d,o){e.fixed32.encode(d,o.privateProfileKey)},decode:d=>({privateProfileKey:e.fixed32.decode(d)})},Ur={preencode(d,o){e.fixed32.preencode(d,o.key),e.fixed32.preencode(d,o.responsePublicKey)},encode(d,o){e.fixed32.encode(d,o.key),e.fixed32.encode(d,o.responsePublicKey)},decode:d=>({key:e.fixed32.decode(d),responsePublicKey:e.fixed32.decode(d)})},Jr={preencode(d,n){e.fixed32.preencode(d,n.roomKey),d.end++,o>=10&&n.repairs&&e.uint.preencode(d,n.repairs)},encode(d,n){const c=o>=10&&n.repairs?1:0;e.fixed32.encode(d,n.roomKey),e.uint.encode(d,c),o>=10&&n.repairs&&e.uint.encode(d,n.repairs)},decode(d){const n=e.fixed32.decode(d),c=e.uint.decode(d);return{roomKey:n,repairs:o>=10&&1&c?e.uint.decode(d):0}}},Wr={preencode(d,n){d.end++,o>=11&&n.key&&e.string.preencode(d,n.key),o>=11&&n.description&&e.string.preencode(d,n.description)},encode(d,n){const c=(o>=11&&n.key?1:0)|(o>=11&&n.value?2:0)|(o>=11&&n.description?4:0);e.uint.encode(d,c),o>=11&&n.key&&e.string.encode(d,n.key),o>=11&&n.description&&e.string.encode(d,n.description)},decode(d){const n=e.uint.decode(d);return{key:o>=11&&1&n?e.string.decode(d):null,value:o>=11&&!!(2&n),description:o>=11&&4&n?e.string.decode(d):null}}},zr=e.array(e.frame(Wr)),Hr={preencode(e,d){e.end++,o>=11&&d.flags&&zr.preencode(e,d.flags)},encode(d,n){const c=o>=11&&n.flags?1:0;e.uint.encode(d,c),o>=11&&n.flags&&zr.encode(d,n.flags)},decode(d){const n=e.uint.decode(d);return{flags:o>=11&&1&n?zr.decode(d):null}}},Gr={HttpLink:1,PearLink:2},Qr={preencode(e,d){e.end++},encode(d,o){if(o>2)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},Xr=_,Yr={preencode(d,o){Xr.preencode(d,o.header),e.uint.preencode(d,o.value)},encode(d,o){Xr.encode(d,o.header),e.uint.encode(d,o.value)},decode:d=>({header:Xr.decode(d),value:e.uint.decode(d)})},Zr={preencode(d,o){e.uint.preencode(d,o.key),e.uint.preencode(d,o.value)},encode(d,o){e.uint.encode(d,o.key),e.uint.encode(d,o.value)},decode:d=>({key:e.uint.decode(d),value:e.uint.decode(d)})},$r=_,_r={preencode(d,n){$r.preencode(d,n.header),e.uint.preencode(d,n.from),e.uint.preencode(d,n.to),d.end++,o>=29&&n.buildType&&vi.preencode(d,n.buildType)},encode(d,n){const c=o>=29&&n.buildType?1:0;$r.encode(d,n.header),e.uint.encode(d,n.from),e.uint.encode(d,n.to),e.uint.encode(d,c),o>=29&&n.buildType&&vi.encode(d,n.buildType)},decode(d){const n=$r.decode(d),c=e.uint.decode(d),r=e.uint.decode(d),t=d.start<d.end?e.uint.decode(d):0;return{header:n,from:c,to:r,buildType:o>=29&&1&t?vi.decode(d):null}}},et={RoomType:1,IsExperimental:2,IsJoiningDisabled:3,IsAppendingDisabled:4,IsCallingDisabled:5,IsMembershipEventsDisabled:6,IsAttachmentsDisabled:7,IsLinksDisabled:8},dt={preencode(e,d){e.end++},encode(d,o){if(o>8)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},ot=Ge,nt={preencode(d,n){d.end++,o>=16&&n.nodes&&ot.preencode(d,n.nodes),o>=24&&n.concurrency&&e.uint.preencode(d,n.concurrency),o>=24&&n.maxWindow&&e.uint.preencode(d,n.maxWindow),o>=24&&n.randomPunchInterval&&e.uint.preencode(d,n.randomPunchInterval),o>=24&&n.connectionKeepAlive&&e.uint.preencode(d,n.connectionKeepAlive)},encode(d,n){const c=(o>=16&&n.nodes?1:0)|(o>=24&&n.concurrency?2:0)|(o>=24&&n.maxWindow?4:0)|(o>=24&&n.randomPunchInterval?8:0)|(o>=24&&n.connectionKeepAlive?16:0);e.uint.encode(d,c),o>=16&&n.nodes&&ot.encode(d,n.nodes),o>=24&&n.concurrency&&e.uint.encode(d,n.concurrency),o>=24&&n.maxWindow&&e.uint.encode(d,n.maxWindow),o>=24&&n.randomPunchInterval&&e.uint.encode(d,n.randomPunchInterval),o>=24&&n.connectionKeepAlive&&e.uint.encode(d,n.connectionKeepAlive)},decode(d){const n=e.uint.decode(d);return{nodes:o>=16&&1&n?ot.decode(d):null,concurrency:o>=24&&2&n?e.uint.decode(d):0,maxWindow:o>=24&&4&n?e.uint.decode(d):0,randomPunchInterval:o>=24&&8&n?e.uint.decode(d):0,connectionKeepAlive:o>=24&&16&n?e.uint.decode(d):0}}},ct={en:"en",it:"it",ru:"ru",es:"es",de:"de"},rt={preencode(e,d){e.end++},encode(d,o){switch(o){case"en":e.uint.encode(d,1);break;case"it":e.uint.encode(d,2);break;case"ru":e.uint.encode(d,3);break;case"es":e.uint.encode(d,4);break;case"de":e.uint.encode(d,5);break;default:throw new Error("Unknown enum")}},decode(d){switch(e.uint.decode(d)){case 1:return"en";case 2:return"it";case 3:return"ru";case 4:return"es";case 5:return"de";default:return null}}},tt=Fd,it={preencode(d,o){tt.preencode(d,o.range),rt.preencode(d,o.language),e.string.preencode(d,o.text)},encode(d,o){tt.encode(d,o.range),rt.encode(d,o.language),e.string.encode(d,o.text)},decode:d=>({range:tt.decode(d),language:rt.decode(d),text:e.string.decode(d)})},at={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.uint.preencode(d,o.count)},encode(d,o){e.fixed32.encode(d,o.roomKey),e.uint.encode(d,o.count)},decode:d=>({roomKey:e.fixed32.decode(d),count:e.uint.decode(d)})},st={preencode(d,o){e.fixed32.preencode(d,o.deviceKey),e.fixed32.preencode(d,o.key)},encode(d,o){e.fixed32.encode(d,o.deviceKey),e.fixed32.encode(d,o.key)},decode:d=>({deviceKey:e.fixed32.decode(d),key:e.fixed32.decode(d)})},lt=_,pt={preencode(d,o){lt.preencode(d,o.header),e.fixed32.preencode(d,o.key)},encode(d,o){lt.encode(d,o.header),e.fixed32.encode(d,o.key)},decode:d=>({header:lt.decode(d),key:e.fixed32.decode(d)})},ut=_,ft={preencode(d,o){ut.preencode(d,o.header),e.fixed32.preencode(d,o.key)},encode(d,o){ut.encode(d,o.header),e.fixed32.encode(d,o.key)},decode:d=>({header:ut.decode(d),key:e.fixed32.decode(d)})},mt={Flag:1},yt={preencode(e,d){e.end++},encode(d,o){if(o>1)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},bt={preencode(d,o){fo.preencode(d,o.id),e.fixed32.preencode(d,o.sender),e.uint.preencode(d,o.clock),yt.preencode(d,o.label)},encode(d,o){fo.encode(d,o.id),e.fixed32.encode(d,o.sender),e.uint.encode(d,o.clock),yt.encode(d,o.label)},decode:d=>({id:fo.decode(d),sender:e.fixed32.decode(d),clock:e.uint.decode(d),label:yt.decode(d)})},xt=_,vt={preencode(e,d){xt.preencode(e,d.header),c.preencode(e,d.oplog),yt.preencode(e,d.label)},encode(e,d){xt.encode(e,d.header),c.encode(e,d.oplog),yt.encode(e,d.label)},decode:e=>({header:xt.decode(e),oplog:c.decode(e),label:yt.decode(e)})},kt=_,gt={preencode(e,d){kt.preencode(e,d.header),c.preencode(e,d.oplog),yt.preencode(e,d.label)},encode(e,d){kt.encode(e,d.header),c.encode(e,d.oplog),yt.encode(e,d.label)},decode:e=>({header:kt.decode(e),oplog:c.decode(e),label:yt.decode(e)})},Kt={preencode(d,o){yt.preencode(d,o.label),e.uint.preencode(d,o.count)},encode(d,o){yt.encode(d,o.label),e.uint.encode(d,o.count)},decode:d=>({label:yt.decode(d),count:e.uint.decode(d)})},ht=e.array(e.frame(Kt)),wt={preencode(d,n){fo.preencode(d,n.id),e.uint.preencode(d,n.total),ht.preencode(d,n.labels),e.uint.preencode(d,n.editedAt),d.end++,o>=24&&n.flagsClock&&e.uint.preencode(d,n.flagsClock),o>=24&&n.version&&e.uint.preencode(d,n.version)},encode(d,n){const c=(o>=24&&n.flagsClock?1:0)|(o>=24&&n.version?2:0)|(o>=25&&n.isDeleted?4:0);fo.encode(d,n.id),e.uint.encode(d,n.total),ht.encode(d,n.labels),e.uint.encode(d,n.editedAt),e.uint.encode(d,c),o>=24&&n.flagsClock&&e.uint.encode(d,n.flagsClock),o>=24&&n.version&&e.uint.encode(d,n.version)},decode(d){const n=fo.decode(d),c=e.uint.decode(d),r=ht.decode(d),t=e.uint.decode(d),i=d.start<d.end?e.uint.decode(d):0;return{id:n,total:c,labels:r,editedAt:t,flagsClock:o>=24&&1&i?e.uint.decode(d):0,version:o>=24&&2&i?e.uint.decode(d):0,isDeleted:o>=25&&!!(4&i)}}},Rt=_,Pt={preencode(d,o){Rt.preencode(d,o.header),e.uint.preencode(d,o.length)},encode(d,o){Rt.encode(d,o.header),e.uint.encode(d,o.length)},decode:d=>({header:Rt.decode(d),length:e.uint.decode(d)})},Tt={preencode(d,o){e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.length)},encode(d,o){e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.length)},decode:d=>({memberKey:e.fixed32.decode(d),length:e.uint.decode(d)})},At=$,Mt={preencode(e,d){e.end++},encode(d,n){const c=o>=19&&n.disableReadReceipts?1:0;e.uint.encode(d,c)},decode(d){const n=e.uint.decode(d);return{disableReadReceipts:o>=19&&!!(1&n)}}},Dt={disableReadReceipts:"disableReadReceipts"},Ct={preencode(e,d){e.end++},encode(d,o){if("disableReadReceipts"!==o)throw new Error("Unknown enum");e.uint.encode(d,1)},decode:d=>1===e.uint.decode(d)?"disableReadReceipts":null},St=_,It=e.frame(Mt),jt={preencode(e,d){St.preencode(e,d.header),Ct.preencode(e,d.key),It.preencode(e,d.settings)},encode(e,d){St.encode(e,d.header),Ct.encode(e,d.key),It.encode(e,d.settings)},decode:e=>({header:St.decode(e),key:Ct.decode(e),settings:It.decode(e)})},Lt={preencode(d,n){d.end++,o>=20&&n.roomKey&&e.fixed32.preencode(d,n.roomKey),o>=23&&n.coreKey&&e.fixed32.preencode(d,n.coreKey)},encode(d,n){const c=(o>=20&&n.roomKey?1:0)|(o>=23&&n.coreKey?2:0);e.uint.encode(d,c),o>=20&&n.roomKey&&e.fixed32.encode(d,n.roomKey),o>=23&&n.coreKey&&e.fixed32.encode(d,n.coreKey)},decode(d){const n=e.uint.decode(d);return{roomKey:o>=20&&1&n?e.fixed32.decode(d):null,coreKey:o>=23&&2&n?e.fixed32.decode(d):null}}},Ft=e.frame(Lt),qt={preencode(d,n){e.string.preencode(d,n.code),e.string.preencode(d,n.message),e.string.preencode(d,n.stack),e.uint.preencode(d,n.timestamp),d.end++,o>=20&&n.details&&Ft.preencode(d,n.details)},encode(d,n){const c=o>=20&&n.details?1:0;e.string.encode(d,n.code),e.string.encode(d,n.message),e.string.encode(d,n.stack),e.uint.encode(d,n.timestamp),e.uint.encode(d,c),o>=20&&n.details&&Ft.encode(d,n.details)},decode(d){const n=e.string.decode(d),c=e.string.decode(d),r=e.string.decode(d),t=e.uint.decode(d),i=e.uint.decode(d);return{code:n,message:c,stack:r,timestamp:t,details:o>=20&&1&i?Ft.decode(d):null}}},Bt={RESUME:1,WAKEUP:2,PRESUSPEND:3,SUSPEND:4},Et={preencode(e,d){e.end++},encode(d,o){if(o>4)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},Vt={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.uint.preencode(d,o.total)},encode(d,o){e.fixed32.encode(d,o.roomKey),e.uint.encode(d,o.total)},decode:d=>({roomKey:e.fixed32.decode(d),total:e.uint.decode(d)})},Ot={Flag:1},Nt={preencode(e,d){e.end++},encode(d,o){if(o>1)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},Ut={preencode(d,o){e.fixed32.preencode(d,o.key),e.fixed32.preencode(d,o.sender),e.uint.preencode(d,o.clock),Nt.preencode(d,o.label)},encode(d,o){e.fixed32.encode(d,o.key),e.fixed32.encode(d,o.sender),e.uint.encode(d,o.clock),Nt.encode(d,o.label)},decode:d=>({key:e.fixed32.decode(d),sender:e.fixed32.decode(d),clock:e.uint.decode(d),label:Nt.decode(d)})},Jt=_,Wt={preencode(d,o){Jt.preencode(d,o.header),e.fixed32.preencode(d,o.key),Nt.preencode(d,o.label)},encode(d,o){Jt.encode(d,o.header),e.fixed32.encode(d,o.key),Nt.encode(d,o.label)},decode:d=>({header:Jt.decode(d),key:e.fixed32.decode(d),label:Nt.decode(d)})},zt={preencode(d,o){Nt.preencode(d,o.label),e.uint.preencode(d,o.count)},encode(d,o){Nt.encode(d,o.label),e.uint.encode(d,o.count)},decode:d=>({label:Nt.decode(d),count:e.uint.decode(d)})},Ht=e.array(e.frame(zt)),Gt={preencode(d,o){e.fixed32.preencode(d,o.key),e.uint.preencode(d,o.total),Ht.preencode(d,o.labels),e.uint.preencode(d,o.editedAt),e.uint.preencode(d,o.flagsClock)},encode(d,o){e.fixed32.encode(d,o.key),e.uint.encode(d,o.total),Ht.encode(d,o.labels),e.uint.encode(d,o.editedAt),e.uint.encode(d,o.flagsClock)},decode:d=>({key:e.fixed32.decode(d),total:e.uint.decode(d),labels:Ht.decode(d),editedAt:e.uint.decode(d),flagsClock:e.uint.decode(d)})},Qt={preencode(d,o){e.float64.preencode(d,o.latitude),e.float64.preencode(d,o.longitude)},encode(d,o){e.float64.encode(d,o.latitude),e.float64.encode(d,o.longitude)},decode:d=>({latitude:e.float64.decode(d),longitude:e.float64.decode(d)})},Xt=_,Yt={preencode(d,o){Xt.preencode(d,o.header),e.fixed32.preencode(d,o.deviceKey),e.fixed32.preencode(d,o.fromDeviceKey)},encode(d,o){Xt.encode(d,o.header),e.fixed32.encode(d,o.deviceKey),e.fixed32.encode(d,o.fromDeviceKey)},decode:d=>({header:Xt.decode(d),deviceKey:e.fixed32.decode(d),fromDeviceKey:e.fixed32.decode(d)})},Zt=_,$t=Y,_t={preencode(d,n){Zt.preencode(d,n.header),e.fixed32.preencode(d,n.callKey),e.buffer.preencode(d,n.encryptionKey),d.end++,o>=28&&n.streams&&$t.preencode(d,n.streams),o>=28&&n.discoveryKey&&e.fixed32.preencode(d,n.discoveryKey),o>=28&&n.version&&e.uint.preencode(d,n.version)},encode(d,n){const c=(o>=28&&n.streams?1:0)|(o>=28&&n.discoveryKey?2:0)|(o>=28&&n.version?4:0);Zt.encode(d,n.header),e.fixed32.encode(d,n.callKey),e.buffer.encode(d,n.encryptionKey),e.uint.encode(d,c),o>=28&&n.streams&&$t.encode(d,n.streams),o>=28&&n.discoveryKey&&e.fixed32.encode(d,n.discoveryKey),o>=28&&n.version&&e.uint.encode(d,n.version)},decode(d){const n=Zt.decode(d),c=e.fixed32.decode(d),r=e.buffer.decode(d),t=e.uint.decode(d);return{header:n,callKey:c,encryptionKey:r,streams:o>=28&&1&t?$t.decode(d):null,discoveryKey:o>=28&&2&t?e.fixed32.decode(d):null,version:o>=28&&4&t?e.uint.decode(d):0}}},ei=_,di=Y,oi={preencode(d,n){ei.preencode(d,n.header),e.fixed32.preencode(d,n.callKey),d.end++,o>=28&&n.streams&&di.preencode(d,n.streams)},encode(d,n){const c=o>=28&&n.streams?1:0;ei.encode(d,n.header),e.fixed32.encode(d,n.callKey),e.uint.encode(d,c),o>=28&&n.streams&&di.encode(d,n.streams)},decode(d){const n=ei.decode(d),c=e.fixed32.decode(d),r=e.uint.decode(d);return{header:n,callKey:c,streams:o>=28&&1&r?di.decode(d):null}}},ni=_,ci={preencode(d,o){ni.preencode(d,o.header),e.fixed32.preencode(d,o.callKey)},encode(d,o){ni.encode(d,o.header),e.fixed32.encode(d,o.callKey)},decode:d=>({header:ni.decode(d),callKey:e.fixed32.decode(d)})},ri=_,ti={preencode(d,o){ri.preencode(d,o.header),e.fixed32.preencode(d,o.callKey)},encode(d,o){ri.encode(d,o.header),e.fixed32.encode(d,o.callKey)},decode:d=>({header:ri.decode(d),callKey:e.fixed32.decode(d)})},ii=_,ai={preencode(d,o){ii.preencode(d,o.header),e.fixed32.preencode(d,o.callKey),e.fixed32.preencode(d,o.streamKey)},encode(d,o){ii.encode(d,o.header),e.fixed32.encode(d,o.callKey),e.fixed32.encode(d,o.streamKey)},decode:d=>({header:ii.decode(d),callKey:e.fixed32.decode(d),streamKey:e.fixed32.decode(d)})},si=_,li={preencode(d,o){si.preencode(d,o.header),e.fixed32.preencode(d,o.callKey),e.fixed32.preencode(d,o.streamKey)},encode(d,o){si.encode(d,o.header),e.fixed32.encode(d,o.callKey),e.fixed32.encode(d,o.streamKey)},decode:d=>({header:si.decode(d),callKey:e.fixed32.decode(d),streamKey:e.fixed32.decode(d)})},pi={preencode(d,n){e.fixed32.preencode(d,n.callKey),e.buffer.preencode(d,n.encryptionKey),e.uint.preencode(d,n.createdAt),d.end++,o>=28&&n.endedAt&&e.uint.preencode(d,n.endedAt),o>=28&&n.discoveryKey&&e.fixed32.preencode(d,n.discoveryKey),o>=28&&n.version&&e.uint.preencode(d,n.version)},encode(d,n){const c=(o>=28&&n.endedAt?1:0)|(o>=28&&n.discoveryKey?2:0)|(o>=28&&n.version?4:0);e.fixed32.encode(d,n.callKey),e.buffer.encode(d,n.encryptionKey),e.uint.encode(d,n.createdAt),e.uint.encode(d,c),o>=28&&n.endedAt&&e.uint.encode(d,n.endedAt),o>=28&&n.discoveryKey&&e.fixed32.encode(d,n.discoveryKey),o>=28&&n.version&&e.uint.encode(d,n.version)},decode(d){const n=e.fixed32.decode(d),c=e.buffer.decode(d),r=e.uint.decode(d),t=e.uint.decode(d);return{callKey:n,encryptionKey:c,createdAt:r,endedAt:o>=28&&1&t?e.uint.decode(d):0,discoveryKey:o>=28&&2&t?e.fixed32.decode(d):null,version:o>=28&&4&t?e.uint.decode(d):0}}},ui={preencode(d,o){e.fixed32.preencode(d,o.callKey),e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.createdAt)},encode(d,o){e.fixed32.encode(d,o.callKey),e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.createdAt)},decode:d=>({callKey:e.fixed32.decode(d),memberKey:e.fixed32.decode(d),createdAt:e.uint.decode(d)})},fi={preencode(d,n){e.fixed32.preencode(d,n.callKey),e.fixed32.preencode(d,n.deviceKey),e.fixed32.preencode(d,n.memberKey),e.uint.preencode(d,n.createdAt),d.end++,o>=28&&n.swarmKey&&e.fixed32.preencode(d,n.swarmKey)},encode(d,n){const c=o>=28&&n.swarmKey?1:0;e.fixed32.encode(d,n.callKey),e.fixed32.encode(d,n.deviceKey),e.fixed32.encode(d,n.memberKey),e.uint.encode(d,n.createdAt),e.uint.encode(d,c),o>=28&&n.swarmKey&&e.fixed32.encode(d,n.swarmKey)},decode(d){const n=e.fixed32.decode(d),c=e.fixed32.decode(d),r=e.fixed32.decode(d),t=e.uint.decode(d),i=e.uint.decode(d);return{callKey:n,deviceKey:c,memberKey:r,createdAt:t,swarmKey:o>=28&&1&i?e.fixed32.decode(d):null}}},mi={preencode(d,o){e.fixed32.preencode(d,o.callKey),e.fixed32.preencode(d,o.deviceKey),e.buffer.preencode(d,o.streamKey),e.uint.preencode(d,o.createdAt)},encode(d,o){e.fixed32.encode(d,o.callKey),e.fixed32.encode(d,o.deviceKey),e.buffer.encode(d,o.streamKey),e.uint.encode(d,o.createdAt)},decode:d=>({callKey:e.fixed32.decode(d),deviceKey:e.fixed32.decode(d),streamKey:e.buffer.decode(d),createdAt:e.uint.decode(d)})},yi={preencode(d,n){e.fixed32.preencode(d,n.callKey),d.end++,o>=28&&n.selfDeviceKey&&e.fixed32.preencode(d,n.selfDeviceKey)},encode(d,n){const c=o>=28&&n.selfDeviceKey?1:0;e.fixed32.encode(d,n.callKey),e.uint.encode(d,c),o>=28&&n.selfDeviceKey&&e.fixed32.encode(d,n.selfDeviceKey)},decode(d){const n=e.fixed32.decode(d),c=e.uint.decode(d);return{callKey:n,selfDeviceKey:o>=28&&1&c?e.fixed32.decode(d):null}}},bi={preencode(d,o){e.uint.preencode(d,o.lastCleared)},encode(d,o){e.uint.encode(d,o.lastCleared)},decode:d=>({lastCleared:e.uint.decode(d)})},xi={Nightly:"Nightly",Internal:"Internal",Production:"Production"},vi={preencode(e,d){e.end++},encode(d,o){switch(o){case"Nightly":e.uint.encode(d,1);break;case"Internal":e.uint.encode(d,2);break;case"Production":e.uint.encode(d,3);break;default:throw new Error("Unknown enum")}},decode(d){switch(e.uint.decode(d)){case 1:return"Nightly";case 2:return"Internal";case 3:return"Production";default:return null}}},ki=_,gi={preencode(e,d){ki.preencode(e,d.header)},encode(e,d){ki.encode(e,d.header)},decode:e=>({header:ki.decode(e)})},Ki=_,hi={preencode(e,d){Ki.preencode(e,d.header)},encode(e,d){Ki.encode(e,d.header)},decode:e=>({header:Ki.decode(e)})},wi={preencode(d,n){vi.preencode(d,n.buildType),d.end++,o>=30&&n.latestOfflineAbi&&e.uint.preencode(d,n.latestOfflineAbi)},encode(d,n){const c=o>=30&&n.latestOfflineAbi?1:0;vi.encode(d,n.buildType),e.uint.encode(d,c),o>=30&&n.latestOfflineAbi&&e.uint.encode(d,n.latestOfflineAbi)},decode(d){const n=vi.decode(d),c=d.start<d.end?e.uint.decode(d):0;return{buildType:n,latestOfflineAbi:o>=30&&1&c?e.uint.decode(d):0}}},Ri=wc,Pi={preencode(d,n){e.uint.preencode(d,n.priority),d.end++,n.v3&&Ri.preencode(d,n.v3),o>=5&&n.timestamp&&e.uint.preencode(d,n.timestamp)},encode(d,n){const c=(n.v3?1:0)|(o>=3&&n.errored?2:0)|(o>=5&&n.timestamp?4:0);e.uint.encode(d,n.priority),e.uint.encode(d,c),n.v3&&Ri.encode(d,n.v3),o>=5&&n.timestamp&&e.uint.encode(d,n.timestamp)},decode(d){const n=e.uint.decode(d),c=e.uint.decode(d);return{roomKey:null,priority:n,v3:1&c?Ri.decode(d):null,errored:o>=3&&!!(2&c),timestamp:o>=5&&4&c?e.uint.decode(d):0}}},Ti=Yo,Ai=mo,Mi=ar,Di=kc,Ci=lr,Si=pr,Ii=ur,ji=Jo,Li=_o,Fi=yr,qi=Y,Bi=xr,Ei=Sn,Vi={preencode(d,n){const c=(n.selfDevice?1:0)|(n.selfMember?2:0)|(n.config?4:0)|(n.identity?8:0)|(n.lastMessage?16:0)|(n.dm?32:0)|(o>=19&&n.readLengths?64:0)|(o>=19&&n.lastMember?128:0)|(o>=21&&n.version?256:0)|(o>=27&&n.preferences?512:0)|(o>=28&&n.activeCall?1024:0);e.fixed32.preencode(d,n.discoveryKey),e.buffer.preencode(d,n.encryptionKey),Ti.preencode(d,n.digest),Ai.preencode(d,n.stats),Mi.preencode(d,n.timestamps),e.uint.preencode(d,n.fork),e.uint.preencode(d,n.length),e.fixed32.preencode(d,n.seed),Di.preencode(d,n.capabilities),Ci.preencode(d,n.status),e.uint.preencode(d,c),n.selfDevice&&Si.preencode(d,n.selfDevice),n.selfMember&&Ii.preencode(d,n.selfMember),n.config&&ji.preencode(d,n.config),n.identity&&Li.preencode(d,n.identity),n.lastMessage&&Fi.preencode(d,n.lastMessage),n.dm&&qi.preencode(d,n.dm),o>=19&&n.readLengths&&ds.preencode(d,n.readLengths),o>=19&&n.lastMember&&Bi.preencode(d,n.lastMember),o>=21&&n.version&&e.uint.preencode(d,n.version),o>=27&&n.preferences&&Ei.preencode(d,n.preferences),o>=28&&n.activeCall&&os.preencode(d,n.activeCall)},encode(d,n){const c=(n.selfDevice?1:0)|(n.selfMember?2:0)|(n.config?4:0)|(n.identity?8:0)|(n.lastMessage?16:0)|(n.dm?32:0)|(o>=19&&n.readLengths?64:0)|(o>=19&&n.lastMember?128:0)|(o>=21&&n.version?256:0)|(o>=27&&n.preferences?512:0)|(o>=28&&n.activeCall?1024:0);e.fixed32.encode(d,n.discoveryKey),e.buffer.encode(d,n.encryptionKey),Ti.encode(d,n.digest),Ai.encode(d,n.stats),Mi.encode(d,n.timestamps),e.uint.encode(d,n.fork),e.uint.encode(d,n.length),e.fixed32.encode(d,n.seed),Di.encode(d,n.capabilities),Ci.encode(d,n.status),e.uint.encode(d,c),n.selfDevice&&Si.encode(d,n.selfDevice),n.selfMember&&Ii.encode(d,n.selfMember),n.config&&ji.encode(d,n.config),n.identity&&Li.encode(d,n.identity),n.lastMessage&&Fi.encode(d,n.lastMessage),n.dm&&qi.encode(d,n.dm),o>=19&&n.readLengths&&ds.encode(d,n.readLengths),o>=19&&n.lastMember&&Bi.encode(d,n.lastMember),o>=21&&n.version&&e.uint.encode(d,n.version),o>=27&&n.preferences&&Ei.encode(d,n.preferences),o>=28&&n.activeCall&&os.encode(d,n.activeCall)},decode(d){const n=e.fixed32.decode(d),c=e.buffer.decode(d),r=Ti.decode(d),t=Ai.decode(d),i=Mi.decode(d),a=e.uint.decode(d),s=e.uint.decode(d),l=e.fixed32.decode(d),p=Di.decode(d),u=Ci.decode(d),f=e.uint.decode(d);return{roomKey:null,discoveryKey:n,encryptionKey:c,digest:r,stats:t,timestamps:i,fork:a,length:s,seed:l,capabilities:p,status:u,selfDevice:1&f?Si.decode(d):null,selfMember:2&f?Ii.decode(d):null,config:4&f?ji.decode(d):null,identity:8&f?Li.decode(d):null,lastMessage:16&f?Fi.decode(d):null,dm:32&f?qi.decode(d):null,readLengths:o>=19&&64&f?ds.decode(d):null,lastMember:o>=19&&128&f?Bi.decode(d):null,version:o>=21&&256&f?e.uint.decode(d):0,preferences:o>=27&&512&f?Ei.decode(d):null,activeCall:o>=28&&1024&f?os.decode(d):null}}},Oi=Sn,Ni={preencode(e,d){Oi.preencode(e,d.status)},encode(e,d){Oi.encode(e,d.status)},decode:e=>({roomKey:null,status:Oi.decode(e)})},Ui={preencode(d,o){e.fixed32.preencode(d,o.key),d.end++,o.roomKey&&e.fixed32.preencode(d,o.roomKey),o.keyPair&&t.preencode(d,o.keyPair),o.responseKeyPair&&t.preencode(d,o.responseKeyPair)},encode(d,o){const n=(o.roomKey?1:0)|(o.keyPair?2:0)|(o.responseKeyPair?4:0);e.fixed32.encode(d,o.key),e.uint.encode(d,n),o.roomKey&&e.fixed32.encode(d,o.roomKey),o.keyPair&&t.encode(d,o.keyPair),o.responseKeyPair&&t.encode(d,o.responseKeyPair)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d);return{mailbox:null,key:o,roomKey:1&n?e.fixed32.decode(d):null,keyPair:2&n?t.decode(d):null,responseKeyPair:4&n?t.decode(d):null}}},Ji=pe,Wi={preencode(e,d){Ji.preencode(e,d.profile)},encode(e,d){Ji.encode(e,d.profile)},decode:e=>({key:null,profile:Ji.decode(e)})},zi=te,Hi=ie,Gi={preencode(d,o){e.fixed32.preencode(d,o.memberKey),zi.preencode(d,o.status),ns.preencode(d,o.profile),d.end++,o.invitation&&Hi.preencode(d,o.invitation)},encode(d,o){const n=o.invitation?1:0;e.fixed32.encode(d,o.memberKey),zi.encode(d,o.status),ns.encode(d,o.profile),e.uint.encode(d,n),o.invitation&&Hi.encode(d,o.invitation)},decode:d=>({key:null,memberKey:e.fixed32.decode(d),status:zi.decode(d),profile:ns.decode(d),invitation:1&e.uint.decode(d)?Hi.decode(d):null})},Qi=pr,Xi={preencode(d,o){e.fixed32.preencode(d,o.roomKey),Qi.preencode(d,o.device)},encode(d,o){e.fixed32.encode(d,o.roomKey),Qi.encode(d,o.device)},decode:d=>({roomKey:e.fixed32.decode(d),device:Qi.decode(d)})},Yi={preencode(d,o){cs.preencode(d,o.status),d.end++,o.mailbox&&e.fixed32.preencode(d,o.mailbox),o.roomKey&&e.fixed32.preencode(d,o.roomKey)},encode(d,o){const n=(o.mailbox?1:0)|(o.roomKey?2:0);cs.encode(d,o.status),e.uint.encode(d,n),o.mailbox&&e.fixed32.encode(d,o.mailbox),o.roomKey&&e.fixed32.encode(d,o.roomKey)},decode(d){const o=cs.decode(d),n=e.uint.decode(d);return{memberKey:null,status:o,mailbox:1&n?e.fixed32.decode(d):null,roomKey:2&n?e.fixed32.decode(d):null}}},Zi=Hc,$i=Gc,_i=Qc,ea=Xc,da=Yc,oa=Zc,na=$c,ca=_c,ra=er,ta={preencode(d,o){const n=(o.restoreIdentity?1:0)|(o.createRoom?2:0)|(o.leaveRoom?4:0)|(o.clearRoom?8:0)|(o.joinRoomInvitation?16:0)|(o.joinRoomKeys?32:0)|(o.joinRoomResponse?64:0)|(o.sendContactRequest?128:0)|(o.migrateV2Room?256:0);e.uint.preencode(d,n),o.restoreIdentity&&Zi.preencode(d,o.restoreIdentity),o.createRoom&&$i.preencode(d,o.createRoom),o.leaveRoom&&_i.preencode(d,o.leaveRoom),o.clearRoom&&ea.preencode(d,o.clearRoom),o.joinRoomInvitation&&da.preencode(d,o.joinRoomInvitation),o.joinRoomKeys&&oa.preencode(d,o.joinRoomKeys),o.joinRoomResponse&&na.preencode(d,o.joinRoomResponse),o.sendContactRequest&&ca.preencode(d,o.sendContactRequest),o.migrateV2Room&&ra.preencode(d,o.migrateV2Room)},encode(d,o){const n=(o.restoreIdentity?1:0)|(o.createRoom?2:0)|(o.leaveRoom?4:0)|(o.clearRoom?8:0)|(o.joinRoomInvitation?16:0)|(o.joinRoomKeys?32:0)|(o.joinRoomResponse?64:0)|(o.sendContactRequest?128:0)|(o.migrateV2Room?256:0);e.uint.encode(d,n),o.restoreIdentity&&Zi.encode(d,o.restoreIdentity),o.createRoom&&$i.encode(d,o.createRoom),o.leaveRoom&&_i.encode(d,o.leaveRoom),o.clearRoom&&ea.encode(d,o.clearRoom),o.joinRoomInvitation&&da.encode(d,o.joinRoomInvitation),o.joinRoomKeys&&oa.encode(d,o.joinRoomKeys),o.joinRoomResponse&&na.encode(d,o.joinRoomResponse),o.sendContactRequest&&ca.encode(d,o.sendContactRequest),o.migrateV2Room&&ra.encode(d,o.migrateV2Room)},decode(d){const o=e.uint.decode(d);return{discoveryKey:null,priority:0,timestamp:0,type:0,restoreIdentity:1&o?Zi.decode(d):null,createRoom:2&o?$i.decode(d):null,leaveRoom:4&o?_i.decode(d):null,clearRoom:8&o?ea.decode(d):null,joinRoomInvitation:16&o?da.decode(d):null,joinRoomKeys:32&o?oa.decode(d):null,joinRoomResponse:64&o?na.decode(d):null,sendContactRequest:128&o?ca.decode(d):null,migrateV2Room:256&o?ra.decode(d):null}}},ia={preencode(d,o){e.uint.preencode(d,o.blockLength),e.uint.preencode(d,o.byteOffset),e.uint.preencode(d,o.byteLength)},encode(d,o){e.uint.encode(d,o.blockLength),e.uint.encode(d,o.byteOffset),e.uint.encode(d,o.byteLength)},decode:d=>({blockOffset:0,blockLength:e.uint.decode(d),byteOffset:e.uint.decode(d),byteLength:e.uint.decode(d)})},aa={preencode(e,d){s.preencode(e,d.blob)},encode(e,d){s.encode(e,d.blob)},decode:e=>({key:null,blob:s.decode(e)})},sa=y,la=b,pa={preencode(d,o){d.end++,o.inlined&&e.buffer.preencode(d,o.inlined),o.blob&&s.preencode(d,o.blob),o.externalBlob&&sa.preencode(d,o.externalBlob),o.externalDrive&&la.preencode(d,o.externalDrive)},encode(d,o){const n=(o.inlined?1:0)|(o.blob?2:0)|(o.externalBlob?4:0)|(o.externalDrive?8:0);e.uint.encode(d,n),o.inlined&&e.buffer.encode(d,o.inlined),o.blob&&s.encode(d,o.blob),o.externalBlob&&sa.encode(d,o.externalBlob),o.externalDrive&&la.encode(d,o.externalDrive)},decode(d){const o=e.uint.decode(d);return{inlined:1&o?e.buffer.decode(d):null,blob:2&o?s.decode(d):null,externalBlob:4&o?sa.decode(d):null,externalDrive:8&o?la.decode(d):null}}},ua=v,fa=k,ma={preencode(d,o){ua.preencode(d,o.pointer),d.end++,o.metadata&&fa.preencode(d,o.metadata),o.preview&&rs.preencode(d,o.preview),o.hash&&e.fixed32.preencode(d,o.hash)},encode(d,o){const n=(o.metadata?1:0)|(o.preview?2:0)|(o.hash?4:0);ua.encode(d,o.pointer),e.uint.encode(d,n),o.metadata&&fa.encode(d,o.metadata),o.preview&&rs.encode(d,o.preview),o.hash&&e.fixed32.encode(d,o.hash)},decode(d){const o=ua.decode(d),n=e.uint.decode(d);return{pointer:o,metadata:1&n?fa.decode(d):null,preview:2&n?rs.decode(d):null,hash:4&n?e.fixed32.decode(d):null}}},ya=K,ba={preencode(d,n){ya.preencode(d,n.file),e.fixed32.preencode(d,n.roomKey),d.end++,n.encryptionKey&&e.buffer.preencode(d,n.encryptionKey),o>=28&&n.lastAccessed&&e.uint.preencode(d,n.lastAccessed),o>=28&&n.version&&e.uint.preencode(d,n.version)},encode(d,n){const c=(n.encryptionKey?1:0)|(n.cleared?2:0)|(n.own?4:0)|(o>=28&&n.lastAccessed?8:0)|(o>=28&&n.version?16:0);ya.encode(d,n.file),e.fixed32.encode(d,n.roomKey),e.uint.encode(d,c),n.encryptionKey&&e.buffer.encode(d,n.encryptionKey),o>=28&&n.lastAccessed&&e.uint.encode(d,n.lastAccessed),o>=28&&n.version&&e.uint.encode(d,n.version)},decode(d){const n=ya.decode(d),c=e.fixed32.decode(d),r=e.uint.decode(d);return{file:n,roomKey:c,encryptionKey:1&r?e.buffer.decode(d):null,cleared:!!(2&r),own:!!(4&r),lastAccessed:o>=28&&8&r?e.uint.decode(d):0,version:o>=28&&16&r?e.uint.decode(d):0}}},xa={preencode(d,o){e.uint.preencode(d,o.size)},encode(d,o){e.uint.encode(d,o.size)},decode:d=>({key:null,path:null,version:0,size:e.uint.decode(d)})},va=y,ka=b,ga={preencode(d,o){d.end++,o.inlined&&e.buffer.preencode(d,o.inlined),o.blob&&s.preencode(d,o.blob),o.externalBlob&&va.preencode(d,o.externalBlob),o.externalDrive&&ka.preencode(d,o.externalDrive)},encode(d,o){const n=(o.inlined?1:0)|(o.blob?2:0)|(o.externalBlob?4:0)|(o.externalDrive?8:0);e.uint.encode(d,n),o.inlined&&e.buffer.encode(d,o.inlined),o.blob&&s.encode(d,o.blob),o.externalBlob&&va.encode(d,o.externalBlob),o.externalDrive&&ka.encode(d,o.externalDrive)},decode(d){const o=e.uint.decode(d);return{inlined:1&o?e.buffer.decode(d):null,blob:2&o?s.decode(d):null,externalBlob:4&o?va.decode(d):null,externalDrive:8&o?ka.decode(d):null}}},Ka=v,ha=k,wa={preencode(d,o){Ka.preencode(d,o.pointer),d.end++,o.metadata&&ha.preencode(d,o.metadata),o.preview&&ts.preencode(d,o.preview),o.hash&&e.fixed32.preencode(d,o.hash)},encode(d,o){const n=(o.metadata?1:0)|(o.preview?2:0)|(o.hash?4:0);Ka.encode(d,o.pointer),e.uint.encode(d,n),o.metadata&&ha.encode(d,o.metadata),o.preview&&ts.encode(d,o.preview),o.hash&&e.fixed32.encode(d,o.hash)},decode(d){const o=Ka.decode(d),n=e.uint.decode(d);return{pointer:o,metadata:1&n?ha.decode(d):null,preview:2&n?ts.decode(d):null,hash:4&n?e.fixed32.decode(d):null}}},Ra=K,Pa={preencode(d,n){Ra.preencode(d,n.file),e.fixed32.preencode(d,n.roomKey),d.end++,n.encryptionKey&&e.buffer.preencode(d,n.encryptionKey),o>=28&&n.lastAccessed&&e.uint.preencode(d,n.lastAccessed),o>=28&&n.version&&e.uint.preencode(d,n.version)},encode(d,n){const c=(n.encryptionKey?1:0)|(n.cleared?2:0)|(n.own?4:0)|(o>=28&&n.lastAccessed?8:0)|(o>=28&&n.version?16:0);Ra.encode(d,n.file),e.fixed32.encode(d,n.roomKey),e.uint.encode(d,c),n.encryptionKey&&e.buffer.encode(d,n.encryptionKey),o>=28&&n.lastAccessed&&e.uint.encode(d,n.lastAccessed),o>=28&&n.version&&e.uint.encode(d,n.version)},decode(d){const n=Ra.decode(d),c=e.fixed32.decode(d),r=e.uint.decode(d);return{file:n,roomKey:c,encryptionKey:1&r?e.buffer.decode(d):null,cleared:!!(2&r),own:!!(4&r),lastAccessed:o>=28&&8&r?e.uint.decode(d):0,version:o>=28&&16&r?e.uint.decode(d):0}}},Ta={preencode(d,o){e.uint.preencode(d,o.timestamp),d.end++,o.lastSynced&&e.uint.preencode(d,o.lastSynced)},encode(d,o){const n=(o.lastSynced?1:0)|(o.dirty?2:0);e.uint.encode(d,o.timestamp),e.uint.encode(d,n),o.lastSynced&&e.uint.encode(d,o.lastSynced)},decode(d){const o=e.uint.decode(d),n=e.uint.decode(d);return{discoveryPublicKey:null,timestamp:o,lastSynced:1&n?e.uint.decode(d):0,dirty:!!(2&n)}}},Aa={preencode(e,d){},encode(e,d){},decode:e=>({key:null,responsePublicKey:null})},Ma={preencode(d,n){d.end++,o>=10&&n.repairs&&e.uint.preencode(d,n.repairs)},encode(d,n){const c=o>=10&&n.repairs?1:0;e.uint.encode(d,c),o>=10&&n.repairs&&e.uint.encode(d,n.repairs)},decode(d){const n=e.uint.decode(d);return{roomKey:null,repairs:o>=10&&1&n?e.uint.decode(d):0}}},Da={preencode(d,o){e.uint.preencode(d,o.count)},encode(d,o){e.uint.encode(d,o.count)},decode:d=>({roomKey:null,count:e.uint.decode(d)})},Ca=Ft,Sa={preencode(d,n){e.string.preencode(d,n.code),e.string.preencode(d,n.message),e.string.preencode(d,n.stack),d.end++,o>=20&&n.details&&Ca.preencode(d,n.details)},encode(d,n){const c=o>=20&&n.details?1:0;e.string.encode(d,n.code),e.string.encode(d,n.message),e.string.encode(d,n.stack),e.uint.encode(d,c),o>=20&&n.details&&Ca.encode(d,n.details)},decode(d){const n=e.string.decode(d),c=e.string.decode(d),r=e.string.decode(d),t=e.uint.decode(d);return{code:n,message:c,stack:r,timestamp:0,details:o>=20&&1&t?Ca.decode(d):null}}},Ia={preencode(d,o){e.uint.preencode(d,o.total)},encode(d,o){e.uint.encode(d,o.total)},decode:d=>({roomKey:null,total:e.uint.decode(d)})},ja=e.frame(R),La=ja,Fa=e.array(rt),qa=e.frame(le),Ba=ja,Ea=qa,Va=e.frame(Br),Oa=qa,Na=e.frame(md),Ua=e.frame(Sr),Ja=e.frame(Qt),Wa=Ja,za=e.array(e.frame(it)),Ha=ja,Ga=e.frame(Un),Qa=Ga,Xa=Ga,Ya=e.frame(Er),Za=e.frame(jr),$a=e.array(e.frame(Tt)),_a=e.frame(yi),es=ja,ds=$a,os=_a,ns=qa,cs=Ga,rs=ja,ts=ja;function is(e){o=e}function as(d,n,c=30){return o=c,e.encode(ps(d),n)}function ss(d,n,c=30){return o=c,e.decode(ps(d),n)}function ls(e){switch(e){case"@keet/room-type":return U;case"@local/tasks":return Dc;case"@keet/display-type":return Gr;case"@keet/system-settings-keys":return et;case"@keet/room-supported-language":return ct;case"@keet/label-type":return mt;case"@keet-private-id/user-settings-key":return Dt;case"@local/keet-state":return Bt;case"@keet/member-label-type":return Ot;case"@keet/build-type":return xi;default:throw new Error("Enum not found "+e)}}function ps(e){switch(e){case"@keet/head":return n;case"@keet/oplog-id":return c;case"@keet/encryption-keypair":return r;case"@keet/signing-keypair":return t;case"@keet/room-keys":return i;case"@keet/operation-header":return a;case"@keet/blob-pointer":return s;case"@keet/file-dimensions":return l;case"@keet/file-metadata":return u;case"@keet/external-drive-pointer":return f;case"@keet/external-blob-pointer":return m;case"@keet/file-pointer":return x;case"@keet/file":return g;case"@keet/image-file":return R;case"@keet/file-status":return P;case"@keet/file-record":return M;case"@keet/device-status":return D;case"@keet/member-status":return C;case"@keet/member-moderation-status":return S;case"@keet/abi":return I;case"@keet/device-stats":return j;case"@keet/member-stats":return L;case"@keet/chat-stats":return F;case"@keet/file-stats":return q;case"@keet/stats":return N;case"@keet/room-type":return J;case"@keet/system-settings":return W;case"@keet/system-digest":return G;case"@keet/room-seed":return Q;case"@keet/room-capabilities":return X;case"@keet/room-config":return Z;case"@keet/blind-peer":return $;case"@keet/add-blind-peer-operation":return de;case"@keet/remove-blind-peer-operation":return ne;case"@keet/identity-attestation":return ce;case"@keet/device-invitation":return re;case"@keet/device":return ae;case"@keet/member-profile":return se;case"@keet/device-profile":return le;case"@keet/member-update":return ue;case"@keet/device-update":return fe;case"@keet/signed-pairing-data":return me;case"@keet/device-request-identity":return ye;case"@keet/device-response-identity":return be;case"@keet/device-request-with-invitation":return ge;case"@keet/device-request-with-invitation-and-proof":return he;case"@keet/device-request-with-member-proof":return Pe;case"@keet/device-request":return Me;case"@keet/device-response":return Se;case"@keet/invitation-metadata":return Ie;case"@keet/invitation":return Fe;case"@keet/add-invitation-operation":return Ee;case"@keet/remove-invitation-operation":return Oe;case"@keet/sendable-room-invitation":return Ne;case"@keet/sendable-identity-invitation":return Ue;case"@keet/sendable-contact-invitation":return Je;case"@keet/sendable-invitation":return Qe;case"@keet/add-device-operation":return Ye;case"@keet/update-device-operation":return $e;case"@keet/start-indexing-operation":return _e;case"@keet/stop-indexing-operation":return ed;case"@keet/join-request":return od;case"@keet/accept-join-request-operation":return rd;case"@keet/reject-join-request-operation":return id;case"@keet/member":return ld;case"@keet/full-member":return fd;case"@keet/member-proofs":return md;case"@keet/update-member-operation":return xd;case"@keet/change-member-status-operation":return gd;case"@keet/change-member-role-operation":return hd;case"@keet/remove-member-operation":return Rd;case"@keet/member-activity":return Pd;case"@keet/member-joined-event":return Td;case"@keet/member-left-event":return Ad;case"@keet/title-changed-chat-event":return Md;case"@keet/chat-event":return Id;case"@keet/sendable-event":return jd;case"@keet/display-range":return Ld;case"@keet/display-content-range":return qd;case"@keet/mention-display-item":return Ed;case"@keet/link-preview":return Nd;case"@keet/display-link-item":return Wd;case"@keet/display":return eo;case"@keet/oplog-message":return ro;case"@keet/index-message":return ao;case"@keet/full-index-message":return po;case"@keet/message-status":return uo;case"@keet/message-index-id":return fo;case"@keet/thread":return yo;case"@keet/chat-message-record":return ko;case"@keet/full-chat-message-record":return wo;case"@keet/add-chat-message-operation":return To;case"@keet/remove-chat-message-operation":return Mo;case"@keet/update-chat-message-operation":return So;case"@keet/pin-chat-message-operation":return jo;case"@keet/reaction":return Lo;case"@keet/reactions-summary":return Fo;case"@keet/reactions-digest":return Bo;case"@keet/add-reaction-operation":return Vo;case"@keet/remove-reaction-operation":return No;case"@keet/update-room-config-operation":return Wo;case"@keet/group-member":return zo;case"@keet/user-registry-info":return Ho;case"@keet/room-identity":return Qo;case"@keet/genesis-operation":return on;case"@keet/upgrade-operation":return cn;case"@keet/update-system-settings-operation":return an;case"@keet-private-id/contact":return sn;case"@keet-private-id/v3-room-migration-info":return ln;case"@keet-private-id/run-v3-migration-operation":return fn;case"@keet-private-id/update-identity-operation":return yn;case"@keet-private-id/counters":return bn;case"@keet-private-id/stats":return xn;case"@keet-private-id/add-entropy-operation":return vn;case"@keet-private-id/pending-invitation-identity":return kn;case"@keet-private-id/pending-invitation":return Kn;case"@keet-private-id/resolve-pending-invitation-operation":return wn;case"@keet-private-id/add-pending-invitation-operation":return Tn;case"@keet-private-id/remove-pending-invitation-operation":return Mn;case"@keet-private-id/identity-swap":return Dn;case"@keet-private-id/room-status":return Cn;case"@keet-private-id/room":return Ln;case"@keet-private-id/add-room-operation":return qn;case"@keet-private-id/remove-room-operation":return En;case"@keet-private-id/update-room-status-operation":return Nn;case"@keet-private-id/contact-status":return Un;case"@keet-private-id/contact-record":return Jn;case"@keet-private-id/add-contact-operation":return Hn;case"@keet-private-id/update-contact-status-operation":return Qn;case"@keet-private-id/remove-contact-operation":return Yn;case"@keet-private-id/contact-request-status":return Zn;case"@keet-private-id/contact-request-body":return ec;case"@keet-private-id/contact-request":return oc;case"@keet-private-id/contact-request-record":return tc;case"@keet-private-id/add-contact-request-operation":return ac;case"@keet-private-id/update-contact-request-status-operation":return pc;case"@keet-private-id/profile-discovery-record-v1":return uc;case"@keet-private-id/profile-discovery-record":return fc;case"@local/background-sync-room":return mc;case"@local/stats":return yc;case"@local/migration-status":return bc;case"@local/v3-private-profile-migration":return vc;case"@local/v3-room-migration":return Kc;case"@local/room-migration-stats":return hc;case"@local/room-migration":return Rc;case"@local/identity-status":return Pc;case"@local/identity-record":return Mc;case"@local/tasks":return Cc;case"@local/room-keys":return Sc;case"@local/join-room-invitation-task":return jc;case"@local/join-room-response-task":return Lc;case"@local/fast-forward-to":return Fc;case"@local/add-room-fields":return qc;case"@local/join-room-keys-task":return Ec;case"@local/create-room-task":return Oc;case"@local/leave-room-task":return Nc;case"@local/clear-room-task":return Uc;case"@local/restore-identity-task":return Jc;case"@local/send-contact-request-task":return Wc;case"@local/migrate-v2-room-task":return zc;case"@local/task":return dr;case"@local/shared-invitation":return nr;case"@local/room-status":return cr;case"@local/room-timestamps":return rr;case"@local/room":return kr;case"@local/room-preferences":return Kr;case"@local/writer":return hr;case"@local/member":return Rr;case"@local/device":return Tr;case"@local/file":return Mr;case"@keet/add-file-preview-operation":return Cr;case"@keet/member-removed-event":return Sr;case"@keet/member-contact-info":return jr;case"@keet/remove-device-operation":return Fr;case"@keet/device-identity":return qr;case"@keet/readonly-room-invitation":return Br;case"@keet-private-id/identity-swap-v2":return Er;case"@keet-private-id/activate-contact-room-operation":return Or;case"@local/identity-swap":return Nr;case"@local/writer-append":return Ur;case"@local/room-metadata":return Jr;case"@local/debug-flag":return Wr;case"@local/debug":return Hr;case"@keet/display-type":return Qr;case"@keet/test-increment-operation":return Yr;case"@keet/test-collection-record-1":return Zr;case"@keet/migrate-abi-operation":return _r;case"@keet/system-settings-keys":return dt;case"@local/hyperdht-record":return nt;case"@keet/room-supported-language":return rt;case"@keet/translation-display-item":return it;case"@local/unread":return at;case"@keet-private-id/unreads":return st;case"@keet-private-id/add-unreads-key-operation":return pt;case"@keet-private-id/remove-unreads-key-operation":return ft;case"@keet/label-type":return yt;case"@keet/chat-label":return bt;case"@keet/add-chat-label-operation":return vt;case"@keet/remove-chat-label-operation":return gt;case"@keet/chat-label-summary":return Kt;case"@keet/chat-label-digest":return wt;case"@keet/update-read-length-operation":return Pt;case"@keet/read-length":return Tt;case"@keet/tmp-removed-member":return At;case"@keet-private-id/settings":return Mt;case"@keet-private-id/user-settings-key":return Ct;case"@keet-private-id/update-settings-operation":return jt;case"@local/error-record-details":return Lt;case"@local/error-record":return qt;case"@local/keet-state":return Et;case"@local/file-stats":return Vt;case"@keet/member-label-type":return Nt;case"@keet/member-label":return Ut;case"@keet/add-member-label-operation":return Wt;case"@keet/member-label-summary":return zt;case"@keet/member-label-digest":return Gt;case"@keet/location-shared-event":return Qt;case"@keet/move-indexer-operation":return Yt;case"@keet/start-call":return _t;case"@keet/join-call":return oi;case"@keet/leave-call":return ci;case"@keet/end-call":return ti;case"@keet/add-call-stream":return ai;case"@keet/remove-call-stream":return li;case"@keet/call-record":return pi;case"@keet/call-member-record":return ui;case"@keet/call-device-record":return fi;case"@keet/call-stream-record":return mi;case"@local/active-call":return yi;case"@local/file-gc-info":return bi;case"@keet/build-type":return vi;case"@keet/test-crash-operation":return gi;case"@keet/test-dispatch-error-operation":return hi;case"@local/environment-record":return wi;case"@local/room-migration/hyperdb#3":return Pi;case"@local/room/hyperdb#6":return Vi;case"@local/room-preferences/hyperdb#13":return Ni;case"@local/writer/hyperdb#14":return Ui;case"@local/member/hyperdb#17":return Wi;case"@keet/device/hyperdb#18":return Gi;case"@local/device/hyperdb#18":return Xi;case"@keet-private-id/contact/hyperdb#19":return Yi;case"@local/task/hyperdb#21":return ta;case"@keet/blob-pointer/hyperdb#23":return ia;case"@keet/external-blob-pointer/hyperdb#23":return aa;case"@keet/file-pointer/hyperdb#23":return pa;case"@keet/file/hyperdb#23":return ma;case"@local/file/hyperdb#23":return ba;case"@keet/external-drive-pointer/hyperdb#24":return xa;case"@keet/file-pointer/hyperdb#24":return ga;case"@keet/file/hyperdb#24":return wa;case"@local/file/hyperdb#24":return Pa;case"@local/background-sync-room/hyperdb#27":return Ta;case"@local/writer-append/hyperdb#29":return Aa;case"@local/room-metadata/hyperdb#30":return Ma;case"@local/unread/hyperdb#33":return Da;case"@local/error-record/hyperdb#35":return Sa;case"@local/file-stats/hyperdb#37":return Ia;default:throw new Error("Encoder not found "+e)}}function us(e,d=30){const n=ps(e);return{preencode(e,c){o=d,n.preencode(e,c)},encode(e,c){o=d,n.encode(e,c)},decode:e=>(o=d,n.decode(e))}}const fs=us;module.exports={resolveStruct:fs,getStruct:us,getEnum:ls,getEncoding:ps,encode:as,decode:ss,setVersion:is,version:o};
@holepunchto/keet-core/schema/spec/local/hyperschema/index.js +1 -0
……@@ -0,0 +1 @@
1const{c:e}=require("hyperschema/runtime"),d=30;let o=d;const n={preencode(d,o){e.fixed32.preencode(d,o.key),e.uint.preencode(d,o.length)},encode(d,o){e.fixed32.encode(d,o.key),e.uint.encode(d,o.length)},decode:d=>({key:e.fixed32.decode(d),length:e.uint.decode(d)})},c={preencode(d,o){e.fixed32.preencode(d,o.key),e.uint.preencode(d,o.seq)},encode(d,o){e.fixed32.encode(d,o.key),e.uint.encode(d,o.seq)},decode:d=>({key:e.fixed32.decode(d),seq:e.uint.decode(d)})},r={preencode(d,o){e.fixed32.preencode(d,o.publicKey),e.fixed32.preencode(d,o.secretKey)},encode(d,o){e.fixed32.encode(d,o.publicKey),e.fixed32.encode(d,o.secretKey)},decode:d=>({publicKey:e.fixed32.decode(d),secretKey:e.fixed32.decode(d)})},t={preencode(d,o){e.fixed32.preencode(d,o.publicKey),e.fixed64.preencode(d,o.secretKey)},encode(d,o){e.fixed32.encode(d,o.publicKey),e.fixed64.encode(d,o.secretKey)},decode:d=>({publicKey:e.fixed32.decode(d),secretKey:e.fixed64.decode(d)})},i={preencode(d,o){e.fixed32.preencode(d,o.key),d.end++,o.encryptionKey&&e.buffer.preencode(d,o.encryptionKey),o.fastForwardTo&&e.fixed32.preencode(d,o.fastForwardTo)},encode(d,o){const n=(o.encryptionKey?1:0)|(o.fastForwardTo?2:0);e.fixed32.encode(d,o.key),e.uint.encode(d,n),o.encryptionKey&&e.buffer.encode(d,o.encryptionKey),o.fastForwardTo&&e.fixed32.encode(d,o.fastForwardTo)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d);return{key:o,encryptionKey:1&n?e.buffer.decode(d):null,fastForwardTo:2&n?e.fixed32.decode(d):null}}},a={preencode(d,o){e.uint.preencode(d,o.timestamp)},encode(d,o){e.uint.encode(d,o.timestamp)},decode:d=>({timestamp:e.uint.decode(d)})},s={preencode(d,o){e.uint.preencode(d,o.blockOffset),e.uint.preencode(d,o.blockLength),e.uint.preencode(d,o.byteOffset),e.uint.preencode(d,o.byteLength)},encode(d,o){e.uint.encode(d,o.blockOffset),e.uint.encode(d,o.blockLength),e.uint.encode(d,o.byteOffset),e.uint.encode(d,o.byteLength)},decode:d=>({blockOffset:e.uint.decode(d),blockLength:e.uint.decode(d),byteOffset:e.uint.decode(d),byteLength:e.uint.decode(d)})},p={preencode(d,o){e.uint.preencode(d,o.width),e.uint.preencode(d,o.height)},encode(d,o){e.uint.encode(d,o.width),e.uint.encode(d,o.height)},decode:d=>({width:e.uint.decode(d),height:e.uint.decode(d)})},u=e.frame(p),l={preencode(d,o){d.end++,o.name&&e.string.preencode(d,o.name),o.mimetype&&e.string.preencode(d,o.mimetype),o.dimensions&&u.preencode(d,o.dimensions),o.userdata&&e.buffer.preencode(d,o.userdata),o.duration&&e.uint.preencode(d,o.duration)},encode(d,o){const n=(o.name?1:0)|(o.mimetype?2:0)|(o.dimensions?4:0)|(o.userdata?8:0)|(o.duration?16:0)|(o.isPreview?32:0);e.uint.encode(d,n),o.name&&e.string.encode(d,o.name),o.mimetype&&e.string.encode(d,o.mimetype),o.dimensions&&u.encode(d,o.dimensions),o.userdata&&e.buffer.encode(d,o.userdata),o.duration&&e.uint.encode(d,o.duration)},decode(d){const o=e.uint.decode(d);return{name:1&o?e.string.decode(d):null,mimetype:2&o?e.string.decode(d):null,dimensions:4&o?u.decode(d):null,userdata:8&o?e.buffer.decode(d):null,duration:16&o?e.uint.decode(d):0,isPreview:!!(32&o)}}},f={preencode(d,o){e.fixed32.preencode(d,o.key),e.string.preencode(d,o.path),e.uint.preencode(d,o.version),e.uint.preencode(d,o.size)},encode(d,o){e.fixed32.encode(d,o.key),e.string.encode(d,o.path),e.uint.encode(d,o.version),e.uint.encode(d,o.size)},decode:d=>({key:e.fixed32.decode(d),path:e.string.decode(d),version:e.uint.decode(d),size:e.uint.decode(d)})},m={preencode(d,o){e.fixed32.preencode(d,o.key),s.preencode(d,o.blob)},encode(d,o){e.fixed32.encode(d,o.key),s.encode(d,o.blob)},decode:d=>({key:e.fixed32.decode(d),blob:s.decode(d)})},y=e.frame(m),x=e.frame(f),b={preencode(d,o){d.end++,o.inlined&&e.buffer.preencode(d,o.inlined),o.blob&&s.preencode(d,o.blob),o.externalBlob&&y.preencode(d,o.externalBlob),o.externalDrive&&x.preencode(d,o.externalDrive)},encode(d,o){const n=(o.inlined?1:0)|(o.blob?2:0)|(o.externalBlob?4:0)|(o.externalDrive?8:0);e.uint.encode(d,n),o.inlined&&e.buffer.encode(d,o.inlined),o.blob&&s.encode(d,o.blob),o.externalBlob&&y.encode(d,o.externalBlob),o.externalDrive&&x.encode(d,o.externalDrive)},decode(d){const o=e.uint.decode(d);return{inlined:1&o?e.buffer.decode(d):null,blob:2&o?s.decode(d):null,externalBlob:4&o?y.decode(d):null,externalDrive:8&o?x.decode(d):null}}},v=e.frame(b),k=e.frame(l),g={preencode(d,o){v.preencode(d,o.pointer),d.end++,o.metadata&&k.preencode(d,o.metadata),o.preview&&Pi.preencode(d,o.preview),o.hash&&e.fixed32.preencode(d,o.hash)},encode(d,o){const n=(o.metadata?1:0)|(o.preview?2:0)|(o.hash?4:0);v.encode(d,o.pointer),e.uint.encode(d,n),o.metadata&&k.encode(d,o.metadata),o.preview&&Pi.encode(d,o.preview),o.hash&&e.fixed32.encode(d,o.hash)},decode(d){const o=v.decode(d),n=e.uint.decode(d);return{pointer:o,metadata:1&n?k.decode(d):null,preview:2&n?Pi.decode(d):null,hash:4&n?e.fixed32.decode(d):null}}},K=e.frame(g),h=K,w=K,P={preencode(e,d){e.end++,d.small&&K.preencode(e,d.small),d.medium&&h.preencode(e,d.medium),d.large&&w.preencode(e,d.large)},encode(d,o){const n=(o.small?1:0)|(o.medium?2:0)|(o.large?4:0);e.uint.encode(d,n),o.small&&K.encode(d,o.small),o.medium&&h.encode(d,o.medium),o.large&&w.encode(d,o.large)},decode(d){const o=e.uint.decode(d);return{small:1&o?K.decode(d):null,medium:2&o?h.decode(d):null,large:4&o?w.decode(d):null}}},T={preencode(e,d){e.end++},encode(d,o){const n=o.isDeleted?1:0;e.uint.encode(d,n)},decode:d=>({isDeleted:!!(1&e.uint.decode(d))})},R=e.frame(T),A=K,M={preencode(d,n){e.uint.preencode(d,n.id),c.preencode(d,n.oplog),R.preencode(d,n.status),A.preencode(d,n.file),d.end++,o>=22&&n.version&&e.uint.preencode(d,n.version)},encode(d,n){const r=o>=22&&n.version?1:0;e.uint.encode(d,n.id),c.encode(d,n.oplog),R.encode(d,n.status),A.encode(d,n.file),e.uint.encode(d,r),o>=22&&n.version&&e.uint.encode(d,n.version)},decode(d){const n=e.uint.decode(d),r=c.decode(d),t=R.decode(d),i=A.decode(d),a=d.start<d.end?e.uint.decode(d):0;return{id:n,oplog:r,status:t,file:i,version:o>=22&&1&a?e.uint.decode(d):0}}},D={preencode(e,d){e.end++},encode(d,o){const n=(o.isActive?1:0)|(o.isIndexing?2:0);e.uint.encode(d,n)},decode(d){const o=e.uint.decode(d);return{isActive:!!(1&o),isIndexing:!!(2&o)}}},C={preencode(d,n){const c=(n.isAdmin?1:0)|(n.isModerator?2:0)|(n.isPending?4:0)|(n.isActive?8:0)|(n.isMuted?16:0)|(n.isBanned?32:0)|(n.isShadowBanned?64:0)|(o>=19&&n.isRemoved?128:0);e.uint.preencode(d,c)},encode(d,n){const c=(n.isAdmin?1:0)|(n.isModerator?2:0)|(n.isPending?4:0)|(n.isActive?8:0)|(n.isMuted?16:0)|(n.isBanned?32:0)|(n.isShadowBanned?64:0)|(o>=19&&n.isRemoved?128:0);e.uint.encode(d,c)},decode(d){const n=e.uint.decode(d);return{isAdmin:!!(1&n),isModerator:!!(2&n),isPending:!!(4&n),isActive:!!(8&n),isMuted:!!(16&n),isBanned:!!(32&n),isShadowBanned:!!(64&n),isRemoved:o>=19&&!!(128&n)}}},S={preencode(e,d){e.end++},encode(d,o){const n=(o.isMuted?1:0)|(o.isBanned?2:0)|(o.isShadowBanned?4:0);e.uint.encode(d,n)},decode(d){const o=e.uint.decode(d);return{isMuted:!!(1&o),isBanned:!!(2&o),isShadowBanned:!!(4&o)}}},F={preencode(d,o){e.uint.preencode(d,o.version)},encode(d,o){e.uint.encode(d,o.version)},decode:d=>({version:e.uint.decode(d)})},I={preencode(d,o){e.uint.preencode(d,o.total),e.uint.preencode(d,o.active)},encode(d,o){e.uint.encode(d,o.total),e.uint.encode(d,o.active)},decode:d=>({total:e.uint.decode(d),active:e.uint.decode(d)})},L={preencode(d,o){e.uint.preencode(d,o.total),e.uint.preencode(d,o.active),e.uint.preencode(d,o.pending)},encode(d,o){e.uint.encode(d,o.total),e.uint.encode(d,o.active),e.uint.encode(d,o.pending)},decode:d=>({total:e.uint.decode(d),active:e.uint.decode(d),pending:e.uint.decode(d)})},q={preencode(d,n){e.uint.preencode(d,n.clock),e.uint.preencode(d,n.pinned),e.uint.preencode(d,n.threads),e.uint.preencode(d,n.timestamp),d.end++,o>=24&&n.flagsClock&&e.uint.preencode(d,n.flagsClock)},encode(d,n){const c=o>=24&&n.flagsClock?1:0;e.uint.encode(d,n.clock),e.uint.encode(d,n.pinned),e.uint.encode(d,n.threads),e.uint.encode(d,n.timestamp),e.uint.encode(d,c),o>=24&&n.flagsClock&&e.uint.encode(d,n.flagsClock)},decode(d){const n=e.uint.decode(d),c=e.uint.decode(d),r=e.uint.decode(d),t=e.uint.decode(d),i=d.start<d.end?e.uint.decode(d):0;return{clock:n,pinned:c,threads:r,timestamp:t,flagsClock:o>=24&&1&i?e.uint.decode(d):0}}},j={preencode(d,o){e.uint.preencode(d,o.clock)},encode(d,o){e.uint.encode(d,o.clock)},decode:d=>({clock:e.uint.decode(d)})},E=e.frame(I),B=e.frame(L),N=e.frame(q),V=e.frame(j),O={preencode(e,d){E.preencode(e,d.devices),B.preencode(e,d.members),N.preencode(e,d.chat),V.preencode(e,d.files)},encode(e,d){E.encode(e,d.devices),B.encode(e,d.members),N.encode(e,d.chat),V.encode(e,d.files)},decode:e=>({devices:E.decode(e),members:B.decode(e),chat:N.decode(e),files:V.decode(e)})},U={Default:1,Broadcast:2,DirectMessage:3},J={preencode(e,d){e.end++},encode(d,o){if(o>3)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},W={preencode(d,n){const c=(n.roomType?1:0)|(n.isExperimental?2:0)|(n.isJoiningDisabled?4:0)|(n.isAppendingDisabled?8:0)|(n.isCallingDisabled?16:0)|(n.isMembershipEventsDisabled?32:0)|(o>=28&&n.isAttachmentsDisabled?64:0)|(o>=28&&n.isLinksDisabled?128:0)|(o>=29&&n.buildType?256:0);e.uint.preencode(d,c),n.roomType&&J.preencode(d,n.roomType),o>=29&&n.buildType&&vi.preencode(d,n.buildType)},encode(d,n){const c=(n.roomType?1:0)|(n.isExperimental?2:0)|(n.isJoiningDisabled?4:0)|(n.isAppendingDisabled?8:0)|(n.isCallingDisabled?16:0)|(n.isMembershipEventsDisabled?32:0)|(o>=28&&n.isAttachmentsDisabled?64:0)|(o>=28&&n.isLinksDisabled?128:0)|(o>=29&&n.buildType?256:0);e.uint.encode(d,c),n.roomType&&J.encode(d,n.roomType),o>=29&&n.buildType&&vi.encode(d,n.buildType)},decode(d){const n=e.uint.decode(d);return{roomType:1&n?J.decode(d):0,isExperimental:!!(2&n),isJoiningDisabled:!!(4&n),isAppendingDisabled:!!(8&n),isCallingDisabled:!!(16&n),isMembershipEventsDisabled:!!(32&n),isAttachmentsDisabled:o>=28&&!!(64&n),isLinksDisabled:o>=28&&!!(128&n),buildType:o>=29&&256&n?vi.decode(d):null}}},H=e.frame(F),z=e.frame(W),G={preencode(d,o){H.preencode(d,o.abi),z.preencode(d,o.settings),e.uint.preencode(d,o.creationTime)},encode(d,o){H.encode(d,o.abi),z.encode(d,o.settings),e.uint.encode(d,o.creationTime)},decode:d=>({abi:H.decode(d),settings:z.decode(d),creationTime:e.uint.decode(d)})},Q={preencode(d,o){e.fixed32.preencode(d,o.seed)},encode(d,o){e.fixed32.encode(d,o.seed)},decode:d=>({seed:e.fixed32.decode(d)})},X={preencode(d,o){r.preencode(d,o.mailboxKeyPair),t.preencode(d,o.discoveryKeyPair),e.fixed32.preencode(d,o.wakeupTopic),e.fixed32.preencode(d,o.swarmTopic)},encode(d,o){r.encode(d,o.mailboxKeyPair),t.encode(d,o.discoveryKeyPair),e.fixed32.encode(d,o.wakeupTopic),e.fixed32.encode(d,o.swarmTopic)},decode:d=>({mailboxKeyPair:r.decode(d),discoveryKeyPair:t.decode(d),wakeupTopic:e.fixed32.decode(d),swarmTopic:e.fixed32.decode(d)})},Y=e.array(e.fixed32),Z={preencode(d,n){d.end++,n.title&&e.string.preencode(d,n.title),n.avatar&&Ti.preencode(d,n.avatar),n.description&&e.string.preencode(d,n.description),o>=17&&n.supportedLanguages&&Ri.preencode(d,n.supportedLanguages),o>=19&&n.blindPeers&&Y.preencode(d,n.blindPeers)},encode(d,n){const c=(n.title?1:0)|(n.avatar?2:0)|(n.description?4:0)|(o>=17&&n.supportedLanguages?8:0)|(o>=19&&n.blindPeers?16:0);e.uint.encode(d,c),n.title&&e.string.encode(d,n.title),n.avatar&&Ti.encode(d,n.avatar),n.description&&e.string.encode(d,n.description),o>=17&&n.supportedLanguages&&Ri.encode(d,n.supportedLanguages),o>=19&&n.blindPeers&&Y.encode(d,n.blindPeers)},decode(d){const n=e.uint.decode(d);return{title:1&n?e.string.decode(d):null,avatar:2&n?Ti.decode(d):null,description:4&n?e.string.decode(d):null,supportedLanguages:o>=17&&8&n?Ri.decode(d):null,blindPeers:o>=19&&16&n?Y.decode(d):null}}},$={preencode(d,o){e.fixed32.preencode(d,o.key)},encode(d,o){e.fixed32.encode(d,o.key)},decode:d=>({key:e.fixed32.decode(d)})},_=e.frame(a),ee=e.frame($),de={preencode(e,d){_.preencode(e,d.header),ee.preencode(e,d.peer)},encode(e,d){_.encode(e,d.header),ee.encode(e,d.peer)},decode:e=>({header:_.decode(e),peer:ee.decode(e)})},oe=_,ne={preencode(d,o){oe.preencode(d,o.header),e.fixed32.preencode(d,o.key)},encode(d,o){oe.encode(d,o.header),e.fixed32.encode(d,o.key)},decode:d=>({header:oe.decode(d),key:e.fixed32.decode(d)})},ce={preencode(d,o){e.fixed32.preencode(d,o.memberKey),e.buffer.preencode(d,o.proof)},encode(d,o){e.fixed32.encode(d,o.memberKey),e.buffer.encode(d,o.proof)},decode:d=>({memberKey:e.fixed32.decode(d),proof:e.buffer.decode(d)})},re={preencode(d,o){e.fixed32.preencode(d,o.id),e.buffer.preencode(d,o.response)},encode(d,o){e.fixed32.encode(d,o.id),e.buffer.encode(d,o.response)},decode:d=>({id:e.fixed32.decode(d),response:e.buffer.decode(d)})},te=e.frame(D),ie=e.frame(re),ae={preencode(d,o){e.fixed32.preencode(d,o.key),e.fixed32.preencode(d,o.memberKey),te.preencode(d,o.status),Ai.preencode(d,o.profile),d.end++,o.invitation&&ie.preencode(d,o.invitation)},encode(d,o){const n=o.invitation?1:0;e.fixed32.encode(d,o.key),e.fixed32.encode(d,o.memberKey),te.encode(d,o.status),Ai.encode(d,o.profile),e.uint.encode(d,n),o.invitation&&ie.encode(d,o.invitation)},decode:d=>({key:e.fixed32.decode(d),memberKey:e.fixed32.decode(d),status:te.decode(d),profile:Ai.decode(d),invitation:1&e.uint.decode(d)?ie.decode(d):null})},se={preencode(d,o){e.uint.preencode(d,o.timestamp),d.end++,o.mailbox&&e.fixed32.preencode(d,o.mailbox),o.displayName&&e.string.preencode(d,o.displayName),o.avatar&&Mi.preencode(d,o.avatar),o.username&&e.string.preencode(d,o.username)},encode(d,o){const n=(o.mailbox?1:0)|(o.displayName?2:0)|(o.avatar?4:0)|(o.username?8:0);e.uint.encode(d,o.timestamp),e.uint.encode(d,n),o.mailbox&&e.fixed32.encode(d,o.mailbox),o.displayName&&e.string.encode(d,o.displayName),o.avatar&&Mi.encode(d,o.avatar),o.username&&e.string.encode(d,o.username)},decode(d){const o=e.uint.decode(d),n=e.uint.decode(d);return{timestamp:o,mailbox:1&n?e.fixed32.decode(d):null,displayName:2&n?e.string.decode(d):null,avatar:4&n?Mi.decode(d):null,username:8&n?e.string.decode(d):null}}},pe={preencode(d,n){d.end++,n.swarmKey&&e.fixed32.preencode(d,n.swarmKey),n.name&&e.string.preencode(d,n.name),o>=29&&n.buildType&&vi.preencode(d,n.buildType)},encode(d,n){const c=(n.swarmKey?1:0)|(n.name?2:0)|(n.isMobile?4:0)|(o>=29&&n.buildType?8:0);e.uint.encode(d,c),n.swarmKey&&e.fixed32.encode(d,n.swarmKey),n.name&&e.string.encode(d,n.name),o>=29&&n.buildType&&vi.encode(d,n.buildType)},decode(d){const n=e.uint.decode(d);return{swarmKey:1&n?e.fixed32.decode(d):null,name:2&n?e.string.decode(d):null,isMobile:!!(4&n),buildType:o>=29&&8&n?vi.decode(d):null}}},ue=e.frame(se),le={preencode(e,d){ue.preencode(e,d.profile),ce.preencode(e,d.attestation)},encode(e,d){ue.encode(e,d.profile),ce.encode(e,d.attestation)},decode:e=>({profile:ue.decode(e),attestation:ce.decode(e)})},fe={preencode(e,d){Di.preencode(e,d.profile),ce.preencode(e,d.attestation)},encode(e,d){Di.encode(e,d.profile),ce.encode(e,d.attestation)},decode:e=>({profile:Di.decode(e),attestation:ce.decode(e)})},me={preencode(d,o){e.fixed32.preencode(d,o.id),e.buffer.preencode(d,o.data),e.buffer.preencode(d,o.signature)},encode(d,o){e.fixed32.encode(d,o.id),e.buffer.encode(d,o.data),e.buffer.encode(d,o.signature)},decode:d=>({id:e.fixed32.decode(d),data:e.buffer.decode(d),signature:e.buffer.decode(d)})},ye={preencode(d,o){e.fixed32.preencode(d,o.devicePublicKey)},encode(d,o){e.fixed32.encode(d,o.devicePublicKey)},decode:d=>({devicePublicKey:e.fixed32.decode(d)})},xe={preencode(d,o){ce.preencode(d,o.privateProfileIdentity),e.buffer.preencode(d,o.deviceProof)},encode(d,o){ce.encode(d,o.privateProfileIdentity),e.buffer.encode(d,o.deviceProof)},decode:d=>({privateProfileIdentity:ce.decode(d),deviceProof:e.buffer.decode(d)})},be=e.frame(fe),ve=e.frame(le),ke=e.frame(ye),ge={preencode(d,o){e.fixed32.preencode(d,o.deviceKey),t.preencode(d,o.keyPair),be.preencode(d,o.device),ve.preencode(d,o.member),d.end++,o.identity&&ke.preencode(d,o.identity)},encode(d,o){const n=o.identity?1:0;e.fixed32.encode(d,o.deviceKey),t.encode(d,o.keyPair),be.encode(d,o.device),ve.encode(d,o.member),e.uint.encode(d,n),o.identity&&ke.encode(d,o.identity)},decode:d=>({deviceKey:e.fixed32.decode(d),keyPair:t.decode(d),device:be.decode(d),member:ve.decode(d),identity:1&e.uint.decode(d)?ke.decode(d):null})},Ke=e.frame(ge),he={preencode(d,o){e.fixed32.preencode(d,o.id),Ke.preencode(d,o.request),e.buffer.preencode(d,o.signature)},encode(d,o){e.fixed32.encode(d,o.id),Ke.encode(d,o.request),e.buffer.encode(d,o.signature)},decode:d=>({id:e.fixed32.decode(d),request:Ke.decode(d),signature:e.buffer.decode(d)})},we=be,Pe=ve,Te={preencode(e,d){we.preencode(e,d.device),e.end++,d.member&&Pe.preencode(e,d.member)},encode(d,o){const n=o.member?1:0;we.encode(d,o.device),e.uint.encode(d,n),o.member&&Pe.encode(d,o.member)},decode:d=>({device:we.decode(d),member:1&e.uint.decode(d)?Pe.decode(d):null})},Re=e.frame(he),Ae=e.frame(Te),Me={preencode(e,d){e.end++,d.withInvitation&&Re.preencode(e,d.withInvitation),d.withMemberProof&&Ae.preencode(e,d.withMemberProof)},encode(d,o){const n=(o.withInvitation?1:0)|(o.withMemberProof?2:0);e.uint.encode(d,n),o.withInvitation&&Re.encode(d,o.withInvitation),o.withMemberProof&&Ae.encode(d,o.withMemberProof)},decode(d){const o=e.uint.decode(d);return{withInvitation:1&o?Re.decode(d):null,withMemberProof:2&o?Ae.decode(d):null}}},De=e.frame(me),Ce=e.frame(xe),Se={preencode(e,d){De.preencode(e,d.signedKeys),e.end++,d.identity&&Ce.preencode(e,d.identity)},encode(d,o){const n=o.identity?1:0;De.encode(d,o.signedKeys),e.uint.encode(d,n),o.identity&&Ce.encode(d,o.identity)},decode:d=>({signedKeys:De.decode(d),identity:1&e.uint.decode(d)?Ce.decode(d):null})},Fe={preencode(d,n){d.end++,n.expiration&&e.uint.preencode(d,n.expiration),o>=29&&n.buildType&&vi.preencode(d,n.buildType)},encode(d,n){const c=(n.expiration?1:0)|(n.requiresConfirmation?2:0)|(n.canModerate?4:0)|(n.canAdmin?8:0)|(o>=29&&n.buildType?16:0);e.uint.encode(d,c),n.expiration&&e.uint.encode(d,n.expiration),o>=29&&n.buildType&&vi.encode(d,n.buildType)},decode(d){const n=e.uint.decode(d);return{expiration:1&n?e.uint.decode(d):0,requiresConfirmation:!!(2&n),canModerate:!!(4&n),canAdmin:!!(8&n),buildType:o>=29&&16&n?vi.decode(d):null}}},Ie=De,Le=e.frame(Fe),qe={preencode(d,o){e.fixed32.preencode(d,o.id),Ie.preencode(d,o.response),Le.preencode(d,o.metadata),d.end++,o.anchor&&n.preencode(d,o.anchor)},encode(d,o){const c=(o.anchor?1:0)|(o.isActive?2:0);e.fixed32.encode(d,o.id),Ie.encode(d,o.response),Le.encode(d,o.metadata),e.uint.encode(d,c),o.anchor&&n.encode(d,o.anchor)},decode(d){const o=e.fixed32.decode(d),c=Ie.decode(d),r=Le.decode(d),t=e.uint.decode(d);return{id:o,response:c,metadata:r,anchor:1&t?n.decode(d):null,isActive:!!(2&t)}}},je=_,Ee=e.frame(qe),Be={preencode(e,d){je.preencode(e,d.header),Ee.preencode(e,d.invitation)},encode(e,d){je.encode(e,d.header),Ee.encode(e,d.invitation)},decode:e=>({header:je.decode(e),invitation:Ee.decode(e)})},Ne=_,Ve={preencode(d,o){Ne.preencode(d,o.header),e.fixed32.preencode(d,o.id)},encode(d,o){Ne.encode(d,o.header),e.fixed32.encode(d,o.id)},decode:d=>({header:Ne.decode(d),id:e.fixed32.decode(d)})},Oe={preencode(d,o){e.fixed32.preencode(d,o.mailbox),e.fixed32.preencode(d,o.invitationSeed),n.preencode(d,o.anchor)},encode(d,o){e.fixed32.encode(d,o.mailbox),e.fixed32.encode(d,o.invitationSeed),n.encode(d,o.anchor)},decode:d=>({mailbox:e.fixed32.decode(d),invitationSeed:e.fixed32.decode(d),anchor:n.decode(d)})},Ue={preencode(d,o){e.fixed32.preencode(d,o.mailbox),e.fixed32.preencode(d,o.invitationSeed),n.preencode(d,o.anchor),e.fixed32.preencode(d,o.identityPublicKey)},encode(d,o){e.fixed32.encode(d,o.mailbox),e.fixed32.encode(d,o.invitationSeed),n.encode(d,o.anchor),e.fixed32.encode(d,o.identityPublicKey)},decode:d=>({mailbox:e.fixed32.decode(d),invitationSeed:e.fixed32.decode(d),anchor:n.decode(d),identityPublicKey:e.fixed32.decode(d)})},Je={preencode(d,o){e.fixed32.preencode(d,o.mailbox)},encode(d,o){e.fixed32.encode(d,o.mailbox)},decode:d=>({mailbox:e.fixed32.decode(d)})},We=e.frame(Oe),He=e.frame(Ue),ze=e.frame(Je),Ge=e.array(e.ipv4Address),Qe={preencode(e,d){e.end++,d.room&&We.preencode(e,d.room),d.identity&&He.preencode(e,d.identity),d.contact&&ze.preencode(e,d.contact),o>=9&&d.readonly&&Ci.preencode(e,d.readonly),o>=17&&d.additionalNodes&&Ge.preencode(e,d.additionalNodes),o>=29&&d.buildType&&vi.preencode(e,d.buildType)},encode(d,n){const c=(n.room?1:0)|(n.identity?2:0)|(n.contact?4:0)|(o>=9&&n.readonly?8:0)|(o>=17&&n.additionalNodes?16:0)|(o>=29&&n.buildType?32:0);e.uint.encode(d,c),n.room&&We.encode(d,n.room),n.identity&&He.encode(d,n.identity),n.contact&&ze.encode(d,n.contact),o>=9&&n.readonly&&Ci.encode(d,n.readonly),o>=17&&n.additionalNodes&&Ge.encode(d,n.additionalNodes),o>=29&&n.buildType&&vi.encode(d,n.buildType)},decode(d){const n=e.uint.decode(d);return{room:1&n?We.decode(d):null,identity:2&n?He.decode(d):null,contact:4&n?ze.decode(d):null,readonly:o>=9&&8&n?Ci.decode(d):null,additionalNodes:o>=17&&16&n?Ge.decode(d):null,buildType:o>=29&&32&n?vi.decode(d):null}}},Xe=_,Ye={preencode(d,o){Xe.preencode(d,o.header),e.buffer.preencode(d,o.blindRequest)},encode(d,o){Xe.encode(d,o.header),e.buffer.encode(d,o.blindRequest)},decode:d=>({header:Xe.decode(d),blindRequest:e.buffer.decode(d)})},Ze=_,$e={preencode(e,d){Ze.preencode(e,d.header),e.end++,d.profile&&Si.preencode(e,d.profile)},encode(d,o){const n=o.profile?1:0;Ze.encode(d,o.header),e.uint.encode(d,n),o.profile&&Si.encode(d,o.profile)},decode:d=>({header:Ze.decode(d),profile:1&e.uint.decode(d)?Si.decode(d):null})},_e={preencode(e,d){},encode(e,d){},decode:e=>({})},ed=_e,dd=Ke,od={preencode(d,o){e.fixed32.preencode(d,o.deviceKey),e.fixed32.preencode(d,o.id),dd.preencode(d,o.request)},encode(d,o){e.fixed32.encode(d,o.deviceKey),e.fixed32.encode(d,o.id),dd.encode(d,o.request)},decode:d=>({deviceKey:e.fixed32.decode(d),id:e.fixed32.decode(d),request:dd.decode(d)})},nd=_,cd=Ce,rd={preencode(d,o){nd.preencode(d,o.header),e.fixed32.preencode(d,o.deviceKey),d.end++,o.identity&&cd.preencode(d,o.identity)},encode(d,o){const n=o.identity?1:0;nd.encode(d,o.header),e.fixed32.encode(d,o.deviceKey),e.uint.encode(d,n),o.identity&&cd.encode(d,o.identity)},decode:d=>({header:nd.decode(d),deviceKey:e.fixed32.decode(d),identity:1&e.uint.decode(d)?cd.decode(d):null})},td=_,id={preencode(d,o){td.preencode(d,o.header),e.fixed32.preencode(d,o.deviceKey)},encode(d,o){td.encode(d,o.header),e.fixed32.encode(d,o.deviceKey)},decode:d=>({header:td.decode(d),deviceKey:e.fixed32.decode(d)})},ad=e.frame(C),sd=ue,pd={preencode(d,o){e.fixed32.preencode(d,o.key),ad.preencode(d,o.status),sd.preencode(d,o.profile)},encode(d,o){e.fixed32.encode(d,o.key),ad.encode(d,o.status),sd.encode(d,o.profile)},decode:d=>({key:e.fixed32.decode(d),status:ad.decode(d),profile:sd.decode(d)})},ud=ad,ld=ue,fd={preencode(d,o){e.fixed32.preencode(d,o.key),ud.preencode(d,o.status),ld.preencode(d,o.profile),d.end++,o.proofs&&Fi.preencode(d,o.proofs)},encode(d,o){const n=o.proofs?1:0;e.fixed32.encode(d,o.key),ud.encode(d,o.status),ld.encode(d,o.profile),e.uint.encode(d,n),o.proofs&&Fi.encode(d,o.proofs)},decode:d=>({key:e.fixed32.decode(d),status:ud.decode(d),profile:ld.decode(d),proofs:1&e.uint.decode(d)?Fi.decode(d):null})},md={preencode(d,o){e.fixed32.preencode(d,o.key),d.end++,o.profileAttestation&&e.buffer.preencode(d,o.profileAttestation),o.latestReceipt&&e.buffer.preencode(d,o.latestReceipt)},encode(d,o){const n=(o.profileAttestation?1:0)|(o.latestReceipt?2:0);e.fixed32.encode(d,o.key),e.uint.encode(d,n),o.profileAttestation&&e.buffer.encode(d,o.profileAttestation),o.latestReceipt&&e.buffer.encode(d,o.latestReceipt)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d);return{key:o,profileAttestation:1&n?e.buffer.decode(d):null,latestReceipt:2&n?e.buffer.decode(d):null}}},yd=_,xd=ve,bd={preencode(e,d){yd.preencode(e,d.header),xd.preencode(e,d.member)},encode(e,d){yd.encode(e,d.header),xd.encode(e,d.member)},decode:e=>({header:yd.decode(e),member:xd.decode(e)})},vd=_,kd=e.frame(S),gd={preencode(d,o){vd.preencode(d,o.header),e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.key),kd.preencode(d,o.status)},encode(d,o){vd.encode(d,o.header),e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.key),kd.encode(d,o.status)},decode:d=>({header:vd.decode(d),memberKey:e.fixed32.decode(d),key:e.uint.decode(d),status:kd.decode(d)})},Kd=_,hd={preencode(d,o){Kd.preencode(d,o.header),e.fixed32.preencode(d,o.key),d.end++},encode(d,o){const n=(o.isModerator?1:0)|(o.isAdmin?2:0);Kd.encode(d,o.header),e.fixed32.encode(d,o.key),e.uint.encode(d,n)},decode(d){const o=Kd.decode(d),n=e.fixed32.decode(d),c=e.uint.decode(d);return{header:o,key:n,isModerator:!!(1&c),isAdmin:!!(2&c)}}},wd=_,Pd={preencode(d,o){wd.preencode(d,o.header),e.fixed32.preencode(d,o.key)},encode(d,o){wd.encode(d,o.header),e.fixed32.encode(d,o.key)},decode:d=>({header:wd.decode(d),key:e.fixed32.decode(d)})},Td={preencode(d,o){e.fixed32.preencode(d,o.key),e.uint.preencode(d,o.mentions)},encode(d,o){e.fixed32.encode(d,o.key),e.uint.encode(d,o.mentions)},decode:d=>({key:e.fixed32.decode(d),mentions:e.uint.decode(d)})},Rd={preencode(d,o){d.end++,o.memberKey&&e.fixed32.preencode(d,o.memberKey)},encode(d,o){const n=o.memberKey?1:0;e.uint.encode(d,n),o.memberKey&&e.fixed32.encode(d,o.memberKey)},decode:d=>({memberKey:1&e.uint.decode(d)?e.fixed32.decode(d):null})},Ad=Rd,Md={preencode(d,o){d.end++,o.from&&e.string.preencode(d,o.from),o.to&&e.string.preencode(d,o.to)},encode(d,o){const n=(o.from?1:0)|(o.to?2:0);e.uint.encode(d,n),o.from&&e.string.encode(d,o.from),o.to&&e.string.encode(d,o.to)},decode(d){const o=e.uint.decode(d);return{from:1&o?e.string.decode(d):null,to:2&o?e.string.decode(d):null}}},Dd=e.frame(Rd),Cd=e.frame(Ad),Sd=e.frame(Md),Fd={preencode(d,n){const c=(n.memberJoined?1:0)|(n.memberLeft?2:0)|(n.titleChanged?4:0)|(n.callStarted?8:0)|(n.callHangup?16:0)|(n.callMissed?32:0)|(o>=4&&n.roomAvatarChanged?64:0)|(o>=4&&n.invitationCreated?128:0)|(o>=4&&n.memberRemoved?256:0)|(o>=27&&n.locationShared?512:0);e.uint.preencode(d,c),n.memberJoined&&Dd.preencode(d,n.memberJoined),n.memberLeft&&Cd.preencode(d,n.memberLeft),n.titleChanged&&Sd.preencode(d,n.titleChanged),o>=4&&n.memberRemoved&&Ii.preencode(d,n.memberRemoved),o>=27&&n.locationShared&&Li.preencode(d,n.locationShared)},encode(d,n){const c=(n.memberJoined?1:0)|(n.memberLeft?2:0)|(n.titleChanged?4:0)|(n.callStarted?8:0)|(n.callHangup?16:0)|(n.callMissed?32:0)|(o>=4&&n.roomAvatarChanged?64:0)|(o>=4&&n.invitationCreated?128:0)|(o>=4&&n.memberRemoved?256:0)|(o>=27&&n.locationShared?512:0);e.uint.encode(d,c),n.memberJoined&&Dd.encode(d,n.memberJoined),n.memberLeft&&Cd.encode(d,n.memberLeft),n.titleChanged&&Sd.encode(d,n.titleChanged),o>=4&&n.memberRemoved&&Ii.encode(d,n.memberRemoved),o>=27&&n.locationShared&&Li.encode(d,n.locationShared)},decode(d){const n=e.uint.decode(d);return{memberJoined:1&n?Dd.decode(d):null,memberLeft:2&n?Cd.decode(d):null,titleChanged:4&n?Sd.decode(d):null,callStarted:!!(8&n),callHangup:!!(16&n),callMissed:!!(32&n),roomAvatarChanged:o>=4&&!!(64&n),invitationCreated:o>=4&&!!(128&n),memberRemoved:o>=4&&256&n?Ii.decode(d):null,locationShared:o>=27&&512&n?Li.decode(d):null}}},Id={preencode(e,d){e.end++,o>=27&&d.locationShared&&qi.preencode(e,d.locationShared)},encode(d,n){const c=(n.callStarted?1:0)|(n.callHangup?2:0)|(n.callMissed?4:0)|(o>=27&&n.locationShared?8:0);e.uint.encode(d,c),o>=27&&n.locationShared&&qi.encode(d,n.locationShared)},decode(d){const n=e.uint.decode(d);return{callStarted:!!(1&n),callHangup:!!(2&n),callMissed:!!(4&n),locationShared:o>=27&&8&n?qi.decode(d):null}}},Ld={preencode(d,o){e.uint.preencode(d,o.start),e.uint.preencode(d,o.length)},encode(d,o){e.uint.encode(d,o.start),e.uint.encode(d,o.length)},decode:d=>({start:e.uint.decode(d),length:e.uint.decode(d)})},qd=e.frame(Ld),jd={preencode(d,o){qd.preencode(d,o.range),e.string.preencode(d,o.content)},encode(d,o){qd.encode(d,o.range),e.string.encode(d,o.content)},decode:d=>({range:qd.decode(d),content:e.string.decode(d)})},Ed=qd,Bd={preencode(d,o){Ed.preencode(d,o.range),e.fixed32.preencode(d,o.memberKey)},encode(d,o){Ed.encode(d,o.range),e.fixed32.encode(d,o.memberKey)},decode:d=>({range:Ed.decode(d),memberKey:e.fixed32.decode(d)})},Nd=K,Vd=e.array(e.uint),Od={preencode(d,n){d.end++,n.title&&e.string.preencode(d,n.title),n.description&&e.string.preencode(d,n.description),n.file&&Nd.preencode(d,n.file),o>=12&&n.files&&Vd.preencode(d,n.files)},encode(d,n){const c=(n.title?1:0)|(n.description?2:0)|(n.file?4:0)|(o>=12&&n.files?8:0);e.uint.encode(d,c),n.title&&e.string.encode(d,n.title),n.description&&e.string.encode(d,n.description),n.file&&Nd.encode(d,n.file),o>=12&&n.files&&Vd.encode(d,n.files)},decode(d){const n=e.uint.decode(d);return{title:1&n?e.string.decode(d):null,description:2&n?e.string.decode(d):null,file:4&n?Nd.decode(d):null,files:o>=12&&8&n?Vd.decode(d):null}}},Ud=qd,Jd=e.frame(Od),Wd={preencode(d,o){Ud.preencode(d,o.range),e.string.preencode(d,o.url),d.end++,o.preview&&Jd.preencode(d,o.preview)},encode(d,o){const n=o.preview?1:0;Ud.encode(d,o.range),e.string.encode(d,o.url),e.uint.encode(d,n),o.preview&&Jd.encode(d,o.preview)},decode:d=>({range:Ud.decode(d),url:e.string.decode(d),preview:1&e.uint.decode(d)?Jd.decode(d):null})},Hd=e.array(e.frame(Bd)),zd=e.array(e.frame(Wd)),Gd=zd,Qd=e.array(e.frame(Ld)),Xd=Qd,Yd=Qd,Zd=e.array(e.frame(jd)),$d=Qd,_d=Qd,eo={preencode(d,n){const c=(n.mention?1:0)|(n.httpLink?2:0)|(n.pearLink?4:0)|(n.bold?8:0)|(n.italic?16:0)|(n.code?32:0)|(n.emoji?64:0)|(n.codeBlock?128:0)|(n.strike?256:0)|(o>=17&&n.translation?512:0);e.uint.preencode(d,c),n.mention&&Hd.preencode(d,n.mention),n.httpLink&&zd.preencode(d,n.httpLink),n.pearLink&&Gd.preencode(d,n.pearLink),n.bold&&Qd.preencode(d,n.bold),n.italic&&Xd.preencode(d,n.italic),n.code&&Yd.preencode(d,n.code),n.emoji&&Zd.preencode(d,n.emoji),n.codeBlock&&$d.preencode(d,n.codeBlock),n.strike&&_d.preencode(d,n.strike),o>=17&&n.translation&&ji.preencode(d,n.translation)},encode(d,n){const c=(n.mention?1:0)|(n.httpLink?2:0)|(n.pearLink?4:0)|(n.bold?8:0)|(n.italic?16:0)|(n.code?32:0)|(n.emoji?64:0)|(n.codeBlock?128:0)|(n.strike?256:0)|(o>=17&&n.translation?512:0);e.uint.encode(d,c),n.mention&&Hd.encode(d,n.mention),n.httpLink&&zd.encode(d,n.httpLink),n.pearLink&&Gd.encode(d,n.pearLink),n.bold&&Qd.encode(d,n.bold),n.italic&&Xd.encode(d,n.italic),n.code&&Yd.encode(d,n.code),n.emoji&&Zd.encode(d,n.emoji),n.codeBlock&&$d.encode(d,n.codeBlock),n.strike&&_d.encode(d,n.strike),o>=17&&n.translation&&ji.encode(d,n.translation)},decode(d){const n=e.uint.decode(d);return{mention:1&n?Hd.decode(d):null,httpLink:2&n?zd.decode(d):null,pearLink:4&n?Gd.decode(d):null,bold:8&n?Qd.decode(d):null,italic:16&n?Xd.decode(d):null,code:32&n?Yd.decode(d):null,emoji:64&n?Zd.decode(d):null,codeBlock:128&n?$d.decode(d):null,strike:256&n?_d.decode(d):null,translation:o>=17&&512&n?ji.decode(d):null}}},oo=e.array(e.frame(g)),no=e.frame(eo),co=e.frame(Id),ro={preencode(d,o){d.end++,o.text&&e.string.preencode(d,o.text),o.files&&oo.preencode(d,o.files),o.display&&no.preencode(d,o.display),o.replyTo&&c.preencode(d,o.replyTo),o.parent&&c.preencode(d,o.parent),o.event&&co.preencode(d,o.event)},encode(d,n){const r=(n.text?1:0)|(n.files?2:0)|(n.display?4:0)|(n.replyTo?8:0)|(n.parent?16:0)|(n.event?32:0)|(o>=27&&n.forwarded?64:0);e.uint.encode(d,r),n.text&&e.string.encode(d,n.text),n.files&&oo.encode(d,n.files),n.display&&no.encode(d,n.display),n.replyTo&&c.encode(d,n.replyTo),n.parent&&c.encode(d,n.parent),n.event&&co.encode(d,n.event)},decode(d){const n=e.uint.decode(d);return{text:1&n?e.string.decode(d):null,files:2&n?oo.decode(d):null,display:4&n?no.decode(d):null,replyTo:8&n?c.decode(d):null,parent:16&n?c.decode(d):null,event:32&n?co.decode(d):null,forwarded:o>=27&&!!(64&n)}}},to=Vd,io=no,ao={preencode(d,o){d.end++,o.text&&e.string.preencode(d,o.text),o.files&&to.preencode(d,o.files),o.display&&io.preencode(d,o.display),o.replyTo&&c.preencode(d,o.replyTo),o.parent&&c.preencode(d,o.parent)},encode(d,n){const r=(n.text?1:0)|(n.files?2:0)|(n.display?4:0)|(n.replyTo?8:0)|(n.parent?16:0)|(o>=27&&n.forwarded?32:0);e.uint.encode(d,r),n.text&&e.string.encode(d,n.text),n.files&&to.encode(d,n.files),n.display&&io.encode(d,n.display),n.replyTo&&c.encode(d,n.replyTo),n.parent&&c.encode(d,n.parent)},decode(d){const n=e.uint.decode(d);return{text:1&n?e.string.decode(d):null,files:2&n?to.decode(d):null,display:4&n?io.decode(d):null,replyTo:8&n?c.decode(d):null,parent:16&n?c.decode(d):null,forwarded:o>=27&&!!(32&n)}}},so=oo,po=no,uo={preencode(d,o){d.end++,o.text&&e.string.preencode(d,o.text),o.files&&so.preencode(d,o.files),o.display&&po.preencode(d,o.display),o.replyTo&&c.preencode(d,o.replyTo),o.parent&&c.preencode(d,o.parent)},encode(d,n){const r=(n.text?1:0)|(n.files?2:0)|(n.display?4:0)|(n.replyTo?8:0)|(n.parent?16:0)|(o>=27&&n.forwarded?32:0);e.uint.encode(d,r),n.text&&e.string.encode(d,n.text),n.files&&so.encode(d,n.files),n.display&&po.encode(d,n.display),n.replyTo&&c.encode(d,n.replyTo),n.parent&&c.encode(d,n.parent)},decode(d){const n=e.uint.decode(d);return{text:1&n?e.string.decode(d):null,files:2&n?so.decode(d):null,display:4&n?po.decode(d):null,replyTo:8&n?c.decode(d):null,parent:16&n?c.decode(d):null,forwarded:o>=27&&!!(32&n)}}},lo={preencode(e,d){e.end++},encode(d,o){const n=(o.isEdited?1:0)|(o.isDeleted?2:0)|(o.isPinned?4:0);e.uint.encode(d,n)},decode(d){const o=e.uint.decode(d);return{isEdited:!!(1&o),isDeleted:!!(2&o),isPinned:!!(4&o)}}},fo={preencode(d,o){e.uint.preencode(d,o.thread),e.uint.preencode(d,o.index)},encode(d,o){e.uint.encode(d,o.thread),e.uint.encode(d,o.index)},decode:d=>({thread:e.uint.decode(d),index:e.uint.decode(d)})},mo=e.frame(O),yo={preencode(d,o){e.uint.preencode(d,o.id),e.uint.preencode(d,o.count),d.end++,o.parent&&c.preencode(d,o.parent),o.stats&&mo.preencode(d,o.stats)},encode(d,o){const n=(o.parent?1:0)|(o.stats?2:0);e.uint.encode(d,o.id),e.uint.encode(d,o.count),e.uint.encode(d,n),o.parent&&c.encode(d,o.parent),o.stats&&mo.encode(d,o.stats)},decode(d){const o=e.uint.decode(d),n=e.uint.decode(d),r=e.uint.decode(d);return{id:o,count:n,parent:1&r?c.decode(d):null,stats:2&r?mo.decode(d):null}}},xo=e.frame(lo),bo=e.frame(ao),vo=e.frame(Fd),ko={preencode(d,o){fo.preencode(d,o.id),c.preencode(d,o.oplog),e.uint.preencode(d,o.clock),e.uint.preencode(d,o.timestamp),d.end++,o.editedAt&&e.uint.preencode(d,o.editedAt),xo.preencode(d,o.status),o.message&&bo.preencode(d,o.message),o.event&&vo.preencode(d,o.event)},encode(d,o){const n=(o.editedAt?1:0)|(o.message?2:0)|(o.event?4:0);fo.encode(d,o.id),c.encode(d,o.oplog),e.uint.encode(d,o.clock),e.uint.encode(d,o.timestamp),e.uint.encode(d,n),o.editedAt&&e.uint.encode(d,o.editedAt),xo.encode(d,o.status),o.message&&bo.encode(d,o.message),o.event&&vo.encode(d,o.event)},decode(d){const o=fo.decode(d),n=c.decode(d),r=e.uint.decode(d),t=e.uint.decode(d),i=e.uint.decode(d);return{id:o,oplog:n,clock:r,timestamp:t,editedAt:1&i?e.uint.decode(d):0,status:xo.decode(d),message:2&i?bo.decode(d):null,event:4&i?vo.decode(d):null}}},go=xo,Ko=e.frame(uo),ho=vo,wo={preencode(d,o){fo.preencode(d,o.id),c.preencode(d,o.oplog),e.uint.preencode(d,o.clock),e.uint.preencode(d,o.timestamp),d.end++,o.editedAt&&e.uint.preencode(d,o.editedAt),go.preencode(d,o.status),o.message&&Ko.preencode(d,o.message),o.event&&ho.preencode(d,o.event)},encode(d,o){const n=(o.editedAt?1:0)|(o.message?2:0)|(o.event?4:0);fo.encode(d,o.id),c.encode(d,o.oplog),e.uint.encode(d,o.clock),e.uint.encode(d,o.timestamp),e.uint.encode(d,n),o.editedAt&&e.uint.encode(d,o.editedAt),go.encode(d,o.status),o.message&&Ko.encode(d,o.message),o.event&&ho.encode(d,o.event)},decode(d){const o=fo.decode(d),n=c.decode(d),r=e.uint.decode(d),t=e.uint.decode(d),i=e.uint.decode(d);return{id:o,oplog:n,clock:r,timestamp:t,editedAt:1&i?e.uint.decode(d):0,status:go.decode(d),message:2&i?Ko.decode(d):null,event:4&i?ho.decode(d):null}}},Po=_,To=e.frame(ro),Ro={preencode(e,d){Po.preencode(e,d.header),To.preencode(e,d.message)},encode(e,d){Po.encode(e,d.header),To.encode(e,d.message)},decode:e=>({header:Po.decode(e),message:To.decode(e)})},Ao=_,Mo={preencode(e,d){Ao.preencode(e,d.header),c.preencode(e,d.oplog)},encode(e,d){Ao.encode(e,d.header),c.encode(e,d.oplog)},decode:e=>({header:Ao.decode(e),oplog:c.decode(e)})},Do=_,Co=To,So={preencode(e,d){Do.preencode(e,d.header),c.preencode(e,d.oplog),Co.preencode(e,d.message)},encode(e,d){Do.encode(e,d.header),c.encode(e,d.oplog),Co.encode(e,d.message)},decode:e=>({header:Do.decode(e),oplog:c.decode(e),message:Co.decode(e)})},Fo=_,Io={preencode(e,d){Fo.preencode(e,d.header),c.preencode(e,d.oplog),e.end++},encode(d,o){const n=o.isPinned?1:0;Fo.encode(d,o.header),c.encode(d,o.oplog),e.uint.encode(d,n)},decode:d=>({header:Fo.decode(d),oplog:c.decode(d),isPinned:!!(1&e.uint.decode(d))})},Lo={preencode(d,o){fo.preencode(d,o.id),e.fixed32.preencode(d,o.sender),e.uint.preencode(d,o.clock),e.string.preencode(d,o.reaction)},encode(d,o){fo.encode(d,o.id),e.fixed32.encode(d,o.sender),e.uint.encode(d,o.clock),e.string.encode(d,o.reaction)},decode:d=>({id:fo.decode(d),sender:e.fixed32.decode(d),clock:e.uint.decode(d),reaction:e.string.decode(d)})},qo={preencode(d,o){e.string.preencode(d,o.text),e.uint.preencode(d,o.count)},encode(d,o){e.string.encode(d,o.text),e.uint.encode(d,o.count)},decode:d=>({text:e.string.decode(d),count:e.uint.decode(d)})},jo=e.array(e.frame(qo)),Eo={preencode(d,n){fo.preencode(d,n.id),e.uint.preencode(d,n.total),jo.preencode(d,n.reactions),d.end++,o>=17&&n.editedAt&&e.uint.preencode(d,n.editedAt)},encode(d,n){const c=o>=17&&n.editedAt?1:0;fo.encode(d,n.id),e.uint.encode(d,n.total),jo.encode(d,n.reactions),e.uint.encode(d,c),o>=17&&n.editedAt&&e.uint.encode(d,n.editedAt)},decode(d){const n=fo.decode(d),c=e.uint.decode(d),r=jo.decode(d),t=d.start<d.end?e.uint.decode(d):0;return{id:n,total:c,reactions:r,editedAt:o>=17&&1&t?e.uint.decode(d):0}}},Bo=_,No={preencode(d,o){Bo.preencode(d,o.header),c.preencode(d,o.oplog),e.string.preencode(d,o.reaction)},encode(d,o){Bo.encode(d,o.header),c.encode(d,o.oplog),e.string.encode(d,o.reaction)},decode:d=>({header:Bo.decode(d),oplog:c.decode(d),reaction:e.string.decode(d)})},Vo=_,Oo={preencode(d,o){Vo.preencode(d,o.header),c.preencode(d,o.oplog),e.string.preencode(d,o.reaction)},encode(d,o){Vo.encode(d,o.header),c.encode(d,o.oplog),e.string.encode(d,o.reaction)},decode:d=>({header:Vo.decode(d),oplog:c.decode(d),reaction:e.string.decode(d)})},Uo=_,Jo=e.frame(Z),Wo={preencode(d,o){Uo.preencode(d,o.header),e.uint.preencode(d,o.key),Jo.preencode(d,o.config)},encode(d,o){Uo.encode(d,o.header),e.uint.encode(d,o.key),Jo.encode(d,o.config)},decode:d=>({header:Uo.decode(d),key:e.uint.decode(d),config:Jo.decode(d)})},Ho={preencode(d,o){e.fixed32.preencode(d,o.memberKey),e.string.preencode(d,o.displayName),d.end++,o.avatar&&Ei.preencode(d,o.avatar)},encode(d,o){const n=o.avatar?1:0;e.fixed32.encode(d,o.memberKey),e.string.encode(d,o.displayName),e.uint.encode(d,n),o.avatar&&Ei.encode(d,o.avatar)},decode:d=>({memberKey:e.fixed32.decode(d),displayName:e.string.decode(d),avatar:1&e.uint.decode(d)?Ei.decode(d):null})},zo={preencode(d,o){e.fixed32.preencode(d,o.key),d.end++,o.username&&e.string.preencode(d,o.username)},encode(d,o){const n=o.username?1:0;e.fixed32.encode(d,o.key),e.uint.encode(d,n),o.username&&e.string.encode(d,o.username)},decode:d=>({key:e.fixed32.decode(d),username:1&e.uint.decode(d)?e.string.decode(d):null})},Go=e.frame(zo),Qo={preencode(d,o){e.fixed32.preencode(d,o.publicKey),d.end++,o.discoveryCoreKey&&e.fixed32.preencode(d,o.discoveryCoreKey),o.userRegistry&&Go.preencode(d,o.userRegistry)},encode(d,o){const n=(o.discoveryCoreKey?1:0)|(o.userRegistry?2:0);e.fixed32.encode(d,o.publicKey),e.uint.encode(d,n),o.discoveryCoreKey&&e.fixed32.encode(d,o.discoveryCoreKey),o.userRegistry&&Go.encode(d,o.userRegistry)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d);return{publicKey:o,discoveryCoreKey:1&n?e.fixed32.decode(d):null,userRegistry:2&n?Go.decode(d):null}}},Xo=_,Yo=e.frame(G),Zo=e.frame(Q),$o=Jo,_o=e.frame(Qo),en=be,dn=e.array(e.frame(le)),on={preencode(e,d){Xo.preencode(e,d.header),Yo.preencode(e,d.digest),Zo.preencode(e,d.capabilities),e.end++,d.config&&$o.preencode(e,d.config),d.identity&&_o.preencode(e,d.identity),d.bootstrapDevice&&en.preencode(e,d.bootstrapDevice),d.initialMembers&&dn.preencode(e,d.initialMembers)},encode(d,o){const n=(o.config?1:0)|(o.identity?2:0)|(o.bootstrapDevice?4:0)|(o.initialMembers?8:0);Xo.encode(d,o.header),Yo.encode(d,o.digest),Zo.encode(d,o.capabilities),e.uint.encode(d,n),o.config&&$o.encode(d,o.config),o.identity&&_o.encode(d,o.identity),o.bootstrapDevice&&en.encode(d,o.bootstrapDevice),o.initialMembers&&dn.encode(d,o.initialMembers)},decode(d){const o=Xo.decode(d),n=Yo.decode(d),c=Zo.decode(d),r=e.uint.decode(d);return{header:o,digest:n,capabilities:c,config:1&r?$o.decode(d):null,identity:2&r?_o.decode(d):null,bootstrapDevice:4&r?en.decode(d):null,initialMembers:8&r?dn.decode(d):null}}},nn=_,cn={preencode(d,o){nn.preencode(d,o.header),e.uint.preencode(d,o.version)},encode(d,o){nn.encode(d,o.header),e.uint.encode(d,o.version)},decode:d=>({header:nn.decode(d),version:e.uint.decode(d)})},rn=_,tn=z,an={preencode(d,o){rn.preencode(d,o.header),e.uint.preencode(d,o.key),tn.preencode(d,o.settings)},encode(d,o){rn.encode(d,o.header),e.uint.encode(d,o.key),tn.encode(d,o.settings)},decode:d=>({header:rn.decode(d),key:e.uint.decode(d),settings:tn.decode(d)})},sn={preencode(d,o){e.fixed32.preencode(d,o.memberKey),Bi.preencode(d,o.status),d.end++,o.mailbox&&e.fixed32.preencode(d,o.mailbox),o.roomKey&&e.fixed32.preencode(d,o.roomKey)},encode(d,o){const n=(o.mailbox?1:0)|(o.roomKey?2:0);e.fixed32.encode(d,o.memberKey),Bi.encode(d,o.status),e.uint.encode(d,n),o.mailbox&&e.fixed32.encode(d,o.mailbox),o.roomKey&&e.fixed32.encode(d,o.roomKey)},decode(d){const o=e.fixed32.decode(d),n=Bi.decode(d),c=e.uint.decode(d);return{memberKey:o,status:n,mailbox:1&c?e.fixed32.decode(d):null,roomKey:2&c?e.fixed32.decode(d):null}}},pn={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.buffer.preencode(d,o.encryptionKey),e.fixed32.preencode(d,o.seed),n.preencode(d,o.initiator),e.fixed32.preencode(d,o.fastForwardTo)},encode(d,o){e.fixed32.encode(d,o.roomKey),e.buffer.encode(d,o.encryptionKey),e.fixed32.encode(d,o.seed),n.encode(d,o.initiator),e.fixed32.encode(d,o.fastForwardTo)},decode:d=>({roomKey:e.fixed32.decode(d),encryptionKey:e.buffer.decode(d),seed:e.fixed32.decode(d),initiator:n.decode(d),fastForwardTo:e.fixed32.decode(d)})},un=e.array(e.frame(pn)),ln=Y,fn={preencode(e,d){un.preencode(e,d.sharedRooms),ln.preencode(e,d.blockedContacts)},encode(e,d){un.encode(e,d.sharedRooms),ln.encode(e,d.blockedContacts)},decode:e=>({sharedRooms:un.decode(e),blockedContacts:ln.decode(e)})},mn=_o,yn={preencode(e,d){mn.preencode(e,d.identity)},encode(e,d){mn.encode(e,d.identity)},decode:e=>({identity:mn.decode(e)})},xn={preencode(d,o){e.uint.preencode(d,o.rooms),e.uint.preencode(d,o.contacts)},encode(d,o){e.uint.encode(d,o.rooms),e.uint.encode(d,o.contacts)},decode:d=>({rooms:e.uint.decode(d),contacts:e.uint.decode(d)})},bn={preencode(d,o){e.uint.preencode(d,o.rooms),e.uint.preencode(d,o.contactRequests)},encode(d,o){e.uint.encode(d,o.rooms),e.uint.encode(d,o.contactRequests)},decode:d=>({rooms:e.uint.decode(d),contactRequests:e.uint.decode(d)})},vn={preencode(d,o){e.buffer.preencode(d,o.entropy)},encode(d,o){e.buffer.encode(d,o.entropy)},decode:d=>({entropy:e.buffer.decode(d)})},kn={preencode(d,o){e.fixed32.preencode(d,o.publicKey),e.fixed32.preencode(d,o.devicePublicKey),e.fixed32.preencode(d,o.writerKey)},encode(d,o){e.fixed32.encode(d,o.publicKey),e.fixed32.encode(d,o.devicePublicKey),e.fixed32.encode(d,o.writerKey)},decode:d=>({publicKey:e.fixed32.decode(d),devicePublicKey:e.fixed32.decode(d),writerKey:e.fixed32.decode(d)})},gn=e.frame(kn),Kn={preencode(d,c){e.fixed32.preencode(d,c.id),e.fixed32.preencode(d,c.invitationSeed),e.fixed32.preencode(d,c.mailbox),t.preencode(d,c.responseKeyPair),n.preencode(d,c.initiator),n.preencode(d,c.inviter),d.end++,c.identity&&gn.preencode(d,c.identity),o>=29&&c.buildType&&vi.preencode(d,c.buildType)},encode(d,c){const r=(c.identity?1:0)|(o>=29&&c.buildType?2:0);e.fixed32.encode(d,c.id),e.fixed32.encode(d,c.invitationSeed),e.fixed32.encode(d,c.mailbox),t.encode(d,c.responseKeyPair),n.encode(d,c.initiator),n.encode(d,c.inviter),e.uint.encode(d,r),c.identity&&gn.encode(d,c.identity),o>=29&&c.buildType&&vi.encode(d,c.buildType)},decode(d){const c=e.fixed32.decode(d),r=e.fixed32.decode(d),i=e.fixed32.decode(d),a=t.decode(d),s=n.decode(d),p=n.decode(d),u=e.uint.decode(d);return{id:c,invitationSeed:r,mailbox:i,responseKeyPair:a,initiator:s,inviter:p,identity:1&u?gn.decode(d):null,buildType:o>=29&&2&u?vi.decode(d):null}}},hn=_,wn={preencode(d,o){hn.preencode(d,o.header),e.buffer.preencode(d,o.blindResponse)},encode(d,o){hn.encode(d,o.header),e.buffer.encode(d,o.blindResponse)},decode:d=>({header:hn.decode(d),blindResponse:e.buffer.decode(d)})},Pn=_,Tn=e.frame(Kn),Rn={preencode(e,d){Pn.preencode(e,d.header),Tn.preencode(e,d.invitation)},encode(e,d){Pn.encode(e,d.header),Tn.encode(e,d.invitation)},decode:e=>({header:Pn.decode(e),invitation:Tn.decode(e)})},An=_,Mn={preencode(d,o){An.preencode(d,o.header),e.fixed32.preencode(d,o.id)},encode(d,o){An.encode(d,o.header),e.fixed32.encode(d,o.id)},decode:d=>({header:An.decode(d),id:e.fixed32.decode(d)})},Dn={preencode(d,o){e.fixed32.preencode(d,o.publicKey),e.fixed32.preencode(d,o.devicePublicKey),d.end++,o.privateProfileKey&&e.fixed32.preencode(d,o.privateProfileKey),o.deviceKeyPair&&t.preencode(d,o.deviceKeyPair),e.buffer.preencode(d,o.deviceProof)},encode(d,o){const n=(o.privateProfileKey?1:0)|(o.deviceKeyPair?2:0);e.fixed32.encode(d,o.publicKey),e.fixed32.encode(d,o.devicePublicKey),e.uint.encode(d,n),o.privateProfileKey&&e.fixed32.encode(d,o.privateProfileKey),o.deviceKeyPair&&t.encode(d,o.deviceKeyPair),e.buffer.encode(d,o.deviceProof)},decode(d){const o=e.fixed32.decode(d),n=e.fixed32.decode(d),c=e.uint.decode(d);return{publicKey:o,devicePublicKey:n,privateProfileKey:1&c?e.fixed32.decode(d):null,deviceKeyPair:2&c?t.decode(d):null,deviceProof:e.buffer.decode(d)}}},Cn={preencode(e,d){e.end++},encode(d,n){const c=(n.isActive?1:0)|(n.isFullyMuted?2:0)|(n.isMentionsOnlyMuted?4:0)|(o>=14&&n.isReadOnly?8:0)|(o>=27&&n.isFavorite?16:0);e.uint.encode(d,c)},decode(d){const n=e.uint.decode(d);return{isActive:!!(1&n),isFullyMuted:!!(2&n),isMentionsOnlyMuted:!!(4&n),isReadOnly:o>=14&&!!(8&n),isFavorite:o>=27&&!!(16&n)}}},Sn=e.frame(Cn),Fn=e.frame(Dn),In=gn,Ln={preencode(d,c){e.fixed32.preencode(d,c.roomKey),e.buffer.preencode(d,c.encryptionKey),e.fixed32.preencode(d,c.mailbox),Sn.preencode(d,c.status),e.uint.preencode(d,c.clock),d.end++,c.initiator&&n.preencode(d,c.initiator),c.fastForwardTo&&e.fixed32.preencode(d,c.fastForwardTo),c.identitySwap&&Fn.preencode(d,c.identitySwap),o>=9&&c.identitySwapV2&&In.preencode(d,c.identitySwapV2),o>=15&&c.contact&&e.fixed32.preencode(d,c.contact)},encode(d,c){const r=(c.initiator?1:0)|(c.fastForwardTo?2:0)|(c.identitySwap?4:0)|(o>=9&&c.identitySwapV2?8:0)|(o>=15&&c.contact?16:0);e.fixed32.encode(d,c.roomKey),e.buffer.encode(d,c.encryptionKey),e.fixed32.encode(d,c.mailbox),Sn.encode(d,c.status),e.uint.encode(d,c.clock),e.uint.encode(d,r),c.initiator&&n.encode(d,c.initiator),c.fastForwardTo&&e.fixed32.encode(d,c.fastForwardTo),c.identitySwap&&Fn.encode(d,c.identitySwap),o>=9&&c.identitySwapV2&&In.encode(d,c.identitySwapV2),o>=15&&c.contact&&e.fixed32.encode(d,c.contact)},decode(d){const c=e.fixed32.decode(d),r=e.buffer.decode(d),t=e.fixed32.decode(d),i=Sn.decode(d),a=e.uint.decode(d),s=e.uint.decode(d);return{roomKey:c,encryptionKey:r,mailbox:t,status:i,clock:a,initiator:1&s?n.decode(d):null,fastForwardTo:2&s?e.fixed32.decode(d):null,identitySwap:4&s?Fn.decode(d):null,identitySwapV2:o>=9&&8&s?In.decode(d):null,contact:o>=15&&16&s?e.fixed32.decode(d):null}}},qn=_,jn={preencode(d,o){qn.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),e.buffer.preencode(d,o.encryptionKey),e.fixed32.preencode(d,o.mailbox),d.end++,o.fastForwardTo&&e.fixed32.preencode(d,o.fastForwardTo),o.initiator&&n.preencode(d,o.initiator),o.dm&&e.fixed32.preencode(d,o.dm)},encode(d,c){const r=(c.fastForwardTo?1:0)|(c.initiator?2:0)|(c.dm?4:0)|(o>=14&&c.isReadOnly?8:0);qn.encode(d,c.header),e.fixed32.encode(d,c.roomKey),e.buffer.encode(d,c.encryptionKey),e.fixed32.encode(d,c.mailbox),e.uint.encode(d,r),c.fastForwardTo&&e.fixed32.encode(d,c.fastForwardTo),c.initiator&&n.encode(d,c.initiator),c.dm&&e.fixed32.encode(d,c.dm)},decode(d){const c=qn.decode(d),r=e.fixed32.decode(d),t=e.buffer.decode(d),i=e.fixed32.decode(d),a=e.uint.decode(d);return{header:c,roomKey:r,encryptionKey:t,mailbox:i,fastForwardTo:1&a?e.fixed32.decode(d):null,initiator:2&a?n.decode(d):null,dm:4&a?e.fixed32.decode(d):null,isReadOnly:o>=14&&!!(8&a)}}},En=_,Bn={preencode(d,o){En.preencode(d,o.header),e.fixed32.preencode(d,o.discoveryKey)},encode(d,o){En.encode(d,o.header),e.fixed32.encode(d,o.discoveryKey)},decode:d=>({header:En.decode(d),discoveryKey:e.fixed32.decode(d)})},Nn=_,Vn=Sn,On={preencode(d,o){Nn.preencode(d,o.header),e.fixed32.preencode(d,o.roomKey),e.uint.preencode(d,o.key),Vn.preencode(d,o.status)},encode(d,o){Nn.encode(d,o.header),e.fixed32.encode(d,o.roomKey),e.uint.encode(d,o.key),Vn.encode(d,o.status)},decode:d=>({header:Nn.decode(d),roomKey:e.fixed32.decode(d),key:e.uint.decode(d),status:Vn.decode(d)})},Un={preencode(e,d){e.end++},encode(d,o){const n=o.isBlocked?1:0;e.uint.encode(d,n)},decode:d=>({isBlocked:!!(1&e.uint.decode(d))})},Jn={preencode(d,o){e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.clock),Ni.preencode(d,o.status),d.end++,o.mailbox&&e.fixed32.preencode(d,o.mailbox),o.roomKey&&e.fixed32.preencode(d,o.roomKey)},encode(d,o){const n=(o.mailbox?1:0)|(o.roomKey?2:0);e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.clock),Ni.encode(d,o.status),e.uint.encode(d,n),o.mailbox&&e.fixed32.encode(d,o.mailbox),o.roomKey&&e.fixed32.encode(d,o.roomKey)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d),c=Ni.decode(d),r=e.uint.decode(d);return{memberKey:o,clock:n,status:c,mailbox:1&r?e.fixed32.decode(d):null,roomKey:2&r?e.fixed32.decode(d):null}}},Wn=_,Hn=e.frame(sn),zn={preencode(e,d){Wn.preencode(e,d.header),Hn.preencode(e,d.contact)},encode(e,d){Wn.encode(e,d.header),Hn.encode(e,d.contact)},decode:e=>({header:Wn.decode(e),contact:Hn.decode(e)})},Gn=_,Qn={preencode(d,o){Gn.preencode(d,o.header),e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.key),Vi.preencode(d,o.status)},encode(d,o){Gn.encode(d,o.header),e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.key),Vi.encode(d,o.status)},decode:d=>({header:Gn.decode(d),memberKey:e.fixed32.decode(d),key:e.uint.decode(d),status:Vi.decode(d)})},Xn=_,Yn={preencode(d,o){Xn.preencode(d,o.header),e.fixed32.preencode(d,o.memberKey)},encode(d,o){Xn.encode(d,o.header),e.fixed32.encode(d,o.memberKey)},decode:d=>({header:Xn.decode(d),memberKey:e.fixed32.decode(d)})},Zn={preencode(e,d){e.end++},encode(d,o){const n=(o.isPending?1:0)|(o.isAccepted?2:0)|(o.isRejected?4:0)|(o.isDiscarded?8:0)|(o.isSeen?16:0);e.uint.encode(d,n)},decode(d){const o=e.uint.decode(d);return{isPending:!!(1&o),isAccepted:!!(2&o),isRejected:!!(4&o),isDiscarded:!!(8&o),isSeen:!!(16&o)}}},$n=ve,_n=e.frame(i),ec={preencode(d,o){$n.preencode(d,o.sender),_n.preencode(d,o.keys),e.fixed32.preencode(d,o.mailbox),d.end++,o.message&&e.string.preencode(d,o.message)},encode(d,o){const n=o.message?1:0;$n.encode(d,o.sender),_n.encode(d,o.keys),e.fixed32.encode(d,o.mailbox),e.uint.encode(d,n),o.message&&e.string.encode(d,o.message)},decode:d=>({sender:$n.decode(d),keys:_n.decode(d),mailbox:e.fixed32.decode(d),message:1&e.uint.decode(d)?e.string.decode(d):null})},dc=e.frame(ec),oc={preencode(e,d){dc.preencode(e,d.body),ce.preencode(e,d.attestation)},encode(e,d){dc.encode(e,d.body),ce.encode(e,d.attestation)},decode:e=>({body:dc.decode(e),attestation:ce.decode(e)})},nc=ue,cc=e.frame(Zn),rc=_n,tc={preencode(d,n){e.fixed32.preencode(d,n.memberKey),e.uint.preencode(d,n.clock),nc.preencode(d,n.sender),cc.preencode(d,n.status),rc.preencode(d,n.keys),e.fixed32.preencode(d,n.mailbox),d.end++,n.message&&e.string.preencode(d,n.message),o>=17&&n.sentAt&&e.uint.preencode(d,n.sentAt)},encode(d,n){const c=(n.message?1:0)|(o>=17&&n.sentAt?2:0);e.fixed32.encode(d,n.memberKey),e.uint.encode(d,n.clock),nc.encode(d,n.sender),cc.encode(d,n.status),rc.encode(d,n.keys),e.fixed32.encode(d,n.mailbox),e.uint.encode(d,c),n.message&&e.string.encode(d,n.message),o>=17&&n.sentAt&&e.uint.encode(d,n.sentAt)},decode(d){const n=e.fixed32.decode(d),c=e.uint.decode(d),r=nc.decode(d),t=cc.decode(d),i=rc.decode(d),a=e.fixed32.decode(d),s=e.uint.decode(d);return{memberKey:n,clock:c,sender:r,status:t,keys:i,mailbox:a,message:1&s?e.string.decode(d):null,sentAt:o>=17&&2&s?e.uint.decode(d):0}}},ic=_,ac={preencode(d,o){ic.preencode(d,o.header),e.buffer.preencode(d,o.blindRequest)},encode(d,o){ic.encode(d,o.header),e.buffer.encode(d,o.blindRequest)},decode:d=>({header:ic.decode(d),blindRequest:e.buffer.decode(d)})},sc=_,pc=cc,uc={preencode(d,n){sc.preencode(d,n.header),e.fixed32.preencode(d,n.memberKey),e.uint.preencode(d,n.key),pc.preencode(d,n.status),d.end++,o>=15&&n.roomKey&&e.fixed32.preencode(d,n.roomKey)},encode(d,n){const c=o>=15&&n.roomKey?1:0;sc.encode(d,n.header),e.fixed32.encode(d,n.memberKey),e.uint.encode(d,n.key),pc.encode(d,n.status),e.uint.encode(d,c),o>=15&&n.roomKey&&e.fixed32.encode(d,n.roomKey)},decode(d){const n=sc.decode(d),c=e.fixed32.decode(d),r=e.uint.decode(d),t=pc.decode(d),i=d.start<d.end?e.uint.decode(d):0;return{header:n,memberKey:c,key:r,status:t,roomKey:o>=15&&1&i?e.fixed32.decode(d):null}}},lc={preencode(d,o){e.uint.preencode(d,o.timestamp),e.fixed32.preencode(d,o.key),e.fixed32.preencode(d,o.mailbox)},encode(d,o){e.uint.encode(d,o.timestamp),e.fixed32.encode(d,o.key),e.fixed32.encode(d,o.mailbox)},decode:d=>({version:e.uint.decode(d),timestamp:e.uint.decode(d),key:e.fixed32.decode(d),mailbox:e.fixed32.decode(d)})},fc={preencode(d,o){switch(e.uint.preencode(d,o.version),o.version){case 0:case 1:lc.preencode(d,o);break;default:throw new Error("Unsupported version")}},encode(d,o){switch(e.uint.encode(d,o.version),o.version){case 0:case 1:lc.encode(d,o);break;default:throw new Error("Unsupported version")}},decode(d){const o=d.start,n=e.uint.decode(d);switch(d.start=o,n){case 0:case 1:return lc.decode(d);default:throw new Error("Unsupported version")}}},mc={preencode(d,o){e.fixed32.preencode(d,o.discoveryPublicKey),e.uint.preencode(d,o.timestamp),d.end++,o.lastSynced&&e.uint.preencode(d,o.lastSynced)},encode(d,o){const n=(o.lastSynced?1:0)|(o.dirty?2:0);e.fixed32.encode(d,o.discoveryPublicKey),e.uint.encode(d,o.timestamp),e.uint.encode(d,n),o.lastSynced&&e.uint.encode(d,o.lastSynced)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d),c=e.uint.decode(d);return{discoveryPublicKey:o,timestamp:n,lastSynced:1&c?e.uint.decode(d):0,dirty:!!(2&c)}}},yc={preencode(d,o){e.uint.preencode(d,o.rooms),e.uint.preencode(d,o.activeRooms)},encode(d,o){e.uint.encode(d,o.rooms),e.uint.encode(d,o.activeRooms)},decode:d=>({rooms:e.uint.decode(d),activeRooms:e.uint.decode(d)})},xc=F,bc=Y,vc={preencode(e,d){e.end++,d.blockedMembers&&bc.preencode(e,d.blockedMembers)},encode(d,o){const n=o.blockedMembers?1:0;e.uint.encode(d,n),o.blockedMembers&&bc.encode(d,o.blockedMembers)},decode:d=>({blockedMembers:1&e.uint.decode(d)?bc.decode(d):null})},kc=e.frame(X),gc=e.frame(vc),Kc={preencode(d,o){e.buffer.preencode(d,o.encryptionKey),e.fixed32.preencode(d,o.seed),kc.preencode(d,o.capabilities),n.preencode(d,o.initiator),e.fixed32.preencode(d,o.fastForwardTo),d.end++,o.privateProfile&&gc.preencode(d,o.privateProfile)},encode(d,o){const c=o.privateProfile?1:0;e.buffer.encode(d,o.encryptionKey),e.fixed32.encode(d,o.seed),kc.encode(d,o.capabilities),n.encode(d,o.initiator),e.fixed32.encode(d,o.fastForwardTo),e.uint.encode(d,c),o.privateProfile&&gc.encode(d,o.privateProfile)},decode:d=>({encryptionKey:e.buffer.decode(d),seed:e.fixed32.decode(d),capabilities:kc.decode(d),initiator:n.decode(d),fastForwardTo:e.fixed32.decode(d),privateProfile:1&e.uint.decode(d)?gc.decode(d):null})},hc={preencode(d,o){d.end++,o.count&&e.uint.preencode(d,o.count)},encode(d,o){const n=o.count?1:0;e.uint.encode(d,n),o.count&&e.uint.encode(d,o.count)},decode:d=>({count:1&e.uint.decode(d)?e.uint.decode(d):0})},wc=e.frame(Kc),Pc={preencode(d,n){e.fixed32.preencode(d,n.roomKey),e.uint.preencode(d,n.priority),d.end++,n.v3&&wc.preencode(d,n.v3),o>=5&&n.timestamp&&e.uint.preencode(d,n.timestamp)},encode(d,n){const c=(n.v3?1:0)|(o>=3&&n.errored?2:0)|(o>=5&&n.timestamp?4:0);e.fixed32.encode(d,n.roomKey),e.uint.encode(d,n.priority),e.uint.encode(d,c),n.v3&&wc.encode(d,n.v3),o>=5&&n.timestamp&&e.uint.encode(d,n.timestamp)},decode(d){const n=e.fixed32.decode(d),c=e.uint.decode(d),r=e.uint.decode(d);return{roomKey:n,priority:c,v3:1&r?wc.decode(d):null,errored:o>=3&&!!(2&r),timestamp:o>=5&&4&r?e.uint.decode(d):0}}},Tc={preencode(e,d){e.end++},encode(d,o){const n=o.isConfirmed?1:0;e.uint.encode(d,n)},decode:d=>({isConfirmed:!!(1&e.uint.decode(d))})},Rc=e.frame(Tc),Ac=Fn,Mc={preencode(d,n){e.fixed32.preencode(d,n.publicKey),e.fixed32.preencode(d,n.privateProfileKey),t.preencode(d,n.deviceKeyPair),e.buffer.preencode(d,n.deviceProof),Rc.preencode(d,n.status),d.end++,n.entropy&&e.buffer.preencode(d,n.entropy),n.swap&&Ac.preencode(d,n.swap),o>=9&&n.swapV2&&Oi.preencode(d,n.swapV2)},encode(d,n){const c=(n.entropy?1:0)|(n.swap?2:0)|(o>=9&&n.swapV2?4:0);e.fixed32.encode(d,n.publicKey),e.fixed32.encode(d,n.privateProfileKey),t.encode(d,n.deviceKeyPair),e.buffer.encode(d,n.deviceProof),Rc.encode(d,n.status),e.uint.encode(d,c),n.entropy&&e.buffer.encode(d,n.entropy),n.swap&&Ac.encode(d,n.swap),o>=9&&n.swapV2&&Oi.encode(d,n.swapV2)},decode(d){const n=e.fixed32.decode(d),c=e.fixed32.decode(d),r=t.decode(d),i=e.buffer.decode(d),a=Rc.decode(d),s=e.uint.decode(d);return{publicKey:n,privateProfileKey:c,deviceKeyPair:r,deviceProof:i,status:a,entropy:1&s?e.buffer.decode(d):null,swap:2&s?Ac.decode(d):null,swapV2:o>=9&&4&s?Oi.decode(d):null}}},Dc={RestoreIdentity:1,CreateRoom:2,LeaveRoom:3,ClearRoom:4,JoinRoomInvitation:5,JoinRoomKeys:6,JoinRoomResponse:7,SendContactRequest:8,TestFastTask:9,TestSlowTask:10,TestErrorTask:11},Cc={preencode(e,d){e.end++},encode(d,o){if(o>11)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},Sc={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.buffer.preencode(d,o.encryptionKey),d.end++,o.fastForwardTo&&e.fixed32.preencode(d,o.fastForwardTo),o.initiator&&n.preencode(d,o.initiator)},encode(d,o){const c=(o.fastForwardTo?1:0)|(o.initiator?2:0);e.fixed32.encode(d,o.roomKey),e.buffer.encode(d,o.encryptionKey),e.uint.encode(d,c),o.fastForwardTo&&e.fixed32.encode(d,o.fastForwardTo),o.initiator&&n.encode(d,o.initiator)},decode(d){const o=e.fixed32.decode(d),c=e.buffer.decode(d),r=e.uint.decode(d);return{roomKey:o,encryptionKey:c,fastForwardTo:1&r?e.fixed32.decode(d):null,initiator:2&r?n.decode(d):null}}},Fc=Tn,Ic={preencode(e,d){Fc.preencode(e,d.invitation)},encode(e,d){Fc.encode(e,d.invitation)},decode:e=>({invitation:Fc.decode(e)})},Lc={preencode(d,o){e.fixed32.preencode(d,o.mailbox),t.preencode(d,o.keyPair),e.buffer.preencode(d,o.response)},encode(d,o){e.fixed32.encode(d,o.mailbox),t.encode(d,o.keyPair),e.buffer.encode(d,o.response)},decode:d=>({mailbox:e.fixed32.decode(d),keyPair:t.decode(d),response:e.buffer.decode(d)})},qc=$,jc={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.buffer.preencode(d,o.encryptionKey),d.end++,o.fastForwardTo&&e.fixed32.preencode(d,o.fastForwardTo),o.initiator&&n.preencode(d,o.initiator),o.mailbox&&e.fixed32.preencode(d,o.mailbox)},encode(d,o){const c=(o.fastForwardTo?1:0)|(o.initiator?2:0)|(o.mailbox?4:0);e.fixed32.encode(d,o.roomKey),e.buffer.encode(d,o.encryptionKey),e.uint.encode(d,c),o.fastForwardTo&&e.fixed32.encode(d,o.fastForwardTo),o.initiator&&n.encode(d,o.initiator),o.mailbox&&e.fixed32.encode(d,o.mailbox)},decode(d){const o=e.fixed32.decode(d),c=e.buffer.decode(d),r=e.uint.decode(d);return{roomKey:o,encryptionKey:c,fastForwardTo:1&r?e.fixed32.decode(d):null,initiator:2&r?n.decode(d):null,mailbox:4&r?e.fixed32.decode(d):null}}},Ec=e.frame(jc),Bc={preencode(e,d){Ec.preencode(e,d.keys)},encode(e,d){Ec.encode(e,d.keys)},decode:e=>({keys:Ec.decode(e)})},Nc=e.frame(on),Vc={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.buffer.preencode(d,o.encryptionKey),d.end++,o.fastForwardTo&&e.fixed32.preencode(d,o.fastForwardTo),o.initiator&&n.preencode(d,o.initiator),o.mailbox&&e.fixed32.preencode(d,o.mailbox),o.keyPair&&t.preencode(d,o.keyPair),o.genesis&&Nc.preencode(d,o.genesis)},encode(d,o){const c=(o.fastForwardTo?1:0)|(o.initiator?2:0)|(o.mailbox?4:0)|(o.keyPair?8:0)|(o.genesis?16:0)|(o.isPrivateProfile?32:0);e.fixed32.encode(d,o.roomKey),e.buffer.encode(d,o.encryptionKey),e.uint.encode(d,c),o.fastForwardTo&&e.fixed32.encode(d,o.fastForwardTo),o.initiator&&n.encode(d,o.initiator),o.mailbox&&e.fixed32.encode(d,o.mailbox),o.keyPair&&t.encode(d,o.keyPair),o.genesis&&Nc.encode(d,o.genesis)},decode(d){const o=e.fixed32.decode(d),c=e.buffer.decode(d),r=e.uint.decode(d);return{roomKey:o,encryptionKey:c,fastForwardTo:1&r?e.fixed32.decode(d):null,initiator:2&r?n.decode(d):null,mailbox:4&r?e.fixed32.decode(d):null,keyPair:8&r?t.decode(d):null,genesis:16&r?Nc.decode(d):null,isPrivateProfile:!!(32&r)}}},Oc={preencode(d,o){e.fixed32.preencode(d,o.roomKey),d.end++},encode(d,o){const n=o.isGossiped?1:0;e.fixed32.encode(d,o.roomKey),e.uint.encode(d,n)},decode:d=>({roomKey:e.fixed32.decode(d),isGossiped:!!(1&e.uint.decode(d))})},Uc={preencode(d,o){e.fixed32.preencode(d,o.roomKey)},encode(d,o){e.fixed32.encode(d,o.roomKey)},decode:d=>({roomKey:e.fixed32.decode(d)})},Jc={preencode(d,o){e.string.preencode(d,o.mnemonic),d.end++,o.profileDiscoveryTimeout&&e.uint.preencode(d,o.profileDiscoveryTimeout)},encode(d,o){const n=(o.profileDiscoveryTimeout?1:0)|(o.recover?2:0);e.string.encode(d,o.mnemonic),e.uint.encode(d,n),o.profileDiscoveryTimeout&&e.uint.encode(d,o.profileDiscoveryTimeout)},decode(d){const o=e.string.decode(d),n=e.uint.decode(d);return{mnemonic:o,profileDiscoveryTimeout:1&n?e.uint.decode(d):0,recover:!!(2&n)}}},Wc={preencode(d,n){e.fixed32.preencode(d,n.roomKey),e.fixed32.preencode(d,n.memberKey),d.end++,n.message&&e.string.preencode(d,n.message),o>=6&&n.contactInfo&&Ui.preencode(d,n.contactInfo)},encode(d,n){const c=(n.message?1:0)|(o>=6&&n.contactInfo?2:0);e.fixed32.encode(d,n.roomKey),e.fixed32.encode(d,n.memberKey),e.uint.encode(d,c),n.message&&e.string.encode(d,n.message),o>=6&&n.contactInfo&&Ui.encode(d,n.contactInfo)},decode(d){const n=e.fixed32.decode(d),c=e.fixed32.decode(d),r=e.uint.decode(d);return{roomKey:n,memberKey:c,message:1&r?e.string.decode(d):null,contactInfo:o>=6&&2&r?Ui.decode(d):null}}},Hc={preencode(d,o){e.fixed32.preencode(d,o.key),d.end++},encode(d,o){const n=o.isPrivateProfile?1:0;e.fixed32.encode(d,o.key),e.uint.encode(d,n)},decode:d=>({key:e.fixed32.decode(d),isPrivateProfile:!!(1&e.uint.decode(d))})},zc=e.frame(Jc),Gc=e.frame(Vc),Qc=e.frame(Oc),Xc=e.frame(Uc),Yc=e.frame(Ic),Zc=e.frame(Bc),$c=e.frame(Lc),_c=e.frame(Wc),er=e.frame(Hc),dr={preencode(d,o){const n=(o.restoreIdentity?1:0)|(o.createRoom?2:0)|(o.leaveRoom?4:0)|(o.clearRoom?8:0)|(o.joinRoomInvitation?16:0)|(o.joinRoomKeys?32:0)|(o.joinRoomResponse?64:0)|(o.sendContactRequest?128:0)|(o.migrateV2Room?256:0);e.fixed32.preencode(d,o.discoveryKey),e.uint.preencode(d,o.priority),e.uint.preencode(d,o.timestamp),e.uint.preencode(d,o.type),e.uint.preencode(d,n),o.restoreIdentity&&zc.preencode(d,o.restoreIdentity),o.createRoom&&Gc.preencode(d,o.createRoom),o.leaveRoom&&Qc.preencode(d,o.leaveRoom),o.clearRoom&&Xc.preencode(d,o.clearRoom),o.joinRoomInvitation&&Yc.preencode(d,o.joinRoomInvitation),o.joinRoomKeys&&Zc.preencode(d,o.joinRoomKeys),o.joinRoomResponse&&$c.preencode(d,o.joinRoomResponse),o.sendContactRequest&&_c.preencode(d,o.sendContactRequest),o.migrateV2Room&&er.preencode(d,o.migrateV2Room)},encode(d,o){const n=(o.restoreIdentity?1:0)|(o.createRoom?2:0)|(o.leaveRoom?4:0)|(o.clearRoom?8:0)|(o.joinRoomInvitation?16:0)|(o.joinRoomKeys?32:0)|(o.joinRoomResponse?64:0)|(o.sendContactRequest?128:0)|(o.migrateV2Room?256:0);e.fixed32.encode(d,o.discoveryKey),e.uint.encode(d,o.priority),e.uint.encode(d,o.timestamp),e.uint.encode(d,o.type),e.uint.encode(d,n),o.restoreIdentity&&zc.encode(d,o.restoreIdentity),o.createRoom&&Gc.encode(d,o.createRoom),o.leaveRoom&&Qc.encode(d,o.leaveRoom),o.clearRoom&&Xc.encode(d,o.clearRoom),o.joinRoomInvitation&&Yc.encode(d,o.joinRoomInvitation),o.joinRoomKeys&&Zc.encode(d,o.joinRoomKeys),o.joinRoomResponse&&$c.encode(d,o.joinRoomResponse),o.sendContactRequest&&_c.encode(d,o.sendContactRequest),o.migrateV2Room&&er.encode(d,o.migrateV2Room)},decode(d){const o=e.fixed32.decode(d),n=e.uint.decode(d),c=e.uint.decode(d),r=e.uint.decode(d),t=e.uint.decode(d);return{discoveryKey:o,priority:n,timestamp:c,type:r,restoreIdentity:1&t?zc.decode(d):null,createRoom:2&t?Gc.decode(d):null,leaveRoom:4&t?Qc.decode(d):null,clearRoom:8&t?Xc.decode(d):null,joinRoomInvitation:16&t?Yc.decode(d):null,joinRoomKeys:32&t?Zc.decode(d):null,joinRoomResponse:64&t?$c.decode(d):null,sendContactRequest:128&t?_c.decode(d):null,migrateV2Room:256&t?er.decode(d):null}}},or=Ee,nr={preencode(d,o){e.buffer.preencode(d,o.seed),or.preencode(d,o.invitation)},encode(d,o){e.buffer.encode(d,o.seed),or.encode(d,o.invitation)},decode:d=>({seed:e.buffer.decode(d),invitation:or.decode(d)})},cr={preencode(e,d){e.end++},encode(d,n){const c=(n.isWritable?1:0)|(n.isReadable?2:0)|(n.isPrivateProfile?4:0)|(o>=8&&n.isRemoved?8:0);e.uint.encode(d,c)},decode(d){const n=e.uint.decode(d);return{isWritable:!!(1&n),isReadable:!!(2&n),isPrivateProfile:!!(4&n),isRemoved:o>=8&&!!(8&n)}}},rr={preencode(d,o){e.uint.preencode(d,o.creation),e.uint.preencode(d,o.latestSync),e.uint.preencode(d,o.latestChatMessage)},encode(d,o){e.uint.encode(d,o.creation),e.uint.encode(d,o.latestSync),e.uint.encode(d,o.latestChatMessage)},decode:d=>({creation:e.uint.decode(d),latestSync:e.uint.decode(d),latestChatMessage:e.uint.decode(d)})},tr=Yo,ir=mo,ar=e.frame(rr),sr=kc,pr=e.frame(cr),ur=e.frame(ae),lr=e.frame(fd),fr=Jo,mr=_o,yr=e.frame(wo),xr=Y,br=e.frame(pd),vr=Sn,kr={preencode(d,n){const c=(n.selfDevice?1:0)|(n.selfMember?2:0)|(n.config?4:0)|(n.identity?8:0)|(n.lastMessage?16:0)|(n.dm?32:0)|(o>=19&&n.readLengths?64:0)|(o>=19&&n.lastMember?128:0)|(o>=21&&n.version?256:0)|(o>=27&&n.preferences?512:0)|(o>=28&&n.activeCall?1024:0);e.fixed32.preencode(d,n.roomKey),e.fixed32.preencode(d,n.discoveryKey),e.buffer.preencode(d,n.encryptionKey),tr.preencode(d,n.digest),ir.preencode(d,n.stats),ar.preencode(d,n.timestamps),e.uint.preencode(d,n.fork),e.uint.preencode(d,n.length),e.fixed32.preencode(d,n.seed),sr.preencode(d,n.capabilities),pr.preencode(d,n.status),e.uint.preencode(d,c),n.selfDevice&&ur.preencode(d,n.selfDevice),n.selfMember&&lr.preencode(d,n.selfMember),n.config&&fr.preencode(d,n.config),n.identity&&mr.preencode(d,n.identity),n.lastMessage&&yr.preencode(d,n.lastMessage),n.dm&&xr.preencode(d,n.dm),o>=19&&n.readLengths&&Ji.preencode(d,n.readLengths),o>=19&&n.lastMember&&br.preencode(d,n.lastMember),o>=21&&n.version&&e.uint.preencode(d,n.version),o>=27&&n.preferences&&vr.preencode(d,n.preferences),o>=28&&n.activeCall&&Wi.preencode(d,n.activeCall)},encode(d,n){const c=(n.selfDevice?1:0)|(n.selfMember?2:0)|(n.config?4:0)|(n.identity?8:0)|(n.lastMessage?16:0)|(n.dm?32:0)|(o>=19&&n.readLengths?64:0)|(o>=19&&n.lastMember?128:0)|(o>=21&&n.version?256:0)|(o>=27&&n.preferences?512:0)|(o>=28&&n.activeCall?1024:0);e.fixed32.encode(d,n.roomKey),e.fixed32.encode(d,n.discoveryKey),e.buffer.encode(d,n.encryptionKey),tr.encode(d,n.digest),ir.encode(d,n.stats),ar.encode(d,n.timestamps),e.uint.encode(d,n.fork),e.uint.encode(d,n.length),e.fixed32.encode(d,n.seed),sr.encode(d,n.capabilities),pr.encode(d,n.status),e.uint.encode(d,c),n.selfDevice&&ur.encode(d,n.selfDevice),n.selfMember&&lr.encode(d,n.selfMember),n.config&&fr.encode(d,n.config),n.identity&&mr.encode(d,n.identity),n.lastMessage&&yr.encode(d,n.lastMessage),n.dm&&xr.encode(d,n.dm),o>=19&&n.readLengths&&Ji.encode(d,n.readLengths),o>=19&&n.lastMember&&br.encode(d,n.lastMember),o>=21&&n.version&&e.uint.encode(d,n.version),o>=27&&n.preferences&&vr.encode(d,n.preferences),o>=28&&n.activeCall&&Wi.encode(d,n.activeCall)},decode(d){const n=e.fixed32.decode(d),c=e.fixed32.decode(d),r=e.buffer.decode(d),t=tr.decode(d),i=ir.decode(d),a=ar.decode(d),s=e.uint.decode(d),p=e.uint.decode(d),u=e.fixed32.decode(d),l=sr.decode(d),f=pr.decode(d),m=e.uint.decode(d);return{roomKey:n,discoveryKey:c,encryptionKey:r,digest:t,stats:i,timestamps:a,fork:s,length:p,seed:u,capabilities:l,status:f,selfDevice:1&m?ur.decode(d):null,selfMember:2&m?lr.decode(d):null,config:4&m?fr.decode(d):null,identity:8&m?mr.decode(d):null,lastMessage:16&m?yr.decode(d):null,dm:32&m?xr.decode(d):null,readLengths:o>=19&&64&m?Ji.decode(d):null,lastMember:o>=19&&128&m?br.decode(d):null,version:o>=21&&256&m?e.uint.decode(d):0,preferences:o>=27&&512&m?vr.decode(d):null,activeCall:o>=28&&1024&m?Wi.decode(d):null}}},gr=Sn,Kr={preencode(d,o){e.fixed32.preencode(d,o.roomKey),gr.preencode(d,o.status)},encode(d,o){e.fixed32.encode(d,o.roomKey),gr.encode(d,o.status)},decode:d=>({roomKey:e.fixed32.decode(d),status:gr.decode(d)})},hr={preencode(d,o){e.fixed32.preencode(d,o.mailbox),e.fixed32.preencode(d,o.key),d.end++,o.roomKey&&e.fixed32.preencode(d,o.roomKey),o.keyPair&&t.preencode(d,o.keyPair),o.responseKeyPair&&t.preencode(d,o.responseKeyPair)},encode(d,o){const n=(o.roomKey?1:0)|(o.keyPair?2:0)|(o.responseKeyPair?4:0);e.fixed32.encode(d,o.mailbox),e.fixed32.encode(d,o.key),e.uint.encode(d,n),o.roomKey&&e.fixed32.encode(d,o.roomKey),o.keyPair&&t.encode(d,o.keyPair),o.responseKeyPair&&t.encode(d,o.responseKeyPair)},decode(d){const o=e.fixed32.decode(d),n=e.fixed32.decode(d),c=e.uint.decode(d);return{mailbox:o,key:n,roomKey:1&c?e.fixed32.decode(d):null,keyPair:2&c?t.decode(d):null,responseKeyPair:4&c?t.decode(d):null}}},wr=ue,Pr={preencode(d,o){e.fixed32.preencode(d,o.key),wr.preencode(d,o.profile)},encode(d,o){e.fixed32.encode(d,o.key),wr.encode(d,o.profile)},decode:d=>({key:e.fixed32.decode(d),profile:wr.decode(d)})},Tr=ur,Rr={preencode(d,o){e.fixed32.preencode(d,o.roomKey),Tr.preencode(d,o.device)},encode(d,o){e.fixed32.encode(d,o.roomKey),Tr.encode(d,o.device)},decode:d=>({roomKey:e.fixed32.decode(d),device:Tr.decode(d)})},Ar=K,Mr={preencode(d,n){Ar.preencode(d,n.file),e.fixed32.preencode(d,n.roomKey),d.end++,n.encryptionKey&&e.buffer.preencode(d,n.encryptionKey),o>=28&&n.lastAccessed&&e.uint.preencode(d,n.lastAccessed),o>=28&&n.version&&e.uint.preencode(d,n.version)},encode(d,n){const c=(n.encryptionKey?1:0)|(n.cleared?2:0)|(n.own?4:0)|(o>=28&&n.lastAccessed?8:0)|(o>=28&&n.version?16:0);Ar.encode(d,n.file),e.fixed32.encode(d,n.roomKey),e.uint.encode(d,c),n.encryptionKey&&e.buffer.encode(d,n.encryptionKey),o>=28&&n.lastAccessed&&e.uint.encode(d,n.lastAccessed),o>=28&&n.version&&e.uint.encode(d,n.version)},decode(d){const n=Ar.decode(d),c=e.fixed32.decode(d),r=e.uint.decode(d);return{file:n,roomKey:c,encryptionKey:1&r?e.buffer.decode(d):null,cleared:!!(2&r),own:!!(4&r),lastAccessed:o>=28&&8&r?e.uint.decode(d):0,version:o>=28&&16&r?e.uint.decode(d):0}}},Dr=_,Cr={preencode(d,n){Dr.preencode(d,n.header),c.preencode(d,n.oplog),e.uint.preencode(d,n.index),Hi.preencode(d,n.preview),d.end++,o>=12&&n.displayType&&Qr.preencode(d,n.displayType)},encode(d,n){const r=o>=12&&n.displayType?1:0;Dr.encode(d,n.header),c.encode(d,n.oplog),e.uint.encode(d,n.index),Hi.encode(d,n.preview),e.uint.encode(d,r),o>=12&&n.displayType&&Qr.encode(d,n.displayType)},decode(d){const n=Dr.decode(d),r=c.decode(d),t=e.uint.decode(d),i=Hi.decode(d),a=d.start<d.end?e.uint.decode(d):0;return{header:n,oplog:r,index:t,preview:i,displayType:o>=12&&1&a?Qr.decode(d):0}}},Sr={preencode(d,n){d.end++,o>=4&&n.memberKey&&e.fixed32.preencode(d,n.memberKey)},encode(d,n){const c=o>=4&&n.memberKey?1:0;e.uint.encode(d,c),o>=4&&n.memberKey&&e.fixed32.encode(d,n.memberKey)},decode(d){const n=e.uint.decode(d);return{memberKey:o>=4&&1&n?e.fixed32.decode(d):null}}},Fr=ue,Ir={preencode(e,d){Fr.preencode(e,d.profile),ce.preencode(e,d.attestation)},encode(e,d){Fr.encode(e,d.profile),ce.encode(e,d.attestation)},decode:e=>({profile:Fr.decode(e),attestation:ce.decode(e)})},Lr=_,qr={preencode(d,o){Lr.preencode(d,o.header),e.fixed32.preencode(d,o.key)},encode(d,o){Lr.encode(d,o.header),e.fixed32.encode(d,o.key)},decode:d=>({header:Lr.decode(d),key:e.fixed32.decode(d)})},jr={preencode(d,o){e.fixed32.preencode(d,o.deviceKey),ce.preencode(d,o.privateProfileIdentity),e.buffer.preencode(d,o.deviceProof)},encode(d,o){e.fixed32.encode(d,o.deviceKey),ce.encode(d,o.privateProfileIdentity),e.buffer.encode(d,o.deviceProof)},decode:d=>({deviceKey:e.fixed32.decode(d),privateProfileIdentity:ce.decode(d),deviceProof:e.buffer.decode(d)})},Er={preencode(d,n){e.fixed32.preencode(d,n.roomKey),e.fixed32.preencode(d,n.encryptionKey),e.fixed32.preencode(d,n.seed),d.end++,o>=9&&n.fastForwardTo&&e.fixed32.preencode(d,n.fastForwardTo)},encode(d,n){const c=o>=9&&n.fastForwardTo?1:0;e.fixed32.encode(d,n.roomKey),e.fixed32.encode(d,n.encryptionKey),e.fixed32.encode(d,n.seed),e.uint.encode(d,c),o>=9&&n.fastForwardTo&&e.fixed32.encode(d,n.fastForwardTo)},decode(d){const n=e.fixed32.decode(d),c=e.fixed32.decode(d),r=e.fixed32.decode(d),t=e.uint.decode(d);return{roomKey:n,encryptionKey:c,seed:r,fastForwardTo:o>=9&&1&t?e.fixed32.decode(d):null}}},Br={preencode(d,n){e.fixed32.preencode(d,n.publicKey),e.fixed32.preencode(d,n.writerKey),e.fixed32.preencode(d,n.devicePublicKey),d.end++,o>=9&&n.privateProfileKey&&e.fixed32.preencode(d,n.privateProfileKey)},encode(d,n){const c=o>=9&&n.privateProfileKey?1:0;e.fixed32.encode(d,n.publicKey),e.fixed32.encode(d,n.writerKey),e.fixed32.encode(d,n.devicePublicKey),e.uint.encode(d,c),o>=9&&n.privateProfileKey&&e.fixed32.encode(d,n.privateProfileKey)},decode(d){const n=e.fixed32.decode(d),c=e.fixed32.decode(d),r=e.fixed32.decode(d),t=e.uint.decode(d);return{publicKey:n,writerKey:c,devicePublicKey:r,privateProfileKey:o>=9&&1&t?e.fixed32.decode(d):null}}},Nr=_,Vr={preencode(d,o){Nr.preencode(d,o.header),e.fixed32.preencode(d,o.memberKey)},encode(d,o){Nr.encode(d,o.header),e.fixed32.encode(d,o.memberKey)},decode:d=>({header:Nr.decode(d),memberKey:e.fixed32.decode(d)})},Or={preencode(d,o){e.fixed32.preencode(d,o.privateProfileKey)},encode(d,o){e.fixed32.encode(d,o.privateProfileKey)},decode:d=>({privateProfileKey:e.fixed32.decode(d)})},Ur={preencode(d,o){e.fixed32.preencode(d,o.key),e.fixed32.preencode(d,o.responsePublicKey)},encode(d,o){e.fixed32.encode(d,o.key),e.fixed32.encode(d,o.responsePublicKey)},decode:d=>({key:e.fixed32.decode(d),responsePublicKey:e.fixed32.decode(d)})},Jr={preencode(d,n){e.fixed32.preencode(d,n.roomKey),d.end++,o>=10&&n.repairs&&e.uint.preencode(d,n.repairs)},encode(d,n){const c=o>=10&&n.repairs?1:0;e.fixed32.encode(d,n.roomKey),e.uint.encode(d,c),o>=10&&n.repairs&&e.uint.encode(d,n.repairs)},decode(d){const n=e.fixed32.decode(d),c=e.uint.decode(d);return{roomKey:n,repairs:o>=10&&1&c?e.uint.decode(d):0}}},Wr={preencode(d,n){d.end++,o>=11&&n.key&&e.string.preencode(d,n.key),o>=11&&n.description&&e.string.preencode(d,n.description)},encode(d,n){const c=(o>=11&&n.key?1:0)|(o>=11&&n.value?2:0)|(o>=11&&n.description?4:0);e.uint.encode(d,c),o>=11&&n.key&&e.string.encode(d,n.key),o>=11&&n.description&&e.string.encode(d,n.description)},decode(d){const n=e.uint.decode(d);return{key:o>=11&&1&n?e.string.decode(d):null,value:o>=11&&!!(2&n),description:o>=11&&4&n?e.string.decode(d):null}}},Hr=e.array(e.frame(Wr)),zr={preencode(e,d){e.end++,o>=11&&d.flags&&Hr.preencode(e,d.flags)},encode(d,n){const c=o>=11&&n.flags?1:0;e.uint.encode(d,c),o>=11&&n.flags&&Hr.encode(d,n.flags)},decode(d){const n=e.uint.decode(d);return{flags:o>=11&&1&n?Hr.decode(d):null}}},Gr={HttpLink:1,PearLink:2},Qr={preencode(e,d){e.end++},encode(d,o){if(o>2)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},Xr=_,Yr={preencode(d,o){Xr.preencode(d,o.header),e.uint.preencode(d,o.value)},encode(d,o){Xr.encode(d,o.header),e.uint.encode(d,o.value)},decode:d=>({header:Xr.decode(d),value:e.uint.decode(d)})},Zr={preencode(d,o){e.uint.preencode(d,o.key),e.uint.preencode(d,o.value)},encode(d,o){e.uint.encode(d,o.key),e.uint.encode(d,o.value)},decode:d=>({key:e.uint.decode(d),value:e.uint.decode(d)})},$r=_,_r={preencode(d,n){$r.preencode(d,n.header),e.uint.preencode(d,n.from),e.uint.preencode(d,n.to),d.end++,o>=29&&n.buildType&&vi.preencode(d,n.buildType)},encode(d,n){const c=o>=29&&n.buildType?1:0;$r.encode(d,n.header),e.uint.encode(d,n.from),e.uint.encode(d,n.to),e.uint.encode(d,c),o>=29&&n.buildType&&vi.encode(d,n.buildType)},decode(d){const n=$r.decode(d),c=e.uint.decode(d),r=e.uint.decode(d),t=d.start<d.end?e.uint.decode(d):0;return{header:n,from:c,to:r,buildType:o>=29&&1&t?vi.decode(d):null}}},et={RoomType:1,IsExperimental:2,IsJoiningDisabled:3,IsAppendingDisabled:4,IsCallingDisabled:5,IsMembershipEventsDisabled:6,IsAttachmentsDisabled:7,IsLinksDisabled:8},dt={preencode(e,d){e.end++},encode(d,o){if(o>8)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},ot=Ge,nt={preencode(d,n){d.end++,o>=16&&n.nodes&&ot.preencode(d,n.nodes),o>=24&&n.concurrency&&e.uint.preencode(d,n.concurrency),o>=24&&n.maxWindow&&e.uint.preencode(d,n.maxWindow),o>=24&&n.randomPunchInterval&&e.uint.preencode(d,n.randomPunchInterval),o>=24&&n.connectionKeepAlive&&e.uint.preencode(d,n.connectionKeepAlive)},encode(d,n){const c=(o>=16&&n.nodes?1:0)|(o>=24&&n.concurrency?2:0)|(o>=24&&n.maxWindow?4:0)|(o>=24&&n.randomPunchInterval?8:0)|(o>=24&&n.connectionKeepAlive?16:0);e.uint.encode(d,c),o>=16&&n.nodes&&ot.encode(d,n.nodes),o>=24&&n.concurrency&&e.uint.encode(d,n.concurrency),o>=24&&n.maxWindow&&e.uint.encode(d,n.maxWindow),o>=24&&n.randomPunchInterval&&e.uint.encode(d,n.randomPunchInterval),o>=24&&n.connectionKeepAlive&&e.uint.encode(d,n.connectionKeepAlive)},decode(d){const n=e.uint.decode(d);return{nodes:o>=16&&1&n?ot.decode(d):null,concurrency:o>=24&&2&n?e.uint.decode(d):0,maxWindow:o>=24&&4&n?e.uint.decode(d):0,randomPunchInterval:o>=24&&8&n?e.uint.decode(d):0,connectionKeepAlive:o>=24&&16&n?e.uint.decode(d):0}}},ct={en:"en",it:"it",ru:"ru",es:"es",de:"de"},rt={preencode(e,d){e.end++},encode(d,o){switch(o){case"en":e.uint.encode(d,1);break;case"it":e.uint.encode(d,2);break;case"ru":e.uint.encode(d,3);break;case"es":e.uint.encode(d,4);break;case"de":e.uint.encode(d,5);break;default:throw new Error("Unknown enum")}},decode(d){switch(e.uint.decode(d)){case 1:return"en";case 2:return"it";case 3:return"ru";case 4:return"es";case 5:return"de";default:return null}}},tt=qd,it={preencode(d,o){tt.preencode(d,o.range),rt.preencode(d,o.language),e.string.preencode(d,o.text)},encode(d,o){tt.encode(d,o.range),rt.encode(d,o.language),e.string.encode(d,o.text)},decode:d=>({range:tt.decode(d),language:rt.decode(d),text:e.string.decode(d)})},at={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.uint.preencode(d,o.count)},encode(d,o){e.fixed32.encode(d,o.roomKey),e.uint.encode(d,o.count)},decode:d=>({roomKey:e.fixed32.decode(d),count:e.uint.decode(d)})},st={preencode(d,o){e.fixed32.preencode(d,o.deviceKey),e.fixed32.preencode(d,o.key)},encode(d,o){e.fixed32.encode(d,o.deviceKey),e.fixed32.encode(d,o.key)},decode:d=>({deviceKey:e.fixed32.decode(d),key:e.fixed32.decode(d)})},pt=_,ut={preencode(d,o){pt.preencode(d,o.header),e.fixed32.preencode(d,o.key)},encode(d,o){pt.encode(d,o.header),e.fixed32.encode(d,o.key)},decode:d=>({header:pt.decode(d),key:e.fixed32.decode(d)})},lt=_,ft={preencode(d,o){lt.preencode(d,o.header),e.fixed32.preencode(d,o.key)},encode(d,o){lt.encode(d,o.header),e.fixed32.encode(d,o.key)},decode:d=>({header:lt.decode(d),key:e.fixed32.decode(d)})},mt={Flag:1},yt={preencode(e,d){e.end++},encode(d,o){if(o>1)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},xt={preencode(d,o){fo.preencode(d,o.id),e.fixed32.preencode(d,o.sender),e.uint.preencode(d,o.clock),yt.preencode(d,o.label)},encode(d,o){fo.encode(d,o.id),e.fixed32.encode(d,o.sender),e.uint.encode(d,o.clock),yt.encode(d,o.label)},decode:d=>({id:fo.decode(d),sender:e.fixed32.decode(d),clock:e.uint.decode(d),label:yt.decode(d)})},bt=_,vt={preencode(e,d){bt.preencode(e,d.header),c.preencode(e,d.oplog),yt.preencode(e,d.label)},encode(e,d){bt.encode(e,d.header),c.encode(e,d.oplog),yt.encode(e,d.label)},decode:e=>({header:bt.decode(e),oplog:c.decode(e),label:yt.decode(e)})},kt=_,gt={preencode(e,d){kt.preencode(e,d.header),c.preencode(e,d.oplog),yt.preencode(e,d.label)},encode(e,d){kt.encode(e,d.header),c.encode(e,d.oplog),yt.encode(e,d.label)},decode:e=>({header:kt.decode(e),oplog:c.decode(e),label:yt.decode(e)})},Kt={preencode(d,o){yt.preencode(d,o.label),e.uint.preencode(d,o.count)},encode(d,o){yt.encode(d,o.label),e.uint.encode(d,o.count)},decode:d=>({label:yt.decode(d),count:e.uint.decode(d)})},ht=e.array(e.frame(Kt)),wt={preencode(d,n){fo.preencode(d,n.id),e.uint.preencode(d,n.total),ht.preencode(d,n.labels),e.uint.preencode(d,n.editedAt),d.end++,o>=24&&n.flagsClock&&e.uint.preencode(d,n.flagsClock),o>=24&&n.version&&e.uint.preencode(d,n.version)},encode(d,n){const c=(o>=24&&n.flagsClock?1:0)|(o>=24&&n.version?2:0)|(o>=25&&n.isDeleted?4:0);fo.encode(d,n.id),e.uint.encode(d,n.total),ht.encode(d,n.labels),e.uint.encode(d,n.editedAt),e.uint.encode(d,c),o>=24&&n.flagsClock&&e.uint.encode(d,n.flagsClock),o>=24&&n.version&&e.uint.encode(d,n.version)},decode(d){const n=fo.decode(d),c=e.uint.decode(d),r=ht.decode(d),t=e.uint.decode(d),i=d.start<d.end?e.uint.decode(d):0;return{id:n,total:c,labels:r,editedAt:t,flagsClock:o>=24&&1&i?e.uint.decode(d):0,version:o>=24&&2&i?e.uint.decode(d):0,isDeleted:o>=25&&!!(4&i)}}},Pt=_,Tt={preencode(d,o){Pt.preencode(d,o.header),e.uint.preencode(d,o.length)},encode(d,o){Pt.encode(d,o.header),e.uint.encode(d,o.length)},decode:d=>({header:Pt.decode(d),length:e.uint.decode(d)})},Rt={preencode(d,o){e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.length)},encode(d,o){e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.length)},decode:d=>({memberKey:e.fixed32.decode(d),length:e.uint.decode(d)})},At=$,Mt={preencode(e,d){e.end++},encode(d,n){const c=o>=19&&n.disableReadReceipts?1:0;e.uint.encode(d,c)},decode(d){const n=e.uint.decode(d);return{disableReadReceipts:o>=19&&!!(1&n)}}},Dt={disableReadReceipts:"disableReadReceipts"},Ct={preencode(e,d){e.end++},encode(d,o){if("disableReadReceipts"!==o)throw new Error("Unknown enum");e.uint.encode(d,1)},decode:d=>1===e.uint.decode(d)?"disableReadReceipts":null},St=_,Ft=e.frame(Mt),It={preencode(e,d){St.preencode(e,d.header),Ct.preencode(e,d.key),Ft.preencode(e,d.settings)},encode(e,d){St.encode(e,d.header),Ct.encode(e,d.key),Ft.encode(e,d.settings)},decode:e=>({header:St.decode(e),key:Ct.decode(e),settings:Ft.decode(e)})},Lt={preencode(d,n){d.end++,o>=20&&n.roomKey&&e.fixed32.preencode(d,n.roomKey),o>=23&&n.coreKey&&e.fixed32.preencode(d,n.coreKey)},encode(d,n){const c=(o>=20&&n.roomKey?1:0)|(o>=23&&n.coreKey?2:0);e.uint.encode(d,c),o>=20&&n.roomKey&&e.fixed32.encode(d,n.roomKey),o>=23&&n.coreKey&&e.fixed32.encode(d,n.coreKey)},decode(d){const n=e.uint.decode(d);return{roomKey:o>=20&&1&n?e.fixed32.decode(d):null,coreKey:o>=23&&2&n?e.fixed32.decode(d):null}}},qt=e.frame(Lt),jt={preencode(d,n){e.string.preencode(d,n.code),e.string.preencode(d,n.message),e.string.preencode(d,n.stack),e.uint.preencode(d,n.timestamp),d.end++,o>=20&&n.details&&qt.preencode(d,n.details)},encode(d,n){const c=o>=20&&n.details?1:0;e.string.encode(d,n.code),e.string.encode(d,n.message),e.string.encode(d,n.stack),e.uint.encode(d,n.timestamp),e.uint.encode(d,c),o>=20&&n.details&&qt.encode(d,n.details)},decode(d){const n=e.string.decode(d),c=e.string.decode(d),r=e.string.decode(d),t=e.uint.decode(d),i=e.uint.decode(d);return{code:n,message:c,stack:r,timestamp:t,details:o>=20&&1&i?qt.decode(d):null}}},Et={RESUME:1,WAKEUP:2,PRESUSPEND:3,SUSPEND:4},Bt={preencode(e,d){e.end++},encode(d,o){if(o>4)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},Nt={preencode(d,o){e.fixed32.preencode(d,o.roomKey),e.uint.preencode(d,o.total)},encode(d,o){e.fixed32.encode(d,o.roomKey),e.uint.encode(d,o.total)},decode:d=>({roomKey:e.fixed32.decode(d),total:e.uint.decode(d)})},Vt={Flag:1},Ot={preencode(e,d){e.end++},encode(d,o){if(o>1)throw new Error("Unknown enum");e.uint.encode(d,o)},decode:d=>e.uint.decode(d)},Ut={preencode(d,o){e.fixed32.preencode(d,o.key),e.fixed32.preencode(d,o.sender),e.uint.preencode(d,o.clock),Ot.preencode(d,o.label)},encode(d,o){e.fixed32.encode(d,o.key),e.fixed32.encode(d,o.sender),e.uint.encode(d,o.clock),Ot.encode(d,o.label)},decode:d=>({key:e.fixed32.decode(d),sender:e.fixed32.decode(d),clock:e.uint.decode(d),label:Ot.decode(d)})},Jt=_,Wt={preencode(d,o){Jt.preencode(d,o.header),e.fixed32.preencode(d,o.key),Ot.preencode(d,o.label)},encode(d,o){Jt.encode(d,o.header),e.fixed32.encode(d,o.key),Ot.encode(d,o.label)},decode:d=>({header:Jt.decode(d),key:e.fixed32.decode(d),label:Ot.decode(d)})},Ht={preencode(d,o){Ot.preencode(d,o.label),e.uint.preencode(d,o.count)},encode(d,o){Ot.encode(d,o.label),e.uint.encode(d,o.count)},decode:d=>({label:Ot.decode(d),count:e.uint.decode(d)})},zt=e.array(e.frame(Ht)),Gt={preencode(d,o){e.fixed32.preencode(d,o.key),e.uint.preencode(d,o.total),zt.preencode(d,o.labels),e.uint.preencode(d,o.editedAt),e.uint.preencode(d,o.flagsClock)},encode(d,o){e.fixed32.encode(d,o.key),e.uint.encode(d,o.total),zt.encode(d,o.labels),e.uint.encode(d,o.editedAt),e.uint.encode(d,o.flagsClock)},decode:d=>({key:e.fixed32.decode(d),total:e.uint.decode(d),labels:zt.decode(d),editedAt:e.uint.decode(d),flagsClock:e.uint.decode(d)})},Qt={preencode(d,o){e.float64.preencode(d,o.latitude),e.float64.preencode(d,o.longitude)},encode(d,o){e.float64.encode(d,o.latitude),e.float64.encode(d,o.longitude)},decode:d=>({latitude:e.float64.decode(d),longitude:e.float64.decode(d)})},Xt=_,Yt={preencode(d,o){Xt.preencode(d,o.header),e.fixed32.preencode(d,o.deviceKey),e.fixed32.preencode(d,o.fromDeviceKey)},encode(d,o){Xt.encode(d,o.header),e.fixed32.encode(d,o.deviceKey),e.fixed32.encode(d,o.fromDeviceKey)},decode:d=>({header:Xt.decode(d),deviceKey:e.fixed32.decode(d),fromDeviceKey:e.fixed32.decode(d)})},Zt=_,$t=Y,_t={preencode(d,n){Zt.preencode(d,n.header),e.fixed32.preencode(d,n.callKey),e.buffer.preencode(d,n.encryptionKey),d.end++,o>=28&&n.streams&&$t.preencode(d,n.streams),o>=28&&n.discoveryKey&&e.fixed32.preencode(d,n.discoveryKey),o>=28&&n.version&&e.uint.preencode(d,n.version)},encode(d,n){const c=(o>=28&&n.streams?1:0)|(o>=28&&n.discoveryKey?2:0)|(o>=28&&n.version?4:0);Zt.encode(d,n.header),e.fixed32.encode(d,n.callKey),e.buffer.encode(d,n.encryptionKey),e.uint.encode(d,c),o>=28&&n.streams&&$t.encode(d,n.streams),o>=28&&n.discoveryKey&&e.fixed32.encode(d,n.discoveryKey),o>=28&&n.version&&e.uint.encode(d,n.version)},decode(d){const n=Zt.decode(d),c=e.fixed32.decode(d),r=e.buffer.decode(d),t=e.uint.decode(d);return{header:n,callKey:c,encryptionKey:r,streams:o>=28&&1&t?$t.decode(d):null,discoveryKey:o>=28&&2&t?e.fixed32.decode(d):null,version:o>=28&&4&t?e.uint.decode(d):0}}},ei=_,di=Y,oi={preencode(d,n){ei.preencode(d,n.header),e.fixed32.preencode(d,n.callKey),d.end++,o>=28&&n.streams&&di.preencode(d,n.streams)},encode(d,n){const c=o>=28&&n.streams?1:0;ei.encode(d,n.header),e.fixed32.encode(d,n.callKey),e.uint.encode(d,c),o>=28&&n.streams&&di.encode(d,n.streams)},decode(d){const n=ei.decode(d),c=e.fixed32.decode(d),r=e.uint.decode(d);return{header:n,callKey:c,streams:o>=28&&1&r?di.decode(d):null}}},ni=_,ci={preencode(d,o){ni.preencode(d,o.header),e.fixed32.preencode(d,o.callKey)},encode(d,o){ni.encode(d,o.header),e.fixed32.encode(d,o.callKey)},decode:d=>({header:ni.decode(d),callKey:e.fixed32.decode(d)})},ri=_,ti={preencode(d,o){ri.preencode(d,o.header),e.fixed32.preencode(d,o.callKey)},encode(d,o){ri.encode(d,o.header),e.fixed32.encode(d,o.callKey)},decode:d=>({header:ri.decode(d),callKey:e.fixed32.decode(d)})},ii=_,ai={preencode(d,o){ii.preencode(d,o.header),e.fixed32.preencode(d,o.callKey),e.fixed32.preencode(d,o.streamKey)},encode(d,o){ii.encode(d,o.header),e.fixed32.encode(d,o.callKey),e.fixed32.encode(d,o.streamKey)},decode:d=>({header:ii.decode(d),callKey:e.fixed32.decode(d),streamKey:e.fixed32.decode(d)})},si=_,pi={preencode(d,o){si.preencode(d,o.header),e.fixed32.preencode(d,o.callKey),e.fixed32.preencode(d,o.streamKey)},encode(d,o){si.encode(d,o.header),e.fixed32.encode(d,o.callKey),e.fixed32.encode(d,o.streamKey)},decode:d=>({header:si.decode(d),callKey:e.fixed32.decode(d),streamKey:e.fixed32.decode(d)})},ui={preencode(d,n){e.fixed32.preencode(d,n.callKey),e.buffer.preencode(d,n.encryptionKey),e.uint.preencode(d,n.createdAt),d.end++,o>=28&&n.endedAt&&e.uint.preencode(d,n.endedAt),o>=28&&n.discoveryKey&&e.fixed32.preencode(d,n.discoveryKey),o>=28&&n.version&&e.uint.preencode(d,n.version)},encode(d,n){const c=(o>=28&&n.endedAt?1:0)|(o>=28&&n.discoveryKey?2:0)|(o>=28&&n.version?4:0);e.fixed32.encode(d,n.callKey),e.buffer.encode(d,n.encryptionKey),e.uint.encode(d,n.createdAt),e.uint.encode(d,c),o>=28&&n.endedAt&&e.uint.encode(d,n.endedAt),o>=28&&n.discoveryKey&&e.fixed32.encode(d,n.discoveryKey),o>=28&&n.version&&e.uint.encode(d,n.version)},decode(d){const n=e.fixed32.decode(d),c=e.buffer.decode(d),r=e.uint.decode(d),t=e.uint.decode(d);return{callKey:n,encryptionKey:c,createdAt:r,endedAt:o>=28&&1&t?e.uint.decode(d):0,discoveryKey:o>=28&&2&t?e.fixed32.decode(d):null,version:o>=28&&4&t?e.uint.decode(d):0}}},li={preencode(d,o){e.fixed32.preencode(d,o.callKey),e.fixed32.preencode(d,o.memberKey),e.uint.preencode(d,o.createdAt)},encode(d,o){e.fixed32.encode(d,o.callKey),e.fixed32.encode(d,o.memberKey),e.uint.encode(d,o.createdAt)},decode:d=>({callKey:e.fixed32.decode(d),memberKey:e.fixed32.decode(d),createdAt:e.uint.decode(d)})},fi={preencode(d,n){e.fixed32.preencode(d,n.callKey),e.fixed32.preencode(d,n.deviceKey),e.fixed32.preencode(d,n.memberKey),e.uint.preencode(d,n.createdAt),d.end++,o>=28&&n.swarmKey&&e.fixed32.preencode(d,n.swarmKey)},encode(d,n){const c=o>=28&&n.swarmKey?1:0;e.fixed32.encode(d,n.callKey),e.fixed32.encode(d,n.deviceKey),e.fixed32.encode(d,n.memberKey),e.uint.encode(d,n.createdAt),e.uint.encode(d,c),o>=28&&n.swarmKey&&e.fixed32.encode(d,n.swarmKey)},decode(d){const n=e.fixed32.decode(d),c=e.fixed32.decode(d),r=e.fixed32.decode(d),t=e.uint.decode(d),i=e.uint.decode(d);return{callKey:n,deviceKey:c,memberKey:r,createdAt:t,swarmKey:o>=28&&1&i?e.fixed32.decode(d):null}}},mi={preencode(d,o){e.fixed32.preencode(d,o.callKey),e.fixed32.preencode(d,o.deviceKey),e.buffer.preencode(d,o.streamKey),e.uint.preencode(d,o.createdAt)},encode(d,o){e.fixed32.encode(d,o.callKey),e.fixed32.encode(d,o.deviceKey),e.buffer.encode(d,o.streamKey),e.uint.encode(d,o.createdAt)},decode:d=>({callKey:e.fixed32.decode(d),deviceKey:e.fixed32.decode(d),streamKey:e.buffer.decode(d),createdAt:e.uint.decode(d)})},yi={preencode(d,n){e.fixed32.preencode(d,n.callKey),d.end++,o>=28&&n.selfDeviceKey&&e.fixed32.preencode(d,n.selfDeviceKey)},encode(d,n){const c=o>=28&&n.selfDeviceKey?1:0;e.fixed32.encode(d,n.callKey),e.uint.encode(d,c),o>=28&&n.selfDeviceKey&&e.fixed32.encode(d,n.selfDeviceKey)},decode(d){const n=e.fixed32.decode(d),c=e.uint.decode(d);return{callKey:n,selfDeviceKey:o>=28&&1&c?e.fixed32.decode(d):null}}},xi={preencode(d,o){e.uint.preencode(d,o.lastCleared)},encode(d,o){e.uint.encode(d,o.lastCleared)},decode:d=>({lastCleared:e.uint.decode(d)})},bi={Nightly:"Nightly",Internal:"Internal",Production:"Production"},vi={preencode(e,d){e.end++},encode(d,o){switch(o){case"Nightly":e.uint.encode(d,1);break;case"Internal":e.uint.encode(d,2);break;case"Production":e.uint.encode(d,3);break;default:throw new Error("Unknown enum")}},decode(d){switch(e.uint.decode(d)){case 1:return"Nightly";case 2:return"Internal";case 3:return"Production";default:return null}}},ki=_,gi={preencode(e,d){ki.preencode(e,d.header)},encode(e,d){ki.encode(e,d.header)},decode:e=>({header:ki.decode(e)})},Ki=_,hi={preencode(e,d){Ki.preencode(e,d.header)},encode(e,d){Ki.encode(e,d.header)},decode:e=>({header:Ki.decode(e)})},wi={preencode(d,n){vi.preencode(d,n.buildType),d.end++,o>=30&&n.latestOfflineAbi&&e.uint.preencode(d,n.latestOfflineAbi)},encode(d,n){const c=o>=30&&n.latestOfflineAbi?1:0;vi.encode(d,n.buildType),e.uint.encode(d,c),o>=30&&n.latestOfflineAbi&&e.uint.encode(d,n.latestOfflineAbi)},decode(d){const n=vi.decode(d),c=d.start<d.end?e.uint.decode(d):0;return{buildType:n,latestOfflineAbi:o>=30&&1&c?e.uint.decode(d):0}}},Pi=e.frame(P),Ti=Pi,Ri=e.array(rt),Ai=e.frame(pe),Mi=Pi,Di=Ai,Ci=e.frame(Er),Si=Ai,Fi=e.frame(md),Ii=e.frame(Sr),Li=e.frame(Qt),qi=Li,ji=e.array(e.frame(it)),Ei=Pi,Bi=e.frame(Un),Ni=Bi,Vi=Bi,Oi=e.frame(Br),Ui=e.frame(Ir),Ji=e.array(e.frame(Rt)),Wi=e.frame(yi),Hi=Pi;function zi(e){o=e}function Gi(d,n,c=30){return o=c,e.encode(Yi(d),n)}function Qi(d,n,c=30){return o=c,e.decode(Yi(d),n)}function Xi(e){switch(e){case"@keet/room-type":return U;case"@local/tasks":return Dc;case"@keet/display-type":return Gr;case"@keet/system-settings-keys":return et;case"@keet/room-supported-language":return ct;case"@keet/label-type":return mt;case"@keet-private-id/user-settings-key":return Dt;case"@local/keet-state":return Et;case"@keet/member-label-type":return Vt;case"@keet/build-type":return bi;default:throw new Error("Enum not found "+e)}}function Yi(e){switch(e){case"@keet/head":return n;case"@keet/oplog-id":return c;case"@keet/encryption-keypair":return r;case"@keet/signing-keypair":return t;case"@keet/room-keys":return i;case"@keet/operation-header":return a;case"@keet/blob-pointer":return s;case"@keet/file-dimensions":return p;case"@keet/file-metadata":return l;case"@keet/external-drive-pointer":return f;case"@keet/external-blob-pointer":return m;case"@keet/file-pointer":return b;case"@keet/file":return g;case"@keet/image-file":return P;case"@keet/file-status":return T;case"@keet/file-record":return M;case"@keet/device-status":return D;case"@keet/member-status":return C;case"@keet/member-moderation-status":return S;case"@keet/abi":return F;case"@keet/device-stats":return I;case"@keet/member-stats":return L;case"@keet/chat-stats":return q;case"@keet/file-stats":return j;case"@keet/stats":return O;case"@keet/room-type":return J;case"@keet/system-settings":return W;case"@keet/system-digest":return G;case"@keet/room-seed":return Q;case"@keet/room-capabilities":return X;case"@keet/room-config":return Z;case"@keet/blind-peer":return $;case"@keet/add-blind-peer-operation":return de;case"@keet/remove-blind-peer-operation":return ne;case"@keet/identity-attestation":return ce;case"@keet/device-invitation":return re;case"@keet/device":return ae;case"@keet/member-profile":return se;case"@keet/device-profile":return pe;case"@keet/member-update":return le;case"@keet/device-update":return fe;case"@keet/signed-pairing-data":return me;case"@keet/device-request-identity":return ye;case"@keet/device-response-identity":return xe;case"@keet/device-request-with-invitation":return ge;case"@keet/device-request-with-invitation-and-proof":return he;case"@keet/device-request-with-member-proof":return Te;case"@keet/device-request":return Me;case"@keet/device-response":return Se;case"@keet/invitation-metadata":return Fe;case"@keet/invitation":return qe;case"@keet/add-invitation-operation":return Be;case"@keet/remove-invitation-operation":return Ve;case"@keet/sendable-room-invitation":return Oe;case"@keet/sendable-identity-invitation":return Ue;case"@keet/sendable-contact-invitation":return Je;case"@keet/sendable-invitation":return Qe;case"@keet/add-device-operation":return Ye;case"@keet/update-device-operation":return $e;case"@keet/start-indexing-operation":return _e;case"@keet/stop-indexing-operation":return ed;case"@keet/join-request":return od;case"@keet/accept-join-request-operation":return rd;case"@keet/reject-join-request-operation":return id;case"@keet/member":return pd;case"@keet/full-member":return fd;case"@keet/member-proofs":return md;case"@keet/update-member-operation":return bd;case"@keet/change-member-status-operation":return gd;case"@keet/change-member-role-operation":return hd;case"@keet/remove-member-operation":return Pd;case"@keet/member-activity":return Td;case"@keet/member-joined-event":return Rd;case"@keet/member-left-event":return Ad;case"@keet/title-changed-chat-event":return Md;case"@keet/chat-event":return Fd;case"@keet/sendable-event":return Id;case"@keet/display-range":return Ld;case"@keet/display-content-range":return jd;case"@keet/mention-display-item":return Bd;case"@keet/link-preview":return Od;case"@keet/display-link-item":return Wd;case"@keet/display":return eo;case"@keet/oplog-message":return ro;case"@keet/index-message":return ao;case"@keet/full-index-message":return uo;case"@keet/message-status":return lo;case"@keet/message-index-id":return fo;case"@keet/thread":return yo;case"@keet/chat-message-record":return ko;case"@keet/full-chat-message-record":return wo;case"@keet/add-chat-message-operation":return Ro;case"@keet/remove-chat-message-operation":return Mo;case"@keet/update-chat-message-operation":return So;case"@keet/pin-chat-message-operation":return Io;case"@keet/reaction":return Lo;case"@keet/reactions-summary":return qo;case"@keet/reactions-digest":return Eo;case"@keet/add-reaction-operation":return No;case"@keet/remove-reaction-operation":return Oo;case"@keet/update-room-config-operation":return Wo;case"@keet/group-member":return Ho;case"@keet/user-registry-info":return zo;case"@keet/room-identity":return Qo;case"@keet/genesis-operation":return on;case"@keet/upgrade-operation":return cn;case"@keet/update-system-settings-operation":return an;case"@keet-private-id/contact":return sn;case"@keet-private-id/v3-room-migration-info":return pn;case"@keet-private-id/run-v3-migration-operation":return fn;case"@keet-private-id/update-identity-operation":return yn;case"@keet-private-id/counters":return xn;case"@keet-private-id/stats":return bn;case"@keet-private-id/add-entropy-operation":return vn;case"@keet-private-id/pending-invitation-identity":return kn;case"@keet-private-id/pending-invitation":return Kn;case"@keet-private-id/resolve-pending-invitation-operation":return wn;case"@keet-private-id/add-pending-invitation-operation":return Rn;case"@keet-private-id/remove-pending-invitation-operation":return Mn;case"@keet-private-id/identity-swap":return Dn;case"@keet-private-id/room-status":return Cn;case"@keet-private-id/room":return Ln;case"@keet-private-id/add-room-operation":return jn;case"@keet-private-id/remove-room-operation":return Bn;case"@keet-private-id/update-room-status-operation":return On;case"@keet-private-id/contact-status":return Un;case"@keet-private-id/contact-record":return Jn;case"@keet-private-id/add-contact-operation":return zn;case"@keet-private-id/update-contact-status-operation":return Qn;case"@keet-private-id/remove-contact-operation":return Yn;case"@keet-private-id/contact-request-status":return Zn;case"@keet-private-id/contact-request-body":return ec;case"@keet-private-id/contact-request":return oc;case"@keet-private-id/contact-request-record":return tc;case"@keet-private-id/add-contact-request-operation":return ac;case"@keet-private-id/update-contact-request-status-operation":return uc;case"@keet-private-id/profile-discovery-record-v1":return lc;case"@keet-private-id/profile-discovery-record":return fc;case"@local/background-sync-room":return mc;case"@local/stats":return yc;case"@local/migration-status":return xc;case"@local/v3-private-profile-migration":return vc;case"@local/v3-room-migration":return Kc;case"@local/room-migration-stats":return hc;case"@local/room-migration":return Pc;case"@local/identity-status":return Tc;case"@local/identity-record":return Mc;case"@local/tasks":return Cc;case"@local/room-keys":return Sc;case"@local/join-room-invitation-task":return Ic;case"@local/join-room-response-task":return Lc;case"@local/fast-forward-to":return qc;case"@local/add-room-fields":return jc;case"@local/join-room-keys-task":return Bc;case"@local/create-room-task":return Vc;case"@local/leave-room-task":return Oc;case"@local/clear-room-task":return Uc;case"@local/restore-identity-task":return Jc;case"@local/send-contact-request-task":return Wc;case"@local/migrate-v2-room-task":return Hc;case"@local/task":return dr;case"@local/shared-invitation":return nr;case"@local/room-status":return cr;case"@local/room-timestamps":return rr;case"@local/room":return kr;case"@local/room-preferences":return Kr;case"@local/writer":return hr;case"@local/member":return Pr;case"@local/device":return Rr;case"@local/file":return Mr;case"@keet/add-file-preview-operation":return Cr;case"@keet/member-removed-event":return Sr;case"@keet/member-contact-info":return Ir;case"@keet/remove-device-operation":return qr;case"@keet/device-identity":return jr;case"@keet/readonly-room-invitation":return Er;case"@keet-private-id/identity-swap-v2":return Br;case"@keet-private-id/activate-contact-room-operation":return Vr;case"@local/identity-swap":return Or;case"@local/writer-append":return Ur;case"@local/room-metadata":return Jr;case"@local/debug-flag":return Wr;case"@local/debug":return zr;case"@keet/display-type":return Qr;case"@keet/test-increment-operation":return Yr;case"@keet/test-collection-record-1":return Zr;case"@keet/migrate-abi-operation":return _r;case"@keet/system-settings-keys":return dt;case"@local/hyperdht-record":return nt;case"@keet/room-supported-language":return rt;case"@keet/translation-display-item":return it;case"@local/unread":return at;case"@keet-private-id/unreads":return st;case"@keet-private-id/add-unreads-key-operation":return ut;case"@keet-private-id/remove-unreads-key-operation":return ft;case"@keet/label-type":return yt;case"@keet/chat-label":return xt;case"@keet/add-chat-label-operation":return vt;case"@keet/remove-chat-label-operation":return gt;case"@keet/chat-label-summary":return Kt;case"@keet/chat-label-digest":return wt;case"@keet/update-read-length-operation":return Tt;case"@keet/read-length":return Rt;case"@keet/tmp-removed-member":return At;case"@keet-private-id/settings":return Mt;case"@keet-private-id/user-settings-key":return Ct;case"@keet-private-id/update-settings-operation":return It;case"@local/error-record-details":return Lt;case"@local/error-record":return jt;case"@local/keet-state":return Bt;case"@local/file-stats":return Nt;case"@keet/member-label-type":return Ot;case"@keet/member-label":return Ut;case"@keet/add-member-label-operation":return Wt;case"@keet/member-label-summary":return Ht;case"@keet/member-label-digest":return Gt;case"@keet/location-shared-event":return Qt;case"@keet/move-indexer-operation":return Yt;case"@keet/start-call":return _t;case"@keet/join-call":return oi;case"@keet/leave-call":return ci;case"@keet/end-call":return ti;case"@keet/add-call-stream":return ai;case"@keet/remove-call-stream":return pi;case"@keet/call-record":return ui;case"@keet/call-member-record":return li;case"@keet/call-device-record":return fi;case"@keet/call-stream-record":return mi;case"@local/active-call":return yi;case"@local/file-gc-info":return xi;case"@keet/build-type":return vi;case"@keet/test-crash-operation":return gi;case"@keet/test-dispatch-error-operation":return hi;case"@local/environment-record":return wi;default:throw new Error("Encoder not found "+e)}}function Zi(e,d=30){const n=Yi(e);return{preencode(e,c){o=d,n.preencode(e,c)},encode(e,c){o=d,n.encode(e,c)},decode:e=>(o=d,n.decode(e))}}const $i=Zi;module.exports={resolveStruct:$i,getStruct:Zi,getEnum:Xi,getEncoding:Yi,encode:Gi,decode:Qi,setVersion:zi,version:o};
@holepunchto/keet-core/schema/spec/local/hyperschema/schema.json +6266 -0
……@@ -0,0 +1,6266 @@
1{
2 "version": 30,
3 "schema": [
4 {
5 "name": "public-key",
6 "namespace": "keet",
7 "alias": "fixed32",
8 "version": 1
9 },
10 {
11 "name": "secret-key",
12 "namespace": "keet",
13 "alias": "buffer",
14 "version": 1
15 },
16 {
17 "name": "room-key",
18 "namespace": "keet",
19 "alias": "fixed32",
20 "version": 1
21 },
22 {
23 "name": "encryption-key",
24 "namespace": "keet",
25 "alias": "buffer",
26 "version": 1
27 },
28 {
29 "name": "room-discovery-key",
30 "namespace": "keet",
31 "alias": "fixed32",
32 "version": 1
33 },
34 {
35 "name": "core-key",
36 "namespace": "keet",
37 "alias": "fixed32",
38 "version": 1
39 },
40 {
41 "name": "device-key",
42 "namespace": "keet",
43 "alias": "fixed32",
44 "version": 1
45 },
46 {
47 "name": "invitation-id",
48 "namespace": "keet",
49 "alias": "fixed32",
50 "version": 1
51 },
52 {
53 "name": "member-key",
54 "namespace": "keet",
55 "alias": "fixed32",
56 "version": 1
57 },
58 {
59 "name": "swarm-key",
60 "namespace": "keet",
61 "alias": "fixed32",
62 "version": 1
63 },
64 {
65 "name": "core-seq",
66 "namespace": "keet",
67 "alias": "uint",
68 "version": 1
69 },
70 {
71 "name": "head",
72 "namespace": "keet",
73 "compact": true,
74 "flagsPosition": -1,
75 "fields": [
76 {
77 "name": "key",
78 "required": true,
79 "type": "@keet/device-key",
80 "version": 1
81 },
82 {
83 "name": "length",
84 "required": true,
85 "type": "uint",
86 "version": 1
87 }
88 ]
89 },
90 {
91 "name": "oplog-id",
92 "namespace": "keet",
93 "compact": true,
94 "flagsPosition": -1,
95 "fields": [
96 {
97 "name": "key",
98 "required": true,
99 "type": "@keet/device-key",
100 "version": 1
101 },
102 {
103 "name": "seq",
104 "required": true,
105 "type": "@keet/core-seq",
106 "version": 1
107 }
108 ]
109 },
110 {
111 "name": "encryption-keypair",
112 "namespace": "keet",
113 "compact": true,
114 "flagsPosition": -1,
115 "fields": [
116 {
117 "name": "publicKey",
118 "required": true,
119 "type": "fixed32",
120 "version": 1
121 },
122 {
123 "name": "secretKey",
124 "required": true,
125 "type": "fixed32",
126 "version": 1
127 }
128 ]
129 },
130 {
131 "name": "signing-keypair",
132 "namespace": "keet",
133 "compact": true,
134 "flagsPosition": -1,
135 "fields": [
136 {
137 "name": "publicKey",
138 "required": true,
139 "type": "fixed32",
140 "version": 1
141 },
142 {
143 "name": "secretKey",
144 "required": true,
145 "type": "fixed64",
146 "version": 1
147 }
148 ]
149 },
150 {
151 "name": "room-keys",
152 "namespace": "keet",
153 "compact": false,
154 "flagsPosition": 1,
155 "fields": [
156 {
157 "name": "key",
158 "required": true,
159 "type": "@keet/room-key",
160 "version": 1
161 },
162 {
163 "name": "encryptionKey",
164 "type": "@keet/encryption-key",
165 "version": 1
166 },
167 {
168 "name": "fastForwardTo",
169 "type": "fixed32",
170 "version": 1
171 }
172 ]
173 },
174 {
175 "name": "operation-header",
176 "namespace": "keet",
177 "compact": false,
178 "flagsPosition": -1,
179 "fields": [
180 {
181 "name": "timestamp",
182 "required": true,
183 "type": "uint",
184 "version": 1
185 }
186 ]
187 },
188 {
189 "name": "blob-pointer",
190 "namespace": "keet",
191 "compact": true,
192 "flagsPosition": -1,
193 "fields": [
194 {
195 "name": "blockOffset",
196 "required": true,
197 "type": "uint",
198 "version": 1
199 },
200 {
201 "name": "blockLength",
202 "required": true,
203 "type": "uint",
204 "version": 1
205 },
206 {
207 "name": "byteOffset",
208 "required": true,
209 "type": "uint",
210 "version": 1
211 },
212 {
213 "name": "byteLength",
214 "required": true,
215 "type": "uint",
216 "version": 1
217 }
218 ]
219 },
220 {
221 "name": "file-dimensions",
222 "namespace": "keet",
223 "compact": false,
224 "flagsPosition": -1,
225 "fields": [
226 {
227 "name": "width",
228 "required": true,
229 "type": "uint",
230 "version": 1
231 },
232 {
233 "name": "height",
234 "required": true,
235 "type": "uint",
236 "version": 1
237 }
238 ]
239 },
240 {
241 "name": "file-metadata",
242 "namespace": "keet",
243 "compact": false,
244 "flagsPosition": 0,
245 "fields": [
246 {
247 "name": "name",
248 "type": "string",
249 "version": 1
250 },
251 {
252 "name": "mimetype",
253 "type": "string",
254 "version": 1
255 },
256 {
257 "name": "dimensions",
258 "type": "@keet/file-dimensions",
259 "version": 1
260 },
261 {
262 "name": "userdata",
263 "type": "buffer",
264 "version": 1
265 },
266 {
267 "name": "duration",
268 "type": "uint",
269 "version": 1
270 },
271 {
272 "name": "isPreview",
273 "type": "bool",
274 "version": 1
275 }
276 ]
277 },
278 {
279 "name": "external-drive-pointer",
280 "namespace": "keet",
281 "compact": false,
282 "flagsPosition": -1,
283 "fields": [
284 {
285 "name": "key",
286 "required": true,
287 "type": "@keet/core-key",
288 "version": 1
289 },
290 {
291 "name": "path",
292 "required": true,
293 "type": "string",
294 "version": 1
295 },
296 {
297 "name": "version",
298 "required": true,
299 "type": "uint",
300 "version": 1
301 },
302 {
303 "name": "size",
304 "required": true,
305 "type": "uint",
306 "version": 1
307 }
308 ]
309 },
310 {
311 "name": "external-blob-pointer",
312 "namespace": "keet",
313 "compact": false,
314 "flagsPosition": -1,
315 "fields": [
316 {
317 "name": "key",
318 "required": true,
319 "type": "@keet/core-key",
320 "version": 1
321 },
322 {
323 "name": "blob",
324 "required": true,
325 "type": "@keet/blob-pointer",
326 "version": 1
327 }
328 ]
329 },
330 {
331 "name": "file-pointer",
332 "namespace": "keet",
333 "compact": false,
334 "flagsPosition": 0,
335 "fields": [
336 {
337 "name": "inlined",
338 "type": "buffer",
339 "version": 1
340 },
341 {
342 "name": "blob",
343 "type": "@keet/blob-pointer",
344 "version": 1
345 },
346 {
347 "name": "externalBlob",
348 "type": "@keet/external-blob-pointer",
349 "version": 1
350 },
351 {
352 "name": "externalDrive",
353 "type": "@keet/external-drive-pointer",
354 "version": 1
355 }
356 ]
357 },
358 {
359 "name": "file",
360 "namespace": "keet",
361 "compact": false,
362 "flagsPosition": 1,
363 "fields": [
364 {
365 "name": "pointer",
366 "required": true,
367 "type": "@keet/file-pointer",
368 "version": 1
369 },
370 {
371 "name": "metadata",
372 "type": "@keet/file-metadata",
373 "version": 1
374 },
375 {
376 "name": "preview",
377 "type": "@keet/image-file",
378 "version": 1
379 },
380 {
381 "name": "hash",
382 "type": "fixed32",
383 "version": 1
384 }
385 ]
386 },
387 {
388 "name": "image-file",
389 "namespace": "keet",
390 "compact": false,
391 "flagsPosition": 0,
392 "fields": [
393 {
394 "name": "small",
395 "type": "@keet/file",
396 "version": 1
397 },
398 {
399 "name": "medium",
400 "type": "@keet/file",
401 "version": 1
402 },
403 {
404 "name": "large",
405 "type": "@keet/file",
406 "version": 1
407 }
408 ]
409 },
410 {
411 "name": "file-status",
412 "namespace": "keet",
413 "compact": false,
414 "flagsPosition": 0,
415 "fields": [
416 {
417 "name": "isDeleted",
418 "type": "bool",
419 "version": 1
420 }
421 ]
422 },
423 {
424 "name": "file-record",
425 "namespace": "keet",
426 "compact": false,
427 "flagsPosition": 4,
428 "fields": [
429 {
430 "name": "id",
431 "required": true,
432 "type": "uint",
433 "version": 1
434 },
435 {
436 "name": "oplog",
437 "required": true,
438 "type": "@keet/oplog-id",
439 "version": 1
440 },
441 {
442 "name": "status",
443 "required": true,
444 "type": "@keet/file-status",
445 "version": 1
446 },
447 {
448 "name": "file",
449 "required": true,
450 "type": "@keet/file",
451 "version": 1
452 },
453 {
454 "name": "version",
455 "type": "uint",
456 "version": 22
457 }
458 ]
459 },
460 {
461 "name": "device-status",
462 "namespace": "keet",
463 "compact": false,
464 "flagsPosition": 0,
465 "fields": [
466 {
467 "name": "isActive",
468 "type": "bool",
469 "version": 1
470 },
471 {
472 "name": "isIndexing",
473 "type": "bool",
474 "version": 1
475 }
476 ]
477 },
478 {
479 "name": "member-status",
480 "namespace": "keet",
481 "compact": false,
482 "flagsPosition": 0,
483 "fields": [
484 {
485 "name": "isAdmin",
486 "type": "bool",
487 "version": 1
488 },
489 {
490 "name": "isModerator",
491 "type": "bool",
492 "version": 1
493 },
494 {
495 "name": "isPending",
496 "type": "bool",
497 "version": 1
498 },
499 {
500 "name": "isActive",
501 "type": "bool",
502 "version": 1
503 },
504 {
505 "name": "isMuted",
506 "type": "bool",
507 "version": 1
508 },
509 {
510 "name": "isBanned",
511 "type": "bool",
512 "version": 1
513 },
514 {
515 "name": "isShadowBanned",
516 "type": "bool",
517 "version": 1
518 },
519 {
520 "name": "isRemoved",
521 "type": "bool",
522 "version": 19
523 }
524 ]
525 },
526 {
527 "name": "member-moderation-status",
528 "namespace": "keet",
529 "compact": false,
530 "flagsPosition": 0,
531 "fields": [
532 {
533 "name": "isMuted",
534 "type": "bool",
535 "version": 1
536 },
537 {
538 "name": "isBanned",
539 "type": "bool",
540 "version": 1
541 },
542 {
543 "name": "isShadowBanned",
544 "type": "bool",
545 "version": 1
546 }
547 ]
548 },
549 {
550 "name": "abi",
551 "namespace": "keet",
552 "compact": false,
553 "flagsPosition": -1,
554 "fields": [
555 {
556 "name": "version",
557 "required": true,
558 "type": "uint",
559 "version": 1
560 }
561 ]
562 },
563 {
564 "name": "device-stats",
565 "namespace": "keet",
566 "compact": false,
567 "flagsPosition": -1,
568 "fields": [
569 {
570 "name": "total",
571 "required": true,
572 "type": "uint",
573 "version": 1
574 },
575 {
576 "name": "active",
577 "required": true,
578 "type": "uint",
579 "version": 1
580 }
581 ]
582 },
583 {
584 "name": "member-stats",
585 "namespace": "keet",
586 "compact": false,
587 "flagsPosition": -1,
588 "fields": [
589 {
590 "name": "total",
591 "required": true,
592 "type": "uint",
593 "version": 1
594 },
595 {
596 "name": "active",
597 "required": true,
598 "type": "uint",
599 "version": 1
600 },
601 {
602 "name": "pending",
603 "required": true,
604 "type": "uint",
605 "version": 1
606 }
607 ]
608 },
609 {
610 "name": "chat-stats",
611 "namespace": "keet",
612 "compact": false,
613 "flagsPosition": 4,
614 "fields": [
615 {
616 "name": "clock",
617 "required": true,
618 "type": "uint",
619 "version": 1
620 },
621 {
622 "name": "pinned",
623 "required": true,
624 "type": "uint",
625 "version": 1
626 },
627 {
628 "name": "threads",
629 "required": true,
630 "type": "uint",
631 "version": 1
632 },
633 {
634 "name": "timestamp",
635 "required": true,
636 "type": "uint",
637 "version": 1
638 },
639 {
640 "name": "flagsClock",
641 "type": "uint",
642 "version": 24
643 }
644 ]
645 },
646 {
647 "name": "file-stats",
648 "namespace": "keet",
649 "compact": false,
650 "flagsPosition": -1,
651 "fields": [
652 {
653 "name": "clock",
654 "required": true,
655 "type": "uint",
656 "version": 1
657 }
658 ]
659 },
660 {
661 "name": "stats",
662 "namespace": "keet",
663 "compact": false,
664 "flagsPosition": -1,
665 "fields": [
666 {
667 "name": "devices",
668 "required": true,
669 "type": "@keet/device-stats",
670 "version": 1
671 },
672 {
673 "name": "members",
674 "required": true,
675 "type": "@keet/member-stats",
676 "version": 1
677 },
678 {
679 "name": "chat",
680 "required": true,
681 "type": "@keet/chat-stats",
682 "version": 1
683 },
684 {
685 "name": "files",
686 "required": true,
687 "type": "@keet/file-stats",
688 "version": 1
689 }
690 ]
691 },
692 {
693 "name": "room-type",
694 "namespace": "keet",
695 "offset": 1,
696 "enum": [
697 {
698 "key": "Default",
699 "version": 1
700 },
701 {
702 "key": "Broadcast",
703 "version": 1
704 },
705 {
706 "key": "DirectMessage",
707 "version": 1
708 }
709 ],
710 "strings": false
711 },
712 {
713 "name": "system-settings",
714 "namespace": "keet",
715 "compact": false,
716 "flagsPosition": 0,
717 "fields": [
718 {
719 "name": "roomType",
720 "type": "@keet/room-type",
721 "version": 1
722 },
723 {
724 "name": "isExperimental",
725 "type": "bool",
726 "version": 1
727 },
728 {
729 "name": "isJoiningDisabled",
730 "type": "bool",
731 "version": 1
732 },
733 {
734 "name": "isAppendingDisabled",
735 "type": "bool",
736 "version": 1
737 },
738 {
739 "name": "isCallingDisabled",
740 "type": "bool",
741 "version": 1
742 },
743 {
744 "name": "isMembershipEventsDisabled",
745 "type": "bool",
746 "version": 1
747 },
748 {
749 "name": "isAttachmentsDisabled",
750 "type": "bool",
751 "version": 28
752 },
753 {
754 "name": "isLinksDisabled",
755 "type": "bool",
756 "version": 28
757 },
758 {
759 "name": "buildType",
760 "type": "@keet/build-type",
761 "version": 29
762 }
763 ]
764 },
765 {
766 "name": "system-digest",
767 "namespace": "keet",
768 "compact": false,
769 "flagsPosition": -1,
770 "fields": [
771 {
772 "name": "abi",
773 "required": true,
774 "type": "@keet/abi",
775 "version": 1
776 },
777 {
778 "name": "settings",
779 "required": true,
780 "type": "@keet/system-settings",
781 "version": 1
782 },
783 {
784 "name": "creationTime",
785 "required": true,
786 "type": "uint",
787 "version": 1
788 }
789 ]
790 },
791 {
792 "name": "room-seed",
793 "namespace": "keet",
794 "compact": false,
795 "flagsPosition": -1,
796 "fields": [
797 {
798 "name": "seed",
799 "required": true,
800 "type": "fixed32",
801 "version": 1
802 }
803 ]
804 },
805 {
806 "name": "room-capabilities",
807 "namespace": "keet",
808 "compact": false,
809 "flagsPosition": -1,
810 "fields": [
811 {
812 "name": "mailboxKeyPair",
813 "required": true,
814 "type": "@keet/encryption-keypair",
815 "version": 1
816 },
817 {
818 "name": "discoveryKeyPair",
819 "required": true,
820 "type": "@keet/signing-keypair",
821 "version": 1
822 },
823 {
824 "name": "wakeupTopic",
825 "required": true,
826 "type": "@keet/room-discovery-key",
827 "version": 1
828 },
829 {
830 "name": "swarmTopic",
831 "required": true,
832 "type": "@keet/room-discovery-key",
833 "version": 1
834 }
835 ]
836 },
837 {
838 "name": "room-config",
839 "namespace": "keet",
840 "compact": false,
841 "flagsPosition": 0,
842 "fields": [
843 {
844 "name": "title",
845 "type": "string",
846 "version": 1
847 },
848 {
849 "name": "avatar",
850 "type": "@keet/image-file",
851 "version": 1
852 },
853 {
854 "name": "description",
855 "type": "string",
856 "version": 1
857 },
858 {
859 "name": "supportedLanguages",
860 "array": true,
861 "type": "@keet/room-supported-language",
862 "version": 17
863 },
864 {
865 "name": "blindPeers",
866 "array": true,
867 "type": "fixed32",
868 "version": 19
869 }
870 ]
871 },
872 {
873 "name": "blind-peer",
874 "namespace": "keet",
875 "compact": false,
876 "flagsPosition": -1,
877 "fields": [
878 {
879 "name": "key",
880 "required": true,
881 "type": "@keet/public-key",
882 "version": 1
883 }
884 ]
885 },
886 {
887 "name": "add-blind-peer-operation",
888 "namespace": "keet",
889 "compact": false,
890 "flagsPosition": -1,
891 "fields": [
892 {
893 "name": "header",
894 "required": true,
895 "type": "@keet/operation-header",
896 "version": 1
897 },
898 {
899 "name": "peer",
900 "required": true,
901 "type": "@keet/blind-peer",
902 "version": 1
903 }
904 ]
905 },
906 {
907 "name": "remove-blind-peer-operation",
908 "namespace": "keet",
909 "compact": false,
910 "flagsPosition": -1,
911 "fields": [
912 {
913 "name": "header",
914 "required": true,
915 "type": "@keet/operation-header",
916 "version": 1
917 },
918 {
919 "name": "key",
920 "required": true,
921 "type": "@keet/public-key",
922 "version": 1
923 }
924 ]
925 },
926 {
927 "name": "identity-attestation",
928 "namespace": "keet",
929 "compact": true,
930 "flagsPosition": -1,
931 "fields": [
932 {
933 "name": "memberKey",
934 "required": true,
935 "type": "@keet/member-key",
936 "version": 1
937 },
938 {
939 "name": "proof",
940 "required": true,
941 "type": "buffer",
942 "version": 1
943 }
944 ]
945 },
946 {
947 "name": "device-invitation",
948 "namespace": "keet",
949 "compact": false,
950 "flagsPosition": -1,
951 "fields": [
952 {
953 "name": "id",
954 "required": true,
955 "type": "@keet/invitation-id",
956 "version": 1
957 },
958 {
959 "name": "response",
960 "required": true,
961 "type": "buffer",
962 "version": 1
963 }
964 ]
965 },
966 {
967 "name": "device",
968 "namespace": "keet",
969 "compact": false,
970 "flagsPosition": 4,
971 "fields": [
972 {
973 "name": "key",
974 "required": true,
975 "type": "@keet/device-key",
976 "version": 1
977 },
978 {
979 "name": "memberKey",
980 "required": true,
981 "type": "@keet/member-key",
982 "version": 1
983 },
984 {
985 "name": "status",
986 "required": true,
987 "type": "@keet/device-status",
988 "version": 1
989 },
990 {
991 "name": "profile",
992 "required": true,
993 "type": "@keet/device-profile",
994 "version": 1
995 },
996 {
997 "name": "invitation",
998 "type": "@keet/device-invitation",
999 "version": 1
1000 }
1001 ]
1002 },
1003 {
1004 "name": "member-profile",
1005 "namespace": "keet",
1006 "compact": false,
1007 "flagsPosition": 1,
1008 "fields": [
1009 {
1010 "name": "timestamp",
1011 "required": true,
1012 "type": "uint",
1013 "version": 1
1014 },
1015 {
1016 "name": "mailbox",
1017 "type": "@keet/public-key",
1018 "version": 1
1019 },
1020 {
1021 "name": "displayName",
1022 "type": "string",
1023 "version": 1
1024 },
1025 {
1026 "name": "avatar",
1027 "type": "@keet/image-file",
1028 "version": 1
1029 },
1030 {
1031 "name": "username",
1032 "type": "string",
1033 "version": 1
1034 }
1035 ]
1036 },
1037 {
1038 "name": "device-profile",
1039 "namespace": "keet",
1040 "compact": false,
1041 "flagsPosition": 0,
1042 "fields": [
1043 {
1044 "name": "swarmKey",
1045 "type": "@keet/swarm-key",
1046 "version": 1
1047 },
1048 {
1049 "name": "name",
1050 "type": "string",
1051 "version": 1
1052 },
1053 {
1054 "name": "isMobile",
1055 "type": "bool",
1056 "version": 1
1057 },
1058 {
1059 "name": "buildType",
1060 "type": "@keet/build-type",
1061 "version": 29
1062 }
1063 ]
1064 },
1065 {
1066 "name": "member-update",
1067 "namespace": "keet",
1068 "compact": false,
1069 "flagsPosition": -1,
1070 "fields": [
1071 {
1072 "name": "profile",
1073 "required": true,
1074 "type": "@keet/member-profile",
1075 "version": 1
1076 },
1077 {
1078 "name": "attestation",
1079 "required": true,
1080 "type": "@keet/identity-attestation",
1081 "version": 1
1082 }
1083 ]
1084 },
1085 {
1086 "name": "device-update",
1087 "namespace": "keet",
1088 "compact": false,
1089 "flagsPosition": -1,
1090 "fields": [
1091 {
1092 "name": "profile",
1093 "required": true,
1094 "type": "@keet/device-profile",
1095 "version": 1
1096 },
1097 {
1098 "name": "attestation",
1099 "required": true,
1100 "type": "@keet/identity-attestation",
1101 "version": 1
1102 }
1103 ]
1104 },
1105 {
1106 "name": "signed-pairing-data",
1107 "namespace": "keet",
1108 "compact": false,
1109 "flagsPosition": -1,
1110 "fields": [
1111 {
1112 "name": "id",
1113 "required": true,
1114 "type": "@keet/invitation-id",
1115 "version": 1
1116 },
1117 {
1118 "name": "data",
1119 "required": true,
1120 "type": "buffer",
1121 "version": 1
1122 },
1123 {
1124 "name": "signature",
1125 "required": true,
1126 "type": "buffer",
1127 "version": 1
1128 }
1129 ]
1130 },
1131 {
1132 "name": "device-request-identity",
1133 "namespace": "keet",
1134 "compact": false,
1135 "flagsPosition": -1,
1136 "fields": [
1137 {
1138 "name": "devicePublicKey",
1139 "required": true,
1140 "type": "@keet/public-key",
1141 "version": 1
1142 }
1143 ]
1144 },
1145 {
1146 "name": "device-response-identity",
1147 "namespace": "keet",
1148 "compact": false,
1149 "flagsPosition": -1,
1150 "fields": [
1151 {
1152 "name": "privateProfileIdentity",
1153 "required": true,
1154 "type": "@keet/identity-attestation",
1155 "version": 1
1156 },
1157 {
1158 "name": "deviceProof",
1159 "required": true,
1160 "type": "buffer",
1161 "version": 1
1162 }
1163 ]
1164 },
1165 {
1166 "name": "device-request-with-invitation",
1167 "namespace": "keet",
1168 "compact": false,
1169 "flagsPosition": 4,
1170 "fields": [
1171 {
1172 "name": "deviceKey",
1173 "required": true,
1174 "type": "@keet/device-key",
1175 "version": 1
1176 },
1177 {
1178 "name": "keyPair",
1179 "required": true,
1180 "type": "@keet/signing-keypair",
1181 "version": 1
1182 },
1183 {
1184 "name": "device",
1185 "required": true,
1186 "type": "@keet/device-update",
1187 "version": 1
1188 },
1189 {
1190 "name": "member",
1191 "required": true,
1192 "type": "@keet/member-update",
1193 "version": 1
1194 },
1195 {
1196 "name": "identity",
1197 "type": "@keet/device-request-identity",
1198 "version": 1
1199 }
1200 ]
1201 },
1202 {
1203 "name": "device-request-with-invitation-and-proof",
1204 "namespace": "keet",
1205 "compact": false,
1206 "flagsPosition": -1,
1207 "fields": [
1208 {
1209 "name": "id",
1210 "required": true,
1211 "type": "@keet/invitation-id",
1212 "version": 1
1213 },
1214 {
1215 "name": "request",
1216 "required": true,
1217 "type": "@keet/device-request-with-invitation",
1218 "version": 1
1219 },
1220 {
1221 "name": "signature",
1222 "required": true,
1223 "type": "buffer",
1224 "version": 1
1225 }
1226 ]
1227 },
1228 {
1229 "name": "device-request-with-member-proof",
1230 "namespace": "keet",
1231 "compact": false,
1232 "flagsPosition": 1,
1233 "fields": [
1234 {
1235 "name": "device",
1236 "required": true,
1237 "type": "@keet/device-update",
1238 "version": 1
1239 },
1240 {
1241 "name": "member",
1242 "type": "@keet/member-update",
1243 "version": 1
1244 }
1245 ]
1246 },
1247 {
1248 "name": "device-request",
1249 "namespace": "keet",
1250 "compact": false,
1251 "flagsPosition": 0,
1252 "fields": [
1253 {
1254 "name": "withInvitation",
1255 "type": "@keet/device-request-with-invitation-and-proof",
1256 "version": 1
1257 },
1258 {
1259 "name": "withMemberProof",
1260 "type": "@keet/device-request-with-member-proof",
1261 "version": 1
1262 }
1263 ]
1264 },
1265 {
1266 "name": "device-response",
1267 "namespace": "keet",
1268 "compact": false,
1269 "flagsPosition": 1,
1270 "fields": [
1271 {
1272 "name": "signedKeys",
1273 "required": true,
1274 "type": "@keet/signed-pairing-data",
1275 "version": 1
1276 },
1277 {
1278 "name": "identity",
1279 "type": "@keet/device-response-identity",
1280 "version": 1
1281 }
1282 ]
1283 },
1284 {
1285 "name": "invitation-metadata",
1286 "namespace": "keet",
1287 "compact": false,
1288 "flagsPosition": 0,
1289 "fields": [
1290 {
1291 "name": "expiration",
1292 "type": "uint",
1293 "version": 1
1294 },
1295 {
1296 "name": "requiresConfirmation",
1297 "type": "bool",
1298 "version": 1
1299 },
1300 {
1301 "name": "canModerate",
1302 "type": "bool",
1303 "version": 1
1304 },
1305 {
1306 "name": "canAdmin",
1307 "type": "bool",
1308 "version": 1
1309 },
1310 {
1311 "name": "buildType",
1312 "type": "@keet/build-type",
1313 "version": 29
1314 }
1315 ]
1316 },
1317 {
1318 "name": "invitation",
1319 "namespace": "keet",
1320 "compact": false,
1321 "flagsPosition": 3,
1322 "fields": [
1323 {
1324 "name": "id",
1325 "required": true,
1326 "type": "@keet/invitation-id",
1327 "version": 1
1328 },
1329 {
1330 "name": "response",
1331 "required": true,
1332 "type": "@keet/signed-pairing-data",
1333 "version": 1
1334 },
1335 {
1336 "name": "metadata",
1337 "required": true,
1338 "type": "@keet/invitation-metadata",
1339 "version": 1
1340 },
1341 {
1342 "name": "anchor",
1343 "type": "@keet/head",
1344 "version": 1
1345 },
1346 {
1347 "name": "isActive",
1348 "type": "bool",
1349 "version": 1
1350 }
1351 ]
1352 },
1353 {
1354 "name": "add-invitation-operation",
1355 "namespace": "keet",
1356 "compact": false,
1357 "flagsPosition": -1,
1358 "fields": [
1359 {
1360 "name": "header",
1361 "required": true,
1362 "type": "@keet/operation-header",
1363 "version": 1
1364 },
1365 {
1366 "name": "invitation",
1367 "required": true,
1368 "type": "@keet/invitation",
1369 "version": 1
1370 }
1371 ]
1372 },
1373 {
1374 "name": "remove-invitation-operation",
1375 "namespace": "keet",
1376 "compact": false,
1377 "flagsPosition": -1,
1378 "fields": [
1379 {
1380 "name": "header",
1381 "required": true,
1382 "type": "@keet/operation-header",
1383 "version": 1
1384 },
1385 {
1386 "name": "id",
1387 "required": true,
1388 "type": "fixed32",
1389 "version": 1
1390 }
1391 ]
1392 },
1393 {
1394 "name": "sendable-room-invitation",
1395 "namespace": "keet",
1396 "compact": false,
1397 "flagsPosition": -1,
1398 "fields": [
1399 {
1400 "name": "mailbox",
1401 "required": true,
1402 "type": "fixed32",
1403 "version": 1
1404 },
1405 {
1406 "name": "invitationSeed",
1407 "required": true,
1408 "type": "fixed32",
1409 "version": 1
1410 },
1411 {
1412 "name": "anchor",
1413 "required": true,
1414 "type": "@keet/head",
1415 "version": 1
1416 }
1417 ]
1418 },
1419 {
1420 "name": "sendable-identity-invitation",
1421 "namespace": "keet",
1422 "compact": false,
1423 "flagsPosition": -1,
1424 "fields": [
1425 {
1426 "name": "mailbox",
1427 "required": true,
1428 "type": "fixed32",
1429 "version": 1
1430 },
1431 {
1432 "name": "invitationSeed",
1433 "required": true,
1434 "type": "fixed32",
1435 "version": 1
1436 },
1437 {
1438 "name": "anchor",
1439 "required": true,
1440 "type": "@keet/head",
1441 "version": 1
1442 },
1443 {
1444 "name": "identityPublicKey",
1445 "required": true,
1446 "type": "@keet/member-key",
1447 "version": 1
1448 }
1449 ]
1450 },
1451 {
1452 "name": "sendable-contact-invitation",
1453 "namespace": "keet",
1454 "compact": false,
1455 "flagsPosition": -1,
1456 "fields": [
1457 {
1458 "name": "mailbox",
1459 "required": true,
1460 "type": "fixed32",
1461 "version": 1
1462 }
1463 ]
1464 },
1465 {
1466 "name": "sendable-invitation",
1467 "namespace": "keet",
1468 "compact": false,
1469 "flagsPosition": 0,
1470 "fields": [
1471 {
1472 "name": "room",
1473 "type": "@keet/sendable-room-invitation",
1474 "version": 1
1475 },
1476 {
1477 "name": "identity",
1478 "type": "@keet/sendable-identity-invitation",
1479 "version": 1
1480 },
1481 {
1482 "name": "contact",
1483 "type": "@keet/sendable-contact-invitation",
1484 "version": 1
1485 },
1486 {
1487 "name": "readonly",
1488 "type": "@keet/readonly-room-invitation",
1489 "version": 9
1490 },
1491 {
1492 "name": "additionalNodes",
1493 "array": true,
1494 "type": "ipv4Address",
1495 "version": 17
1496 },
1497 {
1498 "name": "buildType",
1499 "type": "@keet/build-type",
1500 "version": 29
1501 }
1502 ]
1503 },
1504 {
1505 "name": "add-device-operation",
1506 "namespace": "keet",
1507 "compact": false,
1508 "flagsPosition": -1,
1509 "fields": [
1510 {
1511 "name": "header",
1512 "required": true,
1513 "type": "@keet/operation-header",
1514 "version": 1
1515 },
1516 {
1517 "name": "blindRequest",
1518 "required": true,
1519 "type": "buffer",
1520 "version": 1
1521 }
1522 ]
1523 },
1524 {
1525 "name": "update-device-operation",
1526 "namespace": "keet",
1527 "compact": false,
1528 "flagsPosition": 1,
1529 "fields": [
1530 {
1531 "name": "header",
1532 "required": true,
1533 "type": "@keet/operation-header",
1534 "version": 1
1535 },
1536 {
1537 "name": "profile",
1538 "type": "@keet/device-profile",
1539 "version": 1
1540 }
1541 ]
1542 },
1543 {
1544 "name": "start-indexing-operation",
1545 "namespace": "keet",
1546 "compact": false,
1547 "flagsPosition": -1,
1548 "fields": []
1549 },
1550 {
1551 "name": "stop-indexing-operation",
1552 "namespace": "keet",
1553 "compact": false,
1554 "flagsPosition": -1,
1555 "fields": []
1556 },
1557 {
1558 "name": "join-request",
1559 "namespace": "keet",
1560 "compact": false,
1561 "flagsPosition": -1,
1562 "fields": [
1563 {
1564 "name": "deviceKey",
1565 "required": true,
1566 "type": "@keet/device-key",
1567 "version": 1
1568 },
1569 {
1570 "name": "id",
1571 "required": true,
1572 "type": "@keet/invitation-id",
1573 "version": 1
1574 },
1575 {
1576 "name": "request",
1577 "required": true,
1578 "type": "@keet/device-request-with-invitation",
1579 "version": 1
1580 }
1581 ]
1582 },
1583 {
1584 "name": "accept-join-request-operation",
1585 "namespace": "keet",
1586 "compact": false,
1587 "flagsPosition": 2,
1588 "fields": [
1589 {
1590 "name": "header",
1591 "required": true,
1592 "type": "@keet/operation-header",
1593 "version": 1
1594 },
1595 {
1596 "name": "deviceKey",
1597 "required": true,
1598 "type": "@keet/device-key",
1599 "version": 1
1600 },
1601 {
1602 "name": "identity",
1603 "type": "@keet/device-response-identity",
1604 "version": 1
1605 }
1606 ]
1607 },
1608 {
1609 "name": "reject-join-request-operation",
1610 "namespace": "keet",
1611 "compact": false,
1612 "flagsPosition": -1,
1613 "fields": [
1614 {
1615 "name": "header",
1616 "required": true,
1617 "type": "@keet/operation-header",
1618 "version": 1
1619 },
1620 {
1621 "name": "deviceKey",
1622 "required": true,
1623 "type": "@keet/device-key",
1624 "version": 1
1625 }
1626 ]
1627 },
1628 {
1629 "name": "member",
1630 "namespace": "keet",
1631 "compact": false,
1632 "flagsPosition": -1,
1633 "fields": [
1634 {
1635 "name": "key",
1636 "required": true,
1637 "type": "@keet/member-key",
1638 "version": 1
1639 },
1640 {
1641 "name": "status",
1642 "required": true,
1643 "type": "@keet/member-status",
1644 "version": 1
1645 },
1646 {
1647 "name": "profile",
1648 "required": true,
1649 "type": "@keet/member-profile",
1650 "version": 1
1651 }
1652 ]
1653 },
1654 {
1655 "name": "full-member",
1656 "namespace": "keet",
1657 "compact": false,
1658 "flagsPosition": 3,
1659 "fields": [
1660 {
1661 "name": "key",
1662 "required": true,
1663 "type": "@keet/member-key",
1664 "version": 1
1665 },
1666 {
1667 "name": "status",
1668 "required": true,
1669 "type": "@keet/member-status",
1670 "version": 1
1671 },
1672 {
1673 "name": "profile",
1674 "required": true,
1675 "type": "@keet/member-profile",
1676 "version": 1
1677 },
1678 {
1679 "name": "proofs",
1680 "type": "@keet/member-proofs",
1681 "version": 1
1682 }
1683 ]
1684 },
1685 {
1686 "name": "member-proofs",
1687 "namespace": "keet",
1688 "compact": false,
1689 "flagsPosition": 1,
1690 "fields": [
1691 {
1692 "name": "key",
1693 "required": true,
1694 "type": "@keet/member-key",
1695 "version": 1
1696 },
1697 {
1698 "name": "profileAttestation",
1699 "type": "buffer",
1700 "version": 1
1701 },
1702 {
1703 "name": "latestReceipt",
1704 "type": "buffer",
1705 "version": 1
1706 }
1707 ]
1708 },
1709 {
1710 "name": "update-member-operation",
1711 "namespace": "keet",
1712 "compact": false,
1713 "flagsPosition": -1,
1714 "fields": [
1715 {
1716 "name": "header",
1717 "required": true,
1718 "type": "@keet/operation-header",
1719 "version": 1
1720 },
1721 {
1722 "name": "member",
1723 "required": true,
1724 "type": "@keet/member-update",
1725 "version": 1
1726 }
1727 ]
1728 },
1729 {
1730 "name": "change-member-status-operation",
1731 "namespace": "keet",
1732 "compact": false,
1733 "flagsPosition": -1,
1734 "fields": [
1735 {
1736 "name": "header",
1737 "required": true,
1738 "type": "@keet/operation-header",
1739 "version": 1
1740 },
1741 {
1742 "name": "memberKey",
1743 "required": true,
1744 "type": "@keet/member-key",
1745 "version": 1
1746 },
1747 {
1748 "name": "key",
1749 "required": true,
1750 "type": "uint",
1751 "version": 1
1752 },
1753 {
1754 "name": "status",
1755 "required": true,
1756 "type": "@keet/member-moderation-status",
1757 "version": 1
1758 }
1759 ]
1760 },
1761 {
1762 "name": "change-member-role-operation",
1763 "namespace": "keet",
1764 "compact": false,
1765 "flagsPosition": 2,
1766 "fields": [
1767 {
1768 "name": "header",
1769 "required": true,
1770 "type": "@keet/operation-header",
1771 "version": 1
1772 },
1773 {
1774 "name": "key",
1775 "required": true,
1776 "type": "@keet/member-key",
1777 "version": 1
1778 },
1779 {
1780 "name": "isModerator",
1781 "type": "bool",
1782 "version": 1
1783 },
1784 {
1785 "name": "isAdmin",
1786 "type": "bool",
1787 "version": 1
1788 }
1789 ]
1790 },
1791 {
1792 "name": "remove-member-operation",
1793 "namespace": "keet",
1794 "compact": false,
1795 "flagsPosition": -1,
1796 "fields": [
1797 {
1798 "name": "header",
1799 "required": true,
1800 "type": "@keet/operation-header",
1801 "version": 1
1802 },
1803 {
1804 "name": "key",
1805 "required": true,
1806 "type": "@keet/member-key",
1807 "version": 1
1808 }
1809 ]
1810 },
1811 {
1812 "name": "member-activity",
1813 "namespace": "keet",
1814 "compact": false,
1815 "flagsPosition": -1,
1816 "fields": [
1817 {
1818 "name": "key",
1819 "required": true,
1820 "type": "@keet/member-key",
1821 "version": 1
1822 },
1823 {
1824 "name": "mentions",
1825 "required": true,
1826 "type": "uint",
1827 "version": 1
1828 }
1829 ]
1830 },
1831 {
1832 "name": "member-joined-event",
1833 "namespace": "keet",
1834 "compact": false,
1835 "flagsPosition": 0,
1836 "fields": [
1837 {
1838 "name": "memberKey",
1839 "type": "@keet/member-key",
1840 "version": 1
1841 }
1842 ]
1843 },
1844 {
1845 "name": "member-left-event",
1846 "namespace": "keet",
1847 "compact": false,
1848 "flagsPosition": 0,
1849 "fields": [
1850 {
1851 "name": "memberKey",
1852 "type": "@keet/member-key",
1853 "version": 1
1854 }
1855 ]
1856 },
1857 {
1858 "name": "title-changed-chat-event",
1859 "namespace": "keet",
1860 "compact": false,
1861 "flagsPosition": 0,
1862 "fields": [
1863 {
1864 "name": "from",
1865 "type": "string",
1866 "version": 1
1867 },
1868 {
1869 "name": "to",
1870 "type": "string",
1871 "version": 1
1872 }
1873 ]
1874 },
1875 {
1876 "name": "chat-event",
1877 "namespace": "keet",
1878 "compact": false,
1879 "flagsPosition": 0,
1880 "fields": [
1881 {
1882 "name": "memberJoined",
1883 "type": "@keet/member-joined-event",
1884 "version": 1
1885 },
1886 {
1887 "name": "memberLeft",
1888 "type": "@keet/member-left-event",
1889 "version": 1
1890 },
1891 {
1892 "name": "titleChanged",
1893 "type": "@keet/title-changed-chat-event",
1894 "version": 1
1895 },
1896 {
1897 "name": "callStarted",
1898 "type": "bool",
1899 "version": 1
1900 },
1901 {
1902 "name": "callHangup",
1903 "type": "bool",
1904 "version": 1
1905 },
1906 {
1907 "name": "callMissed",
1908 "type": "bool",
1909 "version": 1
1910 },
1911 {
1912 "name": "roomAvatarChanged",
1913 "type": "bool",
1914 "version": 4
1915 },
1916 {
1917 "name": "invitationCreated",
1918 "type": "bool",
1919 "version": 4
1920 },
1921 {
1922 "name": "memberRemoved",
1923 "type": "@keet/member-removed-event",
1924 "version": 4
1925 },
1926 {
1927 "name": "locationShared",
1928 "type": "@keet/location-shared-event",
1929 "version": 27
1930 }
1931 ]
1932 },
1933 {
1934 "name": "sendable-event",
1935 "namespace": "keet",
1936 "compact": false,
1937 "flagsPosition": 0,
1938 "fields": [
1939 {
1940 "name": "callStarted",
1941 "type": "bool",
1942 "version": 1
1943 },
1944 {
1945 "name": "callHangup",
1946 "type": "bool",
1947 "version": 1
1948 },
1949 {
1950 "name": "callMissed",
1951 "type": "bool",
1952 "version": 1
1953 },
1954 {
1955 "name": "locationShared",
1956 "type": "@keet/location-shared-event",
1957 "version": 27
1958 }
1959 ]
1960 },
1961 {
1962 "name": "display-range",
1963 "namespace": "keet",
1964 "compact": false,
1965 "flagsPosition": -1,
1966 "fields": [
1967 {
1968 "name": "start",
1969 "required": true,
1970 "type": "uint",
1971 "version": 1
1972 },
1973 {
1974 "name": "length",
1975 "required": true,
1976 "type": "uint",
1977 "version": 1
1978 }
1979 ]
1980 },
1981 {
1982 "name": "display-content-range",
1983 "namespace": "keet",
1984 "compact": false,
1985 "flagsPosition": -1,
1986 "fields": [
1987 {
1988 "name": "range",
1989 "required": true,
1990 "type": "@keet/display-range",
1991 "version": 1
1992 },
1993 {
1994 "name": "content",
1995 "required": true,
1996 "type": "string",
1997 "version": 1
1998 }
1999 ]
2000 },
2001 {
2002 "name": "mention-display-item",
2003 "namespace": "keet",
2004 "compact": false,
2005 "flagsPosition": -1,
2006 "fields": [
2007 {
2008 "name": "range",
2009 "required": true,
2010 "type": "@keet/display-range",
2011 "version": 1
2012 },
2013 {
2014 "name": "memberKey",
2015 "required": true,
2016 "type": "@keet/member-key",
2017 "version": 1
2018 }
2019 ]
2020 },
2021 {
2022 "name": "link-preview",
2023 "namespace": "keet",
2024 "compact": false,
2025 "flagsPosition": 0,
2026 "fields": [
2027 {
2028 "name": "title",
2029 "type": "string",
2030 "version": 1
2031 },
2032 {
2033 "name": "description",
2034 "type": "string",
2035 "version": 1
2036 },
2037 {
2038 "name": "file",
2039 "type": "@keet/file",
2040 "version": 1
2041 },
2042 {
2043 "name": "files",
2044 "array": true,
2045 "type": "uint",
2046 "version": 12
2047 }
2048 ]
2049 },
2050 {
2051 "name": "display-link-item",
2052 "namespace": "keet",
2053 "compact": false,
2054 "flagsPosition": 2,
2055 "fields": [
2056 {
2057 "name": "range",
2058 "required": true,
2059 "type": "@keet/display-range",
2060 "version": 1
2061 },
2062 {
2063 "name": "url",
2064 "required": true,
2065 "type": "string",
2066 "version": 1
2067 },
2068 {
2069 "name": "preview",
2070 "type": "@keet/link-preview",
2071 "version": 1
2072 }
2073 ]
2074 },
2075 {
2076 "name": "display",
2077 "namespace": "keet",
2078 "compact": false,
2079 "flagsPosition": 0,
2080 "fields": [
2081 {
2082 "name": "mention",
2083 "array": true,
2084 "type": "@keet/mention-display-item",
2085 "version": 1
2086 },
2087 {
2088 "name": "httpLink",
2089 "array": true,
2090 "type": "@keet/display-link-item",
2091 "version": 1
2092 },
2093 {
2094 "name": "pearLink",
2095 "array": true,
2096 "type": "@keet/display-link-item",
2097 "version": 1
2098 },
2099 {
2100 "name": "bold",
2101 "array": true,
2102 "type": "@keet/display-range",
2103 "version": 1
2104 },
2105 {
2106 "name": "italic",
2107 "array": true,
2108 "type": "@keet/display-range",
2109 "version": 1
2110 },
2111 {
2112 "name": "code",
2113 "array": true,
2114 "type": "@keet/display-range",
2115 "version": 1
2116 },
2117 {
2118 "name": "emoji",
2119 "array": true,
2120 "type": "@keet/display-content-range",
2121 "version": 1
2122 },
2123 {
2124 "name": "codeBlock",
2125 "array": true,
2126 "type": "@keet/display-range",
2127 "version": 1
2128 },
2129 {
2130 "name": "strike",
2131 "array": true,
2132 "type": "@keet/display-range",
2133 "version": 1
2134 },
2135 {
2136 "name": "translation",
2137 "array": true,
2138 "type": "@keet/translation-display-item",
2139 "version": 17
2140 }
2141 ]
2142 },
2143 {
2144 "name": "oplog-message",
2145 "namespace": "keet",
2146 "compact": false,
2147 "flagsPosition": 0,
2148 "fields": [
2149 {
2150 "name": "text",
2151 "type": "string",
2152 "version": 1
2153 },
2154 {
2155 "name": "files",
2156 "array": true,
2157 "type": "@keet/file",
2158 "version": 1
2159 },
2160 {
2161 "name": "display",
2162 "type": "@keet/display",
2163 "version": 1
2164 },
2165 {
2166 "name": "replyTo",
2167 "type": "@keet/oplog-id",
2168 "version": 1
2169 },
2170 {
2171 "name": "parent",
2172 "type": "@keet/oplog-id",
2173 "version": 1
2174 },
2175 {
2176 "name": "event",
2177 "type": "@keet/sendable-event",
2178 "version": 1
2179 },
2180 {
2181 "name": "forwarded",
2182 "type": "bool",
2183 "version": 27
2184 }
2185 ]
2186 },
2187 {
2188 "name": "index-message",
2189 "namespace": "keet",
2190 "compact": false,
2191 "flagsPosition": 0,
2192 "fields": [
2193 {
2194 "name": "text",
2195 "type": "string",
2196 "version": 1
2197 },
2198 {
2199 "name": "files",
2200 "array": true,
2201 "type": "uint",
2202 "version": 1
2203 },
2204 {
2205 "name": "display",
2206 "type": "@keet/display",
2207 "version": 1
2208 },
2209 {
2210 "name": "replyTo",
2211 "type": "@keet/oplog-id",
2212 "version": 1
2213 },
2214 {
2215 "name": "parent",
2216 "type": "@keet/oplog-id",
2217 "version": 1
2218 },
2219 {
2220 "name": "forwarded",
2221 "type": "bool",
2222 "version": 27
2223 }
2224 ]
2225 },
2226 {
2227 "name": "full-index-message",
2228 "namespace": "keet",
2229 "compact": false,
2230 "flagsPosition": 0,
2231 "fields": [
2232 {
2233 "name": "text",
2234 "type": "string",
2235 "version": 1
2236 },
2237 {
2238 "name": "files",
2239 "array": true,
2240 "type": "@keet/file",
2241 "version": 1
2242 },
2243 {
2244 "name": "display",
2245 "type": "@keet/display",
2246 "version": 1
2247 },
2248 {
2249 "name": "replyTo",
2250 "type": "@keet/oplog-id",
2251 "version": 1
2252 },
2253 {
2254 "name": "parent",
2255 "type": "@keet/oplog-id",
2256 "version": 1
2257 },
2258 {
2259 "name": "forwarded",
2260 "type": "bool",
2261 "version": 27
2262 }
2263 ]
2264 },
2265 {
2266 "name": "message-status",
2267 "namespace": "keet",
2268 "compact": false,
2269 "flagsPosition": 0,
2270 "fields": [
2271 {
2272 "name": "isEdited",
2273 "type": "bool",
2274 "version": 1
2275 },
2276 {
2277 "name": "isDeleted",
2278 "type": "bool",
2279 "version": 1
2280 },
2281 {
2282 "name": "isPinned",
2283 "type": "bool",
2284 "version": 1
2285 }
2286 ]
2287 },
2288 {
2289 "name": "message-index-id",
2290 "namespace": "keet",
2291 "compact": true,
2292 "flagsPosition": -1,
2293 "fields": [
2294 {
2295 "name": "thread",
2296 "required": true,
2297 "type": "uint",
2298 "version": 1
2299 },
2300 {
2301 "name": "index",
2302 "required": true,
2303 "type": "uint",
2304 "version": 1
2305 }
2306 ]
2307 },
2308 {
2309 "name": "thread",
2310 "namespace": "keet",
2311 "compact": false,
2312 "flagsPosition": 2,
2313 "fields": [
2314 {
2315 "name": "id",
2316 "required": true,
2317 "type": "uint",
2318 "version": 1
2319 },
2320 {
2321 "name": "count",
2322 "required": true,
2323 "type": "uint",
2324 "version": 1
2325 },
2326 {
2327 "name": "parent",
2328 "type": "@keet/oplog-id",
2329 "version": 1
2330 },
2331 {
2332 "name": "stats",
2333 "type": "@keet/stats",
2334 "version": 1
2335 }
2336 ]
2337 },
2338 {
2339 "name": "chat-message-record",
2340 "namespace": "keet",
2341 "compact": false,
2342 "flagsPosition": 4,
2343 "fields": [
2344 {
2345 "name": "id",
2346 "required": true,
2347 "type": "@keet/message-index-id",
2348 "version": 1
2349 },
2350 {
2351 "name": "oplog",
2352 "required": true,
2353 "type": "@keet/oplog-id",
2354 "version": 1
2355 },
2356 {
2357 "name": "clock",
2358 "required": true,
2359 "type": "uint",
2360 "version": 1
2361 },
2362 {
2363 "name": "timestamp",
2364 "required": true,
2365 "type": "uint",
2366 "version": 1
2367 },
2368 {
2369 "name": "editedAt",
2370 "type": "uint",
2371 "version": 1
2372 },
2373 {
2374 "name": "status",
2375 "required": true,
2376 "type": "@keet/message-status",
2377 "version": 1
2378 },
2379 {
2380 "name": "message",
2381 "type": "@keet/index-message",
2382 "version": 1
2383 },
2384 {
2385 "name": "event",
2386 "type": "@keet/chat-event",
2387 "version": 1
2388 }
2389 ]
2390 },
2391 {
2392 "name": "full-chat-message-record",
2393 "namespace": "keet",
2394 "compact": false,
2395 "flagsPosition": 4,
2396 "fields": [
2397 {
2398 "name": "id",
2399 "required": true,
2400 "type": "@keet/message-index-id",
2401 "version": 1
2402 },
2403 {
2404 "name": "oplog",
2405 "required": true,
2406 "type": "@keet/oplog-id",
2407 "version": 1
2408 },
2409 {
2410 "name": "clock",
2411 "required": true,
2412 "type": "uint",
2413 "version": 1
2414 },
2415 {
2416 "name": "timestamp",
2417 "required": true,
2418 "type": "uint",
2419 "version": 1
2420 },
2421 {
2422 "name": "editedAt",
2423 "type": "uint",
2424 "version": 1
2425 },
2426 {
2427 "name": "status",
2428 "required": true,
2429 "type": "@keet/message-status",
2430 "version": 1
2431 },
2432 {
2433 "name": "message",
2434 "type": "@keet/full-index-message",
2435 "version": 1
2436 },
2437 {
2438 "name": "event",
2439 "type": "@keet/chat-event",
2440 "version": 1
2441 }
2442 ]
2443 },
2444 {
2445 "name": "add-chat-message-operation",
2446 "namespace": "keet",
2447 "compact": false,
2448 "flagsPosition": -1,
2449 "fields": [
2450 {
2451 "name": "header",
2452 "required": true,
2453 "type": "@keet/operation-header",
2454 "version": 1
2455 },
2456 {
2457 "name": "message",
2458 "required": true,
2459 "type": "@keet/oplog-message",
2460 "version": 1
2461 }
2462 ]
2463 },
2464 {
2465 "name": "remove-chat-message-operation",
2466 "namespace": "keet",
2467 "compact": false,
2468 "flagsPosition": -1,
2469 "fields": [
2470 {
2471 "name": "header",
2472 "required": true,
2473 "type": "@keet/operation-header",
2474 "version": 1
2475 },
2476 {
2477 "name": "oplog",
2478 "required": true,
2479 "type": "@keet/oplog-id",
2480 "version": 1
2481 }
2482 ]
2483 },
2484 {
2485 "name": "update-chat-message-operation",
2486 "namespace": "keet",
2487 "compact": false,
2488 "flagsPosition": -1,
2489 "fields": [
2490 {
2491 "name": "header",
2492 "required": true,
2493 "type": "@keet/operation-header",
2494 "version": 1
2495 },
2496 {
2497 "name": "oplog",
2498 "required": true,
2499 "type": "@keet/oplog-id",
2500 "version": 1
2501 },
2502 {
2503 "name": "message",
2504 "required": true,
2505 "type": "@keet/oplog-message",
2506 "version": 1
2507 }
2508 ]
2509 },
2510 {
2511 "name": "pin-chat-message-operation",
2512 "namespace": "keet",
2513 "compact": false,
2514 "flagsPosition": 2,
2515 "fields": [
2516 {
2517 "name": "header",
2518 "required": true,
2519 "type": "@keet/operation-header",
2520 "version": 1
2521 },
2522 {
2523 "name": "oplog",
2524 "required": true,
2525 "type": "@keet/oplog-id",
2526 "version": 1
2527 },
2528 {
2529 "name": "isPinned",
2530 "type": "bool",
2531 "version": 1
2532 }
2533 ]
2534 },
2535 {
2536 "name": "reaction",
2537 "namespace": "keet",
2538 "compact": false,
2539 "flagsPosition": -1,
2540 "fields": [
2541 {
2542 "name": "id",
2543 "required": true,
2544 "type": "@keet/message-index-id",
2545 "version": 1
2546 },
2547 {
2548 "name": "sender",
2549 "required": true,
2550 "type": "@keet/member-key",
2551 "version": 1
2552 },
2553 {
2554 "name": "clock",
2555 "required": true,
2556 "type": "uint",
2557 "version": 1
2558 },
2559 {
2560 "name": "reaction",
2561 "required": true,
2562 "type": "string",
2563 "version": 1
2564 }
2565 ]
2566 },
2567 {
2568 "name": "reactions-summary",
2569 "namespace": "keet",
2570 "compact": false,
2571 "flagsPosition": -1,
2572 "fields": [
2573 {
2574 "name": "text",
2575 "required": true,
2576 "type": "string",
2577 "version": 1
2578 },
2579 {
2580 "name": "count",
2581 "required": true,
2582 "type": "uint",
2583 "version": 1
2584 }
2585 ]
2586 },
2587 {
2588 "name": "reactions-digest",
2589 "namespace": "keet",
2590 "compact": false,
2591 "flagsPosition": 3,
2592 "fields": [
2593 {
2594 "name": "id",
2595 "required": true,
2596 "type": "@keet/message-index-id",
2597 "version": 1
2598 },
2599 {
2600 "name": "total",
2601 "required": true,
2602 "type": "uint",
2603 "version": 1
2604 },
2605 {
2606 "name": "reactions",
2607 "required": true,
2608 "array": true,
2609 "type": "@keet/reactions-summary",
2610 "version": 1
2611 },
2612 {
2613 "name": "editedAt",
2614 "type": "uint",
2615 "version": 17
2616 }
2617 ]
2618 },
2619 {
2620 "name": "add-reaction-operation",
2621 "namespace": "keet",
2622 "compact": false,
2623 "flagsPosition": -1,
2624 "fields": [
2625 {
2626 "name": "header",
2627 "required": true,
2628 "type": "@keet/operation-header",
2629 "version": 1
2630 },
2631 {
2632 "name": "oplog",
2633 "required": true,
2634 "type": "@keet/oplog-id",
2635 "version": 1
2636 },
2637 {
2638 "name": "reaction",
2639 "required": true,
2640 "type": "string",
2641 "version": 1
2642 }
2643 ]
2644 },
2645 {
2646 "name": "remove-reaction-operation",
2647 "namespace": "keet",
2648 "compact": false,
2649 "flagsPosition": -1,
2650 "fields": [
2651 {
2652 "name": "header",
2653 "required": true,
2654 "type": "@keet/operation-header",
2655 "version": 1
2656 },
2657 {
2658 "name": "oplog",
2659 "required": true,
2660 "type": "@keet/oplog-id",
2661 "version": 1
2662 },
2663 {
2664 "name": "reaction",
2665 "required": true,
2666 "type": "string",
2667 "version": 1
2668 }
2669 ]
2670 },
2671 {
2672 "name": "update-room-config-operation",
2673 "namespace": "keet",
2674 "compact": false,
2675 "flagsPosition": -1,
2676 "fields": [
2677 {
2678 "name": "header",
2679 "required": true,
2680 "type": "@keet/operation-header",
2681 "version": 1
2682 },
2683 {
2684 "name": "key",
2685 "required": true,
2686 "type": "uint",
2687 "version": 1
2688 },
2689 {
2690 "name": "config",
2691 "required": true,
2692 "type": "@keet/room-config",
2693 "version": 1
2694 }
2695 ]
2696 },
2697 {
2698 "name": "group-member",
2699 "namespace": "keet",
2700 "compact": false,
2701 "flagsPosition": 2,
2702 "fields": [
2703 {
2704 "name": "memberKey",
2705 "required": true,
2706 "type": "@keet/member-key",
2707 "version": 1
2708 },
2709 {
2710 "name": "displayName",
2711 "required": true,
2712 "type": "string",
2713 "version": 1
2714 },
2715 {
2716 "name": "avatar",
2717 "type": "@keet/image-file",
2718 "version": 1
2719 }
2720 ]
2721 },
2722 {
2723 "name": "user-registry-info",
2724 "namespace": "keet",
2725 "compact": false,
2726 "flagsPosition": 1,
2727 "fields": [
2728 {
2729 "name": "key",
2730 "required": true,
2731 "type": "@keet/core-key",
2732 "version": 1
2733 },
2734 {
2735 "name": "username",
2736 "type": "string",
2737 "version": 1
2738 }
2739 ]
2740 },
2741 {
2742 "name": "room-identity",
2743 "namespace": "keet",
2744 "compact": false,
2745 "flagsPosition": 1,
2746 "fields": [
2747 {
2748 "name": "publicKey",
2749 "required": true,
2750 "type": "@keet/member-key",
2751 "version": 1
2752 },
2753 {
2754 "name": "discoveryCoreKey",
2755 "type": "@keet/core-key",
2756 "version": 1
2757 },
2758 {
2759 "name": "userRegistry",
2760 "type": "@keet/user-registry-info",
2761 "version": 1
2762 }
2763 ]
2764 },
2765 {
2766 "name": "genesis-operation",
2767 "namespace": "keet",
2768 "compact": false,
2769 "flagsPosition": 3,
2770 "fields": [
2771 {
2772 "name": "header",
2773 "required": true,
2774 "type": "@keet/operation-header",
2775 "version": 1
2776 },
2777 {
2778 "name": "digest",
2779 "required": true,
2780 "type": "@keet/system-digest",
2781 "version": 1
2782 },
2783 {
2784 "name": "capabilities",
2785 "required": true,
2786 "type": "@keet/room-seed",
2787 "version": 1
2788 },
2789 {
2790 "name": "config",
2791 "type": "@keet/room-config",
2792 "version": 1
2793 },
2794 {
2795 "name": "identity",
2796 "type": "@keet/room-identity",
2797 "version": 1
2798 },
2799 {
2800 "name": "bootstrapDevice",
2801 "type": "@keet/device-update",
2802 "version": 1
2803 },
2804 {
2805 "name": "initialMembers",
2806 "array": true,
2807 "type": "@keet/member-update",
2808 "version": 1
2809 }
2810 ]
2811 },
2812 {
2813 "name": "upgrade-operation",
2814 "namespace": "keet",
2815 "compact": false,
2816 "flagsPosition": -1,
2817 "fields": [
2818 {
2819 "name": "header",
2820 "required": true,
2821 "type": "@keet/operation-header",
2822 "version": 1
2823 },
2824 {
2825 "name": "version",
2826 "required": true,
2827 "type": "uint",
2828 "version": 1
2829 }
2830 ]
2831 },
2832 {
2833 "name": "update-system-settings-operation",
2834 "namespace": "keet",
2835 "compact": false,
2836 "flagsPosition": -1,
2837 "fields": [
2838 {
2839 "name": "header",
2840 "required": true,
2841 "type": "@keet/operation-header",
2842 "version": 1
2843 },
2844 {
2845 "name": "key",
2846 "required": true,
2847 "type": "uint",
2848 "version": 1
2849 },
2850 {
2851 "name": "settings",
2852 "required": true,
2853 "type": "@keet/system-settings",
2854 "version": 1
2855 }
2856 ]
2857 },
2858 {
2859 "name": "contact",
2860 "namespace": "keet-private-id",
2861 "compact": false,
2862 "flagsPosition": 2,
2863 "fields": [
2864 {
2865 "name": "memberKey",
2866 "required": true,
2867 "type": "@keet/member-key",
2868 "version": 1
2869 },
2870 {
2871 "name": "status",
2872 "required": true,
2873 "type": "@keet-private-id/contact-status",
2874 "version": 1
2875 },
2876 {
2877 "name": "mailbox",
2878 "type": "@keet/public-key",
2879 "version": 1
2880 },
2881 {
2882 "name": "roomKey",
2883 "type": "@keet/room-key",
2884 "version": 1
2885 }
2886 ]
2887 },
2888 {
2889 "name": "v3-room-migration-info",
2890 "namespace": "keet-private-id",
2891 "compact": false,
2892 "flagsPosition": -1,
2893 "fields": [
2894 {
2895 "name": "roomKey",
2896 "required": true,
2897 "type": "@keet/room-key",
2898 "version": 1
2899 },
2900 {
2901 "name": "encryptionKey",
2902 "required": true,
2903 "type": "@keet/encryption-key",
2904 "version": 1
2905 },
2906 {
2907 "name": "seed",
2908 "required": true,
2909 "type": "fixed32",
2910 "version": 1
2911 },
2912 {
2913 "name": "initiator",
2914 "required": true,
2915 "type": "@keet/head",
2916 "version": 1
2917 },
2918 {
2919 "name": "fastForwardTo",
2920 "required": true,
2921 "type": "fixed32",
2922 "version": 1
2923 }
2924 ]
2925 },
2926 {
2927 "name": "run-v3-migration-operation",
2928 "namespace": "keet-private-id",
2929 "compact": false,
2930 "flagsPosition": -1,
2931 "fields": [
2932 {
2933 "name": "sharedRooms",
2934 "required": true,
2935 "array": true,
2936 "type": "@keet-private-id/v3-room-migration-info",
2937 "version": 1
2938 },
2939 {
2940 "name": "blockedContacts",
2941 "required": true,
2942 "array": true,
2943 "type": "@keet/member-key",
2944 "version": 1
2945 }
2946 ]
2947 },
2948 {
2949 "name": "update-identity-operation",
2950 "namespace": "keet-private-id",
2951 "compact": false,
2952 "flagsPosition": -1,
2953 "fields": [
2954 {
2955 "name": "identity",
2956 "required": true,
2957 "type": "@keet/room-identity",
2958 "version": 1
2959 }
2960 ]
2961 },
2962 {
2963 "name": "counters",
2964 "namespace": "keet-private-id",
2965 "compact": false,
2966 "flagsPosition": -1,
2967 "fields": [
2968 {
2969 "name": "rooms",
2970 "required": true,
2971 "type": "uint",
2972 "version": 1
2973 },
2974 {
2975 "name": "contacts",
2976 "required": true,
2977 "type": "uint",
2978 "version": 1
2979 }
2980 ]
2981 },
2982 {
2983 "name": "stats",
2984 "namespace": "keet-private-id",
2985 "compact": false,
2986 "flagsPosition": -1,
2987 "fields": [
2988 {
2989 "name": "rooms",
2990 "required": true,
2991 "type": "uint",
2992 "version": 1
2993 },
2994 {
2995 "name": "contactRequests",
2996 "required": true,
2997 "type": "uint",
2998 "version": 1
2999 }
3000 ]
3001 },
3002 {
3003 "name": "add-entropy-operation",
3004 "namespace": "keet-private-id",
3005 "compact": false,
3006 "flagsPosition": -1,
3007 "fields": [
3008 {
3009 "name": "entropy",
3010 "required": true,
3011 "type": "buffer",
3012 "version": 1
3013 }
3014 ]
3015 },
3016 {
3017 "name": "pending-invitation-identity",
3018 "namespace": "keet-private-id",
3019 "compact": false,
3020 "flagsPosition": -1,
3021 "fields": [
3022 {
3023 "name": "publicKey",
3024 "required": true,
3025 "type": "@keet/member-key",
3026 "version": 1
3027 },
3028 {
3029 "name": "devicePublicKey",
3030 "required": true,
3031 "type": "@keet/public-key",
3032 "version": 1
3033 },
3034 {
3035 "name": "writerKey",
3036 "required": true,
3037 "type": "@keet/device-key",
3038 "version": 1
3039 }
3040 ]
3041 },
3042 {
3043 "name": "pending-invitation",
3044 "namespace": "keet-private-id",
3045 "compact": false,
3046 "flagsPosition": 6,
3047 "fields": [
3048 {
3049 "name": "id",
3050 "required": true,
3051 "type": "fixed32",
3052 "version": 1
3053 },
3054 {
3055 "name": "invitationSeed",
3056 "required": true,
3057 "type": "fixed32",
3058 "version": 1
3059 },
3060 {
3061 "name": "mailbox",
3062 "required": true,
3063 "type": "fixed32",
3064 "version": 1
3065 },
3066 {
3067 "name": "responseKeyPair",
3068 "required": true,
3069 "type": "@keet/signing-keypair",
3070 "version": 1
3071 },
3072 {
3073 "name": "initiator",
3074 "required": true,
3075 "type": "@keet/head",
3076 "version": 1
3077 },
3078 {
3079 "name": "inviter",
3080 "required": true,
3081 "type": "@keet/head",
3082 "version": 1
3083 },
3084 {
3085 "name": "identity",
3086 "type": "@keet-private-id/pending-invitation-identity",
3087 "version": 1
3088 },
3089 {
3090 "name": "buildType",
3091 "type": "@keet/build-type",
3092 "version": 29
3093 }
3094 ]
3095 },
3096 {
3097 "name": "resolve-pending-invitation-operation",
3098 "namespace": "keet-private-id",
3099 "compact": false,
3100 "flagsPosition": -1,
3101 "fields": [
3102 {
3103 "name": "header",
3104 "required": true,
3105 "type": "@keet/operation-header",
3106 "version": 1
3107 },
3108 {
3109 "name": "blindResponse",
3110 "required": true,
3111 "type": "buffer",
3112 "version": 1
3113 }
3114 ]
3115 },
3116 {
3117 "name": "add-pending-invitation-operation",
3118 "namespace": "keet-private-id",
3119 "compact": false,
3120 "flagsPosition": -1,
3121 "fields": [
3122 {
3123 "name": "header",
3124 "required": true,
3125 "type": "@keet/operation-header",
3126 "version": 1
3127 },
3128 {
3129 "name": "invitation",
3130 "required": true,
3131 "type": "@keet-private-id/pending-invitation",
3132 "version": 1
3133 }
3134 ]
3135 },
3136 {
3137 "name": "remove-pending-invitation-operation",
3138 "namespace": "keet-private-id",
3139 "compact": false,
3140 "flagsPosition": -1,
3141 "fields": [
3142 {
3143 "name": "header",
3144 "required": true,
3145 "type": "@keet/operation-header",
3146 "version": 1
3147 },
3148 {
3149 "name": "id",
3150 "required": true,
3151 "type": "fixed32",
3152 "version": 1
3153 }
3154 ]
3155 },
3156 {
3157 "name": "identity-swap",
3158 "namespace": "keet-private-id",
3159 "compact": false,
3160 "flagsPosition": 2,
3161 "fields": [
3162 {
3163 "name": "publicKey",
3164 "required": true,
3165 "type": "@keet/member-key",
3166 "version": 1
3167 },
3168 {
3169 "name": "devicePublicKey",
3170 "required": true,
3171 "type": "@keet/public-key",
3172 "version": 1
3173 },
3174 {
3175 "name": "privateProfileKey",
3176 "type": "@keet/room-key",
3177 "version": 1
3178 },
3179 {
3180 "name": "deviceKeyPair",
3181 "type": "@keet/signing-keypair",
3182 "version": 1
3183 },
3184 {
3185 "name": "deviceProof",
3186 "required": true,
3187 "type": "buffer",
3188 "version": 1
3189 }
3190 ]
3191 },
3192 {
3193 "name": "room-status",
3194 "namespace": "keet-private-id",
3195 "compact": false,
3196 "flagsPosition": 0,
3197 "fields": [
3198 {
3199 "name": "isActive",
3200 "type": "bool",
3201 "version": 1
3202 },
3203 {
3204 "name": "isFullyMuted",
3205 "type": "bool",
3206 "version": 1
3207 },
3208 {
3209 "name": "isMentionsOnlyMuted",
3210 "type": "bool",
3211 "version": 1
3212 },
3213 {
3214 "name": "isReadOnly",
3215 "type": "bool",
3216 "version": 14
3217 },
3218 {
3219 "name": "isFavorite",
3220 "type": "bool",
3221 "version": 27
3222 }
3223 ]
3224 },
3225 {
3226 "name": "room",
3227 "namespace": "keet-private-id",
3228 "compact": false,
3229 "flagsPosition": 5,
3230 "fields": [
3231 {
3232 "name": "roomKey",
3233 "required": true,
3234 "type": "@keet/room-key",
3235 "version": 1
3236 },
3237 {
3238 "name": "encryptionKey",
3239 "required": true,
3240 "type": "@keet/encryption-key",
3241 "version": 1
3242 },
3243 {
3244 "name": "mailbox",
3245 "required": true,
3246 "type": "@keet/public-key",
3247 "version": 1
3248 },
3249 {
3250 "name": "status",
3251 "required": true,
3252 "type": "@keet-private-id/room-status",
3253 "version": 1
3254 },
3255 {
3256 "name": "clock",
3257 "required": true,
3258 "type": "uint",
3259 "version": 1
3260 },
3261 {
3262 "name": "initiator",
3263 "type": "@keet/head",
3264 "version": 1
3265 },
3266 {
3267 "name": "fastForwardTo",
3268 "type": "fixed32",
3269 "version": 1
3270 },
3271 {
3272 "name": "identitySwap",
3273 "type": "@keet-private-id/identity-swap",
3274 "version": 1
3275 },
3276 {
3277 "name": "identitySwapV2",
3278 "type": "@keet-private-id/pending-invitation-identity",
3279 "version": 9
3280 },
3281 {
3282 "name": "contact",
3283 "type": "@keet/member-key",
3284 "version": 15
3285 }
3286 ]
3287 },
3288 {
3289 "name": "add-room-operation",
3290 "namespace": "keet-private-id",
3291 "compact": false,
3292 "flagsPosition": 4,
3293 "fields": [
3294 {
3295 "name": "header",
3296 "required": true,
3297 "type": "@keet/operation-header",
3298 "version": 1
3299 },
3300 {
3301 "name": "roomKey",
3302 "required": true,
3303 "type": "@keet/room-key",
3304 "version": 1
3305 },
3306 {
3307 "name": "encryptionKey",
3308 "required": true,
3309 "type": "@keet/encryption-key",
3310 "version": 1
3311 },
3312 {
3313 "name": "mailbox",
3314 "required": true,
3315 "type": "@keet/public-key",
3316 "version": 1
3317 },
3318 {
3319 "name": "fastForwardTo",
3320 "type": "fixed32",
3321 "version": 1
3322 },
3323 {
3324 "name": "initiator",
3325 "type": "@keet/head",
3326 "version": 1
3327 },
3328 {
3329 "name": "dm",
3330 "type": "@keet/member-key",
3331 "version": 1
3332 },
3333 {
3334 "name": "isReadOnly",
3335 "type": "bool",
3336 "version": 14
3337 }
3338 ]
3339 },
3340 {
3341 "name": "remove-room-operation",
3342 "namespace": "keet-private-id",
3343 "compact": false,
3344 "flagsPosition": -1,
3345 "fields": [
3346 {
3347 "name": "header",
3348 "required": true,
3349 "type": "@keet/operation-header",
3350 "version": 1
3351 },
3352 {
3353 "name": "discoveryKey",
3354 "required": true,
3355 "type": "@keet/room-discovery-key",
3356 "version": 1
3357 }
3358 ]
3359 },
3360 {
3361 "name": "update-room-status-operation",
3362 "namespace": "keet-private-id",
3363 "compact": false,
3364 "flagsPosition": -1,
3365 "fields": [
3366 {
3367 "name": "header",
3368 "required": true,
3369 "type": "@keet/operation-header",
3370 "version": 1
3371 },
3372 {
3373 "name": "roomKey",
3374 "required": true,
3375 "type": "@keet/room-key",
3376 "version": 1
3377 },
3378 {
3379 "name": "key",
3380 "required": true,
3381 "type": "uint",
3382 "version": 1
3383 },
3384 {
3385 "name": "status",
3386 "required": true,
3387 "type": "@keet-private-id/room-status",
3388 "version": 1
3389 }
3390 ]
3391 },
3392 {
3393 "name": "contact-status",
3394 "namespace": "keet-private-id",
3395 "compact": false,
3396 "flagsPosition": 0,
3397 "fields": [
3398 {
3399 "name": "isBlocked",
3400 "type": "bool",
3401 "version": 1
3402 }
3403 ]
3404 },
3405 {
3406 "name": "contact-record",
3407 "namespace": "keet-private-id",
3408 "compact": false,
3409 "flagsPosition": 3,
3410 "fields": [
3411 {
3412 "name": "memberKey",
3413 "required": true,
3414 "type": "@keet/member-key",
3415 "version": 1
3416 },
3417 {
3418 "name": "clock",
3419 "required": true,
3420 "type": "uint",
3421 "version": 1
3422 },
3423 {
3424 "name": "status",
3425 "required": true,
3426 "type": "@keet-private-id/contact-status",
3427 "version": 1
3428 },
3429 {
3430 "name": "mailbox",
3431 "type": "@keet/public-key",
3432 "version": 1
3433 },
3434 {
3435 "name": "roomKey",
3436 "type": "@keet/room-key",
3437 "version": 1
3438 }
3439 ]
3440 },
3441 {
3442 "name": "add-contact-operation",
3443 "namespace": "keet-private-id",
3444 "compact": false,
3445 "flagsPosition": -1,
3446 "fields": [
3447 {
3448 "name": "header",
3449 "required": true,
3450 "type": "@keet/operation-header",
3451 "version": 1
3452 },
3453 {
3454 "name": "contact",
3455 "required": true,
3456 "type": "@keet-private-id/contact",
3457 "version": 1
3458 }
3459 ]
3460 },
3461 {
3462 "name": "update-contact-status-operation",
3463 "namespace": "keet-private-id",
3464 "compact": false,
3465 "flagsPosition": -1,
3466 "fields": [
3467 {
3468 "name": "header",
3469 "required": true,
3470 "type": "@keet/operation-header",
3471 "version": 1
3472 },
3473 {
3474 "name": "memberKey",
3475 "required": true,
3476 "type": "@keet/member-key",
3477 "version": 1
3478 },
3479 {
3480 "name": "key",
3481 "required": true,
3482 "type": "uint",
3483 "version": 1
3484 },
3485 {
3486 "name": "status",
3487 "required": true,
3488 "type": "@keet-private-id/contact-status",
3489 "version": 1
3490 }
3491 ]
3492 },
3493 {
3494 "name": "remove-contact-operation",
3495 "namespace": "keet-private-id",
3496 "compact": false,
3497 "flagsPosition": -1,
3498 "fields": [
3499 {
3500 "name": "header",
3501 "required": true,
3502 "type": "@keet/operation-header",
3503 "version": 1
3504 },
3505 {
3506 "name": "memberKey",
3507 "required": true,
3508 "type": "@keet/member-key",
3509 "version": 1
3510 }
3511 ]
3512 },
3513 {
3514 "name": "contact-request-status",
3515 "namespace": "keet-private-id",
3516 "compact": false,
3517 "flagsPosition": 0,
3518 "fields": [
3519 {
3520 "name": "isPending",
3521 "type": "bool",
3522 "version": 1
3523 },
3524 {
3525 "name": "isAccepted",
3526 "type": "bool",
3527 "version": 1
3528 },
3529 {
3530 "name": "isRejected",
3531 "type": "bool",
3532 "version": 1
3533 },
3534 {
3535 "name": "isDiscarded",
3536 "type": "bool",
3537 "version": 1
3538 },
3539 {
3540 "name": "isSeen",
3541 "type": "bool",
3542 "version": 1
3543 }
3544 ]
3545 },
3546 {
3547 "name": "contact-request-body",
3548 "namespace": "keet-private-id",
3549 "compact": false,
3550 "flagsPosition": 3,
3551 "fields": [
3552 {
3553 "name": "sender",
3554 "required": true,
3555 "type": "@keet/member-update",
3556 "version": 1
3557 },
3558 {
3559 "name": "keys",
3560 "required": true,
3561 "type": "@keet/room-keys",
3562 "version": 1
3563 },
3564 {
3565 "name": "mailbox",
3566 "required": true,
3567 "type": "@keet/public-key",
3568 "version": 1
3569 },
3570 {
3571 "name": "message",
3572 "type": "string",
3573 "version": 1
3574 }
3575 ]
3576 },
3577 {
3578 "name": "contact-request",
3579 "namespace": "keet-private-id",
3580 "compact": false,
3581 "flagsPosition": -1,
3582 "fields": [
3583 {
3584 "name": "body",
3585 "required": true,
3586 "type": "@keet-private-id/contact-request-body",
3587 "version": 1
3588 },
3589 {
3590 "name": "attestation",
3591 "required": true,
3592 "type": "@keet/identity-attestation",
3593 "version": 1
3594 }
3595 ]
3596 },
3597 {
3598 "name": "contact-request-record",
3599 "namespace": "keet-private-id",
3600 "compact": false,
3601 "flagsPosition": 6,
3602 "fields": [
3603 {
3604 "name": "memberKey",
3605 "required": true,
3606 "type": "@keet/member-key",
3607 "version": 1
3608 },
3609 {
3610 "name": "clock",
3611 "required": true,
3612 "type": "uint",
3613 "version": 1
3614 },
3615 {
3616 "name": "sender",
3617 "required": true,
3618 "type": "@keet/member-profile",
3619 "version": 1
3620 },
3621 {
3622 "name": "status",
3623 "required": true,
3624 "type": "@keet-private-id/contact-request-status",
3625 "version": 1
3626 },
3627 {
3628 "name": "keys",
3629 "required": true,
3630 "type": "@keet/room-keys",
3631 "version": 1
3632 },
3633 {
3634 "name": "mailbox",
3635 "required": true,
3636 "type": "@keet/public-key",
3637 "version": 1
3638 },
3639 {
3640 "name": "message",
3641 "type": "string",
3642 "version": 1
3643 },
3644 {
3645 "name": "sentAt",
3646 "type": "uint",
3647 "version": 17
3648 }
3649 ]
3650 },
3651 {
3652 "name": "add-contact-request-operation",
3653 "namespace": "keet-private-id",
3654 "compact": false,
3655 "flagsPosition": -1,
3656 "fields": [
3657 {
3658 "name": "header",
3659 "required": true,
3660 "type": "@keet/operation-header",
3661 "version": 1
3662 },
3663 {
3664 "name": "blindRequest",
3665 "required": true,
3666 "type": "buffer",
3667 "version": 1
3668 }
3669 ]
3670 },
3671 {
3672 "name": "update-contact-request-status-operation",
3673 "namespace": "keet-private-id",
3674 "compact": false,
3675 "flagsPosition": 4,
3676 "fields": [
3677 {
3678 "name": "header",
3679 "required": true,
3680 "type": "@keet/operation-header",
3681 "version": 1
3682 },
3683 {
3684 "name": "memberKey",
3685 "required": true,
3686 "type": "@keet/member-key",
3687 "version": 1
3688 },
3689 {
3690 "name": "key",
3691 "required": true,
3692 "type": "uint",
3693 "version": 1
3694 },
3695 {
3696 "name": "status",
3697 "required": true,
3698 "type": "@keet-private-id/contact-request-status",
3699 "version": 1
3700 },
3701 {
3702 "name": "roomKey",
3703 "type": "@keet/room-key",
3704 "version": 15
3705 }
3706 ]
3707 },
3708 {
3709 "name": "profile-discovery-record-v1",
3710 "namespace": "keet-private-id",
3711 "compact": false,
3712 "flagsPosition": -1,
3713 "fields": [
3714 {
3715 "name": "timestamp",
3716 "required": true,
3717 "type": "uint",
3718 "version": 1
3719 },
3720 {
3721 "name": "key",
3722 "required": true,
3723 "type": "@keet/core-key",
3724 "version": 1
3725 },
3726 {
3727 "name": "mailbox",
3728 "required": true,
3729 "type": "@keet/public-key",
3730 "version": 1
3731 }
3732 ]
3733 },
3734 {
3735 "name": "profile-discovery-record",
3736 "namespace": "keet-private-id",
3737 "versions": [
3738 {
3739 "type": "@keet-private-id/profile-discovery-record-v1",
3740 "map": null,
3741 "version": 1
3742 }
3743 ]
3744 },
3745 {
3746 "name": "background-sync-room",
3747 "namespace": "local",
3748 "compact": false,
3749 "flagsPosition": 2,
3750 "fields": [
3751 {
3752 "name": "discoveryPublicKey",
3753 "required": true,
3754 "type": "@keet/room-discovery-key",
3755 "version": 1
3756 },
3757 {
3758 "name": "timestamp",
3759 "required": true,
3760 "type": "uint",
3761 "version": 1
3762 },
3763 {
3764 "name": "lastSynced",
3765 "type": "uint",
3766 "version": 1
3767 },
3768 {
3769 "name": "dirty",
3770 "type": "bool",
3771 "version": 1
3772 }
3773 ]
3774 },
3775 {
3776 "name": "stats",
3777 "namespace": "local",
3778 "compact": false,
3779 "flagsPosition": -1,
3780 "fields": [
3781 {
3782 "name": "rooms",
3783 "required": true,
3784 "type": "uint",
3785 "version": 1
3786 },
3787 {
3788 "name": "activeRooms",
3789 "required": true,
3790 "type": "uint",
3791 "version": 1
3792 }
3793 ]
3794 },
3795 {
3796 "name": "migration-status",
3797 "namespace": "local",
3798 "compact": false,
3799 "flagsPosition": -1,
3800 "fields": [
3801 {
3802 "name": "version",
3803 "required": true,
3804 "type": "uint",
3805 "version": 1
3806 }
3807 ]
3808 },
3809 {
3810 "name": "v3-private-profile-migration",
3811 "namespace": "local",
3812 "compact": false,
3813 "flagsPosition": 0,
3814 "fields": [
3815 {
3816 "name": "blockedMembers",
3817 "array": true,
3818 "type": "@keet/member-key",
3819 "version": 1
3820 }
3821 ]
3822 },
3823 {
3824 "name": "v3-room-migration",
3825 "namespace": "local",
3826 "compact": false,
3827 "flagsPosition": 5,
3828 "fields": [
3829 {
3830 "name": "encryptionKey",
3831 "required": true,
3832 "type": "@keet/encryption-key",
3833 "version": 1
3834 },
3835 {
3836 "name": "seed",
3837 "required": true,
3838 "type": "fixed32",
3839 "version": 1
3840 },
3841 {
3842 "name": "capabilities",
3843 "required": true,
3844 "type": "@keet/room-capabilities",
3845 "version": 1
3846 },
3847 {
3848 "name": "initiator",
3849 "required": true,
3850 "type": "@keet/head",
3851 "version": 1
3852 },
3853 {
3854 "name": "fastForwardTo",
3855 "required": true,
3856 "type": "fixed32",
3857 "version": 1
3858 },
3859 {
3860 "name": "privateProfile",
3861 "type": "@local/v3-private-profile-migration",
3862 "version": 1
3863 }
3864 ]
3865 },
3866 {
3867 "name": "room-migration-stats",
3868 "namespace": "local",
3869 "compact": false,
3870 "flagsPosition": 0,
3871 "fields": [
3872 {
3873 "name": "count",
3874 "type": "uint",
3875 "version": 1
3876 }
3877 ]
3878 },
3879 {
3880 "name": "room-migration",
3881 "namespace": "local",
3882 "compact": false,
3883 "flagsPosition": 2,
3884 "fields": [
3885 {
3886 "name": "roomKey",
3887 "required": true,
3888 "type": "@keet/room-key",
3889 "version": 1
3890 },
3891 {
3892 "name": "priority",
3893 "required": true,
3894 "type": "uint",
3895 "version": 1
3896 },
3897 {
3898 "name": "v3",
3899 "type": "@local/v3-room-migration",
3900 "version": 1
3901 },
3902 {
3903 "name": "errored",
3904 "type": "bool",
3905 "version": 3
3906 },
3907 {
3908 "name": "timestamp",
3909 "type": "uint",
3910 "version": 5
3911 }
3912 ]
3913 },
3914 {
3915 "name": "identity-status",
3916 "namespace": "local",
3917 "compact": false,
3918 "flagsPosition": 0,
3919 "fields": [
3920 {
3921 "name": "isConfirmed",
3922 "type": "bool",
3923 "version": 1
3924 }
3925 ]
3926 },
3927 {
3928 "name": "identity-record",
3929 "namespace": "local",
3930 "compact": false,
3931 "flagsPosition": 5,
3932 "fields": [
3933 {
3934 "name": "publicKey",
3935 "required": true,
3936 "type": "@keet/public-key",
3937 "version": 1
3938 },
3939 {
3940 "name": "privateProfileKey",
3941 "required": true,
3942 "type": "@keet/room-key",
3943 "version": 1
3944 },
3945 {
3946 "name": "deviceKeyPair",
3947 "required": true,
3948 "type": "@keet/signing-keypair",
3949 "version": 1
3950 },
3951 {
3952 "name": "deviceProof",
3953 "required": true,
3954 "type": "buffer",
3955 "version": 1
3956 },
3957 {
3958 "name": "status",
3959 "required": true,
3960 "type": "@local/identity-status",
3961 "version": 1
3962 },
3963 {
3964 "name": "entropy",
3965 "type": "buffer",
3966 "version": 1
3967 },
3968 {
3969 "name": "swap",
3970 "type": "@keet-private-id/identity-swap",
3971 "version": 1
3972 },
3973 {
3974 "name": "swapV2",
3975 "type": "@keet-private-id/identity-swap-v2",
3976 "version": 9
3977 }
3978 ]
3979 },
3980 {
3981 "name": "tasks",
3982 "namespace": "local",
3983 "offset": 1,
3984 "enum": [
3985 {
3986 "key": "RestoreIdentity",
3987 "version": 1
3988 },
3989 {
3990 "key": "CreateRoom",
3991 "version": 1
3992 },
3993 {
3994 "key": "LeaveRoom",
3995 "version": 1
3996 },
3997 {
3998 "key": "ClearRoom",
3999 "version": 1
4000 },
4001 {
4002 "key": "JoinRoomInvitation",
4003 "version": 1
4004 },
4005 {
4006 "key": "JoinRoomKeys",
4007 "version": 1
4008 },
4009 {
4010 "key": "JoinRoomResponse",
4011 "version": 1
4012 },
4013 {
4014 "key": "SendContactRequest",
4015 "version": 1
4016 },
4017 {
4018 "key": "TestFastTask",
4019 "version": 9
4020 },
4021 {
4022 "key": "TestSlowTask",
4023 "version": 9
4024 },
4025 {
4026 "key": "TestErrorTask",
4027 "version": 9
4028 }
4029 ],
4030 "strings": false
4031 },
4032 {
4033 "name": "room-keys",
4034 "namespace": "local",
4035 "compact": false,
4036 "flagsPosition": 2,
4037 "fields": [
4038 {
4039 "name": "roomKey",
4040 "required": true,
4041 "type": "@keet/room-key",
4042 "version": 1
4043 },
4044 {
4045 "name": "encryptionKey",
4046 "required": true,
4047 "type": "@keet/encryption-key",
4048 "version": 1
4049 },
4050 {
4051 "name": "fastForwardTo",
4052 "type": "fixed32",
4053 "version": 1
4054 },
4055 {
4056 "name": "initiator",
4057 "type": "@keet/head",
4058 "version": 1
4059 }
4060 ]
4061 },
4062 {
4063 "name": "join-room-invitation-task",
4064 "namespace": "local",
4065 "compact": false,
4066 "flagsPosition": -1,
4067 "fields": [
4068 {
4069 "name": "invitation",
4070 "required": true,
4071 "type": "@keet-private-id/pending-invitation",
4072 "version": 1
4073 }
4074 ]
4075 },
4076 {
4077 "name": "join-room-response-task",
4078 "namespace": "local",
4079 "compact": false,
4080 "flagsPosition": -1,
4081 "fields": [
4082 {
4083 "name": "mailbox",
4084 "required": true,
4085 "type": "@keet/public-key",
4086 "version": 1
4087 },
4088 {
4089 "name": "keyPair",
4090 "required": true,
4091 "type": "@keet/signing-keypair",
4092 "version": 1
4093 },
4094 {
4095 "name": "response",
4096 "required": true,
4097 "type": "buffer",
4098 "version": 1
4099 }
4100 ]
4101 },
4102 {
4103 "name": "fast-forward-to",
4104 "namespace": "local",
4105 "compact": false,
4106 "flagsPosition": -1,
4107 "fields": [
4108 {
4109 "name": "key",
4110 "required": true,
4111 "type": "@keet/core-key",
4112 "version": 1
4113 }
4114 ]
4115 },
4116 {
4117 "name": "add-room-fields",
4118 "namespace": "local",
4119 "compact": false,
4120 "flagsPosition": 2,
4121 "fields": [
4122 {
4123 "name": "roomKey",
4124 "required": true,
4125 "type": "@keet/room-key",
4126 "version": 1
4127 },
4128 {
4129 "name": "encryptionKey",
4130 "required": true,
4131 "type": "@keet/encryption-key",
4132 "version": 1
4133 },
4134 {
4135 "name": "fastForwardTo",
4136 "type": "fixed32",
4137 "version": 1
4138 },
4139 {
4140 "name": "initiator",
4141 "type": "@keet/head",
4142 "version": 1
4143 },
4144 {
4145 "name": "mailbox",
4146 "type": "@keet/public-key",
4147 "version": 1
4148 }
4149 ]
4150 },
4151 {
4152 "name": "join-room-keys-task",
4153 "namespace": "local",
4154 "compact": false,
4155 "flagsPosition": -1,
4156 "fields": [
4157 {
4158 "name": "keys",
4159 "required": true,
4160 "type": "@local/add-room-fields",
4161 "version": 1
4162 }
4163 ]
4164 },
4165 {
4166 "name": "create-room-task",
4167 "namespace": "local",
4168 "compact": false,
4169 "flagsPosition": 2,
4170 "fields": [
4171 {
4172 "name": "roomKey",
4173 "required": true,
4174 "type": "@keet/room-key",
4175 "version": 1
4176 },
4177 {
4178 "name": "encryptionKey",
4179 "required": true,
4180 "type": "@keet/encryption-key",
4181 "version": 1
4182 },
4183 {
4184 "name": "fastForwardTo",
4185 "type": "fixed32",
4186 "version": 1
4187 },
4188 {
4189 "name": "initiator",
4190 "type": "@keet/head",
4191 "version": 1
4192 },
4193 {
4194 "name": "mailbox",
4195 "type": "@keet/public-key",
4196 "version": 1
4197 },
4198 {
4199 "name": "keyPair",
4200 "type": "@keet/signing-keypair",
4201 "version": 1
4202 },
4203 {
4204 "name": "genesis",
4205 "type": "@keet/genesis-operation",
4206 "version": 1
4207 },
4208 {
4209 "name": "isPrivateProfile",
4210 "type": "bool",
4211 "version": 1
4212 }
4213 ]
4214 },
4215 {
4216 "name": "leave-room-task",
4217 "namespace": "local",
4218 "compact": false,
4219 "flagsPosition": 1,
4220 "fields": [
4221 {
4222 "name": "roomKey",
4223 "required": true,
4224 "type": "@keet/room-key",
4225 "version": 1
4226 },
4227 {
4228 "name": "isGossiped",
4229 "type": "bool",
4230 "version": 1
4231 }
4232 ]
4233 },
4234 {
4235 "name": "clear-room-task",
4236 "namespace": "local",
4237 "compact": false,
4238 "flagsPosition": -1,
4239 "fields": [
4240 {
4241 "name": "roomKey",
4242 "required": true,
4243 "type": "@keet/room-key",
4244 "version": 1
4245 }
4246 ]
4247 },
4248 {
4249 "name": "restore-identity-task",
4250 "namespace": "local",
4251 "compact": false,
4252 "flagsPosition": 1,
4253 "fields": [
4254 {
4255 "name": "mnemonic",
4256 "required": true,
4257 "type": "string",
4258 "version": 1
4259 },
4260 {
4261 "name": "profileDiscoveryTimeout",
4262 "type": "uint",
4263 "version": 1
4264 },
4265 {
4266 "name": "recover",
4267 "type": "bool",
4268 "version": 1
4269 }
4270 ]
4271 },
4272 {
4273 "name": "send-contact-request-task",
4274 "namespace": "local",
4275 "compact": false,
4276 "flagsPosition": 2,
4277 "fields": [
4278 {
4279 "name": "roomKey",
4280 "required": true,
4281 "type": "@keet/room-key",
4282 "version": 1
4283 },
4284 {
4285 "name": "memberKey",
4286 "required": true,
4287 "type": "@keet/member-key",
4288 "version": 1
4289 },
4290 {
4291 "name": "message",
4292 "type": "string",
4293 "version": 1
4294 },
4295 {
4296 "name": "contactInfo",
4297 "type": "@keet/member-contact-info",
4298 "version": 6
4299 }
4300 ]
4301 },
4302 {
4303 "name": "migrate-v2-room-task",
4304 "namespace": "local",
4305 "compact": false,
4306 "flagsPosition": 1,
4307 "fields": [
4308 {
4309 "name": "key",
4310 "required": true,
4311 "type": "@keet/room-key",
4312 "version": 1
4313 },
4314 {
4315 "name": "isPrivateProfile",
4316 "type": "bool",
4317 "version": 1
4318 }
4319 ]
4320 },
4321 {
4322 "name": "task",
4323 "namespace": "local",
4324 "compact": false,
4325 "flagsPosition": 4,
4326 "fields": [
4327 {
4328 "name": "discoveryKey",
4329 "required": true,
4330 "type": "@keet/room-discovery-key",
4331 "version": 1
4332 },
4333 {
4334 "name": "priority",
4335 "required": true,
4336 "type": "uint",
4337 "version": 1
4338 },
4339 {
4340 "name": "timestamp",
4341 "required": true,
4342 "type": "uint",
4343 "version": 1
4344 },
4345 {
4346 "name": "type",
4347 "required": true,
4348 "type": "uint",
4349 "version": 1
4350 },
4351 {
4352 "name": "restoreIdentity",
4353 "type": "@local/restore-identity-task",
4354 "version": 1
4355 },
4356 {
4357 "name": "createRoom",
4358 "type": "@local/create-room-task",
4359 "version": 1
4360 },
4361 {
4362 "name": "leaveRoom",
4363 "type": "@local/leave-room-task",
4364 "version": 1
4365 },
4366 {
4367 "name": "clearRoom",
4368 "type": "@local/clear-room-task",
4369 "version": 1
4370 },
4371 {
4372 "name": "joinRoomInvitation",
4373 "type": "@local/join-room-invitation-task",
4374 "version": 1
4375 },
4376 {
4377 "name": "joinRoomKeys",
4378 "type": "@local/join-room-keys-task",
4379 "version": 1
4380 },
4381 {
4382 "name": "joinRoomResponse",
4383 "type": "@local/join-room-response-task",
4384 "version": 1
4385 },
4386 {
4387 "name": "sendContactRequest",
4388 "type": "@local/send-contact-request-task",
4389 "version": 1
4390 },
4391 {
4392 "name": "migrateV2Room",
4393 "type": "@local/migrate-v2-room-task",
4394 "version": 1
4395 }
4396 ]
4397 },
4398 {
4399 "name": "shared-invitation",
4400 "namespace": "local",
4401 "compact": false,
4402 "flagsPosition": -1,
4403 "fields": [
4404 {
4405 "name": "seed",
4406 "required": true,
4407 "type": "buffer",
4408 "version": 1
4409 },
4410 {
4411 "name": "invitation",
4412 "required": true,
4413 "type": "@keet/invitation",
4414 "version": 1
4415 }
4416 ]
4417 },
4418 {
4419 "name": "room-status",
4420 "namespace": "local",
4421 "compact": false,
4422 "flagsPosition": 0,
4423 "fields": [
4424 {
4425 "name": "isWritable",
4426 "type": "bool",
4427 "version": 1
4428 },
4429 {
4430 "name": "isReadable",
4431 "type": "bool",
4432 "version": 1
4433 },
4434 {
4435 "name": "isPrivateProfile",
4436 "type": "bool",
4437 "version": 1
4438 },
4439 {
4440 "name": "isRemoved",
4441 "type": "bool",
4442 "version": 8
4443 }
4444 ]
4445 },
4446 {
4447 "name": "room-timestamps",
4448 "namespace": "local",
4449 "compact": false,
4450 "flagsPosition": -1,
4451 "fields": [
4452 {
4453 "name": "creation",
4454 "required": true,
4455 "type": "uint",
4456 "version": 1
4457 },
4458 {
4459 "name": "latestSync",
4460 "required": true,
4461 "type": "uint",
4462 "version": 1
4463 },
4464 {
4465 "name": "latestChatMessage",
4466 "required": true,
4467 "type": "uint",
4468 "version": 1
4469 }
4470 ]
4471 },
4472 {
4473 "name": "room",
4474 "namespace": "local",
4475 "compact": false,
4476 "flagsPosition": 11,
4477 "fields": [
4478 {
4479 "name": "roomKey",
4480 "required": true,
4481 "type": "@keet/room-key",
4482 "version": 1
4483 },
4484 {
4485 "name": "discoveryKey",
4486 "required": true,
4487 "type": "@keet/room-discovery-key",
4488 "version": 1
4489 },
4490 {
4491 "name": "encryptionKey",
4492 "required": true,
4493 "type": "@keet/encryption-key",
4494 "version": 1
4495 },
4496 {
4497 "name": "digest",
4498 "required": true,
4499 "type": "@keet/system-digest",
4500 "version": 1
4501 },
4502 {
4503 "name": "stats",
4504 "required": true,
4505 "type": "@keet/stats",
4506 "version": 1
4507 },
4508 {
4509 "name": "timestamps",
4510 "required": true,
4511 "type": "@local/room-timestamps",
4512 "version": 1
4513 },
4514 {
4515 "name": "fork",
4516 "required": true,
4517 "type": "uint",
4518 "version": 1
4519 },
4520 {
4521 "name": "length",
4522 "required": true,
4523 "type": "uint",
4524 "version": 1
4525 },
4526 {
4527 "name": "seed",
4528 "required": true,
4529 "type": "fixed32",
4530 "version": 1
4531 },
4532 {
4533 "name": "capabilities",
4534 "required": true,
4535 "type": "@keet/room-capabilities",
4536 "version": 1
4537 },
4538 {
4539 "name": "status",
4540 "required": true,
4541 "type": "@local/room-status",
4542 "version": 1
4543 },
4544 {
4545 "name": "selfDevice",
4546 "type": "@keet/device",
4547 "version": 1
4548 },
4549 {
4550 "name": "selfMember",
4551 "type": "@keet/full-member",
4552 "version": 1
4553 },
4554 {
4555 "name": "config",
4556 "type": "@keet/room-config",
4557 "version": 1
4558 },
4559 {
4560 "name": "identity",
4561 "type": "@keet/room-identity",
4562 "version": 1
4563 },
4564 {
4565 "name": "lastMessage",
4566 "type": "@keet/full-chat-message-record",
4567 "version": 1
4568 },
4569 {
4570 "name": "dm",
4571 "array": true,
4572 "type": "@keet/member-key",
4573 "version": 1
4574 },
4575 {
4576 "name": "readLengths",
4577 "array": true,
4578 "type": "@keet/read-length",
4579 "version": 19
4580 },
4581 {
4582 "name": "lastMember",
4583 "type": "@keet/member",
4584 "version": 19
4585 },
4586 {
4587 "name": "version",
4588 "type": "uint",
4589 "version": 21
4590 },
4591 {
4592 "name": "preferences",
4593 "type": "@keet-private-id/room-status",
4594 "version": 27
4595 },
4596 {
4597 "name": "activeCall",
4598 "type": "@local/active-call",
4599 "version": 28
4600 }
4601 ]
4602 },
4603 {
4604 "name": "room-preferences",
4605 "namespace": "local",
4606 "compact": false,
4607 "flagsPosition": -1,
4608 "fields": [
4609 {
4610 "name": "roomKey",
4611 "required": true,
4612 "type": "@keet/room-key",
4613 "version": 1
4614 },
4615 {
4616 "name": "status",
4617 "required": true,
4618 "type": "@keet-private-id/room-status",
4619 "version": 1
4620 }
4621 ]
4622 },
4623 {
4624 "name": "writer",
4625 "namespace": "local",
4626 "compact": false,
4627 "flagsPosition": 2,
4628 "fields": [
4629 {
4630 "name": "mailbox",
4631 "required": true,
4632 "type": "@keet/public-key",
4633 "version": 1
4634 },
4635 {
4636 "name": "key",
4637 "required": true,
4638 "type": "@keet/core-key",
4639 "version": 1
4640 },
4641 {
4642 "name": "roomKey",
4643 "type": "@keet/room-key",
4644 "version": 1
4645 },
4646 {
4647 "name": "keyPair",
4648 "type": "@keet/signing-keypair",
4649 "version": 1
4650 },
4651 {
4652 "name": "responseKeyPair",
4653 "type": "@keet/signing-keypair",
4654 "version": 1
4655 }
4656 ]
4657 },
4658 {
4659 "name": "member",
4660 "namespace": "local",
4661 "compact": false,
4662 "flagsPosition": -1,
4663 "fields": [
4664 {
4665 "name": "key",
4666 "required": true,
4667 "type": "@keet/member-key",
4668 "version": 1
4669 },
4670 {
4671 "name": "profile",
4672 "required": true,
4673 "type": "@keet/member-profile",
4674 "version": 1
4675 }
4676 ]
4677 },
4678 {
4679 "name": "device",
4680 "namespace": "local",
4681 "compact": false,
4682 "flagsPosition": -1,
4683 "fields": [
4684 {
4685 "name": "roomKey",
4686 "required": true,
4687 "type": "@keet/room-key",
4688 "version": 1
4689 },
4690 {
4691 "name": "device",
4692 "required": true,
4693 "type": "@keet/device",
4694 "version": 1
4695 }
4696 ]
4697 },
4698 {
4699 "name": "file",
4700 "namespace": "local",
4701 "compact": false,
4702 "flagsPosition": 2,
4703 "fields": [
4704 {
4705 "name": "file",
4706 "required": true,
4707 "type": "@keet/file",
4708 "version": 1
4709 },
4710 {
4711 "name": "roomKey",
4712 "required": true,
4713 "type": "@keet/room-key",
4714 "version": 1
4715 },
4716 {
4717 "name": "encryptionKey",
4718 "type": "@keet/encryption-key",
4719 "version": 1
4720 },
4721 {
4722 "name": "cleared",
4723 "type": "bool",
4724 "version": 1
4725 },
4726 {
4727 "name": "own",
4728 "type": "bool",
4729 "version": 1
4730 },
4731 {
4732 "name": "lastAccessed",
4733 "type": "uint",
4734 "version": 28
4735 },
4736 {
4737 "name": "version",
4738 "type": "uint",
4739 "version": 28
4740 }
4741 ]
4742 },
4743 {
4744 "name": "add-file-preview-operation",
4745 "namespace": "keet",
4746 "compact": false,
4747 "flagsPosition": 4,
4748 "fields": [
4749 {
4750 "name": "header",
4751 "required": true,
4752 "type": "@keet/operation-header",
4753 "version": 2
4754 },
4755 {
4756 "name": "oplog",
4757 "required": true,
4758 "type": "@keet/oplog-id",
4759 "version": 2
4760 },
4761 {
4762 "name": "index",
4763 "required": true,
4764 "type": "uint",
4765 "version": 2
4766 },
4767 {
4768 "name": "preview",
4769 "required": true,
4770 "type": "@keet/image-file",
4771 "version": 2
4772 },
4773 {
4774 "name": "displayType",
4775 "type": "@keet/display-type",
4776 "version": 12
4777 }
4778 ]
4779 },
4780 {
4781 "name": "member-removed-event",
4782 "namespace": "keet",
4783 "compact": false,
4784 "flagsPosition": 0,
4785 "fields": [
4786 {
4787 "name": "memberKey",
4788 "type": "@keet/member-key",
4789 "version": 4
4790 }
4791 ]
4792 },
4793 {
4794 "name": "member-contact-info",
4795 "namespace": "keet",
4796 "compact": false,
4797 "flagsPosition": -1,
4798 "fields": [
4799 {
4800 "name": "profile",
4801 "required": true,
4802 "type": "@keet/member-profile",
4803 "version": 6
4804 },
4805 {
4806 "name": "attestation",
4807 "required": true,
4808 "type": "@keet/identity-attestation",
4809 "version": 6
4810 }
4811 ]
4812 },
4813 {
4814 "name": "remove-device-operation",
4815 "namespace": "keet",
4816 "compact": false,
4817 "flagsPosition": -1,
4818 "fields": [
4819 {
4820 "name": "header",
4821 "required": true,
4822 "type": "@keet/operation-header",
4823 "version": 7
4824 },
4825 {
4826 "name": "key",
4827 "required": true,
4828 "type": "@keet/device-key",
4829 "version": 7
4830 }
4831 ]
4832 },
4833 {
4834 "name": "device-identity",
4835 "namespace": "keet",
4836 "compact": false,
4837 "flagsPosition": -1,
4838 "fields": [
4839 {
4840 "name": "deviceKey",
4841 "required": true,
4842 "type": "@keet/device-key",
4843 "version": 9
4844 },
4845 {
4846 "name": "privateProfileIdentity",
4847 "required": true,
4848 "type": "@keet/identity-attestation",
4849 "version": 9
4850 },
4851 {
4852 "name": "deviceProof",
4853 "required": true,
4854 "type": "buffer",
4855 "version": 9
4856 }
4857 ]
4858 },
4859 {
4860 "name": "readonly-room-invitation",
4861 "namespace": "keet",
4862 "compact": false,
4863 "flagsPosition": 3,
4864 "fields": [
4865 {
4866 "name": "roomKey",
4867 "required": true,
4868 "type": "fixed32",
4869 "version": 9
4870 },
4871 {
4872 "name": "encryptionKey",
4873 "required": true,
4874 "type": "fixed32",
4875 "version": 9
4876 },
4877 {
4878 "name": "seed",
4879 "required": true,
4880 "type": "fixed32",
4881 "version": 9
4882 },
4883 {
4884 "name": "fastForwardTo",
4885 "type": "fixed32",
4886 "version": 9
4887 }
4888 ]
4889 },
4890 {
4891 "name": "identity-swap-v2",
4892 "namespace": "keet-private-id",
4893 "compact": false,
4894 "flagsPosition": 3,
4895 "fields": [
4896 {
4897 "name": "publicKey",
4898 "required": true,
4899 "type": "@keet/member-key",
4900 "version": 9
4901 },
4902 {
4903 "name": "writerKey",
4904 "required": true,
4905 "type": "@keet/core-key",
4906 "version": 9
4907 },
4908 {
4909 "name": "devicePublicKey",
4910 "required": true,
4911 "type": "@keet/public-key",
4912 "version": 9
4913 },
4914 {
4915 "name": "privateProfileKey",
4916 "type": "@keet/room-key",
4917 "version": 9
4918 }
4919 ]
4920 },
4921 {
4922 "name": "activate-contact-room-operation",
4923 "namespace": "keet-private-id",
4924 "compact": false,
4925 "flagsPosition": -1,
4926 "fields": [
4927 {
4928 "name": "header",
4929 "required": true,
4930 "type": "@keet/operation-header",
4931 "version": 9
4932 },
4933 {
4934 "name": "memberKey",
4935 "required": true,
4936 "type": "@keet/member-key",
4937 "version": 9
4938 }
4939 ]
4940 },
4941 {
4942 "name": "identity-swap",
4943 "namespace": "local",
4944 "compact": false,
4945 "flagsPosition": -1,
4946 "fields": [
4947 {
4948 "name": "privateProfileKey",
4949 "required": true,
4950 "type": "@keet/room-key",
4951 "version": 9
4952 }
4953 ]
4954 },
4955 {
4956 "name": "writer-append",
4957 "namespace": "local",
4958 "compact": false,
4959 "flagsPosition": -1,
4960 "fields": [
4961 {
4962 "name": "key",
4963 "required": true,
4964 "type": "@keet/core-key",
4965 "version": 9
4966 },
4967 {
4968 "name": "responsePublicKey",
4969 "required": true,
4970 "type": "fixed32",
4971 "version": 9
4972 }
4973 ]
4974 },
4975 {
4976 "name": "room-metadata",
4977 "namespace": "local",
4978 "compact": false,
4979 "flagsPosition": 1,
4980 "fields": [
4981 {
4982 "name": "roomKey",
4983 "required": true,
4984 "type": "@keet/room-key",
4985 "version": 10
4986 },
4987 {
4988 "name": "repairs",
4989 "type": "uint",
4990 "version": 10
4991 }
4992 ]
4993 },
4994 {
4995 "name": "debug-flag",
4996 "namespace": "local",
4997 "compact": false,
4998 "flagsPosition": 0,
4999 "fields": [
5000 {
5001 "name": "key",
5002 "type": "string",
5003 "version": 11
5004 },
5005 {
5006 "name": "value",
5007 "type": "bool",
5008 "version": 11
5009 },
5010 {
5011 "name": "description",
5012 "type": "string",
5013 "version": 11
5014 }
5015 ]
5016 },
5017 {
5018 "name": "debug",
5019 "namespace": "local",
5020 "compact": false,
5021 "flagsPosition": 0,
5022 "fields": [
5023 {
5024 "name": "flags",
5025 "array": true,
5026 "type": "@local/debug-flag",
5027 "version": 11
5028 }
5029 ]
5030 },
5031 {
5032 "name": "display-type",
5033 "namespace": "keet",
5034 "offset": 1,
5035 "enum": [
5036 {
5037 "key": "HttpLink",
5038 "version": 12
5039 },
5040 {
5041 "key": "PearLink",
5042 "version": 12
5043 }
5044 ],
5045 "strings": false
5046 },
5047 {
5048 "name": "test-increment-operation",
5049 "namespace": "keet",
5050 "compact": false,
5051 "flagsPosition": -1,
5052 "fields": [
5053 {
5054 "name": "header",
5055 "required": true,
5056 "type": "@keet/operation-header",
5057 "version": 13
5058 },
5059 {
5060 "name": "value",
5061 "required": true,
5062 "type": "uint",
5063 "version": 13
5064 }
5065 ]
5066 },
5067 {
5068 "name": "test-collection-record-1",
5069 "namespace": "keet",
5070 "compact": false,
5071 "flagsPosition": -1,
5072 "fields": [
5073 {
5074 "name": "key",
5075 "required": true,
5076 "type": "uint",
5077 "version": 13
5078 },
5079 {
5080 "name": "value",
5081 "required": true,
5082 "type": "uint",
5083 "version": 13
5084 }
5085 ]
5086 },
5087 {
5088 "name": "migrate-abi-operation",
5089 "namespace": "keet",
5090 "compact": false,
5091 "flagsPosition": 3,
5092 "fields": [
5093 {
5094 "name": "header",
5095 "required": true,
5096 "type": "@keet/operation-header",
5097 "version": 15
5098 },
5099 {
5100 "name": "from",
5101 "required": true,
5102 "type": "uint",
5103 "version": 15
5104 },
5105 {
5106 "name": "to",
5107 "required": true,
5108 "type": "uint",
5109 "version": 15
5110 },
5111 {
5112 "name": "buildType",
5113 "type": "@keet/build-type",
5114 "version": 29
5115 }
5116 ]
5117 },
5118 {
5119 "name": "system-settings-keys",
5120 "namespace": "keet",
5121 "offset": 1,
5122 "enum": [
5123 {
5124 "key": "RoomType",
5125 "version": 15
5126 },
5127 {
5128 "key": "IsExperimental",
5129 "version": 15
5130 },
5131 {
5132 "key": "IsJoiningDisabled",
5133 "version": 15
5134 },
5135 {
5136 "key": "IsAppendingDisabled",
5137 "version": 15
5138 },
5139 {
5140 "key": "IsCallingDisabled",
5141 "version": 15
5142 },
5143 {
5144 "key": "IsMembershipEventsDisabled",
5145 "version": 15
5146 },
5147 {
5148 "key": "IsAttachmentsDisabled",
5149 "version": 28
5150 },
5151 {
5152 "key": "IsLinksDisabled",
5153 "version": 28
5154 }
5155 ],
5156 "strings": false
5157 },
5158 {
5159 "name": "hyperdht-record",
5160 "namespace": "local",
5161 "compact": false,
5162 "flagsPosition": 0,
5163 "fields": [
5164 {
5165 "name": "nodes",
5166 "array": true,
5167 "type": "ipv4Address",
5168 "version": 16
5169 },
5170 {
5171 "name": "concurrency",
5172 "type": "uint",
5173 "version": 24
5174 },
5175 {
5176 "name": "maxWindow",
5177 "type": "uint",
5178 "version": 24
5179 },
5180 {
5181 "name": "randomPunchInterval",
5182 "type": "uint",
5183 "version": 24
5184 },
5185 {
5186 "name": "connectionKeepAlive",
5187 "type": "uint",
5188 "version": 24
5189 }
5190 ]
5191 },
5192 {
5193 "name": "room-supported-language",
5194 "namespace": "keet",
5195 "offset": 1,
5196 "enum": [
5197 {
5198 "key": "en",
5199 "version": 17
5200 },
5201 {
5202 "key": "it",
5203 "version": 17
5204 },
5205 {
5206 "key": "ru",
5207 "version": 17
5208 },
5209 {
5210 "key": "es",
5211 "version": 17
5212 },
5213 {
5214 "key": "de",
5215 "version": 17
5216 }
5217 ],
5218 "strings": true
5219 },
5220 {
5221 "name": "translation-display-item",
5222 "namespace": "keet",
5223 "compact": false,
5224 "flagsPosition": -1,
5225 "fields": [
5226 {
5227 "name": "range",
5228 "required": true,
5229 "type": "@keet/display-range",
5230 "version": 17
5231 },
5232 {
5233 "name": "language",
5234 "required": true,
5235 "type": "@keet/room-supported-language",
5236 "version": 17
5237 },
5238 {
5239 "name": "text",
5240 "required": true,
5241 "type": "string",
5242 "version": 17
5243 }
5244 ]
5245 },
5246 {
5247 "name": "unread",
5248 "namespace": "local",
5249 "compact": false,
5250 "flagsPosition": -1,
5251 "fields": [
5252 {
5253 "name": "roomKey",
5254 "required": true,
5255 "type": "@keet/room-key",
5256 "version": 17
5257 },
5258 {
5259 "name": "count",
5260 "required": true,
5261 "type": "uint",
5262 "version": 17
5263 }
5264 ]
5265 },
5266 {
5267 "name": "unreads",
5268 "namespace": "keet-private-id",
5269 "compact": false,
5270 "flagsPosition": -1,
5271 "fields": [
5272 {
5273 "name": "deviceKey",
5274 "required": true,
5275 "type": "@keet/device-key",
5276 "version": 18
5277 },
5278 {
5279 "name": "key",
5280 "required": true,
5281 "type": "@keet/core-key",
5282 "version": 18
5283 }
5284 ]
5285 },
5286 {
5287 "name": "add-unreads-key-operation",
5288 "namespace": "keet-private-id",
5289 "compact": false,
5290 "flagsPosition": -1,
5291 "fields": [
5292 {
5293 "name": "header",
5294 "required": true,
5295 "type": "@keet/operation-header",
5296 "version": 18
5297 },
5298 {
5299 "name": "key",
5300 "required": true,
5301 "type": "@keet/core-key",
5302 "version": 18
5303 }
5304 ]
5305 },
5306 {
5307 "name": "remove-unreads-key-operation",
5308 "namespace": "keet-private-id",
5309 "compact": false,
5310 "flagsPosition": -1,
5311 "fields": [
5312 {
5313 "name": "header",
5314 "required": true,
5315 "type": "@keet/operation-header",
5316 "version": 18
5317 },
5318 {
5319 "name": "key",
5320 "required": true,
5321 "type": "@keet/core-key",
5322 "version": 18
5323 }
5324 ]
5325 },
5326 {
5327 "name": "label-type",
5328 "namespace": "keet",
5329 "offset": 1,
5330 "enum": [
5331 {
5332 "key": "Flag",
5333 "version": 19
5334 }
5335 ],
5336 "strings": false
5337 },
5338 {
5339 "name": "chat-label",
5340 "namespace": "keet",
5341 "compact": false,
5342 "flagsPosition": -1,
5343 "fields": [
5344 {
5345 "name": "id",
5346 "required": true,
5347 "type": "@keet/message-index-id",
5348 "version": 19
5349 },
5350 {
5351 "name": "sender",
5352 "required": true,
5353 "type": "@keet/member-key",
5354 "version": 19
5355 },
5356 {
5357 "name": "clock",
5358 "required": true,
5359 "type": "uint",
5360 "version": 19
5361 },
5362 {
5363 "name": "label",
5364 "required": true,
5365 "type": "@keet/label-type",
5366 "version": 19
5367 }
5368 ]
5369 },
5370 {
5371 "name": "add-chat-label-operation",
5372 "namespace": "keet",
5373 "compact": false,
5374 "flagsPosition": -1,
5375 "fields": [
5376 {
5377 "name": "header",
5378 "required": true,
5379 "type": "@keet/operation-header",
5380 "version": 19
5381 },
5382 {
5383 "name": "oplog",
5384 "required": true,
5385 "type": "@keet/oplog-id",
5386 "version": 19
5387 },
5388 {
5389 "name": "label",
5390 "required": true,
5391 "type": "@keet/label-type",
5392 "version": 19
5393 }
5394 ]
5395 },
5396 {
5397 "name": "remove-chat-label-operation",
5398 "namespace": "keet",
5399 "compact": false,
5400 "flagsPosition": -1,
5401 "fields": [
5402 {
5403 "name": "header",
5404 "required": true,
5405 "type": "@keet/operation-header",
5406 "version": 19
5407 },
5408 {
5409 "name": "oplog",
5410 "required": true,
5411 "type": "@keet/oplog-id",
5412 "version": 19
5413 },
5414 {
5415 "name": "label",
5416 "required": true,
5417 "type": "@keet/label-type",
5418 "version": 19
5419 }
5420 ]
5421 },
5422 {
5423 "name": "chat-label-summary",
5424 "namespace": "keet",
5425 "compact": false,
5426 "flagsPosition": -1,
5427 "fields": [
5428 {
5429 "name": "label",
5430 "required": true,
5431 "type": "@keet/label-type",
5432 "version": 19
5433 },
5434 {
5435 "name": "count",
5436 "required": true,
5437 "type": "uint",
5438 "version": 19
5439 }
5440 ]
5441 },
5442 {
5443 "name": "chat-label-digest",
5444 "namespace": "keet",
5445 "compact": false,
5446 "flagsPosition": 4,
5447 "fields": [
5448 {
5449 "name": "id",
5450 "required": true,
5451 "type": "@keet/message-index-id",
5452 "version": 19
5453 },
5454 {
5455 "name": "total",
5456 "required": true,
5457 "type": "uint",
5458 "version": 19
5459 },
5460 {
5461 "name": "labels",
5462 "required": true,
5463 "array": true,
5464 "type": "@keet/chat-label-summary",
5465 "version": 19
5466 },
5467 {
5468 "name": "editedAt",
5469 "required": true,
5470 "type": "uint",
5471 "version": 19
5472 },
5473 {
5474 "name": "flagsClock",
5475 "type": "uint",
5476 "version": 24
5477 },
5478 {
5479 "name": "version",
5480 "type": "uint",
5481 "version": 24
5482 },
5483 {
5484 "name": "isDeleted",
5485 "type": "bool",
5486 "version": 25
5487 }
5488 ]
5489 },
5490 {
5491 "name": "update-read-length-operation",
5492 "namespace": "keet",
5493 "compact": false,
5494 "flagsPosition": -1,
5495 "fields": [
5496 {
5497 "name": "header",
5498 "required": true,
5499 "type": "@keet/operation-header",
5500 "version": 19
5501 },
5502 {
5503 "name": "length",
5504 "required": true,
5505 "type": "uint",
5506 "version": 19
5507 }
5508 ]
5509 },
5510 {
5511 "name": "read-length",
5512 "namespace": "keet",
5513 "compact": false,
5514 "flagsPosition": -1,
5515 "fields": [
5516 {
5517 "name": "memberKey",
5518 "required": true,
5519 "type": "@keet/member-key",
5520 "version": 19
5521 },
5522 {
5523 "name": "length",
5524 "required": true,
5525 "type": "uint",
5526 "version": 19
5527 }
5528 ]
5529 },
5530 {
5531 "name": "tmp-removed-member",
5532 "namespace": "keet",
5533 "compact": false,
5534 "flagsPosition": -1,
5535 "fields": [
5536 {
5537 "name": "key",
5538 "required": true,
5539 "type": "@keet/member-key",
5540 "version": 19
5541 }
5542 ]
5543 },
5544 {
5545 "name": "settings",
5546 "namespace": "keet-private-id",
5547 "compact": false,
5548 "flagsPosition": 0,
5549 "fields": [
5550 {
5551 "name": "disableReadReceipts",
5552 "type": "bool",
5553 "version": 19
5554 }
5555 ]
5556 },
5557 {
5558 "name": "user-settings-key",
5559 "namespace": "keet-private-id",
5560 "offset": 1,
5561 "enum": [
5562 {
5563 "key": "disableReadReceipts",
5564 "version": 19
5565 }
5566 ],
5567 "strings": true
5568 },
5569 {
5570 "name": "update-settings-operation",
5571 "namespace": "keet-private-id",
5572 "compact": false,
5573 "flagsPosition": -1,
5574 "fields": [
5575 {
5576 "name": "header",
5577 "required": true,
5578 "type": "@keet/operation-header",
5579 "version": 19
5580 },
5581 {
5582 "name": "key",
5583 "required": true,
5584 "type": "@keet-private-id/user-settings-key",
5585 "version": 19
5586 },
5587 {
5588 "name": "settings",
5589 "required": true,
5590 "type": "@keet-private-id/settings",
5591 "version": 19
5592 }
5593 ]
5594 },
5595 {
5596 "name": "error-record-details",
5597 "namespace": "local",
5598 "compact": false,
5599 "flagsPosition": 0,
5600 "fields": [
5601 {
5602 "name": "roomKey",
5603 "type": "@keet/room-key",
5604 "version": 20
5605 },
5606 {
5607 "name": "coreKey",
5608 "type": "@keet/core-key",
5609 "version": 23
5610 }
5611 ]
5612 },
5613 {
5614 "name": "error-record",
5615 "namespace": "local",
5616 "compact": false,
5617 "flagsPosition": 4,
5618 "fields": [
5619 {
5620 "name": "code",
5621 "required": true,
5622 "type": "string",
5623 "version": 20
5624 },
5625 {
5626 "name": "message",
5627 "required": true,
5628 "type": "string",
5629 "version": 20
5630 },
5631 {
5632 "name": "stack",
5633 "required": true,
5634 "type": "string",
5635 "version": 20
5636 },
5637 {
5638 "name": "timestamp",
5639 "required": true,
5640 "type": "uint",
5641 "version": 20
5642 },
5643 {
5644 "name": "details",
5645 "type": "@local/error-record-details",
5646 "version": 20
5647 }
5648 ]
5649 },
5650 {
5651 "name": "keet-state",
5652 "namespace": "local",
5653 "offset": 1,
5654 "enum": [
5655 {
5656 "key": "RESUME",
5657 "version": 22
5658 },
5659 {
5660 "key": "WAKEUP",
5661 "version": 22
5662 },
5663 {
5664 "key": "PRESUSPEND",
5665 "version": 22
5666 },
5667 {
5668 "key": "SUSPEND",
5669 "version": 22
5670 }
5671 ],
5672 "strings": false
5673 },
5674 {
5675 "name": "file-stats",
5676 "namespace": "local",
5677 "compact": false,
5678 "flagsPosition": -1,
5679 "fields": [
5680 {
5681 "name": "roomKey",
5682 "required": true,
5683 "type": "@keet/room-key",
5684 "version": 25
5685 },
5686 {
5687 "name": "total",
5688 "required": true,
5689 "type": "uint",
5690 "version": 25
5691 }
5692 ]
5693 },
5694 {
5695 "name": "member-label-type",
5696 "namespace": "keet",
5697 "offset": 1,
5698 "enum": [
5699 {
5700 "key": "Flag",
5701 "version": 26
5702 }
5703 ],
5704 "strings": false
5705 },
5706 {
5707 "name": "member-label",
5708 "namespace": "keet",
5709 "compact": false,
5710 "flagsPosition": -1,
5711 "fields": [
5712 {
5713 "name": "key",
5714 "required": true,
5715 "type": "@keet/member-key",
5716 "version": 26
5717 },
5718 {
5719 "name": "sender",
5720 "required": true,
5721 "type": "@keet/member-key",
5722 "version": 26
5723 },
5724 {
5725 "name": "clock",
5726 "required": true,
5727 "type": "uint",
5728 "version": 26
5729 },
5730 {
5731 "name": "label",
5732 "required": true,
5733 "type": "@keet/member-label-type",
5734 "version": 26
5735 }
5736 ]
5737 },
5738 {
5739 "name": "add-member-label-operation",
5740 "namespace": "keet",
5741 "compact": false,
5742 "flagsPosition": -1,
5743 "fields": [
5744 {
5745 "name": "header",
5746 "required": true,
5747 "type": "@keet/operation-header",
5748 "version": 26
5749 },
5750 {
5751 "name": "key",
5752 "required": true,
5753 "type": "@keet/member-key",
5754 "version": 26
5755 },
5756 {
5757 "name": "label",
5758 "required": true,
5759 "type": "@keet/member-label-type",
5760 "version": 26
5761 }
5762 ]
5763 },
5764 {
5765 "name": "member-label-summary",
5766 "namespace": "keet",
5767 "compact": false,
5768 "flagsPosition": -1,
5769 "fields": [
5770 {
5771 "name": "label",
5772 "required": true,
5773 "type": "@keet/member-label-type",
5774 "version": 26
5775 },
5776 {
5777 "name": "count",
5778 "required": true,
5779 "type": "uint",
5780 "version": 26
5781 }
5782 ]
5783 },
5784 {
5785 "name": "member-label-digest",
5786 "namespace": "keet",
5787 "compact": false,
5788 "flagsPosition": -1,
5789 "fields": [
5790 {
5791 "name": "key",
5792 "required": true,
5793 "type": "@keet/member-key",
5794 "version": 26
5795 },
5796 {
5797 "name": "total",
5798 "required": true,
5799 "type": "uint",
5800 "version": 26
5801 },
5802 {
5803 "name": "labels",
5804 "required": true,
5805 "array": true,
5806 "type": "@keet/member-label-summary",
5807 "version": 26
5808 },
5809 {
5810 "name": "editedAt",
5811 "required": true,
5812 "type": "uint",
5813 "version": 26
5814 },
5815 {
5816 "name": "flagsClock",
5817 "required": true,
5818 "type": "uint",
5819 "version": 26
5820 }
5821 ]
5822 },
5823 {
5824 "name": "location-shared-event",
5825 "namespace": "keet",
5826 "compact": false,
5827 "flagsPosition": -1,
5828 "fields": [
5829 {
5830 "name": "latitude",
5831 "required": true,
5832 "type": "float64",
5833 "version": 27
5834 },
5835 {
5836 "name": "longitude",
5837 "required": true,
5838 "type": "float64",
5839 "version": 27
5840 }
5841 ]
5842 },
5843 {
5844 "name": "move-indexer-operation",
5845 "namespace": "keet",
5846 "compact": false,
5847 "flagsPosition": -1,
5848 "fields": [
5849 {
5850 "name": "header",
5851 "required": true,
5852 "type": "@keet/operation-header",
5853 "version": 27
5854 },
5855 {
5856 "name": "deviceKey",
5857 "required": true,
5858 "type": "@keet/device-key",
5859 "version": 27
5860 },
5861 {
5862 "name": "fromDeviceKey",
5863 "required": true,
5864 "type": "@keet/device-key",
5865 "version": 27
5866 }
5867 ]
5868 },
5869 {
5870 "name": "start-call",
5871 "namespace": "keet",
5872 "compact": false,
5873 "flagsPosition": 3,
5874 "fields": [
5875 {
5876 "name": "header",
5877 "required": true,
5878 "type": "@keet/operation-header",
5879 "version": 28
5880 },
5881 {
5882 "name": "callKey",
5883 "required": true,
5884 "type": "fixed32",
5885 "version": 28
5886 },
5887 {
5888 "name": "encryptionKey",
5889 "required": true,
5890 "type": "@keet/encryption-key",
5891 "version": 28
5892 },
5893 {
5894 "name": "streams",
5895 "array": true,
5896 "type": "@keet/core-key",
5897 "version": 28
5898 },
5899 {
5900 "name": "discoveryKey",
5901 "type": "@keet/room-discovery-key",
5902 "version": 28
5903 },
5904 {
5905 "name": "version",
5906 "type": "uint",
5907 "version": 28
5908 }
5909 ]
5910 },
5911 {
5912 "name": "join-call",
5913 "namespace": "keet",
5914 "compact": false,
5915 "flagsPosition": 2,
5916 "fields": [
5917 {
5918 "name": "header",
5919 "required": true,
5920 "type": "@keet/operation-header",
5921 "version": 28
5922 },
5923 {
5924 "name": "callKey",
5925 "required": true,
5926 "type": "fixed32",
5927 "version": 28
5928 },
5929 {
5930 "name": "streams",
5931 "array": true,
5932 "type": "@keet/core-key",
5933 "version": 28
5934 }
5935 ]
5936 },
5937 {
5938 "name": "leave-call",
5939 "namespace": "keet",
5940 "compact": false,
5941 "flagsPosition": -1,
5942 "fields": [
5943 {
5944 "name": "header",
5945 "required": true,
5946 "type": "@keet/operation-header",
5947 "version": 28
5948 },
5949 {
5950 "name": "callKey",
5951 "required": true,
5952 "type": "fixed32",
5953 "version": 28
5954 }
5955 ]
5956 },
5957 {
5958 "name": "end-call",
5959 "namespace": "keet",
5960 "compact": false,
5961 "flagsPosition": -1,
5962 "fields": [
5963 {
5964 "name": "header",
5965 "required": true,
5966 "type": "@keet/operation-header",
5967 "version": 28
5968 },
5969 {
5970 "name": "callKey",
5971 "required": true,
5972 "type": "fixed32",
5973 "version": 28
5974 }
5975 ]
5976 },
5977 {
5978 "name": "add-call-stream",
5979 "namespace": "keet",
5980 "compact": false,
5981 "flagsPosition": -1,
5982 "fields": [
5983 {
5984 "name": "header",
5985 "required": true,
5986 "type": "@keet/operation-header",
5987 "version": 28
5988 },
5989 {
5990 "name": "callKey",
5991 "required": true,
5992 "type": "fixed32",
5993 "version": 28
5994 },
5995 {
5996 "name": "streamKey",
5997 "required": true,
5998 "type": "@keet/core-key",
5999 "version": 28
6000 }
6001 ]
6002 },
6003 {
6004 "name": "remove-call-stream",
6005 "namespace": "keet",
6006 "compact": false,
6007 "flagsPosition": -1,
6008 "fields": [
6009 {
6010 "name": "header",
6011 "required": true,
6012 "type": "@keet/operation-header",
6013 "version": 28
6014 },
6015 {
6016 "name": "callKey",
6017 "required": true,
6018 "type": "fixed32",
6019 "version": 28
6020 },
6021 {
6022 "name": "streamKey",
6023 "required": true,
6024 "type": "@keet/core-key",
6025 "version": 28
6026 }
6027 ]
6028 },
6029 {
6030 "name": "call-record",
6031 "namespace": "keet",
6032 "compact": false,
6033 "flagsPosition": 3,
6034 "fields": [
6035 {
6036 "name": "callKey",
6037 "required": true,
6038 "type": "fixed32",
6039 "version": 28
6040 },
6041 {
6042 "name": "encryptionKey",
6043 "required": true,
6044 "type": "@keet/encryption-key",
6045 "version": 28
6046 },
6047 {
6048 "name": "createdAt",
6049 "required": true,
6050 "type": "uint",
6051 "version": 28
6052 },
6053 {
6054 "name": "endedAt",
6055 "type": "uint",
6056 "version": 28
6057 },
6058 {
6059 "name": "discoveryKey",
6060 "type": "@keet/room-discovery-key",
6061 "version": 28
6062 },
6063 {
6064 "name": "version",
6065 "type": "uint",
6066 "version": 28
6067 }
6068 ]
6069 },
6070 {
6071 "name": "call-member-record",
6072 "namespace": "keet",
6073 "compact": false,
6074 "flagsPosition": -1,
6075 "fields": [
6076 {
6077 "name": "callKey",
6078 "required": true,
6079 "type": "fixed32",
6080 "version": 28
6081 },
6082 {
6083 "name": "memberKey",
6084 "required": true,
6085 "type": "@keet/member-key",
6086 "version": 28
6087 },
6088 {
6089 "name": "createdAt",
6090 "required": true,
6091 "type": "uint",
6092 "version": 28
6093 }
6094 ]
6095 },
6096 {
6097 "name": "call-device-record",
6098 "namespace": "keet",
6099 "compact": false,
6100 "flagsPosition": 4,
6101 "fields": [
6102 {
6103 "name": "callKey",
6104 "required": true,
6105 "type": "fixed32",
6106 "version": 28
6107 },
6108 {
6109 "name": "deviceKey",
6110 "required": true,
6111 "type": "@keet/device-key",
6112 "version": 28
6113 },
6114 {
6115 "name": "memberKey",
6116 "required": true,
6117 "type": "@keet/member-key",
6118 "version": 28
6119 },
6120 {
6121 "name": "createdAt",
6122 "required": true,
6123 "type": "uint",
6124 "version": 28
6125 },
6126 {
6127 "name": "swarmKey",
6128 "type": "@keet/swarm-key",
6129 "version": 28
6130 }
6131 ]
6132 },
6133 {
6134 "name": "call-stream-record",
6135 "namespace": "keet",
6136 "compact": false,
6137 "flagsPosition": -1,
6138 "fields": [
6139 {
6140 "name": "callKey",
6141 "required": true,
6142 "type": "fixed32",
6143 "version": 28
6144 },
6145 {
6146 "name": "deviceKey",
6147 "required": true,
6148 "type": "@keet/device-key",
6149 "version": 28
6150 },
6151 {
6152 "name": "streamKey",
6153 "required": true,
6154 "type": "buffer",
6155 "version": 28
6156 },
6157 {
6158 "name": "createdAt",
6159 "required": true,
6160 "type": "uint",
6161 "version": 28
6162 }
6163 ]
6164 },
6165 {
6166 "name": "active-call",
6167 "namespace": "local",
6168 "compact": false,
6169 "flagsPosition": 1,
6170 "fields": [
6171 {
6172 "name": "callKey",
6173 "required": true,
6174 "type": "fixed32",
6175 "version": 28
6176 },
6177 {
6178 "name": "selfDeviceKey",
6179 "type": "@keet/device-key",
6180 "version": 28
6181 }
6182 ]
6183 },
6184 {
6185 "name": "file-gc-info",
6186 "namespace": "local",
6187 "compact": false,
6188 "flagsPosition": -1,
6189 "fields": [
6190 {
6191 "name": "lastCleared",
6192 "required": true,
6193 "type": "uint",
6194 "version": 28
6195 }
6196 ]
6197 },
6198 {
6199 "name": "build-type",
6200 "namespace": "keet",
6201 "offset": 1,
6202 "enum": [
6203 {
6204 "key": "Nightly",
6205 "version": 29
6206 },
6207 {
6208 "key": "Internal",
6209 "version": 29
6210 },
6211 {
6212 "key": "Production",
6213 "version": 29
6214 }
6215 ],
6216 "strings": true
6217 },
6218 {
6219 "name": "test-crash-operation",
6220 "namespace": "keet",
6221 "compact": false,
6222 "flagsPosition": -1,
6223 "fields": [
6224 {
6225 "name": "header",
6226 "required": true,
6227 "type": "@keet/operation-header",
6228 "version": 29
6229 }
6230 ]
6231 },
6232 {
6233 "name": "test-dispatch-error-operation",
6234 "namespace": "keet",
6235 "compact": false,
6236 "flagsPosition": -1,
6237 "fields": [
6238 {
6239 "name": "header",
6240 "required": true,
6241 "type": "@keet/operation-header",
6242 "version": 29
6243 }
6244 ]
6245 },
6246 {
6247 "name": "environment-record",
6248 "namespace": "local",
6249 "compact": false,
6250 "flagsPosition": 1,
6251 "fields": [
6252 {
6253 "name": "buildType",
6254 "required": true,
6255 "type": "@keet/build-type",
6256 "version": 29
6257 },
6258 {
6259 "name": "latestOfflineAbi",
6260 "type": "uint",
6261 "version": 30
6262 }
6263 ]
6264 }
6265 ]
6266}
@holepunchto/keet-core/schema/versions.js +1 -0
……@@ -0,0 +1 @@
1const E=1,_={DMS:1,LEAVE_ROOM:2,V2_CONFIG:3,PINNED_MESSAGES:4,ROOM_RENAME_EVENT:5,REPLY_TO:6,PERMISSION_DOWNGRADE:7,REMOVE_MEMBER:8,MUTE_MEMBER:9,V2_PRIVATE_PROFILE:10,ROOM_LOCKING:11,DISABLE_MEMBERSHIP_EVENTS:12,DISPLAY_NAME_VALIDATION:13,CALL_HANGUP_EVENT:14,CALL_MISSED_EVENT:15,UNREADS:16,PRIVATE_PROFILE_SETTINGS:17,READ_LENGTH:18,REMOVE_MEMBER_V2:19,CHAT_LABELS:20,MULTI_FILES:21,REPORTED_MSG_INDEX:22,REPORTED_MEMBER_INDEX:23,LOCATION_SHARED_EVENT:24,FAVORITE_ROOMS:25,FORWARDED_MESSAGE:26,CALLS_V2:27,MOVE_INDEXER:28,DISABLE_FILE_ATTACHMENTS:29,DISABLE_LINKS:30,DM_PEERS_TO_MODS:31,V2_UNREADS:32},e={},R=[{abi:1,features:[_.LEAVE_ROOM,_.V2_CONFIG]},{abi:2,features:[_.PINNED_MESSAGES,_.ROOM_RENAME_EVENT,_.REPLY_TO]},{abi:3,features:[_.MUTE_MEMBER]},{abi:4,features:[_.DMS]},{abi:5,features:[_.PERMISSION_DOWNGRADE]},{abi:6,features:[_.REMOVE_MEMBER]},{abi:7,features:[_.ROOM_LOCKING]},{abi:8,features:[_.V2_PRIVATE_PROFILE]},{abi:9,features:[]},{abi:10,features:[]},{abi:11,features:[]},{abi:12,features:[]},{abi:13,features:[]},{abi:14,features:[]},{abi:15,features:[_.UNREADS]},{abi:16,features:[]},{abi:17,features:[_.PRIVATE_PROFILE_SETTINGS,_.READ_LENGTH,_.REMOVE_MEMBER_V2,_.CHAT_LABELS]},{abi:18,features:[_.MULTI_FILES]},{abi:19,features:[_.REPORTED_MSG_INDEX]},{abi:20,features:[_.REPORTED_MEMBER_INDEX]},{abi:21,features:[_.LOCATION_SHARED_EVENT,_.FAVORITE_ROOMS,_.FORWARDED_MESSAGE]},{abi:22,features:[]},{abi:23,features:[_.CALLS_V2,_.MOVE_INDEXER],autoupgrade:!0},{abi:24,features:[_.DISABLE_FILE_ATTACHMENTS,_.DISABLE_LINKS,_.DM_PEERS_TO_MODS]},{abi:25,features:[]},{abi:26,features:[]},{abi:27,features:[]},{abi:28,features:[_.V2_UNREADS],stable:!0}],a=new Map;let A=-1,M=-1,S=-1;for(const{abi:E,features:_,stable:e,autoupgrade:O}of R){for(const e of _)a.set(e,E);O&&(S=E),e&&(A=E),M=E}for(const[E,R]of Object.entries(_))a.has(R)&&(e[E]=a.get(R));function O(E,_){const e=a.get(_);return!!e&&e<=E}module.exports={isFeatureSupported:O,FEATURES_TO_ABI:e,FEATURES:_,STABLE:A,AUTOUPGRADE:S,EXPERIMENTAL:M,FORCE_UPDATE:1};
@holepunchto/keet-core/workers/core.js +1 -0
……@@ -0,0 +1 @@
1const e=require("tiny-buffer-rpc"),n=require("framed-stream"),t=require("tiny-buffer-rpc/any"),{load:a}=require("#runtime"),r=new n(Bare.IPC),c=new e(e=>r.write(e));r.on("data",e=>c.recv(e));const o=c.register(768,{request:t,response:t});async function s(e){console.log("[uncaught] [boot]",e);const n=JSON.stringify({message:e?.message,code:e?.code,stack:e?.stack,fatal:e?.fatal});await o.request(n)}async function i(){await a(c,s)}Bare.on("uncaughtException",s).on("unhandledRejection",s),i();
@holepunchto/keet-core/workers/desktop.js +1 -0
……@@ -0,0 +1 @@
1const{registerDebugMode:e}=require("@holepunchto/keet-debug-helper"),r=require(".."),o=require("../lib/rpc/server");async function a(a){const n=await Pear.versions(),c=Pear.config.args[0]||Pear.config.storage,l="true"===Pear.config.args[1],s="true"===Pear.config.args[2],t="true"===Pear.config.args[3],g="true"===Pear.config.args[4],i="undefined"===Pear.config.args[5]?void 0:Pear.config.args[5],{keet:p}=r.from(c,{experimental:l,devMirrors:s,devUserRegistry:t,swarming:g,hyperconfKey:i,production:!0,onerror:e=>console.log("background error:",e)}),d=p.backendAPI;await d.ready(),d.ready().then(()=>{e({store:null,call:d.api.call,core:d.api.core},()=>{console.log("Enabled debug mode")}),console.log(`Keet core worker started on ${c}`),console.log(`Platform version: ${n.platform.fork}.${n.platform.length}.${n.platform.key}`),n.app.key?console.log(`App version: ${n.app.fork}.${n.app.length}.${n.app.key}`):console.log("Local version")}).catch(e=>console.error("Failed to start core worker",e)),o(d,a)}module.exports={load:a};
@holepunchto/keet-core/workers/mobile.js +1 -0
……@@ -0,0 +1 @@
1const e=require("tiny-buffer-rpc/any"),a=require(".."),n=require("../lib/rpc/server"),{GENERIC_EVENTS:i}=require("@holepunchto/keet-core-api"),t=require("hypercore-proof-queue"),r=require("b4a"),o=require("xache"),s=require("suspendify"),c=require("fs-native-lock"),{getNotificationBody:u,getNotificationTitle:d}=require("./utils/notification");async function l(l,g){const p=Bare.argv[0],f=Bare.argv[1],y=Bare.argv[2],w="true"===Bare.argv[3],h="store"!==Bare.argv[1]||w,k=h,m="ios"===Bare.platform,b=Math.random().toString(16).slice(2),v="true"===Bare.argv[4],q=Bare.argv[5],B=Bare.argv[6],S=Bare.argv[7],x=Bare.argv[8]?JSON.parse(r.toString(r.from(Bare.argv[8],"base64"))):{},A=x?.strings,I=x.logFile||x.logFilePath||x.fileLogPath,L=x.logFileMaxSize,N=x.logLevel||"info";let C=null,E=0,R=!1;const F=(...e)=>{E++,M.logger.info(b,E,...e)},{keet:M}=a.from(p,{buildType:f,logger:{logFile:I,logLevel:N,logFileMaxSize:L},devMirrors:k,devUserRegistry:h,hyperconfKey:S,production:!0,appVersion:B,apiLogger:F,mobile:!0,storage:{id:y,wait:!0}});function P(e){M.onerror(e)}v&&require("sentry-bare").init({release:q,dsn:"https://cbea8d749dec25aa3e4443fe1ad280b4@o139579.ingest.us.sentry.io/4509075596967936"});const z=M.backendAPI,D=new o({maxSize:1024});F("Started bare worker...");const K=new s({wakeupLinger:6e3,async pollLinger(){const e=await U(),a=Math.round(Math.max(1e3*e-1e4,0));return F("app says we have",a,"left to suspend"),a},async suspend(){try{F("Suspending..."),await H,F("Suspending queue"),await T.suspend(),F("Freeing lock so push can run"),C&&await C.unlock(),C=null,F("Suspending backend"),await z.suspend(),F("Signalling frontend to suspend"),await G.request(!0),K.interrupted?F("interrupted skipping idle"):(F("Asking bare to go Idle"),Bare.idle())}catch(e){F("Caught suspension error: "+e.stack)}},async suspendCancelled(){F("Signalling frontend to suspend (cancelled)"),await G.request(!1)},async presuspend(){F("Presuspending..."),await M.presuspend()},async resume(){await H;try{F("Resuming..."),await z.resume(),F("Acquiring push lock"),await J(),F("Resuming push queue"),await T.resume(),F("Resuming concluded")}catch(e){F("Caught suspension error: "+e.stack)}},async wakeup(){F("Waking up"),await H,F("resuming backend"),await z.resume(),F("backgrounding the core"),await M.wakeup(),F("Wake up done")}});Bare.on("idle",function(){console.log("Bare has fully idled, zzz....")}),Bare.on("suspend",function(e){R=!0,e=Math.max(e-1e4,0),F("Bare suspend, linger",e),null!==z.api.call&&z.api.call.callIsActive||(F("Asking suspendify to suspend"),K.suspend(e))}),Bare.on("resume",function(){F("Bare resume"),R=!1,K.resume()}),Bare.on("wakeup",function(){F("Bare wakeup"),K.wakeup()}),n(z,l);const T=new t(`${p}/notifications`,async function(e){try{!1===z.opened&&await z.ready(),F("Draining notification handler, got",e.length,"proofs"),z.api.core.setProcessingNotifications(!0);const a=M.rootCorestore,n=new Set;for(const i of e){const e=a.get({discoveryKey:i.discoveryKey});try{await e.ready(),i.data.block&&e.length===i.data.block.index&&i.data.upgrade&&(i.data.block.nodes=[],i.data.upgrade.start=e.length,i.data.upgrade.length=1,i.data.upgrade.nodes=[]),await e.core.verify(i.data,null),n.add(r.toString(i.discoveryKey,"hex"))}catch(e){F("Ignoring proof update due to:",e.message)}try{await e.close()}catch{}}for(const e of n)F("Waking up",e),M.scheduleDiscoverySwarmingFromDiscoveryKey(r.from(e,"hex"));F("Draining notification complete")}catch(e){F("Error handling notifications queue",e)}finally{F("Draining notification complete, enabling notifications"),z.api.core.setProcessingNotifications(!1)}}),_=l.register(512,{request:e,response:e}),W=l.register(1280,{request:e,response:e}),j=l.register(1536,{request:e,response:e}),G=l.register(2816,{request:e,response:e}),U=()=>m?W.request({}):30,V=e=>_.request(e),$=()=>j.request(),H=async function(){F("Booting backend"),await z.ready(),Bare.off("uncaughtException",g).off("unhandledRejection",g),Bare.on("uncaughtException",P).on("unhandledRejection",P),F("Backend ready"),await J(),F("Acquired push lock")}();async function J(){C&&await C.unlock(),C=new c(`${p}/lock`,{wait:!0}),await C.lock()}!async function(){F("await booting in notifications"),await H,z.api.call.on("call-active",function(){R&&(F("Call started in bg, resuming"),K.resume())}),z.api.call.on("call-inactive",function(){R&&(F("Call ended in bg, suspending"),z.api.call.callIsActive||(F("suspending now in 5000"),K.suspend(5e3)))}),F("subscribing to notifications");const e=await z.api.core.subscribeNotifications();for await(const a of e)switch(a.type){case i.CALL_HANGUP:F("stopping call ring"),await $(),!z.api.call.callIsActive&&R&&(F("call hangup - suspending 5000"),K.suspend(5e3));break;case i.CALL_STARTED:F("suspending"),R&&K.suspend();break;default:if(!R){F("Not backgrounded, dropping");continue}if(D.get(a.id)){F("message is in cache already, dropping",a.id);continue}if(D.set(a.id,!0),a.strings=A,a.message){const e={id:a.id,threadIdentifier:a.roomId,avatar:a.avatar,title:d(a),body:u(a),userInfo:a.userInfo,sound:{type:"named",name:"notif_default.wav"}};F("sending push notification"),V(e);break}F("skipping push notification, no message")}}()}module.exports={load:l};
@holepunchto/keet-core/workers/push.js +1 -0
……@@ -0,0 +1 @@
1const e=require("hypercore-id-encoding"),o=require("hypercore-proof-queue"),s=require("fs-native-lock"),i=require("b4a"),{getNotificationBody:n,getNotificationTitle:t,ROOM_TYPE:a,MESSAGE_TYPE:r}=require("./utils/notification.js"),l=require("../lib/push"),u=Bare.argv[0],p=Bare.argv[1],c=JSON.parse(i.toString(i.from(p,"base64"),"utf8")),g=(...e)=>console.log("[keet-push]",...e);BareKit.on("push",async(p,f)=>{const d=new s(`${u}/lock`);try{await d.lock()}catch{return g("skipping push cause lock can not be acquired (app is running)"),f(null,null)}g("running push handler");try{const s=JSON.parse(p.toString()),d=s.data?s.data.payload:s.payload,m=await l(u,Buffer.from(d,"base64"),{log:g});if(g("result",m),null===m)return g("skipping push cause no result"),f(null,null);if(m.proof){g("processing proof queue");const e=new o(`${u}/notifications`);e.push(m.proof),await e.close(),g("done processing proof queue")}const{sender:y,room:{key:h,title:k,type:b}}=m,q=e.encode(h),{type:S}=m.message,w={title:k,roomType:b},v=b===a.DM,B=b===a.BROADCAST,N=v&&S===r.CALL_JOINED;if(y.self&&!N||y.blocked||!m.message)return g("skipping push, self="+!!y.self+" blocked="+!!y.blocked+" message="+!!m.message),f(null,null);y.self&&N&&g("not skipping self push because message type is call_joined, to hangup call on this linked device");const O=t({sender:y,config:w}),T=n({...m,config:w,strings:c}),A=m?.room?.roomAvatar?.small?.pointer?.inlined,E=A?i.toString(A,"base64"):"";g("replying with push, title="+O+" body="+T),f(null,JSON.stringify({id:m.id,title:O,body:T,type:m.message.type,timestamp:m.message.timestamp,threadIdentifier:q,avatar:E,userInfo:{roomKey:q,isDmRoom:v,isBroadcast:B,messageType:S,profileName:y.name},sound:{type:"named",name:"notif_default.wav"}}))}catch(e){g("error",e.message),f(e,null)}finally{await d.unlock()}});
@holepunchto/keet-core/workers/utils/notification.js +1 -0
……@@ -0,0 +1 @@
1const e={sharedImage:"shared an image 🖼️",sharedVideo:"shared a video 📹",sharedFile:"shared a file 📁",callStarted:"has started a call 📞",sharedAudio:"Shared an audio 🔊",sharedVoice:"Shared a voice message 🎤",sharedLink:"Shared a link 🔗"},t={ROOM:"0",BROADCAST:"1",DM:"2"},r={CALL_JOINED:"call_joined"},i=e=>{try{const t=e.startsWith("www.")?`https://${e}`:e,r=new URL(t);return"http:"===r.protocol||"https:"===r.protocol}catch{return!1}},a=e=>{if(!e||"string"!=typeof e)return!1;const t=e.trim();return!/\s/.test(t)&&i(t)},s=({roomType:e,title:r})=>e?{isChannel:e===t.BROADCAST,isDm:e===t.DM||!r}:{isChannel:!1,isDm:!1},n=({sender:e,config:t})=>{const{isDm:r}=s(t);return r?e.name:t.title},o=({message:t,sender:r,config:i,strings:n})=>{const o=n||e,{type:d,chatText:h,fileType:l}=t,{name:c}=r,g=c?.split("\n").join(" ")||"👋",u="call"===d,{isDm:m,isChannel:f}=s(i),S=(()=>{if(h)return a(h)?o.sharedLink:h;if("file"===d&&l){if(String(l).startsWith("image/"))return o.sharedImage;if(String(l).startsWith("video/"))return o.sharedVideo;if(String(l).startsWith("audio/x-m4a"))return o.sharedVoice;if(String(l).startsWith("audio/"))return o.sharedAudio}return u?m?o.callStarted:`${g} ${o.callStarted}`:o.sharedFile})();return m||f||u?S:`${g}: ${S}`};module.exports={ROOM_TYPE:t,MESSAGE_TYPE:r,getRoomTypeFlags:s,getNotificationTitle:n,getNotificationBody:o};
@holepunchto/keet-unread-anchors/.gitattributes +1 -0
……@@ -0,0 +1 @@
1* text=auto eol=lf
@holepunchto/keet-unread-anchors/.github/workflows/test-node.yml +23 -0
……@@ -0,0 +1,23 @@
1name: Build Status
2on:
3 push:
4 branches:
5 - main
6 pull_request:
7 branches:
8 - main
9jobs:
10 build:
11 strategy:
12 matrix:
13 node-version: [lts/*]
14 os: [ubuntu-latest, macos-latest, windows-latest]
15 runs-on: ${{ matrix.os }}
16 steps:
17 - uses: actions/checkout@v3
18 - name: Use Node.js ${{ matrix.node-version }}
19 uses: actions/setup-node@v3
20 with:
21 node-version: ${{ matrix.node-version }}
22 - run: npm install
23 - run: npm test
@holepunchto/keet-unread-anchors/.prettierrc +1 -0
……@@ -0,0 +1 @@
1"prettier-config-holepunch"
@holepunchto/keet-unread-anchors/LICENSE +21 -0
……@@ -0,0 +1,21 @@
1The MIT License (MIT)
2
3Copyright (c) 2024 Mathias Buus
4
5Permission is hereby granted, free of charge, to any person obtaining a copy
6of this software and associated documentation files (the "Software"), to deal
7in the Software without restriction, including without limitation the rights
8to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9copies of the Software, and to permit persons to whom the Software is
10furnished to do so, subject to the following conditions:
11
12The above copyright notice and this permission notice shall be included in
13all copies or substantial portions of the Software.
14
15THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21THE SOFTWARE.
@holepunchto/keet-unread-anchors/build.js +1 -31
……@@ -1,31 +1 @@
1const Hyperschema = require('hyperschema')
2
3const schema = Hyperschema.from('./spec/hyperschema')
4
5const ns = schema.namespace('keet-unreads')
6
7ns.register({
8 name: 'unread-anchors',
9 fields: [
10 {
11 name: 'timestamp',
12 type: 'uint'
13 },
14 {
15 name: 'length',
16 type: 'uint'
17 }
18 ]
19})
20
21ns.register({
22 name: 'info',
23 fields: [
24 {
25 name: 'updated',
26 type: 'uint'
27 }
28 ]
29})
30
31Hyperschema.toDisk(schema)
1const e=require("hyperschema"),n=e.from("./spec/hyperschema"),t=n.namespace("keet-unreads");t.register({name:"unread-anchors",fields:[{name:"timestamp",type:"uint"},{name:"length",type:"uint"}]}),t.register({name:"info",fields:[{name:"updated",type:"uint"}]}),e.toDisk(n);
@holepunchto/keet-unread-anchors/index.js +1 -231
……@@ -1,231 +1 @@
1const Hyperbee = require('hyperbee2')
2const ReadyResource = require('ready-resource')
3const b4a = require('b4a')
4const c = require('compact-encoding')
5const { getEncoding } = require('./spec/hyperschema')
6
7const InfoKey = b4a.from([0])
8const UnreadAchorsMessage = getEncoding('@keet-unreads/unread-anchors')
9const InfoMessage = getEncoding('@keet-unreads/info')
10
11class WriteBatch {
12 constructor(unreads) {
13 this.unreads = unreads
14 this.ops = []
15 }
16
17 tryPut(key, { timestamp = Date.now(), length = 0 }) {
18 this.ops.push({ key, value: { timestamp, length } })
19 }
20
21 tryDelete(key) {
22 this.ops.push({ key, value: null })
23 }
24
25 async flush() {
26 if (!this.ops.length) return
27
28 await this.unreads.ready()
29 const head = await this.unreads._getHead()
30
31 const w = this.unreads.db.write(head)
32
33 for (const { key, value } of this.ops) {
34 const k = b4a.concat([b4a.from([1]), key])
35
36 if (value) {
37 w.tryPut(k, c.encode(UnreadAchorsMessage, value))
38 } else {
39 w.tryDelete(k)
40 }
41 }
42
43 w.tryPut(InfoKey, c.encode(InfoMessage, { updated: Date.now() }))
44 await w.flush()
45 }
46}
47
48module.exports = class UnreadAchors extends ReadyResource {
49 constructor(store, keys = [], opts = {}) {
50 super()
51
52 const {
53 encryptionKey,
54 encryption = encryptionKey ? { key: encryptionKey } : null,
55 name = 'local-unread',
56 local = store.get({ name, encryption }),
57 blindPeering = null,
58 target = null
59 } = opts
60
61 this.store = store
62 this.blindPeering = blindPeering
63 this.target = target
64 this.encryption = encryption
65 this.keys = keys.slice(0) // copy cause we mutate it
66 this.local = local
67 this.db = new Hyperbee(this.store, { core: this.local, encryption: this.encryption })
68 this.views = []
69 }
70
71 async addWriter(key) {
72 if (!this.opened) await this.ready()
73
74 if (b4a.equals(key, this.local.key)) return
75 for (const k of this.keys) {
76 if (b4a.equals(k, key)) return
77 }
78 this.keys.push(key)
79 const v = this.db.checkout({ key, length: 0 })
80 this.views.push(v)
81 await this._initView(v)
82 }
83
84 async removeWriter(key) {
85 if (!this.opened) await this.ready()
86
87 for (let i = 0; i < this.keys.length; i++) {
88 const k = this.keys[i]
89 const v = this.views[i]
90 if (!b4a.equals(k, key)) continue
91 this.keys.splice(i, 1)
92 this.views.splice(i, 1)
93 await v.close()
94 }
95 }
96
97 async _initView(v) {
98 await v.ready()
99
100 v.core.on('append', () => {
101 v.update()
102 this.emit('update')
103 if (v.core !== this.local) this.emit('remote-update')
104 })
105
106 v.update()
107 }
108
109 async _open() {
110 await this.local.ready()
111
112 this.views.push(this.db)
113 const added = new Set([b4a.toString(this.db.core.key, 'hex')])
114
115 for (const key of this.keys) {
116 const k = b4a.toString(key, 'hex')
117 if (added.has(k)) continue
118 added.add(k)
119 this.views.push(this.db.checkout({ key, length: 0 }))
120 }
121
122 for (const v of this.views) {
123 await this._initView(v)
124 }
125
126 if (this.blindPeering) {
127 const target = await this.target // support async flows
128 this.blindPeering.addCoreBackground(this.local, target)
129 }
130 }
131
132 async _close() {
133 for (let i = this.views.length - 1; i >= 0; i--) {
134 await this.views[i].close()
135 }
136 await this.local.close()
137 await this.store.close()
138 }
139
140 write() {
141 return new WriteBatch(this)
142 }
143
144 async get(key) {
145 if (!this.opened) await this.ready()
146
147 const k = b4a.concat([b4a.from([1]), key])
148
149 const promises = new Array(this.views.length)
150 for (let i = 0; i < promises.length; i++) {
151 const v = this.views[i]
152 promises[i] = v.get(k).catch(toNull)
153 }
154
155 const nodes = await Promise.all(promises)
156
157 let max = null
158
159 for (const n of nodes) {
160 if (!n) continue
161 const val = c.decode(UnreadAchorsMessage, n.value)
162 if (!max || max.timestamp < val.timestamp) max = val
163 }
164
165 return max
166 }
167
168 async put(key, { timestamp = Date.now(), length = 0 }) {
169 if (!this.opened) await this.ready()
170
171 const head = await this._getHead()
172 const current = await this.get(key)
173
174 if (current && current.length >= length) return
175
176 const w = this.db.write(head)
177 const k = b4a.concat([b4a.from([1]), key])
178
179 w.tryPut(k, c.encode(UnreadAchorsMessage, { timestamp, length }))
180 w.tryPut(InfoKey, c.encode(InfoMessage, { updated: Date.now() }))
181
182 await w.flush()
183 }
184
185 async delete(key) {
186 if (!this.opened) await this.ready()
187
188 const head = await this._getHead()
189 const current = await this.get(key)
190
191 if (!current) return
192
193 const w = this.db.write(head)
194 const k = b4a.concat([b4a.from([1]), key])
195
196 w.tryDelete(k)
197 w.tryPut(InfoKey, c.encode(InfoMessage, { updated: Date.now() }))
198
199 return w.flush()
200 }
201
202 async _getHead() {
203 const promises = new Array(this.views.length)
204
205 for (let i = 0; i < promises.length; i++) {
206 const v = this.views[i]
207 promises[i] = v.get(InfoKey).catch(toNull)
208 }
209
210 let max = null
211 let head = { key: this.local.key, length: this.local.length }
212
213 const nodes = await Promise.all(promises)
214
215 for (const n of nodes) {
216 if (!n) continue
217 const val = c.decode(InfoMessage, n.value)
218 if (!max || max.updated < val.updated) {
219 max = val
220 head.key = n.context.core.key
221 head.length = n.context.core.length
222 }
223 }
224
225 return head
226 }
227}
228
229function toNull() {
230 return null
231}
1const t=require("hyperbee2"),e=require("ready-resource"),s=require("b4a"),i=require("compact-encoding"),{getEncoding:n}=require("./spec/hyperschema"),a=s.from([0]),o=n("@keet-unreads/unread-anchors"),r=n("@keet-unreads/info"),h=5e3,c=2,l=0;class u{constructor(t){this.unreads=t,this.ops=[]}tryPut(t,{timestamp:e=Date.now(),length:s=0}){this.ops.push({key:t,value:{timestamp:e,length:s}})}tryDelete(t){this.ops.push({key:t,value:null})}async flush(){if(!this.ops.length)return;await this.unreads.ready();const t=await this.unreads._getHead(),e=this.unreads.db.write({...t,type:0,timeout:h});for(const{key:t,value:n}of this.ops){const a=s.concat([s.from([1]),t]);n?e.tryPut(a,i.encode(o,n)):e.tryDelete(a)}e.tryPut(a,i.encode(r,{updated:Date.now()})),await e.flush()}}function d(){return null}module.exports=class extends e{constructor(e,s=[],i={}){super();const{encryptionKey:n,encryption:a=(n?{key:n}:null),name:o="local-unread",local:r=e.get({name:o,encryption:a}),blindPeering:h=null,target:c=null}=i;this.store=e,this.blindPeering=h,this.target=c,this.encryption=a,this.keys=s.slice(0),this.local=r,this.db=new t(this.store,{core:this.local,encryption:this.encryption,t:5}),this.views=[]}async addWriter(t){if(this.opened||await this.ready(),s.equals(t,this.local.key))return;for(const e of this.keys)if(s.equals(e,t))return;this.keys.push(t);const e=this.db.checkout({key:t,length:0});this.views.push(e),await this._initView(e)}async removeWriter(t){this.opened||await this.ready();for(let e=0;e<this.keys.length;e++){const i=this.keys[e],n=this.views[e];s.equals(i,t)&&(this.keys.splice(e,1),this.views.splice(e,1),await n.close())}}async _initView(t){await t.ready(),t.core.on("append",()=>{t.update(),this.emit("update"),t.core!==this.local&&this.emit("remote-update")}),t.update()}async _open(){await this.local.ready(),this.views.push(this.db);const t=new Set([s.toString(this.db.core.key,"hex")]);for(const e of this.keys){const i=s.toString(e,"hex");t.has(i)||(t.add(i),this.views.push(this.db.checkout({key:e,length:0})))}for(const t of this.views)await this._initView(t);if(this.blindPeering){const t=await this.target;this.blindPeering.addCoreBackground(this.local,{target:t,pick:2})}}async _close(){for(let t=this.views.length-1;t>=0;t--)await this.views[t].close();await this.local.close(),await this.store.close()}write(){return new u(this)}async get(t){this.opened||await this.ready();const e=s.concat([s.from([1]),t]),n=new Array(this.views.length);for(let t=0;t<n.length;t++){const s=this.views[t];n[t]=s.get(e,{timeout:h}).catch(d)}const a=await Promise.all(n);let r=null;for(const t of a){if(!t)continue;const e=i.decode(o,t.value);(!r||r.timestamp<e.timestamp)&&(r=e)}return r}async reset(){this.opened||await this.ready();const t=this.db.write({key:this.local.key,length:0,type:0,timeout:h});t.tryPut(a,i.encode(r,{updated:Date.now()})),await t.flush()}async put(t,{timestamp:e=Date.now(),length:n=0}){this.opened||await this.ready();const c=await this._getHead(),l=await this.get(t);if(l&&l.length>=n)return;const u=this.db.write({...c,type:0,timeout:h}),d=s.concat([s.from([1]),t]);u.tryPut(d,i.encode(o,{timestamp:e,length:n})),u.tryPut(a,i.encode(r,{updated:Date.now()})),await u.flush()}async delete(t){this.opened||await this.ready();const e=await this._getHead();if(!await this.get(t))return;const n=this.db.write({...e,type:0,timeout:h}),o=s.concat([s.from([1]),t]);return n.tryDelete(o),n.tryPut(a,i.encode(r,{updated:Date.now()})),n.flush()}async _getHead(){const t=new Array(this.views.length);for(let e=0;e<t.length;e++){const s=this.views[e];t[e]=s.get(a,{timeout:h}).catch(d)}let e=null,s={key:this.local.key,length:this.local.length};const n=await Promise.all(t);for(const t of n){if(!t)continue;const n=i.decode(r,t.value);(!e||e.updated<n.updated)&&(e=n,s.key=t.core.key,s.length=t.core.length)}return s}};
@holepunchto/keet-unread-anchors/package.json +5 -5
……@@ -1,11 +1,11 @@
11{
22 "name": "@holepunchto/keet-unread-anchors",
3 "version": "1.5.2",
3 "version": "2.0.0",
44 "description": "Unread anchors",
55 "main": "index.js",
66 "dependencies": {
77 "b4a": "^1.7.3",
8 "hyperbee2": "^1.0.0",
8 "hyperbee2": "^2.3.0",
99 "hyperschema": "^1.17.0",
1010 "ready-resource": "^1.2.0"
1111 },
……@@ -15,14 +15,14 @@
1515 },
1616 "repository": {
1717 "type": "git",
18 "url": "https://github.com/holepunchto/keet-unreads-anchors.git"
18 "url": "https://github.com/holepunchto/keet-unread-anchors.git"
1919 },
2020 "author": "Holepunch Inc",
2121 "license": "UNLICENSED",
2222 "bugs": {
23 "url": "https://github.com/holepunchto/keet-unreads-anchors/issues"
23 "url": "https://github.com/holepunchto/keet-unread-anchors/issues"
2424 },
25 "homepage": "https://github.com/holepunchto/keet-unreads-anchors",
25 "homepage": "https://github.com/holepunchto/keet-unread-anchors",
2626 "devDependencies": {
2727 "corestore": "^7.5.0",
2828 "prettier": "^3.6.2",
@holepunchto/keet-unread-anchors/spec/hyperschema/index.js +1 -124
……@@ -1,124 +1 @@
1// This file is autogenerated by the hyperschema compiler
2// Schema Version: 1
3/* eslint-disable camelcase */
4/* eslint-disable quotes */
5/* eslint-disable space-before-function-paren */
6
7const { c } = require('hyperschema/runtime')
8
9const VERSION = 1
10
11// eslint-disable-next-line no-unused-vars
12let version = VERSION
13
14// @keet-unreads/unread-anchors
15const encoding0 = {
16 preencode(state, m) {
17 state.end++ // max flag is 2 so always one byte
18
19 if (m.timestamp) c.uint.preencode(state, m.timestamp)
20 if (m.length) c.uint.preencode(state, m.length)
21 },
22 encode(state, m) {
23 const flags = (m.timestamp ? 1 : 0) | (m.length ? 2 : 0)
24
25 c.uint.encode(state, flags)
26
27 if (m.timestamp) c.uint.encode(state, m.timestamp)
28 if (m.length) c.uint.encode(state, m.length)
29 },
30 decode(state) {
31 const flags = c.uint.decode(state)
32
33 return {
34 timestamp: (flags & 1) !== 0 ? c.uint.decode(state) : 0,
35 length: (flags & 2) !== 0 ? c.uint.decode(state) : 0
36 }
37 }
38}
39
40// @keet-unreads/info
41const encoding1 = {
42 preencode(state, m) {
43 state.end++ // max flag is 1 so always one byte
44
45 if (m.updated) c.uint.preencode(state, m.updated)
46 },
47 encode(state, m) {
48 const flags = m.updated ? 1 : 0
49
50 c.uint.encode(state, flags)
51
52 if (m.updated) c.uint.encode(state, m.updated)
53 },
54 decode(state) {
55 const flags = c.uint.decode(state)
56
57 return {
58 updated: (flags & 1) !== 0 ? c.uint.decode(state) : 0
59 }
60 }
61}
62
63function setVersion(v) {
64 version = v
65}
66
67function encode(name, value, v = VERSION) {
68 version = v
69 return c.encode(getEncoding(name), value)
70}
71
72function decode(name, buffer, v = VERSION) {
73 version = v
74 return c.decode(getEncoding(name), buffer)
75}
76
77function getEnum(name) {
78 switch (name) {
79 default:
80 throw new Error('Enum not found ' + name)
81 }
82}
83
84function getEncoding(name) {
85 switch (name) {
86 case '@keet-unreads/unread-anchors':
87 return encoding0
88 case '@keet-unreads/info':
89 return encoding1
90 default:
91 throw new Error('Encoder not found ' + name)
92 }
93}
94
95function getStruct(name, v = VERSION) {
96 const enc = getEncoding(name)
97 return {
98 preencode(state, m) {
99 version = v
100 enc.preencode(state, m)
101 },
102 encode(state, m) {
103 version = v
104 enc.encode(state, m)
105 },
106 decode(state) {
107 version = v
108 return enc.decode(state)
109 }
110 }
111}
112
113const resolveStruct = getStruct // compat
114
115module.exports = {
116 resolveStruct,
117 getStruct,
118 getEnum,
119 getEncoding,
120 encode,
121 decode,
122 setVersion,
123 version
124}
1const{c:e}=require("hyperschema/runtime"),n=1;let t=1;const d={preencode(n,t){n.end++,t.timestamp&&e.uint.preencode(n,t.timestamp),t.length&&e.uint.preencode(n,t.length)},encode(n,t){const d=(t.timestamp?1:0)|(t.length?2:0);e.uint.encode(n,d),t.timestamp&&e.uint.encode(n,t.timestamp),t.length&&e.uint.encode(n,t.length)},decode(n){const t=e.uint.decode(n);return{timestamp:1&t?e.uint.decode(n):0,length:2&t?e.uint.decode(n):0}}},o={preencode(n,t){n.end++,t.updated&&e.uint.preencode(n,t.updated)},encode(n,t){const d=t.updated?1:0;e.uint.encode(n,d),t.updated&&e.uint.encode(n,t.updated)},decode:n=>({updated:1&e.uint.decode(n)?e.uint.decode(n):0})};function c(e){t=e}function u(n,d,o=1){return t=o,e.encode(s(n),d)}function r(n,d,o=1){return t=o,e.decode(s(n),d)}function i(e){throw new Error("Enum not found "+e)}function s(e){switch(e){case"@keet-unreads/unread-anchors":return d;case"@keet-unreads/info":return o;default:throw new Error("Encoder not found "+e)}}function p(e,n=1){const d=s(e);return{preencode(e,o){t=n,d.preencode(e,o)},encode(e,o){t=n,d.encode(e,o)},decode:e=>(t=n,d.decode(e))}}const a=p;module.exports={resolveStruct:a,getStruct:p,getEnum:i,getEncoding:s,encode:u,decode:r,setVersion:c,version:t};
keet-daemon +1 -1
……@@ -1 +1 @@
1Subproject commit 7d3427c4bb17487434c896ff76bd72021ca59232
1Subproject commit 65d1bb2e69ea2fd8f017b2d608306659fe365718