From c907885420178fa2d4f652c5b0237966d4af1c69 Mon Sep 17 00:00:00 2001 From: Sam Vervaeck Date: Mon, 8 Apr 2024 20:08:15 +0200 Subject: [PATCH] Make C++ implementation the main implementation --- .gitignore | 18 +- .vscode/launch.json | 16 +- .../cxx/.vscode => .vscode}/settings.json | 0 {bootstrap/cxx/.vscode => .vscode}/tasks.json | 0 .../cxx/CMakeLists.txt => CMakeLists.txt | 0 bootstrap/cxx/README.md => CONTRIBUTING.md | 0 bootstrap/cxx/.gitignore | 18 - bootstrap/cxx/.vscode/launch.json | 17 - bootstrap/cxx/deps/zen | 1 - bootstrap/js/compiler/.gitignore | 11 - bootstrap/js/compiler/package-lock.json | 169 - bootstrap/js/compiler/package.json | 33 - bootstrap/js/compiler/src/analysis.ts | 201 - bootstrap/js/compiler/src/bin/bolt.ts | 227 -- bootstrap/js/compiler/src/c.ts | 387 -- bootstrap/js/compiler/src/checker.ts | 2478 ------------ bootstrap/js/compiler/src/constraints.ts | 171 - bootstrap/js/compiler/src/cst.ts | 3459 ----------------- bootstrap/js/compiler/src/diagnostics.ts | 667 ---- bootstrap/js/compiler/src/emitter.ts | 201 - bootstrap/js/compiler/src/index.ts | 36 - bootstrap/js/compiler/src/js.ts | 196 - bootstrap/js/compiler/src/parser.ts | 1376 ------- bootstrap/js/compiler/src/passes/BoltToC.ts | 90 - bootstrap/js/compiler/src/passes/BoltToJS.ts | 14 - .../compiler/src/passes/TypeclassDictPass.ts | 93 - bootstrap/js/compiler/src/program.ts | 77 - bootstrap/js/compiler/src/scanner.ts | 551 --- bootstrap/js/compiler/src/scope.ts | 190 - .../src/test/eager-solving-global.bolt | 6 - .../src/test/enum-declaration-app.bolt | 15 - .../src/test/enum-declaration-maybe.bolt | 10 - .../compiler/src/test/mutual-recursion-2.bolt | 16 - .../compiler/src/test/mutual-recursion.bolt | 8 - .../compiler/src/test/nested-definitions.bolt | 6 - .../src/test/return-types-polymorphic.bolt | 6 - .../js/compiler/src/test/tuple-access.bolt | 5 - bootstrap/js/compiler/src/test/typecheck.md | 271 -- .../src/test/unify-similar-records.bolt | 18 - bootstrap/js/compiler/src/types.ts | 654 ---- bootstrap/js/compiler/src/util.ts | 262 -- bootstrap/js/compiler/tsconfig.json | 20 - bootstrap/js/package-lock.json | 190 - bootstrap/js/package.json | 10 - cmake/Modules/FindLLVM.cmake | 205 + .../deps => deps}/googletest/.clang-format | 0 .../.github/ISSUE_TEMPLATE/00-bug_report.md | 0 .../ISSUE_TEMPLATE/10-feature_request.md | 0 .../.github/ISSUE_TEMPLATE/config.yml | 0 .../googletest/.github/workflows/gtest-ci.yml | 0 .../cxx/deps => deps}/googletest/.gitignore | 0 .../cxx/deps => deps}/googletest/BUILD.bazel | 0 .../deps => deps}/googletest/CMakeLists.txt | 0 .../deps => deps}/googletest/CONTRIBUTING.md | 0 .../cxx/deps => deps}/googletest/CONTRIBUTORS | 0 .../cxx/deps => deps}/googletest/LICENSE | 0 .../cxx/deps => deps}/googletest/README.md | 0 .../cxx/deps => deps}/googletest/WORKSPACE | 0 .../googletest/ci/linux-presubmit.sh | 0 .../googletest/ci/macos-presubmit.sh | 0 .../deps => deps}/googletest/docs/_config.yml | 0 .../googletest/docs/_data/navigation.yml | 0 .../googletest/docs/_layouts/default.html | 0 .../googletest/docs/_sass/main.scss | 0 .../deps => deps}/googletest/docs/advanced.md | 0 .../googletest/docs/assets/css/style.scss | 0 .../docs/community_created_documentation.md | 0 .../cxx/deps => deps}/googletest/docs/faq.md | 0 .../googletest/docs/gmock_cheat_sheet.md | 0 .../googletest/docs/gmock_cook_book.md | 0 .../googletest/docs/gmock_faq.md | 0 .../googletest/docs/gmock_for_dummies.md | 0 .../deps => deps}/googletest/docs/index.md | 0 .../googletest/docs/pkgconfig.md | 0 .../googletest/docs/platforms.md | 0 .../deps => deps}/googletest/docs/primer.md | 0 .../googletest/docs/quickstart-bazel.md | 0 .../googletest/docs/quickstart-cmake.md | 0 .../googletest/docs/reference/actions.md | 0 .../googletest/docs/reference/assertions.md | 0 .../googletest/docs/reference/matchers.md | 0 .../googletest/docs/reference/mocking.md | 0 .../googletest/docs/reference/testing.md | 0 .../deps => deps}/googletest/docs/samples.md | 0 .../googletest/googlemock/CMakeLists.txt | 0 .../googletest/googlemock/README.md | 0 .../googletest/googlemock/cmake/gmock.pc.in | 0 .../googlemock/cmake/gmock_main.pc.in | 0 .../googletest/googlemock/docs/README.md | 0 .../googlemock/include/gmock/gmock-actions.h | 0 .../include/gmock/gmock-cardinalities.h | 0 .../include/gmock/gmock-function-mocker.h | 0 .../googlemock/include/gmock/gmock-matchers.h | 0 .../include/gmock/gmock-more-actions.h | 0 .../include/gmock/gmock-more-matchers.h | 0 .../include/gmock/gmock-nice-strict.h | 0 .../include/gmock/gmock-spec-builders.h | 0 .../googlemock/include/gmock/gmock.h | 0 .../include/gmock/internal/custom/README.md | 0 .../internal/custom/gmock-generated-actions.h | 0 .../gmock/internal/custom/gmock-matchers.h | 0 .../gmock/internal/custom/gmock-port.h | 0 .../gmock/internal/gmock-internal-utils.h | 0 .../include/gmock/internal/gmock-port.h | 0 .../include/gmock/internal/gmock-pp.h | 0 .../googletest/googlemock/src/gmock-all.cc | 0 .../googlemock/src/gmock-cardinalities.cc | 0 .../googlemock/src/gmock-internal-utils.cc | 0 .../googlemock/src/gmock-matchers.cc | 0 .../googlemock/src/gmock-spec-builders.cc | 0 .../googletest/googlemock/src/gmock.cc | 0 .../googletest/googlemock/src/gmock_main.cc | 0 .../googletest/googlemock/test/BUILD.bazel | 0 .../googlemock/test/gmock-actions_test.cc | 0 .../test/gmock-cardinalities_test.cc | 0 .../test/gmock-function-mocker_test.cc | 0 .../test/gmock-internal-utils_test.cc | 0 .../test/gmock-matchers-arithmetic_test.cc | 0 .../test/gmock-matchers-comparisons_test.cc | 0 .../test/gmock-matchers-containers_test.cc | 0 .../test/gmock-matchers-misc_test.cc | 0 .../googlemock/test/gmock-matchers_test.h | 0 .../test/gmock-more-actions_test.cc | 0 .../googlemock/test/gmock-nice-strict_test.cc | 0 .../googlemock/test/gmock-port_test.cc | 0 .../googlemock/test/gmock-pp-string_test.cc | 0 .../googlemock/test/gmock-pp_test.cc | 0 .../test/gmock-spec-builders_test.cc | 0 .../googlemock/test/gmock_all_test.cc | 0 .../googlemock/test/gmock_ex_test.cc | 0 .../googlemock/test/gmock_leak_test.py | 0 .../googlemock/test/gmock_leak_test_.cc | 0 .../googlemock/test/gmock_link2_test.cc | 0 .../googlemock/test/gmock_link_test.cc | 0 .../googlemock/test/gmock_link_test.h | 0 .../googlemock/test/gmock_output_test.py | 0 .../googlemock/test/gmock_output_test_.cc | 0 .../test/gmock_output_test_golden.txt | 0 .../googlemock/test/gmock_stress_test.cc | 0 .../googletest/googlemock/test/gmock_test.cc | 0 .../googlemock/test/gmock_test_utils.py | 0 .../googletest/googletest/CMakeLists.txt | 0 .../googletest/googletest/README.md | 0 .../googletest/cmake/Config.cmake.in | 0 .../googletest/googletest/cmake/gtest.pc.in | 0 .../googletest/cmake/gtest_main.pc.in | 0 .../googletest/cmake/internal_utils.cmake | 0 .../googletest/cmake/libgtest.la.in | 0 .../googletest/googletest/docs/README.md | 0 .../include/gtest/gtest-assertion-result.h | 0 .../include/gtest/gtest-death-test.h | 0 .../googletest/include/gtest/gtest-matchers.h | 0 .../googletest/include/gtest/gtest-message.h | 0 .../include/gtest/gtest-param-test.h | 0 .../googletest/include/gtest/gtest-printers.h | 0 .../googletest/include/gtest/gtest-spi.h | 0 .../include/gtest/gtest-test-part.h | 0 .../include/gtest/gtest-typed-test.h | 0 .../googletest/include/gtest/gtest.h | 0 .../include/gtest/gtest_pred_impl.h | 0 .../googletest/include/gtest/gtest_prod.h | 0 .../include/gtest/internal/custom/README.md | 0 .../gtest/internal/custom/gtest-port.h | 0 .../gtest/internal/custom/gtest-printers.h | 0 .../include/gtest/internal/custom/gtest.h | 0 .../internal/gtest-death-test-internal.h | 0 .../include/gtest/internal/gtest-filepath.h | 0 .../include/gtest/internal/gtest-internal.h | 0 .../include/gtest/internal/gtest-param-util.h | 0 .../include/gtest/internal/gtest-port-arch.h | 0 .../include/gtest/internal/gtest-port.h | 0 .../include/gtest/internal/gtest-string.h | 0 .../include/gtest/internal/gtest-type-util.h | 0 .../googletest/samples/prime_tables.h | 0 .../googletest/googletest/samples/sample1.cc | 0 .../googletest/googletest/samples/sample1.h | 0 .../googletest/samples/sample10_unittest.cc | 0 .../googletest/samples/sample1_unittest.cc | 0 .../googletest/googletest/samples/sample2.cc | 0 .../googletest/googletest/samples/sample2.h | 0 .../googletest/samples/sample2_unittest.cc | 0 .../googletest/samples/sample3-inl.h | 0 .../googletest/samples/sample3_unittest.cc | 0 .../googletest/googletest/samples/sample4.cc | 0 .../googletest/googletest/samples/sample4.h | 0 .../googletest/samples/sample4_unittest.cc | 0 .../googletest/samples/sample5_unittest.cc | 0 .../googletest/samples/sample6_unittest.cc | 0 .../googletest/samples/sample7_unittest.cc | 0 .../googletest/samples/sample8_unittest.cc | 0 .../googletest/samples/sample9_unittest.cc | 0 .../googletest/googletest/src/gtest-all.cc | 0 .../googletest/src/gtest-assertion-result.cc | 0 .../googletest/src/gtest-death-test.cc | 0 .../googletest/src/gtest-filepath.cc | 0 .../googletest/src/gtest-internal-inl.h | 0 .../googletest/src/gtest-matchers.cc | 0 .../googletest/googletest/src/gtest-port.cc | 0 .../googletest/src/gtest-printers.cc | 0 .../googletest/src/gtest-test-part.cc | 0 .../googletest/src/gtest-typed-test.cc | 0 .../googletest/googletest/src/gtest.cc | 0 .../googletest/googletest/src/gtest_main.cc | 0 .../googletest/googletest/test/BUILD.bazel | 0 .../googletest-break-on-failure-unittest.py | 0 .../googletest-break-on-failure-unittest_.cc | 0 .../test/googletest-catch-exceptions-test.py | 0 .../test/googletest-catch-exceptions-test_.cc | 0 .../googletest/test/googletest-color-test.py | 0 .../googletest/test/googletest-color-test_.cc | 0 .../test/googletest-death-test-test.cc | 0 .../test/googletest-death-test_ex_test.cc | 0 .../test/googletest-env-var-test.py | 0 .../test/googletest-env-var-test_.cc | 0 .../test/googletest-failfast-unittest.py | 0 .../test/googletest-failfast-unittest_.cc | 0 .../test/googletest-filepath-test.cc | 0 .../test/googletest-filter-unittest.py | 0 .../test/googletest-filter-unittest_.cc | 0 .../googletest-global-environment-unittest.py | 0 ...googletest-global-environment-unittest_.cc | 0 .../test/googletest-json-outfiles-test.py | 0 .../test/googletest-json-output-unittest.py | 0 .../test/googletest-list-tests-unittest.py | 0 .../test/googletest-list-tests-unittest_.cc | 0 .../test/googletest-listener-test.cc | 0 .../test/googletest-message-test.cc | 0 .../test/googletest-options-test.cc | 0 .../googletest-output-test-golden-lin.txt | 0 .../googletest/test/googletest-output-test.py | 0 .../test/googletest-output-test_.cc | 0 ...oogletest-param-test-invalid-name1-test.py | 0 ...ogletest-param-test-invalid-name1-test_.cc | 0 ...oogletest-param-test-invalid-name2-test.py | 0 ...ogletest-param-test-invalid-name2-test_.cc | 0 .../test/googletest-param-test-test.cc | 0 .../test/googletest-param-test-test.h | 0 .../test/googletest-param-test2-test.cc | 0 .../googletest/test/googletest-port-test.cc | 0 .../test/googletest-printers-test.cc | 0 .../test/googletest-setuptestsuite-test.py | 0 .../test/googletest-setuptestsuite-test_.cc | 0 .../test/googletest-shuffle-test.py | 0 .../test/googletest-shuffle-test_.cc | 0 .../test/googletest-test-part-test.cc | 0 .../test/googletest-throw-on-failure-test.py | 0 .../test/googletest-throw-on-failure-test_.cc | 0 .../test/googletest-uninitialized-test.py | 0 .../test/googletest-uninitialized-test_.cc | 0 .../googletest/test/gtest-typed-test2_test.cc | 0 .../googletest/test/gtest-typed-test_test.cc | 0 .../googletest/test/gtest-typed-test_test.h | 0 .../test/gtest-unittest-api_test.cc | 0 .../googletest/test/gtest_all_test.cc | 0 .../test/gtest_assert_by_exception_test.cc | 0 .../googletest/test/gtest_environment_test.cc | 0 .../googletest/test/gtest_help_test.py | 0 .../googletest/test/gtest_help_test_.cc | 0 .../googletest/test/gtest_json_test_utils.py | 0 .../test/gtest_list_output_unittest.py | 0 .../test/gtest_list_output_unittest_.cc | 0 .../googletest/test/gtest_main_unittest.cc | 0 .../googletest/test/gtest_no_test_unittest.cc | 0 .../test/gtest_pred_impl_unittest.cc | 0 .../test/gtest_premature_exit_test.cc | 0 .../googletest/test/gtest_prod_test.cc | 0 .../googletest/test/gtest_repeat_test.cc | 0 .../test/gtest_skip_check_output_test.py | 0 ...test_skip_environment_check_output_test.py | 0 .../gtest_skip_in_environment_setup_test.cc | 0 .../googletest/test/gtest_skip_test.cc | 0 .../googletest/test/gtest_sole_header_test.cc | 0 .../googletest/test/gtest_stress_test.cc | 0 .../gtest_test_macro_stack_footprint_test.cc | 0 .../googletest/test/gtest_test_utils.py | 0 .../googletest/test/gtest_testbridge_test.py | 0 .../googletest/test/gtest_testbridge_test_.cc | 0 .../test/gtest_throw_on_failure_ex_test.cc | 0 .../googletest/test/gtest_unittest.cc | 0 .../test/gtest_xml_outfile1_test_.cc | 0 .../test/gtest_xml_outfile2_test_.cc | 0 .../test/gtest_xml_outfiles_test.py | 0 .../test/gtest_xml_output_unittest.py | 0 .../test/gtest_xml_output_unittest_.cc | 0 .../googletest/test/gtest_xml_test_utils.py | 0 .../googletest/googletest/test/production.cc | 0 .../googletest/googletest/test/production.h | 0 .../deps => deps}/icu/APIChangeReport.html | 0 .../cxx/deps => deps}/icu/APIChangeReport.md | 0 {bootstrap/cxx/deps => deps}/icu/LICENSE | 0 .../cxx/deps => deps}/icu/as_is/bomlist.py | 0 .../cxx/deps => deps}/icu/as_is/bomlist.txt | 0 .../icu/as_is/os390/unpax-icu.sh | 0 .../deps => deps}/icu/as_is/os400/bldiculd.sh | 0 .../icu/as_is/os400/convertConfigure.sed | 0 .../deps => deps}/icu/as_is/os400/cxxfilt.cpp | 0 .../icu/as_is/os400/fixup-icu.sh | 0 .../cxx/deps => deps}/icu/as_is/os400/iculd.c | 0 .../icu/as_is/os400/unpax-icu.sh | 0 {bootstrap/cxx/deps => deps}/icu/icu4c.css | 0 {bootstrap/cxx/deps => deps}/icu/license.html | 0 .../cxx/deps => deps}/icu/packaging/PACKAGES | 0 .../cxx/deps => deps}/icu/packaging/README | 0 .../icu/packaging/distrelease.ps1 | 0 .../deps => deps}/icu/packaging/rpm/icu.spec | 0 {bootstrap/cxx/deps => deps}/icu/readme.html | 0 .../deps => deps}/icu/source/.clang-format | 0 .../cxx/deps => deps}/icu/source/Doxyfile.in | 0 .../cxx/deps => deps}/icu/source/Makefile.in | 0 .../cxx/deps => deps}/icu/source/acinclude.m4 | 0 .../cxx/deps => deps}/icu/source/aclocal.m4 | 0 ...Windows.Library.ProjectConfiguration.props | 0 ...WarningSettings.ProjectConfiguration.props | 0 .../Build.Windows.PlatformToolset.props | 0 .../Build.Windows.ProjectConfiguration.props | 0 ...ild.Windows.UWP.ProjectConfiguration.props | 0 .../Windows.CopyUnicodeHeaderFiles.targets | 0 .../icu/source/allinone/allinone.sln | 0 .../icu/source/allinone/icucheck.bat | 0 .../icu/source/common/BUILD.bazel | 0 .../icu/source/common/Makefile.in | 0 .../icu/source/common/appendable.cpp | 0 .../icu/source/common/bmpset.cpp | 0 .../deps => deps}/icu/source/common/bmpset.h | 0 .../icu/source/common/brkeng.cpp | 0 .../deps => deps}/icu/source/common/brkeng.h | 0 .../icu/source/common/brkiter.cpp | 0 .../icu/source/common/bytesinkutil.cpp | 0 .../icu/source/common/bytesinkutil.h | 0 .../icu/source/common/bytestream.cpp | 0 .../icu/source/common/bytestrie.cpp | 0 .../icu/source/common/bytestriebuilder.cpp | 0 .../icu/source/common/bytestrieiterator.cpp | 0 .../icu/source/common/caniter.cpp | 0 .../icu/source/common/capi_helper.h | 0 .../icu/source/common/characterproperties.cpp | 0 .../icu/source/common/chariter.cpp | 0 .../icu/source/common/charstr.cpp | 0 .../deps => deps}/icu/source/common/charstr.h | 0 .../icu/source/common/charstrmap.h | 0 .../icu/source/common/cmemory.cpp | 0 .../deps => deps}/icu/source/common/cmemory.h | 0 .../deps => deps}/icu/source/common/common.rc | 0 .../icu/source/common/common.vcxproj | 0 .../icu/source/common/common.vcxproj.filters | 0 .../icu/source/common/common_uwp.vcxproj | 0 .../icu/source/common/cpputils.h | 0 .../deps => deps}/icu/source/common/cstr.cpp | 0 .../deps => deps}/icu/source/common/cstr.h | 0 .../icu/source/common/cstring.cpp | 0 .../deps => deps}/icu/source/common/cstring.h | 0 .../icu/source/common/cwchar.cpp | 0 .../deps => deps}/icu/source/common/cwchar.h | 0 .../icu/source/common/dictbe.cpp | 0 .../deps => deps}/icu/source/common/dictbe.h | 0 .../icu/source/common/dictionarydata.cpp | 0 .../icu/source/common/dictionarydata.h | 0 .../icu/source/common/dtintrv.cpp | 0 .../deps => deps}/icu/source/common/edits.cpp | 0 .../icu/source/common/emojiprops.cpp | 0 .../icu/source/common/emojiprops.h | 0 .../icu/source/common/errorcode.cpp | 0 .../icu/source/common/filteredbrk.cpp | 0 .../icu/source/common/filterednormalizer2.cpp | 0 .../deps => deps}/icu/source/common/hash.h | 0 .../icu/source/common/icudataver.cpp | 0 .../icu/source/common/icuplug.cpp | 0 .../icu/source/common/icuplugimp.h | 0 .../source/common/loadednormalizer2impl.cpp | 0 .../icu/source/common/localebuilder.cpp | 0 .../icu/source/common/localematcher.cpp | 0 .../icu/source/common/localeprioritylist.cpp | 0 .../icu/source/common/localeprioritylist.h | 0 .../icu/source/common/localsvc.h | 0 .../icu/source/common/locavailable.cpp | 0 .../icu/source/common/locbased.cpp | 0 .../icu/source/common/locbased.h | 0 .../icu/source/common/locdispnames.cpp | 0 .../icu/source/common/locdistance.cpp | 0 .../icu/source/common/locdistance.h | 0 .../icu/source/common/locdspnm.cpp | 0 .../deps => deps}/icu/source/common/locid.cpp | 0 .../icu/source/common/loclikely.cpp | 0 .../icu/source/common/loclikelysubtags.cpp | 0 .../icu/source/common/loclikelysubtags.h | 0 .../icu/source/common/locmap.cpp | 0 .../deps => deps}/icu/source/common/locmap.h | 0 .../icu/source/common/locresdata.cpp | 0 .../icu/source/common/locutil.cpp | 0 .../deps => deps}/icu/source/common/locutil.h | 0 .../deps => deps}/icu/source/common/lsr.cpp | 0 .../cxx/deps => deps}/icu/source/common/lsr.h | 0 .../icu/source/common/lstmbe.cpp | 0 .../deps => deps}/icu/source/common/lstmbe.h | 0 .../icu/source/common/messageimpl.h | 0 .../icu/source/common/messagepattern.cpp | 0 .../deps => deps}/icu/source/common/msvcres.h | 0 .../deps => deps}/icu/source/common/mutex.h | 0 .../icu/source/common/norm2_nfc_data.h | 0 .../icu/source/common/norm2allmodes.h | 0 .../icu/source/common/normalizer2.cpp | 0 .../icu/source/common/normalizer2impl.cpp | 0 .../icu/source/common/normalizer2impl.h | 0 .../icu/source/common/normlzr.cpp | 0 .../icu/source/common/parsepos.cpp | 0 .../icu/source/common/patternprops.cpp | 0 .../icu/source/common/patternprops.h | 0 .../icu/source/common/pluralmap.cpp | 0 .../icu/source/common/pluralmap.h | 0 .../icu/source/common/propname.cpp | 0 .../icu/source/common/propname.h | 0 .../icu/source/common/propname_data.h | 0 .../icu/source/common/propsvec.cpp | 0 .../icu/source/common/propsvec.h | 0 .../icu/source/common/punycode.cpp | 0 .../icu/source/common/punycode.h | 0 .../deps => deps}/icu/source/common/putil.cpp | 0 .../icu/source/common/putilimp.h | 0 .../deps => deps}/icu/source/common/rbbi.cpp | 0 .../icu/source/common/rbbi_cache.cpp | 0 .../icu/source/common/rbbi_cache.h | 0 .../icu/source/common/rbbicst.pl | 0 .../icu/source/common/rbbidata.cpp | 0 .../icu/source/common/rbbidata.h | 0 .../icu/source/common/rbbinode.cpp | 0 .../icu/source/common/rbbinode.h | 0 .../icu/source/common/rbbirb.cpp | 0 .../deps => deps}/icu/source/common/rbbirb.h | 0 .../deps => deps}/icu/source/common/rbbirpt.h | 0 .../icu/source/common/rbbirpt.txt | 0 .../icu/source/common/rbbiscan.cpp | 0 .../icu/source/common/rbbiscan.h | 0 .../icu/source/common/rbbisetb.cpp | 0 .../icu/source/common/rbbisetb.h | 0 .../icu/source/common/rbbistbl.cpp | 0 .../icu/source/common/rbbitblb.cpp | 0 .../icu/source/common/rbbitblb.h | 0 .../icu/source/common/resbund.cpp | 0 .../icu/source/common/resbund_cnv.cpp | 0 .../icu/source/common/resource.cpp | 0 .../icu/source/common/resource.h | 0 .../icu/source/common/restrace.cpp | 0 .../icu/source/common/restrace.h | 0 .../icu/source/common/ruleiter.cpp | 0 .../icu/source/common/ruleiter.h | 0 .../icu/source/common/schriter.cpp | 0 .../deps => deps}/icu/source/common/serv.cpp | 0 .../deps => deps}/icu/source/common/serv.h | 0 .../icu/source/common/servlk.cpp | 0 .../icu/source/common/servlkf.cpp | 0 .../deps => deps}/icu/source/common/servloc.h | 0 .../icu/source/common/servls.cpp | 0 .../icu/source/common/servnotf.cpp | 0 .../icu/source/common/servnotf.h | 0 .../icu/source/common/servrbf.cpp | 0 .../icu/source/common/servslkf.cpp | 0 .../icu/source/common/sharedobject.cpp | 0 .../icu/source/common/sharedobject.h | 0 .../icu/source/common/simpleformatter.cpp | 0 .../icu/source/common/sources.txt | 0 .../icu/source/common/sprpimpl.h | 0 .../icu/source/common/static_unicode_sets.cpp | 0 .../icu/source/common/static_unicode_sets.h | 0 .../icu/source/common/stringpiece.cpp | 0 .../icu/source/common/stringtriebuilder.cpp | 0 .../icu/source/common/uarrsort.cpp | 0 .../icu/source/common/uarrsort.h | 0 .../deps => deps}/icu/source/common/uassert.h | 0 .../deps => deps}/icu/source/common/ubidi.cpp | 0 .../icu/source/common/ubidi_props.cpp | 0 .../icu/source/common/ubidi_props.h | 0 .../icu/source/common/ubidi_props_data.h | 0 .../icu/source/common/ubidiimp.h | 0 .../icu/source/common/ubidiln.cpp | 0 .../icu/source/common/ubiditransform.cpp | 0 .../icu/source/common/ubidiwrt.cpp | 0 .../deps => deps}/icu/source/common/ubrk.cpp | 0 .../icu/source/common/ubrkimpl.h | 0 .../deps => deps}/icu/source/common/ucase.cpp | 0 .../deps => deps}/icu/source/common/ucase.h | 0 .../icu/source/common/ucase_props_data.h | 0 .../icu/source/common/ucasemap.cpp | 0 .../icu/source/common/ucasemap_imp.h | 0 .../common/ucasemap_titlecase_brkiter.cpp | 0 .../deps => deps}/icu/source/common/ucat.cpp | 0 .../deps => deps}/icu/source/common/uchar.cpp | 0 .../icu/source/common/uchar_props_data.h | 0 .../icu/source/common/ucharstrie.cpp | 0 .../icu/source/common/ucharstriebuilder.cpp | 0 .../icu/source/common/ucharstrieiterator.cpp | 0 .../icu/source/common/uchriter.cpp | 0 .../deps => deps}/icu/source/common/ucln.h | 0 .../icu/source/common/ucln_cmn.cpp | 0 .../icu/source/common/ucln_cmn.h | 0 .../icu/source/common/ucln_imp.h | 0 .../icu/source/common/ucmndata.cpp | 0 .../icu/source/common/ucmndata.h | 0 .../deps => deps}/icu/source/common/ucnv.cpp | 0 .../icu/source/common/ucnv2022.cpp | 0 .../icu/source/common/ucnv_bld.cpp | 0 .../icu/source/common/ucnv_bld.h | 0 .../icu/source/common/ucnv_cb.cpp | 0 .../icu/source/common/ucnv_cnv.cpp | 0 .../icu/source/common/ucnv_cnv.h | 0 .../icu/source/common/ucnv_ct.cpp | 0 .../icu/source/common/ucnv_err.cpp | 0 .../icu/source/common/ucnv_ext.cpp | 0 .../icu/source/common/ucnv_ext.h | 0 .../icu/source/common/ucnv_imp.h | 0 .../icu/source/common/ucnv_io.cpp | 0 .../deps => deps}/icu/source/common/ucnv_io.h | 0 .../icu/source/common/ucnv_lmb.cpp | 0 .../icu/source/common/ucnv_set.cpp | 0 .../icu/source/common/ucnv_u16.cpp | 0 .../icu/source/common/ucnv_u32.cpp | 0 .../icu/source/common/ucnv_u7.cpp | 0 .../icu/source/common/ucnv_u8.cpp | 0 .../icu/source/common/ucnvbocu.cpp | 0 .../icu/source/common/ucnvdisp.cpp | 0 .../icu/source/common/ucnvhz.cpp | 0 .../icu/source/common/ucnvisci.cpp | 0 .../icu/source/common/ucnvlat1.cpp | 0 .../icu/source/common/ucnvmbcs.cpp | 0 .../icu/source/common/ucnvmbcs.h | 0 .../icu/source/common/ucnvscsu.cpp | 0 .../icu/source/common/ucnvsel.cpp | 0 .../icu/source/common/ucol_data.h | 0 .../icu/source/common/ucol_swp.cpp | 0 .../icu/source/common/ucol_swp.h | 0 .../icu/source/common/ucptrie.cpp | 0 .../icu/source/common/ucptrie_impl.h | 0 .../deps => deps}/icu/source/common/ucurr.cpp | 0 .../icu/source/common/ucurrimp.h | 0 .../deps => deps}/icu/source/common/udata.cpp | 0 .../icu/source/common/udatamem.cpp | 0 .../icu/source/common/udatamem.h | 0 .../icu/source/common/udataswp.cpp | 0 .../icu/source/common/udataswp.h | 0 .../icu/source/common/uelement.h | 0 .../deps => deps}/icu/source/common/uenum.cpp | 0 .../icu/source/common/uenumimp.h | 0 .../deps => deps}/icu/source/common/uhash.cpp | 0 .../deps => deps}/icu/source/common/uhash.h | 0 .../icu/source/common/uhash_us.cpp | 0 .../deps => deps}/icu/source/common/uidna.cpp | 0 .../deps => deps}/icu/source/common/uinit.cpp | 0 .../icu/source/common/uinvchar.cpp | 0 .../icu/source/common/uinvchar.h | 0 .../deps => deps}/icu/source/common/uiter.cpp | 0 .../icu/source/common/ulayout_props.h | 0 .../deps => deps}/icu/source/common/ulist.cpp | 0 .../deps => deps}/icu/source/common/ulist.h | 0 .../deps => deps}/icu/source/common/uloc.cpp | 0 .../icu/source/common/uloc_keytype.cpp | 0 .../icu/source/common/uloc_tag.cpp | 0 .../deps => deps}/icu/source/common/ulocimp.h | 0 .../icu/source/common/umapfile.cpp | 0 .../icu/source/common/umapfile.h | 0 .../deps => deps}/icu/source/common/umath.cpp | 0 .../icu/source/common/umutablecptrie.cpp | 0 .../icu/source/common/umutex.cpp | 0 .../deps => deps}/icu/source/common/umutex.h | 0 .../icu/source/common/unames.cpp | 0 .../icu/source/common/unicode/appendable.h | 0 .../icu/source/common/unicode/brkiter.h | 0 .../icu/source/common/unicode/bytestream.h | 0 .../icu/source/common/unicode/bytestrie.h | 0 .../source/common/unicode/bytestriebuilder.h | 0 .../icu/source/common/unicode/caniter.h | 0 .../icu/source/common/unicode/casemap.h | 0 .../icu/source/common/unicode/char16ptr.h | 0 .../icu/source/common/unicode/chariter.h | 0 .../icu/source/common/unicode/dbbi.h | 0 .../icu/source/common/unicode/docmain.h | 0 .../icu/source/common/unicode/dtintrv.h | 0 .../icu/source/common/unicode/edits.h | 0 .../icu/source/common/unicode/enumset.h | 0 .../icu/source/common/unicode/errorcode.h | 0 .../icu/source/common/unicode/filteredbrk.h | 0 .../icu/source/common/unicode/icudataver.h | 0 .../icu/source/common/unicode/icuplug.h | 0 .../icu/source/common/unicode/idna.h | 0 .../icu/source/common/unicode/localebuilder.h | 0 .../icu/source/common/unicode/localematcher.h | 0 .../icu/source/common/unicode/localpointer.h | 0 .../icu/source/common/unicode/locdspnm.h | 0 .../icu/source/common/unicode/locid.h | 0 .../source/common/unicode/messagepattern.h | 0 .../icu/source/common/unicode/normalizer2.h | 0 .../icu/source/common/unicode/normlzr.h | 0 .../icu/source/common/unicode/parseerr.h | 0 .../icu/source/common/unicode/parsepos.h | 0 .../icu/source/common/unicode/platform.h | 0 .../icu/source/common/unicode/ptypes.h | 0 .../icu/source/common/unicode/putil.h | 0 .../icu/source/common/unicode/rbbi.h | 0 .../icu/source/common/unicode/rep.h | 0 .../icu/source/common/unicode/resbund.h | 0 .../icu/source/common/unicode/schriter.h | 0 .../source/common/unicode/simpleformatter.h | 0 .../icu/source/common/unicode/std_string.h | 0 .../icu/source/common/unicode/strenum.h | 0 .../icu/source/common/unicode/stringoptions.h | 0 .../icu/source/common/unicode/stringpiece.h | 0 .../source/common/unicode/stringtriebuilder.h | 0 .../icu/source/common/unicode/symtable.h | 0 .../icu/source/common/unicode/ubidi.h | 0 .../source/common/unicode/ubiditransform.h | 0 .../icu/source/common/unicode/ubrk.h | 0 .../icu/source/common/unicode/ucasemap.h | 0 .../icu/source/common/unicode/ucat.h | 0 .../icu/source/common/unicode/uchar.h | 0 .../icu/source/common/unicode/ucharstrie.h | 0 .../source/common/unicode/ucharstriebuilder.h | 0 .../icu/source/common/unicode/uchriter.h | 0 .../icu/source/common/unicode/uclean.h | 0 .../icu/source/common/unicode/ucnv.h | 0 .../icu/source/common/unicode/ucnv_cb.h | 0 .../icu/source/common/unicode/ucnv_err.h | 0 .../icu/source/common/unicode/ucnvsel.h | 0 .../icu/source/common/unicode/uconfig.h | 0 .../icu/source/common/unicode/ucpmap.h | 0 .../icu/source/common/unicode/ucptrie.h | 0 .../icu/source/common/unicode/ucurr.h | 0 .../icu/source/common/unicode/udata.h | 0 .../source/common/unicode/udisplaycontext.h | 0 .../icu/source/common/unicode/uenum.h | 0 .../icu/source/common/unicode/uidna.h | 0 .../icu/source/common/unicode/uiter.h | 0 .../icu/source/common/unicode/uldnames.h | 0 .../icu/source/common/unicode/uloc.h | 0 .../icu/source/common/unicode/umachine.h | 0 .../icu/source/common/unicode/umisc.h | 0 .../source/common/unicode/umutablecptrie.h | 0 .../icu/source/common/unicode/unifilt.h | 0 .../icu/source/common/unicode/unifunct.h | 0 .../icu/source/common/unicode/unimatch.h | 0 .../icu/source/common/unicode/uniset.h | 0 .../icu/source/common/unicode/unistr.h | 0 .../icu/source/common/unicode/unorm.h | 0 .../icu/source/common/unicode/unorm2.h | 0 .../icu/source/common/unicode/uobject.h | 0 .../icu/source/common/unicode/urename.h | 0 .../icu/source/common/unicode/urep.h | 0 .../icu/source/common/unicode/ures.h | 0 .../icu/source/common/unicode/uscript.h | 0 .../icu/source/common/unicode/uset.h | 0 .../icu/source/common/unicode/usetiter.h | 0 .../icu/source/common/unicode/ushape.h | 0 .../icu/source/common/unicode/usprep.h | 0 .../icu/source/common/unicode/ustring.h | 0 .../icu/source/common/unicode/ustringtrie.h | 0 .../icu/source/common/unicode/utext.h | 0 .../icu/source/common/unicode/utf.h | 0 .../icu/source/common/unicode/utf16.h | 0 .../icu/source/common/unicode/utf32.h | 0 .../icu/source/common/unicode/utf8.h | 0 .../icu/source/common/unicode/utf_old.h | 0 .../icu/source/common/unicode/utrace.h | 0 .../icu/source/common/unicode/utypes.h | 0 .../icu/source/common/unicode/uvernum.h | 0 .../icu/source/common/unicode/uversion.h | 0 .../icu/source/common/unifiedcache.cpp | 0 .../icu/source/common/unifiedcache.h | 0 .../icu/source/common/unifilt.cpp | 0 .../icu/source/common/unifunct.cpp | 0 .../icu/source/common/uniquecharstr.h | 0 .../icu/source/common/uniset.cpp | 0 .../icu/source/common/uniset_closure.cpp | 0 .../icu/source/common/uniset_props.cpp | 0 .../icu/source/common/unisetspan.cpp | 0 .../icu/source/common/unisetspan.h | 0 .../icu/source/common/unistr.cpp | 0 .../icu/source/common/unistr_case.cpp | 0 .../icu/source/common/unistr_case_locale.cpp | 0 .../icu/source/common/unistr_cnv.cpp | 0 .../icu/source/common/unistr_props.cpp | 0 .../common/unistr_titlecase_brkiter.cpp | 0 .../icu/source/common/unistrappender.h | 0 .../deps => deps}/icu/source/common/unorm.cpp | 0 .../icu/source/common/unormcmp.cpp | 0 .../icu/source/common/unormimp.h | 0 .../icu/source/common/uobject.cpp | 0 .../icu/source/common/uposixdefs.h | 0 .../icu/source/common/uprops.cpp | 0 .../deps => deps}/icu/source/common/uprops.h | 0 .../icu/source/common/ures_cnv.cpp | 0 .../icu/source/common/uresbund.cpp | 0 .../icu/source/common/uresdata.cpp | 0 .../icu/source/common/uresdata.h | 0 .../deps => deps}/icu/source/common/uresimp.h | 0 .../icu/source/common/ureslocs.h | 0 .../icu/source/common/usc_impl.cpp | 0 .../icu/source/common/usc_impl.h | 0 .../icu/source/common/uscript.cpp | 0 .../icu/source/common/uscript_props.cpp | 0 .../deps => deps}/icu/source/common/uset.cpp | 0 .../icu/source/common/uset_imp.h | 0 .../icu/source/common/uset_props.cpp | 0 .../icu/source/common/usetiter.cpp | 0 .../icu/source/common/ushape.cpp | 0 .../icu/source/common/usprep.cpp | 0 .../icu/source/common/ustack.cpp | 0 .../icu/source/common/ustr_cnv.cpp | 0 .../icu/source/common/ustr_cnv.h | 0 .../icu/source/common/ustr_imp.h | 0 .../source/common/ustr_titlecase_brkiter.cpp | 0 .../icu/source/common/ustr_wcs.cpp | 0 .../icu/source/common/ustrcase.cpp | 0 .../icu/source/common/ustrcase_locale.cpp | 0 .../icu/source/common/ustrenum.cpp | 0 .../icu/source/common/ustrenum.h | 0 .../icu/source/common/ustrfmt.cpp | 0 .../deps => deps}/icu/source/common/ustrfmt.h | 0 .../icu/source/common/ustring.cpp | 0 .../icu/source/common/ustrtrns.cpp | 0 .../deps => deps}/icu/source/common/utext.cpp | 0 .../icu/source/common/utf_impl.cpp | 0 .../deps => deps}/icu/source/common/util.cpp | 0 .../deps => deps}/icu/source/common/util.h | 0 .../icu/source/common/util_props.cpp | 0 .../icu/source/common/utrace.cpp | 0 .../icu/source/common/utracimp.h | 0 .../deps => deps}/icu/source/common/utrie.cpp | 0 .../deps => deps}/icu/source/common/utrie.h | 0 .../icu/source/common/utrie2.cpp | 0 .../deps => deps}/icu/source/common/utrie2.h | 0 .../icu/source/common/utrie2_builder.cpp | 0 .../icu/source/common/utrie2_impl.h | 0 .../icu/source/common/utrie_swap.cpp | 0 .../deps => deps}/icu/source/common/uts46.cpp | 0 .../icu/source/common/utypeinfo.h | 0 .../icu/source/common/utypes.cpp | 0 .../icu/source/common/uvector.cpp | 0 .../deps => deps}/icu/source/common/uvector.h | 0 .../icu/source/common/uvectr32.cpp | 0 .../icu/source/common/uvectr32.h | 0 .../icu/source/common/uvectr64.cpp | 0 .../icu/source/common/uvectr64.h | 0 .../deps => deps}/icu/source/common/wintz.cpp | 0 .../deps => deps}/icu/source/common/wintz.h | 0 .../cxx/deps => deps}/icu/source/config.guess | 0 .../cxx/deps => deps}/icu/source/config.sub | 0 .../icu/source/config/Makefile.inc.in | 0 .../icu/source/config/dist-data.sh | 0 .../deps => deps}/icu/source/config/dist.mk | 0 .../icu/source/config/gmakever.mk | 0 .../icu/source/config/icu-config-bottom | 0 .../icu/source/config/icu-config-top | 0 .../icu/source/config/icu-config.1.in | 0 .../deps => deps}/icu/source/config/icu.pc.in | 0 .../icu/source/config/m4/icu-conditional.m4 | 0 .../icu/source/config/make2sh.sed | 0 .../icu/source/config/mh-aix-gcc | 0 .../deps => deps}/icu/source/config/mh-aix-va | 0 .../icu/source/config/mh-alpha-linux-cc | 0 .../icu/source/config/mh-alpha-linux-gcc | 0 .../icu/source/config/mh-alpha-osf | 0 .../deps => deps}/icu/source/config/mh-beos | 0 .../icu/source/config/mh-bsd-gcc | 0 .../deps => deps}/icu/source/config/mh-cygwin | 0 .../icu/source/config/mh-cygwin-msvc | 0 .../icu/source/config/mh-cygwin64 | 0 .../deps => deps}/icu/source/config/mh-darwin | 0 .../deps => deps}/icu/source/config/mh-haiku | 0 .../icu/source/config/mh-hpux-acc | 0 .../icu/source/config/mh-hpux-gcc | 0 .../deps => deps}/icu/source/config/mh-irix | 0 .../deps => deps}/icu/source/config/mh-linux | 0 .../icu/source/config/mh-linux-va | 0 .../deps => deps}/icu/source/config/mh-mingw | 0 .../icu/source/config/mh-mingw64 | 0 .../deps => deps}/icu/source/config/mh-mpras | 0 .../icu/source/config/mh-msys-msvc | 0 .../deps => deps}/icu/source/config/mh-os390 | 0 .../deps => deps}/icu/source/config/mh-os400 | 0 .../deps => deps}/icu/source/config/mh-qnx | 0 .../icu/source/config/mh-solaris | 0 .../icu/source/config/mh-solaris-gcc | 0 .../icu/source/config/mh-unknown | 0 .../icu/source/config/pkgdataMakefile.in | 0 .../icu/source/config/test-icu-config.sh | 0 .../icu/source/config/windows-update.sed.in | 0 .../cxx/deps => deps}/icu/source/configure | 0 .../cxx/deps => deps}/icu/source/configure.ac | 0 .../icu/source/data/BUILDRULES.py | 0 .../deps => deps}/icu/source/data/Makefile.in | 0 .../deps => deps}/icu/source/data/build.xml | 0 .../icu/source/data/cldr-icu-readme.txt | 0 .../data/dtd/cldr-35.1/common/dtd/ldml.dtd | 0 .../data/dtd/cldr-35.1/common/dtd/ldmlICU.dtd | 0 .../data/dtd/cldr-40/common/dtd/ldml.dtd | 0 .../data/dtd/cldr-40/common/dtd/ldmlICU.dtd | 0 .../source/data/dtd/cldr/common/dtd/ldml.dtd | 0 .../data/dtd/cldr/common/dtd/ldmlICU.dtd | 0 .../icu/source/data/icu4j-readme.txt | 0 .../icu/source/data/icupkg.inc.in | 0 .../data/in/coll/ucadata-implicithan.icu | Bin .../source/data/in/coll/ucadata-unihan.icu | Bin .../icu/source/data/in/icudt71l.dat | Bin .../deps => deps}/icu/source/data/in/nfc.nrm | Bin .../deps => deps}/icu/source/data/in/nfkc.nrm | Bin .../icu/source/data/in/nfkc_cf.nrm | Bin .../icu/source/data/in/pnames.icu | Bin .../icu/source/data/in/ubidi.icu | Bin .../icu/source/data/in/ucase.icu | Bin .../icu/source/data/in/uemoji.icu | Bin .../icu/source/data/in/ulayout.icu | Bin .../icu/source/data/in/unames.icu | Bin .../icu/source/data/in/uprops.icu | Bin .../icu/source/data/in/uts46.nrm | Bin .../icu/source/data/makedata.mak | 0 .../icu/source/data/makedata.vcxproj | 0 .../icu/source/data/makedata.vcxproj.filters | 0 .../icu/source/data/makedata_uwp.vcxproj | 0 .../icu/source/data/misc/icudata.rc | 0 .../icu/source/data/pkgdataMakefile.in | 0 .../icu/source/data/sprep/rfc3491.txt | 0 .../icu/source/data/sprep/rfc3530cs.txt | 0 .../icu/source/data/sprep/rfc3530csci.txt | 0 .../icu/source/data/sprep/rfc3530mixp.txt | 0 .../icu/source/data/sprep/rfc3722.txt | 0 .../icu/source/data/sprep/rfc3920node.txt | 0 .../icu/source/data/sprep/rfc3920res.txt | 0 .../icu/source/data/sprep/rfc4011.txt | 0 .../icu/source/data/sprep/rfc4013.txt | 0 .../icu/source/data/sprep/rfc4505.txt | 0 .../icu/source/data/sprep/rfc4518.txt | 0 .../icu/source/data/sprep/rfc4518ci.txt | 0 .../icu/source/data/sprep/sprepfiles.mk | 0 .../icu/source/data/unidata/CaseFolding.txt | 0 .../data/unidata/DerivedCoreProperties.txt | 0 .../unidata/DerivedNormalizationProps.txt | 0 .../icu/source/data/unidata/FractionalUCA.txt | 0 .../data/unidata/NormalizationCorrections.txt | 0 .../source/data/unidata/NormalizationTest.txt | 0 .../icu/source/data/unidata/SpecialCasing.txt | 0 .../icu/source/data/unidata/UCARules.txt | 0 .../icu/source/data/unidata/UnicodeData.txt | 0 .../icu/source/data/unidata/changes.txt | 0 .../icu/source/data/unidata/clean.sh | 0 .../icu/source/data/unidata/confusables.txt | 0 .../data/unidata/confusablesWholeScript.txt | 0 .../source/data/unidata/emoji-sequences.txt | 0 .../data/unidata/emoji-zwj-sequences.txt | 0 .../icu/source/data/unidata/generate.sh | 0 .../icu/source/data/unidata/norm2/BUILD.bazel | 0 .../icu/source/data/unidata/norm2/nfc.txt | 0 .../icu/source/data/unidata/norm2/nfkc.txt | 0 .../icu/source/data/unidata/norm2/nfkc_cf.txt | 0 .../icu/source/data/unidata/norm2/uts46.txt | 0 .../icu/source/data/unidata/ppucd.txt | 0 .../icu/source/extra/Makefile.in | 0 .../icu/source/extra/scrptrun/Makefile.in | 0 .../icu/source/extra/scrptrun/readme.html | 0 .../icu/source/extra/scrptrun/scrptrun.cpp | 0 .../icu/source/extra/scrptrun/scrptrun.h | 0 .../icu/source/extra/scrptrun/sources.txt | 0 .../icu/source/extra/scrptrun/srtest.cpp | 0 .../icu/source/extra/scrptrun/srtest.dsp | 0 .../icu/source/extra/scrptrun/srtest.dsw | 0 .../icu/source/extra/uconv/Makefile.in | 0 .../icu/source/extra/uconv/README | 0 .../icu/source/extra/uconv/makedata.mak | 0 .../icu/source/extra/uconv/pkgdata.inc.in | 0 .../icu/source/extra/uconv/pkgdataMakefile.in | 0 .../icu/source/extra/uconv/resfiles.mk | 0 .../icu/source/extra/uconv/resources/fr.txt | 0 .../icu/source/extra/uconv/resources/root.txt | 0 .../source/extra/uconv/samples/ISO-8859-2.txt | 0 .../source/extra/uconv/samples/ISO-8859-3.txt | 0 .../extra/uconv/samples/danish-ISO-8859-1.txt | 0 .../icu/source/extra/uconv/samples/eucJP.txt | 0 .../extra/uconv/samples/hangul-eucKR.txt | 0 .../extra/uconv/samples/hania-eucKR.txt | 0 .../extra/uconv/samples/ibm-37-test.txt | 0 .../source/extra/uconv/samples/iso8859-1.txt | 0 .../icu/source/extra/uconv/samples/koi8r.txt | 0 .../extra/uconv/samples/utf8/armenian.txt | 0 .../extra/uconv/samples/utf8/banviet.txt | 0 .../uconv/samples/utf8/chinese-ulysses.txt | 0 .../source/extra/uconv/samples/utf8/croat.txt | 0 .../extra/uconv/samples/utf8/danish.txt | 0 .../source/extra/uconv/samples/utf8/greek.txt | 0 .../extra/uconv/samples/utf8/hangul.txt | 0 .../source/extra/uconv/samples/utf8/hania.txt | 0 .../source/extra/uconv/samples/utf8/jap.txt | 0 .../extra/uconv/samples/utf8/korean.txt | 0 .../source/extra/uconv/samples/utf8/linji.txt | 0 .../source/extra/uconv/samples/utf8/many.txt | 0 .../extra/uconv/samples/utf8/maopoem.txt | 0 .../extra/uconv/samples/utf8/russian.txt | 0 .../uconv/samples/utf8/simplechinese.txt | 0 .../extra/uconv/samples/utf8/turkish.txt | 0 .../extra/uconv/samples/utf8/utf-8-demo.txt | 0 .../icu/source/extra/uconv/sources.txt | 0 .../icu/source/extra/uconv/uconv.1.in | 0 .../icu/source/extra/uconv/uconv.cpp | 0 .../icu/source/extra/uconv/uconv.vcxproj | 0 .../source/extra/uconv/uconv.vcxproj.filters | 0 .../icu/source/extra/uconv/unicode/uwmsg.h | 0 .../icu/source/extra/uconv/uwmsg.c | 0 .../deps => deps}/icu/source/i18n/BUILD.bazel | 0 .../deps => deps}/icu/source/i18n/Makefile.in | 0 .../icu/source/i18n/alphaindex.cpp | 0 .../icu/source/i18n/anytrans.cpp | 0 .../deps => deps}/icu/source/i18n/anytrans.h | 0 .../deps => deps}/icu/source/i18n/astro.cpp | 0 .../cxx/deps => deps}/icu/source/i18n/astro.h | 0 .../deps => deps}/icu/source/i18n/basictz.cpp | 0 .../deps => deps}/icu/source/i18n/bocsu.cpp | 0 .../cxx/deps => deps}/icu/source/i18n/bocsu.h | 0 .../icu/source/i18n/brktrans.cpp | 0 .../deps => deps}/icu/source/i18n/brktrans.h | 0 .../icu/source/i18n/buddhcal.cpp | 0 .../deps => deps}/icu/source/i18n/buddhcal.h | 0 .../icu/source/i18n/calendar.cpp | 0 .../deps => deps}/icu/source/i18n/casetrn.cpp | 0 .../deps => deps}/icu/source/i18n/casetrn.h | 0 .../deps => deps}/icu/source/i18n/cecal.cpp | 0 .../cxx/deps => deps}/icu/source/i18n/cecal.h | 0 .../icu/source/i18n/chnsecal.cpp | 0 .../deps => deps}/icu/source/i18n/chnsecal.h | 0 .../icu/source/i18n/choicfmt.cpp | 0 .../deps => deps}/icu/source/i18n/coleitr.cpp | 0 .../deps => deps}/icu/source/i18n/coll.cpp | 0 .../icu/source/i18n/collation.cpp | 0 .../deps => deps}/icu/source/i18n/collation.h | 0 .../icu/source/i18n/collationbuilder.cpp | 0 .../icu/source/i18n/collationbuilder.h | 0 .../icu/source/i18n/collationcompare.cpp | 0 .../icu/source/i18n/collationcompare.h | 0 .../icu/source/i18n/collationdata.cpp | 0 .../icu/source/i18n/collationdata.h | 0 .../icu/source/i18n/collationdatabuilder.cpp | 0 .../icu/source/i18n/collationdatabuilder.h | 0 .../icu/source/i18n/collationdatareader.cpp | 0 .../icu/source/i18n/collationdatareader.h | 0 .../icu/source/i18n/collationdatawriter.cpp | 0 .../icu/source/i18n/collationdatawriter.h | 0 .../icu/source/i18n/collationfastlatin.cpp | 0 .../icu/source/i18n/collationfastlatin.h | 0 .../source/i18n/collationfastlatinbuilder.cpp | 0 .../source/i18n/collationfastlatinbuilder.h | 0 .../icu/source/i18n/collationfcd.cpp | 0 .../icu/source/i18n/collationfcd.h | 0 .../icu/source/i18n/collationiterator.cpp | 0 .../icu/source/i18n/collationiterator.h | 0 .../icu/source/i18n/collationkeys.cpp | 0 .../icu/source/i18n/collationkeys.h | 0 .../icu/source/i18n/collationroot.cpp | 0 .../icu/source/i18n/collationroot.h | 0 .../icu/source/i18n/collationrootelements.cpp | 0 .../icu/source/i18n/collationrootelements.h | 0 .../icu/source/i18n/collationruleparser.cpp | 0 .../icu/source/i18n/collationruleparser.h | 0 .../icu/source/i18n/collationsets.cpp | 0 .../icu/source/i18n/collationsets.h | 0 .../icu/source/i18n/collationsettings.cpp | 0 .../icu/source/i18n/collationsettings.h | 0 .../icu/source/i18n/collationtailoring.cpp | 0 .../icu/source/i18n/collationtailoring.h | 0 .../icu/source/i18n/collationweights.cpp | 0 .../icu/source/i18n/collationweights.h | 0 .../icu/source/i18n/collunsafe.h | 0 .../icu/source/i18n/compactdecimalformat.cpp | 0 .../icu/source/i18n/coptccal.cpp | 0 .../deps => deps}/icu/source/i18n/coptccal.h | 0 .../icu/source/i18n/cpdtrans.cpp | 0 .../deps => deps}/icu/source/i18n/cpdtrans.h | 0 .../icu/source/i18n/csdetect.cpp | 0 .../deps => deps}/icu/source/i18n/csdetect.h | 0 .../deps => deps}/icu/source/i18n/csmatch.cpp | 0 .../deps => deps}/icu/source/i18n/csmatch.h | 0 .../deps => deps}/icu/source/i18n/csr2022.cpp | 0 .../deps => deps}/icu/source/i18n/csr2022.h | 0 .../deps => deps}/icu/source/i18n/csrecog.cpp | 0 .../deps => deps}/icu/source/i18n/csrecog.h | 0 .../deps => deps}/icu/source/i18n/csrmbcs.cpp | 0 .../deps => deps}/icu/source/i18n/csrmbcs.h | 0 .../deps => deps}/icu/source/i18n/csrsbcs.cpp | 0 .../deps => deps}/icu/source/i18n/csrsbcs.h | 0 .../icu/source/i18n/csrucode.cpp | 0 .../deps => deps}/icu/source/i18n/csrucode.h | 0 .../deps => deps}/icu/source/i18n/csrutf8.cpp | 0 .../deps => deps}/icu/source/i18n/csrutf8.h | 0 .../deps => deps}/icu/source/i18n/curramt.cpp | 0 .../deps => deps}/icu/source/i18n/currfmt.cpp | 0 .../deps => deps}/icu/source/i18n/currfmt.h | 0 .../icu/source/i18n/currpinf.cpp | 0 .../icu/source/i18n/currunit.cpp | 0 .../icu/source/i18n/dangical.cpp | 0 .../deps => deps}/icu/source/i18n/dangical.h | 0 .../deps => deps}/icu/source/i18n/datefmt.cpp | 0 .../icu/source/i18n/dayperiodrules.cpp | 0 .../icu/source/i18n/dayperiodrules.h | 0 .../icu/source/i18n/dcfmtsym.cpp | 0 .../icu/source/i18n/decContext.cpp | 0 .../icu/source/i18n/decContext.h | 0 .../icu/source/i18n/decNumber.cpp | 0 .../deps => deps}/icu/source/i18n/decNumber.h | 0 .../icu/source/i18n/decNumberLocal.h | 0 .../icu/source/i18n/decimfmt.cpp | 0 .../i18n/double-conversion-bignum-dtoa.cpp | 0 .../i18n/double-conversion-bignum-dtoa.h | 0 .../source/i18n/double-conversion-bignum.cpp | 0 .../source/i18n/double-conversion-bignum.h | 0 .../i18n/double-conversion-cached-powers.cpp | 0 .../i18n/double-conversion-cached-powers.h | 0 .../source/i18n/double-conversion-diy-fp.h | 0 .../double-conversion-double-to-string.cpp | 0 .../i18n/double-conversion-double-to-string.h | 0 .../i18n/double-conversion-fast-dtoa.cpp | 0 .../source/i18n/double-conversion-fast-dtoa.h | 0 .../icu/source/i18n/double-conversion-ieee.h | 0 .../double-conversion-string-to-double.cpp | 0 .../i18n/double-conversion-string-to-double.h | 0 .../source/i18n/double-conversion-strtod.cpp | 0 .../source/i18n/double-conversion-strtod.h | 0 .../icu/source/i18n/double-conversion-utils.h | 0 .../icu/source/i18n/double-conversion.h | 0 .../deps => deps}/icu/source/i18n/dt_impl.h | 0 .../icu/source/i18n/dtfmtsym.cpp | 0 .../icu/source/i18n/dtitv_impl.h | 0 .../icu/source/i18n/dtitvfmt.cpp | 0 .../icu/source/i18n/dtitvinf.cpp | 0 .../icu/source/i18n/dtptngen.cpp | 0 .../icu/source/i18n/dtptngen_impl.h | 0 .../deps => deps}/icu/source/i18n/dtrule.cpp | 0 .../icu/source/i18n/erarules.cpp | 0 .../deps => deps}/icu/source/i18n/erarules.h | 0 .../deps => deps}/icu/source/i18n/esctrn.cpp | 0 .../deps => deps}/icu/source/i18n/esctrn.h | 0 .../icu/source/i18n/ethpccal.cpp | 0 .../deps => deps}/icu/source/i18n/ethpccal.h | 0 .../deps => deps}/icu/source/i18n/fmtable.cpp | 0 .../icu/source/i18n/fmtable_cnv.cpp | 0 .../icu/source/i18n/fmtableimp.h | 0 .../deps => deps}/icu/source/i18n/format.cpp | 0 .../source/i18n/formatted_string_builder.cpp | 0 .../source/i18n/formatted_string_builder.h | 0 .../icu/source/i18n/formattedval_impl.h | 0 .../icu/source/i18n/formattedval_iterimpl.cpp | 0 .../icu/source/i18n/formattedval_sbimpl.cpp | 0 .../icu/source/i18n/formattedvalue.cpp | 0 .../icu/source/i18n/fphdlimp.cpp | 0 .../deps => deps}/icu/source/i18n/fphdlimp.h | 0 .../icu/source/i18n/fpositer.cpp | 0 .../icu/source/i18n/funcrepl.cpp | 0 .../deps => deps}/icu/source/i18n/funcrepl.h | 0 .../deps => deps}/icu/source/i18n/gender.cpp | 0 .../icu/source/i18n/gregocal.cpp | 0 .../icu/source/i18n/gregoimp.cpp | 0 .../deps => deps}/icu/source/i18n/gregoimp.h | 0 .../icu/source/i18n/hebrwcal.cpp | 0 .../deps => deps}/icu/source/i18n/hebrwcal.h | 0 .../cxx/deps => deps}/icu/source/i18n/i18n.rc | 0 .../icu/source/i18n/i18n.vcxproj | 0 .../icu/source/i18n/i18n.vcxproj.filters | 0 .../icu/source/i18n/i18n_uwp.vcxproj | 0 .../icu/source/i18n/indiancal.cpp | 0 .../deps => deps}/icu/source/i18n/indiancal.h | 0 .../icu/source/i18n/inputext.cpp | 0 .../deps => deps}/icu/source/i18n/inputext.h | 0 .../icu/source/i18n/islamcal.cpp | 0 .../deps => deps}/icu/source/i18n/islamcal.h | 0 .../icu/source/i18n/japancal.cpp | 0 .../deps => deps}/icu/source/i18n/japancal.h | 0 .../icu/source/i18n/listformatter.cpp | 0 .../deps => deps}/icu/source/i18n/measfmt.cpp | 0 .../icu/source/i18n/measunit.cpp | 0 .../icu/source/i18n/measunit_extra.cpp | 0 .../icu/source/i18n/measunit_impl.h | 0 .../deps => deps}/icu/source/i18n/measure.cpp | 0 .../deps => deps}/icu/source/i18n/msgfmt.cpp | 0 .../icu/source/i18n/msgfmt_impl.h | 0 .../icu/source/i18n/name2uni.cpp | 0 .../deps => deps}/icu/source/i18n/name2uni.h | 0 .../deps => deps}/icu/source/i18n/nfrlist.h | 0 .../deps => deps}/icu/source/i18n/nfrs.cpp | 0 .../cxx/deps => deps}/icu/source/i18n/nfrs.h | 0 .../deps => deps}/icu/source/i18n/nfrule.cpp | 0 .../deps => deps}/icu/source/i18n/nfrule.h | 0 .../deps => deps}/icu/source/i18n/nfsubs.cpp | 0 .../deps => deps}/icu/source/i18n/nfsubs.h | 0 .../icu/source/i18n/nortrans.cpp | 0 .../deps => deps}/icu/source/i18n/nortrans.h | 0 .../icu/source/i18n/nultrans.cpp | 0 .../deps => deps}/icu/source/i18n/nultrans.h | 0 .../icu/source/i18n/number_affixutils.cpp | 0 .../icu/source/i18n/number_affixutils.h | 0 .../icu/source/i18n/number_asformat.cpp | 0 .../icu/source/i18n/number_asformat.h | 0 .../icu/source/i18n/number_capi.cpp | 0 .../icu/source/i18n/number_compact.cpp | 0 .../icu/source/i18n/number_compact.h | 0 .../source/i18n/number_currencysymbols.cpp | 0 .../icu/source/i18n/number_currencysymbols.h | 0 .../source/i18n/number_decimalquantity.cpp | 0 .../icu/source/i18n/number_decimalquantity.h | 0 .../icu/source/i18n/number_decimfmtprops.cpp | 0 .../icu/source/i18n/number_decimfmtprops.h | 0 .../icu/source/i18n/number_decnum.h | 0 .../icu/source/i18n/number_fluent.cpp | 0 .../icu/source/i18n/number_formatimpl.cpp | 0 .../icu/source/i18n/number_formatimpl.h | 0 .../icu/source/i18n/number_grouping.cpp | 0 .../icu/source/i18n/number_integerwidth.cpp | 0 .../icu/source/i18n/number_longnames.cpp | 0 .../icu/source/i18n/number_longnames.h | 0 .../icu/source/i18n/number_mapper.cpp | 0 .../icu/source/i18n/number_mapper.h | 0 .../icu/source/i18n/number_microprops.h | 0 .../icu/source/i18n/number_modifiers.cpp | 0 .../icu/source/i18n/number_modifiers.h | 0 .../icu/source/i18n/number_multiplier.cpp | 0 .../icu/source/i18n/number_multiplier.h | 0 .../icu/source/i18n/number_notation.cpp | 0 .../icu/source/i18n/number_output.cpp | 0 .../icu/source/i18n/number_padding.cpp | 0 .../source/i18n/number_patternmodifier.cpp | 0 .../icu/source/i18n/number_patternmodifier.h | 0 .../icu/source/i18n/number_patternstring.cpp | 0 .../icu/source/i18n/number_patternstring.h | 0 .../icu/source/i18n/number_rounding.cpp | 0 .../icu/source/i18n/number_roundingutils.h | 0 .../icu/source/i18n/number_scientific.cpp | 0 .../icu/source/i18n/number_scientific.h | 0 .../icu/source/i18n/number_skeletons.cpp | 0 .../icu/source/i18n/number_skeletons.h | 0 .../icu/source/i18n/number_symbolswrapper.cpp | 0 .../icu/source/i18n/number_types.h | 0 .../icu/source/i18n/number_usageprefs.cpp | 0 .../icu/source/i18n/number_usageprefs.h | 0 .../icu/source/i18n/number_utils.cpp | 0 .../icu/source/i18n/number_utils.h | 0 .../icu/source/i18n/number_utypes.h | 0 .../deps => deps}/icu/source/i18n/numfmt.cpp | 0 .../icu/source/i18n/numparse_affixes.cpp | 0 .../icu/source/i18n/numparse_affixes.h | 0 .../icu/source/i18n/numparse_compositions.cpp | 0 .../icu/source/i18n/numparse_compositions.h | 0 .../icu/source/i18n/numparse_currency.cpp | 0 .../icu/source/i18n/numparse_currency.h | 0 .../icu/source/i18n/numparse_decimal.cpp | 0 .../icu/source/i18n/numparse_decimal.h | 0 .../icu/source/i18n/numparse_impl.cpp | 0 .../icu/source/i18n/numparse_impl.h | 0 .../icu/source/i18n/numparse_parsednumber.cpp | 0 .../icu/source/i18n/numparse_scientific.cpp | 0 .../icu/source/i18n/numparse_scientific.h | 0 .../icu/source/i18n/numparse_symbols.cpp | 0 .../icu/source/i18n/numparse_symbols.h | 0 .../icu/source/i18n/numparse_types.h | 0 .../icu/source/i18n/numparse_utils.h | 0 .../icu/source/i18n/numparse_validators.cpp | 0 .../icu/source/i18n/numparse_validators.h | 0 .../icu/source/i18n/numrange_capi.cpp | 0 .../icu/source/i18n/numrange_fluent.cpp | 0 .../icu/source/i18n/numrange_impl.cpp | 0 .../icu/source/i18n/numrange_impl.h | 0 .../deps => deps}/icu/source/i18n/numsys.cpp | 0 .../icu/source/i18n/numsys_impl.h | 0 .../deps => deps}/icu/source/i18n/olsontz.cpp | 0 .../deps => deps}/icu/source/i18n/olsontz.h | 0 .../icu/source/i18n/persncal.cpp | 0 .../deps => deps}/icu/source/i18n/persncal.h | 0 .../icu/source/i18n/pluralranges.cpp | 0 .../icu/source/i18n/pluralranges.h | 0 .../deps => deps}/icu/source/i18n/plurfmt.cpp | 0 .../icu/source/i18n/plurrule.cpp | 0 .../icu/source/i18n/plurrule_impl.h | 0 .../deps => deps}/icu/source/i18n/quant.cpp | 0 .../cxx/deps => deps}/icu/source/i18n/quant.h | 0 .../icu/source/i18n/quantityformatter.cpp | 0 .../icu/source/i18n/quantityformatter.h | 0 .../deps => deps}/icu/source/i18n/rbnf.cpp | 0 .../cxx/deps => deps}/icu/source/i18n/rbt.cpp | 0 .../cxx/deps => deps}/icu/source/i18n/rbt.h | 0 .../icu/source/i18n/rbt_data.cpp | 0 .../deps => deps}/icu/source/i18n/rbt_data.h | 0 .../icu/source/i18n/rbt_pars.cpp | 0 .../deps => deps}/icu/source/i18n/rbt_pars.h | 0 .../icu/source/i18n/rbt_rule.cpp | 0 .../deps => deps}/icu/source/i18n/rbt_rule.h | 0 .../deps => deps}/icu/source/i18n/rbt_set.cpp | 0 .../deps => deps}/icu/source/i18n/rbt_set.h | 0 .../deps => deps}/icu/source/i18n/rbtz.cpp | 0 .../icu/source/i18n/regexcmp.cpp | 0 .../deps => deps}/icu/source/i18n/regexcmp.h | 0 .../deps => deps}/icu/source/i18n/regexcst.h | 0 .../deps => deps}/icu/source/i18n/regexcst.pl | 0 .../icu/source/i18n/regexcst.txt | 0 .../icu/source/i18n/regeximp.cpp | 0 .../deps => deps}/icu/source/i18n/regeximp.h | 0 .../deps => deps}/icu/source/i18n/regexst.cpp | 0 .../deps => deps}/icu/source/i18n/regexst.h | 0 .../icu/source/i18n/regextxt.cpp | 0 .../deps => deps}/icu/source/i18n/regextxt.h | 0 .../deps => deps}/icu/source/i18n/region.cpp | 0 .../icu/source/i18n/region_impl.h | 0 .../icu/source/i18n/reldatefmt.cpp | 0 .../icu/source/i18n/reldtfmt.cpp | 0 .../deps => deps}/icu/source/i18n/reldtfmt.h | 0 .../deps => deps}/icu/source/i18n/rematch.cpp | 0 .../icu/source/i18n/remtrans.cpp | 0 .../deps => deps}/icu/source/i18n/remtrans.h | 0 .../icu/source/i18n/repattrn.cpp | 0 .../icu/source/i18n/rulebasedcollator.cpp | 0 .../source/i18n/scientificnumberformatter.cpp | 0 .../icu/source/i18n/scriptset.cpp | 0 .../deps => deps}/icu/source/i18n/scriptset.h | 0 .../deps => deps}/icu/source/i18n/search.cpp | 0 .../deps => deps}/icu/source/i18n/selfmt.cpp | 0 .../icu/source/i18n/selfmtimpl.h | 0 .../icu/source/i18n/sharedbreakiterator.cpp | 0 .../icu/source/i18n/sharedbreakiterator.h | 0 .../icu/source/i18n/sharedcalendar.h | 0 .../icu/source/i18n/shareddateformatsymbols.h | 0 .../icu/source/i18n/sharednumberformat.h | 0 .../icu/source/i18n/sharedpluralrules.h | 0 .../icu/source/i18n/simpletz.cpp | 0 .../icu/source/i18n/smpdtfmt.cpp | 0 .../icu/source/i18n/smpdtfst.cpp | 0 .../deps => deps}/icu/source/i18n/smpdtfst.h | 0 .../deps => deps}/icu/source/i18n/sortkey.cpp | 0 .../deps => deps}/icu/source/i18n/sources.txt | 0 .../icu/source/i18n/standardplural.cpp | 0 .../icu/source/i18n/standardplural.h | 0 .../icu/source/i18n/string_segment.cpp | 0 .../icu/source/i18n/string_segment.h | 0 .../icu/source/i18n/strmatch.cpp | 0 .../deps => deps}/icu/source/i18n/strmatch.h | 0 .../deps => deps}/icu/source/i18n/strrepl.cpp | 0 .../deps => deps}/icu/source/i18n/strrepl.h | 0 .../icu/source/i18n/stsearch.cpp | 0 .../icu/source/i18n/taiwncal.cpp | 0 .../deps => deps}/icu/source/i18n/taiwncal.h | 0 .../icu/source/i18n/timezone.cpp | 0 .../icu/source/i18n/titletrn.cpp | 0 .../deps => deps}/icu/source/i18n/titletrn.h | 0 .../deps => deps}/icu/source/i18n/tmunit.cpp | 0 .../deps => deps}/icu/source/i18n/tmutamt.cpp | 0 .../deps => deps}/icu/source/i18n/tmutfmt.cpp | 0 .../icu/source/i18n/tolowtrn.cpp | 0 .../deps => deps}/icu/source/i18n/tolowtrn.h | 0 .../icu/source/i18n/toupptrn.cpp | 0 .../deps => deps}/icu/source/i18n/toupptrn.h | 0 .../icu/source/i18n/translit.cpp | 0 .../icu/source/i18n/transreg.cpp | 0 .../deps => deps}/icu/source/i18n/transreg.h | 0 .../icu/source/i18n/tridpars.cpp | 0 .../deps => deps}/icu/source/i18n/tridpars.h | 0 .../deps => deps}/icu/source/i18n/tzfmt.cpp | 0 .../icu/source/i18n/tzgnames.cpp | 0 .../deps => deps}/icu/source/i18n/tzgnames.h | 0 .../deps => deps}/icu/source/i18n/tznames.cpp | 0 .../icu/source/i18n/tznames_impl.cpp | 0 .../icu/source/i18n/tznames_impl.h | 0 .../deps => deps}/icu/source/i18n/tzrule.cpp | 0 .../deps => deps}/icu/source/i18n/tztrans.cpp | 0 .../deps => deps}/icu/source/i18n/ucal.cpp | 0 .../deps => deps}/icu/source/i18n/ucln_in.cpp | 0 .../deps => deps}/icu/source/i18n/ucln_in.h | 0 .../deps => deps}/icu/source/i18n/ucol.cpp | 0 .../deps => deps}/icu/source/i18n/ucol_imp.h | 0 .../icu/source/i18n/ucol_res.cpp | 0 .../icu/source/i18n/ucol_sit.cpp | 0 .../icu/source/i18n/ucoleitr.cpp | 0 .../deps => deps}/icu/source/i18n/ucsdet.cpp | 0 .../deps => deps}/icu/source/i18n/udat.cpp | 0 .../icu/source/i18n/udateintervalformat.cpp | 0 .../deps => deps}/icu/source/i18n/udatpg.cpp | 0 .../icu/source/i18n/ufieldpositer.cpp | 0 .../source/i18n/uitercollationiterator.cpp | 0 .../icu/source/i18n/uitercollationiterator.h | 0 .../icu/source/i18n/ulistformatter.cpp | 0 .../icu/source/i18n/ulocdata.cpp | 0 .../deps => deps}/icu/source/i18n/umsg.cpp | 0 .../deps => deps}/icu/source/i18n/umsg_imp.h | 0 .../icu/source/i18n/unesctrn.cpp | 0 .../deps => deps}/icu/source/i18n/unesctrn.h | 0 .../icu/source/i18n/uni2name.cpp | 0 .../deps => deps}/icu/source/i18n/uni2name.h | 0 .../icu/source/i18n/unicode/alphaindex.h | 0 .../icu/source/i18n/unicode/basictz.h | 0 .../icu/source/i18n/unicode/calendar.h | 0 .../icu/source/i18n/unicode/choicfmt.h | 0 .../icu/source/i18n/unicode/coleitr.h | 0 .../icu/source/i18n/unicode/coll.h | 0 .../i18n/unicode/compactdecimalformat.h | 0 .../icu/source/i18n/unicode/curramt.h | 0 .../icu/source/i18n/unicode/currpinf.h | 0 .../icu/source/i18n/unicode/currunit.h | 0 .../icu/source/i18n/unicode/datefmt.h | 0 .../icu/source/i18n/unicode/dcfmtsym.h | 0 .../icu/source/i18n/unicode/decimfmt.h | 0 .../icu/source/i18n/unicode/dtfmtsym.h | 0 .../icu/source/i18n/unicode/dtitvfmt.h | 0 .../icu/source/i18n/unicode/dtitvinf.h | 0 .../icu/source/i18n/unicode/dtptngen.h | 0 .../icu/source/i18n/unicode/dtrule.h | 0 .../icu/source/i18n/unicode/fieldpos.h | 0 .../icu/source/i18n/unicode/fmtable.h | 0 .../icu/source/i18n/unicode/format.h | 0 .../icu/source/i18n/unicode/formattedvalue.h | 0 .../icu/source/i18n/unicode/fpositer.h | 0 .../icu/source/i18n/unicode/gender.h | 0 .../icu/source/i18n/unicode/gregocal.h | 0 .../icu/source/i18n/unicode/listformatter.h | 0 .../icu/source/i18n/unicode/measfmt.h | 0 .../icu/source/i18n/unicode/measunit.h | 0 .../icu/source/i18n/unicode/measure.h | 0 .../icu/source/i18n/unicode/msgfmt.h | 0 .../icu/source/i18n/unicode/nounit.h | 0 .../icu/source/i18n/unicode/numberformatter.h | 0 .../i18n/unicode/numberrangeformatter.h | 0 .../icu/source/i18n/unicode/numfmt.h | 0 .../icu/source/i18n/unicode/numsys.h | 0 .../icu/source/i18n/unicode/plurfmt.h | 0 .../icu/source/i18n/unicode/plurrule.h | 0 .../icu/source/i18n/unicode/rbnf.h | 0 .../icu/source/i18n/unicode/rbtz.h | 0 .../icu/source/i18n/unicode/regex.h | 0 .../icu/source/i18n/unicode/region.h | 0 .../icu/source/i18n/unicode/reldatefmt.h | 0 .../i18n/unicode/scientificnumberformatter.h | 0 .../icu/source/i18n/unicode/search.h | 0 .../icu/source/i18n/unicode/selfmt.h | 0 .../icu/source/i18n/unicode/simpletz.h | 0 .../icu/source/i18n/unicode/smpdtfmt.h | 0 .../icu/source/i18n/unicode/sortkey.h | 0 .../icu/source/i18n/unicode/stsearch.h | 0 .../icu/source/i18n/unicode/tblcoll.h | 0 .../icu/source/i18n/unicode/timezone.h | 0 .../icu/source/i18n/unicode/tmunit.h | 0 .../icu/source/i18n/unicode/tmutamt.h | 0 .../icu/source/i18n/unicode/tmutfmt.h | 0 .../icu/source/i18n/unicode/translit.h | 0 .../icu/source/i18n/unicode/tzfmt.h | 0 .../icu/source/i18n/unicode/tznames.h | 0 .../icu/source/i18n/unicode/tzrule.h | 0 .../icu/source/i18n/unicode/tztrans.h | 0 .../icu/source/i18n/unicode/ucal.h | 0 .../icu/source/i18n/unicode/ucol.h | 0 .../icu/source/i18n/unicode/ucoleitr.h | 0 .../icu/source/i18n/unicode/ucsdet.h | 0 .../icu/source/i18n/unicode/udat.h | 0 .../source/i18n/unicode/udateintervalformat.h | 0 .../icu/source/i18n/unicode/udatpg.h | 0 .../icu/source/i18n/unicode/ufieldpositer.h | 0 .../icu/source/i18n/unicode/uformattable.h | 0 .../icu/source/i18n/unicode/uformattedvalue.h | 0 .../icu/source/i18n/unicode/ugender.h | 0 .../icu/source/i18n/unicode/ulistformatter.h | 0 .../icu/source/i18n/unicode/ulocdata.h | 0 .../icu/source/i18n/unicode/umsg.h | 0 .../icu/source/i18n/unicode/unirepl.h | 0 .../icu/source/i18n/unicode/unounclass.h | 0 .../icu/source/i18n/unicode/unum.h | 0 .../source/i18n/unicode/unumberformatter.h | 0 .../i18n/unicode/unumberrangeformatter.h | 0 .../icu/source/i18n/unicode/unumsys.h | 0 .../icu/source/i18n/unicode/upluralrules.h | 0 .../icu/source/i18n/unicode/uregex.h | 0 .../icu/source/i18n/unicode/uregion.h | 0 .../icu/source/i18n/unicode/ureldatefmt.h | 0 .../icu/source/i18n/unicode/usearch.h | 0 .../icu/source/i18n/unicode/uspoof.h | 0 .../icu/source/i18n/unicode/utmscale.h | 0 .../icu/source/i18n/unicode/utrans.h | 0 .../icu/source/i18n/unicode/vtzone.h | 0 .../source/i18n/units_complexconverter.cpp | 0 .../icu/source/i18n/units_complexconverter.h | 0 .../icu/source/i18n/units_converter.cpp | 0 .../icu/source/i18n/units_converter.h | 0 .../icu/source/i18n/units_data.cpp | 0 .../icu/source/i18n/units_data.h | 0 .../icu/source/i18n/units_router.cpp | 0 .../icu/source/i18n/units_router.h | 0 .../deps => deps}/icu/source/i18n/unum.cpp | 0 .../deps => deps}/icu/source/i18n/unumsys.cpp | 0 .../icu/source/i18n/upluralrules.cpp | 0 .../deps => deps}/icu/source/i18n/uregex.cpp | 0 .../deps => deps}/icu/source/i18n/uregexc.cpp | 0 .../deps => deps}/icu/source/i18n/uregion.cpp | 0 .../deps => deps}/icu/source/i18n/usearch.cpp | 0 .../deps => deps}/icu/source/i18n/uspoof.cpp | 0 .../icu/source/i18n/uspoof_build.cpp | 0 .../icu/source/i18n/uspoof_conf.cpp | 0 .../icu/source/i18n/uspoof_conf.h | 0 .../icu/source/i18n/uspoof_impl.cpp | 0 .../icu/source/i18n/uspoof_impl.h | 0 .../deps => deps}/icu/source/i18n/usrchimp.h | 0 .../source/i18n/utf16collationiterator.cpp | 0 .../icu/source/i18n/utf16collationiterator.h | 0 .../icu/source/i18n/utf8collationiterator.cpp | 0 .../icu/source/i18n/utf8collationiterator.h | 0 .../icu/source/i18n/utmscale.cpp | 0 .../deps => deps}/icu/source/i18n/utrans.cpp | 0 .../deps => deps}/icu/source/i18n/vtzone.cpp | 0 .../deps => deps}/icu/source/i18n/vzone.cpp | 0 .../cxx/deps => deps}/icu/source/i18n/vzone.h | 0 .../icu/source/i18n/windtfmt.cpp | 0 .../deps => deps}/icu/source/i18n/windtfmt.h | 0 .../icu/source/i18n/winnmfmt.cpp | 0 .../deps => deps}/icu/source/i18n/winnmfmt.h | 0 .../icu/source/i18n/wintzimpl.cpp | 0 .../deps => deps}/icu/source/i18n/wintzimpl.h | 0 .../icu/source/i18n/zonemeta.cpp | 0 .../deps => deps}/icu/source/i18n/zonemeta.h | 0 .../deps => deps}/icu/source/i18n/zrule.cpp | 0 .../cxx/deps => deps}/icu/source/i18n/zrule.h | 0 .../deps => deps}/icu/source/i18n/ztrans.cpp | 0 .../deps => deps}/icu/source/i18n/ztrans.h | 0 .../deps => deps}/icu/source/icudefs.mk.in | 0 .../cxx/deps => deps}/icu/source/install-sh | 0 .../deps => deps}/icu/source/io/Makefile.in | 0 .../cxx/deps => deps}/icu/source/io/io.rc | 0 .../deps => deps}/icu/source/io/io.vcxproj | 0 .../icu/source/io/io.vcxproj.filters | 0 .../deps => deps}/icu/source/io/locbund.cpp | 0 .../cxx/deps => deps}/icu/source/io/locbund.h | 0 .../deps => deps}/icu/source/io/sources.txt | 0 .../deps => deps}/icu/source/io/sprintf.cpp | 0 .../deps => deps}/icu/source/io/sscanf.cpp | 0 .../deps => deps}/icu/source/io/ucln_io.cpp | 0 .../cxx/deps => deps}/icu/source/io/ucln_io.h | 0 .../cxx/deps => deps}/icu/source/io/ufile.cpp | 0 .../cxx/deps => deps}/icu/source/io/ufile.h | 0 .../deps => deps}/icu/source/io/ufmt_cmn.cpp | 0 .../deps => deps}/icu/source/io/ufmt_cmn.h | 0 .../icu/source/io/unicode/ustdio.h | 0 .../icu/source/io/unicode/ustream.h | 0 .../deps => deps}/icu/source/io/uprintf.cpp | 0 .../cxx/deps => deps}/icu/source/io/uprintf.h | 0 .../deps => deps}/icu/source/io/uprntf_p.cpp | 0 .../deps => deps}/icu/source/io/uscanf.cpp | 0 .../cxx/deps => deps}/icu/source/io/uscanf.h | 0 .../deps => deps}/icu/source/io/uscanf_p.cpp | 0 .../deps => deps}/icu/source/io/ustdio.cpp | 0 .../deps => deps}/icu/source/io/ustream.cpp | 0 .../icu/source/layoutex/LXUtilities.cpp | 0 .../icu/source/layoutex/LXUtilities.h | 0 .../icu/source/layoutex/Makefile.in | 0 .../icu/source/layoutex/ParagraphLayout.cpp | 0 .../icu/source/layoutex/RunArrays.cpp | 0 .../source/layoutex/layout/ParagraphLayout.h | 0 .../icu/source/layoutex/layout/RunArrays.h | 0 .../icu/source/layoutex/layout/playout.h | 0 .../icu/source/layoutex/layout/plruns.h | 0 .../icu/source/layoutex/layoutex.rc | 0 .../icu/source/layoutex/layoutex.vcxproj | 0 .../source/layoutex/layoutex.vcxproj.filters | 0 .../icu/source/layoutex/playout.cpp | 0 .../icu/source/layoutex/plruns.cpp | 0 .../icu/source/layoutex/sources.txt | 0 .../deps => deps}/icu/source/mkinstalldirs | 0 .../icu/source/python/icutools/__init__.py | 0 .../python/icutools/databuilder/__init__.py | 0 .../python/icutools/databuilder/__main__.py | 0 .../icutools/databuilder/comment_stripper.py | 0 .../python/icutools/databuilder/filtration.py | 0 .../databuilder/filtration_schema.json | 0 .../databuilder/renderers/__init__.py | 0 .../databuilder/renderers/common_exec.py | 0 .../databuilder/renderers/makefile.py | 0 .../icutools/databuilder/request_types.py | 0 .../icutools/databuilder/test/__init__.py | 0 .../icutools/databuilder/test/__main__.py | 0 .../databuilder/test/filtration_test.py | 0 .../test/sample_data/brkitr/LOCALE_DEPS.json | 0 .../test/sample_data/locales/LOCALE_DEPS.json | 0 .../test/sample_data/rbnf/LOCALE_DEPS.json | 0 .../python/icutools/databuilder/utils.py | 0 .../deps => deps}/icu/source/runConfigureICU | 0 .../icu/source/samples/Makefile.in | 0 .../icu/source/samples/all/all.sln | 0 .../icu/source/samples/all/samplecheck.bat | 0 .../icu/source/samples/break/break.cpp | 0 .../icu/source/samples/break/break.sln | 0 .../icu/source/samples/break/break.vcxproj | 0 .../samples/break/break.vcxproj.filters | 0 .../icu/source/samples/break/readme.txt | 0 .../icu/source/samples/break/ubreak.c | 0 .../icu/source/samples/cal/Makefile.in | 0 .../icu/source/samples/cal/cal.c | 0 .../icu/source/samples/cal/cal.sln | 0 .../icu/source/samples/cal/cal.vcxproj | 0 .../source/samples/cal/cal.vcxproj.filters | 0 .../icu/source/samples/cal/readme.txt | 0 .../icu/source/samples/cal/uprint.c | 0 .../icu/source/samples/cal/uprint.h | 0 .../icu/source/samples/case/case.cpp | 0 .../icu/source/samples/case/case.sln | 0 .../icu/source/samples/case/case.vcxproj | 0 .../source/samples/case/case.vcxproj.filters | 0 .../icu/source/samples/case/readme.txt | 0 .../icu/source/samples/case/ucase.c | 0 .../icu/source/samples/citer/citer.cpp | 0 .../icu/source/samples/citer/citer.vcxproj | 0 .../samples/citer/citer.vcxproj.filters | 0 .../icu/source/samples/citer/readme.txt | 0 .../icu/source/samples/coll/coll.cpp | 0 .../icu/source/samples/coll/coll.sln | 0 .../icu/source/samples/coll/coll.vcxproj | 0 .../source/samples/coll/coll.vcxproj.filters | 0 .../icu/source/samples/coll/readme.txt | 0 .../icu/source/samples/csdet/csdet.c | 0 .../icu/source/samples/csdet/csdet.vcxproj | 0 .../samples/csdet/csdet.vcxproj.filters | 0 .../icu/source/samples/csdet/readme.txt | 0 .../icu/source/samples/date/Makefile.in | 0 .../icu/source/samples/date/date.c | 0 .../icu/source/samples/date/date.sln | 0 .../icu/source/samples/date/date.vcxproj | 0 .../source/samples/date/date.vcxproj.filters | 0 .../icu/source/samples/date/readme.txt | 0 .../icu/source/samples/date/uprint.c | 0 .../icu/source/samples/date/uprint.h | 0 .../icu/source/samples/datecal/cal.cpp | 0 .../icu/source/samples/datecal/ccal.c | 0 .../icu/source/samples/datefmt/README.TXT | 0 .../source/samples/datefmt/answers/main_0.cpp | 0 .../source/samples/datefmt/answers/main_1.cpp | 0 .../source/samples/datefmt/answers/main_2.cpp | 0 .../source/samples/datefmt/answers/main_3.cpp | 0 .../icu/source/samples/datefmt/datefmt.sln | 0 .../source/samples/datefmt/datefmt.vcxproj | 0 .../samples/datefmt/datefmt.vcxproj.filters | 0 .../icu/source/samples/datefmt/main.cpp | 0 .../icu/source/samples/datefmt/util.cpp | 0 .../icu/source/samples/datefmt/util.h | 0 .../deps => deps}/icu/source/samples/defs.mk | 0 .../samples/dtitvfmtsample/dtitvfmtsample.cpp | 0 .../dtitvfmtsample/dtitvfmtsample.vcxproj | 0 .../dtitvfmtsample.vcxproj.filters | 0 .../samples/dtptngsample/dtptngsample.cpp | 0 .../samples/dtptngsample/dtptngsample.vcxproj | 0 .../dtptngsample/dtptngsample.vcxproj.filters | 0 .../icu/source/samples/layout/FontMap.GDI | 0 .../icu/source/samples/layout/FontMap.Gnome | 0 .../icu/source/samples/layout/FontMap.cpp | 0 .../icu/source/samples/layout/FontMap.h | 0 .../source/samples/layout/FontTableCache.cpp | 0 .../source/samples/layout/FontTableCache.h | 0 .../source/samples/layout/GDIFontInstance.cpp | 0 .../source/samples/layout/GDIFontInstance.h | 0 .../icu/source/samples/layout/GDIFontMap.cpp | 0 .../icu/source/samples/layout/GDIFontMap.h | 0 .../source/samples/layout/GDIGUISupport.cpp | 0 .../icu/source/samples/layout/GDIGUISupport.h | 0 .../icu/source/samples/layout/GUISupport.h | 0 .../samples/layout/GnomeFontInstance.cpp | 0 .../source/samples/layout/GnomeFontInstance.h | 0 .../source/samples/layout/GnomeFontMap.cpp | 0 .../icu/source/samples/layout/GnomeFontMap.h | 0 .../source/samples/layout/GnomeGUISupport.cpp | 0 .../source/samples/layout/GnomeGUISupport.h | 0 .../icu/source/samples/layout/LayoutSample.rc | 0 .../icu/source/samples/layout/Makefile.in | 0 .../source/samples/layout/RenderingSurface.h | 0 .../icu/source/samples/layout/Sample.txt | 0 .../layout/ScriptCompositeFontInstance.cpp | 0 .../layout/ScriptCompositeFontInstance.h | 0 .../icu/source/samples/layout/Surface.cpp | 0 .../icu/source/samples/layout/Surface.h | 0 .../source/samples/layout/UnicodeReader.cpp | 0 .../icu/source/samples/layout/UnicodeReader.h | 0 .../icu/source/samples/layout/arraymem.h | 0 .../icu/source/samples/layout/cgnomelayout.c | 0 .../icu/source/samples/layout/clayout.c | 0 .../icu/source/samples/layout/cmaps.cpp | 0 .../icu/source/samples/layout/cmaps.h | 0 .../icu/source/samples/layout/gdiglue.cpp | 0 .../icu/source/samples/layout/gdiglue.h | 0 .../icu/source/samples/layout/gnomeglue.cpp | 0 .../icu/source/samples/layout/gnomeglue.h | 0 .../icu/source/samples/layout/gnomelayout.cpp | 0 .../icu/source/samples/layout/gsupport.h | 0 .../icu/source/samples/layout/layout.cpp | 0 .../icu/source/samples/layout/layout.sln | 0 .../icu/source/samples/layout/layout.vcxproj | 0 .../samples/layout/layout.vcxproj.filters | 0 .../icu/source/samples/layout/paragraph.cpp | 0 .../icu/source/samples/layout/paragraph.h | 0 .../icu/source/samples/layout/pflow.c | 0 .../icu/source/samples/layout/pflow.h | 0 .../icu/source/samples/layout/readme.html | 0 .../icu/source/samples/layout/resource.h | 0 .../icu/source/samples/layout/rsurface.cpp | 0 .../icu/source/samples/layout/rsurface.h | 0 .../icu/source/samples/layout/sfnt.h | 0 .../icu/source/samples/layout/ucreader.cpp | 0 .../icu/source/samples/layout/ucreader.h | 0 .../icu/source/samples/legacy/README | 0 .../icu/source/samples/legacy/legacy.cpp | 0 .../icu/source/samples/legacy/legacy.sln | 0 .../icu/source/samples/legacy/legacy.vcxproj | 0 .../samples/legacy/legacy.vcxproj.filters | 0 .../icu/source/samples/legacy/newcol.cpp | 0 .../icu/source/samples/legacy/oldcol.cpp | 0 .../icu/source/samples/msgfmt/README.TXT | 0 .../source/samples/msgfmt/answers/main_0.cpp | 0 .../source/samples/msgfmt/answers/main_1.cpp | 0 .../source/samples/msgfmt/answers/main_2.cpp | 0 .../source/samples/msgfmt/answers/main_3.cpp | 0 .../icu/source/samples/msgfmt/main.cpp | 0 .../icu/source/samples/msgfmt/msgfmt.sln | 0 .../icu/source/samples/msgfmt/msgfmt.vcxproj | 0 .../samples/msgfmt/msgfmt.vcxproj.filters | 0 .../icu/source/samples/msgfmt/util.cpp | 0 .../icu/source/samples/msgfmt/util.h | 0 .../icu/source/samples/numfmt/capi.c | 0 .../icu/source/samples/numfmt/main.cpp | 0 .../icu/source/samples/numfmt/numfmt.sln | 0 .../icu/source/samples/numfmt/numfmt.vcxproj | 0 .../samples/numfmt/numfmt.vcxproj.filters | 0 .../icu/source/samples/numfmt/readme.txt | 0 .../icu/source/samples/numfmt/util.cpp | 0 .../icu/source/samples/numfmt/util.h | 0 .../samples/plurfmtsample/plurfmtsample.cpp | 0 .../plurfmtsample/plurfmtsample.vcxproj | 0 .../plurfmtsample.vcxproj.filters | 0 .../icu/source/samples/props/props.cpp | 0 .../icu/source/samples/props/props.sln | 0 .../icu/source/samples/props/props.vcxproj | 0 .../samples/props/props.vcxproj.filters | 0 .../icu/source/samples/props/readme.txt | 0 .../icu/source/samples/readme.txt | 0 .../deps => deps}/icu/source/samples/rules.mk | 0 .../icu/source/samples/strsrch/readme.txt | 0 .../icu/source/samples/strsrch/strsrch.cpp | 0 .../icu/source/samples/strsrch/strsrch.sln | 0 .../source/samples/strsrch/strsrch.vcxproj | 0 .../samples/strsrch/strsrch.vcxproj.filters | 0 .../icu/source/samples/translit/README.TXT | 0 .../samples/translit/answers/main_1.cpp | 0 .../samples/translit/answers/main_2.cpp | 0 .../samples/translit/answers/main_3.cpp | 0 .../samples/translit/answers/main_4.cpp | 0 .../samples/translit/answers/unaccent.cpp | 0 .../samples/translit/answers/unaccent.h | 0 .../icu/source/samples/translit/main.cpp | 0 .../icu/source/samples/translit/translit.sln | 0 .../source/samples/translit/translit.vcxproj | 0 .../samples/translit/translit.vcxproj.filters | 0 .../icu/source/samples/translit/unaccent.cpp | 0 .../icu/source/samples/translit/unaccent.h | 0 .../icu/source/samples/translit/util.cpp | 0 .../icu/source/samples/translit/util.h | 0 .../icu/source/samples/uciter8/readme.txt | 0 .../icu/source/samples/uciter8/uciter8.c | 0 .../icu/source/samples/uciter8/uciter8.sln | 0 .../source/samples/uciter8/uciter8.vcxproj | 0 .../samples/uciter8/uciter8.vcxproj.filters | 0 .../icu/source/samples/uciter8/uit_len8.c | 0 .../icu/source/samples/uciter8/uit_len8.h | 0 .../icu/source/samples/ucnv/convsamp.cpp | 0 .../icu/source/samples/ucnv/data01.txt | 0 .../icu/source/samples/ucnv/data02.bin | 0 .../icu/source/samples/ucnv/data06.txt | 0 .../icu/source/samples/ucnv/flagcb.c | 0 .../icu/source/samples/ucnv/flagcb.h | 0 .../icu/source/samples/ucnv/readme.txt | 0 .../icu/source/samples/ucnv/ucnv.sln | 0 .../icu/source/samples/ucnv/ucnv.vcxproj | 0 .../source/samples/ucnv/ucnv.vcxproj.filters | 0 .../icu/source/samples/udata/reader.c | 0 .../icu/source/samples/udata/reader.vcxproj | 0 .../samples/udata/reader.vcxproj.filters | 0 .../icu/source/samples/udata/readme.txt | 0 .../icu/source/samples/udata/udata.sln | 0 .../icu/source/samples/udata/writer.c | 0 .../icu/source/samples/udata/writer.vcxproj | 0 .../samples/udata/writer.vcxproj.filters | 0 .../source/samples/ufortune/fortunedefs.mk | 0 .../icu/source/samples/ufortune/readme.txt | 0 .../source/samples/ufortune/resources/es.txt | 0 .../ufortune/resources/fortune_resources.mak | 0 .../ufortune/resources/res-file-list.txt | 0 .../samples/ufortune/resources/root.txt | 0 .../icu/source/samples/ufortune/ufortune.c | 0 .../icu/source/samples/ufortune/ufortune.sln | 0 .../source/samples/ufortune/ufortune.vcxproj | 0 .../samples/ufortune/ufortune.vcxproj.filters | 0 .../icu/source/samples/ugrep/readme.txt | 0 .../icu/source/samples/ugrep/ugrep.cpp | 0 .../icu/source/samples/ugrep/ugrep.sln | 0 .../icu/source/samples/ugrep/ugrep.vcxproj | 0 .../samples/ugrep/ugrep.vcxproj.filters | 0 .../icu/source/samples/uresb/en.txt | 0 .../icu/source/samples/uresb/readme.txt | 0 .../icu/source/samples/uresb/resources.mak | 0 .../source/samples/uresb/resources.vcxproj | 0 .../samples/uresb/resources.vcxproj.filters | 0 .../icu/source/samples/uresb/root.txt | 0 .../icu/source/samples/uresb/sr.txt | 0 .../icu/source/samples/uresb/uresb.c | 0 .../icu/source/samples/uresb/uresb.sln | 0 .../icu/source/samples/uresb/uresb.vcxproj | 0 .../samples/uresb/uresb.vcxproj.filters | 0 .../icu/source/samples/ustring/readme.txt | 0 .../icu/source/samples/ustring/ustring.cpp | 0 .../icu/source/samples/ustring/ustring.sln | 0 .../source/samples/ustring/ustring.vcxproj | 0 .../samples/ustring/ustring.vcxproj.filters | 0 .../icu/source/stubdata/BUILD.bazel | 0 .../icu/source/stubdata/Makefile.in | 0 .../icu/source/stubdata/sources.txt | 0 .../icu/source/stubdata/stubdata.cpp | 0 .../icu/source/stubdata/stubdata.vcxproj | 0 .../source/stubdata/stubdata.vcxproj.filters | 0 .../deps => deps}/icu/source/test/Makefile.in | 0 .../icu/source/test/cintltst/Makefile.in | 0 .../icu/source/test/cintltst/bocu1tst.c | 0 .../icu/source/test/cintltst/callcoll.c | 0 .../icu/source/test/cintltst/callcoll.h | 0 .../icu/source/test/cintltst/calldata.h | 0 .../icu/source/test/cintltst/calltest.c | 0 .../icu/source/test/cintltst/capitst.c | 0 .../icu/source/test/cintltst/capitst.h | 0 .../icu/source/test/cintltst/cbiapts.c | 0 .../icu/source/test/cintltst/cbiapts.h | 0 .../icu/source/test/cintltst/cbididat.c | 0 .../source/test/cintltst/cbiditransformtst.c | 0 .../icu/source/test/cintltst/cbiditst.c | 0 .../icu/source/test/cintltst/cbiditst.h | 0 .../icu/source/test/cintltst/cbkittst.c | 0 .../icu/source/test/cintltst/ccaltst.c | 0 .../icu/source/test/cintltst/ccaltst.h | 0 .../icu/source/test/cintltst/ccapitst.c | 0 .../icu/source/test/cintltst/ccapitst.h | 0 .../icu/source/test/cintltst/ccolltst.c | 0 .../icu/source/test/cintltst/ccolltst.h | 0 .../icu/source/test/cintltst/cconvtst.c | 0 .../icu/source/test/cintltst/cctest.c | 0 .../icu/source/test/cintltst/ccurrtst.c | 0 .../icu/source/test/cintltst/ccurrtst.h | 0 .../test/cintltst/cdateintervalformattest.c | 0 .../icu/source/test/cintltst/cdattst.c | 0 .../icu/source/test/cintltst/cdattst.h | 0 .../icu/source/test/cintltst/cdetst.c | 0 .../icu/source/test/cintltst/cdetst.h | 0 .../icu/source/test/cintltst/cdtdptst.c | 0 .../icu/source/test/cintltst/cdtdptst.h | 0 .../icu/source/test/cintltst/cdtrgtst.c | 0 .../icu/source/test/cintltst/cdtrgtst.h | 0 .../icu/source/test/cintltst/cestst.c | 0 .../icu/source/test/cintltst/cestst.h | 0 .../icu/source/test/cintltst/cfintst.c | 0 .../icu/source/test/cintltst/cfintst.h | 0 .../icu/source/test/cintltst/cformtst.c | 0 .../icu/source/test/cintltst/cformtst.h | 0 .../icu/source/test/cintltst/cfrtst.c | 0 .../icu/source/test/cintltst/cfrtst.h | 0 .../icu/source/test/cintltst/cg7coll.c | 0 .../icu/source/test/cintltst/cg7coll.h | 0 .../icu/source/test/cintltst/cgendtst.c | 0 .../icu/source/test/cintltst/chashtst.c | 0 .../icu/source/test/cintltst/cintltst.c | 0 .../icu/source/test/cintltst/cintltst.h | 0 .../icu/source/test/cintltst/cintltst.vcxproj | 0 .../test/cintltst/cintltst.vcxproj.filters | 0 .../icu/source/test/cintltst/citertst.c | 0 .../icu/source/test/cintltst/citertst.h | 0 .../icu/source/test/cintltst/cjaptst.c | 0 .../icu/source/test/cintltst/cjaptst.h | 0 .../icu/source/test/cintltst/cldrtest.c | 0 .../icu/source/test/cintltst/cloctst.c | 0 .../icu/source/test/cintltst/cloctst.h | 0 .../icu/source/test/cintltst/cmsccoll.c | 0 .../icu/source/test/cintltst/cmsgtst.c | 0 .../icu/source/test/cintltst/cmsgtst.h | 0 .../icu/source/test/cintltst/cnmdptst.c | 0 .../icu/source/test/cintltst/cnmdptst.h | 0 .../icu/source/test/cintltst/cnormtst.c | 0 .../icu/source/test/cintltst/cnormtst.h | 0 .../icu/source/test/cintltst/cnumtst.c | 0 .../icu/source/test/cintltst/cnumtst.h | 0 .../source/test/cintltst/cpluralrulestest.c | 0 .../icu/source/test/cintltst/cposxtst.c | 0 .../test/cintltst/crelativedateformattest.c | 0 .../icu/source/test/cintltst/crestst.c | 0 .../icu/source/test/cintltst/crestst.h | 0 .../icu/source/test/cintltst/creststn.c | 0 .../icu/source/test/cintltst/creststn.h | 0 .../icu/source/test/cintltst/cstrcase.c | 0 .../icu/source/test/cintltst/cstrtest.c | 0 .../icu/source/test/cintltst/cturtst.c | 0 .../icu/source/test/cintltst/cturtst.h | 0 .../icu/source/test/cintltst/cucdapi.c | 0 .../icu/source/test/cintltst/cucdapi.h | 0 .../icu/source/test/cintltst/cucdtst.c | 0 .../icu/source/test/cintltst/currtest.c | 0 .../icu/source/test/cintltst/custrtrn.c | 0 .../icu/source/test/cintltst/custrtst.c | 0 .../icu/source/test/cintltst/cutiltst.c | 0 .../icu/source/test/cintltst/encoll.c | 0 .../icu/source/test/cintltst/encoll.h | 0 .../icu/source/test/cintltst/eurocreg.c | 0 .../icu/source/test/cintltst/hpmufn.c | 0 .../icu/source/test/cintltst/idnatest.c | 0 .../icu/source/test/cintltst/nccbtst.c | 0 .../icu/source/test/cintltst/nccbtst.h | 0 .../icu/source/test/cintltst/ncnvfbts.c | 0 .../icu/source/test/cintltst/ncnvfbts.h | 0 .../icu/source/test/cintltst/ncnvtst.c | 0 .../icu/source/test/cintltst/nfsprep.c | 0 .../icu/source/test/cintltst/nfsprep.h | 0 .../icu/source/test/cintltst/nucnvtst.c | 0 .../icu/source/test/cintltst/nucnvtst.h | 0 .../icu/source/test/cintltst/putiltst.c | 0 .../icu/source/test/cintltst/reapits.c | 0 .../icu/source/test/cintltst/sorttest.c | 0 .../icu/source/test/cintltst/spooftest.c | 0 .../icu/source/test/cintltst/spreptst.c | 0 .../icu/source/test/cintltst/sprpdata.c | 0 .../icu/source/test/cintltst/stdnmtst.c | 0 .../icu/source/test/cintltst/tracetst.c | 0 .../icu/source/test/cintltst/trie2test.c | 0 .../icu/source/test/cintltst/trietest.c | 0 .../icu/source/test/cintltst/ucnvseltst.c | 0 .../icu/source/test/cintltst/ucnvseltst.h | 0 .../icu/source/test/cintltst/ucptrietest.c | 0 .../icu/source/test/cintltst/ucsdetst.c | 0 .../icu/source/test/cintltst/udatatst.c | 0 .../icu/source/test/cintltst/udatpg_test.c | 0 .../icu/source/test/cintltst/uenumtst.c | 0 .../source/test/cintltst/uformattedvaluetst.c | 0 .../icu/source/test/cintltst/ulistfmttest.c | 0 .../test/cintltst/unumberformattertst.c | 0 .../test/cintltst/unumberrangeformattertst.c | 0 .../icu/source/test/cintltst/uregiontest.c | 0 .../icu/source/test/cintltst/usettest.c | 0 .../icu/source/test/cintltst/usrchdat.c | 0 .../icu/source/test/cintltst/usrchtst.c | 0 .../icu/source/test/cintltst/utexttst.c | 0 .../icu/source/test/cintltst/utf16tst.c | 0 .../icu/source/test/cintltst/utf8tst.c | 0 .../icu/source/test/cintltst/utmstest.c | 0 .../icu/source/test/cintltst/utransts.c | 0 .../icu/source/test/compat/Makefile.in | 0 .../icu/source/test/compat/readme.txt | 0 .../icu/source/test/compat/tzdate.c | 0 .../icu/source/test/compat/tzone.pl | 0 .../icu/source/test/depstest/dependencies.py | 0 .../icu/source/test/depstest/dependencies.txt | 0 .../icu/source/test/depstest/depstest.py | 0 .../test/depstest/icu-dependencies-mode.el | 0 .../icu/source/test/fuzzer/Makefile.in | 0 .../test/fuzzer/break_iterator_fuzzer.cpp | 0 .../test/fuzzer/collator_compare_fuzzer.cpp | 0 .../fuzzer/collator_rulebased_ICU-21041.fuzz | Bin .../test/fuzzer/collator_rulebased_fuzzer.cpp | 0 .../collator_rulebased_fuzzer_seed_corpus.txt | Bin .../source/test/fuzzer/converter_fuzzer.cpp | 0 .../icu/source/test/fuzzer/fuzzer_driver.cpp | 0 .../icu/source/test/fuzzer/fuzzer_utils.h | 0 .../icu/source/test/fuzzer/locale_fuzzer.cpp | 0 .../icu/source/test/fuzzer/locale_util.cpp | 0 .../icu/source/test/fuzzer/locale_util.h | 0 .../test/fuzzer/number_format_fuzzer.cpp | 0 .../source/test/fuzzer/ucasemap_fuzzer.cpp | 0 .../test/fuzzer/uloc_canonicalize_fuzzer.cpp | 0 .../uloc_canonicalize_fuzzer_seed_corpus.txt | 0 .../fuzzer/uloc_for_language_tag_fuzzer.cpp | 0 ...oc_for_language_tag_fuzzer_seed_corpus.txt | 0 .../test/fuzzer/uloc_get_name_fuzzer.cpp | 0 .../uloc_get_name_fuzzer_seed_corpus.txt | 0 .../fuzzer/uloc_is_right_to_left_fuzzer.cpp | 0 ...oc_is_right_to_left_fuzzer_seed_corpus.txt | 0 .../test/fuzzer/uloc_open_keywords_fuzzer.cpp | 0 .../uloc_open_keywords_fuzzer_seed_corpus.txt | 0 .../unicode_string_codepage_create_fuzzer.cpp | 0 .../source/test/fuzzer/uregex_open_fuzzer.cpp | 0 .../test/fuzzer/uregex_open_fuzzer.dict | 0 .../icu/source/test/hdrtst/Makefile.in | 0 .../icu/source/test/hdrtst/dfiles.txt | 0 .../source/test/hdrtst/testinternalheaders.sh | 0 .../icu/source/test/hdrtst/testtagsguards.sh | 0 .../icu/source/test/intltest/Makefile.in | 0 .../icu/source/test/intltest/aliastst.cpp | 0 .../icu/source/test/intltest/aliastst.h | 0 .../icu/source/test/intltest/allcoll.cpp | 0 .../icu/source/test/intltest/allcoll.h | 0 .../source/test/intltest/alphaindextst.cpp | 0 .../icu/source/test/intltest/alphaindextst.h | 0 .../icu/source/test/intltest/apicoll.cpp | 0 .../icu/source/test/intltest/apicoll.h | 0 .../icu/source/test/intltest/astrotst.cpp | 0 .../icu/source/test/intltest/astrotst.h | 0 .../icu/source/test/intltest/bidiconf.cpp | 0 .../source/test/intltest/bytestrietest.cpp | 0 .../icu/source/test/intltest/calcasts.cpp | 0 .../icu/source/test/intltest/calcasts.h | 0 .../icu/source/test/intltest/callimts.cpp | 0 .../icu/source/test/intltest/callimts.h | 0 .../icu/source/test/intltest/calregts.cpp | 0 .../icu/source/test/intltest/calregts.h | 0 .../icu/source/test/intltest/caltest.cpp | 0 .../icu/source/test/intltest/caltest.h | 0 .../icu/source/test/intltest/caltestdata.h | 0 .../icu/source/test/intltest/caltztst.cpp | 0 .../icu/source/test/intltest/caltztst.h | 0 .../icu/source/test/intltest/canittst.cpp | 0 .../icu/source/test/intltest/canittst.h | 0 .../icu/source/test/intltest/citrtest.cpp | 0 .../icu/source/test/intltest/citrtest.h | 0 .../source/test/intltest/collationtest.cpp | 0 .../icu/source/test/intltest/colldata.cpp | 0 .../icu/source/test/intltest/colldata.h | 0 .../intltest/compactdecimalformattest.cpp | 0 .../icu/source/test/intltest/convtest.cpp | 0 .../icu/source/test/intltest/convtest.h | 0 .../icu/source/test/intltest/cpdtrtst.cpp | 0 .../icu/source/test/intltest/cpdtrtst.h | 0 .../icu/source/test/intltest/csdetest.cpp | 0 .../icu/source/test/intltest/csdetest.h | 0 .../icu/source/test/intltest/currcoll.cpp | 0 .../icu/source/test/intltest/currcoll.h | 0 .../icu/source/test/intltest/dadrcal.cpp | 0 .../icu/source/test/intltest/dadrcal.h | 0 .../icu/source/test/intltest/dadrfmt.cpp | 0 .../icu/source/test/intltest/dadrfmt.h | 0 .../datadrivennumberformattestsuite.cpp | 0 .../datadrivennumberformattestsuite.h | 0 .../icu/source/test/intltest/dcfmapts.cpp | 0 .../icu/source/test/intltest/dcfmapts.h | 0 .../icu/source/test/intltest/dcfmtest.cpp | 0 .../icu/source/test/intltest/dcfmtest.h | 0 .../icu/source/test/intltest/decoll.cpp | 0 .../icu/source/test/intltest/decoll.h | 0 .../icu/source/test/intltest/dtfmapts.cpp | 0 .../icu/source/test/intltest/dtfmapts.h | 0 .../icu/source/test/intltest/dtfmrgts.cpp | 0 .../icu/source/test/intltest/dtfmrgts.h | 0 .../icu/source/test/intltest/dtfmtrtts.cpp | 0 .../icu/source/test/intltest/dtfmtrtts.h | 0 .../icu/source/test/intltest/dtfmttst.cpp | 0 .../icu/source/test/intltest/dtfmttst.h | 0 .../icu/source/test/intltest/dtifmtts.cpp | 0 .../icu/source/test/intltest/dtifmtts.h | 0 .../icu/source/test/intltest/dtptngts.cpp | 0 .../icu/source/test/intltest/dtptngts.h | 0 .../icu/source/test/intltest/encoll.cpp | 0 .../icu/source/test/intltest/encoll.h | 0 .../icu/source/test/intltest/erarulestest.cpp | 0 .../icu/source/test/intltest/erarulestest.h | 0 .../icu/source/test/intltest/escoll.cpp | 0 .../icu/source/test/intltest/escoll.h | 0 .../icu/source/test/intltest/ficoll.cpp | 0 .../icu/source/test/intltest/ficoll.h | 0 .../icu/source/test/intltest/fldset.cpp | 0 .../icu/source/test/intltest/fldset.h | 0 .../formatted_string_builder_test.cpp | 0 .../test/intltest/formattedvaluetest.cpp | 0 .../icu/source/test/intltest/frcoll.cpp | 0 .../icu/source/test/intltest/frcoll.h | 0 .../icu/source/test/intltest/g7coll.cpp | 0 .../icu/source/test/intltest/g7coll.h | 0 .../source/test/intltest/genderinfotest.cpp | 0 .../icu/source/test/intltest/icusvtst.cpp | 0 .../icu/source/test/intltest/icusvtst.h | 0 .../icu/source/test/intltest/idnaconf.cpp | 0 .../icu/source/test/intltest/idnaconf.h | 0 .../icu/source/test/intltest/idnaref.cpp | 0 .../icu/source/test/intltest/idnaref.h | 0 .../icu/source/test/intltest/incaltst.cpp | 0 .../icu/source/test/intltest/incaltst.h | 0 .../icu/source/test/intltest/intltest.cpp | 0 .../icu/source/test/intltest/intltest.h | 0 .../icu/source/test/intltest/intltest.vcxproj | 0 .../test/intltest/intltest.vcxproj.filters | 0 .../icu/source/test/intltest/itercoll.cpp | 0 .../icu/source/test/intltest/itercoll.h | 0 .../icu/source/test/intltest/itformat.cpp | 0 .../icu/source/test/intltest/itformat.h | 0 .../icu/source/test/intltest/itmajor.cpp | 0 .../icu/source/test/intltest/itmajor.h | 0 .../icu/source/test/intltest/itrbbi.cpp | 0 .../icu/source/test/intltest/itrbbi.h | 0 .../icu/source/test/intltest/itrbnf.cpp | 0 .../icu/source/test/intltest/itrbnf.h | 0 .../icu/source/test/intltest/itrbnfp.cpp | 0 .../icu/source/test/intltest/itrbnfp.h | 0 .../icu/source/test/intltest/itrbnfrt.cpp | 0 .../icu/source/test/intltest/itrbnfrt.h | 0 .../icu/source/test/intltest/itspoof.cpp | 0 .../icu/source/test/intltest/itspoof.h | 0 .../icu/source/test/intltest/ittrans.cpp | 0 .../icu/source/test/intltest/ittrans.h | 0 .../icu/source/test/intltest/itutil.cpp | 0 .../icu/source/test/intltest/itutil.h | 0 .../icu/source/test/intltest/jacoll.cpp | 0 .../icu/source/test/intltest/jacoll.h | 0 .../icu/source/test/intltest/jamotest.cpp | 0 .../icu/source/test/intltest/jamotest.h | 0 .../icu/source/test/intltest/lcukocol.cpp | 0 .../icu/source/test/intltest/lcukocol.h | 0 .../test/intltest/listformattertest.cpp | 0 .../source/test/intltest/listformattertest.h | 0 .../test/intltest/localebuildertest.cpp | 0 .../source/test/intltest/localebuildertest.h | 0 .../test/intltest/localematchertest.cpp | 0 .../icu/source/test/intltest/locnmtst.cpp | 0 .../icu/source/test/intltest/locnmtst.h | 0 .../icu/source/test/intltest/loctest.cpp | 0 .../icu/source/test/intltest/loctest.h | 0 .../icu/source/test/intltest/lstmbetst.cpp | 0 .../icu/source/test/intltest/lstmbetst.h | 0 .../icu/source/test/intltest/measfmttest.cpp | 0 .../icu/source/test/intltest/miscdtfm.cpp | 0 .../icu/source/test/intltest/miscdtfm.h | 0 .../icu/source/test/intltest/mnkytst.cpp | 0 .../icu/source/test/intltest/mnkytst.h | 0 .../icu/source/test/intltest/msfmrgts.cpp | 0 .../icu/source/test/intltest/msfmrgts.h | 0 .../icu/source/test/intltest/nmfmapts.cpp | 0 .../icu/source/test/intltest/nmfmapts.h | 0 .../icu/source/test/intltest/nmfmtrt.cpp | 0 .../icu/source/test/intltest/nmfmtrt.h | 0 .../icu/source/test/intltest/normconf.cpp | 0 .../icu/source/test/intltest/normconf.h | 0 .../icu/source/test/intltest/nptrans.cpp | 0 .../icu/source/test/intltest/nptrans.h | 0 .../test/intltest/numberformattesttuple.cpp | 0 .../test/intltest/numberformattesttuple.h | 0 .../icu/source/test/intltest/numbertest.h | 0 .../test/intltest/numbertest_affixutils.cpp | 0 .../source/test/intltest/numbertest_api.cpp | 0 .../intltest/numbertest_decimalquantity.cpp | 0 .../intltest/numbertest_doubleconversion.cpp | 0 .../test/intltest/numbertest_modifiers.cpp | 0 .../source/test/intltest/numbertest_parse.cpp | 0 .../intltest/numbertest_patternmodifier.cpp | 0 .../intltest/numbertest_patternstring.cpp | 0 .../test/intltest/numbertest_permutation.cpp | 0 .../source/test/intltest/numbertest_range.cpp | 0 .../test/intltest/numbertest_skeletons.cpp | 0 .../test/intltest/numfmtdatadriventest.cpp | 0 .../source/test/intltest/numfmtspectest.cpp | 0 .../icu/source/test/intltest/numfmtst.cpp | 0 .../icu/source/test/intltest/numfmtst.h | 0 .../icu/source/test/intltest/numrgts.cpp | 0 .../icu/source/test/intltest/numrgts.h | 0 .../source/test/intltest/pluralmaptest.cpp | 0 .../icu/source/test/intltest/plurfmts.cpp | 0 .../icu/source/test/intltest/plurfmts.h | 0 .../icu/source/test/intltest/plurults.cpp | 0 .../icu/source/test/intltest/plurults.h | 0 .../icu/source/test/intltest/pptest.cpp | 0 .../icu/source/test/intltest/pptest.h | 0 .../icu/source/test/intltest/punyref.cpp | 0 .../icu/source/test/intltest/punyref.h | 0 .../test/intltest/quantityformattertest.cpp | 0 .../icu/source/test/intltest/rbbiapts.cpp | 0 .../icu/source/test/intltest/rbbiapts.h | 0 .../source/test/intltest/rbbimonkeytest.cpp | 0 .../icu/source/test/intltest/rbbimonkeytest.h | 0 .../icu/source/test/intltest/rbbitst.cpp | 0 .../icu/source/test/intltest/rbbitst.h | 0 .../icu/source/test/intltest/regcoll.cpp | 0 .../icu/source/test/intltest/regcoll.h | 0 .../icu/source/test/intltest/regextst.cpp | 0 .../icu/source/test/intltest/regextst.h | 0 .../icu/source/test/intltest/regiontst.cpp | 0 .../icu/source/test/intltest/regiontst.h | 0 .../source/test/intltest/reldatefmttest.cpp | 0 .../icu/source/test/intltest/reptest.cpp | 0 .../icu/source/test/intltest/reptest.h | 0 .../icu/source/test/intltest/restest.cpp | 0 .../icu/source/test/intltest/restest.h | 0 .../icu/source/test/intltest/restsnew.cpp | 0 .../icu/source/test/intltest/restsnew.h | 0 .../scientificnumberformattertest.cpp | 0 .../icu/source/test/intltest/sdtfmtts.cpp | 0 .../icu/source/test/intltest/sdtfmtts.h | 0 .../icu/source/test/intltest/selfmts.cpp | 0 .../icu/source/test/intltest/selfmts.h | 0 .../icu/source/test/intltest/sfwdchit.cpp | 0 .../icu/source/test/intltest/sfwdchit.h | 0 .../test/intltest/simpleformattertest.cpp | 0 .../icu/source/test/intltest/simplethread.cpp | 0 .../icu/source/test/intltest/simplethread.h | 0 .../icu/source/test/intltest/srchtest.cpp | 0 .../icu/source/test/intltest/srchtest.h | 0 .../icu/source/test/intltest/ssearch.cpp | 0 .../icu/source/test/intltest/ssearch.h | 0 .../test/intltest/static_unisets_test.cpp | 0 .../icu/source/test/intltest/strcase.cpp | 0 .../test/intltest/string_segment_test.cpp | 0 .../icu/source/test/intltest/strtest.cpp | 0 .../icu/source/test/intltest/strtest.h | 0 .../icu/source/test/intltest/svccoll.cpp | 0 .../icu/source/test/intltest/svccoll.h | 0 .../icu/source/test/intltest/tchcfmt.cpp | 0 .../icu/source/test/intltest/tchcfmt.h | 0 .../icu/source/test/intltest/testidn.cpp | 0 .../icu/source/test/intltest/testidna.cpp | 0 .../icu/source/test/intltest/testidna.h | 0 .../icu/source/test/intltest/testutil.cpp | 0 .../icu/source/test/intltest/testutil.h | 0 .../icu/source/test/intltest/textfile.cpp | 0 .../icu/source/test/intltest/textfile.h | 0 .../icu/source/test/intltest/tfsmalls.cpp | 0 .../icu/source/test/intltest/tfsmalls.h | 0 .../icu/source/test/intltest/thcoll.cpp | 0 .../icu/source/test/intltest/thcoll.h | 0 .../icu/source/test/intltest/tmsgfmt.cpp | 0 .../icu/source/test/intltest/tmsgfmt.h | 0 .../icu/source/test/intltest/tokiter.cpp | 0 .../icu/source/test/intltest/tokiter.h | 0 .../icu/source/test/intltest/transapi.cpp | 0 .../icu/source/test/intltest/transapi.h | 0 .../icu/source/test/intltest/transrt.cpp | 0 .../icu/source/test/intltest/transrt.h | 0 .../icu/source/test/intltest/transtst.cpp | 0 .../icu/source/test/intltest/transtst.h | 0 .../icu/source/test/intltest/trcoll.cpp | 0 .../icu/source/test/intltest/trcoll.h | 0 .../icu/source/test/intltest/trnserr.cpp | 0 .../icu/source/test/intltest/trnserr.h | 0 .../icu/source/test/intltest/tscoll.cpp | 0 .../icu/source/test/intltest/tscoll.h | 0 .../icu/source/test/intltest/tsdate.cpp | 0 .../icu/source/test/intltest/tsdate.h | 0 .../icu/source/test/intltest/tsdcfmsy.cpp | 0 .../icu/source/test/intltest/tsdcfmsy.h | 0 .../icu/source/test/intltest/tsdtfmsy.cpp | 0 .../icu/source/test/intltest/tsdtfmsy.h | 0 .../icu/source/test/intltest/tsmthred.cpp | 0 .../icu/source/test/intltest/tsmthred.h | 0 .../icu/source/test/intltest/tsnmfmt.cpp | 0 .../icu/source/test/intltest/tsnmfmt.h | 0 .../icu/source/test/intltest/tsputil.cpp | 0 .../icu/source/test/intltest/tsputil.h | 0 .../icu/source/test/intltest/tstnorm.cpp | 0 .../icu/source/test/intltest/tstnorm.h | 0 .../icu/source/test/intltest/tstnrapi.cpp | 0 .../icu/source/test/intltest/tufmtts.cpp | 0 .../icu/source/test/intltest/tzbdtest.cpp | 0 .../icu/source/test/intltest/tzbdtest.h | 0 .../icu/source/test/intltest/tzfmttst.cpp | 0 .../icu/source/test/intltest/tzfmttst.h | 0 .../icu/source/test/intltest/tzoffloc.cpp | 0 .../icu/source/test/intltest/tzoffloc.h | 0 .../icu/source/test/intltest/tzregts.cpp | 0 .../icu/source/test/intltest/tzregts.h | 0 .../icu/source/test/intltest/tzrulets.cpp | 0 .../icu/source/test/intltest/tzrulets.h | 0 .../icu/source/test/intltest/tztest.cpp | 0 .../icu/source/test/intltest/tztest.h | 0 .../icu/source/test/intltest/ucaconf.cpp | 0 .../icu/source/test/intltest/ucaconf.h | 0 .../icu/source/test/intltest/ucdtest.cpp | 0 .../icu/source/test/intltest/ucdtest.h | 0 .../source/test/intltest/ucharstrietest.cpp | 0 .../source/test/intltest/unifiedcachetest.cpp | 0 .../source/test/intltest/units_data_test.cpp | 0 .../test/intltest/units_router_test.cpp | 0 .../icu/source/test/intltest/units_test.cpp | 0 .../icu/source/test/intltest/uobjtest.cpp | 0 .../icu/source/test/intltest/uobjtest.h | 0 .../icu/source/test/intltest/usettest.cpp | 0 .../icu/source/test/intltest/usettest.h | 0 .../icu/source/test/intltest/ustrtest.cpp | 0 .../icu/source/test/intltest/ustrtest.h | 0 .../icu/source/test/intltest/uts46test.cpp | 0 .../icu/source/test/intltest/utxttest.cpp | 0 .../icu/source/test/intltest/utxttest.h | 0 .../icu/source/test/intltest/uvectest.cpp | 0 .../icu/source/test/intltest/uvectest.h | 0 .../icu/source/test/intltest/v32test.cpp | 0 .../icu/source/test/intltest/v32test.h | 0 .../icu/source/test/intltest/windttst.cpp | 0 .../icu/source/test/intltest/windttst.h | 0 .../icu/source/test/intltest/winnmtst.cpp | 0 .../icu/source/test/intltest/winnmtst.h | 0 .../icu/source/test/intltest/winutil.cpp | 0 .../icu/source/test/intltest/winutil.h | 0 .../icu/source/test/iotest/Makefile.in | 0 .../icu/source/test/iotest/filetst.c | 0 .../icu/source/test/iotest/iotest.cpp | 0 .../icu/source/test/iotest/iotest.h | 0 .../icu/source/test/iotest/iotest.vcxproj | 0 .../source/test/iotest/iotest.vcxproj.filters | 0 .../icu/source/test/iotest/stream.cpp | 0 .../icu/source/test/iotest/strtst.c | 0 .../icu/source/test/iotest/trnstst.c | 0 .../icu/source/test/letest/FontObject.cpp | 0 .../icu/source/test/letest/FontObject.h | 0 .../icu/source/test/letest/FontTableCache.cpp | 0 .../icu/source/test/letest/FontTableCache.h | 0 .../icu/source/test/letest/Makefile.in | 0 .../test/letest/PortableFontInstance.cpp | 0 .../source/test/letest/PortableFontInstance.h | 0 .../source/test/letest/SimpleFontInstance.cpp | 0 .../source/test/letest/SimpleFontInstance.h | 0 .../icu/source/test/letest/cfonts.cpp | 0 .../icu/source/test/letest/cfonts.h | 0 .../icu/source/test/letest/cletest.c | 0 .../icu/source/test/letest/cletest.sln | 0 .../icu/source/test/letest/cletest.vcxproj | 0 .../test/letest/cletest.vcxproj.filters | 0 .../icu/source/test/letest/cmaps.cpp | 0 .../icu/source/test/letest/cmaps.h | 0 .../icu/source/test/letest/gendata.cpp | 0 .../icu/source/test/letest/gendata.sln | 0 .../icu/source/test/letest/gendata.vcxproj | 0 .../test/letest/gendata.vcxproj.filters | 0 .../icu/source/test/letest/gendata.xml | 0 .../icu/source/test/letest/letest.cpp | 0 .../icu/source/test/letest/letest.h | 0 .../icu/source/test/letest/letest.sln | 0 .../icu/source/test/letest/letest.vcxproj | 0 .../source/test/letest/letest.vcxproj.filters | 0 .../icu/source/test/letest/letsutil.cpp | 0 .../icu/source/test/letest/letsutil.h | 0 .../icu/source/test/letest/readme.html | 0 .../icu/source/test/letest/sfnt.h | 0 .../icu/source/test/letest/testdata.cpp | 0 .../icu/source/test/letest/xmlreader.cpp | 0 .../icu/source/test/letest/xmlreader.h | 0 .../test/perf/DateFmtPerf/DateFmtPerf.cpp | 0 .../test/perf/DateFmtPerf/DateFmtPerf.h | 0 .../test/perf/DateFmtPerf/DateFmtPerf.vcxproj | 0 .../DateFmtPerf/DateFmtPerf.vcxproj.filters | 0 .../source/test/perf/DateFmtPerf/Makefile.in | 0 .../source/test/perf/DateFmtPerf/ReadMe.txt | 0 .../source/test/perf/DateFmtPerf/breakdata.h | 0 .../test/perf/DateFmtPerf/collationdata.h | 0 .../source/test/perf/DateFmtPerf/datedata.h | 0 .../icu/source/test/perf/Makefile.in | 0 .../deps => deps}/icu/source/test/perf/README | 0 .../icu/source/test/perf/charperf/CharPerf.pl | 0 .../source/test/perf/charperf/CharPerf_r.pl | 0 .../icu/source/test/perf/charperf/Makefile.in | 0 .../source/test/perf/charperf/charperf.cpp | 0 .../icu/source/test/perf/charperf/charperf.h | 0 .../test/perf/charperf/charperf.vcxproj | 0 .../perf/charperf/charperf.vcxproj.filters | 0 .../test/perf/collationperf/CollPerf.pl | 0 .../test/perf/collationperf/Makefile.in | 0 .../test/perf/collationperf/collperf.cpp | 0 .../test/perf/collationperf/readme.html | 0 .../icu/source/test/perf/collperf/CollPerf.pl | 0 .../source/test/perf/collperf/CollPerf_r.pl | 0 .../icu/source/test/perf/collperf/Makefile.in | 0 .../source/test/perf/collperf/collperf.cpp | 0 .../test/perf/collperf/collperf.vcxproj | 0 .../perf/collperf/collperf.vcxproj.filters | 0 .../source/test/perf/collperf2/CollPerf2_r.pl | 0 .../source/test/perf/collperf2/Makefile.in | 0 .../source/test/perf/collperf2/collperf2.cpp | 0 .../test/perf/collperf2/collperf2.vcxproj | 0 .../perf/collperf2/collperf2.vcxproj.filters | 0 .../source/test/perf/convperf/ConvPerf_r.pl | 0 .../icu/source/test/perf/convperf/Makefile.in | 0 .../source/test/perf/convperf/convperf.cpp | 0 .../icu/source/test/perf/convperf/convperf.h | 0 .../test/perf/convperf/convperf.vcxproj | 0 .../perf/convperf/convperf.vcxproj.filters | 0 .../test/perf/convperf/convperf_ansi.pl | 0 .../source/test/perf/convperf/convperf_iml.pl | 0 .../icu/source/test/perf/convperf/data.h | 0 .../source/test/perf/dicttrieperf/Makefile.in | 0 .../test/perf/dicttrieperf/dicttrieperf.cpp | 0 .../test/perf/howExpensiveIs/Makefile.in | 0 .../perf/howExpensiveIs/howExpensiveIs.cpp | 0 .../test/perf/howExpensiveIs/readme.txt | 0 .../source/test/perf/howExpensiveIs/sieve.cpp | 0 .../source/test/perf/howExpensiveIs/sieve.h | 0 .../icu/source/test/perf/icuperf2report.xsl | 0 .../source/test/perf/leperf/FontObject.cpp | 0 .../icu/source/test/perf/leperf/FontObject.h | 0 .../test/perf/leperf/FontTableCache.cpp | 0 .../source/test/perf/leperf/FontTableCache.h | 0 .../icu/source/test/perf/leperf/Makefile.in | 0 .../test/perf/leperf/PortableFontInstance.cpp | 0 .../test/perf/leperf/PortableFontInstance.h | 0 .../test/perf/leperf/SimpleFontInstance.cpp | 0 .../test/perf/leperf/SimpleFontInstance.h | 0 .../icu/source/test/perf/leperf/cfonts.cpp | 0 .../icu/source/test/perf/leperf/cfonts.h | 0 .../icu/source/test/perf/leperf/cmaps.cpp | 0 .../icu/source/test/perf/leperf/cmaps.h | 0 .../icu/source/test/perf/leperf/leperf.cpp | 0 .../icu/source/test/perf/leperf/letrperf.cpp | 0 .../icu/source/test/perf/leperf/sfnt.h | 0 .../icu/source/test/perf/leperf/xmlreader.cpp | 0 .../icu/source/test/perf/leperf/xmlreader.h | 0 .../test/perf/localecanperf/Makefile.in | 0 .../test/perf/localecanperf/localecanperf.cpp | 0 .../source/test/perf/localecanperf/runTest.sh | 0 .../icu/source/test/perf/normperf/Makefile.in | 0 .../icu/source/test/perf/normperf/NormPerf.pl | 0 .../source/test/perf/normperf/NormPerf_r.pl | 0 .../source/test/perf/normperf/dtfmtrtperf.cpp | 0 .../source/test/perf/normperf/dtfmtrtperf.h | 0 .../test/perf/normperf/dtfmtrtperf.vcxproj | 0 .../perf/normperf/dtfmtrtperf.vcxproj.filters | 0 .../source/test/perf/normperf/normperf.cpp | 0 .../icu/source/test/perf/normperf/normperf.h | 0 .../test/perf/normperf/normperf.vcxproj | 0 .../perf/normperf/normperf.vcxproj.filters | 0 .../test/perf/normperf/simplenormperf.cpp | 0 .../icu/source/test/perf/perf.sln | 0 .../test/perf/perldriver/Common.pl.template | 0 .../source/test/perf/perldriver/Dataset.pm | 0 .../icu/source/test/perf/perldriver/Format.pm | 0 .../icu/source/test/perf/perldriver/Output.pm | 0 .../test/perf/perldriver/PerfFramework.pm | 0 .../source/test/perf/strsrchperf/Makefile.in | 0 .../test/perf/strsrchperf/StrSrchPerf_r.pl | 0 .../test/perf/strsrchperf/strsrchperf.cpp | 0 .../test/perf/strsrchperf/strsrchperf.h | 0 .../test/perf/strsrchperf/strsrchperf.vcxproj | 0 .../strsrchperf/strsrchperf.vcxproj.filters | 0 .../icu/source/test/perf/ubrkperf/Makefile.in | 0 .../source/test/perf/ubrkperf/UBrkPerf_r.pl | 0 .../source/test/perf/ubrkperf/ubrkperf.cpp | 0 .../source/test/perf/ubrkperf/ubrkperf.dsp | 0 .../icu/source/test/perf/ubrkperf/ubrkperf.h | 0 .../test/perf/ubrkperf/ubrkperf.vcxproj | 0 .../perf/ubrkperf/ubrkperf.vcxproj.filters | 0 .../source/test/perf/ubrkperf/ubrkperf20.dsp | 0 .../source/test/perf/ubrkperf/ubrkperfold.cpp | 0 .../source/test/perf/ubrkperf/ubrkperfold.dsp | 0 .../test/perf/ucnvavailperf/ucnvavailperf.cpp | 0 .../perf/ucnvavailperf/ucnvavailperf.vcxproj | 0 .../source/test/perf/unisetperf/Makefile.in | 0 .../test/perf/unisetperf/draft/bitset.cpp | 0 .../test/perf/unisetperf/draft/contperf.bat | 0 .../test/perf/unisetperf/draft/contperf.sh | 0 .../test/perf/unisetperf/draft/span16perf.bat | 0 .../test/perf/unisetperf/draft/span16perf.sh | 0 .../test/perf/unisetperf/draft/span8perf.bat | 0 .../test/perf/unisetperf/draft/span8perf.sh | 0 .../test/perf/unisetperf/draft/trieset.cpp | 0 .../test/perf/unisetperf/draft/unicont.h | 0 .../test/perf/unisetperf/unisetperf.cpp | 0 .../source/test/perf/unisetperf/unisetperf.pl | 0 .../test/perf/unisetperf/unisetperf.vcxproj | 0 .../icu/source/test/perf/usetperf/Makefile.in | 0 .../icu/source/test/perf/usetperf/UsetPerf.pl | 0 .../icu/source/test/perf/usetperf/bitset.cpp | 0 .../icu/source/test/perf/usetperf/bitset.h | 0 .../source/test/perf/usetperf/usetperf.cpp | 0 .../test/perf/usetperf/usetperf.vcxproj | 0 .../perf/usetperf/usetperf.vcxproj.filters | 0 .../icu/source/test/perf/ustrperf/Makefile.in | 0 .../source/test/perf/ustrperf/StringPerf.pl | 0 .../source/test/perf/ustrperf/StringPerf_r.pl | 0 .../source/test/perf/ustrperf/stringperf.cpp | 0 .../source/test/perf/ustrperf/stringperf.h | 0 .../test/perf/ustrperf/stringperf.vcxproj | 0 .../perf/ustrperf/stringperf.vcxproj.filters | 0 .../icu/source/test/perf/utfperf/Makefile.in | 0 .../icu/source/test/perf/utfperf/UtfPerf.pl | 0 .../icu/source/test/perf/utfperf/utfperf.cpp | 0 .../source/test/perf/utfperf/utfperf.vcxproj | 0 .../test/perf/utfperf/utfperf.vcxproj.filters | 0 .../source/test/perf/utrie2perf/Makefile.in | 0 .../test/perf/utrie2perf/utrie2perf.bat | 0 .../test/perf/utrie2perf/utrie2perf.cpp | 0 .../source/test/perf/utrie2perf/utrie2perf.sh | 0 .../test/perf/utrie2perf/utrie2perf.vcxproj | 0 .../icu/source/test/testdata/BUILDRULES.py | 0 .../test/testdata/BidiCharacterTest.txt | 0 .../icu/source/test/testdata/BidiTest.txt | 0 .../Burmese_graphclust_model5_heavy.txt | 0 .../Burmese_graphclust_model5_heavy_Test.txt | 0 .../CollationTest_NON_IGNORABLE_SHORT.txt | 0 .../testdata/CollationTest_SHIFTED_SHORT.txt | 0 .../testdata/ConverterSelectorTestUTF8.txt | 0 .../test/testdata/GraphemeBreakTest.txt | 0 .../icu/source/test/testdata/IdnaTestV2.txt | 0 .../source/test/testdata/LineBreakTest.txt | 0 .../icu/source/test/testdata/Makefile.in | 0 .../test/testdata/NormalizationTest-3.2.0.txt | 0 .../test/testdata/NumberFormatTestCases.txt | 0 .../test/testdata/SentenceBreakTest.txt | 0 .../icu/source/test/testdata/TestFont1.otf | Bin ...Thai_codepoints_exclusive_model5_heavy.txt | 0 ...codepoints_exclusive_model5_heavy_Test.txt | 0 .../testdata/Thai_graphclust_model4_heavy.txt | 0 .../Thai_graphclust_model4_heavy_Test.txt | 0 .../source/test/testdata/WordBreakTest.txt | 0 .../test/testdata/break_rules/README.md | 0 .../test/testdata/break_rules/grapheme.txt | 0 .../source/test/testdata/break_rules/line.txt | 0 .../test/testdata/break_rules/line_cj.txt | 0 .../test/testdata/break_rules/line_loose.txt | 0 .../testdata/break_rules/line_loose_cj.txt | 0 .../test/testdata/break_rules/line_normal.txt | 0 .../testdata/break_rules/line_normal_cj.txt | 0 .../test/testdata/break_rules/sentence.txt | 0 .../source/test/testdata/break_rules/word.txt | 0 .../test/testdata/break_rules/word_POSIX.txt | 0 .../icu/source/test/testdata/calendar.txt | 0 .../icu/source/test/testdata/casing.txt | 0 .../test/testdata/cldr/units/_readme.txt | 0 .../cldr/units/unitPreferencesTest.txt | 0 .../test/testdata/cldr/units/unitsTest.txt | 0 .../codepointtrie/free-blocks.16.toml | 0 .../codepointtrie/free-blocks.32.toml | 0 .../testdata/codepointtrie/free-blocks.8.toml | 0 .../codepointtrie/free-blocks.small16.toml | 0 .../testdata/codepointtrie/grow-data.16.toml | 0 .../testdata/codepointtrie/grow-data.32.toml | 0 .../testdata/codepointtrie/grow-data.8.toml | 0 .../codepointtrie/grow-data.small16.toml | 0 .../testdata/codepointtrie/set-empty.16.toml | 0 .../testdata/codepointtrie/set-empty.32.toml | 0 .../testdata/codepointtrie/set-empty.8.toml | 0 .../codepointtrie/set-empty.small16.toml | 0 .../codepointtrie/set-single-value.16.toml | 0 .../codepointtrie/set-single-value.32.toml | 0 .../codepointtrie/set-single-value.8.toml | 0 .../set-single-value.small16.toml | 0 .../test/testdata/codepointtrie/set1.16.toml | 0 .../test/testdata/codepointtrie/set1.32.toml | 0 .../test/testdata/codepointtrie/set1.8.toml | 0 .../testdata/codepointtrie/set1.small16.toml | 0 .../codepointtrie/set2-overlap.16.toml | 0 .../codepointtrie/set2-overlap.32.toml | 0 .../codepointtrie/set2-overlap.small16.toml | 0 .../codepointtrie/set3-initial-9.16.toml | 0 .../codepointtrie/set3-initial-9.32.toml | 0 .../codepointtrie/set3-initial-9.8.toml | 0 .../codepointtrie/set3-initial-9.small16.toml | 0 .../codepointtrie/short-all-same.8.toml | 0 .../codepointtrie/short-all-same.small16.toml | 0 .../codepointtrie/small0-in-fast.16.toml | 0 .../codepointtrie/small0-in-fast.32.toml | 0 .../codepointtrie/small0-in-fast.8.toml | 0 .../codepointtrie/small0-in-fast.small16.toml | 0 .../source/test/testdata/collationtest.txt | 0 .../icu/source/test/testdata/conversion.txt | 0 .../icu/source/test/testdata/csdetest.xml | 0 .../icu/source/test/testdata/dcfmtest.txt | 0 .../icu/source/test/testdata/default.txt | 0 .../icu/source/test/testdata/emoji-test.txt | 0 .../icu/source/test/testdata/encoded.utf16be | Bin .../test/testdata/filters/filtertest.txt | 0 .../icu/source/test/testdata/filtertest.txt | 0 .../icu/source/test/testdata/format.txt | 0 .../icu/source/test/testdata/ibm9027.ucm | 0 .../icu/source/test/testdata/icuio.txt | 0 .../icu/source/test/testdata/idna_conf.txt | 0 .../icu/source/test/testdata/idna_rules.txt | 0 .../icu/source/test/testdata/importtest.bin | Bin .../icu/source/test/testdata/letest.xml | 0 .../test/testdata/localeCanonicalization.txt | 0 .../test/testdata/localeMatcherTest.txt | 0 .../icu/source/test/testdata/mc.txt | 0 .../icu/source/test/testdata/metaZones.txt | 0 .../source/test/testdata/nfs4_cis_prep.txt | 0 .../source/test/testdata/nfs4_cs_prep_ci.txt | 0 .../source/test/testdata/nfs4_cs_prep_cs.txt | 0 .../test/testdata/nfs4_mixed_prep_p.txt | 0 .../test/testdata/nfs4_mixed_prep_s.txt | 0 .../numberformattestspecification.txt | 0 .../test/testdata/numberpermutationtest.txt | 0 .../source/test/testdata/old_e_testtypes.res | Bin .../source/test/testdata/old_l_testtypes.res | Bin .../icu/source/test/testdata/pkgdata.inc.in | 0 .../source/test/testdata/pkgdataMakefile.in | 0 .../icu/source/test/testdata/ra.txt | 0 .../icu/source/test/testdata/ra.xlf | 0 .../icu/source/test/testdata/rbbitst.txt | 0 .../icu/source/test/testdata/re_tests.txt | 0 .../icu/source/test/testdata/readme.txt | 0 .../icu/source/test/testdata/regextst.txt | 0 .../icu/source/test/testdata/riwords.txt | 0 .../icu/source/test/testdata/root.txt | 0 .../icu/source/test/testdata/sh.txt | 0 .../icu/source/test/testdata/sh_YU.txt | 0 .../icu/source/test/testdata/ssearch.xml | 0 .../icu/source/test/testdata/structLocale.txt | 0 .../icu/source/test/testdata/te.txt | 0 .../icu/source/test/testdata/te_IN.txt | 0 .../source/test/testdata/te_IN_REVISED.txt | 0 .../icu/source/test/testdata/test1.ucm | 0 .../icu/source/test/testdata/test1bmp.ucm | 0 .../icu/source/test/testdata/test2.ucm | 0 .../icu/source/test/testdata/test3.ucm | 0 .../icu/source/test/testdata/test4.ucm | 0 .../icu/source/test/testdata/test4x.ucm | 0 .../icu/source/test/testdata/test5.ucm | 0 .../icu/source/test/testdata/testaliases.txt | 0 .../icu/source/test/testdata/testdata.mak | 0 .../icu/source/test/testdata/testempty.txt | 0 .../icu/source/test/testdata/testnorm.txt | 0 .../icu/source/test/testdata/testtypes.txt | 0 .../source/test/testdata/timezoneTypes.txt | 0 .../source/test/testdata/translit_rules.txt | 0 .../icu/source/test/testdata/uni-text.bin | Bin .../icu/source/test/testdata/windowsZones.txt | 0 .../icu/source/test/testdata/zoneinfo64.txt | 0 .../icu/source/test/testmap/Makefile.in | 0 .../icu/source/test/testmap/readme.txt | 0 .../icu/source/test/testmap/testmap.c | 0 .../icu/source/test/testmap/testmap.dsp | 0 .../icu/source/test/thaitest/Makefile.in | 0 .../icu/source/test/thaitest/space.txt | 0 .../icu/source/test/thaitest/thaitest.cpp | 0 .../icu/source/test/thaitest/thaitest.dsp | 0 .../icu/source/tools/Makefile.in | 0 .../icu/source/tools/ctestfw/Makefile.in | 0 .../icu/source/tools/ctestfw/ctest.c | 0 .../icu/source/tools/ctestfw/ctestfw.vcxproj | 0 .../tools/ctestfw/ctestfw.vcxproj.filters | 0 .../icu/source/tools/ctestfw/datamap.cpp | 0 .../icu/source/tools/ctestfw/sources.txt | 0 .../icu/source/tools/ctestfw/testdata.cpp | 0 .../icu/source/tools/ctestfw/tstdtmod.cpp | 0 .../icu/source/tools/ctestfw/ucln_ct.c | 0 .../icu/source/tools/ctestfw/unicode/ctest.h | 0 .../source/tools/ctestfw/unicode/datamap.h | 0 .../source/tools/ctestfw/unicode/testdata.h | 0 .../source/tools/ctestfw/unicode/testlog.h | 0 .../source/tools/ctestfw/unicode/testtype.h | 0 .../source/tools/ctestfw/unicode/tstdtmod.h | 0 .../icu/source/tools/ctestfw/unicode/uperf.h | 0 .../icu/source/tools/ctestfw/unicode/utimer.h | 0 .../icu/source/tools/ctestfw/uperf.cpp | 0 .../icu/source/tools/escapesrc/Makefile.in | 0 .../icu/source/tools/escapesrc/cptbl.h | 0 .../icu/source/tools/escapesrc/escapesrc.cpp | 0 .../source/tools/escapesrc/expect-simple.cpp | 0 .../icu/source/tools/escapesrc/tblgen.cpp | 0 .../source/tools/escapesrc/test-nochange.cpp | 0 .../source/tools/escapesrc/test-simple.cpp | 0 .../icu/source/tools/genbrk/Makefile.in | 0 .../icu/source/tools/genbrk/genbrk.1.in | 0 .../icu/source/tools/genbrk/genbrk.cpp | 0 .../icu/source/tools/genbrk/genbrk.vcxproj | 0 .../tools/genbrk/genbrk.vcxproj.filters | 0 .../icu/source/tools/genbrk/sources.txt | 0 .../icu/source/tools/genccode/Makefile.in | 0 .../icu/source/tools/genccode/genccode.8.in | 0 .../icu/source/tools/genccode/genccode.c | 0 .../source/tools/genccode/genccode.vcxproj | 0 .../tools/genccode/genccode.vcxproj.filters | 0 .../icu/source/tools/genccode/sources.txt | 0 .../icu/source/tools/gencfu/Makefile.in | 0 .../icu/source/tools/gencfu/gencfu.1.in | 0 .../icu/source/tools/gencfu/gencfu.cpp | 0 .../icu/source/tools/gencfu/gencfu.vcxproj | 0 .../tools/gencfu/gencfu.vcxproj.filters | 0 .../icu/source/tools/gencfu/sources.txt | 0 .../icu/source/tools/gencmn/Makefile.in | 0 .../icu/source/tools/gencmn/gencmn.8.in | 0 .../icu/source/tools/gencmn/gencmn.c | 0 .../icu/source/tools/gencmn/gencmn.vcxproj | 0 .../tools/gencmn/gencmn.vcxproj.filters | 0 .../icu/source/tools/gencmn/sources.txt | 0 .../icu/source/tools/gencnval/Makefile.in | 0 .../icu/source/tools/gencnval/gencnval.1.in | 0 .../icu/source/tools/gencnval/gencnval.c | 0 .../source/tools/gencnval/gencnval.vcxproj | 0 .../tools/gencnval/gencnval.vcxproj.filters | 0 .../icu/source/tools/gencnval/sources.txt | 0 .../icu/source/tools/gencolusb/README.md | 0 .../gencolusb/extract_unsafe_backwards.cpp | 0 .../source/tools/gencolusb/verify_uset.cpp | 0 .../icu/source/tools/gendict/Makefile.in | 0 .../icu/source/tools/gendict/gendict.1.in | 0 .../icu/source/tools/gendict/gendict.cpp | 0 .../icu/source/tools/gendict/gendict.vcxproj | 0 .../tools/gendict/gendict.vcxproj.filters | 0 .../icu/source/tools/gendict/sources.txt | 0 .../icu/source/tools/gennorm2/BUILD.bazel | 0 .../icu/source/tools/gennorm2/Makefile.in | 0 .../icu/source/tools/gennorm2/extradata.cpp | 0 .../icu/source/tools/gennorm2/extradata.h | 0 .../icu/source/tools/gennorm2/gennorm2.cpp | 0 .../source/tools/gennorm2/gennorm2.vcxproj | 0 .../icu/source/tools/gennorm2/n2builder.cpp | 0 .../icu/source/tools/gennorm2/n2builder.h | 0 .../icu/source/tools/gennorm2/norms.cpp | 0 .../icu/source/tools/gennorm2/norms.h | 0 .../icu/source/tools/gennorm2/sources.txt | 0 .../icu/source/tools/genrb/Makefile.in | 0 .../icu/source/tools/genrb/derb.1.in | 0 .../icu/source/tools/genrb/derb.cpp | 0 .../icu/source/tools/genrb/derb.vcxproj | 0 .../source/tools/genrb/derb.vcxproj.filters | 0 .../icu/source/tools/genrb/errmsg.c | 0 .../icu/source/tools/genrb/errmsg.h | 0 .../icu/source/tools/genrb/filterrb.cpp | 0 .../icu/source/tools/genrb/filterrb.h | 0 .../icu/source/tools/genrb/genrb.1.in | 0 .../icu/source/tools/genrb/genrb.cpp | 0 .../icu/source/tools/genrb/genrb.h | 0 .../icu/source/tools/genrb/genrb.vcxproj | 0 .../source/tools/genrb/genrb.vcxproj.filters | 0 .../icu/source/tools/genrb/parse.cpp | 0 .../icu/source/tools/genrb/parse.h | 0 .../icu/source/tools/genrb/prscmnts.cpp | 0 .../icu/source/tools/genrb/prscmnts.h | 0 .../icu/source/tools/genrb/rbutil.c | 0 .../icu/source/tools/genrb/rbutil.h | 0 .../icu/source/tools/genrb/read.c | 0 .../icu/source/tools/genrb/read.h | 0 .../icu/source/tools/genrb/reslist.cpp | 0 .../icu/source/tools/genrb/reslist.h | 0 .../icu/source/tools/genrb/rle.c | 0 .../icu/source/tools/genrb/rle.h | 0 .../icu/source/tools/genrb/sources.txt | 0 .../icu/source/tools/genrb/ustr.c | 0 .../icu/source/tools/genrb/ustr.h | 0 .../icu/source/tools/genrb/wrtjava.cpp | 0 .../icu/source/tools/genrb/wrtxml.cpp | 0 .../icu/source/tools/genren/README | 0 .../icu/source/tools/genren/genren.pl | 0 .../icu/source/tools/gensprep/Makefile.in | 0 .../source/tools/gensprep/filterRFC3454.pl | 0 .../icu/source/tools/gensprep/gensprep.8.in | 0 .../icu/source/tools/gensprep/gensprep.c | 0 .../icu/source/tools/gensprep/gensprep.h | 0 .../source/tools/gensprep/gensprep.vcxproj | 0 .../tools/gensprep/gensprep.vcxproj.filters | 0 .../icu/source/tools/gensprep/sources.txt | 0 .../icu/source/tools/gensprep/store.c | 0 .../icu/source/tools/gentest/Makefile.in | 0 .../icu/source/tools/gentest/genres32.c | 0 .../icu/source/tools/gentest/gentest.c | 0 .../icu/source/tools/gentest/gentest.h | 0 .../icu/source/tools/gentest/gentest.vcxproj | 0 .../tools/gentest/gentest.vcxproj.filters | 0 .../icu/source/tools/gentest/sources.txt | 0 .../source/tools/icuexportdata/Makefile.in | 0 .../tools/icuexportdata/icuexportdata.1.in | 0 .../tools/icuexportdata/icuexportdata.cpp | 0 .../tools/icuexportdata/icuexportdata.vcxproj | 0 .../icuexportdata.vcxproj.filters | 0 .../source/tools/icuexportdata/sources.txt | 0 .../icu/source/tools/icuinfo/Makefile.in | 0 .../icu/source/tools/icuinfo/icuinfo.cpp | 0 .../icu/source/tools/icuinfo/icuinfo.vcxproj | 0 .../icuinfo/icuplugins_windows_sample.txt | 0 .../source/tools/icuinfo/plugin_sources.txt | 0 .../icu/source/tools/icuinfo/sources.txt | 0 .../icu/source/tools/icuinfo/testplug.c | 0 .../icu/source/tools/icuinfo/testplug.vcxproj | 0 .../tools/icuinfo/testplug.vcxproj.filters | 0 .../icu/source/tools/icupkg/Makefile.in | 0 .../icu/source/tools/icupkg/icupkg.8.in | 0 .../icu/source/tools/icupkg/icupkg.cpp | 0 .../icu/source/tools/icupkg/icupkg.vcxproj | 0 .../icu/source/tools/icupkg/sources.txt | 0 .../icu/source/tools/icuswap/Makefile.in | 0 .../icu/source/tools/icuswap/icuswap.cpp | 0 .../icu/source/tools/icuswap/icuswap.vcxproj | 0 .../icu/source/tools/icuswap/sources.txt | 0 .../icu/source/tools/makeconv/Makefile.in | 0 .../icu/source/tools/makeconv/gencnvex.c | 0 .../icu/source/tools/makeconv/genmbcs.cpp | 0 .../icu/source/tools/makeconv/genmbcs.h | 0 .../icu/source/tools/makeconv/makeconv.1.in | 0 .../icu/source/tools/makeconv/makeconv.cpp | 0 .../icu/source/tools/makeconv/makeconv.h | 0 .../source/tools/makeconv/makeconv.vcxproj | 0 .../tools/makeconv/makeconv.vcxproj.filters | 0 .../icu/source/tools/makeconv/sources.txt | 0 .../icu/source/tools/makeconv/ucnvstat.c | 0 .../icu/source/tools/memcheck/ICUMemCheck.pl | 0 .../icu/source/tools/pkgdata/Makefile.in | 0 .../icu/source/tools/pkgdata/pkgdata.1.in | 0 .../icu/source/tools/pkgdata/pkgdata.cpp | 0 .../icu/source/tools/pkgdata/pkgdata.vcxproj | 0 .../tools/pkgdata/pkgdata.vcxproj.filters | 0 .../icu/source/tools/pkgdata/pkgtypes.c | 0 .../icu/source/tools/pkgdata/pkgtypes.h | 0 .../icu/source/tools/pkgdata/sources.txt | 0 .../icu/source/tools/toolutil/BUILD.bazel | 0 .../icu/source/tools/toolutil/Makefile.in | 0 .../source/tools/toolutil/collationinfo.cpp | 0 .../icu/source/tools/toolutil/collationinfo.h | 0 .../icu/source/tools/toolutil/dbgutil.cpp | 0 .../icu/source/tools/toolutil/dbgutil.h | 0 .../icu/source/tools/toolutil/denseranges.cpp | 0 .../icu/source/tools/toolutil/denseranges.h | 0 .../icu/source/tools/toolutil/filestrm.cpp | 0 .../icu/source/tools/toolutil/filestrm.h | 0 .../icu/source/tools/toolutil/filetools.cpp | 0 .../icu/source/tools/toolutil/filetools.h | 0 .../icu/source/tools/toolutil/flagparser.cpp | 0 .../icu/source/tools/toolutil/flagparser.h | 0 .../icu/source/tools/toolutil/package.cpp | 0 .../icu/source/tools/toolutil/package.h | 0 .../icu/source/tools/toolutil/pkg_genc.cpp | 0 .../icu/source/tools/toolutil/pkg_genc.h | 0 .../icu/source/tools/toolutil/pkg_gencmn.cpp | 0 .../icu/source/tools/toolutil/pkg_gencmn.h | 0 .../icu/source/tools/toolutil/pkg_icu.cpp | 0 .../icu/source/tools/toolutil/pkg_icu.h | 0 .../icu/source/tools/toolutil/pkg_imp.h | 0 .../icu/source/tools/toolutil/pkgitems.cpp | 0 .../icu/source/tools/toolutil/ppucd.cpp | 0 .../icu/source/tools/toolutil/ppucd.h | 0 .../icu/source/tools/toolutil/sources.txt | 0 .../icu/source/tools/toolutil/swapimpl.cpp | 0 .../icu/source/tools/toolutil/swapimpl.h | 0 .../icu/source/tools/toolutil/toolutil.cpp | 0 .../icu/source/tools/toolutil/toolutil.h | 0 .../source/tools/toolutil/toolutil.vcxproj | 0 .../icu/source/tools/toolutil/ucbuf.cpp | 0 .../icu/source/tools/toolutil/ucbuf.h | 0 .../icu/source/tools/toolutil/ucln_tu.cpp | 0 .../icu/source/tools/toolutil/ucm.cpp | 0 .../icu/source/tools/toolutil/ucm.h | 0 .../icu/source/tools/toolutil/ucmstate.cpp | 0 .../icu/source/tools/toolutil/udbgutil.cpp | 0 .../icu/source/tools/toolutil/udbgutil.h | 0 .../icu/source/tools/toolutil/unewdata.cpp | 0 .../icu/source/tools/toolutil/unewdata.h | 0 .../icu/source/tools/toolutil/uoptions.cpp | 0 .../icu/source/tools/toolutil/uoptions.h | 0 .../icu/source/tools/toolutil/uparse.cpp | 0 .../icu/source/tools/toolutil/uparse.h | 0 .../icu/source/tools/toolutil/writesrc.cpp | 0 .../icu/source/tools/toolutil/writesrc.h | 0 .../icu/source/tools/toolutil/xmlparser.cpp | 0 .../icu/source/tools/toolutil/xmlparser.h | 0 .../icu/source/tools/tzcode/Makefile.in | 0 .../icu/source/tools/tzcode/asctime.c | 0 .../icu/source/tools/tzcode/ialloc.c | 0 .../icu/source/tools/tzcode/icuregions | 0 .../icu/source/tools/tzcode/icuzdump.cpp | 0 .../icu/source/tools/tzcode/icuzdump.vcxproj | 0 .../tools/tzcode/icuzdump.vcxproj.filters | 0 .../icu/source/tools/tzcode/icuzones | 0 .../icu/source/tools/tzcode/localtime.c | 0 .../icu/source/tools/tzcode/private.h | 0 .../icu/source/tools/tzcode/readme.txt | 0 .../icu/source/tools/tzcode/scheck.c | 0 .../icu/source/tools/tzcode/tz2icu.cpp | 0 .../icu/source/tools/tzcode/tz2icu.h | 0 .../icu/source/tools/tzcode/tzfile.h | 0 .../icu/source/tools/tzcode/tzselect.ksh | 0 .../icu/source/tools/tzcode/zdump.c | 0 .../icu/source/tools/tzcode/zic.c | 0 deps/zen | 1 + .../include => include}/bolt/ByteString.hpp | 0 .../cxx/include => include}/bolt/CST.hpp | 0 .../include => include}/bolt/CSTVisitor.hpp | 0 .../cxx/include => include}/bolt/Checker.hpp | 0 .../cxx/include => include}/bolt/Common.hpp | 0 .../bolt/ConsolePrinter.hpp | 0 .../bolt/DiagnosticEngine.hpp | 0 .../include => include}/bolt/Diagnostics.hpp | 0 .../include => include}/bolt/Evaluator.hpp | 0 .../cxx/include => include}/bolt/Integer.hpp | 0 .../cxx/include => include}/bolt/Parser.hpp | 0 include/bolt/Passes/CheckBindings.hpp | 48 + .../cxx/include => include}/bolt/Program.hpp | 0 .../cxx/include => include}/bolt/Scanner.hpp | 0 .../cxx/include => include}/bolt/Stream.hpp | 0 .../cxx/include => include}/bolt/String.hpp | 0 .../bolt/Support/Graph.hpp | 0 .../cxx/include => include}/bolt/Text.hpp | 0 .../cxx/include => include}/bolt/Type.hpp | 0 ...e-and-easy-bidirectional-type-checking.pdf | Bin 0 -> 1023501 bytes samples/bolt.bolt | 102 + samples/effect.bolt | 34 + samples/todomvc.bolt | 44 + scripts/gennodes.py | 903 +++++ scripts/genrewrite.py | 16 + {bootstrap/cxx/src => src}/CST.cc | 0 {bootstrap/cxx/src => src}/Checker.cc | 0 {bootstrap/cxx/src => src}/ConsolePrinter.cc | 0 {bootstrap/cxx/src => src}/Diagnostics.cc | 0 {bootstrap/cxx/src => src}/Evaluator.cc | 0 src/LLVMCodeGen.cc | 66 + src/LLVMCodeGen.hpp | 32 + {bootstrap/cxx/src => src}/Parser.cc | 0 src/Pass/CheckMissingBindings.cc | 7 + {bootstrap/cxx/src => src}/Scanner.cc | 0 src/Scope.cc | 226 ++ {bootstrap/cxx/src => src}/Text.cc | 0 {bootstrap/cxx/src => src}/Types.cc | 0 {bootstrap/cxx/src => src}/main.cc | 0 stdlib/io.bolt | 5 + stdlib/math.bolt | 22 + stdlib/prelude.bolt | 4 + {bootstrap/cxx/test => test}/TestChecker.cc | 0 {bootstrap/cxx/test => test}/TestText.cc | 0 .../checker/forward_recursion.bolt | 0 .../checker/if_part_test_is_bool.bolt | 0 ...tance_arguments_type_classes.bolt.disabled | 0 ...ocal_constraints_polymorphic_variable.bolt | 0 .../mutual_recursion_is_odd_is_even.bolt | 0 .../nested_vars_reaching_parent_scope.bolt | 0 .../checker/pattern_matching_variant.bolt | 0 .../simple_instance_arguments.bolt.disabled | 0 .../checker/simple_tuple_test.bolt | 0 .../checker/test_equality_tapp.bolt | 0 .../checker/test_qualified_type_sigs.bolt | 0 .../checker/variable_mistyping.bolt | 0 .../checker/wrong_return_type.bolt | 0 x.py | 251 ++ 2805 files changed, 1986 insertions(+), 12174 deletions(-) rename {bootstrap/cxx/.vscode => .vscode}/settings.json (100%) rename {bootstrap/cxx/.vscode => .vscode}/tasks.json (100%) rename bootstrap/cxx/CMakeLists.txt => CMakeLists.txt (100%) rename bootstrap/cxx/README.md => CONTRIBUTING.md (100%) delete mode 100644 bootstrap/cxx/.gitignore delete mode 100644 bootstrap/cxx/.vscode/launch.json delete mode 120000 bootstrap/cxx/deps/zen delete mode 100644 bootstrap/js/compiler/.gitignore delete mode 100644 bootstrap/js/compiler/package-lock.json delete mode 100644 bootstrap/js/compiler/package.json delete mode 100644 bootstrap/js/compiler/src/analysis.ts delete mode 100644 bootstrap/js/compiler/src/bin/bolt.ts delete mode 100644 bootstrap/js/compiler/src/c.ts delete mode 100644 bootstrap/js/compiler/src/checker.ts delete mode 100644 bootstrap/js/compiler/src/constraints.ts delete mode 100644 bootstrap/js/compiler/src/cst.ts delete mode 100644 bootstrap/js/compiler/src/diagnostics.ts delete mode 100644 bootstrap/js/compiler/src/emitter.ts delete mode 100644 bootstrap/js/compiler/src/index.ts delete mode 100644 bootstrap/js/compiler/src/js.ts delete mode 100644 bootstrap/js/compiler/src/parser.ts delete mode 100644 bootstrap/js/compiler/src/passes/BoltToC.ts delete mode 100644 bootstrap/js/compiler/src/passes/BoltToJS.ts delete mode 100644 bootstrap/js/compiler/src/passes/TypeclassDictPass.ts delete mode 100644 bootstrap/js/compiler/src/program.ts delete mode 100644 bootstrap/js/compiler/src/scanner.ts delete mode 100644 bootstrap/js/compiler/src/scope.ts delete mode 100644 bootstrap/js/compiler/src/test/eager-solving-global.bolt delete mode 100644 bootstrap/js/compiler/src/test/enum-declaration-app.bolt delete mode 100644 bootstrap/js/compiler/src/test/enum-declaration-maybe.bolt delete mode 100644 bootstrap/js/compiler/src/test/mutual-recursion-2.bolt delete mode 100644 bootstrap/js/compiler/src/test/mutual-recursion.bolt delete mode 100644 bootstrap/js/compiler/src/test/nested-definitions.bolt delete mode 100644 bootstrap/js/compiler/src/test/return-types-polymorphic.bolt delete mode 100644 bootstrap/js/compiler/src/test/tuple-access.bolt delete mode 100644 bootstrap/js/compiler/src/test/typecheck.md delete mode 100644 bootstrap/js/compiler/src/test/unify-similar-records.bolt delete mode 100644 bootstrap/js/compiler/src/types.ts delete mode 100644 bootstrap/js/compiler/src/util.ts delete mode 100644 bootstrap/js/compiler/tsconfig.json delete mode 100644 bootstrap/js/package-lock.json delete mode 100644 bootstrap/js/package.json create mode 100644 cmake/Modules/FindLLVM.cmake rename {bootstrap/cxx/deps => deps}/googletest/.clang-format (100%) rename {bootstrap/cxx/deps => deps}/googletest/.github/ISSUE_TEMPLATE/00-bug_report.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/.github/ISSUE_TEMPLATE/10-feature_request.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/.github/ISSUE_TEMPLATE/config.yml (100%) rename {bootstrap/cxx/deps => deps}/googletest/.github/workflows/gtest-ci.yml (100%) rename {bootstrap/cxx/deps => deps}/googletest/.gitignore (100%) rename {bootstrap/cxx/deps => deps}/googletest/BUILD.bazel (100%) rename {bootstrap/cxx/deps => deps}/googletest/CMakeLists.txt (100%) rename {bootstrap/cxx/deps => deps}/googletest/CONTRIBUTING.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/CONTRIBUTORS (100%) rename {bootstrap/cxx/deps => deps}/googletest/LICENSE (100%) rename {bootstrap/cxx/deps => deps}/googletest/README.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/WORKSPACE (100%) rename {bootstrap/cxx/deps => deps}/googletest/ci/linux-presubmit.sh (100%) rename {bootstrap/cxx/deps => deps}/googletest/ci/macos-presubmit.sh (100%) rename {bootstrap/cxx/deps => deps}/googletest/docs/_config.yml (100%) rename {bootstrap/cxx/deps => deps}/googletest/docs/_data/navigation.yml (100%) rename {bootstrap/cxx/deps => deps}/googletest/docs/_layouts/default.html (100%) rename {bootstrap/cxx/deps => deps}/googletest/docs/_sass/main.scss (100%) rename {bootstrap/cxx/deps => deps}/googletest/docs/advanced.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/docs/assets/css/style.scss (100%) rename {bootstrap/cxx/deps => deps}/googletest/docs/community_created_documentation.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/docs/faq.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/docs/gmock_cheat_sheet.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/docs/gmock_cook_book.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/docs/gmock_faq.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/docs/gmock_for_dummies.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/docs/index.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/docs/pkgconfig.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/docs/platforms.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/docs/primer.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/docs/quickstart-bazel.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/docs/quickstart-cmake.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/docs/reference/actions.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/docs/reference/assertions.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/docs/reference/matchers.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/docs/reference/mocking.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/docs/reference/testing.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/docs/samples.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/CMakeLists.txt (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/README.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/cmake/gmock.pc.in (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/cmake/gmock_main.pc.in (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/docs/README.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/include/gmock/gmock-actions.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/include/gmock/gmock-cardinalities.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/include/gmock/gmock-function-mocker.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/include/gmock/gmock-matchers.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/include/gmock/gmock-more-actions.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/include/gmock/gmock-more-matchers.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/include/gmock/gmock-nice-strict.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/include/gmock/gmock-spec-builders.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/include/gmock/gmock.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/include/gmock/internal/custom/README.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/include/gmock/internal/custom/gmock-matchers.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/include/gmock/internal/custom/gmock-port.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/include/gmock/internal/gmock-port.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/include/gmock/internal/gmock-pp.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/src/gmock-all.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/src/gmock-cardinalities.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/src/gmock-internal-utils.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/src/gmock-matchers.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/src/gmock-spec-builders.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/src/gmock.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/src/gmock_main.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/BUILD.bazel (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock-actions_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock-cardinalities_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock-function-mocker_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock-internal-utils_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock-matchers-arithmetic_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock-matchers-comparisons_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock-matchers-containers_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock-matchers-misc_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock-matchers_test.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock-more-actions_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock-nice-strict_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock-port_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock-pp-string_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock-pp_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock-spec-builders_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock_all_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock_ex_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock_leak_test.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock_leak_test_.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock_link2_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock_link_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock_link_test.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock_output_test.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock_output_test_.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock_output_test_golden.txt (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock_stress_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googlemock/test/gmock_test_utils.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/CMakeLists.txt (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/README.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/cmake/Config.cmake.in (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/cmake/gtest.pc.in (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/cmake/gtest_main.pc.in (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/cmake/internal_utils.cmake (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/cmake/libgtest.la.in (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/docs/README.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/include/gtest/gtest-assertion-result.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/include/gtest/gtest-death-test.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/include/gtest/gtest-matchers.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/include/gtest/gtest-message.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/include/gtest/gtest-param-test.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/include/gtest/gtest-printers.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/include/gtest/gtest-spi.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/include/gtest/gtest-test-part.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/include/gtest/gtest-typed-test.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/include/gtest/gtest.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/include/gtest/gtest_pred_impl.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/include/gtest/gtest_prod.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/include/gtest/internal/custom/README.md (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/include/gtest/internal/custom/gtest-port.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/include/gtest/internal/custom/gtest-printers.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/include/gtest/internal/custom/gtest.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/include/gtest/internal/gtest-filepath.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/include/gtest/internal/gtest-internal.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/include/gtest/internal/gtest-param-util.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/include/gtest/internal/gtest-port-arch.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/include/gtest/internal/gtest-port.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/include/gtest/internal/gtest-string.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/include/gtest/internal/gtest-type-util.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/samples/prime_tables.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/samples/sample1.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/samples/sample1.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/samples/sample10_unittest.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/samples/sample1_unittest.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/samples/sample2.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/samples/sample2.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/samples/sample2_unittest.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/samples/sample3-inl.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/samples/sample3_unittest.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/samples/sample4.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/samples/sample4.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/samples/sample4_unittest.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/samples/sample5_unittest.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/samples/sample6_unittest.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/samples/sample7_unittest.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/samples/sample8_unittest.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/samples/sample9_unittest.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/src/gtest-all.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/src/gtest-assertion-result.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/src/gtest-death-test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/src/gtest-filepath.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/src/gtest-internal-inl.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/src/gtest-matchers.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/src/gtest-port.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/src/gtest-printers.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/src/gtest-test-part.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/src/gtest-typed-test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/src/gtest.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/src/gtest_main.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/BUILD.bazel (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-break-on-failure-unittest.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-break-on-failure-unittest_.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-catch-exceptions-test.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-catch-exceptions-test_.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-color-test.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-color-test_.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-death-test-test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-death-test_ex_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-env-var-test.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-env-var-test_.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-failfast-unittest.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-failfast-unittest_.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-filepath-test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-filter-unittest.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-filter-unittest_.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-global-environment-unittest.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-global-environment-unittest_.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-json-outfiles-test.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-json-output-unittest.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-list-tests-unittest.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-list-tests-unittest_.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-listener-test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-message-test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-options-test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-output-test-golden-lin.txt (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-output-test.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-output-test_.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-param-test-invalid-name1-test.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-param-test-invalid-name1-test_.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-param-test-invalid-name2-test.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-param-test-invalid-name2-test_.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-param-test-test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-param-test-test.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-param-test2-test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-port-test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-printers-test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-setuptestsuite-test.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-setuptestsuite-test_.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-shuffle-test.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-shuffle-test_.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-test-part-test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-throw-on-failure-test.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-throw-on-failure-test_.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-uninitialized-test.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/googletest-uninitialized-test_.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest-typed-test2_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest-typed-test_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest-typed-test_test.h (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest-unittest-api_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_all_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_assert_by_exception_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_environment_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_help_test.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_help_test_.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_json_test_utils.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_list_output_unittest.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_list_output_unittest_.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_main_unittest.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_no_test_unittest.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_pred_impl_unittest.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_premature_exit_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_prod_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_repeat_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_skip_check_output_test.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_skip_environment_check_output_test.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_skip_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_sole_header_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_stress_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_test_macro_stack_footprint_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_test_utils.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_testbridge_test.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_testbridge_test_.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_throw_on_failure_ex_test.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_unittest.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_xml_outfile1_test_.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_xml_outfile2_test_.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_xml_outfiles_test.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_xml_output_unittest.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_xml_output_unittest_.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/gtest_xml_test_utils.py (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/production.cc (100%) rename {bootstrap/cxx/deps => deps}/googletest/googletest/test/production.h (100%) rename {bootstrap/cxx/deps => deps}/icu/APIChangeReport.html (100%) rename {bootstrap/cxx/deps => deps}/icu/APIChangeReport.md (100%) rename {bootstrap/cxx/deps => deps}/icu/LICENSE (100%) rename {bootstrap/cxx/deps => deps}/icu/as_is/bomlist.py (100%) rename {bootstrap/cxx/deps => deps}/icu/as_is/bomlist.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/as_is/os390/unpax-icu.sh (100%) rename {bootstrap/cxx/deps => deps}/icu/as_is/os400/bldiculd.sh (100%) rename {bootstrap/cxx/deps => deps}/icu/as_is/os400/convertConfigure.sed (100%) rename {bootstrap/cxx/deps => deps}/icu/as_is/os400/cxxfilt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/as_is/os400/fixup-icu.sh (100%) rename {bootstrap/cxx/deps => deps}/icu/as_is/os400/iculd.c (100%) rename {bootstrap/cxx/deps => deps}/icu/as_is/os400/unpax-icu.sh (100%) rename {bootstrap/cxx/deps => deps}/icu/icu4c.css (100%) rename {bootstrap/cxx/deps => deps}/icu/license.html (100%) rename {bootstrap/cxx/deps => deps}/icu/packaging/PACKAGES (100%) rename {bootstrap/cxx/deps => deps}/icu/packaging/README (100%) rename {bootstrap/cxx/deps => deps}/icu/packaging/distrelease.ps1 (100%) rename {bootstrap/cxx/deps => deps}/icu/packaging/rpm/icu.spec (100%) rename {bootstrap/cxx/deps => deps}/icu/readme.html (100%) rename {bootstrap/cxx/deps => deps}/icu/source/.clang-format (100%) rename {bootstrap/cxx/deps => deps}/icu/source/Doxyfile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/acinclude.m4 (100%) rename {bootstrap/cxx/deps => deps}/icu/source/aclocal.m4 (100%) rename {bootstrap/cxx/deps => deps}/icu/source/allinone/Build.Windows.Library.ProjectConfiguration.props (100%) rename {bootstrap/cxx/deps => deps}/icu/source/allinone/Build.Windows.Library.WarningSettings.ProjectConfiguration.props (100%) rename {bootstrap/cxx/deps => deps}/icu/source/allinone/Build.Windows.PlatformToolset.props (100%) rename {bootstrap/cxx/deps => deps}/icu/source/allinone/Build.Windows.ProjectConfiguration.props (100%) rename {bootstrap/cxx/deps => deps}/icu/source/allinone/Build.Windows.UWP.ProjectConfiguration.props (100%) rename {bootstrap/cxx/deps => deps}/icu/source/allinone/Windows.CopyUnicodeHeaderFiles.targets (100%) rename {bootstrap/cxx/deps => deps}/icu/source/allinone/allinone.sln (100%) rename {bootstrap/cxx/deps => deps}/icu/source/allinone/icucheck.bat (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/BUILD.bazel (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/appendable.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/bmpset.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/bmpset.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/brkeng.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/brkeng.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/brkiter.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/bytesinkutil.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/bytesinkutil.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/bytestream.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/bytestrie.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/bytestriebuilder.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/bytestrieiterator.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/caniter.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/capi_helper.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/characterproperties.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/chariter.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/charstr.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/charstr.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/charstrmap.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/cmemory.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/cmemory.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/common.rc (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/common.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/common.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/common_uwp.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/cpputils.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/cstr.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/cstr.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/cstring.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/cstring.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/cwchar.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/cwchar.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/dictbe.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/dictbe.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/dictionarydata.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/dictionarydata.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/dtintrv.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/edits.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/emojiprops.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/emojiprops.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/errorcode.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/filteredbrk.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/filterednormalizer2.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/hash.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/icudataver.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/icuplug.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/icuplugimp.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/loadednormalizer2impl.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/localebuilder.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/localematcher.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/localeprioritylist.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/localeprioritylist.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/localsvc.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/locavailable.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/locbased.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/locbased.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/locdispnames.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/locdistance.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/locdistance.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/locdspnm.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/locid.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/loclikely.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/loclikelysubtags.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/loclikelysubtags.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/locmap.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/locmap.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/locresdata.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/locutil.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/locutil.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/lsr.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/lsr.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/lstmbe.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/lstmbe.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/messageimpl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/messagepattern.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/msvcres.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/mutex.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/norm2_nfc_data.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/norm2allmodes.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/normalizer2.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/normalizer2impl.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/normalizer2impl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/normlzr.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/parsepos.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/patternprops.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/patternprops.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/pluralmap.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/pluralmap.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/propname.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/propname.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/propname_data.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/propsvec.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/propsvec.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/punycode.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/punycode.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/putil.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/putilimp.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/rbbi.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/rbbi_cache.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/rbbi_cache.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/rbbicst.pl (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/rbbidata.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/rbbidata.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/rbbinode.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/rbbinode.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/rbbirb.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/rbbirb.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/rbbirpt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/rbbirpt.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/rbbiscan.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/rbbiscan.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/rbbisetb.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/rbbisetb.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/rbbistbl.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/rbbitblb.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/rbbitblb.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/resbund.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/resbund_cnv.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/resource.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/resource.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/restrace.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/restrace.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ruleiter.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ruleiter.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/schriter.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/serv.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/serv.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/servlk.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/servlkf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/servloc.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/servls.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/servnotf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/servnotf.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/servrbf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/servslkf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/sharedobject.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/sharedobject.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/simpleformatter.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/sources.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/sprpimpl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/static_unicode_sets.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/static_unicode_sets.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/stringpiece.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/stringtriebuilder.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uarrsort.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uarrsort.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uassert.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ubidi.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ubidi_props.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ubidi_props.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ubidi_props_data.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ubidiimp.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ubidiln.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ubiditransform.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ubidiwrt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ubrk.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ubrkimpl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucase.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucase.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucase_props_data.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucasemap.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucasemap_imp.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucasemap_titlecase_brkiter.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucat.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uchar.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uchar_props_data.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucharstrie.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucharstriebuilder.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucharstrieiterator.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uchriter.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucln.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucln_cmn.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucln_cmn.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucln_imp.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucmndata.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucmndata.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnv.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnv2022.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnv_bld.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnv_bld.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnv_cb.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnv_cnv.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnv_cnv.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnv_ct.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnv_err.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnv_ext.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnv_ext.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnv_imp.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnv_io.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnv_io.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnv_lmb.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnv_set.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnv_u16.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnv_u32.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnv_u7.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnv_u8.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnvbocu.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnvdisp.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnvhz.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnvisci.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnvlat1.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnvmbcs.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnvmbcs.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnvscsu.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucnvsel.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucol_data.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucol_swp.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucol_swp.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucptrie.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucptrie_impl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucurr.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ucurrimp.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/udata.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/udatamem.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/udatamem.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/udataswp.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/udataswp.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uelement.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uenum.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uenumimp.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uhash.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uhash.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uhash_us.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uidna.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uinit.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uinvchar.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uinvchar.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uiter.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ulayout_props.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ulist.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ulist.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uloc.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uloc_keytype.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uloc_tag.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ulocimp.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/umapfile.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/umapfile.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/umath.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/umutablecptrie.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/umutex.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/umutex.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unames.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/appendable.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/brkiter.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/bytestream.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/bytestrie.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/bytestriebuilder.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/caniter.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/casemap.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/char16ptr.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/chariter.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/dbbi.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/docmain.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/dtintrv.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/edits.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/enumset.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/errorcode.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/filteredbrk.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/icudataver.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/icuplug.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/idna.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/localebuilder.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/localematcher.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/localpointer.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/locdspnm.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/locid.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/messagepattern.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/normalizer2.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/normlzr.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/parseerr.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/parsepos.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/platform.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/ptypes.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/putil.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/rbbi.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/rep.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/resbund.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/schriter.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/simpleformatter.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/std_string.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/strenum.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/stringoptions.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/stringpiece.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/stringtriebuilder.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/symtable.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/ubidi.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/ubiditransform.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/ubrk.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/ucasemap.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/ucat.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/uchar.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/ucharstrie.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/ucharstriebuilder.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/uchriter.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/uclean.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/ucnv.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/ucnv_cb.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/ucnv_err.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/ucnvsel.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/uconfig.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/ucpmap.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/ucptrie.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/ucurr.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/udata.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/udisplaycontext.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/uenum.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/uidna.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/uiter.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/uldnames.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/uloc.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/umachine.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/umisc.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/umutablecptrie.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/unifilt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/unifunct.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/unimatch.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/uniset.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/unistr.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/unorm.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/unorm2.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/uobject.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/urename.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/urep.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/ures.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/uscript.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/uset.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/usetiter.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/ushape.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/usprep.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/ustring.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/ustringtrie.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/utext.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/utf.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/utf16.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/utf32.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/utf8.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/utf_old.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/utrace.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/utypes.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/uvernum.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unicode/uversion.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unifiedcache.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unifiedcache.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unifilt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unifunct.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uniquecharstr.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uniset.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uniset_closure.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uniset_props.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unisetspan.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unisetspan.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unistr.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unistr_case.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unistr_case_locale.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unistr_cnv.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unistr_props.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unistr_titlecase_brkiter.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unistrappender.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unorm.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unormcmp.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/unormimp.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uobject.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uposixdefs.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uprops.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uprops.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ures_cnv.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uresbund.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uresdata.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uresdata.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uresimp.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ureslocs.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/usc_impl.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/usc_impl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uscript.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uscript_props.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uset.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uset_imp.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uset_props.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/usetiter.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ushape.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/usprep.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ustack.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ustr_cnv.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ustr_cnv.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ustr_imp.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ustr_titlecase_brkiter.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ustr_wcs.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ustrcase.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ustrcase_locale.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ustrenum.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ustrenum.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ustrfmt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ustrfmt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ustring.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/ustrtrns.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/utext.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/utf_impl.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/util.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/util.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/util_props.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/utrace.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/utracimp.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/utrie.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/utrie.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/utrie2.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/utrie2.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/utrie2_builder.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/utrie2_impl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/utrie_swap.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uts46.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/utypeinfo.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/utypes.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uvector.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uvector.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uvectr32.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uvectr32.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uvectr64.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/uvectr64.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/wintz.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/common/wintz.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config.guess (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config.sub (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/Makefile.inc.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/dist-data.sh (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/dist.mk (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/gmakever.mk (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/icu-config-bottom (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/icu-config-top (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/icu-config.1.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/icu.pc.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/m4/icu-conditional.m4 (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/make2sh.sed (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/mh-aix-gcc (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/mh-aix-va (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/mh-alpha-linux-cc (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/mh-alpha-linux-gcc (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/mh-alpha-osf (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/mh-beos (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/mh-bsd-gcc (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/mh-cygwin (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/mh-cygwin-msvc (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/mh-cygwin64 (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/mh-darwin (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/mh-haiku (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/mh-hpux-acc (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/mh-hpux-gcc (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/mh-irix (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/mh-linux (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/mh-linux-va (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/mh-mingw (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/mh-mingw64 (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/mh-mpras (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/mh-msys-msvc (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/mh-os390 (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/mh-os400 (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/mh-qnx (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/mh-solaris (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/mh-solaris-gcc (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/mh-unknown (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/pkgdataMakefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/test-icu-config.sh (100%) rename {bootstrap/cxx/deps => deps}/icu/source/config/windows-update.sed.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/configure (100%) rename {bootstrap/cxx/deps => deps}/icu/source/configure.ac (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/BUILDRULES.py (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/build.xml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/cldr-icu-readme.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/dtd/cldr-35.1/common/dtd/ldml.dtd (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/dtd/cldr-35.1/common/dtd/ldmlICU.dtd (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/dtd/cldr-40/common/dtd/ldml.dtd (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/dtd/cldr-40/common/dtd/ldmlICU.dtd (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/dtd/cldr/common/dtd/ldml.dtd (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/dtd/cldr/common/dtd/ldmlICU.dtd (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/icu4j-readme.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/icupkg.inc.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/in/coll/ucadata-implicithan.icu (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/in/coll/ucadata-unihan.icu (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/in/icudt71l.dat (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/in/nfc.nrm (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/in/nfkc.nrm (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/in/nfkc_cf.nrm (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/in/pnames.icu (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/in/ubidi.icu (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/in/ucase.icu (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/in/uemoji.icu (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/in/ulayout.icu (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/in/unames.icu (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/in/uprops.icu (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/in/uts46.nrm (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/makedata.mak (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/makedata.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/makedata.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/makedata_uwp.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/misc/icudata.rc (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/pkgdataMakefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/sprep/rfc3491.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/sprep/rfc3530cs.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/sprep/rfc3530csci.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/sprep/rfc3530mixp.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/sprep/rfc3722.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/sprep/rfc3920node.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/sprep/rfc3920res.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/sprep/rfc4011.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/sprep/rfc4013.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/sprep/rfc4505.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/sprep/rfc4518.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/sprep/rfc4518ci.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/sprep/sprepfiles.mk (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/unidata/CaseFolding.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/unidata/DerivedCoreProperties.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/unidata/DerivedNormalizationProps.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/unidata/FractionalUCA.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/unidata/NormalizationCorrections.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/unidata/NormalizationTest.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/unidata/SpecialCasing.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/unidata/UCARules.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/unidata/UnicodeData.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/unidata/changes.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/unidata/clean.sh (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/unidata/confusables.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/unidata/confusablesWholeScript.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/unidata/emoji-sequences.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/unidata/emoji-zwj-sequences.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/unidata/generate.sh (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/unidata/norm2/BUILD.bazel (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/unidata/norm2/nfc.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/unidata/norm2/nfkc.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/unidata/norm2/nfkc_cf.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/unidata/norm2/uts46.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/data/unidata/ppucd.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/scrptrun/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/scrptrun/readme.html (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/scrptrun/scrptrun.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/scrptrun/scrptrun.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/scrptrun/sources.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/scrptrun/srtest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/scrptrun/srtest.dsp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/scrptrun/srtest.dsw (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/README (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/makedata.mak (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/pkgdata.inc.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/pkgdataMakefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/resfiles.mk (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/resources/fr.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/resources/root.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/samples/ISO-8859-2.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/samples/ISO-8859-3.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/samples/danish-ISO-8859-1.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/samples/eucJP.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/samples/hangul-eucKR.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/samples/hania-eucKR.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/samples/ibm-37-test.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/samples/iso8859-1.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/samples/koi8r.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/samples/utf8/armenian.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/samples/utf8/banviet.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/samples/utf8/chinese-ulysses.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/samples/utf8/croat.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/samples/utf8/danish.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/samples/utf8/greek.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/samples/utf8/hangul.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/samples/utf8/hania.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/samples/utf8/jap.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/samples/utf8/korean.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/samples/utf8/linji.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/samples/utf8/many.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/samples/utf8/maopoem.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/samples/utf8/russian.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/samples/utf8/simplechinese.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/samples/utf8/turkish.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/samples/utf8/utf-8-demo.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/sources.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/uconv.1.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/uconv.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/uconv.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/uconv.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/unicode/uwmsg.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/extra/uconv/uwmsg.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/BUILD.bazel (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/alphaindex.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/anytrans.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/anytrans.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/astro.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/astro.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/basictz.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/bocsu.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/bocsu.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/brktrans.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/brktrans.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/buddhcal.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/buddhcal.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/calendar.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/casetrn.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/casetrn.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/cecal.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/cecal.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/chnsecal.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/chnsecal.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/choicfmt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/coleitr.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/coll.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collation.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collation.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationbuilder.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationbuilder.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationcompare.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationcompare.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationdata.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationdata.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationdatabuilder.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationdatabuilder.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationdatareader.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationdatareader.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationdatawriter.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationdatawriter.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationfastlatin.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationfastlatin.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationfastlatinbuilder.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationfastlatinbuilder.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationfcd.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationfcd.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationiterator.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationiterator.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationkeys.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationkeys.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationroot.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationroot.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationrootelements.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationrootelements.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationruleparser.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationruleparser.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationsets.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationsets.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationsettings.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationsettings.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationtailoring.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationtailoring.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationweights.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collationweights.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/collunsafe.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/compactdecimalformat.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/coptccal.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/coptccal.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/cpdtrans.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/cpdtrans.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/csdetect.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/csdetect.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/csmatch.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/csmatch.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/csr2022.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/csr2022.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/csrecog.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/csrecog.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/csrmbcs.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/csrmbcs.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/csrsbcs.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/csrsbcs.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/csrucode.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/csrucode.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/csrutf8.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/csrutf8.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/curramt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/currfmt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/currfmt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/currpinf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/currunit.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/dangical.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/dangical.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/datefmt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/dayperiodrules.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/dayperiodrules.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/dcfmtsym.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/decContext.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/decContext.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/decNumber.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/decNumber.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/decNumberLocal.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/decimfmt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/double-conversion-bignum-dtoa.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/double-conversion-bignum-dtoa.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/double-conversion-bignum.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/double-conversion-bignum.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/double-conversion-cached-powers.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/double-conversion-cached-powers.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/double-conversion-diy-fp.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/double-conversion-double-to-string.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/double-conversion-double-to-string.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/double-conversion-fast-dtoa.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/double-conversion-fast-dtoa.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/double-conversion-ieee.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/double-conversion-string-to-double.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/double-conversion-string-to-double.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/double-conversion-strtod.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/double-conversion-strtod.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/double-conversion-utils.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/double-conversion.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/dt_impl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/dtfmtsym.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/dtitv_impl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/dtitvfmt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/dtitvinf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/dtptngen.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/dtptngen_impl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/dtrule.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/erarules.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/erarules.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/esctrn.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/esctrn.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/ethpccal.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/ethpccal.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/fmtable.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/fmtable_cnv.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/fmtableimp.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/format.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/formatted_string_builder.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/formatted_string_builder.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/formattedval_impl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/formattedval_iterimpl.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/formattedval_sbimpl.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/formattedvalue.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/fphdlimp.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/fphdlimp.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/fpositer.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/funcrepl.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/funcrepl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/gender.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/gregocal.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/gregoimp.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/gregoimp.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/hebrwcal.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/hebrwcal.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/i18n.rc (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/i18n.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/i18n.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/i18n_uwp.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/indiancal.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/indiancal.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/inputext.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/inputext.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/islamcal.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/islamcal.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/japancal.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/japancal.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/listformatter.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/measfmt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/measunit.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/measunit_extra.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/measunit_impl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/measure.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/msgfmt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/msgfmt_impl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/name2uni.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/name2uni.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/nfrlist.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/nfrs.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/nfrs.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/nfrule.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/nfrule.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/nfsubs.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/nfsubs.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/nortrans.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/nortrans.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/nultrans.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/nultrans.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_affixutils.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_affixutils.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_asformat.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_asformat.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_capi.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_compact.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_compact.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_currencysymbols.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_currencysymbols.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_decimalquantity.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_decimalquantity.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_decimfmtprops.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_decimfmtprops.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_decnum.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_fluent.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_formatimpl.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_formatimpl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_grouping.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_integerwidth.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_longnames.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_longnames.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_mapper.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_mapper.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_microprops.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_modifiers.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_modifiers.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_multiplier.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_multiplier.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_notation.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_output.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_padding.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_patternmodifier.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_patternmodifier.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_patternstring.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_patternstring.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_rounding.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_roundingutils.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_scientific.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_scientific.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_skeletons.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_skeletons.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_symbolswrapper.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_types.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_usageprefs.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_usageprefs.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_utils.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_utils.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/number_utypes.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/numfmt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/numparse_affixes.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/numparse_affixes.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/numparse_compositions.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/numparse_compositions.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/numparse_currency.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/numparse_currency.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/numparse_decimal.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/numparse_decimal.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/numparse_impl.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/numparse_impl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/numparse_parsednumber.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/numparse_scientific.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/numparse_scientific.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/numparse_symbols.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/numparse_symbols.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/numparse_types.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/numparse_utils.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/numparse_validators.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/numparse_validators.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/numrange_capi.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/numrange_fluent.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/numrange_impl.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/numrange_impl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/numsys.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/numsys_impl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/olsontz.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/olsontz.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/persncal.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/persncal.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/pluralranges.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/pluralranges.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/plurfmt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/plurrule.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/plurrule_impl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/quant.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/quant.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/quantityformatter.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/quantityformatter.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/rbnf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/rbt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/rbt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/rbt_data.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/rbt_data.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/rbt_pars.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/rbt_pars.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/rbt_rule.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/rbt_rule.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/rbt_set.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/rbt_set.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/rbtz.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/regexcmp.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/regexcmp.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/regexcst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/regexcst.pl (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/regexcst.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/regeximp.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/regeximp.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/regexst.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/regexst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/regextxt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/regextxt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/region.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/region_impl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/reldatefmt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/reldtfmt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/reldtfmt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/rematch.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/remtrans.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/remtrans.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/repattrn.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/rulebasedcollator.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/scientificnumberformatter.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/scriptset.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/scriptset.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/search.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/selfmt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/selfmtimpl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/sharedbreakiterator.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/sharedbreakiterator.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/sharedcalendar.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/shareddateformatsymbols.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/sharednumberformat.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/sharedpluralrules.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/simpletz.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/smpdtfmt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/smpdtfst.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/smpdtfst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/sortkey.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/sources.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/standardplural.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/standardplural.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/string_segment.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/string_segment.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/strmatch.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/strmatch.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/strrepl.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/strrepl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/stsearch.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/taiwncal.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/taiwncal.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/timezone.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/titletrn.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/titletrn.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/tmunit.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/tmutamt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/tmutfmt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/tolowtrn.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/tolowtrn.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/toupptrn.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/toupptrn.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/translit.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/transreg.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/transreg.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/tridpars.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/tridpars.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/tzfmt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/tzgnames.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/tzgnames.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/tznames.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/tznames_impl.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/tznames_impl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/tzrule.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/tztrans.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/ucal.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/ucln_in.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/ucln_in.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/ucol.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/ucol_imp.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/ucol_res.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/ucol_sit.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/ucoleitr.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/ucsdet.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/udat.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/udateintervalformat.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/udatpg.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/ufieldpositer.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/uitercollationiterator.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/uitercollationiterator.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/ulistformatter.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/ulocdata.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/umsg.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/umsg_imp.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unesctrn.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unesctrn.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/uni2name.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/uni2name.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/alphaindex.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/basictz.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/calendar.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/choicfmt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/coleitr.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/coll.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/compactdecimalformat.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/curramt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/currpinf.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/currunit.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/datefmt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/dcfmtsym.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/decimfmt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/dtfmtsym.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/dtitvfmt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/dtitvinf.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/dtptngen.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/dtrule.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/fieldpos.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/fmtable.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/format.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/formattedvalue.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/fpositer.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/gender.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/gregocal.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/listformatter.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/measfmt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/measunit.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/measure.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/msgfmt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/nounit.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/numberformatter.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/numberrangeformatter.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/numfmt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/numsys.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/plurfmt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/plurrule.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/rbnf.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/rbtz.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/regex.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/region.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/reldatefmt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/scientificnumberformatter.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/search.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/selfmt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/simpletz.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/smpdtfmt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/sortkey.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/stsearch.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/tblcoll.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/timezone.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/tmunit.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/tmutamt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/tmutfmt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/translit.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/tzfmt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/tznames.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/tzrule.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/tztrans.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/ucal.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/ucol.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/ucoleitr.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/ucsdet.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/udat.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/udateintervalformat.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/udatpg.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/ufieldpositer.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/uformattable.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/uformattedvalue.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/ugender.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/ulistformatter.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/ulocdata.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/umsg.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/unirepl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/unounclass.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/unum.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/unumberformatter.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/unumberrangeformatter.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/unumsys.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/upluralrules.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/uregex.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/uregion.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/ureldatefmt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/usearch.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/uspoof.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/utmscale.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/utrans.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unicode/vtzone.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/units_complexconverter.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/units_complexconverter.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/units_converter.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/units_converter.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/units_data.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/units_data.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/units_router.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/units_router.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unum.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/unumsys.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/upluralrules.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/uregex.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/uregexc.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/uregion.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/usearch.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/uspoof.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/uspoof_build.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/uspoof_conf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/uspoof_conf.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/uspoof_impl.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/uspoof_impl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/usrchimp.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/utf16collationiterator.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/utf16collationiterator.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/utf8collationiterator.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/utf8collationiterator.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/utmscale.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/utrans.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/vtzone.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/vzone.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/vzone.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/windtfmt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/windtfmt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/winnmfmt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/winnmfmt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/wintzimpl.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/wintzimpl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/zonemeta.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/zonemeta.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/zrule.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/zrule.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/ztrans.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/i18n/ztrans.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/icudefs.mk.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/install-sh (100%) rename {bootstrap/cxx/deps => deps}/icu/source/io/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/io/io.rc (100%) rename {bootstrap/cxx/deps => deps}/icu/source/io/io.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/io/io.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/io/locbund.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/io/locbund.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/io/sources.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/io/sprintf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/io/sscanf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/io/ucln_io.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/io/ucln_io.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/io/ufile.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/io/ufile.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/io/ufmt_cmn.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/io/ufmt_cmn.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/io/unicode/ustdio.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/io/unicode/ustream.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/io/uprintf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/io/uprintf.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/io/uprntf_p.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/io/uscanf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/io/uscanf.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/io/uscanf_p.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/io/ustdio.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/io/ustream.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/layoutex/LXUtilities.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/layoutex/LXUtilities.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/layoutex/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/layoutex/ParagraphLayout.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/layoutex/RunArrays.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/layoutex/layout/ParagraphLayout.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/layoutex/layout/RunArrays.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/layoutex/layout/playout.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/layoutex/layout/plruns.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/layoutex/layoutex.rc (100%) rename {bootstrap/cxx/deps => deps}/icu/source/layoutex/layoutex.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/layoutex/layoutex.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/layoutex/playout.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/layoutex/plruns.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/layoutex/sources.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/mkinstalldirs (100%) rename {bootstrap/cxx/deps => deps}/icu/source/python/icutools/__init__.py (100%) rename {bootstrap/cxx/deps => deps}/icu/source/python/icutools/databuilder/__init__.py (100%) rename {bootstrap/cxx/deps => deps}/icu/source/python/icutools/databuilder/__main__.py (100%) rename {bootstrap/cxx/deps => deps}/icu/source/python/icutools/databuilder/comment_stripper.py (100%) rename {bootstrap/cxx/deps => deps}/icu/source/python/icutools/databuilder/filtration.py (100%) rename {bootstrap/cxx/deps => deps}/icu/source/python/icutools/databuilder/filtration_schema.json (100%) rename {bootstrap/cxx/deps => deps}/icu/source/python/icutools/databuilder/renderers/__init__.py (100%) rename {bootstrap/cxx/deps => deps}/icu/source/python/icutools/databuilder/renderers/common_exec.py (100%) rename {bootstrap/cxx/deps => deps}/icu/source/python/icutools/databuilder/renderers/makefile.py (100%) rename {bootstrap/cxx/deps => deps}/icu/source/python/icutools/databuilder/request_types.py (100%) rename {bootstrap/cxx/deps => deps}/icu/source/python/icutools/databuilder/test/__init__.py (100%) rename {bootstrap/cxx/deps => deps}/icu/source/python/icutools/databuilder/test/__main__.py (100%) rename {bootstrap/cxx/deps => deps}/icu/source/python/icutools/databuilder/test/filtration_test.py (100%) rename {bootstrap/cxx/deps => deps}/icu/source/python/icutools/databuilder/test/sample_data/brkitr/LOCALE_DEPS.json (100%) rename {bootstrap/cxx/deps => deps}/icu/source/python/icutools/databuilder/test/sample_data/locales/LOCALE_DEPS.json (100%) rename {bootstrap/cxx/deps => deps}/icu/source/python/icutools/databuilder/test/sample_data/rbnf/LOCALE_DEPS.json (100%) rename {bootstrap/cxx/deps => deps}/icu/source/python/icutools/databuilder/utils.py (100%) rename {bootstrap/cxx/deps => deps}/icu/source/runConfigureICU (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/all/all.sln (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/all/samplecheck.bat (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/break/break.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/break/break.sln (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/break/break.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/break/break.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/break/readme.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/break/ubreak.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/cal/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/cal/cal.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/cal/cal.sln (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/cal/cal.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/cal/cal.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/cal/readme.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/cal/uprint.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/cal/uprint.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/case/case.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/case/case.sln (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/case/case.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/case/case.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/case/readme.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/case/ucase.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/citer/citer.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/citer/citer.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/citer/citer.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/citer/readme.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/coll/coll.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/coll/coll.sln (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/coll/coll.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/coll/coll.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/coll/readme.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/csdet/csdet.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/csdet/csdet.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/csdet/csdet.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/csdet/readme.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/date/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/date/date.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/date/date.sln (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/date/date.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/date/date.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/date/readme.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/date/uprint.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/date/uprint.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/datecal/cal.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/datecal/ccal.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/datefmt/README.TXT (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/datefmt/answers/main_0.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/datefmt/answers/main_1.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/datefmt/answers/main_2.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/datefmt/answers/main_3.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/datefmt/datefmt.sln (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/datefmt/datefmt.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/datefmt/datefmt.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/datefmt/main.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/datefmt/util.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/datefmt/util.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/defs.mk (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/dtitvfmtsample/dtitvfmtsample.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/dtptngsample/dtptngsample.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/dtptngsample/dtptngsample.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/dtptngsample/dtptngsample.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/FontMap.GDI (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/FontMap.Gnome (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/FontMap.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/FontMap.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/FontTableCache.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/FontTableCache.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/GDIFontInstance.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/GDIFontInstance.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/GDIFontMap.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/GDIFontMap.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/GDIGUISupport.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/GDIGUISupport.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/GUISupport.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/GnomeFontInstance.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/GnomeFontInstance.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/GnomeFontMap.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/GnomeFontMap.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/GnomeGUISupport.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/GnomeGUISupport.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/LayoutSample.rc (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/RenderingSurface.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/Sample.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/ScriptCompositeFontInstance.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/ScriptCompositeFontInstance.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/Surface.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/Surface.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/UnicodeReader.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/UnicodeReader.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/arraymem.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/cgnomelayout.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/clayout.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/cmaps.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/cmaps.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/gdiglue.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/gdiglue.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/gnomeglue.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/gnomeglue.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/gnomelayout.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/gsupport.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/layout.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/layout.sln (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/layout.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/layout.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/paragraph.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/paragraph.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/pflow.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/pflow.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/readme.html (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/resource.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/rsurface.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/rsurface.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/sfnt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/ucreader.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/layout/ucreader.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/legacy/README (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/legacy/legacy.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/legacy/legacy.sln (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/legacy/legacy.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/legacy/legacy.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/legacy/newcol.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/legacy/oldcol.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/msgfmt/README.TXT (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/msgfmt/answers/main_0.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/msgfmt/answers/main_1.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/msgfmt/answers/main_2.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/msgfmt/answers/main_3.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/msgfmt/main.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/msgfmt/msgfmt.sln (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/msgfmt/msgfmt.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/msgfmt/msgfmt.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/msgfmt/util.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/msgfmt/util.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/numfmt/capi.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/numfmt/main.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/numfmt/numfmt.sln (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/numfmt/numfmt.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/numfmt/numfmt.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/numfmt/readme.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/numfmt/util.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/numfmt/util.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/plurfmtsample/plurfmtsample.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/plurfmtsample/plurfmtsample.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/plurfmtsample/plurfmtsample.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/props/props.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/props/props.sln (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/props/props.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/props/props.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/props/readme.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/readme.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/rules.mk (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/strsrch/readme.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/strsrch/strsrch.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/strsrch/strsrch.sln (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/strsrch/strsrch.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/strsrch/strsrch.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/translit/README.TXT (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/translit/answers/main_1.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/translit/answers/main_2.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/translit/answers/main_3.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/translit/answers/main_4.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/translit/answers/unaccent.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/translit/answers/unaccent.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/translit/main.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/translit/translit.sln (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/translit/translit.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/translit/translit.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/translit/unaccent.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/translit/unaccent.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/translit/util.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/translit/util.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/uciter8/readme.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/uciter8/uciter8.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/uciter8/uciter8.sln (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/uciter8/uciter8.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/uciter8/uciter8.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/uciter8/uit_len8.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/uciter8/uit_len8.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ucnv/convsamp.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ucnv/data01.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ucnv/data02.bin (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ucnv/data06.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ucnv/flagcb.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ucnv/flagcb.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ucnv/readme.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ucnv/ucnv.sln (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ucnv/ucnv.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ucnv/ucnv.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/udata/reader.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/udata/reader.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/udata/reader.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/udata/readme.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/udata/udata.sln (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/udata/writer.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/udata/writer.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/udata/writer.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ufortune/fortunedefs.mk (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ufortune/readme.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ufortune/resources/es.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ufortune/resources/fortune_resources.mak (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ufortune/resources/res-file-list.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ufortune/resources/root.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ufortune/ufortune.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ufortune/ufortune.sln (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ufortune/ufortune.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ufortune/ufortune.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ugrep/readme.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ugrep/ugrep.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ugrep/ugrep.sln (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ugrep/ugrep.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ugrep/ugrep.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/uresb/en.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/uresb/readme.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/uresb/resources.mak (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/uresb/resources.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/uresb/resources.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/uresb/root.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/uresb/sr.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/uresb/uresb.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/uresb/uresb.sln (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/uresb/uresb.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/uresb/uresb.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ustring/readme.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ustring/ustring.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ustring/ustring.sln (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ustring/ustring.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/samples/ustring/ustring.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/stubdata/BUILD.bazel (100%) rename {bootstrap/cxx/deps => deps}/icu/source/stubdata/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/stubdata/sources.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/stubdata/stubdata.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/stubdata/stubdata.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/stubdata/stubdata.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/bocu1tst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/callcoll.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/callcoll.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/calldata.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/calltest.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/capitst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/capitst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cbiapts.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cbiapts.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cbididat.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cbiditransformtst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cbiditst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cbiditst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cbkittst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/ccaltst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/ccaltst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/ccapitst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/ccapitst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/ccolltst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/ccolltst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cconvtst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cctest.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/ccurrtst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/ccurrtst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cdateintervalformattest.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cdattst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cdattst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cdetst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cdetst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cdtdptst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cdtdptst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cdtrgtst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cdtrgtst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cestst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cestst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cfintst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cfintst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cformtst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cformtst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cfrtst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cfrtst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cg7coll.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cg7coll.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cgendtst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/chashtst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cintltst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cintltst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cintltst.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cintltst.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/citertst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/citertst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cjaptst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cjaptst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cldrtest.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cloctst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cloctst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cmsccoll.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cmsgtst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cmsgtst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cnmdptst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cnmdptst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cnormtst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cnormtst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cnumtst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cnumtst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cpluralrulestest.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cposxtst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/crelativedateformattest.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/crestst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/crestst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/creststn.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/creststn.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cstrcase.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cstrtest.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cturtst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cturtst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cucdapi.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cucdapi.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cucdtst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/currtest.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/custrtrn.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/custrtst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/cutiltst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/encoll.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/encoll.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/eurocreg.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/hpmufn.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/idnatest.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/nccbtst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/nccbtst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/ncnvfbts.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/ncnvfbts.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/ncnvtst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/nfsprep.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/nfsprep.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/nucnvtst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/nucnvtst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/putiltst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/reapits.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/sorttest.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/spooftest.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/spreptst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/sprpdata.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/stdnmtst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/tracetst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/trie2test.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/trietest.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/ucnvseltst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/ucnvseltst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/ucptrietest.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/ucsdetst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/udatatst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/udatpg_test.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/uenumtst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/uformattedvaluetst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/ulistfmttest.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/unumberformattertst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/unumberrangeformattertst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/uregiontest.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/usettest.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/usrchdat.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/usrchtst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/utexttst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/utf16tst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/utf8tst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/utmstest.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/cintltst/utransts.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/compat/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/compat/readme.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/compat/tzdate.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/compat/tzone.pl (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/depstest/dependencies.py (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/depstest/dependencies.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/depstest/depstest.py (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/depstest/icu-dependencies-mode.el (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/fuzzer/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/fuzzer/break_iterator_fuzzer.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/fuzzer/collator_compare_fuzzer.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/fuzzer/collator_rulebased_ICU-21041.fuzz (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/fuzzer/collator_rulebased_fuzzer.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/fuzzer/collator_rulebased_fuzzer_seed_corpus.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/fuzzer/converter_fuzzer.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/fuzzer/fuzzer_driver.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/fuzzer/fuzzer_utils.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/fuzzer/locale_fuzzer.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/fuzzer/locale_util.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/fuzzer/locale_util.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/fuzzer/number_format_fuzzer.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/fuzzer/ucasemap_fuzzer.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/fuzzer/uloc_canonicalize_fuzzer.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/fuzzer/uloc_canonicalize_fuzzer_seed_corpus.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/fuzzer/uloc_for_language_tag_fuzzer.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/fuzzer/uloc_for_language_tag_fuzzer_seed_corpus.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/fuzzer/uloc_get_name_fuzzer.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/fuzzer/uloc_get_name_fuzzer_seed_corpus.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/fuzzer/uloc_is_right_to_left_fuzzer.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/fuzzer/uloc_is_right_to_left_fuzzer_seed_corpus.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/fuzzer/uloc_open_keywords_fuzzer.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/fuzzer/uloc_open_keywords_fuzzer_seed_corpus.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/fuzzer/unicode_string_codepage_create_fuzzer.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/fuzzer/uregex_open_fuzzer.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/fuzzer/uregex_open_fuzzer.dict (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/hdrtst/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/hdrtst/dfiles.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/hdrtst/testinternalheaders.sh (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/hdrtst/testtagsguards.sh (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/aliastst.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/aliastst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/allcoll.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/allcoll.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/alphaindextst.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/alphaindextst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/apicoll.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/apicoll.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/astrotst.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/astrotst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/bidiconf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/bytestrietest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/calcasts.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/calcasts.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/callimts.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/callimts.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/calregts.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/calregts.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/caltest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/caltest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/caltestdata.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/caltztst.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/caltztst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/canittst.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/canittst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/citrtest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/citrtest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/collationtest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/colldata.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/colldata.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/compactdecimalformattest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/convtest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/convtest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/cpdtrtst.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/cpdtrtst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/csdetest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/csdetest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/currcoll.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/currcoll.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/dadrcal.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/dadrcal.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/dadrfmt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/dadrfmt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/datadrivennumberformattestsuite.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/datadrivennumberformattestsuite.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/dcfmapts.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/dcfmapts.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/dcfmtest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/dcfmtest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/decoll.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/decoll.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/dtfmapts.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/dtfmapts.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/dtfmrgts.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/dtfmrgts.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/dtfmtrtts.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/dtfmtrtts.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/dtfmttst.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/dtfmttst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/dtifmtts.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/dtifmtts.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/dtptngts.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/dtptngts.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/encoll.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/encoll.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/erarulestest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/erarulestest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/escoll.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/escoll.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/ficoll.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/ficoll.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/fldset.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/fldset.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/formatted_string_builder_test.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/formattedvaluetest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/frcoll.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/frcoll.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/g7coll.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/g7coll.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/genderinfotest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/icusvtst.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/icusvtst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/idnaconf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/idnaconf.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/idnaref.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/idnaref.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/incaltst.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/incaltst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/intltest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/intltest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/intltest.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/intltest.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/itercoll.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/itercoll.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/itformat.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/itformat.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/itmajor.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/itmajor.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/itrbbi.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/itrbbi.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/itrbnf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/itrbnf.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/itrbnfp.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/itrbnfp.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/itrbnfrt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/itrbnfrt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/itspoof.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/itspoof.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/ittrans.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/ittrans.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/itutil.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/itutil.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/jacoll.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/jacoll.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/jamotest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/jamotest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/lcukocol.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/lcukocol.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/listformattertest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/listformattertest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/localebuildertest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/localebuildertest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/localematchertest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/locnmtst.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/locnmtst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/loctest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/loctest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/lstmbetst.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/lstmbetst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/measfmttest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/miscdtfm.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/miscdtfm.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/mnkytst.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/mnkytst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/msfmrgts.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/msfmrgts.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/nmfmapts.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/nmfmapts.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/nmfmtrt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/nmfmtrt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/normconf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/normconf.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/nptrans.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/nptrans.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/numberformattesttuple.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/numberformattesttuple.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/numbertest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/numbertest_affixutils.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/numbertest_api.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/numbertest_decimalquantity.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/numbertest_doubleconversion.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/numbertest_modifiers.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/numbertest_parse.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/numbertest_patternmodifier.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/numbertest_patternstring.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/numbertest_permutation.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/numbertest_range.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/numbertest_skeletons.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/numfmtdatadriventest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/numfmtspectest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/numfmtst.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/numfmtst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/numrgts.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/numrgts.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/pluralmaptest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/plurfmts.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/plurfmts.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/plurults.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/plurults.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/pptest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/pptest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/punyref.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/punyref.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/quantityformattertest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/rbbiapts.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/rbbiapts.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/rbbimonkeytest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/rbbimonkeytest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/rbbitst.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/rbbitst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/regcoll.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/regcoll.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/regextst.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/regextst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/regiontst.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/regiontst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/reldatefmttest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/reptest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/reptest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/restest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/restest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/restsnew.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/restsnew.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/scientificnumberformattertest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/sdtfmtts.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/sdtfmtts.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/selfmts.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/selfmts.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/sfwdchit.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/sfwdchit.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/simpleformattertest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/simplethread.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/simplethread.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/srchtest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/srchtest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/ssearch.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/ssearch.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/static_unisets_test.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/strcase.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/string_segment_test.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/strtest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/strtest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/svccoll.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/svccoll.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tchcfmt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tchcfmt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/testidn.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/testidna.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/testidna.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/testutil.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/testutil.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/textfile.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/textfile.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tfsmalls.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tfsmalls.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/thcoll.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/thcoll.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tmsgfmt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tmsgfmt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tokiter.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tokiter.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/transapi.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/transapi.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/transrt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/transrt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/transtst.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/transtst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/trcoll.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/trcoll.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/trnserr.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/trnserr.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tscoll.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tscoll.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tsdate.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tsdate.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tsdcfmsy.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tsdcfmsy.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tsdtfmsy.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tsdtfmsy.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tsmthred.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tsmthred.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tsnmfmt.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tsnmfmt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tsputil.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tsputil.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tstnorm.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tstnorm.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tstnrapi.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tufmtts.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tzbdtest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tzbdtest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tzfmttst.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tzfmttst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tzoffloc.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tzoffloc.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tzregts.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tzregts.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tzrulets.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tzrulets.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tztest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/tztest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/ucaconf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/ucaconf.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/ucdtest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/ucdtest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/ucharstrietest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/unifiedcachetest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/units_data_test.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/units_router_test.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/units_test.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/uobjtest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/uobjtest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/usettest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/usettest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/ustrtest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/ustrtest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/uts46test.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/utxttest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/utxttest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/uvectest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/uvectest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/v32test.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/v32test.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/windttst.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/windttst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/winnmtst.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/winnmtst.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/winutil.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/intltest/winutil.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/iotest/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/iotest/filetst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/iotest/iotest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/iotest/iotest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/iotest/iotest.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/iotest/iotest.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/iotest/stream.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/iotest/strtst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/iotest/trnstst.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/FontObject.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/FontObject.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/FontTableCache.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/FontTableCache.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/PortableFontInstance.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/PortableFontInstance.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/SimpleFontInstance.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/SimpleFontInstance.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/cfonts.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/cfonts.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/cletest.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/cletest.sln (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/cletest.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/cletest.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/cmaps.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/cmaps.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/gendata.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/gendata.sln (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/gendata.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/gendata.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/gendata.xml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/letest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/letest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/letest.sln (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/letest.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/letest.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/letsutil.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/letsutil.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/readme.html (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/sfnt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/testdata.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/xmlreader.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/letest/xmlreader.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/DateFmtPerf/DateFmtPerf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/DateFmtPerf/DateFmtPerf.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/DateFmtPerf/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/DateFmtPerf/ReadMe.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/DateFmtPerf/breakdata.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/DateFmtPerf/collationdata.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/DateFmtPerf/datedata.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/README (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/charperf/CharPerf.pl (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/charperf/CharPerf_r.pl (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/charperf/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/charperf/charperf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/charperf/charperf.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/charperf/charperf.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/charperf/charperf.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/collationperf/CollPerf.pl (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/collationperf/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/collationperf/collperf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/collationperf/readme.html (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/collperf/CollPerf.pl (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/collperf/CollPerf_r.pl (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/collperf/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/collperf/collperf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/collperf/collperf.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/collperf/collperf.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/collperf2/CollPerf2_r.pl (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/collperf2/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/collperf2/collperf2.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/collperf2/collperf2.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/collperf2/collperf2.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/convperf/ConvPerf_r.pl (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/convperf/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/convperf/convperf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/convperf/convperf.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/convperf/convperf.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/convperf/convperf.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/convperf/convperf_ansi.pl (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/convperf/convperf_iml.pl (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/convperf/data.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/dicttrieperf/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/dicttrieperf/dicttrieperf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/howExpensiveIs/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/howExpensiveIs/howExpensiveIs.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/howExpensiveIs/readme.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/howExpensiveIs/sieve.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/howExpensiveIs/sieve.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/icuperf2report.xsl (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/leperf/FontObject.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/leperf/FontObject.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/leperf/FontTableCache.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/leperf/FontTableCache.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/leperf/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/leperf/PortableFontInstance.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/leperf/PortableFontInstance.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/leperf/SimpleFontInstance.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/leperf/SimpleFontInstance.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/leperf/cfonts.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/leperf/cfonts.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/leperf/cmaps.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/leperf/cmaps.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/leperf/leperf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/leperf/letrperf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/leperf/sfnt.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/leperf/xmlreader.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/leperf/xmlreader.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/localecanperf/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/localecanperf/localecanperf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/localecanperf/runTest.sh (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/normperf/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/normperf/NormPerf.pl (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/normperf/NormPerf_r.pl (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/normperf/dtfmtrtperf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/normperf/dtfmtrtperf.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/normperf/dtfmtrtperf.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/normperf/dtfmtrtperf.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/normperf/normperf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/normperf/normperf.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/normperf/normperf.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/normperf/normperf.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/normperf/simplenormperf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/perf.sln (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/perldriver/Common.pl.template (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/perldriver/Dataset.pm (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/perldriver/Format.pm (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/perldriver/Output.pm (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/perldriver/PerfFramework.pm (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/strsrchperf/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/strsrchperf/StrSrchPerf_r.pl (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/strsrchperf/strsrchperf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/strsrchperf/strsrchperf.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/strsrchperf/strsrchperf.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/strsrchperf/strsrchperf.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/ubrkperf/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/ubrkperf/UBrkPerf_r.pl (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/ubrkperf/ubrkperf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/ubrkperf/ubrkperf.dsp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/ubrkperf/ubrkperf.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/ubrkperf/ubrkperf.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/ubrkperf/ubrkperf.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/ubrkperf/ubrkperf20.dsp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/ubrkperf/ubrkperfold.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/ubrkperf/ubrkperfold.dsp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/ucnvavailperf/ucnvavailperf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/ucnvavailperf/ucnvavailperf.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/unisetperf/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/unisetperf/draft/bitset.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/unisetperf/draft/contperf.bat (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/unisetperf/draft/contperf.sh (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/unisetperf/draft/span16perf.bat (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/unisetperf/draft/span16perf.sh (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/unisetperf/draft/span8perf.bat (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/unisetperf/draft/span8perf.sh (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/unisetperf/draft/trieset.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/unisetperf/draft/unicont.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/unisetperf/unisetperf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/unisetperf/unisetperf.pl (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/unisetperf/unisetperf.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/usetperf/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/usetperf/UsetPerf.pl (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/usetperf/bitset.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/usetperf/bitset.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/usetperf/usetperf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/usetperf/usetperf.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/usetperf/usetperf.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/ustrperf/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/ustrperf/StringPerf.pl (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/ustrperf/StringPerf_r.pl (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/ustrperf/stringperf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/ustrperf/stringperf.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/ustrperf/stringperf.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/ustrperf/stringperf.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/utfperf/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/utfperf/UtfPerf.pl (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/utfperf/utfperf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/utfperf/utfperf.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/utfperf/utfperf.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/utrie2perf/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/utrie2perf/utrie2perf.bat (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/utrie2perf/utrie2perf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/utrie2perf/utrie2perf.sh (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/perf/utrie2perf/utrie2perf.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/BUILDRULES.py (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/BidiCharacterTest.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/BidiTest.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/Burmese_graphclust_model5_heavy.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/Burmese_graphclust_model5_heavy_Test.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/CollationTest_NON_IGNORABLE_SHORT.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/CollationTest_SHIFTED_SHORT.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/ConverterSelectorTestUTF8.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/GraphemeBreakTest.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/IdnaTestV2.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/LineBreakTest.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/NormalizationTest-3.2.0.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/NumberFormatTestCases.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/SentenceBreakTest.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/TestFont1.otf (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/Thai_codepoints_exclusive_model5_heavy.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/Thai_codepoints_exclusive_model5_heavy_Test.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/Thai_graphclust_model4_heavy.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/Thai_graphclust_model4_heavy_Test.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/WordBreakTest.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/break_rules/README.md (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/break_rules/grapheme.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/break_rules/line.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/break_rules/line_cj.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/break_rules/line_loose.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/break_rules/line_loose_cj.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/break_rules/line_normal.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/break_rules/line_normal_cj.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/break_rules/sentence.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/break_rules/word.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/break_rules/word_POSIX.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/calendar.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/casing.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/cldr/units/_readme.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/cldr/units/unitPreferencesTest.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/cldr/units/unitsTest.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/free-blocks.16.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/free-blocks.32.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/free-blocks.8.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/free-blocks.small16.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/grow-data.16.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/grow-data.32.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/grow-data.8.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/grow-data.small16.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/set-empty.16.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/set-empty.32.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/set-empty.8.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/set-empty.small16.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/set-single-value.16.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/set-single-value.32.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/set-single-value.8.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/set-single-value.small16.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/set1.16.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/set1.32.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/set1.8.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/set1.small16.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/set2-overlap.16.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/set2-overlap.32.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/set2-overlap.small16.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/set3-initial-9.16.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/set3-initial-9.32.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/set3-initial-9.8.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/set3-initial-9.small16.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/short-all-same.8.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/short-all-same.small16.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/small0-in-fast.16.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/small0-in-fast.32.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/small0-in-fast.8.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/codepointtrie/small0-in-fast.small16.toml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/collationtest.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/conversion.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/csdetest.xml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/dcfmtest.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/default.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/emoji-test.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/encoded.utf16be (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/filters/filtertest.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/filtertest.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/format.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/ibm9027.ucm (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/icuio.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/idna_conf.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/idna_rules.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/importtest.bin (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/letest.xml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/localeCanonicalization.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/localeMatcherTest.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/mc.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/metaZones.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/nfs4_cis_prep.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/nfs4_cs_prep_ci.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/nfs4_cs_prep_cs.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/nfs4_mixed_prep_p.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/nfs4_mixed_prep_s.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/numberformattestspecification.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/numberpermutationtest.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/old_e_testtypes.res (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/old_l_testtypes.res (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/pkgdata.inc.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/pkgdataMakefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/ra.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/ra.xlf (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/rbbitst.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/re_tests.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/readme.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/regextst.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/riwords.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/root.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/sh.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/sh_YU.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/ssearch.xml (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/structLocale.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/te.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/te_IN.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/te_IN_REVISED.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/test1.ucm (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/test1bmp.ucm (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/test2.ucm (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/test3.ucm (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/test4.ucm (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/test4x.ucm (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/test5.ucm (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/testaliases.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/testdata.mak (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/testempty.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/testnorm.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/testtypes.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/timezoneTypes.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/translit_rules.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/uni-text.bin (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/windowsZones.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testdata/zoneinfo64.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testmap/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testmap/readme.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testmap/testmap.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/testmap/testmap.dsp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/thaitest/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/thaitest/space.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/thaitest/thaitest.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/test/thaitest/thaitest.dsp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/ctestfw/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/ctestfw/ctest.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/ctestfw/ctestfw.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/ctestfw/ctestfw.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/ctestfw/datamap.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/ctestfw/sources.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/ctestfw/testdata.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/ctestfw/tstdtmod.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/ctestfw/ucln_ct.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/ctestfw/unicode/ctest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/ctestfw/unicode/datamap.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/ctestfw/unicode/testdata.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/ctestfw/unicode/testlog.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/ctestfw/unicode/testtype.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/ctestfw/unicode/tstdtmod.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/ctestfw/unicode/uperf.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/ctestfw/unicode/utimer.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/ctestfw/uperf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/escapesrc/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/escapesrc/cptbl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/escapesrc/escapesrc.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/escapesrc/expect-simple.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/escapesrc/tblgen.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/escapesrc/test-nochange.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/escapesrc/test-simple.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genbrk/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genbrk/genbrk.1.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genbrk/genbrk.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genbrk/genbrk.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genbrk/genbrk.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genbrk/sources.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genccode/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genccode/genccode.8.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genccode/genccode.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genccode/genccode.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genccode/genccode.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genccode/sources.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gencfu/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gencfu/gencfu.1.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gencfu/gencfu.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gencfu/gencfu.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gencfu/gencfu.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gencfu/sources.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gencmn/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gencmn/gencmn.8.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gencmn/gencmn.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gencmn/gencmn.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gencmn/gencmn.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gencmn/sources.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gencnval/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gencnval/gencnval.1.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gencnval/gencnval.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gencnval/gencnval.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gencnval/gencnval.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gencnval/sources.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gencolusb/README.md (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gencolusb/extract_unsafe_backwards.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gencolusb/verify_uset.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gendict/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gendict/gendict.1.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gendict/gendict.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gendict/gendict.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gendict/gendict.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gendict/sources.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gennorm2/BUILD.bazel (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gennorm2/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gennorm2/extradata.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gennorm2/extradata.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gennorm2/gennorm2.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gennorm2/gennorm2.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gennorm2/n2builder.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gennorm2/n2builder.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gennorm2/norms.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gennorm2/norms.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gennorm2/sources.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/derb.1.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/derb.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/derb.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/derb.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/errmsg.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/errmsg.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/filterrb.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/filterrb.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/genrb.1.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/genrb.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/genrb.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/genrb.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/genrb.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/parse.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/parse.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/prscmnts.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/prscmnts.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/rbutil.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/rbutil.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/read.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/read.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/reslist.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/reslist.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/rle.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/rle.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/sources.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/ustr.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/ustr.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/wrtjava.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genrb/wrtxml.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genren/README (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/genren/genren.pl (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gensprep/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gensprep/filterRFC3454.pl (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gensprep/gensprep.8.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gensprep/gensprep.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gensprep/gensprep.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gensprep/gensprep.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gensprep/gensprep.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gensprep/sources.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gensprep/store.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gentest/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gentest/genres32.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gentest/gentest.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gentest/gentest.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gentest/gentest.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gentest/gentest.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/gentest/sources.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/icuexportdata/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/icuexportdata/icuexportdata.1.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/icuexportdata/icuexportdata.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/icuexportdata/icuexportdata.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/icuexportdata/icuexportdata.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/icuexportdata/sources.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/icuinfo/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/icuinfo/icuinfo.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/icuinfo/icuinfo.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/icuinfo/icuplugins_windows_sample.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/icuinfo/plugin_sources.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/icuinfo/sources.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/icuinfo/testplug.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/icuinfo/testplug.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/icuinfo/testplug.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/icupkg/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/icupkg/icupkg.8.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/icupkg/icupkg.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/icupkg/icupkg.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/icupkg/sources.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/icuswap/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/icuswap/icuswap.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/icuswap/icuswap.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/icuswap/sources.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/makeconv/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/makeconv/gencnvex.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/makeconv/genmbcs.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/makeconv/genmbcs.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/makeconv/makeconv.1.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/makeconv/makeconv.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/makeconv/makeconv.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/makeconv/makeconv.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/makeconv/makeconv.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/makeconv/sources.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/makeconv/ucnvstat.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/memcheck/ICUMemCheck.pl (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/pkgdata/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/pkgdata/pkgdata.1.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/pkgdata/pkgdata.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/pkgdata/pkgdata.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/pkgdata/pkgdata.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/pkgdata/pkgtypes.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/pkgdata/pkgtypes.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/pkgdata/sources.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/BUILD.bazel (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/collationinfo.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/collationinfo.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/dbgutil.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/dbgutil.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/denseranges.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/denseranges.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/filestrm.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/filestrm.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/filetools.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/filetools.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/flagparser.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/flagparser.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/package.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/package.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/pkg_genc.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/pkg_genc.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/pkg_gencmn.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/pkg_gencmn.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/pkg_icu.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/pkg_icu.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/pkg_imp.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/pkgitems.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/ppucd.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/ppucd.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/sources.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/swapimpl.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/swapimpl.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/toolutil.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/toolutil.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/toolutil.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/ucbuf.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/ucbuf.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/ucln_tu.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/ucm.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/ucm.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/ucmstate.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/udbgutil.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/udbgutil.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/unewdata.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/unewdata.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/uoptions.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/uoptions.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/uparse.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/uparse.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/writesrc.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/writesrc.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/xmlparser.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/toolutil/xmlparser.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/tzcode/Makefile.in (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/tzcode/asctime.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/tzcode/ialloc.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/tzcode/icuregions (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/tzcode/icuzdump.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/tzcode/icuzdump.vcxproj (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/tzcode/icuzdump.vcxproj.filters (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/tzcode/icuzones (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/tzcode/localtime.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/tzcode/private.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/tzcode/readme.txt (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/tzcode/scheck.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/tzcode/tz2icu.cpp (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/tzcode/tz2icu.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/tzcode/tzfile.h (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/tzcode/tzselect.ksh (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/tzcode/zdump.c (100%) rename {bootstrap/cxx/deps => deps}/icu/source/tools/tzcode/zic.c (100%) create mode 120000 deps/zen rename {bootstrap/cxx/include => include}/bolt/ByteString.hpp (100%) rename {bootstrap/cxx/include => include}/bolt/CST.hpp (100%) rename {bootstrap/cxx/include => include}/bolt/CSTVisitor.hpp (100%) rename {bootstrap/cxx/include => include}/bolt/Checker.hpp (100%) rename {bootstrap/cxx/include => include}/bolt/Common.hpp (100%) rename {bootstrap/cxx/include => include}/bolt/ConsolePrinter.hpp (100%) rename {bootstrap/cxx/include => include}/bolt/DiagnosticEngine.hpp (100%) rename {bootstrap/cxx/include => include}/bolt/Diagnostics.hpp (100%) rename {bootstrap/cxx/include => include}/bolt/Evaluator.hpp (100%) rename {bootstrap/cxx/include => include}/bolt/Integer.hpp (100%) rename {bootstrap/cxx/include => include}/bolt/Parser.hpp (100%) create mode 100644 include/bolt/Passes/CheckBindings.hpp rename {bootstrap/cxx/include => include}/bolt/Program.hpp (100%) rename {bootstrap/cxx/include => include}/bolt/Scanner.hpp (100%) rename {bootstrap/cxx/include => include}/bolt/Stream.hpp (100%) rename {bootstrap/cxx/include => include}/bolt/String.hpp (100%) rename {bootstrap/cxx/include => include}/bolt/Support/Graph.hpp (100%) rename {bootstrap/cxx/include => include}/bolt/Text.hpp (100%) rename {bootstrap/cxx/include => include}/bolt/Type.hpp (100%) create mode 100644 papers/complete-and-easy-bidirectional-type-checking.pdf create mode 100644 samples/bolt.bolt create mode 100644 samples/effect.bolt create mode 100644 samples/todomvc.bolt create mode 100644 scripts/gennodes.py create mode 100644 scripts/genrewrite.py rename {bootstrap/cxx/src => src}/CST.cc (100%) rename {bootstrap/cxx/src => src}/Checker.cc (100%) rename {bootstrap/cxx/src => src}/ConsolePrinter.cc (100%) rename {bootstrap/cxx/src => src}/Diagnostics.cc (100%) rename {bootstrap/cxx/src => src}/Evaluator.cc (100%) create mode 100644 src/LLVMCodeGen.cc create mode 100644 src/LLVMCodeGen.hpp rename {bootstrap/cxx/src => src}/Parser.cc (100%) create mode 100644 src/Pass/CheckMissingBindings.cc rename {bootstrap/cxx/src => src}/Scanner.cc (100%) create mode 100644 src/Scope.cc rename {bootstrap/cxx/src => src}/Text.cc (100%) rename {bootstrap/cxx/src => src}/Types.cc (100%) rename {bootstrap/cxx/src => src}/main.cc (100%) create mode 100644 stdlib/io.bolt create mode 100644 stdlib/math.bolt create mode 100644 stdlib/prelude.bolt rename {bootstrap/cxx/test => test}/TestChecker.cc (100%) rename {bootstrap/cxx/test => test}/TestText.cc (100%) rename {bootstrap/cxx/test => test}/checker/forward_recursion.bolt (100%) rename {bootstrap/cxx/test => test}/checker/if_part_test_is_bool.bolt (100%) rename {bootstrap/cxx/test => test}/checker/instance_arguments_type_classes.bolt.disabled (100%) rename {bootstrap/cxx/test => test}/checker/local_constraints_polymorphic_variable.bolt (100%) rename {bootstrap/cxx/test => test}/checker/mutual_recursion_is_odd_is_even.bolt (100%) rename {bootstrap/cxx/test => test}/checker/nested_vars_reaching_parent_scope.bolt (100%) rename {bootstrap/cxx/test => test}/checker/pattern_matching_variant.bolt (100%) rename {bootstrap/cxx/test => test}/checker/simple_instance_arguments.bolt.disabled (100%) rename {bootstrap/cxx/test => test}/checker/simple_tuple_test.bolt (100%) rename {bootstrap/cxx/test => test}/checker/test_equality_tapp.bolt (100%) rename {bootstrap/cxx/test => test}/checker/test_qualified_type_sigs.bolt (100%) rename {bootstrap/cxx/test => test}/checker/variable_mistyping.bolt (100%) rename {bootstrap/cxx/test => test}/checker/wrong_return_type.bolt (100%) create mode 100755 x.py diff --git a/.gitignore b/.gitignore index b4459c051..ceceac244 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,19 @@ -# populated by npm -node_modules/ +# default build directory for VSCode +/build/ -# compiled TypeScript code from src/ -/lib/ +# used by clangd and other programs +.cache/ -# local development helpers +# created by pyenv +.python-version + +# used for local development Makefile + +# Used by IDEs to get correct error messages +compile_commands.json + +# quick test scripts in the main directory /*.bolt /*.c diff --git a/.vscode/launch.json b/.vscode/launch.json index aa14ac561..e72879480 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -5,15 +5,13 @@ "version": "0.2.0", "configurations": [ { - "type": "node", + "type": "lldb", "request": "launch", - "name": "Launch Program", - "skipFiles": [ - "/**" - ], - "program": "${workspaceFolder}/compiler/lib/bin/bolt.js", - "args": [ "compiler/test.bolt" ], - "outputCapture": "std" + "name": "Debug", + "program": "${workspaceFolder}/build/bolt", + "args": [ "--direct-diagnostics", "verify", "${workspaceFolder}/test.bolt" ], + "cwd": "${workspaceFolder}", + "preLaunchTask": "CMake: build" } ] -} \ No newline at end of file +} diff --git a/bootstrap/cxx/.vscode/settings.json b/.vscode/settings.json similarity index 100% rename from bootstrap/cxx/.vscode/settings.json rename to .vscode/settings.json diff --git a/bootstrap/cxx/.vscode/tasks.json b/.vscode/tasks.json similarity index 100% rename from bootstrap/cxx/.vscode/tasks.json rename to .vscode/tasks.json diff --git a/bootstrap/cxx/CMakeLists.txt b/CMakeLists.txt similarity index 100% rename from bootstrap/cxx/CMakeLists.txt rename to CMakeLists.txt diff --git a/bootstrap/cxx/README.md b/CONTRIBUTING.md similarity index 100% rename from bootstrap/cxx/README.md rename to CONTRIBUTING.md diff --git a/bootstrap/cxx/.gitignore b/bootstrap/cxx/.gitignore deleted file mode 100644 index d1bbc1a75..000000000 --- a/bootstrap/cxx/.gitignore +++ /dev/null @@ -1,18 +0,0 @@ - -# default build directory for VSCode -/build/ - -# used by clangd and other programs -.cache/ - -# created by pyenv -.python-version - -# used for local development -Makefile - -# Used by IDEs to get correct error messages -compile_commands.json - -# quick test scripts in the main directory -/*.bolt diff --git a/bootstrap/cxx/.vscode/launch.json b/bootstrap/cxx/.vscode/launch.json deleted file mode 100644 index e72879480..000000000 --- a/bootstrap/cxx/.vscode/launch.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "type": "lldb", - "request": "launch", - "name": "Debug", - "program": "${workspaceFolder}/build/bolt", - "args": [ "--direct-diagnostics", "verify", "${workspaceFolder}/test.bolt" ], - "cwd": "${workspaceFolder}", - "preLaunchTask": "CMake: build" - } - ] -} diff --git a/bootstrap/cxx/deps/zen b/bootstrap/cxx/deps/zen deleted file mode 120000 index 808883411..000000000 --- a/bootstrap/cxx/deps/zen +++ /dev/null @@ -1 +0,0 @@ -../../../../zen \ No newline at end of file diff --git a/bootstrap/js/compiler/.gitignore b/bootstrap/js/compiler/.gitignore deleted file mode 100644 index b4459c051..000000000 --- a/bootstrap/js/compiler/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ - -# populated by npm -node_modules/ - -# compiled TypeScript code from src/ -/lib/ - -# local development helpers -Makefile -/*.bolt -/*.c diff --git a/bootstrap/js/compiler/package-lock.json b/bootstrap/js/compiler/package-lock.json deleted file mode 100644 index bb8afecae..000000000 --- a/bootstrap/js/compiler/package-lock.json +++ /dev/null @@ -1,169 +0,0 @@ -{ - "name": "@samvv/bolt", - "version": "0.0.1", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "@samvv/bolt", - "version": "0.0.1", - "license": "MIT", - "dependencies": { - "@types/which": "^3.0.0", - "commander": "^10.0.0", - "reflect-metadata": "^0.1.13", - "source-map-support": "^0.5.21", - "tslib": "^2.5.0", - "which": "^3.0.0", - "yagl": "^0.5.1" - }, - "bin": { - "bolt": "lib/bin/bolt.js", - "bolt-self": "lib/bin/bolt-self.js" - }, - "devDependencies": { - "@types/node": "^18.15.11" - } - }, - "node_modules/@types/node": { - "version": "18.15.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", - "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==", - "dev": true - }, - "node_modules/@types/which": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/which/-/which-3.0.0.tgz", - "integrity": "sha512-ASCxdbsrwNfSMXALlC3Decif9rwDMu+80KGp5zI2RLRotfMsTv7fHL8W8VDp24wymzDyIFudhUeSCugrgRFfHQ==" - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/commander": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.0.tgz", - "integrity": "sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==", - "engines": { - "node": ">=14" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "node_modules/which": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.0.tgz", - "integrity": "sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/yagl": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/yagl/-/yagl-0.5.1.tgz", - "integrity": "sha512-DfJygWCefAq5eEOmwvVkiMFBUEQJs9aijGdhaYGSdj1TM2OqSbe/Vp37e/nMGXsgmWiryZapKMOtpYx3ECUrJQ==" - } - }, - "dependencies": { - "@types/node": { - "version": "18.15.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", - "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==", - "dev": true - }, - "@types/which": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/which/-/which-3.0.0.tgz", - "integrity": "sha512-ASCxdbsrwNfSMXALlC3Decif9rwDMu+80KGp5zI2RLRotfMsTv7fHL8W8VDp24wymzDyIFudhUeSCugrgRFfHQ==" - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "commander": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.0.tgz", - "integrity": "sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "which": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.0.tgz", - "integrity": "sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "yagl": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/yagl/-/yagl-0.5.1.tgz", - "integrity": "sha512-DfJygWCefAq5eEOmwvVkiMFBUEQJs9aijGdhaYGSdj1TM2OqSbe/Vp37e/nMGXsgmWiryZapKMOtpYx3ECUrJQ==" - } - } -} diff --git a/bootstrap/js/compiler/package.json b/bootstrap/js/compiler/package.json deleted file mode 100644 index 8382aec1c..000000000 --- a/bootstrap/js/compiler/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "@boltlang/bolt", - "version": "0.0.1", - "description": "A new programming language for the web", - "main": "lib/index.js", - "bin": { - "bolt": "lib/bin/bolt.js" - }, - "repository": { - "type": "git", - "url": "https://github.com/samvv/BoltJS" - }, - "keywords": [ - "programming-language", - "productivity", - "development", - "performance" - ], - "author": "Sam Vervaeck", - "license": "MIT", - "dependencies": { - "@types/which": "^3.0.0", - "commander": "^11.0.0", - "reflect-metadata": "^0.1.13", - "source-map-support": "^0.5.21", - "tslib": "^2.5.3", - "which": "^3.0.1", - "yagl": "^0.5.1" - }, - "devDependencies": { - "@types/node": "^20.3.1" - } -} diff --git a/bootstrap/js/compiler/src/analysis.ts b/bootstrap/js/compiler/src/analysis.ts deleted file mode 100644 index c823e711d..000000000 --- a/bootstrap/js/compiler/src/analysis.ts +++ /dev/null @@ -1,201 +0,0 @@ -import { DirectedHashGraph, strongconnect } from "yagl"; -import { assert } from "./util"; -import { Syntax, LetDeclaration, SourceFile, SyntaxKind } from "./cst"; -import type { Scope } from "./scope" - -export class Analyser { - - private referenceGraph = new DirectedHashGraph(); - - public addSourceFile(node: SourceFile): void { - - const visit = (node: Syntax, source: Syntax | null) => { - - const addReference = (scope: Scope, name: string) => { - const target = scope.lookup(name); - if (source === null || target === null || isParam(target.kind)) { - return; - } - assert(source.kind === SyntaxKind.LetDeclaration); - assert(target.kind === SyntaxKind.LetDeclaration); - this.referenceGraph.addEdge(source, target); - } - - switch (node.kind) { - - case SyntaxKind.ConstantExpression: - break; - - case SyntaxKind.MatchExpression: - { - for (const arm of node.arms) { - visit(arm.expression, source); - } - break; - } - - case SyntaxKind.InstanceDeclaration: - case SyntaxKind.ClassDeclaration: - case SyntaxKind.SourceFile: - case SyntaxKind.ModuleDeclaration: - { - for (const element of node.elements) { - visit(element, source); - } - break; - } - - case SyntaxKind.ReferenceExpression: - { - if (node.name.kind === SyntaxKind.Identifier) { - assert(node.modulePath.length === 0); - addReference(node.getScope(), node.name.text); - } - break; - } - - case SyntaxKind.MemberExpression: - { - visit(node.expression, source); - break; - } - - case SyntaxKind.TupleExpression: - { - for (const element of node.elements) { - visit(element, source); - } - break; - } - - case SyntaxKind.StructExpression: - { - for (const member of node.members) { - switch (member.kind) { - case SyntaxKind.PunnedStructExpressionField: - { - addReference(node.getScope(), member.name.text); - break; - } - case SyntaxKind.StructExpressionField: - { - visit(member.expression, source); - break; - }; - } - } - break; - } - - case SyntaxKind.NestedExpression: - { - visit(node.expression, source); - break; - } - - case SyntaxKind.InfixExpression: - { - visit(node.left, source); - visit(node.right, source); - break; - } - - case SyntaxKind.CallExpression: - { - visit(node.func, source); - for (const arg of node.args) { - visit(arg, source); - } - break; - } - - case SyntaxKind.IfStatement: - { - for (const cs of node.cases) { - if (cs.test !== null) { - visit(cs.test, source); - } - for (const element of cs.elements) { - visit(element, source); - } - } - break; - } - - case SyntaxKind.ExpressionStatement: - { - visit(node.expression, source); - break; - } - - case SyntaxKind.ReturnStatement: - { - if (node.expression !== null) { - visit(node.expression, source); - } - break; - } - - case SyntaxKind.LetDeclaration: - { - this.referenceGraph.addVertex(node); - if (node.body !== null) { - switch (node.body.kind) { - case SyntaxKind.ExprBody: - { - visit(node.body.expression, node); - break; - } - case SyntaxKind.BlockBody: - { - for (const element of node.body.elements) { - visit(element, node); - } - break; - } - } - } - break; - } - - case SyntaxKind.TypeDeclaration: - case SyntaxKind.EnumDeclaration: - case SyntaxKind.StructDeclaration: - break; - - default: - throw new Error(`Unexpected ${node.constructor.name}`); - - } - - } - - visit(node, null); - - } - - public isReferencedInParentScope(node: LetDeclaration): boolean { - const maxDepth = node.getScope().depth; - for (const other of this.referenceGraph.getSourceVertices(node)) { - if (other.getScope().depth < maxDepth) { - return true; - } - } - return false; - } - - /** - * Gets a sorted list of collections where each collection contains - * let-declarations that reference each other in some way or another. - * - * The declarations are sorted in such a way that declarations that reference - * nothing come before declarations that reference another declaration. When - * a let-declaration is not recusive, it will simply show up as a collection - * with only one element. - */ - public getSortedDeclarations(): Iterable { - return strongconnect(this.referenceGraph); - } - -} - diff --git a/bootstrap/js/compiler/src/bin/bolt.ts b/bootstrap/js/compiler/src/bin/bolt.ts deleted file mode 100644 index 5721c1090..000000000 --- a/bootstrap/js/compiler/src/bin/bolt.ts +++ /dev/null @@ -1,227 +0,0 @@ -#!/usr/bin/env node - -import "source-map-support/register" -import "reflect-metadata" - -import fs from "fs" -import util from "util" -import path from "path" -import { Command } from "commander" - -import { PassManager, Program, TargetType } from "../program" -import { TypeclassDictPassing } from "../passes/TypeclassDictPass" -import BoltToC from "../passes/BoltToC" -import BoltToJS from "../passes/BoltToJS" -import { stripExtension } from "../util" -import { sync as which } from "which" -import { spawnSync } from "child_process" -import { ConsoleDiagnostics, DiagnosticKind, DiagnosticStore, TypeMismatchDiagnostic } from "../diagnostics" -import { Syntax, SyntaxKind, TextFile, isExpression, visitEachChild } from "../cst" -import { Analyser, Checker, parseSourceFile } from ".." -import { typesEqual } from "../types" - -function debug(value: any) { - console.error(util.inspect(value, { colors: true, depth: Infinity })); -} - -// The positions of all program arguments which are not flags will be parsed -// into this structure. -const commandIndices = []; - -for (let i = 2; i < process.argv.length; i++) { - const arg = process.argv[i]; - if (!arg.startsWith('-')) { - commandIndices.push(i); - } -} - -// Iterate in reverse over the command indices, such that bolt-self-test-run -// gets precedence over bolt-self-test -for (let i = commandIndices.length-1; i >= 0; i--) { - - const argvIndex = commandIndices[i]; - - // Construct the binary name from the parts of which we stored the locations in `commandIndices`. - // Build from the first command up until the command at index `i` - const binaryName = 'bolt-' + commandIndices.slice(0, i+1).map(index => process.argv[index]).join('-'); - - const binaryPath = which(binaryName, { nothrow: true }); - - // Reconstruct the args list without the commands in `binaryName` - const argv = []; - for (let i = 2; i < argvIndex; i++) { - const arg = process.argv[i]; - if (arg.startsWith('-')) { - argv.push(arg); - } - } - for (let i = argvIndex+1; i < process.argv.length; i++) { - argv.push(process.argv[i]); - } - - // Only execute and return if the command was actually found. Otherwise, try - // the other possible commands or execute the default program if this was the - // last iteration. - if (binaryPath) { - const exitCode = spawnSync(binaryPath, argv, { stdio: 'inherit' }).status; - process.exit(exitCode || 0); - } - -} - -const program = new Command(); - -program - .name('bolt') - .description('The official Bolt language compiler') - .version('0.0.1') - .option('-C, --work-dir', 'Act as if run from this directory', '.'); - -program.command('build', { isDefault: true }) - .description('Build a set of Bolt sources') - .argument('', 'Path to the Bolt program to compile') - .option('-C, --work-dir', 'Act as if run from this directory', '.') - .option('--no-typecheck', 'Skip type-checking') - .option('--no-emit', 'Do not output compiled files') - .option('-t, --target ', 'What to compile to', 'c') - .action((fileName, opts) => { - - const cwd = opts.workDir; - const filePath = path.resolve(cwd, fileName); - const shouldTypecheck = opts.typecheck; - const shouldEmit = opts.emit; - - let targetType: TargetType; - switch (opts.target) { - case 'bolt': - targetType = TargetType.Bolt; - break; - case 'js': - targetType = TargetType.JS; - break; - case 'c': - targetType = TargetType.C; - break; - default: - console.error(`Invalid target '${opts.target}' provided.`); - process.exit(1); - } - - const program = new Program([ filePath ]); - if (program.diagnostics.hasError) { - process.exit(1); - } - - if (shouldTypecheck) { - program.check(); - if (program.diagnostics.hasError) { - process.exit(1); - } - } - - if (shouldEmit) { - - const passes = new PassManager(); - passes.add(TypeclassDictPassing); - - let suffix; - switch (targetType) { - case TargetType.Bolt: - suffix = '.gen.bolt'; - break; - case TargetType.C: - suffix = '.c'; - passes.add(BoltToC); - break; - case TargetType.JS: - suffix = '.js' - passes.add(BoltToJS); - break; - } - - for (const sourceFile of program.getSourceFiles()) { - const code = passes.apply(sourceFile); - const targetFilePath = stripExtension(sourceFile.getFile().getFullPath()) + suffix; - const file = fs.createWriteStream(targetFilePath, 'utf-8'); - code.emit(file); - } - - if (program.diagnostics.hasError) { - process.exit(1); - } - - } - - }); - -program.command('verify', { hidden: true }) - .description('Run verification tests') - .argument('', 'File with verification source') - .action((fileName, _opts) => { - - const diagnostics = new DiagnosticStore(); - const realPath = path.resolve(fileName); - const text = fs.readFileSync(realPath, 'utf-8'); - const file = new TextFile(fileName, text); - - const sourceFile = parseSourceFile(file, diagnostics); - if (!sourceFile) { - process.exit(1); - } - - const analyser = new Analyser(); - analyser.addSourceFile(sourceFile); - const checker = new Checker(analyser, diagnostics); - checker.check(sourceFile); - - const realDiagnostics = new ConsoleDiagnostics(); - - let annotationTotalCount = 0; - let annotationErrorCount = 0; - let diagnosticTotalCount = diagnostics.size; - let diagnosticErrorCount = 0; - - const visit = (node: Syntax) => { - if (isExpression(node)) { - for (const annotation of node.annotations) { - if (annotation.kind === SyntaxKind.TypeAnnotation) { - const actual = checker.getTypeOfNode(node); - const expected = checker.getTypeOfNode(annotation.typeExpr); - if (!typesEqual(actual, expected)) { - realDiagnostics.add(new TypeMismatchDiagnostic(actual, expected, [ node ], [])); - annotationErrorCount++; - } - annotationTotalCount++; - } - } - } - visitEachChild(node, visit); - } - visit(sourceFile); - - const uncaughtDiagnostics = new Set(diagnostics); - - // TODO check comments that did not match any diagnostic - for (const [line, comment] of file.comments) { - if (comment[0].kind === SyntaxKind.At && comment[1].kind === SyntaxKind.Identifier && comment[1].text === 'expect_diagnostic' && comment[2].kind === SyntaxKind.StringLiteral) { - for (const diagnostic of uncaughtDiagnostics) { - if (diagnostic.position && diagnostic.position.line === line+1 && DiagnosticKind[diagnostic.kind] === comment[2].contents) { - uncaughtDiagnostics.delete(diagnostic); - } - } - } - } - - for (const diagnostic of uncaughtDiagnostics) { - realDiagnostics.add(diagnostic); - } - - console.log(`${annotationTotalCount} type annotation(s) verified, ${annotationErrorCount} error(s).`); - console.log(`${diagnosticTotalCount} diagnostic(s) generated, ${uncaughtDiagnostics.size} unexpected.`); - if (realDiagnostics.hasError) { - process.exit(1); - } - }); - -program.parse(); - diff --git a/bootstrap/js/compiler/src/c.ts b/bootstrap/js/compiler/src/c.ts deleted file mode 100644 index 07a44cf6d..000000000 --- a/bootstrap/js/compiler/src/c.ts +++ /dev/null @@ -1,387 +0,0 @@ - -import type stream from "stream" -import { IndentWriter } from "./util"; - -export const enum CNodeKind { - - // Types - BuiltinType, - - // Statements - ExprStmt, - RetStmt, - - // Expressions - CallExpr, - RefExpr, - ConstExpr, - - // Declarations - TypeDecl, - VarDecl, - FuncDecl, - - // Directives - IncDir, - - // Other nodes - Program, - -} - -export const enum CBuiltinTypeKind { - Char, - Short, - Int, - Long, - LongLong, - UnsignedChar, - UnsignedShort, - UnsignedInt, - UnsignedLong, - UnsignedLongLong, -} - -abstract class CNodeBase { - - public abstract readonly kind: CNodeKind; - - public emit(file: stream.Writable): void { - const emitter = new CEmitter(file); - emitter.emit(this as any); - } - -} - -export class CBuiltinType extends CNodeBase { - - public readonly kind = CNodeKind.BuiltinType; - - public constructor( - public typeKind: CBuiltinTypeKind, - ) { - super(); - } - -} - -export type CType - = CBuiltinType - -export class CRefExpr extends CNodeBase { - - public readonly kind = CNodeKind.RefExpr; - - public constructor( - public name: string - ) { - super(); - } - -} - -export class CCallExpr extends CNodeBase { - - public readonly kind = CNodeKind.CallExpr; - - public constructor( - public operator: CExpr, - public args: CExpr[], - ) { - super(); - } - -} - -export class CConstExpr extends CNodeBase { - - public readonly kind = CNodeKind.ConstExpr; - - public constructor( - public value: bigint | string | boolean, - ) { - super(); - } - -} - -export type CExpr - = CRefExpr - | CCallExpr - | CConstExpr - ; - -export class CRetStmt extends CNodeBase { - - public readonly kind = CNodeKind.RetStmt; - - public constructor( - public value: CExpr | null, - ) { - super(); - } - -} - -export class CExprStmt extends CNodeBase { - - public readonly kind = CNodeKind.ExprStmt; - - public constructor( - public expr: CExpr, - ) { - super(); - } - -} - -export type CStmt - = CExprStmt - | CRetStmt; - -export class CTypeDecl extends CNodeBase { - - public readonly kind = CNodeKind.TypeDecl; - - public constructor( - public name: string, - public type: CType, - ) { - super(); - } - -} - -export class CFuncDecl extends CNodeBase { - - public readonly kind = CNodeKind.FuncDecl; - - public constructor( - public returnType: CType, - public name: string, - public params: Array<[CType, string]>, - public body: CStmt[] | null, - ) { - super(); - } - -} - -export class CVarDecl extends CNodeBase { - - public readonly kind = CNodeKind.VarDecl; - - public constructor( - public isExtern: boolean, - public type: CType, - public name: string, - ) { - super(); - } - -} - -export type CDecl - = CTypeDecl - | CVarDecl - | CFuncDecl - -export class CIncDir extends CNodeBase { - - public readonly kind = CNodeKind.IncDir; - - public constructor( - public filePath: string, - public isSystem = false, - ) { - super(); - } - -} - -export type CDir - = CIncDir; - -export class CProgram extends CNodeBase { - - public readonly kind = CNodeKind.Program; - - public constructor( - public elements: (CDecl | CDir)[], - ) { - super(); - } - -} - -export type CNode - = CDecl - | CDir - | CStmt - | CExpr - | CType - | CProgram - -export class CEmitter { - - private writer: IndentWriter; - - public constructor( - public stream: stream.Writable, - ) { - this.writer = new IndentWriter(stream); - } - - public emit(node: CNode): void { - - switch (node.kind) { - - case CNodeKind.Program: - { - for (const element of node.elements) { - this.emit(element); - } - break; - } - - case CNodeKind.IncDir: - { - this.writer.write('#include '); - this.writer.write(node.isSystem ? '<' : '"'); - this.writer.write(node.filePath); - this.writer.write(node.isSystem ? '>' : '"'); - this.writer.write('\n\n'); - break; - } - - case CNodeKind.BuiltinType: - { - switch (node.typeKind) { - case CBuiltinTypeKind.Char: - this.writer.write('char'); - break; - case CBuiltinTypeKind.Short: - this.writer.write('short'); - break; - case CBuiltinTypeKind.Int: - this.writer.write('int'); - break; - case CBuiltinTypeKind.Long: - this.writer.write('long'); - break; - case CBuiltinTypeKind.LongLong: - this.writer.write('long long'); - break; - case CBuiltinTypeKind.UnsignedChar: - this.writer.write('unsigned char'); - break; - case CBuiltinTypeKind.UnsignedShort: - this.writer.write('unsigned short'); - break; - case CBuiltinTypeKind.UnsignedInt: - this.writer.write('unsigned int'); - break; - case CBuiltinTypeKind.UnsignedLong: - this.writer.write('unsigned long'); - break; - case CBuiltinTypeKind.UnsignedLongLong: - this.writer.write('unsigned long long'); - break; - } - break; - } - - case CNodeKind.FuncDecl: - { - this.emit(node.returnType); - this.writer.write(' ' + node.name + '('); - let count = 0; - for (const [type, name] of node.params) { - this.emit(type); - this.writer.write(' ' + name); - if (count++ > 0) { - this.writer.write(', '); - } - } - this.writer.write(') {\n'); - this.writer.indent(); - if (node.body !== null) { - for (const element of node.body) { - this.emit(element); - } - } - this.writer.dedent(); - this.writer.write('}\n\n'); - break; - } - - case CNodeKind.ExprStmt: - this.emit(node.expr); - this.writer.write(';\n'); - break; - - case CNodeKind.RetStmt: - { - this.writer.write('return'); - if (node.value !== null) { - this.writer.write(' '); - this.emit(node.value); - } - this.writer.write(';\n'); - break; - } - - case CNodeKind.RefExpr: - this.writer.write(node.name); - break; - - case CNodeKind.CallExpr: - { - this.emit(node.operator); - this.writer.write('('); - let count = 0; - for (const arg of node.args) { - this.emit(arg); - if (count++ > 0) { - this.writer.write(', '); - } - } - this.writer.write(')'); - break; - } - - case CNodeKind.ConstExpr: - { - if (typeof(node.value) === 'string') { - this.writer.write('"'); - for (const ch of node.value) { - switch (ch) { - case '\b': this.writer.write('\\b'); break; - case '\f': this.writer.write('\\f'); break; - case '\n': this.writer.write('\\n'); break; - case '\r': this.writer.write('\\r'); break; - case '\t': this.writer.write('\\t'); break; - case '\v': this.writer.write('\\v'); break; - case '\0': this.writer.write('\\0'); break; - case '\'': this.writer.write('\\\''); break; - case '"': this.writer.write('\\"'); break; - default: this.writer.write(ch); break; - } - } - this.writer.write('"'); - } else if (typeof(node.value) === 'bigint') { - this.writer.write(node.value.toString()); - } else { - throw new Error(`Unexpected type of value in CConstExpr`); - } - break; - } - - default: - throw new Error(`Unexpected ${node.constructor.name}`); - - } - - } - -} diff --git a/bootstrap/js/compiler/src/checker.ts b/bootstrap/js/compiler/src/checker.ts deleted file mode 100644 index 174d38c3e..000000000 --- a/bootstrap/js/compiler/src/checker.ts +++ /dev/null @@ -1,2478 +0,0 @@ - -import { - ClassDeclaration, - Expression, - ExprOperator, - Identifier, - IdentifierAlt, - InstanceDeclaration, - LetDeclaration, - Pattern, - ReferenceExpression, - ReferenceTypeExpression, - SourceFile, - StructPattern, - Syntax, - SyntaxKind, - TypeExpression, -} from "./cst"; -import { Symkind } from "./scope" -import { - describeType, - BindingNotFoundDiagnostic, - Diagnostics, - KindMismatchDiagnostic, - ModuleNotFoundDiagnostic, - TypeclassNotFoundDiagnostic, - FieldNotFoundDiagnostic, - TypeMismatchDiagnostic, -} from "./diagnostics"; -import { assert, assertNever, isEmpty, MultiMap, toStringTag, InspectFn, implementationLimitation } from "./util"; -import { Analyser } from "./analysis"; -import { InspectOptions } from "util"; -import { TypeKind, TApp, TArrow, TCon, TField, TNil, TPresent, TRegularVar, TVSet, TVSub, Type, TypeBase, TAbsent, TRigidVar, TVar, buildTupleTypeWithLoc, buildTupleType, labelTag } from "./types"; -import { CEmpty, CEqual, CMany, Constraint, ConstraintKind, ConstraintSet } from "./constraints"; - -// class IsIn { - -// public constructor( -// public className: string, -// public type: Type, -// ) { - -// } - -// public substitute(sub: TVSub): Pred { -// return new IsIn(this.className, this.type.substitute(sub)); -// } - -// } - -// type Pred = IsIn; - -export const enum KindType { - Type, - Arrow, - Var, -} - -class KVSub { - - private mapping = new Map(); - - public set(kv: KVar, kind: Kind): void { - this.mapping.set(kv.id, kind); - } - - public get(kv: KVar): Kind | undefined { - return this.mapping.get(kv.id); - } - - public has(kv: KVar): boolean { - return this.mapping.has(kv.id); - } - - public values(): Iterable { - return this.mapping.values(); - } - -} - -abstract class KindBase { - - public abstract readonly type: KindType; - - public abstract substitute(sub: KVSub): Kind; - -} - -class KVar extends KindBase { - - public readonly type = KindType.Var; - - public constructor( - public id: number, - ) { - super(); - } - - public substitute(sub: KVSub): Kind { - const other = sub.get(this); - return other === undefined - ? this : other.substitute(sub); - } - - public hasFailed(): boolean { - return true; - } - -} - -class KType extends KindBase { - - public readonly type = KindType.Type; - - public substitute(_sub: KVSub): Kind { - return this; - } - -} - -class KArrow extends KindBase { - - public readonly type = KindType.Arrow; - - public constructor( - public left: Kind, - public right: Kind, - ) { - super(); - } - - public substitute(sub: KVSub): Kind { - return new KArrow( - this.left.substitute(sub), - this.right.substitute(sub), - ); - } - -} - -// TODO actually use these -const kindOfTypes = new KType(); -//const kindOfTypes = new KCon('*'); -//const kindOfRows = new KCon('r'); -//const kindOfConstraints = new KCon(); - -export type Kind - = KType - | KArrow - | KVar - -abstract class SchemeBase { -} - -class Forall extends SchemeBase { - - public constructor( - public typeVars: TVSet, - public constraint: Constraint, - public type: Type, - ) { - super(); - } - - public *freeTypeVars(): Iterable { - for (const tv of this.constraint.freeTypeVars()) { - if (!this.typeVars.has(tv)) { - yield tv; - } - } - for (const tv of this.type.getTypeVars()) { - if (!this.typeVars.has(tv)) { - yield tv; - } - } - } - - protected [toStringTag](_depth: number, options: InspectOptions, inspect: InspectFn): string { - let out = 'forall'; - if (this.typeVars.size > 0) { - out += ' ' + [...this.typeVars].map(tv => inspect(tv, options)).join(' '); - } - out += '. ' + inspect(this.type, options); - return out; - } - - public static mono(type: Type): Forall { - return new Forall(new TVSet, new CEmpty, type); - } - - public static fromArrays(typeVars: TRegularVar[], constraints: Constraint[], type: Type): Forall { - return new Forall(new TVSet(typeVars), new CMany(constraints), type); - } - -} - -export type Scheme - = Forall - -type NodeWithReference - = Identifier - | IdentifierAlt - | ExprOperator - | ReferenceExpression - | ReferenceTypeExpression - -function validateScheme(scheme: Scheme): void { - const isMonoVar = scheme.type.kind === TypeKind.RegularVar && scheme.typeVars.size === 0; - if (!isMonoVar) { - const tvs = new TVSet(scheme.type.getTypeVars()) - for (const tv of tvs) { - if (!scheme.typeVars.has(tv)) { - throw new Error(`Type variable ${describeType(tv)} is free because does not appear in the scheme's type variable list`); - } - } - for (const tv of scheme.typeVars) { - if (!tvs.has(tv)) { - throw new Error(`Polymorphic type variable ${describeType(tv)} does not occur anywhere in scheme's type ${describeType(scheme.type)}`); - } - } - } -} - -class TypeEnv { - - private mapping = new MultiMap(); - - public constructor(public parent: TypeEnv | null = null) { - - } - - public add(name: string, scheme: Scheme, kind: Symkind): void { - this.mapping.add(name, [kind, scheme]); - } - - public get(name: string, expectedKind: Symkind): Scheme | null { - for (const [kind, scheme] of this.mapping.get(name)) { - if (kind & expectedKind) { - return scheme; - } - } - return null; - } - - public hasTypeVar(seek: TVar): boolean { - for (const [_name, [_kind, scheme]] of this.mapping) { - for (const tv of scheme.freeTypeVars()) { - if (tv.id === seek.id) { - return true; - } - } - } - return false; - } - -} - -class KindEnv { - - private mapping = new Map(); - - public constructor(public parent: KindEnv | null = null) { - - } - - public get(name: string): Kind | null { - return this.mapping.get(name) ?? null; - } - - public set(name: string, kind: Kind): void { - assert(!this.mapping.has(name)); - this.mapping.set(name, kind); - } - - public lookup(name: string): Kind | null { - let curr: KindEnv | null = this; - do { - const kind = curr.mapping.get(name); - if (kind !== undefined) { - return kind; - } - curr = curr.parent; - } while (curr !== null); - return null; - } - -} - -export type { KindEnv, TypeEnv }; - -function splitReferences(node: NodeWithReference): [IdentifierAlt[], Identifier | IdentifierAlt | ExprOperator] { - let modulePath: IdentifierAlt[]; - let name: Identifier | IdentifierAlt | ExprOperator; - if (node.kind === SyntaxKind.ReferenceExpression || node.kind === SyntaxKind.ReferenceTypeExpression) { - modulePath = node.modulePath.map(([name, _dot]) => name); - name = node.name; - } else { - modulePath = []; - name = node; - } - return [modulePath, name] -} - -class PolyContext { - - public constructor( - public typeVars = new TVSet(), - public constraints: ConstraintSet = [], - ) { - - } - -} - -export interface TCInfo { - inferredType?: Type; - inferredKind?: Kind; - poly?: PolyContext; - kindEnv?: KindEnv; - typeEnv?: TypeEnv; - returnType?: Type | null; -} - -function isSignatureDeclarationLike(node: LetDeclaration): boolean { - return false; // May be foreignKeyword !== null later -} - -function isVariableDeclarationLike(node: LetDeclaration): boolean { - return node.pattern.kind !== SyntaxKind.NamedPattern || !node.body; -} - -function isFunctionDeclarationLike(node: LetDeclaration): boolean { - return node.parent!.kind === SyntaxKind.ClassDeclaration - || (!isSignatureDeclarationLike(node) && !isVariableDeclarationLike(node)); - // return (node.pattern.kind === SyntaxKind.NamedPattern || node.pattern.kind === SyntaxKind.NestedPattern && node.pattern.pattern.kind === SyntaxKind.NamedPattern) - // && (node.params.length > 0 || (node.body !== null && node.body.kind === SyntaxKind.BlockBody)); -} - -function hasTypeVar(typeVars: TVSet, type: Type): boolean { - for (const tv of type.getTypeVars()) { - if (typeVars.has(tv)) { - return true; - } - } - return false; -} - -interface ClassMeta { - decl: ClassDeclaration | null; - instances: Set; -} - -export class Checker { - - private nextTypeVarId = 0; - private nextKindVarId = 0; - private nextConTypeId = 0; - - private stringType = this.createTCon('String'); - private intType = this.createTCon('Int'); - private boolType = this.createTCon('Bool'); - private unitType = buildTupleType([]); - - private classDecls = new Map(); - private globalKindEnv = new KindEnv(); - private globalTypeEnv = new TypeEnv(); - - private typeSolution = new TVSub(); - private kindSolution = new KVSub(); - - private typeEnvStack: TypeEnv[] = []; - private polyContextStack: PolyContext[] = []; - private returnTypeStack: (Type | null)[] = []; - - public constructor( - private analyser: Analyser, - private diagnostics: Diagnostics - ) { - - this.globalKindEnv.set('Int', kindOfTypes); - this.globalKindEnv.set('String', kindOfTypes); - this.globalKindEnv.set('Bool', kindOfTypes); - - const a = new TRegularVar(this.nextTypeVarId++); - const b = new TRegularVar(this.nextTypeVarId++); - - this.globalTypeEnv.add('$', Forall.fromArrays([ a, b ], [], new TArrow(new TArrow(new TArrow(a, b), a), b)), Symkind.Var); - this.globalTypeEnv.add('String', Forall.fromArrays([], [], this.stringType), Symkind.Type); - this.globalTypeEnv.add('Int', Forall.fromArrays([], [], this.intType), Symkind.Type); - this.globalTypeEnv.add('Bool', Forall.fromArrays([], [], this.boolType), Symkind.Type); - this.globalTypeEnv.add('True', Forall.fromArrays([], [], this.boolType), Symkind.Var); - this.globalTypeEnv.add('False', Forall.fromArrays([], [], this.boolType), Symkind.Var); - this.globalTypeEnv.add('+', Forall.fromArrays([], [], TArrow.build([ this.intType, this.intType ], this.intType)), Symkind.Var); - this.globalTypeEnv.add('-', Forall.fromArrays([], [], TArrow.build([ this.intType, this.intType ], this.intType)), Symkind.Var); - this.globalTypeEnv.add('*', Forall.fromArrays([], [], TArrow.build([ this.intType, this.intType ], this.intType)), Symkind.Var); - this.globalTypeEnv.add('/', Forall.fromArrays([], [], TArrow.build([ this.intType, this.intType ], this.intType)), Symkind.Var); - this.globalTypeEnv.add('==', Forall.fromArrays([ a ], [], TArrow.build([ a, a ], this.boolType)), Symkind.Var); - this.globalTypeEnv.add('not', Forall.fromArrays([], [], new TArrow(this.boolType, this.boolType)), Symkind.Var); - - } - - public getIntType(): Type { - return this.intType; - } - - public getStringType(): Type { - return this.stringType; - } - - public getBoolType(): Type { - return this.boolType; - } - - private createTCon(name: string, node: Syntax | null = null): TCon { - return new TCon(this.nextConTypeId++, name, node); - } - - private getInfo(node: Syntax): TCInfo { - return node as unknown as TCInfo; - } - - private getPolyContext(): PolyContext { - return this.polyContextStack[this.polyContextStack.length-1]; - } - - private pushInfo(info: TCInfo): void { - if (info.poly !== undefined) { - this.polyContextStack.push(info.poly); - } - if (info.returnType !== undefined) { - this.returnTypeStack.push(info.returnType); - } - if (info.typeEnv !== undefined) { - this.typeEnvStack.push(info.typeEnv); - } - } - - private popInfo(info: TCInfo): void { - if (info.poly !== undefined) { - this.polyContextStack.pop(); - } - if (info.returnType !== undefined) { - this.returnTypeStack.pop(); - } - if (info.typeEnv !== undefined) { - this.typeEnvStack.pop(); - } - } - - public getReturnType(): Type { - const ty = this.returnTypeStack[this.returnTypeStack.length-1]; - assert(ty !== null); - return ty; - } - - private getTypeEnv(): TypeEnv { - return this.typeEnvStack[this.typeEnvStack.length-1]; - } - - private createTRegularVar(node: Syntax | null = null): TRegularVar { - const typeVar = new TRegularVar(this.nextTypeVarId++, node); - this.getPolyContext().typeVars.add(typeVar); - return typeVar; - } - - private createRigidVar(displayName: string, node: Syntax | null = null): TRigidVar { - const tv = new TRigidVar(this.nextTypeVarId++, displayName, node); - this.getPolyContext().typeVars.add(tv); - return tv; - } - - private addConstraint(constraint: Constraint): void { - - switch (constraint.kind) { - - case ConstraintKind.Empty: - break; - - case ConstraintKind.Many: - for (const element of constraint.elements) { - this.addConstraint(element); - } - break; - - case ConstraintKind.Equal: - { - const global = 0; - - let maxLevelLeft = global; - for (let i = this.polyContextStack.length; i-- > 0;) { - const ctx = this.polyContextStack[i]; - if (hasTypeVar(ctx.typeVars, constraint.left)) { - maxLevelLeft = i; - break; - } - } - - let maxLevelRight = global; - for (let i = this.polyContextStack.length; i-- > 0;) { - const ctx = this.polyContextStack[i]; - if (hasTypeVar(ctx.typeVars, constraint.right)) { - maxLevelRight = i; - break; - } - } - - const upperLevel = Math.max(maxLevelLeft, maxLevelRight); - let lowerLevel = upperLevel; - for (let i = 0; i < this.polyContextStack.length; i++) { - const ctx = this.polyContextStack[i]; - if (hasTypeVar(ctx.typeVars, constraint.left) || hasTypeVar(ctx.typeVars, constraint.right)) { - lowerLevel = i; - break; - } - } - - if (upperLevel == lowerLevel || maxLevelLeft == global || maxLevelRight == global) { - this.solve(constraint); - } else { - this.polyContextStack[upperLevel].constraints.push(constraint); - } - - break; - } - - } - - } - - private generalize(type: Type, constraints: Constraint[], env: TypeEnv): Scheme { - const tvs = new TVSet(); - for (const tv of type.getTypeVars()) { - if (!env.hasTypeVar(tv)) { - tvs.add(tv); - } - } - for (const constraint of constraints) { - for (const tv of constraint.freeTypeVars()) { - if (!env.hasTypeVar(tv)) { - tvs.add(tv); - } - } - } - return new Forall(tvs, new CMany(constraints), type); - } - - private lookupKind(env: KindEnv, node: NodeWithReference, emitDiagnostic = true): Kind | null { - const [modulePath, name] = splitReferences(node); - if (modulePath.length > 0) { - let maxIndex = 0; - let currUp = node.getEnclosingModule(); - outer: for (;;) { - let currDown = currUp; - for (let i = 0; i < modulePath.length; i++) { - const moduleName = modulePath[i]; - const nextDown = currDown.resolveModule(moduleName.text); - if (nextDown === null) { - if (currUp.kind === SyntaxKind.SourceFile) { - if (emitDiagnostic) { - this.diagnostics.add( - new ModuleNotFoundDiagnostic( - modulePath.slice(maxIndex).map(id => id.text), - modulePath[maxIndex], - ) - ); - } - return null; - } - currUp = currUp.getEnclosingModule(); - continue outer; - } - maxIndex = Math.max(maxIndex, i+1); - currDown = nextDown; - } - const currDownInfo = this.getInfo(currDown); - const found = currDownInfo.kindEnv!.get(name.text); - if (found !== null) { - return found; - } - if (emitDiagnostic) { - this.diagnostics.add( - new BindingNotFoundDiagnostic( - modulePath.map(id => id.text), - name.text, - name, - ) - ); - } - return null; - } - } else { - let curr: KindEnv | null = env; - do { - const found = curr.get(name.text); - if (found !== null) { - return found; - } - curr = curr.parent; - } while(curr !== null); - if (emitDiagnostic) { - this.diagnostics.add( - new BindingNotFoundDiagnostic( - [], - name.text, - name, - ) - ); - } - return null; - } - } - - private lookup(node: NodeWithReference, expectedKind: Symkind, enableDiagnostics = true): Scheme | null { - - const [modulePath, name] = splitReferences(node); - - if (modulePath.length > 0) { - - let maxIndex = 0; - let currUp = node.getEnclosingModule(); - - outer: for (;;) { - - let currDown = currUp; - for (let i = 0; i < modulePath.length; i++) { - const moduleName = modulePath[i]; - const nextDown = currDown.resolveModule(moduleName.text); - if (nextDown === null) { - if (currUp.kind === SyntaxKind.SourceFile) { - if (enableDiagnostics) { - this.diagnostics.add( - new ModuleNotFoundDiagnostic( - modulePath.slice(maxIndex).map(id => id.text), - modulePath[maxIndex], - ) - ); - } - return null; - } - currUp = currUp.getEnclosingModule(); - continue outer; - } - maxIndex = Math.max(maxIndex, i+1); - currDown = nextDown; - } - - const currDownInfo = this.getInfo(currDown); - - const found = currDownInfo.typeEnv!.get(name.text, expectedKind); - if (found !== null) { - return found; - } - - if (enableDiagnostics) { - this.diagnostics.add( - new BindingNotFoundDiagnostic( - modulePath.map(id => id.text), - name.text, - name, - ) - ); - } - - return null; - } - - } else { - - for (let i = this.typeEnvStack.length-1; i >= 0; i--) { - const curr = this.typeEnvStack[i]; - const found = curr.get(name.text, expectedKind); - if (found !== null) { - return found; - } - } - - if (enableDiagnostics) { - this.diagnostics.add( - new BindingNotFoundDiagnostic( - [], - name.text, - name, - ) - ); - } - - return null; - - } - - } - - private createSubstitution(scheme: Scheme): TVSub { - const sub = new TVSub(); - const tvs = [...scheme.typeVars] - for (const tv of tvs) { - sub.set(tv, this.createTRegularVar()); - } - return sub; - } - - private simplifyType(type: Type): Type { - type = type.find(); - switch (type.kind) { - case TypeKind.RegularVar: - case TypeKind.RigidVar: - case TypeKind.Nil: - case TypeKind.Absent: - case TypeKind.Con: - return type; - case TypeKind.App: - { - const left = type.left.find(); - const right = type.right.find(); - if (left === type.left && right === type.right) { - return type; - } - return new TApp(left, right, type.node); - } - case TypeKind.Arrow: - { - const paramType = type.paramType.find(); - const returnType = type.returnType.find(); - if (paramType === type.paramType && returnType === type.returnType) { - return type; - } - return new TArrow(paramType, returnType, type.node); - } - case TypeKind.Field: - { - const newType = type.type.find(); - const newRestType = type.restType.find(); - if (newType === type.type && newRestType === type.restType) { - return type; - } - return new TField(type.name, newType, newRestType, type.node); - } - case TypeKind.Present: - { - const newType = type.type.find(); - if (newType === type.type) { - return type; - } - return new TPresent(newType, type.node); - } - } - } - - private instantiate(scheme: Scheme, node: Syntax | null, sub = this.createSubstitution(scheme)): Type { - const transform = (constraint: Constraint): Constraint => { - switch (constraint.kind) { - case ConstraintKind.Many: - const newConstraints: Constraint[] = []; - for (const element of constraint.elements) { - newConstraints.push(transform(element)); - } - return new CMany(newConstraints); - case ConstraintKind.Empty: - return constraint; - case ConstraintKind.Equal: - // constraint.left = this.simplifyType(constraint.left) - // constraint.right = this.simplifyType(constraint.right) - const newConstraint = constraint.substitute(sub); - newConstraint.node = node; - newConstraint.prevInstantiation = constraint; - return newConstraint; - default: - assertNever(constraint); - } - } - this.addConstraint(transform(scheme.constraint)); - return this.simplifyType(scheme.type).substitute(sub); - } - - private addBinding(name: string, scheme: Scheme, kind: Symkind): void { - this.getTypeEnv().add(name, scheme, kind); - } - - private unifyKindMany(first: Kind, rest: Kind[], node: TypeExpression): boolean { - return rest.every(kind => this.unifyKind(kind, first, node)); - } - - private inferKindFromTypeExpression(node: TypeExpression, env: KindEnv): Kind { - - // Store the resluting kind in this variable whenever we didn't encounter - // any errors and wish to proceed with type inference on this node. - let kind: Kind | undefined; - - // Fetch the type checking information for this node because we're going to use it anyways. - const info = this.getInfo(node); - - switch (node.kind) { - - case SyntaxKind.TupleTypeExpression: - { - if (this.unifyKindMany(kindOfTypes, node.elements.map(el => this.inferKindFromTypeExpression(el, env)), node)) { - kind = kindOfTypes; - } - break; - } - - case SyntaxKind.ArrowTypeExpression: - { - if (node.paramTypeExprs.every(param => this.unifyKind(kindOfTypes, this.inferKindFromTypeExpression(param, env), node)) - && this.unifyKind(kindOfTypes, this.inferKindFromTypeExpression(node.returnTypeExpr, env), node)) { - kind = kindOfTypes; - } - break; - } - - case SyntaxKind.ReferenceTypeExpression: - { - const matchedKind = this.lookupKind(env, node); - if (matchedKind !== null) { - kind = matchedKind; - } - break; - } - - case SyntaxKind.ForallTypeExpression: - { - // TODO we currently automatically introduce type variables but maybe we should use the ForallTypeExpression? - kind = this.inferKindFromTypeExpression(node.typeExpr, env); - break; - } - - case SyntaxKind.TypeExpressionWithConstraints: - { - // TODO check if we need to kind node.constraints - kind = this.inferKindFromTypeExpression(node.typeExpr, env); - break; - } - - case SyntaxKind.VarTypeExpression: - { - const matchedKind = this.lookupKind(env, node.name, false); - // If no kind is associated to the type variable with the given name, - // we can assign a fresh kind variable to the type variable. Next time, - // the type variable will remember whatever unified with it in-between. - if (matchedKind === null) { - kind = this.createKindVar(); - env.set(node.name.text, kind); - } else { - kind = matchedKind; - } - break; - } - - case SyntaxKind.AppTypeExpression: - { - kind = this.inferKindFromTypeExpression(node.operator, env); - for (const arg of node.args) { - kind = this.applyKind(kind, this.inferKindFromTypeExpression(arg, env), node); - } - break; - } - - case SyntaxKind.NestedTypeExpression: - case SyntaxKind.InstanceTypeExpression: - { - kind = this.inferKindFromTypeExpression(node.typeExpr, env); - break; - } - - default: - assertNever(node); - - } - - // We store the kind on the node so there is a one-to-one correspondence - // and this way the kind can be refrieved very efficiently. - // Note that at this point `kind` may be undefined. This signals further - // inference logic that this node should be skipped because it already contains errors. - info.inferredKind = kind; - - // Set a filler default for the node in a way that allows other unification - // errors to be caught. - if (kind === undefined) { - kind = this.createKindVar(); - } - - return kind; - } - - private createKindVar(): KVar { - return new KVar(this.nextKindVarId++); - } - - private applyKind(operator: Kind, arg: Kind, node: Syntax): Kind { - switch (operator.type) { - case KindType.Var: - { - const a1 = this.createKindVar(); - const a2 = this.createKindVar(); - const arrow = new KArrow(a1, a2); - this.unifyKind(arrow, operator, node); - this.unifyKind(a1, arg, node); - return a2; - } - case KindType.Arrow: - { - // Unify the argument to the operator's argument kind and return - // whatever the operator returns. - this.unifyKind(operator.left, arg, node); - return operator.right; - } - default: - { - this.diagnostics.add( - new KindMismatchDiagnostic( - operator, - new KArrow( - this.createKindVar(), - this.createKindVar() - ), - node - ) - ); - // Create a filler kind variable that still will be able to catch other errors. - return this.createKindVar(); - } - } - } - - private forwardDeclareKind(node: Syntax, env: KindEnv): void { - switch (node.kind) { - case SyntaxKind.ModuleDeclaration: - { - const info = this.getInfo(node); - const innerEnv = info.kindEnv = new KindEnv(env); - for (const element of node.elements) { - this.forwardDeclareKind(element, innerEnv); - } - break; - } - case SyntaxKind.SourceFile: - { - for (const element of node.elements) { - this.forwardDeclareKind(element, env); - } - break; - } - case SyntaxKind.TypeDeclaration: - { - const innerEnv = new KindEnv(env); - let kind: Kind = kindOfTypes; - for (let i = node.varExps.length-1; i >= 0; i--) { - const varExpr = node.varExps[i]; - const paramKind = this.createKindVar(); - innerEnv.set(varExpr.text, paramKind); - kind = new KArrow(paramKind, kind); - } - env.set(node.name.text, this.inferKindFromTypeExpression(node.typeExpression, innerEnv)); - break; - } - case SyntaxKind.StructDeclaration: - { - env.set(node.name.text, this.createKindVar()); - break; - } - case SyntaxKind.EnumDeclaration: - { - env.set(node.name.text, this.createKindVar()); - if (node.members !== null) { - for (const member of node.members) { - env.set(member.name.text, this.createKindVar()); - } - } - break; - } - } - } - - private inferKind(node: Syntax, env: KindEnv): void { - - switch (node.kind) { - - case SyntaxKind.ModuleDeclaration: - { - const info = this.getInfo(node); - const innerEnv = info.kindEnv!; - for (const element of node.elements) { - this.inferKind(element, innerEnv); - } - break; - } - - case SyntaxKind.ClassDeclaration: - case SyntaxKind.InstanceDeclaration: - { - if (node.constraintClause !== null) { - for (const constraint of node.constraintClause.constraints) { - for (const typeExpr of constraint.types) { - this.unifyKind(this.inferKindFromTypeExpression(typeExpr, env), kindOfTypes, typeExpr); - } - } - } - for (const typeExpr of node.types) { - this.unifyKind(this.inferKindFromTypeExpression(typeExpr, env), kindOfTypes, typeExpr); - } - for (const element of node.elements) { - this.inferKind(element, env); - } - break; - } - - case SyntaxKind.SourceFile: - { - for (const element of node.elements) { - this.inferKind(element, env); - } - break; - } - - case SyntaxKind.StructDeclaration: - { - const declKind = env.lookup(node.name.text)!; - const innerEnv = new KindEnv(env); - let kind: Kind = kindOfTypes; - for (let i = node.varExps.length-1; i >= 0; i--) { - const varExpr = node.varExps[i]; - const paramKind = this.createKindVar(); - innerEnv.set(varExpr.text, paramKind); - kind = new KArrow(paramKind, kind); - } - this.unifyKind(declKind, kind, node); - if (node.fields !== null) { - for (const field of node.fields) { - this.unifyKind(this.inferKindFromTypeExpression(field.typeExpr, innerEnv), kindOfTypes, field.typeExpr); - } - } - break; - } - - case SyntaxKind.EnumDeclaration: - { - const declKind = env.lookup(node.name.text)!; - const innerEnv = new KindEnv(env); - let kind: Kind = kindOfTypes; - // FIXME should I go from right to left or left to right? - for (let i = node.varExps.length-1; i >= 0; i--) { - const varExpr = node.varExps[i]; - const paramKind = this.createKindVar(); - innerEnv.set(varExpr.text, paramKind); - kind = new KArrow(paramKind, kind); - } - this.unifyKind(declKind, kind, node); - if (node.members !== null) { - for (const member of node.members) { - switch (member.kind) { - case SyntaxKind.EnumDeclarationTupleElement: - { - for (const element of member.elements) { - this.unifyKind(this.inferKindFromTypeExpression(element, innerEnv), kindOfTypes, element); - } - break; - } - case SyntaxKind.EnumDeclarationStructElement: - { - for (const field of member.fields) { - this.unifyKind(this.inferKindFromTypeExpression(field.typeExpr, innerEnv), kindOfTypes, field.typeExpr); - } - break; - } - default: - throw new Error(`Unexpected ${member}`); - } - } - } - break; - } - - case SyntaxKind.LetDeclaration: - { - if (node.typeAssert !== null) { - this.unifyKind(this.inferKindFromTypeExpression(node.typeAssert.typeExpression, env), kindOfTypes, node.typeAssert.typeExpression); - } - if (node.body !== null && node.body.kind === SyntaxKind.BlockBody) { - const innerEnv = new KindEnv(env); - for (const element of node.body.elements) { - this.inferKind(element, innerEnv); - } - } - break; - } - - } - - } - - private unifyKind(a: Kind, b: Kind, node: Syntax): boolean { - - const find = (kind: Kind): Kind => { - let curr = kind; - while (curr.type === KindType.Var && this.kindSolution.has(curr)) { - curr = this.kindSolution.get(curr)!; - } - // if (kind.type === KindType.Var && ) { - // this.kindSolution.set(kind.id, curr); - // } - return curr; - } - - const solve = (kind: Kind) => kind.substitute(this.kindSolution); - - a = find(a); - b = find(b); - - if (a.type === KindType.Var) { - this.kindSolution.set(a, b); - return true; - } - - if (b.type === KindType.Var) { - return this.unifyKind(b, a, node); - } - - if (a.type === KindType.Type && b.type === KindType.Type) { - return true; - } - - if (a.type === KindType.Arrow && b.type === KindType.Arrow) { - return this.unifyKind(a.left, b.left, node) - && this.unifyKind(a.right, b.right, node); - } - - this.diagnostics.add(new KindMismatchDiagnostic(solve(a), solve(b), node)); - return false; - } - - private infer(node: Syntax): void { - - switch (node.kind) { - - case SyntaxKind.SourceFile: - case SyntaxKind.ModuleDeclaration: - { - for (const element of node.elements) { - this.infer(element); - } - break; - } - - case SyntaxKind.ClassDeclaration: - { - for (const element of node.elements) { - this.infer(element); - } - break; - } - - case SyntaxKind.InstanceDeclaration: - { - for (const element of node.elements) { - this.infer(element); - } - break; - } - - case SyntaxKind.ExpressionStatement: - { - this.inferExpression(node.expression); - break; - } - - case SyntaxKind.IfStatement: - { - for (const cs of node.cases) { - if (cs.test !== null) { - this.addConstraint( - new CEqual( - this.inferExpression(cs.test), - this.getBoolType(), - cs.test - ) - ); - } - for (const element of cs.elements) { - this.infer(element); - } - } - break; - } - - case SyntaxKind.ReturnStatement: - { - let type; - if (node.expression === null) { - type = this.unitType; - } else { - type = this.inferExpression(node.expression); - } - this.addConstraint( - new CEqual( - this.getReturnType(), - type, - node - ) - ); - break; - } - - case SyntaxKind.LetDeclaration: - { - const info = this.getInfo(node); - - if (isFunctionDeclarationLike(node)) { - - node.activeCycle = true; - node.visited = true; - - this.pushInfo(info); - - const returnType = info.returnType!; - - if (node.body !== null) { - switch (node.body.kind) { - case SyntaxKind.ExprBody: - { - this.addConstraint( - new CEqual( - this.inferExpression(node.body.expression), - returnType, - node.body.expression - ) - ); - break; - } - case SyntaxKind.BlockBody: - { - for (const element of node.body.elements) { - this.infer(element); - } - break; - } - } - } - - this.popInfo(info); - - node.activeCycle = false; - - } else { - - // const constraints = new ConstraintSet; - // this.polyContextStack.push(new PolyContext(parentPoly.typeVars, constraints)); - - let type; - - if (node.typeAssert !== null) { - type = this.inferTypeExpression(node.typeAssert.typeExpression); - } - - if (node.body !== null) { - let bodyType; - switch (node.body.kind) { - case SyntaxKind.ExprBody: - { - bodyType = this.inferExpression(node.body.expression); - break; - } - case SyntaxKind.BlockBody: - { - // TODO - assert(false); - } - } - if (type === undefined) { - type = bodyType; - } else { - this.addConstraint( - new CEqual( - type, - bodyType, - node.body - ) - ); - } - } - - if (type === undefined) { - type = this.createTRegularVar(); - } - - // this.polyContextStack.pop(); - - this.inferBindings(node.pattern, type, undefined, undefined, true); - } - - break; - } - - case SyntaxKind.TypeDeclaration: - case SyntaxKind.EnumDeclaration: - case SyntaxKind.StructDeclaration: - break; - - default: - throw new Error(`Unexpected ${node.constructor.name}`); - - } - - } - - public inferExpression(node: Expression): Type { - - for (const annotation of node.annotations) { - if (annotation.kind === SyntaxKind.TypeAnnotation) { - this.inferTypeExpression(annotation.typeExpr, false, false); - } - } - - // We're going to use this eventually so might as well fetch it now - const info = this.getInfo(node); - - let type: Type; - - switch (node.kind) { - - case SyntaxKind.NestedExpression: - type = this.inferExpression(node.expression); - break; - - case SyntaxKind.MatchExpression: - { - let exprType; - - if (node.expression !== null) { - exprType = this.inferExpression(node.expression); - } else { - exprType = this.createTRegularVar(); - } - - type = this.createTRegularVar(); - - for (const arm of node.arms) { - - const newEnv = new TypeEnv(); - this.typeEnvStack.push(newEnv); - - const armPatternType = this.createTRegularVar(); - - this.inferBindings(arm.pattern, armPatternType); - - this.addConstraint( - new CEqual( - armPatternType, - exprType, - arm.pattern, - ) - ); - - this.addConstraint( - new CEqual( - type, - this.inferExpression(arm.expression), - arm.expression - ) - ); - - this.typeEnvStack.pop(); - } - - if (node.expression === null) { - type = new TArrow(exprType, type); - } - - break; - } - - case SyntaxKind.TupleExpression: - type = buildTupleTypeWithLoc(node.elements.map(el => [el, this.inferExpression(el)]), node); - break; - - case SyntaxKind.ReferenceExpression: - { - const scope = node.getScope(); - const target = scope.lookup(node.name.text); - if (target !== null && target.kind === SyntaxKind.LetDeclaration) { - if (target.activeCycle) { - return this.getInfo(target).inferredType!; - } - if (!target.visited) { - this.infer(target); - } - } - const scheme = this.lookup(node, Symkind.Var); - if (scheme === null) { - //this.diagnostics.add(new BindingNotFoudDiagnostic(node.name.text, node.name)); - type = this.createTRegularVar(); - break; - } - type = this.instantiate(scheme, node); - type.node = node; - break; - } - - case SyntaxKind.MemberExpression: - { - type = this.inferExpression(node.expression); - for (const [_dot, name] of node.path) { - let label; - switch (name.kind) { - case SyntaxKind.Identifier: - label = name.text; - break; - case SyntaxKind.Integer: - label = Number(name.value); - break; - default: - assertNever(name); - } - const newFieldType = this.createTRegularVar(name); - const newRestType = this.createTRegularVar(); - this.addConstraint( - new CEqual( - type, - new TField(label, new TPresent(newFieldType), newRestType, name), - node, - ) - ); - type = newFieldType; - } - break; - } - - case SyntaxKind.CallExpression: - { - const opType = this.inferExpression(node.func); - type = this.createTRegularVar(node); - const paramTypes = []; - for (const arg of node.args) { - paramTypes.push(this.inferExpression(arg)); - } - this.addConstraint( - new CEqual( - opType, - TArrow.build(paramTypes, type), - node - ) - ); - break; - } - - case SyntaxKind.ConstantExpression: - { - switch (node.token.kind) { - case SyntaxKind.StringLiteral: - type = this.getStringType(); - break; - case SyntaxKind.Integer: - type = this.getIntType(); - break; - } - type = type.shallowClone(); - type.node = node; - break; - } - - case SyntaxKind.StructExpression: - { - const fields = new Map(); - const restType = new TNil(node); - for (const member of node.members) { - switch (member.kind) { - case SyntaxKind.StructExpressionField: - { - fields.set(member.name.text, this.inferExpression(member.expression)); - break; - } - case SyntaxKind.PunnedStructExpressionField: - { - const scheme = this.lookup(member.name, Symkind.Var); - let fieldType; - if (scheme === null) { - // this.diagnostics.add(new BindingNotFoudDiagnostic(member.name.text, member.name)); - fieldType = this.createTRegularVar(); - } else { - fieldType = this.instantiate(scheme, member); - } - fields.set(member.name.text, fieldType); - break; - } - default: - throw new Error(`Unexpected ${member}`); - } - } - type = TField.build(fields, restType); - break; - } - - case SyntaxKind.InfixExpression: - { - const scheme = this.lookup(node.operator, Symkind.Var); - if (scheme === null) { - // this.diagnostics.add(new BindingNotFoudDiagnostic(node.operator.text, node.operator)); - return this.createTRegularVar(); - } - const opType = this.instantiate(scheme, node.operator); - const leftType = this.inferExpression(node.left); - const rightType = this.inferExpression(node.right); - type = this.createTRegularVar(); - this.addConstraint( - new CEqual( - new TArrow(leftType, new TArrow(rightType, type)), - opType, - node, - ), - ); - break; - } - - default: - throw new Error(`Unexpected ${node.constructor.name}`); - - } - - info.inferredType = type; - - return type; - - } - - public inferTypeExpression(node: TypeExpression, introduceTypeVars = false, checkKind = true): Type { - - let type; - - const info = this.getInfo(node); - - if (checkKind && info.inferredKind === undefined) { - - type = this.createTRegularVar(); - - } else { - - switch (node.kind) { - - case SyntaxKind.ReferenceTypeExpression: - { - const scheme = this.lookup(node, Symkind.Type); - if (scheme === null) { - // this.diagnostics.add(new BindingNotFoudDiagnostic(node.name.text, node.name)); - type = this.createTRegularVar(); - break; - } - type = this.instantiate(scheme, node.name); - // It is not guaranteed that `type` is copied during instantiation, - // so the following check ensures that we really are holding a copy - // that we can mutate. - if (type === scheme.type) { - type = type.shallowClone(); - } - // Mutate the type - type.node = node; - break; - } - - case SyntaxKind.TupleTypeExpression: - { - type = buildTupleTypeWithLoc(node.elements.map(el => [el, this.inferTypeExpression(el, introduceTypeVars)]), node); - break; - } - - case SyntaxKind.InstanceTypeExpression: - case SyntaxKind.NestedTypeExpression: - type = this.inferTypeExpression(node.typeExpr, introduceTypeVars); - break; - - case SyntaxKind.VarTypeExpression: - { - const scheme = this.lookup(node.name, Symkind.Type, !introduceTypeVars); - if (scheme === null) { - if (!introduceTypeVars) { - this.diagnostics.add(new BindingNotFoundDiagnostic([], node.name.text, node.name)); - } - type = this.createRigidVar(node.name.text, node); - // TODO if !introduceTypeVars: re-emit a 'var not found' whenever the same var is encountered - this.addBinding(node.name.text, Forall.mono(type), Symkind.Type); - } else { - assert(isEmpty(scheme.typeVars)); - assert(scheme.constraint.kind === ConstraintKind.Empty); - type = scheme.type; - } - break; - } - - case SyntaxKind.AppTypeExpression: - { - type = TApp.build( - this.inferTypeExpression(node.operator, introduceTypeVars), - node.args.map(arg => this.inferTypeExpression(arg, introduceTypeVars)), - ); - break; - } - - case SyntaxKind.TypeExpressionWithConstraints: - { - for (const constraint of node.constraints) { - implementationLimitation(constraint.types.length === 1); - this.addConstraint( - new CClass( - constraint.name.text, - this.inferTypeExpression(constraint.types[0]), - constraint.name - ) - ); - } - return this.inferTypeExpression(node.typeExpr, introduceTypeVars); - } - - case SyntaxKind.ForallTypeExpression: - { - const env = this.getTypeEnv(); - const poly = this.getPolyContext(); - // FIXME this is an ugly hack that doesn't even work. Either disallow Forall in this method or create a new TForall - for (const varExpr of node.varTypeExps) { - const tv = this.createTRegularVar(); - env.add(varExpr.name.text, Forall.mono(tv), Symkind.Type); - poly.typeVars.add(tv); - } - return this.inferTypeExpression(node.typeExpr, introduceTypeVars); - } - - case SyntaxKind.ArrowTypeExpression: - { - const paramTypes = []; - for (const paramTypeExpr of node.paramTypeExprs) { - paramTypes.push(this.inferTypeExpression(paramTypeExpr, introduceTypeVars)); - } - const returnType = this.inferTypeExpression(node.returnTypeExpr, introduceTypeVars); - type = TArrow.build(paramTypes, returnType, node); - break; - } - - default: - assertNever(node); - - } - - } - - info.inferredType = type; - - return type; - - } - - public inferBindings(pattern: Pattern, type: Type, typeVars = new TVSet, constraints: Constraint[] = [], generalize = false): void { - - switch (pattern.kind) { - - case SyntaxKind.NamedPattern: - { - let scheme; - const env = this.getTypeEnv(); - if (generalize) { - scheme = this.generalize(type, constraints, env); - } else { - scheme = new Forall(typeVars, new CMany(constraints), type); - } - this.addBinding(pattern.name.text, scheme, Symkind.Var); - break; - } - - case SyntaxKind.NestedPattern: - this.inferBindings(pattern.pattern, type, typeVars, constraints, generalize); - break; - - case SyntaxKind.NamedTuplePattern: - { - const scheme = this.lookup(pattern.name, Symkind.Var); - if (scheme === null) { - return; - } - const ctorType = this.instantiate(scheme, pattern); - let elementTypes = []; - for (const element of pattern.elements) { - const tv = this.createTRegularVar(); - this.inferBindings(element, tv, typeVars, constraints, generalize); - elementTypes.push(tv); - } - this.addConstraint(new CEqual(TArrow.build(elementTypes, type), ctorType, pattern)); - break; - } - - case SyntaxKind.LiteralPattern: - { - let literalType; - switch (pattern.token.kind) { - case SyntaxKind.Integer: - literalType = this.getIntType(); - break; - case SyntaxKind.StringLiteral: - literalType = this.getStringType(); - break; - } - literalType = literalType.shallowClone(); - literalType.node = pattern; - this.addConstraint( - new CEqual( - literalType, - type, - pattern, - ) - ); - break; - } - - case SyntaxKind.DisjunctivePattern: - { - this.inferBindings(pattern.left, type, typeVars, constraints, generalize), - this.inferBindings(pattern.right, type, typeVars, constraints, generalize); - break; - } - - case SyntaxKind.StructPattern: - { - const variadicMember = getVariadicMember(pattern); - const fields = new Map(); - let restType: Type; - if (variadicMember === null) { - restType = new TNil(pattern); - } else { - restType = this.createTRegularVar(); - if (variadicMember.pattern !== null) { - this.inferBindings(variadicMember.pattern, restType, typeVars, constraints, generalize); - } - } - for (const member of pattern.members) { - switch (member.kind) { - case SyntaxKind.StructPatternField: - { - const fieldType = this.createTRegularVar(); - this.inferBindings(member.pattern, fieldType, typeVars, constraints, generalize); - fields.set(member.name.text, fieldType); - break; - } - case SyntaxKind.PunnedStructPatternField: - { - const fieldType = this.createTRegularVar(); - this.addBinding(member.name.text, Forall.mono(fieldType), Symkind.Var); - fields.set(member.name.text, fieldType); - break; - } - case SyntaxKind.VariadicStructPatternElement: - break; - default: - assertNever(member); - } - } - this.addConstraint( - new CEqual( - type, - TField.build(fields, restType), - pattern, - ) - ); - break; - } - - default: - throw new Error(`Unexpected ${pattern.constructor.name}`); - - } - - } - - private getClassMeta(name: string): ClassMeta { - let meta = this.classDecls.get(name); - if (meta === undefined) { - meta = { - decl: null, - instances: new Set(), - }; - this.classDecls.set(name, meta); - } - return meta; - } - - private initialize(node: Syntax): void { - - switch (node.kind) { - - case SyntaxKind.SourceFile: - { - const info = this.getInfo(node); - const poly = info.poly = new PolyContext(); - const returnType = info.returnType = null; - const env = info.typeEnv = new TypeEnv(); - - this.polyContextStack.push(poly); - this.typeEnvStack.push(env); - this.returnTypeStack.push(returnType); - - for (const element of node.elements) { - this.initialize(element); - } - - this.polyContextStack.pop(); - this.typeEnvStack.pop(); - this.returnTypeStack.pop(); - - break; - } - - case SyntaxKind.ModuleDeclaration: - { - const info = this.getInfo(node); - info.typeEnv = new TypeEnv(); - for (const element of node.elements) { - this.initialize(element); - } - break; - } - - case SyntaxKind.ClassDeclaration: - { - const meta = this.getClassMeta(node.name.text); - if (meta.decl !== undefined) { - // TODO class declaration already exists diagnostic - } - meta.decl = node; - const info = this.getInfo(node); - const env = info.typeEnv = new TypeEnv(); - for (const tv of node.types) { - assert(tv.kind === SyntaxKind.VarTypeExpression); - env.add(tv.name.text, Forall.mono(this.createTRegularVar(tv)), Symkind.Type); - } - for (const element of node.elements) { - this.initialize(element); - } - break; - } - - case SyntaxKind.InstanceDeclaration: - { - const meta = this.getClassMeta(node.name.text); - meta.instances.add(node); - - if (meta.decl === null) { - this.diagnostics.add(new TypeclassNotFoundDiagnostic(node.name.text, node.name)); - } - - const info = this.getInfo(node); - info.typeEnv = new TypeEnv(); - for (const element of node.elements) { - this.initialize(element); - } - - break; - } - - case SyntaxKind.LetDeclaration: - { - const info = this.getInfo(node); - info.typeEnv = new TypeEnv(); - // The rest of the info properties are set in Checker.check() - if (node.body !== null && node.body.kind === SyntaxKind.BlockBody) { - for (const element of node.body.elements) { - this.initialize(element); - } - } - break; - } - - case SyntaxKind.IfStatement: - case SyntaxKind.ExpressionStatement: - case SyntaxKind.ReturnStatement: - break; - - case SyntaxKind.EnumDeclaration: - { - const info = this.getInfo(node); - const env = info.typeEnv = new TypeEnv();; - const poly = info.poly = new PolyContext(); - const parentEnv = this.getTypeEnv(); - - this.typeEnvStack.push(env); - this.polyContextStack.push(poly); - - const typeArgs = []; - for (const name of node.varExps) { - const typeArg = this.createTRegularVar(); - env.add(name.text, Forall.mono(typeArg), Symkind.Type); - typeArgs.push(typeArg); - } - - const type = this.createTCon(node.name.text, node); - const appliedType = TApp.build(type, typeArgs); - parentEnv.add(node.name.text, new Forall(poly.typeVars, new CMany(poly.constraints), type), Symkind.Type); - - let elementTypes: Type[] = []; - - if (node.members !== null) { - - for (const member of node.members) { - - let ctorType, elementType; - - switch (member.kind) { - - case SyntaxKind.EnumDeclarationTupleElement: - { - const args: Array<[Syntax, Type]> = member.elements.map(el => [el, this.inferTypeExpression(el, false)]); - elementType = buildTupleTypeWithLoc(args, member); - ctorType = TArrow.build(args.map(a => a[1]), appliedType, member); - break; - } - - case SyntaxKind.EnumDeclarationStructElement: - { - const restType = new TNil(member); - const fields = new Map(); - for (const field of member.fields) { - fields.set(field.name.text, this.inferTypeExpression(field.typeExpr, false)); - } - elementType = TField.build(fields, restType); - ctorType = new TArrow(elementType, appliedType, member); - break; - } - - default: - throw new Error(`Unexpected ${member}`); - - } - - parentEnv.add(member.name.text, new Forall(poly.typeVars, new CMany(poly.constraints), ctorType), Symkind.Var); - elementTypes.push(elementType); - } - - } - - this.polyContextStack.pop(); - this.typeEnvStack.pop(); - - break; - } - - case SyntaxKind.TypeDeclaration: - { - const info = this.getInfo(node); - const parentEnv = this.getTypeEnv(); - const env = info.typeEnv = new TypeEnv();; - const poly = info.poly = new PolyContext(); - - this.polyContextStack.push(poly); - this.typeEnvStack.push(env); - - const typeArgs = []; - - for (const varExpr of node.varExps) { - const typeVar = this.createTRegularVar(); - typeArgs.push(typeVar); - env.add(varExpr.text, Forall.mono(typeVar), Symkind.Type); - } - - const type = this.inferTypeExpression(node.typeExpression); - - this.polyContextStack.pop(); - this.typeEnvStack.pop(); - - const scheme = new Forall(poly.typeVars, new CMany(poly.constraints), TApp.build(type, typeArgs)); - - parentEnv.add(node.name.text, scheme, Symkind.Type); - - break; - } - - case SyntaxKind.StructDeclaration: - { - const info = this.getInfo(node); - const parentEnv = this.getTypeEnv(); - const env = info.typeEnv = new TypeEnv(); - const poly = info.poly = new PolyContext(); - - this.polyContextStack.push(poly); - this.typeEnvStack.push(env); - - const typeArgs = []; - for (const varExpr of node.varExps) { - const typeArg = this.createTRegularVar(); - env.add(varExpr.text, Forall.mono(typeArg), Symkind.Type); - typeArgs.push(typeArg); - } - - // const tagType = TApp.build( - // this.createTCon(node.name.text, node.name), - // typeArgs, - // node.name - // ); - const tagType = this.createTCon(node.name.text, node.name); - const fields = new Map(); - const restType = new TNil(node); - - fields.set(labelTag, tagType); - - if (node.fields !== null) { - for (const field of node.fields) { - fields.set(field.name.text, this.inferTypeExpression(field.typeExpr)); - } - } - - const recordType = TField.build(fields, restType); - - this.polyContextStack.pop(); - this.typeEnvStack.pop(); - - parentEnv.add(node.name.text, new Forall(poly.typeVars, new CMany(poly.constraints), recordType), Symkind.Type); - // parentEnv.add(node.name.text, new Forall(poly.typeVars, new CMany(poly.constraints), new TArrow(recordType, type)), Symkind.Var); - - break; - } - - default: - throw new Error(`Unexpected ${node.constructor.name}`); - - } - - } - - public check(sourceFile: SourceFile): void { - - // Kind inference - const kindEnv = new KindEnv(this.globalKindEnv); - this.forwardDeclareKind(sourceFile, kindEnv); - this.inferKind(sourceFile, kindEnv); - - // Type inference - - this.typeEnvStack.push(this.globalTypeEnv); - - this.initialize(sourceFile); - - const sourceFileInfo = this.getInfo(sourceFile); - this.pushInfo(sourceFileInfo); - - const sccs = [...this.analyser.getSortedDeclarations()]; - - for (const nodes of sccs) { - - const poly = new PolyContext(); - - this.polyContextStack.push(poly); - - for (const node of nodes) { - - if (!isFunctionDeclarationLike(node)) { - continue; - } - - const info = this.getInfo(node); - info.poly = poly; - const returnType = info.returnType = this.createTRegularVar(); - - this.typeEnvStack.push(info.typeEnv!); - this.returnTypeStack.push(info.returnType!); - - const paramTypes = node.params.map(param => { - const paramType = this.createTRegularVar(); - switch (param.kind) { - case SyntaxKind.PlainParam: - this.inferBindings(param.pattern, paramType) - break; - case SyntaxKind.InstanceParam: - this.addBinding(param.name.text, Forall.mono(paramType), Symkind.Var); - break; - default: - assertNever(param); - } - return paramType; - }); - - let type = TArrow.build(paramTypes, returnType, node); - - if (node.typeAssert !== null) { - this.addConstraint( - new CEqual( - this.inferTypeExpression(node.typeAssert.typeExpression, true), - type, - node - ) - ); - } - - info.inferredType = type; - - // if (node.parent!.kind === SyntaxKind.InstanceDeclaration) { - // const inst = node.parent!; - // const cls = inst.getScope().lookup(node.parent!.constraint.name.text, Symkind.Typeclass) as ClassDeclaration; - // const other = cls.lookup(node)! as LetDeclaration; - // assert(other.pattern.kind === SyntaxKind.BindPattern); - // console.log(describeType(type)); - // const otherScheme = this.lookup(other.pattern.name, Symkind.Var)!; - // addAll(otherScheme.typeVars, typeVars); - // constraints.push(...otherScheme.constraints); - // this.addConstraint(new CEqual(type, other.inferredType!, node)); - // } - - this.returnTypeStack.pop(); - this.typeEnvStack.pop(); - - if (node.parent!.kind !== SyntaxKind.InstanceDeclaration) { - this.inferBindings(node.pattern, type, poly.typeVars, poly.constraints); - } - - } - - this.polyContextStack.pop(); - - } - - this.infer(sourceFile); - - // Pop off whatever we pushed in during initialization - this.popInfo(sourceFileInfo); - this.typeEnvStack.pop(); - - this.solve(new CMany(sourceFileInfo.poly!.constraints)); - - } - - // private findInstanceContext(sig: Type[], clazz: ClassDeclaration): Iterable { - - // const contexts = []; - // const meta = this.getClassMeta(clazz.name.text); - - // // TODO should be a seperate verification pass somewhere - // // if (meta.decl === null) { - // // this.diagnostics.add(new TypeclassNotFoundDiagnostic(clazz.name.text)); - // // } - - // for (const instance of meta.instances) { - // let i = 0; - // for (const type of instance.types) { - // // TODO might need unification - // const left = sig[i++]; - // const right = this.getTypeOfNode(type); - // if (assignableTo(left, right)) { - // contexts.push(context); - // } - // } - // } - - // return contexts; - // } - - private path: (string | number)[] = []; - private constraint: Constraint | null = null; - private maxTypeErrorCount = 5; - - private unifyField(left: Type, right: Type, enableDiagnostics: boolean): boolean { - - const swap = () => { [right, left] = [left, right]; } - - if (left.kind === TypeKind.Absent && right.kind === TypeKind.Absent) { - return true; - } - - if (right.kind === TypeKind.Absent) { - swap(); - } - - if (left.kind === TypeKind.Absent) { - assert(right.kind === TypeKind.Present); - const fieldName = this.path[this.path.length-1]; - if (enableDiagnostics) { - this.diagnostics.add( - new FieldNotFoundDiagnostic(fieldName, left.node, right.type.node, this.constraint!.firstNode) - ); - } - return false; - } - - assert(left.kind === TypeKind.Present && right.kind === TypeKind.Present); - return this.unify(left.type, right.type, enableDiagnostics); - } - - private unify(left: Type, right: Type, enableDiagnostics: boolean): boolean { - - //console.log(`unify ${describeType(left)} @ ${left.node && left.node.constructor && left.node.constructor.name} ~ ${describeType(right)} @ ${right.node && right.node.constructor && right.node.constructor.name}`); - //console.log(`unify ${describeType(left)} ~ ${describeType(right)}`); - - left = this.simplifyType(left); - right = this.simplifyType(right); - - const swap = () => { [right, left] = [left, right]; } - - if (left.kind === TypeKind.RigidVar && right.kind === TypeKind.RigidVar) { - if (left.id === right.id) { - return true; - } - } - - if (left.kind !== TypeKind.RegularVar && right.kind === TypeKind.RegularVar) { - swap(); - } - - if (left.kind === TypeKind.RegularVar) { - - // Perform an occurs check, verifying whether left occurs - // somewhere inside the structure of right. If so, unification - // makes no sense. - if (right.hasTypeVar(left)) { - // TODO print a diagnostic - return false; - } - - // We are ready to join the types, so the first thing we do is - // propagating the type classes that 'left' requires to 'right'. - // If 'right' is another type variable, we're lucky. We just copy - // the missing type classes from 'left' to 'right'. Otherwise, - //const propagateClasses = (classes: Iterable, type: Type) => { - // if (isTVar(type)) { - // for (const constraint of classes) { - // type.context.add(constraint); - // } - // } else if (isSignature(type)) { - // const sig = getSignature(type); - // for (const constraint of classes) { - // propagateClassTCon(constraint, sig); - // } - // } else { - // assert(false); - // //this.diagnostics.add(new ); - // } - //} - - //const propagateClassTCon = (clazz: ClassDeclaration, sig: Type[]) => { - // const s = this.findInstanceContext(sig, clazz); - // let i = 1; - // for (const classes of s) { - // propagateClasses(classes, sig[i++]); - // } - //} - - //if (left.context.size > 0) { - // propagateClasses(left.context, right); - //} - - // We are all clear; set the actual type of left to right. - left.set(right); - - // This is a very specific adjustment that is critical to the - // well-functioning of the infer/unify algorithm. When addConstraint() is - // called, it may decide to solve the constraint immediately during - // inference. If this happens, a type variable might get assigned a concrete - // type such as Int. We therefore never want the variable to be polymorphic - // and be instantiated with a fresh variable, as that would allow Bool to - // collide with Int. - // - // Should it get assigned another unification variable, that's OK too - // because then that variable is what matters and it will become the new - // (possibly polymorphic) variable. - if (this.polyContextStack.length > 0) { - this.polyContextStack[this.polyContextStack.length-1].typeVars.delete(left); - } - - // These types will be join, and we'd like to track that - // into a special chain. - TypeBase.join(left, right); - - // if (left.node !== null) { - // right.node = left.node; - // } - - return true; - } - - if (left.kind === TypeKind.Arrow && right.kind === TypeKind.Arrow) { - let success = true; - if (!this.unify(left.paramType, right.paramType, enableDiagnostics)) { - success = false; - } - if (!this.unify(left.returnType, right.returnType, enableDiagnostics)) { - success = false; - } - if (success) { - TypeBase.join(left, right); - } - return success; - } - - if (left.kind === TypeKind.Con && right.kind === TypeKind.Con) { - if (left.id === right.id) { - TypeBase.join(left, right); - return true; - } - } - - if (left.kind === TypeKind.Nil && right.kind === TypeKind.Nil) { - return true; - } - - if (left.kind === TypeKind.Field && right.kind === TypeKind.Field) { - if (left.name === right.name) { - let success = true; - this.path.push(left.name); - if (!this.unifyField(left.type, right.type, enableDiagnostics)) { - success = false; - } - this.path.pop(); - if (!this.unify(left.restType, right.restType, enableDiagnostics)) { - success = false; - } - return success; - } - let success = true; - const newRestType = new TRegularVar(this.nextTypeVarId++); - if (!this.unify(left.restType, new TField(right.name, right.type, newRestType), enableDiagnostics)) { - success = false; - } - if (!this.unify(right.restType, new TField(left.name, left.type, newRestType), enableDiagnostics)) { - success = false; - } - return success; - } - - if (left.kind === TypeKind.Nil && right.kind === TypeKind.Field) { - swap(); - } - - if (left.kind === TypeKind.Field && right.kind === TypeKind.Nil) { - let success = true; - this.path.push(left.name); - if (!this.unifyField(left.type, new TAbsent(right.node), enableDiagnostics)) { - success = false; - } - this.path.pop(); - if (!this.unify(left.restType, right, enableDiagnostics)) { - success = false; - } - return success - } - - if (left.kind === TypeKind.App && right.kind === TypeKind.App) { - return this.unify(left.left, right.left, enableDiagnostics) - && this.unify(left.right, right.right, enableDiagnostics); - } - - if (enableDiagnostics) { - this.diagnostics.add( - new TypeMismatchDiagnostic( - this.simplifyType(left), - this.simplifyType(right), - [...this.constraint!.getNodes()], - this.path, - ) - ); - } - return false; - } - - // private inHnf(p: Pred): boolean { - // let curr = p.type; - // for (;;) { - // if (isTVar(curr)) { - // return true; - // } - // if (curr.kind === TypeKind.Con) { - // return false; - // } - // if (curr.kind === TypeKind.App) { - // curr = curr.left; - // continue; - // } - // unreachable(); - // } - // } - - // private toHnf(p: Pred): Pred[] { - // if (this.inHnf(p)) { - // return [ p ]; - // } - // const result = this.byInst(p); - // if (result === undefined) { - // // TODO add diagnostic - // throw new Error(`context reduction`); - // } - // result.map(this.toHnf.bind(this)).flatten(); - // } - - public solve(constraint: Constraint): void { - - let queue = [ constraint ]; - - let errorCount = 0; - - while (queue.length > 0) { - - const constraint = queue.shift()!; - - switch (constraint.kind) { - - case ConstraintKind.Empty: - break; - - case ConstraintKind.Many: - { - for (const element of constraint.elements) { - queue.push(element); - } - break; - } - - case ConstraintKind.Equal: - { - this.constraint = constraint; - if (!this.unify(constraint.left, constraint.right, true)) { - errorCount++; - if (errorCount === this.maxTypeErrorCount) { - return; - } - } - break; - } - - case ConstraintKind.Class: - // TODO - break; - - default: - assertNever(constraint);; - - } - - } - - } - - private lookupClass(name: string): ClassMeta | null { - return this.classDecls.get(name) ?? null; - } - - public getTypeOfNode(node: Syntax): Type { - const info = this.getInfo(node); - assert(info.inferredType !== undefined); - return this.simplifyType(info.inferredType); - } - - // private *findInstanceContext(type: TCon, clazz: ClassDeclaration): Iterable { - // for (const instance of clazz.getInstances()) { - // assert(instance.types.length === 1); - // const instTy0 = instance.types[0]; - // if ((instTy0.kind === SyntaxKind.AppTypeExpression - // && instTy0.operator.kind === SyntaxKind.ReferenceTypeExpression - // && instTy0.operator.name.text === type.displayName) - // || (instTy0.kind === SyntaxKind.ReferenceTypeExpression - // && instTy0.name.text === type.displayName)) { - // if (instance.constraintClause === null) { - // return; - // } - // for (const argType of type.argTypes) { - // const classes = []; - // for (const constraint of instance.constraintClause.constraints) { - // assert(constraint.types.length === 1); - // const classDecl = this.lookupClass(constraint.name.text); - // if (classDecl === null) { - // this.diagnostics.add(new TypeclassNotFoundDiagnostic(constraint.name)); - // } else { - // classes.push(classDecl); - // } - // } - // yield classes; - // } - // } - // } - // } - -} - -function getVariadicMember(node: StructPattern) {1713 - for (const member of node.members) { - if (member.kind === SyntaxKind.VariadicStructPatternElement) { - return member; - } - } - return null; -} diff --git a/bootstrap/js/compiler/src/constraints.ts b/bootstrap/js/compiler/src/constraints.ts deleted file mode 100644 index 865aae0e9..000000000 --- a/bootstrap/js/compiler/src/constraints.ts +++ /dev/null @@ -1,171 +0,0 @@ - -import { InspectOptions } from "util"; -import { Syntax } from "./cst" -import { TVSub, TVar, Type } from "./types"; -import { first, InspectFn, last, toStringTag } from "./util"; - -export const enum ConstraintKind { - Equal, - // Class, - Many, - Empty, -} - -abstract class ConstraintBase { - - public constructor( - public node: Syntax | null = null - ) { - - } - - public prevInstantiation: Constraint | null = null; - - public *getNodes(): Iterable { - let curr: Constraint | null = this as any; - while (curr !== null) { - if (curr.node !== null) { - yield curr.node; - } - curr = curr.prevInstantiation; - } - } - - public get lastNode(): Syntax | null { - return last(this.getNodes()[Symbol.iterator]()) ?? null; - } - - public get firstNode(): Syntax | null { - return first(this.getNodes()[Symbol.iterator]()) ?? null; - } - - public abstract freeTypeVars(): Iterable; - - public abstract substitute(sub: TVSub): Constraint; - -} - -export class CEqual extends ConstraintBase { - - public readonly kind = ConstraintKind.Equal; - - public constructor( - public left: Type, - public right: Type, - public node: Syntax | null, - ) { - super(); - } - - public substitute(sub: TVSub): CEqual { - return new CEqual( - this.left.substitute(sub), - this.right.substitute(sub), - this.node, - ); - } - - public *freeTypeVars(): Iterable { - yield* this.left.getTypeVars(); - yield* this.right.getTypeVars(); - } - - public [toStringTag](_currentDepth: number, options: InspectOptions, inspect: InspectFn): string { - return inspect(this.left, options) + ' ~ ' + inspect(this.right, options); - } - -} - -export class CMany extends ConstraintBase { - - public readonly kind = ConstraintKind.Many; - - public constructor( - public elements: Constraint[] - ) { - super(); - } - - public substitute(sub: TVSub): CMany { - const newElements = []; - for (const element of this.elements) { - newElements.push(element.substitute(sub)); - } - return new CMany(newElements); - } - - public *freeTypeVars(): Iterable { - for (const element of this.elements) { - yield* element.freeTypeVars(); - } - } - - public [toStringTag](_depth: number, opts: InspectOptions, inspect: InspectFn): string { - if (this.elements.length === 0) { - return '[]'; - } - let out = '[\n'; - out += this.elements.map(constraint => ' ' + inspect(constraint, opts)).join('\n'); - out += '\n]'; - return out; - } - -} - -// export class CClass extends ConstraintBase { - -// public readonly kind = ConstraintKind.Class; - -// public constructor( -// public className: string, -// public type: Type, -// public node: Syntax, -// ) { -// super(); -// } - -// public substitute(sub: TVSub): Constraint { -// return new CClass( -// this.className, -// this.type.substitute(sub), -// this.node, -// ); -// } - -// public *freeTypeVars(): Iterable { -// yield* this.type.getTypeVars(); -// } - -// public [toStringTag](_depth: number, opts: InspectOptions, inspect: InspectFn): string { -// return this.className + ' => ' + inspect(this.type, opts); -// } - -// } - -export class CEmpty extends ConstraintBase { - - public readonly kind = ConstraintKind.Empty; - - public substitute(_sub: TVSub): CEmpty { - return this; - } - - public *freeTypeVars(): Iterable { - - } - - public [toStringTag]() { - return 'ε'; - } - -} - -export type Constraint - = CEqual - // | CClass - | CMany - | CEmpty - -export class ConstraintSet extends Array { - -} diff --git a/bootstrap/js/compiler/src/cst.ts b/bootstrap/js/compiler/src/cst.ts deleted file mode 100644 index ba5851683..000000000 --- a/bootstrap/js/compiler/src/cst.ts +++ /dev/null @@ -1,3459 +0,0 @@ - -import type stream from "stream"; -import path from "path" - -import { assert, implementationLimitation, IndentWriter, JSONObject, JSONValue, nonenumerable, unreachable } from "./util"; -import { isNodeWithScope, Scope } from "./scope" -import type { Kind, Scheme } from "./checker" -import type { Type } from "./types"; -import { Emitter } from "./emitter"; -import { warn } from "console"; - -export type TextSpan = [number, number]; - -export type Value - = bigint - | string - -export class TextPosition { - - public constructor( - public offset: number, - public line: number, - public column: number, - ) { - - } - - public clone(): TextPosition { - return new TextPosition( - this.offset, - this.line, - this.column, - ); - } - - public advance(text: string): void { - for (const ch of text) { - if (ch === '\n') { - this.line++; - this.column = 1; - } else { - this.column++; - } - } - this.offset += text.length; - } - -} - -export class TextRange { - - constructor( - public start: TextPosition, - public end: TextPosition, - ) { - - } - - public clone(): TextRange { - return new TextRange( - this.start.clone(), - this.end.clone(), - ); - } - -} - -export class TextFile { - - public comments = new Map(); - - public constructor( - public origPath: string, - public text: string, - ) { - - } - - public getFullPath(): string { - return path.resolve(this.origPath); - } - -} - -export enum SyntaxKind { - - // Tokens - Identifier, - IdentifierAlt, - CustomOperator, - Assignment, - LParen, - RParen, - LBrace, - RBrace, - LBracket, - RBracket, - RArrow, - RArrowAlt, - VBar, - Dot, - DotDot, - At, - Comma, - Colon, - Equals, - Backslash, - Integer, - StringLiteral, - LetKeyword, - PubKeyword, - MutKeyword, - ModKeyword, - ImportKeyword, - ClassKeyword, - InstanceKeyword, - StructKeyword, - EnumKeyword, - TypeKeyword, - ReturnKeyword, - MatchKeyword, - ForeignKeyword, - IfKeyword, - ElifKeyword, - ElseKeyword, - ForallKeyword, - LineFoldEnd, - BlockEnd, - BlockStart, - EndOfFile, - - // Annotations - TypeAnnotation, - ExpressionAnnotation, - - // Type expressions - ReferenceTypeExpression, - ArrowTypeExpression, - VarTypeExpression, - AppTypeExpression, - NestedTypeExpression, - TupleTypeExpression, - ForallTypeExpression, - InstanceTypeExpression, - TypeExpressionWithConstraints, - - // Patterns - NamedPattern, - TuplePattern, - StructPattern, - NestedPattern, - NamedTuplePattern, - LiteralPattern, - DisjunctivePattern, - - // Struct expression elements - StructExpressionField, - PunnedStructExpressionField, - - // Struct pattern elements - StructPatternField, - PunnedStructPatternField, - VariadicStructPatternElement, - - // Expressions - MatchExpression, - MemberExpression, - CallExpression, - ReferenceExpression, - StructExpression, - TupleExpression, - NestedExpression, - ConstantExpression, - PrefixExpression, - PostfixExpression, - InfixExpression, - FunctionExpression, - - // Statements - ReturnStatement, - ExpressionStatement, - IfStatement, - AssignStatement, - - // If statement elements - IfStatementCase, - - // Declarations - LetDeclaration, - StructDeclaration, - EnumDeclaration, - ImportDeclaration, - TypeDeclaration, - ClassDeclaration, - InstanceDeclaration, - ModuleDeclaration, - - // Let declaration body members - ExprBody, - BlockBody, - - // Structure declaration members - StructDeclarationField, - - // Enum declaration elements - EnumDeclarationStructElement, - EnumDeclarationTupleElement, - - // Parameters - PlainParam, - InstanceParam, - - // Other nodes - WrappedOperator, - MatchArm, - Initializer, - TypeAssert, - SourceFile, - ClassConstraint, - ClassConstraintClause, -} - -export type Syntax - = SourceFile - | ModuleDeclaration - | ClassDeclaration - | InstanceDeclaration - | ClassConstraint - | ClassConstraintClause - | Token - | Param - | Body - | MatchArm - | WrappedOperator - | Initializer - | IfStatementCase - | StructDeclarationField - | EnumDeclarationElement - | TypeAssert - | Annotation - | Declaration - | Statement - | Expression - | TypeExpression - | Pattern - | StructExpressionElement - | StructPatternElement - -function isnonenumerabledProperty(key: string): boolean { - return key === 'kind' || key === 'parent'; -} - -abstract class SyntaxBase { - - @nonenumerable - public abstract readonly kind: SyntaxKind; - - @nonenumerable - public parent: Syntax | null = null; - - public abstract getFirstToken(): Token; - - public abstract getLastToken(): Token; - - public abstract clone(): Syntax; - - public getRange(): TextRange { - return new TextRange( - this.getFirstToken().getStartPosition(), - this.getLastToken().getEndPosition(), - ); - } - - public getSourceFile(): SourceFile { - let curr = this as any; - do { - if (curr.kind === SyntaxKind.SourceFile) { - return curr; - } - curr = curr.parent; - } while (curr != null); - throw new Error(`Could not find a SourceFile in any of the parent nodes of ${this}`); - } - - public getScope(): Scope { - let curr: Syntax | null = this as any; - do { - if (isNodeWithScope(curr!)) { - if (curr.scope === undefined) { - curr.scope = new Scope(curr); - } - return curr.scope; - } - curr = curr!.parent; - } while (curr !== null); - throw new Error(`Could not find a scope for ${this}. Maybe the parent links are not set?`); - } - - public getParentScope(): Scope | null { - return this.parent === null ? null : this.parent.getScope(); - } - - public getEnclosingModule(): ModuleDeclaration | SourceFile { - let curr = this.parent!; - while (curr !== null) { - if (curr.kind === SyntaxKind.SourceFile || curr.kind === SyntaxKind.ModuleDeclaration) { - return curr; - } - curr = curr.parent!; - } - throw new Error(`Unable to find an enclosing module for ${this.constructor.name}. Perhaps the parent-links are not set?`); - } - - public setParents(): void { - - const visit = (value: any) => { - if (value === null) { - return; - } - if (Array.isArray(value)) { - value.forEach(visit); - return; - } - if (value instanceof SyntaxBase) { - value.parent = this as any; - value.setParents(); - return; - } - } - - for (const key of Object.getOwnPropertyNames(this)) { - if (isnonenumerabledProperty(key)) { - continue; - } - visit((this as any)[key]); - } - - } - - public *getTokens(): Iterable { - for (const [_, value] of this.getFields()) { - yield* filter(value); - } - function* filter(value: any): Iterable { - if (isToken(value)) { - yield value; - } else if (Array.isArray(value)) { - for (const element of value) { - yield* filter(element); - } - } else if (isSyntax(value)) { - yield* value.getTokens(); - } - } - } - - public *getFields(): Iterable<[string, any]> { - for (const key of Object.getOwnPropertyNames(this)) { - if (!isnonenumerabledProperty(key)) { - yield [key, (this as any)[key]]; - } - } - } - - public *getChildNodes(): Iterable { - function* visit(value: any): Iterable { - if (value === null) { - return; - } - if (Array.isArray(value)) { - for (const element of value) { - yield* visit(element); - } - } else if (isSyntax(value)) { - yield value; - } - } - for (const [_key, value] of this.getFields()) { - yield* visit(value); - } - } - - public emit(file: stream.Writable): void { - const emitter = new Emitter(new IndentWriter(file)); - emitter.emit(this as any); - } - - public toJSON(): JSONObject { - - const obj: JSONObject = {}; - obj['type'] = this.constructor.name; - for (const [key, value] of this.getFields()) { - if (isnonenumerabledProperty(key)) { - continue; - } - obj[key] = encode(value); - } - return obj; - - function encode(value: any): JSONValue { - if (value === null) { - return null; - } else if (Array.isArray(value)) { - return value.map(encode); - } else if (isSyntax(value)) { - return value.toJSON(); - } else { - return value; - } - } - - } - - public resolveModule(name: string): ModuleDeclaration | null { - const node = this as unknown as Syntax; - assert(node.kind === SyntaxKind.ModuleDeclaration || node.kind === SyntaxKind.SourceFile); - for (const element of node.elements) { - if (element.kind === SyntaxKind.ModuleDeclaration && element.name.text === name) { - return element; - } - } - return null; - } - - public getModulePath(): string[] { - let curr = this.parent; - const modulePath = []; - while (curr !== null) { - if (curr.kind === SyntaxKind.ModuleDeclaration) { - modulePath.unshift(curr.name.text); - } - curr = curr.parent; - } - return modulePath; - } - -} - -export function forEachChild(node: Syntax, callback: (node: Syntax) => void): void { - - for (const key of Object.getOwnPropertyNames(node)) { - if (isnonenumerabledProperty(key)) { - continue; - } - visitField((node as any)[key]); - } - - function visitField(field: any): void { - if (field === null) { - return; - } - if (Array.isArray(field)) { - for (const element of field) { - visitField(element); - } - return; - } - if (field instanceof SyntaxBase) { - callback(field as Syntax); - } - } - -} - -abstract class TokenBase extends SyntaxBase { - - @nonenumerable - private endPos: TextPosition | null = null; - - public constructor( - public startPos: TextPosition | null = null, - ) { - super(); - } - - public getFirstToken(): Token { - return this as Token; - } - - public getLastToken(): Token { - return this as Token; - } - - public getRange(): TextRange { - return new TextRange( - this.getStartPosition(), - this.getEndPosition(), - ); - } - - public getStartPosition(): TextPosition { - assert(this.startPos !== null); - return this.startPos; - } - - public getStartLine(): number { - return this.getStartPosition().line; - } - - public getStartColumn(): number { - return this.getStartPosition().column; - } - - public getEndPosition(): TextPosition { - if (this.endPos === null) { - const endPos = this.getStartPosition().clone(); - endPos.advance(this.text); - return this.endPos = endPos; - } - return this.endPos; - } - - public getEndLine(): number { - return this.getEndPosition().line; - } - - public getEndColumn(): number { - return this.getEndPosition().column; - } - - public abstract readonly text: string; - -} - -abstract class VirtualTokenBase extends TokenBase { - public get text(): string { - return ''; - } -} - -export class EndOfFile extends VirtualTokenBase { - - public readonly kind = SyntaxKind.EndOfFile; - - public clone(): EndOfFile { - return new EndOfFile(this.startPos); - } - -} - -export class BlockEnd extends VirtualTokenBase { - - public readonly kind = SyntaxKind.BlockEnd; - - public clone(): BlockEnd { - return new BlockEnd(this.startPos); - } - -} - -export class BlockStart extends VirtualTokenBase { - - public readonly kind = SyntaxKind.BlockStart; - - public clone(): BlockStart { - return new BlockStart(this.startPos); - } - -} - -export class LineFoldEnd extends VirtualTokenBase { - - public readonly kind = SyntaxKind.LineFoldEnd; - - public clone(): LineFoldEnd { - return new LineFoldEnd(this.startPos); - } - -} - -export class Integer extends TokenBase { - - public readonly kind = SyntaxKind.Integer; - - public constructor( - startPos: TextPosition | null = null, - public value: bigint, - public radix: number, - ) { - super(startPos); - } - - public getValue(): Value { - return this.value; - } - - public clone(): Integer { - return new Integer( - this.startPos, - this.value, - this.radix, - ); - } - - public get text(): string { - switch (this.radix) { - case 16: - return '0x' + this.value.toString(16); - case 10: - return this.value.toString(10) - case 8: - return '0o' + this.value.toString(8) - case 2: - return '0b' + this.value.toString(2); - default: - throw new Error(`Radix ${this.radix} of Integer not recognised.`) - } - } - -} - -export class StringLiteral extends TokenBase { - - public readonly kind = SyntaxKind.StringLiteral; - - public constructor( - startPos: TextPosition | null = null, - public contents: string, - ) { - super(startPos); - } - - public getValue(): Value { - return this.contents; - } - - public clone(): StringLiteral { - return new StringLiteral( - this.startPos, - this.contents, - ); - } - - public get text(): string { - let out = '"'; - for (const ch of this.contents) { - const code = ch.charCodeAt(0); - if (code >= 32 && code <= 127) { - out += ch; - } else if (code <= 127) { - out += '\\x' + code.toString(16).padStart(2, '0'); - } else { - out += '\\u' + code.toString(16).padStart(4, '0'); - } - } - out += '"'; - return out; - } - -} - -export class IdentifierAlt extends TokenBase { - - public readonly kind = SyntaxKind.IdentifierAlt; - - public constructor( - startPos: TextPosition | null = null, - public text: string, - ) { - super(startPos); - } - - public clone(): IdentifierAlt { - return new IdentifierAlt( - this.startPos, - this.text, - ); - } - -} - -export class Identifier extends TokenBase { - - public readonly kind = SyntaxKind.Identifier; - - public constructor( - startPos: TextPosition | null = null, - public text: string, - ) { - super(startPos); - } - - public clone(): Identifier { - return new Identifier( - this.startPos, - this.text, - ); - } - -} - -export class CustomOperator extends TokenBase { - - public readonly kind = SyntaxKind.CustomOperator; - - public constructor( - startPos: TextPosition | null = null, - public text: string, - ) { - super(startPos); - } - - public clone(): CustomOperator { - return new CustomOperator( - this.startPos, - this.text, - ); - } - -} - -export type ExprOperator - = CustomOperator - | VBar - -export function isExprOperator(node: Syntax): node is ExprOperator { - return node.kind === SyntaxKind.CustomOperator - || node.kind === SyntaxKind.VBar -} - -export class Assignment extends TokenBase { - - public readonly kind = SyntaxKind.Assignment; - - public constructor( - startPos: TextPosition | null = null, - public text: string, - ) { - super(startPos); - } - - public clone(): Assignment { - return new Assignment( - this.startPos, - this.text, - ); - } - -} - -export class LParen extends TokenBase { - - public readonly kind = SyntaxKind.LParen; - - public get text(): string { - return '('; - } - - public clone(): LParen { - return new LParen(this.startPos); - } - -} - -export class RParen extends TokenBase { - - public readonly kind = SyntaxKind.RParen; - - public get text(): string { - return ')'; - } - - public clone(): RParen { - return new RParen(this.startPos); - } - -} - -export class LBrace extends TokenBase { - - public readonly kind = SyntaxKind.LBrace; - - public get text(): string { - return '{'; - } - - public clone(): LBrace { - return new LBrace(this.startPos); - } - -} - -export class RBrace extends TokenBase { - - public readonly kind = SyntaxKind.RBrace; - - public get text(): string { - return '}'; - } - - public clone(): RBrace { - return new RBrace(this.startPos); - } - -} - -export class LBracket extends TokenBase { - - public readonly kind = SyntaxKind.LBracket; - - public get text(): string { - return '['; - } - - public clone(): LBracket { - return new LBracket(this.startPos); - } - -} - -export class RBracket extends TokenBase { - - public readonly kind = SyntaxKind.RBracket; - - public get text(): string { - return ']'; - } - - public clone(): RBracket { - return new RBracket(this.startPos); - } - -} - -export class Dot extends TokenBase { - - public readonly kind = SyntaxKind.Dot; - - public get text(): string { - return '.'; - } - - public clone(): Dot { - return new Dot(this.startPos); - } - -} - -export class At extends TokenBase { - - public readonly kind = SyntaxKind.At; - - public get text(): string { - return '@'; - } - - public clone(): At { - return new At(this.startPos); - } - -} - -export class Comma extends TokenBase { - - public readonly kind = SyntaxKind.Comma; - - public get text(): string { - return ','; - } - - public clone(): Comma { - return new Comma(this.startPos); - } - -} - -export class DotDot extends TokenBase { - - public readonly kind = SyntaxKind.DotDot; - - public get text(): string { - return '..'; - } - - public clone(): DotDot { - return new DotDot(this.startPos); - } - -} - -export class Colon extends TokenBase { - - public readonly kind = SyntaxKind.Colon; - - public get text(): string { - return ':'; - } - - public clone(): Colon { - return new Colon(this.startPos); - } - -} - -export class Equals extends TokenBase { - - public readonly kind = SyntaxKind.Equals; - - public get text(): string { - return '='; - } - - public clone(): Equals { - return new Equals(this.startPos); - } - -} - -export class Backslash extends TokenBase { - - public readonly kind = SyntaxKind.Equals; - - public get text(): string { - return '\\'; - } - - public clone(): Backslash { - return new Backslash(this.startPos); - } - -} - -export class IfKeyword extends TokenBase { - - public readonly kind = SyntaxKind.IfKeyword; - - public get text(): string { - return 'if'; - } - - public clone(): IfKeyword { - return new IfKeyword(this.startPos); - } - -} - -export class ElseKeyword extends TokenBase { - - public readonly kind = SyntaxKind.ElseKeyword; - - public get text(): string { - return 'else'; - } - - public clone(): ElseKeyword { - return new ElseKeyword(this.startPos); - } - -} - -export class ElifKeyword extends TokenBase { - - public readonly kind = SyntaxKind.ElifKeyword; - - public get text(): string { - return 'elif'; - } - - public clone(): ElifKeyword { - return new ElifKeyword(this.startPos); - } - -} - -export class StructKeyword extends TokenBase { - - public readonly kind = SyntaxKind.StructKeyword; - - public get text(): string { - return 'struct'; - } - - public clone(): StructKeyword { - return new StructKeyword(this.startPos); - } - -} - -export class EnumKeyword extends TokenBase { - - public readonly kind = SyntaxKind.EnumKeyword; - - public get text(): string { - return 'enum'; - } - - public clone(): EnumKeyword { - return new EnumKeyword(this.startPos); - } - -} - -export class ReturnKeyword extends TokenBase { - - public readonly kind = SyntaxKind.ReturnKeyword; - - public get text(): string { - return 'return'; - } - - public clone(): ReturnKeyword { - return new ReturnKeyword(this.startPos); - } - -} - -export class MatchKeyword extends TokenBase { - - public readonly kind = SyntaxKind.MatchKeyword; - - public get text(): string { - return 'match'; - } - - public clone(): MatchKeyword { - return new MatchKeyword(this.startPos); - } - -} - -export class ForeignKeyword extends TokenBase { - - public readonly kind = SyntaxKind.ForeignKeyword; - - public get text(): string { - return 'foreign'; - } - - public clone(): ForeignKeyword { - return new ForeignKeyword(this.startPos); - } - -} - -export class ModKeyword extends TokenBase { - - public readonly kind = SyntaxKind.ModKeyword; - - public get text(): string { - return 'mod'; - } - - public clone(): ModKeyword { - return new ModKeyword(this.startPos); - } - -} - -export class MutKeyword extends TokenBase { - - public readonly kind = SyntaxKind.MutKeyword; - - public get text(): string { - return 'mut'; - } - - public clone(): MutKeyword { - return new MutKeyword(this.startPos); - } - -} - -export class ImportKeyword extends TokenBase { - - public readonly kind = SyntaxKind.ImportKeyword; - - public get text(): string { - return 'import' - } - - public clone(): ImportKeyword { - return new ImportKeyword(this.startPos); - } - -} - -export class ClassKeyword extends TokenBase { - - public readonly kind = SyntaxKind.ClassKeyword; - - public get text(): string { - return 'trait'; - } - - public clone(): ClassKeyword { - return new ClassKeyword(this.startPos); - } - -} - -export class InstanceKeyword extends TokenBase { - - public readonly kind = SyntaxKind.InstanceKeyword; - - public get text(): string { - return 'impl'; - } - - public clone(): InstanceKeyword { - return new InstanceKeyword(this.startPos); - } - -} - - -export class TypeKeyword extends TokenBase { - - public readonly kind = SyntaxKind.TypeKeyword; - - public get text(): string { - return 'type'; - } - - public clone(): TypeKeyword { - return new TypeKeyword(this.startPos); - } - -} - -export class PubKeyword extends TokenBase { - - public readonly kind = SyntaxKind.PubKeyword; - - public get text(): string { - return 'pub'; - } - - public clone(): PubKeyword { - return new PubKeyword(); - } - -} - -export class LetKeyword extends TokenBase { - - public readonly kind = SyntaxKind.LetKeyword; - - public get text(): string { - return 'let'; - } - - public clone(): LetKeyword { - return new LetKeyword(); - } - -} - -export class RArrow extends TokenBase { - - public readonly kind = SyntaxKind.RArrow; - - public get text(): string { - return '->'; - } - - public clone(): RArrow { - return new RArrow(this.startPos); - } - -} - -export class RArrowAlt extends TokenBase { - - public readonly kind = SyntaxKind.RArrowAlt; - - public get text(): string { - return '=>'; - } - - public clone(): RArrowAlt { - return new RArrowAlt(this.startPos); - } - -} - -export class VBar extends TokenBase { - - public readonly kind = SyntaxKind.VBar; - - public get text(): string { - return '|'; - } - - public clone(): VBar { - return new VBar(this.startPos); - } - -} - -export class ForallKeyword extends TokenBase { - - public readonly kind = SyntaxKind.ForallKeyword; - - public get text(): string { - return 'forall'; - } - - public clone(): ForallKeyword { - return new ForallKeyword(this.startPos); - } - -} - -export type Token - = RArrow - | RArrowAlt - | VBar - | LParen - | RParen - | LBrace - | RBrace - | LBracket - | RBracket - | Identifier - | IdentifierAlt - | CustomOperator - | Integer - | StringLiteral - | At - | Comma - | Dot - | DotDot - | Colon - | Equals - | Backslash - | LetKeyword - | PubKeyword - | MutKeyword - | ModKeyword - | ImportKeyword - | ClassKeyword - | InstanceKeyword - | TypeKeyword - | StructKeyword - | ReturnKeyword - | MatchKeyword - | EndOfFile - | BlockStart - | BlockEnd - | LineFoldEnd - | Assignment - | IfKeyword - | ElseKeyword - | ElifKeyword - | EnumKeyword - | ForeignKeyword - | ForallKeyword - -export type TokenKind - = Token['kind'] - -export class ForallTypeExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.ForallTypeExpression; - - public constructor( - public forallKeyword: ForallKeyword, - public varTypeExps: VarTypeExpression[], - public dot: Dot, - public typeExpr: TypeExpression, - ) { - super(); - } - - public clone(): ForallTypeExpression { - return new ForallTypeExpression( - this.forallKeyword.clone(), - this.varTypeExps.map(e => e.clone()), - this.dot.clone(), - this.typeExpr.clone(), - ); - } - - public getFirstToken(): Token { - return this.forallKeyword; - } - - public getLastToken(): Token { - return this.typeExpr.getLastToken(); - } - -} - -export class TypeExpressionWithConstraints extends SyntaxBase { - - public readonly kind = SyntaxKind.TypeExpressionWithConstraints; - - public constructor( - public constraints: ClassConstraint[], - public rarrowAlt: RArrowAlt, - public typeExpr: TypeExpression, - ) { - super(); - } - - public clone(): TypeExpressionWithConstraints { - return new TypeExpressionWithConstraints( - this.constraints.map(c => c.clone()), - this.rarrowAlt.clone(), - this.typeExpr.clone(), - ); - } - - public getFirstToken(): Token { - if (this.constraints.length > 0) { - return this.constraints[0].getFirstToken(); - } - return this.rarrowAlt; - } - - public getLastToken(): Token { - return this.typeExpr.getLastToken(); - } - -} - -export class ArrowTypeExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.ArrowTypeExpression; - - public constructor( - public paramTypeExprs: TypeExpression[], - public returnTypeExpr: TypeExpression - ) { - super(); - } - - public clone(): ArrowTypeExpression { - return new ArrowTypeExpression( - this.paramTypeExprs.map(te => te.clone()), - this.returnTypeExpr.clone(), - ); - } - - public getFirstToken(): Token { - if (this.paramTypeExprs.length > 0) { - return this.paramTypeExprs[0].getFirstToken(); - } - return this.returnTypeExpr.getFirstToken(); - } - - public getLastToken(): Token { - return this.returnTypeExpr.getLastToken(); - } - -} - -export class TupleTypeExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.TupleTypeExpression; - - public constructor( - public lparen: LParen, - public elements: TypeExpression[], - public rparen: RParen, - ) { - super(); - } - - public clone(): TupleTypeExpression { - return new TupleTypeExpression( - this.lparen.clone(), - this.elements.map(element => element.clone()), - this.rparen.clone(), - ); - } - - public getFirstToken(): Token { - return this.lparen; - } - - public getLastToken(): Token { - return this.rparen; - } - -} - -export class ReferenceTypeExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.ReferenceTypeExpression; - - public constructor( - public modulePath: Array<[IdentifierAlt, Dot]>, - public name: IdentifierAlt, - ) { - super(); - } - - public clone(): ReferenceTypeExpression { - return new ReferenceTypeExpression( - this.modulePath.map(([name, dot]) => [name.clone(), dot.clone()]), - this.name.clone(), - ); - } - - public getFirstToken(): Token { - if (this.modulePath.length > 0) { - return this.modulePath[0][0]; - } - return this.name; - } - - public getLastToken(): Token { - return this.name; - } - -} - -export class AppTypeExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.AppTypeExpression; - - public constructor( - public operator: TypeExpression, - public args: TypeExpression[], - ) { - super(); - } - - public clone(): AppTypeExpression { - return new AppTypeExpression( - this.operator.clone(), - this.args.map(arg => arg.clone()), - ); - } - - public getFirstToken(): Token { - return this.operator.getFirstToken(); - } - - public getLastToken(): Token { - if (this.args.length > 0) { - return this.args[this.args.length-1].getLastToken(); - } - return this.operator.getLastToken(); - } - -} - -export class VarTypeExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.VarTypeExpression; - - public constructor( - public name: Identifier - ) { - super(); - } - - public clone(): VarTypeExpression { - return new VarTypeExpression( this.name.clone() ); - } - - public getFirstToken(): Token { - return this.name; - } - - public getLastToken(): Token { - return this.name; - } - -} - -export class NestedTypeExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.NestedTypeExpression; - - public constructor( - public lparen: LParen, - public typeExpr: TypeExpression, - public rparen: RParen, - ) { - super(); - } - - public clone(): NestedTypeExpression { - return new NestedTypeExpression( - this.lparen.clone(), - this.typeExpr.clone(), - this.rparen.clone(), - ); - } - - public getFirstToken(): Token { - return this.lparen; - } - - public getLastToken(): Token { - return this.rparen; - } - -} - -export class InstanceTypeExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.InstanceTypeExpression; - - public constructor( - public lbrace1: LBrace, - public lbrace2: LBrace, - public name: Identifier | null = null, - public colon: Colon | null = null, - public typeExpr: TypeExpression, - public rbrace1: RBrace, - public rbrace2: RBrace, - ) { - super(); - } - - public clone(): InstanceTypeExpression { - return new InstanceTypeExpression( - this.lbrace1, - this.lbrace2, - this.name, - this.colon, - this.typeExpr, - this.rbrace1, - this.rbrace2, - ); - } - - public getFirstToken(): Token { - return this.lbrace1; - } - - public getLastToken(): Token { - return this.rbrace2; - } - -} - -export type TypeExpression - = ReferenceTypeExpression - | ArrowTypeExpression - | VarTypeExpression - | AppTypeExpression - | NestedTypeExpression - | TupleTypeExpression - | ForallTypeExpression - | TypeExpressionWithConstraints - | InstanceTypeExpression - -export class NamedPattern extends SyntaxBase { - - public readonly kind = SyntaxKind.NamedPattern; - - public constructor( - public name: Identifier | CustomOperator, - ) { - super(); - } - - public clone(): NamedPattern { - return new NamedPattern( this.name.clone() ); - } - - public get isHole(): boolean { - return this.name.text == '_'; - } - - public getFirstToken(): Token { - return this.name; - } - - public getLastToken(): Token { - return this.name; - } - -} - -export class TuplePattern extends SyntaxBase { - - public readonly kind = SyntaxKind.TuplePattern; - - public constructor( - public lparen: LParen, - public elements: Pattern[], - public rparen: RParen, - ) { - super(); - } - - public clone(): TuplePattern { - return new TuplePattern( - this.lparen.clone(), - this.elements.map(element => element.clone()), - this.rparen.clone(), - ); - } - - public getFirstToken(): Token { - return this.lparen; - } - - public getLastToken(): Token { - return this.rparen; - } - -} - -export class NamedTuplePattern extends SyntaxBase { - - public readonly kind = SyntaxKind.NamedTuplePattern; - - public constructor( - public name: IdentifierAlt, - public elements: Pattern[], - ) { - super(); - } - - public clone(): NamedTuplePattern { - return new NamedTuplePattern( - this.name.clone(), - this.elements.map(element => element.clone()), - ); - } - - public getFirstToken(): Token { - return this.name; - } - - public getLastToken(): Token { - if (this.elements.length > 0) { - return this.elements[this.elements.length-1].getLastToken(); - } - return this.name; - } - -} - -export class StructPatternField extends SyntaxBase { - - public readonly kind = SyntaxKind.StructPatternField; - - public constructor( - public name: Identifier, - public equals: Equals, - public pattern: Pattern, - ) { - super(); - } - - public clone(): StructPatternField { - return new StructPatternField( - this.name.clone(), - this.equals.clone(), - this.pattern.clone(), - ); - } - - public getFirstToken(): Token { - return this.name; - } - - public getLastToken(): Token { - return this.pattern.getLastToken(); - } - -} - -export class VariadicStructPatternElement extends SyntaxBase { - - public readonly kind = SyntaxKind.VariadicStructPatternElement; - - public constructor( - public dotdot: DotDot, - public pattern: Pattern | null, - ) { - super(); - } - - public clone(): VariadicStructPatternElement { - return new VariadicStructPatternElement( - this.dotdot.clone(), - this.pattern !== null ? this.pattern.clone() : null, - ); - } - - public getFirstToken(): Token { - return this.dotdot; - } - - public getLastToken(): Token { - if (this.pattern !== null) { - return this.pattern.getLastToken(); - } - return this.dotdot; - } - -} - -export class PunnedStructPatternField extends SyntaxBase { - - public readonly kind = SyntaxKind.PunnedStructPatternField; - - public constructor( - public name: Identifier, - ) { - super(); - } - - public clone(): PunnedStructPatternField { - return new PunnedStructPatternField( this.name.clone() ); - } - - public getFirstToken(): Token { - return this.name; - } - - public getLastToken(): Token { - return this.name; - } - -} - -export type StructPatternElement - = VariadicStructPatternElement - | PunnedStructPatternField - | StructPatternField - -export class StructPattern extends SyntaxBase { - - public readonly kind = SyntaxKind.StructPattern; - - public constructor( - public lbrace: LBrace, - public members: StructPatternElement[], - public rbrace: RBrace, - ) { - super(); - } - - public clone(): StructPattern { - return new StructPattern( - this.lbrace.clone(), - this.members.map(member => member.clone()), - this.rbrace.clone(), - ); - } - - public getFirstToken(): Token { - return this.lbrace; - } - - public getLastToken(): Token { - return this.rbrace; - } - -} - -export class NestedPattern extends SyntaxBase { - - public readonly kind = SyntaxKind.NestedPattern; - - public constructor( - public lparen: LParen, - public pattern: Pattern, - public rparen: RParen, - ) { - super(); - } - - public clone(): NestedPattern { - return new NestedPattern( - this.lparen.clone(), - this.pattern.clone(), - this.rparen.clone(), - ); - } - - public getFirstToken(): Token { - return this.lparen; - } - - public getLastToken(): Token { - return this.rparen; - } - -} - -export class DisjunctivePattern extends SyntaxBase { - - public readonly kind = SyntaxKind.DisjunctivePattern; - - public constructor( - public left: Pattern, - public operator: VBar, - public right: Pattern, - ) { - super(); - } - - public clone(): DisjunctivePattern { - return new DisjunctivePattern( - this.left.clone(), - this.operator.clone(), - this.right.clone(), - ); - } - - public getFirstToken(): Token { - return this.left.getFirstToken(); - } - - public getLastToken(): Token { - return this.right.getLastToken(); - } - -} - - -export class LiteralPattern extends SyntaxBase { - - public readonly kind = SyntaxKind.LiteralPattern; - - public constructor( - public token: StringLiteral | Integer - ) { - super(); - } - - public clone(): LiteralPattern { - return new LiteralPattern( this.token.clone() ); - } - - public getFirstToken(): Token { - return this.token; - } - - public getLastToken(): Token { - return this.token; - } - -} - -export type Pattern - = NamedPattern - | NestedPattern - | StructPattern - | NamedTuplePattern - | TuplePattern - | DisjunctivePattern - | LiteralPattern - -export class TypeAnnotation extends SyntaxBase { - - public readonly kind = SyntaxKind.TypeAnnotation; - - public constructor( - public at: At, - public colon: Colon, - public typeExpr: TypeExpression, - ) { - super(); - } - - public clone(): TypeAnnotation { - return new TypeAnnotation( - this.at.clone(), - this.colon.clone(), - this.typeExpr.clone() - ); - } - - public getFirstToken(): Token { - return this.at; - } - - public getLastToken(): Token { - return this.typeExpr.getLastToken(); - } - -} - -export type Annotation - = TypeAnnotation - -export type Annotations = Annotation[]; - -export class TupleExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.TupleExpression; - - public constructor( - public annotations: Annotations, - public lparen: LParen, - public elements: Expression[], - public rparen: RParen, - ) { - super(); - } - - public clone(): TupleExpression { - return new TupleExpression( - this.annotations.map(a => a.clone()), - this.lparen.clone(), - this.elements.map(element => element.clone()), - this.rparen.clone() - ); - } - - public getFirstToken(): Token { - return this.lparen; - } - - public getLastToken(): Token { - return this.rparen; - } - -} - -export class NestedExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.NestedExpression; - - public constructor( - public annotations: Annotations, - public lparen: LParen, - public expression: Expression, - public rparen: RParen, - ) { - super(); - } - - public clone(): NestedExpression { - return new NestedExpression( - this.annotations.map(a => a.clone()), - this.lparen.clone(), - this.expression.clone(), - this.rparen.clone(), - ); - } - - public getFirstToken(): Token { - return this.lparen; - } - - public getLastToken(): Token { - return this.rparen; - } - -} - -export class ConstantExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.ConstantExpression; - - public constructor( - public annotations: Annotations, - public token: Integer | StringLiteral, - ) { - super(); - } - - public clone(): ConstantExpression { - return new ConstantExpression( - this.annotations.map(a => a.clone()), - this.token.clone() - ); - } - - public getFirstToken(): Token { - return this.token; - } - - public getLastToken(): Token { - return this.token; - } - -} - -export class CallExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.CallExpression; - - public constructor( - public annotations: Annotations, - public func: Expression, - public args: Expression[], - ) { - super(); - } - - public clone(): CallExpression { - return new CallExpression( - this.annotations.map(a => a.clone()), - this.func.clone(), - this.args.map(arg => arg.clone()), - ); - } - - public getFirstToken(): Token { - return this.func.getFirstToken(); - } - - public getLastToken(): Token { - if (this.args.length > 0) { - return this.args[this.args.length-1].getLastToken(); - } - return this.func.getLastToken(); - } - -} - -export class StructExpressionField extends SyntaxBase { - - public readonly kind = SyntaxKind.StructExpressionField; - - public constructor( - public name: Identifier, - public equals: Equals, - public expression: Expression, - ) { - super(); - } - - public clone(): StructExpressionField { - return new StructExpressionField( - this.name.clone(), - this.equals.clone(), - this.expression.clone(), - ); - } - - public getFirstToken(): Token { - return this.name; - } - - public getLastToken(): Token { - return this.expression.getLastToken(); - } - -} - -export class PunnedStructExpressionField extends SyntaxBase { - - public readonly kind = SyntaxKind.PunnedStructExpressionField; - - public constructor( - public name: Identifier, - ) { - super(); - } - - public clone(): PunnedStructExpressionField { - return new PunnedStructExpressionField( this.name.clone() ); - } - - public getFirstToken(): Token { - return this.name; - } - - public getLastToken(): Token { - return this.name; - } - -} - -export type StructExpressionElement - = StructExpressionField - | PunnedStructExpressionField; - -export class StructExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.StructExpression; - - public constructor( - public annotations: Annotations, - public lbrace: LBrace, - public members: StructExpressionElement[], - public rbrace: RBrace, - ) { - super(); - } - - public clone(): StructExpression { - return new StructExpression( - this.annotations.map(a => a.clone()), - this.lbrace.clone(), - this.members.map(member => member.clone()), - this.rbrace.clone(), - ); - } - - public getFirstToken(): Token { - return this.lbrace; - } - - public getLastToken(): Token { - return this.rbrace; - } - -} - -export class FunctionExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.FunctionExpression; - - public constructor( - public annotations: Annotations, - public backslash: Backslash, - public params: Param[], - public body: Body, - ) { - super(); - } - - public clone(): FunctionExpression { - return new FunctionExpression( - this.annotations.map(a => a.clone()), - this.backslash.clone(), - this.params.map(param => param.clone()), - this.body.clone(), - ); - } - - public getFirstToken(): Token { - return this.backslash; - } - - public getLastToken(): Token { - return this.body.getLastToken(); - } - -} - -export class MatchArm extends SyntaxBase { - - public readonly kind = SyntaxKind.MatchArm; - - public constructor( - public pattern: Pattern, - public rarrowAlt: RArrowAlt, - public expression: Expression, - ) { - super(); - } - - public clone(): MatchArm { - return new MatchArm( - this.pattern.clone(), - this.rarrowAlt.clone(), - this.expression.clone(), - ); - } - - public getFirstToken(): Token { - return this.pattern.getFirstToken(); - } - - public getLastToken(): Token { - return this.expression.getLastToken(); - } - -} - - -export class MatchExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.MatchExpression; - - public constructor( - public annotations: Annotations, - public matchKeyword: MatchKeyword, - public expression: Expression | null, - public arms: MatchArm[], - ) { - super(); - } - - public clone(): MatchExpression { - return new MatchExpression( - this.annotations.map(a => a.clone()), - this.matchKeyword.clone(), - this.expression !== null ? this.expression.clone() : null, - this.arms.map(arm => arm.clone()), - ); - } - - public getFirstToken(): Token { - if (this.annotations.length > 0) { - return this.annotations[0].getFirstToken(); - } - return this.matchKeyword; - } - - public getLastToken(): Token { - if (this.arms.length > 0) { - return this.arms[this.arms.length-1].getLastToken(); - } - if (this.expression !== null) { - return this.expression.getLastToken(); - } - return this.matchKeyword; - } - -} - -export class ReferenceExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.ReferenceExpression; - - public constructor( - public annotations: Annotations, - public modulePath: Array<[IdentifierAlt, Dot]>, - public name: Identifier | IdentifierAlt, - ) { - super(); - } - - public clone(): ReferenceExpression { - return new ReferenceExpression( - this.annotations.map(a => a.clone()), - this.modulePath.map(([name, dot]) => [name.clone(), dot.clone()]), - this.name.clone(), - ); - } - - public getFirstToken(): Token { - if (this.modulePath.length > 0) { - return this.modulePath[0][0]; - } - return this.name; - } - - public getLastToken(): Token { - return this.name; - } - -} - -export class MemberExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.MemberExpression; - - public constructor( - public annotations: Annotations, - public expression: Expression, - public path: [Dot, Identifier | Integer][], - ) { - super(); - } - - public clone(): MemberExpression { - return new MemberExpression( - this.annotations.map(a => a.clone()), - this.expression.clone(), - this.path.map(([dot, name]) => [dot.clone(), name.clone()]), - ); - } - - public getFirstToken(): Token { - return this.expression.getFirstToken(); - } - - public getLastToken(): Token { - return this.path[this.path.length-1][1]; - } - -} - -export class PrefixExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.PrefixExpression; - - public constructor( - public annotations: Annotations, - public operator: ExprOperator, - public expression: Expression, - ) { - super(); - } - - public clone(): PrefixExpression { - return new PrefixExpression( - this.annotations.map(a => a.clone()), - this.operator.clone(), - this.expression.clone(), - ); - } - - public getFirstToken(): Token { - return this.operator; - } - - public getLastToken(): Token { - return this.expression.getLastToken(); - } - -} - -export class PostfixExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.PostfixExpression; - - public constructor( - public annotations: Annotations, - public expression: Expression, - public operator: ExprOperator, - ) { - super(); - } - - public clone(): PostfixExpression { - return new PostfixExpression( - this.annotations.map(a => a.clone()), - this.expression.clone(), - this.operator.clone(), - ); - } - - public getFirstToken(): Token { - return this.expression.getFirstToken(); - } - - public getLastToken(): Token { - return this.operator; - } - -} - -export class InfixExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.InfixExpression; - - public constructor( - public annotations: Annotations, - public left: Expression, - public operator: ExprOperator, - public right: Expression, - ) { - super(); - } - - public clone(): InfixExpression { - return new InfixExpression( - this.annotations.map(a => a.clone()), - this.left.clone(), - this.operator.clone(), - this.right.clone(), - ); - } - - public getFirstToken(): Token { - return this.left.getFirstToken(); - } - - public getLastToken(): Token { - return this.right.getLastToken(); - } - -} - -export function isExpression(node: Syntax): node is Expression { - switch (node.kind) { - case SyntaxKind.MemberExpression: - case SyntaxKind.CallExpression: - case SyntaxKind.StructExpression: - case SyntaxKind.ReferenceExpression: - case SyntaxKind.ConstantExpression: - case SyntaxKind.TupleExpression: - case SyntaxKind.MatchExpression: - case SyntaxKind.NestedExpression: - case SyntaxKind.PrefixExpression: - case SyntaxKind.InfixExpression: - case SyntaxKind.PostfixExpression: - case SyntaxKind.FunctionExpression: - return true; - default: - return false; - } -} - -export type Expression - = MemberExpression - | CallExpression - | StructExpression - | ReferenceExpression - | ConstantExpression - | TupleExpression - | MatchExpression - | NestedExpression - | PrefixExpression - | InfixExpression - | PostfixExpression - | FunctionExpression - -export class IfStatementCase extends SyntaxBase { - - public readonly kind = SyntaxKind.IfStatementCase; - - public constructor( - public keyword: IfKeyword | ElseKeyword | ElifKeyword, - public test: Expression | null, - public blockStart: BlockStart, - public elements: LetBodyElement[], - ) { - super(); - } - - public clone(): IfStatementCase { - return new IfStatementCase( - this.keyword.clone(), - this.test !== null ? this.test.clone() : null, - this.blockStart.clone(), - this.elements.map(element => element.clone()), - ); - } - - public getFirstToken(): Token { - return this.keyword; - } - - public getLastToken(): Token { - if (this.elements.length > 0) { - return this.elements[this.elements.length-1].getLastToken(); - } - return this.blockStart; - } - -} - -export class IfStatement extends SyntaxBase { - - public readonly kind = SyntaxKind.IfStatement; - - public constructor( - public cases: IfStatementCase[], - ) { - super(); - } - - public clone(): IfStatement { - return new IfStatement( - this.cases.map(caze => caze.clone()), - ); - } - - public getFirstToken(): Token { - return this.cases[0].getFirstToken(); - } - - public getLastToken(): Token { - return this.cases[this.cases.length-1].getLastToken(); - } - -} - -export class ReturnStatement extends SyntaxBase { - - public readonly kind = SyntaxKind.ReturnStatement; - - public constructor( - public returnKeyword: ReturnKeyword, - public expression: Expression | null - ) { - super(); - } - - public clone(): ReturnStatement { - return new ReturnStatement( - this.returnKeyword.clone(), - this.expression !== null ? this.expression.clone() : null, - ); - } - - public getFirstToken(): Token { - return this.returnKeyword; - } - - public getLastToken(): Token { - if (this.expression !== null) { - return this.expression.getLastToken(); - } - return this.returnKeyword; - } - -} - -export class AssignStatement extends SyntaxBase { - - public readonly kind = SyntaxKind.AssignStatement; - - public constructor( - public pattern: Pattern, - public operator: Assignment, - public expression: Expression, - ) { - super(); - } - - public clone(): AssignStatement { - return new AssignStatement( - this.pattern.clone(), - this.operator.clone(), - this.expression.clone() - ); - } - - public getFirstToken(): Token { - return this.pattern.getFirstToken(); - } - - public getLastToken(): Token { - return this.expression.getLastToken(); - } - -} - -export class ExpressionStatement extends SyntaxBase { - - public readonly kind = SyntaxKind.ExpressionStatement; - - public constructor( - public expression: Expression, - ) { - super(); - } - - public clone(): ExpressionStatement { - return new ExpressionStatement( this.expression.clone() ); - } - - public getFirstToken(): Token { - return this.expression.getFirstToken(); - } - - public getLastToken(): Token { - return this.expression.getLastToken(); - } - -} - -export type Statement - = ReturnStatement - | ExpressionStatement - | IfStatement - | AssignStatement - -export class InstanceParam extends SyntaxBase { - - public readonly kind = SyntaxKind.InstanceParam; - - public constructor( - public lbrace1: LBrace, - public lbrace2: LBrace, - public name: Identifier, - public rbrace1: RBrace, - public rbrace2: RBrace, - ) { - super(); - } - - public clone(): InstanceParam { - return new InstanceParam( - this.lbrace1, - this.lbrace2, - this.name, - this.rbrace1, - this.rbrace2, - ); - } - - public getFirstToken(): Token { - return this.lbrace1; - } - - public getLastToken(): Token { - return this.rbrace2; - } - -} - -export class PlainParam extends SyntaxBase { - - public readonly kind = SyntaxKind.PlainParam; - - public constructor( - public pattern: Pattern, - ) { - super(); - } - - public clone(): PlainParam { - return new PlainParam( - this.pattern.clone(), - ); - } - - public getFirstToken(): Token { - return this.pattern.getFirstToken(); - } - - public getLastToken(): Token { - return this.pattern.getLastToken(); - } - -} - -export type Param - = InstanceParam - | PlainParam - -export function isParam(node: Syntax): node is Param { - return node.kind === SyntaxKind.PlainParam - || node.kind === SyntaxKind.InstanceParam; -} - -export class EnumDeclarationStructElement extends SyntaxBase { - - public readonly kind = SyntaxKind.EnumDeclarationStructElement; - - public scheme?: Scheme; - - public constructor( - public name: IdentifierAlt, - public blockStart: BlockStart, - public fields: StructDeclarationField[], - ) { - super(); - } - - public clone(): EnumDeclarationStructElement { - return new EnumDeclarationStructElement( - this.name.clone(), - this.blockStart.clone(), - this.fields.map(field => field.clone()), - ); - } - - public getFirstToken(): Token { - return this.name; - } - - public getLastToken(): Token { - if (this.fields.length > 0) { - return this.fields[this.fields.length-1].getLastToken(); - } - return this.blockStart; - } - -} - -export class EnumDeclarationTupleElement extends SyntaxBase { - - public readonly kind = SyntaxKind.EnumDeclarationTupleElement; - - public constructor( - public name: IdentifierAlt, - public elements: TypeExpression[], - ) { - super(); - } - - public clone(): EnumDeclarationElement { - return new EnumDeclarationTupleElement( - this.name.clone(), - this.elements.map(element => element.clone()), - ); - } - - public getFirstToken(): Token { - return this.name; - } - - public getLastToken(): Token { - if (this.elements.length > 0) { - return this.elements[this.elements.length-1].getLastToken(); - } - return this.name; - } - -} - -export type EnumDeclarationElement - = EnumDeclarationStructElement - | EnumDeclarationTupleElement - -export class EnumDeclaration extends SyntaxBase { - - public readonly kind = SyntaxKind.EnumDeclaration; - - public constructor( - public pubKeyword: PubKeyword | null, - public enumKeyword: EnumKeyword, - public name: IdentifierAlt, - public varExps: Identifier[], - public members: EnumDeclarationElement[] | null, - ) { - super(); - } - - public clone(): EnumDeclaration { - return new EnumDeclaration( - this.pubKeyword !== null ? this.pubKeyword.clone() : null, - this.enumKeyword.clone(), - this.name.clone(), - this.varExps.map(ve => ve.clone()), - this.members !== null ? this.members.map(member => member.clone()) : null, - ); - } - - public getFirstToken(): Token { - if (this.pubKeyword !== null) { - return this.pubKeyword; - } - return this.enumKeyword; - } - - public getLastToken(): Token { - if (this.members !== null && this.members.length > 0) { - return this.members[this.members.length-1].getLastToken(); - } - return this.name; - } - -} - -export class StructDeclarationField extends SyntaxBase { - - public readonly kind = SyntaxKind.StructDeclarationField; - - public constructor( - public name: Identifier, - public colon: Colon, - public typeExpr: TypeExpression, - ) { - super(); - } - - public clone(): StructDeclarationField { - return new StructDeclarationField( - this.name.clone(), - this.colon.clone(), - this.typeExpr.clone(), - ); - } - - public getFirstToken(): Token { - return this.name; - } - - public getLastToken(): Token { - return this.typeExpr.getLastToken(); - } - -} - -export class StructDeclaration extends SyntaxBase { - - public readonly kind = SyntaxKind.StructDeclaration; - - public constructor( - public pubKeyword: PubKeyword | null, - public structKeyword: StructKeyword, - public name: IdentifierAlt, - public varExps: Identifier[], - public fields: StructDeclarationField[] | null, - ) { - super(); - } - - public clone(): StructDeclaration { - return new StructDeclaration( - this.pubKeyword !== null ? this.pubKeyword.clone() : null, - this.structKeyword.clone(), - this.name.clone(), - this.varExps.map(ve => ve.clone()), - this.fields !== null ? this.fields.map(field => field.clone()) : null, - ); - } - - public getFirstToken(): Token { - if (this.pubKeyword !== null) { - return this.pubKeyword; - } - return this.structKeyword; - } - - public getLastToken(): Token { - if (this.fields && this.fields.length > 0) { - return this.fields[this.fields.length-1].getLastToken(); - } - return this.name; - } - -} - -export class TypeAssert extends SyntaxBase { - - public readonly kind = SyntaxKind.TypeAssert; - - public constructor( - public colon: Colon, - public typeExpression: TypeExpression, - ) { - super(); - } - - public clone(): TypeAssert { - return new TypeAssert( - this.colon.clone(), - this.typeExpression.clone(), - ); - } - - public getFirstToken(): Token { - return this.colon; - } - - public getLastToken(): Token { - return this.typeExpression.getLastToken(); - } - -} - -export type Body - = ExprBody - | BlockBody - -export class ExprBody extends SyntaxBase { - - public readonly kind = SyntaxKind.ExprBody; - - public constructor( - public equals: Equals | RArrow, - public expression: Expression, - ) { - super(); - } - - public clone(): ExprBody { - return new ExprBody( - this.equals.clone(), - this.expression.clone(), - ); - } - - public getFirstToken(): Token { - return this.equals; - } - - public getLastToken(): Token { - return this.expression.getLastToken(); - } - -} - -export type LetBodyElement - = LetDeclaration - | Statement - -export class BlockBody extends SyntaxBase { - - public readonly kind = SyntaxKind.BlockBody; - - public constructor( - public blockStart: BlockStart, - public elements: LetBodyElement[], - ) { - super(); - } - - public clone(): BlockBody { - return new BlockBody( - this.blockStart.clone(), - this.elements.map(element => element.clone()), - ); - } - - public getFirstToken(): Token { - return this.blockStart; - } - - public getLastToken(): Token { - if (this.elements.length > 0) { - return this.elements[this.elements.length-1].getLastToken(); - } - return this.blockStart; - } - -} - -export class WrappedOperator extends SyntaxBase { - - public readonly kind = SyntaxKind.WrappedOperator; - - public constructor( - public lparen: LParen, - public operator: CustomOperator, - public rparen: RParen, - ) { - super(); - } - - public clone(): WrappedOperator { - return new WrappedOperator( - this.lparen.clone(), - this.operator.clone(), - this.rparen.clone(), - ); - } - - public getFirstToken(): Token { - return this.lparen; - } - - public getLastToken(): Token { - return this.rparen; - } - -} - -export class TypeDeclaration extends SyntaxBase { - - public readonly kind = SyntaxKind.TypeDeclaration; - - public constructor( - public pubKeyword: PubKeyword | null, - public typeKeyword: TypeKeyword, - public name: IdentifierAlt, - public varExps: Identifier[], - public equals: Equals, - public typeExpression: TypeExpression - ) { - super(); - } - - public clone(): TypeDeclaration { - return new TypeDeclaration( - this.pubKeyword !== null ? this.pubKeyword.clone() : null, - this.typeKeyword.clone(), - this.name.clone(), - this.varExps.map(ve => ve.clone()), - this.equals.clone(), - this.typeExpression.clone(), - ); - } - - public getFirstToken(): Token { - if (this.pubKeyword !== null) { - return this.pubKeyword; - } - return this.typeKeyword; - } - - public getLastToken(): Token { - return this.typeExpression.getLastToken(); - } - -} - -export class LetDeclaration extends SyntaxBase { - - public readonly kind = SyntaxKind.LetDeclaration; - - @nonenumerable - public scope?: Scope; - - @nonenumerable - public activeCycle?: boolean; - @nonenumerable - public visited?: boolean; - - public constructor( - public pubKeyword: PubKeyword | null, - public letKeyword: LetKeyword, - public foreignKeyword: ForeignKeyword | null, - public mutKeyword: MutKeyword | null, - public pattern: Pattern, - public params: Param[], - public typeAssert: TypeAssert | null, - public body: Body | null, - ) { - super(); - } - - public get name(): Identifier | CustomOperator { - switch (this.pattern.kind) { - case SyntaxKind.NamedPattern: - return this.pattern.name; - case SyntaxKind.NestedPattern: - assert(this.pattern.pattern.kind === SyntaxKind.NamedPattern); - return this.pattern.pattern.name; - default: - unreachable(); - } - } - - public clone(): LetDeclaration { - return new LetDeclaration( - this.pubKeyword !== null ? this.pubKeyword.clone() : null, - this.letKeyword.clone(), - this.foreignKeyword !== null ? this.foreignKeyword.clone() : null, - this.mutKeyword !== null ? this.mutKeyword.clone() : null, - this.pattern.clone(), - this.params.map(param => param.clone()), - this.typeAssert !== null ? this.typeAssert.clone() : null, - this.body !== null ? this.body.clone() : null, - ); - } - - public getFirstToken(): Token { - if (this.pubKeyword !== null) { - return this.pubKeyword; - } - return this.letKeyword; - } - - public getLastToken(): Token { - if (this.body !== null) { - return this.body.getLastToken(); - } - if (this.typeAssert !== null) { - return this.typeAssert.getLastToken(); - } - if (this.params.length > 0) { - return this.params[this.params.length-1].getLastToken(); - } - return this.pattern.getLastToken(); - } - -} - -export class ImportDeclaration extends SyntaxBase { - - public readonly kind = SyntaxKind.ImportDeclaration; - - public constructor( - public importKeyword: ImportKeyword, - public importSource: StringLiteral, - ) { - super(); - } - - public clone(): ImportDeclaration { - return new ImportDeclaration( - this.importKeyword.clone(), - this.importSource.clone(), - ); - } - - public getFirstToken(): Token { - return this.importKeyword; - } - - public getLastToken(): Token { - return this.importSource; - } - -} - -export type Declaration - = LetDeclaration - | ImportDeclaration - | StructDeclaration - | EnumDeclaration - | TypeDeclaration - -export class Initializer extends SyntaxBase { - - public readonly kind = SyntaxKind.Initializer; - - public constructor( - public equals: Equals, - public expression: Expression - ) { - super(); - } - - public clone(): Initializer { - return new Initializer( - this.equals.clone(), - this.expression.clone() - ); - } - - public getFirstToken(): Token { - return this.equals; - } - - public getLastToken(): Token { - return this.expression.getLastToken(); - } - -} - -export class ClassConstraint extends SyntaxBase { - - public readonly kind = SyntaxKind.ClassConstraint; - - public constructor( - public name: IdentifierAlt, - public types: TypeExpression[], - ) { - super(); - } - - public clone(): ClassConstraint { - return new ClassConstraint( - this.name.clone(), - this.types.map(ty => ty.clone()), - ); - } - - public getFirstToken(): Token { - return this.name; - } - - public getLastToken(): Token { - return this.types[this.types.length-1].getLastToken(); - } - -} - -export class ClassConstraintClause extends SyntaxBase { - - public readonly kind = SyntaxKind.ClassConstraintClause; - - public constructor( - public constraints: ClassConstraint[], - public rarrowAlt: RArrowAlt, - ) { - super(); - } - - public clone(): ClassConstraintClause { - return new ClassConstraintClause( - this.constraints.map(constraint => constraint.clone()), - this.rarrowAlt.clone(), - ); - } - - public getFirstToken(): Token { - if (this.constraints.length > 0) { - return this.constraints[0].getFirstToken(); - } - return this.rarrowAlt; - } - - public getLastToken(): Token { - return this.rarrowAlt; - } - -} - -export type ClassDeclarationElement - = LetDeclaration - | TypeDeclaration - -export class ClassDeclaration extends SyntaxBase { - - public readonly kind = SyntaxKind.ClassDeclaration; - - public constructor( - public pubKeyword: PubKeyword | null, - public classKeyword: ClassKeyword, - public constraintClause: ClassConstraintClause | null, - public name: IdentifierAlt, - public types: VarTypeExpression[], - public elements: ClassDeclarationElement[], - ) { - super(); - } - - public *getSupers(): Iterable { - if (this.constraintClause !== null) { - for (const constraint of this.constraintClause.constraints) { - yield constraint.name; - } - } - } - - public lookup(element: InstanceDeclarationElement): ClassDeclarationElement | null { - - switch (element.kind) { - - case SyntaxKind.LetDeclaration: - implementationLimitation(element.pattern.kind === SyntaxKind.NamedPattern); - for (const other of this.elements) { - if (other.kind === SyntaxKind.LetDeclaration - && other.pattern.kind === SyntaxKind.NamedPattern - && other.pattern.name.text === element.pattern.name.text) { - return other; - } - } - break; - - case SyntaxKind.TypeDeclaration: - for (const other of this.elements) { - if (other.kind === SyntaxKind.TypeDeclaration - && other.name.text === element.name.text) { - return other; - } - } - break; - - } - - return null; - - } - - public *getInstances(): Iterable { - let curr = this.parent!; - for (;;) { - if (!canHaveInstanceDeclaration(curr)) { - curr = curr.parent!; - } - for (const element of getElements(curr)) { - if (element.kind === SyntaxKind.InstanceDeclaration && element.name.text === this.name.text) { - yield element; - } - } - } - } - - public clone(): ClassDeclaration { - return new ClassDeclaration( - this.pubKeyword !== null ? this.pubKeyword.clone() : null, - this.classKeyword.clone(), - this.constraintClause !== null ? this.constraintClause.clone() : null, - this.name.clone(), - this.types.map(t => t.clone()), - this.elements.map(element => element.clone()), - ); - } - - public getFirstToken(): Token { - if (this.pubKeyword !== null) { - return this.pubKeyword; - } - return this.classKeyword; - } - - public getLastToken(): Token { - if (this.elements.length > 0) { - return this.elements[this.elements.length-1].getLastToken(); - } - if (this.types.length > 0) { - return this.types[this.types.length-1].getLastToken(); - } - return this.name; - } - -} - -export type InstanceDeclarationElement - = LetDeclaration - | TypeDeclaration - -export class InstanceDeclaration extends SyntaxBase { - - public readonly kind = SyntaxKind.InstanceDeclaration; - - public constructor( - public pubKeyword: PubKeyword | null, - public classKeyword: InstanceKeyword, - public constraintClause: ClassConstraintClause | null, - public name: IdentifierAlt, - public types: TypeExpression[], - public elements: InstanceDeclarationElement[], - ) { - super(); - } - - public clone(): InstanceDeclaration { - return new InstanceDeclaration( - this.pubKeyword !== null ? this.pubKeyword.clone() : null, - this.classKeyword.clone(), - this.constraintClause !== null ? this.constraintClause.clone() : null, - this.name.clone(), - this.types.map(t => t.clone()), - this.elements.map(element => element.clone()), - ); - } - - public getFirstToken(): Token { - if (this.pubKeyword !== null) { - return this.pubKeyword; - } - return this.classKeyword; - } - - public getLastToken(): Token { - if (this.elements.length > 0) { - return this.elements[this.elements.length-1].getLastToken(); - } - if (this.types.length > 0) { - return this.types[this.types.length-1].getLastToken(); - } - return this.name; - } - -} -export class ModuleDeclaration extends SyntaxBase { - - public readonly kind = SyntaxKind.ModuleDeclaration; - - public constructor( - public pubKeyword: PubKeyword | null, - public modKeyword: ModKeyword, - public name: IdentifierAlt, - public blockStart: BlockStart, - public elements: SourceFileElement[], - ) { - super(); - } - - public clone(): ModuleDeclaration { - return new ModuleDeclaration( - this.pubKeyword !== null ? this.pubKeyword.clone() : null, - this.modKeyword.clone(), - this.name.clone(), - this.blockStart.clone(), - this.elements.map(element => element.clone()) - ); - } - - public getFirstToken(): Token { - if (this.pubKeyword !== null) { - return this.pubKeyword; - } - return this.modKeyword; - } - - public getLastToken(): Token { - if (this.elements.length > 0) { - return this.elements[this.elements.length-1].getLastToken(); - } - return this.blockStart; - } - -} - -export type SourceFileElement - = Statement - | Declaration - | ClassDeclaration - | InstanceDeclaration - | ModuleDeclaration - -export class SourceFile extends SyntaxBase { - - public readonly kind = SyntaxKind.SourceFile; - - @nonenumerable - public scope?: Scope; - - public constructor( - private file: TextFile, - public elements: SourceFileElement[], - public eof: EndOfFile, - ) { - super(); - } - - public clone(): SourceFile { - return new SourceFile( - this.file, - this.elements.map(element => element.clone()), - this.eof, - ); - } - - public getFirstToken(): Token { - if (this.elements.length > 0) { - return this.elements[0].getFirstToken(); - } - return this.eof; - } - - public getLastToken(): Token { - if (this.elements.length > 0) { - return this.elements[this.elements.length-1].getLastToken(); - } - return this.eof; - } - - public getFile() { - return this.file; - } - -} - -export function isSyntax(value: any): value is Syntax { - return typeof value === 'object' - && value !== null - && value instanceof SyntaxBase; -} - -export function isToken(value: any): value is Token { - return typeof value === 'object' - && value !== null - && value instanceof TokenBase; -} - -export function visitEachChild(node: T, proc: (node: Syntax) => Syntax | void): Syntax { - - const newArgs = []; - let changed = false; - - const traverse = (value: any): any => { - if (Array.isArray(value)) { - const newElements = []; - let changed = false; - for (const element of value) { - const newElement = traverse(element); - if (newElement !== element) { - changed = true; - } - newElements.push(newElement); - } - return changed ? newElements : value; - } else if (isSyntax(value)) { - let newValue = proc(value); - if (newValue === undefined) { - newValue = value; - } - if (newValue !== value) { - changed = true; - } - return newValue; - } else { - return value; - } - } - - for (const [_key, value] of node.getFields()) { - newArgs.push(traverse(value)); - } - - if (!changed) { - return node; - } - return new (node as any).constructor(...newArgs); -} - -export function canHaveInstanceDeclaration(node: Syntax): boolean { - return node.kind === SyntaxKind.SourceFile - || node.kind === SyntaxKind.ModuleDeclaration - || node.kind === SyntaxKind.LetDeclaration; -} - -export function getElements(node: Syntax): Iterable { - switch (node.kind) { - case SyntaxKind.SourceFile: - case SyntaxKind.ModuleDeclaration: - return node.elements; - case SyntaxKind.LetDeclaration: - if (node.body !== null && node.body.kind === SyntaxKind.BlockBody) { - return node.body.elements; - } - // falls through - default: - return []; - } -} diff --git a/bootstrap/js/compiler/src/diagnostics.ts b/bootstrap/js/compiler/src/diagnostics.ts deleted file mode 100644 index 5e5c71c3c..000000000 --- a/bootstrap/js/compiler/src/diagnostics.ts +++ /dev/null @@ -1,667 +0,0 @@ - -import { Kind, KindType } from "./checker"; -import { type Type, TypeKind, labelTag } from "./types" -import { ClassConstraint, ClassDeclaration, IdentifierAlt, InstanceDeclaration, Syntax, SyntaxKind, TextFile, TextPosition, TextRange, Token } from "./cst"; -import { assert, assertNever, countDigits, IndentWriter } from "./util"; -import { unwatchFile } from "fs"; -import { warn } from "console"; - -const ANSI_RESET = "\u001b[0m" -const ANSI_BOLD = "\u001b[1m" -const ANSI_UNDERLINE = "\u001b[4m" -const ANSI_REVERSED = "\u001b[7m" - -const ANSI_FG_BLACK = "\u001b[30m" -const ANSI_FG_RED = "\u001b[31m" -const ANSI_FG_GREEN = "\u001b[32m" -const ANSI_FG_YELLOW = "\u001b[33m" -const ANSI_FG_BLUE = "\u001b[34m" -const ANSI_FG_CYAN = "\u001b[35m" -const ANSI_FG_MAGENTA = "\u001b[36m" -const ANSI_FG_WHITE = "\u001b[37m" - -const ANSI_BG_BLACK = "\u001b[40m" -const ANSI_BG_RED = "\u001b[41m" -const ANSI_BG_GREEN = "\u001b[42m" -const ANSI_BG_YELLOW = "\u001b[43m" -const ANSI_BG_BLUE = "\u001b[44m" -const ANSI_BG_CYAN = "\u001b[45m" -const ANSI_BG_MAGENTA = "\u001b[46m" -const ANSI_BG_WHITE = "\u001b[47m" - -const enum Level { - Debug, - Verbose, - Info, - Warning, - Error, - Fatal, -} - -export enum DiagnosticKind { - UnexpectedChar, - UnexpectedToken, - KindMismatch, - TypeMismatch, - TupleIndexOutOfRange, - TypeclassNotFound, - TypeclassDecaredTwice, - TypeclassNotImplemented, - BindingNotFound, - ModuleNotFound, - FieldNotFound, -} - -abstract class DiagnosticBase { - - public abstract readonly kind: DiagnosticKind; - - public abstract level: Level; - - public abstract position: TextPosition | undefined; - -} - -export class UnexpectedCharDiagnostic extends DiagnosticBase { - - public readonly kind = DiagnosticKind.UnexpectedChar; - - public level = Level.Error; - - public constructor( - public file: TextFile, - public position: TextPosition, - public actual: string, - ) { - super(); - } - -} - - -export class UnexpectedTokenDiagnostic extends DiagnosticBase { - - public readonly kind = DiagnosticKind.UnexpectedToken; - - public level = Level.Error; - - public constructor( - public file: TextFile, - public actual: Token, - public expected: SyntaxKind[], - ) { - super(); - } - - public get position(): TextPosition { - return this.actual.getStartPosition(); - } - -} - -export class TypeclassDeclaredTwiceDiagnostic extends DiagnosticBase { - - public readonly kind = DiagnosticKind.TypeclassDecaredTwice; - - public level = Level.Error; - - public constructor( - public name: IdentifierAlt, - public origDecl: ClassDeclaration, - ) { - super(); - } - - public get position(): TextPosition { - return this.name.getStartPosition(); - } - -} - -export class TypeclassNotFoundDiagnostic extends DiagnosticBase { - - public readonly kind = DiagnosticKind.TypeclassNotFound; - - public level = Level.Error; - - public constructor( - public name: string, - public node: Syntax | null = null, - public origin: InstanceDeclaration | ClassConstraint | null = null, - ) { - super(); - } - - public get position(): TextPosition | undefined { - return this.node?.getFirstToken().getStartPosition(); - } - -} - -export class TypeclassNotImplementedDiagnostic extends DiagnosticBase { - - public readonly kind = DiagnosticKind.TypeclassNotImplemented; - - public level = Level.Error; - - public constructor( - public name: string, - public type: Type, - public node: Syntax | null = null, - ) { - super(); - } - - public get position(): TextPosition | undefined { - return this.node?.getFirstToken().getStartPosition(); - } - -} - -export class BindingNotFoundDiagnostic extends DiagnosticBase { - - public readonly kind = DiagnosticKind.BindingNotFound; - - public level = Level.Error; - - public constructor( - public modulePath: string[], - public name: string, - public node: Syntax, - ) { - super(); - } - - public get position(): TextPosition { - return this.node.getFirstToken().getStartPosition(); - } - -} - -export class TypeMismatchDiagnostic extends DiagnosticBase { - - public readonly kind = DiagnosticKind.TypeMismatch; - - public level = Level.Error; - - public constructor( - public left: Type, - public right: Type, - public trace: Syntax[], - public fieldPath: (string | number)[], - ) { - super(); - } - - public get position(): TextPosition | undefined { - return this.trace[0]?.getFirstToken().getStartPosition(); - } - -} - -export class FieldNotFoundDiagnostic extends DiagnosticBase { - - public readonly kind = DiagnosticKind.FieldNotFound; - - public level = Level.Error; - - public constructor( - public fieldName: string | number, - public missing: Syntax | null, - public present: Syntax | null, - public cause: Syntax | null = null, - ) { - super(); - } - - public get position(): TextPosition | undefined { - return this.cause?.getFirstToken().getStartPosition(); - } - -} - -export class KindMismatchDiagnostic extends DiagnosticBase { - - public readonly kind = DiagnosticKind.KindMismatch; - - public level = Level.Error; - - public constructor( - public left: Kind, - public right: Kind, - public origin: Syntax | null, - ) { - super(); - } - - public get position(): TextPosition | undefined { - return this.origin?.getFirstToken().getStartPosition(); - } - -} - -export class ModuleNotFoundDiagnostic extends DiagnosticBase { - - public readonly kind = DiagnosticKind.ModuleNotFound; - - public level = Level.Error; - - public constructor( - public modulePath: string[], - public node: Syntax, - ) { - super(); - } - - public get position(): TextPosition | undefined { - return this.node.getFirstToken().getStartPosition(); - } - -} - -export type Diagnostic - = UnexpectedCharDiagnostic - | TypeclassNotFoundDiagnostic - | TypeclassDeclaredTwiceDiagnostic - | TypeclassNotImplementedDiagnostic - | BindingNotFoundDiagnostic - | TypeMismatchDiagnostic - | UnexpectedTokenDiagnostic - | FieldNotFoundDiagnostic - | KindMismatchDiagnostic - | ModuleNotFoundDiagnostic - -export interface Diagnostics { - readonly hasError: boolean; - readonly hasFatal: boolean; - add(diagnostic: Diagnostic): void; -} - -export class DiagnosticStore implements Diagnostics { - - private storage: Diagnostic[] = []; - - public hasError = false; - public hasFatal = false; - - public get size(): number { - return this.storage.length; - } - - public add(diagnostic: Diagnostic): void { - this.storage.push(diagnostic); - if (diagnostic.level >= Level.Error) { - this.hasError = true; - } - if (diagnostic.level >= Level.Fatal) { - this.hasFatal = true; - } - } - - public [Symbol.iterator](): IterableIterator { - return this.storage[Symbol.iterator](); - } - -} - -export class ConsoleDiagnostics implements Diagnostics { - - private writer = new IndentWriter(process.stderr); - - public hasError = false; - public hasFatal = false; - - public add(diagnostic: Diagnostic): void { - - if (diagnostic.level >= Level.Error) { - this.hasError = true; - } - if (diagnostic.level >= Level.Fatal) { - this.hasFatal = true; - } - - switch (diagnostic.level) { - case Level.Fatal: - this.writer.write(ANSI_FG_RED + ANSI_BOLD + 'fatal: ' + ANSI_RESET); - break; - case Level.Error: - this.writer.write(ANSI_FG_RED + ANSI_BOLD + 'error: ' + ANSI_RESET); - break; - case Level.Warning: - this.writer.write(ANSI_FG_RED + ANSI_BOLD + 'warning: ' + ANSI_RESET); - break; - case Level.Info: - this.writer.write(ANSI_FG_YELLOW + ANSI_BOLD + 'info: ' + ANSI_RESET); - break; - case Level.Verbose: - this.writer.write(ANSI_FG_CYAN + ANSI_BOLD + 'verbose: ' + ANSI_RESET); - break; - } - - switch (diagnostic.kind) { - - case DiagnosticKind.UnexpectedChar: - const endPos = diagnostic.position.clone(); - endPos.advance(diagnostic.actual); - this.writer.write(`unexpected character sequence '${diagnostic.actual}'.\n\n`); - this.writer.write(printExcerpt(diagnostic.file, new TextRange(diagnostic.position, endPos)) + '\n'); - break; - - case DiagnosticKind.UnexpectedToken: - this.writer.write(`expected ${describeExpected(diagnostic.expected)} but got ${describeActual(diagnostic.actual)}\n\n`); - this.writer.write(printExcerpt(diagnostic.file, diagnostic.actual.getRange()) + '\n'); - break; - - case DiagnosticKind.TypeclassDecaredTwice: - this.writer.write(`type class '${diagnostic.name.text}' was already declared somewhere else.\n\n`); - this.writer.write(ANSI_FG_YELLOW + ANSI_BOLD + 'info: ' + ANSI_RESET); - this.writer.write(`type class '${diagnostic.name.text}' is already declared here\n\n`); - this.writer.write(printNode(diagnostic.origDecl) + '\n'); - break; - - case DiagnosticKind.TypeclassNotFound: - this.writer.write(`the type class ${ANSI_FG_MAGENTA + diagnostic.name + ANSI_RESET} was not found.\n\n`); - if (diagnostic.node !== null) { - this.writer.write(printNode(diagnostic.node) + '\n'); - } - // if (diagnostic.origin !== null) { - // this.writer.indent(); - // this.writer.write(ANSI_FG_YELLOW + ANSI_BOLD + 'info: ' + ANSI_RESET); - // this.writer.write(`${ANSI_FG_MAGENTA + diagnostic.name + ANSI_RESET} is required by ${ANSI_FG_MAGENTA + diagnostic.origin.name.text + ANSI_RESET}\n\n`); - // this.writer.write(printNode(diagnostic.origin.name) + '\n'); - // this.writer.dedent(); - // } - break; - - case DiagnosticKind.BindingNotFound: - this.writer.write(`binding '${diagnostic.name}' was not found`); - if (diagnostic.modulePath.length > 0) { - this.writer.write(` in module ${ANSI_FG_BLUE + diagnostic.modulePath.join('.') + ANSI_RESET}`); - } - this.writer.write(`.\n\n`); - this.writer.write(printNode(diagnostic.node) + '\n'); - break; - - case DiagnosticKind.TypeMismatch: - const leftNode = getFirstNodeInTypeChain(diagnostic.left); - const rightNode = getFirstNodeInTypeChain(diagnostic.right); - const node = diagnostic.trace[0]; - this.writer.write(`unification of ` + ANSI_FG_GREEN + describeType(diagnostic.left) + ANSI_RESET); - this.writer.write(' and ' + ANSI_FG_GREEN + describeType(diagnostic.right) + ANSI_RESET + ' failed'); - if (diagnostic.fieldPath.length > 0) { - this.writer.write(` in field '${diagnostic.fieldPath.join('.')}'`); - } - this.writer.write('.\n\n'); - this.writer.write(printNode(node) + '\n'); - for (let i = 1; i < diagnostic.trace.length; i++) { - const node = diagnostic.trace[i]; - this.writer.write(' ... in an instantiation of the following expression\n\n'); - this.writer.write(printNode(node, { indentation: i === 0 ? ' ' : ' ' }) + '\n'); - } - if (leftNode !== null) { - this.writer.indent(); - this.writer.write(ANSI_FG_YELLOW + ANSI_BOLD + `info: ` + ANSI_RESET); - this.writer.write(`type ` + ANSI_FG_GREEN + describeType(diagnostic.left) + ANSI_RESET + ` was inferred from this expression:\n\n`); - this.writer.write(printNode(leftNode) + '\n'); - this.writer.dedent(); - } - if (rightNode !== null) { - this.writer.indent(); - this.writer.write(ANSI_FG_YELLOW + ANSI_BOLD + `info: ` + ANSI_RESET); - this.writer.write(`type ` + ANSI_FG_GREEN + describeType(diagnostic.right) + ANSI_RESET + ` was inferred from this expression:\n\n`); - this.writer.write(printNode(rightNode) + '\n'); - this.writer.dedent(); - } - break; - - case DiagnosticKind.KindMismatch: - this.writer.write(`kind ${describeKind(diagnostic.left)} does not match with ${describeKind(diagnostic.right)}\n\n`); - if (diagnostic.origin !== null) { - this.writer.write(printNode(diagnostic.origin) + '\n'); - } - break; - - case DiagnosticKind.ModuleNotFound: - this.writer.write(`a module named ${ANSI_FG_BLUE + diagnostic.modulePath.join('.') + ANSI_RESET} was not found.\n\n`); - this.writer.write(printNode(diagnostic.node) + '\n'); - break; - - case DiagnosticKind.FieldNotFound: - this.writer.write(`field '${diagnostic.fieldName}' is required in one type but missing in another\n\n`); - this.writer.indent(); - if (diagnostic.missing !== null) { - this.writer.write(ANSI_FG_YELLOW + ANSI_BOLD + 'info: ' + ANSI_RESET); - this.writer.write(`field '${diagnostic.fieldName}' is missing in this construct\n\n`); - this.writer.write(printNode(diagnostic.missing) + '\n'); - } - if (diagnostic.present !== null) { - this.writer.write(ANSI_FG_YELLOW + ANSI_BOLD + 'info: ' + ANSI_RESET); - this.writer.write(`field '${diagnostic.fieldName}' is required in this construct\n\n`); - this.writer.write(printNode(diagnostic.present) + '\n'); - } - if (diagnostic.cause !== null) { - this.writer.write(ANSI_FG_YELLOW + ANSI_BOLD + 'info: ' + ANSI_RESET); - this.writer.write(`because of a constraint on this node:\n\n`); - this.writer.write(printNode(diagnostic.cause) + '\n'); - } - this.writer.dedent(); - break; - - default: - assertNever(diagnostic); - - } - - } - -} - -const DESCRIPTIONS: Partial> = { - [SyntaxKind.StringLiteral]: 'a string literal', - [SyntaxKind.Identifier]: "an identifier", - [SyntaxKind.RArrow]: "'->'", - [SyntaxKind.RArrowAlt]: '"=>"', - [SyntaxKind.VBar]: "'|'", - [SyntaxKind.Comma]: "','", - [SyntaxKind.Colon]: "':'", - [SyntaxKind.Integer]: "an integer", - [SyntaxKind.LParen]: "'('", - [SyntaxKind.RParen]: "')'", - [SyntaxKind.LBrace]: "'{'", - [SyntaxKind.RBrace]: "'}'", - [SyntaxKind.LBracket]: "'['", - [SyntaxKind.RBracket]: "']'", - [SyntaxKind.StructKeyword]: "'struct'", - [SyntaxKind.EnumKeyword]: "'enum'", - [SyntaxKind.MatchKeyword]: "'match'", - [SyntaxKind.TypeKeyword]: "'type'", - [SyntaxKind.IdentifierAlt]: 'an identifier starting with an uppercase letter', - [SyntaxKind.TupleExpression]: 'a tuple expression such as (1, 2)', - [SyntaxKind.ReferenceExpression]: 'a reference to some variable', - [SyntaxKind.NestedExpression]: 'an expression nested with parentheses', - [SyntaxKind.ConstantExpression]: 'a constant expression such as 1 or "foo"', - [SyntaxKind.StructExpression]: 'a struct expression', - [SyntaxKind.BlockStart]: 'the start of an indented block', - [SyntaxKind.BlockEnd]: 'the end of an indented block', - [SyntaxKind.LineFoldEnd]: 'the end of the current line-fold', - [SyntaxKind.EndOfFile]: 'end-of-file', -} - -function describeSyntaxKind(kind: SyntaxKind): string { - const desc = DESCRIPTIONS[kind]; - if (desc === undefined) { - throw new Error(`Could not describe SyntaxKind '${kind}'`); - } - return desc -} - -function describeExpected(expected: SyntaxKind[]) { - if (expected.length === 0) { - return 'nothing'; - } - let out = describeSyntaxKind(expected[0]); - if (expected.length === 1) { - return out; - } - for (let i = 1; i < expected.length-1; i++) { - const kind = expected[i]; - out += ', ' + describeSyntaxKind(kind); - } - out += ' or ' + describeSyntaxKind(expected[expected.length-1]) - return out; -} - -function describeActual(token: Token): string { - switch (token.kind) { - case SyntaxKind.BlockStart: - case SyntaxKind.BlockEnd: - case SyntaxKind.LineFoldEnd: - case SyntaxKind.EndOfFile: - return describeSyntaxKind(token.kind); - default: - return `'${token.text}'`; - } -} - -export function describeType(type: Type): string { - switch (type.kind) { - case TypeKind.Con: - { - return type.displayName; - } - case TypeKind.RegularVar: - return 'a' + type.id; - case TypeKind.RigidVar: - return type.displayName; - case TypeKind.Arrow: - { - return describeType(type.paramType) + ' -> ' + describeType(type.returnType); - } - case TypeKind.Field: - { - // let curr: Type = type; - // while (curr.kind === TypeKind.Field) { - // if (curr.name === labelTag) { - // return describeType(curr.type); - // } - // curr = curr.restType; - // } - let out = '{ ' + type.name + ': ' + describeType(type.type); - type = type.restType; - while (type.kind === TypeKind.Field) { - out += '; ' + type.name + ': ' + describeType(type.type); - type = type.restType; - } - if (type.kind !== TypeKind.Nil) { - out += '; ' + describeType(type); - } - return out + ' }' - } - case TypeKind.App: - { - return describeType(type.left) + ' ' + describeType(type.right); - } - case TypeKind.Nil: - return '{}'; - case TypeKind.Absent: - return 'Abs'; - case TypeKind.Present: - return describeType(type.type); - default: - assertNever(type); - } -} - -function describeKind(kind: Kind): string { - switch (kind.type) { - case KindType.Var: - return `k${kind.id}`; - case KindType.Arrow: - return describeKind(kind.left) + ' -> ' + describeKind(kind.right); - case KindType.Type: - return '*'; - default: - assertNever(kind); - } -} - -function getFirstNodeInTypeChain(type: Type): Syntax | null { - while (type !== type && (type.kind === TypeKind.RegularVar || type.node === null)) { - type = type.next; - } - return type.node; -} - -interface PrintExcerptOptions { - indentation?: string; - extraLineCount?: number; -} - -interface PrintNodeOptions extends PrintExcerptOptions { } - -function printNode(node: Syntax, options?: PrintNodeOptions): string { - const file = node.getSourceFile().getFile(); - return printExcerpt(file, node.getRange(), options); -} - -function printExcerpt(file: TextFile, span: TextRange, { indentation = ' ', extraLineCount = 2 } = {}): string { - - let out = ''; - - const content = file.text; - const startLine = Math.max(0, span.start.line-1-extraLineCount) - const lines = content.split('\n') - const endLine = Math.min(lines.length, (span.end !== undefined ? span.end.line : startLine) + extraLineCount) - const gutterWidth = Math.max(2, countDigits(endLine+1)) - - for (let i = startLine; i < endLine; i++) { - - const line = lines[i]; - - let j = firstIndexOfNonEmpty(line); - - out += indentation + ' ' + ANSI_FG_BLACK + ANSI_BG_WHITE + ' '.repeat(gutterWidth-countDigits(i+1))+(i+1).toString() + ANSI_RESET + ' ' + line + '\n' - - const gutter = indentation + ' ' + ANSI_FG_BLACK + ANSI_BG_WHITE + ' '.repeat(gutterWidth) + ANSI_RESET + ' ' - - let mark: number; - let skip: number; - - if (i === span.start.line-1 && i === span.end.line-1) { - skip = span.start.column-1; - mark = span.end.column-span.start.column; - } else if (i === span.start.line-1) { - skip = span.start.column-1; - mark = line.length-span.start.column+1; - } else if (i === span.end.line-1) { - skip = 0; - mark = span.end.column-1; - } else if (i > span.start.line-1 && i < span.end.line-1) { - skip = 0; - mark = line.length; - } else { - continue; - } - - if (j <= skip) { - j = 0; - } - - out += gutter + ' '.repeat(j+skip) + ANSI_FG_RED + '~'.repeat(mark-j) + ANSI_RESET + '\n' - - } - - return out; -} - -function firstIndexOfNonEmpty(str: string) { - let j = 0; - for (; j < str.length; j++) { - const ch = str[j]; - if (ch !== ' ' && ch !== '\t') { - break; - } - } - return j -} - diff --git a/bootstrap/js/compiler/src/emitter.ts b/bootstrap/js/compiler/src/emitter.ts deleted file mode 100644 index 8999d2e8e..000000000 --- a/bootstrap/js/compiler/src/emitter.ts +++ /dev/null @@ -1,201 +0,0 @@ -import { Syntax, SyntaxKind } from "./cst"; -import { IndentWriter, assertNever } from "./util"; - -export class Emitter { - - public constructor( - public writer: IndentWriter, - ) { - - } - - public emit(node: Syntax): void { - - switch (node.kind) { - - case SyntaxKind.ModuleDeclaration: - this.writer.write(`mod ${node.name.text}`); - if (node.elements === null) { - this.writer.write('\n'); - break; - } - this.writer.write('.\n'); - this.writer.indent(); - for (const element of node.elements) { - this.emit(element); - } - this.writer.dedent(); - break; - - case SyntaxKind.ReferenceExpression: - for (const [name, _dot] of node.modulePath) { - this.writer.write(name.text); - this.writer.write('.'); - } - this.writer.write(node.name.text); - break; - - case SyntaxKind.CallExpression: - this.emit(node.func); - for (const arg of node.args) { - this.writer.write(' '); - this.emit(arg); - } - break; - - case SyntaxKind.ReferenceTypeExpression: - for (const [name, _dot] of node.modulePath) { - this.writer.write(name.text); - this.writer.write('.'); - } - this.writer.write(node.name.text); - break; - - case SyntaxKind.StructExpressionField: - this.writer.write(node.name.text); - this.writer.write(' = '); - this.emit(node.expression); - break; - - case SyntaxKind.StructExpression: - this.writer.write('{ '); - for (const member of node.members) { - this.emit(member); - this.writer.write(', '); - } - this.writer.write(' }'); - break; - - case SyntaxKind.ConstantExpression: - this.writer.write(node.token.text); - break; - - case SyntaxKind.FunctionExpression: - this.writer.write('\\'); - for (const param of node.params) { - this.emit(param); - this.writer.write(' '); - } - this.emit(node.body); - break; - - case SyntaxKind.ArrowTypeExpression: - for (const typeExpr of node.paramTypeExprs) { - this.emit(typeExpr); - this.writer.write(' -> '); - } - this.emit(node.returnTypeExpr); - break; - - case SyntaxKind.VarTypeExpression: - this.writer.write(node.name.text); - break; - - case SyntaxKind.PlainParam: - this.emit(node.pattern); - break; - - case SyntaxKind.NamedPattern: - this.writer.write(node.name.text); - break; - - case SyntaxKind.ExpressionStatement: - this.emit(node.expression); - this.writer.write('\n'); - break; - - case SyntaxKind.SourceFile: - for (const element of node.elements) { - this.emit(element); - } - break; - - case SyntaxKind.TypeAssert: - this.writer.write(': '); - this.emit(node.typeExpression); - break; - - case SyntaxKind.ExprBody: - this.writer.write(node.equals.text); - this.writer.write(' '); - this.emit(node.expression); - break - - case SyntaxKind.BlockBody: - this.writer.write('.\n'); - this.writer.indent(); - for (const element of node.elements) { - this.emit(element); - } - this.writer.dedent(); - break; - - case SyntaxKind.LetDeclaration: - if (node.pubKeyword) { - this.writer.write('pub '); - } - this.writer.write('let '); - if (node.mutKeyword) { - this.writer.write(' mut '); - } - this.emit(node.pattern); - this.writer.write(' '); - for (const param of node.params) { - this.emit(param); - this.writer.write(' '); - } - if (node.typeAssert) { - this.emit(node.typeAssert); - this.writer.write(' '); - } - if (node.body) { - this.emit(node.body); - } - this.writer.write('\n\n'); - break; - - case SyntaxKind.ClassConstraint: - this.writer.write(node.name.text); - for (const type of node.types) { - this.writer.write(' '); - this.emit(type); - } - break; - - case SyntaxKind.ClassDeclaration: - if (node.pubKeyword) { - this.writer.write('pub '); - } - this.writer.write(`class `); - if (node.constraintClause) { - for (const constraint of node.constraintClause.constraints) { - this.emit(constraint); - this.writer.write(`, `); - } - this.writer.write(' => '); - } - this.emit(node.name); - for (const type of node.types) { - this.writer.write(' '); - this.emit(type); - } - if (node.elements !== null) { - this.writer.write('.\n'); - this.writer.indent(); - for (const element of node.elements) { - this.emit(element); - } - this.writer.dedent(); - } - break; - - default: - assertNever(node); - - - } - - } - -} - diff --git a/bootstrap/js/compiler/src/index.ts b/bootstrap/js/compiler/src/index.ts deleted file mode 100644 index f5a80e023..000000000 --- a/bootstrap/js/compiler/src/index.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { SourceFile, TextFile } from "./cst"; -import { Diagnostics, UnexpectedCharDiagnostic, UnexpectedTokenDiagnostic } from "./diagnostics"; -import { ParseError, Parser } from "./parser"; -import { Punctuator, ScanError, Scanner } from "./scanner"; - -export function parseSourceFile(file: TextFile, diagnostics: Diagnostics): SourceFile | null { - const scanner = new Scanner(file.text, diagnostics, file); - const punctuated = new Punctuator(scanner); - const parser = new Parser(file, punctuated); - let sourceFile; - try { - sourceFile = parser.parseSourceFile(); - } catch (error) { - if (error instanceof ParseError) { - diagnostics.add(new UnexpectedTokenDiagnostic(error.file, error.actual, error.expected)); - return null; - } - if (error instanceof ScanError) { - diagnostics.add(new UnexpectedCharDiagnostic(error.file, error.position, error.actual)); - return null; - } - throw error; - } - sourceFile.setParents(); - return sourceFile; -} - -export * from "./util" -export * from "./diagnostics" -export * from "./scanner" -export * from "./parser" -export * from "./cst" -export * from "./analysis" -export * from "./checker" -export * from "./program" - diff --git a/bootstrap/js/compiler/src/js.ts b/bootstrap/js/compiler/src/js.ts deleted file mode 100644 index d700c5946..000000000 --- a/bootstrap/js/compiler/src/js.ts +++ /dev/null @@ -1,196 +0,0 @@ - -import type stream from "stream" -import { IndentWriter } from "./util"; - -export const enum JSNodeKind { - - // Patterns - BindPattern, - ArrayPattern, - ObjectPattern, - - // Expressions - ReferenceExpression, - CallExpression, - FunctionExpression, - MemberExpression, - IndexExpression, - - // Statements - ExpressionStatement, - ReturnStatement, - - // Declarations - FunctionDeclaration, - VariableDeclaration, - - // Other nodes - Program, -} - -abstract class JSNodeBase { - - public abstract readonly kind: JSNodeKind; - - public emit(out: stream.Writable): void { - const emitter = new JSEmitter(out); - emitter.emit(this as unknown as JSNode); - } - -} - -export class JSBindPattern extends JSNodeBase { - - public readonly kind = JSNodeKind.BindPattern; - - public constructor( - public name: string, - ) { - super(); - } - -} - -export type JSPattern - = JSBindPattern - -export class JSReferenceExpression extends JSNodeBase { - - public kind = JSNodeKind.ReferenceExpression; - - public constructor( - public name: string, - ) { - super(); - } - -} - -export class JSCallExpression extends JSNodeBase { - - public readonly kind = JSNodeKind.CallExpression; - - public constructor( - public operator: JSExpression, - public args: JSExpression[], - ) { - super(); - } - -} - -export type JSExpression - = JSReferenceExpression - | JSCallExpression - -export class JSExpressionStatement extends JSNodeBase { - - public readonly kind = JSNodeKind.ExpressionStatement; - - public constructor( - public expression: JSExpression, - ) { - super(); - } - -} - -export class JSReturnStatement extends JSNodeBase { - - public readonly kind = JSNodeKind.ReturnStatement; - - public constructor( - public value: JSExpression | null, - ) { - super(); - } - -} - -export type JSStatement - = JSExpressionStatement - | JSReturnStatement - -export const enum JSDeclarationFlags { - IsExported = 1, -} - -export type JSFunctionElement - = JSDeclaration - | JSStatement - -export class JSFunctionDeclaration extends JSNodeBase { - - public readonly kind = JSNodeKind.FunctionDeclaration; - - public constructor( - public flags: JSDeclarationFlags, - public name: string, - public params: JSPattern[], - public body: JSFunctionElement[], - ) { - super(); - } - -} - -export enum JSVarType { - Var, - Const, - Let, -} - -export class JSVariableDeclaration extends JSNodeBase { - - public readonly kind = JSNodeKind.VariableDeclaration; - - public constructor( - public flags: JSDeclarationFlags, - public varType: JSVarType, - public pattern: JSPattern, - public value: JSExpression | null, - ) { - super(); - } - -} - -export type JSDeclaration - = JSFunctionDeclaration - | JSVariableDeclaration - -export type JSSourceElement - = JSStatement - | JSDeclaration - -export class JSProgram extends JSNodeBase { - - public readonly kind = JSNodeKind.Program; - - public constructor( - public elements: JSSourceElement[], - ) { - super(); - } - -} - -export type JSNode - = JSStatement - | JSDeclaration - | JSExpression - | JSPattern - | JSProgram - -export class JSEmitter { - - private writer: IndentWriter; - - public constructor(out: stream.Writable) { - this.writer = new IndentWriter(out); - } - - public emit(node: JSNode) { - } - -} diff --git a/bootstrap/js/compiler/src/parser.ts b/bootstrap/js/compiler/src/parser.ts deleted file mode 100644 index 4b02fd6de..000000000 --- a/bootstrap/js/compiler/src/parser.ts +++ /dev/null @@ -1,1376 +0,0 @@ - -import { warn } from "console"; -import { - ReferenceTypeExpression, - SourceFile, - SourceFileElement, - StructDeclaration, - StructDeclarationField, - SyntaxKind, - Token, - TokenKind, - Expression, - TypeExpression, - ConstantExpression, - ReferenceExpression, - Dot, - Identifier, - TupleExpression, - PrefixExpression, - ExpressionStatement, - ImportDeclaration, - Param, - Pattern, - NamedPattern, - LetDeclaration, - TypeAssert, - ExprBody, - BlockBody, - NestedExpression, - NamedTuplePattern, - StructPattern, - VariadicStructPatternElement, - PunnedStructPatternField, - StructPatternField, - TuplePattern, - InfixExpression, - TextFile, - CallExpression, - LetBodyElement, - ReturnStatement, - StructExpression, - StructExpressionField, - PunnedStructExpressionField, - IfStatementCase, - IfStatement, - MemberExpression, - IdentifierAlt, - ArrowTypeExpression, - EnumDeclarationStructElement, - EnumDeclaration, - EnumDeclarationTupleElement, - VarTypeExpression, - TypeDeclaration, - AppTypeExpression, - NestedPattern, - NestedTypeExpression, - MatchArm, - MatchExpression, - LiteralPattern, - DisjunctivePattern, - TupleTypeExpression, - ModuleDeclaration, - isExprOperator, - ClassConstraint, - ClassDeclaration, - ClassKeyword, - InstanceDeclaration, - ClassConstraintClause, - AssignStatement, - ForallTypeExpression, - TypeExpressionWithConstraints, - Annotation, - TypeAnnotation, - Annotations, - ExprOperator, - Integer, - InstanceParam, - PlainParam, - InstanceTypeExpression, -} from "./cst" -import { Stream } from "./util"; -import { wrap } from "module"; - -export class ParseError extends Error { - - public constructor( - public file: TextFile, - public actual: Token, - public expected: SyntaxKind[], - ) { - super(`Uncaught parse error`); - } - -} - -const enum OperatorMode { - None = 0, - Prefix = 1, - InfixL = 2, - InfixR = 4, - Infix = 6, - Suffix = 8, -} - -interface OperatorInfo { - name: string, - mode: OperatorMode, - precedence: number, -} - -const EXPR_OPERATOR_TABLE: Array<[string, OperatorMode, number]> = [ - ["**", OperatorMode.InfixR, 11], - ["*", OperatorMode.InfixL, 8], - ["/", OperatorMode.InfixL, 8], - ["+", OperatorMode.InfixL, 7], - ["-", OperatorMode.InfixL, 7], - ["<", OperatorMode.InfixL, 6], - [">", OperatorMode.InfixL, 6], - ["<=", OperatorMode.InfixL, 5], - [">=", OperatorMode.InfixL, 5], - ["==", OperatorMode.InfixL, 5], - ["!=", OperatorMode.InfixL, 5], - ["<*", OperatorMode.InfixL, 4], - [":", OperatorMode.InfixL, 3], - ["<|>", OperatorMode.InfixL, 2], - ["", OperatorMode.InfixL, 1], - ["$", OperatorMode.InfixR, 0] -]; - -export class Parser { - - private prefixExprOperators = new Set(); - private binaryExprOperators = new Map(); - private suffixExprOperators = new Set(); - - public constructor( - public file: TextFile, - public tokens: Stream, - ) { - for (const [name, mode, precedence] of EXPR_OPERATOR_TABLE) { - this.binaryExprOperators.set(name, { name, mode, precedence }); - } - } - - private getToken(): Token { - return this.tokens.get(); - } - - private peekToken(offset = 1): Token { - return this.tokens.peek(offset); - } - - private assertToken(token: Token, expectedKind: K): asserts token is Token & { kind: K } { - if (token.kind !== expectedKind) { - this.raiseParseError(token, [ expectedKind ]); - } - } - - private expectToken(expectedKind: K): Token & { kind: K } { - const token = this.getToken(); - if (token.kind !== expectedKind) { - this.raiseParseError(token, [ expectedKind ]) - } - return token as Token & { kind: K }; - } - - private raiseParseError(actual: Token, expected: SyntaxKind[]): never { - throw new ParseError(this.file, actual, expected); - } - - private peekTokenAfterModifiers(): Token { - let t0; - for (let i = 1;;i++) { - t0 = this.peekToken(i); - if (t0.kind !== SyntaxKind.PubKeyword) { - break; - } - } - return t0; - } - - public parseReferenceTypeExpression(): ReferenceTypeExpression { - const modulePath = []; - for (;;) { - const t1 = this.peekToken(1); - const t2 = this.peekToken(2); - if (t1.kind !== SyntaxKind.IdentifierAlt || t2.kind !== SyntaxKind.Dot) { - break; - } - this.getToken(); - this.getToken(); - modulePath.push([t1, t2] as [IdentifierAlt, Dot]); - } - const name = this.expectToken(SyntaxKind.IdentifierAlt); - return new ReferenceTypeExpression(modulePath, name); - } - - public parseVarTypeExpression(): VarTypeExpression { - const name = this.expectToken(SyntaxKind.Identifier); - return new VarTypeExpression(name); - } - - public parsePrimitiveTypeExpression(): TypeExpression { - const t0 = this.peekToken(1); - const t1 = this.peekToken(2); - if (t0.kind === SyntaxKind.LBrace && t1.kind === SyntaxKind.LBrace) { - this.getToken(); - this.getToken(); - let name = null; - let colon = null; - const t2 = this.peekToken(2); - if (t2.kind === SyntaxKind.Colon) { - name = this.expectToken(SyntaxKind.Identifier); - this.getToken(); - colon = t2; - } - const typeExpr = this.parseTypeExpression(); - const t3 = this.expectToken(SyntaxKind.RBrace); - const t4 = this.expectToken(SyntaxKind.RBrace); - return new InstanceTypeExpression(t0, t1, name, colon, typeExpr, t3, t4); - } - switch (t0.kind) { - case SyntaxKind.Identifier: - return this.parseVarTypeExpression(); - case SyntaxKind.IdentifierAlt: - return this.parseReferenceTypeExpression(); - case SyntaxKind.LParen: - { - this.getToken(); - const elements = []; - let rparen; - for (;;) { - const t2 = this.peekToken(); - if (t2.kind === SyntaxKind.RParen) { - this.getToken(); - rparen = t2; - break; - } - const typeExpr = this.parseTypeExpression(); - elements.push(typeExpr); - const t3 = this.getToken(); - if (t3.kind === SyntaxKind.RParen) { - rparen = t3; - break; - } else if (t3.kind === SyntaxKind.Comma) { - continue; - } else { - this.raiseParseError(t3, [ SyntaxKind.Comma, SyntaxKind.RParen ]); - } - } - if (elements.length === 1) { - return new NestedTypeExpression(t0, elements[0], rparen); - } - return new TupleTypeExpression(t0, elements, rparen); - } - default: - this.raiseParseError(t0, [ SyntaxKind.IdentifierAlt ]); - } - } - - private parseAppTypeExpressionOrBelow(): TypeExpression { - const operator = this.parsePrimitiveTypeExpression(); - const args = []; - for (;;) { - const t1 = this.peekToken(); - if (t1.kind === SyntaxKind.RParen - || t1.kind === SyntaxKind.RBrace - || t1.kind === SyntaxKind.RBracket - || t1.kind === SyntaxKind.Comma - || t1.kind === SyntaxKind.Equals - || t1.kind === SyntaxKind.BlockStart - || t1.kind === SyntaxKind.LineFoldEnd - || t1.kind === SyntaxKind.RArrow) { - break; - } - args.push(this.parsePrimitiveTypeExpression()); - } - if (args.length === 0) { - return operator; - } - return new AppTypeExpression(operator, args); - } - - public parseTypeExpressionWithConstraints(): TypeExpression { - if (!this.lookaheadHasClassConstraints()) { - return this.parseArrowTypeExpression(); - } - const constraints = []; - let rarrowAlt; - for (;;) { - const constraint = this.parseClassConstraint(); - constraints.push(constraint); - const t1 = this.getToken(); - if (t1.kind === SyntaxKind.RArrowAlt) { - rarrowAlt = t1; - break; - } else if (t1.kind !== SyntaxKind.Comma) { - this.raiseParseError(t1, [ SyntaxKind.RArrowAlt, SyntaxKind.Comma ]); - } - } - const type = this.parseArrowTypeExpression(); - return new TypeExpressionWithConstraints(constraints, rarrowAlt, type); - } - - public parseTypeExpression(): TypeExpression { - const t0 = this.peekToken(); - switch (t0.kind) { - case SyntaxKind.ForallKeyword: - { - this.getToken(); - let dot; - const typeVarExps = []; - for (;;) { - const t1 = this.peekToken(); - if (t1.kind === SyntaxKind.Dot) { - dot = t1; - this.getToken(); - break; - } - typeVarExps.push(this.parseVarTypeExpression()); - } - return new ForallTypeExpression( - t0, - typeVarExps, - dot, - this.parseTypeExpression(), - ); - } - default: - return this.parseTypeExpressionWithConstraints(); - } - } - - public parseArrowTypeExpression(): TypeExpression { - let returnType = this.parseAppTypeExpressionOrBelow(); - const paramTypes = []; - for (;;) { - const t1 = this.peekToken(); - if (t1.kind !== SyntaxKind.RArrow) { - break; - } - this.getToken(); - paramTypes.push(returnType); - returnType = this.parseAppTypeExpressionOrBelow(); - } - if (paramTypes.length === 0) { - return returnType; - } - return new ArrowTypeExpression(paramTypes, returnType); - } - - private parseAnnotations(inline = true): Annotation[] { - const annotations = []; - for (;;) { - const t0 = this.tokens.peek(); - if (t0.kind !== SyntaxKind.At) { - break; - } - this.tokens.get(); - const t1 = this.tokens.peek(); - if (t1.kind === SyntaxKind.Colon) { - this.tokens.get(); - let typeExpr; - if (inline) { - typeExpr = this.parsePrimitiveTypeExpression(); - } else { - typeExpr = this.parseTypeExpression(); - this.expectToken(SyntaxKind.LineFoldEnd); - } - annotations.push(new TypeAnnotation(t0, t1, typeExpr)); - continue; - } - let expr; - if (inline) { - expr = this.parsePrimitiveExpression(); - } else { - expr = this.parseExpression(); - this.expectToken(SyntaxKind.LineFoldEnd); - } - annotations.push(new ExprAnnotation(t0, expr)); - } - return annotations; - } - - public parseConstantExpression(annotations?: Annotation[]): ConstantExpression { - if (annotations === undefined) { - annotations = this.parseAnnotations(); - } - const token = this.getToken() - if (token.kind !== SyntaxKind.StringLiteral - && token.kind !== SyntaxKind.Integer) { - this.raiseParseError(token, [ SyntaxKind.StringLiteral, SyntaxKind.Integer ]) - } - return new ConstantExpression(annotations, token); - } - - public parseReferenceExpression(annotations?: Annotation[]): ReferenceExpression { - if (annotations === undefined) { - annotations = this.parseAnnotations(); - } - const modulePath: Array<[IdentifierAlt, Dot]> = []; - for (;;) { - const t0 = this.peekToken(1); - const t1 = this.peekToken(2); - if (t0.kind !== SyntaxKind.IdentifierAlt || t1.kind !== SyntaxKind.Dot) { - break; - } - this.getToken(); - this.getToken(); - modulePath.push([t0, t1]); - } - const name = this.getToken(); - if (name.kind !== SyntaxKind.Identifier && name.kind !== SyntaxKind.IdentifierAlt) { - this.raiseParseError(name, [ SyntaxKind.Identifier, SyntaxKind.IdentifierAlt ]); - } - return new ReferenceExpression(annotations, modulePath, name); - } - - private parseExpressionWithParens(annotations?: Annotation[]): Expression { - if (annotations === undefined) { - annotations = this.parseAnnotations(); - } - const elements = []; - const lparen = this.expectToken(SyntaxKind.LParen) - let rparen; - for (;;) { - const t1 = this.peekToken(); - if (t1.kind === SyntaxKind.RParen) { - rparen = t1; - this.getToken(); - break; - } - const expression = this.parseExpression(); - elements.push(expression); - const t2 = this.getToken(); - if (t2.kind === SyntaxKind.Comma) { - continue; - } else if (t2.kind === SyntaxKind.RParen) { - rparen = t2; - break; - } else { - this.raiseParseError(t2, [ SyntaxKind.Comma, SyntaxKind.RParen ]); - } - } - if (elements.length === 1) { - return new NestedExpression(annotations, lparen, elements[0], rparen); - } - return new TupleExpression(annotations, lparen, elements, rparen); - } - - public parseMatchExpression(annotations?: Annotation[]): MatchExpression { - if (annotations === undefined) { - annotations = this.parseAnnotations(); - } - const t0 = this.expectToken(SyntaxKind.MatchKeyword); - let expression = null - const t1 = this.peekToken(); - if (t1.kind !== SyntaxKind.BlockStart) { - expression = this.parseExpression(); - } - this.expectToken(SyntaxKind.BlockStart); - const arms = []; - for (;;) { - const t2 = this.peekToken(); - if (t2.kind === SyntaxKind.BlockEnd) { - this.getToken(); - break; - } - const pattern = this.parsePattern(); - const rarrowAlt = this.expectToken(SyntaxKind.RArrowAlt); - const expression = this.parseExpression(); - arms.push(new MatchArm(pattern, rarrowAlt, expression)); - this.expectToken(SyntaxKind.LineFoldEnd); - } - return new MatchExpression(annotations, t0, expression, arms); - } - - private parsePrimitiveExpression(): Expression { - const annotations = this.parseAnnotations(); - const t0 = this.peekToken(); - switch (t0.kind) { - case SyntaxKind.LParen: - return this.parseExpressionWithParens(annotations); - case SyntaxKind.Identifier: - case SyntaxKind.IdentifierAlt: - return this.parseReferenceExpression(annotations); - case SyntaxKind.Integer: - case SyntaxKind.StringLiteral: - return this.parseConstantExpression(annotations); - case SyntaxKind.MatchKeyword: - return this.parseMatchExpression(annotations); - case SyntaxKind.LBrace: - { - this.getToken(); - const fields = []; - let rbrace; - for (;;) { - const t2 = this.peekToken(); - if (t2.kind === SyntaxKind.RBrace) { - this.getToken(); - rbrace = t2; - break; - } - let field; - const t3 = this.getToken(); - if (t3.kind === SyntaxKind.Identifier) { - const t4 = this.peekToken(); - if (t4.kind === SyntaxKind.Equals) { - this.getToken(); - const expression = this.parseExpression(); - field = new StructExpressionField(t3, t4, expression); - } else { - field = new PunnedStructExpressionField(t3); - } - } else { - // TODO add spread fields - this.raiseParseError(t3, [ SyntaxKind.Identifier ]); - } - fields.push(field); - const t5 = this.peekToken(); - if (t5.kind === SyntaxKind.Comma) { - this.getToken(); - continue; - } else if (t5.kind === SyntaxKind.RBrace) { - this.getToken(); - rbrace = t5; - break; - } - } - return new StructExpression(annotations, t0, fields, rbrace); - } - default: - this.raiseParseError(t0, [ - SyntaxKind.TupleExpression, - SyntaxKind.NestedExpression, - SyntaxKind.ConstantExpression, - SyntaxKind.ReferenceExpression - ]); - } - } - - private tryParseMemberExpression(): Expression { - const expression = this.parsePrimitiveExpression(); - const path: Array<[Dot, Identifier | Integer]> = []; - for (;;) { - const t1 = this.peekToken(); - if (t1.kind !== SyntaxKind.Dot) { - break; - } - this.getToken(); - const t2 = this.getToken(); - if (t2.kind !== SyntaxKind.Identifier && t2.kind !== SyntaxKind.Integer) { - this.raiseParseError(t2, [ SyntaxKind.Identifier, SyntaxKind.Integer ]); - } - path.push([t1, t2]); - } - if (path.length === 0) { - return expression; - } - const annotations = expression.annotations; - expression.annotations = []; - return new MemberExpression(annotations, expression, path); - } - - private tryParseCallExpression(): Expression { - const func = this.tryParseMemberExpression(); - const args = []; - for (;;) { - const t1 = this.peekToken(); - if (t1.kind === SyntaxKind.LineFoldEnd - || t1.kind === SyntaxKind.RBrace - || t1.kind === SyntaxKind.RBracket - || t1.kind === SyntaxKind.RParen - || t1.kind === SyntaxKind.BlockStart - || t1.kind === SyntaxKind.Comma - || isExprOperator(t1)) { - break; - } - args.push(this.tryParseMemberExpression()); - } - if (args.length === 0) { - return func - } - const annotations = func.annotations; - func.annotations = []; - return new CallExpression(annotations, func, args); - } - - private parseUnaryExpression(): Expression { - let result = this.tryParseCallExpression() - const prefixes: Array<[Annotations, ExprOperator]> = []; - for (;;) { - const annotations = this.parseAnnotations(); - const t0 = this.peekToken(); - if (!isExprOperator(t0)) { - break; - } - if (!this.prefixExprOperators.has(t0.text)) { - break; - } - prefixes.push([annotations, t0]); - this.getToken() - } - for (let i = prefixes.length-1; i >= 0; i--) { - const [annotations, operator] = prefixes[i]; - result = new PrefixExpression(annotations, operator, result); - } - return result; - } - - private parseBinaryOperatorAfterExpr(lhs: Expression, minPrecedence: number) { - for (;;) { - const t0 = this.peekToken(); - if (!isExprOperator(t0)) { - break; - } - const info0 = this.binaryExprOperators.get(t0.text); - if (info0 === undefined || info0.precedence < minPrecedence) { - break; - } - this.getToken(); - let rhs = this.parseUnaryExpression(); - for (;;) { - const t1 = this.peekToken(); - if (!isExprOperator(t1)) { - break; - } - const info1 = this.binaryExprOperators.get(t1.text); - if (info1 === undefined - || info1.precedence < info0.precedence - || (info1.precedence === info0.precedence && (info1.mode & OperatorMode.InfixR) === 0)) { - break; - } - rhs = this.parseBinaryOperatorAfterExpr(rhs, info0.precedence); - } - const annotations = lhs.annotations; - lhs.annotations = []; - lhs = new InfixExpression(annotations, lhs, t0, rhs); - } - return lhs; - } - - public parseExpression(): Expression { - const lhs = this.parseUnaryExpression(); - return this.parseBinaryOperatorAfterExpr(lhs, 0); - } - - public parseTypeDeclaration(): TypeDeclaration { - let pubKeyword = null; - let t0 = this.getToken(); - if (t0.kind === SyntaxKind.PubKeyword) { - pubKeyword = t0; - t0 = this.getToken(); - } - if (t0.kind !== SyntaxKind.TypeKeyword) { - this.raiseParseError(t0, [ SyntaxKind.TypeKeyword ]); - } - const name = this.expectToken(SyntaxKind.IdentifierAlt); - const typeVars = []; - let t1 = this.getToken(); - while (t1.kind === SyntaxKind.Identifier) { - typeVars.push(t1); - t1 = this.getToken(); - } - if (t1.kind !== SyntaxKind.Equals) { - this.raiseParseError(t1, [ SyntaxKind.Equals ]); - } - const typeExpr = this.parseTypeExpression(); - this.expectToken(SyntaxKind.LineFoldEnd); - return new TypeDeclaration(pubKeyword, t0, name, typeVars, t1, typeExpr); - } - - public parseEnumDeclaration(): EnumDeclaration { - let pubKeyword = null; - let t0 = this.getToken(); - if (t0.kind == SyntaxKind.PubKeyword) { - pubKeyword = t0; - t0 = this.getToken(); - } - if (t0.kind !== SyntaxKind.EnumKeyword) { - this.raiseParseError(t0, [ SyntaxKind.EnumKeyword ]); - } - const name = this.expectToken(SyntaxKind.IdentifierAlt); - let t1 = this.getToken(); - const varExps = []; - while (t1.kind === SyntaxKind.Identifier) { - varExps.push(t1); - t1 = this.getToken(); - } - let members = null; - if (t1.kind === SyntaxKind.BlockStart) { - members = []; - for (;;) { - const t2 = this.peekToken(); - if (t2.kind === SyntaxKind.BlockEnd) { - this.getToken(); - break; - } - const name = this.expectToken(SyntaxKind.IdentifierAlt); - const t3 = this.peekToken(); - let member; - if (t3.kind === SyntaxKind.BlockStart) { - this.getToken(); - const members = []; - for (;;) { - const name = this.expectToken(SyntaxKind.Identifier); - const colon = this.expectToken(SyntaxKind.Colon); - const typeExpr = this.parseTypeExpression(); - this.expectToken(SyntaxKind.LineFoldEnd); - members.push(new StructDeclarationField(name, colon, typeExpr)); - const t4 = this.peekToken(); - if (t4.kind === SyntaxKind.BlockEnd) { - this.getToken(); - break; - } - } - member = new EnumDeclarationStructElement(name, t3, members); - } else { - const typeExps = []; - for (;;) { - const t3 = this.peekToken(); - if (t3.kind === SyntaxKind.LineFoldEnd) { - break; - } - const typeExpr = this.parsePrimitiveTypeExpression(); - typeExps.push(typeExpr); - } - member = new EnumDeclarationTupleElement(name, typeExps); - } - members.push(member); - this.expectToken(SyntaxKind.LineFoldEnd); - } - t1 = this.getToken(); - } - if (t1.kind !== SyntaxKind.LineFoldEnd) { - this.raiseParseError(t1, [ SyntaxKind.Identifier, SyntaxKind.BlockStart, SyntaxKind.LineFoldEnd ]); - } - return new EnumDeclaration(pubKeyword, t0, name, varExps, members); - } - - public parseStructDeclaration(): StructDeclaration { - let pubKeyword = null; - let t0 = this.getToken(); - if (t0.kind === SyntaxKind.PubKeyword) { - pubKeyword = t0; - t0 = this.getToken(); - } - if (t0.kind !== SyntaxKind.StructKeyword) { - this.raiseParseError(t0, [ SyntaxKind.StructKeyword ]); - } - const name = this.expectToken(SyntaxKind.IdentifierAlt); - let t2 = this.getToken(); - const typeVars = []; - while (t2.kind === SyntaxKind.Identifier) { - typeVars.push(t2); - t2 = this.getToken(); - } - let members = null; - if (t2.kind === SyntaxKind.BlockStart) { - members = []; - for (;;) { - const t3 = this.peekToken(); - if (t3.kind === SyntaxKind.BlockEnd) { - this.getToken(); - break; - } - const name = this.expectToken(SyntaxKind.Identifier); - const colon = this.expectToken(SyntaxKind.Colon); - const typeExpr = this.parseTypeExpression(); - this.expectToken(SyntaxKind.LineFoldEnd); - const member = new StructDeclarationField(name, colon, typeExpr); - members.push(member); - } - t2 = this.getToken(); - } - if (t2.kind !== SyntaxKind.LineFoldEnd) { - this.raiseParseError(t2, [ SyntaxKind.LineFoldEnd, SyntaxKind.BlockStart, SyntaxKind.Identifier ]); - } - return new StructDeclaration(pubKeyword, t0, name, typeVars, members); - } - - private parsePatternStartingWithConstructor() { - const name = this.expectToken(SyntaxKind.IdentifierAlt); - const patterns = []; - for (;;) { - const t3 = this.peekToken(); - if (t3.kind === SyntaxKind.RParen) { - break; - } - patterns.push(this.parsePattern()); - } - return new NamedTuplePattern(name, patterns); - } - - public parseTuplePattern(): TuplePattern { - const lparen = this.expectToken(SyntaxKind.LParen); - const elements = []; - let rparen; - for (;;) { - const t1 = this.peekToken(); - if (t1.kind === SyntaxKind.RParen) { - rparen = t1; - break; - } - elements.push(this.parsePattern()); - const t2 = this.peekToken(); - if (t2.kind === SyntaxKind.Comma) { - this.getToken(); - } else if (t2.kind === SyntaxKind.RParen) { - rparen = t2; - break; - } else { - this.raiseParseError(t2, [ SyntaxKind.Comma, SyntaxKind.RParen ]); - } - } - this.getToken(); - return new TuplePattern(lparen, elements, rparen); - } - - public parseStructPattern(): StructPattern { - const t2 = this.expectToken(SyntaxKind.LBrace); - const fields = []; - let rbrace; - for (;;) { - const t3 = this.peekToken(); - if (t3.kind === SyntaxKind.RBrace) { - this.getToken(); - rbrace = t3; - break; - } else if (t3.kind === SyntaxKind.Identifier) { - this.getToken(); - const t4 = this.peekToken(); - if (t4.kind === SyntaxKind.Equals) { - this.getToken(); - const pattern = this.parsePattern(); - fields.push(new StructPatternField(t3, t4, pattern)); - } else { - fields.push(new PunnedStructPatternField(t3)); - } - } else if (t3.kind === SyntaxKind.DotDot) { - this.getToken(); - const t4 = this.peekToken(); - let rest = null; - if (t4.kind !== SyntaxKind.RBrace) { - rest = this.parsePattern(); - } - fields.push(new VariadicStructPatternElement(t3, rest)); - } else { - this.raiseParseError(t3, [ SyntaxKind.Identifier, SyntaxKind.DotDot ]); - } - const t5 = this.peekToken(); - if (t5.kind === SyntaxKind.Comma) { - this.getToken(); - } else if (t5.kind === SyntaxKind.RBrace) { - this.getToken(); - rbrace = t5; - break; - } else { - this.raiseParseError(t5, [ SyntaxKind.Comma, SyntaxKind.RBrace ]); - } - } - return new StructPattern(t2, fields, rbrace); - } - - public parsePrimitivePattern(): Pattern { - const t0 = this.peekToken(); - switch (t0.kind) { - case SyntaxKind.LBrace: - return this.parseStructPattern(); - case SyntaxKind.LParen: - { - const t1 = this.peekToken(2); - if (t1.kind === SyntaxKind.IdentifierAlt) { - this.getToken(); - const pattern = this.parsePatternStartingWithConstructor(); - const t3 = this.expectToken(SyntaxKind.RParen); - return new NestedPattern(t0, pattern, t3); - } else { - return this.parseTuplePattern(); - } - } - case SyntaxKind.IdentifierAlt: - { - this.getToken(); - return new NamedTuplePattern(t0, []); - } - case SyntaxKind.Identifier: - { - this.getToken(); - return new NamedPattern(t0); - } - case SyntaxKind.StringLiteral: - case SyntaxKind.Integer: - { - this.getToken(); - return new LiteralPattern(t0); - } - default: - this.raiseParseError(t0, [ SyntaxKind.Identifier ]); - } - } - - public parsePattern(): Pattern { - let result: Pattern = this.parsePrimitivePattern(); - for (;;) { - const t1 = this.peekToken(); - if (t1.kind !== SyntaxKind.VBar) { - break; - } - this.getToken(); - const right = this.parsePrimitivePattern(); - result = new DisjunctivePattern(result, t1, right); - } - return result; - } - - public parseParam(): Param { - const t0 = this.peekToken(1); - const t1 = this.peekToken(2); - if (t0.kind === SyntaxKind.LBrace && t1.kind === SyntaxKind.LBrace) { - this.getToken(); - this.getToken(); - const name = this.expectToken(SyntaxKind.Identifier); - const t3 = this.expectToken(SyntaxKind.RBrace); - const t4 = this.expectToken(SyntaxKind.RBrace); - return new InstanceParam(t0, t1, name, t3, t4); - } - const pattern = this.parsePattern(); - return new PlainParam(pattern); - } - - private lookaheadIsAssignment(): boolean { - for (let i = 1;; i++) { - const t0 = this.peekToken(i); - switch (t0.kind) { - case SyntaxKind.LineFoldEnd: - case SyntaxKind.BlockStart: - return false; - case SyntaxKind.Assignment: - return true; - } - } - } - - public parseAssignStatement(): AssignStatement { - const pattern = this.parsePattern(); - const operator = this.expectToken(SyntaxKind.Assignment); - const expression = this.parseExpression(); - this.expectToken(SyntaxKind.LineFoldEnd); - return new AssignStatement(pattern, operator, expression); - } - - public parseLetBodyElement(): LetBodyElement { - const t0 = this.peekTokenAfterModifiers(); - switch (t0.kind) { - case SyntaxKind.LetKeyword: - return this.parseLetDeclaration(); - case SyntaxKind.ReturnKeyword: - return this.parseReturnStatement(); - case SyntaxKind.IfKeyword: - return this.parseIfStatement(); - default: - if (this.lookaheadIsAssignment()) { - return this.parseAssignStatement(); - } - // TODO convert parse errors to include LetKeyword and ReturnKeyword - return this.parseExpressionStatement(); - } - } - - private lookaheadHasClassConstraints(): boolean { - for (let i = 1;; i++) { - const token = this.peekToken(i); - switch (token.kind) { - case SyntaxKind.RArrowAlt: - return true; - case SyntaxKind.BlockStart: - case SyntaxKind.LineFoldEnd: - case SyntaxKind.Equals: - return false; - } - } - } - - public parseLetDeclaration(): LetDeclaration { - let t0 = this.getToken(); - let pubKeyword = null; - let mutKeyword = null; - let foreignKeyword = null; - if (t0.kind === SyntaxKind.PubKeyword) { - pubKeyword = t0; - t0 = this.getToken(); - } - if (t0.kind !== SyntaxKind.LetKeyword) { - this.raiseParseError(t0, [ SyntaxKind.LetKeyword ]); - } - let t1 = this.peekToken(); - if (t1.kind === SyntaxKind.ForeignKeyword) { - this.getToken(); - foreignKeyword = t1; - t1 = this.peekToken(); - } - if (t1.kind === SyntaxKind.MutKeyword) { - this.getToken(); - mutKeyword = t1; - t1 = this.peekToken(); - } - const t2 = this.peekToken(2); - const t3 = this.peekToken(3); - let pattern; - if (t1.kind === SyntaxKind.LParen && t2.kind === SyntaxKind.CustomOperator && t3.kind === SyntaxKind.RParen) { - this.getToken() - this.getToken(); - this.getToken(); - pattern = new NestedPattern(t1, new NamedPattern(t2), t3); - } else { - pattern = this.parsePattern(); - } - const params = []; - for (;;) { - const t2 = this.peekToken(); - if (t2.kind === SyntaxKind.Colon - || t2.kind === SyntaxKind.BlockStart - || t2.kind === SyntaxKind.Equals - || t2.kind === SyntaxKind.LineFoldEnd) { - break; - } - params.push(this.parseParam()); - } - let typeAssert = null; - let t5 = this.getToken(); - if (t5.kind === SyntaxKind.Colon) { - const typeExpression = this.parseTypeExpression(); - typeAssert = new TypeAssert(t5, typeExpression); - t5 = this.getToken(); - } - let body = null; - switch (t5.kind) { - case SyntaxKind.BlockStart: - { - const elements = []; - for (;;) { - const t4 = this.peekToken(); - if (t4.kind === SyntaxKind.BlockEnd) { - this.getToken(); - break; - } - elements.push(this.parseLetBodyElement()); - } - body = new BlockBody(t5, elements); - t5 = this.getToken(); - break; - } - case SyntaxKind.Equals: - { - const expression = this.parseExpression(); - body = new ExprBody(t5, expression); - t5 = this.getToken(); - break; - } - case SyntaxKind.LineFoldEnd: - break; - } - if (t5.kind !== SyntaxKind.LineFoldEnd) { - this.raiseParseError(t5, [ SyntaxKind.LineFoldEnd ]); - } - return new LetDeclaration( - pubKeyword, - t0, - foreignKeyword, - mutKeyword, - pattern, - params, - typeAssert, - body - ); - } - - public parseExpressionStatement(): ExpressionStatement { - const expression = this.parseExpression(); - this.expectToken(SyntaxKind.LineFoldEnd) - return new ExpressionStatement(expression); - } - - public parseIfStatement(): IfStatement { - const ifKeyword = this.expectToken(SyntaxKind.IfKeyword); - const test = this.parseExpression(); - const blockStart = this.expectToken(SyntaxKind.BlockStart); - const elements = []; - for (;;) { - const t1 = this.peekToken(); - if (t1.kind === SyntaxKind.BlockEnd) { - this.getToken(); - break; - } - elements.push(this.parseLetBodyElement()); - } - this.expectToken(SyntaxKind.LineFoldEnd); - const cases = []; - cases.push(new IfStatementCase(ifKeyword, test, blockStart, elements)); - for (;;) { - const t2 = this.peekToken(); - if (t2.kind === SyntaxKind.ElseKeyword) { - this.getToken(); - const blockStart = this.expectToken(SyntaxKind.BlockStart); - const elements = []; - for (;;) { - const t3 = this.peekToken(); - if (t3.kind === SyntaxKind.BlockEnd) { - this.getToken(); - break; - } - elements.push(this.parseLetBodyElement()); - } - this.expectToken(SyntaxKind.LineFoldEnd); - cases.push(new IfStatementCase(t2, null, blockStart, elements)); - break; - } else if (t2.kind === SyntaxKind.ElifKeyword) { - this.getToken(); - const test = this.parseExpression(); - const blockStart = this.expectToken(SyntaxKind.BlockStart); - for (;;) { - const t4 = this.peekToken(); - if (t4.kind === SyntaxKind.BlockEnd) { - this.getToken(); - break; - } - elements.push(this.parseLetBodyElement()); - } - this.expectToken(SyntaxKind.LineFoldEnd); - cases.push(new IfStatementCase(t2, test, blockStart, elements)); - } else if (t2.kind === SyntaxKind.LineFoldEnd) { - this.getToken(); - break; - } else { - this.raiseParseError(t2, [ SyntaxKind.ElifKeyword, SyntaxKind.ElseKeyword, SyntaxKind.LineFoldEnd ]); - } - } - return new IfStatement(cases); - } - - public parseReturnStatement(): ReturnStatement { - const returnKeyword = this.expectToken(SyntaxKind.ReturnKeyword); - let expression = null; - const t1 = this.peekToken(); - if (t1.kind !== SyntaxKind.LineFoldEnd) { - expression = this.parseExpression(); - } - this.expectToken(SyntaxKind.LineFoldEnd); - return new ReturnStatement(returnKeyword, expression); - } - - public parseImportDeclaration(): ImportDeclaration { - const importKeyword = this.expectToken(SyntaxKind.ImportKeyword); - const importSource = this.expectToken(SyntaxKind.StringLiteral); - return new ImportDeclaration(importKeyword, importSource); - } - - public parseModuleDeclaration(): ModuleDeclaration { - let pubKeyword = null; - let t0 = this.getToken(); - if (t0.kind === SyntaxKind.PubKeyword) { - pubKeyword = t0; - t0 = this.getToken(); - } - if (t0.kind !== SyntaxKind.ModKeyword) { - this.raiseParseError(t0, [ SyntaxKind.ModKeyword ]); - } - const name = this.expectToken(SyntaxKind.IdentifierAlt); - const blockStart = this.expectToken(SyntaxKind.BlockStart); - const elements = []; - for (;;) { - const t1 = this.peekToken(); - if (t1.kind === SyntaxKind.BlockEnd) { - this.getToken(); - break; - } - elements.push(this.parseSourceFileElement()); - } - this.expectToken(SyntaxKind.LineFoldEnd); - return new ModuleDeclaration(pubKeyword, t0, name, blockStart, elements); - } - - private currentLineFoldHasToken(expectedKind: SyntaxKind): boolean { - for (let i = 1;; i++) { - const t0 = this.peekToken(i); - switch (t0.kind) { - case SyntaxKind.BlockStart: - case SyntaxKind.LineFoldEnd: - case SyntaxKind.EndOfFile: - return false; - case expectedKind: - return true; - } - } - } - - private parseClassConstraint(): ClassConstraint { - const name = this.expectToken(SyntaxKind.IdentifierAlt); - const types = []; - for (;;) { - const t1 = this.peekToken(); - if (t1.kind === SyntaxKind.Comma - || t1.kind === SyntaxKind.RArrowAlt - || t1.kind === SyntaxKind.BlockStart - || t1.kind === SyntaxKind.LineFoldEnd) { - break; - } - types.push(this.parsePrimitiveTypeExpression()); - } - return new ClassConstraint(name, types); - } - - public parseInstanceDeclaration(): InstanceDeclaration { - let pubKeyword = null; - let t0 = this.getToken(); - if (t0.kind === SyntaxKind.PubKeyword) { - pubKeyword = t0; - t0 = this.getToken(); - } - this.assertToken(t0, SyntaxKind.InstanceKeyword); - let clause = null; - if (this.currentLineFoldHasToken(SyntaxKind.RArrowAlt)) { - let rarrowAlt; - const constraints = []; - for (;;) { - constraints.push(this.parseClassConstraint()); - const t2 = this.getToken(); - if (t2.kind === SyntaxKind.RArrowAlt) { - rarrowAlt = t2; - break; - } else if (t2.kind !== SyntaxKind.Comma) { - this.raiseParseError(t2, [ SyntaxKind.RArrowAlt, SyntaxKind.Comma ]) - } - } - clause = new ClassConstraintClause(constraints, rarrowAlt); - } - const name = this.expectToken(SyntaxKind.IdentifierAlt); - const types = []; - for (;;) { - const t3 = this.peekToken(); - if (t3.kind === SyntaxKind.BlockStart || t3.kind === SyntaxKind.LineFoldEnd) { - break; - } - const type = this.parseTypeExpression(); - types.push(type); - } - this.expectToken(SyntaxKind.BlockStart); - const elements = []; - loop: for (;;) { - const t4 = this.peekToken(); - let element; - switch (t4.kind) { - case SyntaxKind.BlockEnd: - this.getToken(); - break loop; - case SyntaxKind.LetKeyword: - element = this.parseLetDeclaration(); - break; - case SyntaxKind.TypeKeyword: - element = this.parseTypeDeclaration(); - break; - default: - this.raiseParseError(t4, [ SyntaxKind.LetKeyword, SyntaxKind.TypeKeyword, SyntaxKind.BlockEnd ]); - } - elements.push(element); - } - this.expectToken(SyntaxKind.LineFoldEnd); - return new InstanceDeclaration(pubKeyword, t0, clause, name, types, elements); - } - - public parseClassDeclaration(): ClassDeclaration { - let pubKeyword = null; - let t0 = this.getToken(); - if (t0.kind === SyntaxKind.PubKeyword) { - pubKeyword = t0; - t0 = this.getToken(); - } - this.assertToken(t0, SyntaxKind.ClassKeyword); - let clause = null; - if (this.currentLineFoldHasToken(SyntaxKind.RArrowAlt)) { - let rarrowAlt; - const constraints = []; - for (;;) { - constraints.push(this.parseClassConstraint()); - const t2 = this.getToken(); - if (t2.kind === SyntaxKind.RArrowAlt) { - rarrowAlt = t2; - break; - } else if (t2.kind !== SyntaxKind.Comma) { - this.raiseParseError(t2, [ SyntaxKind.RArrowAlt, SyntaxKind.Comma ]) - } - } - clause = new ClassConstraintClause(constraints, rarrowAlt); - } - const name = this.expectToken(SyntaxKind.IdentifierAlt); - const types = []; - for (;;) { - const t1 = this.peekToken(); - if (t1.kind === SyntaxKind.Identifier) { - const type = this.parseVarTypeExpression(); - types.push(type); - } else { - break; - } - } - this.expectToken(SyntaxKind.BlockStart); - const elements = []; - loop: for (;;) { - const t3 = this.peekToken(); - let element; - switch (t3.kind) { - case SyntaxKind.BlockEnd: - this.getToken(); - break loop; - case SyntaxKind.LetKeyword: - element = this.parseLetDeclaration(); - break; - case SyntaxKind.TypeKeyword: - element = this.parseTypeDeclaration(); - break; - default: - this.raiseParseError(t3, [ SyntaxKind.LetKeyword, SyntaxKind.TypeKeyword, SyntaxKind.BlockEnd ]); - } - elements.push(element); - } - this.expectToken(SyntaxKind.LineFoldEnd); - return new ClassDeclaration(pubKeyword, t0 as ClassKeyword, clause, name, types, elements); - } - - public parseSourceFileElement(): SourceFileElement { - const t0 = this.peekTokenAfterModifiers(); - switch (t0.kind) { - case SyntaxKind.LetKeyword: - return this.parseLetDeclaration(); - case SyntaxKind.ModKeyword: - return this.parseModuleDeclaration(); - case SyntaxKind.ImportKeyword: - return this.parseImportDeclaration(); - case SyntaxKind.StructKeyword: - return this.parseStructDeclaration(); - case SyntaxKind.InstanceKeyword: - return this.parseInstanceDeclaration(); - case SyntaxKind.ClassKeyword: - return this.parseClassDeclaration(); - case SyntaxKind.EnumKeyword: - return this.parseEnumDeclaration(); - case SyntaxKind.TypeKeyword: - return this.parseTypeDeclaration(); - case SyntaxKind.IfKeyword: - return this.parseIfStatement(); - default: - if (this.lookaheadIsAssignment()) { - return this.parseAssignStatement(); - } - return this.parseExpressionStatement(); - } - } - - public parseSourceFile(): SourceFile { - const elements = []; - let eof; - for (;;) { - const t0 = this.peekToken(); - if (t0.kind === SyntaxKind.EndOfFile) { - eof = t0; - break; - } - const element = this.parseSourceFileElement(); - elements.push(element); - } - return new SourceFile(this.file, elements, eof); - } - -} - diff --git a/bootstrap/js/compiler/src/passes/BoltToC.ts b/bootstrap/js/compiler/src/passes/BoltToC.ts deleted file mode 100644 index bbe410e00..000000000 --- a/bootstrap/js/compiler/src/passes/BoltToC.ts +++ /dev/null @@ -1,90 +0,0 @@ - -import { CBuiltinType, CBuiltinTypeKind, CCallExpr, CConstExpr, CDecl, CDir, CExpr, CExprStmt, CFuncDecl, CIncDir, CNode, CProgram, CRefExpr, CStmt } from "../c"; -import { Expression, Syntax, SyntaxKind } from "../cst"; -import type { Pass } from "../program"; -import { assert } from "../util"; - -interface Context { - body: CStmt[]; -} - -class BoltToC implements Pass { - - public apply(input: Syntax): CNode { - - assert(input.kind === SyntaxKind.SourceFile); - - const intType = new CBuiltinType(CBuiltinTypeKind.Int); - - const decls: (CDecl | CDir)[] = []; - - decls.push(new CIncDir("runtime.h")); - - const mainBody: CStmt[] = []; - - decls.push( - new CFuncDecl( - intType, - 'main', - [], - mainBody - ) - ); - - visit(input, { body: mainBody }); - - return new CProgram(decls); - - function visit(node: Syntax, context: Context): void { - - switch (node.kind) { - - case SyntaxKind.SourceFile: - { - for (const element of node.elements) { - visit(element, context); - } - break; - } - - case SyntaxKind.ExpressionStatement: - { - context.body.push( - new CExprStmt( - visitExpression(node.expression, context) - ) - ); - break; - } - - case SyntaxKind.LetDeclaration: - { - // TODO - break; - } - - } - - } - - function visitExpression(node: Expression, context: Context): CExpr { - switch (node.kind) { - case SyntaxKind.ReferenceExpression: - assert(node.modulePath.length === 0); - return new CRefExpr(node.name.text); - case SyntaxKind.CallExpression: - const operator = visitExpression(node.func, context); - const args = node.args.map(arg => visitExpression(arg, context)); - return new CCallExpr(operator, args); - case SyntaxKind.ConstantExpression: - return new CConstExpr(node.token.getValue()); - default: - throw new Error(`Unexpected ${node}`); - } - } - - } - -} - -export default BoltToC; diff --git a/bootstrap/js/compiler/src/passes/BoltToJS.ts b/bootstrap/js/compiler/src/passes/BoltToJS.ts deleted file mode 100644 index f322d6184..000000000 --- a/bootstrap/js/compiler/src/passes/BoltToJS.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Syntax } from "../cst"; -import { JSNode, JSProgram } from "../js"; -import type { Pass } from "../program"; - -export class BoltToJS implements Pass { - - public apply(input: Syntax): JSNode { - return new JSProgram([]); - } - -} - -export default BoltToJS; - diff --git a/bootstrap/js/compiler/src/passes/TypeclassDictPass.ts b/bootstrap/js/compiler/src/passes/TypeclassDictPass.ts deleted file mode 100644 index 529d5708b..000000000 --- a/bootstrap/js/compiler/src/passes/TypeclassDictPass.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { TypeExpression } from "../cst"; -import { - ExprBody, - NamedPattern, - LBrace, - RBrace, - LetKeyword, - LetDeclaration, - SourceFile, - Syntax, - SyntaxKind, - Identifier, - StructExpression, - StructExpressionField, - Equals, - InstanceDeclaration, - FunctionExpression, - Backslash, - canHaveInstanceDeclaration, - visitEachChild -} from "../cst"; -import { Pass } from "../program"; -import { assert } from "../util"; - -function encode(typeExpr: TypeExpression): string { - switch (typeExpr.kind) { - case SyntaxKind.ReferenceTypeExpression: - let out = ''; - if (typeExpr.modulePath.length > 0) { - out += '_xm'; - for (const [name, _dot] of typeExpr.modulePath) { - out += name + '_'; - } - } - return out + typeExpr.name.text; - default: - throw new Error(`Could not encode type.`) - } -} - -function lcfirst(text: string): string { - return text[0].toLowerCase() + text.substring(1); -} - -export class TypeclassDictPassing implements Pass { - - private mangleInstance(node: InstanceDeclaration): string { - return lcfirst(node.name.text) + '_' + node.types.map(encode).join(''); - } - - private visit(node: Syntax): Syntax { - if (canHaveInstanceDeclaration(node)) { - return visitEachChild(node, this.visit.bind(this)); - } - if (node.kind === SyntaxKind.InstanceDeclaration) { - const decl = new LetDeclaration( - node.pubKeyword, - new LetKeyword(), - null, - null, - new NamedPattern(new Identifier(null, this.mangleInstance(node))), - [], - null, // TODO - new ExprBody( - new Equals(), - new StructExpression( - [], - new LBrace(), - node.elements.map(element => { - assert(element.kind === SyntaxKind.LetDeclaration); - assert(element.pattern.kind === SyntaxKind.NamedPattern); - return new StructExpressionField( - new Identifier(null, element.pattern.name.text), - new Equals(), - new FunctionExpression([], new Backslash(), element.params, element.body!) - ); - }), - new RBrace(), - ) - ) - ); - return decl; - } - return node; - } - - public apply(input: SourceFile): SourceFile { - return this.visit(input) as SourceFile; - } - -} - - diff --git a/bootstrap/js/compiler/src/program.ts b/bootstrap/js/compiler/src/program.ts deleted file mode 100644 index 645fff343..000000000 --- a/bootstrap/js/compiler/src/program.ts +++ /dev/null @@ -1,77 +0,0 @@ -import path from "path"; -import fs from "fs" -import { parseSourceFile } from "."; -import { SourceFile, TextFile } from "./cst"; -import { ConsoleDiagnostics, Diagnostics } from "./diagnostics"; -import { Checker } from "./checker"; -import { Analyser } from "./analysis"; - -export interface Pass { - apply(input: In): Out; -} - -export interface Newable { - new (...args: any[]): T; -} - -type AnyPass = Pass; - -export enum TargetType { - Bolt, - C, - JS, - WebAssembly, - LLVM, -} - -export class PassManager { - - private registeredPasses: AnyPass[] = []; - - public add(pass: Newable) { - this.registeredPasses.push(new pass()); - } - - public apply(input: any): any { - for (const pass of this.registeredPasses) { - input = pass.apply(input); - } - return input; - } - -} - -export class Program { - - private sourceFilesByPath = new Map(); - - private analyser = new Analyser(); - - public constructor( - public fileNames: string[], - public diagnostics: Diagnostics = new ConsoleDiagnostics(), - ) { - for (const fileName of fileNames) { - const realPath = path.resolve(fileName); - const text = fs.readFileSync(realPath, 'utf-8'); - const file = new TextFile(fileName, text); - const sourceFile = parseSourceFile(file, diagnostics); - if (sourceFile !== null) { - this.sourceFilesByPath.set(realPath, sourceFile); - this.analyser.addSourceFile(sourceFile); - } - } - } - - public getSourceFiles(): Iterable { - return this.sourceFilesByPath.values(); - } - - public check(): void { - const checker = new Checker(this.analyser, this.diagnostics); - for (const sourceFile of this.getSourceFiles()) { - checker.check(sourceFile); - } - } - -} diff --git a/bootstrap/js/compiler/src/scanner.ts b/bootstrap/js/compiler/src/scanner.ts deleted file mode 100644 index 40d1e43b9..000000000 --- a/bootstrap/js/compiler/src/scanner.ts +++ /dev/null @@ -1,551 +0,0 @@ - -import { warn } from "console"; -import { - SyntaxKind, - Token, - Identifier, - StringLiteral, - EndOfFile, - BlockStart, - BlockEnd, - LineFoldEnd, - PubKeyword, - MutKeyword, - LetKeyword, - ImportKeyword, - TypeKeyword, - TextPosition, - Colon, - Comma, - Equals, - LParen, - RParen, - LBrace, - LBracket, - RBrace, - RBracket, - ReturnKeyword, - CustomOperator, - IdentifierAlt, - Integer, - TextFile, - Dot, - DotDot, - Assignment, - ElifKeyword, - ElseKeyword, - IfKeyword, - StructKeyword, - RArrow, - EnumKeyword, - MatchKeyword, - RArrowAlt, - VBar, - ForeignKeyword, - ModKeyword, - ClassKeyword, - InstanceKeyword, - Backslash, - ForallKeyword, - At, -} from "./cst" -import { Diagnostics } from "./diagnostics" -import { Stream, BufferedStream, assert } from "./util"; - -const EOF = '\uFFFF' - -function isUpper(ch: string): boolean { - return ch.toUpperCase() === ch; -} - -function isWhiteSpace(ch: string): boolean { - return /[\r\n\t ]/.test(ch); -} - -function isIdentPart(ch: string): boolean { - return /[a-zA-Z0-9_]/.test(ch); -} - -function isIdentStart(ch: string): boolean { - return /[a-zA-Z_]/.test(ch) -} - -function isDecimalDigit(ch: string): boolean { - return /[0-9]/.test(ch); -} - -function toDecimal(ch: string): number { - const code = ch.charCodeAt(0); - assert(code >= 48 && code <= 57); - return code - 48; -} - -function isOperatorPart(ch: string): boolean { - return /[+\-*\/%^&|$<>!?=]/.test(ch); -} - -export class ScanError extends Error { - - public constructor( - public file: TextFile, - public position: TextPosition, - public actual: string, - ) { - super(`Uncaught scanner error`); - } - -} - -export class Scanner extends BufferedStream { - - private textOffset = 0; - - public constructor( - public text: string, - public diagnostics: Diagnostics, - private file: TextFile, - public currPos: TextPosition = new TextPosition(0, 1, 1), - ) { - super(); - } - - private peekChar(offset = 1): string { - const i = this.textOffset + offset - 1; - return i < this.text.length ? this.text[i] : EOF; - } - - private getChar(): string { - let ch; - if (this.textOffset < this.text.length) { - ch = this.text[this.textOffset++]; - this.currPos.offset++; - } else { - ch = EOF; - } - if (ch === '\n') { - this.currPos.line++; - this.currPos.column = 1; - } else { - this.currPos.column++; - } - return ch; - } - - private takeWhile(pred: (ch: string) => boolean): string { - let out = '' - for (;;) { - const c0 = this.peekChar() - if (!pred(c0)) { - break; - } - this.getChar() - out += c0; - } - return out; - } - - private getCurrentPosition(): TextPosition { - return this.currPos.clone(); - } - - public read(): Token { - - let c0: string; - - // Skip whitespace and comments - for (;;) { - - for (;;) { - c0 = this.peekChar(); - if (isWhiteSpace(c0)) { - this.getChar(); - continue; - } - if (c0 === '#') { - const line = this.currPos.line; - this.getChar(); - for (;;) { - const c1 = this.peekChar(); - if (!isWhiteSpace(c1) || c1 === '\n' || c1 === EOF) { - break; - } - this.getChar(); - } - let text = ''; - for (;;) { - const c1 = this.getChar(); - if (c1 === '\n' || c1 === EOF) { - break; - } - text += c1; - } - if (text[0] === '@') { - const scanner = new Scanner(text, this.diagnostics, this.file, this.getCurrentPosition()); - this.file.comments.set(line, scanner.getAll()); - } - continue; - } - - // We failed to match a newline or line comment, so there's nothing to skip - break; - - } - - const startPos = this.getCurrentPosition(); - this.getChar(); - - switch (c0) { - - case '"': - { - let contents = ''; - let escaping = false; - for (;;) { - if (escaping) { - const startPos = this.getCurrentPosition(); - const c1 = this.getChar(); - switch (c1) { - case 'a': contents += '\a'; break; - case 'b': contents += '\b'; break; - case 'f': contents += '\f'; break; - case 'n': contents += '\n'; break; - case 'r': contents += '\r'; break; - case 't': contents += '\t'; break; - case 'v': contents += '\v'; break; - case '0': contents += '\0'; break; - case '\'': contents += '\''; break; - case '\"': contents += '\"'; break; - default: - throw new ScanError(this.file, startPos, c1); - } - escaping = false; - } else { - const c1 = this.getChar(); - if (c1 === '"') { - break; - } else { - contents += c1; - } - } - } - return new StringLiteral(startPos, contents); - } - - case EOF: - { - return new EndOfFile(startPos); - } - - case '@': return new At(startPos); - case '\\': return new Backslash(startPos); - case '(': return new LParen(startPos); - case ')': return new RParen(startPos); - case '[': return new LBracket(startPos); - case ']': return new RBracket(startPos); - case '{': return new LBrace(startPos); - case '}': return new RBrace(startPos); - case ',': return new Comma(startPos); - case ':': - const text = this.takeWhile(isOperatorPart); - if (text === '') { - return new Colon(startPos); - } else if (text === '=') { - return new Assignment(startPos, ':'); - } else { - throw new ScanError(this.file, startPos, ':' + text); - } - case '.': { - const dots = c0 + this.takeWhile(ch => ch === '.'); - if (dots === '.') { - return new Dot(startPos); - } else if (dots === '..') { - return new DotDot(startPos); - } else { - throw new ScanError(this.file, startPos, dots); - } - } - - case '+': - case '-': - case '*': - case '/': - case '%': - case '&': - case '^': - case '|': - case '$': - case '<': - case '>': - case '=': - case '!': - case '?': - { - const text = c0 + this.takeWhile(isOperatorPart); - if (text === '->') { - return new RArrow(startPos); - } else if (text === '=>') { - return new RArrowAlt(startPos); - } else if (text === '|') { - return new VBar(startPos); - } else if (text === '=') { - return new Equals(startPos); - } else if (text.endsWith('=') && text[text.length-2] !== '=') { - return new Assignment(startPos, text.substring(0, text.length-1)); - } else { - return new CustomOperator(startPos, text); - } - } - - case '0': - { - const c1 = this.peekChar(); - switch (c1) { - case 'x': // TODO - case 'o': // TODO - case 'b': // TODO - } - } - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - let value = BigInt(toDecimal(c0)); - for (;;) { - const c1 = this.peekChar(); - if (!isDecimalDigit(c1)) { - break; - } - this.getChar(); - value = value * BigInt(10) + BigInt(toDecimal(c1)); - } - return new Integer(startPos, value, 10); - } - - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '_': - { - const text = c0 + this.takeWhile(isIdentPart); - switch (text) { - case 'trait': return new ClassKeyword(startPos); - case 'impl': return new InstanceKeyword(startPos); - case 'import': return new ImportKeyword(startPos); - case 'pub': return new PubKeyword(startPos); - case 'mut': return new MutKeyword(startPos); - case 'let': return new LetKeyword(startPos); - case 'import': return new ImportKeyword(startPos); - case 'return': return new ReturnKeyword(startPos); - case 'type': return new TypeKeyword(startPos); - case 'if': return new IfKeyword(startPos); - case 'else': return new ElseKeyword(startPos); - case 'elif': return new ElifKeyword(startPos); - case 'struct': return new StructKeyword(startPos); - case 'enum': return new EnumKeyword(startPos); - case 'match': return new MatchKeyword(startPos); - case 'foreign': return new ForeignKeyword(startPos); - case 'mod': return new ModKeyword(startPos); - case 'forall': return new ForallKeyword(startPos); - default: - if (isUpper(text[0])) { - return new IdentifierAlt(startPos, text); - } else { - return new Identifier(startPos, text); - } - } - } - - default: - - // Nothing matched, so the current character is unrecognisable - throw new ScanError(this.file, startPos, c0); - } - - } - - } - - public getAll(): Token[] { - const tokens = []; - for (;;) { - const t0 = this.get(); - if (t0.kind === SyntaxKind.EndOfFile) { - break; - } - tokens.push(t0); - } - return tokens; - } - -} - -const enum FrameType { - Block, - LineFold, - Fallthrough, -} - -const INIT_POS = new TextPosition(0, 0, 0); - -export class Punctuator extends BufferedStream { - - private referencePositions: TextPosition[] = [ INIT_POS ]; - - private frameTypes: FrameType[] = [ FrameType.Block ]; - - public constructor( - private tokens: Stream, - ) { - super(); - } - - public read(): Token { - - const t0 = this.tokens.peek(1); - - switch (t0.kind) { - case SyntaxKind.LBrace: - this.frameTypes.push(FrameType.Fallthrough); - break; - case SyntaxKind.EndOfFile: - { - if (this.frameTypes.length === 1) { - return t0; - } - const frameType = this.frameTypes.pop()!; - switch (frameType) { - case FrameType.LineFold: - return new LineFoldEnd(t0.getStartPosition()); - case FrameType.Block: - return new BlockEnd(t0.getStartPosition()); - } - } - } - - const refPos = this.referencePositions[this.referencePositions.length-1]; - const frameType = this.frameTypes[this.frameTypes.length-1]; - - switch (frameType) { - - case FrameType.Fallthrough: - { - if (t0.kind === SyntaxKind.RBrace) { - this.frameTypes.pop()!; - } - this.tokens.get(); - return t0; - } - - case FrameType.LineFold: - { - - // This important check verifies we're still inside the line-fold. If - // we aren't, we need to clean up the stack a bit and eventually return - // a token that indicates the line-fold ended. - if (t0.getStartLine() > refPos.line - && t0.getStartColumn() <= refPos.column) { - this.frameTypes.pop(); - this.referencePositions.pop(); - return new LineFoldEnd(t0.getStartPosition()); - } - - const t1 = this.tokens.peek(2); - if (t0.kind === SyntaxKind.Dot && t0.getEndLine() < t1.getStartLine()) { - this.tokens.get(); - this.frameTypes.push(FrameType.Block); - return new BlockStart(t0.getStartPosition()); - } - - // If we got here, this is an ordinary token that is part of the - // line-fold. Make sure to consume it and return it to the caller. - this.tokens.get(); - return t0; - } - - case FrameType.Block: - { - - if (t0.getStartColumn() <= refPos.column) { - - // We only get here if the current token is less indented than the - // current reference token. Pop the block indicator and leave the - // reference position be for the edge case where the parent line-fold - // continues after the block. - this.frameTypes.pop(); - return new BlockEnd(t0.getStartPosition()); - - } - - this.frameTypes.push(FrameType.LineFold); - this.referencePositions.push(t0.getStartPosition()); - - // In theory, we could explictly issue a LineFoldStart and let all - // tokens be passed through in the FrameType.LineFold case. It does add - // more logic to the parser for no real benefit, which is why it was - // omitted. - this.tokens.get(); - return t0; - } - - } - - } - -} - - diff --git a/bootstrap/js/compiler/src/scope.ts b/bootstrap/js/compiler/src/scope.ts deleted file mode 100644 index 9adb9fe76..000000000 --- a/bootstrap/js/compiler/src/scope.ts +++ /dev/null @@ -1,190 +0,0 @@ -import { warn } from "console"; -import { LetDeclaration, Pattern, SourceFile, Syntax, SyntaxKind } from "./cst"; -import { MultiMap, assertNever } from "./util"; - -export type NodeWithScope - = SourceFile - | LetDeclaration - -export function isNodeWithScope(node: Syntax): node is NodeWithScope { - return node.kind === SyntaxKind.SourceFile - || node.kind === SyntaxKind.LetDeclaration; -} - -export const enum Symkind { - Var = 1, - Type = 2, - Module = 4, - Typeclass = 8, - Any = Var | Type | Module -} - -export class Scope { - - private mapping = new MultiMap(); - - public constructor( - public node: NodeWithScope, - ) { - this.scan(node); - } - - public get depth(): number { - let out = 0; - let curr = this.getParent(); - while (curr !== null) { - out++; - curr = curr.getParent(); - } - return out; - } - - private getParent(): Scope | null { - let curr = this.node.parent; - while (curr !== null) { - if (isNodeWithScope(curr)) { - return curr.getScope(); - } - curr = curr.parent; - } - return null; - } - - private add(name: string, node: Syntax, kind: Symkind): void { - this.mapping.add(name, [kind, node]); - } - - private scan(node: Syntax): void { - switch (node.kind) { - case SyntaxKind.ClassDeclaration: - { - this.add(node.name.text, node, Symkind.Typeclass); - } - case SyntaxKind.InstanceDeclaration: - case SyntaxKind.SourceFile: - { - for (const element of node.elements) { - this.scan(element); - } - break; - } - case SyntaxKind.ModuleDeclaration: - { - this.add(node.name.text, node, Symkind.Module); - for (const element of node.elements) { - this.scan(element); - } - break; - } - case SyntaxKind.ExpressionStatement: - case SyntaxKind.ReturnStatement: - case SyntaxKind.IfStatement: - break; - case SyntaxKind.TypeDeclaration: - { - this.add(node.name.text, node, Symkind.Type); - break; - } - case SyntaxKind.EnumDeclaration: - { - this.add(node.name.text, node, Symkind.Type); - if (node.members !== null) { - for (const member of node.members) { - this.add(member.name.text, member, Symkind.Var); - } - } - } - case SyntaxKind.StructDeclaration: - { - this.add(node.name.text, node, Symkind.Type); - // TODO remove this? - // this.add(node.name.text, node, Symkind.Var); - break; - } - case SyntaxKind.LetDeclaration: - { - for (const param of node.params) { - switch (param.kind) { - case SyntaxKind.PlainParam: - this.scanPattern(param.pattern, param); - break; - case SyntaxKind.InstanceParam: - this.add(node.name.text, param, Symkind.Var); - break; - default: - assertNever(param); - } - } - if (node === this.node) { - if (node.body !== null && node.body.kind === SyntaxKind.BlockBody) { - for (const element of node.body.elements) { - this.scan(element); - } - } - } else { - this.scanPattern(node.pattern, node); - } - break; - } - default: - assertNever(node); - } - } - - private scanPattern(node: Pattern, decl: Syntax): void { - switch (node.kind) { - case SyntaxKind.LiteralPattern: - break; - case SyntaxKind.NamedPattern: - { - this.add(node.name.text, decl, Symkind.Var); - break; - } - case SyntaxKind.NestedPattern: - this.scanPattern(node.pattern, decl); - break; - case SyntaxKind.NamedTuplePattern: - { - for (const element of node.elements) { - this.scanPattern(element, decl); - } - break; - } - case SyntaxKind.StructPattern: - { - for (const member of node.members) { - switch (member.kind) { - case SyntaxKind.StructPatternField: - { - this.scanPattern(member.pattern, decl); - break; - } - case SyntaxKind.PunnedStructPatternField: - { - this.add(member.name.text, decl, Symkind.Var); - break; - } - } - } - break; - } - default: - throw new Error(`Unexpected ${node}`); - } - } - - public lookup(name: string, expectedKind: Symkind = Symkind.Any): Syntax | null { - let curr: Scope | null = this; - do { - for (const [kind, decl] of curr.mapping.get(name)) { - if (kind & expectedKind) { - return decl; - } - } - curr = curr.getParent(); - } while (curr !== null); - return null; - } - -} - diff --git a/bootstrap/js/compiler/src/test/eager-solving-global.bolt b/bootstrap/js/compiler/src/test/eager-solving-global.bolt deleted file mode 100644 index 948ac4b39..000000000 --- a/bootstrap/js/compiler/src/test/eager-solving-global.bolt +++ /dev/null @@ -1,6 +0,0 @@ - -let foo n. - # @expect_diagnostic "TypeMismatch" - let f : String = 1 - return n - diff --git a/bootstrap/js/compiler/src/test/enum-declaration-app.bolt b/bootstrap/js/compiler/src/test/enum-declaration-app.bolt deleted file mode 100644 index 0964bf264..000000000 --- a/bootstrap/js/compiler/src/test/enum-declaration-app.bolt +++ /dev/null @@ -1,15 +0,0 @@ - -enum Maybe a. - Just a - Nothing - -enum App a b. - MkApp (a b) - -enum Foo. - MkFoo (App Maybe Int) - -let f : Foo = MkFoo (MkApp (Just 1)) - -# @expect_diagnostic "TypeMismatch" -let g : Foo = MkFoo (MkApp (Just "foo")) diff --git a/bootstrap/js/compiler/src/test/enum-declaration-maybe.bolt b/bootstrap/js/compiler/src/test/enum-declaration-maybe.bolt deleted file mode 100644 index a03e808c0..000000000 --- a/bootstrap/js/compiler/src/test/enum-declaration-maybe.bolt +++ /dev/null @@ -1,10 +0,0 @@ - -enum Maybe a. - Just a - Nothing - -let right_1 : Maybe Int = Just 1 -let right_2 : Maybe String = Just "foo" -# @expect_diagnostic "TypeMismatch" -let wrong : Maybe Int = Just "foo" - diff --git a/bootstrap/js/compiler/src/test/mutual-recursion-2.bolt b/bootstrap/js/compiler/src/test/mutual-recursion-2.bolt deleted file mode 100644 index 8c6ae999f..000000000 --- a/bootstrap/js/compiler/src/test/mutual-recursion-2.bolt +++ /dev/null @@ -1,16 +0,0 @@ - -let is_even x. - if x == 0. - return True - else. - return is_odd (x-1) - -let is_odd x. - if x == 1. - return False - else. - return is_even (x-1) - -@:Bool is_even 1 -# @expect_diagnostic "TypeMismatch" -is_even True diff --git a/bootstrap/js/compiler/src/test/mutual-recursion.bolt b/bootstrap/js/compiler/src/test/mutual-recursion.bolt deleted file mode 100644 index 6e8d41d2d..000000000 --- a/bootstrap/js/compiler/src/test/mutual-recursion.bolt +++ /dev/null @@ -1,8 +0,0 @@ - -let fac n = fac_2 n - -let fac_2 n = fac_3 n + fac n - -let fac_3 n = fac_2 (n-1) - -@:Int fac 1 diff --git a/bootstrap/js/compiler/src/test/nested-definitions.bolt b/bootstrap/js/compiler/src/test/nested-definitions.bolt deleted file mode 100644 index 3047a0c66..000000000 --- a/bootstrap/js/compiler/src/test/nested-definitions.bolt +++ /dev/null @@ -1,6 +0,0 @@ - -let foo x. - let bar y z = y + z - x - return bar 1 2 - -@:Int foo 3 diff --git a/bootstrap/js/compiler/src/test/return-types-polymorphic.bolt b/bootstrap/js/compiler/src/test/return-types-polymorphic.bolt deleted file mode 100644 index d6ee4bb74..000000000 --- a/bootstrap/js/compiler/src/test/return-types-polymorphic.bolt +++ /dev/null @@ -1,6 +0,0 @@ - -let id x = x - -@:Int id 1 -@:String id "foo" -@:Bool id True diff --git a/bootstrap/js/compiler/src/test/tuple-access.bolt b/bootstrap/js/compiler/src/test/tuple-access.bolt deleted file mode 100644 index 0a66acd87..000000000 --- a/bootstrap/js/compiler/src/test/tuple-access.bolt +++ /dev/null @@ -1,5 +0,0 @@ - -let t1 = (1, True) - -@:Int t1.0 -@:Bool t1.1 diff --git a/bootstrap/js/compiler/src/test/typecheck.md b/bootstrap/js/compiler/src/test/typecheck.md deleted file mode 100644 index 89af92632..000000000 --- a/bootstrap/js/compiler/src/test/typecheck.md +++ /dev/null @@ -1,271 +0,0 @@ - -## Record types can be unified without causing an error - -``` -struct Person. - email: String - age: Int - -let bert - = Person { - email = "bar@boo.com", - age = 32 - } -let bob - = Person { - email = "boo", - age = 43 - } - -bert == bob -``` - -## Return types are polymorphic - -``` -let id x = x - -id 1 -id "foo" -id True -``` - -## Nested definitions work - -``` -let foo x. - let bar y z = y + z - x - bar - -foo True -``` - -## Everything that can be type-checked will be type-checked - -``` -let foo n. - let f : String = 1 - return n -``` - -## Recursive definitions do not cause infinite loops in the type-checker - -``` -let fac n = fac_2 n - -let fac_2 n = fac_3 n + fac n - -let fac_3 n = fac_2 (n-1) - -not (fac 1) -``` - -## Example with mutual recursion works - -``` -let is_even x. - if x == 0. - return True - else. - return is_odd (x-1) - -let is_odd x. - if x == 1. - return False - else. - return is_even (x-1) - -not (is_even True) -``` - -## Polymorphic records can be partially typed - -``` -struct Timestamped a b. - first: a - second: b - timestamp: Int - -type Foo = Timestamped Int - -type Bar = Foo Int - -let t : Bar = Timestamped { first = "bar", second = 1, timestamp = 12345 } -``` - -## Extensible records work - -``` -struct Timestamped a. - data: a - timestamp: Int - -let t = Timestamped { data = "foo", timestamp = 12345 } - -t.data == 1 -t.data == "foo" - -let u = Timestamped { data = True, timestamp = 12345 } - -u.data == "foo" -u.data == False -``` - -## A recursive function is automatically instantiated - -``` -let fac n. - if n == 0. - return 1 - else. - return n * fac (n-"foo") -``` - -## Enum-declarations are correctly typed - -``` -enum Maybe a. - Just a - Nothing - -let right_1 : Maybe Int = Just 1 -let right_2 : Maybe String = Just "foo" -let wrong : Maybe Int = Just "foo" -``` - -## Kind inference works - -``` -enum Maybe a. - Just a - Nothing - -let foo_1 : Maybe -let foo_2 : Maybe Int -let foo_3 : Maybe Int Int -let foo_4 : Maybe Int Int Int -``` - -## Can indirectly apply a polymorphic datatype to some type - -``` -enum Maybe a. - Just a - Nothing - -enum App a b. - MkApp (a b) - -enum Foo. - MkFoo (App Maybe Int) - -let f : Foo = MkFoo (MkApp (Just 1)) -``` - -## Record-declarations inside enum-declarations work - -``` -enum Shape. - Circle. - radius: Int - Rect. - width: Int - height: Int - -let z = Circle { radius = 12 } -let a = Rect { width = 12, height = 12 } - -a == z -``` - -## Tuple types are correctly inferred and unified - -``` -let foo_1 : (Int, Int, Int) = (1, 2, 3) -let foo_2 : (Int, Int, Int) = (1, 2, "foo") -``` - -## Module references work - -``` -mod CD. - mod A. - struct Foo - mod B. - let alpha: A.Foo -``` - -## Rest-expressions on extensible records work - -``` -let foo { x, y, .. } = x + y - -foo { x = 1, y = 2 } -foo { x = 1, y = 2, z = 3 } -foo { x = 1, y = 2, z = 3, a = 4 } -``` - -## A polymorphic function is properly generalized when assigned to a new variable - -``` -let id x = x -let id2 = id -let id3 = id - -id3 1 -id3 "bla" - -id2 1 -id2 "bla" -```` - -## Can omit a field from a record type - -``` -let remove_x { x, ..rest } = rest -let p1 = { x = 1, y = 2, z = 3 } -(remove_x p1).x -``` - -## Can project a field from some other fields - -``` -struct Point. - x: Int - y: Int - -let project { x, y, .. } = { x, y } - -let p2 : Point = project { x = 1, y = 2 } -let p3 : Point = project { x = 1, y = 2, z = 3 } -let p3 : Point = project { x = 1, y = 2, z = 3, a = 4 } -``` - -## Can assign records to a struct-type - -``` -struct Vec2. - x: Int - y: Int - -let p1 : Vec2 = { x = 1, y = 2 } -``` - -``` -struct Vec3. - x: Int - y: Int - z: Int - -let p1 : Vec3 = { x = 1, y = 2, z = 3 } -``` - -This one should fail: - -``` -struct Vec2. - x: Int - y: Int - -let p1 : Vec2 = { x = 1, y = 2, z = 3 } -``` diff --git a/bootstrap/js/compiler/src/test/unify-similar-records.bolt b/bootstrap/js/compiler/src/test/unify-similar-records.bolt deleted file mode 100644 index 5fb205d3b..000000000 --- a/bootstrap/js/compiler/src/test/unify-similar-records.bolt +++ /dev/null @@ -1,18 +0,0 @@ - -struct Person. - email: String - age: Int - -let bert - = Person { - email = "bar@boo.com", - age = 32 - } -let bob - = Person { - email = "boo", - age = 43 - } - -# @expect_diagnostic TypeMismatch -bert == bob diff --git a/bootstrap/js/compiler/src/types.ts b/bootstrap/js/compiler/src/types.ts deleted file mode 100644 index 253e59a28..000000000 --- a/bootstrap/js/compiler/src/types.ts +++ /dev/null @@ -1,654 +0,0 @@ -import { InspectOptions } from "util"; -import { ClassDeclaration, EnumDeclaration, StructDeclaration, Syntax } from "./cst"; -import { InspectFn, assert, assertNever, toStringTag } from "./util"; -import { warn } from "console"; - -export enum TypeKind { - Arrow, - RegularVar, - RigidVar, - Con, - App, - Nominal, - Field, - Nil, - Absent, - Present, - Tag, -} - -export abstract class TypeBase { - - public abstract readonly kind: TypeKind; - - public parent: Type = this as unknown as Type; - - public next: Type = this as any; - - public abstract node: Syntax | null; - - public static join(a: Type, b: Type): void { - const keep = a.next; - a.next = b; - b.next = keep; - } - - public abstract getTypeVars(): Iterable; - - public abstract shallowClone(): Type; - - public abstract substitute(sub: TVSub): Type; - - public find(): Type { - let curr = this as unknown as Type; - while (curr.parent !== curr) { - curr.parent = curr.parent.parent; - curr = curr.parent; - } - return curr; - } - - public set(newType: Type): void { - this.find().parent = newType; - } - - public hasTypeVar(tv: TRegularVar): boolean { - for (const other of this.getTypeVars()) { - if (tv.id === other.id) { - return true; - } - } - return false; - } - - public abstract [toStringTag](depth: number, options: InspectOptions, inspect: InspectFn): string; - -} - -export function isType(value: any): value is Type { - return value !== undefined - && value !== null - && value instanceof TypeBase; -} - -abstract class TVarBase extends TypeBase { - - public context = new Set(); - -} - -export function isTVar(type: Type): type is TVar { - return type.kind === TypeKind.RegularVar - || type.kind === TypeKind.RigidVar; -} - -export class TRigidVar extends TVarBase { - - public readonly kind = TypeKind.RigidVar; - - public constructor( - public id: number, - public displayName: string, - public node: Syntax | null = null - ) { - super(); - } - - public *getTypeVars(): Iterable { - yield this; - } - - public shallowClone(): TRigidVar { - return new TRigidVar( - this.id, - this.displayName, - this.node - ); - } - - public substitute(sub: TVSub): Type { - const other = sub.get(this); - return other === undefined - ? this : other.substitute(sub); - } - - public [toStringTag]() { - return this.displayName; - } - -} - -export class TRegularVar extends TVarBase { - - public readonly kind = TypeKind.RegularVar; - - public constructor( - public id: number, - public node: Syntax | null = null, - ) { - super(); - } - - public *getTypeVars(): Iterable { - yield this; - } - - public shallowClone(): TRegularVar { - return new TRegularVar(this.id, this.node); - } - - public substitute(sub: TVSub): Type { - const other = sub.get(this); - return other === undefined - ? this : other.substitute(sub); - } - - public [toStringTag]() { - return 'a' + this.id; - } - -} - -export class TNil extends TypeBase { - - public readonly kind = TypeKind.Nil; - - public constructor( - public node: Syntax | null = null - ) { - super(); - } - - public substitute(_sub: TVSub): Type { - return this; - } - - public shallowClone(): Type { - return new TNil(this.node); - } - - public *getTypeVars(): Iterable { - - } - - public [toStringTag]() { - return '∂Abs'; - } - -} - -export class TAbsent extends TypeBase { - - public readonly kind = TypeKind.Absent; - - public constructor( - public node: Syntax | null = null, - ) { - super(); - } - - public substitute(_sub: TVSub): Type { - return this; - } - - public shallowClone(): Type { - return new TAbsent(this.node); - } - - public *getTypeVars(): Iterable { - - } - - public [toStringTag]() { - return 'Abs'; - } - -} - -export class TPresent extends TypeBase { - - public readonly kind = TypeKind.Present; - - public constructor( - public type: Type, - public node: Syntax | null = null, - ) { - super(); - } - - public substitute(sub: TVSub): Type { - return new TPresent(this.type.substitute(sub), this.node); - } - - public getTypeVars(): Iterable { - return this.type.getTypeVars(); - } - - public shallowClone(): Type { - return new TPresent(this.type, this.node); - } - - public [toStringTag](_depth: number, options: InspectOptions, inspect: InspectFn) { - return 'Pre ' + inspect(this.type, options); - } - -} - -export class TArrow extends TypeBase { - - public readonly kind = TypeKind.Arrow; - - public constructor( - public paramType: Type, - public returnType: Type, - public node: Syntax | null = null, - ) { - super(); - } - - public static build(paramTypes: Type[], returnType: Type, node: Syntax | null = null): Type { - let result = returnType; - for (let i = paramTypes.length-1; i >= 0; i--) { - result = new TArrow(paramTypes[i], result, node); - } - return result; - } - - public *getTypeVars(): Iterable { - yield* this.paramType.getTypeVars(); - yield* this.returnType.getTypeVars(); - } - - public shallowClone(): TArrow { - return new TArrow( - this.paramType, - this.returnType, - this.node, - ) - } - - public substitute(sub: TVSub): Type { - let changed = false; - const newParamType = this.paramType.substitute(sub); - if (newParamType !== this.paramType) { - changed = true; - } - const newReturnType = this.returnType.substitute(sub); - if (newReturnType !== this.returnType) { - changed = true; - } - return changed ? new TArrow(newParamType, newReturnType, this.node) : this; - } - - public [toStringTag](_depth: number, options: InspectOptions, inspect: InspectFn) { - return inspect(this.paramType, options) + ' -> ' + inspect(this.returnType, options); - } - -} - -export class TCon extends TypeBase { - - public readonly kind = TypeKind.Con; - - public constructor( - public id: number, - public displayName: string, - public node: Syntax | null = null, - ) { - super(); - } - - public *getTypeVars(): Iterable { - - } - - public shallowClone(): TCon { - return new TCon( - this.id, - this.displayName, - this.node, - ); - } - - public substitute(_sub: TVSub): Type { - return this; - } - - public [toStringTag](_depth: number, _options: InspectOptions, _inspect: InspectFn) { - return this.displayName; - } - -} - -export function buildTupleType(types: Type[]): Type { - let out: Type = new TNil(); - types.forEach((type, i) => { - out = new TField(i, new TPresent(type), out); - }); - return out; -} - -export function buildTupleTypeWithLoc(elements: Array<[Syntax, Type]>, node: Syntax) { - let out: Type = new TNil(node); - elements.forEach(([el, type], i) => { - out = new TField(i, new TPresent(type, el), out); - }); - return out; -} - -export class TField extends TypeBase { - - public readonly kind = TypeKind.Field; - - public constructor( - public name: string | number, - public type: Type, - public restType: Type, - public node: Syntax | null = null, - ) { - super(); - } - - public getTypeVars(): Iterable { - return this.type.getTypeVars(); - } - - public shallowClone(): TField { - return new TField( - this.name, - this.type, - this.restType, - this.node, - ); - } - - public static build(fields: Map, restType: Type): Type { - let out = restType; - for (const [name, type] of fields) { - out = new TField(name, new TPresent(type, type.node), out, type.node); - } - return out - } - - public static sort(type: Type): Type { - const fields = new Map(); - while (type.kind === TypeKind.Field) { - fields.set(type.name, type); - type = type.restType; - } - const keys = [...fields.keys()].sort().reverse(); - let out: Type = type; - for (const key of keys) { - const field = fields.get(key)!; - out = new TField(key, field.type, out, field.node); - } - return out - } - - public substitute(sub: TVSub): Type { - const newType = this.type.substitute(sub); - const newRestType = this.restType.substitute(sub); - return newType !== this.type || newRestType !== this.restType - ? new TField(this.name, newType, newRestType, this.node) : this; - } - - public [toStringTag](_depth: number, options: InspectOptions, inspect: InspectFn) { - let out = '{ ' + this.name + ': ' + inspect(this.type, options); - let type = this.restType; - while (type.kind === TypeKind.Field) { - out += '; ' + type.name + ': ' + inspect(type.type, options); - type = type.restType; - } - if (type.kind !== TypeKind.Nil) { - out += '; ' + inspect(type, options); - } - return out + ' }' - } - -} - -export class TApp extends TypeBase { - - public readonly kind = TypeKind.App; - - public constructor( - public left: Type, - public right: Type, - public node: Syntax | null = null - ) { - super(); - } - - public static build(resultType: Type, types: Type[], node: Syntax | null = null): Type { - for (let i = 0; i < types.length; i++) { - resultType = new TApp(resultType, types[i], node); - } - return resultType; - } - - public *getTypeVars(): Iterable { - yield* this.left.getTypeVars(); - yield* this.right.getTypeVars(); - } - - public shallowClone() { - return new TApp( - this.left, - this.right, - this.node - ); - } - - public substitute(sub: TVSub): Type { - let changed = false; - const newOperatorType = this.left.substitute(sub); - if (newOperatorType !== this.left) { - changed = true; - } - const newArgType = this.right.substitute(sub); - if (newArgType !== this.right) { - changed = true; - } - return changed ? new TApp(newOperatorType, newArgType, this.node) : this; - } - - public [toStringTag](_depth: number, options: InspectOptions, inspect: InspectFn) { - return inspect(this.left, options) + ' ' + inspect(this.right, options); - } - -} - -export const labelTag = '____tag'; - -// export class TTag extends TypeBase { - -// public readonly kind = TypeKind.Tag; - -// public constructor( -// public name: string, -// public node: Syntax | null = null, -// ) { -// super(); -// } - -// public shallowClone(): Type { -// return new TTag( -// this.name, -// this.node, -// ); -// } - -// public *getTypeVars(): Iterable { -// // noop -// } - -// public substitute(sub: TVSub): Type { -// return this; -// } - -// public [toStringTag]() { -// return this.name; -// } - -// } - -export type Type - = TCon - | TArrow - | TRigidVar - | TRegularVar - | TApp - | TField - | TNil - | TPresent - | TAbsent - // | TTag - -export type TVar - = TRegularVar - | TRigidVar - - -export function getSignature(type: Type): Type[] { - const out = []; - let stack = [ type ]; - for (;;) { - const child = stack.pop()!; - if (child.kind === TypeKind.App) { - stack.push(child.left); - stack.push(child.right); - } else { - out.push(child); - } - if (stack.length === 0) { - break; - } - } - return out; -} - -export function isSignature(type: Type): boolean { - return type.kind === TypeKind.Con - || type.kind === TypeKind.App; -} - -export function assignableTo(left: Type, right: Type): boolean { - if (left.kind === TypeKind.Con && right.kind == TypeKind.Con) { - return left.id === right.id; - } - return false; -} - -export function typesEqual(a: Type, b: Type): boolean { - if (a.kind !== b.kind) { - return false; - } - switch (a.kind) { - case TypeKind.Con: - assert(b.kind === TypeKind.Con); - return a.id === b.id; - case TypeKind.RegularVar: - assert(b.kind === TypeKind.RegularVar); - return a.id === b.id; - case TypeKind.RigidVar: - assert(b.kind === TypeKind.RigidVar); - return a.id === b.id; - case TypeKind.Nil: - case TypeKind.Absent: - return true; - case TypeKind.App: - assert(b.kind === TypeKind.App); - return typesEqual(a.left, b.left) && typesEqual(a.right, b.right); - case TypeKind.Field: - assert(b.kind === TypeKind.Field); - return a.name === b.name && typesEqual(a.type, b.type) && typesEqual(a.restType, b.restType); - case TypeKind.Arrow: - assert(b.kind === TypeKind.Arrow); - return typesEqual(a.paramType, b.paramType) && typesEqual(a.returnType, b.returnType); - case TypeKind.Present: - assert(b.kind === TypeKind.Present); - return typesEqual(a.type, b.type); - default: - assertNever(a); - } -} - -export class TVSet { - - private mapping = new Map(); - - public constructor(iterable?: Iterable) { - if (iterable !== undefined) { - for (const tv of iterable) { - this.add(tv); - } - } - } - - public add(tv: TVar): void { - this.mapping.set(tv.id, tv); - } - - public has(tv: TVar): boolean { - return this.mapping.has(tv.id); - } - - public intersectsType(type: Type): boolean { - for (const tv of type.getTypeVars()) { - if (this.has(tv)) { - return true; - } - } - return false; - } - - public delete(tv: TVar): void { - this.mapping.delete(tv.id); - } - - public get size(): number { - return this.mapping.size; - } - - public [Symbol.iterator](): Iterator { - return this.mapping.values(); - } - - public [toStringTag](_depth: number, options: InspectOptions, inspect: InspectFn) { - let out = '{ '; - let first = true; - for (const tv of this) { - if (first) first = false; - else out += ', '; - out += inspect(tv, options); - } - return out + ' }'; - } - -} - -export class TVSub { - - private mapping = new Map(); - - public set(tv: TVar, type: Type): void { - this.mapping.set(tv.id, type); - } - - public get(tv: TVar): Type | undefined { - return this.mapping.get(tv.id); - } - - public has(tv: TVar): boolean { - return this.mapping.has(tv.id); - } - - public delete(tv: TVar): void { - this.mapping.delete(tv.id); - } - - public values(): Iterable { - return this.mapping.values(); - } - -} diff --git a/bootstrap/js/compiler/src/util.ts b/bootstrap/js/compiler/src/util.ts deleted file mode 100644 index 027ede410..000000000 --- a/bootstrap/js/compiler/src/util.ts +++ /dev/null @@ -1,262 +0,0 @@ - -import path from "path" -import stream from "stream" -import { InspectOptions } from "util"; - -export const isDebug = process.env['NODE_ENV'] === 'development'; - -export const toStringTag = Symbol.for('nodejs.util.inspect.custom'); - -export type InspectFn = (value: any, options: InspectOptions) => string; - -export function isIterable(value: any): value is Iterable { - if (value === undefined || value === null) { - return false; - } - return typeof(value[Symbol.iterator]) === 'function'; -} - -export function first(iter: Iterator): T | undefined { - return iter.next().value; -} - -export function last(iter: Iterator): T | undefined { - let prevValue; - for (;;) { - const { done, value } = iter.next(); - if (done) { - return prevValue; - } - prevValue = value; - } -} - -export function stripExtension(filepath: string): string { - const basename = path.basename(filepath); - const i = basename.lastIndexOf('.'); - if (i === -1) { - return filepath; - } - return path.join(path.dirname(filepath), basename.substring(0, i)); -} - -export class IndentWriter { - - private atBlankLine = true; - private indentLevel = 0; - - public constructor( - private output: stream.Writable, - private indentation = ' ', - ) { - - } - - public write(text: string): void { - for (const ch of text) { - if (ch === '\n') { - this.atBlankLine = true; - } else if (!/[\t ]/.test(ch) && this.atBlankLine) { - this.output.write(this.indentation.repeat(this.indentLevel)); - this.atBlankLine = false; - } - this.output.write(ch); - } - } - - public indent(): void { - this.indentLevel++; - } - - public dedent(): void { - this.indentLevel--; - } - -} - -const GITHUB_ISSUE_URL = 'https://github.com/boltlang/bolt/issues/' - -export function assert(test: boolean): asserts test { - if (!test) { - throw new Error(`Assertion failed. See the stack trace for more information. You are invited to search this issue on GitHub or to create a new one at ${GITHUB_ISSUE_URL} .`); - } -} - -export function implementationLimitation(test: boolean): asserts test { - if (!test) { - throw new Error(`We encountered a limitation to the implementation of this compiler. You are invited to search this issue on GitHub or to create a new one at ${GITHUB_ISSUE_URL} .`); - } -} - -export function unreachable(): never { - throw new Error(`Code that should never be executed was reached during operation.`); -} - -export function assertNever(value: never): never { - console.error(value); - throw new Error(`Assertion failed. See the stack trace for more information.`); -} - -export function countDigits(x: number, base: number = 10) { - return x === 0 ? 1 : Math.ceil(Math.log(x+1) / Math.log(base)) -} - -export function isEmpty(iter: Iterable | Iterator): boolean { - if ((iter as any)[Symbol.iterator] !== undefined) { - iter = (iter as any)[Symbol.iterator](); - } - return !!(iter as Iterator).next().done; -} - -export type JSONValue = null | boolean | number | string | JSONArray | JSONObject -export type JSONArray = Array; -export type JSONObject = { [key: string]: JSONValue }; - -export class MultiDict { - - private mapping = new Map(); - - public constructor(iterable?: Iterable<[K, V]>) { - if (iterable) { - for (const [key, value] of iterable) { - this.add(key, value); - } - } - } - - public get(key: K): Iterable { - return this.mapping.get(key) ?? []; - } - - public add(key: K, value: V): void { - const values = this.mapping.get(key); - if (values) { - values.push(value); - } else { - this.mapping.set(key, [ value ]) - } - } - - public *[Symbol.iterator](): Iterator<[K, V]> { - for (const [key, values] of this.mapping) { - for (const value of values) { - yield [key, value]; - } - } - } - -} - -export interface Stream { - get(): T; - peek(offset?: number): T; -} - -export abstract class BufferedStream { - - private buffer: Array = []; - - public abstract read(): T; - - public get(): T { - if (this.buffer.length > 0) { - return this.buffer.shift()!; - } - return this.read(); - } - - public peek(offset = 1): T { - while (this.buffer.length < offset) { - this.buffer.push(this.read()); - } - return this.buffer[offset-1]; - } - -} - -export class MultiMap { - - private mapping = new Map(); - - public get(key: K): V[] { - return this.mapping.get(key) ?? []; - } - - public add(key: K, value: V): void { - let elements = this.mapping.get(key); - if (elements === undefined) { - elements = []; - this.mapping.set(key, elements); - } - elements.push(value); - } - - public has(key: K, value?: V): boolean { - if (value === undefined) { - return this.mapping.has(key); - } - const elements = this.mapping.get(key); - if (elements === undefined) { - return false; - } - return elements.indexOf(value) !== -1; - } - - public keys(): Iterable { - return this.mapping.keys(); - } - - public *values(): Iterable { - for (const elements of this.mapping.values()) { - yield* elements; - } - } - - public *[Symbol.iterator](): Iterator<[K, V]> { - for (const [key, elements] of this.mapping) { - for (const value of elements) { - yield [key, value]; - } - } - } - - public delete(key: K, value?: V): number { - const elements = this.mapping.get(key); - if (elements === undefined) { - return 0; - } - if (value === undefined) { - this.mapping.delete(key); - return elements.length; - } - const i = elements.indexOf(value); - if (i !== -1) { - elements.splice(i, 1); - if (elements.length === 0) { - this.mapping.delete(key); - } - return 1; - } - return 0; - } - -} - -export const nonenumerable: { - (target: any, name: string): void; - (target: any, name: string, desc: PropertyDescriptor): PropertyDescriptor; -} = (target: any, name: string, desc?: any) => { - if (desc) { - desc.enumerable = false; - return desc; - } - Object.defineProperty(target, name, { - set(value) { - Object.defineProperty(this, name, { - value, writable: true, configurable: true, - }); - }, - configurable: true, - }); -}; - diff --git a/bootstrap/js/compiler/tsconfig.json b/bootstrap/js/compiler/tsconfig.json deleted file mode 100644 index ed87293a4..000000000 --- a/bootstrap/js/compiler/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2016", - "lib": [ "ES2016" ], - "module": "commonjs", - "moduleResolution": "node", - "declaration": true, - "declarationMap": true, - "sourceMap": true, - "outDir": "./lib", - "removeComments": true, - "importHelpers": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "strict": true, - "skipLibCheck": true, - "experimentalDecorators": true - }, - "include": ["src"] -} diff --git a/bootstrap/js/package-lock.json b/bootstrap/js/package-lock.json deleted file mode 100644 index 73c538617..000000000 --- a/bootstrap/js/package-lock.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "name": "bolt-workspace", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "bolt-workspace", - "workspaces": [ - "compiler" - ], - "dependencies": { - "typescript": "^5.1.3" - } - }, - "babel-plugin": { - "name": "babel-plugin-metadata", - "version": "1.0.0", - "extraneous": true, - "license": "MIT", - "devDependencies": { - "@babel/types": "^7.21.4", - "@types/babel__core": "^7.20.0" - } - }, - "babel-plugin-metadata": { - "version": "1.0.0", - "extraneous": true, - "license": "MIT", - "devDependencies": { - "@babel/types": "^7.21.4", - "@types/babel__core": "^7.20.0" - } - }, - "compiler": { - "name": "@boltlang/bolt", - "version": "0.0.1", - "license": "MIT", - "dependencies": { - "@types/which": "^3.0.0", - "commander": "^11.0.0", - "reflect-metadata": "^0.1.13", - "source-map-support": "^0.5.21", - "tslib": "^2.5.3", - "which": "^3.0.1", - "yagl": "^0.5.1" - }, - "bin": { - "bolt": "lib/bin/bolt.js" - }, - "devDependencies": { - "@types/node": "^20.3.1" - } - }, - "compiler/node_modules/commander": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", - "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", - "engines": { - "node": ">=16" - } - }, - "harness": { - "name": "@boltlang/harness", - "version": "0.0.1", - "extraneous": true, - "license": "MIT", - "dependencies": { - "@boltlang/bolt": "^0.0.1", - "chalk": "^4.1.2", - "commander": "^10.0.0", - "commonmark": "^0.30.0", - "fs-extra": "^11.1.1", - "glob": "^10.0.0", - "minimatch": "^9.0.0", - "reflect-metadata": "^0.1.13", - "typescript-rtti": "^0.8.3" - }, - "bin": { - "bolt-self-harness-commit": "lib/bin/bolt-self-harness-commit.js" - }, - "devDependencies": { - "@types/commonmark": "^0.27.6", - "@types/fs-extra": "^11.0.1", - "@types/glob": "^8.1.0", - "ava": "^5.2.0" - } - }, - "node_modules/@boltlang/bolt": { - "resolved": "compiler", - "link": true - }, - "node_modules/@types/node": { - "version": "20.3.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.1.tgz", - "integrity": "sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==", - "dev": true - }, - "node_modules/@types/which": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/which/-/which-3.0.0.tgz", - "integrity": "sha512-ASCxdbsrwNfSMXALlC3Decif9rwDMu+80KGp5zI2RLRotfMsTv7fHL8W8VDp24wymzDyIFudhUeSCugrgRFfHQ==" - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/tslib": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", - "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==" - }, - "node_modules/typescript": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", - "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/which": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", - "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/yagl": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/yagl/-/yagl-0.5.1.tgz", - "integrity": "sha512-DfJygWCefAq5eEOmwvVkiMFBUEQJs9aijGdhaYGSdj1TM2OqSbe/Vp37e/nMGXsgmWiryZapKMOtpYx3ECUrJQ==" - }, - "testing": { - "version": "0.0.1", - "extraneous": true, - "license": "MIT", - "dependencies": { - "chalk": "^5.2.0", - "commander": "^10.0.0", - "commonmark": "^0.30.0", - "fs-extra": "^11.1.1", - "glob": "^10.0.0", - "minimatch": "^9.0.0" - }, - "devDependencies": { - "@types/commonmark": "^0.27.6", - "@types/fs-extra": "^11.0.1", - "@types/glob": "^8.1.0" - } - } - } -} diff --git a/bootstrap/js/package.json b/bootstrap/js/package.json deleted file mode 100644 index 89f3a5170..000000000 --- a/bootstrap/js/package.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "bolt-workspace", - "private": true, - "workspaces": [ - "compiler" - ], - "dependencies": { - "typescript": "^5.1.3" - } -} diff --git a/cmake/Modules/FindLLVM.cmake b/cmake/Modules/FindLLVM.cmake new file mode 100644 index 000000000..0be58ebf5 --- /dev/null +++ b/cmake/Modules/FindLLVM.cmake @@ -0,0 +1,205 @@ +# Code taken from LDC – the LLVM-based D Compiler +# https://github.com/ldc-developers/ldc +# +# A given list of COMPONENTS is passed to llvm-config. +# +# The following variables are defined: +# LLVM_FOUND - true if LLVM was found +# LLVM_CXXFLAGS - C++ compiler flags for files that include LLVM headers. +# LLVM_ENABLE_ASSERTIONS - Whether LLVM was built with enabled assertions (ON/OFF). +# LLVM_INCLUDE_DIRS - Directory containing LLVM include files. +# LLVM_IS_SHARED - Whether LLVM is going to be linked dynamically (ON) or statically (OFF). +# LLVM_LDFLAGS - Linker flags to add when linking against LLVM +# (includes -LLLVM_LIBRARY_DIRS). +# LLVM_LIBRARIES - Full paths to the library files to link against. +# LLVM_LIBRARY_DIRS - Directory containing LLVM libraries. +# LLVM_NATIVE_ARCH - Backend corresponding to LLVM_HOST_TARGET, e.g., +# X86 for x86_64 and i686 hosts. +# LLVM_ROOT_DIR - The root directory of the LLVM installation. +# llvm-config is searched for in ${LLVM_ROOT_DIR}/bin. +# LLVM_TARGETS_TO_BUILD - List of built LLVM targets. +# LLVM_VERSION_MAJOR - Major version of LLVM. +# LLVM_VERSION_MINOR - Minor version of LLVM. +# LLVM_VERSION_STRING - Full LLVM version string (e.g. 6.0.0svn). +# LLVM_VERSION_BASE_STRING - Base LLVM version string without git/svn suffix (e.g. 6.0.0). +# +# Note: The variable names were chosen in conformance with the offical CMake +# guidelines, see ${CMAKE_ROOT}/Modules/readme.txt. + +# Try suffixed versions to pick up the newest LLVM install available on Debian +# derivatives. +# We also want an user-specified LLVM_ROOT_DIR to take precedence over the +# system default locations such as /usr/local/bin. Executing find_program() +# multiples times is the approach recommended in the docs. +set(llvm_config_names llvm-config-17.0 llvm-config170 llvm-config-17 + llvm-config-16.0 llvm-config160 llvm-config-16 + llvm-config-15.0 llvm-config150 llvm-config-15 + llvm-config-14.0 llvm-config140 llvm-config-14 + llvm-config-13.0 llvm-config130 llvm-config-13 + llvm-config-12.0 llvm-config120 llvm-config-12 + llvm-config-11.0 llvm-config110 llvm-config-11 + llvm-config) +find_program(LLVM_CONFIG + NAMES ${llvm_config_names} + PATHS ${LLVM_ROOT_DIR}/bin NO_DEFAULT_PATH + DOC "Path to llvm-config tool.") +find_program(LLVM_CONFIG NAMES ${llvm_config_names}) +if(APPLE) + # extra fallbacks for MacPorts & Homebrew + find_program(LLVM_CONFIG + NAMES ${llvm_config_names} + PATHS /opt/local/libexec/llvm-17/bin + /opt/local/libexec/llvm-16/bin /opt/local/libexec/llvm-15/bin + /opt/local/libexec/llvm-14/bin /opt/local/libexec/llvm-13/bin + /opt/local/libexec/llvm-12/bin /opt/local/libexec/llvm-11/bin + /opt/local/libexec/llvm/bin + /usr/local/opt/llvm@17/bin + /usr/local/opt/llvm@16/bin /usr/local/opt/llvm@15/bin + /usr/local/opt/llvm@14/bin /usr/local/opt/llvm@13/bin + /usr/local/opt/llvm@12/bin /usr/local/opt/llvm@11/bin + /usr/local/opt/llvm/bin + NO_DEFAULT_PATH) +endif() + +# Prints a warning/failure message depending on the required/quiet flags. Copied +# from FindPackageHandleStandardArgs.cmake because it doesn't seem to be exposed. +macro(_LLVM_FAIL _msg) + if(LLVM_FIND_REQUIRED) + message(FATAL_ERROR "${_msg}") + else() + if(NOT LLVM_FIND_QUIETLY) + message(WARNING "${_msg}") + endif() + endif() +endmacro() + + +if(NOT LLVM_CONFIG) + if(NOT LLVM_FIND_QUIETLY) + _LLVM_FAIL("No LLVM installation (>= ${LLVM_FIND_VERSION}) found. Try manually setting the 'LLVM_ROOT_DIR' or 'LLVM_CONFIG' variables.") + endif() +else() + macro(llvm_set var flag) + if(LLVM_FIND_QUIETLY) + set(_quiet_arg ERROR_QUIET) + endif() + set(result_code) + execute_process( + COMMAND ${LLVM_CONFIG} --${flag} + RESULT_VARIABLE result_code + OUTPUT_VARIABLE LLVM_${var} + OUTPUT_STRIP_TRAILING_WHITESPACE + ${_quiet_arg} + ) + if(result_code) + _LLVM_FAIL("Failed to execute llvm-config ('${LLVM_CONFIG}', result code: '${result_code})'") + else() + if(${ARGV2}) + file(TO_CMAKE_PATH "${LLVM_${var}}" LLVM_${var}) + endif() + endif() + endmacro() + macro(llvm_set_libs var flag components) + if(LLVM_FIND_QUIETLY) + set(_quiet_arg ERROR_QUIET) + endif() + set(result_code) + execute_process( + COMMAND ${LLVM_CONFIG} --${flag} ${components} + RESULT_VARIABLE result_code + OUTPUT_VARIABLE tmplibs + OUTPUT_STRIP_TRAILING_WHITESPACE + ${_quiet_arg} + ) + if(result_code) + _LLVM_FAIL("Failed to execute llvm-config ('${LLVM_CONFIG}', result code: '${result_code})'") + else() + file(TO_CMAKE_PATH "${tmplibs}" tmplibs) + string(REGEX MATCHALL "${pattern}[^ ]+" LLVM_${var} ${tmplibs}) + endif() + endmacro() + + llvm_set(VERSION_STRING version) + llvm_set(CXXFLAGS cxxflags) + llvm_set(INCLUDE_DIRS includedir true) + llvm_set(ROOT_DIR prefix true) + llvm_set(ENABLE_ASSERTIONS assertion-mode) + + # The LLVM version string _may_ contain a git/svn suffix, so match only the x.y.z part + string(REGEX MATCH "^[0-9]+[.][0-9]+[.][0-9]+" LLVM_VERSION_BASE_STRING "${LLVM_VERSION_STRING}") + string(REGEX REPLACE "([0-9]+).*" "\\1" LLVM_VERSION_MAJOR "${LLVM_VERSION_STRING}" ) + string(REGEX REPLACE "[0-9]+\\.([0-9]+).*[A-Za-z]*" "\\1" LLVM_VERSION_MINOR "${LLVM_VERSION_STRING}" ) + + llvm_set(SHARED_MODE shared-mode) + if(LLVM_SHARED_MODE STREQUAL "shared") + set(LLVM_IS_SHARED ON) + else() + set(LLVM_IS_SHARED OFF) + endif() + + llvm_set(LDFLAGS ldflags) + llvm_set(SYSTEM_LIBS system-libs) + string(REPLACE "\n" " " LLVM_LDFLAGS "${LLVM_LDFLAGS} ${LLVM_SYSTEM_LIBS}") + if(APPLE) # unclear why/how this happens + string(REPLACE "-llibxml2.tbd" "-lxml2" LLVM_LDFLAGS ${LLVM_LDFLAGS}) + endif() + + if(${LLVM_VERSION_MAJOR} LESS "15") + # Versions below 15.0 do not support component windowsdriver + list(REMOVE_ITEM LLVM_FIND_COMPONENTS "windowsdriver") + endif() + + llvm_set(LIBRARY_DIRS libdir true) + llvm_set_libs(LIBRARIES libs "${LLVM_FIND_COMPONENTS}") + # LLVM bug: llvm-config --libs tablegen returns -lLLVM-3.8.0 + # but code for it is not in shared library + if("${LLVM_FIND_COMPONENTS}" MATCHES "tablegen") + if (NOT "${LLVM_LIBRARIES}" MATCHES "LLVMTableGen") + set(LLVM_LIBRARIES "${LLVM_LIBRARIES};-lLLVMTableGen") + endif() + endif() + + llvm_set(CMAKEDIR cmakedir) + llvm_set(TARGETS_TO_BUILD targets-built) + string(REGEX MATCHALL "${pattern}[^ ]+" LLVM_TARGETS_TO_BUILD ${LLVM_TARGETS_TO_BUILD}) + + # Parse LLVM_NATIVE_ARCH manually from LLVMConfig.cmake; including it leads to issues like + # https://github.com/ldc-developers/ldc/issues/3079. + file(STRINGS "${LLVM_CMAKEDIR}/LLVMConfig.cmake" LLVM_NATIVE_ARCH LIMIT_COUNT 1 REGEX "^set\\(LLVM_NATIVE_ARCH (.+)\\)$") + string(REGEX MATCH "set\\(LLVM_NATIVE_ARCH (.+)\\)" LLVM_NATIVE_ARCH "${LLVM_NATIVE_ARCH}") + set(LLVM_NATIVE_ARCH ${CMAKE_MATCH_1}) + message(STATUS "LLVM_NATIVE_ARCH: ${LLVM_NATIVE_ARCH}") + + # On CMake builds of LLVM, the output of llvm-config --cxxflags does not + # include -fno-rtti, leading to linker errors. Be sure to add it. + if(NOT MSVC AND (CMAKE_COMPILER_IS_GNUCXX OR (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang"))) + if(NOT ${LLVM_CXXFLAGS} MATCHES "-fno-rtti") + set(LLVM_CXXFLAGS "${LLVM_CXXFLAGS} -fno-rtti") + endif() + endif() + + # Remove some clang-specific flags for gcc. + if(CMAKE_COMPILER_IS_GNUCXX) + string(REPLACE "-Wcovered-switch-default " "" LLVM_CXXFLAGS ${LLVM_CXXFLAGS}) + string(REPLACE "-Wstring-conversion " "" LLVM_CXXFLAGS ${LLVM_CXXFLAGS}) + string(REPLACE "-fcolor-diagnostics " "" LLVM_CXXFLAGS ${LLVM_CXXFLAGS}) + # this requires more recent gcc versions (not supported by 4.9) + string(REPLACE "-Werror=unguarded-availability-new " "" LLVM_CXXFLAGS ${LLVM_CXXFLAGS}) + endif() + + # Remove gcc-specific flags for clang. + if(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang") + string(REPLACE "-Wno-maybe-uninitialized " "" LLVM_CXXFLAGS ${LLVM_CXXFLAGS}) + endif() + + if (${LLVM_VERSION_STRING} VERSION_LESS ${LLVM_FIND_VERSION}) + _LLVM_FAIL("Unsupported LLVM version ${LLVM_VERSION_STRING} found (${LLVM_CONFIG}). At least version ${LLVM_FIND_VERSION} is required. You can also set variables 'LLVM_ROOT_DIR' or 'LLVM_CONFIG' to use a different LLVM installation.") + endif() +endif() + +# Use the default CMake facilities for handling QUIET/REQUIRED. +include(FindPackageHandleStandardArgs) + +find_package_handle_standard_args(LLVM + REQUIRED_VARS LLVM_ROOT_DIR + VERSION_VAR LLVM_VERSION_STRING) diff --git a/bootstrap/cxx/deps/googletest/.clang-format b/deps/googletest/.clang-format similarity index 100% rename from bootstrap/cxx/deps/googletest/.clang-format rename to deps/googletest/.clang-format diff --git a/bootstrap/cxx/deps/googletest/.github/ISSUE_TEMPLATE/00-bug_report.md b/deps/googletest/.github/ISSUE_TEMPLATE/00-bug_report.md similarity index 100% rename from bootstrap/cxx/deps/googletest/.github/ISSUE_TEMPLATE/00-bug_report.md rename to deps/googletest/.github/ISSUE_TEMPLATE/00-bug_report.md diff --git a/bootstrap/cxx/deps/googletest/.github/ISSUE_TEMPLATE/10-feature_request.md b/deps/googletest/.github/ISSUE_TEMPLATE/10-feature_request.md similarity index 100% rename from bootstrap/cxx/deps/googletest/.github/ISSUE_TEMPLATE/10-feature_request.md rename to deps/googletest/.github/ISSUE_TEMPLATE/10-feature_request.md diff --git a/bootstrap/cxx/deps/googletest/.github/ISSUE_TEMPLATE/config.yml b/deps/googletest/.github/ISSUE_TEMPLATE/config.yml similarity index 100% rename from bootstrap/cxx/deps/googletest/.github/ISSUE_TEMPLATE/config.yml rename to deps/googletest/.github/ISSUE_TEMPLATE/config.yml diff --git a/bootstrap/cxx/deps/googletest/.github/workflows/gtest-ci.yml b/deps/googletest/.github/workflows/gtest-ci.yml similarity index 100% rename from bootstrap/cxx/deps/googletest/.github/workflows/gtest-ci.yml rename to deps/googletest/.github/workflows/gtest-ci.yml diff --git a/bootstrap/cxx/deps/googletest/.gitignore b/deps/googletest/.gitignore similarity index 100% rename from bootstrap/cxx/deps/googletest/.gitignore rename to deps/googletest/.gitignore diff --git a/bootstrap/cxx/deps/googletest/BUILD.bazel b/deps/googletest/BUILD.bazel similarity index 100% rename from bootstrap/cxx/deps/googletest/BUILD.bazel rename to deps/googletest/BUILD.bazel diff --git a/bootstrap/cxx/deps/googletest/CMakeLists.txt b/deps/googletest/CMakeLists.txt similarity index 100% rename from bootstrap/cxx/deps/googletest/CMakeLists.txt rename to deps/googletest/CMakeLists.txt diff --git a/bootstrap/cxx/deps/googletest/CONTRIBUTING.md b/deps/googletest/CONTRIBUTING.md similarity index 100% rename from bootstrap/cxx/deps/googletest/CONTRIBUTING.md rename to deps/googletest/CONTRIBUTING.md diff --git a/bootstrap/cxx/deps/googletest/CONTRIBUTORS b/deps/googletest/CONTRIBUTORS similarity index 100% rename from bootstrap/cxx/deps/googletest/CONTRIBUTORS rename to deps/googletest/CONTRIBUTORS diff --git a/bootstrap/cxx/deps/googletest/LICENSE b/deps/googletest/LICENSE similarity index 100% rename from bootstrap/cxx/deps/googletest/LICENSE rename to deps/googletest/LICENSE diff --git a/bootstrap/cxx/deps/googletest/README.md b/deps/googletest/README.md similarity index 100% rename from bootstrap/cxx/deps/googletest/README.md rename to deps/googletest/README.md diff --git a/bootstrap/cxx/deps/googletest/WORKSPACE b/deps/googletest/WORKSPACE similarity index 100% rename from bootstrap/cxx/deps/googletest/WORKSPACE rename to deps/googletest/WORKSPACE diff --git a/bootstrap/cxx/deps/googletest/ci/linux-presubmit.sh b/deps/googletest/ci/linux-presubmit.sh similarity index 100% rename from bootstrap/cxx/deps/googletest/ci/linux-presubmit.sh rename to deps/googletest/ci/linux-presubmit.sh diff --git a/bootstrap/cxx/deps/googletest/ci/macos-presubmit.sh b/deps/googletest/ci/macos-presubmit.sh similarity index 100% rename from bootstrap/cxx/deps/googletest/ci/macos-presubmit.sh rename to deps/googletest/ci/macos-presubmit.sh diff --git a/bootstrap/cxx/deps/googletest/docs/_config.yml b/deps/googletest/docs/_config.yml similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/_config.yml rename to deps/googletest/docs/_config.yml diff --git a/bootstrap/cxx/deps/googletest/docs/_data/navigation.yml b/deps/googletest/docs/_data/navigation.yml similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/_data/navigation.yml rename to deps/googletest/docs/_data/navigation.yml diff --git a/bootstrap/cxx/deps/googletest/docs/_layouts/default.html b/deps/googletest/docs/_layouts/default.html similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/_layouts/default.html rename to deps/googletest/docs/_layouts/default.html diff --git a/bootstrap/cxx/deps/googletest/docs/_sass/main.scss b/deps/googletest/docs/_sass/main.scss similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/_sass/main.scss rename to deps/googletest/docs/_sass/main.scss diff --git a/bootstrap/cxx/deps/googletest/docs/advanced.md b/deps/googletest/docs/advanced.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/advanced.md rename to deps/googletest/docs/advanced.md diff --git a/bootstrap/cxx/deps/googletest/docs/assets/css/style.scss b/deps/googletest/docs/assets/css/style.scss similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/assets/css/style.scss rename to deps/googletest/docs/assets/css/style.scss diff --git a/bootstrap/cxx/deps/googletest/docs/community_created_documentation.md b/deps/googletest/docs/community_created_documentation.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/community_created_documentation.md rename to deps/googletest/docs/community_created_documentation.md diff --git a/bootstrap/cxx/deps/googletest/docs/faq.md b/deps/googletest/docs/faq.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/faq.md rename to deps/googletest/docs/faq.md diff --git a/bootstrap/cxx/deps/googletest/docs/gmock_cheat_sheet.md b/deps/googletest/docs/gmock_cheat_sheet.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/gmock_cheat_sheet.md rename to deps/googletest/docs/gmock_cheat_sheet.md diff --git a/bootstrap/cxx/deps/googletest/docs/gmock_cook_book.md b/deps/googletest/docs/gmock_cook_book.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/gmock_cook_book.md rename to deps/googletest/docs/gmock_cook_book.md diff --git a/bootstrap/cxx/deps/googletest/docs/gmock_faq.md b/deps/googletest/docs/gmock_faq.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/gmock_faq.md rename to deps/googletest/docs/gmock_faq.md diff --git a/bootstrap/cxx/deps/googletest/docs/gmock_for_dummies.md b/deps/googletest/docs/gmock_for_dummies.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/gmock_for_dummies.md rename to deps/googletest/docs/gmock_for_dummies.md diff --git a/bootstrap/cxx/deps/googletest/docs/index.md b/deps/googletest/docs/index.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/index.md rename to deps/googletest/docs/index.md diff --git a/bootstrap/cxx/deps/googletest/docs/pkgconfig.md b/deps/googletest/docs/pkgconfig.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/pkgconfig.md rename to deps/googletest/docs/pkgconfig.md diff --git a/bootstrap/cxx/deps/googletest/docs/platforms.md b/deps/googletest/docs/platforms.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/platforms.md rename to deps/googletest/docs/platforms.md diff --git a/bootstrap/cxx/deps/googletest/docs/primer.md b/deps/googletest/docs/primer.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/primer.md rename to deps/googletest/docs/primer.md diff --git a/bootstrap/cxx/deps/googletest/docs/quickstart-bazel.md b/deps/googletest/docs/quickstart-bazel.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/quickstart-bazel.md rename to deps/googletest/docs/quickstart-bazel.md diff --git a/bootstrap/cxx/deps/googletest/docs/quickstart-cmake.md b/deps/googletest/docs/quickstart-cmake.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/quickstart-cmake.md rename to deps/googletest/docs/quickstart-cmake.md diff --git a/bootstrap/cxx/deps/googletest/docs/reference/actions.md b/deps/googletest/docs/reference/actions.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/reference/actions.md rename to deps/googletest/docs/reference/actions.md diff --git a/bootstrap/cxx/deps/googletest/docs/reference/assertions.md b/deps/googletest/docs/reference/assertions.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/reference/assertions.md rename to deps/googletest/docs/reference/assertions.md diff --git a/bootstrap/cxx/deps/googletest/docs/reference/matchers.md b/deps/googletest/docs/reference/matchers.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/reference/matchers.md rename to deps/googletest/docs/reference/matchers.md diff --git a/bootstrap/cxx/deps/googletest/docs/reference/mocking.md b/deps/googletest/docs/reference/mocking.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/reference/mocking.md rename to deps/googletest/docs/reference/mocking.md diff --git a/bootstrap/cxx/deps/googletest/docs/reference/testing.md b/deps/googletest/docs/reference/testing.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/reference/testing.md rename to deps/googletest/docs/reference/testing.md diff --git a/bootstrap/cxx/deps/googletest/docs/samples.md b/deps/googletest/docs/samples.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/samples.md rename to deps/googletest/docs/samples.md diff --git a/bootstrap/cxx/deps/googletest/googlemock/CMakeLists.txt b/deps/googletest/googlemock/CMakeLists.txt similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/CMakeLists.txt rename to deps/googletest/googlemock/CMakeLists.txt diff --git a/bootstrap/cxx/deps/googletest/googlemock/README.md b/deps/googletest/googlemock/README.md similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/README.md rename to deps/googletest/googlemock/README.md diff --git a/bootstrap/cxx/deps/googletest/googlemock/cmake/gmock.pc.in b/deps/googletest/googlemock/cmake/gmock.pc.in similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/cmake/gmock.pc.in rename to deps/googletest/googlemock/cmake/gmock.pc.in diff --git a/bootstrap/cxx/deps/googletest/googlemock/cmake/gmock_main.pc.in b/deps/googletest/googlemock/cmake/gmock_main.pc.in similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/cmake/gmock_main.pc.in rename to deps/googletest/googlemock/cmake/gmock_main.pc.in diff --git a/bootstrap/cxx/deps/googletest/googlemock/docs/README.md b/deps/googletest/googlemock/docs/README.md similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/docs/README.md rename to deps/googletest/googlemock/docs/README.md diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-actions.h b/deps/googletest/googlemock/include/gmock/gmock-actions.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-actions.h rename to deps/googletest/googlemock/include/gmock/gmock-actions.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-cardinalities.h b/deps/googletest/googlemock/include/gmock/gmock-cardinalities.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-cardinalities.h rename to deps/googletest/googlemock/include/gmock/gmock-cardinalities.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-function-mocker.h b/deps/googletest/googlemock/include/gmock/gmock-function-mocker.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-function-mocker.h rename to deps/googletest/googlemock/include/gmock/gmock-function-mocker.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-matchers.h b/deps/googletest/googlemock/include/gmock/gmock-matchers.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-matchers.h rename to deps/googletest/googlemock/include/gmock/gmock-matchers.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-more-actions.h b/deps/googletest/googlemock/include/gmock/gmock-more-actions.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-more-actions.h rename to deps/googletest/googlemock/include/gmock/gmock-more-actions.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-more-matchers.h b/deps/googletest/googlemock/include/gmock/gmock-more-matchers.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-more-matchers.h rename to deps/googletest/googlemock/include/gmock/gmock-more-matchers.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-nice-strict.h b/deps/googletest/googlemock/include/gmock/gmock-nice-strict.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-nice-strict.h rename to deps/googletest/googlemock/include/gmock/gmock-nice-strict.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-spec-builders.h b/deps/googletest/googlemock/include/gmock/gmock-spec-builders.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-spec-builders.h rename to deps/googletest/googlemock/include/gmock/gmock-spec-builders.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock.h b/deps/googletest/googlemock/include/gmock/gmock.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock.h rename to deps/googletest/googlemock/include/gmock/gmock.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/custom/README.md b/deps/googletest/googlemock/include/gmock/internal/custom/README.md similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/custom/README.md rename to deps/googletest/googlemock/include/gmock/internal/custom/README.md diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h b/deps/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h rename to deps/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/custom/gmock-matchers.h b/deps/googletest/googlemock/include/gmock/internal/custom/gmock-matchers.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/custom/gmock-matchers.h rename to deps/googletest/googlemock/include/gmock/internal/custom/gmock-matchers.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/custom/gmock-port.h b/deps/googletest/googlemock/include/gmock/internal/custom/gmock-port.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/custom/gmock-port.h rename to deps/googletest/googlemock/include/gmock/internal/custom/gmock-port.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h b/deps/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h rename to deps/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/gmock-port.h b/deps/googletest/googlemock/include/gmock/internal/gmock-port.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/gmock-port.h rename to deps/googletest/googlemock/include/gmock/internal/gmock-port.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/gmock-pp.h b/deps/googletest/googlemock/include/gmock/internal/gmock-pp.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/gmock-pp.h rename to deps/googletest/googlemock/include/gmock/internal/gmock-pp.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/src/gmock-all.cc b/deps/googletest/googlemock/src/gmock-all.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/src/gmock-all.cc rename to deps/googletest/googlemock/src/gmock-all.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/src/gmock-cardinalities.cc b/deps/googletest/googlemock/src/gmock-cardinalities.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/src/gmock-cardinalities.cc rename to deps/googletest/googlemock/src/gmock-cardinalities.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/src/gmock-internal-utils.cc b/deps/googletest/googlemock/src/gmock-internal-utils.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/src/gmock-internal-utils.cc rename to deps/googletest/googlemock/src/gmock-internal-utils.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/src/gmock-matchers.cc b/deps/googletest/googlemock/src/gmock-matchers.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/src/gmock-matchers.cc rename to deps/googletest/googlemock/src/gmock-matchers.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/src/gmock-spec-builders.cc b/deps/googletest/googlemock/src/gmock-spec-builders.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/src/gmock-spec-builders.cc rename to deps/googletest/googlemock/src/gmock-spec-builders.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/src/gmock.cc b/deps/googletest/googlemock/src/gmock.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/src/gmock.cc rename to deps/googletest/googlemock/src/gmock.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/src/gmock_main.cc b/deps/googletest/googlemock/src/gmock_main.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/src/gmock_main.cc rename to deps/googletest/googlemock/src/gmock_main.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/BUILD.bazel b/deps/googletest/googlemock/test/BUILD.bazel similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/BUILD.bazel rename to deps/googletest/googlemock/test/BUILD.bazel diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-actions_test.cc b/deps/googletest/googlemock/test/gmock-actions_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-actions_test.cc rename to deps/googletest/googlemock/test/gmock-actions_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-cardinalities_test.cc b/deps/googletest/googlemock/test/gmock-cardinalities_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-cardinalities_test.cc rename to deps/googletest/googlemock/test/gmock-cardinalities_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-function-mocker_test.cc b/deps/googletest/googlemock/test/gmock-function-mocker_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-function-mocker_test.cc rename to deps/googletest/googlemock/test/gmock-function-mocker_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-internal-utils_test.cc b/deps/googletest/googlemock/test/gmock-internal-utils_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-internal-utils_test.cc rename to deps/googletest/googlemock/test/gmock-internal-utils_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-matchers-arithmetic_test.cc b/deps/googletest/googlemock/test/gmock-matchers-arithmetic_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-matchers-arithmetic_test.cc rename to deps/googletest/googlemock/test/gmock-matchers-arithmetic_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-matchers-comparisons_test.cc b/deps/googletest/googlemock/test/gmock-matchers-comparisons_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-matchers-comparisons_test.cc rename to deps/googletest/googlemock/test/gmock-matchers-comparisons_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-matchers-containers_test.cc b/deps/googletest/googlemock/test/gmock-matchers-containers_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-matchers-containers_test.cc rename to deps/googletest/googlemock/test/gmock-matchers-containers_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-matchers-misc_test.cc b/deps/googletest/googlemock/test/gmock-matchers-misc_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-matchers-misc_test.cc rename to deps/googletest/googlemock/test/gmock-matchers-misc_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-matchers_test.h b/deps/googletest/googlemock/test/gmock-matchers_test.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-matchers_test.h rename to deps/googletest/googlemock/test/gmock-matchers_test.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-more-actions_test.cc b/deps/googletest/googlemock/test/gmock-more-actions_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-more-actions_test.cc rename to deps/googletest/googlemock/test/gmock-more-actions_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-nice-strict_test.cc b/deps/googletest/googlemock/test/gmock-nice-strict_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-nice-strict_test.cc rename to deps/googletest/googlemock/test/gmock-nice-strict_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-port_test.cc b/deps/googletest/googlemock/test/gmock-port_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-port_test.cc rename to deps/googletest/googlemock/test/gmock-port_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-pp-string_test.cc b/deps/googletest/googlemock/test/gmock-pp-string_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-pp-string_test.cc rename to deps/googletest/googlemock/test/gmock-pp-string_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-pp_test.cc b/deps/googletest/googlemock/test/gmock-pp_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-pp_test.cc rename to deps/googletest/googlemock/test/gmock-pp_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-spec-builders_test.cc b/deps/googletest/googlemock/test/gmock-spec-builders_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-spec-builders_test.cc rename to deps/googletest/googlemock/test/gmock-spec-builders_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock_all_test.cc b/deps/googletest/googlemock/test/gmock_all_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock_all_test.cc rename to deps/googletest/googlemock/test/gmock_all_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock_ex_test.cc b/deps/googletest/googlemock/test/gmock_ex_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock_ex_test.cc rename to deps/googletest/googlemock/test/gmock_ex_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock_leak_test.py b/deps/googletest/googlemock/test/gmock_leak_test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock_leak_test.py rename to deps/googletest/googlemock/test/gmock_leak_test.py diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock_leak_test_.cc b/deps/googletest/googlemock/test/gmock_leak_test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock_leak_test_.cc rename to deps/googletest/googlemock/test/gmock_leak_test_.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock_link2_test.cc b/deps/googletest/googlemock/test/gmock_link2_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock_link2_test.cc rename to deps/googletest/googlemock/test/gmock_link2_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock_link_test.cc b/deps/googletest/googlemock/test/gmock_link_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock_link_test.cc rename to deps/googletest/googlemock/test/gmock_link_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock_link_test.h b/deps/googletest/googlemock/test/gmock_link_test.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock_link_test.h rename to deps/googletest/googlemock/test/gmock_link_test.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock_output_test.py b/deps/googletest/googlemock/test/gmock_output_test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock_output_test.py rename to deps/googletest/googlemock/test/gmock_output_test.py diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock_output_test_.cc b/deps/googletest/googlemock/test/gmock_output_test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock_output_test_.cc rename to deps/googletest/googlemock/test/gmock_output_test_.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock_output_test_golden.txt b/deps/googletest/googlemock/test/gmock_output_test_golden.txt similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock_output_test_golden.txt rename to deps/googletest/googlemock/test/gmock_output_test_golden.txt diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock_stress_test.cc b/deps/googletest/googlemock/test/gmock_stress_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock_stress_test.cc rename to deps/googletest/googlemock/test/gmock_stress_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock_test.cc b/deps/googletest/googlemock/test/gmock_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock_test.cc rename to deps/googletest/googlemock/test/gmock_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock_test_utils.py b/deps/googletest/googlemock/test/gmock_test_utils.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock_test_utils.py rename to deps/googletest/googlemock/test/gmock_test_utils.py diff --git a/bootstrap/cxx/deps/googletest/googletest/CMakeLists.txt b/deps/googletest/googletest/CMakeLists.txt similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/CMakeLists.txt rename to deps/googletest/googletest/CMakeLists.txt diff --git a/bootstrap/cxx/deps/googletest/googletest/README.md b/deps/googletest/googletest/README.md similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/README.md rename to deps/googletest/googletest/README.md diff --git a/bootstrap/cxx/deps/googletest/googletest/cmake/Config.cmake.in b/deps/googletest/googletest/cmake/Config.cmake.in similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/cmake/Config.cmake.in rename to deps/googletest/googletest/cmake/Config.cmake.in diff --git a/bootstrap/cxx/deps/googletest/googletest/cmake/gtest.pc.in b/deps/googletest/googletest/cmake/gtest.pc.in similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/cmake/gtest.pc.in rename to deps/googletest/googletest/cmake/gtest.pc.in diff --git a/bootstrap/cxx/deps/googletest/googletest/cmake/gtest_main.pc.in b/deps/googletest/googletest/cmake/gtest_main.pc.in similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/cmake/gtest_main.pc.in rename to deps/googletest/googletest/cmake/gtest_main.pc.in diff --git a/bootstrap/cxx/deps/googletest/googletest/cmake/internal_utils.cmake b/deps/googletest/googletest/cmake/internal_utils.cmake similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/cmake/internal_utils.cmake rename to deps/googletest/googletest/cmake/internal_utils.cmake diff --git a/bootstrap/cxx/deps/googletest/googletest/cmake/libgtest.la.in b/deps/googletest/googletest/cmake/libgtest.la.in similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/cmake/libgtest.la.in rename to deps/googletest/googletest/cmake/libgtest.la.in diff --git a/bootstrap/cxx/deps/googletest/googletest/docs/README.md b/deps/googletest/googletest/docs/README.md similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/docs/README.md rename to deps/googletest/googletest/docs/README.md diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-assertion-result.h b/deps/googletest/googletest/include/gtest/gtest-assertion-result.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-assertion-result.h rename to deps/googletest/googletest/include/gtest/gtest-assertion-result.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-death-test.h b/deps/googletest/googletest/include/gtest/gtest-death-test.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-death-test.h rename to deps/googletest/googletest/include/gtest/gtest-death-test.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-matchers.h b/deps/googletest/googletest/include/gtest/gtest-matchers.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-matchers.h rename to deps/googletest/googletest/include/gtest/gtest-matchers.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-message.h b/deps/googletest/googletest/include/gtest/gtest-message.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-message.h rename to deps/googletest/googletest/include/gtest/gtest-message.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-param-test.h b/deps/googletest/googletest/include/gtest/gtest-param-test.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-param-test.h rename to deps/googletest/googletest/include/gtest/gtest-param-test.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-printers.h b/deps/googletest/googletest/include/gtest/gtest-printers.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-printers.h rename to deps/googletest/googletest/include/gtest/gtest-printers.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-spi.h b/deps/googletest/googletest/include/gtest/gtest-spi.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-spi.h rename to deps/googletest/googletest/include/gtest/gtest-spi.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-test-part.h b/deps/googletest/googletest/include/gtest/gtest-test-part.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-test-part.h rename to deps/googletest/googletest/include/gtest/gtest-test-part.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-typed-test.h b/deps/googletest/googletest/include/gtest/gtest-typed-test.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-typed-test.h rename to deps/googletest/googletest/include/gtest/gtest-typed-test.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest.h b/deps/googletest/googletest/include/gtest/gtest.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest.h rename to deps/googletest/googletest/include/gtest/gtest.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest_pred_impl.h b/deps/googletest/googletest/include/gtest/gtest_pred_impl.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest_pred_impl.h rename to deps/googletest/googletest/include/gtest/gtest_pred_impl.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest_prod.h b/deps/googletest/googletest/include/gtest/gtest_prod.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest_prod.h rename to deps/googletest/googletest/include/gtest/gtest_prod.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/custom/README.md b/deps/googletest/googletest/include/gtest/internal/custom/README.md similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/custom/README.md rename to deps/googletest/googletest/include/gtest/internal/custom/README.md diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/custom/gtest-port.h b/deps/googletest/googletest/include/gtest/internal/custom/gtest-port.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/custom/gtest-port.h rename to deps/googletest/googletest/include/gtest/internal/custom/gtest-port.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/custom/gtest-printers.h b/deps/googletest/googletest/include/gtest/internal/custom/gtest-printers.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/custom/gtest-printers.h rename to deps/googletest/googletest/include/gtest/internal/custom/gtest-printers.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/custom/gtest.h b/deps/googletest/googletest/include/gtest/internal/custom/gtest.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/custom/gtest.h rename to deps/googletest/googletest/include/gtest/internal/custom/gtest.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h b/deps/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h rename to deps/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-filepath.h b/deps/googletest/googletest/include/gtest/internal/gtest-filepath.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-filepath.h rename to deps/googletest/googletest/include/gtest/internal/gtest-filepath.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-internal.h b/deps/googletest/googletest/include/gtest/internal/gtest-internal.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-internal.h rename to deps/googletest/googletest/include/gtest/internal/gtest-internal.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-param-util.h b/deps/googletest/googletest/include/gtest/internal/gtest-param-util.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-param-util.h rename to deps/googletest/googletest/include/gtest/internal/gtest-param-util.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-port-arch.h b/deps/googletest/googletest/include/gtest/internal/gtest-port-arch.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-port-arch.h rename to deps/googletest/googletest/include/gtest/internal/gtest-port-arch.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-port.h b/deps/googletest/googletest/include/gtest/internal/gtest-port.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-port.h rename to deps/googletest/googletest/include/gtest/internal/gtest-port.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-string.h b/deps/googletest/googletest/include/gtest/internal/gtest-string.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-string.h rename to deps/googletest/googletest/include/gtest/internal/gtest-string.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-type-util.h b/deps/googletest/googletest/include/gtest/internal/gtest-type-util.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-type-util.h rename to deps/googletest/googletest/include/gtest/internal/gtest-type-util.h diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/prime_tables.h b/deps/googletest/googletest/samples/prime_tables.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/prime_tables.h rename to deps/googletest/googletest/samples/prime_tables.h diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample1.cc b/deps/googletest/googletest/samples/sample1.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample1.cc rename to deps/googletest/googletest/samples/sample1.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample1.h b/deps/googletest/googletest/samples/sample1.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample1.h rename to deps/googletest/googletest/samples/sample1.h diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample10_unittest.cc b/deps/googletest/googletest/samples/sample10_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample10_unittest.cc rename to deps/googletest/googletest/samples/sample10_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample1_unittest.cc b/deps/googletest/googletest/samples/sample1_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample1_unittest.cc rename to deps/googletest/googletest/samples/sample1_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample2.cc b/deps/googletest/googletest/samples/sample2.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample2.cc rename to deps/googletest/googletest/samples/sample2.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample2.h b/deps/googletest/googletest/samples/sample2.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample2.h rename to deps/googletest/googletest/samples/sample2.h diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample2_unittest.cc b/deps/googletest/googletest/samples/sample2_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample2_unittest.cc rename to deps/googletest/googletest/samples/sample2_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample3-inl.h b/deps/googletest/googletest/samples/sample3-inl.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample3-inl.h rename to deps/googletest/googletest/samples/sample3-inl.h diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample3_unittest.cc b/deps/googletest/googletest/samples/sample3_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample3_unittest.cc rename to deps/googletest/googletest/samples/sample3_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample4.cc b/deps/googletest/googletest/samples/sample4.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample4.cc rename to deps/googletest/googletest/samples/sample4.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample4.h b/deps/googletest/googletest/samples/sample4.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample4.h rename to deps/googletest/googletest/samples/sample4.h diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample4_unittest.cc b/deps/googletest/googletest/samples/sample4_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample4_unittest.cc rename to deps/googletest/googletest/samples/sample4_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample5_unittest.cc b/deps/googletest/googletest/samples/sample5_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample5_unittest.cc rename to deps/googletest/googletest/samples/sample5_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample6_unittest.cc b/deps/googletest/googletest/samples/sample6_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample6_unittest.cc rename to deps/googletest/googletest/samples/sample6_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample7_unittest.cc b/deps/googletest/googletest/samples/sample7_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample7_unittest.cc rename to deps/googletest/googletest/samples/sample7_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample8_unittest.cc b/deps/googletest/googletest/samples/sample8_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample8_unittest.cc rename to deps/googletest/googletest/samples/sample8_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample9_unittest.cc b/deps/googletest/googletest/samples/sample9_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample9_unittest.cc rename to deps/googletest/googletest/samples/sample9_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/src/gtest-all.cc b/deps/googletest/googletest/src/gtest-all.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/src/gtest-all.cc rename to deps/googletest/googletest/src/gtest-all.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/src/gtest-assertion-result.cc b/deps/googletest/googletest/src/gtest-assertion-result.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/src/gtest-assertion-result.cc rename to deps/googletest/googletest/src/gtest-assertion-result.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/src/gtest-death-test.cc b/deps/googletest/googletest/src/gtest-death-test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/src/gtest-death-test.cc rename to deps/googletest/googletest/src/gtest-death-test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/src/gtest-filepath.cc b/deps/googletest/googletest/src/gtest-filepath.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/src/gtest-filepath.cc rename to deps/googletest/googletest/src/gtest-filepath.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/src/gtest-internal-inl.h b/deps/googletest/googletest/src/gtest-internal-inl.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/src/gtest-internal-inl.h rename to deps/googletest/googletest/src/gtest-internal-inl.h diff --git a/bootstrap/cxx/deps/googletest/googletest/src/gtest-matchers.cc b/deps/googletest/googletest/src/gtest-matchers.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/src/gtest-matchers.cc rename to deps/googletest/googletest/src/gtest-matchers.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/src/gtest-port.cc b/deps/googletest/googletest/src/gtest-port.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/src/gtest-port.cc rename to deps/googletest/googletest/src/gtest-port.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/src/gtest-printers.cc b/deps/googletest/googletest/src/gtest-printers.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/src/gtest-printers.cc rename to deps/googletest/googletest/src/gtest-printers.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/src/gtest-test-part.cc b/deps/googletest/googletest/src/gtest-test-part.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/src/gtest-test-part.cc rename to deps/googletest/googletest/src/gtest-test-part.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/src/gtest-typed-test.cc b/deps/googletest/googletest/src/gtest-typed-test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/src/gtest-typed-test.cc rename to deps/googletest/googletest/src/gtest-typed-test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/src/gtest.cc b/deps/googletest/googletest/src/gtest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/src/gtest.cc rename to deps/googletest/googletest/src/gtest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/src/gtest_main.cc b/deps/googletest/googletest/src/gtest_main.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/src/gtest_main.cc rename to deps/googletest/googletest/src/gtest_main.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/BUILD.bazel b/deps/googletest/googletest/test/BUILD.bazel similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/BUILD.bazel rename to deps/googletest/googletest/test/BUILD.bazel diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-break-on-failure-unittest.py b/deps/googletest/googletest/test/googletest-break-on-failure-unittest.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-break-on-failure-unittest.py rename to deps/googletest/googletest/test/googletest-break-on-failure-unittest.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-break-on-failure-unittest_.cc b/deps/googletest/googletest/test/googletest-break-on-failure-unittest_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-break-on-failure-unittest_.cc rename to deps/googletest/googletest/test/googletest-break-on-failure-unittest_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-catch-exceptions-test.py b/deps/googletest/googletest/test/googletest-catch-exceptions-test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-catch-exceptions-test.py rename to deps/googletest/googletest/test/googletest-catch-exceptions-test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-catch-exceptions-test_.cc b/deps/googletest/googletest/test/googletest-catch-exceptions-test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-catch-exceptions-test_.cc rename to deps/googletest/googletest/test/googletest-catch-exceptions-test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-color-test.py b/deps/googletest/googletest/test/googletest-color-test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-color-test.py rename to deps/googletest/googletest/test/googletest-color-test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-color-test_.cc b/deps/googletest/googletest/test/googletest-color-test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-color-test_.cc rename to deps/googletest/googletest/test/googletest-color-test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-death-test-test.cc b/deps/googletest/googletest/test/googletest-death-test-test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-death-test-test.cc rename to deps/googletest/googletest/test/googletest-death-test-test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-death-test_ex_test.cc b/deps/googletest/googletest/test/googletest-death-test_ex_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-death-test_ex_test.cc rename to deps/googletest/googletest/test/googletest-death-test_ex_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-env-var-test.py b/deps/googletest/googletest/test/googletest-env-var-test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-env-var-test.py rename to deps/googletest/googletest/test/googletest-env-var-test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-env-var-test_.cc b/deps/googletest/googletest/test/googletest-env-var-test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-env-var-test_.cc rename to deps/googletest/googletest/test/googletest-env-var-test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-failfast-unittest.py b/deps/googletest/googletest/test/googletest-failfast-unittest.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-failfast-unittest.py rename to deps/googletest/googletest/test/googletest-failfast-unittest.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-failfast-unittest_.cc b/deps/googletest/googletest/test/googletest-failfast-unittest_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-failfast-unittest_.cc rename to deps/googletest/googletest/test/googletest-failfast-unittest_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-filepath-test.cc b/deps/googletest/googletest/test/googletest-filepath-test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-filepath-test.cc rename to deps/googletest/googletest/test/googletest-filepath-test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-filter-unittest.py b/deps/googletest/googletest/test/googletest-filter-unittest.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-filter-unittest.py rename to deps/googletest/googletest/test/googletest-filter-unittest.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-filter-unittest_.cc b/deps/googletest/googletest/test/googletest-filter-unittest_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-filter-unittest_.cc rename to deps/googletest/googletest/test/googletest-filter-unittest_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-global-environment-unittest.py b/deps/googletest/googletest/test/googletest-global-environment-unittest.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-global-environment-unittest.py rename to deps/googletest/googletest/test/googletest-global-environment-unittest.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-global-environment-unittest_.cc b/deps/googletest/googletest/test/googletest-global-environment-unittest_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-global-environment-unittest_.cc rename to deps/googletest/googletest/test/googletest-global-environment-unittest_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-json-outfiles-test.py b/deps/googletest/googletest/test/googletest-json-outfiles-test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-json-outfiles-test.py rename to deps/googletest/googletest/test/googletest-json-outfiles-test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-json-output-unittest.py b/deps/googletest/googletest/test/googletest-json-output-unittest.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-json-output-unittest.py rename to deps/googletest/googletest/test/googletest-json-output-unittest.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-list-tests-unittest.py b/deps/googletest/googletest/test/googletest-list-tests-unittest.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-list-tests-unittest.py rename to deps/googletest/googletest/test/googletest-list-tests-unittest.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-list-tests-unittest_.cc b/deps/googletest/googletest/test/googletest-list-tests-unittest_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-list-tests-unittest_.cc rename to deps/googletest/googletest/test/googletest-list-tests-unittest_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-listener-test.cc b/deps/googletest/googletest/test/googletest-listener-test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-listener-test.cc rename to deps/googletest/googletest/test/googletest-listener-test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-message-test.cc b/deps/googletest/googletest/test/googletest-message-test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-message-test.cc rename to deps/googletest/googletest/test/googletest-message-test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-options-test.cc b/deps/googletest/googletest/test/googletest-options-test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-options-test.cc rename to deps/googletest/googletest/test/googletest-options-test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-output-test-golden-lin.txt b/deps/googletest/googletest/test/googletest-output-test-golden-lin.txt similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-output-test-golden-lin.txt rename to deps/googletest/googletest/test/googletest-output-test-golden-lin.txt diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-output-test.py b/deps/googletest/googletest/test/googletest-output-test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-output-test.py rename to deps/googletest/googletest/test/googletest-output-test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-output-test_.cc b/deps/googletest/googletest/test/googletest-output-test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-output-test_.cc rename to deps/googletest/googletest/test/googletest-output-test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test-invalid-name1-test.py b/deps/googletest/googletest/test/googletest-param-test-invalid-name1-test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test-invalid-name1-test.py rename to deps/googletest/googletest/test/googletest-param-test-invalid-name1-test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test-invalid-name1-test_.cc b/deps/googletest/googletest/test/googletest-param-test-invalid-name1-test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test-invalid-name1-test_.cc rename to deps/googletest/googletest/test/googletest-param-test-invalid-name1-test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test-invalid-name2-test.py b/deps/googletest/googletest/test/googletest-param-test-invalid-name2-test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test-invalid-name2-test.py rename to deps/googletest/googletest/test/googletest-param-test-invalid-name2-test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test-invalid-name2-test_.cc b/deps/googletest/googletest/test/googletest-param-test-invalid-name2-test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test-invalid-name2-test_.cc rename to deps/googletest/googletest/test/googletest-param-test-invalid-name2-test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test-test.cc b/deps/googletest/googletest/test/googletest-param-test-test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test-test.cc rename to deps/googletest/googletest/test/googletest-param-test-test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test-test.h b/deps/googletest/googletest/test/googletest-param-test-test.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test-test.h rename to deps/googletest/googletest/test/googletest-param-test-test.h diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test2-test.cc b/deps/googletest/googletest/test/googletest-param-test2-test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test2-test.cc rename to deps/googletest/googletest/test/googletest-param-test2-test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-port-test.cc b/deps/googletest/googletest/test/googletest-port-test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-port-test.cc rename to deps/googletest/googletest/test/googletest-port-test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-printers-test.cc b/deps/googletest/googletest/test/googletest-printers-test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-printers-test.cc rename to deps/googletest/googletest/test/googletest-printers-test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-setuptestsuite-test.py b/deps/googletest/googletest/test/googletest-setuptestsuite-test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-setuptestsuite-test.py rename to deps/googletest/googletest/test/googletest-setuptestsuite-test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-setuptestsuite-test_.cc b/deps/googletest/googletest/test/googletest-setuptestsuite-test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-setuptestsuite-test_.cc rename to deps/googletest/googletest/test/googletest-setuptestsuite-test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-shuffle-test.py b/deps/googletest/googletest/test/googletest-shuffle-test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-shuffle-test.py rename to deps/googletest/googletest/test/googletest-shuffle-test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-shuffle-test_.cc b/deps/googletest/googletest/test/googletest-shuffle-test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-shuffle-test_.cc rename to deps/googletest/googletest/test/googletest-shuffle-test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-test-part-test.cc b/deps/googletest/googletest/test/googletest-test-part-test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-test-part-test.cc rename to deps/googletest/googletest/test/googletest-test-part-test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-throw-on-failure-test.py b/deps/googletest/googletest/test/googletest-throw-on-failure-test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-throw-on-failure-test.py rename to deps/googletest/googletest/test/googletest-throw-on-failure-test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-throw-on-failure-test_.cc b/deps/googletest/googletest/test/googletest-throw-on-failure-test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-throw-on-failure-test_.cc rename to deps/googletest/googletest/test/googletest-throw-on-failure-test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-uninitialized-test.py b/deps/googletest/googletest/test/googletest-uninitialized-test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-uninitialized-test.py rename to deps/googletest/googletest/test/googletest-uninitialized-test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-uninitialized-test_.cc b/deps/googletest/googletest/test/googletest-uninitialized-test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-uninitialized-test_.cc rename to deps/googletest/googletest/test/googletest-uninitialized-test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest-typed-test2_test.cc b/deps/googletest/googletest/test/gtest-typed-test2_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest-typed-test2_test.cc rename to deps/googletest/googletest/test/gtest-typed-test2_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest-typed-test_test.cc b/deps/googletest/googletest/test/gtest-typed-test_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest-typed-test_test.cc rename to deps/googletest/googletest/test/gtest-typed-test_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest-typed-test_test.h b/deps/googletest/googletest/test/gtest-typed-test_test.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest-typed-test_test.h rename to deps/googletest/googletest/test/gtest-typed-test_test.h diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest-unittest-api_test.cc b/deps/googletest/googletest/test/gtest-unittest-api_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest-unittest-api_test.cc rename to deps/googletest/googletest/test/gtest-unittest-api_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_all_test.cc b/deps/googletest/googletest/test/gtest_all_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_all_test.cc rename to deps/googletest/googletest/test/gtest_all_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_assert_by_exception_test.cc b/deps/googletest/googletest/test/gtest_assert_by_exception_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_assert_by_exception_test.cc rename to deps/googletest/googletest/test/gtest_assert_by_exception_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_environment_test.cc b/deps/googletest/googletest/test/gtest_environment_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_environment_test.cc rename to deps/googletest/googletest/test/gtest_environment_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_help_test.py b/deps/googletest/googletest/test/gtest_help_test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_help_test.py rename to deps/googletest/googletest/test/gtest_help_test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_help_test_.cc b/deps/googletest/googletest/test/gtest_help_test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_help_test_.cc rename to deps/googletest/googletest/test/gtest_help_test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_json_test_utils.py b/deps/googletest/googletest/test/gtest_json_test_utils.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_json_test_utils.py rename to deps/googletest/googletest/test/gtest_json_test_utils.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_list_output_unittest.py b/deps/googletest/googletest/test/gtest_list_output_unittest.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_list_output_unittest.py rename to deps/googletest/googletest/test/gtest_list_output_unittest.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_list_output_unittest_.cc b/deps/googletest/googletest/test/gtest_list_output_unittest_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_list_output_unittest_.cc rename to deps/googletest/googletest/test/gtest_list_output_unittest_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_main_unittest.cc b/deps/googletest/googletest/test/gtest_main_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_main_unittest.cc rename to deps/googletest/googletest/test/gtest_main_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_no_test_unittest.cc b/deps/googletest/googletest/test/gtest_no_test_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_no_test_unittest.cc rename to deps/googletest/googletest/test/gtest_no_test_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_pred_impl_unittest.cc b/deps/googletest/googletest/test/gtest_pred_impl_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_pred_impl_unittest.cc rename to deps/googletest/googletest/test/gtest_pred_impl_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_premature_exit_test.cc b/deps/googletest/googletest/test/gtest_premature_exit_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_premature_exit_test.cc rename to deps/googletest/googletest/test/gtest_premature_exit_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_prod_test.cc b/deps/googletest/googletest/test/gtest_prod_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_prod_test.cc rename to deps/googletest/googletest/test/gtest_prod_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_repeat_test.cc b/deps/googletest/googletest/test/gtest_repeat_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_repeat_test.cc rename to deps/googletest/googletest/test/gtest_repeat_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_skip_check_output_test.py b/deps/googletest/googletest/test/gtest_skip_check_output_test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_skip_check_output_test.py rename to deps/googletest/googletest/test/gtest_skip_check_output_test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_skip_environment_check_output_test.py b/deps/googletest/googletest/test/gtest_skip_environment_check_output_test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_skip_environment_check_output_test.py rename to deps/googletest/googletest/test/gtest_skip_environment_check_output_test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc b/deps/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc rename to deps/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_skip_test.cc b/deps/googletest/googletest/test/gtest_skip_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_skip_test.cc rename to deps/googletest/googletest/test/gtest_skip_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_sole_header_test.cc b/deps/googletest/googletest/test/gtest_sole_header_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_sole_header_test.cc rename to deps/googletest/googletest/test/gtest_sole_header_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_stress_test.cc b/deps/googletest/googletest/test/gtest_stress_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_stress_test.cc rename to deps/googletest/googletest/test/gtest_stress_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_test_macro_stack_footprint_test.cc b/deps/googletest/googletest/test/gtest_test_macro_stack_footprint_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_test_macro_stack_footprint_test.cc rename to deps/googletest/googletest/test/gtest_test_macro_stack_footprint_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_test_utils.py b/deps/googletest/googletest/test/gtest_test_utils.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_test_utils.py rename to deps/googletest/googletest/test/gtest_test_utils.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_testbridge_test.py b/deps/googletest/googletest/test/gtest_testbridge_test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_testbridge_test.py rename to deps/googletest/googletest/test/gtest_testbridge_test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_testbridge_test_.cc b/deps/googletest/googletest/test/gtest_testbridge_test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_testbridge_test_.cc rename to deps/googletest/googletest/test/gtest_testbridge_test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_throw_on_failure_ex_test.cc b/deps/googletest/googletest/test/gtest_throw_on_failure_ex_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_throw_on_failure_ex_test.cc rename to deps/googletest/googletest/test/gtest_throw_on_failure_ex_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_unittest.cc b/deps/googletest/googletest/test/gtest_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_unittest.cc rename to deps/googletest/googletest/test/gtest_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_xml_outfile1_test_.cc b/deps/googletest/googletest/test/gtest_xml_outfile1_test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_xml_outfile1_test_.cc rename to deps/googletest/googletest/test/gtest_xml_outfile1_test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_xml_outfile2_test_.cc b/deps/googletest/googletest/test/gtest_xml_outfile2_test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_xml_outfile2_test_.cc rename to deps/googletest/googletest/test/gtest_xml_outfile2_test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_xml_outfiles_test.py b/deps/googletest/googletest/test/gtest_xml_outfiles_test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_xml_outfiles_test.py rename to deps/googletest/googletest/test/gtest_xml_outfiles_test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_xml_output_unittest.py b/deps/googletest/googletest/test/gtest_xml_output_unittest.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_xml_output_unittest.py rename to deps/googletest/googletest/test/gtest_xml_output_unittest.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_xml_output_unittest_.cc b/deps/googletest/googletest/test/gtest_xml_output_unittest_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_xml_output_unittest_.cc rename to deps/googletest/googletest/test/gtest_xml_output_unittest_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_xml_test_utils.py b/deps/googletest/googletest/test/gtest_xml_test_utils.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_xml_test_utils.py rename to deps/googletest/googletest/test/gtest_xml_test_utils.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/production.cc b/deps/googletest/googletest/test/production.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/production.cc rename to deps/googletest/googletest/test/production.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/production.h b/deps/googletest/googletest/test/production.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/production.h rename to deps/googletest/googletest/test/production.h diff --git a/bootstrap/cxx/deps/icu/APIChangeReport.html b/deps/icu/APIChangeReport.html similarity index 100% rename from bootstrap/cxx/deps/icu/APIChangeReport.html rename to deps/icu/APIChangeReport.html diff --git a/bootstrap/cxx/deps/icu/APIChangeReport.md b/deps/icu/APIChangeReport.md similarity index 100% rename from bootstrap/cxx/deps/icu/APIChangeReport.md rename to deps/icu/APIChangeReport.md diff --git a/bootstrap/cxx/deps/icu/LICENSE b/deps/icu/LICENSE similarity index 100% rename from bootstrap/cxx/deps/icu/LICENSE rename to deps/icu/LICENSE diff --git a/bootstrap/cxx/deps/icu/as_is/bomlist.py b/deps/icu/as_is/bomlist.py similarity index 100% rename from bootstrap/cxx/deps/icu/as_is/bomlist.py rename to deps/icu/as_is/bomlist.py diff --git a/bootstrap/cxx/deps/icu/as_is/bomlist.txt b/deps/icu/as_is/bomlist.txt similarity index 100% rename from bootstrap/cxx/deps/icu/as_is/bomlist.txt rename to deps/icu/as_is/bomlist.txt diff --git a/bootstrap/cxx/deps/icu/as_is/os390/unpax-icu.sh b/deps/icu/as_is/os390/unpax-icu.sh similarity index 100% rename from bootstrap/cxx/deps/icu/as_is/os390/unpax-icu.sh rename to deps/icu/as_is/os390/unpax-icu.sh diff --git a/bootstrap/cxx/deps/icu/as_is/os400/bldiculd.sh b/deps/icu/as_is/os400/bldiculd.sh similarity index 100% rename from bootstrap/cxx/deps/icu/as_is/os400/bldiculd.sh rename to deps/icu/as_is/os400/bldiculd.sh diff --git a/bootstrap/cxx/deps/icu/as_is/os400/convertConfigure.sed b/deps/icu/as_is/os400/convertConfigure.sed similarity index 100% rename from bootstrap/cxx/deps/icu/as_is/os400/convertConfigure.sed rename to deps/icu/as_is/os400/convertConfigure.sed diff --git a/bootstrap/cxx/deps/icu/as_is/os400/cxxfilt.cpp b/deps/icu/as_is/os400/cxxfilt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/as_is/os400/cxxfilt.cpp rename to deps/icu/as_is/os400/cxxfilt.cpp diff --git a/bootstrap/cxx/deps/icu/as_is/os400/fixup-icu.sh b/deps/icu/as_is/os400/fixup-icu.sh similarity index 100% rename from bootstrap/cxx/deps/icu/as_is/os400/fixup-icu.sh rename to deps/icu/as_is/os400/fixup-icu.sh diff --git a/bootstrap/cxx/deps/icu/as_is/os400/iculd.c b/deps/icu/as_is/os400/iculd.c similarity index 100% rename from bootstrap/cxx/deps/icu/as_is/os400/iculd.c rename to deps/icu/as_is/os400/iculd.c diff --git a/bootstrap/cxx/deps/icu/as_is/os400/unpax-icu.sh b/deps/icu/as_is/os400/unpax-icu.sh similarity index 100% rename from bootstrap/cxx/deps/icu/as_is/os400/unpax-icu.sh rename to deps/icu/as_is/os400/unpax-icu.sh diff --git a/bootstrap/cxx/deps/icu/icu4c.css b/deps/icu/icu4c.css similarity index 100% rename from bootstrap/cxx/deps/icu/icu4c.css rename to deps/icu/icu4c.css diff --git a/bootstrap/cxx/deps/icu/license.html b/deps/icu/license.html similarity index 100% rename from bootstrap/cxx/deps/icu/license.html rename to deps/icu/license.html diff --git a/bootstrap/cxx/deps/icu/packaging/PACKAGES b/deps/icu/packaging/PACKAGES similarity index 100% rename from bootstrap/cxx/deps/icu/packaging/PACKAGES rename to deps/icu/packaging/PACKAGES diff --git a/bootstrap/cxx/deps/icu/packaging/README b/deps/icu/packaging/README similarity index 100% rename from bootstrap/cxx/deps/icu/packaging/README rename to deps/icu/packaging/README diff --git a/bootstrap/cxx/deps/icu/packaging/distrelease.ps1 b/deps/icu/packaging/distrelease.ps1 similarity index 100% rename from bootstrap/cxx/deps/icu/packaging/distrelease.ps1 rename to deps/icu/packaging/distrelease.ps1 diff --git a/bootstrap/cxx/deps/icu/packaging/rpm/icu.spec b/deps/icu/packaging/rpm/icu.spec similarity index 100% rename from bootstrap/cxx/deps/icu/packaging/rpm/icu.spec rename to deps/icu/packaging/rpm/icu.spec diff --git a/bootstrap/cxx/deps/icu/readme.html b/deps/icu/readme.html similarity index 100% rename from bootstrap/cxx/deps/icu/readme.html rename to deps/icu/readme.html diff --git a/bootstrap/cxx/deps/icu/source/.clang-format b/deps/icu/source/.clang-format similarity index 100% rename from bootstrap/cxx/deps/icu/source/.clang-format rename to deps/icu/source/.clang-format diff --git a/bootstrap/cxx/deps/icu/source/Doxyfile.in b/deps/icu/source/Doxyfile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/Doxyfile.in rename to deps/icu/source/Doxyfile.in diff --git a/bootstrap/cxx/deps/icu/source/Makefile.in b/deps/icu/source/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/Makefile.in rename to deps/icu/source/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/acinclude.m4 b/deps/icu/source/acinclude.m4 similarity index 100% rename from bootstrap/cxx/deps/icu/source/acinclude.m4 rename to deps/icu/source/acinclude.m4 diff --git a/bootstrap/cxx/deps/icu/source/aclocal.m4 b/deps/icu/source/aclocal.m4 similarity index 100% rename from bootstrap/cxx/deps/icu/source/aclocal.m4 rename to deps/icu/source/aclocal.m4 diff --git a/bootstrap/cxx/deps/icu/source/allinone/Build.Windows.Library.ProjectConfiguration.props b/deps/icu/source/allinone/Build.Windows.Library.ProjectConfiguration.props similarity index 100% rename from bootstrap/cxx/deps/icu/source/allinone/Build.Windows.Library.ProjectConfiguration.props rename to deps/icu/source/allinone/Build.Windows.Library.ProjectConfiguration.props diff --git a/bootstrap/cxx/deps/icu/source/allinone/Build.Windows.Library.WarningSettings.ProjectConfiguration.props b/deps/icu/source/allinone/Build.Windows.Library.WarningSettings.ProjectConfiguration.props similarity index 100% rename from bootstrap/cxx/deps/icu/source/allinone/Build.Windows.Library.WarningSettings.ProjectConfiguration.props rename to deps/icu/source/allinone/Build.Windows.Library.WarningSettings.ProjectConfiguration.props diff --git a/bootstrap/cxx/deps/icu/source/allinone/Build.Windows.PlatformToolset.props b/deps/icu/source/allinone/Build.Windows.PlatformToolset.props similarity index 100% rename from bootstrap/cxx/deps/icu/source/allinone/Build.Windows.PlatformToolset.props rename to deps/icu/source/allinone/Build.Windows.PlatformToolset.props diff --git a/bootstrap/cxx/deps/icu/source/allinone/Build.Windows.ProjectConfiguration.props b/deps/icu/source/allinone/Build.Windows.ProjectConfiguration.props similarity index 100% rename from bootstrap/cxx/deps/icu/source/allinone/Build.Windows.ProjectConfiguration.props rename to deps/icu/source/allinone/Build.Windows.ProjectConfiguration.props diff --git a/bootstrap/cxx/deps/icu/source/allinone/Build.Windows.UWP.ProjectConfiguration.props b/deps/icu/source/allinone/Build.Windows.UWP.ProjectConfiguration.props similarity index 100% rename from bootstrap/cxx/deps/icu/source/allinone/Build.Windows.UWP.ProjectConfiguration.props rename to deps/icu/source/allinone/Build.Windows.UWP.ProjectConfiguration.props diff --git a/bootstrap/cxx/deps/icu/source/allinone/Windows.CopyUnicodeHeaderFiles.targets b/deps/icu/source/allinone/Windows.CopyUnicodeHeaderFiles.targets similarity index 100% rename from bootstrap/cxx/deps/icu/source/allinone/Windows.CopyUnicodeHeaderFiles.targets rename to deps/icu/source/allinone/Windows.CopyUnicodeHeaderFiles.targets diff --git a/bootstrap/cxx/deps/icu/source/allinone/allinone.sln b/deps/icu/source/allinone/allinone.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/allinone/allinone.sln rename to deps/icu/source/allinone/allinone.sln diff --git a/bootstrap/cxx/deps/icu/source/allinone/icucheck.bat b/deps/icu/source/allinone/icucheck.bat similarity index 100% rename from bootstrap/cxx/deps/icu/source/allinone/icucheck.bat rename to deps/icu/source/allinone/icucheck.bat diff --git a/bootstrap/cxx/deps/icu/source/common/BUILD.bazel b/deps/icu/source/common/BUILD.bazel similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/BUILD.bazel rename to deps/icu/source/common/BUILD.bazel diff --git a/bootstrap/cxx/deps/icu/source/common/Makefile.in b/deps/icu/source/common/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/Makefile.in rename to deps/icu/source/common/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/common/appendable.cpp b/deps/icu/source/common/appendable.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/appendable.cpp rename to deps/icu/source/common/appendable.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/bmpset.cpp b/deps/icu/source/common/bmpset.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/bmpset.cpp rename to deps/icu/source/common/bmpset.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/bmpset.h b/deps/icu/source/common/bmpset.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/bmpset.h rename to deps/icu/source/common/bmpset.h diff --git a/bootstrap/cxx/deps/icu/source/common/brkeng.cpp b/deps/icu/source/common/brkeng.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/brkeng.cpp rename to deps/icu/source/common/brkeng.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/brkeng.h b/deps/icu/source/common/brkeng.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/brkeng.h rename to deps/icu/source/common/brkeng.h diff --git a/bootstrap/cxx/deps/icu/source/common/brkiter.cpp b/deps/icu/source/common/brkiter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/brkiter.cpp rename to deps/icu/source/common/brkiter.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/bytesinkutil.cpp b/deps/icu/source/common/bytesinkutil.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/bytesinkutil.cpp rename to deps/icu/source/common/bytesinkutil.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/bytesinkutil.h b/deps/icu/source/common/bytesinkutil.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/bytesinkutil.h rename to deps/icu/source/common/bytesinkutil.h diff --git a/bootstrap/cxx/deps/icu/source/common/bytestream.cpp b/deps/icu/source/common/bytestream.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/bytestream.cpp rename to deps/icu/source/common/bytestream.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/bytestrie.cpp b/deps/icu/source/common/bytestrie.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/bytestrie.cpp rename to deps/icu/source/common/bytestrie.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/bytestriebuilder.cpp b/deps/icu/source/common/bytestriebuilder.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/bytestriebuilder.cpp rename to deps/icu/source/common/bytestriebuilder.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/bytestrieiterator.cpp b/deps/icu/source/common/bytestrieiterator.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/bytestrieiterator.cpp rename to deps/icu/source/common/bytestrieiterator.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/caniter.cpp b/deps/icu/source/common/caniter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/caniter.cpp rename to deps/icu/source/common/caniter.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/capi_helper.h b/deps/icu/source/common/capi_helper.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/capi_helper.h rename to deps/icu/source/common/capi_helper.h diff --git a/bootstrap/cxx/deps/icu/source/common/characterproperties.cpp b/deps/icu/source/common/characterproperties.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/characterproperties.cpp rename to deps/icu/source/common/characterproperties.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/chariter.cpp b/deps/icu/source/common/chariter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/chariter.cpp rename to deps/icu/source/common/chariter.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/charstr.cpp b/deps/icu/source/common/charstr.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/charstr.cpp rename to deps/icu/source/common/charstr.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/charstr.h b/deps/icu/source/common/charstr.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/charstr.h rename to deps/icu/source/common/charstr.h diff --git a/bootstrap/cxx/deps/icu/source/common/charstrmap.h b/deps/icu/source/common/charstrmap.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/charstrmap.h rename to deps/icu/source/common/charstrmap.h diff --git a/bootstrap/cxx/deps/icu/source/common/cmemory.cpp b/deps/icu/source/common/cmemory.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/cmemory.cpp rename to deps/icu/source/common/cmemory.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/cmemory.h b/deps/icu/source/common/cmemory.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/cmemory.h rename to deps/icu/source/common/cmemory.h diff --git a/bootstrap/cxx/deps/icu/source/common/common.rc b/deps/icu/source/common/common.rc similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/common.rc rename to deps/icu/source/common/common.rc diff --git a/bootstrap/cxx/deps/icu/source/common/common.vcxproj b/deps/icu/source/common/common.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/common.vcxproj rename to deps/icu/source/common/common.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/common/common.vcxproj.filters b/deps/icu/source/common/common.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/common.vcxproj.filters rename to deps/icu/source/common/common.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/common/common_uwp.vcxproj b/deps/icu/source/common/common_uwp.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/common_uwp.vcxproj rename to deps/icu/source/common/common_uwp.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/common/cpputils.h b/deps/icu/source/common/cpputils.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/cpputils.h rename to deps/icu/source/common/cpputils.h diff --git a/bootstrap/cxx/deps/icu/source/common/cstr.cpp b/deps/icu/source/common/cstr.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/cstr.cpp rename to deps/icu/source/common/cstr.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/cstr.h b/deps/icu/source/common/cstr.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/cstr.h rename to deps/icu/source/common/cstr.h diff --git a/bootstrap/cxx/deps/icu/source/common/cstring.cpp b/deps/icu/source/common/cstring.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/cstring.cpp rename to deps/icu/source/common/cstring.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/cstring.h b/deps/icu/source/common/cstring.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/cstring.h rename to deps/icu/source/common/cstring.h diff --git a/bootstrap/cxx/deps/icu/source/common/cwchar.cpp b/deps/icu/source/common/cwchar.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/cwchar.cpp rename to deps/icu/source/common/cwchar.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/cwchar.h b/deps/icu/source/common/cwchar.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/cwchar.h rename to deps/icu/source/common/cwchar.h diff --git a/bootstrap/cxx/deps/icu/source/common/dictbe.cpp b/deps/icu/source/common/dictbe.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/dictbe.cpp rename to deps/icu/source/common/dictbe.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/dictbe.h b/deps/icu/source/common/dictbe.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/dictbe.h rename to deps/icu/source/common/dictbe.h diff --git a/bootstrap/cxx/deps/icu/source/common/dictionarydata.cpp b/deps/icu/source/common/dictionarydata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/dictionarydata.cpp rename to deps/icu/source/common/dictionarydata.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/dictionarydata.h b/deps/icu/source/common/dictionarydata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/dictionarydata.h rename to deps/icu/source/common/dictionarydata.h diff --git a/bootstrap/cxx/deps/icu/source/common/dtintrv.cpp b/deps/icu/source/common/dtintrv.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/dtintrv.cpp rename to deps/icu/source/common/dtintrv.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/edits.cpp b/deps/icu/source/common/edits.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/edits.cpp rename to deps/icu/source/common/edits.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/emojiprops.cpp b/deps/icu/source/common/emojiprops.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/emojiprops.cpp rename to deps/icu/source/common/emojiprops.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/emojiprops.h b/deps/icu/source/common/emojiprops.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/emojiprops.h rename to deps/icu/source/common/emojiprops.h diff --git a/bootstrap/cxx/deps/icu/source/common/errorcode.cpp b/deps/icu/source/common/errorcode.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/errorcode.cpp rename to deps/icu/source/common/errorcode.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/filteredbrk.cpp b/deps/icu/source/common/filteredbrk.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/filteredbrk.cpp rename to deps/icu/source/common/filteredbrk.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/filterednormalizer2.cpp b/deps/icu/source/common/filterednormalizer2.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/filterednormalizer2.cpp rename to deps/icu/source/common/filterednormalizer2.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/hash.h b/deps/icu/source/common/hash.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/hash.h rename to deps/icu/source/common/hash.h diff --git a/bootstrap/cxx/deps/icu/source/common/icudataver.cpp b/deps/icu/source/common/icudataver.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/icudataver.cpp rename to deps/icu/source/common/icudataver.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/icuplug.cpp b/deps/icu/source/common/icuplug.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/icuplug.cpp rename to deps/icu/source/common/icuplug.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/icuplugimp.h b/deps/icu/source/common/icuplugimp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/icuplugimp.h rename to deps/icu/source/common/icuplugimp.h diff --git a/bootstrap/cxx/deps/icu/source/common/loadednormalizer2impl.cpp b/deps/icu/source/common/loadednormalizer2impl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/loadednormalizer2impl.cpp rename to deps/icu/source/common/loadednormalizer2impl.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/localebuilder.cpp b/deps/icu/source/common/localebuilder.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/localebuilder.cpp rename to deps/icu/source/common/localebuilder.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/localematcher.cpp b/deps/icu/source/common/localematcher.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/localematcher.cpp rename to deps/icu/source/common/localematcher.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/localeprioritylist.cpp b/deps/icu/source/common/localeprioritylist.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/localeprioritylist.cpp rename to deps/icu/source/common/localeprioritylist.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/localeprioritylist.h b/deps/icu/source/common/localeprioritylist.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/localeprioritylist.h rename to deps/icu/source/common/localeprioritylist.h diff --git a/bootstrap/cxx/deps/icu/source/common/localsvc.h b/deps/icu/source/common/localsvc.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/localsvc.h rename to deps/icu/source/common/localsvc.h diff --git a/bootstrap/cxx/deps/icu/source/common/locavailable.cpp b/deps/icu/source/common/locavailable.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/locavailable.cpp rename to deps/icu/source/common/locavailable.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/locbased.cpp b/deps/icu/source/common/locbased.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/locbased.cpp rename to deps/icu/source/common/locbased.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/locbased.h b/deps/icu/source/common/locbased.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/locbased.h rename to deps/icu/source/common/locbased.h diff --git a/bootstrap/cxx/deps/icu/source/common/locdispnames.cpp b/deps/icu/source/common/locdispnames.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/locdispnames.cpp rename to deps/icu/source/common/locdispnames.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/locdistance.cpp b/deps/icu/source/common/locdistance.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/locdistance.cpp rename to deps/icu/source/common/locdistance.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/locdistance.h b/deps/icu/source/common/locdistance.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/locdistance.h rename to deps/icu/source/common/locdistance.h diff --git a/bootstrap/cxx/deps/icu/source/common/locdspnm.cpp b/deps/icu/source/common/locdspnm.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/locdspnm.cpp rename to deps/icu/source/common/locdspnm.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/locid.cpp b/deps/icu/source/common/locid.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/locid.cpp rename to deps/icu/source/common/locid.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/loclikely.cpp b/deps/icu/source/common/loclikely.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/loclikely.cpp rename to deps/icu/source/common/loclikely.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/loclikelysubtags.cpp b/deps/icu/source/common/loclikelysubtags.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/loclikelysubtags.cpp rename to deps/icu/source/common/loclikelysubtags.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/loclikelysubtags.h b/deps/icu/source/common/loclikelysubtags.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/loclikelysubtags.h rename to deps/icu/source/common/loclikelysubtags.h diff --git a/bootstrap/cxx/deps/icu/source/common/locmap.cpp b/deps/icu/source/common/locmap.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/locmap.cpp rename to deps/icu/source/common/locmap.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/locmap.h b/deps/icu/source/common/locmap.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/locmap.h rename to deps/icu/source/common/locmap.h diff --git a/bootstrap/cxx/deps/icu/source/common/locresdata.cpp b/deps/icu/source/common/locresdata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/locresdata.cpp rename to deps/icu/source/common/locresdata.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/locutil.cpp b/deps/icu/source/common/locutil.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/locutil.cpp rename to deps/icu/source/common/locutil.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/locutil.h b/deps/icu/source/common/locutil.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/locutil.h rename to deps/icu/source/common/locutil.h diff --git a/bootstrap/cxx/deps/icu/source/common/lsr.cpp b/deps/icu/source/common/lsr.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/lsr.cpp rename to deps/icu/source/common/lsr.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/lsr.h b/deps/icu/source/common/lsr.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/lsr.h rename to deps/icu/source/common/lsr.h diff --git a/bootstrap/cxx/deps/icu/source/common/lstmbe.cpp b/deps/icu/source/common/lstmbe.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/lstmbe.cpp rename to deps/icu/source/common/lstmbe.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/lstmbe.h b/deps/icu/source/common/lstmbe.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/lstmbe.h rename to deps/icu/source/common/lstmbe.h diff --git a/bootstrap/cxx/deps/icu/source/common/messageimpl.h b/deps/icu/source/common/messageimpl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/messageimpl.h rename to deps/icu/source/common/messageimpl.h diff --git a/bootstrap/cxx/deps/icu/source/common/messagepattern.cpp b/deps/icu/source/common/messagepattern.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/messagepattern.cpp rename to deps/icu/source/common/messagepattern.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/msvcres.h b/deps/icu/source/common/msvcres.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/msvcres.h rename to deps/icu/source/common/msvcres.h diff --git a/bootstrap/cxx/deps/icu/source/common/mutex.h b/deps/icu/source/common/mutex.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/mutex.h rename to deps/icu/source/common/mutex.h diff --git a/bootstrap/cxx/deps/icu/source/common/norm2_nfc_data.h b/deps/icu/source/common/norm2_nfc_data.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/norm2_nfc_data.h rename to deps/icu/source/common/norm2_nfc_data.h diff --git a/bootstrap/cxx/deps/icu/source/common/norm2allmodes.h b/deps/icu/source/common/norm2allmodes.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/norm2allmodes.h rename to deps/icu/source/common/norm2allmodes.h diff --git a/bootstrap/cxx/deps/icu/source/common/normalizer2.cpp b/deps/icu/source/common/normalizer2.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/normalizer2.cpp rename to deps/icu/source/common/normalizer2.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/normalizer2impl.cpp b/deps/icu/source/common/normalizer2impl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/normalizer2impl.cpp rename to deps/icu/source/common/normalizer2impl.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/normalizer2impl.h b/deps/icu/source/common/normalizer2impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/normalizer2impl.h rename to deps/icu/source/common/normalizer2impl.h diff --git a/bootstrap/cxx/deps/icu/source/common/normlzr.cpp b/deps/icu/source/common/normlzr.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/normlzr.cpp rename to deps/icu/source/common/normlzr.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/parsepos.cpp b/deps/icu/source/common/parsepos.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/parsepos.cpp rename to deps/icu/source/common/parsepos.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/patternprops.cpp b/deps/icu/source/common/patternprops.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/patternprops.cpp rename to deps/icu/source/common/patternprops.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/patternprops.h b/deps/icu/source/common/patternprops.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/patternprops.h rename to deps/icu/source/common/patternprops.h diff --git a/bootstrap/cxx/deps/icu/source/common/pluralmap.cpp b/deps/icu/source/common/pluralmap.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/pluralmap.cpp rename to deps/icu/source/common/pluralmap.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/pluralmap.h b/deps/icu/source/common/pluralmap.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/pluralmap.h rename to deps/icu/source/common/pluralmap.h diff --git a/bootstrap/cxx/deps/icu/source/common/propname.cpp b/deps/icu/source/common/propname.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/propname.cpp rename to deps/icu/source/common/propname.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/propname.h b/deps/icu/source/common/propname.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/propname.h rename to deps/icu/source/common/propname.h diff --git a/bootstrap/cxx/deps/icu/source/common/propname_data.h b/deps/icu/source/common/propname_data.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/propname_data.h rename to deps/icu/source/common/propname_data.h diff --git a/bootstrap/cxx/deps/icu/source/common/propsvec.cpp b/deps/icu/source/common/propsvec.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/propsvec.cpp rename to deps/icu/source/common/propsvec.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/propsvec.h b/deps/icu/source/common/propsvec.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/propsvec.h rename to deps/icu/source/common/propsvec.h diff --git a/bootstrap/cxx/deps/icu/source/common/punycode.cpp b/deps/icu/source/common/punycode.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/punycode.cpp rename to deps/icu/source/common/punycode.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/punycode.h b/deps/icu/source/common/punycode.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/punycode.h rename to deps/icu/source/common/punycode.h diff --git a/bootstrap/cxx/deps/icu/source/common/putil.cpp b/deps/icu/source/common/putil.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/putil.cpp rename to deps/icu/source/common/putil.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/putilimp.h b/deps/icu/source/common/putilimp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/putilimp.h rename to deps/icu/source/common/putilimp.h diff --git a/bootstrap/cxx/deps/icu/source/common/rbbi.cpp b/deps/icu/source/common/rbbi.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbi.cpp rename to deps/icu/source/common/rbbi.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/rbbi_cache.cpp b/deps/icu/source/common/rbbi_cache.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbi_cache.cpp rename to deps/icu/source/common/rbbi_cache.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/rbbi_cache.h b/deps/icu/source/common/rbbi_cache.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbi_cache.h rename to deps/icu/source/common/rbbi_cache.h diff --git a/bootstrap/cxx/deps/icu/source/common/rbbicst.pl b/deps/icu/source/common/rbbicst.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbicst.pl rename to deps/icu/source/common/rbbicst.pl diff --git a/bootstrap/cxx/deps/icu/source/common/rbbidata.cpp b/deps/icu/source/common/rbbidata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbidata.cpp rename to deps/icu/source/common/rbbidata.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/rbbidata.h b/deps/icu/source/common/rbbidata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbidata.h rename to deps/icu/source/common/rbbidata.h diff --git a/bootstrap/cxx/deps/icu/source/common/rbbinode.cpp b/deps/icu/source/common/rbbinode.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbinode.cpp rename to deps/icu/source/common/rbbinode.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/rbbinode.h b/deps/icu/source/common/rbbinode.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbinode.h rename to deps/icu/source/common/rbbinode.h diff --git a/bootstrap/cxx/deps/icu/source/common/rbbirb.cpp b/deps/icu/source/common/rbbirb.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbirb.cpp rename to deps/icu/source/common/rbbirb.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/rbbirb.h b/deps/icu/source/common/rbbirb.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbirb.h rename to deps/icu/source/common/rbbirb.h diff --git a/bootstrap/cxx/deps/icu/source/common/rbbirpt.h b/deps/icu/source/common/rbbirpt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbirpt.h rename to deps/icu/source/common/rbbirpt.h diff --git a/bootstrap/cxx/deps/icu/source/common/rbbirpt.txt b/deps/icu/source/common/rbbirpt.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbirpt.txt rename to deps/icu/source/common/rbbirpt.txt diff --git a/bootstrap/cxx/deps/icu/source/common/rbbiscan.cpp b/deps/icu/source/common/rbbiscan.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbiscan.cpp rename to deps/icu/source/common/rbbiscan.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/rbbiscan.h b/deps/icu/source/common/rbbiscan.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbiscan.h rename to deps/icu/source/common/rbbiscan.h diff --git a/bootstrap/cxx/deps/icu/source/common/rbbisetb.cpp b/deps/icu/source/common/rbbisetb.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbisetb.cpp rename to deps/icu/source/common/rbbisetb.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/rbbisetb.h b/deps/icu/source/common/rbbisetb.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbisetb.h rename to deps/icu/source/common/rbbisetb.h diff --git a/bootstrap/cxx/deps/icu/source/common/rbbistbl.cpp b/deps/icu/source/common/rbbistbl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbistbl.cpp rename to deps/icu/source/common/rbbistbl.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/rbbitblb.cpp b/deps/icu/source/common/rbbitblb.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbitblb.cpp rename to deps/icu/source/common/rbbitblb.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/rbbitblb.h b/deps/icu/source/common/rbbitblb.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbitblb.h rename to deps/icu/source/common/rbbitblb.h diff --git a/bootstrap/cxx/deps/icu/source/common/resbund.cpp b/deps/icu/source/common/resbund.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/resbund.cpp rename to deps/icu/source/common/resbund.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/resbund_cnv.cpp b/deps/icu/source/common/resbund_cnv.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/resbund_cnv.cpp rename to deps/icu/source/common/resbund_cnv.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/resource.cpp b/deps/icu/source/common/resource.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/resource.cpp rename to deps/icu/source/common/resource.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/resource.h b/deps/icu/source/common/resource.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/resource.h rename to deps/icu/source/common/resource.h diff --git a/bootstrap/cxx/deps/icu/source/common/restrace.cpp b/deps/icu/source/common/restrace.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/restrace.cpp rename to deps/icu/source/common/restrace.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/restrace.h b/deps/icu/source/common/restrace.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/restrace.h rename to deps/icu/source/common/restrace.h diff --git a/bootstrap/cxx/deps/icu/source/common/ruleiter.cpp b/deps/icu/source/common/ruleiter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ruleiter.cpp rename to deps/icu/source/common/ruleiter.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ruleiter.h b/deps/icu/source/common/ruleiter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ruleiter.h rename to deps/icu/source/common/ruleiter.h diff --git a/bootstrap/cxx/deps/icu/source/common/schriter.cpp b/deps/icu/source/common/schriter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/schriter.cpp rename to deps/icu/source/common/schriter.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/serv.cpp b/deps/icu/source/common/serv.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/serv.cpp rename to deps/icu/source/common/serv.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/serv.h b/deps/icu/source/common/serv.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/serv.h rename to deps/icu/source/common/serv.h diff --git a/bootstrap/cxx/deps/icu/source/common/servlk.cpp b/deps/icu/source/common/servlk.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/servlk.cpp rename to deps/icu/source/common/servlk.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/servlkf.cpp b/deps/icu/source/common/servlkf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/servlkf.cpp rename to deps/icu/source/common/servlkf.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/servloc.h b/deps/icu/source/common/servloc.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/servloc.h rename to deps/icu/source/common/servloc.h diff --git a/bootstrap/cxx/deps/icu/source/common/servls.cpp b/deps/icu/source/common/servls.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/servls.cpp rename to deps/icu/source/common/servls.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/servnotf.cpp b/deps/icu/source/common/servnotf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/servnotf.cpp rename to deps/icu/source/common/servnotf.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/servnotf.h b/deps/icu/source/common/servnotf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/servnotf.h rename to deps/icu/source/common/servnotf.h diff --git a/bootstrap/cxx/deps/icu/source/common/servrbf.cpp b/deps/icu/source/common/servrbf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/servrbf.cpp rename to deps/icu/source/common/servrbf.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/servslkf.cpp b/deps/icu/source/common/servslkf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/servslkf.cpp rename to deps/icu/source/common/servslkf.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/sharedobject.cpp b/deps/icu/source/common/sharedobject.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/sharedobject.cpp rename to deps/icu/source/common/sharedobject.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/sharedobject.h b/deps/icu/source/common/sharedobject.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/sharedobject.h rename to deps/icu/source/common/sharedobject.h diff --git a/bootstrap/cxx/deps/icu/source/common/simpleformatter.cpp b/deps/icu/source/common/simpleformatter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/simpleformatter.cpp rename to deps/icu/source/common/simpleformatter.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/sources.txt b/deps/icu/source/common/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/sources.txt rename to deps/icu/source/common/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/common/sprpimpl.h b/deps/icu/source/common/sprpimpl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/sprpimpl.h rename to deps/icu/source/common/sprpimpl.h diff --git a/bootstrap/cxx/deps/icu/source/common/static_unicode_sets.cpp b/deps/icu/source/common/static_unicode_sets.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/static_unicode_sets.cpp rename to deps/icu/source/common/static_unicode_sets.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/static_unicode_sets.h b/deps/icu/source/common/static_unicode_sets.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/static_unicode_sets.h rename to deps/icu/source/common/static_unicode_sets.h diff --git a/bootstrap/cxx/deps/icu/source/common/stringpiece.cpp b/deps/icu/source/common/stringpiece.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/stringpiece.cpp rename to deps/icu/source/common/stringpiece.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/stringtriebuilder.cpp b/deps/icu/source/common/stringtriebuilder.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/stringtriebuilder.cpp rename to deps/icu/source/common/stringtriebuilder.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uarrsort.cpp b/deps/icu/source/common/uarrsort.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uarrsort.cpp rename to deps/icu/source/common/uarrsort.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uarrsort.h b/deps/icu/source/common/uarrsort.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uarrsort.h rename to deps/icu/source/common/uarrsort.h diff --git a/bootstrap/cxx/deps/icu/source/common/uassert.h b/deps/icu/source/common/uassert.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uassert.h rename to deps/icu/source/common/uassert.h diff --git a/bootstrap/cxx/deps/icu/source/common/ubidi.cpp b/deps/icu/source/common/ubidi.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ubidi.cpp rename to deps/icu/source/common/ubidi.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ubidi_props.cpp b/deps/icu/source/common/ubidi_props.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ubidi_props.cpp rename to deps/icu/source/common/ubidi_props.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ubidi_props.h b/deps/icu/source/common/ubidi_props.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ubidi_props.h rename to deps/icu/source/common/ubidi_props.h diff --git a/bootstrap/cxx/deps/icu/source/common/ubidi_props_data.h b/deps/icu/source/common/ubidi_props_data.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ubidi_props_data.h rename to deps/icu/source/common/ubidi_props_data.h diff --git a/bootstrap/cxx/deps/icu/source/common/ubidiimp.h b/deps/icu/source/common/ubidiimp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ubidiimp.h rename to deps/icu/source/common/ubidiimp.h diff --git a/bootstrap/cxx/deps/icu/source/common/ubidiln.cpp b/deps/icu/source/common/ubidiln.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ubidiln.cpp rename to deps/icu/source/common/ubidiln.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ubiditransform.cpp b/deps/icu/source/common/ubiditransform.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ubiditransform.cpp rename to deps/icu/source/common/ubiditransform.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ubidiwrt.cpp b/deps/icu/source/common/ubidiwrt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ubidiwrt.cpp rename to deps/icu/source/common/ubidiwrt.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ubrk.cpp b/deps/icu/source/common/ubrk.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ubrk.cpp rename to deps/icu/source/common/ubrk.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ubrkimpl.h b/deps/icu/source/common/ubrkimpl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ubrkimpl.h rename to deps/icu/source/common/ubrkimpl.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucase.cpp b/deps/icu/source/common/ucase.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucase.cpp rename to deps/icu/source/common/ucase.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucase.h b/deps/icu/source/common/ucase.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucase.h rename to deps/icu/source/common/ucase.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucase_props_data.h b/deps/icu/source/common/ucase_props_data.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucase_props_data.h rename to deps/icu/source/common/ucase_props_data.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucasemap.cpp b/deps/icu/source/common/ucasemap.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucasemap.cpp rename to deps/icu/source/common/ucasemap.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucasemap_imp.h b/deps/icu/source/common/ucasemap_imp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucasemap_imp.h rename to deps/icu/source/common/ucasemap_imp.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucasemap_titlecase_brkiter.cpp b/deps/icu/source/common/ucasemap_titlecase_brkiter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucasemap_titlecase_brkiter.cpp rename to deps/icu/source/common/ucasemap_titlecase_brkiter.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucat.cpp b/deps/icu/source/common/ucat.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucat.cpp rename to deps/icu/source/common/ucat.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uchar.cpp b/deps/icu/source/common/uchar.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uchar.cpp rename to deps/icu/source/common/uchar.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uchar_props_data.h b/deps/icu/source/common/uchar_props_data.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uchar_props_data.h rename to deps/icu/source/common/uchar_props_data.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucharstrie.cpp b/deps/icu/source/common/ucharstrie.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucharstrie.cpp rename to deps/icu/source/common/ucharstrie.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucharstriebuilder.cpp b/deps/icu/source/common/ucharstriebuilder.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucharstriebuilder.cpp rename to deps/icu/source/common/ucharstriebuilder.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucharstrieiterator.cpp b/deps/icu/source/common/ucharstrieiterator.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucharstrieiterator.cpp rename to deps/icu/source/common/ucharstrieiterator.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uchriter.cpp b/deps/icu/source/common/uchriter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uchriter.cpp rename to deps/icu/source/common/uchriter.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucln.h b/deps/icu/source/common/ucln.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucln.h rename to deps/icu/source/common/ucln.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucln_cmn.cpp b/deps/icu/source/common/ucln_cmn.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucln_cmn.cpp rename to deps/icu/source/common/ucln_cmn.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucln_cmn.h b/deps/icu/source/common/ucln_cmn.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucln_cmn.h rename to deps/icu/source/common/ucln_cmn.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucln_imp.h b/deps/icu/source/common/ucln_imp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucln_imp.h rename to deps/icu/source/common/ucln_imp.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucmndata.cpp b/deps/icu/source/common/ucmndata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucmndata.cpp rename to deps/icu/source/common/ucmndata.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucmndata.h b/deps/icu/source/common/ucmndata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucmndata.h rename to deps/icu/source/common/ucmndata.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv.cpp b/deps/icu/source/common/ucnv.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv.cpp rename to deps/icu/source/common/ucnv.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv2022.cpp b/deps/icu/source/common/ucnv2022.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv2022.cpp rename to deps/icu/source/common/ucnv2022.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_bld.cpp b/deps/icu/source/common/ucnv_bld.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_bld.cpp rename to deps/icu/source/common/ucnv_bld.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_bld.h b/deps/icu/source/common/ucnv_bld.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_bld.h rename to deps/icu/source/common/ucnv_bld.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_cb.cpp b/deps/icu/source/common/ucnv_cb.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_cb.cpp rename to deps/icu/source/common/ucnv_cb.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_cnv.cpp b/deps/icu/source/common/ucnv_cnv.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_cnv.cpp rename to deps/icu/source/common/ucnv_cnv.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_cnv.h b/deps/icu/source/common/ucnv_cnv.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_cnv.h rename to deps/icu/source/common/ucnv_cnv.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_ct.cpp b/deps/icu/source/common/ucnv_ct.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_ct.cpp rename to deps/icu/source/common/ucnv_ct.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_err.cpp b/deps/icu/source/common/ucnv_err.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_err.cpp rename to deps/icu/source/common/ucnv_err.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_ext.cpp b/deps/icu/source/common/ucnv_ext.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_ext.cpp rename to deps/icu/source/common/ucnv_ext.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_ext.h b/deps/icu/source/common/ucnv_ext.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_ext.h rename to deps/icu/source/common/ucnv_ext.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_imp.h b/deps/icu/source/common/ucnv_imp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_imp.h rename to deps/icu/source/common/ucnv_imp.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_io.cpp b/deps/icu/source/common/ucnv_io.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_io.cpp rename to deps/icu/source/common/ucnv_io.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_io.h b/deps/icu/source/common/ucnv_io.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_io.h rename to deps/icu/source/common/ucnv_io.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_lmb.cpp b/deps/icu/source/common/ucnv_lmb.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_lmb.cpp rename to deps/icu/source/common/ucnv_lmb.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_set.cpp b/deps/icu/source/common/ucnv_set.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_set.cpp rename to deps/icu/source/common/ucnv_set.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_u16.cpp b/deps/icu/source/common/ucnv_u16.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_u16.cpp rename to deps/icu/source/common/ucnv_u16.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_u32.cpp b/deps/icu/source/common/ucnv_u32.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_u32.cpp rename to deps/icu/source/common/ucnv_u32.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_u7.cpp b/deps/icu/source/common/ucnv_u7.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_u7.cpp rename to deps/icu/source/common/ucnv_u7.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_u8.cpp b/deps/icu/source/common/ucnv_u8.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_u8.cpp rename to deps/icu/source/common/ucnv_u8.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnvbocu.cpp b/deps/icu/source/common/ucnvbocu.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnvbocu.cpp rename to deps/icu/source/common/ucnvbocu.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnvdisp.cpp b/deps/icu/source/common/ucnvdisp.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnvdisp.cpp rename to deps/icu/source/common/ucnvdisp.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnvhz.cpp b/deps/icu/source/common/ucnvhz.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnvhz.cpp rename to deps/icu/source/common/ucnvhz.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnvisci.cpp b/deps/icu/source/common/ucnvisci.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnvisci.cpp rename to deps/icu/source/common/ucnvisci.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnvlat1.cpp b/deps/icu/source/common/ucnvlat1.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnvlat1.cpp rename to deps/icu/source/common/ucnvlat1.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnvmbcs.cpp b/deps/icu/source/common/ucnvmbcs.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnvmbcs.cpp rename to deps/icu/source/common/ucnvmbcs.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnvmbcs.h b/deps/icu/source/common/ucnvmbcs.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnvmbcs.h rename to deps/icu/source/common/ucnvmbcs.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucnvscsu.cpp b/deps/icu/source/common/ucnvscsu.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnvscsu.cpp rename to deps/icu/source/common/ucnvscsu.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnvsel.cpp b/deps/icu/source/common/ucnvsel.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnvsel.cpp rename to deps/icu/source/common/ucnvsel.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucol_data.h b/deps/icu/source/common/ucol_data.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucol_data.h rename to deps/icu/source/common/ucol_data.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucol_swp.cpp b/deps/icu/source/common/ucol_swp.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucol_swp.cpp rename to deps/icu/source/common/ucol_swp.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucol_swp.h b/deps/icu/source/common/ucol_swp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucol_swp.h rename to deps/icu/source/common/ucol_swp.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucptrie.cpp b/deps/icu/source/common/ucptrie.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucptrie.cpp rename to deps/icu/source/common/ucptrie.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucptrie_impl.h b/deps/icu/source/common/ucptrie_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucptrie_impl.h rename to deps/icu/source/common/ucptrie_impl.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucurr.cpp b/deps/icu/source/common/ucurr.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucurr.cpp rename to deps/icu/source/common/ucurr.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucurrimp.h b/deps/icu/source/common/ucurrimp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucurrimp.h rename to deps/icu/source/common/ucurrimp.h diff --git a/bootstrap/cxx/deps/icu/source/common/udata.cpp b/deps/icu/source/common/udata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/udata.cpp rename to deps/icu/source/common/udata.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/udatamem.cpp b/deps/icu/source/common/udatamem.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/udatamem.cpp rename to deps/icu/source/common/udatamem.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/udatamem.h b/deps/icu/source/common/udatamem.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/udatamem.h rename to deps/icu/source/common/udatamem.h diff --git a/bootstrap/cxx/deps/icu/source/common/udataswp.cpp b/deps/icu/source/common/udataswp.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/udataswp.cpp rename to deps/icu/source/common/udataswp.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/udataswp.h b/deps/icu/source/common/udataswp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/udataswp.h rename to deps/icu/source/common/udataswp.h diff --git a/bootstrap/cxx/deps/icu/source/common/uelement.h b/deps/icu/source/common/uelement.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uelement.h rename to deps/icu/source/common/uelement.h diff --git a/bootstrap/cxx/deps/icu/source/common/uenum.cpp b/deps/icu/source/common/uenum.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uenum.cpp rename to deps/icu/source/common/uenum.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uenumimp.h b/deps/icu/source/common/uenumimp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uenumimp.h rename to deps/icu/source/common/uenumimp.h diff --git a/bootstrap/cxx/deps/icu/source/common/uhash.cpp b/deps/icu/source/common/uhash.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uhash.cpp rename to deps/icu/source/common/uhash.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uhash.h b/deps/icu/source/common/uhash.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uhash.h rename to deps/icu/source/common/uhash.h diff --git a/bootstrap/cxx/deps/icu/source/common/uhash_us.cpp b/deps/icu/source/common/uhash_us.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uhash_us.cpp rename to deps/icu/source/common/uhash_us.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uidna.cpp b/deps/icu/source/common/uidna.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uidna.cpp rename to deps/icu/source/common/uidna.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uinit.cpp b/deps/icu/source/common/uinit.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uinit.cpp rename to deps/icu/source/common/uinit.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uinvchar.cpp b/deps/icu/source/common/uinvchar.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uinvchar.cpp rename to deps/icu/source/common/uinvchar.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uinvchar.h b/deps/icu/source/common/uinvchar.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uinvchar.h rename to deps/icu/source/common/uinvchar.h diff --git a/bootstrap/cxx/deps/icu/source/common/uiter.cpp b/deps/icu/source/common/uiter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uiter.cpp rename to deps/icu/source/common/uiter.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ulayout_props.h b/deps/icu/source/common/ulayout_props.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ulayout_props.h rename to deps/icu/source/common/ulayout_props.h diff --git a/bootstrap/cxx/deps/icu/source/common/ulist.cpp b/deps/icu/source/common/ulist.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ulist.cpp rename to deps/icu/source/common/ulist.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ulist.h b/deps/icu/source/common/ulist.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ulist.h rename to deps/icu/source/common/ulist.h diff --git a/bootstrap/cxx/deps/icu/source/common/uloc.cpp b/deps/icu/source/common/uloc.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uloc.cpp rename to deps/icu/source/common/uloc.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uloc_keytype.cpp b/deps/icu/source/common/uloc_keytype.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uloc_keytype.cpp rename to deps/icu/source/common/uloc_keytype.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uloc_tag.cpp b/deps/icu/source/common/uloc_tag.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uloc_tag.cpp rename to deps/icu/source/common/uloc_tag.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ulocimp.h b/deps/icu/source/common/ulocimp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ulocimp.h rename to deps/icu/source/common/ulocimp.h diff --git a/bootstrap/cxx/deps/icu/source/common/umapfile.cpp b/deps/icu/source/common/umapfile.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/umapfile.cpp rename to deps/icu/source/common/umapfile.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/umapfile.h b/deps/icu/source/common/umapfile.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/umapfile.h rename to deps/icu/source/common/umapfile.h diff --git a/bootstrap/cxx/deps/icu/source/common/umath.cpp b/deps/icu/source/common/umath.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/umath.cpp rename to deps/icu/source/common/umath.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/umutablecptrie.cpp b/deps/icu/source/common/umutablecptrie.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/umutablecptrie.cpp rename to deps/icu/source/common/umutablecptrie.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/umutex.cpp b/deps/icu/source/common/umutex.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/umutex.cpp rename to deps/icu/source/common/umutex.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/umutex.h b/deps/icu/source/common/umutex.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/umutex.h rename to deps/icu/source/common/umutex.h diff --git a/bootstrap/cxx/deps/icu/source/common/unames.cpp b/deps/icu/source/common/unames.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unames.cpp rename to deps/icu/source/common/unames.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/appendable.h b/deps/icu/source/common/unicode/appendable.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/appendable.h rename to deps/icu/source/common/unicode/appendable.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/brkiter.h b/deps/icu/source/common/unicode/brkiter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/brkiter.h rename to deps/icu/source/common/unicode/brkiter.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/bytestream.h b/deps/icu/source/common/unicode/bytestream.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/bytestream.h rename to deps/icu/source/common/unicode/bytestream.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/bytestrie.h b/deps/icu/source/common/unicode/bytestrie.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/bytestrie.h rename to deps/icu/source/common/unicode/bytestrie.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/bytestriebuilder.h b/deps/icu/source/common/unicode/bytestriebuilder.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/bytestriebuilder.h rename to deps/icu/source/common/unicode/bytestriebuilder.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/caniter.h b/deps/icu/source/common/unicode/caniter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/caniter.h rename to deps/icu/source/common/unicode/caniter.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/casemap.h b/deps/icu/source/common/unicode/casemap.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/casemap.h rename to deps/icu/source/common/unicode/casemap.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/char16ptr.h b/deps/icu/source/common/unicode/char16ptr.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/char16ptr.h rename to deps/icu/source/common/unicode/char16ptr.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/chariter.h b/deps/icu/source/common/unicode/chariter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/chariter.h rename to deps/icu/source/common/unicode/chariter.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/dbbi.h b/deps/icu/source/common/unicode/dbbi.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/dbbi.h rename to deps/icu/source/common/unicode/dbbi.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/docmain.h b/deps/icu/source/common/unicode/docmain.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/docmain.h rename to deps/icu/source/common/unicode/docmain.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/dtintrv.h b/deps/icu/source/common/unicode/dtintrv.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/dtintrv.h rename to deps/icu/source/common/unicode/dtintrv.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/edits.h b/deps/icu/source/common/unicode/edits.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/edits.h rename to deps/icu/source/common/unicode/edits.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/enumset.h b/deps/icu/source/common/unicode/enumset.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/enumset.h rename to deps/icu/source/common/unicode/enumset.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/errorcode.h b/deps/icu/source/common/unicode/errorcode.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/errorcode.h rename to deps/icu/source/common/unicode/errorcode.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/filteredbrk.h b/deps/icu/source/common/unicode/filteredbrk.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/filteredbrk.h rename to deps/icu/source/common/unicode/filteredbrk.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/icudataver.h b/deps/icu/source/common/unicode/icudataver.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/icudataver.h rename to deps/icu/source/common/unicode/icudataver.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/icuplug.h b/deps/icu/source/common/unicode/icuplug.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/icuplug.h rename to deps/icu/source/common/unicode/icuplug.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/idna.h b/deps/icu/source/common/unicode/idna.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/idna.h rename to deps/icu/source/common/unicode/idna.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/localebuilder.h b/deps/icu/source/common/unicode/localebuilder.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/localebuilder.h rename to deps/icu/source/common/unicode/localebuilder.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/localematcher.h b/deps/icu/source/common/unicode/localematcher.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/localematcher.h rename to deps/icu/source/common/unicode/localematcher.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/localpointer.h b/deps/icu/source/common/unicode/localpointer.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/localpointer.h rename to deps/icu/source/common/unicode/localpointer.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/locdspnm.h b/deps/icu/source/common/unicode/locdspnm.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/locdspnm.h rename to deps/icu/source/common/unicode/locdspnm.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/locid.h b/deps/icu/source/common/unicode/locid.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/locid.h rename to deps/icu/source/common/unicode/locid.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/messagepattern.h b/deps/icu/source/common/unicode/messagepattern.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/messagepattern.h rename to deps/icu/source/common/unicode/messagepattern.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/normalizer2.h b/deps/icu/source/common/unicode/normalizer2.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/normalizer2.h rename to deps/icu/source/common/unicode/normalizer2.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/normlzr.h b/deps/icu/source/common/unicode/normlzr.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/normlzr.h rename to deps/icu/source/common/unicode/normlzr.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/parseerr.h b/deps/icu/source/common/unicode/parseerr.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/parseerr.h rename to deps/icu/source/common/unicode/parseerr.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/parsepos.h b/deps/icu/source/common/unicode/parsepos.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/parsepos.h rename to deps/icu/source/common/unicode/parsepos.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/platform.h b/deps/icu/source/common/unicode/platform.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/platform.h rename to deps/icu/source/common/unicode/platform.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ptypes.h b/deps/icu/source/common/unicode/ptypes.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ptypes.h rename to deps/icu/source/common/unicode/ptypes.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/putil.h b/deps/icu/source/common/unicode/putil.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/putil.h rename to deps/icu/source/common/unicode/putil.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/rbbi.h b/deps/icu/source/common/unicode/rbbi.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/rbbi.h rename to deps/icu/source/common/unicode/rbbi.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/rep.h b/deps/icu/source/common/unicode/rep.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/rep.h rename to deps/icu/source/common/unicode/rep.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/resbund.h b/deps/icu/source/common/unicode/resbund.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/resbund.h rename to deps/icu/source/common/unicode/resbund.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/schriter.h b/deps/icu/source/common/unicode/schriter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/schriter.h rename to deps/icu/source/common/unicode/schriter.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/simpleformatter.h b/deps/icu/source/common/unicode/simpleformatter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/simpleformatter.h rename to deps/icu/source/common/unicode/simpleformatter.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/std_string.h b/deps/icu/source/common/unicode/std_string.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/std_string.h rename to deps/icu/source/common/unicode/std_string.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/strenum.h b/deps/icu/source/common/unicode/strenum.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/strenum.h rename to deps/icu/source/common/unicode/strenum.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/stringoptions.h b/deps/icu/source/common/unicode/stringoptions.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/stringoptions.h rename to deps/icu/source/common/unicode/stringoptions.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/stringpiece.h b/deps/icu/source/common/unicode/stringpiece.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/stringpiece.h rename to deps/icu/source/common/unicode/stringpiece.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/stringtriebuilder.h b/deps/icu/source/common/unicode/stringtriebuilder.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/stringtriebuilder.h rename to deps/icu/source/common/unicode/stringtriebuilder.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/symtable.h b/deps/icu/source/common/unicode/symtable.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/symtable.h rename to deps/icu/source/common/unicode/symtable.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ubidi.h b/deps/icu/source/common/unicode/ubidi.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ubidi.h rename to deps/icu/source/common/unicode/ubidi.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ubiditransform.h b/deps/icu/source/common/unicode/ubiditransform.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ubiditransform.h rename to deps/icu/source/common/unicode/ubiditransform.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ubrk.h b/deps/icu/source/common/unicode/ubrk.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ubrk.h rename to deps/icu/source/common/unicode/ubrk.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ucasemap.h b/deps/icu/source/common/unicode/ucasemap.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ucasemap.h rename to deps/icu/source/common/unicode/ucasemap.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ucat.h b/deps/icu/source/common/unicode/ucat.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ucat.h rename to deps/icu/source/common/unicode/ucat.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uchar.h b/deps/icu/source/common/unicode/uchar.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uchar.h rename to deps/icu/source/common/unicode/uchar.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ucharstrie.h b/deps/icu/source/common/unicode/ucharstrie.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ucharstrie.h rename to deps/icu/source/common/unicode/ucharstrie.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ucharstriebuilder.h b/deps/icu/source/common/unicode/ucharstriebuilder.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ucharstriebuilder.h rename to deps/icu/source/common/unicode/ucharstriebuilder.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uchriter.h b/deps/icu/source/common/unicode/uchriter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uchriter.h rename to deps/icu/source/common/unicode/uchriter.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uclean.h b/deps/icu/source/common/unicode/uclean.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uclean.h rename to deps/icu/source/common/unicode/uclean.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ucnv.h b/deps/icu/source/common/unicode/ucnv.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ucnv.h rename to deps/icu/source/common/unicode/ucnv.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ucnv_cb.h b/deps/icu/source/common/unicode/ucnv_cb.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ucnv_cb.h rename to deps/icu/source/common/unicode/ucnv_cb.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ucnv_err.h b/deps/icu/source/common/unicode/ucnv_err.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ucnv_err.h rename to deps/icu/source/common/unicode/ucnv_err.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ucnvsel.h b/deps/icu/source/common/unicode/ucnvsel.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ucnvsel.h rename to deps/icu/source/common/unicode/ucnvsel.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uconfig.h b/deps/icu/source/common/unicode/uconfig.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uconfig.h rename to deps/icu/source/common/unicode/uconfig.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ucpmap.h b/deps/icu/source/common/unicode/ucpmap.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ucpmap.h rename to deps/icu/source/common/unicode/ucpmap.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ucptrie.h b/deps/icu/source/common/unicode/ucptrie.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ucptrie.h rename to deps/icu/source/common/unicode/ucptrie.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ucurr.h b/deps/icu/source/common/unicode/ucurr.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ucurr.h rename to deps/icu/source/common/unicode/ucurr.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/udata.h b/deps/icu/source/common/unicode/udata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/udata.h rename to deps/icu/source/common/unicode/udata.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/udisplaycontext.h b/deps/icu/source/common/unicode/udisplaycontext.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/udisplaycontext.h rename to deps/icu/source/common/unicode/udisplaycontext.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uenum.h b/deps/icu/source/common/unicode/uenum.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uenum.h rename to deps/icu/source/common/unicode/uenum.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uidna.h b/deps/icu/source/common/unicode/uidna.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uidna.h rename to deps/icu/source/common/unicode/uidna.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uiter.h b/deps/icu/source/common/unicode/uiter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uiter.h rename to deps/icu/source/common/unicode/uiter.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uldnames.h b/deps/icu/source/common/unicode/uldnames.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uldnames.h rename to deps/icu/source/common/unicode/uldnames.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uloc.h b/deps/icu/source/common/unicode/uloc.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uloc.h rename to deps/icu/source/common/unicode/uloc.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/umachine.h b/deps/icu/source/common/unicode/umachine.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/umachine.h rename to deps/icu/source/common/unicode/umachine.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/umisc.h b/deps/icu/source/common/unicode/umisc.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/umisc.h rename to deps/icu/source/common/unicode/umisc.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/umutablecptrie.h b/deps/icu/source/common/unicode/umutablecptrie.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/umutablecptrie.h rename to deps/icu/source/common/unicode/umutablecptrie.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/unifilt.h b/deps/icu/source/common/unicode/unifilt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/unifilt.h rename to deps/icu/source/common/unicode/unifilt.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/unifunct.h b/deps/icu/source/common/unicode/unifunct.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/unifunct.h rename to deps/icu/source/common/unicode/unifunct.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/unimatch.h b/deps/icu/source/common/unicode/unimatch.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/unimatch.h rename to deps/icu/source/common/unicode/unimatch.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uniset.h b/deps/icu/source/common/unicode/uniset.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uniset.h rename to deps/icu/source/common/unicode/uniset.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/unistr.h b/deps/icu/source/common/unicode/unistr.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/unistr.h rename to deps/icu/source/common/unicode/unistr.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/unorm.h b/deps/icu/source/common/unicode/unorm.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/unorm.h rename to deps/icu/source/common/unicode/unorm.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/unorm2.h b/deps/icu/source/common/unicode/unorm2.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/unorm2.h rename to deps/icu/source/common/unicode/unorm2.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uobject.h b/deps/icu/source/common/unicode/uobject.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uobject.h rename to deps/icu/source/common/unicode/uobject.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/urename.h b/deps/icu/source/common/unicode/urename.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/urename.h rename to deps/icu/source/common/unicode/urename.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/urep.h b/deps/icu/source/common/unicode/urep.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/urep.h rename to deps/icu/source/common/unicode/urep.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ures.h b/deps/icu/source/common/unicode/ures.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ures.h rename to deps/icu/source/common/unicode/ures.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uscript.h b/deps/icu/source/common/unicode/uscript.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uscript.h rename to deps/icu/source/common/unicode/uscript.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uset.h b/deps/icu/source/common/unicode/uset.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uset.h rename to deps/icu/source/common/unicode/uset.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/usetiter.h b/deps/icu/source/common/unicode/usetiter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/usetiter.h rename to deps/icu/source/common/unicode/usetiter.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ushape.h b/deps/icu/source/common/unicode/ushape.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ushape.h rename to deps/icu/source/common/unicode/ushape.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/usprep.h b/deps/icu/source/common/unicode/usprep.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/usprep.h rename to deps/icu/source/common/unicode/usprep.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ustring.h b/deps/icu/source/common/unicode/ustring.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ustring.h rename to deps/icu/source/common/unicode/ustring.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ustringtrie.h b/deps/icu/source/common/unicode/ustringtrie.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ustringtrie.h rename to deps/icu/source/common/unicode/ustringtrie.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/utext.h b/deps/icu/source/common/unicode/utext.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/utext.h rename to deps/icu/source/common/unicode/utext.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/utf.h b/deps/icu/source/common/unicode/utf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/utf.h rename to deps/icu/source/common/unicode/utf.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/utf16.h b/deps/icu/source/common/unicode/utf16.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/utf16.h rename to deps/icu/source/common/unicode/utf16.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/utf32.h b/deps/icu/source/common/unicode/utf32.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/utf32.h rename to deps/icu/source/common/unicode/utf32.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/utf8.h b/deps/icu/source/common/unicode/utf8.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/utf8.h rename to deps/icu/source/common/unicode/utf8.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/utf_old.h b/deps/icu/source/common/unicode/utf_old.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/utf_old.h rename to deps/icu/source/common/unicode/utf_old.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/utrace.h b/deps/icu/source/common/unicode/utrace.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/utrace.h rename to deps/icu/source/common/unicode/utrace.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/utypes.h b/deps/icu/source/common/unicode/utypes.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/utypes.h rename to deps/icu/source/common/unicode/utypes.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uvernum.h b/deps/icu/source/common/unicode/uvernum.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uvernum.h rename to deps/icu/source/common/unicode/uvernum.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uversion.h b/deps/icu/source/common/unicode/uversion.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uversion.h rename to deps/icu/source/common/unicode/uversion.h diff --git a/bootstrap/cxx/deps/icu/source/common/unifiedcache.cpp b/deps/icu/source/common/unifiedcache.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unifiedcache.cpp rename to deps/icu/source/common/unifiedcache.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/unifiedcache.h b/deps/icu/source/common/unifiedcache.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unifiedcache.h rename to deps/icu/source/common/unifiedcache.h diff --git a/bootstrap/cxx/deps/icu/source/common/unifilt.cpp b/deps/icu/source/common/unifilt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unifilt.cpp rename to deps/icu/source/common/unifilt.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/unifunct.cpp b/deps/icu/source/common/unifunct.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unifunct.cpp rename to deps/icu/source/common/unifunct.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uniquecharstr.h b/deps/icu/source/common/uniquecharstr.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uniquecharstr.h rename to deps/icu/source/common/uniquecharstr.h diff --git a/bootstrap/cxx/deps/icu/source/common/uniset.cpp b/deps/icu/source/common/uniset.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uniset.cpp rename to deps/icu/source/common/uniset.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uniset_closure.cpp b/deps/icu/source/common/uniset_closure.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uniset_closure.cpp rename to deps/icu/source/common/uniset_closure.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uniset_props.cpp b/deps/icu/source/common/uniset_props.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uniset_props.cpp rename to deps/icu/source/common/uniset_props.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/unisetspan.cpp b/deps/icu/source/common/unisetspan.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unisetspan.cpp rename to deps/icu/source/common/unisetspan.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/unisetspan.h b/deps/icu/source/common/unisetspan.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unisetspan.h rename to deps/icu/source/common/unisetspan.h diff --git a/bootstrap/cxx/deps/icu/source/common/unistr.cpp b/deps/icu/source/common/unistr.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unistr.cpp rename to deps/icu/source/common/unistr.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/unistr_case.cpp b/deps/icu/source/common/unistr_case.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unistr_case.cpp rename to deps/icu/source/common/unistr_case.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/unistr_case_locale.cpp b/deps/icu/source/common/unistr_case_locale.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unistr_case_locale.cpp rename to deps/icu/source/common/unistr_case_locale.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/unistr_cnv.cpp b/deps/icu/source/common/unistr_cnv.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unistr_cnv.cpp rename to deps/icu/source/common/unistr_cnv.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/unistr_props.cpp b/deps/icu/source/common/unistr_props.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unistr_props.cpp rename to deps/icu/source/common/unistr_props.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/unistr_titlecase_brkiter.cpp b/deps/icu/source/common/unistr_titlecase_brkiter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unistr_titlecase_brkiter.cpp rename to deps/icu/source/common/unistr_titlecase_brkiter.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/unistrappender.h b/deps/icu/source/common/unistrappender.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unistrappender.h rename to deps/icu/source/common/unistrappender.h diff --git a/bootstrap/cxx/deps/icu/source/common/unorm.cpp b/deps/icu/source/common/unorm.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unorm.cpp rename to deps/icu/source/common/unorm.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/unormcmp.cpp b/deps/icu/source/common/unormcmp.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unormcmp.cpp rename to deps/icu/source/common/unormcmp.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/unormimp.h b/deps/icu/source/common/unormimp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unormimp.h rename to deps/icu/source/common/unormimp.h diff --git a/bootstrap/cxx/deps/icu/source/common/uobject.cpp b/deps/icu/source/common/uobject.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uobject.cpp rename to deps/icu/source/common/uobject.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uposixdefs.h b/deps/icu/source/common/uposixdefs.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uposixdefs.h rename to deps/icu/source/common/uposixdefs.h diff --git a/bootstrap/cxx/deps/icu/source/common/uprops.cpp b/deps/icu/source/common/uprops.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uprops.cpp rename to deps/icu/source/common/uprops.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uprops.h b/deps/icu/source/common/uprops.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uprops.h rename to deps/icu/source/common/uprops.h diff --git a/bootstrap/cxx/deps/icu/source/common/ures_cnv.cpp b/deps/icu/source/common/ures_cnv.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ures_cnv.cpp rename to deps/icu/source/common/ures_cnv.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uresbund.cpp b/deps/icu/source/common/uresbund.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uresbund.cpp rename to deps/icu/source/common/uresbund.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uresdata.cpp b/deps/icu/source/common/uresdata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uresdata.cpp rename to deps/icu/source/common/uresdata.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uresdata.h b/deps/icu/source/common/uresdata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uresdata.h rename to deps/icu/source/common/uresdata.h diff --git a/bootstrap/cxx/deps/icu/source/common/uresimp.h b/deps/icu/source/common/uresimp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uresimp.h rename to deps/icu/source/common/uresimp.h diff --git a/bootstrap/cxx/deps/icu/source/common/ureslocs.h b/deps/icu/source/common/ureslocs.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ureslocs.h rename to deps/icu/source/common/ureslocs.h diff --git a/bootstrap/cxx/deps/icu/source/common/usc_impl.cpp b/deps/icu/source/common/usc_impl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/usc_impl.cpp rename to deps/icu/source/common/usc_impl.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/usc_impl.h b/deps/icu/source/common/usc_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/usc_impl.h rename to deps/icu/source/common/usc_impl.h diff --git a/bootstrap/cxx/deps/icu/source/common/uscript.cpp b/deps/icu/source/common/uscript.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uscript.cpp rename to deps/icu/source/common/uscript.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uscript_props.cpp b/deps/icu/source/common/uscript_props.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uscript_props.cpp rename to deps/icu/source/common/uscript_props.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uset.cpp b/deps/icu/source/common/uset.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uset.cpp rename to deps/icu/source/common/uset.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uset_imp.h b/deps/icu/source/common/uset_imp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uset_imp.h rename to deps/icu/source/common/uset_imp.h diff --git a/bootstrap/cxx/deps/icu/source/common/uset_props.cpp b/deps/icu/source/common/uset_props.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uset_props.cpp rename to deps/icu/source/common/uset_props.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/usetiter.cpp b/deps/icu/source/common/usetiter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/usetiter.cpp rename to deps/icu/source/common/usetiter.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ushape.cpp b/deps/icu/source/common/ushape.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ushape.cpp rename to deps/icu/source/common/ushape.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/usprep.cpp b/deps/icu/source/common/usprep.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/usprep.cpp rename to deps/icu/source/common/usprep.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ustack.cpp b/deps/icu/source/common/ustack.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustack.cpp rename to deps/icu/source/common/ustack.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ustr_cnv.cpp b/deps/icu/source/common/ustr_cnv.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustr_cnv.cpp rename to deps/icu/source/common/ustr_cnv.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ustr_cnv.h b/deps/icu/source/common/ustr_cnv.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustr_cnv.h rename to deps/icu/source/common/ustr_cnv.h diff --git a/bootstrap/cxx/deps/icu/source/common/ustr_imp.h b/deps/icu/source/common/ustr_imp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustr_imp.h rename to deps/icu/source/common/ustr_imp.h diff --git a/bootstrap/cxx/deps/icu/source/common/ustr_titlecase_brkiter.cpp b/deps/icu/source/common/ustr_titlecase_brkiter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustr_titlecase_brkiter.cpp rename to deps/icu/source/common/ustr_titlecase_brkiter.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ustr_wcs.cpp b/deps/icu/source/common/ustr_wcs.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustr_wcs.cpp rename to deps/icu/source/common/ustr_wcs.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ustrcase.cpp b/deps/icu/source/common/ustrcase.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustrcase.cpp rename to deps/icu/source/common/ustrcase.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ustrcase_locale.cpp b/deps/icu/source/common/ustrcase_locale.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustrcase_locale.cpp rename to deps/icu/source/common/ustrcase_locale.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ustrenum.cpp b/deps/icu/source/common/ustrenum.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustrenum.cpp rename to deps/icu/source/common/ustrenum.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ustrenum.h b/deps/icu/source/common/ustrenum.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustrenum.h rename to deps/icu/source/common/ustrenum.h diff --git a/bootstrap/cxx/deps/icu/source/common/ustrfmt.cpp b/deps/icu/source/common/ustrfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustrfmt.cpp rename to deps/icu/source/common/ustrfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ustrfmt.h b/deps/icu/source/common/ustrfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustrfmt.h rename to deps/icu/source/common/ustrfmt.h diff --git a/bootstrap/cxx/deps/icu/source/common/ustring.cpp b/deps/icu/source/common/ustring.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustring.cpp rename to deps/icu/source/common/ustring.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ustrtrns.cpp b/deps/icu/source/common/ustrtrns.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustrtrns.cpp rename to deps/icu/source/common/ustrtrns.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/utext.cpp b/deps/icu/source/common/utext.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/utext.cpp rename to deps/icu/source/common/utext.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/utf_impl.cpp b/deps/icu/source/common/utf_impl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/utf_impl.cpp rename to deps/icu/source/common/utf_impl.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/util.cpp b/deps/icu/source/common/util.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/util.cpp rename to deps/icu/source/common/util.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/util.h b/deps/icu/source/common/util.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/util.h rename to deps/icu/source/common/util.h diff --git a/bootstrap/cxx/deps/icu/source/common/util_props.cpp b/deps/icu/source/common/util_props.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/util_props.cpp rename to deps/icu/source/common/util_props.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/utrace.cpp b/deps/icu/source/common/utrace.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/utrace.cpp rename to deps/icu/source/common/utrace.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/utracimp.h b/deps/icu/source/common/utracimp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/utracimp.h rename to deps/icu/source/common/utracimp.h diff --git a/bootstrap/cxx/deps/icu/source/common/utrie.cpp b/deps/icu/source/common/utrie.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/utrie.cpp rename to deps/icu/source/common/utrie.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/utrie.h b/deps/icu/source/common/utrie.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/utrie.h rename to deps/icu/source/common/utrie.h diff --git a/bootstrap/cxx/deps/icu/source/common/utrie2.cpp b/deps/icu/source/common/utrie2.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/utrie2.cpp rename to deps/icu/source/common/utrie2.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/utrie2.h b/deps/icu/source/common/utrie2.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/utrie2.h rename to deps/icu/source/common/utrie2.h diff --git a/bootstrap/cxx/deps/icu/source/common/utrie2_builder.cpp b/deps/icu/source/common/utrie2_builder.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/utrie2_builder.cpp rename to deps/icu/source/common/utrie2_builder.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/utrie2_impl.h b/deps/icu/source/common/utrie2_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/utrie2_impl.h rename to deps/icu/source/common/utrie2_impl.h diff --git a/bootstrap/cxx/deps/icu/source/common/utrie_swap.cpp b/deps/icu/source/common/utrie_swap.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/utrie_swap.cpp rename to deps/icu/source/common/utrie_swap.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uts46.cpp b/deps/icu/source/common/uts46.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uts46.cpp rename to deps/icu/source/common/uts46.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/utypeinfo.h b/deps/icu/source/common/utypeinfo.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/utypeinfo.h rename to deps/icu/source/common/utypeinfo.h diff --git a/bootstrap/cxx/deps/icu/source/common/utypes.cpp b/deps/icu/source/common/utypes.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/utypes.cpp rename to deps/icu/source/common/utypes.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uvector.cpp b/deps/icu/source/common/uvector.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uvector.cpp rename to deps/icu/source/common/uvector.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uvector.h b/deps/icu/source/common/uvector.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uvector.h rename to deps/icu/source/common/uvector.h diff --git a/bootstrap/cxx/deps/icu/source/common/uvectr32.cpp b/deps/icu/source/common/uvectr32.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uvectr32.cpp rename to deps/icu/source/common/uvectr32.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uvectr32.h b/deps/icu/source/common/uvectr32.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uvectr32.h rename to deps/icu/source/common/uvectr32.h diff --git a/bootstrap/cxx/deps/icu/source/common/uvectr64.cpp b/deps/icu/source/common/uvectr64.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uvectr64.cpp rename to deps/icu/source/common/uvectr64.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uvectr64.h b/deps/icu/source/common/uvectr64.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uvectr64.h rename to deps/icu/source/common/uvectr64.h diff --git a/bootstrap/cxx/deps/icu/source/common/wintz.cpp b/deps/icu/source/common/wintz.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/wintz.cpp rename to deps/icu/source/common/wintz.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/wintz.h b/deps/icu/source/common/wintz.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/wintz.h rename to deps/icu/source/common/wintz.h diff --git a/bootstrap/cxx/deps/icu/source/config.guess b/deps/icu/source/config.guess similarity index 100% rename from bootstrap/cxx/deps/icu/source/config.guess rename to deps/icu/source/config.guess diff --git a/bootstrap/cxx/deps/icu/source/config.sub b/deps/icu/source/config.sub similarity index 100% rename from bootstrap/cxx/deps/icu/source/config.sub rename to deps/icu/source/config.sub diff --git a/bootstrap/cxx/deps/icu/source/config/Makefile.inc.in b/deps/icu/source/config/Makefile.inc.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/Makefile.inc.in rename to deps/icu/source/config/Makefile.inc.in diff --git a/bootstrap/cxx/deps/icu/source/config/dist-data.sh b/deps/icu/source/config/dist-data.sh similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/dist-data.sh rename to deps/icu/source/config/dist-data.sh diff --git a/bootstrap/cxx/deps/icu/source/config/dist.mk b/deps/icu/source/config/dist.mk similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/dist.mk rename to deps/icu/source/config/dist.mk diff --git a/bootstrap/cxx/deps/icu/source/config/gmakever.mk b/deps/icu/source/config/gmakever.mk similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/gmakever.mk rename to deps/icu/source/config/gmakever.mk diff --git a/bootstrap/cxx/deps/icu/source/config/icu-config-bottom b/deps/icu/source/config/icu-config-bottom similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/icu-config-bottom rename to deps/icu/source/config/icu-config-bottom diff --git a/bootstrap/cxx/deps/icu/source/config/icu-config-top b/deps/icu/source/config/icu-config-top similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/icu-config-top rename to deps/icu/source/config/icu-config-top diff --git a/bootstrap/cxx/deps/icu/source/config/icu-config.1.in b/deps/icu/source/config/icu-config.1.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/icu-config.1.in rename to deps/icu/source/config/icu-config.1.in diff --git a/bootstrap/cxx/deps/icu/source/config/icu.pc.in b/deps/icu/source/config/icu.pc.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/icu.pc.in rename to deps/icu/source/config/icu.pc.in diff --git a/bootstrap/cxx/deps/icu/source/config/m4/icu-conditional.m4 b/deps/icu/source/config/m4/icu-conditional.m4 similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/m4/icu-conditional.m4 rename to deps/icu/source/config/m4/icu-conditional.m4 diff --git a/bootstrap/cxx/deps/icu/source/config/make2sh.sed b/deps/icu/source/config/make2sh.sed similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/make2sh.sed rename to deps/icu/source/config/make2sh.sed diff --git a/bootstrap/cxx/deps/icu/source/config/mh-aix-gcc b/deps/icu/source/config/mh-aix-gcc similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-aix-gcc rename to deps/icu/source/config/mh-aix-gcc diff --git a/bootstrap/cxx/deps/icu/source/config/mh-aix-va b/deps/icu/source/config/mh-aix-va similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-aix-va rename to deps/icu/source/config/mh-aix-va diff --git a/bootstrap/cxx/deps/icu/source/config/mh-alpha-linux-cc b/deps/icu/source/config/mh-alpha-linux-cc similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-alpha-linux-cc rename to deps/icu/source/config/mh-alpha-linux-cc diff --git a/bootstrap/cxx/deps/icu/source/config/mh-alpha-linux-gcc b/deps/icu/source/config/mh-alpha-linux-gcc similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-alpha-linux-gcc rename to deps/icu/source/config/mh-alpha-linux-gcc diff --git a/bootstrap/cxx/deps/icu/source/config/mh-alpha-osf b/deps/icu/source/config/mh-alpha-osf similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-alpha-osf rename to deps/icu/source/config/mh-alpha-osf diff --git a/bootstrap/cxx/deps/icu/source/config/mh-beos b/deps/icu/source/config/mh-beos similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-beos rename to deps/icu/source/config/mh-beos diff --git a/bootstrap/cxx/deps/icu/source/config/mh-bsd-gcc b/deps/icu/source/config/mh-bsd-gcc similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-bsd-gcc rename to deps/icu/source/config/mh-bsd-gcc diff --git a/bootstrap/cxx/deps/icu/source/config/mh-cygwin b/deps/icu/source/config/mh-cygwin similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-cygwin rename to deps/icu/source/config/mh-cygwin diff --git a/bootstrap/cxx/deps/icu/source/config/mh-cygwin-msvc b/deps/icu/source/config/mh-cygwin-msvc similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-cygwin-msvc rename to deps/icu/source/config/mh-cygwin-msvc diff --git a/bootstrap/cxx/deps/icu/source/config/mh-cygwin64 b/deps/icu/source/config/mh-cygwin64 similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-cygwin64 rename to deps/icu/source/config/mh-cygwin64 diff --git a/bootstrap/cxx/deps/icu/source/config/mh-darwin b/deps/icu/source/config/mh-darwin similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-darwin rename to deps/icu/source/config/mh-darwin diff --git a/bootstrap/cxx/deps/icu/source/config/mh-haiku b/deps/icu/source/config/mh-haiku similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-haiku rename to deps/icu/source/config/mh-haiku diff --git a/bootstrap/cxx/deps/icu/source/config/mh-hpux-acc b/deps/icu/source/config/mh-hpux-acc similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-hpux-acc rename to deps/icu/source/config/mh-hpux-acc diff --git a/bootstrap/cxx/deps/icu/source/config/mh-hpux-gcc b/deps/icu/source/config/mh-hpux-gcc similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-hpux-gcc rename to deps/icu/source/config/mh-hpux-gcc diff --git a/bootstrap/cxx/deps/icu/source/config/mh-irix b/deps/icu/source/config/mh-irix similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-irix rename to deps/icu/source/config/mh-irix diff --git a/bootstrap/cxx/deps/icu/source/config/mh-linux b/deps/icu/source/config/mh-linux similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-linux rename to deps/icu/source/config/mh-linux diff --git a/bootstrap/cxx/deps/icu/source/config/mh-linux-va b/deps/icu/source/config/mh-linux-va similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-linux-va rename to deps/icu/source/config/mh-linux-va diff --git a/bootstrap/cxx/deps/icu/source/config/mh-mingw b/deps/icu/source/config/mh-mingw similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-mingw rename to deps/icu/source/config/mh-mingw diff --git a/bootstrap/cxx/deps/icu/source/config/mh-mingw64 b/deps/icu/source/config/mh-mingw64 similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-mingw64 rename to deps/icu/source/config/mh-mingw64 diff --git a/bootstrap/cxx/deps/icu/source/config/mh-mpras b/deps/icu/source/config/mh-mpras similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-mpras rename to deps/icu/source/config/mh-mpras diff --git a/bootstrap/cxx/deps/icu/source/config/mh-msys-msvc b/deps/icu/source/config/mh-msys-msvc similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-msys-msvc rename to deps/icu/source/config/mh-msys-msvc diff --git a/bootstrap/cxx/deps/icu/source/config/mh-os390 b/deps/icu/source/config/mh-os390 similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-os390 rename to deps/icu/source/config/mh-os390 diff --git a/bootstrap/cxx/deps/icu/source/config/mh-os400 b/deps/icu/source/config/mh-os400 similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-os400 rename to deps/icu/source/config/mh-os400 diff --git a/bootstrap/cxx/deps/icu/source/config/mh-qnx b/deps/icu/source/config/mh-qnx similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-qnx rename to deps/icu/source/config/mh-qnx diff --git a/bootstrap/cxx/deps/icu/source/config/mh-solaris b/deps/icu/source/config/mh-solaris similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-solaris rename to deps/icu/source/config/mh-solaris diff --git a/bootstrap/cxx/deps/icu/source/config/mh-solaris-gcc b/deps/icu/source/config/mh-solaris-gcc similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-solaris-gcc rename to deps/icu/source/config/mh-solaris-gcc diff --git a/bootstrap/cxx/deps/icu/source/config/mh-unknown b/deps/icu/source/config/mh-unknown similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-unknown rename to deps/icu/source/config/mh-unknown diff --git a/bootstrap/cxx/deps/icu/source/config/pkgdataMakefile.in b/deps/icu/source/config/pkgdataMakefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/pkgdataMakefile.in rename to deps/icu/source/config/pkgdataMakefile.in diff --git a/bootstrap/cxx/deps/icu/source/config/test-icu-config.sh b/deps/icu/source/config/test-icu-config.sh similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/test-icu-config.sh rename to deps/icu/source/config/test-icu-config.sh diff --git a/bootstrap/cxx/deps/icu/source/config/windows-update.sed.in b/deps/icu/source/config/windows-update.sed.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/windows-update.sed.in rename to deps/icu/source/config/windows-update.sed.in diff --git a/bootstrap/cxx/deps/icu/source/configure b/deps/icu/source/configure similarity index 100% rename from bootstrap/cxx/deps/icu/source/configure rename to deps/icu/source/configure diff --git a/bootstrap/cxx/deps/icu/source/configure.ac b/deps/icu/source/configure.ac similarity index 100% rename from bootstrap/cxx/deps/icu/source/configure.ac rename to deps/icu/source/configure.ac diff --git a/bootstrap/cxx/deps/icu/source/data/BUILDRULES.py b/deps/icu/source/data/BUILDRULES.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/BUILDRULES.py rename to deps/icu/source/data/BUILDRULES.py diff --git a/bootstrap/cxx/deps/icu/source/data/Makefile.in b/deps/icu/source/data/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/Makefile.in rename to deps/icu/source/data/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/data/build.xml b/deps/icu/source/data/build.xml similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/build.xml rename to deps/icu/source/data/build.xml diff --git a/bootstrap/cxx/deps/icu/source/data/cldr-icu-readme.txt b/deps/icu/source/data/cldr-icu-readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/cldr-icu-readme.txt rename to deps/icu/source/data/cldr-icu-readme.txt diff --git a/bootstrap/cxx/deps/icu/source/data/dtd/cldr-35.1/common/dtd/ldml.dtd b/deps/icu/source/data/dtd/cldr-35.1/common/dtd/ldml.dtd similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/dtd/cldr-35.1/common/dtd/ldml.dtd rename to deps/icu/source/data/dtd/cldr-35.1/common/dtd/ldml.dtd diff --git a/bootstrap/cxx/deps/icu/source/data/dtd/cldr-35.1/common/dtd/ldmlICU.dtd b/deps/icu/source/data/dtd/cldr-35.1/common/dtd/ldmlICU.dtd similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/dtd/cldr-35.1/common/dtd/ldmlICU.dtd rename to deps/icu/source/data/dtd/cldr-35.1/common/dtd/ldmlICU.dtd diff --git a/bootstrap/cxx/deps/icu/source/data/dtd/cldr-40/common/dtd/ldml.dtd b/deps/icu/source/data/dtd/cldr-40/common/dtd/ldml.dtd similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/dtd/cldr-40/common/dtd/ldml.dtd rename to deps/icu/source/data/dtd/cldr-40/common/dtd/ldml.dtd diff --git a/bootstrap/cxx/deps/icu/source/data/dtd/cldr-40/common/dtd/ldmlICU.dtd b/deps/icu/source/data/dtd/cldr-40/common/dtd/ldmlICU.dtd similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/dtd/cldr-40/common/dtd/ldmlICU.dtd rename to deps/icu/source/data/dtd/cldr-40/common/dtd/ldmlICU.dtd diff --git a/bootstrap/cxx/deps/icu/source/data/dtd/cldr/common/dtd/ldml.dtd b/deps/icu/source/data/dtd/cldr/common/dtd/ldml.dtd similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/dtd/cldr/common/dtd/ldml.dtd rename to deps/icu/source/data/dtd/cldr/common/dtd/ldml.dtd diff --git a/bootstrap/cxx/deps/icu/source/data/dtd/cldr/common/dtd/ldmlICU.dtd b/deps/icu/source/data/dtd/cldr/common/dtd/ldmlICU.dtd similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/dtd/cldr/common/dtd/ldmlICU.dtd rename to deps/icu/source/data/dtd/cldr/common/dtd/ldmlICU.dtd diff --git a/bootstrap/cxx/deps/icu/source/data/icu4j-readme.txt b/deps/icu/source/data/icu4j-readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/icu4j-readme.txt rename to deps/icu/source/data/icu4j-readme.txt diff --git a/bootstrap/cxx/deps/icu/source/data/icupkg.inc.in b/deps/icu/source/data/icupkg.inc.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/icupkg.inc.in rename to deps/icu/source/data/icupkg.inc.in diff --git a/bootstrap/cxx/deps/icu/source/data/in/coll/ucadata-implicithan.icu b/deps/icu/source/data/in/coll/ucadata-implicithan.icu similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/coll/ucadata-implicithan.icu rename to deps/icu/source/data/in/coll/ucadata-implicithan.icu diff --git a/bootstrap/cxx/deps/icu/source/data/in/coll/ucadata-unihan.icu b/deps/icu/source/data/in/coll/ucadata-unihan.icu similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/coll/ucadata-unihan.icu rename to deps/icu/source/data/in/coll/ucadata-unihan.icu diff --git a/bootstrap/cxx/deps/icu/source/data/in/icudt71l.dat b/deps/icu/source/data/in/icudt71l.dat similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/icudt71l.dat rename to deps/icu/source/data/in/icudt71l.dat diff --git a/bootstrap/cxx/deps/icu/source/data/in/nfc.nrm b/deps/icu/source/data/in/nfc.nrm similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/nfc.nrm rename to deps/icu/source/data/in/nfc.nrm diff --git a/bootstrap/cxx/deps/icu/source/data/in/nfkc.nrm b/deps/icu/source/data/in/nfkc.nrm similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/nfkc.nrm rename to deps/icu/source/data/in/nfkc.nrm diff --git a/bootstrap/cxx/deps/icu/source/data/in/nfkc_cf.nrm b/deps/icu/source/data/in/nfkc_cf.nrm similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/nfkc_cf.nrm rename to deps/icu/source/data/in/nfkc_cf.nrm diff --git a/bootstrap/cxx/deps/icu/source/data/in/pnames.icu b/deps/icu/source/data/in/pnames.icu similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/pnames.icu rename to deps/icu/source/data/in/pnames.icu diff --git a/bootstrap/cxx/deps/icu/source/data/in/ubidi.icu b/deps/icu/source/data/in/ubidi.icu similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/ubidi.icu rename to deps/icu/source/data/in/ubidi.icu diff --git a/bootstrap/cxx/deps/icu/source/data/in/ucase.icu b/deps/icu/source/data/in/ucase.icu similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/ucase.icu rename to deps/icu/source/data/in/ucase.icu diff --git a/bootstrap/cxx/deps/icu/source/data/in/uemoji.icu b/deps/icu/source/data/in/uemoji.icu similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/uemoji.icu rename to deps/icu/source/data/in/uemoji.icu diff --git a/bootstrap/cxx/deps/icu/source/data/in/ulayout.icu b/deps/icu/source/data/in/ulayout.icu similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/ulayout.icu rename to deps/icu/source/data/in/ulayout.icu diff --git a/bootstrap/cxx/deps/icu/source/data/in/unames.icu b/deps/icu/source/data/in/unames.icu similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/unames.icu rename to deps/icu/source/data/in/unames.icu diff --git a/bootstrap/cxx/deps/icu/source/data/in/uprops.icu b/deps/icu/source/data/in/uprops.icu similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/uprops.icu rename to deps/icu/source/data/in/uprops.icu diff --git a/bootstrap/cxx/deps/icu/source/data/in/uts46.nrm b/deps/icu/source/data/in/uts46.nrm similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/uts46.nrm rename to deps/icu/source/data/in/uts46.nrm diff --git a/bootstrap/cxx/deps/icu/source/data/makedata.mak b/deps/icu/source/data/makedata.mak similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/makedata.mak rename to deps/icu/source/data/makedata.mak diff --git a/bootstrap/cxx/deps/icu/source/data/makedata.vcxproj b/deps/icu/source/data/makedata.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/makedata.vcxproj rename to deps/icu/source/data/makedata.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/data/makedata.vcxproj.filters b/deps/icu/source/data/makedata.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/makedata.vcxproj.filters rename to deps/icu/source/data/makedata.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/data/makedata_uwp.vcxproj b/deps/icu/source/data/makedata_uwp.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/makedata_uwp.vcxproj rename to deps/icu/source/data/makedata_uwp.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/data/misc/icudata.rc b/deps/icu/source/data/misc/icudata.rc similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/misc/icudata.rc rename to deps/icu/source/data/misc/icudata.rc diff --git a/bootstrap/cxx/deps/icu/source/data/pkgdataMakefile.in b/deps/icu/source/data/pkgdataMakefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/pkgdataMakefile.in rename to deps/icu/source/data/pkgdataMakefile.in diff --git a/bootstrap/cxx/deps/icu/source/data/sprep/rfc3491.txt b/deps/icu/source/data/sprep/rfc3491.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/sprep/rfc3491.txt rename to deps/icu/source/data/sprep/rfc3491.txt diff --git a/bootstrap/cxx/deps/icu/source/data/sprep/rfc3530cs.txt b/deps/icu/source/data/sprep/rfc3530cs.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/sprep/rfc3530cs.txt rename to deps/icu/source/data/sprep/rfc3530cs.txt diff --git a/bootstrap/cxx/deps/icu/source/data/sprep/rfc3530csci.txt b/deps/icu/source/data/sprep/rfc3530csci.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/sprep/rfc3530csci.txt rename to deps/icu/source/data/sprep/rfc3530csci.txt diff --git a/bootstrap/cxx/deps/icu/source/data/sprep/rfc3530mixp.txt b/deps/icu/source/data/sprep/rfc3530mixp.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/sprep/rfc3530mixp.txt rename to deps/icu/source/data/sprep/rfc3530mixp.txt diff --git a/bootstrap/cxx/deps/icu/source/data/sprep/rfc3722.txt b/deps/icu/source/data/sprep/rfc3722.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/sprep/rfc3722.txt rename to deps/icu/source/data/sprep/rfc3722.txt diff --git a/bootstrap/cxx/deps/icu/source/data/sprep/rfc3920node.txt b/deps/icu/source/data/sprep/rfc3920node.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/sprep/rfc3920node.txt rename to deps/icu/source/data/sprep/rfc3920node.txt diff --git a/bootstrap/cxx/deps/icu/source/data/sprep/rfc3920res.txt b/deps/icu/source/data/sprep/rfc3920res.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/sprep/rfc3920res.txt rename to deps/icu/source/data/sprep/rfc3920res.txt diff --git a/bootstrap/cxx/deps/icu/source/data/sprep/rfc4011.txt b/deps/icu/source/data/sprep/rfc4011.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/sprep/rfc4011.txt rename to deps/icu/source/data/sprep/rfc4011.txt diff --git a/bootstrap/cxx/deps/icu/source/data/sprep/rfc4013.txt b/deps/icu/source/data/sprep/rfc4013.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/sprep/rfc4013.txt rename to deps/icu/source/data/sprep/rfc4013.txt diff --git a/bootstrap/cxx/deps/icu/source/data/sprep/rfc4505.txt b/deps/icu/source/data/sprep/rfc4505.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/sprep/rfc4505.txt rename to deps/icu/source/data/sprep/rfc4505.txt diff --git a/bootstrap/cxx/deps/icu/source/data/sprep/rfc4518.txt b/deps/icu/source/data/sprep/rfc4518.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/sprep/rfc4518.txt rename to deps/icu/source/data/sprep/rfc4518.txt diff --git a/bootstrap/cxx/deps/icu/source/data/sprep/rfc4518ci.txt b/deps/icu/source/data/sprep/rfc4518ci.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/sprep/rfc4518ci.txt rename to deps/icu/source/data/sprep/rfc4518ci.txt diff --git a/bootstrap/cxx/deps/icu/source/data/sprep/sprepfiles.mk b/deps/icu/source/data/sprep/sprepfiles.mk similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/sprep/sprepfiles.mk rename to deps/icu/source/data/sprep/sprepfiles.mk diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/CaseFolding.txt b/deps/icu/source/data/unidata/CaseFolding.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/CaseFolding.txt rename to deps/icu/source/data/unidata/CaseFolding.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/DerivedCoreProperties.txt b/deps/icu/source/data/unidata/DerivedCoreProperties.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/DerivedCoreProperties.txt rename to deps/icu/source/data/unidata/DerivedCoreProperties.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/DerivedNormalizationProps.txt b/deps/icu/source/data/unidata/DerivedNormalizationProps.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/DerivedNormalizationProps.txt rename to deps/icu/source/data/unidata/DerivedNormalizationProps.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/FractionalUCA.txt b/deps/icu/source/data/unidata/FractionalUCA.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/FractionalUCA.txt rename to deps/icu/source/data/unidata/FractionalUCA.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/NormalizationCorrections.txt b/deps/icu/source/data/unidata/NormalizationCorrections.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/NormalizationCorrections.txt rename to deps/icu/source/data/unidata/NormalizationCorrections.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/NormalizationTest.txt b/deps/icu/source/data/unidata/NormalizationTest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/NormalizationTest.txt rename to deps/icu/source/data/unidata/NormalizationTest.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/SpecialCasing.txt b/deps/icu/source/data/unidata/SpecialCasing.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/SpecialCasing.txt rename to deps/icu/source/data/unidata/SpecialCasing.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/UCARules.txt b/deps/icu/source/data/unidata/UCARules.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/UCARules.txt rename to deps/icu/source/data/unidata/UCARules.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/UnicodeData.txt b/deps/icu/source/data/unidata/UnicodeData.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/UnicodeData.txt rename to deps/icu/source/data/unidata/UnicodeData.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/changes.txt b/deps/icu/source/data/unidata/changes.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/changes.txt rename to deps/icu/source/data/unidata/changes.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/clean.sh b/deps/icu/source/data/unidata/clean.sh similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/clean.sh rename to deps/icu/source/data/unidata/clean.sh diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/confusables.txt b/deps/icu/source/data/unidata/confusables.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/confusables.txt rename to deps/icu/source/data/unidata/confusables.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/confusablesWholeScript.txt b/deps/icu/source/data/unidata/confusablesWholeScript.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/confusablesWholeScript.txt rename to deps/icu/source/data/unidata/confusablesWholeScript.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/emoji-sequences.txt b/deps/icu/source/data/unidata/emoji-sequences.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/emoji-sequences.txt rename to deps/icu/source/data/unidata/emoji-sequences.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/emoji-zwj-sequences.txt b/deps/icu/source/data/unidata/emoji-zwj-sequences.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/emoji-zwj-sequences.txt rename to deps/icu/source/data/unidata/emoji-zwj-sequences.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/generate.sh b/deps/icu/source/data/unidata/generate.sh similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/generate.sh rename to deps/icu/source/data/unidata/generate.sh diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/norm2/BUILD.bazel b/deps/icu/source/data/unidata/norm2/BUILD.bazel similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/norm2/BUILD.bazel rename to deps/icu/source/data/unidata/norm2/BUILD.bazel diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/norm2/nfc.txt b/deps/icu/source/data/unidata/norm2/nfc.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/norm2/nfc.txt rename to deps/icu/source/data/unidata/norm2/nfc.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/norm2/nfkc.txt b/deps/icu/source/data/unidata/norm2/nfkc.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/norm2/nfkc.txt rename to deps/icu/source/data/unidata/norm2/nfkc.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/norm2/nfkc_cf.txt b/deps/icu/source/data/unidata/norm2/nfkc_cf.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/norm2/nfkc_cf.txt rename to deps/icu/source/data/unidata/norm2/nfkc_cf.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/norm2/uts46.txt b/deps/icu/source/data/unidata/norm2/uts46.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/norm2/uts46.txt rename to deps/icu/source/data/unidata/norm2/uts46.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/ppucd.txt b/deps/icu/source/data/unidata/ppucd.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/ppucd.txt rename to deps/icu/source/data/unidata/ppucd.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/Makefile.in b/deps/icu/source/extra/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/Makefile.in rename to deps/icu/source/extra/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/extra/scrptrun/Makefile.in b/deps/icu/source/extra/scrptrun/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/scrptrun/Makefile.in rename to deps/icu/source/extra/scrptrun/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/extra/scrptrun/readme.html b/deps/icu/source/extra/scrptrun/readme.html similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/scrptrun/readme.html rename to deps/icu/source/extra/scrptrun/readme.html diff --git a/bootstrap/cxx/deps/icu/source/extra/scrptrun/scrptrun.cpp b/deps/icu/source/extra/scrptrun/scrptrun.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/scrptrun/scrptrun.cpp rename to deps/icu/source/extra/scrptrun/scrptrun.cpp diff --git a/bootstrap/cxx/deps/icu/source/extra/scrptrun/scrptrun.h b/deps/icu/source/extra/scrptrun/scrptrun.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/scrptrun/scrptrun.h rename to deps/icu/source/extra/scrptrun/scrptrun.h diff --git a/bootstrap/cxx/deps/icu/source/extra/scrptrun/sources.txt b/deps/icu/source/extra/scrptrun/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/scrptrun/sources.txt rename to deps/icu/source/extra/scrptrun/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/scrptrun/srtest.cpp b/deps/icu/source/extra/scrptrun/srtest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/scrptrun/srtest.cpp rename to deps/icu/source/extra/scrptrun/srtest.cpp diff --git a/bootstrap/cxx/deps/icu/source/extra/scrptrun/srtest.dsp b/deps/icu/source/extra/scrptrun/srtest.dsp similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/scrptrun/srtest.dsp rename to deps/icu/source/extra/scrptrun/srtest.dsp diff --git a/bootstrap/cxx/deps/icu/source/extra/scrptrun/srtest.dsw b/deps/icu/source/extra/scrptrun/srtest.dsw similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/scrptrun/srtest.dsw rename to deps/icu/source/extra/scrptrun/srtest.dsw diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/Makefile.in b/deps/icu/source/extra/uconv/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/Makefile.in rename to deps/icu/source/extra/uconv/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/README b/deps/icu/source/extra/uconv/README similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/README rename to deps/icu/source/extra/uconv/README diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/makedata.mak b/deps/icu/source/extra/uconv/makedata.mak similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/makedata.mak rename to deps/icu/source/extra/uconv/makedata.mak diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/pkgdata.inc.in b/deps/icu/source/extra/uconv/pkgdata.inc.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/pkgdata.inc.in rename to deps/icu/source/extra/uconv/pkgdata.inc.in diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/pkgdataMakefile.in b/deps/icu/source/extra/uconv/pkgdataMakefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/pkgdataMakefile.in rename to deps/icu/source/extra/uconv/pkgdataMakefile.in diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/resfiles.mk b/deps/icu/source/extra/uconv/resfiles.mk similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/resfiles.mk rename to deps/icu/source/extra/uconv/resfiles.mk diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/resources/fr.txt b/deps/icu/source/extra/uconv/resources/fr.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/resources/fr.txt rename to deps/icu/source/extra/uconv/resources/fr.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/resources/root.txt b/deps/icu/source/extra/uconv/resources/root.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/resources/root.txt rename to deps/icu/source/extra/uconv/resources/root.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/ISO-8859-2.txt b/deps/icu/source/extra/uconv/samples/ISO-8859-2.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/ISO-8859-2.txt rename to deps/icu/source/extra/uconv/samples/ISO-8859-2.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/ISO-8859-3.txt b/deps/icu/source/extra/uconv/samples/ISO-8859-3.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/ISO-8859-3.txt rename to deps/icu/source/extra/uconv/samples/ISO-8859-3.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/danish-ISO-8859-1.txt b/deps/icu/source/extra/uconv/samples/danish-ISO-8859-1.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/danish-ISO-8859-1.txt rename to deps/icu/source/extra/uconv/samples/danish-ISO-8859-1.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/eucJP.txt b/deps/icu/source/extra/uconv/samples/eucJP.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/eucJP.txt rename to deps/icu/source/extra/uconv/samples/eucJP.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/hangul-eucKR.txt b/deps/icu/source/extra/uconv/samples/hangul-eucKR.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/hangul-eucKR.txt rename to deps/icu/source/extra/uconv/samples/hangul-eucKR.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/hania-eucKR.txt b/deps/icu/source/extra/uconv/samples/hania-eucKR.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/hania-eucKR.txt rename to deps/icu/source/extra/uconv/samples/hania-eucKR.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/ibm-37-test.txt b/deps/icu/source/extra/uconv/samples/ibm-37-test.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/ibm-37-test.txt rename to deps/icu/source/extra/uconv/samples/ibm-37-test.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/iso8859-1.txt b/deps/icu/source/extra/uconv/samples/iso8859-1.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/iso8859-1.txt rename to deps/icu/source/extra/uconv/samples/iso8859-1.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/koi8r.txt b/deps/icu/source/extra/uconv/samples/koi8r.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/koi8r.txt rename to deps/icu/source/extra/uconv/samples/koi8r.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/armenian.txt b/deps/icu/source/extra/uconv/samples/utf8/armenian.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/armenian.txt rename to deps/icu/source/extra/uconv/samples/utf8/armenian.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/banviet.txt b/deps/icu/source/extra/uconv/samples/utf8/banviet.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/banviet.txt rename to deps/icu/source/extra/uconv/samples/utf8/banviet.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/chinese-ulysses.txt b/deps/icu/source/extra/uconv/samples/utf8/chinese-ulysses.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/chinese-ulysses.txt rename to deps/icu/source/extra/uconv/samples/utf8/chinese-ulysses.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/croat.txt b/deps/icu/source/extra/uconv/samples/utf8/croat.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/croat.txt rename to deps/icu/source/extra/uconv/samples/utf8/croat.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/danish.txt b/deps/icu/source/extra/uconv/samples/utf8/danish.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/danish.txt rename to deps/icu/source/extra/uconv/samples/utf8/danish.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/greek.txt b/deps/icu/source/extra/uconv/samples/utf8/greek.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/greek.txt rename to deps/icu/source/extra/uconv/samples/utf8/greek.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/hangul.txt b/deps/icu/source/extra/uconv/samples/utf8/hangul.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/hangul.txt rename to deps/icu/source/extra/uconv/samples/utf8/hangul.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/hania.txt b/deps/icu/source/extra/uconv/samples/utf8/hania.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/hania.txt rename to deps/icu/source/extra/uconv/samples/utf8/hania.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/jap.txt b/deps/icu/source/extra/uconv/samples/utf8/jap.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/jap.txt rename to deps/icu/source/extra/uconv/samples/utf8/jap.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/korean.txt b/deps/icu/source/extra/uconv/samples/utf8/korean.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/korean.txt rename to deps/icu/source/extra/uconv/samples/utf8/korean.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/linji.txt b/deps/icu/source/extra/uconv/samples/utf8/linji.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/linji.txt rename to deps/icu/source/extra/uconv/samples/utf8/linji.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/many.txt b/deps/icu/source/extra/uconv/samples/utf8/many.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/many.txt rename to deps/icu/source/extra/uconv/samples/utf8/many.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/maopoem.txt b/deps/icu/source/extra/uconv/samples/utf8/maopoem.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/maopoem.txt rename to deps/icu/source/extra/uconv/samples/utf8/maopoem.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/russian.txt b/deps/icu/source/extra/uconv/samples/utf8/russian.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/russian.txt rename to deps/icu/source/extra/uconv/samples/utf8/russian.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/simplechinese.txt b/deps/icu/source/extra/uconv/samples/utf8/simplechinese.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/simplechinese.txt rename to deps/icu/source/extra/uconv/samples/utf8/simplechinese.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/turkish.txt b/deps/icu/source/extra/uconv/samples/utf8/turkish.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/turkish.txt rename to deps/icu/source/extra/uconv/samples/utf8/turkish.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/utf-8-demo.txt b/deps/icu/source/extra/uconv/samples/utf8/utf-8-demo.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/utf-8-demo.txt rename to deps/icu/source/extra/uconv/samples/utf8/utf-8-demo.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/sources.txt b/deps/icu/source/extra/uconv/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/sources.txt rename to deps/icu/source/extra/uconv/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/uconv.1.in b/deps/icu/source/extra/uconv/uconv.1.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/uconv.1.in rename to deps/icu/source/extra/uconv/uconv.1.in diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/uconv.cpp b/deps/icu/source/extra/uconv/uconv.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/uconv.cpp rename to deps/icu/source/extra/uconv/uconv.cpp diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/uconv.vcxproj b/deps/icu/source/extra/uconv/uconv.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/uconv.vcxproj rename to deps/icu/source/extra/uconv/uconv.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/uconv.vcxproj.filters b/deps/icu/source/extra/uconv/uconv.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/uconv.vcxproj.filters rename to deps/icu/source/extra/uconv/uconv.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/unicode/uwmsg.h b/deps/icu/source/extra/uconv/unicode/uwmsg.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/unicode/uwmsg.h rename to deps/icu/source/extra/uconv/unicode/uwmsg.h diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/uwmsg.c b/deps/icu/source/extra/uconv/uwmsg.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/uwmsg.c rename to deps/icu/source/extra/uconv/uwmsg.c diff --git a/bootstrap/cxx/deps/icu/source/i18n/BUILD.bazel b/deps/icu/source/i18n/BUILD.bazel similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/BUILD.bazel rename to deps/icu/source/i18n/BUILD.bazel diff --git a/bootstrap/cxx/deps/icu/source/i18n/Makefile.in b/deps/icu/source/i18n/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/Makefile.in rename to deps/icu/source/i18n/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/i18n/alphaindex.cpp b/deps/icu/source/i18n/alphaindex.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/alphaindex.cpp rename to deps/icu/source/i18n/alphaindex.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/anytrans.cpp b/deps/icu/source/i18n/anytrans.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/anytrans.cpp rename to deps/icu/source/i18n/anytrans.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/anytrans.h b/deps/icu/source/i18n/anytrans.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/anytrans.h rename to deps/icu/source/i18n/anytrans.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/astro.cpp b/deps/icu/source/i18n/astro.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/astro.cpp rename to deps/icu/source/i18n/astro.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/astro.h b/deps/icu/source/i18n/astro.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/astro.h rename to deps/icu/source/i18n/astro.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/basictz.cpp b/deps/icu/source/i18n/basictz.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/basictz.cpp rename to deps/icu/source/i18n/basictz.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/bocsu.cpp b/deps/icu/source/i18n/bocsu.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/bocsu.cpp rename to deps/icu/source/i18n/bocsu.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/bocsu.h b/deps/icu/source/i18n/bocsu.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/bocsu.h rename to deps/icu/source/i18n/bocsu.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/brktrans.cpp b/deps/icu/source/i18n/brktrans.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/brktrans.cpp rename to deps/icu/source/i18n/brktrans.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/brktrans.h b/deps/icu/source/i18n/brktrans.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/brktrans.h rename to deps/icu/source/i18n/brktrans.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/buddhcal.cpp b/deps/icu/source/i18n/buddhcal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/buddhcal.cpp rename to deps/icu/source/i18n/buddhcal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/buddhcal.h b/deps/icu/source/i18n/buddhcal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/buddhcal.h rename to deps/icu/source/i18n/buddhcal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/calendar.cpp b/deps/icu/source/i18n/calendar.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/calendar.cpp rename to deps/icu/source/i18n/calendar.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/casetrn.cpp b/deps/icu/source/i18n/casetrn.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/casetrn.cpp rename to deps/icu/source/i18n/casetrn.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/casetrn.h b/deps/icu/source/i18n/casetrn.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/casetrn.h rename to deps/icu/source/i18n/casetrn.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/cecal.cpp b/deps/icu/source/i18n/cecal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/cecal.cpp rename to deps/icu/source/i18n/cecal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/cecal.h b/deps/icu/source/i18n/cecal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/cecal.h rename to deps/icu/source/i18n/cecal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/chnsecal.cpp b/deps/icu/source/i18n/chnsecal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/chnsecal.cpp rename to deps/icu/source/i18n/chnsecal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/chnsecal.h b/deps/icu/source/i18n/chnsecal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/chnsecal.h rename to deps/icu/source/i18n/chnsecal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/choicfmt.cpp b/deps/icu/source/i18n/choicfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/choicfmt.cpp rename to deps/icu/source/i18n/choicfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/coleitr.cpp b/deps/icu/source/i18n/coleitr.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/coleitr.cpp rename to deps/icu/source/i18n/coleitr.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/coll.cpp b/deps/icu/source/i18n/coll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/coll.cpp rename to deps/icu/source/i18n/coll.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collation.cpp b/deps/icu/source/i18n/collation.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collation.cpp rename to deps/icu/source/i18n/collation.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collation.h b/deps/icu/source/i18n/collation.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collation.h rename to deps/icu/source/i18n/collation.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationbuilder.cpp b/deps/icu/source/i18n/collationbuilder.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationbuilder.cpp rename to deps/icu/source/i18n/collationbuilder.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationbuilder.h b/deps/icu/source/i18n/collationbuilder.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationbuilder.h rename to deps/icu/source/i18n/collationbuilder.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationcompare.cpp b/deps/icu/source/i18n/collationcompare.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationcompare.cpp rename to deps/icu/source/i18n/collationcompare.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationcompare.h b/deps/icu/source/i18n/collationcompare.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationcompare.h rename to deps/icu/source/i18n/collationcompare.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationdata.cpp b/deps/icu/source/i18n/collationdata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationdata.cpp rename to deps/icu/source/i18n/collationdata.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationdata.h b/deps/icu/source/i18n/collationdata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationdata.h rename to deps/icu/source/i18n/collationdata.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationdatabuilder.cpp b/deps/icu/source/i18n/collationdatabuilder.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationdatabuilder.cpp rename to deps/icu/source/i18n/collationdatabuilder.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationdatabuilder.h b/deps/icu/source/i18n/collationdatabuilder.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationdatabuilder.h rename to deps/icu/source/i18n/collationdatabuilder.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationdatareader.cpp b/deps/icu/source/i18n/collationdatareader.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationdatareader.cpp rename to deps/icu/source/i18n/collationdatareader.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationdatareader.h b/deps/icu/source/i18n/collationdatareader.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationdatareader.h rename to deps/icu/source/i18n/collationdatareader.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationdatawriter.cpp b/deps/icu/source/i18n/collationdatawriter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationdatawriter.cpp rename to deps/icu/source/i18n/collationdatawriter.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationdatawriter.h b/deps/icu/source/i18n/collationdatawriter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationdatawriter.h rename to deps/icu/source/i18n/collationdatawriter.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationfastlatin.cpp b/deps/icu/source/i18n/collationfastlatin.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationfastlatin.cpp rename to deps/icu/source/i18n/collationfastlatin.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationfastlatin.h b/deps/icu/source/i18n/collationfastlatin.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationfastlatin.h rename to deps/icu/source/i18n/collationfastlatin.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationfastlatinbuilder.cpp b/deps/icu/source/i18n/collationfastlatinbuilder.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationfastlatinbuilder.cpp rename to deps/icu/source/i18n/collationfastlatinbuilder.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationfastlatinbuilder.h b/deps/icu/source/i18n/collationfastlatinbuilder.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationfastlatinbuilder.h rename to deps/icu/source/i18n/collationfastlatinbuilder.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationfcd.cpp b/deps/icu/source/i18n/collationfcd.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationfcd.cpp rename to deps/icu/source/i18n/collationfcd.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationfcd.h b/deps/icu/source/i18n/collationfcd.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationfcd.h rename to deps/icu/source/i18n/collationfcd.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationiterator.cpp b/deps/icu/source/i18n/collationiterator.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationiterator.cpp rename to deps/icu/source/i18n/collationiterator.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationiterator.h b/deps/icu/source/i18n/collationiterator.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationiterator.h rename to deps/icu/source/i18n/collationiterator.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationkeys.cpp b/deps/icu/source/i18n/collationkeys.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationkeys.cpp rename to deps/icu/source/i18n/collationkeys.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationkeys.h b/deps/icu/source/i18n/collationkeys.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationkeys.h rename to deps/icu/source/i18n/collationkeys.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationroot.cpp b/deps/icu/source/i18n/collationroot.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationroot.cpp rename to deps/icu/source/i18n/collationroot.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationroot.h b/deps/icu/source/i18n/collationroot.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationroot.h rename to deps/icu/source/i18n/collationroot.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationrootelements.cpp b/deps/icu/source/i18n/collationrootelements.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationrootelements.cpp rename to deps/icu/source/i18n/collationrootelements.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationrootelements.h b/deps/icu/source/i18n/collationrootelements.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationrootelements.h rename to deps/icu/source/i18n/collationrootelements.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationruleparser.cpp b/deps/icu/source/i18n/collationruleparser.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationruleparser.cpp rename to deps/icu/source/i18n/collationruleparser.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationruleparser.h b/deps/icu/source/i18n/collationruleparser.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationruleparser.h rename to deps/icu/source/i18n/collationruleparser.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationsets.cpp b/deps/icu/source/i18n/collationsets.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationsets.cpp rename to deps/icu/source/i18n/collationsets.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationsets.h b/deps/icu/source/i18n/collationsets.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationsets.h rename to deps/icu/source/i18n/collationsets.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationsettings.cpp b/deps/icu/source/i18n/collationsettings.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationsettings.cpp rename to deps/icu/source/i18n/collationsettings.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationsettings.h b/deps/icu/source/i18n/collationsettings.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationsettings.h rename to deps/icu/source/i18n/collationsettings.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationtailoring.cpp b/deps/icu/source/i18n/collationtailoring.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationtailoring.cpp rename to deps/icu/source/i18n/collationtailoring.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationtailoring.h b/deps/icu/source/i18n/collationtailoring.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationtailoring.h rename to deps/icu/source/i18n/collationtailoring.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationweights.cpp b/deps/icu/source/i18n/collationweights.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationweights.cpp rename to deps/icu/source/i18n/collationweights.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationweights.h b/deps/icu/source/i18n/collationweights.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationweights.h rename to deps/icu/source/i18n/collationweights.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collunsafe.h b/deps/icu/source/i18n/collunsafe.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collunsafe.h rename to deps/icu/source/i18n/collunsafe.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/compactdecimalformat.cpp b/deps/icu/source/i18n/compactdecimalformat.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/compactdecimalformat.cpp rename to deps/icu/source/i18n/compactdecimalformat.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/coptccal.cpp b/deps/icu/source/i18n/coptccal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/coptccal.cpp rename to deps/icu/source/i18n/coptccal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/coptccal.h b/deps/icu/source/i18n/coptccal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/coptccal.h rename to deps/icu/source/i18n/coptccal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/cpdtrans.cpp b/deps/icu/source/i18n/cpdtrans.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/cpdtrans.cpp rename to deps/icu/source/i18n/cpdtrans.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/cpdtrans.h b/deps/icu/source/i18n/cpdtrans.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/cpdtrans.h rename to deps/icu/source/i18n/cpdtrans.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/csdetect.cpp b/deps/icu/source/i18n/csdetect.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csdetect.cpp rename to deps/icu/source/i18n/csdetect.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/csdetect.h b/deps/icu/source/i18n/csdetect.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csdetect.h rename to deps/icu/source/i18n/csdetect.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/csmatch.cpp b/deps/icu/source/i18n/csmatch.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csmatch.cpp rename to deps/icu/source/i18n/csmatch.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/csmatch.h b/deps/icu/source/i18n/csmatch.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csmatch.h rename to deps/icu/source/i18n/csmatch.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/csr2022.cpp b/deps/icu/source/i18n/csr2022.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csr2022.cpp rename to deps/icu/source/i18n/csr2022.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/csr2022.h b/deps/icu/source/i18n/csr2022.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csr2022.h rename to deps/icu/source/i18n/csr2022.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/csrecog.cpp b/deps/icu/source/i18n/csrecog.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csrecog.cpp rename to deps/icu/source/i18n/csrecog.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/csrecog.h b/deps/icu/source/i18n/csrecog.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csrecog.h rename to deps/icu/source/i18n/csrecog.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/csrmbcs.cpp b/deps/icu/source/i18n/csrmbcs.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csrmbcs.cpp rename to deps/icu/source/i18n/csrmbcs.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/csrmbcs.h b/deps/icu/source/i18n/csrmbcs.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csrmbcs.h rename to deps/icu/source/i18n/csrmbcs.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/csrsbcs.cpp b/deps/icu/source/i18n/csrsbcs.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csrsbcs.cpp rename to deps/icu/source/i18n/csrsbcs.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/csrsbcs.h b/deps/icu/source/i18n/csrsbcs.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csrsbcs.h rename to deps/icu/source/i18n/csrsbcs.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/csrucode.cpp b/deps/icu/source/i18n/csrucode.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csrucode.cpp rename to deps/icu/source/i18n/csrucode.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/csrucode.h b/deps/icu/source/i18n/csrucode.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csrucode.h rename to deps/icu/source/i18n/csrucode.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/csrutf8.cpp b/deps/icu/source/i18n/csrutf8.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csrutf8.cpp rename to deps/icu/source/i18n/csrutf8.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/csrutf8.h b/deps/icu/source/i18n/csrutf8.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csrutf8.h rename to deps/icu/source/i18n/csrutf8.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/curramt.cpp b/deps/icu/source/i18n/curramt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/curramt.cpp rename to deps/icu/source/i18n/curramt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/currfmt.cpp b/deps/icu/source/i18n/currfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/currfmt.cpp rename to deps/icu/source/i18n/currfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/currfmt.h b/deps/icu/source/i18n/currfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/currfmt.h rename to deps/icu/source/i18n/currfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/currpinf.cpp b/deps/icu/source/i18n/currpinf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/currpinf.cpp rename to deps/icu/source/i18n/currpinf.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/currunit.cpp b/deps/icu/source/i18n/currunit.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/currunit.cpp rename to deps/icu/source/i18n/currunit.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/dangical.cpp b/deps/icu/source/i18n/dangical.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/dangical.cpp rename to deps/icu/source/i18n/dangical.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/dangical.h b/deps/icu/source/i18n/dangical.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/dangical.h rename to deps/icu/source/i18n/dangical.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/datefmt.cpp b/deps/icu/source/i18n/datefmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/datefmt.cpp rename to deps/icu/source/i18n/datefmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/dayperiodrules.cpp b/deps/icu/source/i18n/dayperiodrules.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/dayperiodrules.cpp rename to deps/icu/source/i18n/dayperiodrules.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/dayperiodrules.h b/deps/icu/source/i18n/dayperiodrules.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/dayperiodrules.h rename to deps/icu/source/i18n/dayperiodrules.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/dcfmtsym.cpp b/deps/icu/source/i18n/dcfmtsym.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/dcfmtsym.cpp rename to deps/icu/source/i18n/dcfmtsym.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/decContext.cpp b/deps/icu/source/i18n/decContext.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/decContext.cpp rename to deps/icu/source/i18n/decContext.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/decContext.h b/deps/icu/source/i18n/decContext.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/decContext.h rename to deps/icu/source/i18n/decContext.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/decNumber.cpp b/deps/icu/source/i18n/decNumber.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/decNumber.cpp rename to deps/icu/source/i18n/decNumber.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/decNumber.h b/deps/icu/source/i18n/decNumber.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/decNumber.h rename to deps/icu/source/i18n/decNumber.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/decNumberLocal.h b/deps/icu/source/i18n/decNumberLocal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/decNumberLocal.h rename to deps/icu/source/i18n/decNumberLocal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/decimfmt.cpp b/deps/icu/source/i18n/decimfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/decimfmt.cpp rename to deps/icu/source/i18n/decimfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-bignum-dtoa.cpp b/deps/icu/source/i18n/double-conversion-bignum-dtoa.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-bignum-dtoa.cpp rename to deps/icu/source/i18n/double-conversion-bignum-dtoa.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-bignum-dtoa.h b/deps/icu/source/i18n/double-conversion-bignum-dtoa.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-bignum-dtoa.h rename to deps/icu/source/i18n/double-conversion-bignum-dtoa.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-bignum.cpp b/deps/icu/source/i18n/double-conversion-bignum.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-bignum.cpp rename to deps/icu/source/i18n/double-conversion-bignum.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-bignum.h b/deps/icu/source/i18n/double-conversion-bignum.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-bignum.h rename to deps/icu/source/i18n/double-conversion-bignum.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-cached-powers.cpp b/deps/icu/source/i18n/double-conversion-cached-powers.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-cached-powers.cpp rename to deps/icu/source/i18n/double-conversion-cached-powers.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-cached-powers.h b/deps/icu/source/i18n/double-conversion-cached-powers.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-cached-powers.h rename to deps/icu/source/i18n/double-conversion-cached-powers.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-diy-fp.h b/deps/icu/source/i18n/double-conversion-diy-fp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-diy-fp.h rename to deps/icu/source/i18n/double-conversion-diy-fp.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-double-to-string.cpp b/deps/icu/source/i18n/double-conversion-double-to-string.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-double-to-string.cpp rename to deps/icu/source/i18n/double-conversion-double-to-string.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-double-to-string.h b/deps/icu/source/i18n/double-conversion-double-to-string.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-double-to-string.h rename to deps/icu/source/i18n/double-conversion-double-to-string.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-fast-dtoa.cpp b/deps/icu/source/i18n/double-conversion-fast-dtoa.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-fast-dtoa.cpp rename to deps/icu/source/i18n/double-conversion-fast-dtoa.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-fast-dtoa.h b/deps/icu/source/i18n/double-conversion-fast-dtoa.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-fast-dtoa.h rename to deps/icu/source/i18n/double-conversion-fast-dtoa.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-ieee.h b/deps/icu/source/i18n/double-conversion-ieee.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-ieee.h rename to deps/icu/source/i18n/double-conversion-ieee.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-string-to-double.cpp b/deps/icu/source/i18n/double-conversion-string-to-double.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-string-to-double.cpp rename to deps/icu/source/i18n/double-conversion-string-to-double.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-string-to-double.h b/deps/icu/source/i18n/double-conversion-string-to-double.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-string-to-double.h rename to deps/icu/source/i18n/double-conversion-string-to-double.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-strtod.cpp b/deps/icu/source/i18n/double-conversion-strtod.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-strtod.cpp rename to deps/icu/source/i18n/double-conversion-strtod.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-strtod.h b/deps/icu/source/i18n/double-conversion-strtod.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-strtod.h rename to deps/icu/source/i18n/double-conversion-strtod.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-utils.h b/deps/icu/source/i18n/double-conversion-utils.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-utils.h rename to deps/icu/source/i18n/double-conversion-utils.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion.h b/deps/icu/source/i18n/double-conversion.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion.h rename to deps/icu/source/i18n/double-conversion.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/dt_impl.h b/deps/icu/source/i18n/dt_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/dt_impl.h rename to deps/icu/source/i18n/dt_impl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/dtfmtsym.cpp b/deps/icu/source/i18n/dtfmtsym.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/dtfmtsym.cpp rename to deps/icu/source/i18n/dtfmtsym.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/dtitv_impl.h b/deps/icu/source/i18n/dtitv_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/dtitv_impl.h rename to deps/icu/source/i18n/dtitv_impl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/dtitvfmt.cpp b/deps/icu/source/i18n/dtitvfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/dtitvfmt.cpp rename to deps/icu/source/i18n/dtitvfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/dtitvinf.cpp b/deps/icu/source/i18n/dtitvinf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/dtitvinf.cpp rename to deps/icu/source/i18n/dtitvinf.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/dtptngen.cpp b/deps/icu/source/i18n/dtptngen.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/dtptngen.cpp rename to deps/icu/source/i18n/dtptngen.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/dtptngen_impl.h b/deps/icu/source/i18n/dtptngen_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/dtptngen_impl.h rename to deps/icu/source/i18n/dtptngen_impl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/dtrule.cpp b/deps/icu/source/i18n/dtrule.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/dtrule.cpp rename to deps/icu/source/i18n/dtrule.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/erarules.cpp b/deps/icu/source/i18n/erarules.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/erarules.cpp rename to deps/icu/source/i18n/erarules.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/erarules.h b/deps/icu/source/i18n/erarules.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/erarules.h rename to deps/icu/source/i18n/erarules.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/esctrn.cpp b/deps/icu/source/i18n/esctrn.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/esctrn.cpp rename to deps/icu/source/i18n/esctrn.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/esctrn.h b/deps/icu/source/i18n/esctrn.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/esctrn.h rename to deps/icu/source/i18n/esctrn.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/ethpccal.cpp b/deps/icu/source/i18n/ethpccal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ethpccal.cpp rename to deps/icu/source/i18n/ethpccal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/ethpccal.h b/deps/icu/source/i18n/ethpccal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ethpccal.h rename to deps/icu/source/i18n/ethpccal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/fmtable.cpp b/deps/icu/source/i18n/fmtable.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/fmtable.cpp rename to deps/icu/source/i18n/fmtable.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/fmtable_cnv.cpp b/deps/icu/source/i18n/fmtable_cnv.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/fmtable_cnv.cpp rename to deps/icu/source/i18n/fmtable_cnv.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/fmtableimp.h b/deps/icu/source/i18n/fmtableimp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/fmtableimp.h rename to deps/icu/source/i18n/fmtableimp.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/format.cpp b/deps/icu/source/i18n/format.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/format.cpp rename to deps/icu/source/i18n/format.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/formatted_string_builder.cpp b/deps/icu/source/i18n/formatted_string_builder.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/formatted_string_builder.cpp rename to deps/icu/source/i18n/formatted_string_builder.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/formatted_string_builder.h b/deps/icu/source/i18n/formatted_string_builder.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/formatted_string_builder.h rename to deps/icu/source/i18n/formatted_string_builder.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/formattedval_impl.h b/deps/icu/source/i18n/formattedval_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/formattedval_impl.h rename to deps/icu/source/i18n/formattedval_impl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/formattedval_iterimpl.cpp b/deps/icu/source/i18n/formattedval_iterimpl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/formattedval_iterimpl.cpp rename to deps/icu/source/i18n/formattedval_iterimpl.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/formattedval_sbimpl.cpp b/deps/icu/source/i18n/formattedval_sbimpl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/formattedval_sbimpl.cpp rename to deps/icu/source/i18n/formattedval_sbimpl.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/formattedvalue.cpp b/deps/icu/source/i18n/formattedvalue.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/formattedvalue.cpp rename to deps/icu/source/i18n/formattedvalue.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/fphdlimp.cpp b/deps/icu/source/i18n/fphdlimp.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/fphdlimp.cpp rename to deps/icu/source/i18n/fphdlimp.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/fphdlimp.h b/deps/icu/source/i18n/fphdlimp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/fphdlimp.h rename to deps/icu/source/i18n/fphdlimp.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/fpositer.cpp b/deps/icu/source/i18n/fpositer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/fpositer.cpp rename to deps/icu/source/i18n/fpositer.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/funcrepl.cpp b/deps/icu/source/i18n/funcrepl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/funcrepl.cpp rename to deps/icu/source/i18n/funcrepl.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/funcrepl.h b/deps/icu/source/i18n/funcrepl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/funcrepl.h rename to deps/icu/source/i18n/funcrepl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/gender.cpp b/deps/icu/source/i18n/gender.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/gender.cpp rename to deps/icu/source/i18n/gender.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/gregocal.cpp b/deps/icu/source/i18n/gregocal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/gregocal.cpp rename to deps/icu/source/i18n/gregocal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/gregoimp.cpp b/deps/icu/source/i18n/gregoimp.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/gregoimp.cpp rename to deps/icu/source/i18n/gregoimp.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/gregoimp.h b/deps/icu/source/i18n/gregoimp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/gregoimp.h rename to deps/icu/source/i18n/gregoimp.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/hebrwcal.cpp b/deps/icu/source/i18n/hebrwcal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/hebrwcal.cpp rename to deps/icu/source/i18n/hebrwcal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/hebrwcal.h b/deps/icu/source/i18n/hebrwcal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/hebrwcal.h rename to deps/icu/source/i18n/hebrwcal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/i18n.rc b/deps/icu/source/i18n/i18n.rc similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/i18n.rc rename to deps/icu/source/i18n/i18n.rc diff --git a/bootstrap/cxx/deps/icu/source/i18n/i18n.vcxproj b/deps/icu/source/i18n/i18n.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/i18n.vcxproj rename to deps/icu/source/i18n/i18n.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/i18n/i18n.vcxproj.filters b/deps/icu/source/i18n/i18n.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/i18n.vcxproj.filters rename to deps/icu/source/i18n/i18n.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/i18n/i18n_uwp.vcxproj b/deps/icu/source/i18n/i18n_uwp.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/i18n_uwp.vcxproj rename to deps/icu/source/i18n/i18n_uwp.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/i18n/indiancal.cpp b/deps/icu/source/i18n/indiancal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/indiancal.cpp rename to deps/icu/source/i18n/indiancal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/indiancal.h b/deps/icu/source/i18n/indiancal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/indiancal.h rename to deps/icu/source/i18n/indiancal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/inputext.cpp b/deps/icu/source/i18n/inputext.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/inputext.cpp rename to deps/icu/source/i18n/inputext.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/inputext.h b/deps/icu/source/i18n/inputext.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/inputext.h rename to deps/icu/source/i18n/inputext.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/islamcal.cpp b/deps/icu/source/i18n/islamcal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/islamcal.cpp rename to deps/icu/source/i18n/islamcal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/islamcal.h b/deps/icu/source/i18n/islamcal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/islamcal.h rename to deps/icu/source/i18n/islamcal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/japancal.cpp b/deps/icu/source/i18n/japancal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/japancal.cpp rename to deps/icu/source/i18n/japancal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/japancal.h b/deps/icu/source/i18n/japancal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/japancal.h rename to deps/icu/source/i18n/japancal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/listformatter.cpp b/deps/icu/source/i18n/listformatter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/listformatter.cpp rename to deps/icu/source/i18n/listformatter.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/measfmt.cpp b/deps/icu/source/i18n/measfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/measfmt.cpp rename to deps/icu/source/i18n/measfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/measunit.cpp b/deps/icu/source/i18n/measunit.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/measunit.cpp rename to deps/icu/source/i18n/measunit.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/measunit_extra.cpp b/deps/icu/source/i18n/measunit_extra.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/measunit_extra.cpp rename to deps/icu/source/i18n/measunit_extra.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/measunit_impl.h b/deps/icu/source/i18n/measunit_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/measunit_impl.h rename to deps/icu/source/i18n/measunit_impl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/measure.cpp b/deps/icu/source/i18n/measure.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/measure.cpp rename to deps/icu/source/i18n/measure.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/msgfmt.cpp b/deps/icu/source/i18n/msgfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/msgfmt.cpp rename to deps/icu/source/i18n/msgfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/msgfmt_impl.h b/deps/icu/source/i18n/msgfmt_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/msgfmt_impl.h rename to deps/icu/source/i18n/msgfmt_impl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/name2uni.cpp b/deps/icu/source/i18n/name2uni.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/name2uni.cpp rename to deps/icu/source/i18n/name2uni.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/name2uni.h b/deps/icu/source/i18n/name2uni.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/name2uni.h rename to deps/icu/source/i18n/name2uni.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/nfrlist.h b/deps/icu/source/i18n/nfrlist.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/nfrlist.h rename to deps/icu/source/i18n/nfrlist.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/nfrs.cpp b/deps/icu/source/i18n/nfrs.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/nfrs.cpp rename to deps/icu/source/i18n/nfrs.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/nfrs.h b/deps/icu/source/i18n/nfrs.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/nfrs.h rename to deps/icu/source/i18n/nfrs.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/nfrule.cpp b/deps/icu/source/i18n/nfrule.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/nfrule.cpp rename to deps/icu/source/i18n/nfrule.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/nfrule.h b/deps/icu/source/i18n/nfrule.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/nfrule.h rename to deps/icu/source/i18n/nfrule.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/nfsubs.cpp b/deps/icu/source/i18n/nfsubs.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/nfsubs.cpp rename to deps/icu/source/i18n/nfsubs.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/nfsubs.h b/deps/icu/source/i18n/nfsubs.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/nfsubs.h rename to deps/icu/source/i18n/nfsubs.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/nortrans.cpp b/deps/icu/source/i18n/nortrans.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/nortrans.cpp rename to deps/icu/source/i18n/nortrans.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/nortrans.h b/deps/icu/source/i18n/nortrans.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/nortrans.h rename to deps/icu/source/i18n/nortrans.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/nultrans.cpp b/deps/icu/source/i18n/nultrans.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/nultrans.cpp rename to deps/icu/source/i18n/nultrans.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/nultrans.h b/deps/icu/source/i18n/nultrans.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/nultrans.h rename to deps/icu/source/i18n/nultrans.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_affixutils.cpp b/deps/icu/source/i18n/number_affixutils.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_affixutils.cpp rename to deps/icu/source/i18n/number_affixutils.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_affixutils.h b/deps/icu/source/i18n/number_affixutils.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_affixutils.h rename to deps/icu/source/i18n/number_affixutils.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_asformat.cpp b/deps/icu/source/i18n/number_asformat.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_asformat.cpp rename to deps/icu/source/i18n/number_asformat.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_asformat.h b/deps/icu/source/i18n/number_asformat.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_asformat.h rename to deps/icu/source/i18n/number_asformat.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_capi.cpp b/deps/icu/source/i18n/number_capi.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_capi.cpp rename to deps/icu/source/i18n/number_capi.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_compact.cpp b/deps/icu/source/i18n/number_compact.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_compact.cpp rename to deps/icu/source/i18n/number_compact.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_compact.h b/deps/icu/source/i18n/number_compact.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_compact.h rename to deps/icu/source/i18n/number_compact.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_currencysymbols.cpp b/deps/icu/source/i18n/number_currencysymbols.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_currencysymbols.cpp rename to deps/icu/source/i18n/number_currencysymbols.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_currencysymbols.h b/deps/icu/source/i18n/number_currencysymbols.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_currencysymbols.h rename to deps/icu/source/i18n/number_currencysymbols.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_decimalquantity.cpp b/deps/icu/source/i18n/number_decimalquantity.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_decimalquantity.cpp rename to deps/icu/source/i18n/number_decimalquantity.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_decimalquantity.h b/deps/icu/source/i18n/number_decimalquantity.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_decimalquantity.h rename to deps/icu/source/i18n/number_decimalquantity.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_decimfmtprops.cpp b/deps/icu/source/i18n/number_decimfmtprops.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_decimfmtprops.cpp rename to deps/icu/source/i18n/number_decimfmtprops.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_decimfmtprops.h b/deps/icu/source/i18n/number_decimfmtprops.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_decimfmtprops.h rename to deps/icu/source/i18n/number_decimfmtprops.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_decnum.h b/deps/icu/source/i18n/number_decnum.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_decnum.h rename to deps/icu/source/i18n/number_decnum.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_fluent.cpp b/deps/icu/source/i18n/number_fluent.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_fluent.cpp rename to deps/icu/source/i18n/number_fluent.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_formatimpl.cpp b/deps/icu/source/i18n/number_formatimpl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_formatimpl.cpp rename to deps/icu/source/i18n/number_formatimpl.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_formatimpl.h b/deps/icu/source/i18n/number_formatimpl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_formatimpl.h rename to deps/icu/source/i18n/number_formatimpl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_grouping.cpp b/deps/icu/source/i18n/number_grouping.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_grouping.cpp rename to deps/icu/source/i18n/number_grouping.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_integerwidth.cpp b/deps/icu/source/i18n/number_integerwidth.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_integerwidth.cpp rename to deps/icu/source/i18n/number_integerwidth.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_longnames.cpp b/deps/icu/source/i18n/number_longnames.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_longnames.cpp rename to deps/icu/source/i18n/number_longnames.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_longnames.h b/deps/icu/source/i18n/number_longnames.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_longnames.h rename to deps/icu/source/i18n/number_longnames.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_mapper.cpp b/deps/icu/source/i18n/number_mapper.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_mapper.cpp rename to deps/icu/source/i18n/number_mapper.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_mapper.h b/deps/icu/source/i18n/number_mapper.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_mapper.h rename to deps/icu/source/i18n/number_mapper.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_microprops.h b/deps/icu/source/i18n/number_microprops.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_microprops.h rename to deps/icu/source/i18n/number_microprops.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_modifiers.cpp b/deps/icu/source/i18n/number_modifiers.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_modifiers.cpp rename to deps/icu/source/i18n/number_modifiers.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_modifiers.h b/deps/icu/source/i18n/number_modifiers.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_modifiers.h rename to deps/icu/source/i18n/number_modifiers.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_multiplier.cpp b/deps/icu/source/i18n/number_multiplier.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_multiplier.cpp rename to deps/icu/source/i18n/number_multiplier.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_multiplier.h b/deps/icu/source/i18n/number_multiplier.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_multiplier.h rename to deps/icu/source/i18n/number_multiplier.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_notation.cpp b/deps/icu/source/i18n/number_notation.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_notation.cpp rename to deps/icu/source/i18n/number_notation.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_output.cpp b/deps/icu/source/i18n/number_output.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_output.cpp rename to deps/icu/source/i18n/number_output.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_padding.cpp b/deps/icu/source/i18n/number_padding.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_padding.cpp rename to deps/icu/source/i18n/number_padding.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_patternmodifier.cpp b/deps/icu/source/i18n/number_patternmodifier.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_patternmodifier.cpp rename to deps/icu/source/i18n/number_patternmodifier.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_patternmodifier.h b/deps/icu/source/i18n/number_patternmodifier.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_patternmodifier.h rename to deps/icu/source/i18n/number_patternmodifier.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_patternstring.cpp b/deps/icu/source/i18n/number_patternstring.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_patternstring.cpp rename to deps/icu/source/i18n/number_patternstring.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_patternstring.h b/deps/icu/source/i18n/number_patternstring.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_patternstring.h rename to deps/icu/source/i18n/number_patternstring.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_rounding.cpp b/deps/icu/source/i18n/number_rounding.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_rounding.cpp rename to deps/icu/source/i18n/number_rounding.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_roundingutils.h b/deps/icu/source/i18n/number_roundingutils.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_roundingutils.h rename to deps/icu/source/i18n/number_roundingutils.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_scientific.cpp b/deps/icu/source/i18n/number_scientific.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_scientific.cpp rename to deps/icu/source/i18n/number_scientific.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_scientific.h b/deps/icu/source/i18n/number_scientific.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_scientific.h rename to deps/icu/source/i18n/number_scientific.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_skeletons.cpp b/deps/icu/source/i18n/number_skeletons.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_skeletons.cpp rename to deps/icu/source/i18n/number_skeletons.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_skeletons.h b/deps/icu/source/i18n/number_skeletons.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_skeletons.h rename to deps/icu/source/i18n/number_skeletons.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_symbolswrapper.cpp b/deps/icu/source/i18n/number_symbolswrapper.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_symbolswrapper.cpp rename to deps/icu/source/i18n/number_symbolswrapper.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_types.h b/deps/icu/source/i18n/number_types.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_types.h rename to deps/icu/source/i18n/number_types.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_usageprefs.cpp b/deps/icu/source/i18n/number_usageprefs.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_usageprefs.cpp rename to deps/icu/source/i18n/number_usageprefs.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_usageprefs.h b/deps/icu/source/i18n/number_usageprefs.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_usageprefs.h rename to deps/icu/source/i18n/number_usageprefs.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_utils.cpp b/deps/icu/source/i18n/number_utils.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_utils.cpp rename to deps/icu/source/i18n/number_utils.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_utils.h b/deps/icu/source/i18n/number_utils.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_utils.h rename to deps/icu/source/i18n/number_utils.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_utypes.h b/deps/icu/source/i18n/number_utypes.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_utypes.h rename to deps/icu/source/i18n/number_utypes.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/numfmt.cpp b/deps/icu/source/i18n/numfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numfmt.cpp rename to deps/icu/source/i18n/numfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_affixes.cpp b/deps/icu/source/i18n/numparse_affixes.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_affixes.cpp rename to deps/icu/source/i18n/numparse_affixes.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_affixes.h b/deps/icu/source/i18n/numparse_affixes.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_affixes.h rename to deps/icu/source/i18n/numparse_affixes.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_compositions.cpp b/deps/icu/source/i18n/numparse_compositions.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_compositions.cpp rename to deps/icu/source/i18n/numparse_compositions.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_compositions.h b/deps/icu/source/i18n/numparse_compositions.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_compositions.h rename to deps/icu/source/i18n/numparse_compositions.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_currency.cpp b/deps/icu/source/i18n/numparse_currency.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_currency.cpp rename to deps/icu/source/i18n/numparse_currency.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_currency.h b/deps/icu/source/i18n/numparse_currency.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_currency.h rename to deps/icu/source/i18n/numparse_currency.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_decimal.cpp b/deps/icu/source/i18n/numparse_decimal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_decimal.cpp rename to deps/icu/source/i18n/numparse_decimal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_decimal.h b/deps/icu/source/i18n/numparse_decimal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_decimal.h rename to deps/icu/source/i18n/numparse_decimal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_impl.cpp b/deps/icu/source/i18n/numparse_impl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_impl.cpp rename to deps/icu/source/i18n/numparse_impl.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_impl.h b/deps/icu/source/i18n/numparse_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_impl.h rename to deps/icu/source/i18n/numparse_impl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_parsednumber.cpp b/deps/icu/source/i18n/numparse_parsednumber.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_parsednumber.cpp rename to deps/icu/source/i18n/numparse_parsednumber.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_scientific.cpp b/deps/icu/source/i18n/numparse_scientific.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_scientific.cpp rename to deps/icu/source/i18n/numparse_scientific.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_scientific.h b/deps/icu/source/i18n/numparse_scientific.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_scientific.h rename to deps/icu/source/i18n/numparse_scientific.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_symbols.cpp b/deps/icu/source/i18n/numparse_symbols.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_symbols.cpp rename to deps/icu/source/i18n/numparse_symbols.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_symbols.h b/deps/icu/source/i18n/numparse_symbols.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_symbols.h rename to deps/icu/source/i18n/numparse_symbols.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_types.h b/deps/icu/source/i18n/numparse_types.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_types.h rename to deps/icu/source/i18n/numparse_types.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_utils.h b/deps/icu/source/i18n/numparse_utils.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_utils.h rename to deps/icu/source/i18n/numparse_utils.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_validators.cpp b/deps/icu/source/i18n/numparse_validators.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_validators.cpp rename to deps/icu/source/i18n/numparse_validators.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_validators.h b/deps/icu/source/i18n/numparse_validators.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_validators.h rename to deps/icu/source/i18n/numparse_validators.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/numrange_capi.cpp b/deps/icu/source/i18n/numrange_capi.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numrange_capi.cpp rename to deps/icu/source/i18n/numrange_capi.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numrange_fluent.cpp b/deps/icu/source/i18n/numrange_fluent.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numrange_fluent.cpp rename to deps/icu/source/i18n/numrange_fluent.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numrange_impl.cpp b/deps/icu/source/i18n/numrange_impl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numrange_impl.cpp rename to deps/icu/source/i18n/numrange_impl.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numrange_impl.h b/deps/icu/source/i18n/numrange_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numrange_impl.h rename to deps/icu/source/i18n/numrange_impl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/numsys.cpp b/deps/icu/source/i18n/numsys.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numsys.cpp rename to deps/icu/source/i18n/numsys.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numsys_impl.h b/deps/icu/source/i18n/numsys_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numsys_impl.h rename to deps/icu/source/i18n/numsys_impl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/olsontz.cpp b/deps/icu/source/i18n/olsontz.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/olsontz.cpp rename to deps/icu/source/i18n/olsontz.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/olsontz.h b/deps/icu/source/i18n/olsontz.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/olsontz.h rename to deps/icu/source/i18n/olsontz.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/persncal.cpp b/deps/icu/source/i18n/persncal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/persncal.cpp rename to deps/icu/source/i18n/persncal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/persncal.h b/deps/icu/source/i18n/persncal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/persncal.h rename to deps/icu/source/i18n/persncal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/pluralranges.cpp b/deps/icu/source/i18n/pluralranges.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/pluralranges.cpp rename to deps/icu/source/i18n/pluralranges.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/pluralranges.h b/deps/icu/source/i18n/pluralranges.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/pluralranges.h rename to deps/icu/source/i18n/pluralranges.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/plurfmt.cpp b/deps/icu/source/i18n/plurfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/plurfmt.cpp rename to deps/icu/source/i18n/plurfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/plurrule.cpp b/deps/icu/source/i18n/plurrule.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/plurrule.cpp rename to deps/icu/source/i18n/plurrule.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/plurrule_impl.h b/deps/icu/source/i18n/plurrule_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/plurrule_impl.h rename to deps/icu/source/i18n/plurrule_impl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/quant.cpp b/deps/icu/source/i18n/quant.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/quant.cpp rename to deps/icu/source/i18n/quant.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/quant.h b/deps/icu/source/i18n/quant.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/quant.h rename to deps/icu/source/i18n/quant.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/quantityformatter.cpp b/deps/icu/source/i18n/quantityformatter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/quantityformatter.cpp rename to deps/icu/source/i18n/quantityformatter.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/quantityformatter.h b/deps/icu/source/i18n/quantityformatter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/quantityformatter.h rename to deps/icu/source/i18n/quantityformatter.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/rbnf.cpp b/deps/icu/source/i18n/rbnf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rbnf.cpp rename to deps/icu/source/i18n/rbnf.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/rbt.cpp b/deps/icu/source/i18n/rbt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rbt.cpp rename to deps/icu/source/i18n/rbt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/rbt.h b/deps/icu/source/i18n/rbt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rbt.h rename to deps/icu/source/i18n/rbt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/rbt_data.cpp b/deps/icu/source/i18n/rbt_data.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rbt_data.cpp rename to deps/icu/source/i18n/rbt_data.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/rbt_data.h b/deps/icu/source/i18n/rbt_data.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rbt_data.h rename to deps/icu/source/i18n/rbt_data.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/rbt_pars.cpp b/deps/icu/source/i18n/rbt_pars.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rbt_pars.cpp rename to deps/icu/source/i18n/rbt_pars.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/rbt_pars.h b/deps/icu/source/i18n/rbt_pars.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rbt_pars.h rename to deps/icu/source/i18n/rbt_pars.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/rbt_rule.cpp b/deps/icu/source/i18n/rbt_rule.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rbt_rule.cpp rename to deps/icu/source/i18n/rbt_rule.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/rbt_rule.h b/deps/icu/source/i18n/rbt_rule.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rbt_rule.h rename to deps/icu/source/i18n/rbt_rule.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/rbt_set.cpp b/deps/icu/source/i18n/rbt_set.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rbt_set.cpp rename to deps/icu/source/i18n/rbt_set.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/rbt_set.h b/deps/icu/source/i18n/rbt_set.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rbt_set.h rename to deps/icu/source/i18n/rbt_set.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/rbtz.cpp b/deps/icu/source/i18n/rbtz.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rbtz.cpp rename to deps/icu/source/i18n/rbtz.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/regexcmp.cpp b/deps/icu/source/i18n/regexcmp.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/regexcmp.cpp rename to deps/icu/source/i18n/regexcmp.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/regexcmp.h b/deps/icu/source/i18n/regexcmp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/regexcmp.h rename to deps/icu/source/i18n/regexcmp.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/regexcst.h b/deps/icu/source/i18n/regexcst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/regexcst.h rename to deps/icu/source/i18n/regexcst.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/regexcst.pl b/deps/icu/source/i18n/regexcst.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/regexcst.pl rename to deps/icu/source/i18n/regexcst.pl diff --git a/bootstrap/cxx/deps/icu/source/i18n/regexcst.txt b/deps/icu/source/i18n/regexcst.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/regexcst.txt rename to deps/icu/source/i18n/regexcst.txt diff --git a/bootstrap/cxx/deps/icu/source/i18n/regeximp.cpp b/deps/icu/source/i18n/regeximp.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/regeximp.cpp rename to deps/icu/source/i18n/regeximp.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/regeximp.h b/deps/icu/source/i18n/regeximp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/regeximp.h rename to deps/icu/source/i18n/regeximp.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/regexst.cpp b/deps/icu/source/i18n/regexst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/regexst.cpp rename to deps/icu/source/i18n/regexst.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/regexst.h b/deps/icu/source/i18n/regexst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/regexst.h rename to deps/icu/source/i18n/regexst.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/regextxt.cpp b/deps/icu/source/i18n/regextxt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/regextxt.cpp rename to deps/icu/source/i18n/regextxt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/regextxt.h b/deps/icu/source/i18n/regextxt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/regextxt.h rename to deps/icu/source/i18n/regextxt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/region.cpp b/deps/icu/source/i18n/region.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/region.cpp rename to deps/icu/source/i18n/region.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/region_impl.h b/deps/icu/source/i18n/region_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/region_impl.h rename to deps/icu/source/i18n/region_impl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/reldatefmt.cpp b/deps/icu/source/i18n/reldatefmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/reldatefmt.cpp rename to deps/icu/source/i18n/reldatefmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/reldtfmt.cpp b/deps/icu/source/i18n/reldtfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/reldtfmt.cpp rename to deps/icu/source/i18n/reldtfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/reldtfmt.h b/deps/icu/source/i18n/reldtfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/reldtfmt.h rename to deps/icu/source/i18n/reldtfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/rematch.cpp b/deps/icu/source/i18n/rematch.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rematch.cpp rename to deps/icu/source/i18n/rematch.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/remtrans.cpp b/deps/icu/source/i18n/remtrans.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/remtrans.cpp rename to deps/icu/source/i18n/remtrans.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/remtrans.h b/deps/icu/source/i18n/remtrans.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/remtrans.h rename to deps/icu/source/i18n/remtrans.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/repattrn.cpp b/deps/icu/source/i18n/repattrn.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/repattrn.cpp rename to deps/icu/source/i18n/repattrn.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/rulebasedcollator.cpp b/deps/icu/source/i18n/rulebasedcollator.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rulebasedcollator.cpp rename to deps/icu/source/i18n/rulebasedcollator.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/scientificnumberformatter.cpp b/deps/icu/source/i18n/scientificnumberformatter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/scientificnumberformatter.cpp rename to deps/icu/source/i18n/scientificnumberformatter.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/scriptset.cpp b/deps/icu/source/i18n/scriptset.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/scriptset.cpp rename to deps/icu/source/i18n/scriptset.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/scriptset.h b/deps/icu/source/i18n/scriptset.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/scriptset.h rename to deps/icu/source/i18n/scriptset.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/search.cpp b/deps/icu/source/i18n/search.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/search.cpp rename to deps/icu/source/i18n/search.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/selfmt.cpp b/deps/icu/source/i18n/selfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/selfmt.cpp rename to deps/icu/source/i18n/selfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/selfmtimpl.h b/deps/icu/source/i18n/selfmtimpl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/selfmtimpl.h rename to deps/icu/source/i18n/selfmtimpl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/sharedbreakiterator.cpp b/deps/icu/source/i18n/sharedbreakiterator.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/sharedbreakiterator.cpp rename to deps/icu/source/i18n/sharedbreakiterator.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/sharedbreakiterator.h b/deps/icu/source/i18n/sharedbreakiterator.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/sharedbreakiterator.h rename to deps/icu/source/i18n/sharedbreakiterator.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/sharedcalendar.h b/deps/icu/source/i18n/sharedcalendar.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/sharedcalendar.h rename to deps/icu/source/i18n/sharedcalendar.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/shareddateformatsymbols.h b/deps/icu/source/i18n/shareddateformatsymbols.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/shareddateformatsymbols.h rename to deps/icu/source/i18n/shareddateformatsymbols.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/sharednumberformat.h b/deps/icu/source/i18n/sharednumberformat.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/sharednumberformat.h rename to deps/icu/source/i18n/sharednumberformat.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/sharedpluralrules.h b/deps/icu/source/i18n/sharedpluralrules.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/sharedpluralrules.h rename to deps/icu/source/i18n/sharedpluralrules.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/simpletz.cpp b/deps/icu/source/i18n/simpletz.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/simpletz.cpp rename to deps/icu/source/i18n/simpletz.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/smpdtfmt.cpp b/deps/icu/source/i18n/smpdtfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/smpdtfmt.cpp rename to deps/icu/source/i18n/smpdtfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/smpdtfst.cpp b/deps/icu/source/i18n/smpdtfst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/smpdtfst.cpp rename to deps/icu/source/i18n/smpdtfst.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/smpdtfst.h b/deps/icu/source/i18n/smpdtfst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/smpdtfst.h rename to deps/icu/source/i18n/smpdtfst.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/sortkey.cpp b/deps/icu/source/i18n/sortkey.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/sortkey.cpp rename to deps/icu/source/i18n/sortkey.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/sources.txt b/deps/icu/source/i18n/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/sources.txt rename to deps/icu/source/i18n/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/i18n/standardplural.cpp b/deps/icu/source/i18n/standardplural.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/standardplural.cpp rename to deps/icu/source/i18n/standardplural.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/standardplural.h b/deps/icu/source/i18n/standardplural.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/standardplural.h rename to deps/icu/source/i18n/standardplural.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/string_segment.cpp b/deps/icu/source/i18n/string_segment.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/string_segment.cpp rename to deps/icu/source/i18n/string_segment.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/string_segment.h b/deps/icu/source/i18n/string_segment.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/string_segment.h rename to deps/icu/source/i18n/string_segment.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/strmatch.cpp b/deps/icu/source/i18n/strmatch.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/strmatch.cpp rename to deps/icu/source/i18n/strmatch.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/strmatch.h b/deps/icu/source/i18n/strmatch.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/strmatch.h rename to deps/icu/source/i18n/strmatch.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/strrepl.cpp b/deps/icu/source/i18n/strrepl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/strrepl.cpp rename to deps/icu/source/i18n/strrepl.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/strrepl.h b/deps/icu/source/i18n/strrepl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/strrepl.h rename to deps/icu/source/i18n/strrepl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/stsearch.cpp b/deps/icu/source/i18n/stsearch.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/stsearch.cpp rename to deps/icu/source/i18n/stsearch.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/taiwncal.cpp b/deps/icu/source/i18n/taiwncal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/taiwncal.cpp rename to deps/icu/source/i18n/taiwncal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/taiwncal.h b/deps/icu/source/i18n/taiwncal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/taiwncal.h rename to deps/icu/source/i18n/taiwncal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/timezone.cpp b/deps/icu/source/i18n/timezone.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/timezone.cpp rename to deps/icu/source/i18n/timezone.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/titletrn.cpp b/deps/icu/source/i18n/titletrn.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/titletrn.cpp rename to deps/icu/source/i18n/titletrn.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/titletrn.h b/deps/icu/source/i18n/titletrn.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/titletrn.h rename to deps/icu/source/i18n/titletrn.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/tmunit.cpp b/deps/icu/source/i18n/tmunit.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tmunit.cpp rename to deps/icu/source/i18n/tmunit.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/tmutamt.cpp b/deps/icu/source/i18n/tmutamt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tmutamt.cpp rename to deps/icu/source/i18n/tmutamt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/tmutfmt.cpp b/deps/icu/source/i18n/tmutfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tmutfmt.cpp rename to deps/icu/source/i18n/tmutfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/tolowtrn.cpp b/deps/icu/source/i18n/tolowtrn.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tolowtrn.cpp rename to deps/icu/source/i18n/tolowtrn.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/tolowtrn.h b/deps/icu/source/i18n/tolowtrn.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tolowtrn.h rename to deps/icu/source/i18n/tolowtrn.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/toupptrn.cpp b/deps/icu/source/i18n/toupptrn.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/toupptrn.cpp rename to deps/icu/source/i18n/toupptrn.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/toupptrn.h b/deps/icu/source/i18n/toupptrn.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/toupptrn.h rename to deps/icu/source/i18n/toupptrn.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/translit.cpp b/deps/icu/source/i18n/translit.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/translit.cpp rename to deps/icu/source/i18n/translit.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/transreg.cpp b/deps/icu/source/i18n/transreg.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/transreg.cpp rename to deps/icu/source/i18n/transreg.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/transreg.h b/deps/icu/source/i18n/transreg.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/transreg.h rename to deps/icu/source/i18n/transreg.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/tridpars.cpp b/deps/icu/source/i18n/tridpars.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tridpars.cpp rename to deps/icu/source/i18n/tridpars.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/tridpars.h b/deps/icu/source/i18n/tridpars.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tridpars.h rename to deps/icu/source/i18n/tridpars.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/tzfmt.cpp b/deps/icu/source/i18n/tzfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tzfmt.cpp rename to deps/icu/source/i18n/tzfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/tzgnames.cpp b/deps/icu/source/i18n/tzgnames.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tzgnames.cpp rename to deps/icu/source/i18n/tzgnames.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/tzgnames.h b/deps/icu/source/i18n/tzgnames.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tzgnames.h rename to deps/icu/source/i18n/tzgnames.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/tznames.cpp b/deps/icu/source/i18n/tznames.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tznames.cpp rename to deps/icu/source/i18n/tznames.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/tznames_impl.cpp b/deps/icu/source/i18n/tznames_impl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tznames_impl.cpp rename to deps/icu/source/i18n/tznames_impl.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/tznames_impl.h b/deps/icu/source/i18n/tznames_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tznames_impl.h rename to deps/icu/source/i18n/tznames_impl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/tzrule.cpp b/deps/icu/source/i18n/tzrule.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tzrule.cpp rename to deps/icu/source/i18n/tzrule.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/tztrans.cpp b/deps/icu/source/i18n/tztrans.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tztrans.cpp rename to deps/icu/source/i18n/tztrans.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/ucal.cpp b/deps/icu/source/i18n/ucal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ucal.cpp rename to deps/icu/source/i18n/ucal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/ucln_in.cpp b/deps/icu/source/i18n/ucln_in.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ucln_in.cpp rename to deps/icu/source/i18n/ucln_in.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/ucln_in.h b/deps/icu/source/i18n/ucln_in.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ucln_in.h rename to deps/icu/source/i18n/ucln_in.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/ucol.cpp b/deps/icu/source/i18n/ucol.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ucol.cpp rename to deps/icu/source/i18n/ucol.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/ucol_imp.h b/deps/icu/source/i18n/ucol_imp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ucol_imp.h rename to deps/icu/source/i18n/ucol_imp.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/ucol_res.cpp b/deps/icu/source/i18n/ucol_res.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ucol_res.cpp rename to deps/icu/source/i18n/ucol_res.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/ucol_sit.cpp b/deps/icu/source/i18n/ucol_sit.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ucol_sit.cpp rename to deps/icu/source/i18n/ucol_sit.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/ucoleitr.cpp b/deps/icu/source/i18n/ucoleitr.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ucoleitr.cpp rename to deps/icu/source/i18n/ucoleitr.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/ucsdet.cpp b/deps/icu/source/i18n/ucsdet.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ucsdet.cpp rename to deps/icu/source/i18n/ucsdet.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/udat.cpp b/deps/icu/source/i18n/udat.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/udat.cpp rename to deps/icu/source/i18n/udat.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/udateintervalformat.cpp b/deps/icu/source/i18n/udateintervalformat.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/udateintervalformat.cpp rename to deps/icu/source/i18n/udateintervalformat.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/udatpg.cpp b/deps/icu/source/i18n/udatpg.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/udatpg.cpp rename to deps/icu/source/i18n/udatpg.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/ufieldpositer.cpp b/deps/icu/source/i18n/ufieldpositer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ufieldpositer.cpp rename to deps/icu/source/i18n/ufieldpositer.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/uitercollationiterator.cpp b/deps/icu/source/i18n/uitercollationiterator.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/uitercollationiterator.cpp rename to deps/icu/source/i18n/uitercollationiterator.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/uitercollationiterator.h b/deps/icu/source/i18n/uitercollationiterator.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/uitercollationiterator.h rename to deps/icu/source/i18n/uitercollationiterator.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/ulistformatter.cpp b/deps/icu/source/i18n/ulistformatter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ulistformatter.cpp rename to deps/icu/source/i18n/ulistformatter.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/ulocdata.cpp b/deps/icu/source/i18n/ulocdata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ulocdata.cpp rename to deps/icu/source/i18n/ulocdata.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/umsg.cpp b/deps/icu/source/i18n/umsg.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/umsg.cpp rename to deps/icu/source/i18n/umsg.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/umsg_imp.h b/deps/icu/source/i18n/umsg_imp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/umsg_imp.h rename to deps/icu/source/i18n/umsg_imp.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unesctrn.cpp b/deps/icu/source/i18n/unesctrn.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unesctrn.cpp rename to deps/icu/source/i18n/unesctrn.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/unesctrn.h b/deps/icu/source/i18n/unesctrn.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unesctrn.h rename to deps/icu/source/i18n/unesctrn.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/uni2name.cpp b/deps/icu/source/i18n/uni2name.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/uni2name.cpp rename to deps/icu/source/i18n/uni2name.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/uni2name.h b/deps/icu/source/i18n/uni2name.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/uni2name.h rename to deps/icu/source/i18n/uni2name.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/alphaindex.h b/deps/icu/source/i18n/unicode/alphaindex.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/alphaindex.h rename to deps/icu/source/i18n/unicode/alphaindex.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/basictz.h b/deps/icu/source/i18n/unicode/basictz.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/basictz.h rename to deps/icu/source/i18n/unicode/basictz.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/calendar.h b/deps/icu/source/i18n/unicode/calendar.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/calendar.h rename to deps/icu/source/i18n/unicode/calendar.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/choicfmt.h b/deps/icu/source/i18n/unicode/choicfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/choicfmt.h rename to deps/icu/source/i18n/unicode/choicfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/coleitr.h b/deps/icu/source/i18n/unicode/coleitr.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/coleitr.h rename to deps/icu/source/i18n/unicode/coleitr.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/coll.h b/deps/icu/source/i18n/unicode/coll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/coll.h rename to deps/icu/source/i18n/unicode/coll.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/compactdecimalformat.h b/deps/icu/source/i18n/unicode/compactdecimalformat.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/compactdecimalformat.h rename to deps/icu/source/i18n/unicode/compactdecimalformat.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/curramt.h b/deps/icu/source/i18n/unicode/curramt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/curramt.h rename to deps/icu/source/i18n/unicode/curramt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/currpinf.h b/deps/icu/source/i18n/unicode/currpinf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/currpinf.h rename to deps/icu/source/i18n/unicode/currpinf.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/currunit.h b/deps/icu/source/i18n/unicode/currunit.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/currunit.h rename to deps/icu/source/i18n/unicode/currunit.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/datefmt.h b/deps/icu/source/i18n/unicode/datefmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/datefmt.h rename to deps/icu/source/i18n/unicode/datefmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/dcfmtsym.h b/deps/icu/source/i18n/unicode/dcfmtsym.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/dcfmtsym.h rename to deps/icu/source/i18n/unicode/dcfmtsym.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/decimfmt.h b/deps/icu/source/i18n/unicode/decimfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/decimfmt.h rename to deps/icu/source/i18n/unicode/decimfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/dtfmtsym.h b/deps/icu/source/i18n/unicode/dtfmtsym.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/dtfmtsym.h rename to deps/icu/source/i18n/unicode/dtfmtsym.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/dtitvfmt.h b/deps/icu/source/i18n/unicode/dtitvfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/dtitvfmt.h rename to deps/icu/source/i18n/unicode/dtitvfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/dtitvinf.h b/deps/icu/source/i18n/unicode/dtitvinf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/dtitvinf.h rename to deps/icu/source/i18n/unicode/dtitvinf.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/dtptngen.h b/deps/icu/source/i18n/unicode/dtptngen.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/dtptngen.h rename to deps/icu/source/i18n/unicode/dtptngen.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/dtrule.h b/deps/icu/source/i18n/unicode/dtrule.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/dtrule.h rename to deps/icu/source/i18n/unicode/dtrule.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/fieldpos.h b/deps/icu/source/i18n/unicode/fieldpos.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/fieldpos.h rename to deps/icu/source/i18n/unicode/fieldpos.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/fmtable.h b/deps/icu/source/i18n/unicode/fmtable.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/fmtable.h rename to deps/icu/source/i18n/unicode/fmtable.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/format.h b/deps/icu/source/i18n/unicode/format.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/format.h rename to deps/icu/source/i18n/unicode/format.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/formattedvalue.h b/deps/icu/source/i18n/unicode/formattedvalue.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/formattedvalue.h rename to deps/icu/source/i18n/unicode/formattedvalue.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/fpositer.h b/deps/icu/source/i18n/unicode/fpositer.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/fpositer.h rename to deps/icu/source/i18n/unicode/fpositer.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/gender.h b/deps/icu/source/i18n/unicode/gender.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/gender.h rename to deps/icu/source/i18n/unicode/gender.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/gregocal.h b/deps/icu/source/i18n/unicode/gregocal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/gregocal.h rename to deps/icu/source/i18n/unicode/gregocal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/listformatter.h b/deps/icu/source/i18n/unicode/listformatter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/listformatter.h rename to deps/icu/source/i18n/unicode/listformatter.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/measfmt.h b/deps/icu/source/i18n/unicode/measfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/measfmt.h rename to deps/icu/source/i18n/unicode/measfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/measunit.h b/deps/icu/source/i18n/unicode/measunit.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/measunit.h rename to deps/icu/source/i18n/unicode/measunit.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/measure.h b/deps/icu/source/i18n/unicode/measure.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/measure.h rename to deps/icu/source/i18n/unicode/measure.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/msgfmt.h b/deps/icu/source/i18n/unicode/msgfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/msgfmt.h rename to deps/icu/source/i18n/unicode/msgfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/nounit.h b/deps/icu/source/i18n/unicode/nounit.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/nounit.h rename to deps/icu/source/i18n/unicode/nounit.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/numberformatter.h b/deps/icu/source/i18n/unicode/numberformatter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/numberformatter.h rename to deps/icu/source/i18n/unicode/numberformatter.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/numberrangeformatter.h b/deps/icu/source/i18n/unicode/numberrangeformatter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/numberrangeformatter.h rename to deps/icu/source/i18n/unicode/numberrangeformatter.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/numfmt.h b/deps/icu/source/i18n/unicode/numfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/numfmt.h rename to deps/icu/source/i18n/unicode/numfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/numsys.h b/deps/icu/source/i18n/unicode/numsys.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/numsys.h rename to deps/icu/source/i18n/unicode/numsys.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/plurfmt.h b/deps/icu/source/i18n/unicode/plurfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/plurfmt.h rename to deps/icu/source/i18n/unicode/plurfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/plurrule.h b/deps/icu/source/i18n/unicode/plurrule.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/plurrule.h rename to deps/icu/source/i18n/unicode/plurrule.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/rbnf.h b/deps/icu/source/i18n/unicode/rbnf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/rbnf.h rename to deps/icu/source/i18n/unicode/rbnf.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/rbtz.h b/deps/icu/source/i18n/unicode/rbtz.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/rbtz.h rename to deps/icu/source/i18n/unicode/rbtz.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/regex.h b/deps/icu/source/i18n/unicode/regex.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/regex.h rename to deps/icu/source/i18n/unicode/regex.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/region.h b/deps/icu/source/i18n/unicode/region.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/region.h rename to deps/icu/source/i18n/unicode/region.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/reldatefmt.h b/deps/icu/source/i18n/unicode/reldatefmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/reldatefmt.h rename to deps/icu/source/i18n/unicode/reldatefmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/scientificnumberformatter.h b/deps/icu/source/i18n/unicode/scientificnumberformatter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/scientificnumberformatter.h rename to deps/icu/source/i18n/unicode/scientificnumberformatter.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/search.h b/deps/icu/source/i18n/unicode/search.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/search.h rename to deps/icu/source/i18n/unicode/search.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/selfmt.h b/deps/icu/source/i18n/unicode/selfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/selfmt.h rename to deps/icu/source/i18n/unicode/selfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/simpletz.h b/deps/icu/source/i18n/unicode/simpletz.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/simpletz.h rename to deps/icu/source/i18n/unicode/simpletz.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/smpdtfmt.h b/deps/icu/source/i18n/unicode/smpdtfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/smpdtfmt.h rename to deps/icu/source/i18n/unicode/smpdtfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/sortkey.h b/deps/icu/source/i18n/unicode/sortkey.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/sortkey.h rename to deps/icu/source/i18n/unicode/sortkey.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/stsearch.h b/deps/icu/source/i18n/unicode/stsearch.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/stsearch.h rename to deps/icu/source/i18n/unicode/stsearch.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/tblcoll.h b/deps/icu/source/i18n/unicode/tblcoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/tblcoll.h rename to deps/icu/source/i18n/unicode/tblcoll.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/timezone.h b/deps/icu/source/i18n/unicode/timezone.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/timezone.h rename to deps/icu/source/i18n/unicode/timezone.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/tmunit.h b/deps/icu/source/i18n/unicode/tmunit.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/tmunit.h rename to deps/icu/source/i18n/unicode/tmunit.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/tmutamt.h b/deps/icu/source/i18n/unicode/tmutamt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/tmutamt.h rename to deps/icu/source/i18n/unicode/tmutamt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/tmutfmt.h b/deps/icu/source/i18n/unicode/tmutfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/tmutfmt.h rename to deps/icu/source/i18n/unicode/tmutfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/translit.h b/deps/icu/source/i18n/unicode/translit.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/translit.h rename to deps/icu/source/i18n/unicode/translit.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/tzfmt.h b/deps/icu/source/i18n/unicode/tzfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/tzfmt.h rename to deps/icu/source/i18n/unicode/tzfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/tznames.h b/deps/icu/source/i18n/unicode/tznames.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/tznames.h rename to deps/icu/source/i18n/unicode/tznames.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/tzrule.h b/deps/icu/source/i18n/unicode/tzrule.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/tzrule.h rename to deps/icu/source/i18n/unicode/tzrule.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/tztrans.h b/deps/icu/source/i18n/unicode/tztrans.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/tztrans.h rename to deps/icu/source/i18n/unicode/tztrans.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/ucal.h b/deps/icu/source/i18n/unicode/ucal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/ucal.h rename to deps/icu/source/i18n/unicode/ucal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/ucol.h b/deps/icu/source/i18n/unicode/ucol.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/ucol.h rename to deps/icu/source/i18n/unicode/ucol.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/ucoleitr.h b/deps/icu/source/i18n/unicode/ucoleitr.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/ucoleitr.h rename to deps/icu/source/i18n/unicode/ucoleitr.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/ucsdet.h b/deps/icu/source/i18n/unicode/ucsdet.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/ucsdet.h rename to deps/icu/source/i18n/unicode/ucsdet.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/udat.h b/deps/icu/source/i18n/unicode/udat.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/udat.h rename to deps/icu/source/i18n/unicode/udat.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/udateintervalformat.h b/deps/icu/source/i18n/unicode/udateintervalformat.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/udateintervalformat.h rename to deps/icu/source/i18n/unicode/udateintervalformat.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/udatpg.h b/deps/icu/source/i18n/unicode/udatpg.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/udatpg.h rename to deps/icu/source/i18n/unicode/udatpg.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/ufieldpositer.h b/deps/icu/source/i18n/unicode/ufieldpositer.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/ufieldpositer.h rename to deps/icu/source/i18n/unicode/ufieldpositer.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/uformattable.h b/deps/icu/source/i18n/unicode/uformattable.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/uformattable.h rename to deps/icu/source/i18n/unicode/uformattable.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/uformattedvalue.h b/deps/icu/source/i18n/unicode/uformattedvalue.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/uformattedvalue.h rename to deps/icu/source/i18n/unicode/uformattedvalue.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/ugender.h b/deps/icu/source/i18n/unicode/ugender.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/ugender.h rename to deps/icu/source/i18n/unicode/ugender.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/ulistformatter.h b/deps/icu/source/i18n/unicode/ulistformatter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/ulistformatter.h rename to deps/icu/source/i18n/unicode/ulistformatter.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/ulocdata.h b/deps/icu/source/i18n/unicode/ulocdata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/ulocdata.h rename to deps/icu/source/i18n/unicode/ulocdata.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/umsg.h b/deps/icu/source/i18n/unicode/umsg.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/umsg.h rename to deps/icu/source/i18n/unicode/umsg.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/unirepl.h b/deps/icu/source/i18n/unicode/unirepl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/unirepl.h rename to deps/icu/source/i18n/unicode/unirepl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/unounclass.h b/deps/icu/source/i18n/unicode/unounclass.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/unounclass.h rename to deps/icu/source/i18n/unicode/unounclass.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/unum.h b/deps/icu/source/i18n/unicode/unum.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/unum.h rename to deps/icu/source/i18n/unicode/unum.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/unumberformatter.h b/deps/icu/source/i18n/unicode/unumberformatter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/unumberformatter.h rename to deps/icu/source/i18n/unicode/unumberformatter.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/unumberrangeformatter.h b/deps/icu/source/i18n/unicode/unumberrangeformatter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/unumberrangeformatter.h rename to deps/icu/source/i18n/unicode/unumberrangeformatter.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/unumsys.h b/deps/icu/source/i18n/unicode/unumsys.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/unumsys.h rename to deps/icu/source/i18n/unicode/unumsys.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/upluralrules.h b/deps/icu/source/i18n/unicode/upluralrules.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/upluralrules.h rename to deps/icu/source/i18n/unicode/upluralrules.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/uregex.h b/deps/icu/source/i18n/unicode/uregex.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/uregex.h rename to deps/icu/source/i18n/unicode/uregex.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/uregion.h b/deps/icu/source/i18n/unicode/uregion.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/uregion.h rename to deps/icu/source/i18n/unicode/uregion.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/ureldatefmt.h b/deps/icu/source/i18n/unicode/ureldatefmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/ureldatefmt.h rename to deps/icu/source/i18n/unicode/ureldatefmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/usearch.h b/deps/icu/source/i18n/unicode/usearch.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/usearch.h rename to deps/icu/source/i18n/unicode/usearch.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/uspoof.h b/deps/icu/source/i18n/unicode/uspoof.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/uspoof.h rename to deps/icu/source/i18n/unicode/uspoof.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/utmscale.h b/deps/icu/source/i18n/unicode/utmscale.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/utmscale.h rename to deps/icu/source/i18n/unicode/utmscale.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/utrans.h b/deps/icu/source/i18n/unicode/utrans.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/utrans.h rename to deps/icu/source/i18n/unicode/utrans.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/vtzone.h b/deps/icu/source/i18n/unicode/vtzone.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/vtzone.h rename to deps/icu/source/i18n/unicode/vtzone.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/units_complexconverter.cpp b/deps/icu/source/i18n/units_complexconverter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/units_complexconverter.cpp rename to deps/icu/source/i18n/units_complexconverter.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/units_complexconverter.h b/deps/icu/source/i18n/units_complexconverter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/units_complexconverter.h rename to deps/icu/source/i18n/units_complexconverter.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/units_converter.cpp b/deps/icu/source/i18n/units_converter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/units_converter.cpp rename to deps/icu/source/i18n/units_converter.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/units_converter.h b/deps/icu/source/i18n/units_converter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/units_converter.h rename to deps/icu/source/i18n/units_converter.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/units_data.cpp b/deps/icu/source/i18n/units_data.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/units_data.cpp rename to deps/icu/source/i18n/units_data.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/units_data.h b/deps/icu/source/i18n/units_data.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/units_data.h rename to deps/icu/source/i18n/units_data.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/units_router.cpp b/deps/icu/source/i18n/units_router.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/units_router.cpp rename to deps/icu/source/i18n/units_router.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/units_router.h b/deps/icu/source/i18n/units_router.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/units_router.h rename to deps/icu/source/i18n/units_router.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unum.cpp b/deps/icu/source/i18n/unum.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unum.cpp rename to deps/icu/source/i18n/unum.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/unumsys.cpp b/deps/icu/source/i18n/unumsys.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unumsys.cpp rename to deps/icu/source/i18n/unumsys.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/upluralrules.cpp b/deps/icu/source/i18n/upluralrules.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/upluralrules.cpp rename to deps/icu/source/i18n/upluralrules.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/uregex.cpp b/deps/icu/source/i18n/uregex.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/uregex.cpp rename to deps/icu/source/i18n/uregex.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/uregexc.cpp b/deps/icu/source/i18n/uregexc.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/uregexc.cpp rename to deps/icu/source/i18n/uregexc.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/uregion.cpp b/deps/icu/source/i18n/uregion.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/uregion.cpp rename to deps/icu/source/i18n/uregion.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/usearch.cpp b/deps/icu/source/i18n/usearch.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/usearch.cpp rename to deps/icu/source/i18n/usearch.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/uspoof.cpp b/deps/icu/source/i18n/uspoof.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/uspoof.cpp rename to deps/icu/source/i18n/uspoof.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/uspoof_build.cpp b/deps/icu/source/i18n/uspoof_build.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/uspoof_build.cpp rename to deps/icu/source/i18n/uspoof_build.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/uspoof_conf.cpp b/deps/icu/source/i18n/uspoof_conf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/uspoof_conf.cpp rename to deps/icu/source/i18n/uspoof_conf.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/uspoof_conf.h b/deps/icu/source/i18n/uspoof_conf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/uspoof_conf.h rename to deps/icu/source/i18n/uspoof_conf.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/uspoof_impl.cpp b/deps/icu/source/i18n/uspoof_impl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/uspoof_impl.cpp rename to deps/icu/source/i18n/uspoof_impl.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/uspoof_impl.h b/deps/icu/source/i18n/uspoof_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/uspoof_impl.h rename to deps/icu/source/i18n/uspoof_impl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/usrchimp.h b/deps/icu/source/i18n/usrchimp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/usrchimp.h rename to deps/icu/source/i18n/usrchimp.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/utf16collationiterator.cpp b/deps/icu/source/i18n/utf16collationiterator.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/utf16collationiterator.cpp rename to deps/icu/source/i18n/utf16collationiterator.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/utf16collationiterator.h b/deps/icu/source/i18n/utf16collationiterator.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/utf16collationiterator.h rename to deps/icu/source/i18n/utf16collationiterator.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/utf8collationiterator.cpp b/deps/icu/source/i18n/utf8collationiterator.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/utf8collationiterator.cpp rename to deps/icu/source/i18n/utf8collationiterator.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/utf8collationiterator.h b/deps/icu/source/i18n/utf8collationiterator.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/utf8collationiterator.h rename to deps/icu/source/i18n/utf8collationiterator.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/utmscale.cpp b/deps/icu/source/i18n/utmscale.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/utmscale.cpp rename to deps/icu/source/i18n/utmscale.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/utrans.cpp b/deps/icu/source/i18n/utrans.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/utrans.cpp rename to deps/icu/source/i18n/utrans.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/vtzone.cpp b/deps/icu/source/i18n/vtzone.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/vtzone.cpp rename to deps/icu/source/i18n/vtzone.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/vzone.cpp b/deps/icu/source/i18n/vzone.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/vzone.cpp rename to deps/icu/source/i18n/vzone.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/vzone.h b/deps/icu/source/i18n/vzone.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/vzone.h rename to deps/icu/source/i18n/vzone.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/windtfmt.cpp b/deps/icu/source/i18n/windtfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/windtfmt.cpp rename to deps/icu/source/i18n/windtfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/windtfmt.h b/deps/icu/source/i18n/windtfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/windtfmt.h rename to deps/icu/source/i18n/windtfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/winnmfmt.cpp b/deps/icu/source/i18n/winnmfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/winnmfmt.cpp rename to deps/icu/source/i18n/winnmfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/winnmfmt.h b/deps/icu/source/i18n/winnmfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/winnmfmt.h rename to deps/icu/source/i18n/winnmfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/wintzimpl.cpp b/deps/icu/source/i18n/wintzimpl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/wintzimpl.cpp rename to deps/icu/source/i18n/wintzimpl.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/wintzimpl.h b/deps/icu/source/i18n/wintzimpl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/wintzimpl.h rename to deps/icu/source/i18n/wintzimpl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/zonemeta.cpp b/deps/icu/source/i18n/zonemeta.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/zonemeta.cpp rename to deps/icu/source/i18n/zonemeta.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/zonemeta.h b/deps/icu/source/i18n/zonemeta.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/zonemeta.h rename to deps/icu/source/i18n/zonemeta.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/zrule.cpp b/deps/icu/source/i18n/zrule.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/zrule.cpp rename to deps/icu/source/i18n/zrule.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/zrule.h b/deps/icu/source/i18n/zrule.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/zrule.h rename to deps/icu/source/i18n/zrule.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/ztrans.cpp b/deps/icu/source/i18n/ztrans.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ztrans.cpp rename to deps/icu/source/i18n/ztrans.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/ztrans.h b/deps/icu/source/i18n/ztrans.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ztrans.h rename to deps/icu/source/i18n/ztrans.h diff --git a/bootstrap/cxx/deps/icu/source/icudefs.mk.in b/deps/icu/source/icudefs.mk.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/icudefs.mk.in rename to deps/icu/source/icudefs.mk.in diff --git a/bootstrap/cxx/deps/icu/source/install-sh b/deps/icu/source/install-sh similarity index 100% rename from bootstrap/cxx/deps/icu/source/install-sh rename to deps/icu/source/install-sh diff --git a/bootstrap/cxx/deps/icu/source/io/Makefile.in b/deps/icu/source/io/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/Makefile.in rename to deps/icu/source/io/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/io/io.rc b/deps/icu/source/io/io.rc similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/io.rc rename to deps/icu/source/io/io.rc diff --git a/bootstrap/cxx/deps/icu/source/io/io.vcxproj b/deps/icu/source/io/io.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/io.vcxproj rename to deps/icu/source/io/io.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/io/io.vcxproj.filters b/deps/icu/source/io/io.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/io.vcxproj.filters rename to deps/icu/source/io/io.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/io/locbund.cpp b/deps/icu/source/io/locbund.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/locbund.cpp rename to deps/icu/source/io/locbund.cpp diff --git a/bootstrap/cxx/deps/icu/source/io/locbund.h b/deps/icu/source/io/locbund.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/locbund.h rename to deps/icu/source/io/locbund.h diff --git a/bootstrap/cxx/deps/icu/source/io/sources.txt b/deps/icu/source/io/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/sources.txt rename to deps/icu/source/io/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/io/sprintf.cpp b/deps/icu/source/io/sprintf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/sprintf.cpp rename to deps/icu/source/io/sprintf.cpp diff --git a/bootstrap/cxx/deps/icu/source/io/sscanf.cpp b/deps/icu/source/io/sscanf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/sscanf.cpp rename to deps/icu/source/io/sscanf.cpp diff --git a/bootstrap/cxx/deps/icu/source/io/ucln_io.cpp b/deps/icu/source/io/ucln_io.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/ucln_io.cpp rename to deps/icu/source/io/ucln_io.cpp diff --git a/bootstrap/cxx/deps/icu/source/io/ucln_io.h b/deps/icu/source/io/ucln_io.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/ucln_io.h rename to deps/icu/source/io/ucln_io.h diff --git a/bootstrap/cxx/deps/icu/source/io/ufile.cpp b/deps/icu/source/io/ufile.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/ufile.cpp rename to deps/icu/source/io/ufile.cpp diff --git a/bootstrap/cxx/deps/icu/source/io/ufile.h b/deps/icu/source/io/ufile.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/ufile.h rename to deps/icu/source/io/ufile.h diff --git a/bootstrap/cxx/deps/icu/source/io/ufmt_cmn.cpp b/deps/icu/source/io/ufmt_cmn.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/ufmt_cmn.cpp rename to deps/icu/source/io/ufmt_cmn.cpp diff --git a/bootstrap/cxx/deps/icu/source/io/ufmt_cmn.h b/deps/icu/source/io/ufmt_cmn.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/ufmt_cmn.h rename to deps/icu/source/io/ufmt_cmn.h diff --git a/bootstrap/cxx/deps/icu/source/io/unicode/ustdio.h b/deps/icu/source/io/unicode/ustdio.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/unicode/ustdio.h rename to deps/icu/source/io/unicode/ustdio.h diff --git a/bootstrap/cxx/deps/icu/source/io/unicode/ustream.h b/deps/icu/source/io/unicode/ustream.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/unicode/ustream.h rename to deps/icu/source/io/unicode/ustream.h diff --git a/bootstrap/cxx/deps/icu/source/io/uprintf.cpp b/deps/icu/source/io/uprintf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/uprintf.cpp rename to deps/icu/source/io/uprintf.cpp diff --git a/bootstrap/cxx/deps/icu/source/io/uprintf.h b/deps/icu/source/io/uprintf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/uprintf.h rename to deps/icu/source/io/uprintf.h diff --git a/bootstrap/cxx/deps/icu/source/io/uprntf_p.cpp b/deps/icu/source/io/uprntf_p.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/uprntf_p.cpp rename to deps/icu/source/io/uprntf_p.cpp diff --git a/bootstrap/cxx/deps/icu/source/io/uscanf.cpp b/deps/icu/source/io/uscanf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/uscanf.cpp rename to deps/icu/source/io/uscanf.cpp diff --git a/bootstrap/cxx/deps/icu/source/io/uscanf.h b/deps/icu/source/io/uscanf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/uscanf.h rename to deps/icu/source/io/uscanf.h diff --git a/bootstrap/cxx/deps/icu/source/io/uscanf_p.cpp b/deps/icu/source/io/uscanf_p.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/uscanf_p.cpp rename to deps/icu/source/io/uscanf_p.cpp diff --git a/bootstrap/cxx/deps/icu/source/io/ustdio.cpp b/deps/icu/source/io/ustdio.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/ustdio.cpp rename to deps/icu/source/io/ustdio.cpp diff --git a/bootstrap/cxx/deps/icu/source/io/ustream.cpp b/deps/icu/source/io/ustream.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/ustream.cpp rename to deps/icu/source/io/ustream.cpp diff --git a/bootstrap/cxx/deps/icu/source/layoutex/LXUtilities.cpp b/deps/icu/source/layoutex/LXUtilities.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/LXUtilities.cpp rename to deps/icu/source/layoutex/LXUtilities.cpp diff --git a/bootstrap/cxx/deps/icu/source/layoutex/LXUtilities.h b/deps/icu/source/layoutex/LXUtilities.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/LXUtilities.h rename to deps/icu/source/layoutex/LXUtilities.h diff --git a/bootstrap/cxx/deps/icu/source/layoutex/Makefile.in b/deps/icu/source/layoutex/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/Makefile.in rename to deps/icu/source/layoutex/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/layoutex/ParagraphLayout.cpp b/deps/icu/source/layoutex/ParagraphLayout.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/ParagraphLayout.cpp rename to deps/icu/source/layoutex/ParagraphLayout.cpp diff --git a/bootstrap/cxx/deps/icu/source/layoutex/RunArrays.cpp b/deps/icu/source/layoutex/RunArrays.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/RunArrays.cpp rename to deps/icu/source/layoutex/RunArrays.cpp diff --git a/bootstrap/cxx/deps/icu/source/layoutex/layout/ParagraphLayout.h b/deps/icu/source/layoutex/layout/ParagraphLayout.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/layout/ParagraphLayout.h rename to deps/icu/source/layoutex/layout/ParagraphLayout.h diff --git a/bootstrap/cxx/deps/icu/source/layoutex/layout/RunArrays.h b/deps/icu/source/layoutex/layout/RunArrays.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/layout/RunArrays.h rename to deps/icu/source/layoutex/layout/RunArrays.h diff --git a/bootstrap/cxx/deps/icu/source/layoutex/layout/playout.h b/deps/icu/source/layoutex/layout/playout.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/layout/playout.h rename to deps/icu/source/layoutex/layout/playout.h diff --git a/bootstrap/cxx/deps/icu/source/layoutex/layout/plruns.h b/deps/icu/source/layoutex/layout/plruns.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/layout/plruns.h rename to deps/icu/source/layoutex/layout/plruns.h diff --git a/bootstrap/cxx/deps/icu/source/layoutex/layoutex.rc b/deps/icu/source/layoutex/layoutex.rc similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/layoutex.rc rename to deps/icu/source/layoutex/layoutex.rc diff --git a/bootstrap/cxx/deps/icu/source/layoutex/layoutex.vcxproj b/deps/icu/source/layoutex/layoutex.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/layoutex.vcxproj rename to deps/icu/source/layoutex/layoutex.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/layoutex/layoutex.vcxproj.filters b/deps/icu/source/layoutex/layoutex.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/layoutex.vcxproj.filters rename to deps/icu/source/layoutex/layoutex.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/layoutex/playout.cpp b/deps/icu/source/layoutex/playout.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/playout.cpp rename to deps/icu/source/layoutex/playout.cpp diff --git a/bootstrap/cxx/deps/icu/source/layoutex/plruns.cpp b/deps/icu/source/layoutex/plruns.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/plruns.cpp rename to deps/icu/source/layoutex/plruns.cpp diff --git a/bootstrap/cxx/deps/icu/source/layoutex/sources.txt b/deps/icu/source/layoutex/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/sources.txt rename to deps/icu/source/layoutex/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/mkinstalldirs b/deps/icu/source/mkinstalldirs similarity index 100% rename from bootstrap/cxx/deps/icu/source/mkinstalldirs rename to deps/icu/source/mkinstalldirs diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/__init__.py b/deps/icu/source/python/icutools/__init__.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/__init__.py rename to deps/icu/source/python/icutools/__init__.py diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/__init__.py b/deps/icu/source/python/icutools/databuilder/__init__.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/__init__.py rename to deps/icu/source/python/icutools/databuilder/__init__.py diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/__main__.py b/deps/icu/source/python/icutools/databuilder/__main__.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/__main__.py rename to deps/icu/source/python/icutools/databuilder/__main__.py diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/comment_stripper.py b/deps/icu/source/python/icutools/databuilder/comment_stripper.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/comment_stripper.py rename to deps/icu/source/python/icutools/databuilder/comment_stripper.py diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/filtration.py b/deps/icu/source/python/icutools/databuilder/filtration.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/filtration.py rename to deps/icu/source/python/icutools/databuilder/filtration.py diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/filtration_schema.json b/deps/icu/source/python/icutools/databuilder/filtration_schema.json similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/filtration_schema.json rename to deps/icu/source/python/icutools/databuilder/filtration_schema.json diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/renderers/__init__.py b/deps/icu/source/python/icutools/databuilder/renderers/__init__.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/renderers/__init__.py rename to deps/icu/source/python/icutools/databuilder/renderers/__init__.py diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/renderers/common_exec.py b/deps/icu/source/python/icutools/databuilder/renderers/common_exec.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/renderers/common_exec.py rename to deps/icu/source/python/icutools/databuilder/renderers/common_exec.py diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/renderers/makefile.py b/deps/icu/source/python/icutools/databuilder/renderers/makefile.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/renderers/makefile.py rename to deps/icu/source/python/icutools/databuilder/renderers/makefile.py diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/request_types.py b/deps/icu/source/python/icutools/databuilder/request_types.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/request_types.py rename to deps/icu/source/python/icutools/databuilder/request_types.py diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/test/__init__.py b/deps/icu/source/python/icutools/databuilder/test/__init__.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/test/__init__.py rename to deps/icu/source/python/icutools/databuilder/test/__init__.py diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/test/__main__.py b/deps/icu/source/python/icutools/databuilder/test/__main__.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/test/__main__.py rename to deps/icu/source/python/icutools/databuilder/test/__main__.py diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/test/filtration_test.py b/deps/icu/source/python/icutools/databuilder/test/filtration_test.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/test/filtration_test.py rename to deps/icu/source/python/icutools/databuilder/test/filtration_test.py diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/test/sample_data/brkitr/LOCALE_DEPS.json b/deps/icu/source/python/icutools/databuilder/test/sample_data/brkitr/LOCALE_DEPS.json similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/test/sample_data/brkitr/LOCALE_DEPS.json rename to deps/icu/source/python/icutools/databuilder/test/sample_data/brkitr/LOCALE_DEPS.json diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/test/sample_data/locales/LOCALE_DEPS.json b/deps/icu/source/python/icutools/databuilder/test/sample_data/locales/LOCALE_DEPS.json similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/test/sample_data/locales/LOCALE_DEPS.json rename to deps/icu/source/python/icutools/databuilder/test/sample_data/locales/LOCALE_DEPS.json diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/test/sample_data/rbnf/LOCALE_DEPS.json b/deps/icu/source/python/icutools/databuilder/test/sample_data/rbnf/LOCALE_DEPS.json similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/test/sample_data/rbnf/LOCALE_DEPS.json rename to deps/icu/source/python/icutools/databuilder/test/sample_data/rbnf/LOCALE_DEPS.json diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/utils.py b/deps/icu/source/python/icutools/databuilder/utils.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/utils.py rename to deps/icu/source/python/icutools/databuilder/utils.py diff --git a/bootstrap/cxx/deps/icu/source/runConfigureICU b/deps/icu/source/runConfigureICU similarity index 100% rename from bootstrap/cxx/deps/icu/source/runConfigureICU rename to deps/icu/source/runConfigureICU diff --git a/bootstrap/cxx/deps/icu/source/samples/Makefile.in b/deps/icu/source/samples/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/Makefile.in rename to deps/icu/source/samples/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/samples/all/all.sln b/deps/icu/source/samples/all/all.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/all/all.sln rename to deps/icu/source/samples/all/all.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/all/samplecheck.bat b/deps/icu/source/samples/all/samplecheck.bat similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/all/samplecheck.bat rename to deps/icu/source/samples/all/samplecheck.bat diff --git a/bootstrap/cxx/deps/icu/source/samples/break/break.cpp b/deps/icu/source/samples/break/break.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/break/break.cpp rename to deps/icu/source/samples/break/break.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/break/break.sln b/deps/icu/source/samples/break/break.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/break/break.sln rename to deps/icu/source/samples/break/break.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/break/break.vcxproj b/deps/icu/source/samples/break/break.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/break/break.vcxproj rename to deps/icu/source/samples/break/break.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/break/break.vcxproj.filters b/deps/icu/source/samples/break/break.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/break/break.vcxproj.filters rename to deps/icu/source/samples/break/break.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/break/readme.txt b/deps/icu/source/samples/break/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/break/readme.txt rename to deps/icu/source/samples/break/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/break/ubreak.c b/deps/icu/source/samples/break/ubreak.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/break/ubreak.c rename to deps/icu/source/samples/break/ubreak.c diff --git a/bootstrap/cxx/deps/icu/source/samples/cal/Makefile.in b/deps/icu/source/samples/cal/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/cal/Makefile.in rename to deps/icu/source/samples/cal/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/samples/cal/cal.c b/deps/icu/source/samples/cal/cal.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/cal/cal.c rename to deps/icu/source/samples/cal/cal.c diff --git a/bootstrap/cxx/deps/icu/source/samples/cal/cal.sln b/deps/icu/source/samples/cal/cal.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/cal/cal.sln rename to deps/icu/source/samples/cal/cal.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/cal/cal.vcxproj b/deps/icu/source/samples/cal/cal.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/cal/cal.vcxproj rename to deps/icu/source/samples/cal/cal.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/cal/cal.vcxproj.filters b/deps/icu/source/samples/cal/cal.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/cal/cal.vcxproj.filters rename to deps/icu/source/samples/cal/cal.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/cal/readme.txt b/deps/icu/source/samples/cal/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/cal/readme.txt rename to deps/icu/source/samples/cal/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/cal/uprint.c b/deps/icu/source/samples/cal/uprint.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/cal/uprint.c rename to deps/icu/source/samples/cal/uprint.c diff --git a/bootstrap/cxx/deps/icu/source/samples/cal/uprint.h b/deps/icu/source/samples/cal/uprint.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/cal/uprint.h rename to deps/icu/source/samples/cal/uprint.h diff --git a/bootstrap/cxx/deps/icu/source/samples/case/case.cpp b/deps/icu/source/samples/case/case.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/case/case.cpp rename to deps/icu/source/samples/case/case.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/case/case.sln b/deps/icu/source/samples/case/case.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/case/case.sln rename to deps/icu/source/samples/case/case.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/case/case.vcxproj b/deps/icu/source/samples/case/case.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/case/case.vcxproj rename to deps/icu/source/samples/case/case.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/case/case.vcxproj.filters b/deps/icu/source/samples/case/case.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/case/case.vcxproj.filters rename to deps/icu/source/samples/case/case.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/case/readme.txt b/deps/icu/source/samples/case/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/case/readme.txt rename to deps/icu/source/samples/case/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/case/ucase.c b/deps/icu/source/samples/case/ucase.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/case/ucase.c rename to deps/icu/source/samples/case/ucase.c diff --git a/bootstrap/cxx/deps/icu/source/samples/citer/citer.cpp b/deps/icu/source/samples/citer/citer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/citer/citer.cpp rename to deps/icu/source/samples/citer/citer.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/citer/citer.vcxproj b/deps/icu/source/samples/citer/citer.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/citer/citer.vcxproj rename to deps/icu/source/samples/citer/citer.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/citer/citer.vcxproj.filters b/deps/icu/source/samples/citer/citer.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/citer/citer.vcxproj.filters rename to deps/icu/source/samples/citer/citer.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/citer/readme.txt b/deps/icu/source/samples/citer/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/citer/readme.txt rename to deps/icu/source/samples/citer/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/coll/coll.cpp b/deps/icu/source/samples/coll/coll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/coll/coll.cpp rename to deps/icu/source/samples/coll/coll.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/coll/coll.sln b/deps/icu/source/samples/coll/coll.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/coll/coll.sln rename to deps/icu/source/samples/coll/coll.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/coll/coll.vcxproj b/deps/icu/source/samples/coll/coll.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/coll/coll.vcxproj rename to deps/icu/source/samples/coll/coll.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/coll/coll.vcxproj.filters b/deps/icu/source/samples/coll/coll.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/coll/coll.vcxproj.filters rename to deps/icu/source/samples/coll/coll.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/coll/readme.txt b/deps/icu/source/samples/coll/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/coll/readme.txt rename to deps/icu/source/samples/coll/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/csdet/csdet.c b/deps/icu/source/samples/csdet/csdet.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/csdet/csdet.c rename to deps/icu/source/samples/csdet/csdet.c diff --git a/bootstrap/cxx/deps/icu/source/samples/csdet/csdet.vcxproj b/deps/icu/source/samples/csdet/csdet.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/csdet/csdet.vcxproj rename to deps/icu/source/samples/csdet/csdet.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/csdet/csdet.vcxproj.filters b/deps/icu/source/samples/csdet/csdet.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/csdet/csdet.vcxproj.filters rename to deps/icu/source/samples/csdet/csdet.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/csdet/readme.txt b/deps/icu/source/samples/csdet/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/csdet/readme.txt rename to deps/icu/source/samples/csdet/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/date/Makefile.in b/deps/icu/source/samples/date/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/date/Makefile.in rename to deps/icu/source/samples/date/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/samples/date/date.c b/deps/icu/source/samples/date/date.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/date/date.c rename to deps/icu/source/samples/date/date.c diff --git a/bootstrap/cxx/deps/icu/source/samples/date/date.sln b/deps/icu/source/samples/date/date.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/date/date.sln rename to deps/icu/source/samples/date/date.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/date/date.vcxproj b/deps/icu/source/samples/date/date.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/date/date.vcxproj rename to deps/icu/source/samples/date/date.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/date/date.vcxproj.filters b/deps/icu/source/samples/date/date.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/date/date.vcxproj.filters rename to deps/icu/source/samples/date/date.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/date/readme.txt b/deps/icu/source/samples/date/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/date/readme.txt rename to deps/icu/source/samples/date/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/date/uprint.c b/deps/icu/source/samples/date/uprint.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/date/uprint.c rename to deps/icu/source/samples/date/uprint.c diff --git a/bootstrap/cxx/deps/icu/source/samples/date/uprint.h b/deps/icu/source/samples/date/uprint.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/date/uprint.h rename to deps/icu/source/samples/date/uprint.h diff --git a/bootstrap/cxx/deps/icu/source/samples/datecal/cal.cpp b/deps/icu/source/samples/datecal/cal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/datecal/cal.cpp rename to deps/icu/source/samples/datecal/cal.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/datecal/ccal.c b/deps/icu/source/samples/datecal/ccal.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/datecal/ccal.c rename to deps/icu/source/samples/datecal/ccal.c diff --git a/bootstrap/cxx/deps/icu/source/samples/datefmt/README.TXT b/deps/icu/source/samples/datefmt/README.TXT similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/datefmt/README.TXT rename to deps/icu/source/samples/datefmt/README.TXT diff --git a/bootstrap/cxx/deps/icu/source/samples/datefmt/answers/main_0.cpp b/deps/icu/source/samples/datefmt/answers/main_0.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/datefmt/answers/main_0.cpp rename to deps/icu/source/samples/datefmt/answers/main_0.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/datefmt/answers/main_1.cpp b/deps/icu/source/samples/datefmt/answers/main_1.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/datefmt/answers/main_1.cpp rename to deps/icu/source/samples/datefmt/answers/main_1.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/datefmt/answers/main_2.cpp b/deps/icu/source/samples/datefmt/answers/main_2.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/datefmt/answers/main_2.cpp rename to deps/icu/source/samples/datefmt/answers/main_2.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/datefmt/answers/main_3.cpp b/deps/icu/source/samples/datefmt/answers/main_3.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/datefmt/answers/main_3.cpp rename to deps/icu/source/samples/datefmt/answers/main_3.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/datefmt/datefmt.sln b/deps/icu/source/samples/datefmt/datefmt.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/datefmt/datefmt.sln rename to deps/icu/source/samples/datefmt/datefmt.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/datefmt/datefmt.vcxproj b/deps/icu/source/samples/datefmt/datefmt.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/datefmt/datefmt.vcxproj rename to deps/icu/source/samples/datefmt/datefmt.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/datefmt/datefmt.vcxproj.filters b/deps/icu/source/samples/datefmt/datefmt.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/datefmt/datefmt.vcxproj.filters rename to deps/icu/source/samples/datefmt/datefmt.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/datefmt/main.cpp b/deps/icu/source/samples/datefmt/main.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/datefmt/main.cpp rename to deps/icu/source/samples/datefmt/main.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/datefmt/util.cpp b/deps/icu/source/samples/datefmt/util.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/datefmt/util.cpp rename to deps/icu/source/samples/datefmt/util.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/datefmt/util.h b/deps/icu/source/samples/datefmt/util.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/datefmt/util.h rename to deps/icu/source/samples/datefmt/util.h diff --git a/bootstrap/cxx/deps/icu/source/samples/defs.mk b/deps/icu/source/samples/defs.mk similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/defs.mk rename to deps/icu/source/samples/defs.mk diff --git a/bootstrap/cxx/deps/icu/source/samples/dtitvfmtsample/dtitvfmtsample.cpp b/deps/icu/source/samples/dtitvfmtsample/dtitvfmtsample.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/dtitvfmtsample/dtitvfmtsample.cpp rename to deps/icu/source/samples/dtitvfmtsample/dtitvfmtsample.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj b/deps/icu/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj rename to deps/icu/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj.filters b/deps/icu/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj.filters rename to deps/icu/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/dtptngsample/dtptngsample.cpp b/deps/icu/source/samples/dtptngsample/dtptngsample.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/dtptngsample/dtptngsample.cpp rename to deps/icu/source/samples/dtptngsample/dtptngsample.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/dtptngsample/dtptngsample.vcxproj b/deps/icu/source/samples/dtptngsample/dtptngsample.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/dtptngsample/dtptngsample.vcxproj rename to deps/icu/source/samples/dtptngsample/dtptngsample.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/dtptngsample/dtptngsample.vcxproj.filters b/deps/icu/source/samples/dtptngsample/dtptngsample.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/dtptngsample/dtptngsample.vcxproj.filters rename to deps/icu/source/samples/dtptngsample/dtptngsample.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/FontMap.GDI b/deps/icu/source/samples/layout/FontMap.GDI similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/FontMap.GDI rename to deps/icu/source/samples/layout/FontMap.GDI diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/FontMap.Gnome b/deps/icu/source/samples/layout/FontMap.Gnome similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/FontMap.Gnome rename to deps/icu/source/samples/layout/FontMap.Gnome diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/FontMap.cpp b/deps/icu/source/samples/layout/FontMap.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/FontMap.cpp rename to deps/icu/source/samples/layout/FontMap.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/FontMap.h b/deps/icu/source/samples/layout/FontMap.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/FontMap.h rename to deps/icu/source/samples/layout/FontMap.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/FontTableCache.cpp b/deps/icu/source/samples/layout/FontTableCache.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/FontTableCache.cpp rename to deps/icu/source/samples/layout/FontTableCache.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/FontTableCache.h b/deps/icu/source/samples/layout/FontTableCache.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/FontTableCache.h rename to deps/icu/source/samples/layout/FontTableCache.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/GDIFontInstance.cpp b/deps/icu/source/samples/layout/GDIFontInstance.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/GDIFontInstance.cpp rename to deps/icu/source/samples/layout/GDIFontInstance.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/GDIFontInstance.h b/deps/icu/source/samples/layout/GDIFontInstance.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/GDIFontInstance.h rename to deps/icu/source/samples/layout/GDIFontInstance.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/GDIFontMap.cpp b/deps/icu/source/samples/layout/GDIFontMap.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/GDIFontMap.cpp rename to deps/icu/source/samples/layout/GDIFontMap.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/GDIFontMap.h b/deps/icu/source/samples/layout/GDIFontMap.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/GDIFontMap.h rename to deps/icu/source/samples/layout/GDIFontMap.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/GDIGUISupport.cpp b/deps/icu/source/samples/layout/GDIGUISupport.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/GDIGUISupport.cpp rename to deps/icu/source/samples/layout/GDIGUISupport.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/GDIGUISupport.h b/deps/icu/source/samples/layout/GDIGUISupport.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/GDIGUISupport.h rename to deps/icu/source/samples/layout/GDIGUISupport.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/GUISupport.h b/deps/icu/source/samples/layout/GUISupport.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/GUISupport.h rename to deps/icu/source/samples/layout/GUISupport.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/GnomeFontInstance.cpp b/deps/icu/source/samples/layout/GnomeFontInstance.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/GnomeFontInstance.cpp rename to deps/icu/source/samples/layout/GnomeFontInstance.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/GnomeFontInstance.h b/deps/icu/source/samples/layout/GnomeFontInstance.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/GnomeFontInstance.h rename to deps/icu/source/samples/layout/GnomeFontInstance.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/GnomeFontMap.cpp b/deps/icu/source/samples/layout/GnomeFontMap.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/GnomeFontMap.cpp rename to deps/icu/source/samples/layout/GnomeFontMap.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/GnomeFontMap.h b/deps/icu/source/samples/layout/GnomeFontMap.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/GnomeFontMap.h rename to deps/icu/source/samples/layout/GnomeFontMap.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/GnomeGUISupport.cpp b/deps/icu/source/samples/layout/GnomeGUISupport.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/GnomeGUISupport.cpp rename to deps/icu/source/samples/layout/GnomeGUISupport.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/GnomeGUISupport.h b/deps/icu/source/samples/layout/GnomeGUISupport.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/GnomeGUISupport.h rename to deps/icu/source/samples/layout/GnomeGUISupport.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/LayoutSample.rc b/deps/icu/source/samples/layout/LayoutSample.rc similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/LayoutSample.rc rename to deps/icu/source/samples/layout/LayoutSample.rc diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/Makefile.in b/deps/icu/source/samples/layout/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/Makefile.in rename to deps/icu/source/samples/layout/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/RenderingSurface.h b/deps/icu/source/samples/layout/RenderingSurface.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/RenderingSurface.h rename to deps/icu/source/samples/layout/RenderingSurface.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/Sample.txt b/deps/icu/source/samples/layout/Sample.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/Sample.txt rename to deps/icu/source/samples/layout/Sample.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/ScriptCompositeFontInstance.cpp b/deps/icu/source/samples/layout/ScriptCompositeFontInstance.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/ScriptCompositeFontInstance.cpp rename to deps/icu/source/samples/layout/ScriptCompositeFontInstance.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/ScriptCompositeFontInstance.h b/deps/icu/source/samples/layout/ScriptCompositeFontInstance.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/ScriptCompositeFontInstance.h rename to deps/icu/source/samples/layout/ScriptCompositeFontInstance.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/Surface.cpp b/deps/icu/source/samples/layout/Surface.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/Surface.cpp rename to deps/icu/source/samples/layout/Surface.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/Surface.h b/deps/icu/source/samples/layout/Surface.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/Surface.h rename to deps/icu/source/samples/layout/Surface.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/UnicodeReader.cpp b/deps/icu/source/samples/layout/UnicodeReader.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/UnicodeReader.cpp rename to deps/icu/source/samples/layout/UnicodeReader.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/UnicodeReader.h b/deps/icu/source/samples/layout/UnicodeReader.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/UnicodeReader.h rename to deps/icu/source/samples/layout/UnicodeReader.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/arraymem.h b/deps/icu/source/samples/layout/arraymem.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/arraymem.h rename to deps/icu/source/samples/layout/arraymem.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/cgnomelayout.c b/deps/icu/source/samples/layout/cgnomelayout.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/cgnomelayout.c rename to deps/icu/source/samples/layout/cgnomelayout.c diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/clayout.c b/deps/icu/source/samples/layout/clayout.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/clayout.c rename to deps/icu/source/samples/layout/clayout.c diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/cmaps.cpp b/deps/icu/source/samples/layout/cmaps.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/cmaps.cpp rename to deps/icu/source/samples/layout/cmaps.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/cmaps.h b/deps/icu/source/samples/layout/cmaps.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/cmaps.h rename to deps/icu/source/samples/layout/cmaps.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/gdiglue.cpp b/deps/icu/source/samples/layout/gdiglue.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/gdiglue.cpp rename to deps/icu/source/samples/layout/gdiglue.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/gdiglue.h b/deps/icu/source/samples/layout/gdiglue.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/gdiglue.h rename to deps/icu/source/samples/layout/gdiglue.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/gnomeglue.cpp b/deps/icu/source/samples/layout/gnomeglue.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/gnomeglue.cpp rename to deps/icu/source/samples/layout/gnomeglue.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/gnomeglue.h b/deps/icu/source/samples/layout/gnomeglue.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/gnomeglue.h rename to deps/icu/source/samples/layout/gnomeglue.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/gnomelayout.cpp b/deps/icu/source/samples/layout/gnomelayout.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/gnomelayout.cpp rename to deps/icu/source/samples/layout/gnomelayout.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/gsupport.h b/deps/icu/source/samples/layout/gsupport.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/gsupport.h rename to deps/icu/source/samples/layout/gsupport.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/layout.cpp b/deps/icu/source/samples/layout/layout.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/layout.cpp rename to deps/icu/source/samples/layout/layout.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/layout.sln b/deps/icu/source/samples/layout/layout.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/layout.sln rename to deps/icu/source/samples/layout/layout.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/layout.vcxproj b/deps/icu/source/samples/layout/layout.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/layout.vcxproj rename to deps/icu/source/samples/layout/layout.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/layout.vcxproj.filters b/deps/icu/source/samples/layout/layout.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/layout.vcxproj.filters rename to deps/icu/source/samples/layout/layout.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/paragraph.cpp b/deps/icu/source/samples/layout/paragraph.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/paragraph.cpp rename to deps/icu/source/samples/layout/paragraph.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/paragraph.h b/deps/icu/source/samples/layout/paragraph.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/paragraph.h rename to deps/icu/source/samples/layout/paragraph.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/pflow.c b/deps/icu/source/samples/layout/pflow.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/pflow.c rename to deps/icu/source/samples/layout/pflow.c diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/pflow.h b/deps/icu/source/samples/layout/pflow.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/pflow.h rename to deps/icu/source/samples/layout/pflow.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/readme.html b/deps/icu/source/samples/layout/readme.html similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/readme.html rename to deps/icu/source/samples/layout/readme.html diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/resource.h b/deps/icu/source/samples/layout/resource.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/resource.h rename to deps/icu/source/samples/layout/resource.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/rsurface.cpp b/deps/icu/source/samples/layout/rsurface.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/rsurface.cpp rename to deps/icu/source/samples/layout/rsurface.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/rsurface.h b/deps/icu/source/samples/layout/rsurface.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/rsurface.h rename to deps/icu/source/samples/layout/rsurface.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/sfnt.h b/deps/icu/source/samples/layout/sfnt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/sfnt.h rename to deps/icu/source/samples/layout/sfnt.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/ucreader.cpp b/deps/icu/source/samples/layout/ucreader.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/ucreader.cpp rename to deps/icu/source/samples/layout/ucreader.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/ucreader.h b/deps/icu/source/samples/layout/ucreader.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/ucreader.h rename to deps/icu/source/samples/layout/ucreader.h diff --git a/bootstrap/cxx/deps/icu/source/samples/legacy/README b/deps/icu/source/samples/legacy/README similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/legacy/README rename to deps/icu/source/samples/legacy/README diff --git a/bootstrap/cxx/deps/icu/source/samples/legacy/legacy.cpp b/deps/icu/source/samples/legacy/legacy.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/legacy/legacy.cpp rename to deps/icu/source/samples/legacy/legacy.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/legacy/legacy.sln b/deps/icu/source/samples/legacy/legacy.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/legacy/legacy.sln rename to deps/icu/source/samples/legacy/legacy.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/legacy/legacy.vcxproj b/deps/icu/source/samples/legacy/legacy.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/legacy/legacy.vcxproj rename to deps/icu/source/samples/legacy/legacy.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/legacy/legacy.vcxproj.filters b/deps/icu/source/samples/legacy/legacy.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/legacy/legacy.vcxproj.filters rename to deps/icu/source/samples/legacy/legacy.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/legacy/newcol.cpp b/deps/icu/source/samples/legacy/newcol.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/legacy/newcol.cpp rename to deps/icu/source/samples/legacy/newcol.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/legacy/oldcol.cpp b/deps/icu/source/samples/legacy/oldcol.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/legacy/oldcol.cpp rename to deps/icu/source/samples/legacy/oldcol.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/msgfmt/README.TXT b/deps/icu/source/samples/msgfmt/README.TXT similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/msgfmt/README.TXT rename to deps/icu/source/samples/msgfmt/README.TXT diff --git a/bootstrap/cxx/deps/icu/source/samples/msgfmt/answers/main_0.cpp b/deps/icu/source/samples/msgfmt/answers/main_0.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/msgfmt/answers/main_0.cpp rename to deps/icu/source/samples/msgfmt/answers/main_0.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/msgfmt/answers/main_1.cpp b/deps/icu/source/samples/msgfmt/answers/main_1.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/msgfmt/answers/main_1.cpp rename to deps/icu/source/samples/msgfmt/answers/main_1.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/msgfmt/answers/main_2.cpp b/deps/icu/source/samples/msgfmt/answers/main_2.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/msgfmt/answers/main_2.cpp rename to deps/icu/source/samples/msgfmt/answers/main_2.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/msgfmt/answers/main_3.cpp b/deps/icu/source/samples/msgfmt/answers/main_3.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/msgfmt/answers/main_3.cpp rename to deps/icu/source/samples/msgfmt/answers/main_3.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/msgfmt/main.cpp b/deps/icu/source/samples/msgfmt/main.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/msgfmt/main.cpp rename to deps/icu/source/samples/msgfmt/main.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/msgfmt/msgfmt.sln b/deps/icu/source/samples/msgfmt/msgfmt.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/msgfmt/msgfmt.sln rename to deps/icu/source/samples/msgfmt/msgfmt.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/msgfmt/msgfmt.vcxproj b/deps/icu/source/samples/msgfmt/msgfmt.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/msgfmt/msgfmt.vcxproj rename to deps/icu/source/samples/msgfmt/msgfmt.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/msgfmt/msgfmt.vcxproj.filters b/deps/icu/source/samples/msgfmt/msgfmt.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/msgfmt/msgfmt.vcxproj.filters rename to deps/icu/source/samples/msgfmt/msgfmt.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/msgfmt/util.cpp b/deps/icu/source/samples/msgfmt/util.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/msgfmt/util.cpp rename to deps/icu/source/samples/msgfmt/util.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/msgfmt/util.h b/deps/icu/source/samples/msgfmt/util.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/msgfmt/util.h rename to deps/icu/source/samples/msgfmt/util.h diff --git a/bootstrap/cxx/deps/icu/source/samples/numfmt/capi.c b/deps/icu/source/samples/numfmt/capi.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/numfmt/capi.c rename to deps/icu/source/samples/numfmt/capi.c diff --git a/bootstrap/cxx/deps/icu/source/samples/numfmt/main.cpp b/deps/icu/source/samples/numfmt/main.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/numfmt/main.cpp rename to deps/icu/source/samples/numfmt/main.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/numfmt/numfmt.sln b/deps/icu/source/samples/numfmt/numfmt.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/numfmt/numfmt.sln rename to deps/icu/source/samples/numfmt/numfmt.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/numfmt/numfmt.vcxproj b/deps/icu/source/samples/numfmt/numfmt.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/numfmt/numfmt.vcxproj rename to deps/icu/source/samples/numfmt/numfmt.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/numfmt/numfmt.vcxproj.filters b/deps/icu/source/samples/numfmt/numfmt.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/numfmt/numfmt.vcxproj.filters rename to deps/icu/source/samples/numfmt/numfmt.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/numfmt/readme.txt b/deps/icu/source/samples/numfmt/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/numfmt/readme.txt rename to deps/icu/source/samples/numfmt/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/numfmt/util.cpp b/deps/icu/source/samples/numfmt/util.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/numfmt/util.cpp rename to deps/icu/source/samples/numfmt/util.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/numfmt/util.h b/deps/icu/source/samples/numfmt/util.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/numfmt/util.h rename to deps/icu/source/samples/numfmt/util.h diff --git a/bootstrap/cxx/deps/icu/source/samples/plurfmtsample/plurfmtsample.cpp b/deps/icu/source/samples/plurfmtsample/plurfmtsample.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/plurfmtsample/plurfmtsample.cpp rename to deps/icu/source/samples/plurfmtsample/plurfmtsample.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/plurfmtsample/plurfmtsample.vcxproj b/deps/icu/source/samples/plurfmtsample/plurfmtsample.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/plurfmtsample/plurfmtsample.vcxproj rename to deps/icu/source/samples/plurfmtsample/plurfmtsample.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/plurfmtsample/plurfmtsample.vcxproj.filters b/deps/icu/source/samples/plurfmtsample/plurfmtsample.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/plurfmtsample/plurfmtsample.vcxproj.filters rename to deps/icu/source/samples/plurfmtsample/plurfmtsample.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/props/props.cpp b/deps/icu/source/samples/props/props.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/props/props.cpp rename to deps/icu/source/samples/props/props.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/props/props.sln b/deps/icu/source/samples/props/props.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/props/props.sln rename to deps/icu/source/samples/props/props.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/props/props.vcxproj b/deps/icu/source/samples/props/props.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/props/props.vcxproj rename to deps/icu/source/samples/props/props.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/props/props.vcxproj.filters b/deps/icu/source/samples/props/props.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/props/props.vcxproj.filters rename to deps/icu/source/samples/props/props.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/props/readme.txt b/deps/icu/source/samples/props/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/props/readme.txt rename to deps/icu/source/samples/props/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/readme.txt b/deps/icu/source/samples/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/readme.txt rename to deps/icu/source/samples/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/rules.mk b/deps/icu/source/samples/rules.mk similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/rules.mk rename to deps/icu/source/samples/rules.mk diff --git a/bootstrap/cxx/deps/icu/source/samples/strsrch/readme.txt b/deps/icu/source/samples/strsrch/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/strsrch/readme.txt rename to deps/icu/source/samples/strsrch/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/strsrch/strsrch.cpp b/deps/icu/source/samples/strsrch/strsrch.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/strsrch/strsrch.cpp rename to deps/icu/source/samples/strsrch/strsrch.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/strsrch/strsrch.sln b/deps/icu/source/samples/strsrch/strsrch.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/strsrch/strsrch.sln rename to deps/icu/source/samples/strsrch/strsrch.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/strsrch/strsrch.vcxproj b/deps/icu/source/samples/strsrch/strsrch.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/strsrch/strsrch.vcxproj rename to deps/icu/source/samples/strsrch/strsrch.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/strsrch/strsrch.vcxproj.filters b/deps/icu/source/samples/strsrch/strsrch.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/strsrch/strsrch.vcxproj.filters rename to deps/icu/source/samples/strsrch/strsrch.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/README.TXT b/deps/icu/source/samples/translit/README.TXT similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/README.TXT rename to deps/icu/source/samples/translit/README.TXT diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/answers/main_1.cpp b/deps/icu/source/samples/translit/answers/main_1.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/answers/main_1.cpp rename to deps/icu/source/samples/translit/answers/main_1.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/answers/main_2.cpp b/deps/icu/source/samples/translit/answers/main_2.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/answers/main_2.cpp rename to deps/icu/source/samples/translit/answers/main_2.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/answers/main_3.cpp b/deps/icu/source/samples/translit/answers/main_3.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/answers/main_3.cpp rename to deps/icu/source/samples/translit/answers/main_3.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/answers/main_4.cpp b/deps/icu/source/samples/translit/answers/main_4.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/answers/main_4.cpp rename to deps/icu/source/samples/translit/answers/main_4.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/answers/unaccent.cpp b/deps/icu/source/samples/translit/answers/unaccent.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/answers/unaccent.cpp rename to deps/icu/source/samples/translit/answers/unaccent.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/answers/unaccent.h b/deps/icu/source/samples/translit/answers/unaccent.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/answers/unaccent.h rename to deps/icu/source/samples/translit/answers/unaccent.h diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/main.cpp b/deps/icu/source/samples/translit/main.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/main.cpp rename to deps/icu/source/samples/translit/main.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/translit.sln b/deps/icu/source/samples/translit/translit.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/translit.sln rename to deps/icu/source/samples/translit/translit.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/translit.vcxproj b/deps/icu/source/samples/translit/translit.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/translit.vcxproj rename to deps/icu/source/samples/translit/translit.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/translit.vcxproj.filters b/deps/icu/source/samples/translit/translit.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/translit.vcxproj.filters rename to deps/icu/source/samples/translit/translit.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/unaccent.cpp b/deps/icu/source/samples/translit/unaccent.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/unaccent.cpp rename to deps/icu/source/samples/translit/unaccent.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/unaccent.h b/deps/icu/source/samples/translit/unaccent.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/unaccent.h rename to deps/icu/source/samples/translit/unaccent.h diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/util.cpp b/deps/icu/source/samples/translit/util.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/util.cpp rename to deps/icu/source/samples/translit/util.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/util.h b/deps/icu/source/samples/translit/util.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/util.h rename to deps/icu/source/samples/translit/util.h diff --git a/bootstrap/cxx/deps/icu/source/samples/uciter8/readme.txt b/deps/icu/source/samples/uciter8/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uciter8/readme.txt rename to deps/icu/source/samples/uciter8/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/uciter8/uciter8.c b/deps/icu/source/samples/uciter8/uciter8.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uciter8/uciter8.c rename to deps/icu/source/samples/uciter8/uciter8.c diff --git a/bootstrap/cxx/deps/icu/source/samples/uciter8/uciter8.sln b/deps/icu/source/samples/uciter8/uciter8.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uciter8/uciter8.sln rename to deps/icu/source/samples/uciter8/uciter8.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/uciter8/uciter8.vcxproj b/deps/icu/source/samples/uciter8/uciter8.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uciter8/uciter8.vcxproj rename to deps/icu/source/samples/uciter8/uciter8.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/uciter8/uciter8.vcxproj.filters b/deps/icu/source/samples/uciter8/uciter8.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uciter8/uciter8.vcxproj.filters rename to deps/icu/source/samples/uciter8/uciter8.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/uciter8/uit_len8.c b/deps/icu/source/samples/uciter8/uit_len8.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uciter8/uit_len8.c rename to deps/icu/source/samples/uciter8/uit_len8.c diff --git a/bootstrap/cxx/deps/icu/source/samples/uciter8/uit_len8.h b/deps/icu/source/samples/uciter8/uit_len8.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uciter8/uit_len8.h rename to deps/icu/source/samples/uciter8/uit_len8.h diff --git a/bootstrap/cxx/deps/icu/source/samples/ucnv/convsamp.cpp b/deps/icu/source/samples/ucnv/convsamp.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ucnv/convsamp.cpp rename to deps/icu/source/samples/ucnv/convsamp.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/ucnv/data01.txt b/deps/icu/source/samples/ucnv/data01.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ucnv/data01.txt rename to deps/icu/source/samples/ucnv/data01.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/ucnv/data02.bin b/deps/icu/source/samples/ucnv/data02.bin similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ucnv/data02.bin rename to deps/icu/source/samples/ucnv/data02.bin diff --git a/bootstrap/cxx/deps/icu/source/samples/ucnv/data06.txt b/deps/icu/source/samples/ucnv/data06.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ucnv/data06.txt rename to deps/icu/source/samples/ucnv/data06.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/ucnv/flagcb.c b/deps/icu/source/samples/ucnv/flagcb.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ucnv/flagcb.c rename to deps/icu/source/samples/ucnv/flagcb.c diff --git a/bootstrap/cxx/deps/icu/source/samples/ucnv/flagcb.h b/deps/icu/source/samples/ucnv/flagcb.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ucnv/flagcb.h rename to deps/icu/source/samples/ucnv/flagcb.h diff --git a/bootstrap/cxx/deps/icu/source/samples/ucnv/readme.txt b/deps/icu/source/samples/ucnv/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ucnv/readme.txt rename to deps/icu/source/samples/ucnv/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/ucnv/ucnv.sln b/deps/icu/source/samples/ucnv/ucnv.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ucnv/ucnv.sln rename to deps/icu/source/samples/ucnv/ucnv.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/ucnv/ucnv.vcxproj b/deps/icu/source/samples/ucnv/ucnv.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ucnv/ucnv.vcxproj rename to deps/icu/source/samples/ucnv/ucnv.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/ucnv/ucnv.vcxproj.filters b/deps/icu/source/samples/ucnv/ucnv.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ucnv/ucnv.vcxproj.filters rename to deps/icu/source/samples/ucnv/ucnv.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/udata/reader.c b/deps/icu/source/samples/udata/reader.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/udata/reader.c rename to deps/icu/source/samples/udata/reader.c diff --git a/bootstrap/cxx/deps/icu/source/samples/udata/reader.vcxproj b/deps/icu/source/samples/udata/reader.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/udata/reader.vcxproj rename to deps/icu/source/samples/udata/reader.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/udata/reader.vcxproj.filters b/deps/icu/source/samples/udata/reader.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/udata/reader.vcxproj.filters rename to deps/icu/source/samples/udata/reader.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/udata/readme.txt b/deps/icu/source/samples/udata/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/udata/readme.txt rename to deps/icu/source/samples/udata/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/udata/udata.sln b/deps/icu/source/samples/udata/udata.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/udata/udata.sln rename to deps/icu/source/samples/udata/udata.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/udata/writer.c b/deps/icu/source/samples/udata/writer.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/udata/writer.c rename to deps/icu/source/samples/udata/writer.c diff --git a/bootstrap/cxx/deps/icu/source/samples/udata/writer.vcxproj b/deps/icu/source/samples/udata/writer.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/udata/writer.vcxproj rename to deps/icu/source/samples/udata/writer.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/udata/writer.vcxproj.filters b/deps/icu/source/samples/udata/writer.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/udata/writer.vcxproj.filters rename to deps/icu/source/samples/udata/writer.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/ufortune/fortunedefs.mk b/deps/icu/source/samples/ufortune/fortunedefs.mk similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ufortune/fortunedefs.mk rename to deps/icu/source/samples/ufortune/fortunedefs.mk diff --git a/bootstrap/cxx/deps/icu/source/samples/ufortune/readme.txt b/deps/icu/source/samples/ufortune/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ufortune/readme.txt rename to deps/icu/source/samples/ufortune/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/ufortune/resources/es.txt b/deps/icu/source/samples/ufortune/resources/es.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ufortune/resources/es.txt rename to deps/icu/source/samples/ufortune/resources/es.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/ufortune/resources/fortune_resources.mak b/deps/icu/source/samples/ufortune/resources/fortune_resources.mak similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ufortune/resources/fortune_resources.mak rename to deps/icu/source/samples/ufortune/resources/fortune_resources.mak diff --git a/bootstrap/cxx/deps/icu/source/samples/ufortune/resources/res-file-list.txt b/deps/icu/source/samples/ufortune/resources/res-file-list.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ufortune/resources/res-file-list.txt rename to deps/icu/source/samples/ufortune/resources/res-file-list.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/ufortune/resources/root.txt b/deps/icu/source/samples/ufortune/resources/root.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ufortune/resources/root.txt rename to deps/icu/source/samples/ufortune/resources/root.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/ufortune/ufortune.c b/deps/icu/source/samples/ufortune/ufortune.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ufortune/ufortune.c rename to deps/icu/source/samples/ufortune/ufortune.c diff --git a/bootstrap/cxx/deps/icu/source/samples/ufortune/ufortune.sln b/deps/icu/source/samples/ufortune/ufortune.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ufortune/ufortune.sln rename to deps/icu/source/samples/ufortune/ufortune.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/ufortune/ufortune.vcxproj b/deps/icu/source/samples/ufortune/ufortune.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ufortune/ufortune.vcxproj rename to deps/icu/source/samples/ufortune/ufortune.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/ufortune/ufortune.vcxproj.filters b/deps/icu/source/samples/ufortune/ufortune.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ufortune/ufortune.vcxproj.filters rename to deps/icu/source/samples/ufortune/ufortune.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/ugrep/readme.txt b/deps/icu/source/samples/ugrep/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ugrep/readme.txt rename to deps/icu/source/samples/ugrep/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/ugrep/ugrep.cpp b/deps/icu/source/samples/ugrep/ugrep.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ugrep/ugrep.cpp rename to deps/icu/source/samples/ugrep/ugrep.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/ugrep/ugrep.sln b/deps/icu/source/samples/ugrep/ugrep.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ugrep/ugrep.sln rename to deps/icu/source/samples/ugrep/ugrep.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/ugrep/ugrep.vcxproj b/deps/icu/source/samples/ugrep/ugrep.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ugrep/ugrep.vcxproj rename to deps/icu/source/samples/ugrep/ugrep.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/ugrep/ugrep.vcxproj.filters b/deps/icu/source/samples/ugrep/ugrep.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ugrep/ugrep.vcxproj.filters rename to deps/icu/source/samples/ugrep/ugrep.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/uresb/en.txt b/deps/icu/source/samples/uresb/en.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uresb/en.txt rename to deps/icu/source/samples/uresb/en.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/uresb/readme.txt b/deps/icu/source/samples/uresb/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uresb/readme.txt rename to deps/icu/source/samples/uresb/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/uresb/resources.mak b/deps/icu/source/samples/uresb/resources.mak similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uresb/resources.mak rename to deps/icu/source/samples/uresb/resources.mak diff --git a/bootstrap/cxx/deps/icu/source/samples/uresb/resources.vcxproj b/deps/icu/source/samples/uresb/resources.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uresb/resources.vcxproj rename to deps/icu/source/samples/uresb/resources.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/uresb/resources.vcxproj.filters b/deps/icu/source/samples/uresb/resources.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uresb/resources.vcxproj.filters rename to deps/icu/source/samples/uresb/resources.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/uresb/root.txt b/deps/icu/source/samples/uresb/root.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uresb/root.txt rename to deps/icu/source/samples/uresb/root.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/uresb/sr.txt b/deps/icu/source/samples/uresb/sr.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uresb/sr.txt rename to deps/icu/source/samples/uresb/sr.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/uresb/uresb.c b/deps/icu/source/samples/uresb/uresb.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uresb/uresb.c rename to deps/icu/source/samples/uresb/uresb.c diff --git a/bootstrap/cxx/deps/icu/source/samples/uresb/uresb.sln b/deps/icu/source/samples/uresb/uresb.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uresb/uresb.sln rename to deps/icu/source/samples/uresb/uresb.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/uresb/uresb.vcxproj b/deps/icu/source/samples/uresb/uresb.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uresb/uresb.vcxproj rename to deps/icu/source/samples/uresb/uresb.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/uresb/uresb.vcxproj.filters b/deps/icu/source/samples/uresb/uresb.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uresb/uresb.vcxproj.filters rename to deps/icu/source/samples/uresb/uresb.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/ustring/readme.txt b/deps/icu/source/samples/ustring/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ustring/readme.txt rename to deps/icu/source/samples/ustring/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/ustring/ustring.cpp b/deps/icu/source/samples/ustring/ustring.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ustring/ustring.cpp rename to deps/icu/source/samples/ustring/ustring.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/ustring/ustring.sln b/deps/icu/source/samples/ustring/ustring.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ustring/ustring.sln rename to deps/icu/source/samples/ustring/ustring.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/ustring/ustring.vcxproj b/deps/icu/source/samples/ustring/ustring.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ustring/ustring.vcxproj rename to deps/icu/source/samples/ustring/ustring.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/ustring/ustring.vcxproj.filters b/deps/icu/source/samples/ustring/ustring.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ustring/ustring.vcxproj.filters rename to deps/icu/source/samples/ustring/ustring.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/stubdata/BUILD.bazel b/deps/icu/source/stubdata/BUILD.bazel similarity index 100% rename from bootstrap/cxx/deps/icu/source/stubdata/BUILD.bazel rename to deps/icu/source/stubdata/BUILD.bazel diff --git a/bootstrap/cxx/deps/icu/source/stubdata/Makefile.in b/deps/icu/source/stubdata/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/stubdata/Makefile.in rename to deps/icu/source/stubdata/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/stubdata/sources.txt b/deps/icu/source/stubdata/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/stubdata/sources.txt rename to deps/icu/source/stubdata/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/stubdata/stubdata.cpp b/deps/icu/source/stubdata/stubdata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/stubdata/stubdata.cpp rename to deps/icu/source/stubdata/stubdata.cpp diff --git a/bootstrap/cxx/deps/icu/source/stubdata/stubdata.vcxproj b/deps/icu/source/stubdata/stubdata.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/stubdata/stubdata.vcxproj rename to deps/icu/source/stubdata/stubdata.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/stubdata/stubdata.vcxproj.filters b/deps/icu/source/stubdata/stubdata.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/stubdata/stubdata.vcxproj.filters rename to deps/icu/source/stubdata/stubdata.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/Makefile.in b/deps/icu/source/test/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/Makefile.in rename to deps/icu/source/test/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/Makefile.in b/deps/icu/source/test/cintltst/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/Makefile.in rename to deps/icu/source/test/cintltst/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/bocu1tst.c b/deps/icu/source/test/cintltst/bocu1tst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/bocu1tst.c rename to deps/icu/source/test/cintltst/bocu1tst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/callcoll.c b/deps/icu/source/test/cintltst/callcoll.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/callcoll.c rename to deps/icu/source/test/cintltst/callcoll.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/callcoll.h b/deps/icu/source/test/cintltst/callcoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/callcoll.h rename to deps/icu/source/test/cintltst/callcoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/calldata.h b/deps/icu/source/test/cintltst/calldata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/calldata.h rename to deps/icu/source/test/cintltst/calldata.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/calltest.c b/deps/icu/source/test/cintltst/calltest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/calltest.c rename to deps/icu/source/test/cintltst/calltest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/capitst.c b/deps/icu/source/test/cintltst/capitst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/capitst.c rename to deps/icu/source/test/cintltst/capitst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/capitst.h b/deps/icu/source/test/cintltst/capitst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/capitst.h rename to deps/icu/source/test/cintltst/capitst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cbiapts.c b/deps/icu/source/test/cintltst/cbiapts.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cbiapts.c rename to deps/icu/source/test/cintltst/cbiapts.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cbiapts.h b/deps/icu/source/test/cintltst/cbiapts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cbiapts.h rename to deps/icu/source/test/cintltst/cbiapts.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cbididat.c b/deps/icu/source/test/cintltst/cbididat.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cbididat.c rename to deps/icu/source/test/cintltst/cbididat.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cbiditransformtst.c b/deps/icu/source/test/cintltst/cbiditransformtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cbiditransformtst.c rename to deps/icu/source/test/cintltst/cbiditransformtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cbiditst.c b/deps/icu/source/test/cintltst/cbiditst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cbiditst.c rename to deps/icu/source/test/cintltst/cbiditst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cbiditst.h b/deps/icu/source/test/cintltst/cbiditst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cbiditst.h rename to deps/icu/source/test/cintltst/cbiditst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cbkittst.c b/deps/icu/source/test/cintltst/cbkittst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cbkittst.c rename to deps/icu/source/test/cintltst/cbkittst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ccaltst.c b/deps/icu/source/test/cintltst/ccaltst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ccaltst.c rename to deps/icu/source/test/cintltst/ccaltst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ccaltst.h b/deps/icu/source/test/cintltst/ccaltst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ccaltst.h rename to deps/icu/source/test/cintltst/ccaltst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ccapitst.c b/deps/icu/source/test/cintltst/ccapitst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ccapitst.c rename to deps/icu/source/test/cintltst/ccapitst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ccapitst.h b/deps/icu/source/test/cintltst/ccapitst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ccapitst.h rename to deps/icu/source/test/cintltst/ccapitst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ccolltst.c b/deps/icu/source/test/cintltst/ccolltst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ccolltst.c rename to deps/icu/source/test/cintltst/ccolltst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ccolltst.h b/deps/icu/source/test/cintltst/ccolltst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ccolltst.h rename to deps/icu/source/test/cintltst/ccolltst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cconvtst.c b/deps/icu/source/test/cintltst/cconvtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cconvtst.c rename to deps/icu/source/test/cintltst/cconvtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cctest.c b/deps/icu/source/test/cintltst/cctest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cctest.c rename to deps/icu/source/test/cintltst/cctest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ccurrtst.c b/deps/icu/source/test/cintltst/ccurrtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ccurrtst.c rename to deps/icu/source/test/cintltst/ccurrtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ccurrtst.h b/deps/icu/source/test/cintltst/ccurrtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ccurrtst.h rename to deps/icu/source/test/cintltst/ccurrtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cdateintervalformattest.c b/deps/icu/source/test/cintltst/cdateintervalformattest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cdateintervalformattest.c rename to deps/icu/source/test/cintltst/cdateintervalformattest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cdattst.c b/deps/icu/source/test/cintltst/cdattst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cdattst.c rename to deps/icu/source/test/cintltst/cdattst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cdattst.h b/deps/icu/source/test/cintltst/cdattst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cdattst.h rename to deps/icu/source/test/cintltst/cdattst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cdetst.c b/deps/icu/source/test/cintltst/cdetst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cdetst.c rename to deps/icu/source/test/cintltst/cdetst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cdetst.h b/deps/icu/source/test/cintltst/cdetst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cdetst.h rename to deps/icu/source/test/cintltst/cdetst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cdtdptst.c b/deps/icu/source/test/cintltst/cdtdptst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cdtdptst.c rename to deps/icu/source/test/cintltst/cdtdptst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cdtdptst.h b/deps/icu/source/test/cintltst/cdtdptst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cdtdptst.h rename to deps/icu/source/test/cintltst/cdtdptst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cdtrgtst.c b/deps/icu/source/test/cintltst/cdtrgtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cdtrgtst.c rename to deps/icu/source/test/cintltst/cdtrgtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cdtrgtst.h b/deps/icu/source/test/cintltst/cdtrgtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cdtrgtst.h rename to deps/icu/source/test/cintltst/cdtrgtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cestst.c b/deps/icu/source/test/cintltst/cestst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cestst.c rename to deps/icu/source/test/cintltst/cestst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cestst.h b/deps/icu/source/test/cintltst/cestst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cestst.h rename to deps/icu/source/test/cintltst/cestst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cfintst.c b/deps/icu/source/test/cintltst/cfintst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cfintst.c rename to deps/icu/source/test/cintltst/cfintst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cfintst.h b/deps/icu/source/test/cintltst/cfintst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cfintst.h rename to deps/icu/source/test/cintltst/cfintst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cformtst.c b/deps/icu/source/test/cintltst/cformtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cformtst.c rename to deps/icu/source/test/cintltst/cformtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cformtst.h b/deps/icu/source/test/cintltst/cformtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cformtst.h rename to deps/icu/source/test/cintltst/cformtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cfrtst.c b/deps/icu/source/test/cintltst/cfrtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cfrtst.c rename to deps/icu/source/test/cintltst/cfrtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cfrtst.h b/deps/icu/source/test/cintltst/cfrtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cfrtst.h rename to deps/icu/source/test/cintltst/cfrtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cg7coll.c b/deps/icu/source/test/cintltst/cg7coll.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cg7coll.c rename to deps/icu/source/test/cintltst/cg7coll.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cg7coll.h b/deps/icu/source/test/cintltst/cg7coll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cg7coll.h rename to deps/icu/source/test/cintltst/cg7coll.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cgendtst.c b/deps/icu/source/test/cintltst/cgendtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cgendtst.c rename to deps/icu/source/test/cintltst/cgendtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/chashtst.c b/deps/icu/source/test/cintltst/chashtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/chashtst.c rename to deps/icu/source/test/cintltst/chashtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cintltst.c b/deps/icu/source/test/cintltst/cintltst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cintltst.c rename to deps/icu/source/test/cintltst/cintltst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cintltst.h b/deps/icu/source/test/cintltst/cintltst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cintltst.h rename to deps/icu/source/test/cintltst/cintltst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cintltst.vcxproj b/deps/icu/source/test/cintltst/cintltst.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cintltst.vcxproj rename to deps/icu/source/test/cintltst/cintltst.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cintltst.vcxproj.filters b/deps/icu/source/test/cintltst/cintltst.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cintltst.vcxproj.filters rename to deps/icu/source/test/cintltst/cintltst.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/citertst.c b/deps/icu/source/test/cintltst/citertst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/citertst.c rename to deps/icu/source/test/cintltst/citertst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/citertst.h b/deps/icu/source/test/cintltst/citertst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/citertst.h rename to deps/icu/source/test/cintltst/citertst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cjaptst.c b/deps/icu/source/test/cintltst/cjaptst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cjaptst.c rename to deps/icu/source/test/cintltst/cjaptst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cjaptst.h b/deps/icu/source/test/cintltst/cjaptst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cjaptst.h rename to deps/icu/source/test/cintltst/cjaptst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cldrtest.c b/deps/icu/source/test/cintltst/cldrtest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cldrtest.c rename to deps/icu/source/test/cintltst/cldrtest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cloctst.c b/deps/icu/source/test/cintltst/cloctst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cloctst.c rename to deps/icu/source/test/cintltst/cloctst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cloctst.h b/deps/icu/source/test/cintltst/cloctst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cloctst.h rename to deps/icu/source/test/cintltst/cloctst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cmsccoll.c b/deps/icu/source/test/cintltst/cmsccoll.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cmsccoll.c rename to deps/icu/source/test/cintltst/cmsccoll.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cmsgtst.c b/deps/icu/source/test/cintltst/cmsgtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cmsgtst.c rename to deps/icu/source/test/cintltst/cmsgtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cmsgtst.h b/deps/icu/source/test/cintltst/cmsgtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cmsgtst.h rename to deps/icu/source/test/cintltst/cmsgtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cnmdptst.c b/deps/icu/source/test/cintltst/cnmdptst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cnmdptst.c rename to deps/icu/source/test/cintltst/cnmdptst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cnmdptst.h b/deps/icu/source/test/cintltst/cnmdptst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cnmdptst.h rename to deps/icu/source/test/cintltst/cnmdptst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cnormtst.c b/deps/icu/source/test/cintltst/cnormtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cnormtst.c rename to deps/icu/source/test/cintltst/cnormtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cnormtst.h b/deps/icu/source/test/cintltst/cnormtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cnormtst.h rename to deps/icu/source/test/cintltst/cnormtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cnumtst.c b/deps/icu/source/test/cintltst/cnumtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cnumtst.c rename to deps/icu/source/test/cintltst/cnumtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cnumtst.h b/deps/icu/source/test/cintltst/cnumtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cnumtst.h rename to deps/icu/source/test/cintltst/cnumtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cpluralrulestest.c b/deps/icu/source/test/cintltst/cpluralrulestest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cpluralrulestest.c rename to deps/icu/source/test/cintltst/cpluralrulestest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cposxtst.c b/deps/icu/source/test/cintltst/cposxtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cposxtst.c rename to deps/icu/source/test/cintltst/cposxtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/crelativedateformattest.c b/deps/icu/source/test/cintltst/crelativedateformattest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/crelativedateformattest.c rename to deps/icu/source/test/cintltst/crelativedateformattest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/crestst.c b/deps/icu/source/test/cintltst/crestst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/crestst.c rename to deps/icu/source/test/cintltst/crestst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/crestst.h b/deps/icu/source/test/cintltst/crestst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/crestst.h rename to deps/icu/source/test/cintltst/crestst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/creststn.c b/deps/icu/source/test/cintltst/creststn.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/creststn.c rename to deps/icu/source/test/cintltst/creststn.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/creststn.h b/deps/icu/source/test/cintltst/creststn.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/creststn.h rename to deps/icu/source/test/cintltst/creststn.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cstrcase.c b/deps/icu/source/test/cintltst/cstrcase.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cstrcase.c rename to deps/icu/source/test/cintltst/cstrcase.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cstrtest.c b/deps/icu/source/test/cintltst/cstrtest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cstrtest.c rename to deps/icu/source/test/cintltst/cstrtest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cturtst.c b/deps/icu/source/test/cintltst/cturtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cturtst.c rename to deps/icu/source/test/cintltst/cturtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cturtst.h b/deps/icu/source/test/cintltst/cturtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cturtst.h rename to deps/icu/source/test/cintltst/cturtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cucdapi.c b/deps/icu/source/test/cintltst/cucdapi.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cucdapi.c rename to deps/icu/source/test/cintltst/cucdapi.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cucdapi.h b/deps/icu/source/test/cintltst/cucdapi.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cucdapi.h rename to deps/icu/source/test/cintltst/cucdapi.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cucdtst.c b/deps/icu/source/test/cintltst/cucdtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cucdtst.c rename to deps/icu/source/test/cintltst/cucdtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/currtest.c b/deps/icu/source/test/cintltst/currtest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/currtest.c rename to deps/icu/source/test/cintltst/currtest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/custrtrn.c b/deps/icu/source/test/cintltst/custrtrn.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/custrtrn.c rename to deps/icu/source/test/cintltst/custrtrn.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/custrtst.c b/deps/icu/source/test/cintltst/custrtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/custrtst.c rename to deps/icu/source/test/cintltst/custrtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cutiltst.c b/deps/icu/source/test/cintltst/cutiltst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cutiltst.c rename to deps/icu/source/test/cintltst/cutiltst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/encoll.c b/deps/icu/source/test/cintltst/encoll.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/encoll.c rename to deps/icu/source/test/cintltst/encoll.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/encoll.h b/deps/icu/source/test/cintltst/encoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/encoll.h rename to deps/icu/source/test/cintltst/encoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/eurocreg.c b/deps/icu/source/test/cintltst/eurocreg.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/eurocreg.c rename to deps/icu/source/test/cintltst/eurocreg.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/hpmufn.c b/deps/icu/source/test/cintltst/hpmufn.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/hpmufn.c rename to deps/icu/source/test/cintltst/hpmufn.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/idnatest.c b/deps/icu/source/test/cintltst/idnatest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/idnatest.c rename to deps/icu/source/test/cintltst/idnatest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/nccbtst.c b/deps/icu/source/test/cintltst/nccbtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/nccbtst.c rename to deps/icu/source/test/cintltst/nccbtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/nccbtst.h b/deps/icu/source/test/cintltst/nccbtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/nccbtst.h rename to deps/icu/source/test/cintltst/nccbtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ncnvfbts.c b/deps/icu/source/test/cintltst/ncnvfbts.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ncnvfbts.c rename to deps/icu/source/test/cintltst/ncnvfbts.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ncnvfbts.h b/deps/icu/source/test/cintltst/ncnvfbts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ncnvfbts.h rename to deps/icu/source/test/cintltst/ncnvfbts.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ncnvtst.c b/deps/icu/source/test/cintltst/ncnvtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ncnvtst.c rename to deps/icu/source/test/cintltst/ncnvtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/nfsprep.c b/deps/icu/source/test/cintltst/nfsprep.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/nfsprep.c rename to deps/icu/source/test/cintltst/nfsprep.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/nfsprep.h b/deps/icu/source/test/cintltst/nfsprep.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/nfsprep.h rename to deps/icu/source/test/cintltst/nfsprep.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/nucnvtst.c b/deps/icu/source/test/cintltst/nucnvtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/nucnvtst.c rename to deps/icu/source/test/cintltst/nucnvtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/nucnvtst.h b/deps/icu/source/test/cintltst/nucnvtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/nucnvtst.h rename to deps/icu/source/test/cintltst/nucnvtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/putiltst.c b/deps/icu/source/test/cintltst/putiltst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/putiltst.c rename to deps/icu/source/test/cintltst/putiltst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/reapits.c b/deps/icu/source/test/cintltst/reapits.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/reapits.c rename to deps/icu/source/test/cintltst/reapits.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/sorttest.c b/deps/icu/source/test/cintltst/sorttest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/sorttest.c rename to deps/icu/source/test/cintltst/sorttest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/spooftest.c b/deps/icu/source/test/cintltst/spooftest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/spooftest.c rename to deps/icu/source/test/cintltst/spooftest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/spreptst.c b/deps/icu/source/test/cintltst/spreptst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/spreptst.c rename to deps/icu/source/test/cintltst/spreptst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/sprpdata.c b/deps/icu/source/test/cintltst/sprpdata.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/sprpdata.c rename to deps/icu/source/test/cintltst/sprpdata.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/stdnmtst.c b/deps/icu/source/test/cintltst/stdnmtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/stdnmtst.c rename to deps/icu/source/test/cintltst/stdnmtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/tracetst.c b/deps/icu/source/test/cintltst/tracetst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/tracetst.c rename to deps/icu/source/test/cintltst/tracetst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/trie2test.c b/deps/icu/source/test/cintltst/trie2test.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/trie2test.c rename to deps/icu/source/test/cintltst/trie2test.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/trietest.c b/deps/icu/source/test/cintltst/trietest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/trietest.c rename to deps/icu/source/test/cintltst/trietest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ucnvseltst.c b/deps/icu/source/test/cintltst/ucnvseltst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ucnvseltst.c rename to deps/icu/source/test/cintltst/ucnvseltst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ucnvseltst.h b/deps/icu/source/test/cintltst/ucnvseltst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ucnvseltst.h rename to deps/icu/source/test/cintltst/ucnvseltst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ucptrietest.c b/deps/icu/source/test/cintltst/ucptrietest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ucptrietest.c rename to deps/icu/source/test/cintltst/ucptrietest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ucsdetst.c b/deps/icu/source/test/cintltst/ucsdetst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ucsdetst.c rename to deps/icu/source/test/cintltst/ucsdetst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/udatatst.c b/deps/icu/source/test/cintltst/udatatst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/udatatst.c rename to deps/icu/source/test/cintltst/udatatst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/udatpg_test.c b/deps/icu/source/test/cintltst/udatpg_test.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/udatpg_test.c rename to deps/icu/source/test/cintltst/udatpg_test.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/uenumtst.c b/deps/icu/source/test/cintltst/uenumtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/uenumtst.c rename to deps/icu/source/test/cintltst/uenumtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/uformattedvaluetst.c b/deps/icu/source/test/cintltst/uformattedvaluetst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/uformattedvaluetst.c rename to deps/icu/source/test/cintltst/uformattedvaluetst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ulistfmttest.c b/deps/icu/source/test/cintltst/ulistfmttest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ulistfmttest.c rename to deps/icu/source/test/cintltst/ulistfmttest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/unumberformattertst.c b/deps/icu/source/test/cintltst/unumberformattertst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/unumberformattertst.c rename to deps/icu/source/test/cintltst/unumberformattertst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/unumberrangeformattertst.c b/deps/icu/source/test/cintltst/unumberrangeformattertst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/unumberrangeformattertst.c rename to deps/icu/source/test/cintltst/unumberrangeformattertst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/uregiontest.c b/deps/icu/source/test/cintltst/uregiontest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/uregiontest.c rename to deps/icu/source/test/cintltst/uregiontest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/usettest.c b/deps/icu/source/test/cintltst/usettest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/usettest.c rename to deps/icu/source/test/cintltst/usettest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/usrchdat.c b/deps/icu/source/test/cintltst/usrchdat.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/usrchdat.c rename to deps/icu/source/test/cintltst/usrchdat.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/usrchtst.c b/deps/icu/source/test/cintltst/usrchtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/usrchtst.c rename to deps/icu/source/test/cintltst/usrchtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/utexttst.c b/deps/icu/source/test/cintltst/utexttst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/utexttst.c rename to deps/icu/source/test/cintltst/utexttst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/utf16tst.c b/deps/icu/source/test/cintltst/utf16tst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/utf16tst.c rename to deps/icu/source/test/cintltst/utf16tst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/utf8tst.c b/deps/icu/source/test/cintltst/utf8tst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/utf8tst.c rename to deps/icu/source/test/cintltst/utf8tst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/utmstest.c b/deps/icu/source/test/cintltst/utmstest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/utmstest.c rename to deps/icu/source/test/cintltst/utmstest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/utransts.c b/deps/icu/source/test/cintltst/utransts.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/utransts.c rename to deps/icu/source/test/cintltst/utransts.c diff --git a/bootstrap/cxx/deps/icu/source/test/compat/Makefile.in b/deps/icu/source/test/compat/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/compat/Makefile.in rename to deps/icu/source/test/compat/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/compat/readme.txt b/deps/icu/source/test/compat/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/compat/readme.txt rename to deps/icu/source/test/compat/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/test/compat/tzdate.c b/deps/icu/source/test/compat/tzdate.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/compat/tzdate.c rename to deps/icu/source/test/compat/tzdate.c diff --git a/bootstrap/cxx/deps/icu/source/test/compat/tzone.pl b/deps/icu/source/test/compat/tzone.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/compat/tzone.pl rename to deps/icu/source/test/compat/tzone.pl diff --git a/bootstrap/cxx/deps/icu/source/test/depstest/dependencies.py b/deps/icu/source/test/depstest/dependencies.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/depstest/dependencies.py rename to deps/icu/source/test/depstest/dependencies.py diff --git a/bootstrap/cxx/deps/icu/source/test/depstest/dependencies.txt b/deps/icu/source/test/depstest/dependencies.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/depstest/dependencies.txt rename to deps/icu/source/test/depstest/dependencies.txt diff --git a/bootstrap/cxx/deps/icu/source/test/depstest/depstest.py b/deps/icu/source/test/depstest/depstest.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/depstest/depstest.py rename to deps/icu/source/test/depstest/depstest.py diff --git a/bootstrap/cxx/deps/icu/source/test/depstest/icu-dependencies-mode.el b/deps/icu/source/test/depstest/icu-dependencies-mode.el similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/depstest/icu-dependencies-mode.el rename to deps/icu/source/test/depstest/icu-dependencies-mode.el diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/Makefile.in b/deps/icu/source/test/fuzzer/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/Makefile.in rename to deps/icu/source/test/fuzzer/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/break_iterator_fuzzer.cpp b/deps/icu/source/test/fuzzer/break_iterator_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/break_iterator_fuzzer.cpp rename to deps/icu/source/test/fuzzer/break_iterator_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/collator_compare_fuzzer.cpp b/deps/icu/source/test/fuzzer/collator_compare_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/collator_compare_fuzzer.cpp rename to deps/icu/source/test/fuzzer/collator_compare_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/collator_rulebased_ICU-21041.fuzz b/deps/icu/source/test/fuzzer/collator_rulebased_ICU-21041.fuzz similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/collator_rulebased_ICU-21041.fuzz rename to deps/icu/source/test/fuzzer/collator_rulebased_ICU-21041.fuzz diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/collator_rulebased_fuzzer.cpp b/deps/icu/source/test/fuzzer/collator_rulebased_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/collator_rulebased_fuzzer.cpp rename to deps/icu/source/test/fuzzer/collator_rulebased_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/collator_rulebased_fuzzer_seed_corpus.txt b/deps/icu/source/test/fuzzer/collator_rulebased_fuzzer_seed_corpus.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/collator_rulebased_fuzzer_seed_corpus.txt rename to deps/icu/source/test/fuzzer/collator_rulebased_fuzzer_seed_corpus.txt diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/converter_fuzzer.cpp b/deps/icu/source/test/fuzzer/converter_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/converter_fuzzer.cpp rename to deps/icu/source/test/fuzzer/converter_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/fuzzer_driver.cpp b/deps/icu/source/test/fuzzer/fuzzer_driver.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/fuzzer_driver.cpp rename to deps/icu/source/test/fuzzer/fuzzer_driver.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/fuzzer_utils.h b/deps/icu/source/test/fuzzer/fuzzer_utils.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/fuzzer_utils.h rename to deps/icu/source/test/fuzzer/fuzzer_utils.h diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/locale_fuzzer.cpp b/deps/icu/source/test/fuzzer/locale_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/locale_fuzzer.cpp rename to deps/icu/source/test/fuzzer/locale_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/locale_util.cpp b/deps/icu/source/test/fuzzer/locale_util.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/locale_util.cpp rename to deps/icu/source/test/fuzzer/locale_util.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/locale_util.h b/deps/icu/source/test/fuzzer/locale_util.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/locale_util.h rename to deps/icu/source/test/fuzzer/locale_util.h diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/number_format_fuzzer.cpp b/deps/icu/source/test/fuzzer/number_format_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/number_format_fuzzer.cpp rename to deps/icu/source/test/fuzzer/number_format_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/ucasemap_fuzzer.cpp b/deps/icu/source/test/fuzzer/ucasemap_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/ucasemap_fuzzer.cpp rename to deps/icu/source/test/fuzzer/ucasemap_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_canonicalize_fuzzer.cpp b/deps/icu/source/test/fuzzer/uloc_canonicalize_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_canonicalize_fuzzer.cpp rename to deps/icu/source/test/fuzzer/uloc_canonicalize_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_canonicalize_fuzzer_seed_corpus.txt b/deps/icu/source/test/fuzzer/uloc_canonicalize_fuzzer_seed_corpus.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_canonicalize_fuzzer_seed_corpus.txt rename to deps/icu/source/test/fuzzer/uloc_canonicalize_fuzzer_seed_corpus.txt diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_for_language_tag_fuzzer.cpp b/deps/icu/source/test/fuzzer/uloc_for_language_tag_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_for_language_tag_fuzzer.cpp rename to deps/icu/source/test/fuzzer/uloc_for_language_tag_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_for_language_tag_fuzzer_seed_corpus.txt b/deps/icu/source/test/fuzzer/uloc_for_language_tag_fuzzer_seed_corpus.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_for_language_tag_fuzzer_seed_corpus.txt rename to deps/icu/source/test/fuzzer/uloc_for_language_tag_fuzzer_seed_corpus.txt diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_get_name_fuzzer.cpp b/deps/icu/source/test/fuzzer/uloc_get_name_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_get_name_fuzzer.cpp rename to deps/icu/source/test/fuzzer/uloc_get_name_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_get_name_fuzzer_seed_corpus.txt b/deps/icu/source/test/fuzzer/uloc_get_name_fuzzer_seed_corpus.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_get_name_fuzzer_seed_corpus.txt rename to deps/icu/source/test/fuzzer/uloc_get_name_fuzzer_seed_corpus.txt diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_is_right_to_left_fuzzer.cpp b/deps/icu/source/test/fuzzer/uloc_is_right_to_left_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_is_right_to_left_fuzzer.cpp rename to deps/icu/source/test/fuzzer/uloc_is_right_to_left_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_is_right_to_left_fuzzer_seed_corpus.txt b/deps/icu/source/test/fuzzer/uloc_is_right_to_left_fuzzer_seed_corpus.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_is_right_to_left_fuzzer_seed_corpus.txt rename to deps/icu/source/test/fuzzer/uloc_is_right_to_left_fuzzer_seed_corpus.txt diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_open_keywords_fuzzer.cpp b/deps/icu/source/test/fuzzer/uloc_open_keywords_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_open_keywords_fuzzer.cpp rename to deps/icu/source/test/fuzzer/uloc_open_keywords_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_open_keywords_fuzzer_seed_corpus.txt b/deps/icu/source/test/fuzzer/uloc_open_keywords_fuzzer_seed_corpus.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_open_keywords_fuzzer_seed_corpus.txt rename to deps/icu/source/test/fuzzer/uloc_open_keywords_fuzzer_seed_corpus.txt diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/unicode_string_codepage_create_fuzzer.cpp b/deps/icu/source/test/fuzzer/unicode_string_codepage_create_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/unicode_string_codepage_create_fuzzer.cpp rename to deps/icu/source/test/fuzzer/unicode_string_codepage_create_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/uregex_open_fuzzer.cpp b/deps/icu/source/test/fuzzer/uregex_open_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/uregex_open_fuzzer.cpp rename to deps/icu/source/test/fuzzer/uregex_open_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/uregex_open_fuzzer.dict b/deps/icu/source/test/fuzzer/uregex_open_fuzzer.dict similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/uregex_open_fuzzer.dict rename to deps/icu/source/test/fuzzer/uregex_open_fuzzer.dict diff --git a/bootstrap/cxx/deps/icu/source/test/hdrtst/Makefile.in b/deps/icu/source/test/hdrtst/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/hdrtst/Makefile.in rename to deps/icu/source/test/hdrtst/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/hdrtst/dfiles.txt b/deps/icu/source/test/hdrtst/dfiles.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/hdrtst/dfiles.txt rename to deps/icu/source/test/hdrtst/dfiles.txt diff --git a/bootstrap/cxx/deps/icu/source/test/hdrtst/testinternalheaders.sh b/deps/icu/source/test/hdrtst/testinternalheaders.sh similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/hdrtst/testinternalheaders.sh rename to deps/icu/source/test/hdrtst/testinternalheaders.sh diff --git a/bootstrap/cxx/deps/icu/source/test/hdrtst/testtagsguards.sh b/deps/icu/source/test/hdrtst/testtagsguards.sh similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/hdrtst/testtagsguards.sh rename to deps/icu/source/test/hdrtst/testtagsguards.sh diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/Makefile.in b/deps/icu/source/test/intltest/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/Makefile.in rename to deps/icu/source/test/intltest/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/aliastst.cpp b/deps/icu/source/test/intltest/aliastst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/aliastst.cpp rename to deps/icu/source/test/intltest/aliastst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/aliastst.h b/deps/icu/source/test/intltest/aliastst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/aliastst.h rename to deps/icu/source/test/intltest/aliastst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/allcoll.cpp b/deps/icu/source/test/intltest/allcoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/allcoll.cpp rename to deps/icu/source/test/intltest/allcoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/allcoll.h b/deps/icu/source/test/intltest/allcoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/allcoll.h rename to deps/icu/source/test/intltest/allcoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/alphaindextst.cpp b/deps/icu/source/test/intltest/alphaindextst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/alphaindextst.cpp rename to deps/icu/source/test/intltest/alphaindextst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/alphaindextst.h b/deps/icu/source/test/intltest/alphaindextst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/alphaindextst.h rename to deps/icu/source/test/intltest/alphaindextst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/apicoll.cpp b/deps/icu/source/test/intltest/apicoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/apicoll.cpp rename to deps/icu/source/test/intltest/apicoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/apicoll.h b/deps/icu/source/test/intltest/apicoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/apicoll.h rename to deps/icu/source/test/intltest/apicoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/astrotst.cpp b/deps/icu/source/test/intltest/astrotst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/astrotst.cpp rename to deps/icu/source/test/intltest/astrotst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/astrotst.h b/deps/icu/source/test/intltest/astrotst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/astrotst.h rename to deps/icu/source/test/intltest/astrotst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/bidiconf.cpp b/deps/icu/source/test/intltest/bidiconf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/bidiconf.cpp rename to deps/icu/source/test/intltest/bidiconf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/bytestrietest.cpp b/deps/icu/source/test/intltest/bytestrietest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/bytestrietest.cpp rename to deps/icu/source/test/intltest/bytestrietest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/calcasts.cpp b/deps/icu/source/test/intltest/calcasts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/calcasts.cpp rename to deps/icu/source/test/intltest/calcasts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/calcasts.h b/deps/icu/source/test/intltest/calcasts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/calcasts.h rename to deps/icu/source/test/intltest/calcasts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/callimts.cpp b/deps/icu/source/test/intltest/callimts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/callimts.cpp rename to deps/icu/source/test/intltest/callimts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/callimts.h b/deps/icu/source/test/intltest/callimts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/callimts.h rename to deps/icu/source/test/intltest/callimts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/calregts.cpp b/deps/icu/source/test/intltest/calregts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/calregts.cpp rename to deps/icu/source/test/intltest/calregts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/calregts.h b/deps/icu/source/test/intltest/calregts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/calregts.h rename to deps/icu/source/test/intltest/calregts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/caltest.cpp b/deps/icu/source/test/intltest/caltest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/caltest.cpp rename to deps/icu/source/test/intltest/caltest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/caltest.h b/deps/icu/source/test/intltest/caltest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/caltest.h rename to deps/icu/source/test/intltest/caltest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/caltestdata.h b/deps/icu/source/test/intltest/caltestdata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/caltestdata.h rename to deps/icu/source/test/intltest/caltestdata.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/caltztst.cpp b/deps/icu/source/test/intltest/caltztst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/caltztst.cpp rename to deps/icu/source/test/intltest/caltztst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/caltztst.h b/deps/icu/source/test/intltest/caltztst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/caltztst.h rename to deps/icu/source/test/intltest/caltztst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/canittst.cpp b/deps/icu/source/test/intltest/canittst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/canittst.cpp rename to deps/icu/source/test/intltest/canittst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/canittst.h b/deps/icu/source/test/intltest/canittst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/canittst.h rename to deps/icu/source/test/intltest/canittst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/citrtest.cpp b/deps/icu/source/test/intltest/citrtest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/citrtest.cpp rename to deps/icu/source/test/intltest/citrtest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/citrtest.h b/deps/icu/source/test/intltest/citrtest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/citrtest.h rename to deps/icu/source/test/intltest/citrtest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/collationtest.cpp b/deps/icu/source/test/intltest/collationtest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/collationtest.cpp rename to deps/icu/source/test/intltest/collationtest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/colldata.cpp b/deps/icu/source/test/intltest/colldata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/colldata.cpp rename to deps/icu/source/test/intltest/colldata.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/colldata.h b/deps/icu/source/test/intltest/colldata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/colldata.h rename to deps/icu/source/test/intltest/colldata.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/compactdecimalformattest.cpp b/deps/icu/source/test/intltest/compactdecimalformattest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/compactdecimalformattest.cpp rename to deps/icu/source/test/intltest/compactdecimalformattest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/convtest.cpp b/deps/icu/source/test/intltest/convtest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/convtest.cpp rename to deps/icu/source/test/intltest/convtest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/convtest.h b/deps/icu/source/test/intltest/convtest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/convtest.h rename to deps/icu/source/test/intltest/convtest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/cpdtrtst.cpp b/deps/icu/source/test/intltest/cpdtrtst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/cpdtrtst.cpp rename to deps/icu/source/test/intltest/cpdtrtst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/cpdtrtst.h b/deps/icu/source/test/intltest/cpdtrtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/cpdtrtst.h rename to deps/icu/source/test/intltest/cpdtrtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/csdetest.cpp b/deps/icu/source/test/intltest/csdetest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/csdetest.cpp rename to deps/icu/source/test/intltest/csdetest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/csdetest.h b/deps/icu/source/test/intltest/csdetest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/csdetest.h rename to deps/icu/source/test/intltest/csdetest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/currcoll.cpp b/deps/icu/source/test/intltest/currcoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/currcoll.cpp rename to deps/icu/source/test/intltest/currcoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/currcoll.h b/deps/icu/source/test/intltest/currcoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/currcoll.h rename to deps/icu/source/test/intltest/currcoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dadrcal.cpp b/deps/icu/source/test/intltest/dadrcal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dadrcal.cpp rename to deps/icu/source/test/intltest/dadrcal.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dadrcal.h b/deps/icu/source/test/intltest/dadrcal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dadrcal.h rename to deps/icu/source/test/intltest/dadrcal.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dadrfmt.cpp b/deps/icu/source/test/intltest/dadrfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dadrfmt.cpp rename to deps/icu/source/test/intltest/dadrfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dadrfmt.h b/deps/icu/source/test/intltest/dadrfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dadrfmt.h rename to deps/icu/source/test/intltest/dadrfmt.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/datadrivennumberformattestsuite.cpp b/deps/icu/source/test/intltest/datadrivennumberformattestsuite.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/datadrivennumberformattestsuite.cpp rename to deps/icu/source/test/intltest/datadrivennumberformattestsuite.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/datadrivennumberformattestsuite.h b/deps/icu/source/test/intltest/datadrivennumberformattestsuite.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/datadrivennumberformattestsuite.h rename to deps/icu/source/test/intltest/datadrivennumberformattestsuite.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dcfmapts.cpp b/deps/icu/source/test/intltest/dcfmapts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dcfmapts.cpp rename to deps/icu/source/test/intltest/dcfmapts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dcfmapts.h b/deps/icu/source/test/intltest/dcfmapts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dcfmapts.h rename to deps/icu/source/test/intltest/dcfmapts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dcfmtest.cpp b/deps/icu/source/test/intltest/dcfmtest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dcfmtest.cpp rename to deps/icu/source/test/intltest/dcfmtest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dcfmtest.h b/deps/icu/source/test/intltest/dcfmtest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dcfmtest.h rename to deps/icu/source/test/intltest/dcfmtest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/decoll.cpp b/deps/icu/source/test/intltest/decoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/decoll.cpp rename to deps/icu/source/test/intltest/decoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/decoll.h b/deps/icu/source/test/intltest/decoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/decoll.h rename to deps/icu/source/test/intltest/decoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dtfmapts.cpp b/deps/icu/source/test/intltest/dtfmapts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dtfmapts.cpp rename to deps/icu/source/test/intltest/dtfmapts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dtfmapts.h b/deps/icu/source/test/intltest/dtfmapts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dtfmapts.h rename to deps/icu/source/test/intltest/dtfmapts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dtfmrgts.cpp b/deps/icu/source/test/intltest/dtfmrgts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dtfmrgts.cpp rename to deps/icu/source/test/intltest/dtfmrgts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dtfmrgts.h b/deps/icu/source/test/intltest/dtfmrgts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dtfmrgts.h rename to deps/icu/source/test/intltest/dtfmrgts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dtfmtrtts.cpp b/deps/icu/source/test/intltest/dtfmtrtts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dtfmtrtts.cpp rename to deps/icu/source/test/intltest/dtfmtrtts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dtfmtrtts.h b/deps/icu/source/test/intltest/dtfmtrtts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dtfmtrtts.h rename to deps/icu/source/test/intltest/dtfmtrtts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dtfmttst.cpp b/deps/icu/source/test/intltest/dtfmttst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dtfmttst.cpp rename to deps/icu/source/test/intltest/dtfmttst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dtfmttst.h b/deps/icu/source/test/intltest/dtfmttst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dtfmttst.h rename to deps/icu/source/test/intltest/dtfmttst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dtifmtts.cpp b/deps/icu/source/test/intltest/dtifmtts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dtifmtts.cpp rename to deps/icu/source/test/intltest/dtifmtts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dtifmtts.h b/deps/icu/source/test/intltest/dtifmtts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dtifmtts.h rename to deps/icu/source/test/intltest/dtifmtts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dtptngts.cpp b/deps/icu/source/test/intltest/dtptngts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dtptngts.cpp rename to deps/icu/source/test/intltest/dtptngts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dtptngts.h b/deps/icu/source/test/intltest/dtptngts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dtptngts.h rename to deps/icu/source/test/intltest/dtptngts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/encoll.cpp b/deps/icu/source/test/intltest/encoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/encoll.cpp rename to deps/icu/source/test/intltest/encoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/encoll.h b/deps/icu/source/test/intltest/encoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/encoll.h rename to deps/icu/source/test/intltest/encoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/erarulestest.cpp b/deps/icu/source/test/intltest/erarulestest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/erarulestest.cpp rename to deps/icu/source/test/intltest/erarulestest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/erarulestest.h b/deps/icu/source/test/intltest/erarulestest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/erarulestest.h rename to deps/icu/source/test/intltest/erarulestest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/escoll.cpp b/deps/icu/source/test/intltest/escoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/escoll.cpp rename to deps/icu/source/test/intltest/escoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/escoll.h b/deps/icu/source/test/intltest/escoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/escoll.h rename to deps/icu/source/test/intltest/escoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/ficoll.cpp b/deps/icu/source/test/intltest/ficoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/ficoll.cpp rename to deps/icu/source/test/intltest/ficoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/ficoll.h b/deps/icu/source/test/intltest/ficoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/ficoll.h rename to deps/icu/source/test/intltest/ficoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/fldset.cpp b/deps/icu/source/test/intltest/fldset.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/fldset.cpp rename to deps/icu/source/test/intltest/fldset.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/fldset.h b/deps/icu/source/test/intltest/fldset.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/fldset.h rename to deps/icu/source/test/intltest/fldset.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/formatted_string_builder_test.cpp b/deps/icu/source/test/intltest/formatted_string_builder_test.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/formatted_string_builder_test.cpp rename to deps/icu/source/test/intltest/formatted_string_builder_test.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/formattedvaluetest.cpp b/deps/icu/source/test/intltest/formattedvaluetest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/formattedvaluetest.cpp rename to deps/icu/source/test/intltest/formattedvaluetest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/frcoll.cpp b/deps/icu/source/test/intltest/frcoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/frcoll.cpp rename to deps/icu/source/test/intltest/frcoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/frcoll.h b/deps/icu/source/test/intltest/frcoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/frcoll.h rename to deps/icu/source/test/intltest/frcoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/g7coll.cpp b/deps/icu/source/test/intltest/g7coll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/g7coll.cpp rename to deps/icu/source/test/intltest/g7coll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/g7coll.h b/deps/icu/source/test/intltest/g7coll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/g7coll.h rename to deps/icu/source/test/intltest/g7coll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/genderinfotest.cpp b/deps/icu/source/test/intltest/genderinfotest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/genderinfotest.cpp rename to deps/icu/source/test/intltest/genderinfotest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/icusvtst.cpp b/deps/icu/source/test/intltest/icusvtst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/icusvtst.cpp rename to deps/icu/source/test/intltest/icusvtst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/icusvtst.h b/deps/icu/source/test/intltest/icusvtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/icusvtst.h rename to deps/icu/source/test/intltest/icusvtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/idnaconf.cpp b/deps/icu/source/test/intltest/idnaconf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/idnaconf.cpp rename to deps/icu/source/test/intltest/idnaconf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/idnaconf.h b/deps/icu/source/test/intltest/idnaconf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/idnaconf.h rename to deps/icu/source/test/intltest/idnaconf.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/idnaref.cpp b/deps/icu/source/test/intltest/idnaref.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/idnaref.cpp rename to deps/icu/source/test/intltest/idnaref.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/idnaref.h b/deps/icu/source/test/intltest/idnaref.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/idnaref.h rename to deps/icu/source/test/intltest/idnaref.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/incaltst.cpp b/deps/icu/source/test/intltest/incaltst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/incaltst.cpp rename to deps/icu/source/test/intltest/incaltst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/incaltst.h b/deps/icu/source/test/intltest/incaltst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/incaltst.h rename to deps/icu/source/test/intltest/incaltst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/intltest.cpp b/deps/icu/source/test/intltest/intltest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/intltest.cpp rename to deps/icu/source/test/intltest/intltest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/intltest.h b/deps/icu/source/test/intltest/intltest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/intltest.h rename to deps/icu/source/test/intltest/intltest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/intltest.vcxproj b/deps/icu/source/test/intltest/intltest.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/intltest.vcxproj rename to deps/icu/source/test/intltest/intltest.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/intltest.vcxproj.filters b/deps/icu/source/test/intltest/intltest.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/intltest.vcxproj.filters rename to deps/icu/source/test/intltest/intltest.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itercoll.cpp b/deps/icu/source/test/intltest/itercoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itercoll.cpp rename to deps/icu/source/test/intltest/itercoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itercoll.h b/deps/icu/source/test/intltest/itercoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itercoll.h rename to deps/icu/source/test/intltest/itercoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itformat.cpp b/deps/icu/source/test/intltest/itformat.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itformat.cpp rename to deps/icu/source/test/intltest/itformat.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itformat.h b/deps/icu/source/test/intltest/itformat.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itformat.h rename to deps/icu/source/test/intltest/itformat.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itmajor.cpp b/deps/icu/source/test/intltest/itmajor.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itmajor.cpp rename to deps/icu/source/test/intltest/itmajor.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itmajor.h b/deps/icu/source/test/intltest/itmajor.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itmajor.h rename to deps/icu/source/test/intltest/itmajor.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itrbbi.cpp b/deps/icu/source/test/intltest/itrbbi.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itrbbi.cpp rename to deps/icu/source/test/intltest/itrbbi.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itrbbi.h b/deps/icu/source/test/intltest/itrbbi.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itrbbi.h rename to deps/icu/source/test/intltest/itrbbi.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itrbnf.cpp b/deps/icu/source/test/intltest/itrbnf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itrbnf.cpp rename to deps/icu/source/test/intltest/itrbnf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itrbnf.h b/deps/icu/source/test/intltest/itrbnf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itrbnf.h rename to deps/icu/source/test/intltest/itrbnf.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itrbnfp.cpp b/deps/icu/source/test/intltest/itrbnfp.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itrbnfp.cpp rename to deps/icu/source/test/intltest/itrbnfp.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itrbnfp.h b/deps/icu/source/test/intltest/itrbnfp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itrbnfp.h rename to deps/icu/source/test/intltest/itrbnfp.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itrbnfrt.cpp b/deps/icu/source/test/intltest/itrbnfrt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itrbnfrt.cpp rename to deps/icu/source/test/intltest/itrbnfrt.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itrbnfrt.h b/deps/icu/source/test/intltest/itrbnfrt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itrbnfrt.h rename to deps/icu/source/test/intltest/itrbnfrt.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itspoof.cpp b/deps/icu/source/test/intltest/itspoof.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itspoof.cpp rename to deps/icu/source/test/intltest/itspoof.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itspoof.h b/deps/icu/source/test/intltest/itspoof.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itspoof.h rename to deps/icu/source/test/intltest/itspoof.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/ittrans.cpp b/deps/icu/source/test/intltest/ittrans.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/ittrans.cpp rename to deps/icu/source/test/intltest/ittrans.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/ittrans.h b/deps/icu/source/test/intltest/ittrans.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/ittrans.h rename to deps/icu/source/test/intltest/ittrans.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itutil.cpp b/deps/icu/source/test/intltest/itutil.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itutil.cpp rename to deps/icu/source/test/intltest/itutil.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itutil.h b/deps/icu/source/test/intltest/itutil.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itutil.h rename to deps/icu/source/test/intltest/itutil.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/jacoll.cpp b/deps/icu/source/test/intltest/jacoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/jacoll.cpp rename to deps/icu/source/test/intltest/jacoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/jacoll.h b/deps/icu/source/test/intltest/jacoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/jacoll.h rename to deps/icu/source/test/intltest/jacoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/jamotest.cpp b/deps/icu/source/test/intltest/jamotest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/jamotest.cpp rename to deps/icu/source/test/intltest/jamotest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/jamotest.h b/deps/icu/source/test/intltest/jamotest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/jamotest.h rename to deps/icu/source/test/intltest/jamotest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/lcukocol.cpp b/deps/icu/source/test/intltest/lcukocol.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/lcukocol.cpp rename to deps/icu/source/test/intltest/lcukocol.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/lcukocol.h b/deps/icu/source/test/intltest/lcukocol.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/lcukocol.h rename to deps/icu/source/test/intltest/lcukocol.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/listformattertest.cpp b/deps/icu/source/test/intltest/listformattertest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/listformattertest.cpp rename to deps/icu/source/test/intltest/listformattertest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/listformattertest.h b/deps/icu/source/test/intltest/listformattertest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/listformattertest.h rename to deps/icu/source/test/intltest/listformattertest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/localebuildertest.cpp b/deps/icu/source/test/intltest/localebuildertest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/localebuildertest.cpp rename to deps/icu/source/test/intltest/localebuildertest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/localebuildertest.h b/deps/icu/source/test/intltest/localebuildertest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/localebuildertest.h rename to deps/icu/source/test/intltest/localebuildertest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/localematchertest.cpp b/deps/icu/source/test/intltest/localematchertest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/localematchertest.cpp rename to deps/icu/source/test/intltest/localematchertest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/locnmtst.cpp b/deps/icu/source/test/intltest/locnmtst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/locnmtst.cpp rename to deps/icu/source/test/intltest/locnmtst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/locnmtst.h b/deps/icu/source/test/intltest/locnmtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/locnmtst.h rename to deps/icu/source/test/intltest/locnmtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/loctest.cpp b/deps/icu/source/test/intltest/loctest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/loctest.cpp rename to deps/icu/source/test/intltest/loctest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/loctest.h b/deps/icu/source/test/intltest/loctest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/loctest.h rename to deps/icu/source/test/intltest/loctest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/lstmbetst.cpp b/deps/icu/source/test/intltest/lstmbetst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/lstmbetst.cpp rename to deps/icu/source/test/intltest/lstmbetst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/lstmbetst.h b/deps/icu/source/test/intltest/lstmbetst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/lstmbetst.h rename to deps/icu/source/test/intltest/lstmbetst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/measfmttest.cpp b/deps/icu/source/test/intltest/measfmttest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/measfmttest.cpp rename to deps/icu/source/test/intltest/measfmttest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/miscdtfm.cpp b/deps/icu/source/test/intltest/miscdtfm.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/miscdtfm.cpp rename to deps/icu/source/test/intltest/miscdtfm.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/miscdtfm.h b/deps/icu/source/test/intltest/miscdtfm.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/miscdtfm.h rename to deps/icu/source/test/intltest/miscdtfm.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/mnkytst.cpp b/deps/icu/source/test/intltest/mnkytst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/mnkytst.cpp rename to deps/icu/source/test/intltest/mnkytst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/mnkytst.h b/deps/icu/source/test/intltest/mnkytst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/mnkytst.h rename to deps/icu/source/test/intltest/mnkytst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/msfmrgts.cpp b/deps/icu/source/test/intltest/msfmrgts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/msfmrgts.cpp rename to deps/icu/source/test/intltest/msfmrgts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/msfmrgts.h b/deps/icu/source/test/intltest/msfmrgts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/msfmrgts.h rename to deps/icu/source/test/intltest/msfmrgts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/nmfmapts.cpp b/deps/icu/source/test/intltest/nmfmapts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/nmfmapts.cpp rename to deps/icu/source/test/intltest/nmfmapts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/nmfmapts.h b/deps/icu/source/test/intltest/nmfmapts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/nmfmapts.h rename to deps/icu/source/test/intltest/nmfmapts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/nmfmtrt.cpp b/deps/icu/source/test/intltest/nmfmtrt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/nmfmtrt.cpp rename to deps/icu/source/test/intltest/nmfmtrt.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/nmfmtrt.h b/deps/icu/source/test/intltest/nmfmtrt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/nmfmtrt.h rename to deps/icu/source/test/intltest/nmfmtrt.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/normconf.cpp b/deps/icu/source/test/intltest/normconf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/normconf.cpp rename to deps/icu/source/test/intltest/normconf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/normconf.h b/deps/icu/source/test/intltest/normconf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/normconf.h rename to deps/icu/source/test/intltest/normconf.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/nptrans.cpp b/deps/icu/source/test/intltest/nptrans.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/nptrans.cpp rename to deps/icu/source/test/intltest/nptrans.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/nptrans.h b/deps/icu/source/test/intltest/nptrans.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/nptrans.h rename to deps/icu/source/test/intltest/nptrans.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numberformattesttuple.cpp b/deps/icu/source/test/intltest/numberformattesttuple.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numberformattesttuple.cpp rename to deps/icu/source/test/intltest/numberformattesttuple.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numberformattesttuple.h b/deps/icu/source/test/intltest/numberformattesttuple.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numberformattesttuple.h rename to deps/icu/source/test/intltest/numberformattesttuple.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numbertest.h b/deps/icu/source/test/intltest/numbertest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numbertest.h rename to deps/icu/source/test/intltest/numbertest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numbertest_affixutils.cpp b/deps/icu/source/test/intltest/numbertest_affixutils.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numbertest_affixutils.cpp rename to deps/icu/source/test/intltest/numbertest_affixutils.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numbertest_api.cpp b/deps/icu/source/test/intltest/numbertest_api.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numbertest_api.cpp rename to deps/icu/source/test/intltest/numbertest_api.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numbertest_decimalquantity.cpp b/deps/icu/source/test/intltest/numbertest_decimalquantity.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numbertest_decimalquantity.cpp rename to deps/icu/source/test/intltest/numbertest_decimalquantity.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numbertest_doubleconversion.cpp b/deps/icu/source/test/intltest/numbertest_doubleconversion.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numbertest_doubleconversion.cpp rename to deps/icu/source/test/intltest/numbertest_doubleconversion.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numbertest_modifiers.cpp b/deps/icu/source/test/intltest/numbertest_modifiers.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numbertest_modifiers.cpp rename to deps/icu/source/test/intltest/numbertest_modifiers.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numbertest_parse.cpp b/deps/icu/source/test/intltest/numbertest_parse.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numbertest_parse.cpp rename to deps/icu/source/test/intltest/numbertest_parse.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numbertest_patternmodifier.cpp b/deps/icu/source/test/intltest/numbertest_patternmodifier.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numbertest_patternmodifier.cpp rename to deps/icu/source/test/intltest/numbertest_patternmodifier.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numbertest_patternstring.cpp b/deps/icu/source/test/intltest/numbertest_patternstring.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numbertest_patternstring.cpp rename to deps/icu/source/test/intltest/numbertest_patternstring.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numbertest_permutation.cpp b/deps/icu/source/test/intltest/numbertest_permutation.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numbertest_permutation.cpp rename to deps/icu/source/test/intltest/numbertest_permutation.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numbertest_range.cpp b/deps/icu/source/test/intltest/numbertest_range.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numbertest_range.cpp rename to deps/icu/source/test/intltest/numbertest_range.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numbertest_skeletons.cpp b/deps/icu/source/test/intltest/numbertest_skeletons.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numbertest_skeletons.cpp rename to deps/icu/source/test/intltest/numbertest_skeletons.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numfmtdatadriventest.cpp b/deps/icu/source/test/intltest/numfmtdatadriventest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numfmtdatadriventest.cpp rename to deps/icu/source/test/intltest/numfmtdatadriventest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numfmtspectest.cpp b/deps/icu/source/test/intltest/numfmtspectest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numfmtspectest.cpp rename to deps/icu/source/test/intltest/numfmtspectest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numfmtst.cpp b/deps/icu/source/test/intltest/numfmtst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numfmtst.cpp rename to deps/icu/source/test/intltest/numfmtst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numfmtst.h b/deps/icu/source/test/intltest/numfmtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numfmtst.h rename to deps/icu/source/test/intltest/numfmtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numrgts.cpp b/deps/icu/source/test/intltest/numrgts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numrgts.cpp rename to deps/icu/source/test/intltest/numrgts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numrgts.h b/deps/icu/source/test/intltest/numrgts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numrgts.h rename to deps/icu/source/test/intltest/numrgts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/pluralmaptest.cpp b/deps/icu/source/test/intltest/pluralmaptest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/pluralmaptest.cpp rename to deps/icu/source/test/intltest/pluralmaptest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/plurfmts.cpp b/deps/icu/source/test/intltest/plurfmts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/plurfmts.cpp rename to deps/icu/source/test/intltest/plurfmts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/plurfmts.h b/deps/icu/source/test/intltest/plurfmts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/plurfmts.h rename to deps/icu/source/test/intltest/plurfmts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/plurults.cpp b/deps/icu/source/test/intltest/plurults.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/plurults.cpp rename to deps/icu/source/test/intltest/plurults.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/plurults.h b/deps/icu/source/test/intltest/plurults.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/plurults.h rename to deps/icu/source/test/intltest/plurults.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/pptest.cpp b/deps/icu/source/test/intltest/pptest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/pptest.cpp rename to deps/icu/source/test/intltest/pptest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/pptest.h b/deps/icu/source/test/intltest/pptest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/pptest.h rename to deps/icu/source/test/intltest/pptest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/punyref.cpp b/deps/icu/source/test/intltest/punyref.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/punyref.cpp rename to deps/icu/source/test/intltest/punyref.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/punyref.h b/deps/icu/source/test/intltest/punyref.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/punyref.h rename to deps/icu/source/test/intltest/punyref.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/quantityformattertest.cpp b/deps/icu/source/test/intltest/quantityformattertest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/quantityformattertest.cpp rename to deps/icu/source/test/intltest/quantityformattertest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/rbbiapts.cpp b/deps/icu/source/test/intltest/rbbiapts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/rbbiapts.cpp rename to deps/icu/source/test/intltest/rbbiapts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/rbbiapts.h b/deps/icu/source/test/intltest/rbbiapts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/rbbiapts.h rename to deps/icu/source/test/intltest/rbbiapts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/rbbimonkeytest.cpp b/deps/icu/source/test/intltest/rbbimonkeytest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/rbbimonkeytest.cpp rename to deps/icu/source/test/intltest/rbbimonkeytest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/rbbimonkeytest.h b/deps/icu/source/test/intltest/rbbimonkeytest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/rbbimonkeytest.h rename to deps/icu/source/test/intltest/rbbimonkeytest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/rbbitst.cpp b/deps/icu/source/test/intltest/rbbitst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/rbbitst.cpp rename to deps/icu/source/test/intltest/rbbitst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/rbbitst.h b/deps/icu/source/test/intltest/rbbitst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/rbbitst.h rename to deps/icu/source/test/intltest/rbbitst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/regcoll.cpp b/deps/icu/source/test/intltest/regcoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/regcoll.cpp rename to deps/icu/source/test/intltest/regcoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/regcoll.h b/deps/icu/source/test/intltest/regcoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/regcoll.h rename to deps/icu/source/test/intltest/regcoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/regextst.cpp b/deps/icu/source/test/intltest/regextst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/regextst.cpp rename to deps/icu/source/test/intltest/regextst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/regextst.h b/deps/icu/source/test/intltest/regextst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/regextst.h rename to deps/icu/source/test/intltest/regextst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/regiontst.cpp b/deps/icu/source/test/intltest/regiontst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/regiontst.cpp rename to deps/icu/source/test/intltest/regiontst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/regiontst.h b/deps/icu/source/test/intltest/regiontst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/regiontst.h rename to deps/icu/source/test/intltest/regiontst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/reldatefmttest.cpp b/deps/icu/source/test/intltest/reldatefmttest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/reldatefmttest.cpp rename to deps/icu/source/test/intltest/reldatefmttest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/reptest.cpp b/deps/icu/source/test/intltest/reptest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/reptest.cpp rename to deps/icu/source/test/intltest/reptest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/reptest.h b/deps/icu/source/test/intltest/reptest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/reptest.h rename to deps/icu/source/test/intltest/reptest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/restest.cpp b/deps/icu/source/test/intltest/restest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/restest.cpp rename to deps/icu/source/test/intltest/restest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/restest.h b/deps/icu/source/test/intltest/restest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/restest.h rename to deps/icu/source/test/intltest/restest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/restsnew.cpp b/deps/icu/source/test/intltest/restsnew.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/restsnew.cpp rename to deps/icu/source/test/intltest/restsnew.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/restsnew.h b/deps/icu/source/test/intltest/restsnew.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/restsnew.h rename to deps/icu/source/test/intltest/restsnew.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/scientificnumberformattertest.cpp b/deps/icu/source/test/intltest/scientificnumberformattertest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/scientificnumberformattertest.cpp rename to deps/icu/source/test/intltest/scientificnumberformattertest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/sdtfmtts.cpp b/deps/icu/source/test/intltest/sdtfmtts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/sdtfmtts.cpp rename to deps/icu/source/test/intltest/sdtfmtts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/sdtfmtts.h b/deps/icu/source/test/intltest/sdtfmtts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/sdtfmtts.h rename to deps/icu/source/test/intltest/sdtfmtts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/selfmts.cpp b/deps/icu/source/test/intltest/selfmts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/selfmts.cpp rename to deps/icu/source/test/intltest/selfmts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/selfmts.h b/deps/icu/source/test/intltest/selfmts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/selfmts.h rename to deps/icu/source/test/intltest/selfmts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/sfwdchit.cpp b/deps/icu/source/test/intltest/sfwdchit.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/sfwdchit.cpp rename to deps/icu/source/test/intltest/sfwdchit.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/sfwdchit.h b/deps/icu/source/test/intltest/sfwdchit.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/sfwdchit.h rename to deps/icu/source/test/intltest/sfwdchit.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/simpleformattertest.cpp b/deps/icu/source/test/intltest/simpleformattertest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/simpleformattertest.cpp rename to deps/icu/source/test/intltest/simpleformattertest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/simplethread.cpp b/deps/icu/source/test/intltest/simplethread.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/simplethread.cpp rename to deps/icu/source/test/intltest/simplethread.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/simplethread.h b/deps/icu/source/test/intltest/simplethread.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/simplethread.h rename to deps/icu/source/test/intltest/simplethread.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/srchtest.cpp b/deps/icu/source/test/intltest/srchtest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/srchtest.cpp rename to deps/icu/source/test/intltest/srchtest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/srchtest.h b/deps/icu/source/test/intltest/srchtest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/srchtest.h rename to deps/icu/source/test/intltest/srchtest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/ssearch.cpp b/deps/icu/source/test/intltest/ssearch.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/ssearch.cpp rename to deps/icu/source/test/intltest/ssearch.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/ssearch.h b/deps/icu/source/test/intltest/ssearch.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/ssearch.h rename to deps/icu/source/test/intltest/ssearch.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/static_unisets_test.cpp b/deps/icu/source/test/intltest/static_unisets_test.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/static_unisets_test.cpp rename to deps/icu/source/test/intltest/static_unisets_test.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/strcase.cpp b/deps/icu/source/test/intltest/strcase.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/strcase.cpp rename to deps/icu/source/test/intltest/strcase.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/string_segment_test.cpp b/deps/icu/source/test/intltest/string_segment_test.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/string_segment_test.cpp rename to deps/icu/source/test/intltest/string_segment_test.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/strtest.cpp b/deps/icu/source/test/intltest/strtest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/strtest.cpp rename to deps/icu/source/test/intltest/strtest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/strtest.h b/deps/icu/source/test/intltest/strtest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/strtest.h rename to deps/icu/source/test/intltest/strtest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/svccoll.cpp b/deps/icu/source/test/intltest/svccoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/svccoll.cpp rename to deps/icu/source/test/intltest/svccoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/svccoll.h b/deps/icu/source/test/intltest/svccoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/svccoll.h rename to deps/icu/source/test/intltest/svccoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tchcfmt.cpp b/deps/icu/source/test/intltest/tchcfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tchcfmt.cpp rename to deps/icu/source/test/intltest/tchcfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tchcfmt.h b/deps/icu/source/test/intltest/tchcfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tchcfmt.h rename to deps/icu/source/test/intltest/tchcfmt.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/testidn.cpp b/deps/icu/source/test/intltest/testidn.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/testidn.cpp rename to deps/icu/source/test/intltest/testidn.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/testidna.cpp b/deps/icu/source/test/intltest/testidna.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/testidna.cpp rename to deps/icu/source/test/intltest/testidna.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/testidna.h b/deps/icu/source/test/intltest/testidna.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/testidna.h rename to deps/icu/source/test/intltest/testidna.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/testutil.cpp b/deps/icu/source/test/intltest/testutil.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/testutil.cpp rename to deps/icu/source/test/intltest/testutil.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/testutil.h b/deps/icu/source/test/intltest/testutil.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/testutil.h rename to deps/icu/source/test/intltest/testutil.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/textfile.cpp b/deps/icu/source/test/intltest/textfile.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/textfile.cpp rename to deps/icu/source/test/intltest/textfile.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/textfile.h b/deps/icu/source/test/intltest/textfile.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/textfile.h rename to deps/icu/source/test/intltest/textfile.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tfsmalls.cpp b/deps/icu/source/test/intltest/tfsmalls.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tfsmalls.cpp rename to deps/icu/source/test/intltest/tfsmalls.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tfsmalls.h b/deps/icu/source/test/intltest/tfsmalls.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tfsmalls.h rename to deps/icu/source/test/intltest/tfsmalls.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/thcoll.cpp b/deps/icu/source/test/intltest/thcoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/thcoll.cpp rename to deps/icu/source/test/intltest/thcoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/thcoll.h b/deps/icu/source/test/intltest/thcoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/thcoll.h rename to deps/icu/source/test/intltest/thcoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tmsgfmt.cpp b/deps/icu/source/test/intltest/tmsgfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tmsgfmt.cpp rename to deps/icu/source/test/intltest/tmsgfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tmsgfmt.h b/deps/icu/source/test/intltest/tmsgfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tmsgfmt.h rename to deps/icu/source/test/intltest/tmsgfmt.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tokiter.cpp b/deps/icu/source/test/intltest/tokiter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tokiter.cpp rename to deps/icu/source/test/intltest/tokiter.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tokiter.h b/deps/icu/source/test/intltest/tokiter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tokiter.h rename to deps/icu/source/test/intltest/tokiter.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/transapi.cpp b/deps/icu/source/test/intltest/transapi.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/transapi.cpp rename to deps/icu/source/test/intltest/transapi.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/transapi.h b/deps/icu/source/test/intltest/transapi.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/transapi.h rename to deps/icu/source/test/intltest/transapi.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/transrt.cpp b/deps/icu/source/test/intltest/transrt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/transrt.cpp rename to deps/icu/source/test/intltest/transrt.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/transrt.h b/deps/icu/source/test/intltest/transrt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/transrt.h rename to deps/icu/source/test/intltest/transrt.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/transtst.cpp b/deps/icu/source/test/intltest/transtst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/transtst.cpp rename to deps/icu/source/test/intltest/transtst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/transtst.h b/deps/icu/source/test/intltest/transtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/transtst.h rename to deps/icu/source/test/intltest/transtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/trcoll.cpp b/deps/icu/source/test/intltest/trcoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/trcoll.cpp rename to deps/icu/source/test/intltest/trcoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/trcoll.h b/deps/icu/source/test/intltest/trcoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/trcoll.h rename to deps/icu/source/test/intltest/trcoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/trnserr.cpp b/deps/icu/source/test/intltest/trnserr.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/trnserr.cpp rename to deps/icu/source/test/intltest/trnserr.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/trnserr.h b/deps/icu/source/test/intltest/trnserr.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/trnserr.h rename to deps/icu/source/test/intltest/trnserr.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tscoll.cpp b/deps/icu/source/test/intltest/tscoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tscoll.cpp rename to deps/icu/source/test/intltest/tscoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tscoll.h b/deps/icu/source/test/intltest/tscoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tscoll.h rename to deps/icu/source/test/intltest/tscoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tsdate.cpp b/deps/icu/source/test/intltest/tsdate.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tsdate.cpp rename to deps/icu/source/test/intltest/tsdate.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tsdate.h b/deps/icu/source/test/intltest/tsdate.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tsdate.h rename to deps/icu/source/test/intltest/tsdate.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tsdcfmsy.cpp b/deps/icu/source/test/intltest/tsdcfmsy.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tsdcfmsy.cpp rename to deps/icu/source/test/intltest/tsdcfmsy.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tsdcfmsy.h b/deps/icu/source/test/intltest/tsdcfmsy.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tsdcfmsy.h rename to deps/icu/source/test/intltest/tsdcfmsy.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tsdtfmsy.cpp b/deps/icu/source/test/intltest/tsdtfmsy.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tsdtfmsy.cpp rename to deps/icu/source/test/intltest/tsdtfmsy.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tsdtfmsy.h b/deps/icu/source/test/intltest/tsdtfmsy.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tsdtfmsy.h rename to deps/icu/source/test/intltest/tsdtfmsy.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tsmthred.cpp b/deps/icu/source/test/intltest/tsmthred.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tsmthred.cpp rename to deps/icu/source/test/intltest/tsmthred.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tsmthred.h b/deps/icu/source/test/intltest/tsmthred.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tsmthred.h rename to deps/icu/source/test/intltest/tsmthred.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tsnmfmt.cpp b/deps/icu/source/test/intltest/tsnmfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tsnmfmt.cpp rename to deps/icu/source/test/intltest/tsnmfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tsnmfmt.h b/deps/icu/source/test/intltest/tsnmfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tsnmfmt.h rename to deps/icu/source/test/intltest/tsnmfmt.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tsputil.cpp b/deps/icu/source/test/intltest/tsputil.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tsputil.cpp rename to deps/icu/source/test/intltest/tsputil.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tsputil.h b/deps/icu/source/test/intltest/tsputil.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tsputil.h rename to deps/icu/source/test/intltest/tsputil.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tstnorm.cpp b/deps/icu/source/test/intltest/tstnorm.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tstnorm.cpp rename to deps/icu/source/test/intltest/tstnorm.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tstnorm.h b/deps/icu/source/test/intltest/tstnorm.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tstnorm.h rename to deps/icu/source/test/intltest/tstnorm.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tstnrapi.cpp b/deps/icu/source/test/intltest/tstnrapi.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tstnrapi.cpp rename to deps/icu/source/test/intltest/tstnrapi.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tufmtts.cpp b/deps/icu/source/test/intltest/tufmtts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tufmtts.cpp rename to deps/icu/source/test/intltest/tufmtts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tzbdtest.cpp b/deps/icu/source/test/intltest/tzbdtest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tzbdtest.cpp rename to deps/icu/source/test/intltest/tzbdtest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tzbdtest.h b/deps/icu/source/test/intltest/tzbdtest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tzbdtest.h rename to deps/icu/source/test/intltest/tzbdtest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tzfmttst.cpp b/deps/icu/source/test/intltest/tzfmttst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tzfmttst.cpp rename to deps/icu/source/test/intltest/tzfmttst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tzfmttst.h b/deps/icu/source/test/intltest/tzfmttst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tzfmttst.h rename to deps/icu/source/test/intltest/tzfmttst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tzoffloc.cpp b/deps/icu/source/test/intltest/tzoffloc.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tzoffloc.cpp rename to deps/icu/source/test/intltest/tzoffloc.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tzoffloc.h b/deps/icu/source/test/intltest/tzoffloc.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tzoffloc.h rename to deps/icu/source/test/intltest/tzoffloc.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tzregts.cpp b/deps/icu/source/test/intltest/tzregts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tzregts.cpp rename to deps/icu/source/test/intltest/tzregts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tzregts.h b/deps/icu/source/test/intltest/tzregts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tzregts.h rename to deps/icu/source/test/intltest/tzregts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tzrulets.cpp b/deps/icu/source/test/intltest/tzrulets.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tzrulets.cpp rename to deps/icu/source/test/intltest/tzrulets.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tzrulets.h b/deps/icu/source/test/intltest/tzrulets.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tzrulets.h rename to deps/icu/source/test/intltest/tzrulets.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tztest.cpp b/deps/icu/source/test/intltest/tztest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tztest.cpp rename to deps/icu/source/test/intltest/tztest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tztest.h b/deps/icu/source/test/intltest/tztest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tztest.h rename to deps/icu/source/test/intltest/tztest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/ucaconf.cpp b/deps/icu/source/test/intltest/ucaconf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/ucaconf.cpp rename to deps/icu/source/test/intltest/ucaconf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/ucaconf.h b/deps/icu/source/test/intltest/ucaconf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/ucaconf.h rename to deps/icu/source/test/intltest/ucaconf.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/ucdtest.cpp b/deps/icu/source/test/intltest/ucdtest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/ucdtest.cpp rename to deps/icu/source/test/intltest/ucdtest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/ucdtest.h b/deps/icu/source/test/intltest/ucdtest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/ucdtest.h rename to deps/icu/source/test/intltest/ucdtest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/ucharstrietest.cpp b/deps/icu/source/test/intltest/ucharstrietest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/ucharstrietest.cpp rename to deps/icu/source/test/intltest/ucharstrietest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/unifiedcachetest.cpp b/deps/icu/source/test/intltest/unifiedcachetest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/unifiedcachetest.cpp rename to deps/icu/source/test/intltest/unifiedcachetest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/units_data_test.cpp b/deps/icu/source/test/intltest/units_data_test.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/units_data_test.cpp rename to deps/icu/source/test/intltest/units_data_test.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/units_router_test.cpp b/deps/icu/source/test/intltest/units_router_test.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/units_router_test.cpp rename to deps/icu/source/test/intltest/units_router_test.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/units_test.cpp b/deps/icu/source/test/intltest/units_test.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/units_test.cpp rename to deps/icu/source/test/intltest/units_test.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/uobjtest.cpp b/deps/icu/source/test/intltest/uobjtest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/uobjtest.cpp rename to deps/icu/source/test/intltest/uobjtest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/uobjtest.h b/deps/icu/source/test/intltest/uobjtest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/uobjtest.h rename to deps/icu/source/test/intltest/uobjtest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/usettest.cpp b/deps/icu/source/test/intltest/usettest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/usettest.cpp rename to deps/icu/source/test/intltest/usettest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/usettest.h b/deps/icu/source/test/intltest/usettest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/usettest.h rename to deps/icu/source/test/intltest/usettest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/ustrtest.cpp b/deps/icu/source/test/intltest/ustrtest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/ustrtest.cpp rename to deps/icu/source/test/intltest/ustrtest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/ustrtest.h b/deps/icu/source/test/intltest/ustrtest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/ustrtest.h rename to deps/icu/source/test/intltest/ustrtest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/uts46test.cpp b/deps/icu/source/test/intltest/uts46test.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/uts46test.cpp rename to deps/icu/source/test/intltest/uts46test.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/utxttest.cpp b/deps/icu/source/test/intltest/utxttest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/utxttest.cpp rename to deps/icu/source/test/intltest/utxttest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/utxttest.h b/deps/icu/source/test/intltest/utxttest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/utxttest.h rename to deps/icu/source/test/intltest/utxttest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/uvectest.cpp b/deps/icu/source/test/intltest/uvectest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/uvectest.cpp rename to deps/icu/source/test/intltest/uvectest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/uvectest.h b/deps/icu/source/test/intltest/uvectest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/uvectest.h rename to deps/icu/source/test/intltest/uvectest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/v32test.cpp b/deps/icu/source/test/intltest/v32test.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/v32test.cpp rename to deps/icu/source/test/intltest/v32test.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/v32test.h b/deps/icu/source/test/intltest/v32test.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/v32test.h rename to deps/icu/source/test/intltest/v32test.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/windttst.cpp b/deps/icu/source/test/intltest/windttst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/windttst.cpp rename to deps/icu/source/test/intltest/windttst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/windttst.h b/deps/icu/source/test/intltest/windttst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/windttst.h rename to deps/icu/source/test/intltest/windttst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/winnmtst.cpp b/deps/icu/source/test/intltest/winnmtst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/winnmtst.cpp rename to deps/icu/source/test/intltest/winnmtst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/winnmtst.h b/deps/icu/source/test/intltest/winnmtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/winnmtst.h rename to deps/icu/source/test/intltest/winnmtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/winutil.cpp b/deps/icu/source/test/intltest/winutil.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/winutil.cpp rename to deps/icu/source/test/intltest/winutil.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/winutil.h b/deps/icu/source/test/intltest/winutil.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/winutil.h rename to deps/icu/source/test/intltest/winutil.h diff --git a/bootstrap/cxx/deps/icu/source/test/iotest/Makefile.in b/deps/icu/source/test/iotest/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/iotest/Makefile.in rename to deps/icu/source/test/iotest/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/iotest/filetst.c b/deps/icu/source/test/iotest/filetst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/iotest/filetst.c rename to deps/icu/source/test/iotest/filetst.c diff --git a/bootstrap/cxx/deps/icu/source/test/iotest/iotest.cpp b/deps/icu/source/test/iotest/iotest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/iotest/iotest.cpp rename to deps/icu/source/test/iotest/iotest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/iotest/iotest.h b/deps/icu/source/test/iotest/iotest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/iotest/iotest.h rename to deps/icu/source/test/iotest/iotest.h diff --git a/bootstrap/cxx/deps/icu/source/test/iotest/iotest.vcxproj b/deps/icu/source/test/iotest/iotest.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/iotest/iotest.vcxproj rename to deps/icu/source/test/iotest/iotest.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/iotest/iotest.vcxproj.filters b/deps/icu/source/test/iotest/iotest.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/iotest/iotest.vcxproj.filters rename to deps/icu/source/test/iotest/iotest.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/iotest/stream.cpp b/deps/icu/source/test/iotest/stream.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/iotest/stream.cpp rename to deps/icu/source/test/iotest/stream.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/iotest/strtst.c b/deps/icu/source/test/iotest/strtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/iotest/strtst.c rename to deps/icu/source/test/iotest/strtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/iotest/trnstst.c b/deps/icu/source/test/iotest/trnstst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/iotest/trnstst.c rename to deps/icu/source/test/iotest/trnstst.c diff --git a/bootstrap/cxx/deps/icu/source/test/letest/FontObject.cpp b/deps/icu/source/test/letest/FontObject.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/FontObject.cpp rename to deps/icu/source/test/letest/FontObject.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/letest/FontObject.h b/deps/icu/source/test/letest/FontObject.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/FontObject.h rename to deps/icu/source/test/letest/FontObject.h diff --git a/bootstrap/cxx/deps/icu/source/test/letest/FontTableCache.cpp b/deps/icu/source/test/letest/FontTableCache.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/FontTableCache.cpp rename to deps/icu/source/test/letest/FontTableCache.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/letest/FontTableCache.h b/deps/icu/source/test/letest/FontTableCache.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/FontTableCache.h rename to deps/icu/source/test/letest/FontTableCache.h diff --git a/bootstrap/cxx/deps/icu/source/test/letest/Makefile.in b/deps/icu/source/test/letest/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/Makefile.in rename to deps/icu/source/test/letest/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/letest/PortableFontInstance.cpp b/deps/icu/source/test/letest/PortableFontInstance.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/PortableFontInstance.cpp rename to deps/icu/source/test/letest/PortableFontInstance.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/letest/PortableFontInstance.h b/deps/icu/source/test/letest/PortableFontInstance.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/PortableFontInstance.h rename to deps/icu/source/test/letest/PortableFontInstance.h diff --git a/bootstrap/cxx/deps/icu/source/test/letest/SimpleFontInstance.cpp b/deps/icu/source/test/letest/SimpleFontInstance.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/SimpleFontInstance.cpp rename to deps/icu/source/test/letest/SimpleFontInstance.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/letest/SimpleFontInstance.h b/deps/icu/source/test/letest/SimpleFontInstance.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/SimpleFontInstance.h rename to deps/icu/source/test/letest/SimpleFontInstance.h diff --git a/bootstrap/cxx/deps/icu/source/test/letest/cfonts.cpp b/deps/icu/source/test/letest/cfonts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/cfonts.cpp rename to deps/icu/source/test/letest/cfonts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/letest/cfonts.h b/deps/icu/source/test/letest/cfonts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/cfonts.h rename to deps/icu/source/test/letest/cfonts.h diff --git a/bootstrap/cxx/deps/icu/source/test/letest/cletest.c b/deps/icu/source/test/letest/cletest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/cletest.c rename to deps/icu/source/test/letest/cletest.c diff --git a/bootstrap/cxx/deps/icu/source/test/letest/cletest.sln b/deps/icu/source/test/letest/cletest.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/cletest.sln rename to deps/icu/source/test/letest/cletest.sln diff --git a/bootstrap/cxx/deps/icu/source/test/letest/cletest.vcxproj b/deps/icu/source/test/letest/cletest.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/cletest.vcxproj rename to deps/icu/source/test/letest/cletest.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/letest/cletest.vcxproj.filters b/deps/icu/source/test/letest/cletest.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/cletest.vcxproj.filters rename to deps/icu/source/test/letest/cletest.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/letest/cmaps.cpp b/deps/icu/source/test/letest/cmaps.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/cmaps.cpp rename to deps/icu/source/test/letest/cmaps.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/letest/cmaps.h b/deps/icu/source/test/letest/cmaps.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/cmaps.h rename to deps/icu/source/test/letest/cmaps.h diff --git a/bootstrap/cxx/deps/icu/source/test/letest/gendata.cpp b/deps/icu/source/test/letest/gendata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/gendata.cpp rename to deps/icu/source/test/letest/gendata.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/letest/gendata.sln b/deps/icu/source/test/letest/gendata.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/gendata.sln rename to deps/icu/source/test/letest/gendata.sln diff --git a/bootstrap/cxx/deps/icu/source/test/letest/gendata.vcxproj b/deps/icu/source/test/letest/gendata.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/gendata.vcxproj rename to deps/icu/source/test/letest/gendata.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/letest/gendata.vcxproj.filters b/deps/icu/source/test/letest/gendata.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/gendata.vcxproj.filters rename to deps/icu/source/test/letest/gendata.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/letest/gendata.xml b/deps/icu/source/test/letest/gendata.xml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/gendata.xml rename to deps/icu/source/test/letest/gendata.xml diff --git a/bootstrap/cxx/deps/icu/source/test/letest/letest.cpp b/deps/icu/source/test/letest/letest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/letest.cpp rename to deps/icu/source/test/letest/letest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/letest/letest.h b/deps/icu/source/test/letest/letest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/letest.h rename to deps/icu/source/test/letest/letest.h diff --git a/bootstrap/cxx/deps/icu/source/test/letest/letest.sln b/deps/icu/source/test/letest/letest.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/letest.sln rename to deps/icu/source/test/letest/letest.sln diff --git a/bootstrap/cxx/deps/icu/source/test/letest/letest.vcxproj b/deps/icu/source/test/letest/letest.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/letest.vcxproj rename to deps/icu/source/test/letest/letest.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/letest/letest.vcxproj.filters b/deps/icu/source/test/letest/letest.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/letest.vcxproj.filters rename to deps/icu/source/test/letest/letest.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/letest/letsutil.cpp b/deps/icu/source/test/letest/letsutil.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/letsutil.cpp rename to deps/icu/source/test/letest/letsutil.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/letest/letsutil.h b/deps/icu/source/test/letest/letsutil.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/letsutil.h rename to deps/icu/source/test/letest/letsutil.h diff --git a/bootstrap/cxx/deps/icu/source/test/letest/readme.html b/deps/icu/source/test/letest/readme.html similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/readme.html rename to deps/icu/source/test/letest/readme.html diff --git a/bootstrap/cxx/deps/icu/source/test/letest/sfnt.h b/deps/icu/source/test/letest/sfnt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/sfnt.h rename to deps/icu/source/test/letest/sfnt.h diff --git a/bootstrap/cxx/deps/icu/source/test/letest/testdata.cpp b/deps/icu/source/test/letest/testdata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/testdata.cpp rename to deps/icu/source/test/letest/testdata.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/letest/xmlreader.cpp b/deps/icu/source/test/letest/xmlreader.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/xmlreader.cpp rename to deps/icu/source/test/letest/xmlreader.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/letest/xmlreader.h b/deps/icu/source/test/letest/xmlreader.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/xmlreader.h rename to deps/icu/source/test/letest/xmlreader.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.cpp b/deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.cpp rename to deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.h b/deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.h rename to deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj b/deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj rename to deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj.filters b/deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj.filters rename to deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/Makefile.in b/deps/icu/source/test/perf/DateFmtPerf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/Makefile.in rename to deps/icu/source/test/perf/DateFmtPerf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/ReadMe.txt b/deps/icu/source/test/perf/DateFmtPerf/ReadMe.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/ReadMe.txt rename to deps/icu/source/test/perf/DateFmtPerf/ReadMe.txt diff --git a/bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/breakdata.h b/deps/icu/source/test/perf/DateFmtPerf/breakdata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/breakdata.h rename to deps/icu/source/test/perf/DateFmtPerf/breakdata.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/collationdata.h b/deps/icu/source/test/perf/DateFmtPerf/collationdata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/collationdata.h rename to deps/icu/source/test/perf/DateFmtPerf/collationdata.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/datedata.h b/deps/icu/source/test/perf/DateFmtPerf/datedata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/datedata.h rename to deps/icu/source/test/perf/DateFmtPerf/datedata.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/Makefile.in b/deps/icu/source/test/perf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/Makefile.in rename to deps/icu/source/test/perf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/README b/deps/icu/source/test/perf/README similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/README rename to deps/icu/source/test/perf/README diff --git a/bootstrap/cxx/deps/icu/source/test/perf/charperf/CharPerf.pl b/deps/icu/source/test/perf/charperf/CharPerf.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/charperf/CharPerf.pl rename to deps/icu/source/test/perf/charperf/CharPerf.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/charperf/CharPerf_r.pl b/deps/icu/source/test/perf/charperf/CharPerf_r.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/charperf/CharPerf_r.pl rename to deps/icu/source/test/perf/charperf/CharPerf_r.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/charperf/Makefile.in b/deps/icu/source/test/perf/charperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/charperf/Makefile.in rename to deps/icu/source/test/perf/charperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/charperf/charperf.cpp b/deps/icu/source/test/perf/charperf/charperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/charperf/charperf.cpp rename to deps/icu/source/test/perf/charperf/charperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/charperf/charperf.h b/deps/icu/source/test/perf/charperf/charperf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/charperf/charperf.h rename to deps/icu/source/test/perf/charperf/charperf.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/charperf/charperf.vcxproj b/deps/icu/source/test/perf/charperf/charperf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/charperf/charperf.vcxproj rename to deps/icu/source/test/perf/charperf/charperf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/charperf/charperf.vcxproj.filters b/deps/icu/source/test/perf/charperf/charperf.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/charperf/charperf.vcxproj.filters rename to deps/icu/source/test/perf/charperf/charperf.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collationperf/CollPerf.pl b/deps/icu/source/test/perf/collationperf/CollPerf.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collationperf/CollPerf.pl rename to deps/icu/source/test/perf/collationperf/CollPerf.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collationperf/Makefile.in b/deps/icu/source/test/perf/collationperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collationperf/Makefile.in rename to deps/icu/source/test/perf/collationperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collationperf/collperf.cpp b/deps/icu/source/test/perf/collationperf/collperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collationperf/collperf.cpp rename to deps/icu/source/test/perf/collationperf/collperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collationperf/readme.html b/deps/icu/source/test/perf/collationperf/readme.html similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collationperf/readme.html rename to deps/icu/source/test/perf/collationperf/readme.html diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collperf/CollPerf.pl b/deps/icu/source/test/perf/collperf/CollPerf.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collperf/CollPerf.pl rename to deps/icu/source/test/perf/collperf/CollPerf.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collperf/CollPerf_r.pl b/deps/icu/source/test/perf/collperf/CollPerf_r.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collperf/CollPerf_r.pl rename to deps/icu/source/test/perf/collperf/CollPerf_r.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collperf/Makefile.in b/deps/icu/source/test/perf/collperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collperf/Makefile.in rename to deps/icu/source/test/perf/collperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collperf/collperf.cpp b/deps/icu/source/test/perf/collperf/collperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collperf/collperf.cpp rename to deps/icu/source/test/perf/collperf/collperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collperf/collperf.vcxproj b/deps/icu/source/test/perf/collperf/collperf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collperf/collperf.vcxproj rename to deps/icu/source/test/perf/collperf/collperf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collperf/collperf.vcxproj.filters b/deps/icu/source/test/perf/collperf/collperf.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collperf/collperf.vcxproj.filters rename to deps/icu/source/test/perf/collperf/collperf.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collperf2/CollPerf2_r.pl b/deps/icu/source/test/perf/collperf2/CollPerf2_r.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collperf2/CollPerf2_r.pl rename to deps/icu/source/test/perf/collperf2/CollPerf2_r.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collperf2/Makefile.in b/deps/icu/source/test/perf/collperf2/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collperf2/Makefile.in rename to deps/icu/source/test/perf/collperf2/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collperf2/collperf2.cpp b/deps/icu/source/test/perf/collperf2/collperf2.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collperf2/collperf2.cpp rename to deps/icu/source/test/perf/collperf2/collperf2.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collperf2/collperf2.vcxproj b/deps/icu/source/test/perf/collperf2/collperf2.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collperf2/collperf2.vcxproj rename to deps/icu/source/test/perf/collperf2/collperf2.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collperf2/collperf2.vcxproj.filters b/deps/icu/source/test/perf/collperf2/collperf2.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collperf2/collperf2.vcxproj.filters rename to deps/icu/source/test/perf/collperf2/collperf2.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/perf/convperf/ConvPerf_r.pl b/deps/icu/source/test/perf/convperf/ConvPerf_r.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/convperf/ConvPerf_r.pl rename to deps/icu/source/test/perf/convperf/ConvPerf_r.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/convperf/Makefile.in b/deps/icu/source/test/perf/convperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/convperf/Makefile.in rename to deps/icu/source/test/perf/convperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/convperf/convperf.cpp b/deps/icu/source/test/perf/convperf/convperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/convperf/convperf.cpp rename to deps/icu/source/test/perf/convperf/convperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/convperf/convperf.h b/deps/icu/source/test/perf/convperf/convperf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/convperf/convperf.h rename to deps/icu/source/test/perf/convperf/convperf.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/convperf/convperf.vcxproj b/deps/icu/source/test/perf/convperf/convperf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/convperf/convperf.vcxproj rename to deps/icu/source/test/perf/convperf/convperf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/convperf/convperf.vcxproj.filters b/deps/icu/source/test/perf/convperf/convperf.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/convperf/convperf.vcxproj.filters rename to deps/icu/source/test/perf/convperf/convperf.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/perf/convperf/convperf_ansi.pl b/deps/icu/source/test/perf/convperf/convperf_ansi.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/convperf/convperf_ansi.pl rename to deps/icu/source/test/perf/convperf/convperf_ansi.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/convperf/convperf_iml.pl b/deps/icu/source/test/perf/convperf/convperf_iml.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/convperf/convperf_iml.pl rename to deps/icu/source/test/perf/convperf/convperf_iml.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/convperf/data.h b/deps/icu/source/test/perf/convperf/data.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/convperf/data.h rename to deps/icu/source/test/perf/convperf/data.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/dicttrieperf/Makefile.in b/deps/icu/source/test/perf/dicttrieperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/dicttrieperf/Makefile.in rename to deps/icu/source/test/perf/dicttrieperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/dicttrieperf/dicttrieperf.cpp b/deps/icu/source/test/perf/dicttrieperf/dicttrieperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/dicttrieperf/dicttrieperf.cpp rename to deps/icu/source/test/perf/dicttrieperf/dicttrieperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/howExpensiveIs/Makefile.in b/deps/icu/source/test/perf/howExpensiveIs/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/howExpensiveIs/Makefile.in rename to deps/icu/source/test/perf/howExpensiveIs/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/howExpensiveIs/howExpensiveIs.cpp b/deps/icu/source/test/perf/howExpensiveIs/howExpensiveIs.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/howExpensiveIs/howExpensiveIs.cpp rename to deps/icu/source/test/perf/howExpensiveIs/howExpensiveIs.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/howExpensiveIs/readme.txt b/deps/icu/source/test/perf/howExpensiveIs/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/howExpensiveIs/readme.txt rename to deps/icu/source/test/perf/howExpensiveIs/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/test/perf/howExpensiveIs/sieve.cpp b/deps/icu/source/test/perf/howExpensiveIs/sieve.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/howExpensiveIs/sieve.cpp rename to deps/icu/source/test/perf/howExpensiveIs/sieve.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/howExpensiveIs/sieve.h b/deps/icu/source/test/perf/howExpensiveIs/sieve.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/howExpensiveIs/sieve.h rename to deps/icu/source/test/perf/howExpensiveIs/sieve.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/icuperf2report.xsl b/deps/icu/source/test/perf/icuperf2report.xsl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/icuperf2report.xsl rename to deps/icu/source/test/perf/icuperf2report.xsl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/FontObject.cpp b/deps/icu/source/test/perf/leperf/FontObject.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/FontObject.cpp rename to deps/icu/source/test/perf/leperf/FontObject.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/FontObject.h b/deps/icu/source/test/perf/leperf/FontObject.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/FontObject.h rename to deps/icu/source/test/perf/leperf/FontObject.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/FontTableCache.cpp b/deps/icu/source/test/perf/leperf/FontTableCache.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/FontTableCache.cpp rename to deps/icu/source/test/perf/leperf/FontTableCache.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/FontTableCache.h b/deps/icu/source/test/perf/leperf/FontTableCache.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/FontTableCache.h rename to deps/icu/source/test/perf/leperf/FontTableCache.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/Makefile.in b/deps/icu/source/test/perf/leperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/Makefile.in rename to deps/icu/source/test/perf/leperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/PortableFontInstance.cpp b/deps/icu/source/test/perf/leperf/PortableFontInstance.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/PortableFontInstance.cpp rename to deps/icu/source/test/perf/leperf/PortableFontInstance.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/PortableFontInstance.h b/deps/icu/source/test/perf/leperf/PortableFontInstance.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/PortableFontInstance.h rename to deps/icu/source/test/perf/leperf/PortableFontInstance.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/SimpleFontInstance.cpp b/deps/icu/source/test/perf/leperf/SimpleFontInstance.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/SimpleFontInstance.cpp rename to deps/icu/source/test/perf/leperf/SimpleFontInstance.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/SimpleFontInstance.h b/deps/icu/source/test/perf/leperf/SimpleFontInstance.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/SimpleFontInstance.h rename to deps/icu/source/test/perf/leperf/SimpleFontInstance.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/cfonts.cpp b/deps/icu/source/test/perf/leperf/cfonts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/cfonts.cpp rename to deps/icu/source/test/perf/leperf/cfonts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/cfonts.h b/deps/icu/source/test/perf/leperf/cfonts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/cfonts.h rename to deps/icu/source/test/perf/leperf/cfonts.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/cmaps.cpp b/deps/icu/source/test/perf/leperf/cmaps.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/cmaps.cpp rename to deps/icu/source/test/perf/leperf/cmaps.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/cmaps.h b/deps/icu/source/test/perf/leperf/cmaps.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/cmaps.h rename to deps/icu/source/test/perf/leperf/cmaps.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/leperf.cpp b/deps/icu/source/test/perf/leperf/leperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/leperf.cpp rename to deps/icu/source/test/perf/leperf/leperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/letrperf.cpp b/deps/icu/source/test/perf/leperf/letrperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/letrperf.cpp rename to deps/icu/source/test/perf/leperf/letrperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/sfnt.h b/deps/icu/source/test/perf/leperf/sfnt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/sfnt.h rename to deps/icu/source/test/perf/leperf/sfnt.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/xmlreader.cpp b/deps/icu/source/test/perf/leperf/xmlreader.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/xmlreader.cpp rename to deps/icu/source/test/perf/leperf/xmlreader.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/xmlreader.h b/deps/icu/source/test/perf/leperf/xmlreader.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/xmlreader.h rename to deps/icu/source/test/perf/leperf/xmlreader.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/localecanperf/Makefile.in b/deps/icu/source/test/perf/localecanperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/localecanperf/Makefile.in rename to deps/icu/source/test/perf/localecanperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/localecanperf/localecanperf.cpp b/deps/icu/source/test/perf/localecanperf/localecanperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/localecanperf/localecanperf.cpp rename to deps/icu/source/test/perf/localecanperf/localecanperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/localecanperf/runTest.sh b/deps/icu/source/test/perf/localecanperf/runTest.sh similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/localecanperf/runTest.sh rename to deps/icu/source/test/perf/localecanperf/runTest.sh diff --git a/bootstrap/cxx/deps/icu/source/test/perf/normperf/Makefile.in b/deps/icu/source/test/perf/normperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/normperf/Makefile.in rename to deps/icu/source/test/perf/normperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/normperf/NormPerf.pl b/deps/icu/source/test/perf/normperf/NormPerf.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/normperf/NormPerf.pl rename to deps/icu/source/test/perf/normperf/NormPerf.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/normperf/NormPerf_r.pl b/deps/icu/source/test/perf/normperf/NormPerf_r.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/normperf/NormPerf_r.pl rename to deps/icu/source/test/perf/normperf/NormPerf_r.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/normperf/dtfmtrtperf.cpp b/deps/icu/source/test/perf/normperf/dtfmtrtperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/normperf/dtfmtrtperf.cpp rename to deps/icu/source/test/perf/normperf/dtfmtrtperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/normperf/dtfmtrtperf.h b/deps/icu/source/test/perf/normperf/dtfmtrtperf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/normperf/dtfmtrtperf.h rename to deps/icu/source/test/perf/normperf/dtfmtrtperf.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/normperf/dtfmtrtperf.vcxproj b/deps/icu/source/test/perf/normperf/dtfmtrtperf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/normperf/dtfmtrtperf.vcxproj rename to deps/icu/source/test/perf/normperf/dtfmtrtperf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/normperf/dtfmtrtperf.vcxproj.filters b/deps/icu/source/test/perf/normperf/dtfmtrtperf.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/normperf/dtfmtrtperf.vcxproj.filters rename to deps/icu/source/test/perf/normperf/dtfmtrtperf.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/perf/normperf/normperf.cpp b/deps/icu/source/test/perf/normperf/normperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/normperf/normperf.cpp rename to deps/icu/source/test/perf/normperf/normperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/normperf/normperf.h b/deps/icu/source/test/perf/normperf/normperf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/normperf/normperf.h rename to deps/icu/source/test/perf/normperf/normperf.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/normperf/normperf.vcxproj b/deps/icu/source/test/perf/normperf/normperf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/normperf/normperf.vcxproj rename to deps/icu/source/test/perf/normperf/normperf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/normperf/normperf.vcxproj.filters b/deps/icu/source/test/perf/normperf/normperf.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/normperf/normperf.vcxproj.filters rename to deps/icu/source/test/perf/normperf/normperf.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/perf/normperf/simplenormperf.cpp b/deps/icu/source/test/perf/normperf/simplenormperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/normperf/simplenormperf.cpp rename to deps/icu/source/test/perf/normperf/simplenormperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/perf.sln b/deps/icu/source/test/perf/perf.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/perf.sln rename to deps/icu/source/test/perf/perf.sln diff --git a/bootstrap/cxx/deps/icu/source/test/perf/perldriver/Common.pl.template b/deps/icu/source/test/perf/perldriver/Common.pl.template similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/perldriver/Common.pl.template rename to deps/icu/source/test/perf/perldriver/Common.pl.template diff --git a/bootstrap/cxx/deps/icu/source/test/perf/perldriver/Dataset.pm b/deps/icu/source/test/perf/perldriver/Dataset.pm similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/perldriver/Dataset.pm rename to deps/icu/source/test/perf/perldriver/Dataset.pm diff --git a/bootstrap/cxx/deps/icu/source/test/perf/perldriver/Format.pm b/deps/icu/source/test/perf/perldriver/Format.pm similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/perldriver/Format.pm rename to deps/icu/source/test/perf/perldriver/Format.pm diff --git a/bootstrap/cxx/deps/icu/source/test/perf/perldriver/Output.pm b/deps/icu/source/test/perf/perldriver/Output.pm similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/perldriver/Output.pm rename to deps/icu/source/test/perf/perldriver/Output.pm diff --git a/bootstrap/cxx/deps/icu/source/test/perf/perldriver/PerfFramework.pm b/deps/icu/source/test/perf/perldriver/PerfFramework.pm similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/perldriver/PerfFramework.pm rename to deps/icu/source/test/perf/perldriver/PerfFramework.pm diff --git a/bootstrap/cxx/deps/icu/source/test/perf/strsrchperf/Makefile.in b/deps/icu/source/test/perf/strsrchperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/strsrchperf/Makefile.in rename to deps/icu/source/test/perf/strsrchperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/strsrchperf/StrSrchPerf_r.pl b/deps/icu/source/test/perf/strsrchperf/StrSrchPerf_r.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/strsrchperf/StrSrchPerf_r.pl rename to deps/icu/source/test/perf/strsrchperf/StrSrchPerf_r.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/strsrchperf/strsrchperf.cpp b/deps/icu/source/test/perf/strsrchperf/strsrchperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/strsrchperf/strsrchperf.cpp rename to deps/icu/source/test/perf/strsrchperf/strsrchperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/strsrchperf/strsrchperf.h b/deps/icu/source/test/perf/strsrchperf/strsrchperf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/strsrchperf/strsrchperf.h rename to deps/icu/source/test/perf/strsrchperf/strsrchperf.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/strsrchperf/strsrchperf.vcxproj b/deps/icu/source/test/perf/strsrchperf/strsrchperf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/strsrchperf/strsrchperf.vcxproj rename to deps/icu/source/test/perf/strsrchperf/strsrchperf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/strsrchperf/strsrchperf.vcxproj.filters b/deps/icu/source/test/perf/strsrchperf/strsrchperf.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/strsrchperf/strsrchperf.vcxproj.filters rename to deps/icu/source/test/perf/strsrchperf/strsrchperf.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/Makefile.in b/deps/icu/source/test/perf/ubrkperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/Makefile.in rename to deps/icu/source/test/perf/ubrkperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/UBrkPerf_r.pl b/deps/icu/source/test/perf/ubrkperf/UBrkPerf_r.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/UBrkPerf_r.pl rename to deps/icu/source/test/perf/ubrkperf/UBrkPerf_r.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperf.cpp b/deps/icu/source/test/perf/ubrkperf/ubrkperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperf.cpp rename to deps/icu/source/test/perf/ubrkperf/ubrkperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperf.dsp b/deps/icu/source/test/perf/ubrkperf/ubrkperf.dsp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperf.dsp rename to deps/icu/source/test/perf/ubrkperf/ubrkperf.dsp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperf.h b/deps/icu/source/test/perf/ubrkperf/ubrkperf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperf.h rename to deps/icu/source/test/perf/ubrkperf/ubrkperf.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperf.vcxproj b/deps/icu/source/test/perf/ubrkperf/ubrkperf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperf.vcxproj rename to deps/icu/source/test/perf/ubrkperf/ubrkperf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperf.vcxproj.filters b/deps/icu/source/test/perf/ubrkperf/ubrkperf.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperf.vcxproj.filters rename to deps/icu/source/test/perf/ubrkperf/ubrkperf.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperf20.dsp b/deps/icu/source/test/perf/ubrkperf/ubrkperf20.dsp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperf20.dsp rename to deps/icu/source/test/perf/ubrkperf/ubrkperf20.dsp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperfold.cpp b/deps/icu/source/test/perf/ubrkperf/ubrkperfold.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperfold.cpp rename to deps/icu/source/test/perf/ubrkperf/ubrkperfold.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperfold.dsp b/deps/icu/source/test/perf/ubrkperf/ubrkperfold.dsp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperfold.dsp rename to deps/icu/source/test/perf/ubrkperf/ubrkperfold.dsp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ucnvavailperf/ucnvavailperf.cpp b/deps/icu/source/test/perf/ucnvavailperf/ucnvavailperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ucnvavailperf/ucnvavailperf.cpp rename to deps/icu/source/test/perf/ucnvavailperf/ucnvavailperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ucnvavailperf/ucnvavailperf.vcxproj b/deps/icu/source/test/perf/ucnvavailperf/ucnvavailperf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ucnvavailperf/ucnvavailperf.vcxproj rename to deps/icu/source/test/perf/ucnvavailperf/ucnvavailperf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/unisetperf/Makefile.in b/deps/icu/source/test/perf/unisetperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/unisetperf/Makefile.in rename to deps/icu/source/test/perf/unisetperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/bitset.cpp b/deps/icu/source/test/perf/unisetperf/draft/bitset.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/bitset.cpp rename to deps/icu/source/test/perf/unisetperf/draft/bitset.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/contperf.bat b/deps/icu/source/test/perf/unisetperf/draft/contperf.bat similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/contperf.bat rename to deps/icu/source/test/perf/unisetperf/draft/contperf.bat diff --git a/bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/contperf.sh b/deps/icu/source/test/perf/unisetperf/draft/contperf.sh similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/contperf.sh rename to deps/icu/source/test/perf/unisetperf/draft/contperf.sh diff --git a/bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/span16perf.bat b/deps/icu/source/test/perf/unisetperf/draft/span16perf.bat similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/span16perf.bat rename to deps/icu/source/test/perf/unisetperf/draft/span16perf.bat diff --git a/bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/span16perf.sh b/deps/icu/source/test/perf/unisetperf/draft/span16perf.sh similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/span16perf.sh rename to deps/icu/source/test/perf/unisetperf/draft/span16perf.sh diff --git a/bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/span8perf.bat b/deps/icu/source/test/perf/unisetperf/draft/span8perf.bat similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/span8perf.bat rename to deps/icu/source/test/perf/unisetperf/draft/span8perf.bat diff --git a/bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/span8perf.sh b/deps/icu/source/test/perf/unisetperf/draft/span8perf.sh similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/span8perf.sh rename to deps/icu/source/test/perf/unisetperf/draft/span8perf.sh diff --git a/bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/trieset.cpp b/deps/icu/source/test/perf/unisetperf/draft/trieset.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/trieset.cpp rename to deps/icu/source/test/perf/unisetperf/draft/trieset.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/unicont.h b/deps/icu/source/test/perf/unisetperf/draft/unicont.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/unicont.h rename to deps/icu/source/test/perf/unisetperf/draft/unicont.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/unisetperf/unisetperf.cpp b/deps/icu/source/test/perf/unisetperf/unisetperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/unisetperf/unisetperf.cpp rename to deps/icu/source/test/perf/unisetperf/unisetperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/unisetperf/unisetperf.pl b/deps/icu/source/test/perf/unisetperf/unisetperf.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/unisetperf/unisetperf.pl rename to deps/icu/source/test/perf/unisetperf/unisetperf.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/unisetperf/unisetperf.vcxproj b/deps/icu/source/test/perf/unisetperf/unisetperf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/unisetperf/unisetperf.vcxproj rename to deps/icu/source/test/perf/unisetperf/unisetperf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/usetperf/Makefile.in b/deps/icu/source/test/perf/usetperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/usetperf/Makefile.in rename to deps/icu/source/test/perf/usetperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/usetperf/UsetPerf.pl b/deps/icu/source/test/perf/usetperf/UsetPerf.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/usetperf/UsetPerf.pl rename to deps/icu/source/test/perf/usetperf/UsetPerf.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/usetperf/bitset.cpp b/deps/icu/source/test/perf/usetperf/bitset.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/usetperf/bitset.cpp rename to deps/icu/source/test/perf/usetperf/bitset.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/usetperf/bitset.h b/deps/icu/source/test/perf/usetperf/bitset.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/usetperf/bitset.h rename to deps/icu/source/test/perf/usetperf/bitset.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/usetperf/usetperf.cpp b/deps/icu/source/test/perf/usetperf/usetperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/usetperf/usetperf.cpp rename to deps/icu/source/test/perf/usetperf/usetperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/usetperf/usetperf.vcxproj b/deps/icu/source/test/perf/usetperf/usetperf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/usetperf/usetperf.vcxproj rename to deps/icu/source/test/perf/usetperf/usetperf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/usetperf/usetperf.vcxproj.filters b/deps/icu/source/test/perf/usetperf/usetperf.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/usetperf/usetperf.vcxproj.filters rename to deps/icu/source/test/perf/usetperf/usetperf.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ustrperf/Makefile.in b/deps/icu/source/test/perf/ustrperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ustrperf/Makefile.in rename to deps/icu/source/test/perf/ustrperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ustrperf/StringPerf.pl b/deps/icu/source/test/perf/ustrperf/StringPerf.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ustrperf/StringPerf.pl rename to deps/icu/source/test/perf/ustrperf/StringPerf.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ustrperf/StringPerf_r.pl b/deps/icu/source/test/perf/ustrperf/StringPerf_r.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ustrperf/StringPerf_r.pl rename to deps/icu/source/test/perf/ustrperf/StringPerf_r.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ustrperf/stringperf.cpp b/deps/icu/source/test/perf/ustrperf/stringperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ustrperf/stringperf.cpp rename to deps/icu/source/test/perf/ustrperf/stringperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ustrperf/stringperf.h b/deps/icu/source/test/perf/ustrperf/stringperf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ustrperf/stringperf.h rename to deps/icu/source/test/perf/ustrperf/stringperf.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ustrperf/stringperf.vcxproj b/deps/icu/source/test/perf/ustrperf/stringperf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ustrperf/stringperf.vcxproj rename to deps/icu/source/test/perf/ustrperf/stringperf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ustrperf/stringperf.vcxproj.filters b/deps/icu/source/test/perf/ustrperf/stringperf.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ustrperf/stringperf.vcxproj.filters rename to deps/icu/source/test/perf/ustrperf/stringperf.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/perf/utfperf/Makefile.in b/deps/icu/source/test/perf/utfperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/utfperf/Makefile.in rename to deps/icu/source/test/perf/utfperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/utfperf/UtfPerf.pl b/deps/icu/source/test/perf/utfperf/UtfPerf.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/utfperf/UtfPerf.pl rename to deps/icu/source/test/perf/utfperf/UtfPerf.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/utfperf/utfperf.cpp b/deps/icu/source/test/perf/utfperf/utfperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/utfperf/utfperf.cpp rename to deps/icu/source/test/perf/utfperf/utfperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/utfperf/utfperf.vcxproj b/deps/icu/source/test/perf/utfperf/utfperf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/utfperf/utfperf.vcxproj rename to deps/icu/source/test/perf/utfperf/utfperf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/utfperf/utfperf.vcxproj.filters b/deps/icu/source/test/perf/utfperf/utfperf.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/utfperf/utfperf.vcxproj.filters rename to deps/icu/source/test/perf/utfperf/utfperf.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/perf/utrie2perf/Makefile.in b/deps/icu/source/test/perf/utrie2perf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/utrie2perf/Makefile.in rename to deps/icu/source/test/perf/utrie2perf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/utrie2perf/utrie2perf.bat b/deps/icu/source/test/perf/utrie2perf/utrie2perf.bat similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/utrie2perf/utrie2perf.bat rename to deps/icu/source/test/perf/utrie2perf/utrie2perf.bat diff --git a/bootstrap/cxx/deps/icu/source/test/perf/utrie2perf/utrie2perf.cpp b/deps/icu/source/test/perf/utrie2perf/utrie2perf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/utrie2perf/utrie2perf.cpp rename to deps/icu/source/test/perf/utrie2perf/utrie2perf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/utrie2perf/utrie2perf.sh b/deps/icu/source/test/perf/utrie2perf/utrie2perf.sh similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/utrie2perf/utrie2perf.sh rename to deps/icu/source/test/perf/utrie2perf/utrie2perf.sh diff --git a/bootstrap/cxx/deps/icu/source/test/perf/utrie2perf/utrie2perf.vcxproj b/deps/icu/source/test/perf/utrie2perf/utrie2perf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/utrie2perf/utrie2perf.vcxproj rename to deps/icu/source/test/perf/utrie2perf/utrie2perf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/BUILDRULES.py b/deps/icu/source/test/testdata/BUILDRULES.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/BUILDRULES.py rename to deps/icu/source/test/testdata/BUILDRULES.py diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/BidiCharacterTest.txt b/deps/icu/source/test/testdata/BidiCharacterTest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/BidiCharacterTest.txt rename to deps/icu/source/test/testdata/BidiCharacterTest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/BidiTest.txt b/deps/icu/source/test/testdata/BidiTest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/BidiTest.txt rename to deps/icu/source/test/testdata/BidiTest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/Burmese_graphclust_model5_heavy.txt b/deps/icu/source/test/testdata/Burmese_graphclust_model5_heavy.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/Burmese_graphclust_model5_heavy.txt rename to deps/icu/source/test/testdata/Burmese_graphclust_model5_heavy.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/Burmese_graphclust_model5_heavy_Test.txt b/deps/icu/source/test/testdata/Burmese_graphclust_model5_heavy_Test.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/Burmese_graphclust_model5_heavy_Test.txt rename to deps/icu/source/test/testdata/Burmese_graphclust_model5_heavy_Test.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/CollationTest_NON_IGNORABLE_SHORT.txt b/deps/icu/source/test/testdata/CollationTest_NON_IGNORABLE_SHORT.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/CollationTest_NON_IGNORABLE_SHORT.txt rename to deps/icu/source/test/testdata/CollationTest_NON_IGNORABLE_SHORT.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/CollationTest_SHIFTED_SHORT.txt b/deps/icu/source/test/testdata/CollationTest_SHIFTED_SHORT.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/CollationTest_SHIFTED_SHORT.txt rename to deps/icu/source/test/testdata/CollationTest_SHIFTED_SHORT.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/ConverterSelectorTestUTF8.txt b/deps/icu/source/test/testdata/ConverterSelectorTestUTF8.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/ConverterSelectorTestUTF8.txt rename to deps/icu/source/test/testdata/ConverterSelectorTestUTF8.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/GraphemeBreakTest.txt b/deps/icu/source/test/testdata/GraphemeBreakTest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/GraphemeBreakTest.txt rename to deps/icu/source/test/testdata/GraphemeBreakTest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/IdnaTestV2.txt b/deps/icu/source/test/testdata/IdnaTestV2.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/IdnaTestV2.txt rename to deps/icu/source/test/testdata/IdnaTestV2.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/LineBreakTest.txt b/deps/icu/source/test/testdata/LineBreakTest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/LineBreakTest.txt rename to deps/icu/source/test/testdata/LineBreakTest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/Makefile.in b/deps/icu/source/test/testdata/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/Makefile.in rename to deps/icu/source/test/testdata/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/NormalizationTest-3.2.0.txt b/deps/icu/source/test/testdata/NormalizationTest-3.2.0.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/NormalizationTest-3.2.0.txt rename to deps/icu/source/test/testdata/NormalizationTest-3.2.0.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/NumberFormatTestCases.txt b/deps/icu/source/test/testdata/NumberFormatTestCases.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/NumberFormatTestCases.txt rename to deps/icu/source/test/testdata/NumberFormatTestCases.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/SentenceBreakTest.txt b/deps/icu/source/test/testdata/SentenceBreakTest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/SentenceBreakTest.txt rename to deps/icu/source/test/testdata/SentenceBreakTest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/TestFont1.otf b/deps/icu/source/test/testdata/TestFont1.otf similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/TestFont1.otf rename to deps/icu/source/test/testdata/TestFont1.otf diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/Thai_codepoints_exclusive_model5_heavy.txt b/deps/icu/source/test/testdata/Thai_codepoints_exclusive_model5_heavy.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/Thai_codepoints_exclusive_model5_heavy.txt rename to deps/icu/source/test/testdata/Thai_codepoints_exclusive_model5_heavy.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/Thai_codepoints_exclusive_model5_heavy_Test.txt b/deps/icu/source/test/testdata/Thai_codepoints_exclusive_model5_heavy_Test.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/Thai_codepoints_exclusive_model5_heavy_Test.txt rename to deps/icu/source/test/testdata/Thai_codepoints_exclusive_model5_heavy_Test.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/Thai_graphclust_model4_heavy.txt b/deps/icu/source/test/testdata/Thai_graphclust_model4_heavy.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/Thai_graphclust_model4_heavy.txt rename to deps/icu/source/test/testdata/Thai_graphclust_model4_heavy.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/Thai_graphclust_model4_heavy_Test.txt b/deps/icu/source/test/testdata/Thai_graphclust_model4_heavy_Test.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/Thai_graphclust_model4_heavy_Test.txt rename to deps/icu/source/test/testdata/Thai_graphclust_model4_heavy_Test.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/WordBreakTest.txt b/deps/icu/source/test/testdata/WordBreakTest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/WordBreakTest.txt rename to deps/icu/source/test/testdata/WordBreakTest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/break_rules/README.md b/deps/icu/source/test/testdata/break_rules/README.md similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/break_rules/README.md rename to deps/icu/source/test/testdata/break_rules/README.md diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/break_rules/grapheme.txt b/deps/icu/source/test/testdata/break_rules/grapheme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/break_rules/grapheme.txt rename to deps/icu/source/test/testdata/break_rules/grapheme.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/break_rules/line.txt b/deps/icu/source/test/testdata/break_rules/line.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/break_rules/line.txt rename to deps/icu/source/test/testdata/break_rules/line.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/break_rules/line_cj.txt b/deps/icu/source/test/testdata/break_rules/line_cj.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/break_rules/line_cj.txt rename to deps/icu/source/test/testdata/break_rules/line_cj.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/break_rules/line_loose.txt b/deps/icu/source/test/testdata/break_rules/line_loose.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/break_rules/line_loose.txt rename to deps/icu/source/test/testdata/break_rules/line_loose.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/break_rules/line_loose_cj.txt b/deps/icu/source/test/testdata/break_rules/line_loose_cj.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/break_rules/line_loose_cj.txt rename to deps/icu/source/test/testdata/break_rules/line_loose_cj.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/break_rules/line_normal.txt b/deps/icu/source/test/testdata/break_rules/line_normal.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/break_rules/line_normal.txt rename to deps/icu/source/test/testdata/break_rules/line_normal.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/break_rules/line_normal_cj.txt b/deps/icu/source/test/testdata/break_rules/line_normal_cj.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/break_rules/line_normal_cj.txt rename to deps/icu/source/test/testdata/break_rules/line_normal_cj.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/break_rules/sentence.txt b/deps/icu/source/test/testdata/break_rules/sentence.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/break_rules/sentence.txt rename to deps/icu/source/test/testdata/break_rules/sentence.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/break_rules/word.txt b/deps/icu/source/test/testdata/break_rules/word.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/break_rules/word.txt rename to deps/icu/source/test/testdata/break_rules/word.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/break_rules/word_POSIX.txt b/deps/icu/source/test/testdata/break_rules/word_POSIX.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/break_rules/word_POSIX.txt rename to deps/icu/source/test/testdata/break_rules/word_POSIX.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/calendar.txt b/deps/icu/source/test/testdata/calendar.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/calendar.txt rename to deps/icu/source/test/testdata/calendar.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/casing.txt b/deps/icu/source/test/testdata/casing.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/casing.txt rename to deps/icu/source/test/testdata/casing.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/cldr/units/_readme.txt b/deps/icu/source/test/testdata/cldr/units/_readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/cldr/units/_readme.txt rename to deps/icu/source/test/testdata/cldr/units/_readme.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/cldr/units/unitPreferencesTest.txt b/deps/icu/source/test/testdata/cldr/units/unitPreferencesTest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/cldr/units/unitPreferencesTest.txt rename to deps/icu/source/test/testdata/cldr/units/unitPreferencesTest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/cldr/units/unitsTest.txt b/deps/icu/source/test/testdata/cldr/units/unitsTest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/cldr/units/unitsTest.txt rename to deps/icu/source/test/testdata/cldr/units/unitsTest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/free-blocks.16.toml b/deps/icu/source/test/testdata/codepointtrie/free-blocks.16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/free-blocks.16.toml rename to deps/icu/source/test/testdata/codepointtrie/free-blocks.16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/free-blocks.32.toml b/deps/icu/source/test/testdata/codepointtrie/free-blocks.32.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/free-blocks.32.toml rename to deps/icu/source/test/testdata/codepointtrie/free-blocks.32.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/free-blocks.8.toml b/deps/icu/source/test/testdata/codepointtrie/free-blocks.8.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/free-blocks.8.toml rename to deps/icu/source/test/testdata/codepointtrie/free-blocks.8.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/free-blocks.small16.toml b/deps/icu/source/test/testdata/codepointtrie/free-blocks.small16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/free-blocks.small16.toml rename to deps/icu/source/test/testdata/codepointtrie/free-blocks.small16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/grow-data.16.toml b/deps/icu/source/test/testdata/codepointtrie/grow-data.16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/grow-data.16.toml rename to deps/icu/source/test/testdata/codepointtrie/grow-data.16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/grow-data.32.toml b/deps/icu/source/test/testdata/codepointtrie/grow-data.32.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/grow-data.32.toml rename to deps/icu/source/test/testdata/codepointtrie/grow-data.32.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/grow-data.8.toml b/deps/icu/source/test/testdata/codepointtrie/grow-data.8.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/grow-data.8.toml rename to deps/icu/source/test/testdata/codepointtrie/grow-data.8.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/grow-data.small16.toml b/deps/icu/source/test/testdata/codepointtrie/grow-data.small16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/grow-data.small16.toml rename to deps/icu/source/test/testdata/codepointtrie/grow-data.small16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-empty.16.toml b/deps/icu/source/test/testdata/codepointtrie/set-empty.16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-empty.16.toml rename to deps/icu/source/test/testdata/codepointtrie/set-empty.16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-empty.32.toml b/deps/icu/source/test/testdata/codepointtrie/set-empty.32.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-empty.32.toml rename to deps/icu/source/test/testdata/codepointtrie/set-empty.32.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-empty.8.toml b/deps/icu/source/test/testdata/codepointtrie/set-empty.8.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-empty.8.toml rename to deps/icu/source/test/testdata/codepointtrie/set-empty.8.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-empty.small16.toml b/deps/icu/source/test/testdata/codepointtrie/set-empty.small16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-empty.small16.toml rename to deps/icu/source/test/testdata/codepointtrie/set-empty.small16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-single-value.16.toml b/deps/icu/source/test/testdata/codepointtrie/set-single-value.16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-single-value.16.toml rename to deps/icu/source/test/testdata/codepointtrie/set-single-value.16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-single-value.32.toml b/deps/icu/source/test/testdata/codepointtrie/set-single-value.32.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-single-value.32.toml rename to deps/icu/source/test/testdata/codepointtrie/set-single-value.32.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-single-value.8.toml b/deps/icu/source/test/testdata/codepointtrie/set-single-value.8.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-single-value.8.toml rename to deps/icu/source/test/testdata/codepointtrie/set-single-value.8.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-single-value.small16.toml b/deps/icu/source/test/testdata/codepointtrie/set-single-value.small16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-single-value.small16.toml rename to deps/icu/source/test/testdata/codepointtrie/set-single-value.small16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set1.16.toml b/deps/icu/source/test/testdata/codepointtrie/set1.16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set1.16.toml rename to deps/icu/source/test/testdata/codepointtrie/set1.16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set1.32.toml b/deps/icu/source/test/testdata/codepointtrie/set1.32.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set1.32.toml rename to deps/icu/source/test/testdata/codepointtrie/set1.32.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set1.8.toml b/deps/icu/source/test/testdata/codepointtrie/set1.8.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set1.8.toml rename to deps/icu/source/test/testdata/codepointtrie/set1.8.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set1.small16.toml b/deps/icu/source/test/testdata/codepointtrie/set1.small16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set1.small16.toml rename to deps/icu/source/test/testdata/codepointtrie/set1.small16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set2-overlap.16.toml b/deps/icu/source/test/testdata/codepointtrie/set2-overlap.16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set2-overlap.16.toml rename to deps/icu/source/test/testdata/codepointtrie/set2-overlap.16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set2-overlap.32.toml b/deps/icu/source/test/testdata/codepointtrie/set2-overlap.32.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set2-overlap.32.toml rename to deps/icu/source/test/testdata/codepointtrie/set2-overlap.32.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set2-overlap.small16.toml b/deps/icu/source/test/testdata/codepointtrie/set2-overlap.small16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set2-overlap.small16.toml rename to deps/icu/source/test/testdata/codepointtrie/set2-overlap.small16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set3-initial-9.16.toml b/deps/icu/source/test/testdata/codepointtrie/set3-initial-9.16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set3-initial-9.16.toml rename to deps/icu/source/test/testdata/codepointtrie/set3-initial-9.16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set3-initial-9.32.toml b/deps/icu/source/test/testdata/codepointtrie/set3-initial-9.32.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set3-initial-9.32.toml rename to deps/icu/source/test/testdata/codepointtrie/set3-initial-9.32.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set3-initial-9.8.toml b/deps/icu/source/test/testdata/codepointtrie/set3-initial-9.8.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set3-initial-9.8.toml rename to deps/icu/source/test/testdata/codepointtrie/set3-initial-9.8.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set3-initial-9.small16.toml b/deps/icu/source/test/testdata/codepointtrie/set3-initial-9.small16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set3-initial-9.small16.toml rename to deps/icu/source/test/testdata/codepointtrie/set3-initial-9.small16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/short-all-same.8.toml b/deps/icu/source/test/testdata/codepointtrie/short-all-same.8.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/short-all-same.8.toml rename to deps/icu/source/test/testdata/codepointtrie/short-all-same.8.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/short-all-same.small16.toml b/deps/icu/source/test/testdata/codepointtrie/short-all-same.small16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/short-all-same.small16.toml rename to deps/icu/source/test/testdata/codepointtrie/short-all-same.small16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/small0-in-fast.16.toml b/deps/icu/source/test/testdata/codepointtrie/small0-in-fast.16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/small0-in-fast.16.toml rename to deps/icu/source/test/testdata/codepointtrie/small0-in-fast.16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/small0-in-fast.32.toml b/deps/icu/source/test/testdata/codepointtrie/small0-in-fast.32.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/small0-in-fast.32.toml rename to deps/icu/source/test/testdata/codepointtrie/small0-in-fast.32.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/small0-in-fast.8.toml b/deps/icu/source/test/testdata/codepointtrie/small0-in-fast.8.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/small0-in-fast.8.toml rename to deps/icu/source/test/testdata/codepointtrie/small0-in-fast.8.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/small0-in-fast.small16.toml b/deps/icu/source/test/testdata/codepointtrie/small0-in-fast.small16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/small0-in-fast.small16.toml rename to deps/icu/source/test/testdata/codepointtrie/small0-in-fast.small16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/collationtest.txt b/deps/icu/source/test/testdata/collationtest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/collationtest.txt rename to deps/icu/source/test/testdata/collationtest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/conversion.txt b/deps/icu/source/test/testdata/conversion.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/conversion.txt rename to deps/icu/source/test/testdata/conversion.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/csdetest.xml b/deps/icu/source/test/testdata/csdetest.xml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/csdetest.xml rename to deps/icu/source/test/testdata/csdetest.xml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/dcfmtest.txt b/deps/icu/source/test/testdata/dcfmtest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/dcfmtest.txt rename to deps/icu/source/test/testdata/dcfmtest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/default.txt b/deps/icu/source/test/testdata/default.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/default.txt rename to deps/icu/source/test/testdata/default.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/emoji-test.txt b/deps/icu/source/test/testdata/emoji-test.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/emoji-test.txt rename to deps/icu/source/test/testdata/emoji-test.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/encoded.utf16be b/deps/icu/source/test/testdata/encoded.utf16be similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/encoded.utf16be rename to deps/icu/source/test/testdata/encoded.utf16be diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/filters/filtertest.txt b/deps/icu/source/test/testdata/filters/filtertest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/filters/filtertest.txt rename to deps/icu/source/test/testdata/filters/filtertest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/filtertest.txt b/deps/icu/source/test/testdata/filtertest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/filtertest.txt rename to deps/icu/source/test/testdata/filtertest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/format.txt b/deps/icu/source/test/testdata/format.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/format.txt rename to deps/icu/source/test/testdata/format.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/ibm9027.ucm b/deps/icu/source/test/testdata/ibm9027.ucm similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/ibm9027.ucm rename to deps/icu/source/test/testdata/ibm9027.ucm diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/icuio.txt b/deps/icu/source/test/testdata/icuio.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/icuio.txt rename to deps/icu/source/test/testdata/icuio.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/idna_conf.txt b/deps/icu/source/test/testdata/idna_conf.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/idna_conf.txt rename to deps/icu/source/test/testdata/idna_conf.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/idna_rules.txt b/deps/icu/source/test/testdata/idna_rules.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/idna_rules.txt rename to deps/icu/source/test/testdata/idna_rules.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/importtest.bin b/deps/icu/source/test/testdata/importtest.bin similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/importtest.bin rename to deps/icu/source/test/testdata/importtest.bin diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/letest.xml b/deps/icu/source/test/testdata/letest.xml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/letest.xml rename to deps/icu/source/test/testdata/letest.xml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/localeCanonicalization.txt b/deps/icu/source/test/testdata/localeCanonicalization.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/localeCanonicalization.txt rename to deps/icu/source/test/testdata/localeCanonicalization.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/localeMatcherTest.txt b/deps/icu/source/test/testdata/localeMatcherTest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/localeMatcherTest.txt rename to deps/icu/source/test/testdata/localeMatcherTest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/mc.txt b/deps/icu/source/test/testdata/mc.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/mc.txt rename to deps/icu/source/test/testdata/mc.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/metaZones.txt b/deps/icu/source/test/testdata/metaZones.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/metaZones.txt rename to deps/icu/source/test/testdata/metaZones.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/nfs4_cis_prep.txt b/deps/icu/source/test/testdata/nfs4_cis_prep.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/nfs4_cis_prep.txt rename to deps/icu/source/test/testdata/nfs4_cis_prep.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/nfs4_cs_prep_ci.txt b/deps/icu/source/test/testdata/nfs4_cs_prep_ci.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/nfs4_cs_prep_ci.txt rename to deps/icu/source/test/testdata/nfs4_cs_prep_ci.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/nfs4_cs_prep_cs.txt b/deps/icu/source/test/testdata/nfs4_cs_prep_cs.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/nfs4_cs_prep_cs.txt rename to deps/icu/source/test/testdata/nfs4_cs_prep_cs.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/nfs4_mixed_prep_p.txt b/deps/icu/source/test/testdata/nfs4_mixed_prep_p.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/nfs4_mixed_prep_p.txt rename to deps/icu/source/test/testdata/nfs4_mixed_prep_p.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/nfs4_mixed_prep_s.txt b/deps/icu/source/test/testdata/nfs4_mixed_prep_s.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/nfs4_mixed_prep_s.txt rename to deps/icu/source/test/testdata/nfs4_mixed_prep_s.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/numberformattestspecification.txt b/deps/icu/source/test/testdata/numberformattestspecification.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/numberformattestspecification.txt rename to deps/icu/source/test/testdata/numberformattestspecification.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/numberpermutationtest.txt b/deps/icu/source/test/testdata/numberpermutationtest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/numberpermutationtest.txt rename to deps/icu/source/test/testdata/numberpermutationtest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/old_e_testtypes.res b/deps/icu/source/test/testdata/old_e_testtypes.res similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/old_e_testtypes.res rename to deps/icu/source/test/testdata/old_e_testtypes.res diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/old_l_testtypes.res b/deps/icu/source/test/testdata/old_l_testtypes.res similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/old_l_testtypes.res rename to deps/icu/source/test/testdata/old_l_testtypes.res diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/pkgdata.inc.in b/deps/icu/source/test/testdata/pkgdata.inc.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/pkgdata.inc.in rename to deps/icu/source/test/testdata/pkgdata.inc.in diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/pkgdataMakefile.in b/deps/icu/source/test/testdata/pkgdataMakefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/pkgdataMakefile.in rename to deps/icu/source/test/testdata/pkgdataMakefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/ra.txt b/deps/icu/source/test/testdata/ra.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/ra.txt rename to deps/icu/source/test/testdata/ra.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/ra.xlf b/deps/icu/source/test/testdata/ra.xlf similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/ra.xlf rename to deps/icu/source/test/testdata/ra.xlf diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/rbbitst.txt b/deps/icu/source/test/testdata/rbbitst.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/rbbitst.txt rename to deps/icu/source/test/testdata/rbbitst.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/re_tests.txt b/deps/icu/source/test/testdata/re_tests.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/re_tests.txt rename to deps/icu/source/test/testdata/re_tests.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/readme.txt b/deps/icu/source/test/testdata/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/readme.txt rename to deps/icu/source/test/testdata/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/regextst.txt b/deps/icu/source/test/testdata/regextst.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/regextst.txt rename to deps/icu/source/test/testdata/regextst.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/riwords.txt b/deps/icu/source/test/testdata/riwords.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/riwords.txt rename to deps/icu/source/test/testdata/riwords.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/root.txt b/deps/icu/source/test/testdata/root.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/root.txt rename to deps/icu/source/test/testdata/root.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/sh.txt b/deps/icu/source/test/testdata/sh.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/sh.txt rename to deps/icu/source/test/testdata/sh.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/sh_YU.txt b/deps/icu/source/test/testdata/sh_YU.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/sh_YU.txt rename to deps/icu/source/test/testdata/sh_YU.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/ssearch.xml b/deps/icu/source/test/testdata/ssearch.xml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/ssearch.xml rename to deps/icu/source/test/testdata/ssearch.xml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/structLocale.txt b/deps/icu/source/test/testdata/structLocale.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/structLocale.txt rename to deps/icu/source/test/testdata/structLocale.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/te.txt b/deps/icu/source/test/testdata/te.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/te.txt rename to deps/icu/source/test/testdata/te.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/te_IN.txt b/deps/icu/source/test/testdata/te_IN.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/te_IN.txt rename to deps/icu/source/test/testdata/te_IN.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/te_IN_REVISED.txt b/deps/icu/source/test/testdata/te_IN_REVISED.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/te_IN_REVISED.txt rename to deps/icu/source/test/testdata/te_IN_REVISED.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/test1.ucm b/deps/icu/source/test/testdata/test1.ucm similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/test1.ucm rename to deps/icu/source/test/testdata/test1.ucm diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/test1bmp.ucm b/deps/icu/source/test/testdata/test1bmp.ucm similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/test1bmp.ucm rename to deps/icu/source/test/testdata/test1bmp.ucm diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/test2.ucm b/deps/icu/source/test/testdata/test2.ucm similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/test2.ucm rename to deps/icu/source/test/testdata/test2.ucm diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/test3.ucm b/deps/icu/source/test/testdata/test3.ucm similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/test3.ucm rename to deps/icu/source/test/testdata/test3.ucm diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/test4.ucm b/deps/icu/source/test/testdata/test4.ucm similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/test4.ucm rename to deps/icu/source/test/testdata/test4.ucm diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/test4x.ucm b/deps/icu/source/test/testdata/test4x.ucm similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/test4x.ucm rename to deps/icu/source/test/testdata/test4x.ucm diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/test5.ucm b/deps/icu/source/test/testdata/test5.ucm similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/test5.ucm rename to deps/icu/source/test/testdata/test5.ucm diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/testaliases.txt b/deps/icu/source/test/testdata/testaliases.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/testaliases.txt rename to deps/icu/source/test/testdata/testaliases.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/testdata.mak b/deps/icu/source/test/testdata/testdata.mak similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/testdata.mak rename to deps/icu/source/test/testdata/testdata.mak diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/testempty.txt b/deps/icu/source/test/testdata/testempty.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/testempty.txt rename to deps/icu/source/test/testdata/testempty.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/testnorm.txt b/deps/icu/source/test/testdata/testnorm.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/testnorm.txt rename to deps/icu/source/test/testdata/testnorm.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/testtypes.txt b/deps/icu/source/test/testdata/testtypes.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/testtypes.txt rename to deps/icu/source/test/testdata/testtypes.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/timezoneTypes.txt b/deps/icu/source/test/testdata/timezoneTypes.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/timezoneTypes.txt rename to deps/icu/source/test/testdata/timezoneTypes.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/translit_rules.txt b/deps/icu/source/test/testdata/translit_rules.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/translit_rules.txt rename to deps/icu/source/test/testdata/translit_rules.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/uni-text.bin b/deps/icu/source/test/testdata/uni-text.bin similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/uni-text.bin rename to deps/icu/source/test/testdata/uni-text.bin diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/windowsZones.txt b/deps/icu/source/test/testdata/windowsZones.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/windowsZones.txt rename to deps/icu/source/test/testdata/windowsZones.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/zoneinfo64.txt b/deps/icu/source/test/testdata/zoneinfo64.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/zoneinfo64.txt rename to deps/icu/source/test/testdata/zoneinfo64.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testmap/Makefile.in b/deps/icu/source/test/testmap/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testmap/Makefile.in rename to deps/icu/source/test/testmap/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/testmap/readme.txt b/deps/icu/source/test/testmap/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testmap/readme.txt rename to deps/icu/source/test/testmap/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testmap/testmap.c b/deps/icu/source/test/testmap/testmap.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testmap/testmap.c rename to deps/icu/source/test/testmap/testmap.c diff --git a/bootstrap/cxx/deps/icu/source/test/testmap/testmap.dsp b/deps/icu/source/test/testmap/testmap.dsp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testmap/testmap.dsp rename to deps/icu/source/test/testmap/testmap.dsp diff --git a/bootstrap/cxx/deps/icu/source/test/thaitest/Makefile.in b/deps/icu/source/test/thaitest/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/thaitest/Makefile.in rename to deps/icu/source/test/thaitest/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/thaitest/space.txt b/deps/icu/source/test/thaitest/space.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/thaitest/space.txt rename to deps/icu/source/test/thaitest/space.txt diff --git a/bootstrap/cxx/deps/icu/source/test/thaitest/thaitest.cpp b/deps/icu/source/test/thaitest/thaitest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/thaitest/thaitest.cpp rename to deps/icu/source/test/thaitest/thaitest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/thaitest/thaitest.dsp b/deps/icu/source/test/thaitest/thaitest.dsp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/thaitest/thaitest.dsp rename to deps/icu/source/test/thaitest/thaitest.dsp diff --git a/bootstrap/cxx/deps/icu/source/tools/Makefile.in b/deps/icu/source/tools/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/Makefile.in rename to deps/icu/source/tools/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/Makefile.in b/deps/icu/source/tools/ctestfw/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/Makefile.in rename to deps/icu/source/tools/ctestfw/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/ctest.c b/deps/icu/source/tools/ctestfw/ctest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/ctest.c rename to deps/icu/source/tools/ctestfw/ctest.c diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/ctestfw.vcxproj b/deps/icu/source/tools/ctestfw/ctestfw.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/ctestfw.vcxproj rename to deps/icu/source/tools/ctestfw/ctestfw.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/ctestfw.vcxproj.filters b/deps/icu/source/tools/ctestfw/ctestfw.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/ctestfw.vcxproj.filters rename to deps/icu/source/tools/ctestfw/ctestfw.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/datamap.cpp b/deps/icu/source/tools/ctestfw/datamap.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/datamap.cpp rename to deps/icu/source/tools/ctestfw/datamap.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/sources.txt b/deps/icu/source/tools/ctestfw/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/sources.txt rename to deps/icu/source/tools/ctestfw/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/testdata.cpp b/deps/icu/source/tools/ctestfw/testdata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/testdata.cpp rename to deps/icu/source/tools/ctestfw/testdata.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/tstdtmod.cpp b/deps/icu/source/tools/ctestfw/tstdtmod.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/tstdtmod.cpp rename to deps/icu/source/tools/ctestfw/tstdtmod.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/ucln_ct.c b/deps/icu/source/tools/ctestfw/ucln_ct.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/ucln_ct.c rename to deps/icu/source/tools/ctestfw/ucln_ct.c diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/ctest.h b/deps/icu/source/tools/ctestfw/unicode/ctest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/ctest.h rename to deps/icu/source/tools/ctestfw/unicode/ctest.h diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/datamap.h b/deps/icu/source/tools/ctestfw/unicode/datamap.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/datamap.h rename to deps/icu/source/tools/ctestfw/unicode/datamap.h diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/testdata.h b/deps/icu/source/tools/ctestfw/unicode/testdata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/testdata.h rename to deps/icu/source/tools/ctestfw/unicode/testdata.h diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/testlog.h b/deps/icu/source/tools/ctestfw/unicode/testlog.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/testlog.h rename to deps/icu/source/tools/ctestfw/unicode/testlog.h diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/testtype.h b/deps/icu/source/tools/ctestfw/unicode/testtype.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/testtype.h rename to deps/icu/source/tools/ctestfw/unicode/testtype.h diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/tstdtmod.h b/deps/icu/source/tools/ctestfw/unicode/tstdtmod.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/tstdtmod.h rename to deps/icu/source/tools/ctestfw/unicode/tstdtmod.h diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/uperf.h b/deps/icu/source/tools/ctestfw/unicode/uperf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/uperf.h rename to deps/icu/source/tools/ctestfw/unicode/uperf.h diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/utimer.h b/deps/icu/source/tools/ctestfw/unicode/utimer.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/utimer.h rename to deps/icu/source/tools/ctestfw/unicode/utimer.h diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/uperf.cpp b/deps/icu/source/tools/ctestfw/uperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/uperf.cpp rename to deps/icu/source/tools/ctestfw/uperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/escapesrc/Makefile.in b/deps/icu/source/tools/escapesrc/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/escapesrc/Makefile.in rename to deps/icu/source/tools/escapesrc/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/escapesrc/cptbl.h b/deps/icu/source/tools/escapesrc/cptbl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/escapesrc/cptbl.h rename to deps/icu/source/tools/escapesrc/cptbl.h diff --git a/bootstrap/cxx/deps/icu/source/tools/escapesrc/escapesrc.cpp b/deps/icu/source/tools/escapesrc/escapesrc.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/escapesrc/escapesrc.cpp rename to deps/icu/source/tools/escapesrc/escapesrc.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/escapesrc/expect-simple.cpp b/deps/icu/source/tools/escapesrc/expect-simple.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/escapesrc/expect-simple.cpp rename to deps/icu/source/tools/escapesrc/expect-simple.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/escapesrc/tblgen.cpp b/deps/icu/source/tools/escapesrc/tblgen.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/escapesrc/tblgen.cpp rename to deps/icu/source/tools/escapesrc/tblgen.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/escapesrc/test-nochange.cpp b/deps/icu/source/tools/escapesrc/test-nochange.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/escapesrc/test-nochange.cpp rename to deps/icu/source/tools/escapesrc/test-nochange.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/escapesrc/test-simple.cpp b/deps/icu/source/tools/escapesrc/test-simple.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/escapesrc/test-simple.cpp rename to deps/icu/source/tools/escapesrc/test-simple.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/genbrk/Makefile.in b/deps/icu/source/tools/genbrk/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genbrk/Makefile.in rename to deps/icu/source/tools/genbrk/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/genbrk/genbrk.1.in b/deps/icu/source/tools/genbrk/genbrk.1.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genbrk/genbrk.1.in rename to deps/icu/source/tools/genbrk/genbrk.1.in diff --git a/bootstrap/cxx/deps/icu/source/tools/genbrk/genbrk.cpp b/deps/icu/source/tools/genbrk/genbrk.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genbrk/genbrk.cpp rename to deps/icu/source/tools/genbrk/genbrk.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/genbrk/genbrk.vcxproj b/deps/icu/source/tools/genbrk/genbrk.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genbrk/genbrk.vcxproj rename to deps/icu/source/tools/genbrk/genbrk.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/genbrk/genbrk.vcxproj.filters b/deps/icu/source/tools/genbrk/genbrk.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genbrk/genbrk.vcxproj.filters rename to deps/icu/source/tools/genbrk/genbrk.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/genbrk/sources.txt b/deps/icu/source/tools/genbrk/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genbrk/sources.txt rename to deps/icu/source/tools/genbrk/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/genccode/Makefile.in b/deps/icu/source/tools/genccode/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genccode/Makefile.in rename to deps/icu/source/tools/genccode/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/genccode/genccode.8.in b/deps/icu/source/tools/genccode/genccode.8.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genccode/genccode.8.in rename to deps/icu/source/tools/genccode/genccode.8.in diff --git a/bootstrap/cxx/deps/icu/source/tools/genccode/genccode.c b/deps/icu/source/tools/genccode/genccode.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genccode/genccode.c rename to deps/icu/source/tools/genccode/genccode.c diff --git a/bootstrap/cxx/deps/icu/source/tools/genccode/genccode.vcxproj b/deps/icu/source/tools/genccode/genccode.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genccode/genccode.vcxproj rename to deps/icu/source/tools/genccode/genccode.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/genccode/genccode.vcxproj.filters b/deps/icu/source/tools/genccode/genccode.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genccode/genccode.vcxproj.filters rename to deps/icu/source/tools/genccode/genccode.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/genccode/sources.txt b/deps/icu/source/tools/genccode/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genccode/sources.txt rename to deps/icu/source/tools/genccode/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/gencfu/Makefile.in b/deps/icu/source/tools/gencfu/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencfu/Makefile.in rename to deps/icu/source/tools/gencfu/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/gencfu/gencfu.1.in b/deps/icu/source/tools/gencfu/gencfu.1.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencfu/gencfu.1.in rename to deps/icu/source/tools/gencfu/gencfu.1.in diff --git a/bootstrap/cxx/deps/icu/source/tools/gencfu/gencfu.cpp b/deps/icu/source/tools/gencfu/gencfu.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencfu/gencfu.cpp rename to deps/icu/source/tools/gencfu/gencfu.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/gencfu/gencfu.vcxproj b/deps/icu/source/tools/gencfu/gencfu.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencfu/gencfu.vcxproj rename to deps/icu/source/tools/gencfu/gencfu.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/gencfu/gencfu.vcxproj.filters b/deps/icu/source/tools/gencfu/gencfu.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencfu/gencfu.vcxproj.filters rename to deps/icu/source/tools/gencfu/gencfu.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/gencfu/sources.txt b/deps/icu/source/tools/gencfu/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencfu/sources.txt rename to deps/icu/source/tools/gencfu/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/gencmn/Makefile.in b/deps/icu/source/tools/gencmn/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencmn/Makefile.in rename to deps/icu/source/tools/gencmn/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/gencmn/gencmn.8.in b/deps/icu/source/tools/gencmn/gencmn.8.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencmn/gencmn.8.in rename to deps/icu/source/tools/gencmn/gencmn.8.in diff --git a/bootstrap/cxx/deps/icu/source/tools/gencmn/gencmn.c b/deps/icu/source/tools/gencmn/gencmn.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencmn/gencmn.c rename to deps/icu/source/tools/gencmn/gencmn.c diff --git a/bootstrap/cxx/deps/icu/source/tools/gencmn/gencmn.vcxproj b/deps/icu/source/tools/gencmn/gencmn.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencmn/gencmn.vcxproj rename to deps/icu/source/tools/gencmn/gencmn.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/gencmn/gencmn.vcxproj.filters b/deps/icu/source/tools/gencmn/gencmn.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencmn/gencmn.vcxproj.filters rename to deps/icu/source/tools/gencmn/gencmn.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/gencmn/sources.txt b/deps/icu/source/tools/gencmn/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencmn/sources.txt rename to deps/icu/source/tools/gencmn/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/gencnval/Makefile.in b/deps/icu/source/tools/gencnval/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencnval/Makefile.in rename to deps/icu/source/tools/gencnval/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/gencnval/gencnval.1.in b/deps/icu/source/tools/gencnval/gencnval.1.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencnval/gencnval.1.in rename to deps/icu/source/tools/gencnval/gencnval.1.in diff --git a/bootstrap/cxx/deps/icu/source/tools/gencnval/gencnval.c b/deps/icu/source/tools/gencnval/gencnval.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencnval/gencnval.c rename to deps/icu/source/tools/gencnval/gencnval.c diff --git a/bootstrap/cxx/deps/icu/source/tools/gencnval/gencnval.vcxproj b/deps/icu/source/tools/gencnval/gencnval.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencnval/gencnval.vcxproj rename to deps/icu/source/tools/gencnval/gencnval.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/gencnval/gencnval.vcxproj.filters b/deps/icu/source/tools/gencnval/gencnval.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencnval/gencnval.vcxproj.filters rename to deps/icu/source/tools/gencnval/gencnval.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/gencnval/sources.txt b/deps/icu/source/tools/gencnval/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencnval/sources.txt rename to deps/icu/source/tools/gencnval/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/gencolusb/README.md b/deps/icu/source/tools/gencolusb/README.md similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencolusb/README.md rename to deps/icu/source/tools/gencolusb/README.md diff --git a/bootstrap/cxx/deps/icu/source/tools/gencolusb/extract_unsafe_backwards.cpp b/deps/icu/source/tools/gencolusb/extract_unsafe_backwards.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencolusb/extract_unsafe_backwards.cpp rename to deps/icu/source/tools/gencolusb/extract_unsafe_backwards.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/gencolusb/verify_uset.cpp b/deps/icu/source/tools/gencolusb/verify_uset.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencolusb/verify_uset.cpp rename to deps/icu/source/tools/gencolusb/verify_uset.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/gendict/Makefile.in b/deps/icu/source/tools/gendict/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gendict/Makefile.in rename to deps/icu/source/tools/gendict/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/gendict/gendict.1.in b/deps/icu/source/tools/gendict/gendict.1.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gendict/gendict.1.in rename to deps/icu/source/tools/gendict/gendict.1.in diff --git a/bootstrap/cxx/deps/icu/source/tools/gendict/gendict.cpp b/deps/icu/source/tools/gendict/gendict.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gendict/gendict.cpp rename to deps/icu/source/tools/gendict/gendict.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/gendict/gendict.vcxproj b/deps/icu/source/tools/gendict/gendict.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gendict/gendict.vcxproj rename to deps/icu/source/tools/gendict/gendict.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/gendict/gendict.vcxproj.filters b/deps/icu/source/tools/gendict/gendict.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gendict/gendict.vcxproj.filters rename to deps/icu/source/tools/gendict/gendict.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/gendict/sources.txt b/deps/icu/source/tools/gendict/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gendict/sources.txt rename to deps/icu/source/tools/gendict/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/gennorm2/BUILD.bazel b/deps/icu/source/tools/gennorm2/BUILD.bazel similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gennorm2/BUILD.bazel rename to deps/icu/source/tools/gennorm2/BUILD.bazel diff --git a/bootstrap/cxx/deps/icu/source/tools/gennorm2/Makefile.in b/deps/icu/source/tools/gennorm2/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gennorm2/Makefile.in rename to deps/icu/source/tools/gennorm2/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/gennorm2/extradata.cpp b/deps/icu/source/tools/gennorm2/extradata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gennorm2/extradata.cpp rename to deps/icu/source/tools/gennorm2/extradata.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/gennorm2/extradata.h b/deps/icu/source/tools/gennorm2/extradata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gennorm2/extradata.h rename to deps/icu/source/tools/gennorm2/extradata.h diff --git a/bootstrap/cxx/deps/icu/source/tools/gennorm2/gennorm2.cpp b/deps/icu/source/tools/gennorm2/gennorm2.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gennorm2/gennorm2.cpp rename to deps/icu/source/tools/gennorm2/gennorm2.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/gennorm2/gennorm2.vcxproj b/deps/icu/source/tools/gennorm2/gennorm2.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gennorm2/gennorm2.vcxproj rename to deps/icu/source/tools/gennorm2/gennorm2.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/gennorm2/n2builder.cpp b/deps/icu/source/tools/gennorm2/n2builder.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gennorm2/n2builder.cpp rename to deps/icu/source/tools/gennorm2/n2builder.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/gennorm2/n2builder.h b/deps/icu/source/tools/gennorm2/n2builder.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gennorm2/n2builder.h rename to deps/icu/source/tools/gennorm2/n2builder.h diff --git a/bootstrap/cxx/deps/icu/source/tools/gennorm2/norms.cpp b/deps/icu/source/tools/gennorm2/norms.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gennorm2/norms.cpp rename to deps/icu/source/tools/gennorm2/norms.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/gennorm2/norms.h b/deps/icu/source/tools/gennorm2/norms.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gennorm2/norms.h rename to deps/icu/source/tools/gennorm2/norms.h diff --git a/bootstrap/cxx/deps/icu/source/tools/gennorm2/sources.txt b/deps/icu/source/tools/gennorm2/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gennorm2/sources.txt rename to deps/icu/source/tools/gennorm2/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/Makefile.in b/deps/icu/source/tools/genrb/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/Makefile.in rename to deps/icu/source/tools/genrb/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/derb.1.in b/deps/icu/source/tools/genrb/derb.1.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/derb.1.in rename to deps/icu/source/tools/genrb/derb.1.in diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/derb.cpp b/deps/icu/source/tools/genrb/derb.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/derb.cpp rename to deps/icu/source/tools/genrb/derb.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/derb.vcxproj b/deps/icu/source/tools/genrb/derb.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/derb.vcxproj rename to deps/icu/source/tools/genrb/derb.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/derb.vcxproj.filters b/deps/icu/source/tools/genrb/derb.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/derb.vcxproj.filters rename to deps/icu/source/tools/genrb/derb.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/errmsg.c b/deps/icu/source/tools/genrb/errmsg.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/errmsg.c rename to deps/icu/source/tools/genrb/errmsg.c diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/errmsg.h b/deps/icu/source/tools/genrb/errmsg.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/errmsg.h rename to deps/icu/source/tools/genrb/errmsg.h diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/filterrb.cpp b/deps/icu/source/tools/genrb/filterrb.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/filterrb.cpp rename to deps/icu/source/tools/genrb/filterrb.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/filterrb.h b/deps/icu/source/tools/genrb/filterrb.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/filterrb.h rename to deps/icu/source/tools/genrb/filterrb.h diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/genrb.1.in b/deps/icu/source/tools/genrb/genrb.1.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/genrb.1.in rename to deps/icu/source/tools/genrb/genrb.1.in diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/genrb.cpp b/deps/icu/source/tools/genrb/genrb.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/genrb.cpp rename to deps/icu/source/tools/genrb/genrb.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/genrb.h b/deps/icu/source/tools/genrb/genrb.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/genrb.h rename to deps/icu/source/tools/genrb/genrb.h diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/genrb.vcxproj b/deps/icu/source/tools/genrb/genrb.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/genrb.vcxproj rename to deps/icu/source/tools/genrb/genrb.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/genrb.vcxproj.filters b/deps/icu/source/tools/genrb/genrb.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/genrb.vcxproj.filters rename to deps/icu/source/tools/genrb/genrb.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/parse.cpp b/deps/icu/source/tools/genrb/parse.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/parse.cpp rename to deps/icu/source/tools/genrb/parse.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/parse.h b/deps/icu/source/tools/genrb/parse.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/parse.h rename to deps/icu/source/tools/genrb/parse.h diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/prscmnts.cpp b/deps/icu/source/tools/genrb/prscmnts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/prscmnts.cpp rename to deps/icu/source/tools/genrb/prscmnts.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/prscmnts.h b/deps/icu/source/tools/genrb/prscmnts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/prscmnts.h rename to deps/icu/source/tools/genrb/prscmnts.h diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/rbutil.c b/deps/icu/source/tools/genrb/rbutil.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/rbutil.c rename to deps/icu/source/tools/genrb/rbutil.c diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/rbutil.h b/deps/icu/source/tools/genrb/rbutil.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/rbutil.h rename to deps/icu/source/tools/genrb/rbutil.h diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/read.c b/deps/icu/source/tools/genrb/read.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/read.c rename to deps/icu/source/tools/genrb/read.c diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/read.h b/deps/icu/source/tools/genrb/read.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/read.h rename to deps/icu/source/tools/genrb/read.h diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/reslist.cpp b/deps/icu/source/tools/genrb/reslist.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/reslist.cpp rename to deps/icu/source/tools/genrb/reslist.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/reslist.h b/deps/icu/source/tools/genrb/reslist.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/reslist.h rename to deps/icu/source/tools/genrb/reslist.h diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/rle.c b/deps/icu/source/tools/genrb/rle.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/rle.c rename to deps/icu/source/tools/genrb/rle.c diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/rle.h b/deps/icu/source/tools/genrb/rle.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/rle.h rename to deps/icu/source/tools/genrb/rle.h diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/sources.txt b/deps/icu/source/tools/genrb/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/sources.txt rename to deps/icu/source/tools/genrb/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/ustr.c b/deps/icu/source/tools/genrb/ustr.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/ustr.c rename to deps/icu/source/tools/genrb/ustr.c diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/ustr.h b/deps/icu/source/tools/genrb/ustr.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/ustr.h rename to deps/icu/source/tools/genrb/ustr.h diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/wrtjava.cpp b/deps/icu/source/tools/genrb/wrtjava.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/wrtjava.cpp rename to deps/icu/source/tools/genrb/wrtjava.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/wrtxml.cpp b/deps/icu/source/tools/genrb/wrtxml.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/wrtxml.cpp rename to deps/icu/source/tools/genrb/wrtxml.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/genren/README b/deps/icu/source/tools/genren/README similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genren/README rename to deps/icu/source/tools/genren/README diff --git a/bootstrap/cxx/deps/icu/source/tools/genren/genren.pl b/deps/icu/source/tools/genren/genren.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genren/genren.pl rename to deps/icu/source/tools/genren/genren.pl diff --git a/bootstrap/cxx/deps/icu/source/tools/gensprep/Makefile.in b/deps/icu/source/tools/gensprep/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gensprep/Makefile.in rename to deps/icu/source/tools/gensprep/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/gensprep/filterRFC3454.pl b/deps/icu/source/tools/gensprep/filterRFC3454.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gensprep/filterRFC3454.pl rename to deps/icu/source/tools/gensprep/filterRFC3454.pl diff --git a/bootstrap/cxx/deps/icu/source/tools/gensprep/gensprep.8.in b/deps/icu/source/tools/gensprep/gensprep.8.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gensprep/gensprep.8.in rename to deps/icu/source/tools/gensprep/gensprep.8.in diff --git a/bootstrap/cxx/deps/icu/source/tools/gensprep/gensprep.c b/deps/icu/source/tools/gensprep/gensprep.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gensprep/gensprep.c rename to deps/icu/source/tools/gensprep/gensprep.c diff --git a/bootstrap/cxx/deps/icu/source/tools/gensprep/gensprep.h b/deps/icu/source/tools/gensprep/gensprep.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gensprep/gensprep.h rename to deps/icu/source/tools/gensprep/gensprep.h diff --git a/bootstrap/cxx/deps/icu/source/tools/gensprep/gensprep.vcxproj b/deps/icu/source/tools/gensprep/gensprep.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gensprep/gensprep.vcxproj rename to deps/icu/source/tools/gensprep/gensprep.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/gensprep/gensprep.vcxproj.filters b/deps/icu/source/tools/gensprep/gensprep.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gensprep/gensprep.vcxproj.filters rename to deps/icu/source/tools/gensprep/gensprep.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/gensprep/sources.txt b/deps/icu/source/tools/gensprep/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gensprep/sources.txt rename to deps/icu/source/tools/gensprep/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/gensprep/store.c b/deps/icu/source/tools/gensprep/store.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gensprep/store.c rename to deps/icu/source/tools/gensprep/store.c diff --git a/bootstrap/cxx/deps/icu/source/tools/gentest/Makefile.in b/deps/icu/source/tools/gentest/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gentest/Makefile.in rename to deps/icu/source/tools/gentest/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/gentest/genres32.c b/deps/icu/source/tools/gentest/genres32.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gentest/genres32.c rename to deps/icu/source/tools/gentest/genres32.c diff --git a/bootstrap/cxx/deps/icu/source/tools/gentest/gentest.c b/deps/icu/source/tools/gentest/gentest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gentest/gentest.c rename to deps/icu/source/tools/gentest/gentest.c diff --git a/bootstrap/cxx/deps/icu/source/tools/gentest/gentest.h b/deps/icu/source/tools/gentest/gentest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gentest/gentest.h rename to deps/icu/source/tools/gentest/gentest.h diff --git a/bootstrap/cxx/deps/icu/source/tools/gentest/gentest.vcxproj b/deps/icu/source/tools/gentest/gentest.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gentest/gentest.vcxproj rename to deps/icu/source/tools/gentest/gentest.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/gentest/gentest.vcxproj.filters b/deps/icu/source/tools/gentest/gentest.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gentest/gentest.vcxproj.filters rename to deps/icu/source/tools/gentest/gentest.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/gentest/sources.txt b/deps/icu/source/tools/gentest/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gentest/sources.txt rename to deps/icu/source/tools/gentest/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/icuexportdata/Makefile.in b/deps/icu/source/tools/icuexportdata/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuexportdata/Makefile.in rename to deps/icu/source/tools/icuexportdata/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/icuexportdata/icuexportdata.1.in b/deps/icu/source/tools/icuexportdata/icuexportdata.1.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuexportdata/icuexportdata.1.in rename to deps/icu/source/tools/icuexportdata/icuexportdata.1.in diff --git a/bootstrap/cxx/deps/icu/source/tools/icuexportdata/icuexportdata.cpp b/deps/icu/source/tools/icuexportdata/icuexportdata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuexportdata/icuexportdata.cpp rename to deps/icu/source/tools/icuexportdata/icuexportdata.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/icuexportdata/icuexportdata.vcxproj b/deps/icu/source/tools/icuexportdata/icuexportdata.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuexportdata/icuexportdata.vcxproj rename to deps/icu/source/tools/icuexportdata/icuexportdata.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/icuexportdata/icuexportdata.vcxproj.filters b/deps/icu/source/tools/icuexportdata/icuexportdata.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuexportdata/icuexportdata.vcxproj.filters rename to deps/icu/source/tools/icuexportdata/icuexportdata.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/icuexportdata/sources.txt b/deps/icu/source/tools/icuexportdata/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuexportdata/sources.txt rename to deps/icu/source/tools/icuexportdata/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/icuinfo/Makefile.in b/deps/icu/source/tools/icuinfo/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuinfo/Makefile.in rename to deps/icu/source/tools/icuinfo/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/icuinfo/icuinfo.cpp b/deps/icu/source/tools/icuinfo/icuinfo.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuinfo/icuinfo.cpp rename to deps/icu/source/tools/icuinfo/icuinfo.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/icuinfo/icuinfo.vcxproj b/deps/icu/source/tools/icuinfo/icuinfo.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuinfo/icuinfo.vcxproj rename to deps/icu/source/tools/icuinfo/icuinfo.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/icuinfo/icuplugins_windows_sample.txt b/deps/icu/source/tools/icuinfo/icuplugins_windows_sample.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuinfo/icuplugins_windows_sample.txt rename to deps/icu/source/tools/icuinfo/icuplugins_windows_sample.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/icuinfo/plugin_sources.txt b/deps/icu/source/tools/icuinfo/plugin_sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuinfo/plugin_sources.txt rename to deps/icu/source/tools/icuinfo/plugin_sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/icuinfo/sources.txt b/deps/icu/source/tools/icuinfo/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuinfo/sources.txt rename to deps/icu/source/tools/icuinfo/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/icuinfo/testplug.c b/deps/icu/source/tools/icuinfo/testplug.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuinfo/testplug.c rename to deps/icu/source/tools/icuinfo/testplug.c diff --git a/bootstrap/cxx/deps/icu/source/tools/icuinfo/testplug.vcxproj b/deps/icu/source/tools/icuinfo/testplug.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuinfo/testplug.vcxproj rename to deps/icu/source/tools/icuinfo/testplug.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/icuinfo/testplug.vcxproj.filters b/deps/icu/source/tools/icuinfo/testplug.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuinfo/testplug.vcxproj.filters rename to deps/icu/source/tools/icuinfo/testplug.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/icupkg/Makefile.in b/deps/icu/source/tools/icupkg/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icupkg/Makefile.in rename to deps/icu/source/tools/icupkg/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/icupkg/icupkg.8.in b/deps/icu/source/tools/icupkg/icupkg.8.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icupkg/icupkg.8.in rename to deps/icu/source/tools/icupkg/icupkg.8.in diff --git a/bootstrap/cxx/deps/icu/source/tools/icupkg/icupkg.cpp b/deps/icu/source/tools/icupkg/icupkg.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icupkg/icupkg.cpp rename to deps/icu/source/tools/icupkg/icupkg.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/icupkg/icupkg.vcxproj b/deps/icu/source/tools/icupkg/icupkg.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icupkg/icupkg.vcxproj rename to deps/icu/source/tools/icupkg/icupkg.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/icupkg/sources.txt b/deps/icu/source/tools/icupkg/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icupkg/sources.txt rename to deps/icu/source/tools/icupkg/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/icuswap/Makefile.in b/deps/icu/source/tools/icuswap/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuswap/Makefile.in rename to deps/icu/source/tools/icuswap/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/icuswap/icuswap.cpp b/deps/icu/source/tools/icuswap/icuswap.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuswap/icuswap.cpp rename to deps/icu/source/tools/icuswap/icuswap.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/icuswap/icuswap.vcxproj b/deps/icu/source/tools/icuswap/icuswap.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuswap/icuswap.vcxproj rename to deps/icu/source/tools/icuswap/icuswap.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/icuswap/sources.txt b/deps/icu/source/tools/icuswap/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuswap/sources.txt rename to deps/icu/source/tools/icuswap/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/makeconv/Makefile.in b/deps/icu/source/tools/makeconv/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/makeconv/Makefile.in rename to deps/icu/source/tools/makeconv/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/makeconv/gencnvex.c b/deps/icu/source/tools/makeconv/gencnvex.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/makeconv/gencnvex.c rename to deps/icu/source/tools/makeconv/gencnvex.c diff --git a/bootstrap/cxx/deps/icu/source/tools/makeconv/genmbcs.cpp b/deps/icu/source/tools/makeconv/genmbcs.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/makeconv/genmbcs.cpp rename to deps/icu/source/tools/makeconv/genmbcs.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/makeconv/genmbcs.h b/deps/icu/source/tools/makeconv/genmbcs.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/makeconv/genmbcs.h rename to deps/icu/source/tools/makeconv/genmbcs.h diff --git a/bootstrap/cxx/deps/icu/source/tools/makeconv/makeconv.1.in b/deps/icu/source/tools/makeconv/makeconv.1.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/makeconv/makeconv.1.in rename to deps/icu/source/tools/makeconv/makeconv.1.in diff --git a/bootstrap/cxx/deps/icu/source/tools/makeconv/makeconv.cpp b/deps/icu/source/tools/makeconv/makeconv.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/makeconv/makeconv.cpp rename to deps/icu/source/tools/makeconv/makeconv.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/makeconv/makeconv.h b/deps/icu/source/tools/makeconv/makeconv.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/makeconv/makeconv.h rename to deps/icu/source/tools/makeconv/makeconv.h diff --git a/bootstrap/cxx/deps/icu/source/tools/makeconv/makeconv.vcxproj b/deps/icu/source/tools/makeconv/makeconv.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/makeconv/makeconv.vcxproj rename to deps/icu/source/tools/makeconv/makeconv.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/makeconv/makeconv.vcxproj.filters b/deps/icu/source/tools/makeconv/makeconv.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/makeconv/makeconv.vcxproj.filters rename to deps/icu/source/tools/makeconv/makeconv.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/makeconv/sources.txt b/deps/icu/source/tools/makeconv/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/makeconv/sources.txt rename to deps/icu/source/tools/makeconv/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/makeconv/ucnvstat.c b/deps/icu/source/tools/makeconv/ucnvstat.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/makeconv/ucnvstat.c rename to deps/icu/source/tools/makeconv/ucnvstat.c diff --git a/bootstrap/cxx/deps/icu/source/tools/memcheck/ICUMemCheck.pl b/deps/icu/source/tools/memcheck/ICUMemCheck.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/memcheck/ICUMemCheck.pl rename to deps/icu/source/tools/memcheck/ICUMemCheck.pl diff --git a/bootstrap/cxx/deps/icu/source/tools/pkgdata/Makefile.in b/deps/icu/source/tools/pkgdata/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/pkgdata/Makefile.in rename to deps/icu/source/tools/pkgdata/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/pkgdata/pkgdata.1.in b/deps/icu/source/tools/pkgdata/pkgdata.1.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/pkgdata/pkgdata.1.in rename to deps/icu/source/tools/pkgdata/pkgdata.1.in diff --git a/bootstrap/cxx/deps/icu/source/tools/pkgdata/pkgdata.cpp b/deps/icu/source/tools/pkgdata/pkgdata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/pkgdata/pkgdata.cpp rename to deps/icu/source/tools/pkgdata/pkgdata.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/pkgdata/pkgdata.vcxproj b/deps/icu/source/tools/pkgdata/pkgdata.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/pkgdata/pkgdata.vcxproj rename to deps/icu/source/tools/pkgdata/pkgdata.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/pkgdata/pkgdata.vcxproj.filters b/deps/icu/source/tools/pkgdata/pkgdata.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/pkgdata/pkgdata.vcxproj.filters rename to deps/icu/source/tools/pkgdata/pkgdata.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/pkgdata/pkgtypes.c b/deps/icu/source/tools/pkgdata/pkgtypes.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/pkgdata/pkgtypes.c rename to deps/icu/source/tools/pkgdata/pkgtypes.c diff --git a/bootstrap/cxx/deps/icu/source/tools/pkgdata/pkgtypes.h b/deps/icu/source/tools/pkgdata/pkgtypes.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/pkgdata/pkgtypes.h rename to deps/icu/source/tools/pkgdata/pkgtypes.h diff --git a/bootstrap/cxx/deps/icu/source/tools/pkgdata/sources.txt b/deps/icu/source/tools/pkgdata/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/pkgdata/sources.txt rename to deps/icu/source/tools/pkgdata/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/BUILD.bazel b/deps/icu/source/tools/toolutil/BUILD.bazel similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/BUILD.bazel rename to deps/icu/source/tools/toolutil/BUILD.bazel diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/Makefile.in b/deps/icu/source/tools/toolutil/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/Makefile.in rename to deps/icu/source/tools/toolutil/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/collationinfo.cpp b/deps/icu/source/tools/toolutil/collationinfo.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/collationinfo.cpp rename to deps/icu/source/tools/toolutil/collationinfo.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/collationinfo.h b/deps/icu/source/tools/toolutil/collationinfo.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/collationinfo.h rename to deps/icu/source/tools/toolutil/collationinfo.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/dbgutil.cpp b/deps/icu/source/tools/toolutil/dbgutil.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/dbgutil.cpp rename to deps/icu/source/tools/toolutil/dbgutil.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/dbgutil.h b/deps/icu/source/tools/toolutil/dbgutil.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/dbgutil.h rename to deps/icu/source/tools/toolutil/dbgutil.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/denseranges.cpp b/deps/icu/source/tools/toolutil/denseranges.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/denseranges.cpp rename to deps/icu/source/tools/toolutil/denseranges.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/denseranges.h b/deps/icu/source/tools/toolutil/denseranges.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/denseranges.h rename to deps/icu/source/tools/toolutil/denseranges.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/filestrm.cpp b/deps/icu/source/tools/toolutil/filestrm.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/filestrm.cpp rename to deps/icu/source/tools/toolutil/filestrm.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/filestrm.h b/deps/icu/source/tools/toolutil/filestrm.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/filestrm.h rename to deps/icu/source/tools/toolutil/filestrm.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/filetools.cpp b/deps/icu/source/tools/toolutil/filetools.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/filetools.cpp rename to deps/icu/source/tools/toolutil/filetools.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/filetools.h b/deps/icu/source/tools/toolutil/filetools.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/filetools.h rename to deps/icu/source/tools/toolutil/filetools.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/flagparser.cpp b/deps/icu/source/tools/toolutil/flagparser.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/flagparser.cpp rename to deps/icu/source/tools/toolutil/flagparser.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/flagparser.h b/deps/icu/source/tools/toolutil/flagparser.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/flagparser.h rename to deps/icu/source/tools/toolutil/flagparser.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/package.cpp b/deps/icu/source/tools/toolutil/package.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/package.cpp rename to deps/icu/source/tools/toolutil/package.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/package.h b/deps/icu/source/tools/toolutil/package.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/package.h rename to deps/icu/source/tools/toolutil/package.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_genc.cpp b/deps/icu/source/tools/toolutil/pkg_genc.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_genc.cpp rename to deps/icu/source/tools/toolutil/pkg_genc.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_genc.h b/deps/icu/source/tools/toolutil/pkg_genc.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_genc.h rename to deps/icu/source/tools/toolutil/pkg_genc.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_gencmn.cpp b/deps/icu/source/tools/toolutil/pkg_gencmn.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_gencmn.cpp rename to deps/icu/source/tools/toolutil/pkg_gencmn.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_gencmn.h b/deps/icu/source/tools/toolutil/pkg_gencmn.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_gencmn.h rename to deps/icu/source/tools/toolutil/pkg_gencmn.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_icu.cpp b/deps/icu/source/tools/toolutil/pkg_icu.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_icu.cpp rename to deps/icu/source/tools/toolutil/pkg_icu.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_icu.h b/deps/icu/source/tools/toolutil/pkg_icu.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_icu.h rename to deps/icu/source/tools/toolutil/pkg_icu.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_imp.h b/deps/icu/source/tools/toolutil/pkg_imp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_imp.h rename to deps/icu/source/tools/toolutil/pkg_imp.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/pkgitems.cpp b/deps/icu/source/tools/toolutil/pkgitems.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/pkgitems.cpp rename to deps/icu/source/tools/toolutil/pkgitems.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/ppucd.cpp b/deps/icu/source/tools/toolutil/ppucd.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/ppucd.cpp rename to deps/icu/source/tools/toolutil/ppucd.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/ppucd.h b/deps/icu/source/tools/toolutil/ppucd.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/ppucd.h rename to deps/icu/source/tools/toolutil/ppucd.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/sources.txt b/deps/icu/source/tools/toolutil/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/sources.txt rename to deps/icu/source/tools/toolutil/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/swapimpl.cpp b/deps/icu/source/tools/toolutil/swapimpl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/swapimpl.cpp rename to deps/icu/source/tools/toolutil/swapimpl.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/swapimpl.h b/deps/icu/source/tools/toolutil/swapimpl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/swapimpl.h rename to deps/icu/source/tools/toolutil/swapimpl.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/toolutil.cpp b/deps/icu/source/tools/toolutil/toolutil.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/toolutil.cpp rename to deps/icu/source/tools/toolutil/toolutil.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/toolutil.h b/deps/icu/source/tools/toolutil/toolutil.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/toolutil.h rename to deps/icu/source/tools/toolutil/toolutil.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/toolutil.vcxproj b/deps/icu/source/tools/toolutil/toolutil.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/toolutil.vcxproj rename to deps/icu/source/tools/toolutil/toolutil.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/ucbuf.cpp b/deps/icu/source/tools/toolutil/ucbuf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/ucbuf.cpp rename to deps/icu/source/tools/toolutil/ucbuf.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/ucbuf.h b/deps/icu/source/tools/toolutil/ucbuf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/ucbuf.h rename to deps/icu/source/tools/toolutil/ucbuf.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/ucln_tu.cpp b/deps/icu/source/tools/toolutil/ucln_tu.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/ucln_tu.cpp rename to deps/icu/source/tools/toolutil/ucln_tu.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/ucm.cpp b/deps/icu/source/tools/toolutil/ucm.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/ucm.cpp rename to deps/icu/source/tools/toolutil/ucm.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/ucm.h b/deps/icu/source/tools/toolutil/ucm.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/ucm.h rename to deps/icu/source/tools/toolutil/ucm.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/ucmstate.cpp b/deps/icu/source/tools/toolutil/ucmstate.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/ucmstate.cpp rename to deps/icu/source/tools/toolutil/ucmstate.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/udbgutil.cpp b/deps/icu/source/tools/toolutil/udbgutil.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/udbgutil.cpp rename to deps/icu/source/tools/toolutil/udbgutil.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/udbgutil.h b/deps/icu/source/tools/toolutil/udbgutil.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/udbgutil.h rename to deps/icu/source/tools/toolutil/udbgutil.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/unewdata.cpp b/deps/icu/source/tools/toolutil/unewdata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/unewdata.cpp rename to deps/icu/source/tools/toolutil/unewdata.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/unewdata.h b/deps/icu/source/tools/toolutil/unewdata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/unewdata.h rename to deps/icu/source/tools/toolutil/unewdata.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/uoptions.cpp b/deps/icu/source/tools/toolutil/uoptions.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/uoptions.cpp rename to deps/icu/source/tools/toolutil/uoptions.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/uoptions.h b/deps/icu/source/tools/toolutil/uoptions.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/uoptions.h rename to deps/icu/source/tools/toolutil/uoptions.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/uparse.cpp b/deps/icu/source/tools/toolutil/uparse.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/uparse.cpp rename to deps/icu/source/tools/toolutil/uparse.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/uparse.h b/deps/icu/source/tools/toolutil/uparse.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/uparse.h rename to deps/icu/source/tools/toolutil/uparse.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/writesrc.cpp b/deps/icu/source/tools/toolutil/writesrc.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/writesrc.cpp rename to deps/icu/source/tools/toolutil/writesrc.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/writesrc.h b/deps/icu/source/tools/toolutil/writesrc.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/writesrc.h rename to deps/icu/source/tools/toolutil/writesrc.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/xmlparser.cpp b/deps/icu/source/tools/toolutil/xmlparser.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/xmlparser.cpp rename to deps/icu/source/tools/toolutil/xmlparser.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/xmlparser.h b/deps/icu/source/tools/toolutil/xmlparser.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/xmlparser.h rename to deps/icu/source/tools/toolutil/xmlparser.h diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/Makefile.in b/deps/icu/source/tools/tzcode/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/Makefile.in rename to deps/icu/source/tools/tzcode/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/asctime.c b/deps/icu/source/tools/tzcode/asctime.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/asctime.c rename to deps/icu/source/tools/tzcode/asctime.c diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/ialloc.c b/deps/icu/source/tools/tzcode/ialloc.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/ialloc.c rename to deps/icu/source/tools/tzcode/ialloc.c diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/icuregions b/deps/icu/source/tools/tzcode/icuregions similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/icuregions rename to deps/icu/source/tools/tzcode/icuregions diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/icuzdump.cpp b/deps/icu/source/tools/tzcode/icuzdump.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/icuzdump.cpp rename to deps/icu/source/tools/tzcode/icuzdump.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/icuzdump.vcxproj b/deps/icu/source/tools/tzcode/icuzdump.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/icuzdump.vcxproj rename to deps/icu/source/tools/tzcode/icuzdump.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/icuzdump.vcxproj.filters b/deps/icu/source/tools/tzcode/icuzdump.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/icuzdump.vcxproj.filters rename to deps/icu/source/tools/tzcode/icuzdump.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/icuzones b/deps/icu/source/tools/tzcode/icuzones similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/icuzones rename to deps/icu/source/tools/tzcode/icuzones diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/localtime.c b/deps/icu/source/tools/tzcode/localtime.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/localtime.c rename to deps/icu/source/tools/tzcode/localtime.c diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/private.h b/deps/icu/source/tools/tzcode/private.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/private.h rename to deps/icu/source/tools/tzcode/private.h diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/readme.txt b/deps/icu/source/tools/tzcode/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/readme.txt rename to deps/icu/source/tools/tzcode/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/scheck.c b/deps/icu/source/tools/tzcode/scheck.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/scheck.c rename to deps/icu/source/tools/tzcode/scheck.c diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/tz2icu.cpp b/deps/icu/source/tools/tzcode/tz2icu.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/tz2icu.cpp rename to deps/icu/source/tools/tzcode/tz2icu.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/tz2icu.h b/deps/icu/source/tools/tzcode/tz2icu.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/tz2icu.h rename to deps/icu/source/tools/tzcode/tz2icu.h diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/tzfile.h b/deps/icu/source/tools/tzcode/tzfile.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/tzfile.h rename to deps/icu/source/tools/tzcode/tzfile.h diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/tzselect.ksh b/deps/icu/source/tools/tzcode/tzselect.ksh similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/tzselect.ksh rename to deps/icu/source/tools/tzcode/tzselect.ksh diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/zdump.c b/deps/icu/source/tools/tzcode/zdump.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/zdump.c rename to deps/icu/source/tools/tzcode/zdump.c diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/zic.c b/deps/icu/source/tools/tzcode/zic.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/zic.c rename to deps/icu/source/tools/tzcode/zic.c diff --git a/deps/zen b/deps/zen new file mode 120000 index 000000000..84f82c089 --- /dev/null +++ b/deps/zen @@ -0,0 +1 @@ +../../zen \ No newline at end of file diff --git a/bootstrap/cxx/include/bolt/ByteString.hpp b/include/bolt/ByteString.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/ByteString.hpp rename to include/bolt/ByteString.hpp diff --git a/bootstrap/cxx/include/bolt/CST.hpp b/include/bolt/CST.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/CST.hpp rename to include/bolt/CST.hpp diff --git a/bootstrap/cxx/include/bolt/CSTVisitor.hpp b/include/bolt/CSTVisitor.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/CSTVisitor.hpp rename to include/bolt/CSTVisitor.hpp diff --git a/bootstrap/cxx/include/bolt/Checker.hpp b/include/bolt/Checker.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/Checker.hpp rename to include/bolt/Checker.hpp diff --git a/bootstrap/cxx/include/bolt/Common.hpp b/include/bolt/Common.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/Common.hpp rename to include/bolt/Common.hpp diff --git a/bootstrap/cxx/include/bolt/ConsolePrinter.hpp b/include/bolt/ConsolePrinter.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/ConsolePrinter.hpp rename to include/bolt/ConsolePrinter.hpp diff --git a/bootstrap/cxx/include/bolt/DiagnosticEngine.hpp b/include/bolt/DiagnosticEngine.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/DiagnosticEngine.hpp rename to include/bolt/DiagnosticEngine.hpp diff --git a/bootstrap/cxx/include/bolt/Diagnostics.hpp b/include/bolt/Diagnostics.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/Diagnostics.hpp rename to include/bolt/Diagnostics.hpp diff --git a/bootstrap/cxx/include/bolt/Evaluator.hpp b/include/bolt/Evaluator.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/Evaluator.hpp rename to include/bolt/Evaluator.hpp diff --git a/bootstrap/cxx/include/bolt/Integer.hpp b/include/bolt/Integer.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/Integer.hpp rename to include/bolt/Integer.hpp diff --git a/bootstrap/cxx/include/bolt/Parser.hpp b/include/bolt/Parser.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/Parser.hpp rename to include/bolt/Parser.hpp diff --git a/include/bolt/Passes/CheckBindings.hpp b/include/bolt/Passes/CheckBindings.hpp new file mode 100644 index 000000000..fe31e1be9 --- /dev/null +++ b/include/bolt/Passes/CheckBindings.hpp @@ -0,0 +1,48 @@ + +#pragma once + +#include "bolt/CST.hpp" +#include "bolt/CSTVisitor.hpp" +#include "bolt/DiagnosticEngine.hpp" +#include "bolt/Diagnostics.hpp" +#include "bolt/Program.hpp" + +namespace bolt { + +class CheckBindingsVisitor : public CSTVisitor { + + DiagnosticEngine& DE; + +protected: + + void visitReferenceExpression(ReferenceExpression* Expr) { + if (!Expr->getScope()->lookup(Expr->getSymbolPath())) { + DE.add(Expr->getNameAsString(), Expr->Name); + } + } + +public: + + CheckBindingsVisitor(DiagnosticEngine& DE): + DE(DE) {} + +}; + +class CheckBindingsPass { + + Program& P; + +public: + + CheckBindingsPass(Program& P): + P(P) {} + + void applySourceFile(SourceFile* SF) { + CheckBindingsVisitor V { P.getDiagnostics() }; + V.visit(SF); + } + +}; + +} + diff --git a/bootstrap/cxx/include/bolt/Program.hpp b/include/bolt/Program.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/Program.hpp rename to include/bolt/Program.hpp diff --git a/bootstrap/cxx/include/bolt/Scanner.hpp b/include/bolt/Scanner.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/Scanner.hpp rename to include/bolt/Scanner.hpp diff --git a/bootstrap/cxx/include/bolt/Stream.hpp b/include/bolt/Stream.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/Stream.hpp rename to include/bolt/Stream.hpp diff --git a/bootstrap/cxx/include/bolt/String.hpp b/include/bolt/String.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/String.hpp rename to include/bolt/String.hpp diff --git a/bootstrap/cxx/include/bolt/Support/Graph.hpp b/include/bolt/Support/Graph.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/Support/Graph.hpp rename to include/bolt/Support/Graph.hpp diff --git a/bootstrap/cxx/include/bolt/Text.hpp b/include/bolt/Text.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/Text.hpp rename to include/bolt/Text.hpp diff --git a/bootstrap/cxx/include/bolt/Type.hpp b/include/bolt/Type.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/Type.hpp rename to include/bolt/Type.hpp diff --git a/papers/complete-and-easy-bidirectional-type-checking.pdf b/papers/complete-and-easy-bidirectional-type-checking.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6bc2c22aad684a5ef100f132acefcf4b5ce00e43 GIT binary patch literal 1023501 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

8mZlcHXDnYQPdRx!~z(I$2$Y3wJ-l**#K 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 vi2<0iZnHf5pPhUc4#9iM&tuC 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�OFt@hddU&Futx~97if{;T@MCw;q-@vg-vkmQ+++ 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 pjfiSC1 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 range 'A'..'Z' + +let digit + = range '0'..'9' + +let alnum + = alpha + <|> digit + +let identifier_start + = alpha + <|> one_of [ '_' ] + +let identifier_part + = alnum + <|> one_of [ '_' ] + +let identifier. + identifier_start + many identifier_part + +let wrapped_operator. + char '(' + operator + char ')' + +let symbol + = identifier + <|> wrapped_operator + +let reference_type_expression. + module_path <- many $ identifier << char '.' + name <- symbol + +let type_expression + = reference_type_expression + <|> arrow_type_expression + <|> app_type_expression + +let expression_body. + char '=' + expression + +let blank + = one_of [ '\t', '\r', ' ' ] + +let eol. + blank + char '\n' + +let block_start. + char '.' + lookahead eol + +let block x. + block_start + elements <- many $ x + +let function_body_element + = statement + <|> variable_declaration + <|> function_declaration + +let param. + pattern + +let named_function_declaration. + maybe $ keyword "pub" + keyword "let" + name <- identifier + char '(' + sep_by (char ',') param + char ')' + body <- block function_body_element + +let function_declaration + = named_function_declaration + +let variable_declaration. + maybe $ keyword "pub" + keyword "let" + maybe $ keyword "mut" + name <- identifier + maybe type_assertion + body <- expression_body + +let type_alias_declaration. + maybe $ keyword "type" + keyword "type" + name <- identifier + many type_param + char '=' + type_expression + +let declaration + = variable_declaration + <|> function_declaration + <|> type_alias_declaration + diff --git a/samples/effect.bolt b/samples/effect.bolt new file mode 100644 index 000000000..8a58f596c --- /dev/null +++ b/samples/effect.bolt @@ -0,0 +1,34 @@ + +let foreign write : String -> () +let foreign writeln : String -> () +let foreign print : a -> () + +let (<=) : Int -> Int -> Bool + +effect Yield a. + yield : a -> Bool + +let count_to_three x. + yield "one" + yield "two" + yield "three" + +let coun_to_three_indirect. + count_to_three 1 + count_to_three 1 + +handle. + effect yield str. + writeln str + resume True + count_to_three + +handle. + effect yield str. + resume True + count_to_three + +# TODO make this compile +# +write "Hello, world!\n" +wite "This is Bolt speaking.\n" diff --git a/samples/todomvc.bolt b/samples/todomvc.bolt new file mode 100644 index 000000000..c6c84124a --- /dev/null +++ b/samples/todomvc.bolt @@ -0,0 +1,44 @@ + +# Some notes: +# +# - '[ .. ]' is an alternative notation for a function call combined with +# a dictionary. It augments the f()-syntax in imperative languages. +# - A call to a function that accepts something of type 'Interpolation' is +# parsed differently than other calls (if feasible). +# - A period ('.') is used to start a new block. It replaces the 'do'-keyword +# in Haskell. +# +# Issues: +# +# - The period is frequently used to perform function composition. In our +# language, it is possible to do so, but then it must happen on the same +# line. +# - What is the meaning of adding a period to a reference to +# a function? Does it simply call the function with a list? Can we generalise +# this to monoids? Can monads (which are derived from monoids) work with the +# same mechanism? +# - How should longer pieces of text be declared? How does interpolation work? + +import "web/html" (Html, render) + +struct Task. + description : String + created_at : Date + updated_at : Date + done : Bool + +let item : Task -> Html +let item task. + render. + div. + checkbox[checked: task.done, title: "Check this box if you're done with this to-do item."] + p task.description + date $ Date.format task.created_at + +let app. + let tasks = fetch_tasks + render. + div[style: { display: "flex", flex_direction: "column" }]. + map item tasks + button "Add item!" + diff --git a/scripts/gennodes.py b/scripts/gennodes.py new file mode 100644 index 000000000..af748f5dc --- /dev/null +++ b/scripts/gennodes.py @@ -0,0 +1,903 @@ +#!/usr/bin/env python3 + +import re +from collections import deque +from pathlib import Path +import argparse +from typing import List, Optional, final +from sweetener.record import Record, warn + +EOF = '\uFFFF' + +END_OF_FILE = 0 +IDENTIFIER = 1 +SEMI = 2 +EXTERNAL_KEYWORD = 3 +NODE_KEYWORD = 4 +LBRACE = 5 +RBRACE = 6 +LESSTHAN = 7 +GREATERTHAN = 8 +COLON = 9 +LPAREN = 10 +RPAREN = 11 +VBAR = 12 +COMMA = 13 +HASH = 14 +STRING = 15 +CONST_KEYWORD = 16 +NOEXCEPT_KEYWORD = 17 + +_re_whitespace = re.compile(r"[\n\r\t ]") +_re_ident_start = re.compile(r"[a-zA-Z_]") +_re_ident_part = re.compile(r"[a-zA-Z_0-9]") + +_keywords = { + 'external': EXTERNAL_KEYWORD, + 'node': NODE_KEYWORD, + 'const': CONST_KEYWORD, + 'noexcept': NOEXCEPT_KEYWORD, + } + +def to_upper_camel_case(snake_str): + return "".join(x.capitalize() for x in snake_str.lower().split("_")) + +def escape_char(ch): + code = ord(ch) + if code >= 32 and code < 126: + return ch + if code <= 127: + return f"\\x{code:02X}" + return f"\\u{code:04X}" + +class ScanError(RuntimeError): + + def __init__(self, file, position, actual): + super().__init__(f"{file.name}:{position.line}:{position.column}: unexpected character '{escape_char(actual)}'") + self.file = file + self.position = position + self.actual = actual + +_token_type_to_string = { + LPAREN: '(', + RPAREN: ')', + LBRACE: '{', + RBRACE: '}', + LESSTHAN: '<', + GREATERTHAN: '>', + SEMI: ';', + COLON: ':', + COMMA: ',', + VBAR: '|', + HASH: '#', + } + +class Token: + + def __init__(self, type, position=None, value=None): + self.type = type + self.start_pos = position + self.value = value + + @property + def text(self): + if self.type in _token_type_to_string: + return _token_type_to_string[self.type] + if self.type == IDENTIFIER: + return self.value + if self.type == STRING: + return f'"{self.value}"' + if self.type == END_OF_FILE: + return '' + return '(unknown token)' + +class TextFile: + + def __init__(self, filename, text=None): + self.name = filename + self._cached_text = text + + @property + def text(self): + if self._cached_text is None: + with open(self.name, 'r') as f: + self._cached_text = f.read() + return self._cached_text + +class TextPos: + + def __init__(self, line=1, column=1): + self.line = line + self.column = column + + def clone(self): + return TextPos(self.line, self.column) + + def advance(self, text): + for ch in text: + if ch == '\n': + self.line += 1 + self.column = 1 + else: + self.column += 1 + +class Scanner: + + def __init__(self, text, text_offset=0, filename=None): + self._text = text + self._text_offset = text_offset + self.file = TextFile(filename, text) + self._curr_pos = TextPos() + + def _peek_char(self, offset=1): + i = self._text_offset + offset - 1 + return self._text[i] if i < len(self._text) else EOF + + def _get_char(self): + if self._text_offset == len(self._text): + return EOF + i = self._text_offset + self._text_offset += 1 + ch = self._text[i] + self._curr_pos.advance(ch) + return ch + + def _take_while(self, pred): + out = '' + while True: + ch = self._peek_char() + if not pred(ch): + break + self._get_char() + out += ch + return out + + def scan(self): + + while True: + start_pos = self._curr_pos.clone() + c0 = self._get_char() + c1 = self._peek_char() + if _re_whitespace.match(c0): + continue + if c0 == '/' and c1 == '/': + while True: + c2 = self._get_char() + if c2 == EOF or c2 == '\n': + break + continue + break + + if c0 == EOF: + return Token(END_OF_FILE, self._curr_pos.clone()) + + if c0 == ';': return Token(SEMI, start_pos) + if c0 == '{': return Token(LBRACE, start_pos) + if c0 == '}': return Token(RBRACE, start_pos) + if c0 == '(': return Token(LPAREN, start_pos) + if c0 == ')': return Token(RPAREN, start_pos) + if c0 == '<': return Token(LESSTHAN, start_pos) + if c0 == '>': return Token(GREATERTHAN, start_pos) + if c0 == ':': return Token(COLON, start_pos) + if c0 == '|': return Token(VBAR, start_pos) + if c0 == ',': return Token(COMMA, start_pos) + if c0 == '#': return Token(HASH, start_pos) + + if c0 == '"': + text = '' + while True: + c1 = self._get_char() + if c1 == '"': + break + text += c1 + return Token(STRING, start_pos, text) + + if _re_ident_start.match(c0): + name = c0 + self._take_while(lambda ch: _re_ident_part.match(ch)) + return Token(_keywords[name], start_pos) \ + if name in _keywords \ + else Token(IDENTIFIER, start_pos, name) + + raise ScanError(self.file, start_pos, c0) + +class Type(Record): + pass + +class ListType(Type): + element_type: Type + +class OptionalType(Type): + element_type: Type + +class NodeType(Type): + name: str + +class VariantType(Type): + types: List[Type] + +class RawType(Type): + text: str + +class AST(Record): + pass + +class Directive(AST): + pass + +INCLUDEMODE_LOCAL = 0 +INCLUDEMODE_SYSTEM = 1 + +class IncludeDiretive(Directive): + path: str + mode: int + + def __str__(self): + if self.mode == INCLUDEMODE_LOCAL: + return f"#include \"{self.path}\"\n" + if self.mode == INCLUDEMODE_SYSTEM: + return f"#include <{self.path}>\n" + +class TypeExpr(AST): + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.type = None + +class RefTypeExpr(TypeExpr): + name: str + args: List[TypeExpr] + +class UnionTypeExpr(TypeExpr): + types: List[TypeExpr] + +class External(AST): + name: str + +class NodeDeclField(AST): + name: str + type_expr: TypeExpr + +class NodeDecl(AST): + name: str + parents: List[str] + members: List[NodeDeclField] + +class Expr(AST): + pass + +class BlockElement(AST): + pass + +class RetStmt(BlockElement): + value: Expr + +class Param(AST): + type_expr: TypeExpr + name: Optional[Token] + +def pretty_token(token): + if token.type == END_OF_FILE: + return 'end-of-file' + return f"'{token.text}'" + +def pretty_token_type(token_type): + if token_type in _token_type_to_string: + return f"'{_token_type_to_string[token_type]}'" + if token_type == IDENTIFIER: + return 'an identfier' + if token_type == STRING: + return 'a string literal' + if token_type == END_OF_FILE: + return 'end-of-file' + return f"(unknown token type {token_type})" + +def pretty_alternatives(elements): + try: + out = next(elements) + except StopIteration: + return 'nothing' + try: + prev_element = next(elements) + except StopIteration: + return out + while True: + try: + element = next(elements) + except StopIteration: + break + out += ', ' + prev_element + prev_element = element + return out + ' or ' + prev_element + +class ParseError(RuntimeError): + + def __init__(self, file, actual, expected): + super().__init__(f"{file.name}:{actual.start_pos.line}:{actual.start_pos.column}: got {pretty_token(actual)} but expected {pretty_alternatives(pretty_token_type(tt) for tt in expected)}") + self.actual = actual + self.expected = expected + +class Parser: + + def __init__(self, scanner: Scanner): + self._scanner = scanner + self._token_buffer = deque[Token]() + + def _peek_token(self, offset=1): + while len(self._token_buffer) < offset: + self._token_buffer.append(self._scanner.scan()) + return self._token_buffer[offset-1] + + def _get_token(self): + if self._token_buffer: + return self._token_buffer.popleft() + return self._scanner.scan() + + def _expect_token(self, expected_token_type): + t0 = self._get_token() + if t0.type != expected_token_type: + raise ParseError(self._scanner.file, t0, [ expected_token_type ]) + return t0 + + def _parse_prim_type_expr(self): + t0 = self._get_token() + if t0.type == LPAREN: + result = self.parse_type_expr() + self._expect_token(RPAREN) + return result + if t0.type == IDENTIFIER: + t1 = self._peek_token() + args = [] + if t1.type == LESSTHAN: + self._get_token() + while True: + t2 = self._peek_token() + if t2.type == GREATERTHAN: + self._get_token() + break + args.append(self.parse_type_expr()) + t3 = self._get_token() + if t3.type == GREATERTHAN: + break + if t3.type != COMMA: + raise ParseError(self._scanner.file, t3, [ COMMA, GREATERTHAN ]) + return RefTypeExpr(t0.value, args) + raise ParseError(self._scanner.file, t0, [ LPAREN, IDENTIFIER ]) + + def parse_type_expr(self): + return self._parse_prim_type_expr() + + def parse_param(self) -> Param: + type_expr = self.parse_type_expr() + t1 = self._peek_token() + name = None + if t1.type == IDENTIFIER: + self._get_token() + name = t1 + return Param(type_expr, name) + + def parse_node_member(self): + type_expr = self.parse_type_expr() + name = self._expect_token(IDENTIFIER) + self._expect_token(SEMI) + return NodeDeclField(name.value, type_expr) + + def parse_toplevel(self): + t0 = self._get_token() + if t0.type == EXTERNAL_KEYWORD: + name = self._expect_token(IDENTIFIER) + self._expect_token(SEMI) + return External(name.value) + if t0.type == NODE_KEYWORD: + name = self._expect_token(IDENTIFIER).value + parents = [] + t1 = self._peek_token() + if t1.type == COLON: + self._get_token() + while True: + parent = self._expect_token(IDENTIFIER).value + parents.append(parent) + t2 = self._peek_token() + if t2.type != COMMA: + break + self._get_token() + self._expect_token(LBRACE) + members = [] + while True: + t2 = self._peek_token() + if t2.type == RBRACE: + self._get_token() + break + member = self.parse_node_member() + members.append(member) + return NodeDecl(name, parents, members) + if t0.type == HASH: + name = self._expect_token(IDENTIFIER) + if name.value == 'include': + t1 = self._get_token() + if t1.type == LESSTHAN: + assert(not self._token_buffer) + path = self._scanner._take_while(lambda ch: ch != '>') + self._scanner._get_char() + mode = INCLUDEMODE_SYSTEM + elif t1.type == STRING: + mode = INCLUDEMODE_LOCAL + path = t1.value + else: + raise ParseError(self._scanner.file, t1, [ STRING, LESSTHAN ]) + return IncludeDiretive(path, mode) + raise RuntimeError(f"invalid preprocessor directive '{name.value}'") + raise ParseError(self._scanner.file, t0, [ EXTERNAL_KEYWORD, NODE_KEYWORD, HASH ]) + + def parse_grammar(self): + elements = [] + while True: + t0 = self._peek_token() + if t0.type == END_OF_FILE: + break + element = self.parse_toplevel() + elements.append(element) + return elements + +class Writer: + + def __init__(self, text='', path=None): + self.path = path + self.text = text + self._at_blank_line = True + self._indentation = ' ' + self._indent_level = 0 + + def indent(self, count=1): + self._indent_level += count + + def dedent(self, count=1): + self._indent_level -= count + + def write_dedent(self, chunk): + self.dedent() + self.write(chunk) + self.indent() + + def write(self, chunk): + for ch in chunk: + if ch == '}': + self.dedent() + if ch == '\n': + self._at_blank_line = True + elif self._at_blank_line and not _re_whitespace.match(ch): + self.text += self._indentation * self._indent_level + self._at_blank_line = False + self.text += ch + if ch == '{': + self.indent() + + def save(self, dest_dir): + dest_path = dest_dir / self.path + print(f'Writing file {dest_path} ...') + with open(dest_path, 'w') as f: + f.write(self.text) + +class DiGraph: + + def __init__(self): + self._out_edges = dict() + self._in_edges = dict() + + def add_edge(self, a, b): + if a not in self._out_edges: + self._out_edges[a] = set() + self._out_edges[a].add(b) + if b not in self._in_edges: + self._in_edges[b] = set() + self._in_edges[b].add(a) + + def get_children(self, node): + if node not in self._out_edges: + return + for child in self._out_edges[node]: + yield child + + def is_child_of(self, a, b): + stack = [ b ] + visited = set() + while stack: + node = stack.pop() + if node in visited: + break + visited.add(node) + if node == a: + return True + for child in self.get_children(node): + stack.append(child) + return False + + def get_ancestors(self, node): + if node not in self._in_edges: + return + for parent in self._in_edges[node]: + yield parent + + def get_common_ancestor(self, nodes): + out = nodes[0] + parents = [] + for node in nodes[1:]: + if not self.is_child_of(node, out): + for parent in self.get_ancestors(node): + parents.append(parent) + if not parents: + return out + parents.append(out) + return self.get_common_ancestor(parents) + +def main(): + + parser = argparse.ArgumentParser() + + parser.add_argument('file', nargs=1, help='The specification file to generate C++ code for') + parser.add_argument('--namespace', default='', help='What C++ namespace to put generated code under') + parser.add_argument('--name', default='AST', help='How to name the generated tree') + parser.add_argument('-I', default='.', help='What path will be used to include generated header files') + parser.add_argument('--include-root', default='.', help='Where the headers live inside the include directroy') + parser.add_argument('--enable-serde', action='store_true', help='Also write (de)serialization logic') + parser.add_argument('--source-root', default='.', help='Where to store generated souce files') + parser.add_argument('--node-name', default='Node', help='How the root node of the hierachy should be called') + parser.add_argument('--out-dir', default='.', help='Place the endire folder structure inside this folder') + parser.add_argument('--dry-run', action='store_true', help='Do not write generated code to the file system') + + args = parser.parse_args() + + variable_casing = to_upper_camel_case + type_expr_casing = to_upper_camel_case + filename = args.file[0] + prefix = '' + cpp_root_node_name = prefix + args.node_name + include_dir = Path(args.I) + include_path = Path(args.include_root or '.') + full_include_path = include_dir / include_path + source_path = Path(args.source_root) + namespace = args.namespace.split('::') + out_dir = Path(args.out_dir) + out_name = args.name + write_serde = args.enable_serde + + with open(filename, 'r') as f: + text = f.read() + + scanner = Scanner(text, filename=filename) + parser = Parser(scanner) + elements = parser.parse_grammar() + + types = dict() + nodes = list() + leaf_nodes = list() + graph = DiGraph() + parent_to_children = dict() + + for element in elements: + if isinstance(element, External) \ + or isinstance(element, NodeDecl): + types[element.name] = element + if isinstance(element, NodeDecl): + nodes.append(element) + for parent in element.parents: + graph.add_edge(parent, element.name) + if parent not in parent_to_children: + parent_to_children[parent] = set() + children = parent_to_children[parent] + children.add(element) + + for node in nodes: + if node.name not in parent_to_children: + leaf_nodes.append(node) + + def is_null_type_expr(type_expr): + return isinstance(type_expr, RefTypeExpr) and type_expr.name == 'null' + + def is_node(name): + if name in types: + return isinstance(types[name], NodeDecl) + if name in parent_to_children: + return True + return False + + def get_all_variant_elements(type_expr): + types = list() + def loop(ty): + if isinstance(ty, RefTypeExpr) and ty.name == 'Variant': + for arg in ty.args: + loop(arg) + else: + types.append(ty) + loop(type_expr) + return types + + def infer_type(type_expr): + if isinstance(type_expr, RefTypeExpr): + if type_expr.name == 'List': + assert(len(type_expr.args) == 1) + return ListType(infer_type(type_expr.args[0])) + if type_expr.name == 'Variant': + types = get_all_variant_elements(type_expr) + has_null = False + for i, ty in enumerate(types): + if is_null_type_expr(ty): + has_null = True + del types[i] + if all(isinstance(ty, RefTypeExpr) and is_node(ty.name) for ty in types): + node_name = graph.get_common_ancestor(list(t.name for t in types)) + out = NodeType(node_name) + else: + out = VariantType(types) + if has_null: + out = OptionalType(out) + return out + if type_expr.name == 'Option': + assert(len(type_expr.args) == 1) + return OptionalType(infer_type(type_expr.args[0])) + if is_node(type_expr.name): + assert(len(type_expr.args) == 0) + return NodeType(type_expr.name) + assert(len(type_expr.args) == 0) + return RawType(type_expr.name) + raise RuntimeError(f"unhandled type expression {type_expr}") + + for node in nodes: + for member in node.members: + member.type_expr.type = infer_type(member.type_expr) + + def is_optional_by_default(ty): + return isinstance(ty, NodeType) + + def gen_cpp_type_expr(ty): + if isinstance(ty, NodeType): + return prefix + ty.name + "*" + if isinstance(ty, ListType): + return f"std::vector<{gen_cpp_type_expr(ty.element_type)}>" + if isinstance(ty, NodeType): + return 'class ' + ty.name + '*' + if isinstance(ty, OptionalType): + cpp_expr = gen_cpp_type_expr(ty.element_type) + if is_optional_by_default(ty.element_type): + return cpp_expr + return f"std::optional<{cpp_expr}>" + if isinstance(ty, VariantType): + return f"std::variant<{','.join(gen_cpp_type_expr(t) for t in ty.types)}>" + if isinstance(ty, RawType): + return ty.text + raise RuntimeError(f"unhandled Type {ty}") + + def gen_cpp_dtor(expr, ty): + if isinstance(ty, NodeType) or (isinstance(ty, OptionalType) and isinstance(ty.element_type, NodeType)): + return f'{expr}->unref();\n' + if isinstance(ty, ListType): + dtor = gen_cpp_dtor('Element', ty.element_type) + if dtor: + out = '' + out += f'for (auto& Element: {expr})' + out += '{\n' + out += dtor + out += '}\n' + return out + if isinstance(ty, OptionalType): + dtor = gen_cpp_dtor('(*' + expr + ')', ty.element_type) + if dtor: + out = '' + out += 'if (' + out += expr + out += ') {\n' + out += dtor + out += '}\n' + return out + + def gen_cpp_ctor_params(out, node): + visited = set() + queue = deque([ node ]) + first = True + while queue: + node = queue.popleft() + if node.name in visited: + return + visited.add(node.name) + for member in node.members: + if first: + first = False + else: + out.write(', ') + out.write(gen_cpp_type_expr(member.type_expr.type)) + out.write(' ') + out.write(variable_casing(member.name)) + for parent in node.parents: + queue.append(types[parent]) + + def gen_cpp_ctor_args(out, orig_node): + first = True + if orig_node.parents: + for parent in orig_node.parents: + if first: + first = False + else: + out.write(', ') + node = types[parent] + out.write(prefix + node.name) + out.write('(') + out.write(', '.join(variable_casing(member.name) for member in node.members)) + out.write(')') + else: + out.write(cpp_root_node_name + '()') + first = False + for member in orig_node.members: + if first: + first = False + else: + out.write(', ') + out.write(variable_casing(member.name)) + out.write('(') + out.write(variable_casing(member.name)) + out.write(')') + + node_hdr = Writer(path=full_include_path / (out_name + '.hpp')) + node_src = Writer(path=source_path / (out_name + '.cc')) + + macro_prefix = '_'.join(namespace).upper() + '_' + + node_hdr_guard_name = f'{macro_prefix}{out_name.upper()}_HPP' + node_hdr.write(f'#ifndef {node_hdr_guard_name}') + node_hdr.write('\n') + node_hdr.write(f'#define {node_hdr_guard_name}') + node_hdr.write('\n\n') + + for element in elements: + if isinstance(element, IncludeDiretive): + node_hdr.write(str(element)) + + for name in namespace: + node_hdr.write("namespace ") + node_hdr.write(name) + node_hdr.write(" {\n\n") + + if write_serde: + node_hdr.write('class Encoder;\n') + node_hdr.write('class Decoder;\n') + node_hdr.write('\n') + + for element in elements: + if isinstance(element, NodeDecl): + node_hdr.write(f'class {element.name};\n') + node_hdr.write('\n') + + node_hdr.write("enum class ") + node_hdr.write(prefix) + node_hdr.write("NodeType {\n") + for node in leaf_nodes: + node_hdr.write(node.name) + node_hdr.write(",\n") + node_hdr.write("};\n\n") + + node_hdr.write("class ") + node_hdr.write(cpp_root_node_name) + node_hdr.write(" {\n\n") + node_hdr.write('unsigned RefCount = 0;\n\n') + node_hdr.write_dedent('public:\n\n') + node_hdr.write('inline void ref() {\n++RefCount;\n}\n\n') + node_hdr.write('inline void unref() {\n--RefCount;\nif (RefCount == 0) {\ndelete this;\n}\n}\n\n') + node_hdr.write(f"{cpp_root_node_name}Type Type;\n\n") + node_hdr.write('void setParents();\n\n') + node_hdr.write('SourceFile* getSourceFile();\n\n'); + node_hdr.write('const SourceFile* getSourceFile() const;\n\n'); + if write_serde: + node_hdr.write('void encode(Encoder& encoder) const;\n\n') + node_hdr.write('virtual void encode_fields(Encoder& encoder) const = 0;\n'); + node_hdr.write('virtual void decode_fields(Decoder& decoder) = 0;\n\n'); + node_hdr.write(f'virtual ~{cpp_root_node_name}();') + node_hdr.write('\n') + node_hdr.write("};\n\n") + + for element in elements: + if isinstance(element, NodeDecl): + node = element + is_leaf = not list(graph.get_children(node.name)) + cpp_node_name = prefix + node.name + node_hdr.write("class ") + node_hdr.write(cpp_node_name) + node_hdr.write(" : public ") + if node.parents: + node_hdr.write(', '.join(prefix + parent for parent in node.parents)) + else: + node_hdr.write(cpp_root_node_name) + node_hdr.write(" {\n") + node_hdr.write_dedent('public:\n\n') + + node_hdr.write(cpp_node_name + '(') + gen_cpp_ctor_params(node_hdr, node) + node_hdr.write('): ') + gen_cpp_ctor_args(node_hdr, node) + node_hdr.write(' {}\n\n') + + if node.members: + for member in node.members: + node_hdr.write(gen_cpp_type_expr(member.type_expr.type)) + node_hdr.write(" "); + node_hdr.write(variable_casing(member.name)) + node_hdr.write(";\n"); + node_hdr.write('\n') + + if write_serde and is_leaf: + node_hdr.write('void encode_fields(Encoder& encoder) const override;\n'); + node_hdr.write('void decode_fields(Decoder& decoder) override;\n\n'); + + if node.name == 'SourceFile': + node_hdr.write('TextFile& getTextFile() {\nreturn File;\n}\n\n') + node_hdr.write('const TextFile& getTextFile() const {\nreturn File;\n}\n\n') + + # elif node.name == 'Token': + # node_hdr.write('TextRange getRange() const {\nreturn TextRange(StartLoc, EndLoc);\n}\n\n') + + node_hdr.write('~') + node_hdr.write(cpp_node_name) + node_hdr.write('();\n\n') + + node_hdr.write("};\n\n") + + for _ in namespace: + node_hdr.write("}\n\n") + + node_hdr.write('#endif\n') + + node_src.write('#include "') + node_src.write(str(include_path / (out_name + '.hpp'))) + node_src.write('"\n') + node_src.write('\n') + + if write_serde: + node_src.write('#include "') + node_src.write(str(include_path / 'Encoder.hpp')) + node_src.write('"\n') + node_src.write('\n') + + for name in namespace: + node_src.write("namespace ") + node_src.write(name) + node_src.write(" {\n\n") + + if write_serde: + node_src.write(f'void {cpp_root_node_name}::encode(Encoder& encoder) const') + node_src.write(' {\n') + node_src.write(f'encoder.start_encode_struct("{cpp_root_node_name}");') + node_src.write('\n') + node_src.write('encode_fields(encoder);\n') + node_src.write('encoder.end_encode_struct();\n') + node_src.write('}\n\n') + + for node in nodes: + is_leaf = not list(graph.get_children(node.name)) + cpp_node_name = prefix + node.name + if write_serde and is_leaf: + node_src.write(f'void {cpp_node_name}::encode_fields(Encoder& encoder) const') + node_src.write(' { \n') + for member in node.members: + node_src.write(f'encoder.encode_field("{member.name}", {member.name});') + node_src.write('\n') + node_src.write('}\n\n') + node_src.write(f'{cpp_node_name}::~{cpp_node_name}()') + node_src.write('{ \n') + for member in node.members: + dtor = gen_cpp_dtor(variable_casing(member.name), member.type_expr.type) + if dtor: + node_src.write(dtor) + node_src.write('}\n\n') + + for _ in namespace: + node_src.write("}\n\n") + + if args.dry_run: + print('# ' + str(node_hdr.path)) + print(node_hdr.text) + print('# ' + str(node_src.path)) + print(node_src.text) + else: + out_dir.mkdir(exist_ok=True, parents=True) + node_hdr.save(out_dir) + node_src.save(out_dir) + +if __name__ == '__main__': + main() diff --git a/scripts/genrewrite.py b/scripts/genrewrite.py new file mode 100644 index 000000000..6c2e8c7c9 --- /dev/null +++ b/scripts/genrewrite.py @@ -0,0 +1,16 @@ + +import argparse +import sys + +def main(): + + parser = argparse.ArgumentParser() + parser.add_argument('-o', '--out-file', required=True, help='The file to output generated code to') + parser.add_argument('file', nargs=1, help='The specification file to load') + args = parser.parse_args(); + + print('DONE'); + +if __name__ == '__main__': + sys.exit(main()) + diff --git a/bootstrap/cxx/src/CST.cc b/src/CST.cc similarity index 100% rename from bootstrap/cxx/src/CST.cc rename to src/CST.cc diff --git a/bootstrap/cxx/src/Checker.cc b/src/Checker.cc similarity index 100% rename from bootstrap/cxx/src/Checker.cc rename to src/Checker.cc diff --git a/bootstrap/cxx/src/ConsolePrinter.cc b/src/ConsolePrinter.cc similarity index 100% rename from bootstrap/cxx/src/ConsolePrinter.cc rename to src/ConsolePrinter.cc diff --git a/bootstrap/cxx/src/Diagnostics.cc b/src/Diagnostics.cc similarity index 100% rename from bootstrap/cxx/src/Diagnostics.cc rename to src/Diagnostics.cc diff --git a/bootstrap/cxx/src/Evaluator.cc b/src/Evaluator.cc similarity index 100% rename from bootstrap/cxx/src/Evaluator.cc rename to src/Evaluator.cc diff --git a/src/LLVMCodeGen.cc b/src/LLVMCodeGen.cc new file mode 100644 index 000000000..26cde5ef4 --- /dev/null +++ b/src/LLVMCodeGen.cc @@ -0,0 +1,66 @@ + +#include +#include + +#include "llvm/IR/Value.h" + +#include "LLVMCodeGen.hpp" +#include "bolt/CST.hpp" +#include "bolt/CSTVisitor.hpp" + +namespace bolt { + +LLVMCodeGen::LLVMCodeGen(llvm::LLVMContext* TheContext): + TheContext(TheContext) {} + +llvm::Value* LLVMCodeGen::generateExpression(Expression* E) { + + switch (E->getKind()) { + + case NodeKind::LiteralExpression: + { + auto Lit = static_cast(E); + switch (Lit->Token->getKind()) { + case NodeKind::IntegerLiteral: + { + auto V = static_cast(Lit->Token)->V; + // TODO assert that V fits in the APInt + return llvm::ConstantInt::get(*TheContext, llvm::APInt(32, V)); + } + case NodeKind::StringLiteral: + { + auto Str = static_cast(Lit->Token)->Text; + return Builder->CreateGlobalStringPtr(llvm::StringRef(Str)); + } + default: + ZEN_UNREACHABLE + } + } + + default: + ZEN_UNREACHABLE + + } + +} + +void LLVMCodeGen::generateElement(Node* N) { + switch (N->getKind()) { + case NodeKind::ExpressionStatement: + { + auto Stmt = static_cast(N); + generateExpression(Stmt->Expression); + } + default: + ZEN_UNREACHABLE + } +} + +void LLVMCodeGen::generate(SourceFile* SF) { + Module = std::make_unique(SF->File.getPath(), *TheContext); + for (auto Element: SF->Elements) { + generateElement(Element); + } +} + +} diff --git a/src/LLVMCodeGen.hpp b/src/LLVMCodeGen.hpp new file mode 100644 index 000000000..b5b86f45f --- /dev/null +++ b/src/LLVMCodeGen.hpp @@ -0,0 +1,32 @@ + +#pragma once + +#include "llvm/IR/Value.h" +#include "llvm/IR/IRBuilder.h" + +namespace bolt { + +class Node; +class SourceFile; +class Expression; + +class LLVMCodeGen { + + llvm::LLVMContext* TheContext; + + std::unique_ptr> Builder; + + std::unique_ptr Module; + +public: + + LLVMCodeGen(llvm::LLVMContext* TheContext); + + llvm::Value* generateExpression(Expression* E); + + void generateElement(Node* Element); + void generate(SourceFile* SF); + +}; + +} diff --git a/bootstrap/cxx/src/Parser.cc b/src/Parser.cc similarity index 100% rename from bootstrap/cxx/src/Parser.cc rename to src/Parser.cc diff --git a/src/Pass/CheckMissingBindings.cc b/src/Pass/CheckMissingBindings.cc new file mode 100644 index 000000000..ea97e50a8 --- /dev/null +++ b/src/Pass/CheckMissingBindings.cc @@ -0,0 +1,7 @@ + +namespace bolt { + +class CheckMissingBindings { +}; + +} diff --git a/bootstrap/cxx/src/Scanner.cc b/src/Scanner.cc similarity index 100% rename from bootstrap/cxx/src/Scanner.cc rename to src/Scanner.cc diff --git a/src/Scope.cc b/src/Scope.cc new file mode 100644 index 000000000..0a2ce065a --- /dev/null +++ b/src/Scope.cc @@ -0,0 +1,226 @@ + +#include "bolt/CST.hpp" + +namespace bolt { + +Scope::Scope(Node* Source): + Source(Source) { + scan(Source); + } + +void Scope::addSymbol(ByteString Name, Node* Decl, SymbolKind Kind) { + Mapping.emplace(Name, std::make_tuple(Decl, Kind)); +} + +void Scope::scan(Node* X) { + switch (X->getKind()) { + case NodeKind::SourceFile: + { + auto File = static_cast(X); + for (auto Element: File->Elements) { + scanChild(Element); + } + break; + } + case NodeKind::MatchCase: + { + auto Case = static_cast(X); + visitPattern(Case->Pattern, Case); + break; + } + case NodeKind::PrefixFunctionDeclaration: + case NodeKind::InfixFunctionDeclaration: + case NodeKind::SuffixFunctionDeclaration: + case NodeKind::NamedFunctionDeclaration: + { + auto Decl = static_cast(X); + for (auto Param: Decl->getParams()) { + visitPattern(Param->Pattern, Param); + } + auto Body = Decl->getBody(); + if (Body) { + scanChild(Body); + } + break; + } + default: + ZEN_UNREACHABLE + } +} + +void Scope::scanChild(Node* X) { + switch (X->getKind()) { + case NodeKind::LetExprBody: + case NodeKind::ExpressionStatement: + case NodeKind::IfStatement: + case NodeKind::ReturnStatement: + break; + case NodeKind::LetBlockBody: + { + auto Block = static_cast(X); + for (auto Element: Block->Elements) { + scanChild(Element); + } + break; + } + case NodeKind::InstanceDeclaration: + // We ignore let-declarations inside instance-declarations for now + break; + case NodeKind::ClassDeclaration: + { + auto Decl = static_cast(X); + addSymbol(Decl->Name->getCanonicalText(), Decl, SymbolKind::Class); + for (auto Element: Decl->Elements) { + scanChild(Element); + } + break; + } + case NodeKind::PrefixFunctionDeclaration: + case NodeKind::InfixFunctionDeclaration: + case NodeKind::SuffixFunctionDeclaration: + case NodeKind::NamedFunctionDeclaration: + { + auto Decl = static_cast(X); + addSymbol(Decl->getNameAsString(), Decl, SymbolKind::Var); + break; + } + case NodeKind::VariableDeclaration: + { + auto Decl = static_cast(X); + visitPattern(Decl->Pattern, Decl); + break; + } + case NodeKind::RecordDeclaration: + { + auto Decl = static_cast(X); + addSymbol(Decl->Name->getCanonicalText(), Decl, SymbolKind::Type); + break; + } + case NodeKind::VariantDeclaration: + { + auto Decl = static_cast(X); + addSymbol(Decl->Name->getCanonicalText(), Decl, SymbolKind::Type); + for (auto Member: Decl->Members) { + switch (Member->getKind()) { + case NodeKind::TupleVariantDeclarationMember: + { + auto T = static_cast(Member); + addSymbol(T->Name->getCanonicalText(), Decl, SymbolKind::Constructor); + break; + } + case NodeKind::RecordVariantDeclarationMember: + { + auto R = static_cast(Member); + addSymbol(R->Name->getCanonicalText(), Decl, SymbolKind::Constructor); + break; + } + default: + ZEN_UNREACHABLE + } + } + break; + } + default: + ZEN_UNREACHABLE + } +} + +void Scope::visitPattern(Pattern* X, Node* Decl) { + switch (X->getKind()) { + case NodeKind::BindPattern: + { + auto Y = static_cast(X); + addSymbol(Y->Name->getCanonicalText(), Decl, SymbolKind::Var); + break; + } + case NodeKind::RecordPattern: + { + auto Y = static_cast(X); + for (auto [Field, Comma]: Y->Fields) { + if (Field->Pattern) { + visitPattern(Field->Pattern, Decl); + } else if (Field->Name) { + addSymbol(Field->Name->Text, Decl, SymbolKind::Var); + } + } + break; + } + case NodeKind::NamedRecordPattern: + { + auto Y = static_cast(X); + for (auto [Field, Comma]: Y->Fields) { + if (Field->Pattern) { + visitPattern(Field->Pattern, Decl); + } else if (Field->Name) { + addSymbol(Field->Name->Text, Decl, SymbolKind::Var); + } + } + break; + } + case NodeKind::NamedTuplePattern: + { + auto Y = static_cast(X); + for (auto P: Y->Patterns) { + visitPattern(P, Decl); + } + break; + } + case NodeKind::NestedPattern: + { + auto Y = static_cast(X); + visitPattern(Y->P, Decl); + break; + } + case NodeKind::TuplePattern: + { + auto Y = static_cast(X); + for (auto [Element, Comma]: Y->Elements) { + visitPattern(Element, Decl); + } + break; + } + case NodeKind::ListPattern: + { + auto Y = static_cast(X); + for (auto [Element, Separator]: Y->Elements) { + visitPattern(Element, Decl); + } + break; + } + case NodeKind::LiteralPattern: + break; + default: + ZEN_UNREACHABLE + } +} + +Node* Scope::lookupDirect(SymbolPath Path, SymbolKind Kind) { + ZEN_ASSERT(Path.Modules.empty()); + auto Match = Mapping.find(Path.Name); + if (Match != Mapping.end() && std::get<1>(Match->second) == Kind) { + return std::get<0>(Match->second); + } + return nullptr; +} + +Node* Scope::lookup(SymbolPath Path, SymbolKind Kind) { + ZEN_ASSERT(Path.Modules.empty()); + auto Curr = this; + do { + auto Found = Curr->lookupDirect(Path, Kind); + if (Found) { + return Found; + } + Curr = Curr->getParentScope(); + } while (Curr != nullptr); + return nullptr; +} + +Scope* Scope::getParentScope() { + if (Source->Parent == nullptr) { + return nullptr; + } + return Source->Parent->getScope(); +} + +} diff --git a/bootstrap/cxx/src/Text.cc b/src/Text.cc similarity index 100% rename from bootstrap/cxx/src/Text.cc rename to src/Text.cc diff --git a/bootstrap/cxx/src/Types.cc b/src/Types.cc similarity index 100% rename from bootstrap/cxx/src/Types.cc rename to src/Types.cc diff --git a/bootstrap/cxx/src/main.cc b/src/main.cc similarity index 100% rename from bootstrap/cxx/src/main.cc rename to src/main.cc diff --git a/stdlib/io.bolt b/stdlib/io.bolt new file mode 100644 index 000000000..892c5848a --- /dev/null +++ b/stdlib/io.bolt @@ -0,0 +1,5 @@ + +let print : String -> () + +let eprint : String -> () + diff --git a/stdlib/math.bolt b/stdlib/math.bolt new file mode 100644 index 000000000..36a24a4b2 --- /dev/null +++ b/stdlib/math.bolt @@ -0,0 +1,22 @@ + +# TODO +#trait Add k. +# let a + b : k -> k -> k + +let a && b : Bool -> Bool -> Bool = match (a, b). + (True, True) => True + (True, False) => False + (False, True) => False + (False, False) => False + +let a || b : Bool -> Bool -> Bool = match (a, b). + (True, True) => True + (True, False) => True + (False, True) => True + (False, False) => False + +let not : Bool -> Bool = match. + True => False + False => True + +let ! a = not a diff --git a/stdlib/prelude.bolt b/stdlib/prelude.bolt new file mode 100644 index 000000000..a200c44bc --- /dev/null +++ b/stdlib/prelude.bolt @@ -0,0 +1,4 @@ + +import "./math" +import "./io" + diff --git a/bootstrap/cxx/test/TestChecker.cc b/test/TestChecker.cc similarity index 100% rename from bootstrap/cxx/test/TestChecker.cc rename to test/TestChecker.cc diff --git a/bootstrap/cxx/test/TestText.cc b/test/TestText.cc similarity index 100% rename from bootstrap/cxx/test/TestText.cc rename to test/TestText.cc diff --git a/bootstrap/cxx/test/checker/forward_recursion.bolt b/test/checker/forward_recursion.bolt similarity index 100% rename from bootstrap/cxx/test/checker/forward_recursion.bolt rename to test/checker/forward_recursion.bolt diff --git a/bootstrap/cxx/test/checker/if_part_test_is_bool.bolt b/test/checker/if_part_test_is_bool.bolt similarity index 100% rename from bootstrap/cxx/test/checker/if_part_test_is_bool.bolt rename to test/checker/if_part_test_is_bool.bolt diff --git a/bootstrap/cxx/test/checker/instance_arguments_type_classes.bolt.disabled b/test/checker/instance_arguments_type_classes.bolt.disabled similarity index 100% rename from bootstrap/cxx/test/checker/instance_arguments_type_classes.bolt.disabled rename to test/checker/instance_arguments_type_classes.bolt.disabled diff --git a/bootstrap/cxx/test/checker/local_constraints_polymorphic_variable.bolt b/test/checker/local_constraints_polymorphic_variable.bolt similarity index 100% rename from bootstrap/cxx/test/checker/local_constraints_polymorphic_variable.bolt rename to test/checker/local_constraints_polymorphic_variable.bolt diff --git a/bootstrap/cxx/test/checker/mutual_recursion_is_odd_is_even.bolt b/test/checker/mutual_recursion_is_odd_is_even.bolt similarity index 100% rename from bootstrap/cxx/test/checker/mutual_recursion_is_odd_is_even.bolt rename to test/checker/mutual_recursion_is_odd_is_even.bolt diff --git a/bootstrap/cxx/test/checker/nested_vars_reaching_parent_scope.bolt b/test/checker/nested_vars_reaching_parent_scope.bolt similarity index 100% rename from bootstrap/cxx/test/checker/nested_vars_reaching_parent_scope.bolt rename to test/checker/nested_vars_reaching_parent_scope.bolt diff --git a/bootstrap/cxx/test/checker/pattern_matching_variant.bolt b/test/checker/pattern_matching_variant.bolt similarity index 100% rename from bootstrap/cxx/test/checker/pattern_matching_variant.bolt rename to test/checker/pattern_matching_variant.bolt diff --git a/bootstrap/cxx/test/checker/simple_instance_arguments.bolt.disabled b/test/checker/simple_instance_arguments.bolt.disabled similarity index 100% rename from bootstrap/cxx/test/checker/simple_instance_arguments.bolt.disabled rename to test/checker/simple_instance_arguments.bolt.disabled diff --git a/bootstrap/cxx/test/checker/simple_tuple_test.bolt b/test/checker/simple_tuple_test.bolt similarity index 100% rename from bootstrap/cxx/test/checker/simple_tuple_test.bolt rename to test/checker/simple_tuple_test.bolt diff --git a/bootstrap/cxx/test/checker/test_equality_tapp.bolt b/test/checker/test_equality_tapp.bolt similarity index 100% rename from bootstrap/cxx/test/checker/test_equality_tapp.bolt rename to test/checker/test_equality_tapp.bolt diff --git a/bootstrap/cxx/test/checker/test_qualified_type_sigs.bolt b/test/checker/test_qualified_type_sigs.bolt similarity index 100% rename from bootstrap/cxx/test/checker/test_qualified_type_sigs.bolt rename to test/checker/test_qualified_type_sigs.bolt diff --git a/bootstrap/cxx/test/checker/variable_mistyping.bolt b/test/checker/variable_mistyping.bolt similarity index 100% rename from bootstrap/cxx/test/checker/variable_mistyping.bolt rename to test/checker/variable_mistyping.bolt diff --git a/bootstrap/cxx/test/checker/wrong_return_type.bolt b/test/checker/wrong_return_type.bolt similarity index 100% rename from bootstrap/cxx/test/checker/wrong_return_type.bolt rename to test/checker/wrong_return_type.bolt diff --git a/x.py b/x.py new file mode 100755 index 000000000..4fd8a9b92 --- /dev/null +++ b/x.py @@ -0,0 +1,251 @@ +#!/usr/bin/env python3 + +import argparse +from enum import Enum +from os import walk +import os +from re import A +import subprocess +import shutil +import shlex +import math +from pathlib import Path + +LLVM_VERSION = '18.1.0' + +here = Path(__file__).parent.resolve() + +parser = argparse.ArgumentParser() + +parser.add_argument('--no-ninja', action='store_true', help='Do not use Ninja if present') +parser.add_argument('--clang', action='store_true', help='Make sure the code is compiled using Clang ') +parser.add_argument('--gcc', action='store_true', help='Make sure the code is compiled using Clang ') +parser.add_argument('--msvc', action='store_true', help='Make sure the code is compiled using the Microsoft Visual C++ compiler') +parser.add_argument('--target', action='append', help='CPU target to support. Can be specified multiple times.') +parser.add_argument('-j', '--jobs', help='The maximum amount of jobs that build in parallel') + +args = parser.parse_args() + +cache_dir = here / '.cache' / 'bolt-build' +download_dir = cache_dir / 'downloads' +source_dir = cache_dir / 'source' +build_dir = cache_dir / 'build' +llvm_source_dir = source_dir / 'llvm' +llvm_build_dir = build_dir / 'llvm' +bolt_source_dir = here +bolt_build_dir = build_dir / 'bolt' + +def newer(a: Path, b: Path) -> bool: + def min_time(path: Path) -> float: + if not path.exists(): + return math.inf + if path.is_dir(): + min = math.inf + for p in path.iterdir(): + m = min_time(p) + if m < min: + min = m + return min + return path.stat().st_mtime + def max_time(path: Path) -> float: + if not path.exists(): + return 0 + if path.is_dir(): + max = 0 + for p in path.iterdir(): + m = min_time(p) + if m > max: + max = m + return max + return path.stat().st_mtime + return min_time(a) > max_time(b) + +class CMakeGenerator(Enum): + ninja = 'Ninja' + make = 'Unix Makefiles' + +type CMakeValue = None | bool | int | str + +def cmake_encode(value: CMakeValue): + if isinstance(value, str): + return shlex.quote(value) + if value == True: + return 'ON' + if value == False: + return 'OFF' + if isinstance(value, int): + return str(value); + raise NotImplementedError() + +def spawn(cmd: list[str], *args, **kwargs): + print(' '.join(str(x) for x in cmd)) + subprocess.run(cmd, *args, check=True, **kwargs) + +def shell(cmd: str, *args, **kwargs): + print(cmd) + subprocess.run(cmd, shell=True, *args, check=True, **kwargs) + +def cmake( + src_dir: Path, + build_dir: Path, + generator: CMakeGenerator | None = None, + defines: dict[str, CMakeValue] | None = None, + compile_commands = True, +): + if generator is None and ninja_path is not None: + generator = CMakeGenerator.ninja + if defines is None: + defines = dict() + argv = [ + 'cmake', + src_dir, + '-B', build_dir, + ] + if generator is not None: + argv.extend(['-G', generator.value]) + if clang_cxx_path is not None: + argv.append(f'-DCMAKE_CXX_COMPILER={cmake_encode(clang_cxx_path)}') + if compile_commands: + argv.append('-DCMAKE_EXPORT_COMPILE_COMMANDS=ON') + for k, v in defines.items(): + argv.append(f'-D{k}={cmake_encode(v)}') + spawn(argv) + compile_commands_json_path = here / 'compile_commands.json'; + if compile_commands and not compile_commands_json_path.exists(): + compile_commands_json_path.symlink_to(build_dir / 'compile_commands.json') + +def build(*targets: str, build_dir: Path, jobs: int | None = None) -> None: + args = [ 'cmake', '--build', build_dir ] + if jobs is not None: + args.extend(['-j', str(jobs) ]) + for target in targets: + args.extend([ '-t', target ]) + spawn(args) + +def download_llvm(version: str): + download_dir.mkdir(parents=True, exist_ok=True) + shell(f'wget https://github.com/llvm/llvm-project/archive/refs/tags/llvmorg-{version}.tar.gz', cwd=download_dir) + shell(f'tar -xf llvmorg-{version}.tar.gz --directory {llvm_source_dir}', cwd=download_dir) + +def build_llvm(target_archs: list[str], jobs: int | None = None): + + return # FIXME + + download_llvm(LLVM_VERSION) + + cmake( + llvm_source_dir, + llvm_build_dir, + defines={ + 'CMAKE_BUILD_TYPE': 'Release', + 'LLVM_ENABLE_ASSERTIONS': True, + 'LLVM_TARGETS_TO_BUILD': ';'.join(target_archs), + 'LLVM_OPTIMIZED_TABLEGEN': True + } + ) + + build_cmd = 'make' if ninja_path is None else 'ninja' + build_argv = [ build_cmd ] + if jobs is not None: + build_argv.extend([ '-j', str(jobs) ]) + + spawn(build_argv, cwd=llvm_build_dir) + +def ninja(targets: list[str], cwd: Path | None = None) -> None: + argv = [ str(ninja_path) ] + argv.extend(targets) + if cwd is not None: + argv.extend([ '-C', str(cwd) ]) + spawn(argv) + +def build_bolt(c_path: str | None = None, cxx_path: str | None = None) -> None: + + if newer(bolt_source_dir / 'CMakeLists.txt', bolt_build_dir): + + defines = { + 'CMAKE_EXPORT_COMPILE_COMMANDS': True, + 'CMAKE_BUILD_TYPE': 'Debug', + 'BOLT_ENABLE_TESTS': True, + 'ZEN_ENABLE_TESTS': False, + 'LLVM_CONFIG': str(llvm_config_path) + } + if c_path is not None: + defines['CMAKE_C_COMPILER'] = c_path + if cxx_path is not None: + defines['CMAKE_CXX_COMPILER'] = cxx_path + cmake( + bolt_source_dir, + bolt_build_dir, + defines=defines, + ) + + build('bolt', build_dir=bolt_build_dir) + +enable_ninja = not args.no_ninja + +NONE = 0 +CLANG = 1 +GCC = 2 +MSVC = 3 + +force = NONE + +ninja_path = enable_ninja and shutil.which('ninja') + +c_path = None +cxx_path = None + +if os.name == 'posix': + clang_c_path = shutil.which('clangj') + clang_cxx_path = shutil.which('clang++') + if clang_c_path is not None and clang_cxx_path is not None and (force == NONE or force == CLANG): + c_path = clang_c_path + cxx_path = clang_cxx_path + else: + for version in [ '18' ]: + clang_c_path = shutil.which(f'clang-{version}') + clang_cxx_path = shutil.which(f'clang++-{version}') + if clang_c_path is not None and clang_cxx_path is not None and (force == NONE or force == CLANG): + c_path = clang_c_path + cxx_path = clang_cxx_path + break + if c_path is None or cxx_path is None: + gcc_c_path = shutil.which('gcc') + gcc_cxx_path = shutil.which('g++') + if gcc_c_path is not None and gcc_cxx_path is not None and (force == NONE or force == GCC): + c_path = gcc_c_path + cxx_path = gcc_cxx_path + else: + print('Going to use platform default compiler') +elif os.name == 'nt': + msvc_path = shutil.which('cl.exe') + if msvc_path is not None and (force == NONE or force == MSVC): + c_path = msvc_path + cxx_path = msvc_path + else: + print('Going to use platform default compiler') +else: + print('Platform not supported right now') + exit(1) + +num_jobs = args.jobs +llvm_targets = [] + +if args.target is None: + llvm_targets.append('host') +else: + for target_spec in args.target: + for target in target_spec.split(','): + llvm_targets.append(target) + +llvm_config_path = shutil.which('llvm-config-18') + +if llvm_config_path is None: + build_llvm(llvm_targets, jobs=num_jobs) + llvm_config_path = llvm_build_dir / 'bin' / 'llvm-config' + +build_bolt( + c_path=c_path, + cxx_path=cxx_path, +) +