# eclipse conf file
.settings
.classpath
.project
.manager
.scala_dependencies
.cache

# idea conf files
.idea
*.iml
*.ipr
*.iws

# building
target
[Bb]uild/
null
tmp
temp
dist
test-output
build.log
release
out
gen
local.properties

#Apache Flex Projects
lib/
libs/
in/
swfobject/
flex2/
thirdparty/
META-INF/
tempDoc/
air/

*.pbj
*.vms
*.ser
*.mxp
bundles.properties
css_*.properties
FXGException_*.properties
FXGLog_*.properties
FABridge.js
frameworks/projects/spark/manifest.xml
env.properties
local.properties
packages.dita
rat.report
airsdk.xml

#OS junk files
[Tt]humbs.db
*.DS_Store

#Visual Studio files
*.[Oo]bj
*.user
*.aps
*.pch
*.vspscc
*.vssscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.[Cc]ache
*.ilk
*.log
*.lib
*.sbr
*.sdf
ipch/
obj/
[Bb]in
[Dd]ebug*/
!debugger/
modules/debugger/classes/
[Rr]elease*/
Ankh.NoLoad

#Tooling
_ReSharper*/
*.resharper
[Tt]est[Rr]esult*

#CVS files
.svn
.git

# Office Temp Files
~$*

#Binaries
*.dll
*.bin
*.com
*.exe
*.class
*.jar
*.swf
*.swc

#Compressed Files
*.zip
*.rar
*.tar

/asdoc-output/

#mustellarunner
*.patch
*.reply
mailbody.txt
gitstatus.txt

#AIR SDK
frameworks/projects/air/
runtimes/
templates/air/
samples/badge/
samples/icons/
templates/air/
templates/extensions/
templates/sdk/
install/android
AIR SDK Readme.txt
AIR SDK license.pdf
air-sdk-description.xml
samples/descriptor-sample.xml
include/FlashRuntimeExtensions.h
visualcomps

#FlexUnit tests
test-reports
FlexUnitCompilerApplication.mxml