semantifold 0.1.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -10
- package/build/index.d.ts +32 -3
- package/build/index.d.ts.map +1 -1
- package/build/index.js +99 -4
- package/build/src/acceptance.d.ts +32 -0
- package/build/src/acceptance.d.ts.map +1 -0
- package/build/src/acceptance.js +358 -0
- package/build/src/array.d.ts +7 -0
- package/build/src/array.d.ts.map +1 -0
- package/build/src/array.js +18 -0
- package/build/src/artifact-path.d.ts +13 -0
- package/build/src/artifact-path.d.ts.map +1 -0
- package/build/src/artifact-path.js +30 -0
- package/build/src/artifacts.d.ts +7 -0
- package/build/src/artifacts.d.ts.map +1 -0
- package/build/src/artifacts.js +389 -0
- package/build/src/backends/c-runtime.d.ts +3 -0
- package/build/src/backends/c-runtime.d.ts.map +1 -0
- package/build/src/backends/c-runtime.js +151 -0
- package/build/src/backends/c-validation.d.ts +12 -0
- package/build/src/backends/c-validation.d.ts.map +1 -0
- package/build/src/backends/c-validation.js +85 -0
- package/build/src/backends/c.d.ts +31 -0
- package/build/src/backends/c.d.ts.map +1 -0
- package/build/src/backends/c.js +308 -0
- package/build/src/backends/cpp-runtime.d.ts +3 -0
- package/build/src/backends/cpp-runtime.d.ts.map +1 -0
- package/build/src/backends/cpp-runtime.js +99 -0
- package/build/src/backends/cpp-validation.d.ts +9 -0
- package/build/src/backends/cpp-validation.d.ts.map +1 -0
- package/build/src/backends/cpp-validation.js +74 -0
- package/build/src/backends/cpp.d.ts +16 -0
- package/build/src/backends/cpp.d.ts.map +1 -0
- package/build/src/backends/cpp.js +285 -0
- package/build/src/backends/csharp.d.ts +20 -0
- package/build/src/backends/csharp.d.ts.map +1 -0
- package/build/src/backends/csharp.js +259 -0
- package/build/src/backends/go.d.ts +20 -0
- package/build/src/backends/go.d.ts.map +1 -0
- package/build/src/backends/go.js +374 -0
- package/build/src/backends/identifiers.d.ts +12 -0
- package/build/src/backends/identifiers.d.ts.map +1 -1
- package/build/src/backends/identifiers.js +79 -2
- package/build/src/backends/index.d.ts.map +1 -1
- package/build/src/backends/index.js +27 -37
- package/build/src/backends/native-validation.d.ts +9 -0
- package/build/src/backends/native-validation.d.ts.map +1 -0
- package/build/src/backends/native-validation.js +59 -0
- package/build/src/backends/ordered-expressions.d.ts +74 -0
- package/build/src/backends/ordered-expressions.d.ts.map +1 -0
- package/build/src/backends/ordered-expressions.js +159 -0
- package/build/src/backends/python.d.ts +8 -0
- package/build/src/backends/python.d.ts.map +1 -0
- package/build/src/backends/python.js +162 -0
- package/build/src/backends/scalars.d.ts.map +1 -1
- package/build/src/backends/scalars.js +8 -2
- package/build/src/backends/shared.d.ts.map +1 -1
- package/build/src/backends/shared.js +67 -19
- package/build/src/binary-mapping.d.ts +32 -0
- package/build/src/binary-mapping.d.ts.map +1 -0
- package/build/src/binary-mapping.js +285 -0
- package/build/src/diagnostic.d.ts +36 -4
- package/build/src/diagnostic.d.ts.map +1 -1
- package/build/src/diagnostic.js +42 -3
- package/build/src/frontends/c-parser.d.ts +20 -0
- package/build/src/frontends/c-parser.d.ts.map +1 -0
- package/build/src/frontends/c-parser.js +14 -0
- package/build/src/frontends/c.d.ts +220 -0
- package/build/src/frontends/c.d.ts.map +1 -0
- package/build/src/frontends/c.js +750 -0
- package/build/src/frontends/cpp-parser.d.ts +11 -0
- package/build/src/frontends/cpp-parser.d.ts.map +1 -0
- package/build/src/frontends/cpp-parser.js +15 -0
- package/build/src/frontends/cpp.d.ts +227 -0
- package/build/src/frontends/cpp.d.ts.map +1 -0
- package/build/src/frontends/cpp.js +784 -0
- package/build/src/frontends/csharp.d.ts +14 -0
- package/build/src/frontends/csharp.d.ts.map +1 -0
- package/build/src/frontends/csharp.js +708 -0
- package/build/src/frontends/go.d.ts +15 -0
- package/build/src/frontends/go.d.ts.map +1 -0
- package/build/src/frontends/go.js +712 -0
- package/build/src/frontends/index.d.ts.map +1 -1
- package/build/src/frontends/index.js +5 -23
- package/build/src/frontends/python.d.ts +14 -0
- package/build/src/frontends/python.d.ts.map +1 -0
- package/build/src/frontends/python.js +615 -0
- package/build/src/frontends/scalars.d.ts.map +1 -1
- package/build/src/frontends/scalars.js +21 -1
- package/build/src/language-registry.d.ts +113 -0
- package/build/src/language-registry.d.ts.map +1 -0
- package/build/src/language-registry.js +421 -0
- package/build/src/mapping.js +3 -2
- package/build/src/semantic/location.d.ts +7 -0
- package/build/src/semantic/location.d.ts.map +1 -1
- package/build/src/semantic/location.js +10 -1
- package/build/src/semantic/provenance.js +3 -3
- package/build/src/semantic/types.d.ts +399 -2
- package/build/src/semantic/types.d.ts.map +1 -1
- package/build/src/semantic/types.js +110 -2
- package/build/src/subprocess.d.ts +38 -0
- package/build/src/subprocess.d.ts.map +1 -0
- package/build/src/subprocess.js +233 -0
- package/build/src/timeout.d.ts +8 -0
- package/build/src/timeout.d.ts.map +1 -0
- package/build/src/timeout.js +11 -0
- package/build/src/toolchains.d.ts +107 -0
- package/build/src/toolchains.d.ts.map +1 -0
- package/build/src/toolchains.js +417 -0
- package/docs/architecture.md +23 -5
- package/docs/c.md +60 -0
- package/docs/cpp.md +61 -0
- package/docs/goals.md +4 -2
- package/docs/language-support.md +46 -6
- package/docs/parser-qualification.md +219 -0
- package/docs/plans/2026-09-05-standard-library-portability.md +46 -0
- package/docs/source-maps.md +38 -5
- package/docs/standard-library-portability.md +190 -0
- package/docs/testing.md +131 -3
- package/index.js +109 -4
- package/node_modules/node-addon-api/LICENSE.md +9 -0
- package/node_modules/node-addon-api/README.md +95 -0
- package/node_modules/node-addon-api/common.gypi +21 -0
- package/node_modules/node-addon-api/except.gypi +25 -0
- package/node_modules/node-addon-api/index.js +14 -0
- package/node_modules/node-addon-api/napi-inl.deprecated.h +186 -0
- package/node_modules/node-addon-api/napi-inl.h +7250 -0
- package/node_modules/node-addon-api/napi.h +3463 -0
- package/node_modules/node-addon-api/node_addon_api.gyp +42 -0
- package/node_modules/node-addon-api/node_api.gyp +9 -0
- package/node_modules/node-addon-api/noexcept.gypi +26 -0
- package/node_modules/node-addon-api/nothing.c +0 -0
- package/node_modules/node-addon-api/package-support.json +21 -0
- package/node_modules/node-addon-api/package.json +481 -0
- package/node_modules/node-addon-api/tools/README.md +73 -0
- package/node_modules/node-addon-api/tools/check-napi.js +99 -0
- package/node_modules/node-addon-api/tools/clang-format.js +71 -0
- package/node_modules/node-addon-api/tools/conversion.js +301 -0
- package/node_modules/node-gyp-build/LICENSE +21 -0
- package/node_modules/node-gyp-build/README.md +58 -0
- package/node_modules/node-gyp-build/SECURITY.md +5 -0
- package/node_modules/node-gyp-build/bin.js +84 -0
- package/node_modules/node-gyp-build/build-test.js +19 -0
- package/node_modules/node-gyp-build/index.js +6 -0
- package/node_modules/node-gyp-build/node-gyp-build.js +207 -0
- package/node_modules/node-gyp-build/optional.js +7 -0
- package/node_modules/node-gyp-build/package.json +43 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/LICENSE +15 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/README.md +7 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/LICENSE +21 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/README.md +90 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/binding.gyp +79 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/index.js +895 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/package.json +62 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/prebuilds/darwin-arm64/tree-sitter.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/prebuilds/darwin-x64/tree-sitter.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/prebuilds/linux-x64/tree-sitter.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/prebuilds/win32-x64/tree-sitter.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/addon_data.h +47 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/binding.cc +35 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/conversions.cc +140 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/conversions.h +22 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/language.cc +106 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/language.h +17 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/logger.cc +70 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/logger.h +19 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/lookaheaditerator.cc +122 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/lookaheaditerator.h +33 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/node.cc +1056 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/node.h +30 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/parser.cc +298 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/parser.h +35 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/query.cc +383 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/query.h +39 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/tree.cc +307 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/tree.h +45 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/tree_cursor.cc +213 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/tree_cursor.h +52 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/tree-sitter.d.ts +211 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/include/tree_sitter/api.h +1266 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.c +48 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.h +41 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/array.h +290 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/atomic.h +68 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/clock.h +146 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/error_costs.h +11 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.c +501 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.h +36 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/host.h +21 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.c +221 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.h +299 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/length.h +52 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.c +419 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.h +49 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lib.c +14 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/node.c +774 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.c +2151 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.h +230 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/point.h +62 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/query.c +4134 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reduce_action.h +34 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reusable_node.h +95 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.c +899 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.h +133 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.c +1060 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.h +382 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.c +165 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.h +31 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.c +714 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.h +48 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ICU_SHA +1 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/LICENSE +414 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/README.md +29 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ptypes.h +1 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/umachine.h +448 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/urename.h +1 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf.h +1 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf16.h +733 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf8.h +881 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode.h +50 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib-symbols.txt +23 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib.c +109 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/wasm-stdlib.h +1294 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.c +1823 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.h +31 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/LICENSE +21 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/README.md +18 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/binding.gyp +29 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/bindings/node/binding.cc +20 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/bindings/node/binding_test.js +9 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/bindings/node/index.d.ts +28 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/bindings/node/index.js +11 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/grammar.js +1470 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/package.json +60 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/darwin-arm64/tree-sitter-c.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/darwin-x64/tree-sitter-c.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/linux-arm64/tree-sitter-c.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/linux-x64/tree-sitter-c.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/win32-arm64/tree-sitter-c.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/win32-x64/tree-sitter-c.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/queries/highlights.scm +81 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/queries/tags.scm +9 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/grammar.json +9735 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/node-types.json +4614 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/parser.c +119615 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/tree_sitter/alloc.h +54 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/tree_sitter/array.h +290 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/tree_sitter/parser.h +266 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/tree-sitter-c.wasm +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/tree-sitter.json +43 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/LICENSE +21 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/README.md +22 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/binding.gyp +30 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/bindings/node/binding.cc +20 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/bindings/node/binding_test.js +9 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/bindings/node/index.d.ts +28 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/bindings/node/index.js +11 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/grammar.js +1436 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/package.json +61 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/darwin-arm64/tree-sitter-cpp.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/darwin-x64/tree-sitter-cpp.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/linux-arm64/tree-sitter-cpp.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/linux-x64/tree-sitter-cpp.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/win32-arm64/tree-sitter-cpp.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/win32-x64/tree-sitter-cpp.node +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/queries/highlights.scm +70 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/queries/injections.scm +3 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/queries/tags.scm +15 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/grammar.json +17084 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/node-types.json +7997 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/parser.c +530368 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/scanner.c +148 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/tree_sitter/alloc.h +54 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/tree_sitter/array.h +290 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/tree_sitter/parser.h +266 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/tree-sitter-cpp.wasm +0 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/tree-sitter.json +55 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/package.json +22 -0
- package/node_modules/semantifold-tree-sitter-legacy-internal/src/c.js +152 -0
- package/node_modules/tree-sitter/LICENSE +21 -0
- package/node_modules/tree-sitter/README.md +128 -0
- package/node_modules/tree-sitter/binding.gyp +88 -0
- package/node_modules/tree-sitter/index.js +950 -0
- package/node_modules/tree-sitter/package.json +76 -0
- package/node_modules/tree-sitter/prebuilds/darwin-arm64/tree-sitter.node +0 -0
- package/node_modules/tree-sitter/prebuilds/darwin-x64/tree-sitter.node +0 -0
- package/node_modules/tree-sitter/prebuilds/linux-arm64/tree-sitter.node +0 -0
- package/node_modules/tree-sitter/prebuilds/linux-x64/tree-sitter.node +0 -0
- package/node_modules/tree-sitter/prebuilds/win32-arm64/tree-sitter.node +0 -0
- package/node_modules/tree-sitter/prebuilds/win32-x64/tree-sitter.node +0 -0
- package/node_modules/tree-sitter/src/addon_data.h +47 -0
- package/node_modules/tree-sitter/src/binding.cc +35 -0
- package/node_modules/tree-sitter/src/conversions.cc +140 -0
- package/node_modules/tree-sitter/src/conversions.h +22 -0
- package/node_modules/tree-sitter/src/language.cc +105 -0
- package/node_modules/tree-sitter/src/language.h +17 -0
- package/node_modules/tree-sitter/src/logger.cc +70 -0
- package/node_modules/tree-sitter/src/logger.h +19 -0
- package/node_modules/tree-sitter/src/lookaheaditerator.cc +122 -0
- package/node_modules/tree-sitter/src/lookaheaditerator.h +33 -0
- package/node_modules/tree-sitter/src/node.cc +1088 -0
- package/node_modules/tree-sitter/src/node.h +30 -0
- package/node_modules/tree-sitter/src/parser.cc +332 -0
- package/node_modules/tree-sitter/src/parser.h +35 -0
- package/node_modules/tree-sitter/src/query.cc +425 -0
- package/node_modules/tree-sitter/src/query.h +40 -0
- package/node_modules/tree-sitter/src/tree.cc +316 -0
- package/node_modules/tree-sitter/src/tree.h +45 -0
- package/node_modules/tree-sitter/src/tree_cursor.cc +213 -0
- package/node_modules/tree-sitter/src/tree_cursor.h +52 -0
- package/node_modules/tree-sitter/tree-sitter.d.ts +1083 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/include/tree_sitter/api.h +1478 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.c +48 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.h +41 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/array.h +291 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/atomic.h +68 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/clock.h +146 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/error_costs.h +11 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.c +523 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.h +36 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/host.h +21 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.c +293 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.h +293 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/length.h +52 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.c +483 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.h +54 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lib.c +12 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/node.c +875 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.c +2297 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.h +286 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/point.h +48 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/portable/endian.h +241 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/query.c +4347 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reduce_action.h +34 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reusable_node.h +95 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.c +912 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.h +133 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.c +1034 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.h +399 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.c +170 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.h +31 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.c +716 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.h +48 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/ts_assert.h +11 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ICU_SHA +1 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/LICENSE +414 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/README.md +29 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ptypes.h +1 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/umachine.h +448 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/urename.h +1 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf.h +1 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf16.h +733 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf8.h +881 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode.h +75 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib-symbols.txt +24 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib.c +137 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/wasm-stdlib.h +1314 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.c +1937 -0
- package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.h +31 -0
- package/package.json +24 -6
- package/src/acceptance.js +380 -0
- package/src/array.js +19 -0
- package/src/artifact-path.js +34 -0
- package/src/artifacts.js +420 -0
- package/src/backends/c-runtime.js +151 -0
- package/src/backends/c-validation.js +83 -0
- package/src/backends/c.js +308 -0
- package/src/backends/cpp-runtime.js +99 -0
- package/src/backends/cpp-validation.js +70 -0
- package/src/backends/cpp.js +285 -0
- package/src/backends/csharp.js +270 -0
- package/src/backends/go.js +383 -0
- package/src/backends/identifiers.js +80 -1
- package/src/backends/index.js +23 -32
- package/src/backends/native-validation.js +64 -0
- package/src/backends/ordered-expressions.js +161 -0
- package/src/backends/python.js +175 -0
- package/src/backends/scalars.js +8 -1
- package/src/backends/shared.js +64 -17
- package/src/binary-mapping.js +305 -0
- package/src/diagnostic.js +34 -2
- package/src/frontends/c-parser.js +17 -0
- package/src/frontends/c.js +780 -0
- package/src/frontends/cpp-parser.js +18 -0
- package/src/frontends/cpp.js +816 -0
- package/src/frontends/csharp.js +759 -0
- package/src/frontends/go.js +770 -0
- package/src/frontends/index.js +5 -20
- package/src/frontends/python.js +689 -0
- package/src/frontends/scalars.js +20 -0
- package/src/language-registry.js +454 -0
- package/src/mapping.js +2 -1
- package/src/semantic/location.js +10 -0
- package/src/semantic/provenance.js +2 -2
- package/src/semantic/types.js +124 -1
- package/src/subprocess.js +232 -0
- package/src/timeout.js +12 -0
- package/src/toolchains.js +448 -0
- package/tsconfig.json +1 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { SourceWriter } from "./writer.js";
|
|
2
|
+
export type SemanticModule = import("../semantic/types.js").SemanticModule;
|
|
3
|
+
export type SemanticNode = import("../semantic/types.js").SemanticNode;
|
|
4
|
+
export type Statement = import("../semantic/types.js").Statement;
|
|
5
|
+
export type Block = import("../semantic/types.js").Block;
|
|
6
|
+
export type PlannedValue = import("./ordered-expressions.js").PlannedValue;
|
|
7
|
+
export type PlannedStep = import("./ordered-expressions.js").PlannedStep;
|
|
8
|
+
export type StatementPlan = import("./ordered-expressions.js").StatementPlan;
|
|
9
|
+
/**
|
|
10
|
+
* Emits the one fully validated C++20 translation unit with owned by-value strings.
|
|
11
|
+
* @param {SemanticModule} module - Shared validated semantics.
|
|
12
|
+
* @param {SourceWriter} [writer] - Optional caller-owned provenance writer.
|
|
13
|
+
* @returns {string} Deterministic source for public generation or same-language CST validation.
|
|
14
|
+
*/
|
|
15
|
+
export declare function generateCpp(module: SemanticModule, writer?: SourceWriter): string;
|
|
16
|
+
//# sourceMappingURL=cpp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cpp.d.ts","sourceRoot":"","sources":["../../../src/backends/cpp.js"],"names":[],"mappings":"AAOA,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAA;AAEpC,YAAyD,cAAc,GAA7D,OAAO,sBAAsB,EAAE,cAAc,CAAgB;AACvE,YAAuD,YAAY,GAAzD,OAAO,sBAAsB,EAAE,YAAY,CAAc;AACnE,YAAoD,SAAS,GAAnD,OAAO,sBAAsB,EAAE,SAAS,CAAW;AAC7D,YAAgD,KAAK,GAA3C,OAAO,sBAAsB,EAAE,KAAK,CAAO;AACrD,YAA2D,YAAY,GAA7D,OAAO,0BAA0B,EAAE,YAAY,CAAc;AACvE,YAA0D,WAAW,GAA3D,OAAO,0BAA0B,EAAE,WAAW,CAAa;AACrE,YAA4D,aAAa,GAA/D,OAAO,0BAA0B,EAAE,aAAa,CAAe;AAW7E;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAJvB,cAIuB,EAAE,MAAM,AAHvC,CACA,EADQ,YAG+B,GAF7B,MAAM,CAWlB"}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
import { unsupportedCapability } from "../diagnostic.js";
|
|
3
|
+
import { statementSignature, planNativeModule } from "./ordered-expressions.js";
|
|
4
|
+
import { cppRuntime } from "./cpp-runtime.js";
|
|
5
|
+
import { maximumCppSourceLength, validateCppValues } from "./cpp-validation.js";
|
|
6
|
+
import { emitScalarType } from "./scalars.js";
|
|
7
|
+
import { SourceWriter } from "./writer.js";
|
|
8
|
+
/** @typedef {import("../semantic/types.js").SemanticModule} SemanticModule */
|
|
9
|
+
/** @typedef {import("../semantic/types.js").SemanticNode} SemanticNode */
|
|
10
|
+
/** @typedef {import("../semantic/types.js").Statement} Statement */
|
|
11
|
+
/** @typedef {import("../semantic/types.js").Block} Block */
|
|
12
|
+
/** @typedef {import("./ordered-expressions.js").PlannedValue} PlannedValue */
|
|
13
|
+
/** @typedef {import("./ordered-expressions.js").PlannedStep} PlannedStep */
|
|
14
|
+
/** @typedef {import("./ordered-expressions.js").StatementPlan} StatementPlan */
|
|
15
|
+
const binaryTokens = new Map([
|
|
16
|
+
["IntegerAdd", "semantifold_integer_add"], ["IntegerSubtract", "semantifold_integer_subtract"],
|
|
17
|
+
["IntegerMultiply", "semantifold_integer_multiply"], ["StringConcat", "semantifold_string_concat"],
|
|
18
|
+
["StringEqual", "semantifold_string_equal"], ["StringNotEqual", "semantifold_string_not_equal"],
|
|
19
|
+
["IntegerEqual", "=="], ["IntegerNotEqual", "!="], ["BooleanEqual", "=="], ["BooleanNotEqual", "!="],
|
|
20
|
+
["IntegerLessThan", "<"], ["IntegerLessThanOrEqual", "<="],
|
|
21
|
+
["IntegerGreaterThan", ">"], ["IntegerGreaterThanOrEqual", ">="]
|
|
22
|
+
]);
|
|
23
|
+
/**
|
|
24
|
+
* Emits the one fully validated C++20 translation unit with owned by-value strings.
|
|
25
|
+
* @param {SemanticModule} module - Shared validated semantics.
|
|
26
|
+
* @param {SourceWriter} [writer] - Optional caller-owned provenance writer.
|
|
27
|
+
* @returns {string} Deterministic source for public generation or same-language CST validation.
|
|
28
|
+
*/
|
|
29
|
+
export function generateCpp(module, writer) {
|
|
30
|
+
validateCppValues(module);
|
|
31
|
+
const plans = planNativeModule(module, "cpp");
|
|
32
|
+
new CppEmitter(undefined, plans, module.location).program(module);
|
|
33
|
+
const output = writer ?? new SourceWriter({ filename: "program.cpp", language: "cpp", module });
|
|
34
|
+
new CppEmitter(output, plans, module.location).program(module);
|
|
35
|
+
return output.finish().generated.content;
|
|
36
|
+
}
|
|
37
|
+
/** Writes only target syntax from validated semantic occurrences and private plans. */
|
|
38
|
+
class CppEmitter {
|
|
39
|
+
/**
|
|
40
|
+
* Binds the writer and complete plan.
|
|
41
|
+
* @param {SourceWriter | undefined} writer - Provenance writer; omitted for exact size preflight.
|
|
42
|
+
* @param {Map<string, StatementPlan>} plans - Validated occurrence plans.
|
|
43
|
+
* @param {import("../semantic/types.js").SourceLocation} location - Root diagnostic location.
|
|
44
|
+
*/
|
|
45
|
+
constructor(writer, plans, location) {
|
|
46
|
+
this.writer = writer;
|
|
47
|
+
this.plans = plans;
|
|
48
|
+
this.location = location;
|
|
49
|
+
this.length = 0;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Writes generated scaffold with a related semantic origin.
|
|
53
|
+
* @param {string} text - C++ syntax.
|
|
54
|
+
* @param {SemanticNode} node - Related node.
|
|
55
|
+
* @param {string} path - Occurrence path.
|
|
56
|
+
* @returns {void}
|
|
57
|
+
*/
|
|
58
|
+
synthetic(text, node, path) {
|
|
59
|
+
this.checkSize(text, node);
|
|
60
|
+
this.writer?.synthetic(text, "C++20 ordered-expression and lifetime scaffold", [node], [path]);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Writes an original semantic token or anchor.
|
|
64
|
+
* @param {string} text - Target token.
|
|
65
|
+
* @param {SemanticNode} node - Original node.
|
|
66
|
+
* @param {string} path - Occurrence path.
|
|
67
|
+
* @param {string} [role] - Parser token role.
|
|
68
|
+
* @returns {void}
|
|
69
|
+
*/
|
|
70
|
+
mapped(text, node, path, role) {
|
|
71
|
+
this.checkSize(text, node);
|
|
72
|
+
this.writer?.mapped(text, { mappingKind: role ? "exact" : "anchor", node, path, ...(role ? { role } : {}) });
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Bounds private emission before any artifact can escape the parser's proven input profile.
|
|
76
|
+
* @param {string} text - Next exact output chunk.
|
|
77
|
+
* @param {SemanticNode} node - Related semantic occurrence.
|
|
78
|
+
* @returns {void}
|
|
79
|
+
*/
|
|
80
|
+
checkSize(text, node) {
|
|
81
|
+
this.length += text.length;
|
|
82
|
+
if (this.length > maximumCppSourceLength)
|
|
83
|
+
unsupportedCapability("cpp", "generated program exceeds the frozen CPP parser's 32767 UTF-16 input limit", "location" in node ? node.location : this.location);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Emits canonical prototypes, definitions, and the parameterless main.
|
|
87
|
+
* @param {SemanticModule} module - Semantic module.
|
|
88
|
+
* @returns {void}
|
|
89
|
+
*/
|
|
90
|
+
program(module) {
|
|
91
|
+
this.synthetic("/* semantifold:program:cpp:v1 */\n" + cppRuntime + "\n", module, "");
|
|
92
|
+
module.functions.forEach((declaration, index) => {
|
|
93
|
+
const parameters = declaration.parameters.map((parameter) => `${emitScalarType("cpp", parameter.type)} ${parameter.name}`).join(", ");
|
|
94
|
+
this.synthetic(`${emitScalarType("cpp", declaration.returnType)} ${declaration.name}(${parameters});\n`, declaration, `/functions/${index}`);
|
|
95
|
+
});
|
|
96
|
+
module.functions.forEach((declaration, index) => {
|
|
97
|
+
const path = `/functions/${index}`;
|
|
98
|
+
this.synthetic("\n", declaration, path);
|
|
99
|
+
this.mapped(emitScalarType("cpp", declaration.returnType), declaration.returnType, `${path}/returnType`, "type");
|
|
100
|
+
this.synthetic(" ", declaration, path);
|
|
101
|
+
this.mapped(declaration.name, declaration, path, "name");
|
|
102
|
+
this.synthetic("(", declaration, path);
|
|
103
|
+
declaration.parameters.forEach((parameter, parameterIndex) => {
|
|
104
|
+
const parameterPath = `${path}/parameters/${parameterIndex}`;
|
|
105
|
+
if (parameterIndex)
|
|
106
|
+
this.synthetic(", ", parameter, parameterPath);
|
|
107
|
+
this.mapped(emitScalarType("cpp", parameter.type), parameter.type, `${parameterPath}/type`, "type");
|
|
108
|
+
this.synthetic(" ", parameter, parameterPath);
|
|
109
|
+
this.mapped(parameter.name, parameter, parameterPath, "name");
|
|
110
|
+
});
|
|
111
|
+
this.synthetic(") {\n", declaration, path);
|
|
112
|
+
declaration.parameters.forEach((parameter, parameterIndex) => this.synthetic(` (void)${parameter.name};\n`, parameter, `${path}/parameters/${parameterIndex}`));
|
|
113
|
+
this.block(declaration.body, `${path}/body`, " ");
|
|
114
|
+
this.synthetic("}\n", declaration, path);
|
|
115
|
+
});
|
|
116
|
+
this.synthetic("\nint main() {\n", module.entryPoint, "/entryPoint");
|
|
117
|
+
this.block(module.entryPoint.body, "/entryPoint/body", " ");
|
|
118
|
+
this.synthetic(" return 0;\n}\n", module.entryPoint, "/entryPoint");
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Emits statements in semantic source order.
|
|
122
|
+
* @param {Block} block - Semantic block.
|
|
123
|
+
* @param {string} path - Occurrence path.
|
|
124
|
+
* @param {string} indent - Current indentation.
|
|
125
|
+
* @returns {void}
|
|
126
|
+
*/
|
|
127
|
+
block(block, path, indent) {
|
|
128
|
+
block.statements.forEach((statement, index) => this.statement(statement, `${path}/statements/${index}`, indent));
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Emits one paired region with a pure final consumer.
|
|
132
|
+
* @param {Statement} statement - Original statement.
|
|
133
|
+
* @param {string} path - Occurrence path.
|
|
134
|
+
* @param {string} indent - Current indentation.
|
|
135
|
+
* @returns {void}
|
|
136
|
+
*/
|
|
137
|
+
statement(statement, path, indent) {
|
|
138
|
+
const plan = this.plans.get(path);
|
|
139
|
+
if (!plan)
|
|
140
|
+
throw new Error("Missing validated C++ statement plan.");
|
|
141
|
+
const marker = `semantifold:ordered-expression:cpp:v1`;
|
|
142
|
+
const signature = statementSignature(statement);
|
|
143
|
+
this.synthetic(`${indent}/* ${marker} begin ${plan.id} ${signature} */\n`, statement, path);
|
|
144
|
+
this.steps(plan.steps, indent);
|
|
145
|
+
this.synthetic(indent, statement, path);
|
|
146
|
+
if (statement.kind == "LocalDeclaration") {
|
|
147
|
+
if (!statement.mutable)
|
|
148
|
+
this.synthetic("const ", statement, path);
|
|
149
|
+
this.mapped(emitScalarType("cpp", statement.type), statement.type, `${path}/type`, "type");
|
|
150
|
+
this.synthetic(" ", statement, path);
|
|
151
|
+
this.mapped(statement.name, statement, path, "name");
|
|
152
|
+
this.synthetic(" ", statement, path);
|
|
153
|
+
this.mapped("=", statement, path, "operator");
|
|
154
|
+
this.synthetic(" ", statement, path);
|
|
155
|
+
}
|
|
156
|
+
else if (statement.kind == "AssignmentStatement") {
|
|
157
|
+
this.mapped(statement.target.name, statement.target, `${path}/target`, "name");
|
|
158
|
+
this.synthetic(" ", statement, path);
|
|
159
|
+
this.mapped("=", statement, path, "operator");
|
|
160
|
+
this.synthetic(" ", statement, path);
|
|
161
|
+
}
|
|
162
|
+
else if (statement.kind == "ReturnStatement")
|
|
163
|
+
this.mapped("return ", statement, path);
|
|
164
|
+
else if (statement.kind == "PrintStatement")
|
|
165
|
+
this.mapped(`semantifold_print_${plan.value.type}(`, statement, path);
|
|
166
|
+
else
|
|
167
|
+
this.mapped("if (", statement, path);
|
|
168
|
+
this.value(plan.value);
|
|
169
|
+
if (statement.kind == "IfStatement") {
|
|
170
|
+
this.synthetic(") {\n", statement, path);
|
|
171
|
+
this.block(statement.consequent, `${path}/consequent`, `${indent} `);
|
|
172
|
+
this.synthetic(`${indent}}`, statement, path);
|
|
173
|
+
if (statement.alternate) {
|
|
174
|
+
this.mapped(" else ", statement, path);
|
|
175
|
+
this.synthetic("{\n", statement, path);
|
|
176
|
+
this.block(statement.alternate, `${path}/alternate`, `${indent} `);
|
|
177
|
+
this.synthetic(`${indent}}`, statement, path);
|
|
178
|
+
}
|
|
179
|
+
this.synthetic("\n", statement, path);
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
this.synthetic(`${statement.kind == "PrintStatement" ? ")" : ""};\n`, statement, path);
|
|
183
|
+
if (statement.kind == "LocalDeclaration")
|
|
184
|
+
this.synthetic(`${indent}(void)${statement.name};\n`, statement, path);
|
|
185
|
+
}
|
|
186
|
+
this.synthetic(`${indent}/* ${marker} end ${plan.id} ${signature} */\n`, statement, path);
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Emits each eager step or conditional RHS at its planned location.
|
|
190
|
+
* @param {PlannedStep[]} steps - Ordered private steps.
|
|
191
|
+
* @param {string} indent - Current indentation.
|
|
192
|
+
* @returns {void}
|
|
193
|
+
*/
|
|
194
|
+
steps(steps, indent) {
|
|
195
|
+
for (const step of steps) {
|
|
196
|
+
const { result, operands, rightSteps } = step;
|
|
197
|
+
const { expression, path, name } = result;
|
|
198
|
+
const type = emitScalarType("cpp", { kind: "TypeReference", name: result.type });
|
|
199
|
+
this.synthetic(`${indent}${type} ${name} = `, expression, path);
|
|
200
|
+
if (rightSteps) {
|
|
201
|
+
this.value(operands[0]);
|
|
202
|
+
this.synthetic(`;\n${indent}if (`, expression, path);
|
|
203
|
+
if (expression.kind != "BinaryExpression")
|
|
204
|
+
throw new Error("Invalid conditional C++ plan.");
|
|
205
|
+
this.synthetic(`${expression.operation == "BooleanOr" ? "!" : ""}${name}) {\n`, expression, path);
|
|
206
|
+
this.steps(rightSteps, `${indent} `);
|
|
207
|
+
this.synthetic(`${indent} ${name} = (${name} `, expression, path);
|
|
208
|
+
this.mapped(expression.operation == "BooleanOr" ? "||" : "&&", expression, path, "operator");
|
|
209
|
+
this.synthetic(" ", expression, path);
|
|
210
|
+
this.value(operands[1]);
|
|
211
|
+
this.synthetic(`);\n${indent}}\n`, expression, path);
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
this.operation(step);
|
|
215
|
+
this.synthetic(";\n", expression, path);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Emits one nontrivial operation with pure operands.
|
|
221
|
+
* @param {PlannedStep} step - Eager step.
|
|
222
|
+
* @returns {void}
|
|
223
|
+
*/
|
|
224
|
+
operation({ result: { expression, path }, operands }) {
|
|
225
|
+
if (expression.kind == "CallExpression") {
|
|
226
|
+
this.mapped(expression.callee, expression, path, "callee");
|
|
227
|
+
this.synthetic("(", expression, path);
|
|
228
|
+
operands.forEach((operand, index) => {
|
|
229
|
+
if (index)
|
|
230
|
+
this.synthetic(", ", expression, path);
|
|
231
|
+
this.value(operand);
|
|
232
|
+
});
|
|
233
|
+
this.synthetic(")", expression, path);
|
|
234
|
+
}
|
|
235
|
+
else if (expression.kind == "UnaryExpression") {
|
|
236
|
+
this.mapped(expression.operation == "IntegerNegate" ? "semantifold_integer_negate" : "!", expression, path, "operator");
|
|
237
|
+
this.synthetic("(", expression, path);
|
|
238
|
+
this.value(operands[0]);
|
|
239
|
+
this.synthetic(")", expression, path);
|
|
240
|
+
}
|
|
241
|
+
else if (expression.kind == "BinaryExpression") {
|
|
242
|
+
const token = binaryTokens.get(expression.operation);
|
|
243
|
+
if (!token)
|
|
244
|
+
throw new Error("Unsupported operation passed C++ planning.");
|
|
245
|
+
const helper = token.startsWith("semantifold_");
|
|
246
|
+
if (helper)
|
|
247
|
+
this.mapped(token, expression, path, "operator");
|
|
248
|
+
this.synthetic("(", expression, path);
|
|
249
|
+
this.value(operands[0]);
|
|
250
|
+
if (helper)
|
|
251
|
+
this.synthetic(", ", expression, path);
|
|
252
|
+
else {
|
|
253
|
+
this.synthetic(" ", expression, path);
|
|
254
|
+
this.mapped(token, expression, path, "operator");
|
|
255
|
+
this.synthetic(" ", expression, path);
|
|
256
|
+
}
|
|
257
|
+
this.value(operands[1]);
|
|
258
|
+
this.synthetic(")", expression, path);
|
|
259
|
+
}
|
|
260
|
+
else
|
|
261
|
+
throw new Error("Pure expression was scheduled as a CPP operation.");
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Emits a pure operand with original token provenance or a synthetic temporary use.
|
|
265
|
+
* @param {PlannedValue} value - Planned pure operand.
|
|
266
|
+
* @returns {void}
|
|
267
|
+
*/
|
|
268
|
+
value({ expression, path, name }) {
|
|
269
|
+
if (name)
|
|
270
|
+
return this.synthetic(name, expression, path);
|
|
271
|
+
if (expression.kind == "IdentifierExpression")
|
|
272
|
+
return this.mapped(expression.name, expression, path, "name");
|
|
273
|
+
if (expression.kind == "BooleanLiteral")
|
|
274
|
+
return this.mapped(String(expression.value), expression, path, "literal");
|
|
275
|
+
if (expression.kind == "IntegerLiteral")
|
|
276
|
+
return this.mapped(`std::int64_t(${expression.value})`, expression, path, "literal");
|
|
277
|
+
if (expression.kind == "StringLiteral") {
|
|
278
|
+
const bytes = new TextEncoder().encode(expression.value);
|
|
279
|
+
const literal = Array.from(bytes, (byte) => `\\${byte.toString(8).padStart(3, "0")}`).join("");
|
|
280
|
+
return this.mapped(`std::string("${literal}", ${bytes.length})`, expression, path, "literal");
|
|
281
|
+
}
|
|
282
|
+
throw new Error("Unsequenced expression passed C++ planning.");
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhY2tlbmRzL2NwcC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sa0JBQWtCLENBQUE7QUFDdEQsT0FBTyxFQUFDLGtCQUFrQixFQUFFLGdCQUFnQixFQUFDLE1BQU0sMEJBQTBCLENBQUE7QUFDN0UsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGtCQUFrQixDQUFBO0FBQzNDLE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLHFCQUFxQixDQUFBO0FBQzdFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDM0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGFBQWEsQ0FBQTtBQUV4Qyw4RUFBOEU7QUFDOUUsMEVBQTBFO0FBQzFFLG9FQUFvRTtBQUNwRSw0REFBNEQ7QUFDNUQsOEVBQThFO0FBQzlFLDRFQUE0RTtBQUM1RSxnRkFBZ0Y7QUFFaEYsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDM0IsQ0FBQyxZQUFZLEVBQUUseUJBQXlCLENBQUMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLDhCQUE4QixDQUFDO0lBQzlGLENBQUMsaUJBQWlCLEVBQUUsOEJBQThCLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSwyQkFBMkIsQ0FBQztJQUNsRyxDQUFDLGFBQWEsRUFBRSwwQkFBMEIsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsOEJBQThCLENBQUM7SUFDL0YsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQztJQUNwRyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMs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QUFTLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzlDLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUVySSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksSUFBSSxVQUFVLE1BQU0sRUFBRSxXQUFXLEVBQUUsY0FBYyxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBQzlJLENBQUMsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDOUMsTUFBTSxJQUFJLEdBQUcsY0FBYyxLQUFLLEVBQUUsQ0FBQTtZQUVsQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFBRSxXQUFXLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUE7WUFDaEgsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQ3hELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUN0QyxXQUFXLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxjQUFjLEVBQUUsRUFBRTtnQkFDM0QsTUFBTSxhQUFhLEdBQUcsR0FBRyxJQUFJLGVBQWUsY0FBYyxFQUFFLENBQUE7Z0JBRTVELElBQUksY0FBYztvQkFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUE7Z0JBQ2xFLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksRUFBRSxHQUFHLGFBQWEsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFBO2dCQUNuRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUE7Z0JBQzdDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQy9ELENBQUMsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQzFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLGNBQWMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLFNBQVMsQ0FBQyxJQUFJLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLGVBQWUsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBQ2xLLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQ3BELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUMxQyxDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQTtRQUNwRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQzlELElBQUksQ0FBQyxTQUFTLENBQUMsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQTtJQUN4RSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTTtRQUN2QixLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSSxlQUFlLEtBQUssRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUE7SUFDbEgsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFNBQVMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU07UUFDL0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFakMsSUFBSSxDQUFDLElBQUk7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUE7UUFDbkUsTUFBTSxNQUFNLEdBQUcsdUNBQXVDLENBQUE7UUFDdEQsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUE7UUFFL0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLE1BQU0sTUFBTSxNQUFNLFVBQVUsSUFBSSxDQUFDLEVBQUUsSUFBSSxTQUFTLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDM0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQzlCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN2QyxJQUFJLFNBQVMsQ0FBQyxJQUFJLElBQUksa0JBQWtCLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU87Z0JBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ2pFLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQzFGLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQTtZQUNwRCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQTtZQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDdEMsQ0FBQzthQUFNLElBQUksU0FBUyxDQUFDLElBQUksSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQzlFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFBO1lBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN0QyxDQUFDO2FBQU0sSUFBSSxTQUFTLENBQUMsSUFBSSxJQUFJLGlCQUFpQjtZQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQTthQUNsRixJQUFJLFNBQVMsQ0FBQyxJQUFJLElBQUksZ0JBQWdCO1lBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUE7O1lBQzdHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN6QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN0QixJQUFJLFNBQVMsQ0FBQyxJQUFJLElBQUksYUFBYSxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksYUFBYSxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsQ0FBQTtZQUN2RSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQzdDLElBQUksU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUE7Z0JBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkFDdEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSSxZQUFZLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxDQUFBO2dCQUNyRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQy9DLENBQUM7WUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDdkMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsU0FBUyxDQUFDLElBQUksSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDdEYsSUFBSSxTQUFTLENBQUMsSUFBSSxJQUFJLGtCQUFrQjtnQkFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxTQUFTLFNBQVMsQ0FBQyxJQUFJLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDbEgsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxNQUFNLE1BQU0sTUFBTSxRQUFRLElBQUksQ0FBQyxFQUFFLElBQUksU0FBUyxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzNGLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTTtRQUNqQixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLE1BQU0sRUFBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBQyxHQUFHLElBQUksQ0FBQTtZQUMzQyxNQUFNLEVBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsR0FBRyxNQUFNLENBQUE7WUFDdkMsTUFBTSxJQUFJLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxFQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFBO1lBRTlFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxNQUFNLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUMvRCxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNmLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxNQUFNLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUE7Z0JBQ3BELElBQUksVUFBVSxDQUFDLElBQUksSUFBSSxrQkFBa0I7b0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFBO2dCQUMzRixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsVUFBVSxDQUFDLFNBQVMsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkFDakcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxDQUFBO2dCQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxPQUFPLElBQUksT0FBTyxJQUFJLEdBQUcsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUE7Z0JBQ3BFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUE7Z0JBQzVGLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLE1BQU0sS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUN0RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ3pDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxVQUFVLEVBQUUsSUFBSSxFQUFDLEVBQUUsUUFBUSxFQUFDO1FBQzlDLElBQUksVUFBVSxDQUFDLElBQUksSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1lBQzFELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUNyQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUNsQyxJQUFJLEtBQUs7b0JBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFBO2dCQUNqRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQ3JCLENBQUMsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3ZDLENBQUM7YUFBTSxJQUFJLFVBQVUsQ0FBQyxJQUFJLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUNoRCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxTQUFTLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUE7WUFDdkgsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3ZDLENBQUM7YUFBTSxJQUFJLFVBQVUsQ0FBQyxJQUFJLElBQUksa0JBQWtCLEVBQUUsQ0FBQztZQUNqRCxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQTtZQUVwRCxJQUFJLENBQUMsS0FBSztnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUE7WUFDekUsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQTtZQUUvQyxJQUFJLE1BQU07Z0JBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQTtZQUM1RCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUN2QixJQUFJLE1BQU07Z0JBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFBO2lCQUM3QyxDQUFDO2dCQUNKLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQTtnQkFDaEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ3ZDLENBQUM7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN2QyxDQUFDOztZQUFNLE1BQU0sSUFBSSxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQTtJQUM3RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFDO1FBQzVCLElBQUksSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3ZELElBQUksVUFBVSxDQUFDLElBQUksSUFBSSxzQkFBc0I7WUFBRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQzVHLElBQUksVUFBVSxDQUFDLElBQUksSUFBSSxnQkFBZ0I7WUFBRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBQ2xILElBQUksVUFBVSxDQUFDLElBQUksSUFBSSxnQkFBZ0I7WUFBRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLFVBQVUsQ0FBQyxLQUFLLEdBQUcsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBQzdILElBQUksVUFBVSxDQUFDLElBQUksSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUN2QyxNQUFNLEtBQUssR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDeEQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7WUFFOUYsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixPQUFPLE1BQU0sS0FBSyxDQUFDLE1BQU0sR0FBRyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUE7UUFDL0YsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQTtJQUNoRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHt1bnN1cHBvcnRlZENhcGFiaWxpdHl9IGZyb20gXCIuLi9kaWFnbm9zdGljLmpzXCJcbmltcG9ydCB7c3RhdGVtZW50U2lnbmF0dXJlLCBwbGFuTmF0aXZlTW9kdWxlfSBmcm9tIFwiLi9vcmRlcmVkLWV4cHJlc3Npb25zLmpzXCJcbmltcG9ydCB7Y3BwUnVudGltZX0gZnJvbSBcIi4vY3BwLXJ1bnRpbWUuanNcIlxuaW1wb3J0IHttYXhpbXVtQ3BwU291cmNlTGVuZ3RoLCB2YWxpZGF0ZUNwcFZhbHVlc30gZnJvbSBcIi4vY3BwLXZhbGlkYXRpb24uanNcIlxuaW1wb3J0IHtlbWl0U2NhbGFyVHlwZX0gZnJvbSBcIi4vc2NhbGFycy5qc1wiXG5pbXBvcnQge1NvdXJjZVdyaXRlcn0gZnJvbSBcIi4vd3JpdGVyLmpzXCJcblxuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5TZW1hbnRpY01vZHVsZX0gU2VtYW50aWNNb2R1bGUgKi9cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNOb2RlfSBTZW1hbnRpY05vZGUgKi9cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuU3RhdGVtZW50fSBTdGF0ZW1lbnQgKi9cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuQmxvY2t9IEJsb2NrICovXG4vKiogQHR5cGVkZWYge2ltcG9ydChcIi4vb3JkZXJlZC1leHByZXNzaW9ucy5qc1wiKS5QbGFubmVkVmFsdWV9IFBsYW5uZWRWYWx1ZSAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuL29yZGVyZWQtZXhwcmVzc2lvbnMuanNcIikuUGxhbm5lZFN0ZXB9IFBsYW5uZWRTdGVwICovXG4vKiogQHR5cGVkZWYge2ltcG9ydChcIi4vb3JkZXJlZC1leHByZXNzaW9ucy5qc1wiKS5TdGF0ZW1lbnRQbGFufSBTdGF0ZW1lbnRQbGFuICovXG5cbmNvbnN0IGJpbmFyeVRva2VucyA9IG5ldyBNYXAoW1xuICBbXCJJbnRlZ2VyQWRkXCIsIFwic2VtYW50aWZvbGRfaW50ZWdlcl9hZGRcIl0sIFtcIkludGVnZXJTdWJ0cmFjdFwiLCBcInNlbWFudGlmb2xkX2ludGVnZXJfc3VidHJhY3RcIl0sXG4gIFtcIkludGVnZXJNdWx0aXBseVwiLCBcInNlbWFudGlmb2xkX2ludGVnZXJfbXVsdGlwbHlcIl0sIFtcIlN0cmluZ0NvbmNhdFwiLCBcInNlbWFudGlmb2xkX3N0cmluZ19jb25jYXRcIl0sXG4gIFtcIlN0cmluZ0VxdWFsXCIsIFwic2VtYW50aWZvbGRfc3RyaW5nX2VxdWFsXCJdLCBbXCJTdHJpbmdOb3RFcXVhbFwiLCBcInNlbWFudGlmb2xkX3N0cmluZ19ub3RfZXF1YWxcIl0sXG4gIFtcIkludGVnZXJFcXVhbFwiLCBcIj09XCJdLCBbXCJJbnRlZ2VyTm90RXF1YWxcIiwgXCIhPVwiXSwgW1wiQm9vbGVhbkVxdWFsXCIsIFwiPT1cIl0sIFtcIkJvb2xlYW5Ob3RFcXVhbFwiLCBcIiE9XCJdLFxuICBbXCJJbnRlZ2VyTGVzc1RoYW5cIiwgXCI8XCJdLCBbXCJJbnRlZ2VyTGVzc1RoYW5PckVxdWFsXCIsIFwiPD1cIl0sXG4gIFtcIkludGVnZXJHcmVhdGVyVGhhblwiLCBcIj5cIl0sIFtcIkludGVnZXJHcmVhdGVyVGhhbk9yRXF1YWxcIiwgXCI+PVwiXVxuXSlcblxuLyoqXG4gKiBFbWl0cyB0aGUgb25lIGZ1bGx5IHZhbGlkYXRlZCBDKysyMCB0cmFuc2xhdGlvbiB1bml0IHdpdGggb3duZWQgYnktdmFsdWUgc3RyaW5ncy5cbiAqIEBwYXJhbSB7U2VtYW50aWNNb2R1bGV9IG1vZHVsZSAtIFNoYXJlZCB2YWxpZGF0ZWQgc2VtYW50aWNzLlxuICogQHBhcmFtIHtTb3VyY2VXcml0ZXJ9IFt3cml0ZXJdIC0gT3B0aW9uYWwgY2FsbGVyLW93bmVkIHByb3ZlbmFuY2Ugd3JpdGVyLlxuICogQHJldHVybnMge3N0cmluZ30gRGV0ZXJtaW5pc3RpYyBzb3VyY2UgZm9yIHB1YmxpYyBnZW5lcmF0aW9uIG9yIHNhbWUtbGFuZ3VhZ2UgQ1NUIHZhbGlkYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUNwcChtb2R1bGUsIHdyaXRlcikge1xuICB2YWxpZGF0ZUNwcFZhbHVlcyhtb2R1bGUpXG4gIGNvbnN0IHBsYW5zID0gcGxhbk5hdGl2ZU1vZHVsZShtb2R1bGUsIFwiY3BwXCIpXG5cbiAgbmV3IENwcEVtaXR0ZXIodW5kZWZpbmVkLCBwbGFucywgbW9kdWxlLmxvY2F0aW9uKS5wcm9ncmFtKG1vZHVsZSlcbiAgY29uc3Qgb3V0cHV0ID0gd3JpdGVyID8/IG5ldyBTb3VyY2VXcml0ZXIoe2ZpbGVuYW1lOiBcInByb2dyYW0uY3BwXCIsIGxhbmd1YWdlOiBcImNwcFwiLCBtb2R1bGV9KVxuXG4gIG5ldyBDcHBFbWl0dGVyKG91dHB1dCwgcGxhbnMsIG1vZHVsZS5sb2NhdGlvbikucHJvZ3JhbShtb2R1bGUpXG4gIHJldHVybiBvdXRwdXQuZmluaXNoKCkuZ2VuZXJhdGVkLmNvbnRlbnRcbn1cblxuLyoqIFdyaXRlcyBvbmx5IHRhcmdldCBzeW50YXggZnJvbSB2YWxpZGF0ZWQgc2VtYW50aWMgb2NjdXJyZW5jZXMgYW5kIHByaXZhdGUgcGxhbnMuICovXG5jbGFzcyBDcHBFbWl0dGVyIHtcbiAgLyoqXG4gICAqIEJpbmRzIHRoZSB3cml0ZXIgYW5kIGNvbXBsZXRlIHBsYW4uXG4gICAqIEBwYXJhbSB7U291cmNlV3JpdGVyIHwgdW5kZWZpbmVkfSB3cml0ZXIgLSBQcm92ZW5hbmNlIHdyaXRlcjsgb21pdHRlZCBmb3IgZXhhY3Qgc2l6ZSBwcmVmbGlnaHQuXG4gICAqIEBwYXJhbSB7TWFwPHN0cmluZywgU3RhdGVtZW50UGxhbj59IHBsYW5zIC0gVmFsaWRhdGVkIG9jY3VycmVuY2UgcGxhbnMuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuU291cmNlTG9jYXRpb259IGxvY2F0aW9uIC0gUm9vdCBkaWFnbm9zdGljIGxvY2F0aW9uLlxuICAgKi9cbiAgY29uc3RydWN0b3Iod3JpdGVyLCBwbGFucywgbG9jYXRpb24pIHtcbiAgICB0aGlzLndyaXRlciA9IHdyaXRlclxuICAgIHRoaXMucGxhbnMgPSBwbGFuc1xuICAgIHRoaXMubG9jYXRpb24gPSBsb2NhdGlvblxuICAgIHRoaXMubGVuZ3RoID0gMFxuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlcyBnZW5lcmF0ZWQgc2NhZmZvbGQgd2l0aCBhIHJlbGF0ZWQgc2VtYW50aWMgb3JpZ2luLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIEMrKyBzeW50YXguXG4gICAqIEBwYXJhbSB7U2VtYW50aWNOb2RlfSBub2RlIC0gUmVsYXRlZCBub2RlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIE9jY3VycmVuY2UgcGF0aC5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBzeW50aGV0aWModGV4dCwgbm9kZSwgcGF0aCkge1xuICAgIHRoaXMuY2hlY2tTaXplKHRleHQsIG5vZGUpXG4gICAgdGhpcy53cml0ZXI/LnN5bnRoZXRpYyh0ZXh0LCBcIkMrKzIwIG9yZGVyZWQtZXhwcmVzc2lvbiBhbmQgbGlmZXRpbWUgc2NhZmZvbGRcIiwgW25vZGVdLCBbcGF0aF0pXG4gIH1cblxuICAvKipcbiAgICogV3JpdGVzIGFuIG9yaWdpbmFsIHNlbWFudGljIHRva2VuIG9yIGFuY2hvci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSBUYXJnZXQgdG9rZW4uXG4gICAqIEBwYXJhbSB7U2VtYW50aWNOb2RlfSBub2RlIC0gT3JpZ2luYWwgbm9kZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBPY2N1cnJlbmNlIHBhdGguXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcm9sZV0gLSBQYXJzZXIgdG9rZW4gcm9sZS5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBtYXBwZWQodGV4dCwgbm9kZSwgcGF0aCwgcm9sZSkge1xuICAgIHRoaXMuY2hlY2tTaXplKHRleHQsIG5vZGUpXG4gICAgdGhpcy53cml0ZXI/Lm1hcHBlZCh0ZXh0LCB7bWFwcGluZ0tpbmQ6IHJvbGUgPyBcImV4YWN0XCIgOiBcImFuY2hvclwiLCBub2RlLCBwYXRoLCAuLi4ocm9sZSA/IHtyb2xlfSA6IHt9KX0pXG4gIH1cblxuICAvKipcbiAgICogQm91bmRzIHByaXZhdGUgZW1pc3Npb24gYmVmb3JlIGFueSBhcnRpZmFjdCBjYW4gZXNjYXBlIHRoZSBwYXJzZXIncyBwcm92ZW4gaW5wdXQgcHJvZmlsZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSBOZXh0IGV4YWN0IG91dHB1dCBjaHVuay5cbiAgICogQHBhcmFtIHtTZW1hbnRpY05vZGV9IG5vZGUgLSBSZWxhdGVkIHNlbWFudGljIG9jY3VycmVuY2UuXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgY2hlY2tTaXplKHRleHQsIG5vZGUpIHtcbiAgICB0aGlzLmxlbmd0aCArPSB0ZXh0Lmxlbmd0aFxuICAgIGlmICh0aGlzLmxlbmd0aCA+IG1heGltdW1DcHBTb3VyY2VMZW5ndGgpIHVuc3VwcG9ydGVkQ2FwYWJpbGl0eShcImNwcFwiLCBcImdlbmVyYXRlZCBwcm9ncmFtIGV4Y2VlZHMgdGhlIGZyb3plbiBDUFAgcGFyc2VyJ3MgMzI3NjcgVVRGLTE2IGlucHV0IGxpbWl0XCIsXG4gICAgICBcImxvY2F0aW9uXCIgaW4gbm9kZSA/IG5vZGUubG9jYXRpb24gOiB0aGlzLmxvY2F0aW9uKVxuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGNhbm9uaWNhbCBwcm90b3R5cGVzLCBkZWZpbml0aW9ucywgYW5kIHRoZSBwYXJhbWV0ZXJsZXNzIG1haW4uXG4gICAqIEBwYXJhbSB7U2VtYW50aWNNb2R1bGV9IG1vZHVsZSAtIFNlbWFudGljIG1vZHVsZS5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBwcm9ncmFtKG1vZHVsZSkge1xuICAgIHRoaXMuc3ludGhldGljKFwiLyogc2VtYW50aWZvbGQ6cHJvZ3JhbTpjcHA6djEgKi9cXG5cIiArIGNwcFJ1bnRpbWUgKyBcIlxcblwiLCBtb2R1bGUsIFwiXCIpXG4gICAgbW9kdWxlLmZ1bmN0aW9ucy5mb3JFYWNoKChkZWNsYXJhdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBkZWNsYXJhdGlvbi5wYXJhbWV0ZXJzLm1hcCgocGFyYW1ldGVyKSA9PiBgJHtlbWl0U2NhbGFyVHlwZShcImNwcFwiLCBwYXJhbWV0ZXIudHlwZSl9ICR7cGFyYW1ldGVyLm5hbWV9YCkuam9pbihcIiwgXCIpXG5cbiAgICAgIHRoaXMuc3ludGhldGljKGAke2VtaXRTY2FsYXJUeXBlKFwiY3BwXCIsIGRlY2xhcmF0aW9uLnJldHVyblR5cGUpfSAke2RlY2xhcmF0aW9uLm5hbWV9KCR7cGFyYW1ldGVyc30pO1xcbmAsIGRlY2xhcmF0aW9uLCBgL2Z1bmN0aW9ucy8ke2luZGV4fWApXG4gICAgfSlcbiAgICBtb2R1bGUuZnVuY3Rpb25zLmZvckVhY2goKGRlY2xhcmF0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgcGF0aCA9IGAvZnVuY3Rpb25zLyR7aW5kZXh9YFxuXG4gICAgICB0aGlzLnN5bnRoZXRpYyhcIlxcblwiLCBkZWNsYXJhdGlvbiwgcGF0aClcbiAgICAgIHRoaXMubWFwcGVkKGVtaXRTY2FsYXJUeXBlKFwiY3BwXCIsIGRlY2xhcmF0aW9uLnJldHVyblR5cGUpLCBkZWNsYXJhdGlvbi5yZXR1cm5UeXBlLCBgJHtwYXRofS9yZXR1cm5UeXBlYCwgXCJ0eXBlXCIpXG4gICAgICB0aGlzLnN5bnRoZXRpYyhcIiBcIiwgZGVjbGFyYXRpb24sIHBhdGgpXG4gICAgICB0aGlzLm1hcHBlZChkZWNsYXJhdGlvbi5uYW1lLCBkZWNsYXJhdGlvbiwgcGF0aCwgXCJuYW1lXCIpXG4gICAgICB0aGlzLnN5bnRoZXRpYyhcIihcIiwgZGVjbGFyYXRpb24sIHBhdGgpXG4gICAgICBkZWNsYXJhdGlvbi5wYXJhbWV0ZXJzLmZvckVhY2goKHBhcmFtZXRlciwgcGFyYW1ldGVySW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgcGFyYW1ldGVyUGF0aCA9IGAke3BhdGh9L3BhcmFtZXRlcnMvJHtwYXJhbWV0ZXJJbmRleH1gXG5cbiAgICAgICAgaWYgKHBhcmFtZXRlckluZGV4KSB0aGlzLnN5bnRoZXRpYyhcIiwgXCIsIHBhcmFtZXRlciwgcGFyYW1ldGVyUGF0aClcbiAgICAgICAgdGhpcy5tYXBwZWQoZW1pdFNjYWxhclR5cGUoXCJjcHBcIiwgcGFyYW1ldGVyLnR5cGUpLCBwYXJhbWV0ZXIudHlwZSwgYCR7cGFyYW1ldGVyUGF0aH0vdHlwZWAsIFwidHlwZVwiKVxuICAgICAgICB0aGlzLnN5bnRoZXRpYyhcIiBcIiwgcGFyYW1ldGVyLCBwYXJhbWV0ZXJQYXRoKVxuICAgICAgICB0aGlzLm1hcHBlZChwYXJhbWV0ZXIubmFtZSwgcGFyYW1ldGVyLCBwYXJhbWV0ZXJQYXRoLCBcIm5hbWVcIilcbiAgICAgIH0pXG4gICAgICB0aGlzLnN5bnRoZXRpYyhcIikge1xcblwiLCBkZWNsYXJhdGlvbiwgcGF0aClcbiAgICAgIGRlY2xhcmF0aW9uLnBhcmFtZXRlcnMuZm9yRWFjaCgocGFyYW1ldGVyLCBwYXJhbWV0ZXJJbmRleCkgPT4gdGhpcy5zeW50aGV0aWMoYCAgICAodm9pZCkke3BhcmFtZXRlci5uYW1lfTtcXG5gLCBwYXJhbWV0ZXIsIGAke3BhdGh9L3BhcmFtZXRlcnMvJHtwYXJhbWV0ZXJJbmRleH1gKSlcbiAgICAgIHRoaXMuYmxvY2soZGVjbGFyYXRpb24uYm9keSwgYCR7cGF0aH0vYm9keWAsIFwiICAgIFwiKVxuICAgICAgdGhpcy5zeW50aGV0aWMoXCJ9XFxuXCIsIGRlY2xhcmF0aW9uLCBwYXRoKVxuICAgIH0pXG4gICAgdGhpcy5zeW50aGV0aWMoXCJcXG5pbnQgbWFpbigpIHtcXG5cIiwgbW9kdWxlLmVudHJ5UG9pbnQsIFwiL2VudHJ5UG9pbnRcIilcbiAgICB0aGlzLmJsb2NrKG1vZHVsZS5lbnRyeVBvaW50LmJvZHksIFwiL2VudHJ5UG9pbnQvYm9keVwiLCBcIiAgICBcIilcbiAgICB0aGlzLnN5bnRoZXRpYyhcIiAgICByZXR1cm4gMDtcXG59XFxuXCIsIG1vZHVsZS5lbnRyeVBvaW50LCBcIi9lbnRyeVBvaW50XCIpXG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgc3RhdGVtZW50cyBpbiBzZW1hbnRpYyBzb3VyY2Ugb3JkZXIuXG4gICAqIEBwYXJhbSB7QmxvY2t9IGJsb2NrIC0gU2VtYW50aWMgYmxvY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gT2NjdXJyZW5jZSBwYXRoLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaW5kZW50IC0gQ3VycmVudCBpbmRlbnRhdGlvbi5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBibG9jayhibG9jaywgcGF0aCwgaW5kZW50KSB7XG4gICAgYmxvY2suc3RhdGVtZW50cy5mb3JFYWNoKChzdGF0ZW1lbnQsIGluZGV4KSA9PiB0aGlzLnN0YXRlbWVudChzdGF0ZW1lbnQsIGAke3BhdGh9L3N0YXRlbWVudHMvJHtpbmRleH1gLCBpbmRlbnQpKVxuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIG9uZSBwYWlyZWQgcmVnaW9uIHdpdGggYSBwdXJlIGZpbmFsIGNvbnN1bWVyLlxuICAgKiBAcGFyYW0ge1N0YXRlbWVudH0gc3RhdGVtZW50IC0gT3JpZ2luYWwgc3RhdGVtZW50LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIE9jY3VycmVuY2UgcGF0aC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGluZGVudCAtIEN1cnJlbnQgaW5kZW50YXRpb24uXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgc3RhdGVtZW50KHN0YXRlbWVudCwgcGF0aCwgaW5kZW50KSB7XG4gICAgY29uc3QgcGxhbiA9IHRoaXMucGxhbnMuZ2V0KHBhdGgpXG5cbiAgICBpZiAoIXBsYW4pIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgdmFsaWRhdGVkIEMrKyBzdGF0ZW1lbnQgcGxhbi5cIilcbiAgICBjb25zdCBtYXJrZXIgPSBgc2VtYW50aWZvbGQ6b3JkZXJlZC1leHByZXNzaW9uOmNwcDp2MWBcbiAgICBjb25zdCBzaWduYXR1cmUgPSBzdGF0ZW1lbnRTaWduYXR1cmUoc3RhdGVtZW50KVxuXG4gICAgdGhpcy5zeW50aGV0aWMoYCR7aW5kZW50fS8qICR7bWFya2VyfSBiZWdpbiAke3BsYW4uaWR9ICR7c2lnbmF0dXJlfSAqL1xcbmAsIHN0YXRlbWVudCwgcGF0aClcbiAgICB0aGlzLnN0ZXBzKHBsYW4uc3RlcHMsIGluZGVudClcbiAgICB0aGlzLnN5bnRoZXRpYyhpbmRlbnQsIHN0YXRlbWVudCwgcGF0aClcbiAgICBpZiAoc3RhdGVtZW50LmtpbmQgPT0gXCJMb2NhbERlY2xhcmF0aW9uXCIpIHtcbiAgICAgIGlmICghc3RhdGVtZW50Lm11dGFibGUpIHRoaXMuc3ludGhldGljKFwiY29uc3QgXCIsIHN0YXRlbWVudCwgcGF0aClcbiAgICAgIHRoaXMubWFwcGVkKGVtaXRTY2FsYXJUeXBlKFwiY3BwXCIsIHN0YXRlbWVudC50eXBlKSwgc3RhdGVtZW50LnR5cGUsIGAke3BhdGh9L3R5cGVgLCBcInR5cGVcIilcbiAgICAgIHRoaXMuc3ludGhldGljKFwiIFwiLCBzdGF0ZW1lbnQsIHBhdGgpXG4gICAgICB0aGlzLm1hcHBlZChzdGF0ZW1lbnQubmFtZSwgc3RhdGVtZW50LCBwYXRoLCBcIm5hbWVcIilcbiAgICAgIHRoaXMuc3ludGhldGljKFwiIFwiLCBzdGF0ZW1lbnQsIHBhdGgpXG4gICAgICB0aGlzLm1hcHBlZChcIj1cIiwgc3RhdGVtZW50LCBwYXRoLCBcIm9wZXJhdG9yXCIpXG4gICAgICB0aGlzLnN5bnRoZXRpYyhcIiBcIiwgc3RhdGVtZW50LCBwYXRoKVxuICAgIH0gZWxzZSBpZiAoc3RhdGVtZW50LmtpbmQgPT0gXCJBc3NpZ25tZW50U3RhdGVtZW50XCIpIHtcbiAgICAgIHRoaXMubWFwcGVkKHN0YXRlbWVudC50YXJnZXQubmFtZSwgc3RhdGVtZW50LnRhcmdldCwgYCR7cGF0aH0vdGFyZ2V0YCwgXCJuYW1lXCIpXG4gICAgICB0aGlzLnN5bnRoZXRpYyhcIiBcIiwgc3RhdGVtZW50LCBwYXRoKVxuICAgICAgdGhpcy5tYXBwZWQoXCI9XCIsIHN0YXRlbWVudCwgcGF0aCwgXCJvcGVyYXRvclwiKVxuICAgICAgdGhpcy5zeW50aGV0aWMoXCIgXCIsIHN0YXRlbWVudCwgcGF0aClcbiAgICB9IGVsc2UgaWYgKHN0YXRlbWVudC5raW5kID09IFwiUmV0dXJuU3RhdGVtZW50XCIpIHRoaXMubWFwcGVkKFwicmV0dXJuIFwiLCBzdGF0ZW1lbnQsIHBhdGgpXG4gICAgZWxzZSBpZiAoc3RhdGVtZW50LmtpbmQgPT0gXCJQcmludFN0YXRlbWVudFwiKSB0aGlzLm1hcHBlZChgc2VtYW50aWZvbGRfcHJpbnRfJHtwbGFuLnZhbHVlLnR5cGV9KGAsIHN0YXRlbWVudCwgcGF0aClcbiAgICBlbHNlIHRoaXMubWFwcGVkKFwiaWYgKFwiLCBzdGF0ZW1lbnQsIHBhdGgpXG4gICAgdGhpcy52YWx1ZShwbGFuLnZhbHVlKVxuICAgIGlmIChzdGF0ZW1lbnQua2luZCA9PSBcIklmU3RhdGVtZW50XCIpIHtcbiAgICAgIHRoaXMuc3ludGhldGljKFwiKSB7XFxuXCIsIHN0YXRlbWVudCwgcGF0aClcbiAgICAgIHRoaXMuYmxvY2soc3RhdGVtZW50LmNvbnNlcXVlbnQsIGAke3BhdGh9L2NvbnNlcXVlbnRgLCBgJHtpbmRlbnR9ICAgIGApXG4gICAgICB0aGlzLnN5bnRoZXRpYyhgJHtpbmRlbnR9fWAsIHN0YXRlbWVudCwgcGF0aClcbiAgICAgIGlmIChzdGF0ZW1lbnQuYWx0ZXJuYXRlKSB7XG4gICAgICAgIHRoaXMubWFwcGVkKFwiIGVsc2UgXCIsIHN0YXRlbWVudCwgcGF0aClcbiAgICAgICAgdGhpcy5zeW50aGV0aWMoXCJ7XFxuXCIsIHN0YXRlbWVudCwgcGF0aClcbiAgICAgICAgdGhpcy5ibG9jayhzdGF0ZW1lbnQuYWx0ZXJuYXRlLCBgJHtwYXRofS9hbHRlcm5hdGVgLCBgJHtpbmRlbnR9ICAgIGApXG4gICAgICAgIHRoaXMuc3ludGhldGljKGAke2luZGVudH19YCwgc3RhdGVtZW50LCBwYXRoKVxuICAgICAgfVxuICAgICAgdGhpcy5zeW50aGV0aWMoXCJcXG5cIiwgc3RhdGVtZW50LCBwYXRoKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN5bnRoZXRpYyhgJHtzdGF0ZW1lbnQua2luZCA9PSBcIlByaW50U3RhdGVtZW50XCIgPyBcIilcIiA6IFwiXCJ9O1xcbmAsIHN0YXRlbWVudCwgcGF0aClcbiAgICAgIGlmIChzdGF0ZW1lbnQua2luZCA9PSBcIkxvY2FsRGVjbGFyYXRpb25cIikgdGhpcy5zeW50aGV0aWMoYCR7aW5kZW50fSh2b2lkKSR7c3RhdGVtZW50Lm5hbWV9O1xcbmAsIHN0YXRlbWVudCwgcGF0aClcbiAgICB9XG4gICAgdGhpcy5zeW50aGV0aWMoYCR7aW5kZW50fS8qICR7bWFya2VyfSBlbmQgJHtwbGFuLmlkfSAke3NpZ25hdHVyZX0gKi9cXG5gLCBzdGF0ZW1lbnQsIHBhdGgpXG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgZWFjaCBlYWdlciBzdGVwIG9yIGNvbmRpdGlvbmFsIFJIUyBhdCBpdHMgcGxhbm5lZCBsb2NhdGlvbi5cbiAgICogQHBhcmFtIHtQbGFubmVkU3RlcFtdfSBzdGVwcyAtIE9yZGVyZWQgcHJpdmF0ZSBzdGVwcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGluZGVudCAtIEN1cnJlbnQgaW5kZW50YXRpb24uXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgc3RlcHMoc3RlcHMsIGluZGVudCkge1xuICAgIGZvciAoY29uc3Qgc3RlcCBvZiBzdGVwcykge1xuICAgICAgY29uc3Qge3Jlc3VsdCwgb3BlcmFuZHMsIHJpZ2h0U3RlcHN9ID0gc3RlcFxuICAgICAgY29uc3Qge2V4cHJlc3Npb24sIHBhdGgsIG5hbWV9ID0gcmVzdWx0XG4gICAgICBjb25zdCB0eXBlID0gZW1pdFNjYWxhclR5cGUoXCJjcHBcIiwge2tpbmQ6IFwiVHlwZVJlZmVyZW5jZVwiLCBuYW1lOiByZXN1bHQudHlwZX0pXG5cbiAgICAgIHRoaXMuc3ludGhldGljKGAke2luZGVudH0ke3R5cGV9ICR7bmFtZX0gPSBgLCBleHByZXNzaW9uLCBwYXRoKVxuICAgICAgaWYgKHJpZ2h0U3RlcHMpIHtcbiAgICAgICAgdGhpcy52YWx1ZShvcGVyYW5kc1swXSlcbiAgICAgICAgdGhpcy5zeW50aGV0aWMoYDtcXG4ke2luZGVudH1pZiAoYCwgZXhwcmVzc2lvbiwgcGF0aClcbiAgICAgICAgaWYgKGV4cHJlc3Npb24ua2luZCAhPSBcIkJpbmFyeUV4cHJlc3Npb25cIikgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBjb25kaXRpb25hbCBDKysgcGxhbi5cIilcbiAgICAgICAgdGhpcy5zeW50aGV0aWMoYCR7ZXhwcmVzc2lvbi5vcGVyYXRpb24gPT0gXCJCb29sZWFuT3JcIiA/IFwiIVwiIDogXCJcIn0ke25hbWV9KSB7XFxuYCwgZXhwcmVzc2lvbiwgcGF0aClcbiAgICAgICAgdGhpcy5zdGVwcyhyaWdodFN0ZXBzLCBgJHtpbmRlbnR9ICAgIGApXG4gICAgICAgIHRoaXMuc3ludGhldGljKGAke2luZGVudH0gICAgJHtuYW1lfSA9ICgke25hbWV9IGAsIGV4cHJlc3Npb24sIHBhdGgpXG4gICAgICAgIHRoaXMubWFwcGVkKGV4cHJlc3Npb24ub3BlcmF0aW9uID09IFwiQm9vbGVhbk9yXCIgPyBcInx8XCIgOiBcIiYmXCIsIGV4cHJlc3Npb24sIHBhdGgsIFwib3BlcmF0b3JcIilcbiAgICAgICAgdGhpcy5zeW50aGV0aWMoXCIgXCIsIGV4cHJlc3Npb24sIHBhdGgpXG4gICAgICAgIHRoaXMudmFsdWUob3BlcmFuZHNbMV0pXG4gICAgICAgIHRoaXMuc3ludGhldGljKGApO1xcbiR7aW5kZW50fX1cXG5gLCBleHByZXNzaW9uLCBwYXRoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcGVyYXRpb24oc3RlcClcbiAgICAgICAgdGhpcy5zeW50aGV0aWMoXCI7XFxuXCIsIGV4cHJlc3Npb24sIHBhdGgpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIG9uZSBub250cml2aWFsIG9wZXJhdGlvbiB3aXRoIHB1cmUgb3BlcmFuZHMuXG4gICAqIEBwYXJhbSB7UGxhbm5lZFN0ZXB9IHN0ZXAgLSBFYWdlciBzdGVwLlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIG9wZXJhdGlvbih7cmVzdWx0OiB7ZXhwcmVzc2lvbiwgcGF0aH0sIG9wZXJhbmRzfSkge1xuICAgIGlmIChleHByZXNzaW9uLmtpbmQgPT0gXCJDYWxsRXhwcmVzc2lvblwiKSB7XG4gICAgICB0aGlzLm1hcHBlZChleHByZXNzaW9uLmNhbGxlZSwgZXhwcmVzc2lvbiwgcGF0aCwgXCJjYWxsZWVcIilcbiAgICAgIHRoaXMuc3ludGhldGljKFwiKFwiLCBleHByZXNzaW9uLCBwYXRoKVxuICAgICAgb3BlcmFuZHMuZm9yRWFjaCgob3BlcmFuZCwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKGluZGV4KSB0aGlzLnN5bnRoZXRpYyhcIiwgXCIsIGV4cHJlc3Npb24sIHBhdGgpXG4gICAgICAgIHRoaXMudmFsdWUob3BlcmFuZClcbiAgICAgIH0pXG4gICAgICB0aGlzLnN5bnRoZXRpYyhcIilcIiwgZXhwcmVzc2lvbiwgcGF0aClcbiAgICB9IGVsc2UgaWYgKGV4cHJlc3Npb24ua2luZCA9PSBcIlVuYXJ5RXhwcmVzc2lvblwiKSB7XG4gICAgICB0aGlzLm1hcHBlZChleHByZXNzaW9uLm9wZXJhdGlvbiA9PSBcIkludGVnZXJOZWdhdGVcIiA/IFwic2VtYW50aWZvbGRfaW50ZWdlcl9uZWdhdGVcIiA6IFwiIVwiLCBleHByZXNzaW9uLCBwYXRoLCBcIm9wZXJhdG9yXCIpXG4gICAgICB0aGlzLnN5bnRoZXRpYyhcIihcIiwgZXhwcmVzc2lvbiwgcGF0aClcbiAgICAgIHRoaXMudmFsdWUob3BlcmFuZHNbMF0pXG4gICAgICB0aGlzLnN5bnRoZXRpYyhcIilcIiwgZXhwcmVzc2lvbiwgcGF0aClcbiAgICB9IGVsc2UgaWYgKGV4cHJlc3Npb24ua2luZCA9PSBcIkJpbmFyeUV4cHJlc3Npb25cIikge1xuICAgICAgY29uc3QgdG9rZW4gPSBiaW5hcnlUb2tlbnMuZ2V0KGV4cHJlc3Npb24ub3BlcmF0aW9uKVxuXG4gICAgICBpZiAoIXRva2VuKSB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBvcGVyYXRpb24gcGFzc2VkIEMrKyBwbGFubmluZy5cIilcbiAgICAgIGNvbnN0IGhlbHBlciA9IHRva2VuLnN0YXJ0c1dpdGgoXCJzZW1hbnRpZm9sZF9cIilcblxuICAgICAgaWYgKGhlbHBlcikgdGhpcy5tYXBwZWQodG9rZW4sIGV4cHJlc3Npb24sIHBhdGgsIFwib3BlcmF0b3JcIilcbiAgICAgIHRoaXMuc3ludGhldGljKFwiKFwiLCBleHByZXNzaW9uLCBwYXRoKVxuICAgICAgdGhpcy52YWx1ZShvcGVyYW5kc1swXSlcbiAgICAgIGlmIChoZWxwZXIpIHRoaXMuc3ludGhldGljKFwiLCBcIiwgZXhwcmVzc2lvbiwgcGF0aClcbiAgICAgIGVsc2Uge1xuICAgICAgICB0aGlzLnN5bnRoZXRpYyhcIiBcIiwgZXhwcmVzc2lvbiwgcGF0aClcbiAgICAgICAgdGhpcy5tYXBwZWQodG9rZW4sIGV4cHJlc3Npb24sIHBhdGgsIFwib3BlcmF0b3JcIilcbiAgICAgICAgdGhpcy5zeW50aGV0aWMoXCIgXCIsIGV4cHJlc3Npb24sIHBhdGgpXG4gICAgICB9XG4gICAgICB0aGlzLnZhbHVlKG9wZXJhbmRzWzFdKVxuICAgICAgdGhpcy5zeW50aGV0aWMoXCIpXCIsIGV4cHJlc3Npb24sIHBhdGgpXG4gICAgfSBlbHNlIHRocm93IG5ldyBFcnJvcihcIlB1cmUgZXhwcmVzc2lvbiB3YXMgc2NoZWR1bGVkIGFzIGEgQ1BQIG9wZXJhdGlvbi5cIilcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyBhIHB1cmUgb3BlcmFuZCB3aXRoIG9yaWdpbmFsIHRva2VuIHByb3ZlbmFuY2Ugb3IgYSBzeW50aGV0aWMgdGVtcG9yYXJ5IHVzZS5cbiAgICogQHBhcmFtIHtQbGFubmVkVmFsdWV9IHZhbHVlIC0gUGxhbm5lZCBwdXJlIG9wZXJhbmQuXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgdmFsdWUoe2V4cHJlc3Npb24sIHBhdGgsIG5hbWV9KSB7XG4gICAgaWYgKG5hbWUpIHJldHVybiB0aGlzLnN5bnRoZXRpYyhuYW1lLCBleHByZXNzaW9uLCBwYXRoKVxuICAgIGlmIChleHByZXNzaW9uLmtpbmQgPT0gXCJJZGVudGlmaWVyRXhwcmVzc2lvblwiKSByZXR1cm4gdGhpcy5tYXBwZWQoZXhwcmVzc2lvbi5uYW1lLCBleHByZXNzaW9uLCBwYXRoLCBcIm5hbWVcIilcbiAgICBpZiAoZXhwcmVzc2lvbi5raW5kID09IFwiQm9vbGVhbkxpdGVyYWxcIikgcmV0dXJuIHRoaXMubWFwcGVkKFN0cmluZyhleHByZXNzaW9uLnZhbHVlKSwgZXhwcmVzc2lvbiwgcGF0aCwgXCJsaXRlcmFsXCIpXG4gICAgaWYgKGV4cHJlc3Npb24ua2luZCA9PSBcIkludGVnZXJMaXRlcmFsXCIpIHJldHVybiB0aGlzLm1hcHBlZChgc3RkOjppbnQ2NF90KCR7ZXhwcmVzc2lvbi52YWx1ZX0pYCwgZXhwcmVzc2lvbiwgcGF0aCwgXCJsaXRlcmFsXCIpXG4gICAgaWYgKGV4cHJlc3Npb24ua2luZCA9PSBcIlN0cmluZ0xpdGVyYWxcIikge1xuICAgICAgY29uc3QgYnl0ZXMgPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoZXhwcmVzc2lvbi52YWx1ZSlcbiAgICAgIGNvbnN0IGxpdGVyYWwgPSBBcnJheS5mcm9tKGJ5dGVzLCAoYnl0ZSkgPT4gYFxcXFwke2J5dGUudG9TdHJpbmcoOCkucGFkU3RhcnQoMywgXCIwXCIpfWApLmpvaW4oXCJcIilcblxuICAgICAgcmV0dXJuIHRoaXMubWFwcGVkKGBzdGQ6OnN0cmluZyhcIiR7bGl0ZXJhbH1cIiwgJHtieXRlcy5sZW5ndGh9KWAsIGV4cHJlc3Npb24sIHBhdGgsIFwibGl0ZXJhbFwiKVxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnNlcXVlbmNlZCBleHByZXNzaW9uIHBhc3NlZCBDKysgcGxhbm5pbmcuXCIpXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Emits one deterministic two-file C# project candidate.
|
|
3
|
+
* @param {{filename?: string, mapDirective?: unknown, module: import("../semantic/types.js").SemanticModule, sourceMapFilename?: unknown, sources?: {filename: string, content: string, language?: import("../semantic/types.js").SemanticLanguage}[]}} input - Backend request.
|
|
4
|
+
* @returns {{artifacts: import("../semantic/types.js").GeneratedSetArtifact[], target: string}} Candidate artifact set.
|
|
5
|
+
*/
|
|
6
|
+
export declare function generateCSharpProject({ filename, mapDirective, module, sourceMapFilename, sources }: {
|
|
7
|
+
filename?: string;
|
|
8
|
+
mapDirective?: unknown;
|
|
9
|
+
module: import("../semantic/types.js").SemanticModule;
|
|
10
|
+
sourceMapFilename?: unknown;
|
|
11
|
+
sources?: {
|
|
12
|
+
filename: string;
|
|
13
|
+
content: string;
|
|
14
|
+
language?: import("../semantic/types.js").SemanticLanguage;
|
|
15
|
+
}[];
|
|
16
|
+
}): {
|
|
17
|
+
artifacts: import("../semantic/types.js").GeneratedSetArtifact[];
|
|
18
|
+
target: string;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=csharp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csharp.d.ts","sourceRoot":"","sources":["../../../src/backends/csharp.js"],"names":[],"mappings":"AAsCA;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,EAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAC,EAHvF;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,sBAAsB,EAAE,cAAc,CAAC;IAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,sBAAsB,EAAE,gBAAgB,CAAA;KAAC,EAAE,CAAA;CAGpJ,GAFrF;IAAC,SAAS,EAAE,OAAO,sBAAsB,EAAE,oBAAoB,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAsC9F"}
|