Skip to content

Instantly share code, notes, and snippets.

@ironcladlou
Created May 2, 2019 02:13
Show Gist options
  • Save ironcladlou/c7dcb145c1997b2d2b863d887475161f to your computer and use it in GitHub Desktop.
Save ironcladlou/c7dcb145c1997b2d2b863d887475161f to your computer and use it in GitHub Desktop.
Chicks
pico-8 cartridge // http://www.pico-8.com
version 18
__lua__
-- global
debug={
enabled=true,
show={
data=false,
timers=true,
},
data={},
}
function debug:print(s)
if(not self.enabled) return
print(s)
end
function debug:report(key, data)
if(not self.enabled) return
self.data[key]=data
end
function debug:draw_data()
if(not self.enabled) return
if(not self.show.data) return
for key, data in pairs(self.data) do
print(key..": "..data)
end
end
world={
objects={},
object_count=0,
}
function world:create(obj)
self.object_count+=1
obj.id="obj"..self.object_count
self.objects[obj.id]=obj
debug:report("world.object_count", self.object_count)
return obj
end
function world:destroy(obj)
self.objects[obj.id]=nil
debug:report("world.object_count", self.object_count)
end
animations={
chick_idle_e={i=0,len=2,jitter=10},
chick_idle_w={i=0,len=2,jiter=10,flip_x=true},
kid_idle_e={i=16,len=2,jitter=10},
kid_idle_w={i=16,len=2,jitter=10,flip_x=true},
adult_idle_e={i=32,len=2,jitter=7},
adult_idle_w={i=32,len=2,jitter=7,flip_x=true},
egg_idle_e={i=48,len=2,jitter=3},
egg_idle_w={i=48,len=2,jitter=3},
}
chicken={}
function chicken:new()
self.__index = self
return setmetatable({
position={},
motion={
vel=vector:new(1, 0),
acc=vector:new(0, 0),
},
sprite={},
anim={},
lifecycle={
name="adult",
duration=3,
},
}, self)
end
function age(o)
local lifecycle=o.lifecycle
local name=lifecycle.name
local t=lifecycle.timer
if not t then
t=timer:new(lifecycle.duration)
lifecycle.timer=t
end
t:update()
if(not t.done) return
local current=lifecycle.name
if current=="adult" then
o.lifecycle={
name="kid",
duration=3,
}
elseif current=="kid" then
o.lifecycle={
name="chick",
duration=3,
}
elseif current=="chick" then
o.lifecycle={
name="egg",
duration=3,
}
elseif current=="egg" then
-- todo
end
end
function meander(o)
local motion=o.motion
local anim=o.anim
local lifecycle=o.lifecycle
local heading=motion.vel:heading()
local motion_class="idle"
if motion.acc.x != 0 or motion.acc.y != 0 then
motion_class="walk"
end
local key=lifecycle.name.."_"..motion_class.."_"..heading
local meta=animations[key]
debug:report("meander:key."..o.id, key)
debug:report("meander:meta.i."..o.id, meta.i)
if anim.id!=key then
o.anim=animation:new(key, meta)
end
end
function animate(o)
o.anim:update()
o.sprite.i=o.anim.sprite.i
o.sprite.flip_x=o.anim.sprite.flip_x
o.sprite.flip_y=o.anim.sprite.flip_y
end
function render(o)
local sprite=o.sprite
local position=o.position
spr(sprite.i, position.x,
position.y, 1, 1, sprite.flip_x)
end
animation={}
function animation:new(id, meta)
self.__index=self
return setmetatable({
id=id,
meta=meta,
i=0,
offset=0,
sprite={},
}, self)
end
function animation:update()
self.i+=1
local spd=0
if self.meta.jitter then
spd=flr(rnd(self.meta.jitter)+1)
else
spd=self.meta.spd
end
if(self.i%(30/spd)==0) then
self.offset+=1
self.i=0
end
if(self.offset>=self.meta.len) self.offset=0
self.sprite.i=self.meta.i+self.offset
self.sprite.flip_x=self.meta.flip_x
self.sprite.flip_y=self.meta.flip_y
end
-->8
-- init
function _init()
for i=1,5 do
local c=chicken:new()
c.position=rnd_position(119, 119)
world:create(c)
end
end
-->8
-- update
function _update()
local chikn={}
for id, o in pairs(world.objects) do
if(o.lifecycle) add(chikn, o)
end
foreach(chikn, age)
foreach(chikn, meander)
end
-->8
-- draw
function _draw()
cls()
cursor(0, 0)
color(7)
map(0,0, 0,0)
local animated={}
local renderable={}
local chikn={}
for id, o in pairs(world.objects) do
if(o.lifecycle) add(chikn, o)
if(o.anim) add(animated, o)
if(o.sprite) add(renderable, o)
end
debug:report("draw.chikn", #chikn)
debug:report("draw.animated", #animated)
debug:report("draw.renderable", #renderable)
foreach(animated, animate)
foreach(renderable, render)
if(debug.enabled) foreach(chikn, print_timer)
if(debug.enabled) foreach(chikn, print_lifecycle)
if(debug.enabled) foreach(chick, print_anim)
debug:draw_data()
end
function print_timer(o)
local t=o.lifecycle.timer
if(not t) return
print(t.seconds, o.position.x-2, o.position.y-2, 3)
reset_cursor()
end
function print_lifecycle(o)
print(o.lifecycle.name, o.position.x+5, o.position.y-2, 3)
reset_cursor()
end
function print_anim(o)
print(o.anim.id, o.position.x-2, o.position.y-2, 7)
reset_cursor()
end
function reset_cursor()
cursor(0, 0)
color(7)
end
-->8
-- utils
compass={
e="e",ne="ne",n="n",nw="nw",
w="w",sw="sw",s="s",se="se",
}
vector={}
function vector:new(x, y)
self.__index=self
return setmetatable({
x=x,
y=y,
}, self)
end
function vector:string()
return "x="..self.x..",y="..self.y
end
function vector:heading()
local v=self
if(v.x==1 and v.y==0) return compass.e
if(v.x==1 and v.y==-1) return compass.ne
if(v.x==0 and v.y==-1) return compass.n
if(v.x==-1 and v.y==-1) return compass.nw
if(v.x==-1 and v.y==0) return compass.w
if(v.x==-1 and v.y==1) return compass.sw
if(v.x==0 and v.y==1) return compass.s
if(v.x==1 and v.y==1) return compass.se
end
function rnd_position(max_x, max_y)
return {
x=flr(rnd(max_x)),
y=flr(rnd(max_y)),
}
end
timer={}
function timer:new(seconds)
self.__index = self
return setmetatable({
seconds=seconds,
done=false,
}, self)
end
function timer:update()
if(self.done) return
if(not self.i) self.i=0
self.i+=1
if self.i % 30 == 0 then
self.seconds -= 1
if self.seconds <= 0 then
self.seconds=0
self.done=true
end
end
end
__gfx__
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbbbbbb
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b3bbbbbbbbbbbbbb
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbbbbbb
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbbbbbb
0000a00000000a000000a0000000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbbbbbb
00aac9000000aa0000aac90000aac90000000000000000000000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbb3bbb
000aa0000006aca0000aa000000aa00000000000000000000000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbbbbbb
0006d0000006d9000006d000000d600000000000000000000000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbbbbbb
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbbbbbb
0000088000000000000008800000000000000880000000000000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbbbbbb
0000870000700000000087000000088000008700000008800000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbbbbbb
07007c900070000007007c900700870007007c90070087000000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbbbbbb
07777800007700000777780007777c900777780007777c900000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbbbbbb
0077700000777780007770000077780000777000007778000000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbb3bbbb
006d0000006d8c78006d0000006d000000d60000006d00000000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbbbbbb
0006d0000006d9080600d000000600000d00600000d600000000000000000000000000000000000000000000000000000000000000000000bbbbbbbbbbbbbbbb
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00088800000000000008880000000000000888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
70007c800007000070007c807008880070007c807008880000000000000000000000000000000000000000000000000000000000000000000000000000000000
77777799007600087777779977777c807777779977777c8000000000000000000000000000000000000000000000000000000000000000000000000000000000
07776780077677780777678007777799077767800777779900000000000000000000000000000000000000000000000000000000000000000000000000000000
00667700007777c80066770000666780006677000066678000000000000000000000000000000000000000000000000000000000000000000000000000000000
00940000009489800094000000940000004900000094000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00094000000949000900400000090000040090000049000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00067000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00677700006777000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
06777770067777700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
06777770677777770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
06777770677777770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00d77d000dd777d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000dd000000ddd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
__map__
1e1e1e1e0e1e1e1e1f1e1e1e1e1e1e1e0f1e1e1e0e1e1e1e1f1e1e1e1e1e1e0f1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1f1e1e1e1e1e1e0f1e1e0e1e1e1e1e1e1f1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e
1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1f1e1e1e1e1e1e0f1e1e0e1e1e1e1e1e1f1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e
1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e0e1e1e0f1e1e1e1e1e1e0f1e1e1e1e1e1e0f0f1e1e1e0f1e1e1e1e1e1e1e1e1e0e0f1e1e1e0f
1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e0e1e1e1e1f1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e0f1e1e1e
1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e
1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1f1e1e
1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e
1e1e1e1e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e0e
1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e
0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0f1e1e0e1e1e1e1e1e1f1e1e1e1e1e1e0f1e1e0e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e
1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e0f1e1e0e1e1e1e1e1e1f1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e
1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f
1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e
1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1f1e1e1e1e0f1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e0f1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e
0e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1f
1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1f1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e
1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e
1e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e
0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e
1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e0f1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e
1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e0e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e
1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e0e0f
1f1e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1f1e1e1e0f1e1e1e1e1e1e1e1f1e1e1e1e1f1e1e0f1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e0e1e1e1e1f1e1e1e1e1f1e1e
1e1e1f1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1f
1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1f1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e0e1e1e1e1e1e
1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e
0e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e1e1e0e1e0e1e1f1e1e1e1e1e0e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e1e1e1e0e1e1e1e1f1e1e1e1e1e0e1e1e
1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e
1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1f0f1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e0e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0e1e1e1e1e1e
1e1e0e1e1e0e1e1e0e1e1e0e1e1e0e1e1e0e1e1e0e1e1e0e1e1e1e1e1e0e1e1e0e1e1e1e1e1e1e1e1e0e1e1e0e1e1e1e1e1e0e1e1e1e1e1e0e1e1e0e1e1e1e1e1e0e1e1e0e1e0e1e1e0e1e1e0e1e1e0e1e1e0e1e1e0e1e1e1e1e1e1e1e1e0e1e1e0e1e1e0e1e1e0e1e1e0e1e1e0e1e1e1e1e1e0e1e0e1e1e0e1e1e0e1e1e1e1e
1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1e1e1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1e1e1e1f1e1e1f1e1e1f1e1e1e1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1e1e1e1f1e1e1f1e1e1f1e1e1f1e1e1f1e1e1e1e1e1f1e1e1e1e1f1e1e1f1e1e1f1e1e
0f1e1e1e1e1e1e1f1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1f1f1e1e1e1e1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e0f1e1e1e1e0f1e1e1e1e1e0f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1f1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e1e
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment