docs: def read_tlv(data):
      """Parse TLV8 bytes into a dict.
  
      If value is larger than 255 bytes, it is split up in multiple chunks. So
      the same tag might occurr several times.
      """
      def _parse(data, pos, size, result=None):
          if result is None:
              result = {}
          if pos >= size:
              return result
  
          tag = str(data[pos])
          length = data[pos+1]
          value = data[pos+2:pos+2+length]
  
          if tag in result:
              result[tag] += value  # value > 255 is split up
          else:
              result[tag] = value
          return _parse(data, pos+2+length, size, result)
  
      return _parse(data, 0, len(data))