function genUser(id, name, tk){
let user = {id: id, tk: tk, name: name};
user.convos = {}
user.addConvo = function(convon, userid){
if (!userid) userid = user.id
let uconvo = userid +"."+ convon
user.convos[uconvo] = genUserConvo( convon, userid)
}
user.send = function(id2, mes){
let uconvo = user.id+"."+id2
env[user.id].convos[uconvo].propagate(mes)
}
user.receive = function(id2, mes){
user.messages.in.push({t:Date.now(), user: id2, m: mes})
}
user.subRO = function(convon,userid ){
let uconvo = userid+"."+convon
user.addConvo(convon, userid)
user.convos[uconvo].mes = env[userid].convos[uconvo].mes
let local = env[userid].convos[uconvo].addBrother(user.id)
env[userid].convos[uconvo].loc = local
}
user.unsubRO = function(uconvo){
let left = user.convos[uconvo].left[0];
let right = user.convos[uconvo].right[0];
user.convos[uconvo].left = []
user.convos[uconvo].right = []
env[left].convos[uconvo].right[0] = right;
env[right].convos[uconvo].left[0] = left;
}
user.unsubRO2 = function(convon,userid ){
console.log("unsubuser",user)
let uconvo = userid+"."+convon
let ownChildren = user.convos[uconvo].children
let distal = env[userid].convos[uconvo].loc
console.log("ggg",distal,index)
let udistal = env[index[distal]].convos[uconvo].children
let endor = udistal[udistal.length-1]
udistal = udistal.splice(0, udistal.length-1)
console.log(udistal,endor)
env[endor].convos[uconvo].children = JSON.parse(JSON.stringify(ownChildren))
env[endor].convos[uconvo].parent = user.convos[uconvo].parent
var index1 = env[user.convos[uconvo].parent].convos[uconvo].children.indexOf(user.id);
env[user.convos[uconvo].parent].convos[uconvo].children[index1] = env[endor].id
user.convos[uconvo].parent = null
user.convos[uconvo].children = []
index[env[endor].convos[uconvo].loc+1] = endor
console.log("parent",user.convos[uconvo].parent)
}
return user;
}