rem: if(add) { addbits|=USERMODE_INVISIBLE; delbits&=~USERMODE_INVISIBLE; } else { addbits&=~USERMODE_INVISIBLE; delbits|=USERMODE_INVISIBLE; } 
add: case "w": case "s": case "k": umode.tweak_mode(USERMODE_CHAR [modestr[modechar]],add); break; case "b": case "g": case "r": case "f": case "y": case "d": case "n": if (this.mode&USERMODE_OPER) umode.tweak_mode(USERMODE_CHAR [modestr[modechar]],add); 
context: function IRCClient_setusermode(modestr) {	if (!modestr)		return 0;	add=true;	unknown_mode=false;	addbits=USERMODE_NONE;	delbits=USERMODE_NONE;	for (modechar in modestr) {		switch (modestr[modechar]) {			case "+":				add=true;				break;			case "-":				add=false;				break;			case "i":				if(add) {					addbits|=USERMODE_INVISIBLE;					delbits&=~USERMODE_INVISIBLE;				} else {					addbits&=~USERMODE_INVISIBLE;					delbits|=USERMODE_INVISIBLE;				}				break;			case "o":				// Allow +o only by servers or non-local users.				if (add && (this.parent) &&				    Clients[this.parent].hub) {					addbits|=USERMODE_OPER;					delbits&=~USERMODE_OPER;				}				if(!add) {					addbits&=~USERMODE_OPER;					delbits|=USERMODE_OPER;				}				break;			default:				if (!unknown_mode && !this.parent) {					this.numeric("501", ":Unknown MODE flag");					unknown_mode=true;				}				break;		}	}	addmodes = "";	delmodes = "";	if ((addbits&USERMODE_INVISIBLE) && !(this.mode&USERMODE_INVISIBLE)) {		addmodes += "i";		this.mode |= USERMODE_INVISIBLE;	} else if ((delbits&USERMODE_INVISIBLE) && (this.mode&USERMODE_INVISIBLE)) {		delmodes += "i";		this.mode &= ~USERMODE_INVISIBLE;	}	if ((addbits&USERMODE_OPER) && !(this.mode&USERMODE_OPER)) {		addmodes += "o";		this.mode |= USERMODE_OPER;	} else if ((delbits&USERMODE_OPER) && (this.mode&USERMODE_OPER)) {		delmodes += "o";		this.mode &= ~USERMODE_OPER;	}	if (!addmodes && !delmodes)		return 0;	final_modestr = "";	if (addmodes)		final_modestr += "+" + addmodes;	if (delmodes)		final_modestr += "-" + delmodes;	if (!this.parent) {		str = "MODE " + this.nick + " " + final_modestr;		this.originatorout(str,this);		this.bcast_to_servers(str);	}	return 1;}
meta: 9592	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/9592/4924f60e9eaa3e8b7b4571536075a83c64b99cb0/ircd.js/buggy/ircd.js