pico-8 cartridge // http://www.pico-8.com version 43 __lua__ function _init() timer_elapsed = 0 timer_last = time() init_keys() init_main_menu_droplets() fade_perc = 1 fade_target_perc = 0 end function _update() update_timer() update_keys() update_fade() if game_state == "main_menu" then update_main_menu() elseif game_state == "play" then update_snk() elseif game_state == "gover_anim" then update_snk_death_anim() elseif game_state == "gover" then update_gover() end update_shake() update_ptcs() update_pulse() update_txts_displays() end function _draw() cls() fade_pal(fade_perc) if game_state == "main_menu" then draw_main_menu() else draw_grid() draw_snk() draw_fruit() draw_score() draw_gover() draw_ptcs() draw_txts_displays() end end game_state = "main_menu" fade_perc, fade_target_perc = 0 fade_timer = 0 start_cd = 48 start_timer = -1 back_to_menu_cd = 36 back_to_menu_timer = -1 keys = {} grid_w, grid_h = 23, 20 border_col = 13 border_blink_seq = {13, 4, 8, 4} border_blink_index = 1 border_blink_timer = 0 fruit_x, fruit_y = -99, -99 fruit_pause = 0.11 fruit_spr = 18 fruit_flip = false step_timer = 0 death_an_step_dur = 6 death_an_step_timer = 0 prev_tail_last_pos_x, prev_tail_last_pos_y = -1, -1 tail_pulse_indexes = {} dur_b4_gover_draw = 36 b4_gover_draw_timer = 0 gover_border_blink_seq = {13, 8, 2, 1, 2, 8} gover_border_blink_index = 1 gover_border_blink_timer = 0 play_msg_blink_seq = {7, 15, 5, 2, 5, 15} play_msg_step_dur = 2 play_msg_index = 1 play_msg_timer = 0 main_menu_droplets = {} cur_trauma = 0 ptcs = {} txts_displays = {} pulse_x, pulse_y = 0, 0 pulse_min, pulse_max = 99 pulse_col, pulse_speed = 7 function start_game() init_snk() spawn_fruit() game_state = "play" set_shake(0) end function key_down(k) return keys[k] & 2 == 2 end function eat_fruit() add_fruit_eat_ptcs() pulse_grid(fruit_x, fruit_y, 7, 3) add_txt_display("+1", fruit_x*5, fruit_y*5, fruit_x*5 + snk_dir_x*15, fruit_y*5 + snk_dir_y*15, {7, 7, 10, 5, 2}, 12) spawn_fruit(true) sfx(0) end function spawn_fruit(with_ptcs) local found_pos = false while not found_pos do fruit_x = flr(rnd(grid_w)) + 1 fruit_y = flr(rnd(grid_h)) + 1 found_pos = true for t = 1, #tail do if(fruit_x == tail[t].x and fruit_y == tail[t].y) or (fruit_x == snk_x and fruit_y == snk_y) then found_pos = false break end end end fruit_spr = flr(18 + rnd(3)) fruit_flip = rnd() > 0.5 if with_ptcs then add_txt_display("β™₯", fruit_x*5, fruit_y*5, fruit_x*5, fruit_y*5 - 10, {7, 7, 8, 1}, 18) add_fruit_spawn_ptcs() end end function kill_snake() game_state = "gover_anim" tail_pulse_indexes = {} fruit_x, fruit_y = -99, -99 if (snk_dir_x == 1) snk_spr = 4 if (snk_dir_x == -1) snk_spr = 3 if (snk_dir_y == 1) snk_spr = 5 if (snk_dir_y == -1) snk_spr = 2 add_shake(0.1) sfx(4) death_anim_step_timer = 0 b4_gover_draw_timer = 0 pulse_min, pulse_max = 99, 99 end function add_fruit_eat_ptcs() for p = 0,7 do local alpha = rnd() add_ptc( fruit_x*5 + 5, fruit_y*5 + 5, sin(alpha)*2 + rnd(), cos(alpha)*2 + rnd(), 0, 9, {7, 12, 6, 7}) end end function add_fruit_spawn_ptcs() for p = 0,15 + rnd(10) do local alpha = rnd() add_ptc( fruit_x*5 + 5, fruit_y*5 + 5, sin(alpha) * (4 + rnd(2)), cos(alpha) * (4 + rnd(2)), 0, 6, {7}) end end function add_ptc(x, y, dir_x, dir_y, t, max_age, col_seq) local ptc = { x = x, y = y, dir_x = dir_x, dir_y = dir_y, t = t, age = 0, max_age = max_age, col_seq = col_seq} add(ptcs, ptc) end function add_shake(trauma) cur_trauma = mid(0, cur_trauma + trauma, 1) end function add_snk_death_ptc(x, y) for p = 0, 10 do local alpha = rnd() add_ptc(x*5 + 5, y*5 + 5, sin(alpha)*2, cos(alpha)*2, 0, 9, {8, 9, 10, 15, 7}) end end function add_snk_self_bite_ptcs() for p = 0, 15 + rnd(10) do local alpha = 0 if (snk_dir_x == -1) alpha = 180 if (snk_dir_y == 1) alpha = 270 if (snk_dir_y == -1) alpha = 90 local rnd_vector = rnd_vector_in_cone(alpha, 135) add_ptc(snk_x*5 + 3, snk_y*5 + 3, rnd_vector.x*(3 + rnd(2)), rnd_vector.y*(3 + rnd(2)), 0, 6, {8, 2}) end add_txt_display("!!!", snk_x*5 - 2, snk_y*5, snk_x*5 - 2 + snk_dir_x*10, snk_y*5 + snk_dir_y*10, {7, 7, 8, 1}, 12) end function add_txt_display(txt, x, y, dx, dy, col_seq, max_age) add(txts_displays, {txt = txt, x = x, y = y, dx = dx, dy = dy, col_seq = col_seq, timer = 0, max_age = max_age}) end function fade_pal(perc) local p = flr(mid(0, perc, 1)*100) local kmax, col, dpal dpal = { 0, 1, 1, 2, 1, 13, 6, 4, 4, 9, 3, 16, 1, 13, 14} for j = 1, 15 do col = j kmax = (p +(j*1.46)) / 22 for k = 1, kmax do col = dpal[col] end pal(j, col) end end function pulse_grid(x, y, col, speed) pulse_x, pulse_y = x, y pulse_min, pulse_max = 0, 0 pulse_col = col pulse_speed = speed end function set_shake(trauma) cur_trauma = mid(0, trauma, 1) end function rnd_vector_in_cone(angle, wideness) rnd_dir = rnd(wideness / 720) -rnd(widesness / 720) + (angle / 360) return { x = cos(rnd_dir), y = sin(rnd_dir)} end function init_keys() for k = 0, 5 do keys[k] = 0 end end function init_snk() snk_x, snk_y = 11, 10 snk_dir_x, snk_dir_y = 1, 0 snk_last_dir_x, snk_last_dir_y = snk_dir_x, snk_dir_y snk_spr = 4 step_dur, step_min, step_accel = 0.13, 0.05, 0.005 score = 0 tail={} end function init_main_menu_droplets() local possible_cols = {1, 1, 2, 13} local possible_sizes = {1, 0.5, 0.5} for d = 1,150 do add(main_menu_droplets, { x = 1 + rnd(126), y = rnd(127), dy = 0.5 + rnd(), col = possible_cols[flr(rnd(#possible_cols) + 1)], size = possible_sizes[flr(rnd(#possible_sizes) + 1)]}) end end function update_fade() if fade_perc == fade_target_perc then fading = false return end fading = true fade_timer += 1 if fade_timer > 5 then fade_perc = mid( 0, fade_perc + 0.2*sgn(fade_target_perc - fade_perc), 1) fade_timer = 0 end end function update_gover() if not fading and key_down(5) then start_game() elseif back_to_menu_timer == -1 and not fading and key_down(4) then back_to_menu_timer = 0 fade_target_perc = 1 end if back_to_menu_timer > -1 then back_to_menu_timer += 1 if back_to_menu_timer > back_to_menu_cd then game_state = "main_menu" fade_target_perc = 0 back_to_menu_timer = -1 end end end function update_main_menu() if start_timer == -1 and not fading and(key_down(5)) then start_timer = 0 fade_target_perc = 1 sfx(5) end if start_timer > -1 then start_timer += 1 if start_timer > start_cd then start_game() fade_perc = 0 fade_target_perc = 0 start_timer = -1 end end end function update_timer() timer_elapsed = (time() - timer_last) timer_last = time() end function update_keys() local key for k = 0, 5 do key = keys[k] if key == 0 then if (btn(k)) keys[k] = 3 elseif key == 1 then if (not btn(k)) keys[k] = 4 elseif key == 3 then if btn(k) then keys[k] = 1 else keys[k] = 4 end elseif key == 4 then if btn(k) then keys[k] = 3 else keys[k] = 0 end end end end function update_border_blink() if game_state != "play" or(snk_x > 1 and snk_x < grid_w and snk_y > 1 and snk_y < grid_h) then border_blink_timer = 0 border_col = 1 else border_blink_timer += 1 if border_blink_timer > 2 then border_blink_index += 1 if border_blink_index > #border_blink_seq then border_blink_index = 1 end border_blink_timer = 0 end border_col = border_blink_seq[border_blink_index] end end function update_snk() if snk_last_dir_y != 0 then if key_down(0) then snk_dir_x, snk_dir_y = -1, 0 elseif key_down(1) then snk_dir_x, snk_dir_y = 1, 0 end elseif snk_last_dir_x != 0 then if key_down(2) then snk_dir_x, snk_dir_y = 0, -1 elseif key_down(3) then snk_dir_x, snk_dir_y = 0, 1 end end step_timer += timer_elapsed if step_timer > step_dur then update_tail() if snk_dir_x != snk_last_dir_x or snk_dir_y != snk_last_dir_y then sfx(1) end snk_x += snk_dir_x snk_y += snk_dir_y snk_last_dir_x, snk_last_dir_y = snk_dir_x, snk_dir_y if snk_x < 1 or snk_y < 1 or snk_x > grid_w or snk_y > grid_h then snk_x -= snk_dir_x snk_y -= snk_dir_y kill_snake() do return end end local fruit_eaten = false if snk_x == fruit_x and snk_y == fruit_y then eat_fruit() add(tail, {x = snk_x, y = snk_y}) fruit_eaten = true end for t = 1, #tail-1 do if (snk_x == tail[t].x and snk_y == tail[t].y) or (snk_x == prev_tail_last_pos_x and snk_y == prev_tail_last_pos_y) then kill_snake() add_shake(0.1) add_snk_self_bite_ptcs() do return end end end if fruit_eaten then score += 1 step_dur = mid(step_min, step_dur - step_accel, 99) add_shake(0.054) add(tail_pulse_indexes, 0) step_timer =- fruit_pause else step_timer = 0 end if(snk_dir_x == 1) snk_spr = 4 if(snk_dir_x == -1) snk_spr = 3 if(snk_dir_y == 1) snk_spr = 5 if(snk_dir_y == -1) snk_spr = 2 end for p = 1,#tail_pulse_indexes do if(tail_pulse_indexes[p] > -1) then tail_pulse_indexes[p] += ceil(#tail / 12) if tail_pulse_indexes[p] > #tail then tail_pulse_indexes[p] = -1 end end end end function update_snk_death_anim() death_an_step_timer += 1 death_an_step_dur -= 0.05 death_an_step_dur = mid(1, death_an_step_dur, 99) if death_an_step_timer > death_an_step_dur then if #tail > 0 then add_snk_death_ptc(tail[#tail].x, tail[#tail].y) pulse_grid(tail[#tail].x, tail[#tail].y, 10, 5) del(tail, tail[#tail]) death_an_step_timer = 0 set_shake(0.075) sfx(2) else game_state = "gover" death_an_step_dur = 6 set_shake(0.15) pulse_grid(snk_x, snk_y, 8, 2) sfx(3) end end end function update_tail() if #tail > 1 then prev_tail_last = tail[#tail-1] prev_tail_last_pos_x, prev_tail_last_pos_y = prev_tail_last.x, prev_tail_last.y end for t = #tail, 2, -1 do tail[t] = tail[t-1] end if #tail > 0 then tail[1] = {x = snk_x, y = snk_y} end end function update_ptcs() local ptc for p = #ptcs, 1, -1 do ptc = ptcs[p] ptc.age += 1 if ptc.age > ptc.max_age then del(ptcs, ptcs[p]) else ptc.col = ptc.col_seq[ 1 + flr((ptc.age / ptc.max_age)*#ptc.col_seq)] ptc.x += ptc.dir_x ptc.y += ptc.dir_y end end end function update_pulse() if pulse_min < 99 then pulse_max += pulse_speed pulse_min = pulse_max - 2 end end function update_shake() local shake_x = (8 - rnd(16))*cur_trauma local shake_y = (8 - rnd(16))*cur_trauma camera(shake_x, shake_y) cur_trauma *= 0.95 if cur_trauma < 0.05 then cur_trauma = 0 end end function update_txts_displays() for t in all(txts_displays) do t.x += (t.dx - t.x) / 5 t.y += (t.dy - t.y) / 5 t.timer += 1 if t.timer > t.max_age then del(txts_displays, t) end end end function draw_fruit() local offset = 0 if timer_last*4 % 2 < 1 then offset = 1 end spr(fruit_spr, fruit_x*5, fruit_y*5 - offset, 1, 1, fruit_flip) end function draw_grid() rectfill(0, 0, 127, 127, 0) update_border_blink() local grid_rect_bx = grid_w*5 + 7 local grid_rect_by = grid_h*5 + 7 rectfill(4, 4, grid_rect_bx, grid_rect_by, 0) rect(4, 4, grid_rect_bx, grid_rect_by, border_col) for x = 1, grid_w do for y = 1, grid_h do local col = 1 if pulse_min < 99 then local pulse_dist = sqrt( (x - pulse_x)*(x - pulse_x) + (y - pulse_y)*(y - pulse_y)) if pulse_dist < pulse_max and pulse_dist > pulse_min then col = pulse_col end end if game_state == "play" or game_state == "game_over_anim" and pulse_min > 4 then if sqrt((x - snk_x) * (x - snk_x) + (y - snk_y) * (y - snk_y)) < 3.5 then col = 2 end end if game_state == "play" and pulse_min > 4 then if sqrt((x - fruit_x) * (x - fruit_x) + (y - fruit_y) * (y - fruit_y)) < 2.5 then col = 2 end end pset(x*5 + 3, y*5 + 3, col) end end end function draw_snk() for t = 1, #tail do local spr_index = 1 for pulse in all(tail_pulse_indexes) do if t == pulse then spr_index = 17 end end spr(spr_index, tail[t].x*5 + 1, tail[t].y*5 + 1) end if game_state == "play" or game_state == "gover_anim" then spr(snk_spr, snk_x*5 + 1, snk_y*5 + 1) end end function draw_gover() if not fading and game_state == "gover" then b4_gover_draw_timer += 1 if b4_gover_draw_timer > dur_b4_gover_draw then gover_border_blink_timer += 1 if gover_border_blink_timer > 2 then gover_border_blink_index += 1 if gover_border_blink_index > #gover_border_blink_seq then gover_border_blink_index = 1 end gover_border_blink_timer = 0 end local col = gover_border_blink_seq[gover_border_blink_index] rectfill(10, 45, 117, 67, 0) rect(10, 45, 117, 67, col) print("game over! score:" ..score, 30, 48, 7) print("❎ play again", 30, 54, 7) print("πŸ…ΎοΈ back to menu", 30, 60, 7) end end end function draw_main_menu() play_msg_timer += 1 if play_msg_timer > play_msg_step_dur then play_msg_index += 1 if play_msg_index > #play_msg_blink_seq then play_msg_index = 1 end play_msg_timer = 0 end local play_msg_col = play_msg_blink_seq[play_msg_index] rectfill(0, 0, 127, 127, 0) for d = 1, #main_menu_droplets do droplet = main_menu_droplets[d] droplet.y += droplet.dy if main_menu_droplets[d].y > 129 then droplet.x = 1 + rnd(126) droplet.y = -1 droplet.dy = 0.5 + rnd() end circfill(droplet.x, droplet.y, droplet.size, droplet.col) end rectfill(18, 20, 109, 92, 0) rect(20, 22, 107, 90, 1) spr(80, 30, 30, 9, 4) print("by deborah.", 32, 64, 1) print("computer science", 32, 70, 1) if not fading then print("press ❎ to play", 32, 77, play_msg_col) end end function draw_score() if game_state == "play" then print("score:"..score, 48, 115, 7) end end function draw_txts_displays() for t in all(txts_displays) do local col = t.col_seq[ 1 + flr((t.timer / t.max_age)*#t.col_seq)] print(t.txt, t.x, t.y, col) end end function draw_ptcs() for p = 1, #ptcs do local ptc = ptcs[p] if ptc.t == 0 then pset(ptc.x, ptc.y, ptc.col) end end end __gfx__ 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000cccc0000c6c00000c6c00000c66c0000000000000000000000000000000000000000000000000000000000000000000000000000000000 0070070000cccc000c0cc0c00c0ccc000ccc0c000cccccc000000000000000000000000000000000000000000000000000000000000000000000000000000000 000770000c7ccc6006cccc600cccc60006cccc0006cccc6000000000000000000000000000000000000000000000000000000000000000000000000000000000 000770000ccccc600cccccc00cccc60006cccc000c0cc0c000000000000000000000000000000000000000000000000000000000000000000000000000000000 00700700001cc10000c66c000c0ccc000ccc0c0000cccc0000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000660000000000000c6c00000c6c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000033000000bb0000000b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000006666000003000000303000088332000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000067666700888e00000300870087882000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000666667008877e0008870888088872000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000007667000888780002880288087822000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000770000288880000220000022200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000022200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 eeee777777e7777ee777777ee777777e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 eeee777777e7777ee777777ee777777e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 eeee77ee77ee77eee77ee77ee77ee77e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 eeee777777ee77eee77ee77ee77ee77e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 eeee777777ee77eee77eeeeee77ee77e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 eeee77eeeeee77eee77eeeeee77ee77e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 eeee77eeeeee77eee77eeeeee77ee77e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 eeee77eeeeee77eee77ee77ee77ee77e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 eeee77eeeee7777ee777777ee777777e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 eeee77eeeee7777ee777777ee777777e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 77777e777eeeeeee77eee77ee77e7777000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 77777e7777eeeee7777ee77ee77e7777000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 77eeee7777eeee77777ee77ee77e77ee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 77eeee77e77eee777e77e77ee77e77ee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 77eeee77e77eee77ee77e77e777e77ee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 77777e77ee77ee77ee77e777777e77ee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 77777e77ee77ee777777777777ee7777000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 eee77e77ee77e7777777777777ee7777000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 eee77e77ee77e77eeee7777e777e77ee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 eee77e77ee77e77eeee7777e777e77ee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 77777e77ee77e77eeeee777eee7777ee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 77777e77ee77e77eeeee777eee777777000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 __sfx__ 000100002405027050230502105023050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000700001435018350183500130004300193001930019300013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000900000d150111500e1500010020100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000800001d3501b350183501435013350103500e35002350035002470025700027000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000700002435023350203501d35019350143500e35009350063500335002350023500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0010000018450194501b4501d4501f450000002145023450254502645000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000