# Documentation - These files are never code.
README(\..*)?$, Docs
NOTICE$, Docs
VERSION$, Docs
BUILD$, Docs
DISCLAIMER, Docs
CHANGELOG$, Docs
\.md$, Docs
\.txt$, Docs
\.placeholder$, Empty

# Uncommentable files
#
# These files cannot contain comments, so no header can be added.
# They are nevertheless covered by the Apache license.
\.gitignore$, Apache
\.mailmap$, Apache
\.gitattributes$, Apache
\.classpath$, Apache
\.pmd$, Apache
\.project$, Apache
RobotoSlab-Bold\.ttf$, Apache
RobotoSlab-Regular\.ttf$, Apache
\.cfg$, Apache
\.json$, Apache
\.webmanifest, Apache
\.csv$, Apache
\.conf$, Apache
\.prop$, Apache
\.test$, Apache
\.config(\.example)?$, Apache
/\.bowerrc$, Apache
/\.jshintrc$, Apache
\.traffic_ops$, Apache # JSON with a specific format.
\.dist$, Apache # JSON with a specific format.
traffic_monitor_config\.js$, Apache # Actually JSON with a specific format.
CrStates$, Apache # JSON with a specific format.
^docs/.*\.(png|jpe?g|ico|gif)$, Apache
^blueprints/.*\.(png|jpe?g|ico|gif)$, Apache
favicon.(ico|png)$, Apache
^traffic_ops/experimental/goto/testFiles/, Apache
cron\.d/[^/]*$, Apache
\.pem$, Apache # Single certificate file.
traffic_router/core/src/test/resources/api/2.0/cdns/name/thecdn/sslkeys(-missing-1)?, Apache #JSON files with no extension
traffic_router/core/src/test/resources/api/2.0/steering*, Apache
traffic_router/core/src/test/resources/api/2.0/federations/all, Apache
BUILD_NUMBER$, Apache

# Images, created for this project or used under an Apache license.
^misc/traffic-control-cdn/images/atc_logo\.png, Apache
^misc/traffic-control-cdn/images/header_bkgd\.png, Apache
^misc/traffic-control-cdn/images/main_bkgd\.png, Apache
^misc/traffic-control-cdn/images/tc_logo\.png, Apache
^misc/traffic-control-cdn/images/traffic_monitor_logo\.png, Apache
^misc/traffic-control-cdn/images/traffic_operations_logo\.png, Apache
^misc/traffic-control-cdn/images/traffic_portal_logo\.png, Apache
^misc/traffic-control-cdn/images/traffic_router_logo\.png, Apache
^misc/traffic-control-cdn/images/traffic_stats_logo\.png, Apache
^misc/logos/ATC-PNG\.png, Apache
^misc/logos/ATC-PNG-FULL-BLACK\.png, Apache
^misc/logos/ATC-PNG-FULL-BLACK-LARGE\.png, Apache
^misc/logos/ATC-PNG-FULL-WHITE\.png, Apache
^misc/logos/ATC-PNG-FULL-WHITE-LARGE\.png, Apache
^misc/logos/ATC-PNG-LARGE\.png, Apache
^misc/logos/ATC-SVG\.sketch, Apache
^misc/logos/ATC-SVG-FULL\.sketch, Apache
^misc/logos/page_logos/trafficLogoFactory\.psd, Apache
^misc/logos/page_logos/traffic_monitor_logo\.png, Apache
^misc/logos/page_logos/traffic_operations_logo\.png, Apache
^misc/logos/page_logos/traffic_portal\.png, Apache
^misc/logos/page_logos/traffic_router_logo\.png, Apache
^misc/logos/page_logos/traffic_stats_logo\.png, Apache
^misc/logos/page_logos/traffic_stats_logo_red\.png, Apache

# Demo certificates
ssl\.(crt|key)$, Apache
/keystore, Apache
COMODO.*\.crt$, Apache

# Uncommentable files
#
# These files cannot contain comments, but are covered by separate
# licenses. These licenses must be documented in the root LICENSE file.
Inconsolata\.ttf$, SIL OFL 1.1
Inconsolata-Bold\.ttf$, SIL OFL 1.1
[Ff]ont[Aa]wesome[^\.]*\.([ot]tf|eot|woff2?)$, SIL OFL 1.1
Lato-Bold\.ttf$, SIL OFL 1.1
Lato-Regular\.ttf$, SIL OFL 1.1
ssl-bundle\.crt$, MPL
^traffic_portal/app/src/assets/images/sort_, MIT

# Code dependencies
#
# These files could bear headers, but are part of dependent code and
# so we present them for the most part unmodified. These licenses must
# be documented in the root LICENSE file.
[Ff]ont[Aa]wesome[^\.]*\.css, MIT
select2.css, Apache
select2.css, GPL/LGPL
j[Mm]enu.*\.(css|js), MIT
sphinx_rtd_theme/.*\.(html|css|css\.map|js|py)$, MIT
bootstrap-theme\.css\.map, MIT
datatables\.min, MIT
GeoLite2-City.mmdb.gz, CC-A-SA
jquery\.tree\.min\.css$, MIT
jquery\.dataTables\..*\.(css|js)$, MIT
github\.com/basho/backoff/.*, MIT
github\.com/dchest/siphash/.*, CC0
github\.com/pkg/errors\..*, BSD
traffic_portal/app/src/assets/js/chartjs/angular-chart\..*, BSD
traffic_portal/app/src/assets/css/jsonformatter\..*, Apache
traffic_portal/app/src/assets/js/jsonformatter\..*, Apache
traffic_portal/app/src/assets/js/fast-json-patch\..*, MIT
traffic_portal/app/src/assets/css/colReorder.dataTables\..*, MIT
traffic_portal/app/src/assets/js/colReorder.dataTables\..*, MIT
traffic_portal/app/src/assets/js/dataTables.buttons\..*, MIT
traffic_portal/app/src/assets/js/buttons.html5\..*, MIT
traffic_ops/traffic_ops_golang/vendor/github\.com/dgrijalva/.*, MIT
traffic_ops/traffic_ops_golang/vendor/github\.com/lestrrat-go/.*, MIT

# Ignored - Do not report.
\.DS_Store, Ignore # Created automatically OSX.
\.dependency_license$, Ignore # False positives in this file.

# This file is created dynamically by the testing script itself, it is
# not distributed, but if it were, it would be Apache, and the source
# would be right with it.
^infrastructure/test/license/license, Apache

# Don't object to licenses in the license file itself.
^LICENSE$, !GoBSD
^LICENSE$, !MIT
^LICENSE$, !BSD
^LICENSE$, !X11
^LICENSE$, !ISC

# ... or in the documentation about the licenses.
^infrastructure/test/license/README.md$, !BSD
^infrastructure/test/license/README.md$, !GPL/LGPL
^infrastructure/test/license/README.md$, !MIT
^infrastructure/test/license/README.md$, !WTFPL
^infrastructure/test/license/README.md$, !X11

# License files are licensed under their own terms, don't attempt to detect them.
^licenses/.*, Ignore

# False positives
licenseList\.go$, !GoBSD
licenseList\.go$, !MIT
licenseList\.go$, !BSD
licenseList\.go$, !X11
^traffic_ops/app/t_integration/extensions\.t$, !X11
GeoLite2-City.mmdb.gz, !MIT
