# Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.

# Blank lines and comments are ignored.
# Comments can also be inline like 'correct # this is ok'.
# Note that at least one space before the hash is required.

a0x
a1x
a2x
aa
aaa
abc
abcompile
across
actions
affected
albeit
alive
allocations
anon
app
approval
approximation
arity
asserter
auth
autobianchi
b0x
b1x
b2x
ba
backed
bash
bat
batch
bbb
bc
bench
benchmark
besides
beta
bigger
blindly
blocked
blorp
bootstrap
bots
bowtie
brave
brown
builddir
bulk
bulk2
bulkcompile
c's
cafebabe
callable
camel
capitalized
casing
cc
ccc
charcode
charset
checkout
circular
cli
cloneable
cmp
cnn
coded
codepath
collisions
commit
companion
comparisons
compilations
compiler's
complement
completers
completes
confirm
consecutive
considering
constrains
consts
contract
conversion
conversions
crashes
cumulative
dacoharkes
daemon
dangling
dartanalyzer
dartfile
dashes
day
db
def
depended
depfile
deviation
dfast
dictionaries
dictionary
differs
dillfile
dirname
disagree
disconnect
discovering
dispatcher
doctype
doesnt
dog
downcasts
downstream
dumping
dupe
durations
dyn
e's
e2e
ease
ec
edits
efficient
elapse
ell
entrypoint
entrypoints
epoch
err
everytime
evicting
excludes
exe
execute
exercised
exercises
exitcode
exiting
exits
expanded
expands
expansion
expansive
explain
extern
fac
falling
favors
fibonacci
filenames
filesystem
finder
fisk
five
floor
forbidden
forces
foreign
fox
framework
fulfill
func
futures
gallery
gamma
gen
generation
generators
glb
greeting
gtgt
gulp
gunk
hackish
harness
hello
hest
heuristics
hi
hints
home
hosting
hot
hotreload
hunk
hurray
i'm
ia
ikg
illustrate
implementor
inclosure
increased
incrementally
individual
insertion
inspect
insufficient
intact
internet
interpolate
inv
invalidating
invariants
isolate
isolates
iter
iterations
jumped
ko
la
lacks
largest
lc
ld
le
lets
lightly
likewise
linebreaks
linux
listening
ll
logd
logs
loopback
lots
lub
mac
maker
matters
mc
measured
metric
metrics
mf
micro
mismatched
miss
misspelled
mistake
mistakes
month
mx
mysdk
negatable
ninja
nonexisting
notion
nullary
numerator
observable
observatory
oh
okay
oracle
overlay
parametrized
party
pause
periodic
periodically
person
phrase
pink
places
policy
portions
pp
preliminary
prematurely
pretends
producer
profiler
promotes
prop
propagated
protected
provider
pure
pv
px
py
quick
quot
r"\s
rd
reachability
reality
recompile
redir
redirections
reducer
referring
reflectee
reflective
regenerate
regressions
reload
repeating
repo
repro
resource
respected
response
retains
rev
say
scans
screen
scripts
secondary
seconds
segment
shadowed
shipped
shot
signalled
simplify
site
somewhat
spans
spell
spellcheck
spelled
spelling
spent
splitting
sqrt
statics
std
str
strip
strongest
structures
stub's
subcommand
subscription
subtool
subtools
suite
sum
summarization
summarized
superinterface
supermixin
supplement
swapped
tags
team
templates
terminator
tester
thereof
thing
threw
timeout
timer
timing
timings
title
toplevel
tpt
transforming
transitively
translation
triangle
trigger
triggers
trimming
trivially
truncated
tt
txt
typeargs
typeparam
typeparambounds
unassigned
unawaited
unbreak
unification
unordered
unreachable
unregistered
untransformed
uppercase
upward
usr
usual
val
variants
verbatim
versa
versioning
vice
vm's
vs
waiting
walt
wanted
warmup
weird
whitelist
whitelisting
wins
workflow
x's
xxx
y's
year
