def attributes
      return @attributes if defined? @attributes
      data = read_file "replay.attributes.events"
      data.slice! 0, (game_version[:build] < 17326 ? 4 : 5)
      @attributes = []
      data.slice!(0, 4).unpack("V")[0].times do
        @attributes << Attribute.read(data.slice!(0, 13))
      end
      @attributes
    end
def attributes
      return @attributes if defined? @attributes
      data = read_file "replay.attributes.events"
      data.slice! 0, (game_version[:build] < 17326 ? 4 : 5)
      @attributes = []
      data.slice!(0, 4).unpack("V")[0].times do
        @attributes << Attribute.read(data.slice!(0, 13))
      end
      @attributes
    end
`replay.attributes.events` has plenty of handy information. Here we
 simply deserialize all the attributes, taking into account a format
 change that took place in build 17326, for later processing.