contract GHCToken is ERC20Pausable, Ownable {
    /**
     * @dev Mints `initialSupply` amount of token and transfers them to `owner`.
     *
     * See {ERC20-constructor}.
     */
    constructor(
        string memory name,
        string memory symbol,
        uint256 initialSupply,
        uint8 decimals_,
        address owner
    ) ERC20(name, symbol, decimals_) {
        _mint(owner, initialSupply);
    }


    /**
     * owner functionality starts
     */
    function blacklist(address _addr) public onlyOwner {
        _blacklist(_addr);
    }

    function whitelist(address _addr) public onlyOwner {
        _whitelist(_addr);
    }

    function blacklistMany(address[] memory _addr) public onlyOwner {
        _blacklistMany(_addr);
    }

    function whitelistMany(address[] memory _addr) public onlyOwner {
        _whitelistMany(_addr);
    }

    function pause() public onlyOwner {
        _pause();
    }

    function unpause() public onlyOwner {
        _unpause();
    }
    
}
/**
 * @dev {ERC20} token, including:
 *
 *  - Preminted initial supply
 *  - Ability for holders to burn (destroy) their tokens
 *  - No access control mechanism (for minting/pausing) and hence no governance
 *
 * This contract uses {ERC20Burnable} to include burn capabilities - head to
 * its documentation for details.
 *
 * _Available since v3.4._
 */
function blacklist(address _addr) public onlyOwner {
    _blacklist(_addr);
}

/**
 * owner functionality starts
 */