diff options
Diffstat (limited to 'samples/13_path_finding_algorithms/06_heuristic')
| -rw-r--r-- | samples/13_path_finding_algorithms/06_heuristic/app/main.rb | 218 | ||||
| -rw-r--r-- | samples/13_path_finding_algorithms/06_heuristic/replay.txt | 719 |
2 files changed, 828 insertions, 109 deletions
diff --git a/samples/13_path_finding_algorithms/06_heuristic/app/main.rb b/samples/13_path_finding_algorithms/06_heuristic/app/main.rb index af466a5..ad4c5ce 100644 --- a/samples/13_path_finding_algorithms/06_heuristic/app/main.rb +++ b/samples/13_path_finding_algorithms/06_heuristic/app/main.rb @@ -10,13 +10,13 @@ class Heuristic_With_Walls def tick defaults - render - input + render + input # If animation is playing, and max steps have not been reached # Move the search a step forward if state.play && state.current_step < state.max_steps # Variable that tells the program what step to recalculate up to - state.current_step += 1 + state.current_step += 1 move_searches_one_step_forward end end @@ -38,7 +38,7 @@ class Heuristic_With_Walls # We store this value, because we want to remember the value even when # the user's cursor is no longer over what they're interacting with, but # they are still clicking down on the mouse. - state.user_input ||= :none + state.user_input ||= :none # These variables allow the breadth first search to take place # Came_from is a hash with a key of a cell and a value of the cell that was expanded from to find the key. @@ -63,7 +63,7 @@ class Heuristic_With_Walls # Unless the current step has a value unless state.current_step # Set the current step to 10 - state.current_step = 10 + state.current_step = 10 # And calculate the searches up to step 10 recalculate_searches end @@ -73,7 +73,7 @@ class Heuristic_With_Walls # This step is roughly the grid's width * height # When anim_steps equals max_steps no more calculations will occur # and the slider will be at the end - state.max_steps = grid.width * grid.height + state.max_steps = grid.width * grid.height # Whether the animation should play or not # If true, every tick moves anim_steps forward one @@ -166,7 +166,7 @@ class Heuristic_With_Walls # If the mouse was clicked this tick if inputs.mouse.down # Determine what the user is editing and appropriately edit the state.user_input variable - determine_input + determine_input end # Process user input based on user_input variable and current mouse position @@ -179,35 +179,35 @@ class Heuristic_With_Walls if mouse_over_slider? state.user_input = :slider # If the mouse is over the star in the first grid - elsif bfs_mouse_over_star? + elsif bfs_mouse_over_star? # The user is editing the star from the first grid - state.user_input = :bfs_star + state.user_input = :bfs_star # If the mouse is over the star in the second grid - elsif heuristic_mouse_over_star? + elsif heuristic_mouse_over_star? # The user is editing the star from the second grid - state.user_input = :heuristic_star + state.user_input = :heuristic_star # If the mouse is over the target in the first grid - elsif bfs_mouse_over_target? + elsif bfs_mouse_over_target? # The user is editing the target from the first grid - state.user_input = :bfs_target + state.user_input = :bfs_target # If the mouse is over the target in the second grid - elsif heuristic_mouse_over_target? + elsif heuristic_mouse_over_target? # The user is editing the target from the second grid - state.user_input = :heuristic_target + state.user_input = :heuristic_target # If the mouse is over a wall in the first grid - elsif bfs_mouse_over_wall? + elsif bfs_mouse_over_wall? # The user is removing a wall from the first grid - state.user_input = :bfs_remove_wall + state.user_input = :bfs_remove_wall # If the mouse is over a wall in the second grid - elsif heuristic_mouse_over_wall? + elsif heuristic_mouse_over_wall? # The user is removing a wall from the second grid state.user_input = :heuristic_remove_wall # If the mouse is over the first grid - elsif bfs_mouse_over_grid? + elsif bfs_mouse_over_grid? # The user is adding a wall from the first grid state.user_input = :bfs_add_wall # If the mouse is over the second grid - elsif heuristic_mouse_over_grid? + elsif heuristic_mouse_over_grid? # The user is adding a wall from the second grid state.user_input = :heuristic_add_wall end @@ -217,22 +217,22 @@ class Heuristic_With_Walls def process_input if state.user_input == :slider process_input_slider - elsif state.user_input == :bfs_star - process_input_bfs_star + elsif state.user_input == :bfs_star + process_input_bfs_star elsif state.user_input == :heuristic_star - process_input_heuristic_star - elsif state.user_input == :bfs_target - process_input_bfs_target - elsif state.user_input == :heuristic_target - process_input_heuristic_target - elsif state.user_input == :bfs_remove_wall - process_input_bfs_remove_wall + process_input_heuristic_star + elsif state.user_input == :bfs_target + process_input_bfs_target + elsif state.user_input == :heuristic_target + process_input_heuristic_target + elsif state.user_input == :bfs_remove_wall + process_input_bfs_remove_wall elsif state.user_input == :heuristic_remove_wall - process_input_heuristic_remove_wall - elsif state.user_input == :bfs_add_wall - process_input_bfs_add_wall - elsif state.user_input == :heuristic_add_wall - process_input_heuristic_add_wall + process_input_heuristic_remove_wall + elsif state.user_input == :bfs_add_wall + process_input_bfs_add_wall + elsif state.user_input == :heuristic_add_wall + process_input_heuristic_add_wall end end @@ -309,7 +309,7 @@ class Heuristic_With_Walls # The horizontal grid lines for y in 0..grid.height - outputs.lines << bfs_horizontal_line(y) + outputs.lines << bfs_horizontal_line(y) end end @@ -324,10 +324,10 @@ class Heuristic_With_Walls # The horizontal grid lines for y in 0..grid.height - outputs.lines << heuristic_horizontal_line(y) + outputs.lines << heuristic_horizontal_line(y) end end - + # Returns a vertical line for a column of the first grid def bfs_vertical_line column bfs_scale_up([column, 0, column, grid.height]) @@ -362,7 +362,7 @@ class Heuristic_With_Walls def render_bfs_target outputs.sprites << [bfs_scale_up(grid.target), 'target.png'] end - + # Renders the target on the second grid def render_heuristic_target outputs.sprites << [heuristic_scale_up(grid.target), 'target.png'] @@ -370,14 +370,14 @@ class Heuristic_With_Walls # Renders the walls on the first grid def render_bfs_walls - grid.walls.each_key do | wall | + grid.walls.each_key do | wall | outputs.solids << [bfs_scale_up(wall), wall_color] end end # Renders the walls on the second grid def render_heuristic_walls - grid.walls.each_key do | wall | + grid.walls.each_key do | wall | outputs.solids << [heuristic_scale_up(wall), wall_color] end end @@ -398,14 +398,14 @@ class Heuristic_With_Walls # Renders the frontier cells on the first grid def render_bfs_frontier - bfs.frontier.each do | frontier_cell | + bfs.frontier.each do | frontier_cell | outputs.solids << [bfs_scale_up(frontier_cell), frontier_color, 200] end end # Renders the frontier cells on the second grid def render_heuristic_frontier - heuristic.frontier.each do | frontier_cell | + heuristic.frontier.each do | frontier_cell | outputs.solids << [heuristic_scale_up(frontier_cell), frontier_color, 200] end end @@ -489,14 +489,14 @@ class Heuristic_With_Walls # Checks and handles input for the buttons # Called when the mouse is lifted def input_buttons - input_left_button - input_center_button - input_right_button + input_left_button + input_center_button + input_right_button end # Checks if the previous step button is clicked # If it is, it pauses the animation and moves the search one step backward - def input_left_button + def input_left_button if left_button_clicked? state.play = false state.current_step -= 1 @@ -508,7 +508,7 @@ class Heuristic_With_Walls # Inverses whether the animation is playing or not when clicked def input_center_button if center_button_clicked? || inputs.keyboard.key_down.space - state.play = !state.play + state.play = !state.play end end @@ -516,8 +516,8 @@ class Heuristic_With_Walls # If it is, it pauses the animation and moves the search one step forward def input_right_button if right_button_clicked? - state.play = false - state.current_step += 1 + state.play = false + state.current_step += 1 move_searches_one_step_forward end end @@ -598,12 +598,12 @@ class Heuristic_With_Walls # on the slider # Changes the step of the search to be animated def process_input_slider - state.play = false + state.play = false mouse_x = inputs.mouse.point.x # Bounds the mouse_x to the closest x value on the slider line - mouse_x = slider.x if mouse_x < slider.x - mouse_x = slider.x + slider.w if mouse_x > slider.x + slider.w + mouse_x = slider.x if mouse_x < slider.x + mouse_x = slider.x + slider.w if mouse_x > slider.x + slider.w # Sets the current search step to the one represented by the mouse x value # The slider's circle moves due to the render_slider method using anim_steps @@ -616,12 +616,12 @@ class Heuristic_With_Walls # Only resets the search if the star changes position # Called whenever the user is editing the star (puts mouse down on star) def process_input_bfs_star - old_star = grid.star.clone + old_star = grid.star.clone unless bfs_cell_closest_to_mouse == grid.target - grid.star = bfs_cell_closest_to_mouse + grid.star = bfs_cell_closest_to_mouse end - unless old_star == grid.star - recalculate_searches + unless old_star == grid.star + recalculate_searches end end @@ -629,12 +629,12 @@ class Heuristic_With_Walls # Only resets the search if the star changes position # Called whenever the user is editing the star (puts mouse down on star) def process_input_heuristic_star - old_star = grid.star.clone + old_star = grid.star.clone unless heuristic_cell_closest_to_mouse == grid.target grid.star = heuristic_cell_closest_to_mouse end - unless old_star == grid.star - recalculate_searches + unless old_star == grid.star + recalculate_searches end end @@ -642,12 +642,12 @@ class Heuristic_With_Walls # Only recalculate_searchess the search if the target changes position # Called whenever the user is editing the target (puts mouse down on target) def process_input_bfs_target - old_target = grid.target.clone + old_target = grid.target.clone unless bfs_cell_closest_to_mouse == grid.star grid.target = bfs_cell_closest_to_mouse end - unless old_target == grid.target - recalculate_searches + unless old_target == grid.target + recalculate_searches end end @@ -655,12 +655,12 @@ class Heuristic_With_Walls # Only recalculate_searchess the search if the target changes position # Called whenever the user is editing the target (puts mouse down on target) def process_input_heuristic_target - old_target = grid.target.clone + old_target = grid.target.clone unless heuristic_cell_closest_to_mouse == grid.star grid.target = heuristic_cell_closest_to_mouse end - unless old_target == grid.target - recalculate_searches + unless old_target == grid.target + recalculate_searches end end @@ -669,10 +669,10 @@ class Heuristic_With_Walls # The mouse needs to be inside the grid, because we only want to remove walls # the cursor is directly over # Recalculations should only occur when a wall is actually deleted - if bfs_mouse_over_grid? + if bfs_mouse_over_grid? if grid.walls.has_key?(bfs_cell_closest_to_mouse) - grid.walls.delete(bfs_cell_closest_to_mouse) - recalculate_searches + grid.walls.delete(bfs_cell_closest_to_mouse) + recalculate_searches end end end @@ -682,29 +682,29 @@ class Heuristic_With_Walls # The mouse needs to be inside the grid, because we only want to remove walls # the cursor is directly over # Recalculations should only occur when a wall is actually deleted - if heuristic_mouse_over_grid? + if heuristic_mouse_over_grid? if grid.walls.has_key?(heuristic_cell_closest_to_mouse) - grid.walls.delete(heuristic_cell_closest_to_mouse) - recalculate_searches + grid.walls.delete(heuristic_cell_closest_to_mouse) + recalculate_searches end end end # Adds a wall in the first grid in the cell the mouse is over def process_input_bfs_add_wall - if bfs_mouse_over_grid? + if bfs_mouse_over_grid? unless grid.walls.has_key?(bfs_cell_closest_to_mouse) - grid.walls[bfs_cell_closest_to_mouse] = true - recalculate_searches + grid.walls[bfs_cell_closest_to_mouse] = true + recalculate_searches end end end # Adds a wall in the second grid in the cell the mouse is over def process_input_heuristic_add_wall - if heuristic_mouse_over_grid? + if heuristic_mouse_over_grid? unless grid.walls.has_key?(heuristic_cell_closest_to_mouse) - grid.walls[heuristic_cell_closest_to_mouse] = true - recalculate_searches + grid.walls[heuristic_cell_closest_to_mouse] = true + recalculate_searches end end end @@ -714,13 +714,13 @@ class Heuristic_With_Walls # Finding the cell closest to the mouse helps with this def bfs_cell_closest_to_mouse # Closest cell to the mouse in the first grid - x = (inputs.mouse.point.x / grid.cell_size).to_i - y = (inputs.mouse.point.y / grid.cell_size).to_i + x = (inputs.mouse.point.x / grid.cell_size).to_i + y = (inputs.mouse.point.y / grid.cell_size).to_i # Bound x and y to the grid - x = grid.width - 1 if x > grid.width - 1 - y = grid.height - 1 if y > grid.height - 1 + x = grid.width - 1 if x > grid.width - 1 + y = grid.height - 1 if y > grid.height - 1 # Return closest cell - [x, y] + [x, y] end # When the user grabs the star and puts their cursor to the far right @@ -728,17 +728,17 @@ class Heuristic_With_Walls # Finding the cell closest to the mouse in the second grid helps with this def heuristic_cell_closest_to_mouse # Closest cell grid to the mouse in the second - x = (inputs.mouse.point.x / grid.cell_size).to_i - y = (inputs.mouse.point.y / grid.cell_size).to_i + x = (inputs.mouse.point.x / grid.cell_size).to_i + y = (inputs.mouse.point.y / grid.cell_size).to_i # Translate the cell to the first grid x -= grid.width + 1 # Bound x and y to the first grid x = 0 if x < 0 y = 0 if y < 0 - x = grid.width - 1 if x > grid.width - 1 - y = grid.height - 1 if y > grid.height - 1 + x = grid.width - 1 if x > grid.width - 1 + y = grid.height - 1 if y > grid.height - 1 # Return closest cell - [x, y] + [x, y] end def recalculate_searches @@ -763,22 +763,22 @@ class Heuristic_With_Walls return if bfs.came_from.has_key?(grid.target) # Only runs at the beginning of the search as setup. - if bfs.came_from.empty? - bfs.frontier << grid.star - bfs.came_from[grid.star] = nil + if bfs.came_from.empty? + bfs.frontier << grid.star + bfs.came_from[grid.star] = nil end # A step in the search - unless bfs.frontier.empty? + unless bfs.frontier.empty? # Takes the next frontier cell - new_frontier = bfs.frontier.shift + new_frontier = bfs.frontier.shift # For each of its neighbors - adjacent_neighbors(new_frontier).each do |neighbor| + adjacent_neighbors(new_frontier).each do |neighbor| # That have not been visited and are not walls - unless bfs.came_from.has_key?(neighbor) || grid.walls.has_key?(neighbor) + unless bfs.came_from.has_key?(neighbor) || grid.walls.has_key?(neighbor) # Add them to the frontier and mark them as visited - bfs.frontier << neighbor - bfs.came_from[neighbor] = new_frontier + bfs.frontier << neighbor + bfs.came_from[neighbor] = new_frontier end end end @@ -833,12 +833,12 @@ class Heuristic_With_Walls # Get the next cell to explore from new_frontier = heuristic.frontier.shift # For each of its neighbors - adjacent_neighbors(new_frontier).each do |neighbor| + adjacent_neighbors(new_frontier).each do |neighbor| # That have not been visited and are not walls - unless heuristic.came_from.has_key?(neighbor) || grid.walls.has_key?(neighbor) + unless heuristic.came_from.has_key?(neighbor) || grid.walls.has_key?(neighbor) # Add them to the frontier and mark them as visited - heuristic.frontier << neighbor - heuristic.came_from[neighbor] = new_frontier + heuristic.frontier << neighbor + heuristic.came_from[neighbor] = new_frontier end end end @@ -882,16 +882,16 @@ class Heuristic_With_Walls # Returns a list of adjacent cells # Used to determine what the next cells to be added to the frontier are def adjacent_neighbors(cell) - neighbors = [] + neighbors = [] # Gets all the valid neighbors into the array # From southern neighbor, clockwise - neighbors << [cell.x , cell.y - 1] unless cell.y == 0 - neighbors << [cell.x - 1, cell.y ] unless cell.x == 0 - neighbors << [cell.x , cell.y + 1] unless cell.y == grid.height - 1 - neighbors << [cell.x + 1, cell.y ] unless cell.x == grid.width - 1 + neighbors << [cell.x , cell.y - 1] unless cell.y == 0 + neighbors << [cell.x - 1, cell.y ] unless cell.x == 0 + neighbors << [cell.x , cell.y + 1] unless cell.y == grid.height - 1 + neighbors << [cell.x + 1, cell.y ] unless cell.x == grid.width - 1 - neighbors + neighbors end # Finds the vertical and horizontal distance of a cell from the star @@ -940,7 +940,7 @@ class Heuristic_With_Walls def wall_color [134, 134, 120] # Camo Green end - + def visited_color [204, 191, 179] # Dark Brown end @@ -948,7 +948,7 @@ class Heuristic_With_Walls def frontier_color [103, 136, 204] # Blue end - + def path_color [231, 230, 228] # Pastel White end @@ -969,7 +969,7 @@ def tick args end # Every tick, new args are passed, and the Breadth First Search tick is called - $heuristic_with_walls ||= Heuristic_With_Walls.new(args) + $heuristic_with_walls ||= Heuristic_With_Walls.new $heuristic_with_walls.args = args $heuristic_with_walls.tick end diff --git a/samples/13_path_finding_algorithms/06_heuristic/replay.txt b/samples/13_path_finding_algorithms/06_heuristic/replay.txt new file mode 100644 index 0000000..1683449 --- /dev/null +++ b/samples/13_path_finding_algorithms/06_heuristic/replay.txt @@ -0,0 +1,719 @@ +replay_version 2.0 +stopped_at 1004 +seed 100 +recorded_at 2021-11-20 11:21:45 -0600 +[:mouse_button_up, 1, 0, 1, 1, 3] +[:mouse_move, 767, 87, 2, 2, 22] +[:mouse_move, 742, 87, 2, 3, 22] +[:mouse_move, 713, 87, 2, 4, 23] +[:mouse_move, 685, 87, 2, 5, 24] +[:mouse_move, 656, 87, 2, 6, 25] +[:mouse_move, 633, 87, 2, 7, 26] +[:mouse_move, 616, 87, 2, 8, 27] +[:mouse_move, 603, 85, 2, 9, 28] +[:mouse_move, 587, 77, 2, 10, 29] +[:mouse_move, 567, 69, 2, 11, 30] +[:mouse_move, 543, 60, 2, 12, 31] +[:mouse_move, 528, 55, 2, 13, 31] +[:mouse_move, 517, 53, 2, 14, 32] +[:mouse_move, 513, 51, 2, 15, 33] +[:mouse_move, 511, 50, 2, 16, 34] +[:mouse_move, 506, 49, 2, 17, 35] +[:mouse_move, 501, 48, 2, 18, 36] +[:mouse_move, 497, 46, 2, 19, 36] +[:mouse_move, 496, 46, 2, 20, 37] +[:mouse_move, 495, 46, 2, 21, 38] +[:mouse_move, 490, 46, 2, 22, 39] +[:mouse_move, 483, 46, 2, 23, 40] +[:mouse_move, 470, 46, 2, 24, 41] +[:mouse_move, 461, 46, 2, 25, 41] +[:mouse_move, 456, 46, 2, 26, 42] +[:mouse_move, 457, 46, 2, 27, 55] +[:mouse_button_pressed, 1, 0, 1, 28, 58] +[:mouse_move, 458, 46, 2, 29, 59] +[:mouse_move, 460, 46, 2, 30, 62] +[:mouse_move, 461, 46, 2, 31, 62] +[:mouse_move, 463, 46, 2, 32, 63] +[:mouse_move, 464, 46, 2, 33, 64] +[:mouse_move, 465, 46, 2, 34, 64] +[:mouse_move, 466, 46, 2, 35, 65] +[:mouse_move, 467, 46, 2, 36, 65] +[:mouse_move, 469, 46, 2, 37, 66] +[:mouse_move, 470, 46, 2, 38, 66] +[:mouse_move, 472, 46, 2, 39, 67] +[:mouse_move, 473, 46, 2, 40, 67] +[:mouse_move, 474, 46, 2, 41, 68] +[:mouse_move, 477, 46, 2, 42, 68] +[:mouse_move, 479, 46, 2, 43, 68] +[:mouse_move, 480, 46, 2, 44, 69] +[:mouse_move, 481, 46, 2, 45, 70] +[:mouse_move, 483, 46, 2, 46, 71] +[:mouse_move, 484, 46, 2, 47, 71] +[:mouse_move, 485, 46, 2, 48, 71] +[:mouse_move, 487, 46, 2, 49, 72] +[:mouse_move, 489, 46, 2, 50, 72] +[:mouse_move, 492, 46, 2, 51, 72] +[:mouse_move, 496, 46, 2, 52, 72] +[:mouse_move, 502, 47, 2, 53, 73] +[:mouse_move, 507, 47, 2, 54, 73] +[:mouse_move, 513, 47, 2, 55, 73] +[:mouse_move, 519, 47, 2, 56, 73] +[:mouse_move, 521, 47, 2, 57, 74] +[:mouse_move, 524, 47, 2, 58, 74] +[:mouse_move, 527, 47, 2, 59, 74] +[:mouse_move, 531, 47, 2, 60, 74] +[:mouse_move, 535, 47, 2, 61, 75] +[:mouse_move, 539, 47, 2, 62, 75] +[:mouse_move, 542, 47, 2, 63, 75] +[:mouse_move, 544, 47, 2, 64, 75] +[:mouse_move, 546, 47, 2, 65, 76] +[:mouse_move, 550, 47, 2, 66, 76] +[:mouse_move, 552, 47, 2, 67, 76] +[:mouse_move, 553, 47, 2, 68, 76] +[:mouse_move, 555, 47, 2, 69, 76] +[:mouse_move, 556, 47, 2, 70, 77] +[:mouse_move, 557, 47, 2, 71, 77] +[:mouse_move, 558, 47, 2, 72, 77] +[:mouse_move, 561, 47, 2, 73, 77] +[:mouse_move, 563, 47, 2, 74, 78] +[:mouse_move, 564, 47, 2, 75, 78] +[:mouse_move, 566, 47, 2, 76, 78] +[:mouse_move, 570, 47, 2, 77, 78] +[:mouse_move, 571, 47, 2, 78, 78] +[:mouse_move, 572, 47, 2, 79, 79] +[:mouse_move, 573, 47, 2, 80, 79] +[:mouse_move, 575, 47, 2, 81, 79] +[:mouse_move, 581, 47, 2, 82, 80] +[:mouse_move, 582, 47, 2, 83, 80] +[:mouse_move, 585, 47, 2, 84, 80] +[:mouse_move, 586, 47, 2, 85, 80] +[:mouse_move, 588, 47, 2, 86, 80] +[:mouse_move, 589, 47, 2, 87, 81] +[:mouse_move, 591, 47, 2, 88, 81] +[:mouse_move, 593, 47, 2, 89, 81] +[:mouse_move, 594, 47, 2, 90, 81] +[:mouse_move, 595, 47, 2, 91, 81] +[:mouse_move, 596, 47, 2, 92, 82] +[:mouse_move, 600, 47, 2, 93, 82] +[:mouse_move, 602, 47, 2, 94, 82] +[:mouse_move, 607, 47, 2, 95, 82] +[:mouse_move, 611, 46, 2, 96, 82] +[:mouse_move, 613, 46, 2, 97, 82] +[:mouse_move, 614, 46, 2, 98, 83] +[:mouse_move, 617, 46, 2, 99, 83] +[:mouse_move, 621, 46, 2, 100, 83] +[:mouse_move, 623, 46, 2, 101, 83] +[:mouse_move, 625, 46, 2, 102, 83] +[:mouse_move, 626, 46, 2, 103, 83] +[:mouse_move, 627, 46, 2, 104, 84] +[:mouse_move, 629, 46, 2, 105, 84] +[:mouse_move, 632, 46, 2, 106, 84] +[:mouse_move, 634, 46, 2, 107, 84] +[:mouse_move, 636, 46, 2, 108, 84] +[:mouse_move, 637, 46, 2, 109, 84] +[:mouse_move, 639, 45, 2, 110, 85] +[:mouse_move, 641, 45, 2, 111, 85] +[:mouse_move, 643, 45, 2, 112, 85] +[:mouse_move, 646, 44, 2, 113, 85] +[:mouse_move, 648, 43, 2, 114, 85] +[:mouse_move, 650, 43, 2, 115, 85] +[:mouse_move, 652, 43, 2, 116, 85] +[:mouse_move, 654, 43, 2, 117, 86] +[:mouse_move, 661, 42, 2, 118, 86] +[:mouse_move, 667, 42, 2, 119, 86] +[:mouse_move, 676, 42, 2, 120, 86] +[:mouse_move, 682, 42, 2, 121, 86] +[:mouse_move, 691, 41, 2, 122, 86] +[:mouse_move, 694, 41, 2, 123, 86] +[:mouse_move, 697, 41, 2, 124, 87] +[:mouse_move, 700, 41, 2, 125, 87] +[:mouse_move, 703, 41, 2, 126, 87] +[:mouse_move, 704, 41, 2, 127, 87] +[:mouse_move, 706, 41, 2, 128, 87] +[:mouse_move, 707, 41, 2, 129, 87] +[:mouse_move, 709, 41, 2, 130, 87] +[:mouse_move, 710, 41, 2, 131, 87] +[:mouse_move, 713, 41, 2, 132, 88] +[:mouse_move, 717, 41, 2, 133, 88] +[:mouse_move, 721, 41, 2, 134, 88] +[:mouse_move, 725, 41, 2, 135, 88] +[:mouse_move, 726, 41, 2, 136, 88] +[:mouse_move, 728, 41, 2, 137, 88] +[:mouse_move, 732, 41, 2, 138, 88] +[:mouse_move, 742, 41, 2, 139, 88] +[:mouse_move, 754, 43, 2, 140, 89] +[:mouse_move, 769, 45, 2, 141, 89] +[:mouse_move, 772, 45, 2, 142, 89] +[:mouse_move, 776, 45, 2, 143, 89] +[:mouse_move, 777, 45, 2, 144, 89] +[:mouse_move, 778, 45, 2, 145, 91] +[:mouse_move, 778, 44, 2, 146, 91] +[:mouse_move, 779, 44, 2, 147, 91] +[:mouse_move, 780, 44, 2, 148, 91] +[:mouse_move, 781, 44, 2, 149, 91] +[:mouse_move, 782, 44, 2, 150, 92] +[:mouse_move, 784, 44, 2, 151, 92] +[:mouse_move, 785, 44, 2, 152, 92] +[:mouse_move, 786, 44, 2, 153, 92] +[:mouse_move, 787, 44, 2, 154, 92] +[:mouse_move, 788, 44, 2, 155, 92] +[:mouse_move, 789, 44, 2, 156, 93] +[:mouse_move, 790, 44, 2, 157, 93] +[:mouse_move, 790, 43, 2, 158, 93] +[:mouse_move, 791, 43, 2, 159, 93] +[:mouse_move, 792, 43, 2, 160, 93] +[:mouse_move, 793, 43, 2, 161, 93] +[:mouse_move, 791, 43, 2, 162, 94] +[:mouse_move, 790, 43, 2, 163, 95] +[:mouse_move, 785, 43, 2, 164, 95] +[:mouse_move, 775, 43, 2, 165, 95] +[:mouse_move, 762, 43, 2, 166, 95] +[:mouse_move, 745, 43, 2, 167, 95] +[:mouse_move, 727, 43, 2, 168, 95] +[:mouse_move, 704, 43, 2, 169, 95] +[:mouse_move, 680, 43, 2, 170, 95] +[:mouse_move, 653, 43, 2, 171, 95] +[:mouse_move, 628, 43, 2, 172, 95] +[:mouse_move, 606, 43, 2, 173, 96] +[:mouse_move, 589, 43, 2, 174, 96] +[:mouse_move, 577, 43, 2, 175, 96] +[:mouse_move, 568, 43, 2, 176, 96] +[:mouse_move, 558, 43, 2, 177, 96] +[:mouse_move, 552, 43, 2, 178, 96] +[:mouse_move, 544, 43, 2, 179, 96] +[:mouse_move, 532, 43, 2, 180, 97] +[:mouse_move, 523, 43, 2, 181, 97] +[:mouse_move, 517, 43, 2, 182, 97] +[:mouse_move, 512, 43, 2, 183, 97] +[:mouse_move, 508, 43, 2, 184, 97] +[:mouse_move, 506, 43, 2, 185, 98] +[:mouse_move, 503, 43, 2, 186, 98] +[:mouse_move, 501, 43, 2, 187, 98] +[:mouse_move, 500, 43, 2, 188, 98] +[:mouse_move, 498, 43, 2, 189, 98] +[:mouse_move, 495, 43, 2, 190, 99] +[:mouse_move, 492, 43, 2, 191, 99] +[:mouse_move, 489, 43, 2, 192, 99] +[:mouse_move, 485, 43, 2, 193, 99] +[:mouse_move, 480, 43, 2, 194, 100] +[:mouse_move, 476, 43, 2, 195, 100] +[:mouse_move, 472, 43, 2, 196, 100] +[:mouse_move, 471, 43, 2, 197, 101] +[:mouse_move, 470, 43, 2, 198, 102] +[:mouse_move, 469, 43, 2, 199, 102] +[:mouse_move, 468, 43, 2, 200, 103] +[:mouse_move, 467, 43, 2, 201, 105] +[:mouse_move, 467, 44, 2, 202, 111] +[:mouse_move, 468, 43, 2, 203, 114] +[:mouse_move, 469, 43, 2, 204, 115] +[:mouse_move, 474, 43, 2, 205, 115] +[:mouse_move, 479, 43, 2, 206, 116] +[:mouse_move, 482, 43, 2, 207, 116] +[:mouse_move, 484, 42, 2, 208, 117] +[:mouse_move, 486, 42, 2, 209, 118] +[:mouse_move, 488, 42, 2, 210, 118] +[:mouse_move, 490, 42, 2, 211, 118] +[:mouse_move, 492, 42, 2, 212, 118] +[:mouse_move, 493, 42, 2, 213, 120] +[:mouse_button_up, 1, 0, 1, 214, 123] +[:mouse_move, 495, 47, 2, 215, 127] +[:mouse_move, 498, 56, 2, 216, 128] +[:mouse_move, 500, 63, 2, 217, 128] +[:mouse_move, 500, 71, 2, 218, 129] +[:mouse_move, 500, 73, 2, 219, 129] +[:mouse_move, 500, 75, 2, 220, 130] +[:mouse_move, 499, 78, 2, 221, 131] +[:mouse_move, 497, 80, 2, 222, 131] +[:mouse_move, 495, 82, 2, 223, 132] +[:mouse_move, 494, 83, 2, 224, 132] +[:mouse_move, 493, 83, 2, 225, 133] +[:mouse_move, 493, 84, 2, 226, 141] +[:mouse_move, 498, 90, 2, 227, 141] +[:mouse_move, 506, 95, 2, 228, 142] +[:mouse_move, 509, 98, 2, 229, 142] +[:mouse_move, 510, 98, 2, 230, 143] +[:mouse_move, 509, 98, 2, 231, 147] +[:mouse_move, 507, 98, 2, 232, 148] +[:mouse_move, 506, 97, 2, 233, 151] +[:mouse_button_pressed, 1, 0, 1, 234, 152] +[:mouse_button_up, 1, 0, 1, 235, 154] +[:mouse_button_pressed, 1, 0, 1, 236, 170] +[:mouse_move, 507, 97, 2, 237, 170] +[:mouse_button_up, 1, 0, 1, 238, 173] +[:mouse_button_pressed, 1, 0, 1, 239, 174] +[:mouse_button_up, 1, 0, 1, 240, 178] +[:mouse_button_pressed, 1, 0, 1, 241, 180] +[:mouse_button_up, 1, 0, 1, 242, 183] +[:mouse_button_pressed, 1, 0, 1, 243, 185] +[:mouse_button_up, 1, 0, 1, 244, 189] +[:mouse_button_pressed, 1, 0, 1, 245, 190] +[:mouse_button_up, 1, 0, 1, 246, 195] +[:mouse_button_pressed, 1, 0, 1, 247, 196] +[:mouse_button_up, 1, 0, 1, 248, 199] +[:mouse_button_pressed, 1, 0, 1, 249, 201] +[:mouse_button_up, 1, 0, 1, 250, 203] +[:mouse_move, 508, 97, 2, 251, 205] +[:mouse_button_pressed, 1, 0, 1, 252, 205] +[:mouse_button_up, 1, 0, 1, 253, 209] +[:mouse_button_pressed, 1, 0, 1, 254, 210] +[:mouse_button_up, 1, 0, 1, 255, 214] +[:mouse_button_pressed, 1, 0, 1, 256, 215] +[:mouse_button_up, 1, 0, 1, 257, 219] +[:mouse_button_pressed, 1, 0, 1, 258, 222] +[:mouse_button_up, 1, 0, 1, 259, 226] +[:mouse_move, 508, 98, 2, 260, 226] +[:mouse_button_pressed, 1, 0, 1, 261, 229] +[:mouse_button_up, 1, 0, 1, 262, 232] +[:mouse_move, 509, 98, 2, 263, 235] +[:mouse_move, 509, 97, 2, 264, 237] +[:mouse_move, 515, 96, 2, 265, 238] +[:mouse_move, 529, 94, 2, 266, 239] +[:mouse_move, 573, 93, 2, 267, 240] +[:mouse_move, 609, 93, 2, 268, 242] +[:mouse_move, 639, 93, 2, 269, 242] +[:mouse_move, 663, 93, 2, 270, 243] +[:mouse_move, 680, 93, 2, 271, 244] +[:mouse_move, 691, 93, 2, 272, 245] +[:mouse_move, 695, 93, 2, 273, 246] +[:mouse_move, 696, 93, 2, 274, 247] +[:mouse_move, 698, 93, 2, 275, 248] +[:mouse_move, 701, 94, 2, 276, 249] +[:mouse_move, 702, 94, 2, 277, 250] +[:mouse_move, 703, 94, 2, 278, 251] +[:mouse_move, 705, 94, 2, 279, 256] +[:mouse_move, 707, 94, 2, 280, 256] +[:mouse_move, 712, 94, 2, 281, 257] +[:mouse_move, 718, 94, 2, 282, 258] +[:mouse_move, 727, 94, 2, 283, 259] +[:mouse_move, 734, 94, 2, 284, 260] +[:mouse_move, 736, 94, 2, 285, 261] +[:mouse_move, 737, 94, 2, 286, 265] +[:mouse_move, 738, 94, 2, 287, 271] +[:mouse_button_pressed, 1, 0, 1, 288, 272] +[:mouse_button_up, 1, 0, 1, 289, 275] +[:mouse_button_pressed, 1, 0, 1, 290, 280] +[:mouse_button_up, 1, 0, 1, 291, 284] +[:mouse_move, 739, 94, 2, 292, 287] +[:mouse_button_pressed, 1, 0, 1, 293, 288] +[:mouse_button_up, 1, 0, 1, 294, 292] +[:mouse_button_pressed, 1, 0, 1, 295, 296] +[:mouse_button_up, 1, 0, 1, 296, 300] +[:mouse_button_pressed, 1, 0, 1, 297, 303] +[:mouse_button_up, 1, 0, 1, 298, 306] +[:mouse_move, 740, 94, 2, 299, 308] +[:mouse_button_pressed, 1, 0, 1, 300, 309] +[:mouse_button_up, 1, 0, 1, 301, 312] +[:mouse_button_pressed, 1, 0, 1, 302, 317] +[:mouse_button_up, 1, 0, 1, 303, 319] +[:mouse_move, 733, 100, 2, 304, 321] +[:mouse_move, 716, 115, 2, 305, 322] +[:mouse_move, 694, 133, 2, 306, 322] +[:mouse_move, 669, 152, 2, 307, 323] +[:mouse_move, 645, 172, 2, 308, 324] +[:mouse_move, 618, 207, 2, 309, 325] +[:mouse_move, 602, 229, 2, 310, 325] +[:mouse_move, 586, 244, 2, 311, 326] +[:mouse_move, 571, 255, 2, 312, 326] +[:mouse_move, 560, 263, 2, 313, 327] +[:mouse_move, 558, 268, 2, 314, 328] +[:mouse_move, 557, 274, 2, 315, 329] +[:mouse_move, 559, 279, 2, 316, 329] +[:mouse_move, 559, 284, 2, 317, 329] +[:mouse_move, 553, 295, 2, 318, 330] +[:mouse_move, 538, 310, 2, 319, 331] +[:mouse_move, 515, 328, 2, 320, 332] +[:mouse_move, 476, 357, 2, 321, 332] +[:mouse_move, 448, 381, 2, 322, 333] +[:mouse_move, 423, 406, 2, 323, 333] +[:mouse_move, 404, 428, 2, 324, 334] +[:mouse_move, 381, 448, 2, 325, 335] +[:mouse_move, 354, 469, 2, 326, 336] +[:mouse_move, 325, 492, 2, 327, 336] +[:mouse_move, 297, 512, 2, 328, 337] +[:mouse_move, 274, 526, 2, 329, 337] +[:mouse_move, 252, 535, 2, 330, 338] +[:mouse_move, 237, 544, 2, 331, 339] +[:mouse_move, 227, 553, 2, 332, 340] +[:mouse_move, 226, 555, 2, 333, 340] +[:mouse_move, 226, 556, 2, 334, 341] +[:mouse_move, 228, 557, 2, 335, 342] +[:mouse_move, 239, 558, 2, 336, 343] +[:mouse_move, 266, 563, 2, 337, 343] +[:mouse_move, 303, 568, 2, 338, 344] +[:mouse_move, 333, 575, 2, 339, 344] +[:mouse_move, 356, 581, 2, 340, 345] +[:mouse_move, 375, 587, 2, 341, 346] +[:mouse_move, 390, 591, 2, 342, 347] +[:mouse_move, 407, 598, 2, 343, 347] +[:mouse_move, 414, 600, 2, 344, 348] +[:mouse_move, 415, 600, 2, 345, 348] +[:mouse_move, 416, 601, 2, 346, 349] +[:mouse_move, 419, 602, 2, 347, 350] +[:mouse_move, 420, 602, 2, 348, 350] +[:mouse_button_pressed, 1, 0, 1, 349, 352] +[:mouse_button_up, 1, 0, 1, 350, 354] +[:mouse_move, 421, 602, 2, 351, 354] +[:mouse_move, 422, 602, 2, 352, 356] +[:mouse_move, 422, 603, 2, 353, 370] +[:mouse_move, 422, 602, 2, 354, 373] +[:mouse_move, 423, 595, 2, 355, 374] +[:mouse_move, 426, 589, 2, 356, 374] +[:mouse_move, 429, 583, 2, 357, 375] +[:mouse_move, 429, 582, 2, 358, 376] +[:mouse_move, 424, 580, 2, 359, 377] +[:mouse_move, 416, 580, 2, 360, 378] +[:mouse_move, 410, 579, 2, 361, 378] +[:mouse_move, 406, 577, 2, 362, 379] +[:mouse_move, 401, 575, 2, 363, 380] +[:mouse_move, 392, 573, 2, 364, 380] +[:mouse_move, 381, 571, 2, 365, 381] +[:mouse_move, 369, 571, 2, 366, 382] +[:mouse_move, 354, 571, 2, 367, 382] +[:mouse_move, 333, 571, 2, 368, 383] +[:mouse_move, 306, 571, 2, 369, 383] +[:mouse_move, 281, 576, 2, 370, 384] +[:mouse_move, 249, 585, 2, 371, 385] +[:mouse_move, 230, 586, 2, 372, 385] +[:mouse_move, 213, 590, 2, 373, 386] +[:mouse_move, 201, 593, 2, 374, 386] +[:mouse_move, 192, 597, 2, 375, 387] +[:mouse_move, 188, 599, 2, 376, 388] +[:mouse_move, 186, 601, 2, 377, 388] +[:mouse_move, 185, 601, 2, 378, 391] +[:mouse_move, 183, 599, 2, 379, 391] +[:mouse_move, 183, 598, 2, 380, 393] +[:mouse_move, 184, 596, 2, 381, 393] +[:mouse_move, 188, 594, 2, 382, 394] +[:mouse_move, 199, 591, 2, 383, 395] +[:mouse_move, 221, 586, 2, 384, 395] +[:mouse_move, 246, 578, 2, 385, 395] +[:mouse_move, 262, 574, 2, 386, 396] +[:mouse_move, 266, 573, 2, 387, 397] +[:mouse_move, 271, 573, 2, 388, 398] +[:mouse_move, 279, 573, 2, 389, 398] +[:mouse_move, 285, 573, 2, 390, 399] +[:mouse_move, 293, 574, 2, 391, 399] +[:mouse_move, 302, 576, 2, 392, 400] +[:mouse_move, 316, 580, 2, 393, 401] +[:mouse_move, 333, 583, 2, 394, 402] +[:mouse_move, 351, 583, 2, 395, 402] +[:mouse_move, 363, 583, 2, 396, 403] +[:mouse_move, 369, 583, 2, 397, 403] +[:mouse_move, 379, 583, 2, 398, 404] +[:mouse_move, 385, 583, 2, 399, 404] +[:mouse_move, 390, 583, 2, 400, 405] +[:mouse_move, 392, 583, 2, 401, 406] +[:mouse_move, 394, 583, 2, 402, 406] +[:mouse_move, 395, 583, 2, 403, 407] +[:mouse_move, 395, 580, 2, 404, 408] +[:mouse_move, 395, 578, 2, 405, 408] +[:mouse_move, 395, 572, 2, 406, 409] +[:mouse_move, 396, 565, 2, 407, 410] +[:mouse_move, 402, 560, 2, 408, 410] +[:mouse_move, 404, 559, 2, 409, 411] +[:mouse_move, 405, 559, 2, 410, 413] +[:mouse_move, 406, 559, 2, 411, 414] +[:mouse_move, 407, 560, 2, 412, 416] +[:mouse_move, 407, 561, 2, 413, 417] +[:mouse_move, 408, 561, 2, 414, 418] +[:mouse_move, 409, 563, 2, 415, 419] +[:mouse_move, 410, 564, 2, 416, 420] +[:mouse_move, 411, 565, 2, 417, 421] +[:mouse_move, 411, 566, 2, 418, 423] +[:mouse_button_pressed, 1, 0, 1, 419, 424] +[:mouse_button_up, 1, 0, 1, 420, 425] +[:mouse_move, 411, 562, 2, 421, 426] +[:mouse_move, 411, 547, 2, 422, 426] +[:mouse_move, 411, 532, 2, 423, 427] +[:mouse_move, 417, 513, 2, 424, 427] +[:mouse_move, 421, 503, 2, 425, 428] +[:mouse_move, 424, 496, 2, 426, 429] +[:mouse_move, 425, 494, 2, 427, 430] +[:mouse_move, 425, 493, 2, 428, 430] +[:mouse_move, 426, 492, 2, 429, 432] +[:mouse_move, 426, 493, 2, 430, 436] +[:mouse_move, 426, 494, 2, 431, 437] +[:mouse_move, 426, 495, 2, 432, 438] +[:mouse_move, 426, 496, 2, 433, 438] +[:mouse_move, 425, 498, 2, 434, 440] +[:mouse_move, 423, 503, 2, 435, 441] +[:mouse_move, 422, 506, 2, 436, 441] +[:mouse_move, 422, 507, 2, 437, 442] +[:mouse_move, 422, 508, 2, 438, 446] +[:mouse_move, 422, 514, 2, 439, 447] +[:mouse_move, 421, 525, 2, 440, 448] +[:mouse_move, 418, 533, 2, 441, 448] +[:mouse_move, 416, 536, 2, 442, 449] +[:mouse_move, 415, 537, 2, 443, 449] +[:mouse_move, 415, 538, 2, 444, 450] +[:mouse_button_pressed, 1, 0, 1, 445, 455] +[:mouse_move, 414, 538, 2, 446, 456] +[:mouse_button_up, 1, 0, 1, 447, 456] +[:mouse_move, 412, 535, 2, 448, 456] +[:mouse_move, 409, 529, 2, 449, 456] +[:mouse_move, 408, 514, 2, 450, 457] +[:mouse_move, 408, 502, 2, 451, 458] +[:mouse_move, 411, 497, 2, 452, 458] +[:mouse_move, 413, 492, 2, 453, 459] +[:mouse_move, 415, 491, 2, 454, 460] +[:mouse_move, 415, 490, 2, 455, 460] +[:mouse_move, 415, 489, 2, 456, 461] +[:mouse_move, 416, 489, 2, 457, 461] +[:mouse_move, 416, 488, 2, 458, 462] +[:mouse_move, 416, 487, 2, 459, 464] +[:mouse_button_pressed, 1, 0, 1, 460, 465] +[:mouse_button_up, 1, 0, 1, 461, 468] +[:mouse_move, 417, 487, 2, 462, 470] +[:mouse_move, 417, 486, 2, 463, 471] +[:mouse_move, 418, 486, 2, 464, 471] +[:mouse_move, 418, 485, 2, 465, 472] +[:mouse_move, 418, 483, 2, 466, 473] +[:mouse_move, 418, 478, 2, 467, 474] +[:mouse_move, 418, 473, 2, 468, 474] +[:mouse_move, 419, 471, 2, 469, 475] +[:mouse_move, 420, 470, 2, 470, 475] +[:mouse_move, 420, 469, 2, 471, 477] +[:mouse_move, 420, 468, 2, 472, 477] +[:mouse_move, 421, 467, 2, 473, 479] +[:mouse_move, 421, 464, 2, 474, 479] +[:mouse_move, 421, 462, 2, 475, 480] +[:mouse_move, 422, 460, 2, 476, 480] +[:mouse_button_pressed, 1, 0, 1, 477, 482] +[:mouse_button_up, 1, 0, 1, 478, 484] +[:mouse_move, 422, 459, 2, 479, 484] +[:mouse_move, 422, 451, 2, 480, 484] +[:mouse_move, 424, 443, 2, 481, 485] +[:mouse_move, 428, 436, 2, 482, 486] +[:mouse_move, 431, 431, 2, 483, 487] +[:mouse_move, 433, 428, 2, 484, 487] +[:mouse_move, 435, 424, 2, 485, 488] +[:mouse_move, 435, 422, 2, 486, 488] +[:mouse_move, 435, 420, 2, 487, 489] +[:mouse_move, 435, 419, 2, 488, 490] +[:mouse_move, 435, 418, 2, 489, 490] +[:mouse_button_pressed, 1, 0, 1, 490, 494] +[:mouse_button_up, 1, 0, 1, 491, 497] +[:mouse_move, 435, 415, 2, 492, 501] +[:mouse_move, 435, 408, 2, 493, 502] +[:mouse_move, 435, 401, 2, 494, 503] +[:mouse_move, 435, 398, 2, 495, 503] +[:mouse_move, 435, 396, 2, 496, 504] +[:mouse_move, 435, 395, 2, 497, 504] +[:mouse_move, 435, 394, 2, 498, 507] +[:mouse_move, 434, 393, 2, 499, 507] +[:mouse_move, 434, 389, 2, 500, 508] +[:mouse_move, 433, 388, 2, 501, 509] +[:mouse_move, 433, 385, 2, 502, 509] +[:mouse_move, 433, 384, 2, 503, 510] +[:mouse_button_pressed, 1, 0, 1, 504, 514] +[:mouse_button_up, 1, 0, 1, 505, 516] +[:mouse_move, 433, 383, 2, 506, 517] +[:mouse_move, 433, 377, 2, 507, 518] +[:mouse_move, 433, 372, 2, 508, 518] +[:mouse_move, 433, 365, 2, 509, 519] +[:mouse_move, 433, 360, 2, 510, 520] +[:mouse_move, 433, 353, 2, 511, 520] +[:mouse_move, 433, 346, 2, 512, 520] +[:mouse_move, 432, 338, 2, 513, 521] +[:mouse_move, 431, 331, 2, 514, 522] +[:mouse_move, 431, 328, 2, 515, 523] +[:mouse_move, 431, 326, 2, 516, 523] +[:mouse_move, 431, 325, 2, 517, 524] +[:mouse_move, 430, 324, 2, 518, 524] +[:mouse_button_pressed, 1, 0, 1, 519, 528] +[:mouse_button_up, 1, 0, 1, 520, 531] +[:mouse_move, 430, 323, 2, 521, 533] +[:mouse_move, 430, 322, 2, 522, 534] +[:mouse_move, 430, 321, 2, 523, 534] +[:mouse_move, 429, 319, 2, 524, 535] +[:mouse_move, 428, 316, 2, 525, 536] +[:mouse_move, 428, 315, 2, 526, 537] +[:mouse_move, 428, 314, 2, 527, 540] +[:mouse_move, 428, 313, 2, 528, 540] +[:mouse_move, 427, 309, 2, 529, 540] +[:mouse_move, 427, 308, 2, 530, 541] +[:mouse_move, 426, 306, 2, 531, 542] +[:mouse_move, 426, 304, 2, 532, 543] +[:mouse_move, 426, 303, 2, 533, 543] +[:mouse_button_pressed, 1, 0, 1, 534, 544] +[:mouse_button_up, 1, 0, 1, 535, 546] +[:mouse_move, 426, 302, 2, 536, 548] +[:mouse_move, 426, 299, 2, 537, 548] +[:mouse_move, 426, 294, 2, 538, 549] +[:mouse_move, 426, 288, 2, 539, 550] +[:mouse_move, 426, 282, 2, 540, 550] +[:mouse_move, 426, 276, 2, 541, 550] +[:mouse_move, 426, 273, 2, 542, 551] +[:mouse_move, 426, 272, 2, 543, 552] +[:mouse_move, 426, 271, 2, 544, 553] +[:mouse_button_pressed, 1, 0, 1, 545, 556] +[:mouse_button_up, 1, 0, 1, 546, 557] +[:mouse_move, 426, 269, 2, 547, 558] +[:mouse_move, 426, 266, 2, 548, 559] +[:mouse_move, 426, 263, 2, 549, 559] +[:mouse_move, 426, 258, 2, 550, 560] +[:mouse_move, 425, 256, 2, 551, 561] +[:mouse_move, 424, 251, 2, 552, 561] +[:mouse_move, 424, 246, 2, 553, 562] +[:mouse_move, 424, 244, 2, 554, 563] +[:mouse_move, 424, 241, 2, 555, 563] +[:mouse_move, 424, 238, 2, 556, 563] +[:mouse_move, 423, 236, 2, 557, 564] +[:mouse_move, 423, 235, 2, 558, 565] +[:mouse_button_pressed, 1, 0, 1, 559, 568] +[:mouse_button_up, 1, 0, 1, 560, 569] +[:mouse_move, 423, 233, 2, 561, 570] +[:mouse_move, 423, 228, 2, 562, 570] +[:mouse_move, 423, 224, 2, 563, 571] +[:mouse_move, 423, 218, 2, 564, 572] +[:mouse_move, 423, 214, 2, 565, 572] +[:mouse_move, 423, 210, 2, 566, 573] +[:mouse_move, 423, 209, 2, 567, 573] +[:mouse_move, 423, 208, 2, 568, 574] +[:mouse_move, 423, 207, 2, 569, 575] +[:mouse_move, 423, 206, 2, 570, 577] +[:mouse_button_pressed, 1, 0, 1, 571, 582] +[:mouse_button_up, 1, 0, 1, 572, 583] +[:mouse_move, 423, 205, 2, 573, 586] +[:mouse_move, 423, 204, 2, 574, 587] +[:mouse_move, 423, 201, 2, 575, 587] +[:mouse_move, 423, 197, 2, 576, 588] +[:mouse_move, 422, 195, 2, 577, 589] +[:mouse_move, 422, 191, 2, 578, 589] +[:mouse_move, 422, 189, 2, 579, 589] +[:mouse_move, 422, 188, 2, 580, 590] +[:mouse_move, 422, 187, 2, 581, 591] +[:mouse_move, 422, 186, 2, 582, 592] +[:mouse_move, 422, 188, 2, 583, 606] +[:mouse_move, 422, 193, 2, 584, 607] +[:mouse_move, 423, 202, 2, 585, 608] +[:mouse_move, 425, 216, 2, 586, 609] +[:mouse_move, 426, 223, 2, 587, 609] +[:mouse_move, 426, 225, 2, 588, 609] +[:mouse_button_pressed, 1, 0, 1, 589, 613] +[:mouse_button_up, 1, 0, 1, 590, 615] +[:mouse_move, 426, 224, 2, 591, 615] +[:mouse_move, 424, 220, 2, 592, 615] +[:mouse_move, 424, 209, 2, 593, 616] +[:mouse_move, 421, 192, 2, 594, 617] +[:mouse_move, 419, 182, 2, 595, 617] +[:mouse_move, 418, 180, 2, 596, 618] +[:mouse_move, 418, 179, 2, 597, 618] +[:mouse_button_pressed, 1, 0, 1, 598, 624] +[:mouse_button_up, 1, 0, 1, 599, 625] +[:mouse_move, 418, 178, 2, 600, 626] +[:mouse_move, 418, 174, 2, 601, 627] +[:mouse_move, 418, 171, 2, 602, 628] +[:mouse_move, 418, 164, 2, 603, 628] +[:mouse_move, 417, 161, 2, 604, 629] +[:mouse_move, 415, 156, 2, 605, 630] +[:mouse_move, 415, 155, 2, 606, 631] +[:mouse_move, 415, 154, 2, 607, 633] +[:mouse_move, 415, 153, 2, 608, 634] +[:mouse_move, 415, 152, 2, 609, 635] +[:mouse_move, 416, 151, 2, 610, 635] +[:mouse_move, 416, 150, 2, 611, 636] +[:mouse_move, 416, 149, 2, 612, 637] +[:mouse_move, 417, 147, 2, 613, 638] +[:mouse_move, 418, 144, 2, 614, 639] +[:mouse_move, 418, 142, 2, 615, 640] +[:mouse_move, 419, 141, 2, 616, 640] +[:mouse_move, 419, 139, 2, 617, 641] +[:mouse_move, 420, 138, 2, 618, 642] +[:mouse_move, 420, 137, 2, 619, 642] +[:mouse_button_pressed, 1, 0, 1, 620, 643] +[:mouse_button_up, 1, 0, 1, 621, 645] +[:mouse_move, 420, 138, 2, 622, 649] +[:mouse_move, 420, 141, 2, 623, 650] +[:mouse_move, 421, 142, 2, 624, 651] +[:mouse_move, 421, 147, 2, 625, 652] +[:mouse_move, 421, 148, 2, 626, 653] +[:mouse_move, 421, 149, 2, 627, 653] +[:mouse_move, 421, 148, 2, 628, 674] +[:mouse_move, 420, 147, 2, 629, 675] +[:mouse_move, 420, 146, 2, 630, 675] +[:mouse_move, 420, 142, 2, 631, 677] +[:mouse_move, 422, 139, 2, 632, 677] +[:mouse_move, 422, 138, 2, 633, 681] +[:mouse_move, 421, 138, 2, 634, 686] +[:mouse_move, 441, 132, 2, 635, 691] +[:mouse_move, 483, 120, 2, 636, 692] +[:mouse_move, 539, 103, 2, 637, 693] +[:mouse_move, 590, 85, 2, 638, 693] +[:mouse_move, 658, 61, 2, 639, 694] +[:mouse_move, 677, 52, 2, 640, 694] +[:mouse_move, 725, 34, 2, 641, 695] +[:mouse_move, 739, 30, 2, 642, 696] +[:mouse_move, 775, 26, 2, 643, 697] +[:mouse_move, 791, 26, 2, 644, 697] +[:mouse_move, 796, 26, 2, 645, 698] +[:mouse_move, 801, 25, 2, 646, 699] +[:mouse_move, 802, 25, 2, 647, 700] +[:mouse_move, 803, 25, 2, 648, 701] +[:mouse_move, 804, 25, 2, 649, 702] +[:mouse_move, 804, 28, 2, 650, 703] +[:mouse_move, 804, 33, 2, 651, 704] +[:mouse_move, 793, 48, 2, 652, 705] +[:mouse_move, 787, 54, 2, 653, 705] +[:mouse_move, 769, 66, 2, 654, 706] +[:mouse_move, 766, 69, 2, 655, 707] +[:mouse_move, 759, 75, 2, 656, 708] +[:mouse_move, 756, 78, 2, 657, 708] +[:mouse_move, 754, 82, 2, 658, 709] +[:mouse_move, 750, 88, 2, 659, 710] +[:mouse_move, 747, 97, 2, 660, 710] +[:mouse_move, 747, 98, 2, 661, 711] +[:mouse_move, 747, 100, 2, 662, 712] +[:mouse_move, 747, 101, 2, 663, 717] +[:mouse_button_pressed, 1, 0, 1, 664, 717] +[:mouse_button_up, 1, 0, 1, 665, 720] +[:mouse_button_pressed, 1, 0, 1, 666, 723] +[:mouse_button_up, 1, 0, 1, 667, 727] +[:mouse_button_pressed, 1, 0, 1, 668, 731] +[:mouse_move, 747, 100, 2, 669, 731] +[:mouse_button_up, 1, 0, 1, 670, 734] +[:mouse_button_pressed, 1, 0, 1, 671, 737] +[:mouse_button_up, 1, 0, 1, 672, 741] +[:mouse_button_pressed, 1, 0, 1, 673, 744] +[:mouse_button_up, 1, 0, 1, 674, 747] +[:mouse_button_pressed, 1, 0, 1, 675, 751] +[:mouse_button_up, 1, 0, 1, 676, 753] +[:mouse_button_pressed, 1, 0, 1, 677, 757] +[:mouse_move, 748, 100, 2, 678, 757] +[:mouse_button_up, 1, 0, 1, 679, 760] +[:mouse_button_pressed, 1, 0, 1, 680, 764] +[:mouse_button_up, 1, 0, 1, 681, 766] +[:mouse_button_pressed, 1, 0, 1, 682, 769] +[:mouse_button_up, 1, 0, 1, 683, 772] +[:mouse_button_pressed, 1, 0, 1, 684, 775] +[:mouse_button_up, 1, 0, 1, 685, 778] +[:mouse_move, 748, 99, 2, 686, 779] +[:mouse_move, 749, 99, 2, 687, 781] +[:mouse_button_pressed, 1, 0, 1, 688, 781] +[:mouse_button_up, 1, 0, 1, 689, 785] +[:mouse_button_pressed, 1, 0, 1, 690, 788] +[:mouse_button_up, 1, 0, 1, 691, 790] +[:mouse_button_pressed, 1, 0, 1, 692, 795] +[:mouse_button_up, 1, 0, 1, 693, 797] +[:mouse_button_pressed, 1, 0, 1, 694, 800] +[:mouse_button_up, 1, 0, 1, 695, 802] +[:mouse_move, 748, 99, 2, 696, 802] +[:mouse_move, 738, 99, 2, 697, 803] +[:mouse_move, 729, 99, 2, 698, 803] +[:mouse_move, 709, 99, 2, 699, 804] +[:mouse_move, 689, 96, 2, 700, 805] +[:mouse_move, 674, 95, 2, 701, 806] +[:mouse_move, 654, 92, 2, 702, 806] +[:mouse_move, 629, 90, 2, 703, 806] +[:mouse_move, 623, 90, 2, 704, 807] +[:mouse_move, 611, 90, 2, 705, 808] +[:mouse_move, 610, 90, 2, 706, 808] +[:mouse_move, 609, 90, 2, 707, 809] +[:mouse_move, 611, 90, 2, 708, 811] +[:mouse_button_pressed, 1, 0, 1, 709, 811] +[:mouse_move, 612, 90, 2, 710, 811] +[:mouse_button_up, 1, 0, 1, 711, 813] +[:mouse_move, 613, 90, 2, 712, 813] +[:key_down_raw, 96, 0, 2, 713, 986] +[:key_up_raw, 96, 0, 2, 714, 987] +[:key_down_raw, 13, 0, 2, 715, 1004] |
