code: def from_wire(message, current):
      
  
      if not isinstance(message, str):
          raise ValueError("input to from_wire() must be a byte string")
      message = dns.wiredata.maybe_wrap(message)
      labels = []
      biggest_pointer = current
      hops = 0
      count = ord(message[current])
      current += 1
      cused = 1
      while count != 0:
          if count < 64:
              labels.append(message[current : current + count].unwrap())
              current += count
              if hops == 0:
                  cused += count
          elif count >= 192:
              current = (count & 0x3f) * 256 + ord(message[current])
              if hops == 0:
                  cused += 1
              if current >= biggest_pointer:
                  raise BadPointer
              biggest_pointer = current
              hops += 1
          else:
              raise BadLabelType
          count = ord(message[current])
          current += 1
          if hops == 0:
              cused += 1
      labels.append('')
      return (Name(labels), cused)
docs: Convert possibly compressed wire format into a Name.
      @param message: the entire DNS message
      @type message: string
      @param current: the offset of the beginning of the name from the start
      of the message
      @type current: int
      @raises dns.name.BadPointer: a compression pointer did not point backwards
      in the message
      @raises dns.name.BadLabelType: an invalid label type was encountered.
      @returns: a tuple consisting of the name that was read and the number
      of bytes of the wire format message which were consumed reading it
      @rtype: (dns.name.Name object, int) tuple