docs: def decode(symbol_string, checksum=False, strict=False):
      """Decode an encoded symbol string.
  
      If checksum is set to True, the string is assumed to have a
      trailing check symbol which will be validated. If the
      checksum validation fails, a ValueError is raised.
  
      If strict is set to True, a ValueError is raised if the
      normalization step requires changes to the string.
  
      The decoded string is returned.
      """
      symbol_string = normalize(symbol_string, strict=strict)
      if checksum:
          symbol_string, check_symbol = symbol_string[:-1], symbol_string[-1]
  
      number = 0
      for symbol in symbol_string:
          number = number * base + decode_symbols[symbol]
  
      if checksum:
          check_value = decode_symbols[check_symbol]
          modulo = number % check_base
          if check_value != modulo:
              raise ValueError("invalid check symbol '%s' for string '%s'" %
                               (check_symbol, symbol_string))
  
      return number