def remove_nested_parens(input_str):
    """
    Returns a copy of string with any parenthesized (..) [..] text removed.
    Nested parentheses are handled. It also returns a Boolean asserting if
    the parenthesis were well balanced (True) or not (False).
    """
    result1 = ''
    paren_level = 0
    for ch in input_str:
        if ch == '(':
            paren_level += 1
        elif (ch == ')') and paren_level:
            paren_level -= 1
        elif not paren_level:
            result1 += ch
    result2 = ''
    paren_level2 = 0
    for ch in result1:
        if ch == '[':
            paren_level2 += 1
        elif (ch == ']') and paren_level2:
            paren_level2 -= 1
        elif not paren_level2:
            result2 += ch

    if (paren_level == 0) and (paren_level2 == 0):
        balanced = True
    else:
        balanced = False

    return (balanced, result2)