►
Description
Broadcasted live on Twitch -- Watch live at https://www.twitch.tv/rhyolight_
A
A
We
are
going
to
add
colors
we're
either
gonna,
add
colors
if
it's
on
we're
gonna,
add
the
color
for
that
type
of
thing.
Whatever
we're
doing,
and
so
we
don't
need
to
push
we're
just
gonna,
say
color
and
we're
gonna.
Let
the
color
equal
off
color,
which
is
white,
set
off
clear,
don't
have
an
off
color.
A
B
A
A
A
A
A
B
A
A
A
A
A
A
A
A
That
and
the
day
of
month,
color
and
after
I
get
this
I.
Think
I
can
just
take
all
these
away
that
day
of
month.
Color
is
this
all
right,
so
I
got
colors,
got
scalar
encoding
day
of
week
encoding.
So
at
this
point
we
should
have
an
encoding
with
a
bunch
of
colors
in
it.
Most
of
them
are
gonna,
be
white.
A
B
B
A
Right,
so
guess
what
you
guys
now,
it's
time
to
do
some
d3
I,
think
cuz.
We
got
this
array,
we
got
this
array
in
the
format
we
want.
I
mean,
let's
just
take
a
look
at
it.
It
should
be
yeah,
there's
the
other
values
in
their
spaces,
so
we
should
be
able
to
pretty.
A
A
D
A
A
Excuse
me
so
yeah,
so
this
is
all
fine
we're
gonna
get
to
this
in
a
moment.
We're
not
gonna
have
a
number
line
or
value,
but
you
will
have
outfits
cells.
I.
Don't
need
to
do
that.
Okay,
those
are
our
coders.
That's
the
off
color,
okay,
we're
not
using
precision
around.
Are
we
and
I
don't
think
we
will
be
using
precision
around.
A
C
A
I'll,
do
it
over
the
command
line,
and
then
so
our
combined
spera,
the
spatial
polar
pooling
page,
is
now
pulling
in
the
combined
encoder
putting
it
in
place.
We
don't
need
this
anymore.
Actually,
I'm
gonna
leave
that
just
cuz
I
like
seeing
it
change.
It
gives
me
a
visual
confirmation
that
data
is
moving
in
case.
This
thing.
A
A
A
A
A
A
A
A
A
A
A
Ok,
diagram
with
an
inner
and
are
important
I,
don't
know
that
we're
gonna
need
these
linear
scales.
Maybe
we
will
probably
will
actually,
but
we
won't
need
the
min
and
Max
scale
we'll
need
the
bits
the
output
display,
1
yeah,
so
we'll
only
need
a
scale
that
goes
from
0
to
n,
but
that's
not
that's,
not
sure.
I,
don't
know
that
we'll
need
these
scales.
A
A
Okay,
some
set
the
encoding
once
we
call
in
code
so
we're
giving
ourselves
an
encoding,
and
so
because
we
did
that,
let's
say
encoding
equals
undefined.
Initially,
we'll
have
an
undefined
encoding
as
soon
as
it's
updated.
That's
when
the
encode
will
be
called
because
we
know
we
have
a
time
and
a
value.
At
that
point,
all
the
encoding
happens.
Then
we
have
an
encoding
array
which
has
colors
in
it
and
so
now
we're
going
to
render
your
output
cells.
A
A
A
So
we
need
to
that's
a
constant,
so
width,
and
so
this
is
going
to
be
the
cell
width.
This
is
not
dynamic.
This
is
always
going
to
be
the
same
and
then
the
height
is
also
going
to
be
the
cell
width
because
we're
going
to
because
we're
doing
squares.
So
everybody
follow
me,
I'm
not
talking
to
you,
okay,
so
we're
going
to
create
yet
another
data
array.
We're
gonna,
take
the
data
array
that
we
got
and
we're
gonna
add
X&Y
to
it
and
actually
I'm
not
gonna.
Do
that
I've
just
decided
I'm,
not
gonna.
A
Do
that
I'm
gonna!
Do
this
completely
dynamically?
We're
not
going
to
put
this
in
a
data
array
we're
going
to
do
it
based
on
the
index
of
the
cell.
This
is
this
should
be
X.
This
should
be
Y
and
we're
gonna.
So
we're
going
to
decide
X.
So
what
we're
doing
here,
if,
since,
if
you're
I'll
draw
it
out
for
you
all
right,
so
what
we're
doing
here
is:
let's
do
this
with
some
squares.
B
A
Then
again,
so
every
single
treat
rect
that
we're
coding
here
is
going
now.
We
need
to
decide
like
what
is
the
X,
and
this
isn't
right
wait
so
for
each
one
of
these
cells
like
for
this
one,
for
example,
it's
going
to
run
this
function
and
we're
gonna
see
like
okay,
we're
at
index
43.
What
is
the
X?
What
X
should
this
be
so
like
for
this
for
this
cell
here?
A
If
this
is
the
one
we're
looking
at,
we
might
drop
in
and
say:
1
2
3
4
5
6
7
8
9,
10,
11,
12,
13
14,
your
index
is
14
and
you
need
to
return
the
x
value
where
this
needs
to
be
drawn,
and
you
need
to
return
the
Y
value
where
this
needs
to
start
drawing.
So
that's
essentially
what
we're
doing
here
the
boundaries
depending
on
the
screen
size,
I,
haven't
decided
this
the
boundary.
Yet
what
it
will
decide
what
it
will
describe
depend
on
is
diagram.
A
Size,
know,
diagram,
width,
all
right,
so
we're
so
we
want
to
decide
if
we're
beyond
the
diagram
width.
If
we
are,
we
will
bump
down
to
the
next
row
or
we're
going
to
decide
the
x
and
y
essentially
dynamically.
So
the
X
is
pretty
easy,
I
think
so.
I
don't
need
the
datapoint
all
I'm,
really
all
I
really
care
about
is.
Let's
let
me
show
you
this.
First
of
all,
so
you
can
see
it
working
because
it's
it's
easy
if
you
just
return
x
and
y.
A
Well,
I
mean
I
have
to
decide
now
I'd
like
this
to
be
roughly
square.
So
so
probably
what
I
want
to
do
is
is
decide
how
many
rows
that
I
want
rose
up
and
down
not
columns,
because
I
know
I
wanted
to
set
how
many
columns
I
want
and
that's
gonna
depend
on.
I
could
just
take
the
the
square
floor
of
the
square
root
of
and
I
think
and
call
that.
That's
how
many
that's
how
many
rows
or
columns
it
doesn't
matter
so
row
count.
That's
not
a
count.
It's
just
rows
equals
math.floor
math.random.
A
So,
okay!
So
the!
Why
is
the
tricky
bit?
The
X
is
the
easy
bit,
so
the
so
I
can
tell
what
how
how
wide
this
we
should
be
now,
based
on
how
many
rows
I
have
so
with
is
diagram
with
divided
by
ropes.
Okay,
so
that's
start
cell
width.
So
now
I
need
to
tell
X.
So
if
I'm
the
first
thing
then
I
is
going
to
be
0
and
X
is
also
going
to
be
0.
So
if
I
just
return
I,
it's
it's
gonna,
look
silly,
but
let's
do
it.
Let's
do
it
for
a
moment.
A
C
A
New
Rex
I
sure
can
okay,
so
we're
gonna
enter
this
data.
This
this
basically
I've
sort
of
explained
this
before
this
is
a
d3
thing.
We're
gonna
select
the
rectangles
on
the
pages.
Don't
exist
yet
we're
going
to
bind
them
to
this
data
and
then
we're
going
to
tell
them
tell
d3
as
new
rectangles
are
created,
based
on
that
data,
append
a
new
rekt
and
then
treat
the
cells
appropriately,
which
is
what
I'm
doing
here
when
they
are
removed.
A
If
the
data
changes
and
there's
less
elements
than
those
will
be
removed,
I
don't
I
did
a
lot
of
code
without
actually
anything
working.
So
yeah
I
don't
expect
this
to
work.
It
never
works
the
first
time.
Does
it
so
rekt
attributed
width,
so
I've
got
a
not
a
number
for
width,
so
cell
width
is
not
a
number,
so
this
isn't
working.
So,
let's
get
let's
put
a
debugger
here.
A
D
B
A
A
B
D
A
B
C
D
A
B
B
A
A
A
A
A
A
Thanks,
okay,
so
where
were
we
everything's,
not
a
number?
That's
where
we're
at
so
oh
right,
I,
remember,
we
were
at
remember,
outputs
up
component
did
update,
but
props
are
undefined,
so
I
can't
call
I
thought
this
would
only
call
it
probably
calls
on
the
initial
update,
so
I
just
have
to
ignore
it.
If
there's
no
value
yeah.
A
Hold
on
it
has
data
I'm,
just
not
using
it
properly.
Okay,
don't
worry
it's
my
fault,
this
yeah
yeah
I'm,
not
sending
it
diagram
with
or
in
that's
the
problem,
but
no
I'm
expecting
I
need
to
send
a
diagram
with
and
I
need
to
calculate
n.
That's
that's
the
issue.
Okay,
so
in
my
spatial
pooler's
pooling
page
I'm
going
to
send
it
a
diagram
with
I
think
I've
been
using
the
same
whichever
one
I'm
using
for
numbers.
A
A
For
it
does
anybody
know
why
it
did
that
I
do
because,
because
we're
just
we're
just
rendering
by
index
they.
A
A
B
A
A
A
A
A
A
A
D
D
A
That's
cool,
I
didn't
even
know:
whoops
I
broke
it
I
had
no
idea.
You
could
do
that
so
easily,
but
this
is
pretty
much
exactly
what
we're
gonna
be
making
and
and
then
we'll
tweak
the
sizes
of
things
so
that
it
sort
of
makes
sense
and
but
but
I'm
gonna.
Do
this
part
of
that
stuff?
You
were
just
doing
manually.
Where
are
you
just
saying
the
grid
size
so
I
have
to
decide.
Do
I
need
to
drop
down
to
another
row
for
the
for
the
Y
or
not
that's.
Essentially,
the
X
is
easy.
A
I've
done
this
so
many
times
before
that
it
should
be
really
easy
to
do
by
now,
but
I
always
have
to
do
this
mental
arithmetic.
You
know
to
to
figure
out.
You
know
at
what
point
do
I,
but
for
right
now,
if
I
just
want
the
x
value,
no
matter
what
my
index
is,
I
I
want
to
divide
the
index
by
the
number
of
columns.
There
are
first
of
all
this
could
be
rose.
This
could
be
columns,
let's
call
it
columns.
Let's
call
it
columns.
Why
can't
I
rename
this
element?
A
A
A
Cell
width
and
that's
gonna
be
X
there
we
go
all
right,
so
our
Y
is
still
wrong,
but
the
x's
are
right.
So
it's
not
too
hard
to
do
this.
You
just
I
just
always
have
to
think
it
through
first.
So
obviously,
the
X's
looked
good
if
I
change
the
diagram
size,
if
I
make
this
300
or
something
it
should
snap
to
the
right
size
and
it
does
okay.
A
A
A
A
A
C
B
A
Here's
our
combined
encoding
dynamically
updating,
let's
speed
it
up,
it's
always
more
fun
when
you
speed
it
up
with
that.
Okay,
and
if
we
change
this,
so
I've
got
it.
So
the
scalar
encoding
is
taking
up
most
of
the
space
here
and
then
like
this
one,
which
is
probably
hour
of
day,
is
hardly
taking
up
any.
A
So
we
can
change
all
this
to
our
hearts
content
here
in
how
we
configure
close
some
of
this
stuff
down
how
we
configure
the
combined
encoding
honestly,
eventually
I
might
pass
this
in
as
a
parameter,
but
I
don't
really
care
it
for
the
time
being
so
I'm
gonna
get
rid
of
this,
so
don't
need
to
orient
it
or
orient
any
d3
scaling
or
anything.
Here's
the
stuff
I
could
change.
So
if
I
want
this
to
be
smaller,
I
could
make
this
60
I
could
I
could
make
this
take
up
less
space
in
the
encoding.
A
I
could
make
the
let's
make
the
hour
of
Dakin
encoder.
Let's
make
these
more
important
so
make
this
like
40
and
make
the
hour
of
day
really
important,
we'll
make
it
a
hundred,
and
it's
going
to
take
up
dirty
bits
all
right
so
now,
so
you
can
see
how
we've
we've
changed
the
way
time
and
the
scalar
values
being
encoded
by
changing
the
parameters.
We've
waited
it
more
heavily
now
to
the
time
of
day,
which
is
taking
up
a
big
part
of
the
space.
If
I
mean
I
could
make
this
time
of
day
huge.
A
C
A
What
happened
here
we
go,
I
don't
need
to
do
this
anymore.
Cuz
I've
got
it
it's
being
updated,
it's
beautiful!
How
come
the
hours
not
always
the
same
length?
Well,
I,
keep
changing
it.
Don't
I
I,
keep
I
mean
I,
just
changed
it
to
like
400.
Is
that
what
you
mean
right
here?
It's
or
a
thousand
I
could
make
it
ten
thousand.
A
A
A
It
looks
like
they're
all
this:
they
should
all
be
the
same
size
as
W.
Doesn't
change
in
the
life
of
an
encoder
W
should
all
be
the
same.
So
this
is
the
w-4
one.
This
is
a
w-4
other.
This
W
is
very
big.
If
I
made
all
the
double
use,
one,
for
example,
there
will
just
be
one
of
each
except
for
what
I
missed.
Oh
the
scalar
value,
encoder
I
didn't
do
that
with
what.
D
A
The
scaler
encoder
the
next
one,
it's
the
order
in
which
the
in
which
I'm
encoding
them,
so
it's
scaler
day
of
wheat
day
of
month
weekend.
So
this
is
Dave
week.
It's
got
three
bits
on
day
of
month
has
five
bits
on,
and
one
of
them
is
over
here
notice
that
it's
because
it
wraps
is
it?
Maybe
that's
what
you
noticed.
The
lengths
changing
this
one's
got
seven
bits
on,
and
this
one
would
I
did
it.
A
A
A
C
A
A
D
A
B
A
I'll,
do
I
think
I
need
to
add
a
just
some
gutters
or
buffers
or
something
around
this.
So
it's
I'm
not
using
the
diagram
with
to
decide
how
many
rows
and
columns
I'm
having
I'm
using
sort
of
a
padded
value,
so
I'll
do
what
I've
what
I
did
on
some
of
the
other
ones,
which
was
just
like,
add
a
gutter,
something
like
that
or
padding
or
something.
A
A
Three
five:
this
is
like
nine,
okay,
okay,
I'm
happy
with
this
I'm
gonna
change
the
encoding
sphere,
so
so
for
the
scalar
encoder
honestly,
with
riskier.
If
we're
encoding
a
scalar
value,
I
think
I
would
want
to
wait
the
actual
value
higher
than
I
would
the
time
associated
with
it.
You
may,
or
you
may
not
it's
up
to
it's
up
to
you
day
of
week.
A
Now
one
thing
you
might
note
the
day
of
week:
encoder
is
a
category
encoder,
so
there's
no
every
value
is
discrete.
There's
no
overlap
between
Monday
or
Tuesday.
All
right.
It's
not
a
continuous
day
of
week.
Encoder,
it's
a
categorical,
discrete
encoder,
so
so
like
Tuesdays,
will
not
be
semantically
similar
to
Wednesday's.
If
you
wanted
something
like
that,
you
wouldn't
use
this
encoder
you'd
use
a
cyclic
encoder.
In
fact,
we
could
even
do
that.
I'll
show
you
how
it
works.
We
could.
A
A
Then
we
can
make
it
whatever
you
know,
whatever
we
want,
but
it's
going
to
be
zero
to
six
I
think
it
should
work
so
now,
the
day
of
week,
which
is
one
two,
the
third
one
down
this
one,
it's
gonna
scoot
a
little
bit
at
a
time.
It's
not
gonna!
It's
not
gonna
jump
right.
It
shouldn't
jump
from
one
or
the
other.
I!
Don't
see
you
moving
at
all,
though,
why
isn't
it
moving
something's
wrong?
Cuz,
it's
not
moving
in,
but
oh
that's
the
weekend.
Encoder
sorry.
A
A
A
B
A
A
A
A
Would
have
to
get
rid
of
the
days
thing
and
just
use
the
actual
integer
day
and
there
we
go,
and
now
this
should
move
ahead.
Oh
it's
not
doing
what
I
wanted.
I
I
know
why
I
know
why
I
know
and
I
hold
on
hold
on,
because
I've
got
it
spread
too
too
wide
I
only
have
seven
categories,
and
so
it's
jumping.
So
if
I
make
this
smaller
like,
if
I
make
this
14,
then
it's
then
I
should
get
some
overlap.
There
we
go
now
we
get
some
overlap,
all
right,
yeah.
So
now
it's
creeping!
A
Alright,
it's
not
it's,
not
jumping
every
value
is
semantically.
So
in
this
case
monday
is
semantically
similar
to
tuesday.
I
don't
know
which
one
you
want.
It
depends
so
I'm
gonna
use
the
continuous
one.
I
think
that
that's
more
of
like
time
of
week
versus
discrete
day
of
week,
I'm
gonna
use
the
continue
and
continuous
one
now
and
we'll
take
this
one
out
all
right.
You.
A
A
A
C
A
A
Let
me
take
that
back,
there's
a
difference,
but
if
you
decide
to
do
a
discrete
and
coding
or
an
hourly
encoding
there's
a
difference.
Monday
is
different.
If
it's
late
in
the
late
on
Monday
early
Tuesday
might
be
semantically
similar
in
some
cases
and
not
in
others,
depending
on
how
you
encode
it.
If
you
use
the
discrete
day
in
coding,
they
will
not
be
semantically
similar.
You
know,
11:59
Monday
will
have
no
similarity
with
12:01
Tuesday
unless
you
do
it
in
the
hourly.
A
C
C
B
C
A
I
mean
I,
think
I
agree
with
you,
but
my
point
is
you:
may
there
may
be
reasons
to
encode
it
discrete
sometimes
and
not
discrete
other
times,
and
there's
a
similarity
between
there's
a
difference
between
time
of
day
and
just
day
and
and
you
you
might
want
to
encode
both
or
not
it
just.
It
depends
on
what
you're
trying
to
do.
C
A
A
A
A
B
A
A
All
right,
so
here's
here's,
what
we're
trying
to
get
to
we've
got
a
good
portion
of
this
left
part.
This
left
parts
pretty
much
done.
We
we
need
to
do
the
right
state,
so
we'll
be
working
on
this,
which
should
be
easy.
We
just
need
a
trigger
a
switch
of
some
kind,
and
this
is
going
to
be
a
UI
element
that
doesn't
affect
any
global
data
at
all.
A
Let's
get
rid
of
this
stuff,
this
could
be.
Actually
maybe
you
will
do
this
outside
of
it.
It
could
just
be
a
state
of
the
component.
We
could
make
it
a
react,
input,
that's
a
toggle
and
it
just
sets
the
state
whether
it's
combined
or
not.
That
would
be
easiest,
I,
think
and
I'm
sure
that
there's
some
react,
toggle
components
out
there
that
we
can
easily
take
advantage
of.
A
A
So
this
should
still
work
alright,
so
now
I'm
going
to
set
up
I'm
just
going
to
catch
that
and
decide
whether
so
now,
it's
time
to
do
a
little
color
cleanup,
I'm
gonna,
get
rid
of
some
of
this
continuous
stuff.
I
was
doing
just
because
it's
in
the
way
I
just
wanted
to
show
how
you
might
do
that
and
then
I'm
gonna
I
think
I'm
going
to
establish
a
couple
like
variables
to
set
up
colors.
A
Like
this,
this
off
color
I'm
gonna
change
that
to
white.
No,
no,
no,
oh
wow
wow.
What
the
heck
hold
on
I
think
my
BS
code
I
think
something's
wrong
with
every
time.
I
try
and
rename
anything.
It
tells
me
I
can't
do
it
now:
it's
working!
Alright,
okay,
I'm
gonna,
actually
name
these
colors,
the
Dave.
So
the
scaler
encoder.
B
A
A
A
B
A
A
A
It
isn't
Google
have
a
Google.
Has
they
have
like
a
color
picker
now
purple
hex
code
I
swear
that
Google
did
this.
If
you
right,
if
you
search
for
like
purple
or
something
like
that,
no
I
thought
I
swear
that
it
at
some
point,
I
searched
for
purple
hex
hex
code
hexadecimal
that
Google
like
pops,
something
up
automatically.
A
A
D
A
A
B
A
A
A
Oh,
it's
defaulted
when
I
first
learned
Java,
that
was
one
of
the
first
thing.
I
learned
was
my
any
local
variables,
I'm,
just
gonna
call
it
my
whatever
it
was.
The
global
variable
name
I
always
hated
that
like
what
that
seems
so
silly
to
call
something
my
variable
okay.
But
what
should
I
call
this?
A
A
A
A
You
had
a
gray
or
color,
but
I'm
calling
it
a
combined
this.
The
thing
that
it's
displaying
is
whether
the
input
is
combined
or
not
so
I'm
going
to
call
it
a
combine.
The
state
is
combined,
true
or
false.
If
it's
true,
we'll
show
it
all
gray,
because
it's
all
the
same,
if
not
we'll,
show
it
actually
we're
going
to
start
with
false
on
change
value
set
state's
value.
A
A
And
then
I
just
have
to
just
I
know:
I
just
have
to
use
it
in
the
combined
encoding,
cuz
I
hold
on
hold
on
well
I'm,
not
I'm,
actually
not
using
it
yet
so
now,
I
have
to
use
it.
Toggle
cycle
I
can
cover,
for
example
of
this.
So
if
I
add
this,
underneath
of
it
toggle
combined
input,
I
should
get
a
toggle
button
of
some
kind.
A
B
A
A
B
A
C
A
A
A
A
Basically,
I
was
expecting
it
to
be
true
or
false,
so
all
I
need
to
do
is
just
let
me
just
leave
this
exactly
what
it
was,
because
it's
fine
and
in
here
in
the
combined
encoding
I'm
going
to
get
the
combined
and
instead
of
this
combined
I'm
just
going
to
say
if
combined
equals
combined,
it's
right
now
it's
combined!
Now
it's
not
combine
combined
check
it
out.
We
have
a
combined
encoder.
A
Okay,
that's
great
I'm,
happy
I
am
happy.
So,
okay,
so
I'm
gonna,
I'm
gonna
wrap
the
stream
up
in
a
bit.
If
you
guys
want
to
rate
anyone
go
check
out
who's
streaming
and
let
me
know
who
you
want
to
read:
I
am
going
to
put
a
label
over
this
for
now.
In
the
meantime,
just
so
spatial
pooling
prototype
page
and
then
we'll
have.
A
A
We
did.
We
didn't
do
this
bit,
which
is
fine.
We
do
that
some
other
time
we
got
the
auto-generated
data
to
load
and
we've
got
it
running
a
combined
encoding
diagram.
This
is
great
because
it's
proven
to
me
that
I
could
have
a
data
source
on
the
page
that
can
push
any
diagrams
that
I
want.
That
can
push
data
at
any
diagrams
that
I
want
on
the
page.
This
is
prettier,
isn't
it
so
that
makes
me
happy.
A
A
A
Think
I
showed
you
guys
this
already
potential
pools,
so
we're
gonna
start
with
what
we
just
did
this
bit
a
combined
encoding,
that's
and-
and
it's
going
to
be
sort
of
the
backdrop
for
the
next
visualization
we're
gonna
we're
going
to
be
rendering
Rex
on
Rex.
So
we'll
have
all
these
Rex
representing
the
input,
the
combined
input
in
gray
and
over
top
of
it
we're
gonna,
be
rendering
the
potential
pools
in
a
different
color.
A
What
you
see
here,
these
yellow
that's
those-
are
all
potential
pools,
so
we're
going
to
render
potential
pools
for
a
particular
mini
column,
so
we're
gonna
have
to
create
a
mini
column
array
and
create
potential
pools
for
each
mini
column.
Overtop
of
this
input
space
we
just
created
with
the
combined
encoding
and
then
on
click,
so
we're
gonna
have
a
mouse-over
interaction
that
add
onmouseover.
You
see
different
potential
pools,
one
for
whatever
a
mini
column,
you're
you're,
looking
at
and
on
click
will
show.
D
A
Show
you
an
input
that
overlapped
that
potential
pool
and
that
will
be
observed
by
that
mini
column
for
that
moment
in
time
and
the
ignored
input,
which
is
overlap
or
non
overlapping
input
from
the
that
is
ignored,
and
hopefully
this
will
be.
This
will
make
sense
once
we
get
to
that
point.
So
that's
gonna
be
next.
That's
that's!
What
we're
gonna
do
next
week
on
Thursday,
so
a
week
from
today
we're
gonna
get
into
spatial.
Pooling
will
do
so.
We'd
burn
your.
A
A
A
A
Thank
you.
Everybody
for
joining
the
stream.
Don't
forget
to
follow
the
page
if
you
haven't
already,
if
you're
enjoying
this
content
here
and
if
you're
watching
on
youtube.
Please,
like
the
video
and
subscribe
to
my
youtube
channel,
all
right,
we're
gonna
go
read:
Cosmo
quest
thanks
everybody
for
joining,
have
a
wonderful
rest
of
your
week.