public Builder clearIsVisible() {
        bitField0_ = (bitField0_ & ~0x00001000);
        isVisible_ = false;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:messages.Bullet)
    }

    static {
      defaultInstance = new Bullet(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:messages.Bullet)
  }

  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_messages_UnitId_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_messages_UnitId_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_messages_UnitType_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_messages_UnitType_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_messages_UnitTypeData_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_messages_UnitTypeData_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_messages_UpgradeTypeData_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_messages_UpgradeTypeData_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_messages_Unit_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_messages_Unit_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_messages_RaceData_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_messages_RaceData_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_messages_PlayerStatus_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_messages_PlayerStatus_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_messages_UnitTypeIntPair_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_messages_UnitTypeIntPair_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_messages_Player_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_messages_Player_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_messages_UpgradeLevel_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_messages_UpgradeLevel_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_messages_TechType_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_messages_TechType_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_messages_UpgradeType_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_messages_UpgradeType_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_messages_TechTypeData_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_messages_TechTypeData_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_messages_WeaponType_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_messages_WeaponType_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_messages_WeaponTypeData_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_messages_WeaponTypeData_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_messages_StaticGameData_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_messages_StaticGameData_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_messages_Bullet_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_messages_Bullet_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\nunit.proto\022\010messages\032\013types.proto\032\ndra" +
      "w.proto\"\024\n\006UnitId\022\n\n\002id\030\001 \002(\005\"\026\n\010UnitTyp" +
      "e\022\n\n\002id\030\001 \002(\005\"\300\014\n\014UnitTypeData\022\n\n\002id\030\001 \002" +
      "(\005\022\014\n\004name\030\002 \002(\t\022\020\n\010sublabel\030\003 \002(\t\022\034\n\004ra" +
      "ce\030\004 \002(\0162\016.messages.Race\022*\n\016whatBuildsTy" +
      "pe\030\005 \002(\0132\022.messages.UnitType\022\030\n\020whatBuil" +
      "dsNumber\030\006 \002(\005\0220\n\rrequiredUnits\030\007 \003(\0132\031." +
      "messages.UnitTypeIntPair\022(\n\014requiredTech" +
      "\030\010 \002(\0132\022.messages.TechType\022%\n\tabilities\030" +
      "\t \003(\0132\022.messages.TechType\022\'\n\010upgrades\030\n ",
      "\003(\0132\025.messages.UpgradeType\022+\n\014armorUpgra" +
      "de\030\013 \002(\0132\025.messages.UpgradeType\022\024\n\014maxHi" +
      "tPoints\030\014 \002(\005\022\022\n\nmaxShields\030\r \002(\005\022\021\n\tmax" +
      "Energy\030\016 \002(\005\022\r\n\005armor\030\017 \002(\005\022\024\n\014mineralPr" +
      "ice\030\020 \002(\005\022\020\n\010gasPrice\030\021 \002(\005\022\021\n\tbuildTime" +
      "\030\022 \002(\005\022\026\n\016supplyRequired\030\023 \002(\005\022\026\n\016supply" +
      "Provided\030\024 \002(\005\022\025\n\rspaceRequired\030\025 \002(\005\022\025\n" +
      "\rspaceProvided\030B \002(\005\022\022\n\nbuildScore\030\026 \002(\005" +
      "\022\024\n\014destroyScore\030\027 \002(\005\022$\n\004size\030\030 \002(\0162\026.m" +
      "essages.UnitSizeType\022\021\n\ttileWidth\030\031 \002(\005\022",
      "\022\n\ntileHeight\030\032 \002(\005\022\025\n\rdimensionLeft\030\033 \002" +
      "(\005\022\023\n\013dimensionUp\030\034 \002(\005\022\026\n\016dimensionRigh" +
      "t\030\035 \002(\005\022\025\n\rdimensionDown\030\036 \002(\005\022\021\n\tseekRa" +
      "nge\030\037 \002(\005\022\022\n\nsightRange\030  \002(\005\022*\n\014groundW" +
      "eapon\030! \002(\0132\024.messages.WeaponType\022\025\n\rmax" +
      "GroundHits\030\" \002(\005\022\'\n\tairWeapon\030# \002(\0132\024.me" +
      "ssages.WeaponType\022\022\n\nmaxAirHits\030$ \002(\005\022\020\n" +
      "\010topSpeed\030% \002(\001\022\024\n\014acceleration\030& \002(\005\022\024\n" +
      "\014haltDistance\030\' \002(\005\022\022\n\nturnRadius\030( \002(\005\022" +
      "\022\n\ncanProduce\030) \002(\010\022\021\n\tcanAttack\030* \002(\010\022\017",
      "\n\007canMove\030+ \002(\010\022\017\n\007isFlyer\030, \002(\010\022\025\n\rrege" +
      "neratesHP\030- \002(\010\022\025\n\risSpellcaster\030. \002(\010\022\031" +
      "\n\021hasPermanentCloak\030/ \002(\010\022\024\n\014isInvincibl" +
      "e\0300 \002(\010\022\021\n\tisOrganic\0301 \002(\010\022\024\n\014isMechanic" +
      "al\0302 \002(\010\022\021\n\tisRobotic\0303 \002(\010\022\022\n\nisDetecto" +
      "r\0304 \002(\010\022\033\n\023isResourceContainer\0305 \002(\010\022\027\n\017" +
      "isResourceDepot\0306 \002(\010\022\022\n\nisRefinery\0307 \002(" +
      "\010\022\020\n\010isWorker\0308 \002(\010\022\023\n\013requiresPsi\0309 \002(\010" +
      "\022\025\n\rrequiresCreep\030: \002(\010\022\032\n\022isTwoUnitsInO" +
      "neEgg\030; \002(\010\022\024\n\014isBurrowable\030< \002(\010\022\023\n\013isC",
      "loakable\030= \002(\010\022\022\n\nisBuilding\030> \002(\010\022\017\n\007is" +
      "Addon\030? \002(\010\022\030\n\020isFlyingBuilding\030@ \002(\010\022\021\n" +
      "\tisNeutral\030A \002(\010\"\305\002\n\017UpgradeTypeData\022\n\n\002" +
      "id\030\001 \002(\005\022\014\n\004name\030\002 \002(\t\022\034\n\004race\030\003 \002(\0162\016.m" +
      "essages.Race\022\030\n\020mineralPriceBase\030\004 \002(\005\022\032" +
      "\n\022mineralPriceFactor\030\005 \002(\005\022\024\n\014gasPriceBa" +
      "se\030\006 \002(\005\022\026\n\016gasPriceFactor\030\007 \002(\005\022\027\n\017upgr" +
      "adeTimeBase\030\010 \002(\005\022\031\n\021upgradeTimeFactor\030\t" +
      " \002(\005\022\022\n\nmaxRepeats\030\n \002(\005\022(\n\014whatUpgrades" +
      "\030\013 \002(\0132\022.messages.UnitType\022$\n\010whatUses\030\014",
      " \003(\0132\022.messages.UnitType\"\374\024\n\004Unit\022\037\n\005the" +
      "ID\030\001 \002(\0132\020.messages.UnitId\022\016\n\006player\030\002 \002" +
      "(\005\022 \n\004type\030\003 \002(\0132\022.messages.UnitType\022\'\n\013" +
      "initialType\030\004 \002(\0132\022.messages.UnitType\022\021\n" +
      "\thitPoints\030\005 \002(\005\022\030\n\020initialHitPoints\030\006 \002" +
      "(\005\022\017\n\007shields\030\007 \002(\005\022\016\n\006energy\030\010 \002(\005\022\021\n\tr" +
      "esources\030\t \002(\005\022\025\n\rresourceGroup\030g \002(\005\022\030\n" +
      "\020initialResources\030\n \002(\005\022\021\n\tkillCount\030\013 \002" +
      "(\005\022\034\n\024groundWeaponCooldown\030\014 \002(\005\022\031\n\021airW" +
      "eaponCooldown\030\r \002(\005\022\025\n\rspellCooldown\030\016 \002",
      "(\005\022\033\n\023defenseMatrixPoints\030\017 \002(\005\022\032\n\022defen" +
      "seMatrixTimer\030\020 \002(\005\022\024\n\014ensnareTimer\030\021 \002(" +
      "\005\022\026\n\016irradiateTimer\030\022 \002(\005\022\025\n\rlockdownTim" +
      "er\030\023 \002(\005\022\026\n\016maelstromTimer\030\024 \002(\005\022\023\n\013plag" +
      "ueTimer\030\025 \002(\005\022\023\n\013removeTimer\030\026 \002(\005\022\023\n\013st" +
      "asisTimer\030\027 \002(\005\022\021\n\tstimTimer\030\030 \002(\005\022$\n\010po" +
      "sition\030\031 \002(\0132\022.messages.Position\022+\n\017init" +
      "ialPosition\030\032 \002(\0132\022.messages.Position\022,\n" +
      "\014tilePosition\030\033 \002(\0132\026.messages.TilePosit" +
      "ion\0223\n\023initialTilePosition\030\034 \002(\0132\026.messa",
      "ges.TilePosition\022\r\n\005angle\030\036 \002(\001\022\021\n\tveloc" +
      "ityX\030\037 \002(\001\022\021\n\tvelocityY\030  \002(\001\022 \n\006target\030" +
      "! \001(\0132\020.messages.UnitId\022*\n\016targetPositio" +
      "n\030\" \002(\0132\022.messages.Position\022\r\n\005order\030# \002" +
      "(\005\022%\n\013orderTarget\030$ \001(\0132\020.messages.UnitI" +
      "d\022\022\n\norderTimer\030% \002(\005\022\026\n\016secondaryOrder\030" +
      "& \002(\005\022#\n\tbuildUnit\030\' \001(\0132\020.messages.Unit" +
      "Id\022\032\n\022remainingBuildTime\030( \002(\005\022\032\n\022remain" +
      "ingTrainTime\030) \002(\005\022)\n\rtrainingQueue\030+ \003(" +
      "\0132\022.messages.UnitType\022#\n\ttransport\030, \001(\013",
      "2\020.messages.UnitId\022%\n\013loadedUnits\030- \003(\0132" +
      "\020.messages.UnitId\022\030\n\020interceptorCount\030. " +
      "\002(\005\022\023\n\013scarabCount\030/ \002(\005\022\027\n\017spiderMineCo" +
      "unt\0300 \002(\005\022\014\n\004tech\0301 \002(\005\022\017\n\007upgrade\0302 \002(\005" +
      "\022\035\n\025remainingResearchTime\0303 \002(\005\022\034\n\024remai" +
      "ningUpgradeTime\0304 \002(\005\022)\n\rrallyPosition\0305" +
      " \002(\0132\022.messages.Position\022#\n\trallyUnit\0306 " +
      "\001(\0132\020.messages.UnitId\022\037\n\005addon\0307 \001(\0132\020.m" +
      "essages.UnitId\022!\n\007carrier\030* \001(\0132\020.messag" +
      "es.UnitId\022&\n\014interceptors\030e \003(\0132\020.messag",
      "es.UnitId\022#\n\tnydusExit\030i \001(\0132\020.messages." +
      "UnitId\022\016\n\006exists\0308 \002(\010\022\017\n\007hasNuke\030d \002(\010\022" +
      "\024\n\014accelerating\0309 \002(\010\022\030\n\020beingConstructe" +
      "d\030: \002(\010\022\023\n\013beingHealed\030; \002(\010\022\r\n\005blind\030< " +
      "\002(\010\022\017\n\007braking\030= \002(\010\022\020\n\010burrowed\030> \002(\010\022\023" +
      "\n\013carryingGas\030? \002(\010\022\030\n\020carryingMinerals\030" +
      "@ \002(\010\022\017\n\007cloaked\030A \002(\010\022\021\n\tcompleted\030B \002(" +
      "\010\022\024\n\014constructing\030C \002(\010\022\027\n\017defenseMatrix" +
      "ed\030D \002(\010\022\020\n\010ensnared\030E \002(\010\022\021\n\tfollowing\030" +
      "F \002(\010\022\024\n\014gatheringGas\030G \002(\010\022\031\n\021gathering",
      "Minerals\030H \002(\010\022\025\n\rhallucination\030I \002(\010\022\014\n" +
      "\004idle\030J \002(\010\022\022\n\nirradiated\030K \002(\010\022\016\n\006lifte" +
      "d\030L \002(\010\022\016\n\006loaded\030M \002(\010\022\022\n\nlockedDown\030N " +
      "\002(\010\022\024\n\014maelstrommed\030O \002(\010\022\020\n\010morphing\030P " +
      "\002(\010\022\016\n\006moving\030Q \002(\010\022\021\n\tparasited\030R \002(\010\022\022" +
      "\n\npatrolling\030S \002(\010\022\017\n\007plagued\030T \002(\010\022\021\n\tr" +
      "epairing\030U \002(\010\022\023\n\013researching\030V \002(\010\022\020\n\010s" +
      "elected\030W \002(\010\022\016\n\006sieged\030X \002(\010\022\026\n\016startin" +
      "gAttack\030Y \002(\010\022\020\n\010stasised\030Z \002(\010\022\017\n\007stimm" +
      "ed\030[ \002(\010\022\020\n\010training\030\\ \002(\010\022\022\n\nunderStorm",
      "\030] \002(\010\022\023\n\013underAttack\030o \002(\010\022\026\n\016underDark" +
      "Swarm\030p \002(\010\022\021\n\tunpowered\030^ \002(\010\022\021\n\tupgrad" +
      "ing\030_ \002(\010\022\017\n\007visible\030` \002(\010\022\025\n\rbeingGathe" +
      "red\030a \002(\010\022 \n\006larvae\030c \003(\0132\020.messages.Uni" +
      "tId\022\"\n\010hatchery\030h \001(\0132\020.messages.UnitId\022" +
      "%\n\tbuildType\030n \001(\0132\022.messages.UnitType\022\020" +
      "\n\010detected\030j \002(\010\022\021\n\tattacking\030k \002(\010\022\023\n\013a" +
      "ttackFrame\030l \002(\010\022\r\n\005stuck\030m \002(\010\"\365\001\n\010Race" +
      "Data\022\032\n\002id\030\001 \002(\0162\016.messages.Race\022\014\n\004name" +
      "\030\002 \002(\t\022\"\n\006worker\030\003 \002(\0132\022.messages.UnitTy",
      "pe\022\"\n\006center\030\004 \002(\0132\022.messages.UnitType\022$" +
      "\n\010refinery\030\005 \002(\0132\022.messages.UnitType\022%\n\t" +
      "transport\030\006 \002(\0132\022.messages.UnitType\022*\n\016s" +
      "upplyProvider\030\007 \002(\0132\022.messages.UnitType\"" +
      "S\n\014PlayerStatus\022\n\n\002id\030\001 \002(\005\022&\n\006stance\030\002 " +
      "\002(\0162\026.messages.PlayerStance\022\017\n\007ownerId\030\003" +
      " \002(\005\"B\n\017UnitTypeIntPair\022 \n\004type\030\001 \002(\0132\022." +
      "messages.UnitType\022\r\n\005count\030\002 \002(\005\"\307\006\n\006Pla" +
      "yer\022\n\n\002id\030\001 \002(\005\022\014\n\004name\030\002 \002(\t\022\037\n\005units\030\003" +
      " \003(\0132\020.messages.UnitId\022\034\n\004race\030\004 \002(\0162\016.m",
      "essages.Race\022\'\n\007stances\030\005 \003(\0132\026.messages" +
      ".PlayerStatus\022\017\n\007neutral\030\006 \002(\010\022-\n\rstartL" +
      "ocation\030\007 \002(\0132\026.messages.TilePosition\022\020\n" +
      "\010leftGame\030\010 \002(\010\022\020\n\010minerals\030\t \002(\005\022\013\n\003gas" +
      "\030\n \002(\005\022\032\n\022cumulativeMinerals\030\013 \002(\005\022\025\n\rcu" +
      "mulativeGas\030\014 \002(\005\022\023\n\013supplyTotal\030\r \002(\005\022\022" +
      "\n\nsupplyUsed\030\016 \002(\005\022/\n\014allUnitCount\030\017 \003(\013" +
      "2\031.messages.UnitTypeIntPair\0225\n\022completed" +
      "UnitCount\030\020 \003(\0132\031.messages.UnitTypeIntPa" +
      "ir\0226\n\023incompleteUnitCount\030\021 \003(\0132\031.messag",
      "es.UnitTypeIntPair\0220\n\rdeadUnitCount\030\022 \003(" +
      "\0132\031.messages.UnitTypeIntPair\0222\n\017killedUn" +
      "itCount\030\023 \003(\0132\031.messages.UnitTypeIntPair" +
      "\022-\n\rupgradeLevels\030\024 \003(\0132\026.messages.Upgra" +
      "deLevel\022+\n\017researchedTechs\030\025 \003(\0132\022.messa" +
      "ges.TechType\022\'\n\013researching\030\026 \003(\0132\022.mess" +
      "ages.TechType\022(\n\tupgrading\030\027 \003(\0132\025.messa" +
      "ges.UpgradeType\022\023\n\004self\030\030 \001(\010:\005false\022\022\n\n" +
      "victorious\030\031 \002(\010\022\020\n\010defeated\030\032 \002(\010\"B\n\014Up" +
      "gradeLevel\022#\n\004type\030\001 \002(\0132\025.messages.Upgr",
      "adeType\022\r\n\005level\030\002 \002(\005\"\026\n\010TechType\022\n\n\002id" +
      "\030\001 \002(\005\"\031\n\013UpgradeType\022\n\n\002id\030\001 \002(\005\"\220\002\n\014Te" +
      "chTypeData\022\n\n\002id\030\001 \002(\005\022\014\n\004name\030\002 \002(\t\022\034\n\004" +
      "race\030\003 \002(\0162\016.messages.Race\022\024\n\014mineralPri" +
      "ce\030\004 \002(\005\022\020\n\010gasPrice\030\005 \002(\005\022\024\n\014researchTi" +
      "me\030\006 \002(\005\022\022\n\nenergyUsed\030\007 \002(\005\022*\n\016whatRese" +
      "arches\030\010 \002(\0132\022.messages.UnitType\022$\n\006weap" +
      "on\030\t \002(\0132\024.messages.WeaponType\022$\n\010whatUs" +
      "es\030\n \003(\0132\022.messages.UnitType\"\030\n\nWeaponTy" +
      "pe\022\n\n\002id\030\001 \002(\005\"\242\005\n\016WeaponTypeData\022\n\n\002id\030",
      "\001 \002(\005\022\014\n\004name\030\002 \002(\t\022 \n\004tech\030\003 \002(\0132\022.mess" +
      "ages.TechType\022$\n\010whatUses\030\004 \002(\0132\022.messag" +
      "es.UnitType\022\024\n\014damageAmount\030\005 \002(\005\022\023\n\013dam" +
      "ageBonus\030\006 \002(\005\022\026\n\016damageCooldown\030\007 \002(\005\022\024" +
      "\n\014damageFactor\030\010 \002(\005\022*\n\013upgradeType\030\t \002(" +
      "\0132\025.messages.UpgradeType\022(\n\ndamageType\030\n" +
      " \002(\0162\024.messages.DamageType\022.\n\rexplosionT" +
      "ype\030\013 \002(\0162\027.messages.ExplosionType\022\020\n\010mi" +
      "nRange\030\014 \002(\005\022\020\n\010maxRange\030\r \002(\005\022\031\n\021innerS" +
      "plashRadius\030\016 \002(\005\022\032\n\022medianSplashRadius\030",
      "\017 \002(\005\022\031\n\021outerSplashRadius\030\020 \002(\005\022\022\n\ntarg" +
      "etsAir\030\021 \002(\010\022\025\n\rtargetsGround\030\022 \002(\010\022\031\n\021t" +
      "argetsMechanical\030\023 \002(\010\022\026\n\016targetsOrganic" +
      "\030\024 \002(\010\022\032\n\022targetsNonBuilding\030\025 \002(\010\022\031\n\021ta" +
      "rgetsNonRobotic\030\026 \002(\010\022\026\n\016targetsTerrain\030" +
      "\027 \002(\010\022\030\n\020targetsOrgOrMech\030\030 \002(\010\022\022\n\ntarge" +
      "tsOwn\030\031 \002(\010\"\306\004\n\016StaticGameData\022(\n\016static" +
      "Minerals\030\001 \003(\0132\020.messages.UnitId\022\'\n\rstat" +
      "icGeysers\030\002 \003(\0132\020.messages.UnitId\022,\n\022sta" +
      "ticNeutralUnits\030\003 \003(\0132\020.messages.UnitId\022",
      "\020\n\010mapWidth\030\004 \002(\005\022\021\n\tmapHeight\030\005 \002(\005\022\023\n\013" +
      "mapFilename\030\006 \002(\t\022\017\n\007mapName\030\007 \002(\t\022\017\n\007ma" +
      "pHash\030\010 \002(\t\022\020\n\010walkable\030\t \003(\007\022\021\n\tbuildab" +
      "le\030\n \003(\007\022\024\n\014groundHeight\030\021 \003(\005\022)\n\tunitTy" +
      "pes\030\013 \003(\0132\026.messages.UnitTypeData\022)\n\007wea" +
      "pons\030\014 \003(\0132\030.messages.WeaponTypeData\022+\n\010" +
      "upgrades\030\r \003(\0132\031.messages.UpgradeTypeDat" +
      "a\022%\n\005techs\030\016 \003(\0132\026.messages.TechTypeData" +
      "\022\037\n\006colors\030\017 \003(\0132\017.messages.Color\022!\n\005rac" +
      "es\030\022 \003(\0132\022.messages.RaceData\022.\n\016startLoc",
      "ations\030\020 \003(\0132\026.messages.TilePosition\"\313\002\n" +
      "\006Bullet\022\n\n\002id\030\001 \002(\005\022\016\n\006player\030\002 \001(\005\022\"\n\004t" +
      "ype\030\003 \002(\0162\024.messages.BulletType\022 \n\006sourc" +
      "e\030\004 \001(\0132\020.messages.UnitId\022$\n\010position\030\005 " +
      "\002(\0132\022.messages.Position\022\r\n\005angle\030\006 \002(\001\022\021" +
      "\n\tvelocityX\030\007 \002(\001\022\021\n\tvelocityY\030\010 \002(\001\022 \n\006" +
      "target\030\t \001(\0132\020.messages.UnitId\022*\n\016target" +
      "Position\030\n \002(\0132\022.messages.Position\022\023\n\013re" +
      "moveTimer\030\013 \002(\005\022\016\n\006exists\030\014 \002(\010\022\021\n\tisVis" +
      "ible\030\r \002(\010*`\n\014UnitSizeType\022\017\n\013Independen",
      "t\020\000\022\t\n\005Small\020\001\022\n\n\006Medium\020\002\022\t\n\005Large\020\003\022\014\n" +
      "\010NoneSize\020\004\022\017\n\013UnknownSize\020\005*W\n\004Race\022\010\n\004" +
      "Zerg\020\000\022\n\n\006Terran\020\001\022\013\n\007Protoss\020\002\022\n\n\006Rando" +
      "m\020\003\022\t\n\005Other\020\004\022\010\n\004None\020\005\022\013\n\007Unknown\020\006*0\n" +
      "\014PlayerStance\022\013\n\007Neutral\020\001\022\010\n\004Ally\020\002\022\t\n\005" +
      "Enemy\020\003*\202\001\n\nDamageType\022\025\n\021IndependentDam" +
      "age\020\000\022\r\n\tExplosive\020\001\022\016\n\nConcussive\020\002\022\n\n\006" +
      "Normal\020\003\022\017\n\013IgnoreArmor\020\004\022\016\n\nNoneDamage\020" +
      "\005\022\021\n\rUnknownDamage\020\006*\270\003\n\rExplosionType\022\021" +
      "\n\rExplosionNone\020\000\022\023\n\017ExplosionNormal\020\001\022\021",
      "\n\rRadial_Splash\020\002\022\020\n\014Enemy_Splash\020\003\022\014\n\010L" +
      "ockdown\020\004\022\023\n\017Nuclear_Missile\020\005\022\014\n\010Parasi" +
      "te\020\006\022\016\n\nBroodlings\020\007\022\021\n\rEMP_Shockwave\020\010\022" +
      "\r\n\tIrradiate\020\t\022\013\n\007Ensnare\020\n\022\n\n\006Plague\020\013\022" +
      "\020\n\014Stasis_Field\020\014\022\016\n\nDark_Swarm\020\r\022\013\n\007Con" +
      "sume\020\016\022\016\n\nYamato_Gun\020\017\022\017\n\013Restoration\020\020\022" +
      "\022\n\016Disruption_Web\020\021\022\022\n\016Corrosive_Acid\020\022\022" +
      "\020\n\014Mind_Control\020\023\022\014\n\010Feedback\020\024\022\021\n\rOptic" +
      "al_Flare\020\025\022\r\n\tMaelstrom\020\026\022\016\n\nAir_Splash\020" +
      "\030\022\024\n\020ExplosionUnknown\020\031*\302\006\n\nBulletType\022\t",
      "\n\005Melee\020\000\022\026\n\021Fusion_Cutter_Hit\020\215\001\022\024\n\017Gau" +
      "ss_Rifle_Hit\020\216\001\022\034\n\027C_10_Canister_Rifle_H" +
      "it\020\217\001\022\024\n\017Gemini_Missiles\020\220\001\022\032\n\025Fragmenta" +
      "tion_Grenade\020\221\001\022\025\n\020Longbolt_Missile\020\222\001\022\032" +
      "\n\025ATS_ATA_Laser_Battery\020\224\001\022\021\n\014Burst_Lase" +
      "rs\020\225\001\022\035\n\030Arclite_Shock_Cannon_Hit\020\226\001\022\020\n\013" +
      "EMP_Missile\020\227\001\022\035\n\030Dual_Photon_Blasters_H" +
      "it\020\230\001\022\026\n\021Particle_Beam_Hit\020\231\001\022\030\n\023Anti_Ma" +
      "tter_Missile\020\232\001\022\021\n\014Pulse_Cannon\020\233\001\022\032\n\025Ps" +
      "ionic_Shockwave_Hit\020\234\001\022\022\n\rPsionic_Storm\020",
      "\235\001\022\026\n\021Yamato_Gun_Bullet\020\236\001\022\024\n\017Phase_Disr" +
      "uptor\020\237\001\022\033\n\026STA_STS_Cannon_Overlay\020\240\001\022\033\n" +
      "\026Sunken_Colony_Tentacle\020\241\001\022\017\n\nAcid_Spore" +
      "\020\243\001\022\017\n\nGlave_Wurm\020\245\001\022\022\n\rSeeker_Spores\020\246\001" +
      "\022\030\n\023Queen_Spell_Carrier\020\247\001\022\021\n\014Plague_Clo" +
      "ud\020\250\001\022\022\n\rConsumeBullet\020\251\001\022\025\n\020Needle_Spin" +
      "e_Hit\020\253\001\022\016\n\tInvisible\020\254\001\022\032\n\025Optical_Flar" +
      "e_Grenade\020\311\001\022\021\n\014Halo_Rockets\020\312\001\022\030\n\023Subte" +
      "rranean_Spines\020\313\001\022\030\n\023Corrosive_Acid_Shot" +
      "\020\314\001\022\022\n\rNeutron_Flare\020\316\001\022\017\n\nNoneBullet\020\321\001",
      "\022\022\n\rUnknownBullet\020\322\001B(\n\030org.bwapi.proxy." +
      "messagesB\014GameMessages"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
      new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
        public com.google.protobuf.ExtensionRegistry assignDescriptors(
            com.google.protobuf.Descriptors.FileDescriptor root) {
          descriptor = root;
          internal_static_messages_UnitId_descriptor =
            getDescriptor().getMessageTypes().get(0);
          internal_static_messages_UnitId_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_messages_UnitId_descriptor,
              new java.lang.String[] { "Id", });
          internal_static_messages_UnitType_descriptor =
            getDescriptor().getMessageTypes().get(1);
          internal_static_messages_UnitType_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_messages_UnitType_descriptor,
              new java.lang.String[] { "Id", });
          internal_static_messages_UnitTypeData_descriptor =
            getDescriptor().getMessageTypes().get(2);
          internal_static_messages_UnitTypeData_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_messages_UnitTypeData_descriptor,
              new java.lang.String[] { "Id", "Name", "Sublabel", "Race", "WhatBuildsType", "WhatBuildsNumber", "RequiredUnits", "RequiredTech", "Abilities", "Upgrades", "ArmorUpgrade", "MaxHitPoints", "MaxShields", "MaxEnergy", "Armor", "MineralPrice", "GasPrice", "BuildTime", "SupplyRequired", "SupplyProvided", "SpaceRequired", "SpaceProvided", "BuildScore", "DestroyScore", "Size", "TileWidth", "TileHeight", "DimensionLeft", "DimensionUp", "DimensionRight", "DimensionDown", "SeekRange", "SightRange", "GroundWeapon", "MaxGroundHits", "AirWeapon", "MaxAirHits", "TopSpeed", "Acceleration", "HaltDistance", "TurnRadius", "CanProduce", "CanAttack", "CanMove", "IsFlyer", "RegeneratesHP", "IsSpellcaster", "HasPermanentCloak", "IsInvincible", "IsOrganic", "IsMechanical", "IsRobotic", "IsDetector", "IsResourceContainer", "IsResourceDepot", "IsRefinery", "IsWorker", "RequiresPsi", "RequiresCreep", "IsTwoUnitsInOneEgg", "IsBurrowable", "IsCloakable", "IsBuilding", "IsAddon", "IsFlyingBuilding", "IsNeutral", });
          internal_static_messages_UpgradeTypeData_descriptor =
            getDescriptor().getMessageTypes().get(3);
          internal_static_messages_UpgradeTypeData_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_messages_UpgradeTypeData_descriptor,
              new java.lang.String[] { "Id", "Name", "Race", "MineralPriceBase", "MineralPriceFactor", "GasPriceBase", "GasPriceFactor", "UpgradeTimeBase", "UpgradeTimeFactor", "MaxRepeats", "WhatUpgrades", "WhatUses", });
          internal_static_messages_Unit_descriptor =
            getDescriptor().getMessageTypes().get(4);
          internal_static_messages_Unit_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_messages_Unit_descriptor,
              new java.lang.String[] { "TheID", "Player", "Type", "InitialType", "HitPoints", "InitialHitPoints", "Shields", "Energy", "Resources", "ResourceGroup", "InitialResources", "KillCount", "GroundWeaponCooldown", "AirWeaponCooldown", "SpellCooldown", "DefenseMatrixPoints", "DefenseMatrixTimer", "EnsnareTimer", "IrradiateTimer", "LockdownTimer", "MaelstromTimer", "PlagueTimer", "RemoveTimer", "StasisTimer", "StimTimer", "Position", "InitialPosition", "TilePosition", "InitialTilePosition", "Angle", "VelocityX", "VelocityY", "Target", "TargetPosition", "Order", "OrderTarget", "OrderTimer", "SecondaryOrder", "BuildUnit", "RemainingBuildTime", "RemainingTrainTime", "TrainingQueue", "Transport", "LoadedUnits", "InterceptorCount", "ScarabCount", "SpiderMineCount", "Tech", "Upgrade", "RemainingResearchTime", "RemainingUpgradeTime", "RallyPosition", "RallyUnit", "Addon", "Carrier", "Interceptors", "NydusExit", "Exists", "HasNuke", "Accelerating", "BeingConstructed", "BeingHealed", "Blind", "Braking", "Burrowed", "CarryingGas", "CarryingMinerals", "Cloaked", "Completed", "Constructing", "DefenseMatrixed", "Ensnared", "Following", "GatheringGas", "GatheringMinerals", "Hallucination", "Idle", "Irradiated", "Lifted", "Loaded", "LockedDown", "Maelstrommed", "Morphing", "Moving", "Parasited", "Patrolling", "Plagued", "Repairing", "Researching", "Selected", "Sieged", "StartingAttack", "Stasised", "Stimmed", "Training", "UnderStorm", "UnderAttack", "UnderDarkSwarm", "Unpowered", "Upgrading", "Visible", "BeingGathered", "Larvae", "Hatchery", "BuildType", "Detected", "Attacking", "AttackFrame", "Stuck", });
          internal_static_messages_RaceData_descriptor =
            getDescriptor().getMessageTypes().get(5);
          internal_static_messages_RaceData_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_messages_RaceData_descriptor,
              new java.lang.String[] { "Id", "Name", "Worker", "Center", "Refinery", "Transport", "SupplyProvider", });
          internal_static_messages_PlayerStatus_descriptor =
            getDescriptor().getMessageTypes().get(6);
          internal_static_messages_PlayerStatus_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_messages_PlayerStatus_descriptor,
              new java.lang.String[] { "Id", "Stance", "OwnerId", });
          internal_static_messages_UnitTypeIntPair_descriptor =
            getDescriptor().getMessageTypes().get(7);
          internal_static_messages_UnitTypeIntPair_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_messages_UnitTypeIntPair_descriptor,
              new java.lang.String[] { "Type", "Count", });
          internal_static_messages_Player_descriptor =
            getDescriptor().getMessageTypes().get(8);
          internal_static_messages_Player_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_messages_Player_descriptor,
              new java.lang.String[] { "Id", "Name", "Units", "Race", "Stances", "Neutral", "StartLocation", "LeftGame", "Minerals", "Gas", "CumulativeMinerals", "CumulativeGas", "SupplyTotal", "SupplyUsed", "AllUnitCount", "CompletedUnitCount", "IncompleteUnitCount", "DeadUnitCount", "KilledUnitCount", "UpgradeLevels", "ResearchedTechs", "Researching", "Upgrading", "Self", "Victorious", "Defeated", });
          internal_static_messages_UpgradeLevel_descriptor =
            getDescriptor().getMessageTypes().get(9);
          internal_static_messages_UpgradeLevel_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_messages_UpgradeLevel_descriptor,
              new java.lang.String[] { "Type", "Level", });
          internal_static_messages_TechType_descriptor =
            getDescriptor().getMessageTypes().get(10);
          internal_static_messages_TechType_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_messages_TechType_descriptor,
              new java.lang.String[] { "Id", });
          internal_static_messages_UpgradeType_descriptor =
            getDescriptor().getMessageTypes().get(11);
          internal_static_messages_UpgradeType_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_messages_UpgradeType_descriptor,
              new java.lang.String[] { "Id", });
          internal_static_messages_TechTypeData_descriptor =
            getDescriptor().getMessageTypes().get(12);
          internal_static_messages_TechTypeData_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_messages_TechTypeData_descriptor,
              new java.lang.String[] { "Id", "Name", "Race", "MineralPrice", "GasPrice", "ResearchTime", "EnergyUsed", "WhatResearches", "Weapon", "WhatUses", });
          internal_static_messages_WeaponType_descriptor =
            getDescriptor().getMessageTypes().get(13);
          internal_static_messages_WeaponType_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_messages_WeaponType_descriptor,
              new java.lang.String[] { "Id", });
          internal_static_messages_WeaponTypeData_descriptor =
            getDescriptor().getMessageTypes().get(14);
          internal_static_messages_WeaponTypeData_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_messages_WeaponTypeData_descriptor,
              new java.lang.String[] { "Id", "Name", "Tech", "WhatUses", "DamageAmount", "DamageBonus", "DamageCooldown", "DamageFactor", "UpgradeType", "DamageType", "ExplosionType", "MinRange", "MaxRange", "InnerSplashRadius", "MedianSplashRadius", "OuterSplashRadius", "TargetsAir", "TargetsGround", "TargetsMechanical", "TargetsOrganic", "TargetsNonBuilding", "TargetsNonRobotic", "TargetsTerrain", "TargetsOrgOrMech", "TargetsOwn", });
          internal_static_messages_StaticGameData_descriptor =
            getDescriptor().getMessageTypes().get(15);
          internal_static_messages_StaticGameData_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_messages_StaticGameData_descriptor,
              new java.lang.String[] { "StaticMinerals", "StaticGeysers", "StaticNeutralUnits", "MapWidth", "MapHeight", "MapFilename", "MapName", "MapHash", "Walkable", "Buildable", "GroundHeight", "UnitTypes", "Weapons", "Upgrades", "Techs", "Colors", "Races", "StartLocations", });
          internal_static_messages_Bullet_descriptor =
            getDescriptor().getMessageTypes().get(16);
          internal_static_messages_Bullet_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_messages_Bullet_descriptor,
              new java.lang.String[] { "Id", "Player", "Type", "Source", "Position", "Angle", "VelocityX", "VelocityY", "Target", "TargetPosition", "RemoveTimer", "Exists", "IsVisible", });
          return null;
        }
      }