| 
					
				 | 
			
			
				@ -204,118 +204,125 @@ class Users extends RedisModel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                // cache sessions, participants, topics, messages 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                function (callback) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    SessionRepo.findAll(userId, function (err, sessions) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        if(err){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            ModelUtil.emitError(self.eventEmitter, err.message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        sessions.forEach(function (session) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            let redisSession = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                "id", session.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                "name", session.name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                "type", session.type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                "last_sender_id", session.last_sender_id == null ? "" : session.last_sender_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                "last_sender_name", session.last_sender_name == null ? "" : session.last_sender_name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                "last_content_type", session.last_content_type == null ? "" : session.last_content_type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                "last_content", session.last_content == null ? "" : session.last_content, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                "last_message_time", session.last_message_time == null ? "" : session.last_message_time, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                "createDate", ObjectUtil.timestampToLong(session.create_date), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            (function (sessionId, userId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                // cache sessions 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                redisConn.multi() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    .zadd(REDIS_KEYS.Sessions, lastLoginTime.getTime(), sessionId)                                           // 会话的最后活动时间设置为此用户的登录时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    .zadd(RedisModel.makeRedisKey(REDIS_KEYS.UserSessions, userId), lastLoginTime.getTime(), sessionId)      // 会话的最后活动时间设置为此用户的登录时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    .hmset(RedisModel.makeRedisKey(REDIS_KEYS.Session, sessionId), redisSession) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    .execAsync() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    .then(function (res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        // cache participants 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        let sessionParticipantsKey = RedisModel.makeRedisKey(REDIS_KEYS.SessionParticipants, sessionId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        let sessionParticipantsRoleKey = RedisModel.makeRedisKey(REDIS_KEYS.SessionParticipantsRole, sessionId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        ParticipantRepo.findParticipants(sessionId, function (err, participants) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                ModelUtil.emitError(self.eventEmitter, err.message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            participants.forEach(function (participant) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                let participantId = participant.participant_id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                let participantRole = participant.participant_role; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                let score = ObjectUtil.timestampToLong(participant.last_fetch_time); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                redisConn.multi() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    .zadd(sessionParticipantsKey, score, participantId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    .hset(sessionParticipantsRoleKey, participantRole, participantId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    .execAsync().then(function (res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            redisConn.zscore(REDIS_KEYS.Sessions, session.id, function (err, res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                // 已经缓存过的会话不再缓存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                if(res != null) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                (function (sessionId, userId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    let redisSession = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        "id", session.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        "name", session.name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        "type", session.type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        "last_sender_id", session.last_sender_id == null ? "" : session.last_sender_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        "last_sender_name", session.last_sender_name == null ? "" : session.last_sender_name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        "last_content_type", session.last_content_type == null ? "" : session.last_content_type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        "last_content", session.last_content == null ? "" : session.last_content, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        "last_message_time", session.last_message_time == null ? "" : session.last_message_time, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        "create_date", ObjectUtil.timestampToLong(session.create_date), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    // cache sessions 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    redisConn.multi() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        .zadd(REDIS_KEYS.Sessions, lastLoginTime.getTime(), sessionId)                                           // 会话的最后活动时间设置为此用户的登录时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        .zadd(RedisModel.makeRedisKey(REDIS_KEYS.UserSessions, userId), lastLoginTime.getTime(), sessionId)      // 会话的最后活动时间设置为此用户的登录时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        .hmset(RedisModel.makeRedisKey(REDIS_KEYS.Session, sessionId), redisSession) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        .execAsync() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        .then(function (res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            // cache participants 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            let sessionParticipantsKey = RedisModel.makeRedisKey(REDIS_KEYS.SessionParticipants, sessionId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            let sessionParticipantsRoleKey = RedisModel.makeRedisKey(REDIS_KEYS.SessionParticipantsRole, sessionId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            ParticipantRepo.findParticipants(sessionId, function (err, participants) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    ModelUtil.emitError(self.eventEmitter, err.message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                let multi = redisConn.multi(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                participants.forEach(function (participant) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    let participantId = participant.participant_id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    let participantRole = participant.participant_role; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    let score = ObjectUtil.timestampToLong(participant.last_fetch_time); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    multi = multi.zadd(sessionParticipantsKey, score, participantId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                        .hset(sessionParticipantsRoleKey, participantId, participantRole); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                multi.execAsync().then(function (res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        // cache messages 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        let messagesKey = RedisModel.makeRedisKey(REDIS_KEYS.Messages, sessionId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        let messagesByTimestampKey = RedisModel.makeRedisKey(REDIS_KEYS.MessagesByTimestamp, sessionId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        MessageRepo.findBySessionId(sessionId, 0, config.sessionConfig.maxMessageCount, function (err, messages) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                ModelUtil.emitError(self.eventEmitter, err.message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            messages.forEach(function (message) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                let msgJson = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    id: message.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    sender_id: message.sender_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    sender_name: message.sender_name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    timestamp: ObjectUtil.timestampToLong(message.timestamp), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    content_type: message.content_type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    content: message.content 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                redisConn.multi() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    .hset(messagesKey, message.id, JSON.stringify(msgJson)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    .zadd(messagesByTimestampKey, ObjectUtil.timestampToLong(message.timestamp), message.id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    .execAsync() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    .then(function (res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            // cache messages 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            let messagesKey = RedisModel.makeRedisKey(REDIS_KEYS.Messages, sessionId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            let messagesByTimestampKey = RedisModel.makeRedisKey(REDIS_KEYS.MessagesByTimestamp, sessionId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            MessageRepo.findBySessionId(sessionId, 0, config.sessionConfig.maxMessageCount, function (err, messages) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    ModelUtil.emitError(self.eventEmitter, err.message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                let multi = redisConn.multi(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                messages.forEach(function (message) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    let msgJson = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                        id: message.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                        sender_id: message.sender_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                        sender_name: message.sender_name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                        timestamp: ObjectUtil.timestampToLong(message.timestamp), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                        content_type: message.content_type, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                        content: message.content 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    multi = multi.hset(messagesKey, message.id, JSON.stringify(msgJson)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                        .zadd(messagesByTimestampKey, ObjectUtil.timestampToLong(message.timestamp), message.id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                multi.execAsync().then(function (res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        // cache topics for MUC 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        let topicsKey = RedisModel.makeRedisKey(REDIS_KEYS.Topics, sessionId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        TopicRepo.findAllBySessionId(sessionId, function (err, topics) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                ModelUtil.emitError(self.eventEmitter, err.message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            topics.forEach(function (topic) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                let topicKey = RedisModel.makeRedisKey(REDIS_KEYS.Topic, topic.id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                let topicId = topic.id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                let name = topic.name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                let createTime = ObjectUtil.timestampToLong(topic.create_time); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                let endBy = topic.end_by; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                let endTime = ObjectUtil.timestampToLong(topic.end_time); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                let startMessageId = topic.start_message_id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                let endMessageId = topic.end_message_id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                let description = topic.description; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                let status = topic.status; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                redisConn.multi() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    .zadd(topicsKey, topicId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    .hmset(topicKey, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                        'name', name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                        'session_id', sessionId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                        'create_time', createTime, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                        'end_by', endBy, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                        'end_time', endTime, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                        'start_message_id', startMessageId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                        'end_message_id', endMessageId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                        'description', description, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                        'status', status) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    .execAsync().then(function (res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            // cache topics for MUC 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            let topicsKey = RedisModel.makeRedisKey(REDIS_KEYS.Topics, sessionId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            TopicRepo.findAllBySessionId(sessionId, function (err, topics) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                if (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    ModelUtil.emitError(self.eventEmitter, err.message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                topics.forEach(function (topic) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    let topicKey = RedisModel.makeRedisKey(REDIS_KEYS.Topic, topic.id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    let topicId = topic.id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    let name = topic.name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    let createTime = ObjectUtil.timestampToLong(topic.create_time); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    let endBy = topic.end_by; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    let endTime = ObjectUtil.timestampToLong(topic.end_time); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    let startMessageId = topic.start_message_id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    let endMessageId = topic.end_message_id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    let description = topic.description; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    let status = topic.status; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    redisConn.multi() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                        .zadd(topicsKey, topicId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                        .hmset(topicKey, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                            'name', name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                            'session_id', sessionId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                            'create_time', createTime, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                            'end_by', endBy, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                            'end_time', endTime, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                            'start_message_id', startMessageId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                            'end_message_id', endMessageId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                            'description', description, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                            'status', status) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                        .execAsync().then(function (res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            })(session.id, userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                })(session.id, userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 |