contract C98MSiGFactory {
    event Created(address indexed wallet, address[] owners);

    /// @dev Create a new multisig wallet
    /// @param owners_ Array of intial owners. If the list is empty, sending adress will be assigned as owner
    /// @param vPowers_ Array of voting weight of the owners, owner with vPower == 0 will be ignored
    /// @param requiredVote_ Number of votes needed to perform the request
    function createMulitSig(address[] memory owners_, uint16[] memory vPowers_, uint16 requiredVote_)
        external returns (C98MSiG wallet) {
        wallet = new C98MSiG(owners_, vPowers_, requiredVote_);
        emit Created(address(wallet), owners_);
    }
}
function createMulitSig(address[] memory owners_, uint16[] memory vPowers_, uint16 requiredVote_)
    external returns (C98MSiG wallet) {
    wallet = new C98MSiG(owners_, vPowers_, requiredVote_);
    emit Created(address(wallet), owners_);
}

/// @dev Create a new multisig wallet
/// @param owners_ Array of intial owners. If the list is empty, sending adress will be assigned as owner
/// @param vPowers_ Array of voting weight of the owners, owner with vPower == 0 will be ignored
/// @param requiredVote_ Number of votes needed to perform the request