3  websocket/snake/SnakeTimerlogLorg/apache/juli/logging/Log;   java/lang/Object()V  snakes(Ljava/util/concurrent/ConcurrentHashMap;  &java/util/concurrent/ConcurrentHashMapsize()I    startTimer  websocket/snake/SnakegetId !" #$java/lang/IntegervalueOf(I)Ljava/lang/Integer; & '(put8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; * +,values()Ljava/util/Collection; ./0 12java/util/CollectionsunmodifiableCollection.(Ljava/util/Collection;)Ljava/util/Collection; 4 56remove&(Ljava/lang/Object;)Ljava/lang/Object; 8 9  stopTimer;java/lang/StringBuilder : > ?, getSnakes ABC DEjava/util/Collectioniterator()Ljava/util/Iterator; GHI JKjava/util/IteratorhasNext()Z GM NOnext()Ljava/lang/Object; Q RSupdate(Ljava/util/Collection;)V U VWgetLocationsJson()Ljava/lang/String; :Y Z[append-(Ljava/lang/String;)Ljava/lang/StringBuilder; :] Z^(C)Ljava/lang/StringBuilder;`!{"type": "update", "data" : [%s]} :b cWtoString efg hijava/lang/Stringformat9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; k lm broadcast(Ljava/lang/String;)V o pm sendMessagerjava/lang/IllegalStateExceptiontjava/util/Timer vwx yWjava/lang/Class getSimpleName{ Timer s} m   gameTimerLjava/util/Timer;websocket/snake/SnakeTimer$1 d s scheduleAtFixedRate(Ljava/util/TimerTask;JJ)V s cancel  "org/apache/juli/logging/LogFactorygetLog0(Ljava/lang/Class;)Lorg/apache/juli/logging/Log;   TICK_DELAYJ ConstantValue SignatureTLjava/util/concurrent/ConcurrentHashMap;CodeLineNumberTableLocalVariableTablethisLwebsocket/snake/SnakeTimer;addSnake(Lwebsocket/snake/Snake;)VsnakeLwebsocket/snake/Snake; StackMapTable1()Ljava/util/Collection; removeSnaketickLjava/util/Iterator;sbLjava/lang/StringBuilder;LocalVariableTypeTable-Ljava/util/Iterator;messageLjava/lang/String; access$000()Lorg/apache/juli/logging/Log; SourceFileSnakeTimer.java InnerClasses!   /* ,[  **%W- . 01  ?," )-5,Z *3W 7:;<>  [:Y