Java StarLogo 2.0 english `turtle` breeds [industries pollution fish currents industry-spawn-sites fishermen] turtles-own [vileness [best nice ok bad worst] hunger_level health moves_left acted_today saved_health state extra_damage_from_movement extra_speed extra_damage_from_entering_pollution maximum_damage_from_pollution invincibility [yes no]] ;;; INDUSTRIAL FUNCTIONS to init_industry ; This happens when a new industry is created by card setsh industry-shape case random 5 [ 0 [set vileness best] 1 [set vileness nice] 2 [set vileness ok] 3 [set vileness bad] 4 [set vileness worst] ] set breed industries colorize end to make_pollution if breed not= industries [stop] if count-pollution >= pollution_cutoff [stop] let [:sum 0] dolist [:i [-1 0 1]] [dolist [:j [-1 0 1]] [if sea_color = pc-at :i :j [set :sum :sum + 1]]] if :sum = 0 [stop] ; This industry is inland --- what do I do? redirect_pollution spit_pollution end to redirect_pollution seth 45 * random 8; if pc-ahead not= sea_color [redirect_pollution] end to spit_pollution hatch [setbreed pollution setsh pollution-shape setc pollution_color fd 1] end to pollution_cutoff case vileness [ best [output best_pollution_cutoff] nice [output nice_pollution_cutoff] ok [output ok_pollution_cutoff] bad [output bad_pollution_cutoff] worst [output worst_pollution_cutoff] ] output 0 end to colorize if breed not= industries [stop] case vileness [ best [setc best_color] nice [setc nice_color] ok [setc ok_color] bad [setc bad_color] worst [setc worst_color] ] end ;;; POLLUTION FUNCTIONS to init_pollution set breed pollution setc pollution_color setsh pollution-shape end to step_pollution if breed not= pollution [stop] current_step_pollution shift_direction fd 1 end to current_step_pollution if count-currents-here > 0 [ seth heading-of one-of-currents-here fd 1 ] end to shift_direction seth random 360 if pc-ahead not= sea_color [shift_direction] end to vanish_pollution if breed not= pollution [stop] if count_neighbors = 0 [if pollution_vanish_probability > random 100 [die]] end to count_neighbors let [:sum 0] dolist [:i [-1 0 1]] [dolist [:j [-1 0 1]] [set :sum :sum + count-pollution-at :i :j]] output :sum - 1 ;Because I counted myself end ;;; FISH FUNCTIONS to take_damage :dam if breed not= fish [stop] if (:dam >= 0) and (invincibility = yes) [stop] set health health - :dam if health < 1 [set health 1] if health > fish_max_health [set health fish_max_health] end to take_pollution_damage if breed not= fish [stop] repeat count-pollution-here [ let [:damage min health / 2 maximum_damage_from_pollution] take_damage :damage ] end to eat if breed not= fish [stop] if who not= current_player [stop] if pc = river_color [stop] ; Can't eat on the first turn. if acted_today = 1 [stop] if count-pollution-here > 0 [stop] ; Can't eat while inside pollution set acted_today 1 let [:sum 0] dolist [:i [-1 0 1]] [dolist [:j [-1 0 1]] [if edible? :i :j [set :sum :sum + 1]]] set health health + fish_feed_rate * :sum if health > fish_max_health [set health fish_max_health] set state "Ate this turn." end to edible? :dx :dy output (sea_color = pc-at :dx :dy) and (0 = count-pollution-at :dx :dy) end to start_moving if breed not= fish [stop] if who not= current_player [stop] if acted_today = 1 [stop] set acted_today 1 set moves_left fish_min_speed + extra_speed + random 1 + fish_max_speed - fish_min_speed if pc = river_color [set moves_left fish_max_speed] ; First move is automatically fast set state to-string ["Moves left: " moves_left] end to turn_left if breed not= fish [stop] if who not= current_player [stop] if moves_left <= 0 [stop] lt 45 end to turn_right if breed not= fish [stop] if who not= current_player [stop] if moves_left <= 0 [stop] rt 45 end to step_once if breed not= fish [stop] if who not= current_player [stop] if moves_left <= 0 [stop] if (pc-ahead = land_color) or (pc-ahead = ice_color) [stop] set saved_health health let [:damage 0] if (0 < count-currents-here) or (pc = river_color) [ ifelse (pc = river_color) or (directions_agree heading (heading-of one-of-currents-here)) [ set :damage :damage + damage_from_moving_with_current ] [ if directions_oppose heading (heading-of one-of-currents-here) [ set :damage :damage + damage_from_moving_against_current]] ] take_damage damage_from_moving_no_current + extra_damage_from_movement + :damage set moves_left moves_left - 1 fd 1 ifelse pc = river_color [ land_on_river ] [ ifelse 1 < count-fish-here [ land_onto_fish ] ; These functions are responsible for undoing a move [ land_onto_water ] ; if it would cause too much damage ] set state to-string ["Moves left: " moves_left] if (pc = river_color) and (health >= health_to_win) [set state "Winner!"] ; OK, this is a hack... end to land_on_river take_damage damage_from_moving_against_current if health < health_to_win [unmove stop] if count-industries-here > 0 [unmove stop] win end to win ;show "won" set state "Winner!" ;Hmmmm end to land_onto_water take_damage count-pollution-here * (damage_from_entering_pollution + extra_damage_from_entering_pollution) if count-fishermen-here > 0 [take_damage damage_from_fishermen set hunger_level-of one-of-fishermen-here 0] if health < 1 ;Can't make this move [ unmove ] end to land_onto_fish ;show "stepped onto a fish" ;land_onto_water unmove ; No multifish (selection problems) end to unmove bk 1 set health saved_health set moves_left moves_left + 1 end to done_moving if breed not= fish [stop] if who not= current_player [stop] set moves_left 0 set acted_today 1 ; In case of premature click set state "Moved this turn." if (pc = river_color) and (health >= health_to_win) [set state "Winner!"] ; OK, this is a hack too. end ;;; FISHERMAN FUNCTIONS to init_fisherman set breed fishermen set hunger_level 0 setsh fisherman-shape setc spreading_fisherman_color spread setc fisherman_color end to spread if breed not= fishermen [stop] if count-fishermen-here <= 1 [stop] seth 90 * random 4 if sea_color not= pc-ahead [spread stop] fd 1 spread end to do_turn if breed not= fishermen [stop] set hunger_level 1 + hunger_level if hunger_level > fisherman_max_hunger_level [ if fisherman_hunger_quit_prob > random 100 [die]] if count-pollution-here > 0 [die] end ;;; UTILITIES to directions_agree :dir1 :dir2 let [:diff (:dir1 mod 360) - (:dir2 mod 360)] let [:diffmod (:diff + 720) mod 360] output (:diffmod <= 22.5) or (:diffmod >= 360 - 22.5) end to directions_oppose :dir1 :dir2 output directions_agree :dir1 (:dir2 - 180) end to shapeify if breed = fish [setsh fish-shape] if breed = industry-spawn-sites [setsh industry-shape] if breed = industries [setsh industry-shape] if breed = pollution [setsh pollution-shape] if breed = currents [setsh current-shape] if breed = fishermen [setsh fisherman-shape] end to produce :i dotimes [:k :i] [hatch [fd :k]] end `observer` globals [messages turn_number sea_color land_color river_color ice_color current_color pollution_color pollution_speed pollution_vanish_probability best_pollution_cutoff best_color nice_pollution_cutoff nice_color ok_pollution_cutoff ok_color bad_pollution_cutoff bad_color worst_pollution_cutoff worst_color current_player players color_names colors;player_1 player_2 player_3 player_4 player_5 player_6 initial_health health_to_win fish_max_health fish_feed_rate max_damage_from_pollution damage_from_moving_no_current damage_from_moving_with_current damage_from_moving_against_current damage_from_entering_pollution damage_from_fishermen fish_min_speed fish_max_speed spreading_fisherman_color fisherman_color fisherman_max_hunger_level fisherman_hunger_quit_prob ;power_of_ ] to startup init_values set messages ["Welcome to The Game of Fish and Men, Starlogo Edition!"] end to add_message :message set messages se messages :message end to init_values set sea_color blue - 2 ; This should be the same as the actual color of the sea on the board set land_color lime + 2 ; This should be the same as the actual color of the land on the board set river_color cyan + 1 ; This should be the same as the actual color of the rivers on the board set ice_color cyan + 4 ; This should be the same as the actual color of the polar ice on the board set current_color river_color set pollution_color lime set pollution_speed 3 set pollution_vanish_probability 50 ; Percent set best_pollution_cutoff 10 set best_color blue set nice_pollution_cutoff 20 set nice_color green - 1 set ok_pollution_cutoff 30 set ok_color yellow set bad_pollution_cutoff 40 set bad_color red set worst_pollution_cutoff 50 set worst_color black set current_player -1 ; This gets set automatically at need ;set players [] ; Will be populated by the make_players command set color_names ["Yellow" "Purple" "Red" "Green" "Brown" "Orange"] set colors to-list [yellow purple red green brown orange + 1] set initial_health 20 set health_to_win 80 set fish_max_health 100 set fish_feed_rate 2 ; Per clean neighbor set max_damage_from_pollution 10 set damage_from_moving_no_current 1 ; Per step set damage_from_moving_with_current -1 ; Cumulative with no_current, per step set damage_from_moving_against_current 1 ; Cumulative with no_current, per step set damage_from_entering_pollution 2 ; Per piece of pollution set damage_from_fishermen 5 set fish_min_speed 1 set fish_max_speed 6 set spreading_fisherman_color red set fisherman_color river_color set fisherman_max_hunger_level 3 ; For how many turns he will last without quitting set fisherman_hunger_quit_prob 50 ; Percent aesthetics add_message ["Parameters have been reset."] end to new_game set turn_number 0 ask-pollution [die] ask-fish [die] ask-industries [die] ask-industry-spawn-sites [hatch [setbreed industries st]] ask-fishermen [die] aesthetics set players [] make_players aesthetics add_message "New game started." end to make_players dotimes [:i num_players] [create-fish-and-do 1 [setsh fish-shape set health initial_health set extra_damage_from_movement 0 set extra_speed 0 set extra_damage_from_entering_pollution 0 set maximum_damage_from_pollution max_damage_from_pollution set invincibility no setc (item :i colors) setxy (:i + 5) 0 set state "Newly created." set players (lput who players)]] end ;;; PHASE FUNCTIONS to begin_fish_move_phase set turn_number turn_number + 1 ask-fish [ set acted_today 0 set moves_left 0 set state "Not moved yet." set extra_damage_from_movement 0 set extra_speed 0 set extra_damage_from_entering_pollution 0 set maximum_damage_from_pollution max_damage_from_pollution set invincibility no if count-fishermen-here > 0 [take_damage damage_from_fishermen set hunger_level-of one-of-fishermen-here 0] ] ask-fishermen [do_turn] select_current_player add_message "Fish movement started." ask-fish [fd 1 bk 1] ; So that they show up end to make_all_pollution ask-industries [make_pollution] add_message "Pollution made." ask-fish [fd 1 bk 1] ; So that they show up end to move_all_pollution repeat pollution_speed [ ask-pollution [step_pollution] ask-fish [take_pollution_damage] ] add_message "Pollution moved." ask-fish [fd 1 bk 1] ; So that they show up end to vanish_all_pollution ask-pollution [vanish_pollution] add_message "Pollution vanished." end ;;; UTILITIES to select_current_player ifelse 0 < sum-of-fish [1 - acted_today] ; Still fish left [ set current_player one-of-fish if 1 = acted_today-of current_player [select_current_player] ] [ set current_player -1 ] end to find_whose_turn if current_player = -1 [output "No one,"] dotimes [:i length players] [ if current_player = (item :i players) [output to-string [ (item :i color_names) " player,"]]] output "I don't know who," end to descriptor :player_num ifelse :player_num > length players [output "Does not exist."] [ ifelse :player_num = -1 [output "No Current Player."] [ output to-string [health-of (item :player_num players) " health. " state-of (item :player_num players)]]] end to find_num :who dotimes [:i length players] [ if :who = (item :i players) [output :i]] output -1 end to aesthetics ask-industries [colorize setsh industry-shape st] ask-pollution [setc pollution_color setsh pollution-shape st] ask-currents [setc current_color setsh current-shape st] ask-industry-spawn-sites [setsh industry-shape setc white ht] dotimes [:i length players] [ ask-fish [if who = (item :i players) [setsh fish-shape setc (item :i colors) st]]] ask-fish [fd 1 bk 1] ; So that they show up end ;;; CARD FUNCTIONS to catch_click wait .5 wait-until [mouse-down?] output to-list [mouse-xcor mouse-ycor] end to catch_fish let [:cors catch_click] let [:xcor (item 1 :cors) :ycor (item 2 :cors)] ifelse 0 < count-fish-at :xcor :ycor [ output one-of-fish-at :xcor :ycor ] [ output -1 ] end to catch_industry let [:cors catch_click] let [:xcor (item 1 :cors) :ycor (item 2 :cors)] ifelse 0 < count-industries-at :xcor :ycor [ output one-of-industries-at :xcor :ycor ] [ output -1 ] end to do_economic_collapse add_message "Please selcet an industry for Economic Collapse." let [:industry catch_industry] if :industry = -1 [add_message "There is no industry there!" stop] ask-industries-with [who = :industry] [die] add_message "Economy Collapsed." end to do_economic_growth add_message "Please select an unindustrialized coast for Economic Growth." let [:cors catch_click] let [:xcor (item 1 :cors) :ycor (item 2 :cors)] let [:sea-about 0 :col pc-at :xcor :ycor] dolist [:i [-1 0 1]] [dolist [:j [-1 0 1]] [ if sea_color = pc-at (:xcor + :i) (:ycor + :j) [set :sea-about :sea-about + 1]]] if :col = sea_color [add_message "That is not land!" stop] if :sea-about = 0 [add_message "That land is not coastal!" stop] if 0 < count-industries-at :xcor :ycor [add_message "That coast already has an industry!" stop] ask-patch-at :xcor :ycor [ sprout [init_industry]] add_message "Economy Grown." end to do_dotcom_boom add_message "DotComs on the Rise. Please click on a land square to confirm." let [:cors catch_click] let [:xcor (item 1 :cors) :ycor (item 2 :cors)] if sea_color = pc-at :xcor :ycor [add_message "DotCom Boom Aborted." stop] ask-fishermen [if 50 > random 100 [die]] add_message "DotComs Booming. Fishermen Take to Programming in Droves." end to do_dotcom_bust add_message "DotComs on the Fall. Please click on a sea square to confirm." let [:cors catch_click] let [:xcor (item 1 :cors) :ycor (item 2 :cors)] if sea_color not= pc-at :xcor :ycor [add_message "DotCom Bust Aborted." stop] ask-patches [ if (pc = sea_color) and ;(count-fishermen-here = 0) and (5 > random 100) [sprout [init_fisherman]] ] add_message "DotComs Busting. Programmers Take to Fishing in Droves." end to do_attack_of_the_environmentalists add_message "Please select a sea square for Attack of the Environmentalists." let [:cors catch_click] let [:xcor (item 1 :cors) :ycor (item 2 :cors)] if sea_color not= pc-at :xcor :ycor [add_message "That is not a sea square!" stop] ask-pollution [if (xcor = :xcor) and (:ycor = ycor) [die]] add_message "The Environmentalists Attacked." end to do_oil_spill add_message "Please select a fishless sea square for Oil Spill." let [:cors catch_click] let [:xcor (item 1 :cors) :ycor (item 2 :cors)] if sea_color not= pc-at :xcor :ycor [add_message "That is not a sea square!" stop] if 0 < count-fish-at :xcor :ycor [add_message "That sea square contains fish!" stop] ask-patch-at :xcor :ycor [repeat 3 [sprout [init_pollution]]] add_message "Oil Spilled." end to do_flowering_of_flounder add_message "Please select a fish for Flowering of Flounder." let [:fish catch_fish] if :fish = -1 [add_message "There is no fish there!" stop] ask-fish-with [who = :fish] [take_damage -20] add_message "Flounder Flowered." end to do_abundant_seaweed add_message "Please select a fish for Abundant Seaweed." let [:fish catch_fish] if :fish = -1 [add_message "There is no fish there!" stop] ask-fish-with [who = :fish] [take_damage -10] add_message "Seaweed Abounded." end to do_shark_attack add_message "Please select a sea square for the center of a Shark Attack." let [:cors catch_click] let [:xcor (item 1 :cors) :ycor (item 2 :cors)] if sea_color not= pc-at :xcor :ycor [add_message "That is not a sea square!" stop] dolist [:i [-1 0 1]] [dolist [:j [-1 0 1]] [ if sea_color not= pc-at (:xcor + :i) (:ycor + :j) [add_message "That 3 by 3 square is not all-sea!" stop]]] dolist [:i [-1 0 1]] [dolist [:j [-1 0 1]] [ if 0 < count-fish-at (:xcor + :i) (:ycor + :j) [ ask-turtle one-of-fish-at (:xcor + :i) (:ycor + :j) [take_damage 10]] if 0 < count-pollution-at (:xcor + :i) (:ycor + :j) [ ask-turtle one-of-pollution-at (:xcor + :i) (:ycor + :j) [die]] ]] add_message "Sharks Fed." end to do_active_fishing add_message "Please select a sea square for the epicenter of Active Fishing." let [:cors catch_click] let [:xcor (item 1 :cors) :ycor (item 2 :cors)] if sea_color not= pc-at :xcor :ycor [add_message "That is not a sea square!" stop] ; dolist [:i [-1 0 1]] [dolist [:j [-1 0 1]] ; [ if sea_color not= pc-at (:xcor + :i) (:ycor + :j) [add_message "That 3 by 3 square is not all-sea!" stop]]] ; dolist [:i [-1 0 1]] [dolist [:j [-1 0 1]] ; [ ask-patch-at (:xcor + :i) (:ycor + :j) [sprout [init_fisherman]]]] if (sea_color not= pc-at :xcor + 1 :ycor) and (sea_color not= pc-at :xcor - 1 :ycor) and (sea_color not= pc-at :xcor :ycor + 1) and (sea_color not= pc-at :xcor :ycor - 1) [ add_message "That square is land-locked!" stop] repeat 10 [ask-patch-at :xcor :ycor [sprout [init_fisherman]]] add_message "Fishing Acted." end to do_inordinate_fishing add_message "Please select a sea square for the epicenter of Inordinate Fishing." let [:cors catch_click] let [:xcor (item 1 :cors) :ycor (item 2 :cors)] if sea_color not= pc-at :xcor :ycor [add_message "That is not a sea square!" stop] ;dolist [:i [-2 -1 0 1 2]] [dolist [:j [-2 -1 0 1 2]] ; [ if sea_color not= pc-at (:xcor + :i) (:ycor + :j) [add_message "That 5 by 5 square is not all-sea!" stop]]] ;dolist [:i [-2 -1 0 1 2]] [dolist [:j [-2 -1 0 1 2]] ; [ ask-patch-at (:xcor + :i) (:ycor + :j) [sprout [init_fisherman]]]] if (sea_color not= pc-at :xcor + 1 :ycor) and (sea_color not= pc-at :xcor - 1 :ycor) and (sea_color not= pc-at :xcor :ycor + 1) and (sea_color not= pc-at :xcor :ycor - 1) [ add_message "That square is land-locked!" stop] repeat 25 [ask-patch-at :xcor :ycor [sprout [init_fisherman]]] add_message "Fishing Inordinated." end ;to do_fins_of_iron ; add_message "Please select a fish for Fins of Iron." ; let [:fish catch_fish] ; if :fish = -1 [add_message "There is no fish there!" stop] ; ask-fish-with [who = :fish] [set acted_today 1] ; add_message "Fins Ironed." ;end to do_fins_of_steel add_message "Please select a fish for Fins of Steel." let [:fish catch_fish] if :fish = -1 [add_message "There is no fish there!" stop] ask-fish-with [who = :fish] [set extra_damage_from_movement -1 * damage_from_moving_no_current] add_message "Fins Steeled." end to do_fins_of_rubber add_message "Please select a fish for Fins of Rubber." let [:fish catch_fish] if :fish = -1 [add_message "There is no fish there!" stop] ask-fish-with [who = :fish] [set extra_speed 3] add_message "Fins Rubbed." end to do_scales_of_protection add_message "Please select a fish for Scales of Protection." let [:fish catch_fish] if :fish = -1 [add_message "There is no fish there!" stop] ask-fish-with [who = :fish] [set extra_damage_from_entering_pollution -1 * damage_from_entering_pollution] add_message "Scales Protected." end to do_scales_of_porousness add_message "Please select a fish for Scales of Porousness." let [:fish catch_fish] if :fish = -1 [add_message "There is no fish there!" stop] ask-fish-with [who = :fish] [set extra_damage_from_entering_pollution damage_from_entering_pollution] add_message "Scales Poroused." end to do_evasion add_message "Please select a fish for Evasion." let [:fish catch_fish] if :fish = -1 [add_message "There is no fish there!" stop] ask-fish-with [who = :fish] [set maximum_damage_from_pollution 2] add_message "Fish Evaded." end to do_attraction add_message "Please select a fish for Attraction." let [:fish catch_fish] if :fish = -1 [add_message "There is no fish there!" stop] let [:num count-fishermen] ask-fishermen [die] repeat :num [ask-turtle :fish [hatch [init_fisherman]]] add_message "Fish Attracted." end to do_invincibility add_message "Please select a fish for Invincibility." let [:fish catch_fish] if :fish = -1 [add_message "There is no fish there!" stop] ask-fish-with [who = :fish] [set invincibility yes] add_message "Fish Unvinced." end to do_fish_population_burst add_message "Fertility Drug Release Proposed into the Sea. Please click on a sea square to confirm." let [:cors catch_click] let [:xcor (item 1 :cors) :ycor (item 2 :cors)] if sea_color not= pc-at :xcor :ycor [add_message "Fish Population Burst Aborted." stop] ask-fish [take_damage -1 * health / 4] add_message "Fish Populations Bursted." end to do_fish_plague add_message "Bubonic Plague Spotted in Fish. Please click on a sea square to confirm." let [:cors catch_click] let [:xcor (item 1 :cors) :ycor (item 2 :cors)] if sea_color not= pc-at :xcor :ycor [add_message "Fish Plague Aborted." stop] ask-fish [take_damage health / 4] add_message "Fish Plagued." end to play_card ask-fish [fd 1 bk 1] ; So that they show up case card_to_play [ 1 [do_economic_collapse] 2 [do_economic_growth] 3 [do_dotcom_boom] 4 [do_dotcom_bust] 5 [do_attack_of_the_environmentalists] 6 [do_oil_spill] 7 [do_flowering_of_flounder] 8 [do_abundant_seaweed] 9 [do_shark_attack] 10 [do_active_fishing] 11 [do_inordinate_fishing] 12 [do_fins_of_steel] 13 [do_fins_of_rubber] 14 [do_scales_of_protection] 15 [do_scales_of_porousness] 16 [do_evasion] 17 [do_attraction] 18 [do_invincibility] 19 [do_fish_population_burst] 20 [do_fish_plague] ] ask-fish [fd 1 bk 1] ; So that they show up end `information` `interface` SLCanvas top-left 5 299 SLMonitor top-left 39 163 width-height 128 36 name "World Pollution Level" list-to-run "count-pollution" digits 0 delay 0.5 monitor-number 1 show-name? true whichip 84 onewhichip 85 SLButton turtle-or-observer? turtle top-left 165 198 width-height 60 30 name "Turn Left" line-to-run "turn_left" forever? false button-number 10 show-name? true whichip 71 SLButton turtle-or-observer? turtle top-left 203 198 width-height 68 30 name "Turn Right" line-to-run "turn_right" forever? false button-number 11 show-name? true whichip 72 SLButton turtle-or-observer? turtle top-left 242 198 width-height 73 30 name "Go Forward" line-to-run "step_once" forever? false button-number 12 show-name? true whichip 73 SLButton turtle-or-observer? observer top-left 282 198 width-height 81 30 name "Done Moving" line-to-run "ask-fish[done_moving] select_current_player" forever? false button-number 14 show-name? true whichip 74 SLButton turtle-or-observer? turtle top-left 125 199 width-height 47 30 name "Move" line-to-run "start_moving" forever? false button-number 13 show-name? true whichip 75 SLButton turtle-or-observer? observer top-left 85 199 width-height 40 30 name "Feed" line-to-run "ask-fish[eat] select_current_player" forever? false button-number 5 show-name? true whichip 76 SLMonitor top-left 232 10 width-height 107 36 name "it's your turn!" list-to-run "find_whose_turn" digits 0 delay 0.5 monitor-number 2 show-name? true whichip 86 onewhichip 87 SLMonitor top-left 313 4 width-height 176 36 name "State of Yellow Player" list-to-run "descriptor 1" digits 0 delay 0.5 monitor-number 7 show-name? true whichip 88 onewhichip 89 SLMonitor top-left 355 4 width-height 175 36 name "State of Purple Player" list-to-run "descriptor 2" digits 1 delay 0.5 monitor-number 8 show-name? true whichip 90 onewhichip 91 SLMonitor top-left 437 5 width-height 175 36 name "State of Green Player" list-to-run "descriptor 4" digits 0 delay 0.5 monitor-number 12 show-name? true whichip 92 onewhichip 93 SLMonitor top-left 478 6 width-height 174 36 name "State of Brown Player" list-to-run "descriptor 5" digits 0 delay 0.5 monitor-number 14 show-name? true whichip 94 onewhichip 95 SLMonitor top-left 519 6 width-height 175 36 name "State of Orange Player" list-to-run "descriptor 6" digits 0 delay 0.5 monitor-number 16 show-name? true whichip 96 onewhichip 97 SLMonitor top-left 272 3 width-height 175 36 name "State of Current Player" list-to-run "descriptor find_num current_player" digits 0 delay 0.5 monitor-number 3 show-name? true whichip 98 onewhichip 99 SLMonitor top-left 563 6 width-height 943 36 name "Last Message" list-to-run "item length messages messages" digits 0 delay 0.5 monitor-number 17 show-name? true whichip 100 onewhichip 101 SLMonitor top-left 396 4 width-height 175 36 name "State of Red Player" list-to-run "descriptor 3" digits 0 delay 0.5 monitor-number 9 show-name? true whichip 102 onewhichip 103 SLSlider top-left 5 7 width-height 128 25 name "Number of Players" variable "num_players" min-value 0 max-value 6 current-value 6 slider-number 0 show-name? true SLButton turtle-or-observer? observer top-left 124 10 width-height 91 30 name "Make Pollution" line-to-run "make_all_pollution" forever? false button-number 1 show-name? true whichip 77 SLButton turtle-or-observer? observer top-left 158 11 width-height 92 32 name "Move Pollution" line-to-run "move_all_pollution" forever? false button-number 3 show-name? true whichip 78 SLButton turtle-or-observer? observer top-left 194 10 width-height 98 30 name "Vanish Pollution" line-to-run "vanish_all_pollution" forever? false button-number 4 show-name? true whichip 79 SLButton turtle-or-observer? observer top-left 80 10 width-height 69 32 name "Fish Move" line-to-run "begin_fish_move_phase" forever? false button-number 6 show-name? true whichip 80 SLButton turtle-or-observer? observer top-left 4 189 width-height 103 30 name "Reset Parameters" line-to-run "init_values" forever? false button-number 2 show-name? true whichip 81 SLButton turtle-or-observer? observer top-left 35 8 width-height 66 30 name "New Game" line-to-run "new_game" forever? false button-number 15 show-name? true whichip 82 SLSlider top-left 347 186 width-height 101 25 name "Card to Play" variable "card_to_play" min-value 1 max-value 20 current-value 4 slider-number 1 show-name? true SLButton turtle-or-observer? observer top-left 383 197 width-height 79 32 name "Play Card" line-to-run "play_card" forever? false button-number 16 show-name? true whichip 83 `turtle shapes` H4sIAAAAAAAAAO3d2ZIk133Y4RRISRAEErQsr7SsMm3LiwwZ++JNc8UbB2994dAF AWkoIAIE6MEgFPKFox7UD6C3sFlFdNXMQVfldvbzfRGqHyu7s07+c6p7eobDo+mN nz//5tnzL54evv7sk189/frnT16dHjw5P77+m4+/ef746cBv/fr/vvfr/3v18imM 7Hh6+H+/FjY8duvzYp2/5rUfe7295y99nb1zVDj/j37zbQEAGM8r58e1P0fU0LU/ o6VaN/d15Fr/1usuXX/rdaX+NSx1HbF+HXKta/2x19+77tbriL1urOtYen1z51fY wzR9fwIAAAAAAAAAevCb/x1RJf8mQQfo3OeUvj7z55239/thfvP3NP/a6409f+n7 Ndr8Ke9ljpp/rPdD6jVKz1d6/truR+l7bn7zm9/85je/+c3f+/yl5y19P0rPl3v+ 0vOUvh+lr7/0/GvvR+z7t3d986ve7W9Nr3/9v7755Nl1+9DzNoG2D+XBsZK3qhbq ZPtQABjYK8V/FlFVVdX8nWwfCgAAAAAAAAAdebX4v0VQVVVVVVVVVVVVVVVVVVXV /Z1OGwK9/qunz77+6svL9qGvnPYJtH0oD46nh8feQo+8ne5+3trzI77Nd11/7PO3 Xu/S+7n1eu983PahADCsV86Pe35G2vszV+n1t/6stnX92s8frWvPif161q97/b2v 0dv6sT+/tvX33s8Gzz/YPhQAAAAAAAAAevHq+XHPv9WY697XSH195jf/yPOnXr/0 /Na3vvXTfg9R1Tabeo3ar8/85je/+c1vfvPnn6/1+2N+85s/3fWZ3/zmLzf/3tew vvWtX/X635t+8Pzps19+/vzpZf/Q73W5f+iTN44vde3HW19/h+PpYe97ccn7O8f5 L7r3sXuvt+frrvT6G++f/UOhUnt/76j4955FzH98tKnOY1Tr9w8dvbF+Vou9burr KL1+6ftfYv0X7Tk3xnWV+PWvaf6l9yHWOltnuKe1X3/rZ3n/HewfCgAAwC23/ruG XP+dQ+n1YWSlv/5Krw8jm/v6i/31mHs9AID+pd8/VFXH7d7XKH39peZu9T6kXqP0 fOY3v/nz34fS85S6D6Wv3/ze/49dyy0l167hPuWYv/Svv/nHnv+ekmvXcH9G+PUv cR9Kz1PqPpS+/lvXtFTOtWKt6de//Nyt3ofUa5Sez/zmN7/5c9+H0vOUug8ZrvP7 0x887B/6N1999VeXTUS/f3cT0Sc//Yu7nbP3/K1Kb+JZev0djqeHx96g9yx5g+85 /7EvsrXrLrmmLV/cNa+/8f4t2kR07ms79df+6OszJptoHl9q7vNLs4koeSzbRHSv nX+wGX79JT8jbv2ZsZX1l15HqnVLrP+iPefGuK4Sv/41zb/0PsRaZ+sM97T262/9 LO+/Q4xNRPf+Wbn1P2ub3/wlW5r5x54fAOhf6U28Sq8PIyv99Vd6fRiZTUQBAFoX ZxPR0lL8m4s1Lc385i/Z0sxfdv4Xm+Ne1zCn+c1vfvPnug+l5yl1H0pff6m5a74P 95Rcu4b7lGP+0r/+5h97/ntKrl3D/Rnh17/EfSg9T6n7UPr6b13TUjnXirVmDb/u LbwPcszd2n0wv/nNb/5R5091H0rPU+o+ZLjO355ef/bJp59+/vyyfehv398+9OGf Xf78j156fsuTH0+Pft6t5w+fP/c63+mN826ef+N57PMvn7ey4flzr3fr82958rO/ W/aJK7cPvfdWDj/n1vN7r7fUkuvIef5Wa+7Vvc+fm2fm85ZtHxp+TT58jwi+V2ze 5u/We37lPxW/dR23Xv/Wx/eue+t72Nb1v/P5Kz8+t/7N64k091rVrH/rOlZ+3Po7 17/1e/Tc8ZXrb/09fe3v/bnXXfv9J9Z1zb3+1o/Hmm+p76zz7c9Yl+58/dXXE6y/ X5rtQ7f8seix8/eae/1Y66y1Zv2l92rNLLF/vfeuZ33r17B+aqXWnbuOWx+Ptc7W 9bdex9rXj/2+WPv6e69n5+sdYmwf+iD2n6FbsXiun//xt33871BK34fFf3ZZ++t5 mftGI70vUv0Z8DufH/vvinbOv/XPoEvPT/Z3ZJH/ji3Z/KXn3Hkf5sSa/zuvu/d9 nWn+y3o778Pm6996fqS5L+u19nUQef5bap8/tereB7n/7q3010Wm9/ktu+dPfH5q 5l/Y2PNH+vluL/MvrPkf7yjz35on9ueb/6XGtnreyrpV6esufR9KX2+p+UtfZ+n7 MP86T4KWnmvd9cxZut7yz0/b63U8CXr/82/Zev/yvR+eJLn+udeZ//wni9ZPPf/W 649l8Rw/+78vN/L38dIWz73wPvRibv5R1Dt3nO1DS/8bntJNrdQcpeadE/vfyKxd r7S911/bPKmZP/38e18z5a9Jju/jNc5f2+9juaX6fbE2seY0v/kfa+3Mb/6UrZ35 zZ+ytTP/WPPOGXXukPnHnDtk/jjz13K/tl731vlred/Evv6516nt6yb29bfy80Ku OWq7D6XnyXVfSl9fqftQ+nq+7e9MP/zi6S+ev/mXnzy7bCD6O6eP39xAdK8n/2Pb Sz6ct/V8NjueHl5849x7k6/5gtj6saVrzV1vK701/9z9ifjxRRuIUpdS3ytLfa8O 1821/q11/V4F9GPZBqJaV1N97pLXKrH+Y1Les3vr7p1p7nNyvYdUp2/d+9iLtrz2 lvPn9H5+5vt/iLmBKAC8aPS/Qxt1/lH/DnXUv0Oem7vX+ZfO3dv8a+fuZf6tc/cy PwAAAACtibuBqKqq6ot9UYzXKj1Pyflbug+PGWH+e1KsVXreJXOnvtba5851jbXO XeLaapo79/yx70Pu667l/pS+vlLzl74uVVVVTdet59yT45pLrL9WL+vvZX3rW7/d 9bdeR6x1a1l/6XWkWjfR+r87vfHs87/+7OUdRH/39AnJdhC9Ze//Usb/4iaZ4+nh sXfQvXfpvXfeknf3mvPufXUsOa/23ptx7h5E+rgdRDtS+ntk6e/Vpf9Xmv7XokB7 7CBae5d+7otKrx/jOtaec0/KdZesf+86Yv5aLb3OkutrXZ372Iu2vPaW8+f0fn7m +3+wgygAtRj979DM/+TRjmL0v1MefSfG0XekHH1nTjuUAgAAABCXHURVVTVO977G Y2qYK/Xc5r89f833IfZrLtHj3GvmL3kfUq+xRQ9z75k/5X3INXeM+bfch9zz5byP I8+/9D6Uvr7S96H0damqqpbo1nPuyXHNJdZfq5f197K+9a3f7vpbryPWurWsv/Q6 Uq2baP1Xp9e+/ptPvrxsHnr+RwGbNw998pO1Z7x83qUfLPu8ueM3X3+mW8+L1a3X Pye8r7fu8wuOp4etb9JYb+65z5s7vvebSClbr3/tr8/MeUNsHrr2aynVunPfA3Ov n/o6Yt/3td8b964f+3t7qnXX/h6Xat1Wfy9u5WeAVOunvp6tSq37neuY+T6Z/Pvo zPfr/d/PXzk/pv4DTumGSq2b+zqWauW+r73+veuvFWv9vWLdr9RKrVt6/Vrue673 QervX7HXvXUdWz8e+/te5O9zB5uH0rpcfyaoTe4/E9Vi9Z8NM/3dVy7mX9kP7rc1 5r/f3tU+f+q/s6t1/lr+rja10n9nbf5t522Va96l8+T+7wRKzx/Oker7yt7Xb6Vz Sl9frd9Xemmo9PWYP09vKX1d5k/bpUpfZ+n5Q6WvO9ecc0rPVWruW0abNzT6/KG9 f5/Y/N9Hmv9uU59fWvvz2zxU2++c0tdXau5e59+r9PWbv+z8rd8P8/c1T2/zr9XL /LHUPn8u5q9j/tL2Xk/r8z/Yez2tzZuK+cec+8Gocz8YdX7v+zHnH/33vdZ/7lkq 9s+9rdyHVHPXej9yz2v+dfcj9/mla/77Up9fuo3P/3vT60+//N9/+8unl+1Df++0 T+Bl+9An//35+TKe/PSzRQ09nD9n6fl71w8/b+v5seafva8L79/N13349dvY6dvt Q9e69TZf+uUwd3zv+nOvl3r9td8G5s7f+7ozztuHfuc98tO/iNo5ta2/V2/rl77/ ta2/9vp6W7/0/a/t63/396nG1999vZWtP1oftg9NLdPPNNHWj/1HyNbX36u39dde X2/rr9X6+mvPT329ta0f+3pLrz+Yw2n70NmfGSL/2Tz3n/XnmN/8d1vJnKXmL838 5r/X3a9v/rvde329f/8zv/lLdq/U8+893/zm3/P6s+ub/25nz/f9r2j3Mr/57zW1 0vfP/Oa/19RGnz8185v/bs2vqoP2YfvQ1o3+b0PMb/49Tf36tV+f+c1v/u2vX5r5 zb+ne1+/tNrnT33/zG/+PU19/aPPn5r5zb+ne1+/tNLzp16/NPObP2Vrl3r+2u9v 6es3v/lLzg9067Xptc/e+eqdy+ahr720eejDZz1581cvNTTKx+fMfV64zuy6//PP Hu3Sz9t7/vTt5qG3fjOZ+82m148v/U1362/KSz9/72/2C88/bx4aWvtedr7znd/v +Xu1tv7c+Wu7V+r19/6Msff1rF92/YfNQ/f+LON85zu/3/PnPj/265Vef+39nBP7 +mOvX/r1rF90/cNp89A5vf8sbH3rW9/61re+9a1vfetb3/rWt77107/+XuY3/73W /vp7lb6+vd+fSn9/28v85i/Z3ddf+N8ulL4+85s/Zfcqff3mN/+e7lX6+nuf/2Hz 0NL/FsX61re+9a1vfetb3/rWt771rW9969e//t7Xr/36zG/+keffu35qtd//1Mxv /j0d/fpSM7/597R15jf/nrau8vl/f3r9028+/fSLp5ftQ3//0e1DHzz58f3eMnfe rdf5zsd/9ncvd+Xr7j4/cx9sPS+04bzj6WHt2zLW27mXbwN77b1/O3/9fvTY9qGh WO/1rXKvn+trv5b1V39vzf291vpl19euG8q9Xm3rx76evdKv//j2obH/yFL6j0yV /RGtuvWBcZX+/lPb+qV//8m8/mHJ9qFzavtZNjfzl21pvc9fer7S96f09Zt/X/cq ff2p59+9ztzfVfb+d5nmN7/5zW9+8484v6qqqjbXOaWvL/V8c0pfv/n3da/S1196 /jm9zzfH/GVbWvvzL9s+tPS/3Ziz9/rNb/49La33+fYyv/n3tHW9zwcAAADM6/3v B/z9j/n3tHV756/9/qSez/zmv9fSdl7/69MPP//yr775+vmzv71sIPr66eM3NxDd 6sn/ifVKZHY8Pdx642/9gtnyhn3xNXKeX/qbTOlOCzcQBSCPJz95ubk+r5b1ye3+ BqK3ZPw5pcj6tc2d8+fDx67F+tbPtd7oDeX6vFrW1+zvt0OMDUQBAAAAAGhT+N/l 7/3v9mt/vdSvX/vrpX792l8v9evX/noAjGLbBqJrlf73Dgn+/YT5zT/M/KPNa/51 85e+PvOn65J7U8N1mt/85je/+c1vfvObP858qjpu5/T2eq1db+zXa+16Y79ea9cb +/VUVXWM/toPptd+8fnXn102D/3BaZfA6JuH0qzj6eGxN9Ajb6ZFb7wFb8pN5829 ztbzI36xrZp/7f1Ye00rzrd5aINu/UNg/0AYgHXubx5aY5f+rJV73VTX8djr3lov xXXsnaHUunuvo9T6sdddeh2p1527jrnP2/r6a9ePdX/mXmfrvdu6buzWsm7u6yi9 foIebB4KQCqp/h+ZtGL0+QEAAAAAgBK2bR6qurR7X6P09Zs/77yt34/R5l9yvS9K 8fnmr3f+1DX/WPOWvh+l5zO/+XPOX3qe0vej9PXnnr/09Za+H6Wvr7X5c9+/2Ndr /vuvt/Yac88fe57R54/d3PPW1tHnX3s/Sl+f+b3/zW9+8+sg/eH0xq+++uKLb55/ /tWXlx1Ef2gHUV50PD28+M55+M/h8aVd+rmxz8/9VbZ3/b3XvfbX4c7n20EUAIbV zg6iS38GSrXu2p/FUq8/d12xrjfWLKXWLz331utJtf6t60i9Xun5157T+rprr2Pp +Vs/L9Ysse93a+snuL8HO4gCAAAAAAAAQC/sIKrV/huVJjva/GvPKX295i87/977 Vdv9NX/596D5x52/9D0fbf7S85a+P6XnMX/Z+1H6+lPPX/r6Sv96l77e0vO3fn9S r1F6PvPnnXf0+UvPV/p+lJ4n9/yx18/9euYv/x5MOX9rNb/5R55/7f0ofX0Dzv/G 9IO//ObZs6dfPr/sH/qG/UN50fH0sOT9fOvz5s5b+jpr3+Nz17n2eKz5Gzzf/qEA MKzt+4fu/Vllb3Ovv/ac1tefe729H699/b3Xl7rWt771rR9h/YP9QwEAAAAAAACg F/n3D537nNzXY37zmz/ffHtbej7zm3/k+fdeX+nzzW9+83v9Vq/P/OYv+fq9X5/5 zW9+85vf/OY3v/nNb37zm9/8nc7/o+mNX3z+9WdPn/3yky8vO4j+6PQJdhDlwfH0 kOMrY+3nr/1KWnttW89b+5Ud+7pjzfHCf7aDKAAMa/sOorrtZ93W1w/Xm3see92l 68e6jlsfW7r+1uuY+5y16y+9jqXXuHX9W9ex9tdm7/pbf11uXffe1ym9/tb7svXz b52X696tvc5c6xbowQ6iAAAAAAAAANCL/DuIqqo+NDxW+nrMb37z55tv78dr72jz z33O3vlrvx+jzb/2nNjzl74fo82/9zVSz5/6fow2f8x7V2L+vfdjtPljr1fb/LWv V/p6cre26zG/+Ueef+5zWpt/7Tyjz7/2/NYa+/611r2vUfr6c89rfu28f2969bxv 6Jtvf3h+Ntk6lKvj6aGSt2rSb+W5z2+otg4FgGHZOlS1xYbHRltfVaP0YOtQAAAA AAAAAOiFrUNVVVVVVVVVUzY8Vvp6zK+qqqqqqqradf/gsnXoR+dnk61DuTqeHip5 q0ZteCz3+Q3V1qEAMCxbh6q22PDYaOurapQebB0KAAAAAAAAAL2wdaiqqqqqqqpq yobHSl+P+VVVVVVVVVW77t+/bB368fnZZOtQro6nh0reqlEbHst9fkO1dSgADMvW oaotNjw22vqqGqUHW4cCAAAAAAAAQC9sHaqqqqqqqqqasuGx0tdjflVVVVVVVdWu +4cPW4e+89b52WTrUK6Op4dK3qpRGx7LfX5DtXUoAAzL1qGqLTY8Ntr6qhqlB1uH AgAAAAAAAEAvbB2qqqqqqqqqmrLhsdLXY35VVVVVVVXVrvsPLluHvn1+Ntk6lKvj 6aGSt2rUhsdyn99QbR0KAMOydahqiw2Pjba+qkbpwdahAAAAAAAAANALW4eqqqqq qqqqpmx4rPT1mF9VVVVVVVW16/7Dy9ah75yfTbYO5ep4eqjkrRq14bHc5zdUW4cC wLBsHaraYsNjo62vqlF6sHUoAAAAAAAAAPTC1qGqqqqqqqqqKRseK3095ldVVVVV VVXtuv/osnXou+dnk61DuTqeHip5q0ZteCz3+Q3V1qEAMCxbh6q22PDYaOurapQe bB0KAAAAAAAAAL2wdaiqqqqqqqpqyobHSl+P+VVVVVVVVVW77j++bB363vnZZOtQ ro6nh0reqlEbHst9fkO1dSgADMvWoaotNjw22vqqGqUHW4cCAAAAAAAAQC9sHaqq qqqqqqqasuGx0tdjflVVVVVVVdWu+08uW4e+f3422TqUq+PpoZK3atSGx3Kf31Bt HQoAw7J1qGqLDY+Ntr6qRunB1qEAAAAAAAAA0Atbh6qqqqqqqqqmbHis9PWYX1VV VVVVVbXr/tPL1qEfnJ9Ntg7l6nh6qOStGrXhsdznN1RbhwLAsGwdqtpiw2Ojra+q UXqwdSgAAAAAAAAA9MLWoaqqqqqqqqopGx4rfT3mV1VVVVVVVe26P75sHfrh+dlk 61CujqeHSt6qURsey31+Q7V1KAAMy9ahqi02PDba+qoapQdbhwIAAAAAAABAL2wd qqqqqqqqqpqy4bHS12N+VVVVVVVV1a77zy5bh350fjbZOpSr4+mhkrdq1IbHcp/f UG0dCgDDsnWoaosNj422vqpG6cHWoQAAAAAAAADQC1uHqqqqqqqqqqZseKz09Zhf VVVVVVVVtev+0WXr0I/PzyZbh3J1PD1U8laN2vBY7vMbqq1DAWBYtg5VbbHhsdHW V9UoPdg6FAAAAAAAAAB6YetQVVVVVVVV1ZQNj5W+HvOrqqqqqqqqdt1//rB16Ltv nZ9Ntg7l6nh6qOStGrXhsdznN1RbhwLAsGwdqtpiw2Ojra+qUXqwdSgAAAAAAAAA 9MLWoaqqqqqqqqopGx4rfT3mV1VVVVVVVe26f3zZOvTt87PJ1qFcHU8PlbxVozY8 lvv8hmrrUAAYlq1DVVtseGy09VU1Sg+2DgUAAAAAAACAXtg6VFVVVVVVVTVlw2Ol r8f8qqqqqqqqql33cNk69J3zs8nWoVwdTw+VvFWjNjyW+/yGautQABiWrUNVW2x4 bLT1VTVKD7YOBQAAAAAAAIBe2DpUVVVVVVVVNWXDY6Wvx/yqqqqqqqqqXfdfXLYO fff8bLJ1KFfH00Mlb9WoDY/lPr+h2joUAIZl61DVFhseG219VY3Sg61DAQAAAAAA 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 2m//PwDOqaUwDxUAABUPMA== `template` null `settings` patch-size 16 num-shapes 64 screen-half-width 20 screen-half-height 16 interface-window-xcor 5 interface-window-ycor 22 interface-window-size 963 605 output-window-xcor 0 output-window-ycor 0 output-window-width 300 output-window-height 200 info-window-xcor 0 info-window-ycor 0 info-window-width 500 info-window-height 400 control-center-xcor 6 control-center-ycor 91 control-center-width 1021 control-center-height 714 turtle-command-center-height 150 observer-command-center-height 150 `string table` H4sIAAAAAAAAAJVWbWsbRxBeKHFK69hxElpMIJ1rCynFuZYWSgmlQX6R8Qc7wnIx /bi6G0mLVzvq7p5U9dd3Zu9OUoWV1F/E3ezM8zw7byel1JX65RZtQROESHAzRjjX /ExD6JowBu1KuER3BP2ovaURwVlpoiGXqZ0/0Vqaq51e5acW1SfXWKpH5x7RqUfH nuZO7bz32o1Q7V3h3C6g8Kgjlrl62dOeWSL6AGM9QxhwEHgMGHN1wM4wEhGBOZP/ 3hVFmNAMS1iIyxdJmxgm6OLKb79H1lYiDya6xFw9XTNIeK6erywz7RhGjI+vCMjh kfoUplYv0B+pgwsoyb2OcOdoDvMxHan9U8IAjqXg3yawjGccdlJ5Lxp6KS5Xn8EY tY3jHED92LOoA9+DE4yRcwnGlVWIfgFD8nBWkKOJKeCEJelpYL0vuQAewQjNyjmK MVPP6oDF0p+V/7aiwCJRVK6JM9qafzhjBekQ/0t4ztVhiergZqxjzRbBcq0zdZhM 8tzaU7y2mfomHdVw2nItywVXL6zfK1N7rUjhcLl6d0rxhCaB8yv3gGvD9wRoZBfW FHdypGvK8FelfepERhkaP8nVixoAjol/OgOqK/22hRWzcSOGlJ5Azw0BN/ouYfQ8 jbjP5JwVwqnnFgi5+n1DUldbe6+kgPqDivjKK0W/LhWxuVbU8kubt5pE5Yaedxs1 XOeVsnVi1CJpmNSeuZnx5KTxucAhMsDhehnXwzP11c19IQ2kyP5pk3zIAi2GsKni vbHQnxpOlXqV+NbOOTVRGxdScKZ2l77C8MN9DAmyy+sDvWRD1o2lypUyQl+uD0Fy bgeg9WkiBf37reidAftqHs0+6jmK70HzJEUTnHvmZ/PWkvGC88acrFFDf6z9XZO+ XH2dEvEzDBb800S1ZbD2DWNl6vMUEqArdB8rtdDh1KwYO0U0vB+brkkLQlK/pJKp eWNJasmz1zYXRwnbyUPZLhz50jhe0ivGFy3o6pChX28vqvQBY/UjIvfKk/SeXiTu u4/GXVeDgXTBbjKkN47Lt8b1C83tKpE8bpEPebVLqWtzY/vfEOSpCo7bn78dLUSy CUK2FeFspkPi3U1fJn5N3fXt9uaM0etG636KaSwfTu4FT7IrzMBYExd5XXD4Ixkl 8LaLPqYzXi7VCK6xBuIsTImvwFuHV5CUnSfhISvvVSLq0bSyOn07jyu/vvwON85D 7SBHF8fVgBx/dPgLOaqYeUoxJimpxx60eGuWGmfJ/WTNKv8VOty9ccyzESsvFbmU LQsWh/EtqMe3xjn0mXp6mf5OrBz/BZjL9ZoMCQAAAAAJDA== `symbol table` H4sIAAAAAAAAAGNgYGAAABzfRCEEAAAAAAAABA== `double table` H4sIAAAAAAAAADXQMQrCMBSA4Tc6Ojg4OEgpIiJia61U1ETTduniUkHxMN7MHMUj eASR978uH/9LCElFpPL3KP/PX7F/qTfPHB/Yidqyb6X9/jJ/ck7H+hn3rAsOsOfc IT3CMU5wigmmOMM5LnCJa8wwxw0WWGKFOzzgEU/o0Jv2XvpiMg90oGu6phu60Xb2 P7eq+6iR+0Z7f6n7f4RqTyPMAQAAAAABzA== `list table` H4sIAAAAAAAAAJ1XyXIbRwztnunhJomUyKGofYtW2/KixXZW20nsLLarfMohZx1y yq8kqdh/kg/JJ/lh8MCBJ7SihFUoNJYG0GgMGgwh/BpCiClUv1YM+TvAW8CfgD8A vwN+E1lSvQyQAxKgALREloXQBvQAHcAcYB6wAFlWiAO1n8V6/RPkBdYZcB+QuB4A FrGOwEtcJ+Ah8ShTXILOgcfAZ8DLUf1PxC5gBXQJvCrx0N4a8BbwOuPtgD4G3mDc m7S1JTECbwO6gJ1CY9v9yDn3aP8T+twHfgN8AHwFfMizHTHGY+qf0P4t0vPUux31 DHfIP42a47v0e4+5uM8cPGDcZ4izzfvsBD23nOM8au5zsRc174Jbhfq/gH5XryVM eEe5y5nkp09bJfGYWPK+k+m+NvM+oY+QlDfCeix+wNqm78i4ctpZIh4kzdHoP/hr MeYDW9O21OycO7eIqrMnzbXnt6PWQ5UnyBcacuFL7fctr06eeA87ji6tdqDaNRr7 B1HPUhIvg7cIWKLeGOshdUeMR3glzzYO6nfMnMq9jZjPVepLXtYZR4t1XlDe5d6c +9d4X/6sYutS+0HFs+825zm7M2R2pyKTvjDmGZaZ70nQc674fai/1UJjyIyfNE6p nTWzjfU6YCPQv/Fn0OJz0/kQe1vM3RngCvQ29XYaertcF9Tbk7pI+l17vX3iA8h7 Sb/vpjywjo6Ij9lDT5iXW8zlQ6xvU3anIXuE9ancL/Ddpg/kba/Q2IS+VyjvwN8V oEfa9t2/QQ7/jZZ7fDArJ473D5w0/5Kvc9q4+J82VpPWZwf4YSNnEqf06RK8R7y/ x16HevJNfUobn82wsZ/pt/k5bXzRsGHyLyn/qiGXPj4B/YR3+9TJpRaF94x7v27s lW92BfQ3rK9vG3l67uIUnrzFL1jT3zV0v7d4qPdD0N4w/d4d2BuR+A1InNYXu6wl 6X3SO6U/ypsg/UzeaOnf8kZLLyrjh/1kyN5TWA05bP3DfAcXQ3CxWO11/D7U+wXg 0tVJuEH9ir1TnmsaR9A3tc/e2abuvNPp0Y+9HX3Gt8gYh/Q/3zjjHPfZmzLgviXu GzFGsVf17sC5yMWr+Yhj6+tCAsdfZp2BPDnzFfdLrp4CnlmubpAnycWA9BzrweKy fEdHS5+V+UreyIJ7Mwc98JfJL3mO1KiDaLMAYn0OeOHk27N8oaZ/zOocXtvHfL2x Ln0s0fk/jHWtSQ8/zOp7O+Kc8jKqj5E7r9W++Di9hn88g2/3mLu1zchDp5OmUNfD nlvLm7DLGrY5bhDr2aTy4eMnX3KzCf4rOxNtVXyr6aB9xXSstvdZbx+bxazmgpsd Ct7nNEbIFlxegsUtdwKfr6+JteVmxnPARtQ5+yToHDaKtd+fnY3p7BLqudPPp7KW viwz+ZXtCVVu5dsTyP4WDP3HhoPu+yvo/wP5T7OW1X2wmtWs12T6P0fmevlvs8G9 ucPWSzPOZdM3kWvjGy/n3Uenb/0sZ117Wx23T3pXcrKKDnW/K5ysoimTHthysooO 9RxSOllFh7oHBt7bJfWnPNJd1qntr+j3CTs7Z7wOAAAAAA68 `bytecodes` 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 W4o= `observer world` H4sIAAAAAAAAAG1T23LaMBBdDAZsCqQNpCVNSJre0stTbw996if0DxSBhdFEllxZ hubP+nldydd27Jmd3T3neL3SruHkTm0ypg9MX2eGGnb3A+rnO4SpUObIo5gZzAcw FEzGZo/xHxhZLmXSSSfu5Zodo32EccKyjMYsKyQm15LIPNkwjWkPgoxRslVC2dSD UFAZ1XkfJppjVzUwgIBvWZ36MN3mWjNpamgI81QJkRuuZA2O2mCWMha59i4a8EAl z/Yk1WpDN1xw84CKAJYblhnSKpgbtdshFULoqOoLE1hK21mH9BGEst30FE7VfZdw BmMkKtkcFhsadelOILBMJXwMZ0elu9t8ApOCq8SnMKtuLBX0wQ1hYadoYzuiJUyc lkiauJmdwdABNn4K40JJPmP2rM6+YLaqs6+YndfZN8yew4xLbjgVZM+ocNtxAdMi JkaRI7cbdAnznZ1CQn83ujXMHLjDqRGN+4XYFaysJqIJLhbZaZU0h0f6Gi7bVKIO XMZEKlIeHSUv4KpDcuTYTiO6gZsOEY0pl/ZKa91LWLd1CDJtle2eXsGyrbFHYjpx P87r8oQJb5bzTYXhMSvsLayyVDMa2dplAdos+W1xe/+C7+C8Ad295jLGqQh2YAL5 922+5H7l3Lg/AfkP7idF88vAK6yH5qH1Sz9Aro/2CS3E3Ee/QD9Ev0Y/Qn+Lflxq bI3AL+p6fvHuorSf/8URmmfr9orvBtaXmF/GQ1vbKzDXx1/GlHuq1AQAAAAABNQ= `patch world` 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 sJ2pAAAAAKmd `turtle world` H4sIAAAAAAAAAL1dB3hVxdadycwAInYsT1HvU8SKT0V9dseGBXvvECBANCSYhGLH 3nvvvTfs3Yy99957ffauT5//OuHs/eTmj//P99019/uWSSQ568yetdfsPefcc83M w9rHt7Y3NVTa2uvbG4ZFo6/zTI+mhubR7WPw/RgThrc2NIzEt/1N73FNLe0TG0eO bmjHz8ubnsXP4xqa8cPSJoxoaWppxbf9jN9zROd3fcyMnQfXo61keuHXR7ZMbB6H n5YzoW1M/bgGfLuE8ZOm/o03buKYls7z6NE2pvzNQabnmIb6kY3No/FD384j95rQ iMM2tLV1/mqfMeObRze0Dm1qmNDQhJ+t6YE/aOokrTO9x7ZMaGjDP44qztuZGetH tDeMHNreMrJ+z07KPm31E/A/9E8Czqw48eIkzLwNk9pb64eOrB9bP7ph6KjWlrFD i+ONbWgujtbTzDj139vGTQ1TL9O/6x/gdxtacfpDx7U0NY1vb2wpYjaDmX9s/aTG sePHTvO7f/6V3mamxuYJjc0jGoc3NjW2F2c7Y+dJ9W5sHjm+rb21saGtc7gz/Pmv 6owf1dg2pnOsvUaMb20FfVvnQPuWf7bnwLZx9RObB7Y1tnceIJgZir9oaB3bOZs9 cIyn8PU64DHgUeAm4A7gduBG4BbgPuAh4BFgCnAzcBtwJ3A38ABwPXADcCtwF3AP 0AEk4EHgYeB+4F7gWuAa4GrgKuBK4ArgcuAy4FLgEuBi4CLgQuAC4PxO1RpzLnAO cDZwFnAmcAZwOnAacCpwCnAycBJwInACcDxwHHAscAxwNHAUcCRwBHA4cBhwKHAI cDBwEHAgcAAwGdgf2A/YF9gH2BvYCyjmbBIwEZgAjAcK4RRhLwS/B1BovNB8Efux QCHh3YHdgEZTZKExhfRHAYUoC52NMEUKGrMisCqwBrA2sI4pMsuYjYB1gZ2AIcA/ gV2AtYB6YCiwA7AhMBjYDNge2AbYBFgd2BzYFFgG+IcpstyYgcBSwJKmSFtjFgcW AxYFBgCLmMIqjFkYWAj4O1ABFjRTX2uaIn2N2QBYAdga2BaYGZgFmBWYyRReYcyy ppCmMVsCcwOrASubIi2MmQv4G7AjsB4QgS1MkVXGbGWm5slwYGPgceAJ4Emg0PXT wDPAs8BzwPPAC8CLwEvAy8ArwKvAa8DrwBvAm8BbwNvAO8C7wHvA+8AHwIfAR8DH wCfAp8BnwL+Az4EvgC+Br4CvgW+Ab4HvgO+BH4AfgZ+An4FfgF+BfwO/Ab8D/wH+ KFIewH9sHeAADyBWFrlrewK9AMTCIlYWsbCIuUVcLeJsEWeLONvZgNmBOQDYqp0T QFwtYm3nARBfOy8wH9APmB9YAMBcWsypxdxazLHFXFvMucXcW2jAQgsWmrDQhoVG LLRioRkL7VhoyEJLFpqymF8LrdpBALRsoQcLPVto1WL+LebargJA3xZzb6FJC51b aMhivi20bKF5C81baN1CBxZatusD0JeFti3ywEL/Fjqw0LWFni20bqFtC71YaMtC LxY6tNC+hRbtdgBywSI/LPRlkUN2ZwD5Y3cFkDt2GIA8stCYRS5a5KRFblrkqEWu WuSsRe5a5LBFLlvktEVuW+S4Ra5b5LxF7lt4gIUXWHiChTdYeISFV1h4hoV3WHiI hZdYeIqFt1h4jIXX2MkAvMfCgyy8yMKTLLzJwqMsvCrgfALOK+D8As4z4HwDzjvg /APGETCegHEFjC9gnAHjDRh3wPgD4hAQj4C4BMQnIE4B8QqIW0D8AuIYEM+AuAbE NyDOAfEOiHtA/APmIWA+AuYlYH4C5ilgvgLmLWD+AuYxYD4D5jVgfgPmOWC+A+Y9 YP4DdBCghwBdBOgjQCcBegnQTYB+AnQUoKcAXQXoK0BnAXoL0F2A/gJ0GKDHAF0G 6DNApwF6DdBtgH4DdByg5wBdB+g7QOcBeg/QfYD+A/IgIB8C8iIgPwLyJCBfAvIm IH8C8iggnwLyKiC/AvIsIN8C8i4g/wLyMCAfA/IyID+DnWpjHnnrkb8eeeyRzx55 7ZHfHnnuke8eee+R/x4+4OEHHr7g4Q8ePuHhFx6+4eEfHj7i4ScevuLhLx4+4+E3 Hr7j4T8ePuThRx6+5OFPHj7l4VcevuXhXx4+5uFnHr7m4W8ePufhdx6+5+F/Hj7o 4Ycevujhjx4+6eGXHr7p4Z8ePurhpx6+6lEfeNQHHjWAx1ruUQ94rOsea7/Huu5R I3is7T4BWPc91n+P2sCjFvCoEzxqCl/UFJhrA40a6MFAhwZzYzAnBnOFktIYzBOK raK+MgY6K2oUlDdFsWM6zRBz1lkaYs4MtO0wDgdeh+M7xMAVMcHcu2Jc0IOHVjzm z2EcDrFziKHD+B3G6HCODnWMx/EcYuiKWEF7DufrEEdXxBg68dCNhzY9ztPjvPz8 RY2Ff8dYHeLiirHjfBzi74q5g2Yd4u8Qf4d5c8X84fw9NOWhU1foAWN1RXyQCx65 4BBPh7g6zJ1DXB1i74o5QX54aNxh/hzm0SGerpg3xMhhPh3mzkEPrtAJYukRK4e6 yqGucqipHGoqh5rKoZ5yqKcc6imHWsqdD6CWcqijHPzBwTMczsUhRx3y3iGHHWLv UCM5aN8h1x28wcEDHPzCISYO+e0whw6id8h9B/9wyFGH+XXwGlfEHX7jEDuHuXDw J4c4OOSRgzc5+IyDdznUYg51m0P95lDHOdR0DrVdHfKoDnlUh3jV/T5VBg4acMUc QRuuGCvmwxWxgJc5+LKDJzt4soMnO/ixgx87+LGDFzt4sYMXO/iwgw87+LCDBzt4 sIMHO/ivg/86+K+D9zp4r4P3Oviug+86+K6D5zrUiQ71okPtWIda0x0Xi4rof3nF Vcqvvcr/MVOnimVRNyX6/un7Qlk9//wz0Nt25oQ7PvbvhmetybXkOSEu1A3PkJry nBQr3fAsXdO4nRz7dcOzc6olzylxnm54Btcybn42iU8q+eK25fF3jJ1f1/y65Okz DY+tOt5fAuP5OS1V8vRi8tR9nJYpj9+XyvNmWqwcz2JVPEPMX/HUTSfPs6nMn7gE lWf+VB5G9M3hMbvGZcu4Vc9PqetueNx0jucrjVuFyvO18HTJn9ryfCPHEd9WnjJ/ u+Hx08nzgxyny3hqy/Oj+EGXPK0tz0/ik8lMyyOvbnjCdPL8LOtcrPK3GvP8EiVu VfNTY54vu10XZJx9p+ExJc/0+ugX3a4LteX5tNt1obY8H3a7Lvw1z/T69bvdrgu1 5Xk7lYfpsi7UlufVbteFv+aZXh99udt1obY8L3a7LtSW5+lu14W/5pleH32y23Wh tjwPd7su1JanX3frwv/BM70+Ol9360Jtedwt3a0LteXxtyVZF6r9bZvy66wlzyyd f2RLnv83R8lzq/g1meeWJL7D5bk5LZeF56Y0KAvPjWn5LDw3xDw818c8cZsS8+jg uphH19fGPHl6TczjO1eLj5J5rpK6jcxzZeyuHq0tzxWyb0nmuVzqHDLPZbJuknku jZUsPJdI/U7muVjqDzLPRVLPkHkulOOQeS7QepTLc340WXjO036By3OuyTOeczry jOfslGc8Z6U8ejsz5cmfM1IePzg95fG301Ievz41VbLwnKJ94wAqz8naN3J5TtK+ kctzovaNXJ4TtG/k8hyvfSOX57iYh+fYmCdux8Q8Ojg65tH1UTFPnh4Z8/jOEdo3 cnkO176Ry3OY9o1cnkO1b+TyHKJ9I5fnYO0buTwHxUoWngO1b+TyHKB9I5dnsvaN XJ79tW/k8uynfSOXZ99osvDso30jl2dvk2c8e3XkGc+eKc94JqU8epuY8uTPhJTH D8anPP7WnvL4dVuqZOFp1b6x+vp2bXn20L6RyzNO+0YuT4v2jVyeZu0buTxjtW/k 8jTFPDy7xzxx2y3m0UFjzKPrMTFPno6OeXxnlPaNXJ4G7Ru5PCO1b+TyjNC+kcsz XPtGLk+99o1cnmGxkoVnqPaNXJ5dtW/k8uyifSOXZ2ftG7k8O2nfyOUp33VB59lB +0Yuz/Ymz3i268gznm1TnvFsk/LobeuUJ3+2Snn8YMuUx9+2SHn8enPt5+S+VA7P ZtrPcXk21X6Oy7OJ9nNcno21n+PyDNF+jsuzUczDs2HME7cNYh4drB/z6HpwzJOn 68U8vrOu9nNcnnW0n+PyrK39HJdnLe3nuDxR+zkuz5raz3F51oiVLDyraz/H5VlN +zkuz6raz3F5VtF+jsuzsvZzXJ6VosnBYw/Xfo7Lc4TJM54jO/KM56iUZzxHpyx6 s8ekLPljj01Z/MAel7L4mz0+ZfFre4L2WRUqz4naZ3F5TtI+i8tzsvZZXJ5TtM/i 8pwa8/CcFvPE7fSYRwdnxDy6PjPmydOzkvQl1c8lqC3P2frcCC7PObpfxeU5V32U y3Oe+iiX53z1US7PBeqjXJ4L1Ue5PBfFPDwXxzxxuyTm0cGlMY+uL4t58vTymMd3 roh5fPTKmGdduEr3q7g8V+t+FZfnGt2v4vJcq/tVXJ7rYiULzxTdr+LyXK/7VVye G3S/istzo+5XcXlu0v0qLs/N0WThuUX3q7g8t5o847mtI894bk95xnNHyqO3O1Oe /Lkr5fGDu1Mef7sn5fHrjlTJwpNSnvX03pSnPrhP+3p5zhiH537t67k8D2hfz+V5 UPt6Ls9D2tdzeR7Wvp7L84j29VyeR7Wv5/I8FvPwPB7zxO2JmEcHT8Y8un4q5snT p2Me33km5vHRZ2OedeE57eu5PM9rX8/leUH7ei7Pi9rXc3leipUsPC9rX8/leUX7 ei7Pq9rXc3le076ey/O69vVcnjeiycLzpvb1XJ63TJ7xvN2RZzzvpDzjeTfl0dt7 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 GlI=