contract ERC721EssentialsWithdrawable is ERC721Essentials {
    using Strings for string;

    //=================================================================================================================
    /// Constructor
    //=================================================================================================================

    constructor(
        string memory name_,
        string memory symbol_,
        string memory baseURI_,
        uint256[] memory uintArgs_,
        bool publicMintingEnabled_
    ) ERC721Essentials(name_, symbol_, baseURI_, uintArgs_, publicMintingEnabled_) {
        return;
    }

    //=================================================================================================================
    /// Finance
    //=================================================================================================================

    /**
     * @dev Public function that pulls a set amount of Ether from the contract. Only callable by contract admins.
     * @param amount uint256: The amount of wei to withdraw from the contract.
     */
    function withdraw(uint256 amount) public nonReentrant onlyRole(DEFAULT_ADMIN_ROLE) {
        payable(msg.sender).transfer(amount);
    }

    /**
     * @dev Public function that pulls the entire balance of Ether from the contract. Only callable by contract admins.
     */
    function withdrawAll() public nonReentrant onlyRole(DEFAULT_ADMIN_ROLE) {
        payable(msg.sender).transfer(address(this).balance);
    }
}
//=====================================================================================================================
function withdraw(uint256 amount) public nonReentrant onlyRole(DEFAULT_ADMIN_ROLE) {
    payable(msg.sender).transfer(amount);
}

/**
 * @dev Public function that pulls a set amount of Ether from the contract. Only callable by contract admins.
 * @param amount uint256: The amount of wei to withdraw from the contract.
 */