!function e(t,n,r){function o(s,a){if(!n[s]){if(!t[s]){var u="function"==typeof require&&require;if(!a&&u)return u(s,!0);if(i)return i(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var l=n[s]={exports:{}};t[s][0].call(l.exports,function(e){var n=t[s][1][e];return o(n||e)},l,l.exports,e,t,n,r)}return n[s].exports}for(var i="function"==typeof require&&require,s=0;s1?n-1:0),o=1;o1&&a(t,n,F.QUEUED),r||(r=u(e,n)),r}).then(function(e){return t&&t.updatePendingEvent(n,F.SENT,e.event_id),r&&r(null,e),e},function(e){console.error("Error sending event",e.stack||e);try{a(t,n,F.NOT_SENT),n.error=e,r&&r(e)}catch(t){console.error("Exception in error handler!",t.stack||e)}throw e})}function s(e,t,n){if(t.isEncrypted())return null;if(!e.isRoomEncrypted(t.getRoomId()))return null;if(!e._crypto)throw new Error("This room is configured to use encryption, but your client does not support encryption.");return e._crypto.encryptEvent(t,n)}function a(e,t,n){e?e.updatePendingEvent(t,n):t.status=n}function u(e,t){var n=t._txnId?t._txnId:e.makeTxnId(),r={$roomId:t.getRoomId(),$eventType:t.getWireType(),$stateKey:t.getStateKey(),$txnId:n},o=void 0;if(t.isState()){var i="/rooms/$roomId/state/$eventType";t.getStateKey()&&t.getStateKey().length>0&&(i="/rooms/$roomId/state/$eventType/$stateKey"),o=N.encodeUri(i,r)}else o=N.encodeUri("/rooms/$roomId/send/$eventType/$txnId",r);return e._http.authedRequest(void 0,"PUT",o,void 0,t.getWireContent()).then(function(e){return console.log("Event sent to "+t.getRoomId()+" with event id "+e.event_id),e})}function c(e,t,n,r,o,i){N.isFunction(o)&&(i=o,o=void 0);var s=N.encodeUri("/rooms/$roomId/state/m.room.member/$userId",{$roomId:t,$userId:n});return e._http.authedRequest(i,"PUT",s,void 0,{membership:r,reason:o})}function l(e,t,n,r,o,i){N.isFunction(o)&&(i=o,o=void 0);var s=N.encodeUri("/rooms/$room_id/$membership",{$room_id:t,$membership:r});return e._http.authedRequest(i,"POST",s,void 0,{user_id:n,reason:o})}function d(e,t,n,r){var o=N.encodeUri("/presence/list/$userId",{$userId:t.credentials.userId});return t._http.authedRequest(e,r,o,void 0,n)}function p(e){function t(e){return 0!==e.getType().indexOf("m.call.")?void((e.isBeingDecrypted()||e.isDecryptionFailure())&&e.once("Event.decrypted",t)):i?void n(e):void o.push(e)}function n(t){var n=t.getContent(),o=n.call_id?e.callList[n.call_id]:void 0,i=void 0;if("m.call.invite"===t.getType()){if(t.getSender()===e.credentials.userId)return;if(t.getAge()>n.lifetime)return;if(o&&"ended"===o.state)return;if(o&&console.log("WARN: Already have a MatrixCall with id %s but got an invite. Clobbering.",n.call_id),!(o=L.createNewMatrixCall(e,t.getRoomId())))return void console.log("Incoming call ID "+n.call_id+" but this client doesn't support WebRTC");if(o.callId=n.call_id,o._initWithInvite(t),e.callList[o.callId]=o,r[o.callId])for(i=0;io.callId?(console.log("Glare detected: answering incoming call "+o.callId+" and canceling outgoing call "+s.callId),s._replacedBy(o),o.answer()):(console.log("Glare detected: rejecting incoming call "+o.callId+" and keeping outgoing call "+s.callId),o.hangup()):e.emit("Call.incoming",o)}else if("m.call.answer"===t.getType()){if(!o)return;t.getSender()===e.credentials.userId?"ringing"===o.state&&o._onAnsweredElsewhere(n):o._receivedAnswer(n)}else if("m.call.candidates"===t.getType()){if(t.getSender()===e.credentials.userId)return;if(o)for(i=0;i=0;r--){var s=o[r];"m.call.answer"!==s.getType()&&"m.call.hangup"!==s.getType()||(t[s.getContent().call_id]="yep")}o.forEach(function(e){if(t[e.getContent().call_id])return void console.log("Ignoring previously answered/hungup call "+e.getContent().call_id);n(e)}),o=[]}}),e.on("event",t)}function h(e){e._supportsVoip&&(e.isGuest()||e.turnServer().done(function(t){if(t.uris){console.log("Got TURN URIs: "+t.uris+" refresh in "+t.ttl+" secs");var n={urls:t.uris,username:t.username,credential:t.password};e._turnServers=[n],e._checkTurnServersTimeoutID=setTimeout(function(){h(e)},1e3*(t.ttl||3600)*.9)}},function(t){console.error("Failed to get TURN URIs"),e._checkTurnServersTimeoutID=setTimeout(function(){h(e)},6e4)}))}function f(e,t,n){e&&e(n),t.reject(n)}function v(e,t,n){e&&e(null,n),t.resolve(n)}function m(e){function t(t){var n=new P(t);return n.isEncrypted()&&(e.reEmitter.reEmit(n,["Event.decrypted"]),n.attemptDecryption(e._crypto)),n}return t}var _=e("babel-runtime/core-js/object/assign"),y=r(_),g=e("babel-runtime/core-js/json/stringify"),b=r(g),E=e("babel-runtime/core-js/object/keys"),w=r(E),S=e("bluebird"),k=r(S),R=e("babel-runtime/regenerator"),T=r(R),x=function(){var e=(0,S.coroutine)(T.default.mark(function e(t,n,r,o,i,s){var a;return T.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t._crypto){e.next=2;break}throw new Error("End-to-End encryption disabled");case 2:return e.next=4,(0,S.resolve)(t._crypto.setDeviceVerification(n,r,o,i,s));case 4:a=e.sent,t.emit("deviceVerificationChanged",n,r,a);case 6:case"end":return e.stop()}},e,this)}));return function(t,n,r,o,i,s){return e.apply(this,arguments)}}(),I=e("./ReEmitter"),C=r(I),j=e("./pushprocessor"),D=e("events").EventEmitter,O=e("url"),A=e("./http-api"),P=e("./models/event").MatrixEvent,F=e("./models/event").EventStatus,M=e("./models/event-timeline"),U=e("./models/search-result"),q=e("./store/stub"),L=e("./webrtc/call"),N=e("./utils"),K=e("./content-repo"),B=e("./filter"),G=e("./sync"),$=e("./base-apis"),V=A.MatrixError,W=!1;try{var H=e("./crypto");W=!0}catch(e){console.warn("Unable to load crypto module: crypto will be disabled: "+e)}N.inherits(o,D),N.extend(o.prototype,$.prototype),o.prototype.clearStores=function(){if(this._clientRunning)throw new Error("Cannot clear stores while client is running");var e=[];return e.push(this.store.deleteAllData()),this._cryptoStore&&e.push(this._cryptoStore.deleteAllData()),k.default.all(e)},o.prototype.getUserId=function(){return this.credentials&&this.credentials.userId?this.credentials.userId:null},o.prototype.getDomain=function(){return this.credentials&&this.credentials.userId?this.credentials.userId.replace(/^.*?:/,""):null},o.prototype.getUserIdLocalpart=function(){return this.credentials&&this.credentials.userId?this.credentials.userId.split(":")[0].substring(1):null},o.prototype.getDeviceId=function(){return this.deviceId},o.prototype.supportsVoip=function(){return this._supportsVoip},o.prototype.getSyncState=function(){return this._syncApi?this._syncApi.getSyncState():null},o.prototype.isGuest=function(){return this._isGuest},o.prototype.getScheduler=function(){return this.scheduler},o.prototype.setGuest=function(e){this._isGuest=e},o.prototype.retryImmediately=function(){return this._syncApi.retryImmediately()},o.prototype.getNotifTimelineSet=function(){return this._notifTimelineSet},o.prototype.setNotifTimelineSet=function(e){this._notifTimelineSet=e},o.prototype.initCrypto=(0,S.coroutine)(T.default.mark(function e(){var t,n;return T.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._crypto){e.next=3;break}return console.warn("Attempt to re-initialise e2e encryption on MatrixClient"),e.abrupt("return");case 3:if(W){e.next=5;break}throw new Error("End-to-end encryption not supported in this js-sdk build: did you remember to load the olm library?");case 5:if(this._sessionStore){e.next=7;break}throw new Error("Cannot enable encryption: no sessionStore provided");case 7:if(this._cryptoStore){e.next=9;break}throw new Error("Cannot enable encryption: no cryptoStore provided");case 9:if(null!==(t=this.getUserId())){e.next=12;break}throw new Error("Cannot enable encryption on MatrixClient with unknown userId: ensure userId is passed in createClient().");case 12:if(null!==this.deviceId){e.next=14;break}throw new Error("Cannot enable encryption on MatrixClient with unknown deviceId: ensure deviceId is passed in createClient().");case 14:return n=new H(this,this._sessionStore,t,this.deviceId,this.store,this._cryptoStore),this.reEmitter.reEmit(n,["crypto.roomKeyRequest","crypto.roomKeyRequestCancellation"]),e.next=18,(0,S.resolve)(n.init());case 18:n.registerEventHandlers(this),this._crypto=n;case 20:case"end":return e.stop()}},e,this)})),o.prototype.isCryptoEnabled=function(){return null!==this._crypto},o.prototype.getDeviceEd25519Key=function(){return this._crypto?this._crypto.getDeviceEd25519Key():null},o.prototype.uploadKeys=function(){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.uploadDeviceKeys()},o.prototype.downloadKeys=function(e,t){return null===this._crypto?k.default.reject(new Error("End-to-end encryption disabled")):this._crypto.downloadKeys(e,t)},o.prototype.getStoredDevicesForUser=function(){var e=(0,S.method)(function(e){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.getStoredDevicesForUser(e)||[]});return function(t){return e.apply(this,arguments)}}(),o.prototype.getStoredDevice=function(){var e=(0,S.method)(function(e,t){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.getStoredDevice(e,t)||null});return function(t,n){return e.apply(this,arguments)}}(),o.prototype.setDeviceVerified=function(e,t,n){return void 0===n&&(n=!0),x(this,e,t,n,null)},o.prototype.setDeviceBlocked=function(e,t,n){return void 0===n&&(n=!0),x(this,e,t,null,n)},o.prototype.setDeviceKnown=function(e,t,n){return void 0===n&&(n=!0),x(this,e,t,null,null,n)},o.prototype.setGlobalBlacklistUnverifiedDevices=function(e){if(null===this._crypto)throw new Error("End-to-end encryption disabled");this._crypto.setGlobalBlacklistUnverifiedDevices(e)},o.prototype.getGlobalBlacklistUnverifiedDevices=function(){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.getGlobalBlacklistUnverifiedDevices()},o.prototype.getEventSenderDeviceInfo=function(){var e=(0,S.method)(function(e){return this._crypto?this._crypto.getEventSenderDeviceInfo(e):null});return function(t){return e.apply(this,arguments)}}(),o.prototype.isEventSenderVerified=function(){var e=(0,S.coroutine)(T.default.mark(function e(t){var n;return T.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,S.resolve)(this.getEventSenderDeviceInfo(t));case 2:if(n=e.sent){e.next=5;break}return e.abrupt("return",!1);case 5:return e.abrupt("return",n.isVerified());case 6:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),o.prototype.setRoomEncryption=function(e,t){if(!this._crypto)throw new Error("End-to-End encryption disabled");return this._crypto.setRoomEncryption(e,t)},o.prototype.isRoomEncrypted=function(e){var t=this.getRoom(e);return!!t&&(!!t.currentState.getStateEvents("m.room.encryption","")||!!this._sessionStore&&Boolean(this._sessionStore.getEndToEndRoom(e)))},o.prototype.exportRoomKeys=function(){return this._crypto?this._crypto.exportRoomKeys():k.default.reject(new Error("End-to-end encryption disabled"))},o.prototype.importRoomKeys=function(e){if(!this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.importRoomKeys(e)},o.prototype.getGroup=function(e){return this.store.getGroup(e)},o.prototype.getGroups=function(){return this.store.getGroups()},o.prototype.getRoom=function(e){return this.store.getRoom(e)},o.prototype.getRooms=function(){return this.store.getRooms()},o.prototype.getUser=function(e){return this.store.getUser(e)},o.prototype.getUsers=function(){return this.store.getUsers()},o.prototype.setAccountData=function(e,t,n){var r=N.encodeUri("/user/$userId/account_data/$type",{$userId:this.credentials.userId,$type:e});return this._http.authedRequest(n,"PUT",r,void 0,t)},o.prototype.getAccountData=function(e){return this.store.getAccountData(e)},o.prototype.getIgnoredUsers=function(){var e=this.getAccountData("m.ignored_user_list");return e&&e.getContent()&&e.getContent().ignored_users?(0,w.default)(e.getContent().ignored_users):[]},o.prototype.setIgnoredUsers=function(e,t){var n={ignored_users:{}};return e.map(function(e){return n.ignored_users[e]={}}),this.setAccountData("m.ignored_user_list",n,t)},o.prototype.isUserIgnored=function(e){return-1!==this.getIgnoredUsers().indexOf(e)},o.prototype.joinRoom=function(e,t,n){if(N.isFunction(t))throw new Error("Expected 'opts' object, got function.");t=t||{},void 0===t.syncRoom&&(t.syncRoom=!0);var r=this.getRoom(e);if(r&&r.hasMembershipState(this.credentials.userId,"join"))return k.default.resolve(r);var o=k.default.resolve();t.inviteSignUrl&&(o=this._http.requestOtherUrl(void 0,"POST",t.inviteSignUrl,{mxid:this.credentials.userId}));var i=k.default.defer(),s=this;return o.then(function(t){var n={};t&&(n.third_party_signed=t);var r=N.encodeUri("/join/$roomid",{$roomid:e});return s._http.authedRequest(void 0,"POST",r,void 0,n)}).then(function(e){var n=e.room_id,r=new G(s,s._clientOpts),o=r.createRoom(n);return t.syncRoom,k.default.resolve(o)}).done(function(e){v(n,i,e)},function(e){f(n,i,e)}),i.promise},o.prototype.resendEvent=function(e,t){return a(t,e,F.SENDING),i(this,t,e)},o.prototype.cancelPendingEvent=function(e){if([F.QUEUED,F.NOT_SENT].indexOf(e.status)<0)throw new Error("cannot cancel an event with status "+e.status);this.scheduler&&this.scheduler.removeEventFromQueue(e),a(this.getRoom(e.getRoomId()),e,F.CANCELLED)},o.prototype.setRoomName=function(e,t,n){return this.sendStateEvent(e,"m.room.name",{name:t},void 0,n)},o.prototype.setRoomTopic=function(e,t,n){return this.sendStateEvent(e,"m.room.topic",{topic:t},void 0,n)},o.prototype.getRoomTags=function(e,t){var n=N.encodeUri("/user/$userId/rooms/$roomId/tags/",{$userId:this.credentials.userId,$roomId:e});return this._http.authedRequest(t,"GET",n,void 0)},o.prototype.setRoomTag=function(e,t,n,r){var o=N.encodeUri("/user/$userId/rooms/$roomId/tags/$tag",{$userId:this.credentials.userId,$roomId:e,$tag:t});return this._http.authedRequest(r,"PUT",o,void 0,n)},o.prototype.deleteRoomTag=function(e,t,n){var r=N.encodeUri("/user/$userId/rooms/$roomId/tags/$tag",{$userId:this.credentials.userId,$roomId:e,$tag:t});return this._http.authedRequest(n,"DELETE",r,void 0,void 0)},o.prototype.setRoomAccountData=function(e,t,n,r){var o=N.encodeUri("/user/$userId/rooms/$roomId/account_data/$type",{$userId:this.credentials.userId,$roomId:e,$type:t});return this._http.authedRequest(r,"PUT",o,void 0,n)},o.prototype.setPowerLevel=function(e,t,n,r,o){var i={users:{}};r&&"m.room.power_levels"===r.getType()&&(i=N.deepCopy(r.getContent())),i.users[t]=n;var s=N.encodeUri("/rooms/$roomId/state/m.room.power_levels",{$roomId:e});return this._http.authedRequest(o,"PUT",s,void 0,i)},o.prototype.sendEvent=function(e,t,n,r,o){N.isFunction(r)&&(o=r,r=void 0),r||(r=this.makeTxnId()),console.log("sendEvent of type "+t+" in "+e+" with txnId "+r);var s=this.getRoom(e),a=new P({event_id:"~"+e+":"+r,user_id:this.credentials.userId,room_id:e,type:t,origin_server_ts:(new Date).getTime(),content:n});return a._txnId=r,a.status=F.SENDING,s&&s.addPendingEvent(a,r),i(this,s,a,o)},o.prototype.sendMessage=function(e,t,n,r){return N.isFunction(n)&&(r=n,n=void 0),this.sendEvent(e,"m.room.message",t,n,r)},o.prototype.sendTextMessage=function(e,t,n,r){var o={msgtype:"m.text",body:t};return this.sendMessage(e,o,n,r)},o.prototype.sendNotice=function(e,t,n,r){var o={msgtype:"m.notice",body:t};return this.sendMessage(e,o,n,r)},o.prototype.sendEmoteMessage=function(e,t,n,r){var o={msgtype:"m.emote",body:t};return this.sendMessage(e,o,n,r)},o.prototype.sendImageMessage=function(e,t,n,r,o){N.isFunction(r)&&(o=r,r=void 0),r||(r="Image");var i={msgtype:"m.image",url:t,info:n,body:r};return this.sendMessage(e,i,o)},o.prototype.sendHtmlMessage=function(e,t,n,r){var o={ msgtype:"m.text",format:"org.matrix.custom.html",body:t,formatted_body:n};return this.sendMessage(e,o,r)},o.prototype.sendHtmlNotice=function(e,t,n,r){var o={msgtype:"m.notice",format:"org.matrix.custom.html",body:t,formatted_body:n};return this.sendMessage(e,o,r)},o.prototype.sendHtmlEmote=function(e,t,n,r){var o={msgtype:"m.emote",format:"org.matrix.custom.html",body:t,formatted_body:n};return this.sendMessage(e,o,r)},o.prototype.sendReceipt=function(e,t,n){if(this.isGuest())return k.default.resolve({});var r=N.encodeUri("/rooms/$roomId/receipt/$receiptType/$eventId",{$roomId:e.getRoomId(),$receiptType:t,$eventId:e.getId()}),o=this._http.authedRequest(n,"POST",r,void 0,{}),i=this.getRoom(e.getRoomId());return i&&i._addLocalEchoReceipt(this.credentials.userId,e,t),o},o.prototype.sendReadReceipt=function(e,t){return this.sendReceipt(e,"m.read",t)},o.prototype.setRoomReadMarkers=function(e,t,n){var r=t,o=void 0;if(n){o=n.getId();var i=this.getRoom(e);i&&i._addLocalEchoReceipt(this.credentials.userId,n,"m.read")}return this.setRoomReadMarkersHttpRequest(e,r,o)},o.prototype.getUrlPreview=function(e,t,n){var r=t+"_"+e,o=this.urlPreviewCache[r];if(o)return k.default.resolve(o);var i=this;return this._http.authedRequestWithPrefix(n,"GET","/preview_url",{url:e,ts:t},void 0,A.PREFIX_MEDIA_R0).then(function(e){return i.urlPreviewCache[r]=e,e})},o.prototype.sendTyping=function(e,t,n,r){if(this.isGuest())return k.default.resolve({});var o=N.encodeUri("/rooms/$roomId/typing/$userId",{$roomId:e,$userId:this.credentials.userId}),i={typing:t};return t&&(i.timeout=n||2e4),this._http.authedRequest(r,"PUT",o,void 0,i)},o.prototype.invite=function(e,t,n){return l(this,e,t,"invite",void 0,n)},o.prototype.inviteByEmail=function(e,t,n){return this.inviteByThreePid(e,"email",t,n)},o.prototype.inviteByThreePid=function(e,t,n,r){var o=N.encodeUri("/rooms/$roomId/invite",{$roomId:e}),i=this.getIdentityServerUrl();return i?(0!==i.indexOf("http://")&&0!==i.indexOf("https://")||(i=i.split("://")[1]),this._http.authedRequest(r,"POST",o,void 0,{id_server:i,medium:t,address:n})):k.default.reject(new V({error:"No supplied identity server URL",errcode:"ORG.MATRIX.JSSDK_MISSING_PARAM"}))},o.prototype.leave=function(e,t){return l(this,e,void 0,"leave",void 0,t)},o.prototype.ban=function(e,t,n,r){return l(this,e,t,"ban",n,r)},o.prototype.forget=function(e,t,n){void 0===t&&(t=!0);var r=l(this,e,void 0,"forget",void 0,n);if(!t)return r;var o=this;return r.then(function(t){return o.store.removeRoom(e),o.emit("deleteRoom",e),t})},o.prototype.unban=function(e,t,n){var r=N.encodeUri("/rooms/$roomId/unban",{$roomId:e}),o={user_id:t};return this._http.authedRequest(n,"POST",r,void 0,o)},o.prototype.kick=function(e,t,n,r){return c(this,e,t,"leave",n,r)},o.prototype.getPushActionsForEvent=function(e){if(!e.getPushActions()){var t=new j(this);e.setPushActions(t.actionsForEvent(e))}return e.getPushActions()},o.prototype.setProfileInfo=function(e,t,n){var r=N.encodeUri("/profile/$userId/$info",{$userId:this.credentials.userId,$info:e});return this._http.authedRequest(n,"PUT",r,void 0,t)},o.prototype.setDisplayName=function(e,t){return this.setProfileInfo("displayname",{displayname:e},t)},o.prototype.setAvatarUrl=function(e,t){return this.setProfileInfo("avatar_url",{avatar_url:e},t)},o.prototype.mxcUrlToHttp=function(e,t,n,r,o){return K.getHttpUriForMxc(this.baseUrl,e,t,n,r,o)},o.prototype.setPresence=function(e,t){var n=N.encodeUri("/presence/$userId/status",{$userId:this.credentials.userId});if("string"==typeof e&&(e={presence:e}),-1==["offline","online","unavailable"].indexOf(e.presence))throw new Error("Bad presence value: "+e.presence);return this._http.authedRequest(t,"PUT",n,void 0,e)},o.prototype.getPresenceList=function(e){return d(e,this,void 0,"GET")},o.prototype.inviteToPresenceList=function(e,t){return d(e,this,{invite:t},"POST")},o.prototype.dropFromPresenceList=function(e,t){return d(e,this,{drop:t},"POST")},o.prototype.scrollback=function(e,t,n){N.isFunction(t)&&(n=t,t=void 0),t=t||30;var r=0,o=this._ongoingScrollbacks[e.roomId]||{};if(o.promise)return o.promise;if(o.errorTs){var i=Date.now()-o.errorTs;r=Math.max(3e3-i,0)}if(null===e.oldState.paginationToken)return k.default.resolve(e);var s=this.store.scrollback(e,t).length;if(s===t)return k.default.resolve(e);t-=s;var a=N.encodeUri("/rooms/$roomId/messages",{$roomId:e.roomId}),u={from:e.oldState.paginationToken,limit:t,dir:"b"},c=k.default.defer();o={promise:c.promise,errorTs:null};var l=this;return k.default.delay(r).then(function(){return l._http.authedRequest(n,"GET",a,u)}).done(function(t){var r=N.map(t.chunk,m(l));e.addEventsToTimeline(r,!0,e.getLiveTimeline()),e.oldState.paginationToken=t.end,0===t.chunk.length&&(e.oldState.paginationToken=null),l.store.storeEvents(e,r,t.end,!0),l._ongoingScrollbacks[e.roomId]=null,v(n,c,e)},function(t){l._ongoingScrollbacks[e.roomId]={errorTs:Date.now()},f(n,c,t)}),this._ongoingScrollbacks[e.roomId]=o,c.promise},o.prototype.paginateEventContext=function(e,t){t=t||{};var n=t.backwards||!1,r=e.getPaginateToken(n);if(!r)return k.default.reject(new Error("No paginate token"));var o=n?"b":"f",i=e._paginateRequests[o];if(i)return i;var s=N.encodeUri("/rooms/$roomId/messages",{$roomId:e.getEvent().getRoomId()}),a={from:r,limit:"limit"in t?t.limit:30,dir:o},u=this,c=u._http.authedRequest(void 0,"GET",s,a).then(function(t){var r=t.end;if(0===t.chunk.length)r=null;else{var o=N.map(t.chunk,u.getEventMapper());n&&o.reverse(),e.addEvents(o,n)}return e.setPaginateToken(r,n),e}).finally(function(){e._paginateRequests[o]=null});return e._paginateRequests[o]=c,c},o.prototype.getEventTimeline=function(e,t){if(!this.timelineSupport)throw new Error("timeline support is disabled. Set the 'timelineSupport' parameter to true when creating MatrixClient to enable it.");if(e.getTimelineForEvent(t))return k.default.resolve(e.getTimelineForEvent(t));var n=N.encodeUri("/rooms/$roomId/context/$eventId",{$roomId:e.room.roomId,$eventId:t}),r=this;return r._http.authedRequest(void 0,"GET",n).then(function(n){if(!n.event)throw new Error("'event' not in '/context' result - homeserver too old?");if(e.getTimelineForEvent(t))return e.getTimelineForEvent(t);n.events_after.reverse();var o=n.events_after.concat([n.event]).concat(n.events_before),i=N.map(o,r.getEventMapper()),s=e.getTimelineForEvent(i[0].getId());return s||(s=e.addTimeline(),s.initialiseState(N.map(n.state,r.getEventMapper())),s.getState(M.FORWARDS).paginationToken=n.end),e.addEventsToTimeline(i,!0,s,n.start),e.getTimelineForEvent(t)||s})},o.prototype.paginateEventTimeline=function(e,t){var n=e.getTimelineSet()===this._notifTimelineSet;t=t||{};var r=t.backwards||!1;if(n&&!r)throw new Error("paginateNotifTimeline can only paginate backwards");var o=r?M.BACKWARDS:M.FORWARDS,i=e.getPaginationToken(o);if(!i)return k.default.resolve(!1);var s=e._paginationRequests[o];if(s)return s;var a=void 0,u=void 0,c=void 0,l=this;if(n)a="/notifications",u={limit:"limit"in t?t.limit:30,only:"highlight"},i&&"end"!==i&&(u.from=i),c=this._http.authedRequestWithPrefix(void 0,"GET",a,u,void 0,A.PREFIX_UNSTABLE).then(function(t){for(var n=t.next_token,i=[],s=0;s0&&(u="/_matrix/media/v1/thumbnail/");var l=a.indexOf("#"),d="";return l>=0&&(d=a.substr(l),a=a.substr(0,l)),e+u+a+(0===r.keys(c).length?"":"?"+r.encodeParams(c))+d},getIdenticonUri:function(e,t,n,o){if(!t)return null;n||(n=96),o||(o=96);var i={width:n,height:o};return e+r.encodeUri("/_matrix/media/v1/identicon/$ident",{$ident:t})+(0===r.keys(i).length?"":"?"+r.encodeParams(i))}}},{"./utils":47}],6:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var o=e("babel-runtime/regenerator"),i=r(o),s=e("bluebird"),a=r(s),u=e("babel-runtime/core-js/object/keys"),c=r(u),l=e("babel-runtime/core-js/get-iterator"),d=r(l),p=e("babel-runtime/helpers/classCallCheck"),h=r(p),f=e("babel-runtime/helpers/createClass"),v=r(f),m=function(){var e=(0,s.coroutine)(i.default.mark(function e(t,n,r,o){var a,u,c,l;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:a=!1,e.t0=i.default.keys(r);case 2:if((e.t1=e.t0()).done){e.next=9;break}if(u=e.t1.value,r.hasOwnProperty(u)){e.next=6;break}return e.abrupt("continue",2);case 6:u in o||(console.log("Device "+n+":"+u+" has been removed"),delete r[u],a=!0),e.next=2;break;case 9:e.t2=i.default.keys(o);case 10:if((e.t3=e.t2()).done){e.next=27;break}if(c=e.t3.value,o.hasOwnProperty(c)){e.next=14;break}return e.abrupt("continue",10);case 14:if(l=o[c],l.user_id===n){e.next=18;break}return console.warn("Mismatched user_id "+l.user_id+" in keys from "+n+":"+c),e.abrupt("continue",10);case 18:if(l.device_id===c){e.next=21;break}return console.warn("Mismatched device_id "+l.device_id+" in keys from "+n+":"+c),e.abrupt("continue",10);case 21:return e.next=23,(0,s.resolve)(_(t,r,l));case 23:if(!e.sent){e.next=25;break}a=!0;case 25:e.next=10;break;case 27:return e.abrupt("return",a);case 28:case"end":return e.stop()}},e,this)}));return function(t,n,r,o){return e.apply(this,arguments)}}(),_=function(){var e=(0,s.coroutine)(i.default.mark(function e(t,n,r){var o,a,u,c,l,d;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r.keys){e.next=2;break}return e.abrupt("return",!1);case 2:if(o=r.device_id,a=r.user_id,u="ed25519:"+o,c=r.keys[u]){e.next=9;break}return console.warn("Device "+a+":"+o+" has no ed25519 key"),e.abrupt("return",!1);case 9:return l=r.unsigned||{},e.prev=10,e.next=13,(0,s.resolve)(E.default.verifySignature(t,r,a,o,c));case 13:e.next=19;break;case 15:return e.prev=15,e.t0=e.catch(10),console.warn("Unable to verify signature on device "+a+":"+o+":"+e.t0),e.abrupt("return",!1);case 19:if(d=void 0,!(o in n)){e.next=27;break}if(d=n[o],d.getFingerprint()==c){e.next=25;break}return console.warn("Ed25519 key for device "+a+":"+o+" has changed"),e.abrupt("return",!1);case 25:e.next=28;break;case 27:n[o]=d=new g.default(o);case 28:return d.keys=r.keys||{},d.algorithms=r.algorithms||[],d.unsigned=l,e.abrupt("return",!0);case 32:case"end":return e.stop()}},e,this,[[10,15]])}));return function(t,n,r){return e.apply(this,arguments)}}(),y=e("./deviceinfo"),g=r(y),b=e("./olmlib"),E=r(b),w=1,S=2,k=function(){function e(t,n,r){(0,h.default)(this,e),this._sessionStore=n,this._serialiser=new R(t,n,r),this._deviceTrackingStatus=n.getEndToEndDeviceTrackingStatus()||{};var o=!0,i=!1,s=void 0;try{for(var a,u=(0,d.default)((0,c.default)(this._deviceTrackingStatus));!(o=(a=u.next()).done);o=!0){var l=a.value;this._deviceTrackingStatus[l]==S&&(this._deviceTrackingStatus[l]=w)}}catch(e){i=!0,s=e}finally{try{!o&&u.return&&u.return()}finally{if(i)throw s}}this._keyDownloadsInProgressByUser={},this.lastKnownSyncToken=null}return(0,v.default)(e,[{key:"downloadKeys",value:function(e,t){var n=this,r=[],o=[];if(e.forEach(function(e){var i=n._deviceTrackingStatus[e];n._keyDownloadsInProgressByUser[e]?(console.log("downloadKeys: already have a download in progress for "+e+": awaiting its result"),o.push(n._keyDownloadsInProgressByUser[e])):(t||3!=i)&&r.push(e)}),0!=r.length){console.log("downloadKeys: downloading for",r);var i=this._doKeyDownload(r);o.push(i)}return 0===o.length&&console.log("downloadKeys: already have all necessary keys"),a.default.all(o).then(function(){return n._getDevicesFromStore(e)})}},{key:"_getDevicesFromStore",value:function(e){var t={},n=this;return e.map(function(e){t[e]={},(n.getStoredDevicesForUser(e)||[]).map(function(n){t[e][n.deviceId]=n})}),t}},{key:"getStoredDevicesForUser",value:function(e){var t=this._sessionStore.getEndToEndDevicesForUser(e);if(!t)return null;var n=[];for(var r in t)t.hasOwnProperty(r)&&n.push(g.default.fromStorage(t[r],r));return n}},{key:"getStoredDevice",value:function(e,t){var n=this._sessionStore.getEndToEndDevicesForUser(e);if(n&&n[t])return g.default.fromStorage(n[t],t)}},{key:"getDeviceByIdentityKey",value:function(e,t,n){if(t!==E.default.OLM_ALGORITHM&&t!==E.default.MEGOLM_ALGORITHM)return null;var r=this._sessionStore.getEndToEndDevicesForUser(e);if(!r)return null;for(var o in r)if(r.hasOwnProperty(o)){var i=r[o];for(var s in i.keys)if(i.keys.hasOwnProperty(s)&&0===s.indexOf("curve25519:")){var a=i.keys[s];if(a==n)return g.default.fromStorage(i,o)}}return null}},{key:"startTrackingDeviceList",value:function(e){if("string"!=typeof e)throw new Error("userId must be a string; was "+e);this._deviceTrackingStatus[e]||(console.log("Now tracking device list for "+e),this._deviceTrackingStatus[e]=w)}},{key:"stopTrackingDeviceList",value:function(e){this._deviceTrackingStatus[e]&&(console.log("No longer tracking device list for "+e),this._deviceTrackingStatus[e]=0)}},{key:"invalidateUserDeviceList",value:function(e){this._deviceTrackingStatus[e]&&(console.log("Marking device list outdated for",e),this._deviceTrackingStatus[e]=w)}},{key:"invalidateAllDeviceLists",value:function(){var e=!0,t=!1,n=void 0;try{for(var r,o=(0,d.default)((0,c.default)(this._deviceTrackingStatus));!(e=(r=o.next()).done);e=!0){var i=r.value;this.invalidateUserDeviceList(i)}}catch(e){t=!0,n=e}finally{try{!e&&o.return&&o.return()}finally{if(t)throw n}}}},{key:"refreshOutdatedDeviceLists",value:function(){var e=[],t=!0,n=!1,r=void 0;try{for(var o,i=(0,d.default)((0,c.default)(this._deviceTrackingStatus));!(t=(o=i.next()).done);t=!0){var s=o.value;this._deviceTrackingStatus[s]==w&&e.push(s)}}catch(e){n=!0,r=e}finally{try{!t&&i.return&&i.return()}finally{if(n)throw r}}return this._persistDeviceTrackingStatus(),this._doKeyDownload(e)}},{key:"_doKeyDownload",value:function(e){var t=this;if(0===e.length)return a.default.resolve();var n=this._serialiser.updateDevicesForUsers(e,this.lastKnownSyncToken).then(function(){r(!0)},function(t){throw console.error("Error downloading keys for "+e+":",t),r(!1),t});e.forEach(function(e){t._keyDownloadsInProgressByUser[e]=n,t._deviceTrackingStatus[e]==w&&(t._deviceTrackingStatus[e]=S)});var r=function(r){e.forEach(function(e){if(t._keyDownloadsInProgressByUser[e]!==n)return void console.log("Another update in the queue for",e,"- not marking up-to-date");delete t._keyDownloadsInProgressByUser[e],t._deviceTrackingStatus[e]==S&&(r?(t._deviceTrackingStatus[e]=3,console.log("Device list for",e,"now up to date")):t._deviceTrackingStatus[e]=w)}),t._persistDeviceTrackingStatus()};return n}},{key:"_persistDeviceTrackingStatus",value:function(){this._sessionStore.storeEndToEndDeviceTrackingStatus(this._deviceTrackingStatus)}}]),e}();n.default=k;var R=function(){function e(t,n,r){(0,h.default)(this,e),this._baseApis=t,this._sessionStore=n,this._olmDevice=r,this._downloadInProgress=!1,this._keyDownloadsQueuedByUser={},this._queuedQueryDeferred=null,this._nextSyncToken=null}return(0,v.default)(e,[{key:"updateDevicesForUsers",value:function(e,t){var n=this;return e.forEach(function(e){n._keyDownloadsQueuedByUser[e]=!0}),this._nextSyncToken=t,this._queuedQueryDeferred||(this._queuedQueryDeferred=a.default.defer()),this._downloadInProgress?(console.log("Queued key download for",e),this._queuedQueryDeferred.promise):this._doQueuedQueries()}},{key:"_doQueuedQueries",value:function(){var e=this;if(this._downloadInProgress)throw new Error("DeviceListUpdateSerialiser._doQueuedQueries called with request active");var t=(0,c.default)(this._keyDownloadsQueuedByUser);this._keyDownloadsQueuedByUser={};var n=this._queuedQueryDeferred;this._queuedQueryDeferred=null,console.log("Starting key download for",t),this._downloadInProgress=!0;var r={};return this._nextSyncToken&&(r.token=this._nextSyncToken),this._baseApis.downloadKeysForUsers(t,r).then(function(n){var r=n.device_keys||{},o=a.default.resolve(),i=!0,s=!1,u=void 0;try{for(var c,l=(0,d.default)(t);!(i=(c=l.next()).done);i=!0)!function(){var t=c.value;o=o.delay(5).then(function(){return e._processQueryResponseForUser(t,r[t])})}()}catch(e){s=!0,u=e}finally{try{!i&&l.return&&l.return()}finally{if(s)throw u}}return o}).done(function(){console.log("Completed key download for "+t),e._downloadInProgress=!1,n.resolve(),e._queuedQueryDeferred&&e._doQueuedQueries()},function(r){console.warn("Error downloading keys for "+t+":",r),e._downloadInProgressInProgress=!1,n.reject(r)}),n.promise}},{key:"_processQueryResponseForUser",value:function(){function e(e,n){return t.apply(this,arguments)}var t=(0,s.coroutine)(i.default.mark(function e(t,n){var r,o,a;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return console.log("got keys for "+t+":",n),r={},o=this._sessionStore.getEndToEndDevicesForUser(t),o&&(0,c.default)(o).forEach(function(e){var t=g.default.fromStorage(o[e],e);r[e]=t}),e.next=6,(0,s.resolve)(m(this._olmDevice,t,r,n||{}));case 6:a={},(0,c.default)(r).forEach(function(e){a[e]=r[e].toStorage()}),this._sessionStore.storeEndToEndDevicesForUser(t,a);case 9:case"end":return e.stop()}},e,this)}));return e}()}]),e}()},{"./deviceinfo":13,"./olmlib":15,"babel-runtime/core-js/get-iterator":50,"babel-runtime/core-js/object/keys":57,"babel-runtime/helpers/classCallCheck":61,"babel-runtime/helpers/createClass":62,"babel-runtime/regenerator":68,bluebird:69}],7:[function(e,t,n){(function(n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){if(void 0===e)throw new Error("payloadString undefined");if(e.length>f)throw new Error("Message too long ("+e.length+" bytes). The maximum for an encrypted message is "+f+" bytes.")}function i(e){this._sessionStore=e,this._pickleKey="DEFAULT_KEY",this.deviceCurve25519Key=null,this.deviceEd25519Key=null,this._maxOneTimeKeys=null,this._outboundGroupSessionStore={},this._inboundGroupSessionMessageIndexes={}}function s(e,t,n){var r=e.getEndToEndAccount();if(null!==r)return void n.unpickle(t,r);n.create();var o=n.pickle(t);e.storeEndToEndAccount(o)}var a=e("babel-runtime/core-js/json/stringify"),u=r(a),c=e("babel-runtime/regenerator"),l=r(c),d=e("bluebird"),p=n.Olm;if(!p)throw new Error("global.Olm is not defined");var h=e("../utils"),f=49152;i.prototype.init=(0,d.method)(function(){var e=void 0,t=new p.Account;try{s(this._sessionStore,this._pickleKey,t),e=JSON.parse(t.identity_keys()),this._maxOneTimeKeys=t.max_number_of_one_time_keys()}finally{t.free()}this.deviceCurve25519Key=e.curve25519,this.deviceEd25519Key=e.ed25519}),i.getOlmVersion=function(){return p.get_library_version()},i.prototype._getAccount=function(e){var t=new p.Account;try{var n=this._sessionStore.getEndToEndAccount();return t.unpickle(this._pickleKey,n),e(t)}finally{t.free()}},i.prototype._saveAccount=function(e){var t=e.pickle(this._pickleKey);this._sessionStore.storeEndToEndAccount(t)},i.prototype._getSession=function(e,t,n){var r=this._sessionStore.getEndToEndSessions(e),o=r[t],i=new p.Session;try{return i.unpickle(this._pickleKey,o),n(i)}finally{i.free()}},i.prototype._saveSession=function(e,t){var n=t.pickle(this._pickleKey);this._sessionStore.storeEndToEndSession(e,t.session_id(),n)},i.prototype._getUtility=function(e){var t=new p.Utility;try{return e(t)}finally{t.free()}},i.prototype.sign=function(){var e=(0,d.method)(function(e){return this._getAccount(function(t){return t.sign(e)})});return function(t){return e.apply(this,arguments)}}(),i.prototype.getOneTimeKeys=(0,d.method)(function(){return this._getAccount(function(e){return JSON.parse(e.one_time_keys())})}),i.prototype.maxNumberOfOneTimeKeys=function(){return this._maxOneTimeKeys},i.prototype.markKeysAsPublished=(0,d.method)(function(){var e=this;this._getAccount(function(t){t.mark_keys_as_published(),e._saveAccount(t)})}),i.prototype.generateOneTimeKeys=function(){var e=(0,d.method)(function(e){var t=this;this._getAccount(function(n){n.generate_one_time_keys(e),t._saveAccount(n)})});return function(t){return e.apply(this,arguments)}}(),i.prototype.createOutboundSession=function(){var e=(0,d.method)(function(e,t){var n=this;return this._getAccount(function(r){var o=new p.Session;try{return o.create_outbound(r,e,t),n._saveSession(e,o),o.session_id()}finally{o.free()}})});return function(t,n){return e.apply(this,arguments)}}(),i.prototype.createInboundSession=function(){var e=(0,d.method)(function(e,t,n){if(0!==t)throw new Error("Need message_type == 0 to create inbound session");var r=this;return this._getAccount(function(o){var i=new p.Session;try{i.create_inbound_from(o,e,n),o.remove_one_time_keys(i),r._saveAccount(o);var s=i.decrypt(t,n);return r._saveSession(e,i),{payload:s,session_id:i.session_id()}}finally{i.free()}})});return function(t,n,r){return e.apply(this,arguments)}}(),i.prototype.getSessionIdsForDevice=function(){var e=(0,d.method)(function(e){var t=this._sessionStore.getEndToEndSessions(e);return h.keys(t)});return function(t){return e.apply(this,arguments)}}(),i.prototype.getSessionIdForDevice=function(){var e=(0,d.coroutine)(l.default.mark(function e(t){var n;return l.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,d.resolve)(this.getSessionIdsForDevice(t));case 2:if(n=e.sent,0!==n.length){e.next=5;break}return e.abrupt("return",null);case 5:return n.sort(),e.abrupt("return",n[0]);case 7:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}(),i.prototype.getSessionInfoForDevice=function(){var e=(0,d.coroutine)(l.default.mark(function e(t){var n,r,o,i,s,a;return l.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return o=function(e){return{hasReceivedMessage:e.has_received_message()}},e.next=3,(0,d.resolve)(this.getSessionIdsForDevice(t));case 3:for(n=e.sent,n.sort(),r=[],i=0;i=e||n>=t)&&(console.log("Rotating megolm session after "+this.useCount+" messages, "+n+"ms"),!0)},o.prototype.sharedWithTooManyDevices=function(e){for(var t in this.sharedWithDevices)if(this.sharedWithDevices.hasOwnProperty(t)){if(!e.hasOwnProperty(t))return console.log("Starting new session because we shared with "+t),!0;for(var n in this.sharedWithDevices[t])if(this.sharedWithDevices[t].hasOwnProperty(n)&&!e[t].hasOwnProperty(n))return console.log("Starting new session because we shared with "+t+":"+n),!0}},_.inherits(i,g.EncryptionAlgorithm),i.prototype._ensureOutboundSession=function(e){function t(){return o}var n=function(){var t=(0,v.coroutine)(f.default.mark(function t(n){var i,s,a,u,c,l;return f.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(o=n,o&&o.needsRotation(r._sessionRotationPeriodMsgs,r._sessionRotationPeriodMs)&&(console.log("Starting new megolm session because we need to rotate."),o=null),o&&o.sharedWithTooManyDevices(e)&&(o=null),o){t.next=8;break}return console.log("Starting new megolm session for room "+r._roomId),t.next=7,(0,v.resolve)(r._prepareNewSession());case 7:o=t.sent;case 8:i={},t.t0=f.default.keys(e);case 10:if((t.t1=t.t0()).done){t.next=29;break}if(s=t.t1.value,e.hasOwnProperty(s)){t.next=14;break}return t.abrupt("continue",10);case 14:a=e[s],t.t2=f.default.keys(a);case 16:if((t.t3=t.t2()).done){t.next=27;break}if(u=t.t3.value,a.hasOwnProperty(u)){t.next=20;break}return t.abrupt("continue",16);case 20:if(c=a[u],(l=c.getIdentityKey())!=r._olmDevice.deviceCurve25519Key){t.next=24;break}return t.abrupt("continue",16);case 24:o.sharedWithDevices[s]&&void 0!==o.sharedWithDevices[s][u]||(i[s]=i[s]||[],i[s].push(c)),t.next=16;break;case 27:t.next=10;break;case 29:return t.abrupt("return",r._shareKeyWithDevices(o,i));case 30:case"end":return t.stop()}},t,this)}));return function(e){return t.apply(this,arguments)}}(),r=this,o=void 0,i=this._setupPromise.then(n);return this._setupPromise=i.then(t,t),i.then(t)},i.prototype._prepareNewSession=(0,v.coroutine)(f.default.mark(function e(){var t,n;return f.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=this._olmDevice.createOutboundGroupSession(),n=this._olmDevice.getOutboundGroupSessionKey(t),e.next=4,(0,v.resolve)(this._olmDevice.addInboundGroupSession(this._roomId,this._olmDevice.deviceCurve25519Key,[],t,n.key,{ed25519:this._olmDevice.deviceEd25519Key}));case 4:return e.abrupt("return",new o(t));case 5:case"end":return e.stop()}},e,this)})),i.prototype._shareKeyWithDevices=function(e,t){var n=this,r=this._olmDevice.getOutboundGroupSessionKey(e.sessionId),o={type:"m.room_key",content:{algorithm:y.MEGOLM_ALGORITHM,room_id:this._roomId,session_id:e.sessionId,session_key:r.key,chain_index:r.chain_index}},i={};return y.ensureOlmSessionsForDevices(this._olmDevice,this._baseApis,t).then(function(e){var r=[];for(var s in t)if(t.hasOwnProperty(s))for(var a=t[s],u=e[s],c=0;c0)return null;var r=this._deviceList.getDeviceByIdentityKey(e.getSender(),n,t);if(null===r)return null;var o=e.getClaimedEd25519Key();return o?o!==r.getFingerprint()?(console.warn("Event "+e.getId()+" claims ed25519 key "+o+"but sender device has key "+r.getFingerprint()),null):r:(console.warn("Event "+e.getId()+" claims no ed25519 key: cannot verify sending device"),null)},o.prototype.setRoomEncryption=function(){var e=(0,l.method)(function(e,t,n){var r=this,o=this._sessionStore.getEndToEndRoom(e);if(o&&(0,c.default)(o)!=(0,c.default)(t))return void console.error("Ignoring m.room.encryption event which requests a change of config in "+e);var i=w.ENCRYPTION_CLASSES[t.algorithm];if(!i)throw new Error("Unable to encrypt with "+t.algorithm);this._sessionStore.storeEndToEndRoom(e,t);var s=new i({userId:this._userId,deviceId:this._deviceId,crypto:this,olmDevice:this._olmDevice,baseApis:this._baseApis,roomId:e,config:t});this._roomEncryptors[e]=s,console.log("Enabling encryption in "+e+"; starting to track device lists for all users therein");var a=this._clientStore.getRoom(e);if(!a)throw new Error("Unable to enable encryption in unknown room "+e);a.getJoinedMembers().forEach(function(e){r._deviceList.startTrackingDeviceList(e.userId)}),n||this._deviceList.refreshOutdatedDeviceLists()});return function(t,n,r){return e.apply(this,arguments)}}(),o.prototype.ensureOlmSessionsForUsers=function(e){for(var t={},n=0;n=e.length)){var s=e[n];o.target.source.openCursor(s).onsuccess=t}}if(0===e.length)return f.default.resolve(null);var n=0,r=void 0,o=this._db.transaction("outgoingRoomKeyRequests","readonly"),i=o.objectStore("outgoingRoomKeyRequests"),a=e[n];return i.index("state").openCursor(a).onsuccess=t,s(o).then(function(){return r})}},{key:"updateOutgoingRoomKeyRequest",value:function(e,t,n){function r(e){var r=e.target.result;if(r){var i=r.value;if(i.state!=t)return void console.warn("Cannot update room key request from "+t+" as it was already updated to "+i.state);(0,u.default)(i,n),r.update(i),o=i}}var o=null,i=this._db.transaction("outgoingRoomKeyRequests","readwrite");return i.objectStore("outgoingRoomKeyRequests").openCursor(e).onsuccess=r,s(i).then(function(){return o})}},{key:"deleteOutgoingRoomKeyRequest",value:function(e,t){var n=this._db.transaction("outgoingRoomKeyRequests","readwrite");return n.objectStore("outgoingRoomKeyRequests").openCursor(e).onsuccess=function(e){var n=e.target.result;if(n){var r=n.value;if(r.state!=t)return void console.warn("Cannot delete room key request in state "+r.state+" (expected "+t+")");n.delete()}},s(n)}}]),e}()},{"../../utils":47,"babel-runtime/core-js/object/assign":53,"babel-runtime/helpers/classCallCheck":61,"babel-runtime/helpers/createClass":62,bluebird:69}],17:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var o=e("babel-runtime/helpers/classCallCheck"),i=r(o),s=e("babel-runtime/helpers/createClass"),a=r(s),u=e("bluebird"),c=r(u),l=e("./memory-crypto-store"),d=r(l),p=e("./indexeddb-crypto-store-backend"),h=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(p),f=function(){function e(t,n){(0,i.default)(this,e),this._indexedDB=t,this._dbName=n,this._backendPromise=null}return(0,a.default)(e,[{key:"_connect",value:function(){var e=this;return this._backendPromise?this._backendPromise:(this._backendPromise=new c.default(function(t,n){if(!e._indexedDB)return void n(new Error("no indexeddb support available"));console.log("connecting to indexeddb "+e._dbName);var r=e._indexedDB.open(e._dbName,h.VERSION);r.onupgradeneeded=function(e){var t=e.target.result,n=e.oldVersion;h.upgradeDatabase(t,n)},r.onblocked=function(){console.log("can't yet open IndexedDBCryptoStore because it is open elsewhere")},r.onerror=function(e){n(e.target.error)},r.onsuccess=function(n){var r=n.target.result;console.log("connected to indexeddb "+e._dbName),t(new h.Backend(r))}}).catch(function(t){return console.warn("unable to connect to indexeddb "+e._dbName+": falling back to in-memory store: "+t),new d.default}),this._backendPromise)}},{key:"deleteAllData",value:function(){var e=this;return new c.default(function(t,n){if(!e._indexedDB)return void n(new Error("no indexeddb support available"));console.log("Removing indexeddb instance: "+e._dbName);var r=e._indexedDB.deleteDatabase(e._dbName);r.onblocked=function(){console.log("can't yet delete IndexedDBCryptoStore because it is open elsewhere")},r.onerror=function(e){n(e.target.error)},r.onsuccess=function(){console.log("Removed indexeddb instance: "+e._dbName),t()}}).catch(function(e){console.warn("unable to delete IndexedDBCryptoStore: "+e)})}},{key:"getOrAddOutgoingRoomKeyRequest",value:function(e){return this._connect().then(function(t){return t.getOrAddOutgoingRoomKeyRequest(e)})}},{key:"getOutgoingRoomKeyRequest",value:function(e){return this._connect().then(function(t){return t.getOutgoingRoomKeyRequest(e)})}},{key:"getOutgoingRoomKeyRequestByState",value:function(e){return this._connect().then(function(t){return t.getOutgoingRoomKeyRequestByState(e)})}},{key:"updateOutgoingRoomKeyRequest",value:function(e,t,n){return this._connect().then(function(r){return r.updateOutgoingRoomKeyRequest(e,t,n)})}},{key:"deleteOutgoingRoomKeyRequest",value:function(e,t){return this._connect().then(function(n){return n.deleteOutgoingRoomKeyRequest(e,t)})}}]),e}();n.default=f},{"./indexeddb-crypto-store-backend":16,"./memory-crypto-store":18,"babel-runtime/helpers/classCallCheck":61,"babel-runtime/helpers/createClass":62,bluebird:69}],18:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var o=e("babel-runtime/core-js/object/assign"),i=r(o),s=e("babel-runtime/core-js/get-iterator"),a=r(s),u=e("babel-runtime/helpers/classCallCheck"),c=r(u),l=e("babel-runtime/helpers/createClass"),d=r(l),p=e("bluebird"),h=r(p),f=e("../../utils"),v=r(f),m=function(){function e(){(0,c.default)(this,e),this._outgoingRoomKeyRequests=[]}return(0,d.default)(e,[{key:"deleteAllData",value:function(){return h.default.resolve()}},{key:"getOrAddOutgoingRoomKeyRequest",value:function(e){var t=this,n=e.requestBody;return h.default.try(function(){var r=t._getOutgoingRoomKeyRequest(n);return r?(console.log("already have key request outstanding for "+n.room_id+" / "+n.session_id+": not sending another"),r):(console.log("enqueueing key request for "+n.room_id+" / "+n.session_id),t._outgoingRoomKeyRequests.push(e),e)})}},{key:"getOutgoingRoomKeyRequest",value:function(e){return h.default.resolve(this._getOutgoingRoomKeyRequest(e))}},{key:"_getOutgoingRoomKeyRequest",value:function(e){var t=!0,n=!1,r=void 0;try{for(var o,i=(0,a.default)(this._outgoingRoomKeyRequests);!(t=(o=i.next()).done);t=!0){var s=o.value;if(v.default.deepCompare(s.requestBody,e))return s}}catch(e){n=!0,r=e}finally{try{!t&&i.return&&i.return()}finally{if(n)throw r}}return null}},{key:"getOutgoingRoomKeyRequestByState",value:function(e){var t=!0,n=!1,r=void 0;try{for(var o,i=(0,a.default)(this._outgoingRoomKeyRequests);!(t=(o=i.next()).done);t=!0){var s=o.value,u=!0,c=!1,l=void 0;try{for(var d,p=(0,a.default)(e);!(u=(d=p.next()).done);u=!0){var f=d.value;if(s.state===f)return h.default.resolve(s)}}catch(e){c=!0,l=e}finally{try{!u&&p.return&&p.return()}finally{if(c)throw l}}}}catch(e){n=!0,r=e}finally{try{!t&&i.return&&i.return()}finally{if(n)throw r}}return h.default.resolve(null)}},{key:"updateOutgoingRoomKeyRequest",value:function(e,t,n){var r=!0,o=!1,s=void 0;try{for(var u,c=(0,a.default)(this._outgoingRoomKeyRequests);!(r=(u=c.next()).done);r=!0){var l=u.value;if(l.requestId===e)return l.state!=t?(console.warn("Cannot update room key request from "+t+" as it was already updated to "+l.state),h.default.resolve(null)):((0,i.default)(l,n),h.default.resolve(l))}}catch(e){o=!0,s=e}finally{try{!r&&c.return&&c.return()}finally{if(o)throw s}}return h.default.resolve(null)}},{key:"deleteOutgoingRoomKeyRequest",value:function(e,t){for(var n=0;n=400?i=o(s,a):r&&(a=r(a))}catch(e){i=new Error("Error parsing server response: "+e)}if(i)e.reject(i),t(i);else{var u={code:s.statusCode,headers:s.headers,data:a};e.resolve(n?a:u),t(null,n?a:u)}}};t.exports.MatrixError=function(e){e=e||{},this.errcode=e.errcode,this.name=e.errcode||"Unknown error code",this.message=e.error||"Unknown message",this.data=e},t.exports.MatrixError.prototype=(0,a.default)(Error.prototype),t.exports.MatrixError.prototype.constructor=t.exports.MatrixError}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./realtime-callbacks":36,"./utils":47,"babel-runtime/core-js/json/stringify":52,"babel-runtime/core-js/object/create":54,"babel-runtime/helpers/typeof":67,bluebird:69,"content-type":71}],22:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){this._matrixClient=e.matrixClient,this._data=e.authData||{},this._requestCallback=e.doRequest,this._stateUpdatedCallback=e.stateUpdated||e.startAuthStage,this._completionDeferred=null,this._inputs=e.inputs||{},e.sessionId&&(this._data.session=e.sessionId),this._clientSecret=e.clientSecret||this._matrixClient.generateClientSecret(),this._emailSid=e.emailSid,void 0===this._emailSid&&(this._emailSid=null),this._currentStage=null}var i=e("babel-runtime/core-js/get-iterator"),s=r(i),a=e("babel-runtime/core-js/json/stringify"),u=r(a),c=e("bluebird"),l=r(c),d=e("url"),p=e("./utils");o.prototype={attemptAuth:function(){var e=this;return this._completionDeferred=l.default.defer(),l.default.resolve().then(function(){return e._data.flows?e._startNextAuthStage():e._doRequest(e._data),e._completionDeferred.promise})},poll:function(){if(this._data.session){var e={};if("m.login.email.identity"==this._currentStage&&this._emailSid){var t=d.parse(this._matrixClient.getIdentityServerUrl());e={type:"m.login.email.identity",threepid_creds:{sid:this._emailSid,client_secret:this._clientSecret,id_server:t.host}}}this.submitAuthDict(e,!0)}},getSessionId:function(){return this._data?this._data.session:void 0},getClientSecret:function(){return this._clientSecret},getStageParams:function(e){var t={};return this._data&&this._data.params&&(t=this._data.params),t[e]},submitAuthDict:function(e,t){if(!this._completionDeferred)throw new Error("submitAuthDict() called before attemptAuth()");var n={session:this._data.session};p.extend(n,e),this._doRequest(n,t)},getEmailSid:function(){return this._emailSid},setEmailSid:function(e){this._emailSid=e},_doRequest:function(e,t){var n=this,r=this,o=void 0;try{o=this._requestCallback(e,t)}catch(e){o=l.default.reject(e)}o=o.then(function(e){console.log("result from request: ",e),r._completionDeferred.resolve(e)},function(e){var t=e.data?e.data.flows:null,n=Boolean(r._data.flows)||Boolean(t);if(401!==e.httpStatus||!e.data||!n)throw e;e.data.flows||e.data.completed||e.data.session||(e.data.flows=r._data.flows,e.data.completed=r._data.completed,e.data.session=r._data.session),r._data=e.data,r._startNextAuthStage()}),o=t?o.catch(function(e){console.log("Ignoring error from UI auth: "+e)}):o.catch(function(e){n._completionDeferred.reject(e)}),o.done()},_startNextAuthStage:function(){var e=this._chooseStage();if(!e)throw new Error("No incomplete flows from the server");if(this._currentStage=e,"m.login.dummy"==e)return void this.submitAuthDict({type:"m.login.dummy"});if(this._data.errcode||this._data.error)return void this._stateUpdatedCallback(e,{errcode:this._data.errcode||"",error:this._data.error||""});var t={};"m.login.email.identity"==e&&(t.emailSid=this._emailSid),this._stateUpdatedCallback(e,t)},_chooseStage:function(){var e=this._chooseFlow();console.log("Active flow => %s",(0,u.default)(e));var t=this._firstUncompletedStage(e);return console.log("Next stage: %s",t),t},_chooseFlow:function(){var e=this._data.flows||[],t=Boolean(this._inputs.emailAddress)||Boolean(this._emailSid),n=Boolean(this._inputs.phoneCountry)&&Boolean(this._inputs.phoneNumber),r=!0,o=!1,i=void 0;try{for(var a,u=(0,s.default)(e);!(r=(a=u.next()).done);r=!0){var c=a.value,l=!1,d=!1,p=!0,h=!1,f=void 0;try{for(var v,m=(0,s.default)(c.stages);!(p=(v=m.next()).done);p=!0){var _=v.value;"m.login.email.identity"===_?l=!0:"m.login.msisdn"==_&&(d=!0)}}catch(y){h=!0,f=y}finally{try{!p&&m.return&&m.return()}finally{if(h)throw f}}if(l==t&&d==n)return c}}catch(y){o=!0,i=y}finally{try{!r&&u.return&&u.return()}finally{if(o)throw i}}var y=new Error("No appropriate authentication flow found");throw y.name="NoAuthFlowFoundError",y.required_stages=[],t&&y.required_stages.push("m.login.email.identity"),n&&y.required_stages.push("m.login.msisdn"),y.available_flows=e,y},_firstUncompletedStage:function(e){for(var t=(this._data||{}).completed||[],n=0;n0)throw new Error("Cannot initialise state after events are added");var t=i.map(i.deepCopy(e.map(function(e){return e.event})),function(e){return new s(e)});this._startState.setStateEvents(t),this._endState.setStateEvents(e)},r.prototype.getRoomId=function(){return this._roomId},r.prototype.getFilter=function(){return this._eventTimelineSet.getFilter()},r.prototype.getTimelineSet=function(){return this._eventTimelineSet},r.prototype.getBaseIndex=function(){return this._baseIndex},r.prototype.getEvents=function(){return this._events},r.prototype.getState=function(e){if(e==r.BACKWARDS)return this._startState;if(e==r.FORWARDS)return this._endState;throw new Error("Invalid direction '"+e+"'")},r.prototype.getPaginationToken=function(e){return this.getState(e).paginationToken},r.prototype.setPaginationToken=function(e,t){this.getState(t).paginationToken=e},r.prototype.getNeighbouringTimeline=function(e){if(e==r.BACKWARDS)return this._prevTimeline;if(e==r.FORWARDS)return this._nextTimeline;throw new Error("Invalid direction '"+e+"'")},r.prototype.setNeighbouringTimeline=function(e,t){if(this.getNeighbouringTimeline(t))throw new Error("timeline already has a neighbouring timeline - cannot reset neighbour");if(t==r.BACKWARDS)this._prevTimeline=e;else{if(t!=r.FORWARDS)throw new Error("Invalid direction '"+t+"'");this._nextTimeline=e}this.setPaginationToken(null,t)},r.prototype.addEvent=function(e,t){var n=t?this._startState:this._endState,o=this.getTimelineSet();o.room&&o.room.getUnfilteredTimelineSet()===o&&(r.setEventMetadata(e,n,t),e.isState()&&(n.setStateEvents([e]),e.sender&&("m.room.member"!==e.getType()||t)||r.setEventMetadata(e,n,t)));var i=void 0;i=t?0:this._events.length,this._events.splice(i,0,e),t&&this._baseIndex++},r.setEventMetadata=function(e,t,n){e.sender=t.getSentinelMember(e.getSender()),"m.room.member"===e.getType()&&(e.target=t.getSentinelMember(e.getStateKey())),e.isState()&&n&&(e.forwardLooking=!1)},r.prototype.removeEvent=function(e){for(var t=this._events.length-1;t>=0;t--){var n=this._events[t];if(n.getId()==e)return this._events.splice(t,1),t0?r+" ("+o+")":r:o}var i=e("events").EventEmitter,s=e("../content-repo"),a=e("../utils");a.inherits(r,i),r.prototype.setMembershipEvent=function(e,t){if("m.room.member"===e.getType()){this.events.member=e;var n=this.membership;this.membership=e.getDirectionalContent().membership;var r=this.name;this.name=o(this,e,t),this.rawDisplayName=e.getDirectionalContent().displayname||this.userId,n!==this.membership&&(this._updateModifiedTime(),this.emit("RoomMember.membership",e,this,n)),r!==this.name&&(this._updateModifiedTime(),this.emit("RoomMember.name",e,this,r))}},r.prototype.setPowerLevelEvent=function(e){if("m.room.power_levels"===e.getType()){var t=e.getContent().users_default||0;a.forEach(a.values(e.getContent().users),function(e){t=Math.max(t,e)});var n=this.powerLevel,r=this.powerLevelNorm;void 0!==e.getContent().users[this.userId]?this.powerLevel=e.getContent().users[this.userId]:void 0!==e.getContent().users_default?this.powerLevel=e.getContent().users_default:this.powerLevel=0,this.powerLevelNorm=0,t>0&&(this.powerLevelNorm=100*this.powerLevel/t),n===this.powerLevel&&r===this.powerLevelNorm||(this._updateModifiedTime(),this.emit("RoomMember.powerLevel",e,this))}},r.prototype.setTypingEvent=function(e){if("m.typing"===e.getType()){var t=this.typing;this.typing=!1;var n=e.getContent().user_ids;a.isArray(n)&&(-1!==n.indexOf(this.userId)&&(this.typing=!0),t!==this.typing&&(this._updateModifiedTime(),this.emit("RoomMember.typing",e,this)))}},r.prototype._updateModifiedTime=function(){this._modified=Date.now()},r.prototype.getLastModifiedTime=function(){return this._modified},r.prototype.getAvatarUrl=function(e,t,n,r,o,i){if(void 0===o&&(o=!0),!this.events.member&&!o)return null;var a=this.events.member?this.events.member.getContent().avatar_url:null,u=s.getHttpUriForMxc(e,a,t,n,r,i);return u||(o?s.getIdenticonUri(e,this.userId,t,n):null)},t.exports=r},{"../content-repo":5,"../utils":47,events:158}],30:[function(e,t,n){"use strict";function r(e){this.roomId=e,this.members={},this.events={},this.paginationToken=null,this._sentinels={},this._updateModifiedTime(),this._displayNameToUserIds={},this._userIdsToDisplayNames={},this._tokenToInvite={}}function o(e,t){if(t.getContent().third_party_invite){var n=(t.getContent().third_party_invite.signed||{}).token;if(n){e.getStateEvents("m.room.third_party_invite",n)&&(e._tokenToInvite[n]=t)}}}function i(e,t,n){var r=e._userIdsToDisplayNames[t];if(delete e._userIdsToDisplayNames[t],r){for(var o=e._displayNameToUserIds[r]||[],i=0;i=o},r.prototype.maySendMessage=function(e){return this._maySendEventOfType("m.room.message",e,!1)},r.prototype.maySendEvent=function(e,t){return this._maySendEventOfType(e,t,!1)},r.prototype.mayClientSendStateEvent=function(e,t){return!t.isGuest()&&this.maySendStateEvent(e,t.credentials.userId)},r.prototype.maySendStateEvent=function(e,t){return this._maySendEventOfType(e,t,!0)},r.prototype._maySendEventOfType=function(e,t,n){var r=this.getMember(t);if(!r||"leave"==r.membership)return!1;var o=this.getStateEvents("m.room.power_levels",""),i=void 0,s={},a=0,u=0;o&&(i=o.getContent(),s=i.events||{},a=void 0!==i.state_default?i.state_default:50,void 0!==i.events_default&&(u=i.events_default));var c=n?a:u;return void 0!==s[e]&&(c=s[e]),r.powerLevel>=c},t.exports=r},{"../utils":47,"./room-member":29,events:158}],31:[function(e,t,n){"use strict";function r(e,t){this.roomId=e,this.info=t}t.exports=r},{}],32:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t,n){var r={content:{},type:"m.receipt",room_id:t.getRoomId()};return r.content[t.getId()]={},r.content[t.getId()][n]={},r.content[t.getId()][n][e]={ts:t.getTs()},new f(r)}function i(e,t){if(t=t||{},t.pendingEventOrdering=t.pendingEventOrdering||"chronological",this.reEmitter=new l.default(this),-1===["chronological","detached"].indexOf(t.pendingEventOrdering))throw new Error("opts.pendingEventOrdering MUST be either 'chronological' or 'detached'. Got: '"+t.pendingEventOrdering+"'");this.roomId=e,this.name=e,this.tags={},this.accountData={},this.summary=null,this.storageToken=t.storageToken,this._opts=t,this._txnToEvent={},this._receipts={},this._receiptCacheByEventId={},this._realReceipts={},this._notificationCounts={},this._timelineSets=[new y(this,t)],this.reEmitter.reEmit(this.getUnfilteredTimelineSet(),["Room.timeline","Room.timelineReset"]),this._fixUpLegacyTimelineFields(),this._filteredTimelineSets={},"detached"==this._opts.pendingEventOrdering&&(this._pendingEventList=[]),this._blacklistUnverifiedDevices=!1}function s(e,t,n){if(!n){var r=e.currentState.getStateEvents("m.room.name","");if(r&&r.getContent()&&r.getContent().name)return r.getContent().name}var o=e.getCanonicalAlias();if(!o){var i=e.getAliases();i.length&&(o=i[0])}if(o)return o;var s=v.filter(e.currentState.getMembers(),function(e){return e.userId!==t&&"leave"!==e.membership&&"ban"!==e.membership}),a=v.filter(e.currentState.getMembers(),function(e){return"leave"!==e.membership}),u=v.filter(e.currentState.getMembers(),function(e){return e.userId==t}),c=u.length&&u[0].events?u[0].events.member.event:void 0;if(c&&"invite"==c.content.membership)return e.currentState.getMember(c.sender)?"Invite from "+e.currentState.getMember(c.sender).name:a[0].events.member?"Invite from "+c.sender:"Room Invite";if(0===s.length){if(1===a.length){if(a[0].userId===t){var l=e.currentState.getStateEvents("m.room.third_party_invite");if(l&&l.length>0){var d="Inviting "+l[0].getContent().display_name;return l.length>1&&(2==l.length?d+=" and "+l[1].getContent().display_name:d+=" and "+l.length+" others"),d}return"Empty room"}return a[0].name}return"Empty room"}return 1===s.length?s[0].name:2===s.length?s[0].name+" and "+s[1].name:s[0].name+" and "+(s.length-1)+" others"}var a=e("babel-runtime/core-js/object/assign"),u=r(a),c=e("../ReEmitter"),l=r(c),d=e("events").EventEmitter,p=e("./event").EventStatus,h=e("./room-summary"),f=e("./event").MatrixEvent,v=e("../utils"),m=e("../content-repo"),_=e("./event-timeline"),y=e("./event-timeline-set");v.inherits(i,d),i.prototype.getPendingEvents=function(){if("detached"!==this._opts.pendingEventOrdering)throw new Error("Cannot call getPendingEventList with pendingEventOrdering == "+this._opts.pendingEventOrdering);return this._pendingEventList},i.prototype.getLiveTimeline=function(){return this.getUnfilteredTimelineSet().getLiveTimeline()},i.prototype.resetLiveTimeline=function(e,t){for(var n=0;n-1&&this._timelineSets.splice(n,1)},i.prototype._addLiveEvent=function(e,t){var n=void 0;if("m.room.redaction"===e.getType()){var r=e.event.redacts,i=this.getUnfilteredTimelineSet().findEventById(r);i&&(i.makeRedacted(e),this.emit("Room.redaction",e,this))}if(e.getUnsigned().transaction_id){var s=this._txnToEvent[e.getUnsigned().transaction_id];if(s)return void this._handleRemoteEcho(e,s)}for(n=0;n"+t);if(e.status=t,t==p.SENT){e.event.event_id=n;for(var s=0;s=0)return}else t[o][i]={};t[o][i]={eventId:r,data:s}})})})},i.prototype._buildReceiptCache=function(e){var t={};return v.keys(e).forEach(function(n){v.keys(e[n]).forEach(function(r){var o=e[n][r];t[o.eventId]||(t[o.eventId]=[]),t[o.eventId].push({userId:r,type:n,data:o.data})})}),t},i.prototype._addLocalEchoReceipt=function(e,t,n){this.addReceipt(o(e,t,n),!0)},i.prototype.addTags=function(e){this.tags=e.getContent().tags,this.emit("Room.tags",e,this)},i.prototype.addAccountData=function(e){for(var t=0;t]*)([0-9]*)$/);if(!i)return!1;var s=i[1],a=parseInt(i[2]);if(isNaN(a))return!1;switch(s){case"":case"==":return o==a;case"<":return o":return o>a;case"<=":return o<=a;case">=":return o>=a;default:return!1}},c=function(n,r){var o=r.getContent();if(!o||!o.body||"string"!=typeof o.body)return!1;var i=e.getRoom(r.getRoomId());if(!(i&&i.currentState&&i.currentState.members&&i.currentState.getMember(e.credentials.userId)))return!1;var s=i.currentState.getMember(e.credentials.userId).name,a=new RegExp("(^|\\W)"+t(s)+"(\\W|$)","i");return o.body.search(a)>-1},l=function(e,t){return!1},d=function(e,t){var n=h(e.key,t);if(!n||"string"!=typeof n)return!1;var r=void 0;r="content.body"==e.key?"(^|\\W)"+p(e.pattern)+"(\\W|$)":"^"+p(e.pattern)+"$";var o=new RegExp(r,"i");return!!n.match(o)},p=function(e){var n=t(e);return n=n.replace(/\\\*/,".*"),n=n.replace(/\?/,"."),n=n.replace(/\\\[(!|)(.*)\\]/,function(e,t,n,r,o){return"["+(t&&"^"||"")+n.replace(/\\\-/,"-")+"]"})},h=function(e,t){var n=e.split("."),r=void 0,o=n[0];for("content"==o?(r=t.getContent(),n.shift()):"type"==o?(r=t.getType(),n.shift()):r=t.event;n.length>0;){var i=n.shift();if(!r[i])return null;r=r[i]}return r},f=function(t,r){if(!r||!r.device)return null;if(t.getSender()==e.credentials.userId)return null;for(var o=(0,u.default)(r.device),i=0;ir)break;t=u.shift(),c("_runCallbacks: popping",t.key),o.push(t)}n();for(var s=0;s>1;t(e[o])>0?r=o:n=o+1}return n}var i=1e3,s=0,a=void 0,u=[],c=function(){};t.exports.setNow=function(e){l=e||Date.now};var l=Date.now;t.exports.setTimeout=function(e,t){(t=t||0)<0&&(t=0);var r=Array.prototype.slice.call(arguments,2),i=l()+t,a=s++;c("setTimeout: scheduling cb",a,"at",i,"(delay",t,")");var d={runAt:i,func:e,params:r,key:a},p=o(u,function(e){return e.runAt-i});return u.splice(p,0,d),n(),a},t.exports.clearTimeout=function(e){if(0!==u.length){var t=void 0;for(t=0;t0}),function(t){e._activeQueues.push(t),u("Spinning up queue: '%s'",t),i(e,t)})}function i(e,t){var n=s(e,t);if(!n){var r=e._activeQueues.indexOf(t);return r>=0&&e._activeQueues.splice(r,1),void u("Stopping queue '%s' as it is now empty",t)}u("Queue '%s' has %s pending events",t,e._queues[t].length),e._procFn(n.event).done(function(r){a(e,t),u("Queue '%s' sent event %s",t,n.event.getId()),n.defer.resolve(r),i(e,t)},function(r){n.attempts+=1;var o=e.retryAlgorithm(n.event,n.attempts,r);u("retry(%s) err=%s event_id=%s waitTime=%s",n.attempts,r,n.event.getId(),o),-1===o?(u("Queue '%s' giving up on event %s",t,n.event.getId()),a(e,t),n.defer.reject(r),i(e,t)):setTimeout(function(){i(e,t)},o)})}function s(e,t){var n=e._queues[t];return d.isArray(n)?n[0]:null}function a(e,t){var n=e._queues[t];return d.isArray(n)?n.shift():null}function u(){if(p){var e;(e=console).log.apply(e,arguments)}}var c=e("bluebird"),l=function(e){return e&&e.__esModule?e:{default:e}}(c),d=e("./utils"),p=!1;r.prototype.getQueueForEvent=function(e){var t=this.queueAlgorithm(e);return t&&this._queues[t]?d.map(this._queues[t],function(e){return e.event}):null},r.prototype.removeEventFromQueue=function(e){var t=this.queueAlgorithm(e);if(!t||!this._queues[t])return!1;var n=!1;return d.removeElement(this._queues[t],function(t){if(t.event.getId()===e.getId())return n=!0,!0}),n},r.prototype.setProcessFunction=function(e){this._procFn=e,o(this)},r.prototype.queueEvent=function(e){var t=this.queueAlgorithm(e);if(!t)return null;this._queues[t]||(this._queues[t]=[]);var n=l.default.defer();return this._queues[t].push({event:e,defer:n,attempts:0}),u("Queue algorithm dumped event %s into queue '%s'",e.getId(),t),o(this),n.promise},r.RETRY_BACKOFF_RATELIMIT=function(e,t,n){if(400===n.httpStatus||403===n.httpStatus||401===n.httpStatus)return-1;if("rejected"===n.cors)return-1;if("M_LIMIT_EXCEEDED"===n.name){var r=n.data.retry_after_ms;if(r)return r}return t>4?-1:1e3*Math.pow(2,t)},r.QUEUE_MESSAGES=function(e){return"m.room.message"===e.getType()?"message":null},t.exports=r},{"./utils":47,bluebird:69}],38:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){e.createObjectStore("users",{keyPath:["userId"]}),e.createObjectStore("accountData",{keyPath:["type"]}),e.createObjectStore("sync",{keyPath:["clobber"]})}function i(e,t,n){var r=e.openCursor(t);return new h.default(function(e,t){var o=[];r.onerror=function(e){t(new Error("Query failed: "+e.target.errorCode))},r.onsuccess=function(t){var r=t.target.result;if(!r)return void e(o);o.push(n(r)),r.continue()}})}function s(e){return new h.default(function(t,n){e.oncomplete=function(e){t(e)},e.onerror=function(e){n(e)}})}function a(e){return new h.default(function(t,n){e.onsuccess=function(e){t(e)},e.onerror=function(e){n(e)}})}Object.defineProperty(n,"__esModule",{value:!0});var u=e("babel-runtime/core-js/get-iterator"),c=r(u),l=e("babel-runtime/helpers/slicedToArray"),d=r(l),p=e("bluebird"),h=r(p),f=e("../sync-accumulator"),v=r(f),m=e("../utils"),_=r(m),y=function(e,t){this.indexedDB=e,this._dbName="matrix-js-sdk:"+(t||"default"),this.db=null,this._syncAccumulator=new v.default};y.prototype={connect:function(){var e=this;if(this.db)return console.log("LocalIndexedDBStoreBackend.connect: already connected"),h.default.resolve();console.log("LocalIndexedDBStoreBackend.connect: connecting");var t=this.indexedDB.open(this._dbName,1);return t.onupgradeneeded=function(e){var t=e.target.result,n=e.oldVersion;console.log("LocalIndexedDBStoreBackend.connect: upgrading from "+n),n<1&&o(t)},t.onblocked=function(){console.log("can't yet open LocalIndexedDBStoreBackend because it is open elsewhere")},console.log("LocalIndexedDBStoreBackend.connect: awaiting connection"),a(t).then(function(t){return console.log("LocalIndexedDBStoreBackend.connect: connected"),e.db=t.target.result,e.db.onversionchange=function(){e.db.close()},e._init()})},_init:function(){var e=this;return h.default.all([this._loadAccountData(),this._loadSyncData()]).then(function(t){var n=(0,d.default)(t,2),r=n[0],o=n[1];console.log("LocalIndexedDBStoreBackend: loaded initial data"),e._syncAccumulator.accumulate({next_batch:o.nextBatch,rooms:o.roomsData,groups:o.groupsData,account_data:{events:r}})})},clearDatabase:function(){var e=this;return new h.default(function(t,n){console.log("Removing indexeddb instance: "+e._dbName);var r=e.indexedDB.deleteDatabase(e._dbName);r.onblocked=function(){console.log("can't yet delete indexeddb "+e._dbName+" because it is open elsewhere")},r.onerror=function(e){console.warn("unable to delete js-sdk store indexeddb: "+e.target.error),t()},r.onsuccess=function(){console.log("Removed indexeddb instance: "+e._dbName),t()}})},getSavedSync:function(e){void 0===e&&(e=!0);var t=this._syncAccumulator.getJSON();return t.nextBatch?e?h.default.resolve(_.default.deepCopy(t)):h.default.resolve(t):h.default.resolve(null)},setSyncData:function(e){var t=this;return h.default.resolve().then(function(){t._syncAccumulator.accumulate(e)})},syncToDatabase:function(e){var t=this._syncAccumulator.getJSON();return h.default.all([this._persistUserPresenceEvents(e),this._persistAccountData(t.accountData),this._persistSyncData(t.nextBatch,t.roomsData,t.groupsData)])},_persistSyncData:function(e,t,n){var r=this;return console.log("Persisting sync data up to ",e),h.default.try(function(){var o=r.db.transaction(["sync"],"readwrite");return o.objectStore("sync").put({clobber:"-",nextBatch:e,roomsData:t,groupsData:n}),s(o)})},_persistAccountData:function(e){var t=this;return h.default.try(function(){for(var n=t.db.transaction(["accountData"],"readwrite"),r=n.objectStore("accountData"),o=0;o1&&console.warn("loadSyncData: More than 1 sync row found."),e.length>0?e[0]:{}})})}},n.default=y},{"../sync-accumulator":44,"../utils":47,"babel-runtime/core-js/get-iterator":50,"babel-runtime/helpers/slicedToArray":66,bluebird:69}],39:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r=e("bluebird"),o=function(e){return e&&e.__esModule?e:{default:e}}(r),i=function(e,t,n){this._dbName=t,this._worker=new n(e),this._nextSeq=0,this._inFlight={},this._worker.onmessage=this._onWorkerMessage.bind(this),this._startPromise=this._doCmd("_setupWorker",[this._dbName]).then(function(){console.log("IndexedDB worker is ready")})};i.prototype={connect:function(){var e=this;return this._startPromise.then(function(){return e._doCmd("connect")})},clearDatabase:function(){var e=this;return this._startPromise.then(function(){return e._doCmd("clearDatabase")})},getSavedSync:function(){return this._doCmd("getSavedSync")},setSyncData:function(e){return this._doCmd("setSyncData",[e])},syncToDatabase:function(e){return this._doCmd("syncToDatabase",[e])},getUserPresenceEvents:function(){return this._doCmd("getUserPresenceEvents")},_doCmd:function(e,t){var n=this;return o.default.resolve().then(function(){var r=n._nextSeq++,i=o.default.defer();return n._inFlight[r]=i,n._worker.postMessage({command:e,seq:r,args:t}),i.promise})},_onWorkerMessage:function(e){var t=e.data;if("cmd_success"==t.command||"cmd_fail"==t.command){if(void 0===t.seq)return void console.error("Got reply from worker with no seq");var n=this._inFlight[t.seq];if(void 0===n)return void console.error("Got reply for unknown seq "+t.seq);delete this._inFlight[t.seq],"cmd_success"==t.command?n.resolve(t.result):n.reject(t.error)}else console.warn("Unrecognised message from worker: "+t)}},n.default=i},{bluebird:69}],40:[function(e,t,n){(function(n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var o=e("babel-runtime/core-js/get-iterator"),i=r(o),s=e("babel-runtime/helpers/slicedToArray"),a=r(s),u=e("bluebird"),c=r(u),l=e("./memory"),d=e("../utils"),p=r(d),h=e("./indexeddb-local-backend.js"),f=r(h),v=e("./indexeddb-remote-backend.js"),m=r(v),_=e("../models/user"),y=r(_),g=e("../models/event"),b=function(e){if(l.MatrixInMemoryStore.call(this,e),!e.indexedDB)throw new Error("Missing required option: indexedDB");if(e.workerScript){var t=e.workerApi;t||(t=n.Worker),this.backend=new m.default(e.workerScript,e.dbName,t) }else this.backend=new f.default(e.indexedDB,e.dbName);this.startedUp=!1,this._syncTs=0,this._userModifiedMap={}};p.default.inherits(b,l.MatrixInMemoryStore),b.prototype.startup=function(){var e=this;return this.startedUp?(console.log("IndexedDBStore.startup: already started"),c.default.resolve()):(console.log("IndexedDBStore.startup: connecting to backend"),this.backend.connect().then(function(){return console.log("IndexedDBStore.startup: loading presence events"),e.backend.getUserPresenceEvents()}).then(function(t){console.log("IndexedDBStore.startup: processing presence events"),t.forEach(function(t){var n=(0,a.default)(t,2),r=n[0],o=n[1],i=new y.default(r);o&&i.setPresenceEvent(new g.MatrixEvent(o)),e._userModifiedMap[i.userId]=i.getLastModifiedTime(),e.storeUser(i)})}))},b.prototype.getSavedSync=function(){return this.backend.getSavedSync()},b.prototype.deleteAllData=function(){return l.MatrixInMemoryStore.prototype.deleteAllData.call(this),this.backend.clearDatabase().then(function(){console.log("Deleted indexeddb data.")},function(e){throw console.error("Failed to delete indexeddb data: "+e),e})},b.prototype.save=function(){return Date.now()-this._syncTs>3e5?this._reallySave():c.default.resolve()},b.prototype._reallySave=function(){this._syncTs=Date.now();var e=[],t=!0,n=!1,r=void 0;try{for(var o,s=(0,i.default)(this.getUsers());!(t=(o=s.next()).done);t=!0){var a=o.value;this._userModifiedMap[a.userId]!==a.getLastModifiedTime()&&(a.events.presence&&(e.push([a.userId,a.events.presence.event]),this._userModifiedMap[a.userId]=a.getLastModifiedTime()))}}catch(e){n=!0,r=e}finally{try{!t&&s.return&&s.return()}finally{if(n)throw r}}return this.backend.syncToDatabase(e).catch(function(e){console.error("sync fail:",e)})},b.prototype.setSyncData=function(e){return this.backend.setSyncData(e)},t.exports.IndexedDBStore=b}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../models/event":27,"../models/user":34,"../utils":47,"./indexeddb-local-backend.js":38,"./indexeddb-remote-backend.js":39,"./memory":41,"babel-runtime/core-js/get-iterator":50,"babel-runtime/helpers/slicedToArray":66,bluebird:69}],41:[function(e,t,n){"use strict";var r=e("bluebird"),o=function(e){return e&&e.__esModule?e:{default:e}}(r),i=e("../utils"),s=e("../models/user");t.exports.MatrixInMemoryStore=function(e){e=e||{},this.rooms={},this.groups={},this.users={},this.syncToken=null,this.filters={},this.accountData={},this.localStorage=e.localStorage},t.exports.MatrixInMemoryStore.prototype={getSyncToken:function(){return this.syncToken},setSyncToken:function(e){this.syncToken=e},storeGroup:function(e){this.groups[e.groupId]=e},getGroup:function(e){return this.groups[e]||null},getGroups:function(){return i.values(this.groups)},storeRoom:function(e){this.rooms[e.roomId]=e,e.currentState.on("RoomState.members",this._onRoomMember.bind(this));var t=this;e.currentState.getMembers().forEach(function(n){t._onRoomMember(null,e.currentState,n)})},_onRoomMember:function(e,t,n){if("invite"!==n.membership){var r=this.users[n.userId]||new s(n.userId);n.name&&(r.setDisplayName(n.name),n.events.member&&r.setRawDisplayName(n.events.member.getDirectionalContent().displayname)),n.events.member&&n.events.member.getContent().avatar_url&&r.setAvatarUrl(n.events.member.getContent().avatar_url),this.users[r.userId]=r}},getRoom:function(e){return this.rooms[e]||null},getRooms:function(){return i.values(this.rooms)},removeRoom:function(e){this.rooms[e]&&this.rooms[e].removeListener("RoomState.members",this._onRoomMember),delete this.rooms[e]},getRoomSummaries:function(){return i.map(i.values(this.rooms),function(e){return e.summary})},storeUser:function(e){this.users[e.userId]=e},getUser:function(e){return this.users[e]||null},getUsers:function(){return i.values(this.users)},scrollback:function(e,t){return[]},storeEvents:function(e,t,n,r){},storeFilter:function(e){e&&(this.filters[e.userId]||(this.filters[e.userId]={}),this.filters[e.userId][e.filterId]=e)},getFilter:function(e,t){return this.filters[e]&&this.filters[e][t]?this.filters[e][t]:null},getFilterIdByName:function(e){if(!this.localStorage)return null;try{return this.localStorage.getItem("mxjssdk_memory_filter_"+e)}catch(e){}return null},setFilterIdByName:function(e,t){if(this.localStorage)try{this.localStorage.setItem("mxjssdk_memory_filter_"+e,t)}catch(e){}},storeAccountDataEvents:function(e){var t=this;e.forEach(function(e){t.accountData[e.getType()]=e})},getAccountData:function(e){return this.accountData[e]},setSyncData:function(e){return o.default.resolve()},save:function(){},startup:function(){return o.default.resolve()},getSavedSync:function(){return o.default.resolve(null)},deleteAllData:function(){return this.rooms={},this.users={},this.syncToken=null,this.filters={},this.accountData={},o.default.resolve()}}},{"../models/user":34,"../utils":47,bluebird:69}],42:[function(e,t,n){"use strict";function r(e){if(this.store=e,!(h.isFunction(e.getItem)&&h.isFunction(e.setItem)&&h.isFunction(e.removeItem)&&h.isFunction(e.key)&&"number"==typeof e.length))throw new Error("Supplied webStore does not meet the WebStorage API interface")}function o(e){return v+"devices/"+e}function i(e){return v+"sessions/"+e}function s(e,t){return v+"inboundgroupsessions/"+e+"/"+t}function a(e){return v+"rooms/"+e}function u(e,t){try{return JSON.parse(e.getItem(t))}catch(e){l("Failed to get key %s: %s",t,e),l(e.stack)}return null}function c(e,t,n){e.setItem(t,(0,p.default)(n))}function l(){if(f){var e;(e=console).log.apply(e,arguments)}}var d=e("babel-runtime/core-js/json/stringify"),p=function(e){return e&&e.__esModule?e:{default:e}}(d),h=e("../../utils"),f=!1,v="session.e2e.";r.prototype={storeEndToEndAccount:function(e){this.store.setItem(m,e)},getEndToEndAccount:function(){return this.store.getItem(m)},storeEndToEndDevicesForUser:function(e,t){c(this.store,o(e),t)},getEndToEndDevicesForUser:function(e){return u(this.store,o(e))},storeEndToEndDeviceTrackingStatus:function(e){c(this.store,y,e)},getEndToEndDeviceTrackingStatus:function(){return u(this.store,y)},storeEndToEndDeviceSyncToken:function(e){c(this.store,_,e)},getEndToEndDeviceSyncToken:function(){return u(this.store,_)},storeEndToEndSession:function(e,t,n){var r=this.getEndToEndSessions(e)||{};r[t]=n,c(this.store,i(e),r)},getEndToEndSessions:function(e){return u(this.store,i(e))},getAllEndToEndInboundGroupSessionKeys:function(){for(var e=v+"inboundgroupsessions/",t=[],n=0;nthis.opts.maxTimelineEntries)for(var r=n._timeline.length-this.opts.maxTimelineEntries,i=r;i0&&i.ephemeral.events.push(a),r._timeline.forEach(function(e){if(!i.timeline.prev_batch){if(!e.token)return;i.timeline.prev_batch=e.token}i.timeline.events.push(e.event)});for(var c=(0,s.default)(null),l=i.timeline.events.length-1;l>=0;l--){var d=i.timeline.events[l];if(null!==d.state_key&&void 0!==d.state_key){var p=f.default.deepCopy(d);p.unsigned&&(p.unsigned.prev_content&&(p.content=p.unsigned.prev_content),p.unsigned.prev_sender&&(p.sender=p.unsigned.prev_sender)),o(c,p)}}(0,u.default)(r._currentState).forEach(function(e){(0,u.default)(r._currentState[e]).forEach(function(t){var n=r._currentState[e][t];c[e]&&c[e][t]&&(n=c[e][t]),i.state.events.push(n)})}),t.join[n]=i});var n=[];return(0,u.default)(this.accountData).forEach(function(t){n.push(e.accountData[t])}),{nextBatch:this.nextBatch,roomsData:t,groupsData:this.groups,accountData:n}}}]),e}();t.exports=v},{"./utils":47,"babel-runtime/core-js/object/create":54,"babel-runtime/core-js/object/keys":57,"babel-runtime/helpers/classCallCheck":61,"babel-runtime/helpers/createClass":62}],45:[function(e,t,n){(function(n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){return"FILTER_SYNC_"+e+(t?"_"+t:"")}function i(){var e;k&&(e=console).log.apply(e,arguments)}function s(e,t){this.client=e,t=t||{},t.initialSyncLimit=void 0===t.initialSyncLimit?8:t.initialSyncLimit,t.resolveInvitesToProfiles=t.resolveInvitesToProfiles||!1,t.pollTimeout=t.pollTimeout||3e4,t.pendingEventOrdering=t.pendingEventOrdering||"chronological",t.canResetEntireTimeline||(t.canResetEntireTimeline=function(e){return!1}),this.opts=t,this._peekRoomId=null,this._currentSyncRequest=null,this._syncState=null,this._catchingUp=!1,this._running=!1,this._keepAliveTimer=null,this._connectionReturnedDefer=null,this._notifEvents=[],this._failedSyncCount=0,e.getNotifTimelineSet()&&e.reEmitter.reEmit(e.getNotifTimelineSet(),["Room.timeline","Room.timelineReset"])}function a(e,t){var n=new y(t);return e.reEmitter.reEmit(n,["User.avatarUrl","User.displayName","User.presence","User.currentlyActive","User.lastPresenceTs"]),n}var u=e("babel-runtime/core-js/json/stringify"),c=r(u),l=e("babel-runtime/core-js/object/keys"),d=r(l),p=e("babel-runtime/core-js/get-iterator"),h=r(p),f=e("babel-runtime/regenerator"),v=r(f),m=e("bluebird"),_=r(m),y=e("./models/user"),g=e("./models/room"),b=e("./models/group"),E=e("./utils"),w=e("./filter"),S=e("./models/event-timeline"),k=!0;s.prototype.createRoom=function(e){var t=this.client,n=new g(e,{pendingEventOrdering:this.opts.pendingEventOrdering,timelineSupport:t.timelineSupport});return t.reEmitter.reEmit(n,["Room.name","Room.timeline","Room.redaction","Room.receipt","Room.tags","Room.timelineReset","Room.localEchoUpdated","Room.accountData"]),this._registerStateListeners(n),n},s.prototype.createGroup=function(e){var t=this.client,n=new b(e);return t.reEmitter.reEmit(n,["Group.profile","Group.myMembership"]),n},s.prototype._registerStateListeners=function(e){var t=this.client;t.reEmitter.reEmit(e.currentState,["RoomState.events","RoomState.members","RoomState.newMember"]),e.currentState.on("RoomState.newMember",function(e,n,r){r.user=t.getUser(r.userId),t.reEmitter.reEmit(r,["RoomMember.name","RoomMember.typing","RoomMember.powerLevel","RoomMember.membership"])})},s.prototype._deregisterStateListeners=function(e){e.currentState.removeAllListeners("RoomState.events"),e.currentState.removeAllListeners("RoomState.members"),e.currentState.removeAllListeners("RoomState.newMember")},s.prototype.syncLeftRooms=function(){var e=this.client,t=this,n=new w(this.client.credentials.userId);n.setTimelineLimit(1),n.setIncludeLeaveRooms(!0);var r=this.opts.pollTimeout+8e4,i={timeout:0};return e.getOrCreateFilter(o(e.credentials.userId,"LEFT_ROOMS"),n).then(function(t){return i.filter=t,e._http.authedRequest(void 0,"GET","/sync",i,void 0,r)}).then(function(n){var r=[];n.rooms&&n.rooms.leave&&(r=t._mapSyncResponseToRoomArray(n.rooms.leave));var o=[];return r.forEach(function(n){var r=n.room;if(o.push(r),n.isBrandNewRoom){n.timeline=n.timeline||{};var i=t._mapSyncEventsFormat(n.timeline,r),s=t._mapSyncEventsFormat(n.state,r);r.getLiveTimeline().setPaginationToken(n.timeline.prev_batch,S.BACKWARDS),t._processRoomEvents(r,s,i),r.recalculate(e.credentials.userId),e.store.storeRoom(r),e.emit("Room",r)}}),o})},s.prototype.peek=function(e){var t=this,n=this.client;return this._peekRoomId=e,this.client.roomInitialSync(e,20).then(function(r){r.messages=r.messages||{},r.messages.chunk=r.messages.chunk||[],r.state=r.state||[];var o=t.createRoom(e),i=E.map(E.deepCopy(r.state),n.getEventMapper()),s=E.map(r.state,n.getEventMapper()),u=E.map(r.messages.chunk,n.getEventMapper());return r.presence&&E.isArray(r.presence)&&r.presence.map(n.getEventMapper()).forEach(function(e){var t=n.store.getUser(e.getContent().user_id);t?t.setPresenceEvent(e):(t=a(n,e.getContent().user_id),t.setPresenceEvent(e),n.store.storeUser(t)),n.emit("event",e)}),r.messages.start&&(o.oldState.paginationToken=r.messages.start),o.oldState.setStateEvents(i),o.currentState.setStateEvents(s),t._resolveInvites(o),o.recalculate(t.client.credentials.userId),o.addEventsToTimeline(u.reverse(),!0,o.getLiveTimeline(),r.messages.start),n.store.storeRoom(o),n.emit("Room",o),t._peekPoll(o),o})},s.prototype.stopPeeking=function(){this._peekRoomId=null},s.prototype._peekPoll=function(e,t){if(this._peekRoomId!==e.roomId)return void i("Stopped peeking in room %s",e.roomId);var n=this;this.client._http.authedRequest(void 0,"GET","/events",{room_id:e.roomId,timeout:3e4,from:t},void 0,5e4).done(function(t){if(n._peekRoomId!==e.roomId)return void i("Stopped peeking in room %s",e.roomId);t.chunk.filter(function(e){return"m.presence"===e.type}).map(n.client.getEventMapper()).forEach(function(e){var t=n.client.store.getUser(e.getContent().user_id);t?t.setPresenceEvent(e):(t=a(n.client,e.getContent().user_id),t.setPresenceEvent(e),n.client.store.storeUser(t)),n.client.emit("event",e)});var r=t.chunk.filter(function(t){return t.room_id===e.roomId}).map(n.client.getEventMapper());e.addLiveEvents(r),n._peekPoll(e,t.end)},function(r){console.error("[%s] Peek poll failed: %s",e.roomId,r),setTimeout(function(){n._peekPoll(e,t)},3e4)})},s.prototype.getSyncState=function(){return this._syncState},s.prototype.sync=function(){function e(){r.getPushRules().done(function(e){i("Got push rules"),r.pushRules=e,t()},function(t){s._startKeepAlives().done(function(){e()}),s._updateSyncState("ERROR",{error:t})})}function t(){var e=void 0;s.opts.filter?e=s.opts.filter:(e=new w(r.credentials.userId),e.setTimelineLimit(s.opts.initialSyncLimit)),r.getOrCreateFilter(o(r.credentials.userId),e).done(function(e){r.resetNotifTimelineSet(),s._sync({filterId:e})},function(e){s._startKeepAlives().done(function(){t()}),s._updateSyncState("ERROR",{error:e})})}var r=this.client,s=this;this._running=!0,n.document&&(this._onOnlineBound=this._onOnline.bind(this),n.document.addEventListener("online",this._onOnlineBound,!1)),r.isGuest()?s._sync({}):e()},s.prototype.stop=function(){i("SyncApi.stop"),n.document&&(n.document.removeEventListener("online",this._onOnlineBound,!1),this._onOnlineBound=void 0),this._running=!1,this._currentSyncRequest&&this._currentSyncRequest.abort(),this._keepAliveTimer&&(clearTimeout(this._keepAliveTimer),this._keepAliveTimer=null)},s.prototype.retryImmediately=function(){return!!this._connectionReturnedDefer&&(this._startKeepAlives(0),!0)},s.prototype._sync=function(){var e=(0,m.coroutine)(v.default.mark(function e(t){var n,r,o,s,a,u,c,l,d,p;return v.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=this.client,this._running){e.next=6;break}return i("Sync no longer running: exiting."),this._connectionReturnedDefer&&(this._connectionReturnedDefer.reject(),this._connectionReturnedDefer=null),this._updateSyncState("STOPPED"),e.abrupt("return");case 6:if(r=t.filterId,n.isGuest()&&!r&&(r=this._getGuestFilter()),o=n.store.getSyncToken(),s=this.opts.pollTimeout,("SYNCING"!==this.getSyncState()||this._catchingUp)&&(this._catchingUp=!0,s=0),a=s+8e4,u={filter:r,timeout:s},o?u.since=o:u._cacheBuster=Date.now(),"ERROR"!=this.getSyncState()&&"RECONNECTING"!=this.getSyncState()||(u.timeout=0),c=void 0,t.hasSyncedBefore){e.next=20;break}return e.next=19,(0,m.resolve)(n.store.getSavedSync());case 19:c=e.sent;case 20:if(l=!1,d=void 0,!c){e.next=28;break}i("sync(): not doing HTTP hit, instead returning stored /sync data"),l=!0,d={next_batch:c.nextBatch,rooms:c.roomsData,groups:c.groupsData,account_data:{events:c.accountData}},e.next=39;break;case 28:return e.prev=28,this._currentSyncRequest=n._http.authedRequest(void 0,"GET","/sync",u,void 0,a),e.next=32,(0,m.resolve)(this._currentSyncRequest);case 32:d=e.sent,e.next=39;break;case 35:return e.prev=35,e.t0=e.catch(28),this._onSyncError(e.t0,t),e.abrupt("return");case 39:if(n.store.setSyncToken(d.next_batch),this._failedSyncCount=0,l){e.next=44;break}return e.next=44,(0,m.resolve)(n.store.setSyncData(d));case 44:return e.prev=44,e.next=47,(0,m.resolve)(this._processSyncResponse(o,d));case 47:e.next=52;break;case 49:e.prev=49,e.t1=e.catch(44),console.error("Caught /sync error",e.t1.stack||e.t1);case 52:if(p={oldSyncToken:o,nextSyncToken:d.next_batch,catchingUp:this._catchingUp},t.hasSyncedBefore||(this._updateSyncState("PREPARED",p),t.hasSyncedBefore=!0),l){e.next=60;break}if(!this.opts.crypto){e.next=58;break}return e.next=58,(0,m.resolve)(this.opts.crypto.onSyncCompleted(p));case 58:this._updateSyncState("SYNCING",p),n.store.save();case 60:this._sync(t);case 61:case"end":return e.stop()}},e,this,[[28,35],[44,49]])}));return function(t){return e.apply(this,arguments)}}(),s.prototype._onSyncError=function(e,t){var n=this;if(!this._running)return i("Sync no longer running: exiting"),this._connectionReturnedDefer&&(this._connectionReturnedDefer.reject(),this._connectionReturnedDefer=null),void this._updateSyncState("STOPPED");console.error("/sync error %s",e),console.error(e),this._failedSyncCount++,console.log("Number of consecutive failed sync requests:",this._failedSyncCount),i("Starting keep-alive"),this._startKeepAlives().then(function(){n._sync(t)}),this._currentSyncRequest=null,this._updateSyncState(this._failedSyncCount>=3?"ERROR":"RECONNECTING")},s.prototype._processSyncResponse=function(){var e=(0,m.coroutine)(v.default.mark(function e(t,n){var r,o,s,u,c,l,d;return v.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=this.client,o=this,n.presence&&E.isArray(n.presence.events)&&n.presence.events.map(r.getEventMapper()).forEach(function(e){var t=r.store.getUser(e.getSender());t?t.setPresenceEvent(e):(t=a(r,e.getSender()),t.setPresenceEvent(e),r.store.storeUser(t)),r.emit("event",e)}),n.account_data&&E.isArray(n.account_data.events)&&(s=n.account_data.events.map(r.getEventMapper()),r.store.storeAccountDataEvents(s),s.forEach(function(e){return"m.push_rules"==e.getType()&&(r.pushRules=e.getContent()),r.emit("accountData",e),e})),n.to_device&&E.isArray(n.to_device.events)&&n.to_device.events.length>0?n.to_device.events.map(r.getEventMapper()).forEach(function(e){var t=e.getContent();if("m.room.message"==e.getType()&&"m.bad.encrypted"==t.msgtype)return void console.log("Ignoring undecryptable to-device event from "+e.getSender());r.emit("toDeviceEvent",e)}):this._catchingUp=!1,n.groups&&(n.groups.invite&&this._processGroupSyncEntry(n.groups.invite,"invite"),n.groups.join&&this._processGroupSyncEntry(n.groups.join,"join"),n.groups.leave&&this._processGroupSyncEntry(n.groups.leave,"leave")),u=[],c=[],l=[],n.rooms&&(n.rooms.invite&&(u=this._mapSyncResponseToRoomArray(n.rooms.invite)),n.rooms.join&&(c=this._mapSyncResponseToRoomArray(n.rooms.join)),n.rooms.leave&&(l=this._mapSyncResponseToRoomArray(n.rooms.leave))),this._notifEvents=[],u.forEach(function(e){var t=e.room,n=o._mapSyncEventsFormat(e.invite_state,t);o._processRoomEvents(t,n),e.isBrandNewRoom&&(t.recalculate(r.credentials.userId),r.store.storeRoom(t),r.emit("Room",t)),n.forEach(function(e){r.emit("event",e)})}),e.next=14,(0,m.resolve)(_.default.mapSeries(c,function(){var e=(0,m.coroutine)(v.default.mark(function e(n){var s,a,u,c,l,d,p,h,f=function(){var e=(0,m.coroutine)(v.default.mark(function e(t){return v.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r.emit("event",t),!t.isState()||"m.room.encryption"!=t.getType()||!o.opts.crypto){e.next=4;break}return e.next=4,(0,m.resolve)(o.opts.crypto.onCryptoEvent(t));case 4:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}();return v.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(s=n.room,a=o._mapSyncEventsFormat(n.state,s),u=o._mapSyncEventsFormat(n.timeline,s),c=o._mapSyncEventsFormat(n.ephemeral),l=o._mapSyncEventsFormat(n.account_data),n.unread_notifications&&(s.setUnreadNotificationCount("total",n.unread_notifications.notification_count),s.setUnreadNotificationCount("highlight",n.unread_notifications.highlight_count)),n.timeline=n.timeline||{},!n.isBrandNewRoom){e.next=11;break}s.getLiveTimeline().setPaginationToken(n.timeline.prev_batch,S.BACKWARDS),e.next=25;break;case 11:if(!n.timeline.limited){e.next=25;break}d=!0,p=u.length-1;case 14:if(!(p>=0)){e.next=24;break}if(h=u[p].getId(),!s.getTimelineForEvent(h)){e.next=21;break}return i("Already have event "+h+" in limited sync - not resetting"),d=!1,u.splice(0,p),e.abrupt("break",24);case 21:p--,e.next=14;break;case 24:d&&(o._deregisterStateListeners(s),s.resetLiveTimeline(n.timeline.prev_batch,o.opts.canResetEntireTimeline(s.roomId)?null:t),r.resetNotifTimelineSet(),o._registerStateListeners(s));case 25:return o._processRoomEvents(s,a,u),s.addLiveEvents(c),s.addAccountData(l),s.recalculate(r.credentials.userId),n.isBrandNewRoom&&(r.store.storeRoom(s),r.emit("Room",s)),e.next=32,(0,m.resolve)(_.default.mapSeries(a,f));case 32:return e.next=34,(0,m.resolve)(_.default.mapSeries(u,f));case 34:c.forEach(function(e){r.emit("event",e)}),l.forEach(function(e){r.emit("event",e)});case 36:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()));case 14:if(l.forEach(function(e){var t=e.room,n=o._mapSyncEventsFormat(e.state,t),i=o._mapSyncEventsFormat(e.timeline,t),s=o._mapSyncEventsFormat(e.account_data);o._processRoomEvents(t,n,i),t.addAccountData(s),t.recalculate(r.credentials.userId),e.isBrandNewRoom&&(r.store.storeRoom(t),r.emit("Room",t)),n.forEach(function(e){r.emit("event",e)}),i.forEach(function(e){r.emit("event",e)}),s.forEach(function(e){r.emit("event",e)})}),t&&this._notifEvents.length&&(this._notifEvents.sort(function(e,t){return e.getTs()-t.getTs()}),this._notifEvents.forEach(function(e){r.getNotifTimelineSet().addLiveEvent(e)})),!n.device_lists){e.next=22;break}if(!this.opts.crypto){e.next=22;break}return e.next=20,(0,m.resolve)(this.opts.crypto.handleDeviceListChanges(n.device_lists));case 20:e.next=22;break;case 22:this.opts.crypto&&n.device_one_time_keys_count&&(d=n.device_one_time_keys_count.signed_curve25519||0,this.opts.crypto.updateOneTimeKeyCount(d));case 23:case"end":return e.stop()}},e,this)}));return function(t,n){return e.apply(this,arguments)}}(),s.prototype._startKeepAlives=function(e){void 0===e&&(e=2e3+Math.floor(5e3*Math.random())),null!==this._keepAliveTimer&&clearTimeout(this._keepAliveTimer);var t=this;return e>0?t._keepAliveTimer=setTimeout(t._pokeKeepAlive.bind(t),e):t._pokeKeepAlive(),this._connectionReturnedDefer||(this._connectionReturnedDefer=_.default.defer()),this._connectionReturnedDefer.promise},s.prototype._pokeKeepAlive=function(){function e(){clearTimeout(t._keepAliveTimer),t._connectionReturnedDefer&&(t._connectionReturnedDefer.resolve(),t._connectionReturnedDefer=null)}var t=this;this.client._http.request(void 0,"GET","/_matrix/client/versions",void 0,void 0,{prefix:"",localTimeoutMs:15e3}).done(function(){e()},function(n){400==n.httpStatus?t._keepAliveTimer=setTimeout(e,2e3):(t._keepAliveTimer=setTimeout(t._pokeKeepAlive.bind(t),5e3+Math.floor(5e3*Math.random())),t._updateSyncState("ERROR",{error:n}))})},s.prototype._processGroupSyncEntry=function(e,t){var n=!0,r=!1,o=void 0;try{for(var i,s=(0,h.default)((0,d.default)(e));!(n=(i=s.next()).done);n=!0){var a=i.value,u=e[a],c=this.client.store.getGroup(a),l=null===c;null===c&&(c=this.createGroup(a)),u.profile&&c.setProfile(u.profile.name,u.profile.avatar_url),u.inviter&&c.setInviter({userId:u.inviter}),c.setMyMembership(t),l&&(this.client.store.storeGroup(c),this.client.emit("Group",c))}}catch(e){r=!0,o=e}finally{try{!n&&s.return&&s.return()}finally{if(r)throw o}}},s.prototype._mapSyncResponseToRoomArray=function(e){var t=this.client,n=this;return E.keys(e).map(function(r){var o=e[r],i=t.store.getRoom(r),s=!1;return i||(i=n.createRoom(r),s=!0),o.room=i,o.isBrandNewRoom=s,o})},s.prototype._mapSyncEventsFormat=function(e,t){if(!e||!E.isArray(e.events))return[];var n=this.client.getEventMapper();return e.events.map(function(e){return t&&(e.room_id=t.roomId),n(e)})},s.prototype._resolveInvites=function(e){if(e&&this.opts.resolveInvitesToProfiles){var t=this.client;e.getMembersWithMembership("invite").forEach(function(n){if(!n._requestedProfileInfo){n._requestedProfileInfo=!0;var r=t.getUser(n.userId),o=void 0;o=r?_.default.resolve({avatar_url:r.avatarUrl,displayname:r.displayName}):t.getProfileInfo(n.userId),o.done(function(t){var r=n.events.member;"invite"===r.getContent().membership&&(r.getContent().avatar_url=t.avatar_url,r.getContent().displayname=t.displayname,n.setMembershipEvent(r,e.currentState))},function(e){})}})}},s.prototype._processRoomEvents=function(e,t,n){n=n||[];var r=this.client,o=E.map(E.deepCopy(t.map(function(e){return e.event})),r.getEventMapper()),i=t;if(e.oldState.setStateEvents(o),e.currentState.setStateEvents(i),this._resolveInvites(e),e.recalculate(this.client.credentials.userId),r.getNotifTimelineSet())for(var s=0;st.minIndex())return!0}else if(t.index0&&this.unpaginate(c,e!=a.BACKWARDS),s.default.resolve(!0)}if(!n||0===r)return s.default.resolve(!1);if(!o.timeline.getPaginationToken(e))return u("TimelineWindow: no token"),s.default.resolve(!1);u("TimelineWindow: starting request");var l=this,d=this._client.paginateEventTimeline(o.timeline,{backwards:e==a.BACKWARDS,limit:t}).finally(function(){o.pendingPaginate=null}).then(function(n){return u("TimelineWindow: request completed with result "+n),!!n&&l.paginate(e,t,!0,r-1)});return o.pendingPaginate=d,d},r.prototype.unpaginate=function(e,t){var n=t?this._start:this._end;if(e>this._eventCount||e<0)throw new Error("Attemting to unpaginate "+e+" events, but only have "+this._eventCount+" in the timeline");for(;e>0;){var r=t?n.advance(e):n.retreat(e);if(r<=0)throw new Error("Unable to unpaginate any further, but still have "+this._eventCount+" events");e-=r,this._eventCount-=r,u("TimelineWindow.unpaginate: dropped "+r+" (now "+this._eventCount+")")}},r.prototype.getEvents=function(){if(!this._start)return[];for(var e=[],t=this._start.timeline;;){var n=t.getEvents(),r=0,o=n.length;t===this._start.timeline&&(r=this._start.index+t.getBaseIndex()),t===this._end.timeline&&(o=this._end.index+t.getBaseIndex());for(var i=r;i0)return this.index+=t,t;var n=this.timeline.getNeighbouringTimeline(e<0?a.BACKWARDS:a.FORWARDS);return n?(this.timeline=n,this.index=e<0?this.maxIndex():this.minIndex(),u("paginate: switched to new neighbour"),this.advance(e)):0},o.prototype.retreat=function(e){return-1*this.advance(-1*e)},t.exports.TimelineWindow=r,t.exports.TimelineIndex=o},{"./models/event-timeline":26,bluebird:69}],47:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var o=e("babel-runtime/core-js/object/create"),i=r(o),s=e("babel-runtime/helpers/typeof"),a=r(s),u=e("babel-runtime/core-js/json/stringify"),c=r(u);t.exports.encodeParams=function(e){var t="";for(var n in e)e.hasOwnProperty(n)&&(t+="&"+encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t.substring(1)},t.exports.encodeUri=function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e=e.replace(n,encodeURIComponent(t[n])));return e},t.exports.map=function(e,t){for(var n=new Array(e.length),r=0;r=0;r--)if(t(e[r],r,e))return e[r]}else for(r=0;r=0;r--)if(t(e[r],r,e))return o=e[r],e.splice(r,1),o}else for(r=0;r>>0;if("function"!=typeof e)throw new TypeError;for(var r=[],o=arguments.length>=2?arguments[1]:void 0,i=0;i>>0;if("function"!=typeof e)throw new TypeError(e+" is not a function");arguments.length>1&&(n=t);var s=new Array(i);for(r=0;r>>0;if("function"!=typeof e)throw new TypeError(e+" is not a function");for(arguments.length>1&&(n=t),r=0;r1){var o=Object(arguments[1]);for(var i in o)t.call(o,i)&&(r[i]=o[i])}return r}}()),e.super_=t,e.prototype=(0,i.default)(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}},{"babel-runtime/core-js/json/stringify":52,"babel-runtime/core-js/object/create":54,"babel-runtime/helpers/typeof":67}],48:[function(e,t,n){(function(n){"use strict";function r(e){this.roomId=e.roomId,this.client=e.client,this.webRtc=e.webRtc,this.forceTURN=e.forceTURN,this.URL=e.URL,this.turnServers=e.turnServers||[],0===this.turnServers.length&&this.turnServers.push({urls:[r.FALLBACK_STUN_SERVER]}),s.forEach(this.turnServers,function(e){s.checkObjectHasKeys(e,["urls"])}),this.callId="c"+(new Date).getTime()+Math.random(),this.state="fledgling",this.didConnect=!1,this.candidateSendQueue=[],this.candidateSendTries=0,this.mediaPromises=(0,i.default)(null),this.screenSharingStream=null}var o=e("babel-runtime/core-js/object/create"),i=function(e){return e&&e.__esModule?e:{default:e}}(o),s=e("../utils"),a=e("events").EventEmitter;r.CALL_TIMEOUT_MS=6e4,r.FALLBACK_STUN_SERVER="stun:stun.l.google.com:19302",r.ERR_LOCAL_OFFER_FAILED="local_offer_failed",r.ERR_NO_USER_MEDIA="no_user_media",s.inherits(r,a),r.prototype.placeVoiceCall=function(){g("placeVoiceCall"),_(this),E(this,k("voice")),this.type="voice"},r.prototype.placeVideoCall=function(e,t){g("placeVideoCall"),_(this),this.localVideoElement=t,this.remoteVideoElement=e,E(this,k("video")),this.type="video",v(this)},r.prototype.placeScreenSharingCall=function(e,t){g("placeScreenSharingCall"),_(this);var n=S(this);if(n){this.localVideoElement=t,this.remoteVideoElement=e;var o=this;this.webRtc.getUserMedia(n,function(e){o.screenSharingStream=e,g("Got screen stream, requesting audio stream...");var t=k("voice");E(o,t)},function(e){o.emit("error",y(r.ERR_NO_USER_MEDIA,"Failed to get screen-sharing stream: "+e))}),this.type="video",v(this)}},r.prototype.playElement=function(e,t){console.log("queuing play on "+t+" and element "+e),this.mediaPromises[t]?this.mediaPromises[t]=this.mediaPromises[t].then(function(){return console.log("previous promise completed for "+t),e.play()},function(){return console.log("previous promise failed for "+t),e.play()}):this.mediaPromises[t]=e.play()},r.prototype.pauseElement=function(e,t){console.log("queuing pause on "+t+" and element "+e),this.mediaPromises[t]?this.mediaPromises[t]=this.mediaPromises[t].then(function(){return console.log("previous promise completed for "+t),e.pause()},function(){return console.log("previous promise failed for "+t),e.pause()}):this.mediaPromises[t]=e.pause()},r.prototype.assignElement=function(e,t,n){console.log("queuing assign on "+n+" element "+e+" for "+t),this.mediaPromises[n]?this.mediaPromises[n]=this.mediaPromises[n].then(function(){console.log("previous promise completed for "+n),e.srcObject=t},function(){console.log("previous promise failed for "+n),e.srcObject=t}):e.srcObject=t},r.prototype.getLocalVideoElement=function(){return this.localVideoElement},r.prototype.getRemoteVideoElement=function(){return this.remoteVideoElement},r.prototype.getRemoteAudioElement=function(){return this.remoteAudioElement},r.prototype.setLocalVideoElement=function(e){if(this.localVideoElement=e,e&&this.localAVStream&&"video"===this.type){e.autoplay=!0,this.assignElement(e,this.localAVStream,"localVideo"),e.muted=!0;var t=this;setTimeout(function(){var e=t.getLocalVideoElement();e.play&&t.playElement(e,"localVideo")},0)}},r.prototype.setRemoteVideoElement=function(e){this.remoteVideoElement=e,v(this)},r.prototype.setRemoteAudioElement=function(e){this.remoteVideoElement.muted=!0,this.remoteAudioElement=e,this.remoteAudioElement.muted=!1,m(this)},r.prototype._initWithInvite=function(e){this.msg=e.getContent(),this.peerConn=w(this);var t=this;this.peerConn&&this.peerConn.setRemoteDescription(new this.webRtc.RtcSessionDescription(this.msg.offer),R(t,t._onSetRemoteDescriptionSuccess),R(t,t._onSetRemoteDescriptionError)),l(this,"ringing"),this.direction="inbound",this.msg.offer&&this.msg.offer.sdp&&this.msg.offer.sdp.indexOf("m=video")>-1?this.type="video":this.type="voice",e.getAge()&&setTimeout(function(){"ringing"==t.state&&(g("Call invite has expired. Hanging up."),t.hangupParty="remote",l(t,"ended"),f(t),"closed"!=t.peerConn.signalingState&&t.peerConn.close(),t.emit("hangup",t))},this.msg.lifetime-e.getAge())},r.prototype._initWithHangup=function(e){this.msg=e.getContent(),l(this,"ended")},r.prototype.answer=function(){g("Answering call %s of type %s",this.callId,this.type);var e=this;this.localAVStream||this.waitForLocalAVStream?this.localAVStream?this._maybeGotUserMediaForAnswer(this.localAVStream):this.waitForLocalAVStream&&l(this,"wait_local_media"):(this.webRtc.getUserMedia(k(this.type),R(e,e._maybeGotUserMediaForAnswer),R(e,e._maybeGotUserMediaForAnswer)),l(this,"wait_local_media"))},r.prototype._replacedBy=function(e){g(this.callId+" being replaced by "+e.callId),"wait_local_media"==this.state?(g("Telling new call to wait for local media"),e.waitForLocalAVStream=!0):"create_offer"==this.state?(g("Handing local stream to new call"),e._maybeGotUserMediaForAnswer(this.localAVStream),delete this.localAVStream):"invite_sent"==this.state&&(g("Handing local stream to new call"),e._maybeGotUserMediaForAnswer(this.localAVStream),delete this.localAVStream),e.localVideoElement=this.localVideoElement,e.remoteVideoElement=this.remoteVideoElement,e.remoteAudioElement=this.remoteAudioElement,this.successor=e,this.emit("replaced",e),this.hangup(!0)},r.prototype.hangup=function(e,t){g("Ending call "+this.callId),h(this,"local",e,!t);var n={version:0,call_id:this.callId,reason:e};d(this,"m.call.hangup",n)},r.prototype.setLocalVideoMuted=function(e){this.localAVStream&&u(this.localAVStream.getVideoTracks(),!e)},r.prototype.isLocalVideoMuted=function(){return!!this.localAVStream&&!c(this.localAVStream.getVideoTracks())},r.prototype.setMicrophoneMuted=function(e){this.localAVStream&&u(this.localAVStream.getAudioTracks(),!e)},r.prototype.isMicrophoneMuted=function(){return!!this.localAVStream&&!c(this.localAVStream.getAudioTracks())},r.prototype._maybeGotUserMediaForInvite=function(e){if(this.successor)return void this.successor._maybeGotUserMediaForAnswer(e);if("ended"!=this.state){g("_maybeGotUserMediaForInvite -> "+this.type);var t=this,n=e,r={mandatory:{OfferToReceiveAudio:!0,OfferToReceiveVideo:"video"===t.type}};if(e instanceof MediaStream){var o=this.getLocalVideoElement();o&&"video"==this.type&&(o.autoplay=!0,this.screenSharingStream?(g("Setting screen sharing stream to the local video element"),this.assignElement(o,this.screenSharingStream,"localVideo")):this.assignElement(o,e,"localVideo"),o.muted=!0,setTimeout(function(){var e=t.getLocalVideoElement();e.play&&t.playElement(e,"localVideo")},0)),this.screenSharingStream&&(this.screenSharingStream.addTrack(e.getAudioTracks()[0]),e=this.screenSharingStream),this.localAVStream=e,u(e.getAudioTracks(),!0),this.peerConn=w(this),this.peerConn.addStream(e)}else{if("PermissionDeniedError"!==n.name)return g("Failed to getUserMedia."),void this._getUserMediaFailed(n);g("User denied access to camera/microphone. Or possibly you are using an insecure domain. Receiving only."),this.peerConn=w(this)}this.peerConn.createOffer(R(t,t._gotLocalOffer),R(t,t._getLocalOfferFailed),r),l(t,"create_offer")}},r.prototype._maybeGotUserMediaForAnswer=function(e){var t=this;if("ended"!=t.state){var n=e;if(e instanceof MediaStream){var r=t.getLocalVideoElement();r&&"video"==t.type&&(r.autoplay=!0,this.assignElement(r,e,"localVideo"),r.muted=!0,setTimeout(function(){var e=t.getLocalVideoElement();e.play&&t.playElement(e,"localVideo")},0)),t.localAVStream=e,u(e.getAudioTracks(),!0),t.peerConn.addStream(e)}else{if("PermissionDeniedError"!==n.name)return g("Failed to getUserMedia."),void this._getUserMediaFailed(n);g("User denied access to camera/microphone. Or possibly you are using an insecure domain. Receiving only.")}var o={mandatory:{OfferToReceiveAudio:!0,OfferToReceiveVideo:"video"===t.type}};t.peerConn.createAnswer(function(e){g("Created answer: "+e),t.peerConn.setLocalDescription(e,function(){var e={version:0,call_id:t.callId,answer:{sdp:t.peerConn.localDescription.sdp,type:t.peerConn.localDescription.type}};d(t,"m.call.answer",e),l(t,"connecting")},function(){g("Error setting local description!")},o)},function(e){g("Failed to create answer: "+e)}),l(t,"create_answer")}},r.prototype._gotLocalIceCandidate=function(e){if(e.candidate){g("Got local ICE "+e.candidate.sdpMid+" candidate: "+e.candidate.candidate);var t={candidate:e.candidate.candidate,sdpMid:e.candidate.sdpMid,sdpMLineIndex:e.candidate.sdpMLineIndex};p(this,t)}},r.prototype._gotRemoteIceCandidate=function(e){"ended"!=this.state&&(g("Got remote ICE "+e.sdpMid+" candidate: "+e.candidate),this.peerConn.addIceCandidate(new this.webRtc.RtcIceCandidate(e),function(){},function(e){}))},r.prototype._receivedAnswer=function(e){if("ended"!=this.state){var t=this;this.peerConn.setRemoteDescription(new this.webRtc.RtcSessionDescription(e.answer),R(t,t._onSetRemoteDescriptionSuccess),R(t,t._onSetRemoteDescriptionError)),l(t,"connecting")}},r.prototype._gotLocalOffer=function(e){var t=this;if(g("Created offer: "+e),"ended"==t.state)return void g("Ignoring newly created offer on call ID "+t.callId+" because the call has ended");t.peerConn.setLocalDescription(e,function(){var e={version:0,call_id:t.callId,offer:{sdp:t.peerConn.localDescription.sdp,type:t.peerConn.localDescription.type},lifetime:r.CALL_TIMEOUT_MS};d(t,"m.call.invite",e),setTimeout(function(){"invite_sent"==t.state&&t.hangup("invite_timeout")},r.CALL_TIMEOUT_MS),l(t,"invite_sent")},function(){g("Error setting local description!")})},r.prototype._getLocalOfferFailed=function(e){this.emit("error",y(r.ERR_LOCAL_OFFER_FAILED,"Failed to start audio for call!"))},r.prototype._getUserMediaFailed=function(e){this.emit("error",y(r.ERR_NO_USER_MEDIA,"Couldn't start capturing media! Is your microphone set up and does this app have permission?")),this.hangup("user_media_failed")},r.prototype._onIceConnectionStateChanged=function(){"ended"!=this.state&&(g("Ice connection state changed to: "+this.peerConn.iceConnectionState),"completed"==this.peerConn.iceConnectionState||"connected"==this.peerConn.iceConnectionState?(l(this,"connected"),this.didConnect=!0):"failed"==this.peerConn.iceConnectionState&&this.hangup("ice_failed"))},r.prototype._onSignallingStateChanged=function(){g("call "+this.callId+": Signalling state changed to: "+this.peerConn.signalingState)},r.prototype._onSetRemoteDescriptionSuccess=function(){g("Set remote description")},r.prototype._onSetRemoteDescriptionError=function(e){g("Failed to set remote description"+e)},r.prototype._onAddStream=function(e){g("Stream id "+e.stream.id+" added");var t=e.stream;t.getVideoTracks().length>0?(this.type="video",this.remoteAVStream=t,this.remoteAStream=t):(this.type="voice",this.remoteAStream=t);var n=this;I(t,function(e){g("Track id "+e.id+" added"),e.onstarted=R(n,n._onRemoteStreamTrackStarted)}),void 0!==e.stream.oninactive?e.stream.oninactive=R(n,n._onRemoteStreamEnded):e.stream.onended=R(n,n._onRemoteStreamEnded),e.stream.onstarted=R(n,n._onRemoteStreamStarted),"video"===this.type?(v(this),m(this)):m(this)},r.prototype._onRemoteStreamStarted=function(e){l(this,"connected")},r.prototype._onRemoteStreamEnded=function(e){g("Remote stream ended"),this.hangupParty="remote",l(this,"ended"),f(this),"closed"!=this.peerConn.signalingState&&this.peerConn.close(),this.emit("hangup",this)},r.prototype._onRemoteStreamTrackStarted=function(e){l(this,"connected")},r.prototype._onHangupReceived=function(e){g("Hangup received"),h(this,"remote",e.reason,!0)},r.prototype._onAnsweredElsewhere=function(e){g("Answered elsewhere"),h(this,"remote","answered_elsewhere",!0)};var u=function(e,t){for(var n=0;n5)return g("Failed to send candidates on attempt %s. Giving up for now.",t.candidateSendTries),void(t.candidateSendTries=0);var i=500*Math.pow(2,t.candidateSendTries);++t.candidateSendTries,g("Failed to send candidates. Retrying in "+i+"ms"),setTimeout(function(){e(t)},i)})}},E=function(e,t){e.client.callList[e.callId]=e,e.webRtc.getUserMedia(t,R(e,e._maybeGotUserMediaForInvite),R(e,e._maybeGotUserMediaForInvite)),l(e,"wait_local_media"),e.direction="outbound",e.config=t},w=function(e){var t=e.turnServers;if("mozilla"===e.webRtc.vendor){t=[];for(var n=0;n-1)return!0;return!1};var u=i.navigator.getUserMedia||i.navigator.webkitGetUserMedia||i.navigator.mozGetUserMedia;return u&&(a.getUserMedia=function(){return u.apply(i.navigator,arguments)}),a.RtcPeerConnection=i.RTCPeerConnection||i.webkitRTCPeerConnection||i.mozRTCPeerConnection,a.RtcSessionDescription=i.RTCSessionDescription||i.webkitRTCSessionDescription||i.mozRTCSessionDescription,a.RtcIceCandidate=i.RTCIceCandidate||i.webkitRTCIceCandidate||i.mozRTCIceCandidate,a.vendor=null,i.mozRTCPeerConnection?a.vendor="mozilla":i.webkitRTCPeerConnection?a.vendor="webkit":i.RTCPeerConnection&&(a.vendor="generic"),a.RtcIceCandidate&&a.RtcSessionDescription&&a.RtcPeerConnection&&a.getUserMedia?new r({webRtc:a,client:e,URL:i.URL,roomId:t,turnServers:e.getTurnServers(),forceTURN:!!o&&o.forceTURN}):null}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../utils":47,"babel-runtime/core-js/object/create":54,events:158}],49:[function(e,t,n){"use strict";function r(e){return a.lastIndex=0,e.replace(a,function(e){return u[e]})}function o(e){switch(typeof e){case"string":return'"'+r(e)+'"';case"number":return isFinite(e)?e:"null";case"boolean":return e;case"object":return null===e?"null":Array.isArray(e)?i(e):s(e);default:throw new Error("Cannot stringify: "+typeof e)}}function i(e){for(var t="[",n="",r=0;r0;){var t=e.shift();if("function"==typeof t){var n=e.shift(),r=e.shift();t.call(n,r)}else t._settlePromises()}},o.prototype._drainQueues=function(){this._drainQueue(this._normalQueue),this._reset(),this._haveDrainedQueues=!0,this._drainQueue(this._lateQueue)},o.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},o.prototype._reset=function(){this._isTickUsed=!1},n.exports=o,n.exports.firstLineError=u},{"./queue":26,"./schedule":29,"./util":36}],3:[function(e,t,n){"use strict";t.exports=function(e,t,n,r){var o=!1,i=function(e,t){this._reject(t)},s=function(e,t){t.promiseRejectionQueued=!0,t.bindingPromise._then(i,i,null,this,e)},a=function(e,t){0==(50397184&this._bitField)&&this._resolveCallback(t.target)},u=function(e,t){t.promiseRejectionQueued||this._reject(e)};e.prototype.bind=function(i){o||(o=!0,e.prototype._propagateFrom=r.propagateFromFunction(),e.prototype._boundValue=r.boundValueFunction());var c=n(i),l=new e(t);l._propagateFrom(this,1);var d=this._target();if(l._setBoundTo(c),c instanceof e){var p={promiseRejectionQueued:!1,promise:l,target:d,bindingPromise:c};d._then(t,s,void 0,l,p),c._then(a,u,void 0,l,p),l._setOnCancel(c)}else l._resolveCallback(d);return l},e.prototype._setBoundTo=function(e){void 0!==e?(this._bitField=2097152|this._bitField,this._boundTo=e):this._bitField=-2097153&this._bitField},e.prototype._isBound=function(){return 2097152==(2097152&this._bitField)},e.bind=function(t,n){return e.resolve(n).bind(t)}}},{}],4:[function(e,t,n){"use strict";function r(){try{Promise===i&&(Promise=o)}catch(e){}return i}var o;"undefined"!=typeof Promise&&(o=Promise);var i=e("./promise")();i.noConflict=r,t.exports=i},{"./promise":22}],5:[function(e,t,n){"use strict";var r=Object.create;if(r){var o=r(null),i=r(null);o[" size"]=i[" size"]=0}t.exports=function(t){function n(e,n){var r;if(null!=e&&(r=e[n]),"function"!=typeof r){var o="Object "+a.classString(e)+" has no method '"+a.toString(n)+"'";throw new t.TypeError(o)}return r}function r(e){return n(e,this.pop()).apply(e,this)}function o(e){return e[this]}function i(e){var t=+this;return t<0&&(t=Math.max(0,t+e.length)),e[t]}var s,a=e("./util"),u=a.canEvaluate;a.isIdentifier;t.prototype.call=function(e){var t=[].slice.call(arguments,1);return t.push(e),this._then(r,void 0,void 0,t,void 0)},t.prototype.get=function(e){var t,n="number"==typeof e;if(n)t=i;else if(u){var r=s(e);t=null!==r?r:o}else t=o;return this._then(t,void 0,void 0,e,void 0)}}},{"./util":36}],6:[function(e,t,n){"use strict";t.exports=function(t,n,r,o){var i=e("./util"),s=i.tryCatch,a=i.errorObj,u=t._async;t.prototype.break=t.prototype.cancel=function(){if(!o.cancellation())return this._warn("cancellation is disabled");for(var e=this,t=e;e._isCancellable();){if(!e._cancelBy(t)){t._isFollowing()?t._followee().cancel():t._cancelBranched();break}var n=e._cancellationParent;if(null==n||!n._isCancellable()){e._isFollowing()?e._followee().cancel():e._cancelBranched();break}e._isFollowing()&&e._followee().cancel(),e._setWillBeCancelled(),t=e,e=n}},t.prototype._branchHasCancelled=function(){this._branchesRemainingToCancel--},t.prototype._enoughBranchesHaveCancelled=function(){return void 0===this._branchesRemainingToCancel||this._branchesRemainingToCancel<=0},t.prototype._cancelBy=function(e){return e===this?(this._branchesRemainingToCancel=0,this._invokeOnCancel(),!0):(this._branchHasCancelled(),!!this._enoughBranchesHaveCancelled()&&(this._invokeOnCancel(),!0))},t.prototype._cancelBranched=function(){this._enoughBranchesHaveCancelled()&&this._cancel()},t.prototype._cancel=function(){this._isCancellable()&&(this._setCancelled(),u.invoke(this._cancelPromises,this,void 0))},t.prototype._cancelPromises=function(){this._length()>0&&this._settlePromises()},t.prototype._unsetOnCancel=function(){this._onCancelField=void 0},t.prototype._isCancellable=function(){return this.isPending()&&!this._isCancelled()},t.prototype.isCancellable=function(){return this.isPending()&&!this.isCancelled()},t.prototype._doInvokeOnCancel=function(e,t){if(i.isArray(e))for(var n=0;n=0)return i[e]}var o=!1,i=[];return e.prototype._promiseCreated=function(){},e.prototype._pushContext=function(){},e.prototype._popContext=function(){return null},e._peekContext=e.prototype._peekContext=function(){},t.prototype._pushContext=function(){void 0!==this._trace&&(this._trace._promiseCreated=null,i.push(this._trace))},t.prototype._popContext=function(){if(void 0!==this._trace){var e=i.pop(),t=e._promiseCreated;return e._promiseCreated=null,t}return null},t.CapturedTrace=null,t.create=n,t.deactivateLongStackTraces=function(){},t.activateLongStackTraces=function(){var n=e.prototype._pushContext,i=e.prototype._popContext,s=e._peekContext,a=e.prototype._peekContext,u=e.prototype._promiseCreated;t.deactivateLongStackTraces=function(){e.prototype._pushContext=n,e.prototype._popContext=i,e._peekContext=s,e.prototype._peekContext=a,e.prototype._promiseCreated=u,o=!1},o=!0,e.prototype._pushContext=t.prototype._pushContext,e.prototype._popContext=t.prototype._popContext,e._peekContext=e.prototype._peekContext=r,e.prototype._promiseCreated=function(){var e=this._peekContext();e&&null==e._promiseCreated&&(e._promiseCreated=this)}},t}},{}],9:[function(t,n,r){"use strict";n.exports=function(n,r){function o(e,t){return{promise:t}}function i(){return!1}function s(e,t,n){var r=this;try{e(t,n,function(e){if("function"!=typeof e)throw new TypeError("onCancel must be a function, got: "+L.toString(e));r._attachCancellationCallback(e)})}catch(e){return e}}function a(e){if(!this._isCancellable())return this;var t=this._onCancel();void 0!==t?L.isArray(t)?t.push(e):this._setOnCancel([t,e]):this._setOnCancel(e)}function u(){return this._onCancelField}function c(e){this._onCancelField=e}function l(){this._cancellationParent=void 0,this._onCancelField=void 0}function d(e,t){if(0!=(1&t)){this._cancellationParent=e;var n=e._branchesRemainingToCancel;void 0===n&&(n=0),e._branchesRemainingToCancel=n+1}0!=(2&t)&&e._isBound()&&this._setBoundTo(e._boundTo)}function p(e,t){0!=(2&t)&&e._isBound()&&this._setBoundTo(e._boundTo)}function h(){var e=this._boundTo;return void 0!==e&&e instanceof n?e.isFulfilled()?e.value():void 0:e}function f(){this._trace=new O(this._peekContext())}function v(e,t){if(N(e)){var n=this._trace;if(void 0!==n&&t&&(n=n._parent),void 0!==n)n.attachExtraTrace(e);else if(!e.__stackCleaned__){var r=k(e);L.notEnumerableProp(e,"stack",r.message+"\n"+r.stack.join("\n")),L.notEnumerableProp(e,"__stackCleaned__",!0)}}}function m(e,t,n,r,o){if(void 0===e&&null!==t&&X){if(void 0!==o&&o._returnedNonUndefined())return;if(0==(65535&r._bitField))return;n&&(n+=" ");var i="",s="";if(t._trace){for(var a=t._trace.stack.split("\n"),u=w(a),c=u.length-1;c>=0;--c){var l=u[c];if(!B.test(l)){var d=l.match(G);d&&(i="at "+d[1]+":"+d[2]+":"+d[3]+" ");break}}if(u.length>0)for(var p=u[0],c=0;c0&&(s="\n"+a[c-1]);break}}var h="a promise was created in a "+n+"handler "+i+"but was not returned from it, see http://goo.gl/rRqMUw"+s;r._warn(h,!0,t)}}function _(e,t){var n=e+" is deprecated and will be removed in a future version.";return t&&(n+=" Use "+t+" instead."),y(n)}function y(e,t,r){if(se.warnings){var o,i=new q(e);if(t)r._attachExtraTrace(i);else if(se.longStackTraces&&(o=n._peekContext()))o.attachExtraTrace(i);else{var s=k(i);i.stack=s.message+"\n"+s.stack.join("\n")}te("warning",i)||R(i,"",!0)}}function g(e,t){for(var n=0;n=0;--a)if(r[a]===i){s=a;break}for(var a=s;a>=0;--a){var u=r[a];if(t[o]!==u)break;t.pop(),o--}t=r}}function w(e){for(var t=[],n=0;n0&&"SyntaxError"!=e.name&&(t=t.slice(n)),t}function k(e){var t=e.stack,n=e.toString();return t="string"==typeof t&&t.length>0?S(e):[" (No stack trace)"],{message:n,stack:"SyntaxError"==e.name?t:w(t)}}function R(e,t,n){if("undefined"!=typeof console){var r;if(L.isObject(e)){var o=e.stack;r=t+V(o,e)}else r=t+String(e);"function"==typeof F?F(r,n):"function"!=typeof console.log&&"object"!=typeof console.log||console.log(r)}}function T(e,t,n,r){var o=!1;try{"function"==typeof t&&(o=!0,"rejectionHandled"===e?t(r):t(n,r))}catch(e){U.throwLater(e)}"unhandledRejection"===e?te(e,n,r)||o||R(n,"Unhandled rejection "):te(e,r)}function x(e){var t;if("function"==typeof e)t="[function "+(e.name||"anonymous")+"]";else{t=e&&"function"==typeof e.toString?e.toString():L.toString(e);if(/\[object [a-zA-Z0-9$_]+\]/.test(t))try{t=JSON.stringify(e)}catch(e){}0===t.length&&(t="(empty array)")}return"(<"+I(t)+">, no stack trace)"}function I(e){return e.length<41?e:e.substr(0,38)+"..."}function C(){return"function"==typeof ie}function j(e){var t=e.match(oe);if(t)return{fileName:t[1],line:parseInt(t[2],10)}}function D(e,t){if(C()){for(var n,r,o=e.stack.split("\n"),i=t.stack.split("\n"),s=-1,a=-1,u=0;u=a||(re=function(e){if(K.test(e))return!0;var t=j(e);return!!(t&&t.fileName===n&&s<=t.line&&t.line<=a)})}}function O(e){this._parent=e,this._promisesCreated=0;var t=this._length=1+(void 0===e?0:e._length);ie(this,O),t>32&&this.uncycle()}var A,P,F,M=n._getDomain,U=n._async,q=t("./errors").Warning,L=t("./util"),N=L.canAttachTrace,K=/[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,B=/\((?:timers\.js):\d+:\d+\)/,G=/[\/<\(](.+?):(\d+):(\d+)\)?\s*$/,$=null,V=null,W=!1,H=!(0==L.env("BLUEBIRD_DEBUG")),Q=!(0==L.env("BLUEBIRD_WARNINGS")||!H&&!L.env("BLUEBIRD_WARNINGS")),J=!(0==L.env("BLUEBIRD_LONG_STACK_TRACES")||!H&&!L.env("BLUEBIRD_LONG_STACK_TRACES")),X=0!=L.env("BLUEBIRD_W_FORGOTTEN_RETURN")&&(Q||!!L.env("BLUEBIRD_W_FORGOTTEN_RETURN"));n.prototype.suppressUnhandledRejections=function(){var e=this._target();e._bitField=-1048577&e._bitField|524288},n.prototype._ensurePossibleRejectionHandled=function(){0==(524288&this._bitField)&&(this._setRejectionIsUnhandled(),U.invokeLater(this._notifyUnhandledRejection,this,void 0))},n.prototype._notifyUnhandledRejectionIsHandled=function(){T("rejectionHandled",A,void 0,this)},n.prototype._setReturnedNonUndefined=function(){this._bitField=268435456|this._bitField},n.prototype._returnedNonUndefined=function(){return 0!=(268435456&this._bitField)},n.prototype._notifyUnhandledRejection=function(){if(this._isRejectionUnhandled()){var e=this._settledValue();this._setUnhandledRejectionIsNotified(),T("unhandledRejection",P,e,this)}},n.prototype._setUnhandledRejectionIsNotified=function(){this._bitField=262144|this._bitField},n.prototype._unsetUnhandledRejectionIsNotified=function(){this._bitField=-262145&this._bitField},n.prototype._isUnhandledRejectionNotified=function(){return(262144&this._bitField)>0},n.prototype._setRejectionIsUnhandled=function(){this._bitField=1048576|this._bitField},n.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-1048577&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},n.prototype._isRejectionUnhandled=function(){return(1048576&this._bitField)>0},n.prototype._warn=function(e,t,n){return y(e,t,n||this)},n.onPossiblyUnhandledRejection=function(e){var t=M();P="function"==typeof e?null===t?e:L.domainBind(t,e):void 0},n.onUnhandledRejectionHandled=function(e){var t=M();A="function"==typeof e?null===t?e:L.domainBind(t,e):void 0};var z=function(){};n.longStackTraces=function(){if(U.haveItemsQueued()&&!se.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");if(!se.longStackTraces&&C()){var e=n.prototype._captureStackTrace,t=n.prototype._attachExtraTrace;se.longStackTraces=!0,z=function(){if(U.haveItemsQueued()&&!se.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");n.prototype._captureStackTrace=e,n.prototype._attachExtraTrace=t,r.deactivateLongStackTraces(),U.enableTrampoline(),se.longStackTraces=!1},n.prototype._captureStackTrace=f,n.prototype._attachExtraTrace=v,r.activateLongStackTraces(),U.disableTrampolineIfNecessary()}},n.hasLongStackTraces=function(){return se.longStackTraces&&C()};var Y=function(){try{if("function"==typeof CustomEvent){var e=new CustomEvent("CustomEvent");return L.global.dispatchEvent(e),function(e,t){var n=new CustomEvent(e.toLowerCase(),{detail:t,cancelable:!0});return!L.global.dispatchEvent(n)}}if("function"==typeof Event){var e=new Event("CustomEvent");return L.global.dispatchEvent(e),function(e,t){var n=new Event(e.toLowerCase(),{cancelable:!0});return n.detail=t,!L.global.dispatchEvent(n)}}var e=document.createEvent("CustomEvent");return e.initCustomEvent("testingtheevent",!1,!0,{}),L.global.dispatchEvent(e),function(e,t){var n=document.createEvent("CustomEvent");return n.initCustomEvent(e.toLowerCase(),!1,!0,t),!L.global.dispatchEvent(n)}}catch(e){}return function(){return!1}}(),Z=function(){return L.isNode?function(){return e.emit.apply(e,arguments)}:L.global?function(e){var t="on"+e.toLowerCase(),n=L.global[t];return!!n&&(n.apply(L.global,[].slice.call(arguments,1)),!0)}:function(){return!1}}(),ee={promiseCreated:o,promiseFulfilled:o,promiseRejected:o,promiseResolved:o,promiseCancelled:o,promiseChained:function(e,t,n){return{promise:t,child:n}},warning:function(e,t){return{warning:t}},unhandledRejection:function(e,t,n){return{reason:t,promise:n}},rejectionHandled:o},te=function(e){var t=!1;try{t=Z.apply(null,arguments)}catch(e){U.throwLater(e),t=!0}var n=!1;try{n=Y(e,ee[e].apply(null,arguments))}catch(e){U.throwLater(e),n=!0}return n||t};n.config=function(e){if(e=Object(e),"longStackTraces"in e&&(e.longStackTraces?n.longStackTraces():!e.longStackTraces&&n.hasLongStackTraces()&&z()),"warnings"in e){var t=e.warnings;se.warnings=!!t,X=se.warnings,L.isObject(t)&&"wForgottenReturn"in t&&(X=!!t.wForgottenReturn)}if("cancellation"in e&&e.cancellation&&!se.cancellation){if(U.haveItemsQueued())throw new Error("cannot enable cancellation after promises are in use");n.prototype._clearCancellationData=l,n.prototype._propagateFrom=d,n.prototype._onCancel=u,n.prototype._setOnCancel=c,n.prototype._attachCancellationCallback=a,n.prototype._execute=s,ne=d,se.cancellation=!0}return"monitoring"in e&&(e.monitoring&&!se.monitoring?(se.monitoring=!0,n.prototype._fireEvent=te):!e.monitoring&&se.monitoring&&(se.monitoring=!1,n.prototype._fireEvent=i)),n},n.prototype._fireEvent=i,n.prototype._execute=function(e,t,n){try{e(t,n)}catch(e){return e}},n.prototype._onCancel=function(){},n.prototype._setOnCancel=function(e){},n.prototype._attachCancellationCallback=function(e){},n.prototype._captureStackTrace=function(){},n.prototype._attachExtraTrace=function(){},n.prototype._clearCancellationData=function(){},n.prototype._propagateFrom=function(e,t){};var ne=p,re=function(){return!1},oe=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;L.inherits(O,Error),r.CapturedTrace=O,O.prototype.uncycle=function(){var e=this._length;if(!(e<2)){for(var t=[],n={},r=0,o=this;void 0!==o;++r)t.push(o),o=o._parent;e=this._length=r;for(var r=e-1;r>=0;--r){var i=t[r].stack;void 0===n[i]&&(n[i]=r)}for(var r=0;r0&&(t[a-1]._parent=void 0,t[a-1]._length=1),t[r]._parent=void 0,t[r]._length=1;var u=r>0?t[r-1]:this;a=0;--l)t[l]._length=c,c++;return}}}},O.prototype.attachExtraTrace=function(e){if(!e.__stackCleaned__){this.uncycle();for(var t=k(e),n=t.message,r=[t.stack],o=this;void 0!==o;)r.push(w(o.stack.split("\n"))),o=o._parent;E(r),b(r),L.notEnumerableProp(e,"stack",g(n,r)),L.notEnumerableProp(e,"__stackCleaned__",!0)}};var ie=function(){var e=/^\s*at\s*/,t=function(e,t){return"string"==typeof e?e:void 0!==t.name&&void 0!==t.message?t.toString():x(t)};if("number"==typeof Error.stackTraceLimit&&"function"==typeof Error.captureStackTrace){Error.stackTraceLimit+=6,$=e,V=t;var n=Error.captureStackTrace;return re=function(e){return K.test(e)},function(e,t){Error.stackTraceLimit+=6,n(e,t),Error.stackTraceLimit-=6}}var r=new Error;if("string"==typeof r.stack&&r.stack.split("\n")[0].indexOf("stackDetection@")>=0)return $=/@/,V=t,W=!0,function(e){e.stack=(new Error).stack};var o;try{throw new Error}catch(e){o="stack"in e}return"stack"in r||!o||"number"!=typeof Error.stackTraceLimit?(V=function(e,t){return"string"==typeof e?e:"object"!=typeof t&&"function"!=typeof t||void 0===t.name||void 0===t.message?x(t):t.toString()},null):($=e,V=t,function(e){Error.stackTraceLimit+=6;try{throw new Error}catch(t){e.stack=t.stack}Error.stackTraceLimit-=6})}();"undefined"!=typeof console&&void 0!==console.warn&&(F=function(e){console.warn(e)},L.isNode&&e.stderr.isTTY?F=function(e,t){var n=t?"":"";console.warn(n+e+"\n")}:L.isNode||"string"!=typeof(new Error).stack||(F=function(e,t){console.warn("%c"+e,t?"color: darkorange":"color: red")}));var se={warnings:Q,longStackTraces:!1,cancellation:!1,monitoring:!1};return J&&n.longStackTraces(),{longStackTraces:function(){return se.longStackTraces},warnings:function(){return se.warnings},cancellation:function(){return se.cancellation},monitoring:function(){return se.monitoring},propagateFromFunction:function(){return ne},boundValueFunction:function(){return h},checkForgottenReturns:m,setBounds:D,warn:y,deprecated:_,CapturedTrace:O,fireDomEvent:Y,fireGlobalEvent:Z}}},{"./errors":12,"./util":36}],10:[function(e,t,n){"use strict";t.exports=function(e){function t(){return this.value}function n(){throw this.reason}e.prototype.return=e.prototype.thenReturn=function(n){return n instanceof e&&n.suppressUnhandledRejections(),this._then(t,void 0,void 0,{value:n},void 0)},e.prototype.throw=e.prototype.thenThrow=function(e){return this._then(n,void 0,void 0,{reason:e},void 0)},e.prototype.catchThrow=function(e){if(arguments.length<=1)return this._then(void 0,n,void 0,{reason:e},void 0);var t=arguments[1],r=function(){throw t};return this.caught(e,r)},e.prototype.catchReturn=function(n){if(arguments.length<=1)return n instanceof e&&n.suppressUnhandledRejections(),this._then(void 0,t,void 0,{value:n},void 0);var r=arguments[1];r instanceof e&&r.suppressUnhandledRejections();var o=function(){return r};return this.caught(n,o)}}},{}],11:[function(e,t,n){"use strict";t.exports=function(e,t){function n(){return i(this)}function r(e,n){return o(e,n,t,t)}var o=e.reduce,i=e.all;e.prototype.each=function(e){return o(this,e,t,0)._then(n,void 0,void 0,this,void 0)},e.prototype.mapSeries=function(e){return o(this,e,t,t)},e.each=function(e,r){return o(e,r,t,0)._then(n,void 0,void 0,e,void 0)},e.mapSeries=r}},{}],12:[function(e,t,n){"use strict";function r(e,t){function n(r){if(!(this instanceof n))return new n(r);d(this,"message","string"==typeof r?r:t),d(this,"name",e),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this)}return l(n,Error),n}function o(e){if(!(this instanceof o))return new o(e);d(this,"name","OperationalError"),d(this,"message",e),this.cause=e,this.isOperational=!0,e instanceof Error?(d(this,"message",e.message),d(this,"stack",e.stack)):Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}var i,s,a=e("./es5"),u=a.freeze,c=e("./util"),l=c.inherits,d=c.notEnumerableProp,p=r("Warning","warning"),h=r("CancellationError","cancellation error"),f=r("TimeoutError","timeout error"),v=r("AggregateError","aggregate error");try{i=TypeError,s=RangeError}catch(e){i=r("TypeError","type error"),s=r("RangeError","range error")}for(var m="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),_=0;_1?e.cancelPromise._reject(t):e.cancelPromise._cancel(),e.cancelPromise=null,!0)}function a(){return c.call(this,this.promise._target()._settledValue())}function u(e){if(!s(this,e))return p.e=e,p}function c(e){var o=this.promise,c=this.handler;if(!this.called){this.called=!0;var l=this.isFinallyHandler()?c.call(o._boundValue()):c.call(o._boundValue(),e);if(l===r)return l;if(void 0!==l){o._setReturnedNonUndefined();var h=n(l,o);if(h instanceof t){if(null!=this.cancelPromise){if(h._isCancelled()){var f=new d("late cancellation observer");return o._attachExtraTrace(f),p.e=f,p}h.isPending()&&h._attachCancellationCallback(new i(this))}return h._then(a,u,void 0,this,void 0)}}}return o.isRejected()?(s(this),p.e=e,p):(s(this),e)}var l=e("./util"),d=t.CancellationError,p=l.errorObj,h=e("./catch_filter")(r);return o.prototype.isFinallyHandler=function(){return 0===this.type},i.prototype._resultCancelled=function(){s(this.finallyHandler)},t.prototype._passThrough=function(e,t,n,r){return"function"!=typeof e?this.then():this._then(n,r,void 0,new o(this,t,e),void 0)},t.prototype.lastly=t.prototype.finally=function(e){return this._passThrough(e,0,c,c)},t.prototype.tap=function(e){return this._passThrough(e,1,c)},t.prototype.tapCatch=function(e){var n=arguments.length;if(1===n)return this._passThrough(e,1,void 0,c);var r,o=new Array(n-1),i=0;for(r=0;r0&&"function"==typeof arguments[t]){e=arguments[t];var r}var o=[].slice.call(arguments);e&&o.pop();var r=new n(o).promise();return void 0!==e?r.spread(e):r}}},{"./util":36}],18:[function(e,t,n){"use strict";t.exports=function(t,n,r,o,i,s){function a(e,t,n,r){this.constructor$(e),this._promise._captureStackTrace();var o=c();this._callback=null===o?t:l.domainBind(o,t),this._preservedValues=r===i?new Array(this.length()):null,this._limit=n,this._inFlight=0,this._queue=[],h.invoke(this._asyncInit,this,void 0)}function u(e,n,o,i){if("function"!=typeof n)return r("expecting a function but got "+l.classString(n));var s=0;if(void 0!==o){if("object"!=typeof o||null===o)return t.reject(new TypeError("options argument must be an object but it is "+l.classString(o)));if("number"!=typeof o.concurrency)return t.reject(new TypeError("'concurrency' must be a number but it is "+l.classString(o.concurrency)));s=o.concurrency}return s="number"==typeof s&&isFinite(s)&&s>=1?s:0,new a(e,n,s,i).promise()}var c=t._getDomain,l=e("./util"),d=l.tryCatch,p=l.errorObj,h=t._async;l.inherits(a,n),a.prototype._asyncInit=function(){this._init$(void 0,-2)},a.prototype._init=function(){},a.prototype._promiseFulfilled=function(e,n){var r=this._values,i=this.length(),a=this._preservedValues,u=this._limit;if(n<0){if(n=-1*n-1,r[n]=e,u>=1&&(this._inFlight--,this._drainQueue(),this._isResolved()))return!0}else{if(u>=1&&this._inFlight>=u)return r[n]=e,this._queue.push(n),!1;null!==a&&(a[n]=e);var c=this._promise,l=this._callback,h=c._boundValue();c._pushContext();var f=d(l).call(h,e,n,i),v=c._popContext();if(s.checkForgottenReturns(f,v,null!==a?"Promise.filter":"Promise.map",c),f===p)return this._reject(f.e),!0;var m=o(f,this._promise);if(m instanceof t){m=m._target();var _=m._bitField;if(0==(50397184&_))return u>=1&&this._inFlight++,r[n]=m,m._proxy(this,-1*(n+1)),!1;if(0==(33554432&_))return 0!=(16777216&_)?(this._reject(m._reason()),!0):(this._cancel(),!0);f=m._value()}r[n]=f}return++this._totalResolved>=i&&(null!==a?this._filter(r,a):this._resolve(r),!0)},a.prototype._drainQueue=function(){for(var e=this._queue,t=this._limit,n=this._values;e.length>0&&this._inFlight1){i.deprecated("calling Promise.try with more than 1 argument");var c=arguments[1],l=arguments[2];u=s.isArray(c)?a(e).apply(l,c):a(e).call(l,c)}else u=a(e)();var d=r._popContext();return i.checkForgottenReturns(u,d,"Promise.try",r),r._resolveFromSyncValue(u),r},t.prototype._resolveFromSyncValue=function(e){e===s.errorObj?this._rejectCallback(e.e,!1):this._resolveCallback(e,!0)}}},{"./util":36}],20:[function(e,t,n){"use strict";function r(e){return e instanceof Error&&l.getPrototypeOf(e)===Error.prototype}function o(e){var t;if(r(e)){t=new c(e),t.name=e.name,t.message=e.message,t.stack=e.stack;for(var n=l.keys(e),o=0;o1){var n,r=new Array(t-1),o=0;for(n=0;n0&&"function"!=typeof e&&"function"!=typeof t){var n=".then() only accepts functions but was passed: "+f.classString(e);arguments.length>1&&(n+=", "+f.classString(t)),this._warn(n)}return this._then(e,t,void 0,void 0,void 0)},i.prototype.done=function(e,t){this._then(e,t,void 0,void 0,void 0)._setIsFinal()},i.prototype.spread=function(e){return"function"!=typeof e?p("expecting a function but got "+f.classString(e)):this.all()._then(e,void 0,void 0,w,void 0)},i.prototype.toJSON=function(){var e={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(e.fulfillmentValue=this.value(),e.isFulfilled=!0):this.isRejected()&&(e.rejectionReason=this.reason(),e.isRejected=!0),e},i.prototype.all=function(){return arguments.length>0&&this._warn(".all() was passed arguments but it does not take any"),new R(this).promise()},i.prototype.error=function(e){return this.caught(f.originatesFromRejection,e)},i.getNewLibraryCopy=n.exports,i.is=function(e){return e instanceof i},i.fromNode=i.fromCallback=function(e){var t=new i(E);t._captureStackTrace();var n=arguments.length>1&&!!Object(arguments[1]).multiArgs,r=A(e)(D(t,n));return r===O&&t._rejectCallback(r.e,!0),t._isFateSealed()||t._setAsyncGuaranteed(),t},i.all=function(e){return new R(e).promise()},i.cast=function(e){var t=k(e);return t instanceof i||(t=new i(E),t._captureStackTrace(),t._setFulfilled(),t._rejectionHandler0=e),t},i.resolve=i.fulfilled=i.cast,i.reject=i.rejected=function(e){var t=new i(E);return t._captureStackTrace(),t._rejectCallback(e,!0),t},i.setScheduler=function(e){if("function"!=typeof e)throw new g("expecting a function but got "+f.classString(e));return _.setScheduler(e)},i.prototype._then=function(e,t,n,r,o){var s=void 0!==o,a=s?o:new i(E),u=this._target(),l=u._bitField;s||(a._propagateFrom(this,3),a._captureStackTrace(),void 0===r&&0!=(2097152&this._bitField)&&(r=0!=(50397184&l)?this._boundValue():u===this?void 0:this._boundTo),this._fireEvent("promiseChained",this,a));var d=c();if(0!=(50397184&l)){var p,h,v=u._settlePromiseCtx;0!=(33554432&l)?(h=u._rejectionHandler0,p=e):0!=(16777216&l)?(h=u._fulfillmentHandler0,p=t,u._unsetRejectionIsUnhandled()):(v=u._settlePromiseLateCancellationObserver,h=new b("late cancellation observer"),u._attachExtraTrace(h),p=t),_.invoke(v,u,{handler:null===d?p:"function"==typeof p&&f.domainBind(d,p),promise:a,receiver:r,value:h})}else u._addCallbacks(e,t,a,r,d);return a},i.prototype._length=function(){return 65535&this._bitField},i.prototype._isFateSealed=function(){return 0!=(117506048&this._bitField)},i.prototype._isFollowing=function(){return 67108864==(67108864&this._bitField)},i.prototype._setLength=function(e){this._bitField=-65536&this._bitField|65535&e},i.prototype._setFulfilled=function(){this._bitField=33554432|this._bitField,this._fireEvent("promiseFulfilled",this)},i.prototype._setRejected=function(){this._bitField=16777216|this._bitField,this._fireEvent("promiseRejected",this)},i.prototype._setFollowing=function(){this._bitField=67108864|this._bitField,this._fireEvent("promiseResolved",this)},i.prototype._setIsFinal=function(){this._bitField=4194304|this._bitField},i.prototype._isFinal=function(){return(4194304&this._bitField)>0},i.prototype._unsetCancelled=function(){this._bitField=-65537&this._bitField},i.prototype._setCancelled=function(){this._bitField=65536|this._bitField,this._fireEvent("promiseCancelled",this)},i.prototype._setWillBeCancelled=function(){this._bitField=8388608|this._bitField},i.prototype._setAsyncGuaranteed=function(){_.hasCustomScheduler()||(this._bitField=134217728|this._bitField)},i.prototype._receiverAt=function(e){var t=0===e?this._receiver0:this[4*e-4+3];if(t!==h)return void 0===t&&this._isBound()?this._boundValue():t},i.prototype._promiseAt=function(e){return this[4*e-4+2]},i.prototype._fulfillmentHandlerAt=function(e){return this[4*e-4+0]},i.prototype._rejectionHandlerAt=function(e){return this[4*e-4+1]},i.prototype._boundValue=function(){},i.prototype._migrateCallback0=function(e){var t=(e._bitField,e._fulfillmentHandler0),n=e._rejectionHandler0,r=e._promise0,o=e._receiverAt(0);void 0===o&&(o=h),this._addCallbacks(t,n,r,o,null)},i.prototype._migrateCallbackAt=function(e,t){var n=e._fulfillmentHandlerAt(t),r=e._rejectionHandlerAt(t),o=e._promiseAt(t),i=e._receiverAt(t);void 0===i&&(i=h),this._addCallbacks(n,r,o,i,null)},i.prototype._addCallbacks=function(e,t,n,r,o){var i=this._length();if(i>=65531&&(i=0,this._setLength(0)),0===i)this._promise0=n,this._receiver0=r,"function"==typeof e&&(this._fulfillmentHandler0=null===o?e:f.domainBind(o,e)),"function"==typeof t&&(this._rejectionHandler0=null===o?t:f.domainBind(o,t));else{var s=4*i-4;this[s+2]=n,this[s+3]=r,"function"==typeof e&&(this[s+0]=null===o?e:f.domainBind(o,e)),"function"==typeof t&&(this[s+1]=null===o?t:f.domainBind(o,t))}return this._setLength(i+1),i},i.prototype._proxy=function(e,t){this._addCallbacks(void 0,void 0,t,e,null)},i.prototype._resolveCallback=function(e,t){if(0==(117506048&this._bitField)){if(e===this)return this._rejectCallback(l(),!1);var n=k(e,this);if(!(n instanceof i))return this._fulfill(e);t&&this._propagateFrom(n,2);var r=n._target();if(r===this)return void this._reject(l());var o=r._bitField;if(0==(50397184&o)){var s=this._length();s>0&&r._migrateCallback0(this);for(var a=1;a>>16)){if(e===this){var n=l();return this._attachExtraTrace(n),this._reject(n)}this._setFulfilled(),this._rejectionHandler0=e,(65535&t)>0&&(0!=(134217728&t)?this._settlePromises():_.settlePromises(this))}},i.prototype._reject=function(e){var t=this._bitField;if(!((117506048&t)>>>16)){if(this._setRejected(),this._fulfillmentHandler0=e,this._isFinal())return _.fatalError(e,f.isNode);(65535&t)>0?_.settlePromises(this):this._ensurePossibleRejectionHandled()}},i.prototype._fulfillPromises=function(e,t){for(var n=1;n0){if(0!=(16842752&e)){var n=this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0,n,e),this._rejectPromises(t,n)}else{var r=this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0,r,e),this._fulfillPromises(t,r)}this._setLength(0)}this._clearCancellationData()},i.prototype._settledValue=function(){var e=this._bitField;return 0!=(33554432&e)?this._rejectionHandler0:0!=(16777216&e)?this._fulfillmentHandler0:void 0},i.defer=i.pending=function(){return I.deprecated("Promise.defer","new Promise"),{promise:new i(E),resolve:s,reject:a}},f.notEnumerableProp(i,"_makeSelfResolutionError",l),t("./method")(i,E,k,p,I),t("./bind")(i,E,k,I),t("./cancel")(i,R,p,I),t("./direct_resolve")(i),t("./synchronous_inspection")(i),t("./join")(i,R,k,E,_,c),i.Promise=i,i.version="3.5.0",t("./map.js")(i,R,p,k,E,I),t("./call_get.js")(i),t("./using.js")(i,p,k,x,E,I),t("./timers.js")(i,E,I),t("./generators.js")(i,p,E,k,r,I),t("./nodeify.js")(i),t("./promisify.js")(i,E),t("./props.js")(i,R,k,p),t("./race.js")(i,E,k,p),t("./reduce.js")(i,R,p,k,E,I),t("./settle.js")(i,R,I),t("./some.js")(i,R,p),t("./filter.js")(i,E),t("./each.js")(i,E),t("./any.js")(i),f.toFastProperties(i),f.toFastProperties(i.prototype),u({a:1}),u({b:2}),u({c:3}),u(1),u(function(){}),u(void 0),u(!1),u(new i(E)),I.setBounds(m.firstLineError,f.lastLineError),i}},{"./any.js":1,"./async":2,"./bind":3,"./call_get.js":5,"./cancel":6,"./catch_filter":7,"./context":8,"./debuggability":9,"./direct_resolve":10,"./each.js":11,"./errors":12,"./es5":13,"./filter.js":14,"./finally":15,"./generators.js":16,"./join":17,"./map.js":18,"./method":19,"./nodeback":20,"./nodeify.js":21,"./promise_array":23,"./promisify.js":24,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":31,"./synchronous_inspection":32,"./thenables":33,"./timers.js":34,"./using.js":35,"./util":36}],23:[function(e,t,n){"use strict";t.exports=function(t,n,r,o,i){function s(e){switch(e){case-2:return[];case-3:return{};case-6:return new Map}}function a(e){var r=this._promise=new t(n);e instanceof t&&r._propagateFrom(e,3),r._setOnCancel(this),this._values=e,this._length=0,this._totalResolved=0,this._init(void 0,-2)}var u=e("./util");u.isArray;return u.inherits(a,i),a.prototype.length=function(){return this._length},a.prototype.promise=function(){return this._promise},a.prototype._init=function e(n,i){var a=r(this._values,this._promise);if(a instanceof t){a=a._target();var c=a._bitField;if(this._values=a,0==(50397184&c))return this._promise._setAsyncGuaranteed(),a._then(e,this._reject,void 0,this,i);if(0==(33554432&c))return 0!=(16777216&c)?this._reject(a._reason()):this._cancel();a=a._value()}if(null===(a=u.asArray(a))){var l=o("expecting an array or an iterable object but got "+u.classString(a)).reason();return void this._promise._rejectCallback(l,!1)}if(0===a.length)return void(-5===i?this._resolveEmptyArray():this._resolve(s(i)));this._iterate(a)},a.prototype._iterate=function(e){var n=this.getActualLength(e.length);this._length=n,this._values=this.shouldCopyValues()?new Array(n):this._values;for(var o=this._promise,i=!1,s=null,a=0;a=this._length&&(this._resolve(this._values),!0)},a.prototype._promiseCancelled=function(){return this._cancel(),!0},a.prototype._promiseRejected=function(e){return this._totalResolved++,this._reject(e),!0},a.prototype._resultCancelled=function(){if(!this._isResolved()){var e=this._values;if(this._cancel(),e instanceof t)e.cancel();else for(var n=0;n=this._length){var n;if(this._isMap)n=p(this._values);else{n={};for(var r=this.length(),o=0,i=this.length();o>1},t.prototype.props=function(){return s(this)},t.props=function(e){return s(e)}}},{"./es5":13,"./util":36}],26:[function(e,t,n){"use strict";function r(e,t,n,r,o){for(var i=0;i=this._length&&(this._resolve(this._values),!0)},o.prototype._promiseFulfilled=function(e,t){var n=new i;return n._bitField=33554432,n._settledValueField=e,this._promiseResolved(t,n)},o.prototype._promiseRejected=function(e,t){var n=new i;return n._bitField=16777216,n._settledValueField=e,this._promiseResolved(t,n)},t.settle=function(e){return r.deprecated(".settle()",".reflect()"),new o(e).promise()},t.prototype.settle=function(){return t.settle(this)}}},{"./util":36}],31:[function(e,t,n){"use strict";t.exports=function(t,n,r){function o(e){this.constructor$(e),this._howMany=0,this._unwrap=!1,this._initialized=!1}function i(e,t){if((0|t)!==t||t<0)return r("expecting a positive integer\n\n See http://goo.gl/MqrFmX\n");var n=new o(e),i=n.promise();return n.setHowMany(t),n.init(),i}var s=e("./util"),a=e("./errors").RangeError,u=e("./errors").AggregateError,c=s.isArray,l={};s.inherits(o,n),o.prototype._init=function(){if(this._initialized){if(0===this._howMany)return void this._resolve([]);this._init$(void 0,-5);var e=c(this._values);!this._isResolved()&&e&&this._howMany>this._canPossiblyFulfill()&&this._reject(this._getRangeError(this.length()))}},o.prototype.init=function(){this._initialized=!0,this._init()},o.prototype.setUnwrap=function(){this._unwrap=!0},o.prototype.howMany=function(){ return this._howMany},o.prototype.setHowMany=function(e){this._howMany=e},o.prototype._promiseFulfilled=function(e){return this._addFulfilled(e),this._fulfilled()===this.howMany()&&(this._values.length=this.howMany(),1===this.howMany()&&this._unwrap?this._resolve(this._values[0]):this._resolve(this._values),!0)},o.prototype._promiseRejected=function(e){return this._addRejected(e),this._checkOutcome()},o.prototype._promiseCancelled=function(){return this._values instanceof t||null==this._values?this._cancel():(this._addRejected(l),this._checkOutcome())},o.prototype._checkOutcome=function(){if(this.howMany()>this._canPossiblyFulfill()){for(var e=new u,t=this.length();t0?this._reject(e):this._cancel(),!0}return!1},o.prototype._fulfilled=function(){return this._totalResolved},o.prototype._rejected=function(){return this._values.length-this.length()},o.prototype._addRejected=function(e){this._values.push(e)},o.prototype._addFulfilled=function(e){this._values[this._totalResolved++]=e},o.prototype._canPossiblyFulfill=function(){return this.length()-this._rejected()},o.prototype._getRangeError=function(e){var t="Input array must contain at least "+this._howMany+" items but contains only "+e+" items";return new a(t)},o.prototype._resolveEmptyArray=function(){this._reject(this._getRangeError(0))},t.some=function(e,t){return i(e,t)},t.prototype.some=function(e){return i(this,e)},t._SomePromiseArray=o}},{"./errors":12,"./util":36}],32:[function(e,t,n){"use strict";t.exports=function(e){function t(e){void 0!==e?(e=e._target(),this._bitField=e._bitField,this._settledValueField=e._isFateSealed()?e._settledValue():void 0):(this._bitField=0,this._settledValueField=void 0)}t.prototype._settledValue=function(){return this._settledValueField};var n=t.prototype.value=function(){if(!this.isFulfilled())throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},r=t.prototype.error=t.prototype.reason=function(){if(!this.isRejected())throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},o=t.prototype.isFulfilled=function(){return 0!=(33554432&this._bitField)},i=t.prototype.isRejected=function(){return 0!=(16777216&this._bitField)},s=t.prototype.isPending=function(){return 0==(50397184&this._bitField)},a=t.prototype.isResolved=function(){return 0!=(50331648&this._bitField)};t.prototype.isCancelled=function(){return 0!=(8454144&this._bitField)},e.prototype.__isCancelled=function(){return 65536==(65536&this._bitField)},e.prototype._isCancelled=function(){return this._target().__isCancelled()},e.prototype.isCancelled=function(){return 0!=(8454144&this._target()._bitField)},e.prototype.isPending=function(){return s.call(this._target())},e.prototype.isRejected=function(){return i.call(this._target())},e.prototype.isFulfilled=function(){return o.call(this._target())},e.prototype.isResolved=function(){return a.call(this._target())},e.prototype.value=function(){return n.call(this._target())},e.prototype.reason=function(){var e=this._target();return e._unsetRejectionIsUnhandled(),r.call(e)},e.prototype._value=function(){return this._settledValue()},e.prototype._reason=function(){return this._unsetRejectionIsUnhandled(),this._settledValue()},e.PromiseInspection=t}},{}],33:[function(e,t,n){"use strict";t.exports=function(t,n){function r(e,r){if(l(e)){if(e instanceof t)return e;var o=i(e);if(o===c){r&&r._pushContext();var u=t.reject(o.e);return r&&r._popContext(),u}if("function"==typeof o){if(s(e)){var u=new t(n);return e._then(u._fulfill,u._reject,void 0,u,null),u}return a(e,o,r)}}return e}function o(e){return e.then}function i(e){try{return o(e)}catch(e){return c.e=e,c}}function s(e){try{return d.call(e,"_promise0")}catch(e){return!1}}function a(e,r,o){function i(e){a&&(a._resolveCallback(e),a=null)}function s(e){a&&(a._rejectCallback(e,d,!0),a=null)}var a=new t(n),l=a;o&&o._pushContext(),a._captureStackTrace(),o&&o._popContext();var d=!0,p=u.tryCatch(r).call(e,i,s);return d=!1,a&&p===c&&(a._rejectCallback(p.e,!0,!0),a=null),l}var u=e("./util"),c=u.errorObj,l=u.isObject,d={}.hasOwnProperty;return r}},{"./util":36}],34:[function(e,t,n){"use strict";t.exports=function(t,n,r){function o(e){this.handle=e}function i(e){return clearTimeout(this.handle),e}function s(e){throw clearTimeout(this.handle),e}var a=e("./util"),u=t.TimeoutError;o.prototype._resultCancelled=function(){clearTimeout(this.handle)};var c=function(e){return l(+this).thenReturn(e)},l=t.delay=function(e,i){var s,a;return void 0!==i?(s=t.resolve(i)._then(c,null,null,e,void 0),r.cancellation()&&i instanceof t&&s._setOnCancel(i)):(s=new t(n),a=setTimeout(function(){s._fulfill()},+e),r.cancellation()&&s._setOnCancel(new o(a)),s._captureStackTrace()),s._setAsyncGuaranteed(),s};t.prototype.delay=function(e){return l(e,this)};var d=function(e,t,n){var r;r="string"!=typeof t?t instanceof Error?t:new u("operation timed out"):new u(t),a.markAsOriginatingFromRejection(r),e._attachExtraTrace(r),e._reject(r),null!=n&&n.cancel()};t.prototype.timeout=function(e,t){e=+e;var n,a,u=new o(setTimeout(function(){n.isPending()&&d(n,t,a)},e));return r.cancellation()?(a=this.then(),n=a._then(i,s,void 0,u,void 0),n._setOnCancel(u)):n=this._then(i,s,void 0,u,void 0),n}}},{"./util":36}],35:[function(e,t,n){"use strict";t.exports=function(t,n,r,o,i,s){function a(e){setTimeout(function(){throw e},0)}function u(e){var t=r(e);return t!==e&&"function"==typeof e._isDisposable&&"function"==typeof e._getDisposer&&e._isDisposable()&&t._setDisposable(e._getDisposer()),t}function c(e,n){function o(){if(s>=c)return l._fulfill();var i=u(e[s++]);if(i instanceof t&&i._isDisposable()){try{i=r(i._getDisposer().tryDispose(n),e.promise)}catch(e){return a(e)}if(i instanceof t)return i._then(o,a,null,null,null)}o()}var s=0,c=e.length,l=new t(i);return o(),l}function l(e,t,n){this._data=e,this._promise=t,this._context=n}function d(e,t,n){this.constructor$(e,t,n)}function p(e){return l.isDisposer(e)?(this.resources[this.index]._setDisposable(e),e.promise()):e}function h(e){this.length=e,this.promise=null,this[e-1]=null}var f=e("./util"),v=e("./errors").TypeError,m=e("./util").inherits,_=f.errorObj,y=f.tryCatch,g={};l.prototype.data=function(){return this._data},l.prototype.promise=function(){return this._promise},l.prototype.resource=function(){return this.promise().isFulfilled()?this.promise().value():g},l.prototype.tryDispose=function(e){var t=this.resource(),n=this._context;void 0!==n&&n._pushContext();var r=t!==g?this.doDispose(t,e):null;return void 0!==n&&n._popContext(),this._promise._unsetDisposable(),this._data=null,r},l.isDisposer=function(e){return null!=e&&"function"==typeof e.resource&&"function"==typeof e.tryDispose},m(d,l),d.prototype.doDispose=function(e,t){return this.data().call(e,e,t)},h.prototype._resultCancelled=function(){for(var e=this.length,n=0;n0},t.prototype._getDisposer=function(){return this._disposer},t.prototype._unsetDisposable=function(){this._bitField=-131073&this._bitField,this._disposer=void 0},t.prototype.disposer=function(e){if("function"==typeof e)return new d(e,this,o());throw new v}}},{"./errors":12,"./util":36}],36:[function(t,n,o){"use strict";function i(){try{var e=D;return D=null,e.apply(this,arguments)}catch(e){return j.e=e,j}}function s(e){return D=e,i}function a(e){return null==e||!0===e||!1===e||"string"==typeof e||"number"==typeof e}function u(e){return"function"==typeof e||"object"==typeof e&&null!==e}function c(e){return a(e)?new Error(y(e)):e}function l(e,t){var n,r=e.length,o=new Array(r+1);for(n=0;n1,r=t.length>0&&!(1===t.length&&"constructor"===t[0]),o=F.test(e+"")&&I.names(e).length>0;if(n||r||o)return!0}return!1}catch(e){return!1}}function v(e){function t(){}t.prototype=e;for(var n=8;n--;)new t;return e}function m(e){return M.test(e)}function _(e,t,n){for(var r=new Array(e),o=0;o10||t[0]>0}(),B.isNode&&B.toFastProperties(e);try{throw new Error}catch(e){B.lastLineError=e}n.exports=B},{"./es5":13}]},{},[4])(4)}),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise)}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{_process:159}],70:[function(e,t,n){!function(e,r){"function"==typeof define&&define.amd?define([],r):"object"==typeof n?t.exports=r():e.returnExports=r()}(this,function(){function e(o,i){if("function"!=typeof i)throw new Error("Bad callback given: "+i);if(!o)throw new Error("No options given");var a=o.onResponse;if(o="string"==typeof o?{uri:o}:JSON.parse(JSON.stringify(o)),o.onResponse=a,o.verbose&&(e.log=r()),o.url&&(o.uri=o.url,delete o.url),!o.uri&&""!==o.uri)throw new Error("options.uri is a required argument");if("string"!=typeof o.uri)throw new Error("options.uri must be a string");for(var u=["proxy","_redirectsFollowed","maxRedirects","followRedirect"],c=0;c>18&63,i=u>>12&63,s=u>>6&63,a=63&u,h[d++]=c.charAt(o)+c.charAt(i)+c.charAt(s)+c.charAt(a)}while(l299)&&n.error){e=new Error("CouchDB error: "+(n.error.reason||n.error.error));for(var o in n)e[o]=n[o];return r(e,t,n)}return r(e,t,n)}return"string"==typeof t&&(t={uri:t}),t.json=!0,t.body&&(t.json=t.body),delete t.body,r=r||n,e(t,o)},e})},{}],71:[function(e,t,n){"use strict";function r(e){if(!e||"object"!=typeof e)throw new TypeError("argument obj is required");var t=e.parameters,n=e.type;if(!n||!h.test(n))throw new TypeError("invalid type");var r=n;if(t&&"object"==typeof t)for(var o,i=Object.keys(t).sort(),a=0;a0&&!c.test(t))throw new TypeError("invalid parameter value");return'"'+t.replace(p,"\\$1")+'"'}function a(e){this.parameters=Object.create(null),this.type=e}var u=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,c=/^[\u000b\u0020-\u007e\u0080-\u00ff]+$/,l=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,d=/\\([\u000b\u0020-\u00ff])/g,p=/([\\"])/g,h=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;n.format=r,n.parse=o},{}],72:[function(e,t,n){e("../modules/web.dom.iterable"),e("../modules/es6.string.iterator"),t.exports=e("../modules/core.get-iterator")},{"../modules/core.get-iterator":143,"../modules/es6.string.iterator":153,"../modules/web.dom.iterable":157}],73:[function(e,t,n){e("../modules/web.dom.iterable"),e("../modules/es6.string.iterator"),t.exports=e("../modules/core.is-iterable")},{"../modules/core.is-iterable":144,"../modules/es6.string.iterator":153,"../modules/web.dom.iterable":157}],74:[function(e,t,n){var r=e("../../modules/_core"),o=r.JSON||(r.JSON={stringify:JSON.stringify});t.exports=function(e){return o.stringify.apply(o,arguments)}},{"../../modules/_core":89}],75:[function(e,t,n){e("../../modules/es6.object.assign"),t.exports=e("../../modules/_core").Object.assign},{"../../modules/_core":89,"../../modules/es6.object.assign":146}],76:[function(e,t,n){e("../../modules/es6.object.create");var r=e("../../modules/_core").Object;t.exports=function(e,t){return r.create(e,t)}},{"../../modules/_core":89,"../../modules/es6.object.create":147}],77:[function(e,t,n){e("../../modules/es6.object.define-property");var r=e("../../modules/_core").Object;t.exports=function(e,t,n){return r.defineProperty(e,t,n)}},{"../../modules/_core":89,"../../modules/es6.object.define-property":148}],78:[function(e,t,n){e("../../modules/es6.object.get-prototype-of"),t.exports=e("../../modules/_core").Object.getPrototypeOf},{"../../modules/_core":89,"../../modules/es6.object.get-prototype-of":149}],79:[function(e,t,n){e("../../modules/es6.object.keys"),t.exports=e("../../modules/_core").Object.keys},{"../../modules/_core":89,"../../modules/es6.object.keys":150}],80:[function(e,t,n){e("../../modules/es6.object.set-prototype-of"),t.exports=e("../../modules/_core").Object.setPrototypeOf},{"../../modules/_core":89,"../../modules/es6.object.set-prototype-of":151}],81:[function(e,t,n){e("../../modules/es6.symbol"),e("../../modules/es6.object.to-string"),e("../../modules/es7.symbol.async-iterator"),e("../../modules/es7.symbol.observable"),t.exports=e("../../modules/_core").Symbol},{"../../modules/_core":89,"../../modules/es6.object.to-string":152,"../../modules/es6.symbol":154,"../../modules/es7.symbol.async-iterator":155,"../../modules/es7.symbol.observable":156}],82:[function(e,t,n){e("../../modules/es6.string.iterator"),e("../../modules/web.dom.iterable"),t.exports=e("../../modules/_wks-ext").f("iterator")},{"../../modules/_wks-ext":140,"../../modules/es6.string.iterator":153,"../../modules/web.dom.iterable":157}],83:[function(e,t,n){t.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},{}],84:[function(e,t,n){t.exports=function(){}},{}],85:[function(e,t,n){var r=e("./_is-object");t.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},{"./_is-object":105}],86:[function(e,t,n){var r=e("./_to-iobject"),o=e("./_to-length"),i=e("./_to-absolute-index");t.exports=function(e){return function(t,n,s){var a,u=r(t),c=o(u.length),l=i(s,c);if(e&&n!=n){for(;c>l;)if((a=u[l++])!=a)return!0}else for(;c>l;l++)if((e||l in u)&&u[l]===n)return e||l||0;return!e&&-1}}},{"./_to-absolute-index":132,"./_to-iobject":134,"./_to-length":135}],87:[function(e,t,n){var r=e("./_cof"),o=e("./_wks")("toStringTag"),i="Arguments"==r(function(){return arguments}()),s=function(e,t){try{return e[t]}catch(e){}};t.exports=function(e){var t,n,a;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=s(t=Object(e),o))?n:i?r(t):"Object"==(a=r(t))&&"function"==typeof t.callee?"Arguments":a}},{"./_cof":88,"./_wks":141}],88:[function(e,t,n){var r={}.toString;t.exports=function(e){return r.call(e).slice(8,-1)}},{}],89:[function(e,t,n){var r=t.exports={version:"2.5.1"};"number"==typeof __e&&(__e=r)},{}],90:[function(e,t,n){var r=e("./_a-function");t.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},{"./_a-function":83}],91:[function(e,t,n){t.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},{}],92:[function(e,t,n){t.exports=!e("./_fails")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{"./_fails":97}],93:[function(e,t,n){var r=e("./_is-object"),o=e("./_global").document,i=r(o)&&r(o.createElement);t.exports=function(e){return i?o.createElement(e):{}}},{"./_global":98,"./_is-object":105}],94:[function(e,t,n){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],95:[function(e,t,n){var r=e("./_object-keys"),o=e("./_object-gops"),i=e("./_object-pie");t.exports=function(e){var t=r(e),n=o.f;if(n)for(var s,a=n(e),u=i.f,c=0;a.length>c;)u.call(e,s=a[c++])&&t.push(s);return t}},{"./_object-gops":119,"./_object-keys":122,"./_object-pie":123}],96:[function(e,t,n){var r=e("./_global"),o=e("./_core"),i=e("./_ctx"),s=e("./_hide"),a=function(e,t,n){var u,c,l,d=e&a.F,p=e&a.G,h=e&a.S,f=e&a.P,v=e&a.B,m=e&a.W,_=p?o:o[t]||(o[t]={}),y=_.prototype,g=p?r:h?r[t]:(r[t]||{}).prototype;p&&(n=t);for(u in n)(c=!d&&g&&void 0!==g[u])&&u in _||(l=c?g[u]:n[u],_[u]=p&&"function"!=typeof g[u]?n[u]:v&&c?i(l,r):m&&g[u]==l?function(e){var t=function(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(l):f&&"function"==typeof l?i(Function.call,l):l,f&&((_.virtual||(_.virtual={}))[u]=l,e&a.R&&y&&!y[u]&&s(y,u,l)))};a.F=1,a.G=2,a.S=4,a.P=8,a.B=16,a.W=32,a.U=64,a.R=128,t.exports=a},{"./_core":89,"./_ctx":90,"./_global":98,"./_hide":100}],97:[function(e,t,n){t.exports=function(e){try{return!!e()}catch(e){return!0}}},{}],98:[function(e,t,n){var r=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},{}],99:[function(e,t,n){var r={}.hasOwnProperty;t.exports=function(e,t){return r.call(e,t)}},{}],100:[function(e,t,n){var r=e("./_object-dp"),o=e("./_property-desc");t.exports=e("./_descriptors")?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},{"./_descriptors":92,"./_object-dp":114,"./_property-desc":125}],101:[function(e,t,n){var r=e("./_global").document;t.exports=r&&r.documentElement},{"./_global":98}],102:[function(e,t,n){t.exports=!e("./_descriptors")&&!e("./_fails")(function(){return 7!=Object.defineProperty(e("./_dom-create")("div"),"a",{get:function(){return 7}}).a})},{"./_descriptors":92,"./_dom-create":93,"./_fails":97}],103:[function(e,t,n){var r=e("./_cof");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},{"./_cof":88}],104:[function(e,t,n){var r=e("./_cof");t.exports=Array.isArray||function(e){return"Array"==r(e)}},{"./_cof":88}],105:[function(e,t,n){t.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},{}],106:[function(e,t,n){"use strict";var r=e("./_object-create"),o=e("./_property-desc"),i=e("./_set-to-string-tag"),s={};e("./_hide")(s,e("./_wks")("iterator"),function(){return this}),t.exports=function(e,t,n){e.prototype=r(s,{next:o(1,n)}),i(e,t+" Iterator")}},{"./_hide":100,"./_object-create":113,"./_property-desc":125,"./_set-to-string-tag":128,"./_wks":141}],107:[function(e,t,n){"use strict";var r=e("./_library"),o=e("./_export"),i=e("./_redefine"),s=e("./_hide"),a=e("./_has"),u=e("./_iterators"),c=e("./_iter-create"),l=e("./_set-to-string-tag"),d=e("./_object-gpo"),p=e("./_wks")("iterator"),h=!([].keys&&"next"in[].keys()),f=function(){return this};t.exports=function(e,t,n,v,m,_,y){c(n,t,v);var g,b,E,w=function(e){if(!h&&e in T)return T[e];switch(e){case"keys":case"values":return function(){return new n(this,e)}}return function(){return new n(this,e)}},S=t+" Iterator",k="values"==m,R=!1,T=e.prototype,x=T[p]||T["@@iterator"]||m&&T[m],I=x||w(m),C=m?k?w("entries"):I:void 0,j="Array"==t?T.entries||x:x;if(j&&(E=d(j.call(new e)))!==Object.prototype&&E.next&&(l(E,S,!0),r||a(E,p)||s(E,p,f)),k&&x&&"values"!==x.name&&(R=!0,I=function(){return x.call(this)}),r&&!y||!h&&!R&&T[p]||s(T,p,I),u[t]=I,u[S]=f,m)if(g={values:k?I:w("values"),keys:_?I:w("keys"),entries:C},y)for(b in g)b in T||i(T,b,g[b]);else o(o.P+o.F*(h||R),t,g);return g}},{"./_export":96,"./_has":99,"./_hide":100,"./_iter-create":106,"./_iterators":109,"./_library":110,"./_object-gpo":120,"./_redefine":126,"./_set-to-string-tag":128,"./_wks":141}],108:[function(e,t,n){t.exports=function(e,t){return{value:t,done:!!e}}},{}],109:[function(e,t,n){t.exports={}},{}],110:[function(e,t,n){t.exports=!0},{}],111:[function(e,t,n){var r=e("./_uid")("meta"),o=e("./_is-object"),i=e("./_has"),s=e("./_object-dp").f,a=0,u=Object.isExtensible||function(){return!0},c=!e("./_fails")(function(){return u(Object.preventExtensions({}))}),l=function(e){s(e,r,{value:{i:"O"+ ++a,w:{}}})},d=function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,r)){if(!u(e))return"F";if(!t)return"E";l(e)}return e[r].i},p=function(e,t){if(!i(e,r)){if(!u(e))return!0;if(!t)return!1;l(e)}return e[r].w},h=function(e){return c&&f.NEED&&u(e)&&!i(e,r)&&l(e),e},f=t.exports={KEY:r,NEED:!1,fastKey:d,getWeak:p,onFreeze:h}},{"./_fails":97,"./_has":99,"./_is-object":105,"./_object-dp":114,"./_uid":138}],112:[function(e,t,n){"use strict";var r=e("./_object-keys"),o=e("./_object-gops"),i=e("./_object-pie"),s=e("./_to-object"),a=e("./_iobject"),u=Object.assign;t.exports=!u||e("./_fails")(function(){var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach(function(e){t[e]=e}),7!=u({},e)[n]||Object.keys(u({},t)).join("")!=r})?function(e,t){for(var n=s(e),u=arguments.length,c=1,l=o.f,d=i.f;u>c;)for(var p,h=a(arguments[c++]),f=l?r(h).concat(l(h)):r(h),v=f.length,m=0;v>m;)d.call(h,p=f[m++])&&(n[p]=h[p]);return n}:u},{"./_fails":97,"./_iobject":103,"./_object-gops":119,"./_object-keys":122,"./_object-pie":123,"./_to-object":136}],113:[function(e,t,n){var r=e("./_an-object"),o=e("./_object-dps"),i=e("./_enum-bug-keys"),s=e("./_shared-key")("IE_PROTO"),a=function(){},u=function(){var t,n=e("./_dom-create")("iframe"),r=i.length;for(n.style.display="none",e("./_html").appendChild(n),n.src="javascript:",t=n.contentWindow.document,t.open(),t.write("