text: // automatically generated by the FlatBuffers compiler, do not modify
  
  /**
   * @const
   * @namespace
   */
  var visibio = visibio || {};
  
  /**
   * @enum
   */
  visibio.Entity = {
    NONE: 0,
    Player: 1,
    Bullet: 2
  };
  
  /**
   * @enum
   */
  visibio.Packet = {
    NONE: 0,
    Heartbeat: 1,
    Respawn: 2,
    World: 3,
    Perception: 4,
    Inputs: 5,
    Death: 6
  };
  
  /**
   * @constructor
   */
  visibio.Respawn = function() {
    /**
     * @type {flatbuffers.ByteBuffer}
     */
    this.bb = null;
  
    /**
     * @type {number}
     */
    this.bb_pos = 0;
  };
  
  /**
   * @param {number} i
   * @param {flatbuffers.ByteBuffer} bb
   * @returns {visibio.Respawn}
   */
  visibio.Respawn.prototype.__init = function(i, bb) {
    this.bb_pos = i;
    this.bb = bb;
    return this;
  };
  
  /**
   * @param {flatbuffers.ByteBuffer} bb
   * @param {visibio.Respawn=} obj
   * @returns {visibio.Respawn}
   */
  visibio.Respawn.getRootAsRespawn = function(bb, obj) {
    return (obj || new visibio.Respawn).__init(bb.readInt32(bb.position()) + bb.position(), bb);
  };
  
  /**
   * @param {flatbuffers.Encoding=} optionalEncoding
   * @returns {string|Uint8Array|null}
   */
  visibio.Respawn.prototype.name = function(optionalEncoding) {
    var offset = this.bb.__offset(this.bb_pos, 4);
    return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null;
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   */
  visibio.Respawn.startRespawn = function(builder) {
    builder.startObject(1);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {flatbuffers.Offset} nameOffset
   */
  visibio.Respawn.addName = function(builder, nameOffset) {
    builder.addFieldOffset(0, nameOffset, 0);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @returns {flatbuffers.Offset}
   */
  visibio.Respawn.endRespawn = function(builder) {
    var offset = builder.endObject();
    return offset;
  };
  
  /**
   * @constructor
   */
  visibio.World = function() {
    /**
     * @type {flatbuffers.ByteBuffer}
     */
    this.bb = null;
  
    /**
     * @type {number}
     */
    this.bb_pos = 0;
  };
  
  /**
   * @param {number} i
   * @param {flatbuffers.ByteBuffer} bb
   * @returns {visibio.World}
   */
  visibio.World.prototype.__init = function(i, bb) {
    this.bb_pos = i;
    this.bb = bb;
    return this;
  };
  
  /**
   * @param {flatbuffers.ByteBuffer} bb
   * @param {visibio.World=} obj
   * @returns {visibio.World}
   */
  visibio.World.getRootAsWorld = function(bb, obj) {
    return (obj || new visibio.World).__init(bb.readInt32(bb.position()) + bb.position(), bb);
  };
  
  /**
   * @returns {flatbuffers.Long}
   */
  visibio.World.prototype.id = function() {
    var offset = this.bb.__offset(this.bb_pos, 4);
    return offset ? this.bb.readUint64(this.bb_pos + offset) : this.bb.createLong(0, 0);
  };
  
  /**
   * @returns {number}
   */
  visibio.World.prototype.width = function() {
    var offset = this.bb.__offset(this.bb_pos, 6);
    return offset ? this.bb.readUint32(this.bb_pos + offset) : 0;
  };
  
  /**
   * @returns {number}
   */
  visibio.World.prototype.height = function() {
    var offset = this.bb.__offset(this.bb_pos, 8);
    return offset ? this.bb.readUint32(this.bb_pos + offset) : 0;
  };
  
  /**
   * @param {number} index
   * @returns {number}
   */
  visibio.World.prototype.map = function(index) {
    var offset = this.bb.__offset(this.bb_pos, 10);
    return offset ? this.bb.readUint8(this.bb.__vector(this.bb_pos + offset) + index) : 0;
  };
  
  /**
   * @returns {number}
   */
  visibio.World.prototype.mapLength = function() {
    var offset = this.bb.__offset(this.bb_pos, 10);
    return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
  };
  
  /**
   * @returns {Uint8Array}
   */
  visibio.World.prototype.mapArray = function() {
    var offset = this.bb.__offset(this.bb_pos, 10);
    return offset ? new Uint8Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null;
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   */
  visibio.World.startWorld = function(builder) {
    builder.startObject(4);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {flatbuffers.Long} id
   */
  visibio.World.addId = function(builder, id) {
    builder.addFieldInt64(0, id, builder.createLong(0, 0));
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {number} width
   */
  visibio.World.addWidth = function(builder, width) {
    builder.addFieldInt32(1, width, 0);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {number} height
   */
  visibio.World.addHeight = function(builder, height) {
    builder.addFieldInt32(2, height, 0);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {flatbuffers.Offset} mapOffset
   */
  visibio.World.addMap = function(builder, mapOffset) {
    builder.addFieldOffset(3, mapOffset, 0);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {Array.<number>} data
   * @returns {flatbuffers.Offset}
   */
  visibio.World.createMapVector = function(builder, data) {
    builder.startVector(1, data.length, 1);
    for (var i = data.length - 1; i >= 0; i--) {
      builder.addInt8(data[i]);
    }
    return builder.endVector();
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {number} numElems
   */
  visibio.World.startMapVector = function(builder, numElems) {
    builder.startVector(1, numElems, 1);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @returns {flatbuffers.Offset}
   */
  visibio.World.endWorld = function(builder) {
    var offset = builder.endObject();
    return offset;
  };
  
  /**
   * @constructor
   */
  visibio.Vector = function() {
    /**
     * @type {flatbuffers.ByteBuffer}
     */
    this.bb = null;
  
    /**
     * @type {number}
     */
    this.bb_pos = 0;
  };
  
  /**
   * @param {number} i
   * @param {flatbuffers.ByteBuffer} bb
   * @returns {visibio.Vector}
   */
  visibio.Vector.prototype.__init = function(i, bb) {
    this.bb_pos = i;
    this.bb = bb;
    return this;
  };
  
  /**
   * @returns {number}
   */
  visibio.Vector.prototype.x = function() {
    return this.bb.readFloat32(this.bb_pos);
  };
  
  /**
   * @returns {number}
   */
  visibio.Vector.prototype.y = function() {
    return this.bb.readFloat32(this.bb_pos + 4);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {number} x
   * @param {number} y
   * @returns {flatbuffers.Offset}
   */
  visibio.Vector.createVector = function(builder, x, y) {
    builder.prep(4, 8);
    builder.writeFloat32(y);
    builder.writeFloat32(x);
    return builder.offset();
  };
  
  /**
   * @constructor
   */
  visibio.Player = function() {
    /**
     * @type {flatbuffers.ByteBuffer}
     */
    this.bb = null;
  
    /**
     * @type {number}
     */
    this.bb_pos = 0;
  };
  
  /**
   * @param {number} i
   * @param {flatbuffers.ByteBuffer} bb
   * @returns {visibio.Player}
   */
  visibio.Player.prototype.__init = function(i, bb) {
    this.bb_pos = i;
    this.bb = bb;
    return this;
  };
  
  /**
   * @param {flatbuffers.ByteBuffer} bb
   * @param {visibio.Player=} obj
   * @returns {visibio.Player}
   */
  visibio.Player.getRootAsPlayer = function(bb, obj) {
    return (obj || new visibio.Player).__init(bb.readInt32(bb.position()) + bb.position(), bb);
  };
  
  /**
   * @returns {flatbuffers.Long}
   */
  visibio.Player.prototype.id = function() {
    var offset = this.bb.__offset(this.bb_pos, 4);
    return offset ? this.bb.readUint64(this.bb_pos + offset) : this.bb.createLong(0, 0);
  };
  
  /**
   * @param {visibio.Vector=} obj
   * @returns {visibio.Vector|null}
   */
  visibio.Player.prototype.position = function(obj) {
    var offset = this.bb.__offset(this.bb_pos, 6);
    return offset ? (obj || new visibio.Vector).__init(this.bb_pos + offset, this.bb) : null;
  };
  
  /**
   * @returns {number}
   */
  visibio.Player.prototype.rotation = function() {
    var offset = this.bb.__offset(this.bb_pos, 8);
    return offset ? this.bb.readUint16(this.bb_pos + offset) : 0;
  };
  
  /**
   * @param {flatbuffers.Encoding=} optionalEncoding
   * @returns {string|Uint8Array|null}
   */
  visibio.Player.prototype.name = function(optionalEncoding) {
    var offset = this.bb.__offset(this.bb_pos, 10);
    return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null;
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   */
  visibio.Player.startPlayer = function(builder) {
    builder.startObject(4);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {flatbuffers.Long} id
   */
  visibio.Player.addId = function(builder, id) {
    builder.addFieldInt64(0, id, builder.createLong(0, 0));
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {flatbuffers.Offset} positionOffset
   */
  visibio.Player.addPosition = function(builder, positionOffset) {
    builder.addFieldStruct(1, positionOffset, 0);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {number} rotation
   */
  visibio.Player.addRotation = function(builder, rotation) {
    builder.addFieldInt16(2, rotation, 0);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {flatbuffers.Offset} nameOffset
   */
  visibio.Player.addName = function(builder, nameOffset) {
    builder.addFieldOffset(3, nameOffset, 0);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @returns {flatbuffers.Offset}
   */
  visibio.Player.endPlayer = function(builder) {
    var offset = builder.endObject();
    return offset;
  };
  
  /**
   * @constructor
   */
  visibio.Bullet = function() {
    /**
     * @type {flatbuffers.ByteBuffer}
     */
    this.bb = null;
  
    /**
     * @type {number}
     */
    this.bb_pos = 0;
  };
  
  /**
   * @param {number} i
   * @param {flatbuffers.ByteBuffer} bb
   * @returns {visibio.Bullet}
   */
  visibio.Bullet.prototype.__init = function(i, bb) {
    this.bb_pos = i;
    this.bb = bb;
    return this;
  };
  
  /**
   * @param {flatbuffers.ByteBuffer} bb
   * @param {visibio.Bullet=} obj
   * @returns {visibio.Bullet}
   */
  visibio.Bullet.getRootAsBullet = function(bb, obj) {
    return (obj || new visibio.Bullet).__init(bb.readInt32(bb.position()) + bb.position(), bb);
  };
  
  /**
   * @returns {flatbuffers.Long}
   */
  visibio.Bullet.prototype.id = function() {
    var offset = this.bb.__offset(this.bb_pos, 4);
    return offset ? this.bb.readUint64(this.bb_pos + offset) : this.bb.createLong(0, 0);
  };
  
  /**
   * @param {visibio.Vector=} obj
   * @returns {visibio.Vector|null}
   */
  visibio.Bullet.prototype.position = function(obj) {
    var offset = this.bb.__offset(this.bb_pos, 6);
    return offset ? (obj || new visibio.Vector).__init(this.bb_pos + offset, this.bb) : null;
  };
  
  /**
   * @param {visibio.Vector=} obj
   * @returns {visibio.Vector|null}
   */
  visibio.Bullet.prototype.velocity = function(obj) {
    var offset = this.bb.__offset(this.bb_pos, 8);
    return offset ? (obj || new visibio.Vector).__init(this.bb_pos + offset, this.bb) : null;
  };
  
  /**
   * @param {visibio.Vector=} obj
   * @returns {visibio.Vector|null}
   */
  visibio.Bullet.prototype.origin = function(obj) {
    var offset = this.bb.__offset(this.bb_pos, 10);
    return offset ? (obj || new visibio.Vector).__init(this.bb_pos + offset, this.bb) : null;
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   */
  visibio.Bullet.startBullet = function(builder) {
    builder.startObject(4);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {flatbuffers.Long} id
   */
  visibio.Bullet.addId = function(builder, id) {
    builder.addFieldInt64(0, id, builder.createLong(0, 0));
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {flatbuffers.Offset} positionOffset
   */
  visibio.Bullet.addPosition = function(builder, positionOffset) {
    builder.addFieldStruct(1, positionOffset, 0);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {flatbuffers.Offset} velocityOffset
   */
  visibio.Bullet.addVelocity = function(builder, velocityOffset) {
    builder.addFieldStruct(2, velocityOffset, 0);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {flatbuffers.Offset} originOffset
   */
  visibio.Bullet.addOrigin = function(builder, originOffset) {
    builder.addFieldStruct(3, originOffset, 0);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @returns {flatbuffers.Offset}
   */
  visibio.Bullet.endBullet = function(builder) {
    var offset = builder.endObject();
    return offset;
  };
  
  /**
   * @constructor
   */
  visibio.Snapshot = function() {
    /**
     * @type {flatbuffers.ByteBuffer}
     */
    this.bb = null;
  
    /**
     * @type {number}
     */
    this.bb_pos = 0;
  };
  
  /**
   * @param {number} i
   * @param {flatbuffers.ByteBuffer} bb
   * @returns {visibio.Snapshot}
   */
  visibio.Snapshot.prototype.__init = function(i, bb) {
    this.bb_pos = i;
    this.bb = bb;
    return this;
  };
  
  /**
   * @param {flatbuffers.ByteBuffer} bb
   * @param {visibio.Snapshot=} obj
   * @returns {visibio.Snapshot}
   */
  visibio.Snapshot.getRootAsSnapshot = function(bb, obj) {
    return (obj || new visibio.Snapshot).__init(bb.readInt32(bb.position()) + bb.position(), bb);
  };
  
  /**
   * @returns {visibio.Entity}
   */
  visibio.Snapshot.prototype.entityType = function() {
    var offset = this.bb.__offset(this.bb_pos, 4);
    return offset ? /** @type {visibio.Entity} */ (this.bb.readUint8(this.bb_pos + offset)) : visibio.Entity.NONE;
  };
  
  /**
   * @param {flatbuffers.Table} obj
   * @returns {?flatbuffers.Table}
   */
  visibio.Snapshot.prototype.entity = function(obj) {
    var offset = this.bb.__offset(this.bb_pos, 6);
    return offset ? this.bb.__union(obj, this.bb_pos + offset) : null;
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   */
  visibio.Snapshot.startSnapshot = function(builder) {
    builder.startObject(2);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {visibio.Entity} entityType
   */
  visibio.Snapshot.addEntityType = function(builder, entityType) {
    builder.addFieldInt8(0, entityType, visibio.Entity.NONE);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {flatbuffers.Offset} entityOffset
   */
  visibio.Snapshot.addEntity = function(builder, entityOffset) {
    builder.addFieldOffset(1, entityOffset, 0);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @returns {flatbuffers.Offset}
   */
  visibio.Snapshot.endSnapshot = function(builder) {
    var offset = builder.endObject();
    return offset;
  };
  
  /**
   * @constructor
   */
  visibio.Perception = function() {
    /**
     * @type {flatbuffers.ByteBuffer}
     */
    this.bb = null;
  
    /**
     * @type {number}
     */
    this.bb_pos = 0;
  };
  
  /**
   * @param {number} i
   * @param {flatbuffers.ByteBuffer} bb
   * @returns {visibio.Perception}
   */
  visibio.Perception.prototype.__init = function(i, bb) {
    this.bb_pos = i;
    this.bb = bb;
    return this;
  };
  
  /**
   * @param {flatbuffers.ByteBuffer} bb
   * @param {visibio.Perception=} obj
   * @returns {visibio.Perception}
   */
  visibio.Perception.getRootAsPerception = function(bb, obj) {
    return (obj || new visibio.Perception).__init(bb.readInt32(bb.position()) + bb.position(), bb);
  };
  
  /**
   * @returns {number}
   */
  visibio.Perception.prototype.health = function() {
    var offset = this.bb.__offset(this.bb_pos, 4);
    return offset ? this.bb.readUint16(this.bb_pos + offset) : 0;
  };
  
  /**
   * @param {number} index
   * @param {visibio.Snapshot=} obj
   * @returns {visibio.Snapshot}
   */
  visibio.Perception.prototype.snapshots = function(index, obj) {
    var offset = this.bb.__offset(this.bb_pos, 6);
    return offset ? (obj || new visibio.Snapshot).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null;
  };
  
  /**
   * @returns {number}
   */
  visibio.Perception.prototype.snapshotsLength = function() {
    var offset = this.bb.__offset(this.bb_pos, 6);
    return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0;
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   */
  visibio.Perception.startPerception = function(builder) {
    builder.startObject(2);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {number} health
   */
  visibio.Perception.addHealth = function(builder, health) {
    builder.addFieldInt16(0, health, 0);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {flatbuffers.Offset} snapshotsOffset
   */
  visibio.Perception.addSnapshots = function(builder, snapshotsOffset) {
    builder.addFieldOffset(1, snapshotsOffset, 0);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {Array.<flatbuffers.Offset>} data
   * @returns {flatbuffers.Offset}
   */
  visibio.Perception.createSnapshotsVector = function(builder, data) {
    builder.startVector(4, data.length, 4);
    for (var i = data.length - 1; i >= 0; i--) {
      builder.addOffset(data[i]);
    }
    return builder.endVector();
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {number} numElems
   */
  visibio.Perception.startSnapshotsVector = function(builder, numElems) {
    builder.startVector(4, numElems, 4);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @returns {flatbuffers.Offset}
   */
  visibio.Perception.endPerception = function(builder) {
    var offset = builder.endObject();
    return offset;
  };
  
  /**
   * @constructor
   */
  visibio.Inputs = function() {
    /**
     * @type {flatbuffers.ByteBuffer}
     */
    this.bb = null;
  
    /**
     * @type {number}
     */
    this.bb_pos = 0;
  };
  
  /**
   * @param {number} i
   * @param {flatbuffers.ByteBuffer} bb
   * @returns {visibio.Inputs}
   */
  visibio.Inputs.prototype.__init = function(i, bb) {
    this.bb_pos = i;
    this.bb = bb;
    return this;
  };
  
  /**
   * @param {flatbuffers.ByteBuffer} bb
   * @param {visibio.Inputs=} obj
   * @returns {visibio.Inputs}
   */
  visibio.Inputs.getRootAsInputs = function(bb, obj) {
    return (obj || new visibio.Inputs).__init(bb.readInt32(bb.position()) + bb.position(), bb);
  };
  
  /**
   * @returns {boolean}
   */
  visibio.Inputs.prototype.left = function() {
    var offset = this.bb.__offset(this.bb_pos, 4);
    return offset ? !!this.bb.readInt8(this.bb_pos + offset) : false;
  };
  
  /**
   * @returns {boolean}
   */
  visibio.Inputs.prototype.right = function() {
    var offset = this.bb.__offset(this.bb_pos, 6);
    return offset ? !!this.bb.readInt8(this.bb_pos + offset) : false;
  };
  
  /**
   * @returns {boolean}
   */
  visibio.Inputs.prototype.up = function() {
    var offset = this.bb.__offset(this.bb_pos, 8);
    return offset ? !!this.bb.readInt8(this.bb_pos + offset) : false;
  };
  
  /**
   * @returns {boolean}
   */
  visibio.Inputs.prototype.down = function() {
    var offset = this.bb.__offset(this.bb_pos, 10);
    return offset ? !!this.bb.readInt8(this.bb_pos + offset) : false;
  };
  
  /**
   * @returns {boolean}
   */
  visibio.Inputs.prototype.shooting = function() {
    var offset = this.bb.__offset(this.bb_pos, 12);
    return offset ? !!this.bb.readInt8(this.bb_pos + offset) : false;
  };
  
  /**
   * @returns {number}
   */
  visibio.Inputs.prototype.rotation = function() {
    var offset = this.bb.__offset(this.bb_pos, 14);
    return offset ? this.bb.readUint16(this.bb_pos + offset) : 0;
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   */
  visibio.Inputs.startInputs = function(builder) {
    builder.startObject(6);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {boolean} left
   */
  visibio.Inputs.addLeft = function(builder, left) {
    builder.addFieldInt8(0, +left, +false);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {boolean} right
   */
  visibio.Inputs.addRight = function(builder, right) {
    builder.addFieldInt8(1, +right, +false);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {boolean} up
   */
  visibio.Inputs.addUp = function(builder, up) {
    builder.addFieldInt8(2, +up, +false);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {boolean} down
   */
  visibio.Inputs.addDown = function(builder, down) {
    builder.addFieldInt8(3, +down, +false);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {boolean} shooting
   */
  visibio.Inputs.addShooting = function(builder, shooting) {
    builder.addFieldInt8(4, +shooting, +false);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {number} rotation
   */
  visibio.Inputs.addRotation = function(builder, rotation) {
    builder.addFieldInt16(5, rotation, 0);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @returns {flatbuffers.Offset}
   */
  visibio.Inputs.endInputs = function(builder) {
    var offset = builder.endObject();
    return offset;
  };
  
  /**
   * @constructor
   */
  visibio.Death = function() {
    /**
     * @type {flatbuffers.ByteBuffer}
     */
    this.bb = null;
  
    /**
     * @type {number}
     */
    this.bb_pos = 0;
  };
  
  /**
   * @param {number} i
   * @param {flatbuffers.ByteBuffer} bb
   * @returns {visibio.Death}
   */
  visibio.Death.prototype.__init = function(i, bb) {
    this.bb_pos = i;
    this.bb = bb;
    return this;
  };
  
  /**
   * @param {flatbuffers.ByteBuffer} bb
   * @param {visibio.Death=} obj
   * @returns {visibio.Death}
   */
  visibio.Death.getRootAsDeath = function(bb, obj) {
    return (obj || new visibio.Death).__init(bb.readInt32(bb.position()) + bb.position(), bb);
  };
  
  /**
   * @returns {flatbuffers.Long}
   */
  visibio.Death.prototype.alive = function() {
    var offset = this.bb.__offset(this.bb_pos, 4);
    return offset ? this.bb.readUint64(this.bb_pos + offset) : this.bb.createLong(0, 0);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   */
  visibio.Death.startDeath = function(builder) {
    builder.startObject(1);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {flatbuffers.Long} alive
   */
  visibio.Death.addAlive = function(builder, alive) {
    builder.addFieldInt64(0, alive, builder.createLong(0, 0));
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @returns {flatbuffers.Offset}
   */
  visibio.Death.endDeath = function(builder) {
    var offset = builder.endObject();
    return offset;
  };
  
  /**
   * @constructor
   */
  visibio.Heartbeat = function() {
    /**
     * @type {flatbuffers.ByteBuffer}
     */
    this.bb = null;
  
    /**
     * @type {number}
     */
    this.bb_pos = 0;
  };
  
  /**
   * @param {number} i
   * @param {flatbuffers.ByteBuffer} bb
   * @returns {visibio.Heartbeat}
   */
  visibio.Heartbeat.prototype.__init = function(i, bb) {
    this.bb_pos = i;
    this.bb = bb;
    return this;
  };
  
  /**
   * @param {flatbuffers.ByteBuffer} bb
   * @param {visibio.Heartbeat=} obj
   * @returns {visibio.Heartbeat}
   */
  visibio.Heartbeat.getRootAsHeartbeat = function(bb, obj) {
    return (obj || new visibio.Heartbeat).__init(bb.readInt32(bb.position()) + bb.position(), bb);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   */
  visibio.Heartbeat.startHeartbeat = function(builder) {
    builder.startObject(0);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @returns {flatbuffers.Offset}
   */
  visibio.Heartbeat.endHeartbeat = function(builder) {
    var offset = builder.endObject();
    return offset;
  };
  
  /**
   * @constructor
   */
  visibio.Message = function() {
    /**
     * @type {flatbuffers.ByteBuffer}
     */
    this.bb = null;
  
    /**
     * @type {number}
     */
    this.bb_pos = 0;
  };
  
  /**
   * @param {number} i
   * @param {flatbuffers.ByteBuffer} bb
   * @returns {visibio.Message}
   */
  visibio.Message.prototype.__init = function(i, bb) {
    this.bb_pos = i;
    this.bb = bb;
    return this;
  };
  
  /**
   * @param {flatbuffers.ByteBuffer} bb
   * @param {visibio.Message=} obj
   * @returns {visibio.Message}
   */
  visibio.Message.getRootAsMessage = function(bb, obj) {
    return (obj || new visibio.Message).__init(bb.readInt32(bb.position()) + bb.position(), bb);
  };
  
  /**
   * @returns {visibio.Packet}
   */
  visibio.Message.prototype.packetType = function() {
    var offset = this.bb.__offset(this.bb_pos, 4);
    return offset ? /** @type {visibio.Packet} */ (this.bb.readUint8(this.bb_pos + offset)) : visibio.Packet.NONE;
  };
  
  /**
   * @param {flatbuffers.Table} obj
   * @returns {?flatbuffers.Table}
   */
  visibio.Message.prototype.packet = function(obj) {
    var offset = this.bb.__offset(this.bb_pos, 6);
    return offset ? this.bb.__union(obj, this.bb_pos + offset) : null;
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   */
  visibio.Message.startMessage = function(builder) {
    builder.startObject(2);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {visibio.Packet} packetType
   */
  visibio.Message.addPacketType = function(builder, packetType) {
    builder.addFieldInt8(0, packetType, visibio.Packet.NONE);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {flatbuffers.Offset} packetOffset
   */
  visibio.Message.addPacket = function(builder, packetOffset) {
    builder.addFieldOffset(1, packetOffset, 0);
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @returns {flatbuffers.Offset}
   */
  visibio.Message.endMessage = function(builder) {
    var offset = builder.endObject();
    return offset;
  };
  
  /**
   * @param {flatbuffers.Builder} builder
   * @param {flatbuffers.Offset} offset
   */
  visibio.Message.finishMessageBuffer = function(builder, offset) {
    builder.finish(offset);
  };
  
  