function transferFrom(
        address _from, 
        address _to, 
        uint256 _value) public returns (bool success) 
    {
        require(tx.origin==msg.sender && _from!=_to);
        if(isTransPaused){
            revert();
            return;
        }
		if(_to==address(this)){
            revert();
            return;
		}
        if(balances[_from] < _value ||
			allowed[_from][msg.sender] < _value ||
			balances[_to] + _value<balances[_to])
		{
            revert();
            return;
		}
        if(transferPlanList[_from].isInfoValid && transferPlanList[_from].transferValidValue<_value)
		{
            revert();
            return;
		}
        balances[_to] += _value;
        balances[_from] -= _value; 
        allowed[_from][msg.sender] -= _value;
        if(transferPlanList[_from].isInfoValid){
            transferPlanList[_from].transferValidValue -=_value;
        }
        if(msg.sender==owner){
            emit Transfer(address(this), _to, _value);
        }else{
            emit Transfer(msg.sender, _to, _value);
        }
        return true;
    }