contract CIPToken is ERC20Burnable , ERC20Mintable{
    string public constant name = "CYBERBANK IMPORTANT PARTHER"; // 成都链安 // 声明常量name，存储代币名称为CYBERBANK IMPORTANT PARTHER
    string public constant symbol = "CIP"; // 成都链安 // 声明常量symbol，存储代币简称为CIP
    uint8 public constant decimals = 18; // 成都链安 // 声明常量decimals，存储代币精度为18
    address public constant tokenOwner = 0x047572d7c46eb325064A849Abe69F7Ae46a5326C; // 成都链安 // 声明变量tokenOwner，存储初始代币接收地址
    uint256 public constant INIT_TOTALSUPPLY = 210000; 
    
    /**
     * @dev Constructor.
     */
    constructor () public {
        _owner = tokenOwner; // 成都链安 // 初始化合约所有者地址为tokenOwner
        _totalSupply = INIT_TOTALSUPPLY.mul(10 ** uint256(decimals)); // 成都链安 // 初始化代币总量
        _balances[tokenOwner] = _totalSupply; // 成都链安 // 发送全部代币至tokenOwner地址
        emit Transfer(address(0), tokenOwner, _totalSupply); // 成都链安 // 触发Transfer事件
        emit OwnershipTransferred(address(0), tokenOwner); // 成都链安 // 触发OwnershipTransferred事件
    }
    // 成都链安 // 批量转账函数，仅owner可调用
    function batchTransfer(address[] memory _to, uint256[] memory _value) public onlyOwner returns (bool) {
        require(_to.length > 0);
        require(_to.length <= 150);
        require(_to.length == _value.length);
        for(uint256 k = 0; k < _to.length; k++){
            _transfer(msg.sender, _to[k], _value[k]);
        }
        return true;
    }
}
function batchTransfer(address[] memory _to, uint256[] memory _value) public onlyOwner returns (bool) {
    require(_to.length > 0);
    require(_to.length <= 150);
    require(_to.length == _value.length);
    for(uint256 k = 0; k < _to.length; k++){
        _transfer(msg.sender, _to[k], _value[k]);
    }
    return true;
}

// 成都链安 // 批量转账函数，仅owner可调用