     function byzantineCloseChannel(bytes32 _lcID) public {
         Channel storage channel = Channels[_lcID];
         require(channel.isOpen, "Channel is not open");
         require(channel.isUpdateLCSettling == true);
         require(channel.numOpenVC == 0);
         require(channel.updateLCtimeout < now, "LC timeout over.");
         uint256 totalEthDeposit = channel.initialDeposit[0] + channel.ethBalances[2] + channel.ethBalances[3];
         uint256 totalTokenDeposit = channel.initialDeposit[1] + channel.erc20Balances[2] + channel.erc20Balances[3];
         uint256 possibleTotalEthBeforeDeposit = channel.ethBalances[0] + channel.ethBalances[1];
         uint256 possibleTotalTokenBeforeDeposit = channel.erc20Balances[0] + channel.erc20Balances[1];
         if(possibleTotalEthBeforeDeposit < totalEthDeposit) {
             channel.ethBalances[0]+=channel.ethBalances[2];
             channel.ethBalances[1]+=channel.ethBalances[3];
         } else {
             require(possibleTotalEthBeforeDeposit == totalEthDeposit);
         }
         if(possibleTotalTokenBeforeDeposit < totalTokenDeposit) {
             channel.erc20Balances[0]+=channel.erc20Balances[2];
             channel.erc20Balances[1]+=channel.erc20Balances[3];
         } else {
             require(possibleTotalTokenBeforeDeposit == totalTokenDeposit);
         }
         uint256 ethbalanceA = channel.ethBalances[0];
         uint256 ethbalanceI = channel.ethBalances[1];
         uint256 tokenbalanceA = channel.erc20Balances[0];
         uint256 tokenbalanceI = channel.erc20Balances[1];
         channel.ethBalances[0] = 0;
         channel.ethBalances[1] = 0;
         channel.erc20Balances[0] = 0;
         channel.erc20Balances[1] = 0;
         if(ethbalanceA != 0 || ethbalanceI != 0) {
             channel.partyAddresses[0].transfer(ethbalanceA);
             channel.partyAddresses[1].transfer(ethbalanceI);
         }
         if(tokenbalanceA != 0 || tokenbalanceI != 0) {
             require(
                 channel.token.transfer(channel.partyAddresses[0], tokenbalanceA),
                 "byzantineCloseChannel: token transfer failure"
             );
             require(
                 channel.token.transfer(channel.partyAddresses[1], tokenbalanceI),
                 "byzantineCloseChannel: token transfer failure"
             );
         }
         channel.isOpen = false;
         numChannels--;
         emit DidLCClose(_lcID, channel.sequence, ethbalanceA, ethbalanceI, tokenbalanceA, tokenbalanceI);
     }