obsidian-dev-utils 80.1.0 → 82.0.0-beta.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/CHANGELOG.md +34 -0
- package/dist/lib/cjs/abort-controller.cjs +12 -9
- package/dist/lib/cjs/abort-controller.d.cts +2 -2
- package/dist/lib/cjs/async-events.cjs +9 -1
- package/dist/lib/cjs/async-events.d.cts +9 -1
- package/dist/lib/cjs/async.cjs +93 -34
- package/dist/lib/cjs/async.d.cts +87 -17
- package/dist/lib/cjs/codemirror/state-field-spec.d.cts +1 -1
- package/dist/lib/cjs/css-class.cjs +6 -1
- package/dist/lib/cjs/css-class.d.cts +20 -0
- package/dist/lib/cjs/debug.cjs +26 -9
- package/dist/lib/cjs/debug.d.cts +24 -6
- package/dist/lib/cjs/disposable.cjs +234 -0
- package/dist/lib/cjs/disposable.d.cts +124 -0
- package/dist/lib/cjs/error.cjs +29 -18
- package/dist/lib/cjs/error.d.cts +23 -7
- package/dist/lib/cjs/function.d.cts +1 -1
- package/dist/lib/cjs/html-element.cjs +9 -6
- package/dist/lib/cjs/html-element.d.cts +5 -3
- package/dist/lib/cjs/index.cjs +4 -1
- package/dist/lib/cjs/index.d.cts +1 -0
- package/dist/lib/cjs/library.cjs +2 -2
- package/dist/lib/cjs/object-utils.cjs +233 -128
- package/dist/lib/cjs/object-utils.d.cts +38 -13
- package/dist/lib/cjs/obsidian/@types/dataview/api/plugin-api.d.cts +1 -1
- package/dist/lib/cjs/obsidian/@types/dataview/data-index/index.d.cts +1 -1
- package/dist/lib/cjs/obsidian/@types/dataview/data-model/markdown.d.cts +2 -2
- package/dist/lib/cjs/obsidian/@types/dataview/data-model/serialized/markdown.d.cts +2 -2
- package/dist/lib/cjs/obsidian/@types/dataview/index.d.cts +1 -1
- package/dist/lib/cjs/obsidian/@types/dataview/query/engine.d.cts +1 -1
- package/dist/lib/cjs/obsidian/@types/dataview/typings/obsidian-ex.d.cts +1 -1
- package/dist/lib/cjs/obsidian/@types/dataview/ui/lp-render.d.cts +1 -1
- package/dist/lib/cjs/obsidian/@types/dataview/ui/markdown.d.cts +1 -1
- package/dist/lib/cjs/obsidian/@types/dataview/ui/views/calendar-view.d.cts +1 -1
- package/dist/lib/cjs/obsidian/@types/dataview/ui/views/inline-view.d.cts +1 -1
- package/dist/lib/cjs/obsidian/@types/dataview/ui/views/list-view.d.cts +2 -2
- package/dist/lib/cjs/obsidian/@types/dataview/ui/views/table-view.d.cts +2 -2
- package/dist/lib/cjs/obsidian/@types/dataview/ui/views/task-view.d.cts +1 -1
- package/dist/lib/cjs/obsidian/active-file-provider.d.cts +1 -1
- package/dist/lib/cjs/obsidian/app.d.cts +1 -1
- package/dist/lib/cjs/obsidian/async-with-notice.cjs +9 -6
- package/dist/lib/cjs/obsidian/async-with-notice.d.cts +16 -3
- package/dist/lib/cjs/obsidian/attachment-path.cjs +45 -13
- package/dist/lib/cjs/obsidian/attachment-path.d.cts +47 -9
- package/dist/lib/cjs/obsidian/backlink.cjs +6 -6
- package/dist/lib/cjs/obsidian/backlink.d.cts +6 -2
- package/dist/lib/cjs/obsidian/bases-view-registrar.d.cts +1 -1
- package/dist/lib/cjs/obsidian/callout.cjs +1 -1
- package/dist/lib/cjs/obsidian/callout.d.cts +8 -0
- package/dist/lib/cjs/obsidian/case-insensitive-file-index.d.cts +1 -1
- package/dist/lib/cjs/obsidian/code-block-markdown-information.d.cts +1 -1
- package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.cjs +53 -16
- package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.d.cts +84 -10
- package/dist/lib/cjs/obsidian/command-handlers/command-handler.d.cts +1 -1
- package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.cjs +25 -5
- package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.d.cts +38 -2
- package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.cjs +33 -19
- package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.d.cts +45 -19
- package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.cjs +33 -19
- package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.d.cts +45 -19
- package/dist/lib/cjs/obsidian/command-handlers/global-command-handler.d.cts +2 -2
- package/dist/lib/cjs/obsidian/command-handlers/open-settings-command-handler.d.cts +1 -1
- package/dist/lib/cjs/obsidian/command-registrar.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/all-windows-event-component.cjs +17 -9
- package/dist/lib/cjs/obsidian/components/all-windows-event-component.d.cts +49 -9
- package/dist/lib/cjs/obsidian/components/async-error-handler-component.cjs +5 -2
- package/dist/lib/cjs/obsidian/components/case-insensitive-file-index-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/disposable-component.cjs +5 -10
- package/dist/lib/cjs/obsidian/components/disposable-component.d.cts +0 -7
- package/dist/lib/cjs/obsidian/components/embed-extensions-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/components/layout-ready-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/components/menu-event-registrar-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/monkey-around-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/plugin-context-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/plugin-notice-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/components/plugin-notice-component.d.cts +3 -2
- package/dist/lib/cjs/obsidian/components/plugin-settings-component.cjs +24 -8
- package/dist/lib/cjs/obsidian/components/plugin-settings-component.d.cts +26 -5
- package/dist/lib/cjs/obsidian/components/plugin-settings-tab-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/registry-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/rename-delete-handler-component.cjs +195 -72
- package/dist/lib/cjs/obsidian/components/rename-delete-handler-component.d.cts +4 -1
- package/dist/lib/cjs/obsidian/constructors/getDomEventsHandlersConstructor.d.cts +2 -2
- package/dist/lib/cjs/obsidian/data-handler.d.cts +1 -1
- package/dist/lib/cjs/obsidian/dataview-link.cjs +7 -2
- package/dist/lib/cjs/obsidian/dataview-link.d.cts +22 -5
- package/dist/lib/cjs/obsidian/dataview.cjs +27 -10
- package/dist/lib/cjs/obsidian/dataview.d.cts +32 -7
- package/dist/lib/cjs/obsidian/editor-extension-registrar.d.cts +1 -1
- package/dist/lib/cjs/obsidian/editor-lock.cjs +245 -0
- package/dist/lib/cjs/obsidian/editor-lock.d.cts +57 -0
- package/dist/lib/cjs/obsidian/editor.cjs +7 -1
- package/dist/lib/cjs/obsidian/editor.d.cts +3 -2
- package/dist/lib/cjs/obsidian/file-change.cjs +103 -27
- package/dist/lib/cjs/obsidian/file-change.d.cts +55 -14
- package/dist/lib/cjs/obsidian/file-manager.cjs +61 -32
- package/dist/lib/cjs/obsidian/file-manager.d.cts +65 -15
- package/dist/lib/cjs/obsidian/file-system.cjs +122 -23
- package/dist/lib/cjs/obsidian/file-system.d.cts +189 -40
- package/dist/lib/cjs/obsidian/frontmatter-link-cache-with-offsets.d.cts +1 -1
- package/dist/lib/cjs/obsidian/frontmatter.cjs +7 -2
- package/dist/lib/cjs/obsidian/hover-link-source-registrar.d.cts +1 -1
- package/dist/lib/cjs/obsidian/i18n/i18n.d.cts +1 -1
- package/dist/lib/cjs/obsidian/i18n/locales/en.cjs +4 -1
- package/dist/lib/cjs/obsidian/i18n/locales/en.d.cts +3 -0
- package/dist/lib/cjs/obsidian/i18n/locales/translations-map.d.cts +3 -0
- package/dist/lib/cjs/obsidian/index.cjs +4 -1
- package/dist/lib/cjs/obsidian/index.d.cts +1 -0
- package/dist/lib/cjs/obsidian/link.cjs +326 -129
- package/dist/lib/cjs/obsidian/link.d.cts +133 -36
- package/dist/lib/cjs/obsidian/logger.cjs +48 -22
- package/dist/lib/cjs/obsidian/logger.d.cts +27 -6
- package/dist/lib/cjs/obsidian/loop.cjs +14 -4
- package/dist/lib/cjs/obsidian/loop.d.cts +27 -8
- package/dist/lib/cjs/obsidian/markdown-code-block-processor-registrar.d.cts +2 -2
- package/dist/lib/cjs/obsidian/markdown-code-block-processor.cjs +155 -107
- package/dist/lib/cjs/obsidian/markdown-code-block-processor.d.cts +16 -6
- package/dist/lib/cjs/obsidian/markdown-post-processor-registrar.cjs +1 -1
- package/dist/lib/cjs/obsidian/markdown-post-processor-registrar.d.cts +5 -3
- package/dist/lib/cjs/obsidian/markdown-view.d.cts +1 -1
- package/dist/lib/cjs/obsidian/markdown.cjs +40 -11
- package/dist/lib/cjs/obsidian/markdown.d.cts +85 -17
- package/dist/lib/cjs/obsidian/menu-event-registrar.d.cts +1 -1
- package/dist/lib/cjs/obsidian/metadata-cache.cjs +88 -32
- package/dist/lib/cjs/obsidian/metadata-cache.d.cts +42 -32
- package/dist/lib/cjs/obsidian/modals/alert.cjs +1 -1
- package/dist/lib/cjs/obsidian/modals/alert.d.cts +2 -0
- package/dist/lib/cjs/obsidian/modals/confirm.cjs +1 -1
- package/dist/lib/cjs/obsidian/modals/confirm.d.cts +2 -0
- package/dist/lib/cjs/obsidian/modals/index.cjs +4 -1
- package/dist/lib/cjs/obsidian/modals/index.d.cts +1 -0
- package/dist/lib/cjs/obsidian/modals/minimizable-modal.cjs +234 -0
- package/dist/lib/cjs/obsidian/modals/minimizable-modal.d.cts +74 -0
- package/dist/lib/cjs/obsidian/modals/modal.d.cts +1 -1
- package/dist/lib/cjs/obsidian/modals/prompt.cjs +1 -1
- package/dist/lib/cjs/obsidian/modals/prompt.d.cts +7 -1
- package/dist/lib/cjs/obsidian/modals/select-item.cjs +1 -1
- package/dist/lib/cjs/obsidian/modals/select-item.d.cts +2 -0
- package/dist/lib/cjs/obsidian/obsidian-protocol-handler-registrar.d.cts +2 -2
- package/dist/lib/cjs/obsidian/obsidian-settings.d.cts +1 -1
- package/dist/lib/cjs/obsidian/path-settings.cjs +5 -2
- package/dist/lib/cjs/obsidian/plugin/plugin-context.d.cts +1 -1
- package/dist/lib/cjs/obsidian/plugin/plugin-event-source.cjs +5 -1
- package/dist/lib/cjs/obsidian/plugin/plugin-event-source.d.cts +5 -1
- package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.cjs +15 -7
- package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.d.cts +51 -14
- package/dist/lib/cjs/obsidian/plugin/plugin.cjs +22 -16
- package/dist/lib/cjs/obsidian/plugin/plugin.d.cts +6 -6
- package/dist/lib/cjs/obsidian/plugin-cli-handler-registrar.d.cts +2 -2
- package/dist/lib/cjs/obsidian/queue.cjs +9 -7
- package/dist/lib/cjs/obsidian/queue.d.cts +15 -3
- package/dist/lib/cjs/obsidian/react/app-context.d.cts +1 -1
- package/dist/lib/cjs/obsidian/reference.d.cts +1 -1
- package/dist/lib/cjs/obsidian/resource-url.cjs +7 -2
- package/dist/lib/cjs/obsidian/resource-url.d.cts +20 -5
- package/dist/lib/cjs/obsidian/ribbon-icon-registrar.d.cts +1 -1
- package/dist/lib/cjs/obsidian/setting-components/value-component-with-change-tracking.d.cts +1 -1
- package/dist/lib/cjs/obsidian/setting-ex.d.cts +1 -1
- package/dist/lib/cjs/obsidian/status-bar-item-registrar.cjs +4 -2
- package/dist/lib/cjs/obsidian/status-bar-item-registrar.d.cts +6 -2
- package/dist/lib/cjs/obsidian/vault-delete.cjs +19 -15
- package/dist/lib/cjs/obsidian/vault-delete.d.cts +12 -7
- package/dist/lib/cjs/obsidian/vault.cjs +116 -59
- package/dist/lib/cjs/obsidian/vault.d.cts +188 -45
- package/dist/lib/cjs/obsidian/view-registrar.d.cts +1 -1
- package/dist/lib/cjs/obsidian/workspace.d.cts +1 -1
- package/dist/lib/cjs/path.cjs +12 -5
- package/dist/lib/cjs/path.d.cts +15 -3
- package/dist/lib/cjs/reg-exp.cjs +101 -78
- package/dist/lib/cjs/script-utils/build.cjs +9 -5
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/change-extension-plugin.cjs +34 -14
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/change-extension-plugin.d.cts +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +20 -5
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.cts +24 -6
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.d.cts +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/dependency.cjs +11 -4
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-esm-plugin.cjs +6 -2
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-esm-plugin.d.cts +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +31 -12
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.d.cts +20 -5
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +7 -7
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.d.cts +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/preprocess-plugin.cjs +12 -3
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/preprocess-plugin.d.cts +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/rename-css-plugin.d.cts +1 -1
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.d.cts +1 -1
- package/dist/lib/cjs/script-utils/check-project-types.cjs +5 -1
- package/dist/lib/cjs/script-utils/check-project-types.d.cts +10 -2
- package/dist/lib/cjs/script-utils/cli-utils.cjs +6 -2
- package/dist/lib/cjs/script-utils/cli-utils.d.cts +1 -1
- package/dist/lib/cjs/script-utils/commitlint-config.d.cts +1 -1
- package/dist/lib/cjs/script-utils/exec.cjs +47 -12
- package/dist/lib/cjs/script-utils/exec.d.cts +12 -0
- package/dist/lib/cjs/script-utils/formatters/dprint.cjs +3 -3
- package/dist/lib/cjs/script-utils/formatters/dprint.d.cts +2 -0
- package/dist/lib/cjs/script-utils/fs.d.cts +1 -1
- package/dist/lib/cjs/script-utils/json.cjs +9 -5
- package/dist/lib/cjs/script-utils/json.d.cts +41 -9
- package/dist/lib/cjs/script-utils/linters/eslint-config.d.cts +1 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.d.cts +1 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/no-unused-params-members.cjs +8 -3
- package/dist/lib/cjs/script-utils/linters/eslint-rules/no-unused-params-members.d.cts +1 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/no-used-underscore-variables.d.cts +1 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.d.cts +1 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/params-options-name-match.d.cts +1 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/prefer-noop-async.d.cts +1 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/readonly-params-options-result-members.d.cts +1 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/require-component-suffix.cjs +27 -7
- package/dist/lib/cjs/script-utils/linters/eslint-rules/require-component-suffix.d.cts +1 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/require-method-template.cjs +7 -3
- package/dist/lib/cjs/script-utils/linters/eslint-rules/require-method-template.d.cts +1 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/require-super-call.cjs +8 -3
- package/dist/lib/cjs/script-utils/linters/eslint-rules/require-super-call.d.cts +1 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/rule-tester-helper.d.cts +2 -2
- package/dist/lib/cjs/script-utils/linters/eslint.cjs +3 -3
- package/dist/lib/cjs/script-utils/linters/eslint.d.cts +2 -0
- package/dist/lib/cjs/script-utils/linters/markdownlint-types/@types/markdownlint-cli2-config-schema.d.cts +1 -1
- package/dist/lib/cjs/script-utils/linters/markdownlint.cjs +3 -3
- package/dist/lib/cjs/script-utils/linters/markdownlint.d.cts +2 -0
- package/dist/lib/cjs/script-utils/linters/over-exposure.cjs +72 -30
- package/dist/lib/cjs/script-utils/linters/over-exposure.d.cts +9 -1
- package/dist/lib/cjs/script-utils/npm-publish.cjs +2 -2
- package/dist/lib/cjs/script-utils/npm.cjs +18 -9
- package/dist/lib/cjs/script-utils/npm.d.cts +3 -1
- package/dist/lib/cjs/script-utils/root.cjs +20 -5
- package/dist/lib/cjs/script-utils/root.d.cts +45 -9
- package/dist/lib/cjs/script-utils/test-runners/vitest.cjs +1 -1
- package/dist/lib/cjs/script-utils/test-runners/vitest.d.cts +2 -0
- package/dist/lib/cjs/script-utils/validate-declarations.cjs +8 -44
- package/dist/lib/cjs/script-utils/validate-declarations.d.cts +22 -9
- package/dist/lib/cjs/script-utils/version.cjs +36 -19
- package/dist/lib/cjs/script-utils/version.d.cts +20 -7
- package/dist/lib/cjs/strict-proxy.cjs +10 -1
- package/dist/lib/cjs/string.cjs +63 -22
- package/dist/lib/cjs/string.d.cts +194 -40
- package/dist/lib/cjs/value-provider.d.cts +1 -1
- package/dist/lib/esm/abort-controller.d.mts +2 -2
- package/dist/lib/esm/abort-controller.mjs +12 -9
- package/dist/lib/esm/async-events.d.mts +8 -0
- package/dist/lib/esm/async-events.mjs +9 -1
- package/dist/lib/esm/async.d.mts +86 -16
- package/dist/lib/esm/async.mjs +93 -34
- package/dist/lib/esm/css-class.d.mts +20 -0
- package/dist/lib/esm/css-class.mjs +6 -1
- package/dist/lib/esm/debug.d.mts +23 -5
- package/dist/lib/esm/debug.mjs +26 -9
- package/dist/lib/esm/disposable.d.mts +124 -0
- package/dist/lib/esm/disposable.mjs +122 -0
- package/dist/lib/esm/error.d.mts +23 -7
- package/dist/lib/esm/error.mjs +29 -18
- package/dist/lib/esm/html-element.d.mts +4 -2
- package/dist/lib/esm/html-element.mjs +9 -6
- package/dist/lib/esm/index.d.mts +1 -0
- package/dist/lib/esm/index.mjs +3 -1
- package/dist/lib/esm/library.mjs +2 -2
- package/dist/lib/esm/object-utils.d.mts +37 -12
- package/dist/lib/esm/object-utils.mjs +233 -128
- package/dist/lib/esm/obsidian/async-with-notice.d.mts +15 -2
- package/dist/lib/esm/obsidian/async-with-notice.mjs +9 -6
- package/dist/lib/esm/obsidian/attachment-path.d.mts +46 -8
- package/dist/lib/esm/obsidian/attachment-path.mjs +45 -13
- package/dist/lib/esm/obsidian/backlink.d.mts +6 -2
- package/dist/lib/esm/obsidian/backlink.mjs +6 -6
- package/dist/lib/esm/obsidian/callout.d.mts +8 -0
- package/dist/lib/esm/obsidian/callout.mjs +1 -1
- package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.d.mts +83 -9
- package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.mjs +53 -16
- package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.d.mts +37 -1
- package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.mjs +25 -5
- package/dist/lib/esm/obsidian/command-handlers/file-command-handler.d.mts +43 -17
- package/dist/lib/esm/obsidian/command-handlers/file-command-handler.mjs +33 -19
- package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.d.mts +43 -17
- package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.mjs +33 -19
- package/dist/lib/esm/obsidian/components/all-windows-event-component.d.mts +48 -8
- package/dist/lib/esm/obsidian/components/all-windows-event-component.mjs +17 -9
- package/dist/lib/esm/obsidian/components/async-error-handler-component.mjs +5 -2
- package/dist/lib/esm/obsidian/components/disposable-component.d.mts +0 -7
- package/dist/lib/esm/obsidian/components/disposable-component.mjs +3 -7
- package/dist/lib/esm/obsidian/components/plugin-notice-component.d.mts +3 -2
- package/dist/lib/esm/obsidian/components/plugin-notice-component.mjs +1 -1
- package/dist/lib/esm/obsidian/components/plugin-settings-component.d.mts +25 -4
- package/dist/lib/esm/obsidian/components/plugin-settings-component.mjs +24 -8
- package/dist/lib/esm/obsidian/components/rename-delete-handler-component.d.mts +3 -0
- package/dist/lib/esm/obsidian/components/rename-delete-handler-component.mjs +197 -79
- package/dist/lib/esm/obsidian/dataview-link.d.mts +22 -5
- package/dist/lib/esm/obsidian/dataview-link.mjs +7 -2
- package/dist/lib/esm/obsidian/dataview.d.mts +31 -6
- package/dist/lib/esm/obsidian/dataview.mjs +27 -10
- package/dist/lib/esm/obsidian/editor-lock.d.mts +57 -0
- package/dist/lib/esm/obsidian/editor-lock.mjs +141 -0
- package/dist/lib/esm/obsidian/editor.d.mts +2 -1
- package/dist/lib/esm/obsidian/editor.mjs +7 -1
- package/dist/lib/esm/obsidian/file-change.d.mts +54 -13
- package/dist/lib/esm/obsidian/file-change.mjs +104 -27
- package/dist/lib/esm/obsidian/file-manager.d.mts +63 -13
- package/dist/lib/esm/obsidian/file-manager.mjs +65 -33
- package/dist/lib/esm/obsidian/file-system.d.mts +188 -39
- package/dist/lib/esm/obsidian/file-system.mjs +122 -23
- package/dist/lib/esm/obsidian/frontmatter.mjs +7 -2
- package/dist/lib/esm/obsidian/i18n/locales/en.d.mts +3 -0
- package/dist/lib/esm/obsidian/i18n/locales/en.mjs +4 -1
- package/dist/lib/esm/obsidian/i18n/locales/translations-map.d.mts +3 -0
- package/dist/lib/esm/obsidian/index.d.mts +1 -0
- package/dist/lib/esm/obsidian/index.mjs +3 -1
- package/dist/lib/esm/obsidian/link.d.mts +131 -34
- package/dist/lib/esm/obsidian/link.mjs +327 -130
- package/dist/lib/esm/obsidian/logger.d.mts +26 -5
- package/dist/lib/esm/obsidian/logger.mjs +48 -22
- package/dist/lib/esm/obsidian/loop.d.mts +26 -7
- package/dist/lib/esm/obsidian/loop.mjs +14 -4
- package/dist/lib/esm/obsidian/markdown-code-block-processor.d.mts +15 -5
- package/dist/lib/esm/obsidian/markdown-code-block-processor.mjs +155 -107
- package/dist/lib/esm/obsidian/markdown-post-processor-registrar.d.mts +3 -1
- package/dist/lib/esm/obsidian/markdown-post-processor-registrar.mjs +1 -1
- package/dist/lib/esm/obsidian/markdown.d.mts +84 -16
- package/dist/lib/esm/obsidian/markdown.mjs +40 -11
- package/dist/lib/esm/obsidian/metadata-cache.d.mts +40 -30
- package/dist/lib/esm/obsidian/metadata-cache.mjs +88 -30
- package/dist/lib/esm/obsidian/modals/alert.d.mts +2 -0
- package/dist/lib/esm/obsidian/modals/alert.mjs +1 -1
- package/dist/lib/esm/obsidian/modals/confirm.d.mts +2 -0
- package/dist/lib/esm/obsidian/modals/confirm.mjs +1 -1
- package/dist/lib/esm/obsidian/modals/index.d.mts +1 -0
- package/dist/lib/esm/obsidian/modals/index.mjs +3 -1
- package/dist/lib/esm/obsidian/modals/minimizable-modal.d.mts +74 -0
- package/dist/lib/esm/obsidian/modals/minimizable-modal.mjs +126 -0
- package/dist/lib/esm/obsidian/modals/prompt.d.mts +6 -0
- package/dist/lib/esm/obsidian/modals/prompt.mjs +1 -1
- package/dist/lib/esm/obsidian/modals/select-item.d.mts +2 -0
- package/dist/lib/esm/obsidian/modals/select-item.mjs +1 -1
- package/dist/lib/esm/obsidian/path-settings.mjs +5 -2
- package/dist/lib/esm/obsidian/plugin/plugin-event-source.d.mts +4 -0
- package/dist/lib/esm/obsidian/plugin/plugin-event-source.mjs +5 -1
- package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.d.mts +48 -11
- package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.mjs +15 -7
- package/dist/lib/esm/obsidian/plugin/plugin.d.mts +4 -4
- package/dist/lib/esm/obsidian/plugin/plugin.mjs +24 -21
- package/dist/lib/esm/obsidian/queue.d.mts +14 -2
- package/dist/lib/esm/obsidian/queue.mjs +9 -7
- package/dist/lib/esm/obsidian/resource-url.d.mts +19 -4
- package/dist/lib/esm/obsidian/resource-url.mjs +7 -2
- package/dist/lib/esm/obsidian/status-bar-item-registrar.d.mts +6 -2
- package/dist/lib/esm/obsidian/status-bar-item-registrar.mjs +4 -2
- package/dist/lib/esm/obsidian/vault-delete.d.mts +11 -6
- package/dist/lib/esm/obsidian/vault-delete.mjs +19 -15
- package/dist/lib/esm/obsidian/vault.d.mts +187 -44
- package/dist/lib/esm/obsidian/vault.mjs +116 -59
- package/dist/lib/esm/path.d.mts +15 -3
- package/dist/lib/esm/path.mjs +12 -5
- package/dist/lib/esm/reg-exp.mjs +101 -78
- package/dist/lib/esm/script-utils/build.mjs +9 -5
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/change-extension-plugin.mjs +34 -14
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.mts +23 -5
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +20 -5
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/dependency.mjs +11 -4
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-esm-plugin.mjs +6 -2
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.d.mts +19 -4
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.mjs +31 -12
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +7 -7
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/preprocess-plugin.mjs +12 -3
- package/dist/lib/esm/script-utils/check-project-types.d.mts +9 -1
- package/dist/lib/esm/script-utils/check-project-types.mjs +5 -1
- package/dist/lib/esm/script-utils/cli-utils.mjs +6 -2
- package/dist/lib/esm/script-utils/exec.d.mts +12 -0
- package/dist/lib/esm/script-utils/exec.mjs +47 -12
- package/dist/lib/esm/script-utils/formatters/dprint.d.mts +2 -0
- package/dist/lib/esm/script-utils/formatters/dprint.mjs +3 -3
- package/dist/lib/esm/script-utils/json.d.mts +40 -8
- package/dist/lib/esm/script-utils/json.mjs +9 -5
- package/dist/lib/esm/script-utils/linters/eslint-rules/no-unused-params-members.mjs +8 -3
- package/dist/lib/esm/script-utils/linters/eslint-rules/require-component-suffix.mjs +27 -7
- package/dist/lib/esm/script-utils/linters/eslint-rules/require-method-template.mjs +7 -3
- package/dist/lib/esm/script-utils/linters/eslint-rules/require-super-call.mjs +8 -3
- package/dist/lib/esm/script-utils/linters/eslint.d.mts +2 -0
- package/dist/lib/esm/script-utils/linters/eslint.mjs +3 -3
- package/dist/lib/esm/script-utils/linters/markdownlint-types/@types/markdownlint-cli2-config-schema.d.mts +1 -1
- package/dist/lib/esm/script-utils/linters/markdownlint.d.mts +2 -0
- package/dist/lib/esm/script-utils/linters/markdownlint.mjs +3 -3
- package/dist/lib/esm/script-utils/linters/over-exposure.d.mts +8 -0
- package/dist/lib/esm/script-utils/linters/over-exposure.mjs +72 -30
- package/dist/lib/esm/script-utils/npm-publish.mjs +2 -2
- package/dist/lib/esm/script-utils/npm.d.mts +2 -0
- package/dist/lib/esm/script-utils/npm.mjs +18 -9
- package/dist/lib/esm/script-utils/root.d.mts +45 -9
- package/dist/lib/esm/script-utils/root.mjs +20 -5
- package/dist/lib/esm/script-utils/test-runners/vitest.d.mts +2 -0
- package/dist/lib/esm/script-utils/test-runners/vitest.mjs +1 -1
- package/dist/lib/esm/script-utils/validate-declarations.d.mts +22 -9
- package/dist/lib/esm/script-utils/validate-declarations.mjs +8 -51
- package/dist/lib/esm/script-utils/version.d.mts +20 -7
- package/dist/lib/esm/script-utils/version.mjs +36 -19
- package/dist/lib/esm/strict-proxy.mjs +10 -1
- package/dist/lib/esm/string.d.mts +194 -40
- package/dist/lib/esm/string.mjs +63 -22
- package/dist/styles.css +5 -1
- package/obsidian/Modals/minimizable-modal/package.json +6 -0
- package/obsidian/editor-lock/package.json +6 -0
- package/package.json +9 -9
|
@@ -54,6 +54,10 @@ function checkProjectTypes(params) {
|
|
|
54
54
|
}
|
|
55
55
|
process.stdout.write(`Ignored ${String(ignoredCount)} diagnostic(s) outside the validated set.
|
|
56
56
|
`);
|
|
57
|
+
if (params.isVerbose && ignoredCount > 0) {
|
|
58
|
+
const ignoredDiagnostics = allDiagnostics.filter((diagnostic) => !keptDiagnostics.includes(diagnostic));
|
|
59
|
+
process.stdout.write(formatDiagnosticsWithColorAndContext(ignoredDiagnostics, FORMAT_HOST));
|
|
60
|
+
}
|
|
57
61
|
return !keptDiagnostics.some((diagnostic) => diagnostic.category === DiagnosticCategory.Error);
|
|
58
62
|
}
|
|
59
63
|
function parseTsConfig(tsConfigPath) {
|
|
@@ -95,4 +99,4 @@ export {
|
|
|
95
99
|
parseTsConfig,
|
|
96
100
|
toCanonical
|
|
97
101
|
};
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9jaGVjay1wcm9qZWN0LXR5cGVzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVHlwZS1jaGVja3MgYSBzZXQgb2YgVHlwZVNjcmlwdCBmaWxlcyB3aXRoIGBza2lwTGliQ2hlY2tgIGRpc2FibGVkLCBidXQgcmVwb3J0cyBvbmx5IHRoZVxuICogZGlhZ25vc3RpY3Mgd2hvc2Ugc291cmNlIGZpbGUgd2Ugb3duLiBUaGlzIGxldHMgdGhlIGdlbmVyYWwgYnVpbGQgcnVuIHdpdGggYHNraXBMaWJDaGVjazogdHJ1ZWBcbiAqIChzbyBpdCBkb2VzIG5vdCBmYWlsIG9uIGJyb2tlbiB1cHN0cmVhbSBgLmQudHNgIGZpbGVzIHdlIGRvIG5vdCBjb250cm9sLCBzdWNoIGFzIGEgZ2l2ZW5cbiAqIHZlcnNpb24ncyBgb2JzaWRpYW4uZC50c2ApIHdoaWxlIHN0aWxsIGZ1bGx5IHZhbGlkYXRpbmcgdGhlIGRlY2xhcmF0aW9ucyB3ZSBhdXRob3IuXG4gKlxuICogV2hlbiB1cHN0cmVhbSB0eXBlcyBhcmUgZml4ZWQsIHRoZSBgSWdub3JlZCBOIGRpYWdub3N0aWMocylgIGNvdW50IGRyb3BzIHRvIGAwYCwgc2lnbmFsbGluZyB0aGVcbiAqIHdvcmthcm91bmQgaXMgbm8gbG9uZ2VyIGRvaW5nIGFueXRoaW5nLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQ29tcGlsZXJPcHRpb25zLFxuICBEaWFnbm9zdGljLFxuICBGb3JtYXREaWFnbm9zdGljc0hvc3QsXG4gIFBhcnNlQ29uZmlnRmlsZUhvc3Rcbn0gZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5pbXBvcnQge1xuICBjcmVhdGVQcm9ncmFtLFxuICBEaWFnbm9zdGljQ2F0ZWdvcnksXG4gIGZvcm1hdERpYWdub3N0aWMsXG4gIGZvcm1hdERpYWdub3N0aWNzLFxuICBmb3JtYXREaWFnbm9zdGljc1dpdGhDb2xvckFuZENvbnRleHQsXG4gIGdldFBhcnNlZENvbW1hbmRMaW5lT2ZDb25maWdGaWxlLFxuICBnZXRQcmVFbWl0RGlhZ25vc3RpY3MsXG4gIHN5c1xufSBmcm9tICd0eXBlc2NyaXB0JztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgY2hlY2tQcm9qZWN0VHlwZXN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrUHJvamVjdFR5cGVzUGFyYW1zIHtcbiAgLyoqIENvbXBpbGVyIG9wdGlvbnMgZm9yIHRoZSBwcm9ncmFtLiBgc2tpcExpYkNoZWNrYCBpcyBhbHdheXMgZm9yY2VkIHRvIGBmYWxzZWAuICovXG4gIHJlYWRvbmx5IG9wdGlvbnM6IENvbXBpbGVyT3B0aW9ucztcblxuICAvKiogVGhlIHJvb3QgZmlsZXMgdG8gdHlwZS1jaGVjay4gKi9cbiAgcmVhZG9ubHkgcm9vdE5hbWVzOiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRGVjaWRlcyB3aGV0aGVyIGEgZGlhZ25vc3RpYyBzaG91bGQgYmUgcmVwb3J0ZWQsIGJhc2VkIG9uIHRoZSBkaWFnbm9zdGljIGl0c2VsZiByYXRoZXIgdGhhbiBpdHNcbiAgICogc291cmNlIGZpbGUuIFJ1bnMgaW4gYWRkaXRpb24gdG8ge0BsaW5rIENoZWNrUHJvamVjdFR5cGVzUGFyYW1zLnNob3VsZEtlZXBGaWxlfSBcdTIwMTQgYSBkaWFnbm9zdGljIGlzXG4gICAqIHJlcG9ydGVkIG9ubHkgd2hlbiBib3RoIHByZWRpY2F0ZXMga2VlcCBpdC4gVXNlIHRoaXMgdG8gZHJvcCBkaWFnbm9zdGljcyB0aGF0IGFyZSByZXBvcnRlZCBpbiBhXG4gICAqIGZpbGUgd2Ugb3duIGJ1dCBhcmUgY2F1c2VkIGJ5IHNvbWV0aGluZyB3ZSBkbyBub3QgY29udHJvbCAoZS5nLiBhIGNyb3NzLW1vZHVsZS1mb3JtYXQgaW50ZXJvcFxuICAgKiBjb21wbGFpbnQgYWJvdXQgYSB0aGlyZC1wYXJ0eSBpbXBvcnQpLiBXaGVuIG9taXR0ZWQsIG5vIGRpYWdub3N0aWMgaXMgZHJvcHBlZCBvbiB0aGlzIGJhc2lzLlxuICAgKlxuICAgKiBAcGFyYW0gZGlhZ25vc3RpYyAtIFRoZSBkaWFnbm9zdGljIHRvIGV2YWx1YXRlLlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgdG8gcmVwb3J0IHRoZSBkaWFnbm9zdGljLCBgZmFsc2VgIHRvIGlnbm9yZSBpdC5cbiAgICovXG4gIHNob3VsZEtlZXBEaWFnbm9zdGljPyh0aGlzOiB2b2lkLCBkaWFnbm9zdGljOiBEaWFnbm9zdGljKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGVjaWRlcyB3aGV0aGVyIGEgZGlhZ25vc3RpYydzIHNvdXJjZSBmaWxlIGlzIG9uZSB3ZSBjYXJlIGFib3V0LlxuICAgKlxuICAgKiBAcGFyYW0gZmlsZU5hbWUgLSBUaGUgZGlhZ25vc3RpYydzIHNvdXJjZSBmaWxlLCBhbHJlYWR5IHBhc3NlZCB0aHJvdWdoIHtAbGluayB0b0Nhbm9uaWNhbH0uXG4gICAqIEByZXR1cm5zIGB0cnVlYCB0byByZXBvcnQgdGhlIGRpYWdub3N0aWMsIGBmYWxzZWAgdG8gaWdub3JlIGl0LlxuICAgKi9cbiAgc2hvdWxkS2VlcEZpbGUodGhpczogdm9pZCwgZmlsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW47XG59XG5cbi8qKlxuICogVGhlIHJlc29sdmVkIHJlc3VsdCBvZiB7QGxpbmsgcGFyc2VUc0NvbmZpZ30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkVHNDb25maWcge1xuICAvKiogVGhlIHJlc29sdmVkIGxpc3Qgb2YgZmlsZXMgdGhlIGNvbmZpZyBpbmNsdWRlcyAoYWJzb2x1dGUgcGF0aHMpLiAqL1xuICByZWFkb25seSBmaWxlTmFtZXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKiBUaGUgcmVzb2x2ZWQgY29tcGlsZXIgb3B0aW9ucyAod2l0aCBgZXh0ZW5kc2AgYXBwbGllZCkuICovXG4gIHJlYWRvbmx5IG9wdGlvbnM6IENvbXBpbGVyT3B0aW9ucztcbn1cblxuY29uc3QgRk9STUFUX0hPU1Q6IEZvcm1hdERpYWdub3N0aWNzSG9zdCA9IHtcbiAgZ2V0Q2Fub25pY2FsRmlsZU5hbWU6IChmaWxlTmFtZSkgPT4gZmlsZU5hbWUsXG4gIGdldEN1cnJlbnREaXJlY3Rvcnk6ICgpID0+IHN5cy5nZXRDdXJyZW50RGlyZWN0b3J5KCksXG4gIGdldE5ld0xpbmU6ICgpID0+IHN5cy5uZXdMaW5lXG59O1xuXG4vKipcbiAqIFR5cGUtY2hlY2tzIGEgc2V0IG9mIGZpbGVzIHdpdGggYHNraXBMaWJDaGVjazogZmFsc2VgLCBidXQgcmVwb3J0cyBvbmx5IHRoZSBkaWFnbm9zdGljcyB3aG9zZVxuICogc291cmNlIGZpbGUgcGFzc2VzIGBzaG91bGRLZWVwRmlsZWAuIERpYWdub3N0aWNzIGZyb20gZmlsZXMgd2UgZG8gbm90IGNvbnRyb2wgKGUuZy4gYnJva2VuXG4gKiB0aGlyZC1wYXJ0eSBgLmQudHNgIHB1bGxlZCBpbiB0cmFuc2l0aXZlbHkpIGFyZSBkcm9wcGVkLCB3aGlsZSBzdGlsbCBiZWluZyBjb3VudGVkIGZvclxuICogdmlzaWJpbGl0eS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHByb2dyYW0gaW5wdXRzIGFuZCB0aGUga2VlcCBwcmVkaWNhdGUuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiBubyByZXBvcnRlZCBkaWFnbm9zdGljIGlzIGFuIGVycm9yLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUHJvamVjdFR5cGVzKHBhcmFtczogQ2hlY2tQcm9qZWN0VHlwZXNQYXJhbXMpOiBib29sZWFuIHtcbiAgY29uc3Qgb3B0aW9uczogQ29tcGlsZXJPcHRpb25zID0ge1xuICAgIC4uLnBhcmFtcy5vcHRpb25zLFxuICAgIHNraXBMaWJDaGVjazogZmFsc2VcbiAgfTtcblxuICBjb25zdCBwcm9ncmFtID0gY3JlYXRlUHJvZ3JhbSh7XG4gICAgb3B0aW9ucyxcbiAgICByb290TmFtZXM6IFsuLi5wYXJhbXMucm9vdE5hbWVzXVxuICB9KTtcblxuICBjb25zdCBhbGxEaWFnbm9zdGljcyA9IGdldFByZUVtaXREaWFnbm9zdGljcyhwcm9ncmFtKTtcbiAgY29uc3Qga2VwdERpYWdub3N0aWNzID0gYWxsRGlhZ25vc3RpY3MuZmlsdGVyKChkaWFnbm9zdGljKSA9PiBzaG91bGRLZWVwRGlhZ25vc3RpY0J5RmlsZShkaWFnbm9zdGljLCBwYXJhbXMuc2hvdWxkS2VlcEZpbGUpICYmIChwYXJhbXMuc2hvdWxkS2VlcERpYWdub3N0aWM/LihkaWFnbm9zdGljKSA/PyB0cnVlKSk7XG4gIGNvbnN0IGlnbm9yZWRDb3VudCA9IGFsbERpYWdub3N0aWNzLmxlbmd0aCAtIGtlcHREaWFnbm9zdGljcy5sZW5ndGg7XG5cbiAgaWYgKGtlcHREaWFnbm9zdGljcy5sZW5ndGggPiAwKSB7XG4gICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoZm9ybWF0RGlhZ25vc3RpY3NXaXRoQ29sb3JBbmRDb250ZXh0KGtlcHREaWFnbm9zdGljcywgRk9STUFUX0hPU1QpKTtcbiAgfVxuXG4gIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGBJZ25vcmVkICR7U3RyaW5nKGlnbm9yZWRDb3VudCl9IGRpYWdub3N0aWMocykgb3V0c2lkZSB0aGUgdmFsaWRhdGVkIHNldC5cXG5gKTtcblxuICByZXR1cm4gIWtlcHREaWFnbm9zdGljcy5zb21lKChkaWFnbm9zdGljKSA9PiBkaWFnbm9zdGljLmNhdGVnb3J5ID09PSBEaWFnbm9zdGljQ2F0ZWdvcnkuRXJyb3IpO1xufVxuXG4vKipcbiAqIFBhcnNlcyBhIGB0c2NvbmZpZy5qc29uYCAocmVzb2x2aW5nIGBleHRlbmRzYCwgYGluY2x1ZGVgLCBgZXhjbHVkZWApIGludG8gdGhlIHJlc29sdmVkIGZpbGUgbGlzdFxuICogYW5kIGNvbXBpbGVyIG9wdGlvbnMuXG4gKlxuICogQHBhcmFtIHRzQ29uZmlnUGF0aCAtIEFic29sdXRlIHBhdGggdG8gdGhlIGNvbmZpZyBmaWxlLlxuICogQHJldHVybnMgVGhlIHJlc29sdmVkIGZpbGUgbmFtZXMgYW5kIG9wdGlvbnMuXG4gKiBAdGhyb3dzIElmIHRoZSBjb25maWcgY2Fubm90IGJlIHBhcnNlZCBvciBjb250YWlucyBlcnJvcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVRzQ29uZmlnKHRzQ29uZmlnUGF0aDogc3RyaW5nKTogUGFyc2VkVHNDb25maWcge1xuICBjb25zdCBob3N0OiBQYXJzZUNvbmZpZ0ZpbGVIb3N0ID0ge1xuICAgIGZpbGVFeGlzdHM6IChwYXRoKSA9PiBzeXMuZmlsZUV4aXN0cyhwYXRoKSxcbiAgICBnZXRDdXJyZW50RGlyZWN0b3J5OiAoKSA9PiBzeXMuZ2V0Q3VycmVudERpcmVjdG9yeSgpLFxuICAgIG9uVW5SZWNvdmVyYWJsZUNvbmZpZ0ZpbGVEaWFnbm9zdGljOiAoZGlhZ25vc3RpYykgPT4ge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdERpYWdub3N0aWMoZGlhZ25vc3RpYywgRk9STUFUX0hPU1QpKTtcbiAgICB9LFxuICAgIHJlYWREaXJlY3Rvcnk6IChyb290RGlyLCBleHRlbnNpb25zLCBleGNsdWRlcywgaW5jbHVkZXMsIGRlcHRoKSA9PiBzeXMucmVhZERpcmVjdG9yeShyb290RGlyLCBleHRlbnNpb25zLCBleGNsdWRlcywgaW5jbHVkZXMsIGRlcHRoKSxcbiAgICByZWFkRmlsZTogKHBhdGgpID0+IHN5cy5yZWFkRmlsZShwYXRoKSxcbiAgICB1c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzOiBzeXMudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lc1xuICB9O1xuXG4gIGNvbnN0IHBhcnNlZCA9IGdldFBhcnNlZENvbW1hbmRMaW5lT2ZDb25maWdGaWxlKHRzQ29uZmlnUGF0aCwgdW5kZWZpbmVkLCBob3N0KTtcblxuICBpZiAoIXBhcnNlZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHBhcnNlIFR5cGVTY3JpcHQgY29uZmlnOiAke3RzQ29uZmlnUGF0aH1gKTtcbiAgfVxuXG4gIGlmIChwYXJzZWQuZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9ycyB3aGlsZSBwYXJzaW5nIFR5cGVTY3JpcHQgY29uZmlnICR7dHNDb25maWdQYXRofTpcXG4ke2Zvcm1hdERpYWdub3N0aWNzKHBhcnNlZC5lcnJvcnMsIEZPUk1BVF9IT1NUKX1gKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZmlsZU5hbWVzOiBwYXJzZWQuZmlsZU5hbWVzLFxuICAgIG9wdGlvbnM6IHBhcnNlZC5vcHRpb25zXG4gIH07XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIGZpbGUgcGF0aCBmb3IgY29tcGFyaXNvbjogZm9yd2FyZCBzbGFzaGVzIGV2ZXJ5d2hlcmUsIGxvd2VyLWNhc2VkIG9uIGFcbiAqIGNhc2UtaW5zZW5zaXRpdmUgZmlsZSBzeXN0ZW0uXG4gKlxuICogQHBhcmFtIGZpbGVOYW1lIC0gVGhlIHBhdGggdG8gbm9ybWFsaXplLlxuICogQHJldHVybnMgVGhlIGNhbm9uaWNhbCBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9DYW5vbmljYWwoZmlsZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBmaWxlTmFtZS5yZXBsYWNlQWxsKCdcXFxcJywgJy8nKTtcbiAgcmV0dXJuIHN5cy51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzID8gbm9ybWFsaXplZCA6IG5vcm1hbGl6ZWQudG9Mb3dlckNhc2UoKTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkS2VlcERpYWdub3N0aWNCeUZpbGUoZGlhZ25vc3RpYzogRGlhZ25vc3RpYywgc2hvdWxkS2VlcEZpbGU6IChmaWxlTmFtZTogc3RyaW5nKSA9PiBib29sZWFuKTogYm9vbGVhbiB7XG4gIGlmICghZGlhZ25vc3RpYy5maWxlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkS2VlcEZpbGUodG9DYW5vbmlj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
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9jaGVjay1wcm9qZWN0LXR5cGVzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVHlwZS1jaGVja3MgYSBzZXQgb2YgVHlwZVNjcmlwdCBmaWxlcyB3aXRoIGBza2lwTGliQ2hlY2tgIGRpc2FibGVkLCBidXQgcmVwb3J0cyBvbmx5IHRoZVxuICogZGlhZ25vc3RpY3Mgd2hvc2Ugc291cmNlIGZpbGUgd2Ugb3duLiBUaGlzIGxldHMgdGhlIGdlbmVyYWwgYnVpbGQgcnVuIHdpdGggYHNraXBMaWJDaGVjazogdHJ1ZWBcbiAqIChzbyBpdCBkb2VzIG5vdCBmYWlsIG9uIGJyb2tlbiB1cHN0cmVhbSBgLmQudHNgIGZpbGVzIHdlIGRvIG5vdCBjb250cm9sLCBzdWNoIGFzIGEgZ2l2ZW5cbiAqIHZlcnNpb24ncyBgb2JzaWRpYW4uZC50c2ApIHdoaWxlIHN0aWxsIGZ1bGx5IHZhbGlkYXRpbmcgdGhlIGRlY2xhcmF0aW9ucyB3ZSBhdXRob3IuXG4gKlxuICogV2hlbiB1cHN0cmVhbSB0eXBlcyBhcmUgZml4ZWQsIHRoZSBgSWdub3JlZCBOIGRpYWdub3N0aWMocylgIGNvdW50IGRyb3BzIHRvIGAwYCwgc2lnbmFsbGluZyB0aGVcbiAqIHdvcmthcm91bmQgaXMgbm8gbG9uZ2VyIGRvaW5nIGFueXRoaW5nLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQ29tcGlsZXJPcHRpb25zLFxuICBEaWFnbm9zdGljLFxuICBGb3JtYXREaWFnbm9zdGljc0hvc3QsXG4gIFBhcnNlQ29uZmlnRmlsZUhvc3Rcbn0gZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5pbXBvcnQge1xuICBjcmVhdGVQcm9ncmFtLFxuICBEaWFnbm9zdGljQ2F0ZWdvcnksXG4gIGZvcm1hdERpYWdub3N0aWMsXG4gIGZvcm1hdERpYWdub3N0aWNzLFxuICBmb3JtYXREaWFnbm9zdGljc1dpdGhDb2xvckFuZENvbnRleHQsXG4gIGdldFBhcnNlZENvbW1hbmRMaW5lT2ZDb25maWdGaWxlLFxuICBnZXRQcmVFbWl0RGlhZ25vc3RpY3MsXG4gIHN5c1xufSBmcm9tICd0eXBlc2NyaXB0JztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgY2hlY2tQcm9qZWN0VHlwZXN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrUHJvamVjdFR5cGVzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFdoZW4gYHRydWVgLCB0aGUgaWdub3JlZCBkaWFnbm9zdGljcyAodGhvc2UgZHJvcHBlZCBieSB7QGxpbmsgQ2hlY2tQcm9qZWN0VHlwZXNQYXJhbXMuc2hvdWxkS2VlcEZpbGV9XG4gICAqIG9yIHtAbGluayBDaGVja1Byb2plY3RUeXBlc1BhcmFtcy5zaG91bGRLZWVwRGlhZ25vc3RpY30pIGFyZSBwcmludGVkIGluIGZ1bGwgYWZ0ZXIgdGhlIGlnbm9yZWRcbiAgICogY291bnQsIHNvIHRoZXkgY2FuIGJlIGluc3BlY3RlZC4gV2hlbiBvbWl0dGVkIG9yIGBmYWxzZWAsIG9ubHkgdGhlIGNvdW50IGlzIHByaW50ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IGlzVmVyYm9zZT86IGJvb2xlYW47XG5cbiAgLyoqIENvbXBpbGVyIG9wdGlvbnMgZm9yIHRoZSBwcm9ncmFtLiBgc2tpcExpYkNoZWNrYCBpcyBhbHdheXMgZm9yY2VkIHRvIGBmYWxzZWAuICovXG4gIHJlYWRvbmx5IG9wdGlvbnM6IENvbXBpbGVyT3B0aW9ucztcblxuICAvKiogVGhlIHJvb3QgZmlsZXMgdG8gdHlwZS1jaGVjay4gKi9cbiAgcmVhZG9ubHkgcm9vdE5hbWVzOiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRGVjaWRlcyB3aGV0aGVyIGEgZGlhZ25vc3RpYyBzaG91bGQgYmUgcmVwb3J0ZWQsIGJhc2VkIG9uIHRoZSBkaWFnbm9zdGljIGl0c2VsZiByYXRoZXIgdGhhbiBpdHNcbiAgICogc291cmNlIGZpbGUuIFJ1bnMgaW4gYWRkaXRpb24gdG8ge0BsaW5rIENoZWNrUHJvamVjdFR5cGVzUGFyYW1zLnNob3VsZEtlZXBGaWxlfSBcdTIwMTQgYSBkaWFnbm9zdGljIGlzXG4gICAqIHJlcG9ydGVkIG9ubHkgd2hlbiBib3RoIHByZWRpY2F0ZXMga2VlcCBpdC4gVXNlIHRoaXMgdG8gZHJvcCBkaWFnbm9zdGljcyB0aGF0IGFyZSByZXBvcnRlZCBpbiBhXG4gICAqIGZpbGUgd2Ugb3duIGJ1dCBhcmUgY2F1c2VkIGJ5IHNvbWV0aGluZyB3ZSBkbyBub3QgY29udHJvbCAoZS5nLiBhIGNyb3NzLW1vZHVsZS1mb3JtYXQgaW50ZXJvcFxuICAgKiBjb21wbGFpbnQgYWJvdXQgYSB0aGlyZC1wYXJ0eSBpbXBvcnQpLiBXaGVuIG9taXR0ZWQsIG5vIGRpYWdub3N0aWMgaXMgZHJvcHBlZCBvbiB0aGlzIGJhc2lzLlxuICAgKlxuICAgKiBAcGFyYW0gZGlhZ25vc3RpYyAtIFRoZSBkaWFnbm9zdGljIHRvIGV2YWx1YXRlLlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgdG8gcmVwb3J0IHRoZSBkaWFnbm9zdGljLCBgZmFsc2VgIHRvIGlnbm9yZSBpdC5cbiAgICovXG4gIHNob3VsZEtlZXBEaWFnbm9zdGljPyh0aGlzOiB2b2lkLCBkaWFnbm9zdGljOiBEaWFnbm9zdGljKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGVjaWRlcyB3aGV0aGVyIGEgZGlhZ25vc3RpYydzIHNvdXJjZSBmaWxlIGlzIG9uZSB3ZSBjYXJlIGFib3V0LlxuICAgKlxuICAgKiBAcGFyYW0gZmlsZU5hbWUgLSBUaGUgZGlhZ25vc3RpYydzIHNvdXJjZSBmaWxlLCBhbHJlYWR5IHBhc3NlZCB0aHJvdWdoIHtAbGluayB0b0Nhbm9uaWNhbH0uXG4gICAqIEByZXR1cm5zIGB0cnVlYCB0byByZXBvcnQgdGhlIGRpYWdub3N0aWMsIGBmYWxzZWAgdG8gaWdub3JlIGl0LlxuICAgKi9cbiAgc2hvdWxkS2VlcEZpbGUodGhpczogdm9pZCwgZmlsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW47XG59XG5cbi8qKlxuICogVGhlIHJlc29sdmVkIHJlc3VsdCBvZiB7QGxpbmsgcGFyc2VUc0NvbmZpZ30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkVHNDb25maWcge1xuICAvKiogVGhlIHJlc29sdmVkIGxpc3Qgb2YgZmlsZXMgdGhlIGNvbmZpZyBpbmNsdWRlcyAoYWJzb2x1dGUgcGF0aHMpLiAqL1xuICByZWFkb25seSBmaWxlTmFtZXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKiBUaGUgcmVzb2x2ZWQgY29tcGlsZXIgb3B0aW9ucyAod2l0aCBgZXh0ZW5kc2AgYXBwbGllZCkuICovXG4gIHJlYWRvbmx5IG9wdGlvbnM6IENvbXBpbGVyT3B0aW9ucztcbn1cblxuY29uc3QgRk9STUFUX0hPU1Q6IEZvcm1hdERpYWdub3N0aWNzSG9zdCA9IHtcbiAgZ2V0Q2Fub25pY2FsRmlsZU5hbWU6IChmaWxlTmFtZSkgPT4gZmlsZU5hbWUsXG4gIGdldEN1cnJlbnREaXJlY3Rvcnk6ICgpID0+IHN5cy5nZXRDdXJyZW50RGlyZWN0b3J5KCksXG4gIGdldE5ld0xpbmU6ICgpID0+IHN5cy5uZXdMaW5lXG59O1xuXG4vKipcbiAqIFR5cGUtY2hlY2tzIGEgc2V0IG9mIGZpbGVzIHdpdGggYHNraXBMaWJDaGVjazogZmFsc2VgLCBidXQgcmVwb3J0cyBvbmx5IHRoZSBkaWFnbm9zdGljcyB3aG9zZVxuICogc291cmNlIGZpbGUgcGFzc2VzIGBzaG91bGRLZWVwRmlsZWAuIERpYWdub3N0aWNzIGZyb20gZmlsZXMgd2UgZG8gbm90IGNvbnRyb2wgKGUuZy4gYnJva2VuXG4gKiB0aGlyZC1wYXJ0eSBgLmQudHNgIHB1bGxlZCBpbiB0cmFuc2l0aXZlbHkpIGFyZSBkcm9wcGVkLCB3aGlsZSBzdGlsbCBiZWluZyBjb3VudGVkIGZvclxuICogdmlzaWJpbGl0eS4gV2hlbiBgaXNWZXJib3NlYCBpcyBzZXQsIHRoZSBkcm9wcGVkIGRpYWdub3N0aWNzIGFyZSBhbHNvIHByaW50ZWQgaW4gZnVsbC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHByb2dyYW0gaW5wdXRzIGFuZCB0aGUga2VlcCBwcmVkaWNhdGUuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiBubyByZXBvcnRlZCBkaWFnbm9zdGljIGlzIGFuIGVycm9yLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUHJvamVjdFR5cGVzKHBhcmFtczogQ2hlY2tQcm9qZWN0VHlwZXNQYXJhbXMpOiBib29sZWFuIHtcbiAgY29uc3Qgb3B0aW9uczogQ29tcGlsZXJPcHRpb25zID0ge1xuICAgIC4uLnBhcmFtcy5vcHRpb25zLFxuICAgIHNraXBMaWJDaGVjazogZmFsc2VcbiAgfTtcblxuICBjb25zdCBwcm9ncmFtID0gY3JlYXRlUHJvZ3JhbSh7XG4gICAgb3B0aW9ucyxcbiAgICByb290TmFtZXM6IFsuLi5wYXJhbXMucm9vdE5hbWVzXVxuICB9KTtcblxuICBjb25zdCBhbGxEaWFnbm9zdGljcyA9IGdldFByZUVtaXREaWFnbm9zdGljcyhwcm9ncmFtKTtcbiAgY29uc3Qga2VwdERpYWdub3N0aWNzID0gYWxsRGlhZ25vc3RpY3MuZmlsdGVyKChkaWFnbm9zdGljKSA9PiBzaG91bGRLZWVwRGlhZ25vc3RpY0J5RmlsZShkaWFnbm9zdGljLCBwYXJhbXMuc2hvdWxkS2VlcEZpbGUpICYmIChwYXJhbXMuc2hvdWxkS2VlcERpYWdub3N0aWM/LihkaWFnbm9zdGljKSA/PyB0cnVlKSk7XG4gIGNvbnN0IGlnbm9yZWRDb3VudCA9IGFsbERpYWdub3N0aWNzLmxlbmd0aCAtIGtlcHREaWFnbm9zdGljcy5sZW5ndGg7XG5cbiAgaWYgKGtlcHREaWFnbm9zdGljcy5sZW5ndGggPiAwKSB7XG4gICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoZm9ybWF0RGlhZ25vc3RpY3NXaXRoQ29sb3JBbmRDb250ZXh0KGtlcHREaWFnbm9zdGljcywgRk9STUFUX0hPU1QpKTtcbiAgfVxuXG4gIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGBJZ25vcmVkICR7U3RyaW5nKGlnbm9yZWRDb3VudCl9IGRpYWdub3N0aWMocykgb3V0c2lkZSB0aGUgdmFsaWRhdGVkIHNldC5cXG5gKTtcblxuICBpZiAocGFyYW1zLmlzVmVyYm9zZSAmJiBpZ25vcmVkQ291bnQgPiAwKSB7XG4gICAgY29uc3QgaWdub3JlZERpYWdub3N0aWNzID0gYWxsRGlhZ25vc3RpY3MuZmlsdGVyKChkaWFnbm9zdGljKSA9PiAha2VwdERpYWdub3N0aWNzLmluY2x1ZGVzKGRpYWdub3N0aWMpKTtcbiAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShmb3JtYXREaWFnbm9zdGljc1dpdGhDb2xvckFuZENvbnRleHQoaWdub3JlZERpYWdub3N0aWNzLCBGT1JNQVRfSE9TVCkpO1xuICB9XG5cbiAgcmV0dXJuICFrZXB0RGlhZ25vc3RpY3Muc29tZSgoZGlhZ25vc3RpYykgPT4gZGlhZ25vc3RpYy5jYXRlZ29yeSA9PT0gRGlhZ25vc3RpY0NhdGVnb3J5LkVycm9yKTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgYSBgdHNjb25maWcuanNvbmAgKHJlc29sdmluZyBgZXh0ZW5kc2AsIGBpbmNsdWRlYCwgYGV4Y2x1ZGVgKSBpbnRvIHRoZSByZXNvbHZlZCBmaWxlIGxpc3RcbiAqIGFuZCBjb21waWxlciBvcHRpb25zLlxuICpcbiAqIEBwYXJhbSB0c0NvbmZpZ1BhdGggLSBBYnNvbHV0ZSBwYXRoIHRvIHRoZSBjb25maWcgZmlsZS5cbiAqIEByZXR1cm5zIFRoZSByZXNvbHZlZCBmaWxlIG5hbWVzIGFuZCBvcHRpb25zLlxuICogQHRocm93cyBJZiB0aGUgY29uZmlnIGNhbm5vdCBiZSBwYXJzZWQgb3IgY29udGFpbnMgZXJyb3JzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUc0NvbmZpZyh0c0NvbmZpZ1BhdGg6IHN0cmluZyk6IFBhcnNlZFRzQ29uZmlnIHtcbiAgY29uc3QgaG9zdDogUGFyc2VDb25maWdGaWxlSG9zdCA9IHtcbiAgICBmaWxlRXhpc3RzOiAocGF0aCkgPT4gc3lzLmZpbGVFeGlzdHMocGF0aCksXG4gICAgZ2V0Q3VycmVudERpcmVjdG9yeTogKCkgPT4gc3lzLmdldEN1cnJlbnREaXJlY3RvcnkoKSxcbiAgICBvblVuUmVjb3ZlcmFibGVDb25maWdGaWxlRGlhZ25vc3RpYzogKGRpYWdub3N0aWMpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihmb3JtYXREaWFnbm9zdGljKGRpYWdub3N0aWMsIEZPUk1BVF9IT1NUKSk7XG4gICAgfSxcbiAgICByZWFkRGlyZWN0b3J5OiAocm9vdERpciwgZXh0ZW5zaW9ucywgZXhjbHVkZXMsIGluY2x1ZGVzLCBkZXB0aCkgPT4gc3lzLnJlYWREaXJlY3Rvcnkocm9vdERpciwgZXh0ZW5zaW9ucywgZXhjbHVkZXMsIGluY2x1ZGVzLCBkZXB0aCksXG4gICAgcmVhZEZpbGU6IChwYXRoKSA9PiBzeXMucmVhZEZpbGUocGF0aCksXG4gICAgdXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lczogc3lzLnVzZUNhc2VTZW5zaXRpdmVGaWxlTmFtZXNcbiAgfTtcblxuICBjb25zdCBwYXJzZWQgPSBnZXRQYXJzZWRDb21tYW5kTGluZU9mQ29uZmlnRmlsZSh0c0NvbmZpZ1BhdGgsIHVuZGVmaW5lZCwgaG9zdCk7XG5cbiAgaWYgKCFwYXJzZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBwYXJzZSBUeXBlU2NyaXB0IGNvbmZpZzogJHt0c0NvbmZpZ1BhdGh9YCk7XG4gIH1cblxuICBpZiAocGFyc2VkLmVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvcnMgd2hpbGUgcGFyc2luZyBUeXBlU2NyaXB0IGNvbmZpZyAke3RzQ29uZmlnUGF0aH06XFxuJHtmb3JtYXREaWFnbm9zdGljcyhwYXJzZWQuZXJyb3JzLCBGT1JNQVRfSE9TVCl9YCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGZpbGVOYW1lczogcGFyc2VkLmZpbGVOYW1lcyxcbiAgICBvcHRpb25zOiBwYXJzZWQub3B0aW9uc1xuICB9O1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSBmaWxlIHBhdGggZm9yIGNvbXBhcmlzb246IGZvcndhcmQgc2xhc2hlcyBldmVyeXdoZXJlLCBsb3dlci1jYXNlZCBvbiBhXG4gKiBjYXNlLWluc2Vuc2l0aXZlIGZpbGUgc3lzdGVtLlxuICpcbiAqIEBwYXJhbSBmaWxlTmFtZSAtIFRoZSBwYXRoIHRvIG5vcm1hbGl6ZS5cbiAqIEByZXR1cm5zIFRoZSBjYW5vbmljYWwgcGF0aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQ2Fub25pY2FsKGZpbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBub3JtYWxpemVkID0gZmlsZU5hbWUucmVwbGFjZUFsbCgnXFxcXCcsICcvJyk7XG4gIHJldHVybiBzeXMudXNlQ2FzZVNlbnNpdGl2ZUZpbGVOYW1lcyA/IG5vcm1hbGl6ZWQgOiBub3JtYWxpemVkLnRvTG93ZXJDYXNlKCk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZEtlZXBEaWFnbm9zdGljQnlGaWxlKGRpYWdub3N0aWM6IERpYWdub3N0aWMsIHNob3VsZEtlZXBGaWxlOiAoZmlsZU5hbWU6IHN0cmluZykgPT4gYm9vbGVhbik6IGJvb2xlYW4ge1xuICBpZiAoIWRpYWdub3N0aWMuZmlsZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHNob3VsZEtlZXBGaWxlKHRvQ2Fub25pY2FsKGRpYWdub3N0aWMuZmlsZS5maWxlTmFtZSkpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtQkEsT0FBTyxhQUFhO0FBQ3BCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxP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
|
|
@@ -159,7 +159,11 @@ function argvQuote(arg) {
|
|
|
159
159
|
}
|
|
160
160
|
const CMD_META_RE = /[()%!^"<>&|]/g;
|
|
161
161
|
function cmdEscapeCommandLine(commandLine) {
|
|
162
|
-
return replaceAll(
|
|
162
|
+
return replaceAll({
|
|
163
|
+
replacer: "^$&",
|
|
164
|
+
searchValue: CMD_META_RE,
|
|
165
|
+
str: commandLine
|
|
166
|
+
});
|
|
163
167
|
}
|
|
164
168
|
async function wrapCliTask(taskFn) {
|
|
165
169
|
enableLibraryDebuggers();
|
|
@@ -180,4 +184,4 @@ export {
|
|
|
180
184
|
toCommandLine,
|
|
181
185
|
wrapCliTask
|
|
182
186
|
};
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9jbGktdXRpbHMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyBmb3IgbWFuYWdpbmcgdGFzayByZXN1bHRzLCBpbmNsdWRpbmdcbiAqIHN1Y2Nlc3MsIGV4aXQgY29kZXMsIGFuZCBjaGFpbmluZyBtdWx0aXBsZSB0YXNrcy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuXG5pbXBvcnQgdHlwZSB7IE1heWJlUmV0dXJuIH0gZnJvbSAnLi4vdHlwZS50cyc7XG5cbmltcG9ydCB7IGVuYWJsZUxpYnJhcnlEZWJ1Z2dlcnMgfSBmcm9tICcuLi9kZWJ1Zy50cyc7XG5pbXBvcnQgeyBwcmludEVycm9yIH0gZnJvbSAnLi4vZXJyb3IudHMnO1xuaW1wb3J0IHsgbm9vcCB9IGZyb20gJy4uL2Z1bmN0aW9uLnRzJztcbmltcG9ydCB7IHJlcGxhY2VBbGwgfSBmcm9tICcuLi9zdHJpbmcudHMnO1xuXG4vKipcbiAqIEFic3RyYWN0IGNsYXNzIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0IG9mIGEgdGFzay4gSW5jbHVkZXMgbWV0aG9kcyBmb3IgaGFuZGxpbmcgc3VjY2VzcyxcbiAqIGV4aXQgY29kZXMsIGFuZCBjaGFpbmluZyB0YXNrcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENsaVRhc2tSZXN1bHQge1xuICAvKipcbiAgICogQ2hhaW5zIG11bHRpcGxlIHRhc2tzIHRvZ2V0aGVyLCBleGVjdXRpbmcgdGhlbSBzZXF1ZW50aWFsbHkgdW50aWwgb25lIGZhaWxzLlxuICAgKlxuICAgKiBAcGFyYW0gdGFza3MgLSBBbiBhcnJheSBvZiB0YXNrIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBhIHtAbGluayBDbGlUYXNrUmVzdWx0fSBvciBgdm9pZGAuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgZmlyc3QgZmFpbGVkIHtAbGluayBDbGlUYXNrUmVzdWx0fSBvciBhIHN1Y2Nlc3MgcmVzdWx0LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhc3luYyBjaGFpbih0YXNrczogKCgpID0+IFByb21pc2FibGU8TWF5YmVSZXR1cm48Q2xpVGFza1Jlc3VsdD4+KVtdKTogUHJvbWlzZTxDbGlUYXNrUmVzdWx0PiB7XG4gICAgZm9yIChjb25zdCB0YXNrIG9mIHRhc2tzKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB3cmFwUmVzdWx0KHRhc2spO1xuICAgICAgaWYgKCFyZXN1bHQuaXNTdWNjZXNzZnVsKCkpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gQ2xpVGFza1Jlc3VsdC5TdWNjZXNzKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHtAbGluayBDbGlUYXNrUmVzdWx0fSB0aGF0IGRvZXMgbm90IGV4aXQgdGhlIHByb2Nlc3MuXG4gICAqXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIENsaVRhc2tSZXN1bHR9IHRoYXQgZG9lcyBub3QgZXhpdCB0aGUgcHJvY2Vzcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgRG9Ob3RFeGl0KCk6IENsaVRhc2tSZXN1bHQge1xuICAgIHJldHVybiBuZXcgRG9Ob3RFeGl0VGFza1Jlc3VsdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgZmFpbHVyZSByZXN1bHQgb2YgYSBDTEkgdGFzay5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGZhaWx1cmUgcmVzdWx0LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBGYWlsdXJlKCk6IENsaVRhc2tSZXN1bHQge1xuICAgIHJldHVybiB0aGlzLlN1Y2Nlc3MoZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0gYmFzZWQgb24gYW4gZXhpdCBjb2RlLlxuICAgKlxuICAgKiBAcGFyYW0gZXhpdENvZGUgLSBUaGUgZXhpdCBjb2RlIHRvIHJlcHJlc2VudC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0gcmVwcmVzZW50aW5nIHRoZSBleGl0IGNvZGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIEZyb21FeGl0Q29kZShleGl0Q29kZTogbnVtYmVyKTogQ2xpVGFza1Jlc3VsdCB7XG4gICAgcmV0dXJuIG5ldyBFeGl0Q29kZVRhc2tSZXN1bHQoZXhpdENvZGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBDbGlUYXNrUmVzdWx0IHJlcHJlc2VudGluZyBhIHN1Y2Nlc3NmdWwgdGFzayByZXN1bHQuXG4gICAqXG4gICAqIEBwYXJhbSBpc1N1Y2Nlc3MgLSBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSB0YXNrIHdhcyBzdWNjZXNzZnVsLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICogQHJldHVybnMgQSBDbGlUYXNrUmVzdWx0IG9iamVjdCByZXByZXNlbnRpbmcgYSBzdWNjZXNzZnVsIHRhc2sgcmVzdWx0LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBTdWNjZXNzKGlzU3VjY2VzcyA9IHRydWUpOiBDbGlUYXNrUmVzdWx0IHtcbiAgICByZXR1cm4gbmV3IFN1Y2Nlc3NUYXNrUmVzdWx0KGlzU3VjY2Vzcyk7XG4gIH1cblxuICAvKipcbiAgICogRXhpdHMgdGhlIHByb2Nlc3MgYmFzZWQgb24gdGhlIHRhc2sgcmVzdWx0LlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGV4aXQoKTogdm9pZDtcblxuICAvKipcbiAgICogVGhyb3dzIGFuIGVycm9yIGlmIHRoZSB0YXNrIHdhcyBub3Qgc3VjY2Vzc2Z1bC5cbiAgICovXG4gIHB1YmxpYyB0aHJvd09uRmFpbHVyZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNTdWNjZXNzZnVsKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGFzayBmYWlsZWQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgdGFzayB3YXMgc3VjY2Vzc2Z1bC5cbiAgICpcbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSB0YXNrIHdhcyBzdWNjZXNzZnVsLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBpc1N1Y2Nlc3NmdWwoKTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBIHRhc2sgcmVzdWx0IHRoYXQgZG9lcyBub3QgZXhpdCB0aGUgcHJvY2Vzcy5cbiAqL1xuY2xhc3MgRG9Ob3RFeGl0VGFza1Jlc3VsdCBleHRlbmRzIENsaVRhc2tSZXN1bHQge1xuICAvKipcbiAgICogRG9lcyBub3QgZXhpdCB0aGUgcHJvY2Vzcy5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBleGl0KCk6IHZvaWQge1xuICAgIG5vb3AoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBpc1N1Y2Nlc3NmdWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuLyoqXG4gKiBBIHRhc2sgcmVzdWx0IGJhc2VkIG9uIGFuIGV4aXQgY29kZS5cbiAqL1xuY2xhc3MgRXhpdENvZGVUYXNrUmVzdWx0IGV4dGVuZHMgQ2xpVGFza1Jlc3VsdCB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGV4aXRDb2RlOiBudW1iZXIpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4aXRzIHRoZSBwcm9jZXNzIHdpdGggdGhlIHNwZWNpZmllZCBleGl0IGNvZGUuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZXhpdCgpOiB2b2lkIHtcbiAgICBwcm9jZXNzLmV4aXQodGhpcy5leGl0Q29kZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgaXNTdWNjZXNzZnVsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmV4aXRDb2RlID09PSAwO1xuICB9XG59XG5cbi8qKlxuICogQSB0YXNrIHJlc3VsdCBiYXNlZCBvbiBzdWNjZXNzIG9yIGZhaWx1cmUuXG4gKi9cbmNsYXNzIFN1Y2Nlc3NUYXNrUmVzdWx0IGV4dGVuZHMgQ2xpVGFza1Jlc3VsdCB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9pc1N1Y2Nlc3NmdWw6IGJvb2xlYW4pIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4aXRzIHRoZSBwcm9jZXNzIGJhc2VkIG9uIHRoZSBzdWNjZXNzIG9mIHRoZSB0YXNrLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGV4aXQoKTogdm9pZCB7XG4gICAgcHJvY2Vzcy5leGl0KHRoaXMuX2lzU3VjY2Vzc2Z1bCA/IDAgOiAxKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBpc1N1Y2Nlc3NmdWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzU3VjY2Vzc2Z1bDtcbiAgfVxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIGFycmF5IG9mIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgaW50byBhIHNpbmdsZSBjb21tYW5kLWxpbmUgc3RyaW5nXG4gKiB1c2luZyB0aGUgYENvbW1hbmRMaW5lVG9Bcmd2V2AgY29udmVudGlvbiAodGhlIHN0YW5kYXJkIHVzZWQgYnkgdGhlXG4gKiBNaWNyb3NvZnQgQyBydW50aW1lIGFuZCBtb3N0IFdpbmRvd3MgcHJvZ3JhbXMpLlxuICpcbiAqIEltcGxlbWVudHMgdGhlIEFyZ3ZRdW90ZSBhbGdvcml0aG0gZnJvbVxuICoge0BsaW5rIGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9hcmNoaXZlL2Jsb2dzL3R3aXN0eWxpdHRsZXBhc3NhZ2VzYWxsYWxpa2UvZXZlcnlvbmUtcXVvdGVzLWNvbW1hbmQtbGluZS1hcmd1bWVudHMtdGhlLXdyb25nLXdheSB8IEV2ZXJ5b25lIHF1b3RlcyBjb21tYW5kIGxpbmUgYXJndW1lbnRzIHRoZSB3cm9uZyB3YXl9OlxuICogYmFja3NsYXNoZXMgYmVmb3JlIHF1b3RlcyBhbmQgYXQgdGhlIGVuZCBvZiBhIHF1b3RlZCBhcmd1bWVudCBhcmUgZG91YmxlZC5cbiAqXG4gKiBUaGlzIHByb2R1Y2VzIGEgc2hlbGwtYWdub3N0aWMgY29tbWFuZCBsaW5lLiBDYWxsZXJzIHRoYXQgcm91dGUgdGhyb3VnaFxuICogYSBzcGVjaWZpYyBzaGVsbCAoY21kLmV4ZSwgUG93ZXJTaGVsbCwgc2gpIG11c3QgYXBwbHkgc2hlbGwtc3BlY2lmaWNcbiAqIGVzY2FwaW5nIG9uIHRvcCBcdTIwMTQgc2VlIHtAbGluayBjbWRFc2NhcGVDb21tYW5kTGluZX0uXG4gKlxuICogQHBhcmFtIGFyZ3MgLSBUaGUgYXJyYXkgb2YgY29tbWFuZC1saW5lIGFyZ3VtZW50cyB0byBjb252ZXJ0LlxuICogQHJldHVybnMgQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjb21tYW5kLWxpbmUgaW52b2NhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQ29tbWFuZExpbmUoYXJnczogc3RyaW5nW10pOiBzdHJpbmcge1xuICByZXR1cm4gYXJncy5tYXAoKGFyZykgPT4gYXJndlF1b3RlKGFyZykpLmpvaW4oJyAnKTtcbn1cblxuLyoqXG4gKiBRdW90ZXMgYSBzaW5nbGUgYXJndW1lbnQgc28gdGhhdCBgQ29tbWFuZExpbmVUb0FyZ3ZXYCB3aWxsIGRlY29kZSBpdFxuICogdW5jaGFuZ2VkLiBJbXBsZW1lbnRzIHRoZSBBcmd2UXVvdGUgYWxnb3JpdGhtIGZyb21cbiAqIHtAbGluayBodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vYXJjaGl2ZS9ibG9ncy90d2lzdHlsaXR0bGVwYXNzYWdlc2FsbGFsaWtlL2V2ZXJ5b25lLXF1b3Rlcy1jb21tYW5kLWxpbmUtYXJndW1lbnRzLXRoZS13cm9uZy13YXkgfCBFdmVyeW9uZSBxdW90ZXMgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyB0aGUgd3Jvbmcgd2F5fS5cbiAqXG4gKiBAcGFyYW0gYXJnIC0gVGhlIHJhdyBhcmd1bWVudCBzdHJpbmcuXG4gKiBAcmV0dXJucyBUaGUgcXVvdGVkIGFyZ3VtZW50IHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gYXJndlF1b3RlKGFyZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKGFyZy5sZW5ndGggPiAwICYmICEvW1xcc1xcdFxcblxcdlwiXS8udGVzdChhcmcpKSB7XG4gICAgcmV0dXJuIGFyZztcbiAgfVxuXG4gIGNvbnN0IEJBQ0tTTEFTSF9FU0NBUEVfRkFDVE9SID0gMjtcbiAgbGV0IHJlc3VsdCA9ICdcIic7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IG51bUJhY2tzbGFzaGVzID0gMDtcbiAgICB3aGlsZSAoaSA8IGFyZy5sZW5ndGggJiYgYXJnW2ldID09PSAnXFxcXCcpIHtcbiAgICAgIGkrKztcbiAgICAgIG51bUJhY2tzbGFzaGVzKys7XG4gICAgfVxuXG4gICAgaWYgKGkgPT09IGFyZy5sZW5ndGgpIHtcbiAgICAgIHJlc3VsdCArPSAnXFxcXCcucmVwZWF0KG51bUJhY2tzbGFzaGVzICogQkFDS1NMQVNIX0VTQ0FQRV9GQUNUT1IpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY29uc3QgY2ggPSBhcmcuY2hhckF0KGkpO1xuICAgIGlmIChjaCA9PT0gJ1wiJykge1xuICAgICAgcmVzdWx0ICs9IGAkeydcXFxcJy5yZXBlYXQobnVtQmFja3NsYXNoZXMgKiBCQUNLU0xBU0hfRVNDQVBFX0ZBQ1RPUiArIDEpfVwiYDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ICs9ICdcXFxcJy5yZXBlYXQobnVtQmFja3NsYXNoZXMpICsgY2g7XG4gICAgfVxuICB9XG5cbiAgcmVzdWx0ICs9ICdcIic7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogTWF0Y2hlcyBgY21kLmV4ZWAgbWV0YWNoYXJhY3RlcnMgdGhhdCBtdXN0IGJlIGBeYC1lc2NhcGVkLlxuICovXG5jb25zdCBDTURfTUVUQV9SRSA9IC9bKCklIV5cIjw+JnxdL2c7XG5cbi8qKlxuICogRXNjYXBlcyBgY21kLmV4ZWAgbWV0YWNoYXJhY3RlcnMgd2l0aCBgXmAgc28gdGhhdCBgY21kLmV4ZWAgcGFzc2VzIHRoZW1cbiAqIHRocm91Z2ggbGl0ZXJhbGx5LiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGBjbWQuZXhlYCdzIGBcImAgaGFuZGxpbmdcbiAqIGRpZmZlcnMgZnJvbSBgQ29tbWFuZExpbmVUb0FyZ3ZXYCBhbmQgY2Fubm90IGJlIHJlbGllZCB1cG9uLlxuICpcbiAqIEFwcGx5IHRoaXMgdG8gYSBjb21tYW5kIGxpbmUgc3RyaW5nIHRoYXQgd2lsbCBiZSBleGVjdXRlZCB2aWEgYGNtZC5leGVgXG4gKiAoZS5nLiwgYHNwYXduKGNtZCwgW10sIHsgc2hlbGw6IHRydWUgfSlgIG9uIFdpbmRvd3MpLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kTGluZSAtIFRoZSBhbHJlYWR5LXF1b3RlZCBjb21tYW5kIGxpbmUgc3RyaW5nLlxuICogQHJldHVybnMgVGhlIHN0cmluZyB3aXRoIGFsbCBjbWQgbWV0YWNoYXJhY3RlcnMgYF5gLWVzY2FwZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbWRFc2NhcGVDb21tYW5kTGluZShjb21tYW5kTGluZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2VBbGwoY29tbWFuZExpbmUsIENNRF9NRVRBX1JFLCAnXiQmJyk7XG59XG5cbi8qKlxuICogV3JhcHMgYSBDTEkgdGFzayBmdW5jdGlvbiB0byBlbnN1cmUgaXQgcnVucyBzYWZlbHkgYW5kIGhhbmRsZXMgaXRzIHtAbGluayBDbGlUYXNrUmVzdWx0fS5cbiAqXG4gKiBAcGFyYW0gdGFza0ZuIC0gVGhlIHRhc2sgZnVuY3Rpb24gdG8gZXhlY3V0ZSwgd2hpY2ggbWF5IHJldHVybiBhIHtAbGluayBDbGlUYXNrUmVzdWx0fSBvciBgdm9pZGAuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHRhc2sgaXMgY29tcGxldGVkIGFuZCBleGl0cyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBzdGF0dXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cmFwQ2xpVGFzayh0YXNrRm46ICgpID0+IFByb21pc2FibGU8TWF5YmVSZXR1cm48Q2xpVGFza1Jlc3VsdD4+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGVuYWJsZUxpYnJhcnlEZWJ1Z2dlcnMoKTtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgd3JhcFJlc3VsdCh0YXNrRm4pO1xuICByZXN1bHQuZXhpdCgpO1xufVxuXG4vKipcbiAqIFNhZmVseSBleGVjdXRlcyBhIHRhc2sgZnVuY3Rpb24gYW5kIHJldHVybnMgYSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0uIElmIHRoZSB0YXNrIGZ1bmN0aW9uIHRocm93cyBhbiBlcnJvcixcbiAqIEFuIGVycm9yIGlzIGNhdWdodCwgYW5kIGEgZmFpbHVyZSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0gaXMgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIHRhc2tGbiAtIFRoZSB0YXNrIGZ1bmN0aW9uIHRvIGV4ZWN1dGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggYSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0gcmVwcmVzZW50aW5nIHRoZSBvdXRjb21lIG9mIHRoZSB0YXNrLlxuICovXG5hc3luYyBmdW5jdGlvbiB3cmFwUmVzdWx0KHRhc2tGbjogKCkgPT4gUHJvbWlzYWJsZTxNYXliZVJldHVybjxDbGlUYXNrUmVzdWx0Pj4pOiBQcm9taXNlPENsaVRhc2tSZXN1bHQ+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gKGF3YWl0IHRhc2tGbigpKSBhcyBDbGlUYXNrUmVzdWx0IHwgdW5kZWZpbmVkID8/IENsaVRhc2tSZXN1bHQuU3VjY2VzcygpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHByaW50RXJyb3IobmV3IEVycm9yKCdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgdGFzayBleGVjdXRpb24nLCB7IGNhdXNlOiBlcnJvciB9KSk7XG4gICAgcmV0dXJuIENsaVRhc2tSZXN1bHQuRmFpbHVyZSgpO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNBLE9BQU8sYUFBYTtBQUlwQixTQUFTLDhCQUE4QjtBQUN2QyxTQUFTLGtCQUFrQjtBQUMzQixTQUFTLFlBQVk7QUFDckIsU0FBUyxrQkFBa0I7QUFNcEIsTUFBZSxjQUFjO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPbEMsYUFBb0IsTUFBTSxPQUFpRjtBQUN6RyxlQUFXLFFBQVEsT0FBTztBQUN4QixZQUFNLFNBQVMsTUFBTSxXQUFXLElBQUk7QUFDcEMsVUFBSSxDQUFDLE9BQU8sYUFBYSxHQUFHO0FBQzFCLGVBQU87QUFBQSxNQUNUO0FBQUEsSUFDRjtBQUVBLFdBQU8sY0FBYyxRQUFRO0FBQUEsRUFDL0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxPQUFjLFlBQTJCO0FBQ3ZDLFdBQU8sSUFBSSxvQkFBb0I7QUFBQSxFQUNqQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLE9BQWMsVUFBeUI7QUFDckMsV0FBTyxLQUFLLFFBQVEsS0FBSztBQUFBLEVBQzNCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRQSxPQUFjLGFBQWEsVUFBaUM7QUFDMUQsV0FBTyxJQUFJLG1CQUFtQixRQUFRO0FBQUEsRUFDeEM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFBLE9BQWMsUUFBUSxZQUFZLE1BQXFCO0FBQ3JELFdBQU8sSUFBSSxrQkFBa0IsU0FBUztBQUFBLEVBQ3hDO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFVTyxpQkFB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
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9jbGktdXRpbHMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyBmb3IgbWFuYWdpbmcgdGFzayByZXN1bHRzLCBpbmNsdWRpbmdcbiAqIHN1Y2Nlc3MsIGV4aXQgY29kZXMsIGFuZCBjaGFpbmluZyBtdWx0aXBsZSB0YXNrcy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuXG5pbXBvcnQgdHlwZSB7IE1heWJlUmV0dXJuIH0gZnJvbSAnLi4vdHlwZS50cyc7XG5cbmltcG9ydCB7IGVuYWJsZUxpYnJhcnlEZWJ1Z2dlcnMgfSBmcm9tICcuLi9kZWJ1Zy50cyc7XG5pbXBvcnQgeyBwcmludEVycm9yIH0gZnJvbSAnLi4vZXJyb3IudHMnO1xuaW1wb3J0IHsgbm9vcCB9IGZyb20gJy4uL2Z1bmN0aW9uLnRzJztcbmltcG9ydCB7IHJlcGxhY2VBbGwgfSBmcm9tICcuLi9zdHJpbmcudHMnO1xuXG4vKipcbiAqIEFic3RyYWN0IGNsYXNzIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0IG9mIGEgdGFzay4gSW5jbHVkZXMgbWV0aG9kcyBmb3IgaGFuZGxpbmcgc3VjY2VzcyxcbiAqIGV4aXQgY29kZXMsIGFuZCBjaGFpbmluZyB0YXNrcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENsaVRhc2tSZXN1bHQge1xuICAvKipcbiAgICogQ2hhaW5zIG11bHRpcGxlIHRhc2tzIHRvZ2V0aGVyLCBleGVjdXRpbmcgdGhlbSBzZXF1ZW50aWFsbHkgdW50aWwgb25lIGZhaWxzLlxuICAgKlxuICAgKiBAcGFyYW0gdGFza3MgLSBBbiBhcnJheSBvZiB0YXNrIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBhIHtAbGluayBDbGlUYXNrUmVzdWx0fSBvciBgdm9pZGAuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgZmlyc3QgZmFpbGVkIHtAbGluayBDbGlUYXNrUmVzdWx0fSBvciBhIHN1Y2Nlc3MgcmVzdWx0LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhc3luYyBjaGFpbih0YXNrczogKCgpID0+IFByb21pc2FibGU8TWF5YmVSZXR1cm48Q2xpVGFza1Jlc3VsdD4+KVtdKTogUHJvbWlzZTxDbGlUYXNrUmVzdWx0PiB7XG4gICAgZm9yIChjb25zdCB0YXNrIG9mIHRhc2tzKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB3cmFwUmVzdWx0KHRhc2spO1xuICAgICAgaWYgKCFyZXN1bHQuaXNTdWNjZXNzZnVsKCkpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gQ2xpVGFza1Jlc3VsdC5TdWNjZXNzKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHtAbGluayBDbGlUYXNrUmVzdWx0fSB0aGF0IGRvZXMgbm90IGV4aXQgdGhlIHByb2Nlc3MuXG4gICAqXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIENsaVRhc2tSZXN1bHR9IHRoYXQgZG9lcyBub3QgZXhpdCB0aGUgcHJvY2Vzcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgRG9Ob3RFeGl0KCk6IENsaVRhc2tSZXN1bHQge1xuICAgIHJldHVybiBuZXcgRG9Ob3RFeGl0VGFza1Jlc3VsdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgZmFpbHVyZSByZXN1bHQgb2YgYSBDTEkgdGFzay5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGZhaWx1cmUgcmVzdWx0LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBGYWlsdXJlKCk6IENsaVRhc2tSZXN1bHQge1xuICAgIHJldHVybiB0aGlzLlN1Y2Nlc3MoZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0gYmFzZWQgb24gYW4gZXhpdCBjb2RlLlxuICAgKlxuICAgKiBAcGFyYW0gZXhpdENvZGUgLSBUaGUgZXhpdCBjb2RlIHRvIHJlcHJlc2VudC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgQ2xpVGFza1Jlc3VsdH0gcmVwcmVzZW50aW5nIHRoZSBleGl0IGNvZGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIEZyb21FeGl0Q29kZShleGl0Q29kZTogbnVtYmVyKTogQ2xpVGFza1Jlc3VsdCB7XG4gICAgcmV0dXJuIG5ldyBFeGl0Q29kZVRhc2tSZXN1bHQoZXhpdENvZGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBDbGlUYXNrUmVzdWx0IHJlcHJlc2VudGluZyBhIHN1Y2Nlc3NmdWwgdGFzayByZXN1bHQuXG4gICAqXG4gICAqIEBwYXJhbSBpc1N1Y2Nlc3MgLSBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSB0YXNrIHdhcyBzdWNjZXNzZnVsLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICogQHJldHVybnMgQSBDbGlUYXNrUmVzdWx0IG9iamVjdCByZXByZXNlbnRpbmcgYSBzdWNjZXNzZnVsIHRhc2sgcmVzdWx0LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBTdWNjZXNzKGlzU3VjY2VzcyA9IHRydWUpOiBDbGlUYXNrUmVzdWx0IHtcbiAgICByZXR1cm4gbmV3IFN1Y2Nlc3NUYXNrUmVzdWx0KGlzU3VjY2Vzcyk7XG4gIH1cblxuICAvKipcbiAgICogRXhpdHMgdGhlIHByb2Nlc3MgYmFzZWQgb24gdGhlIHRhc2sgcmVzdWx0LlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGV4aXQoKTogdm9pZDtcblxuICAvKipcbiAgICogVGhyb3dzIGFuIGVycm9yIGlmIHRoZSB0YXNrIHdhcyBub3Qgc3VjY2Vzc2Z1bC5cbiAgICovXG4gIHB1YmxpYyB0aHJvd09uRmFpbHVyZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNTdWNjZXNzZnVsKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGFzayBmYWlsZWQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgdGFzayB3YXMgc3VjY2Vzc2Z1bC5cbiAgICpcbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSB0YXNrIHdhcyBzdWNjZXNzZnVsLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBpc1N1Y2Nlc3NmdWwoKTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBIHRhc2sgcmVzdWx0IHRoYXQgZG9lcyBub3QgZXhpdCB0aGUgcHJvY2Vzcy5cbiAqL1xuY2xhc3MgRG9Ob3RFeGl0VGFza1Jlc3VsdCBleHRlbmRzIENsaVRhc2tSZXN1bHQge1xuICAvKipcbiAgICogRG9lcyBub3QgZXhpdCB0aGUgcHJvY2Vzcy5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBleGl0KCk6IHZvaWQge1xuICAgIG5vb3AoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBpc1N1Y2Nlc3NmdWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuLyoqXG4gKiBBIHRhc2sgcmVzdWx0IGJhc2VkIG9uIGFuIGV4aXQgY29kZS5cbiAqL1xuY2xhc3MgRXhpdENvZGVUYXNrUmVzdWx0IGV4dGVuZHMgQ2xpVGFza1Jlc3VsdCB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGV4aXRDb2RlOiBudW1iZXIpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4aXRzIHRoZSBwcm9jZXNzIHdpdGggdGhlIHNwZWNpZmllZCBleGl0IGNvZGUuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZXhpdCgpOiB2b2lkIHtcbiAgICBwcm9jZXNzLmV4aXQodGhpcy5leGl0Q29kZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgaXNTdWNjZXNzZnVsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmV4aXRDb2RlID09PSAwO1xuICB9XG59XG5cbi8qKlxuICogQSB0YXNrIHJlc3VsdCBiYXNlZCBvbiBzdWNjZXNzIG9yIGZhaWx1cmUuXG4gKi9cbmNsYXNzIFN1Y2Nlc3NUYXNrUmVzdWx0IGV4dGVuZHMgQ2xpVGFza1Jlc3VsdCB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9pc1N1Y2Nlc3NmdWw6IGJvb2xlYW4pIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4aXRzIHRoZSBwcm9jZXNzIGJhc2VkIG9uIHRoZSBzdWNjZXNzIG9mIHRoZSB0YXNrLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGV4aXQoKTogdm9pZCB7XG4gICAgcHJvY2Vzcy5leGl0KHRoaXMuX2lzU3VjY2Vzc2Z1bCA/IDAgOiAxKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBpc1N1Y2Nlc3NmdWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzU3VjY2Vzc2Z1bDtcbiAgfVxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIGFycmF5IG9mIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgaW50byBhIHNpbmdsZSBjb21tYW5kLWxpbmUgc3RyaW5nXG4gKiB1c2luZyB0aGUgYENvbW1hbmRMaW5lVG9Bcmd2V2AgY29udmVudGlvbiAodGhlIHN0YW5kYXJkIHVzZWQgYnkgdGhlXG4gKiBNaWNyb3NvZnQgQyBydW50aW1lIGFuZCBtb3N0IFdpbmRvd3MgcHJvZ3JhbXMpLlxuICpcbiAqIEltcGxlbWVudHMgdGhlIEFyZ3ZRdW90ZSBhbGdvcml0aG0gZnJvbVxuICoge0BsaW5rIGh0dHBzOi8vbGVhcm4ubWljcm9zb2Z0LmNvbS9hcmNoaXZlL2Jsb2dzL3R3aXN0eWxpdHRsZXBhc3NhZ2VzYWxsYWxpa2UvZXZlcnlvbmUtcXVvdGVzLWNvbW1hbmQtbGluZS1hcmd1bWVudHMtdGhlLXdyb25nLXdheSB8IEV2ZXJ5b25lIHF1b3RlcyBjb21tYW5kIGxpbmUgYXJndW1lbnRzIHRoZSB3cm9uZyB3YXl9OlxuICogYmFja3NsYXNoZXMgYmVmb3JlIHF1b3RlcyBhbmQgYXQgdGhlIGVuZCBvZiBhIHF1b3RlZCBhcmd1bWVudCBhcmUgZG91YmxlZC5cbiAqXG4gKiBUaGlzIHByb2R1Y2VzIGEgc2hlbGwtYWdub3N0aWMgY29tbWFuZCBsaW5lLiBDYWxsZXJzIHRoYXQgcm91dGUgdGhyb3VnaFxuICogYSBzcGVjaWZpYyBzaGVsbCAoY21kLmV4ZSwgUG93ZXJTaGVsbCwgc2gpIG11c3QgYXBwbHkgc2hlbGwtc3BlY2lmaWNcbiAqIGVzY2FwaW5nIG9uIHRvcCBcdTIwMTQgc2VlIHtAbGluayBjbWRFc2NhcGVDb21tYW5kTGluZX0uXG4gKlxuICogQHBhcmFtIGFyZ3MgLSBUaGUgYXJyYXkgb2YgY29tbWFuZC1saW5lIGFyZ3VtZW50cyB0byBjb252ZXJ0LlxuICogQHJldHVybnMgQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjb21tYW5kLWxpbmUgaW52b2NhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQ29tbWFuZExpbmUoYXJnczogc3RyaW5nW10pOiBzdHJpbmcge1xuICByZXR1cm4gYXJncy5tYXAoKGFyZykgPT4gYXJndlF1b3RlKGFyZykpLmpvaW4oJyAnKTtcbn1cblxuLyoqXG4gKiBRdW90ZXMgYSBzaW5nbGUgYXJndW1lbnQgc28gdGhhdCBgQ29tbWFuZExpbmVUb0FyZ3ZXYCB3aWxsIGRlY29kZSBpdFxuICogdW5jaGFuZ2VkLiBJbXBsZW1lbnRzIHRoZSBBcmd2UXVvdGUgYWxnb3JpdGhtIGZyb21cbiAqIHtAbGluayBodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vYXJjaGl2ZS9ibG9ncy90d2lzdHlsaXR0bGVwYXNzYWdlc2FsbGFsaWtlL2V2ZXJ5b25lLXF1b3Rlcy1jb21tYW5kLWxpbmUtYXJndW1lbnRzLXRoZS13cm9uZy13YXkgfCBFdmVyeW9uZSBxdW90ZXMgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyB0aGUgd3Jvbmcgd2F5fS5cbiAqXG4gKiBAcGFyYW0gYXJnIC0gVGhlIHJhdyBhcmd1bWVudCBzdHJpbmcuXG4gKiBAcmV0dXJucyBUaGUgcXVvdGVkIGFyZ3VtZW50IHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gYXJndlF1b3RlKGFyZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKGFyZy5sZW5ndGggPiAwICYmICEvW1xcc1xcdFxcblxcdlwiXS8udGVzdChhcmcpKSB7XG4gICAgcmV0dXJuIGFyZztcbiAgfVxuXG4gIGNvbnN0IEJBQ0tTTEFTSF9FU0NBUEVfRkFDVE9SID0gMjtcbiAgbGV0IHJlc3VsdCA9ICdcIic7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IG51bUJhY2tzbGFzaGVzID0gMDtcbiAgICB3aGlsZSAoaSA8IGFyZy5sZW5ndGggJiYgYXJnW2ldID09PSAnXFxcXCcpIHtcbiAgICAgIGkrKztcbiAgICAgIG51bUJhY2tzbGFzaGVzKys7XG4gICAgfVxuXG4gICAgaWYgKGkgPT09IGFyZy5sZW5ndGgpIHtcbiAgICAgIHJlc3VsdCArPSAnXFxcXCcucmVwZWF0KG51bUJhY2tzbGFzaGVzICogQkFDS1NMQVNIX0VTQ0FQRV9GQUNUT1IpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY29uc3QgY2ggPSBhcmcuY2hhckF0KGkpO1xuICAgIGlmIChjaCA9PT0gJ1wiJykge1xuICAgICAgcmVzdWx0ICs9IGAkeydcXFxcJy5yZXBlYXQobnVtQmFja3NsYXNoZXMgKiBCQUNLU0xBU0hfRVNDQVBFX0ZBQ1RPUiArIDEpfVwiYDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ICs9ICdcXFxcJy5yZXBlYXQobnVtQmFja3NsYXNoZXMpICsgY2g7XG4gICAgfVxuICB9XG5cbiAgcmVzdWx0ICs9ICdcIic7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogTWF0Y2hlcyBgY21kLmV4ZWAgbWV0YWNoYXJhY3RlcnMgdGhhdCBtdXN0IGJlIGBeYC1lc2NhcGVkLlxuICovXG5jb25zdCBDTURfTUVUQV9SRSA9IC9bKCklIV5cIjw+JnxdL2c7XG5cbi8qKlxuICogRXNjYXBlcyBgY21kLmV4ZWAgbWV0YWNoYXJhY3RlcnMgd2l0aCBgXmAgc28gdGhhdCBgY21kLmV4ZWAgcGFzc2VzIHRoZW1cbiAqIHRocm91Z2ggbGl0ZXJhbGx5LiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGBjbWQuZXhlYCdzIGBcImAgaGFuZGxpbmdcbiAqIGRpZmZlcnMgZnJvbSBgQ29tbWFuZExpbmVUb0FyZ3ZXYCBhbmQgY2Fubm90IGJlIHJlbGllZCB1cG9uLlxuICpcbiAqIEFwcGx5IHRoaXMgdG8gYSBjb21tYW5kIGxpbmUgc3RyaW5nIHRoYXQgd2lsbCBiZSBleGVjdXRlZCB2aWEgYGNtZC5leGVgXG4gKiAoZS5nLiwgYHNwYXduKGNtZCwgW10sIHsgc2hlbGw6IHRydWUgfSlgIG9uIFdpbmRvd3MpLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kTGluZSAtIFRoZSBhbHJlYWR5LXF1b3RlZCBjb21tYW5kIGxpbmUgc3RyaW5nLlxuICogQHJldHVybnMgVGhlIHN0cmluZyB3aXRoIGFsbCBjbWQgbWV0YWNoYXJhY3RlcnMgYF5gLWVzY2FwZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbWRFc2NhcGVDb21tYW5kTGluZShjb21tYW5kTGluZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2VBbGwoe1xuICAgIHJlcGxhY2VyOiAnXiQmJyxcbiAgICBzZWFyY2hWYWx1ZTogQ01EX01FVEFfUkUsXG4gICAgc3RyOiBjb21tYW5kTGluZVxuICB9KTtcbn1cblxuLyoqXG4gKiBXcmFwcyBhIENMSSB0YXNrIGZ1bmN0aW9uIHRvIGVuc3VyZSBpdCBydW5zIHNhZmVseSBhbmQgaGFuZGxlcyBpdHMge0BsaW5rIENsaVRhc2tSZXN1bHR9LlxuICpcbiAqIEBwYXJhbSB0YXNrRm4gLSBUaGUgdGFzayBmdW5jdGlvbiB0byBleGVjdXRlLCB3aGljaCBtYXkgcmV0dXJuIGEge0BsaW5rIENsaVRhc2tSZXN1bHR9IG9yIGB2b2lkYC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdGFzayBpcyBjb21wbGV0ZWQgYW5kIGV4aXRzIHdpdGggdGhlIGFwcHJvcHJpYXRlIHN0YXR1cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyYXBDbGlUYXNrKHRhc2tGbjogKCkgPT4gUHJvbWlzYWJsZTxNYXliZVJldHVybjxDbGlUYXNrUmVzdWx0Pj4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgZW5hYmxlTGlicmFyeURlYnVnZ2VycygpO1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCB3cmFwUmVzdWx0KHRhc2tGbik7XG4gIHJlc3VsdC5leGl0KCk7XG59XG5cbi8qKlxuICogU2FmZWx5IGV4ZWN1dGVzIGEgdGFzayBmdW5jdGlvbiBhbmQgcmV0dXJucyBhIHtAbGluayBDbGlUYXNrUmVzdWx0fS4gSWYgdGhlIHRhc2sgZnVuY3Rpb24gdGhyb3dzIGFuIGVycm9yLFxuICogQW4gZXJyb3IgaXMgY2F1Z2h0LCBhbmQgYSBmYWlsdXJlIHtAbGluayBDbGlUYXNrUmVzdWx0fSBpcyByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gdGFza0ZuIC0gVGhlIHRhc2sgZnVuY3Rpb24gdG8gZXhlY3V0ZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCBhIHtAbGluayBDbGlUYXNrUmVzdWx0fSByZXByZXNlbnRpbmcgdGhlIG91dGNvbWUgb2YgdGhlIHRhc2suXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHdyYXBSZXN1bHQodGFza0ZuOiAoKSA9PiBQcm9taXNhYmxlPE1heWJlUmV0dXJuPENsaVRhc2tSZXN1bHQ+Pik6IFByb21pc2U8Q2xpVGFza1Jlc3VsdD4ge1xuICB0cnkge1xuICAgIHJldHVybiAoYXdhaXQgdGFza0ZuKCkpIGFzIENsaVRhc2tSZXN1bHQgfCB1bmRlZmluZWQgPz8gQ2xpVGFza1Jlc3VsdC5TdWNjZXNzKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcHJpbnRFcnJvcihuZXcgRXJyb3IoJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyB0YXNrIGV4ZWN1dGlvbicsIHsgY2F1c2U6IGVycm9yIH0pKTtcbiAgICByZXR1cm4gQ2xpVGFza1Jlc3VsdC5GYWlsdXJlKCk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBU0EsT0FBTyxhQUFhO0FBSXBCLFNBQVMsOEJBQThCO0FBQ3ZDLFNBQVMsa0JBQWtCO0FBQzNCLFNBQVMsWUFBWTtBQUNyQixTQUFTLGtCQUFrQjtBQU1wQixNQUFlLGNBQWM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9sQyxhQUFvQixNQUFNLE9BQWlGO0FBQ3pHLGVBQVcsUUFBUSxPQUFPO0FBQ3hCLFlBQU0sU0FBUyxNQUFNLFdBQVcsSUFBSTtBQUNwQyxVQUFJLENBQUMsT0FBTyxhQUFhLEdBQUc7QUFDMUIsZUFBTztBQUFBLE1BQ1Q7QUFBQSxJQUNGO0FBRUEsV0FBTyxjQUFjLFFBQVE7QUFBQSxFQUMvQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLE9BQWMsWUFBMkI7QUFDdkMsV0FBTyxJQUFJLG9CQUFvQjtBQUFBLEVBQ2pDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsT0FBYyxVQUF5QjtBQUNyQyxXQUFPLEtBQUssUUFBUSxLQUFLO0FBQUEsRUFDM0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFBLE9BQWMsYUFBYSxVQUFpQztBQUMxRCxXQUFPLElBQUksbUJBQW1CLFFBQVE7QUFBQSxFQUN4QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUUEsT0FBYyxRQUFRLFlBQVksTUFBcUI7QUFDckQsV0FBTyxJQUFJLGtC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
|
|
@@ -38,22 +38,32 @@ export interface ExecOptions {
|
|
|
38
38
|
readonly cwd?: string;
|
|
39
39
|
/**
|
|
40
40
|
* If `true`, suppresses the output of the command.
|
|
41
|
+
*
|
|
42
|
+
* @default `false`
|
|
41
43
|
*/
|
|
42
44
|
readonly isQuiet?: boolean;
|
|
43
45
|
/**
|
|
44
46
|
* If `true`, throws an error if the command fails.
|
|
47
|
+
*
|
|
48
|
+
* @default `true`
|
|
45
49
|
*/
|
|
46
50
|
readonly shouldFailIfCalledFromOutsideRoot?: boolean;
|
|
47
51
|
/**
|
|
48
52
|
* If `true`, ignores the exit code of the command.
|
|
53
|
+
*
|
|
54
|
+
* @default `false`
|
|
49
55
|
*/
|
|
50
56
|
readonly shouldIgnoreExitCode?: boolean;
|
|
51
57
|
/**
|
|
52
58
|
* If `false`, only returns the output of the command.
|
|
59
|
+
*
|
|
60
|
+
* @default `false`
|
|
53
61
|
*/
|
|
54
62
|
readonly shouldIncludeDetails?: boolean;
|
|
55
63
|
/**
|
|
56
64
|
* An input to be passed to the command.
|
|
65
|
+
*
|
|
66
|
+
* @default `''`
|
|
57
67
|
*/
|
|
58
68
|
readonly stdin?: string;
|
|
59
69
|
}
|
|
@@ -84,6 +94,8 @@ export interface ExecResult {
|
|
|
84
94
|
export interface ExecSimpleOptions extends ExecOptions {
|
|
85
95
|
/**
|
|
86
96
|
* Must be `false` or omitted to receive only stdout.
|
|
97
|
+
*
|
|
98
|
+
* @default `false`
|
|
87
99
|
*/
|
|
88
100
|
readonly shouldIncludeDetails?: false;
|
|
89
101
|
}
|
|
@@ -24,6 +24,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
24
24
|
import { spawn } from "node:child_process";
|
|
25
25
|
import process from "node:process";
|
|
26
26
|
import { getLibDebugger } from "../debug.mjs";
|
|
27
|
+
import { normalizeOptionalProperties } from "../object-utils.mjs";
|
|
27
28
|
import { trimEnd } from "../string.mjs";
|
|
28
29
|
import { assertNonNullable } from "../type-guards.mjs";
|
|
29
30
|
import {
|
|
@@ -46,7 +47,11 @@ function exec(command, options = {}) {
|
|
|
46
47
|
)
|
|
47
48
|
);
|
|
48
49
|
}
|
|
49
|
-
return execString(
|
|
50
|
+
return execString({
|
|
51
|
+
command: commandLine,
|
|
52
|
+
options,
|
|
53
|
+
rawArgs: args
|
|
54
|
+
});
|
|
50
55
|
}
|
|
51
56
|
const maxCommandLength = getMaxCommandLength();
|
|
52
57
|
if (command.length > maxCommandLength) {
|
|
@@ -56,9 +61,17 @@ function exec(command, options = {}) {
|
|
|
56
61
|
)
|
|
57
62
|
);
|
|
58
63
|
}
|
|
59
|
-
return execString(
|
|
64
|
+
return execString({
|
|
65
|
+
command,
|
|
66
|
+
options
|
|
67
|
+
});
|
|
60
68
|
}
|
|
61
|
-
function execString(
|
|
69
|
+
function execString(params) {
|
|
70
|
+
const {
|
|
71
|
+
command,
|
|
72
|
+
options = {},
|
|
73
|
+
rawArgs
|
|
74
|
+
} = params;
|
|
62
75
|
const {
|
|
63
76
|
cwd = process.cwd(),
|
|
64
77
|
isQuiet: quiet = false,
|
|
@@ -68,7 +81,11 @@ function execString(command, options = {}, rawArgs) {
|
|
|
68
81
|
} = options;
|
|
69
82
|
return new Promise((resolve, reject) => {
|
|
70
83
|
getLibDebugger("Exec")(`Executing command: ${command}`);
|
|
71
|
-
const child = spawnViaShell(
|
|
84
|
+
const child = spawnViaShell(normalizeOptionalProperties({
|
|
85
|
+
command,
|
|
86
|
+
cwd,
|
|
87
|
+
rawArgs
|
|
88
|
+
}));
|
|
72
89
|
let stdout = "";
|
|
73
90
|
let stderr = "";
|
|
74
91
|
child.stdin.write(stdin);
|
|
@@ -80,7 +97,10 @@ function execString(command, options = {}, rawArgs) {
|
|
|
80
97
|
stdout += data.toString("utf-8");
|
|
81
98
|
});
|
|
82
99
|
child.stdout.on("end", () => {
|
|
83
|
-
stdout = trimEnd(
|
|
100
|
+
stdout = trimEnd({
|
|
101
|
+
str: stdout,
|
|
102
|
+
suffix: "\n"
|
|
103
|
+
});
|
|
84
104
|
});
|
|
85
105
|
child.stderr.on("data", (data) => {
|
|
86
106
|
if (!quiet) {
|
|
@@ -89,7 +109,10 @@ function execString(command, options = {}, rawArgs) {
|
|
|
89
109
|
stderr += data.toString("utf-8");
|
|
90
110
|
});
|
|
91
111
|
child.stderr.on("end", () => {
|
|
92
|
-
stderr = trimEnd(
|
|
112
|
+
stderr = trimEnd({
|
|
113
|
+
str: stderr,
|
|
114
|
+
suffix: "\n"
|
|
115
|
+
});
|
|
93
116
|
});
|
|
94
117
|
child.on("close", (exitCode, exitSignal) => {
|
|
95
118
|
if (exitCode !== 0 && !ignoreExitCode) {
|
|
@@ -130,11 +153,15 @@ const CHILD_ENV = {
|
|
|
130
153
|
DEBUG_COLORS: "1",
|
|
131
154
|
...process.env
|
|
132
155
|
};
|
|
133
|
-
async function executeBatches(
|
|
156
|
+
async function executeBatches(params) {
|
|
157
|
+
const { baseCommand, batches, options } = params;
|
|
134
158
|
const results = [];
|
|
135
159
|
for (const batch of batches) {
|
|
136
160
|
const batchCommand = `${baseCommand} ${batch.join(" ")}`;
|
|
137
|
-
const result = await execString(
|
|
161
|
+
const result = await execString({
|
|
162
|
+
command: batchCommand,
|
|
163
|
+
options
|
|
164
|
+
});
|
|
138
165
|
if (typeof result === "string") {
|
|
139
166
|
results.push(result);
|
|
140
167
|
}
|
|
@@ -164,7 +191,10 @@ function handleBatchedCommand(parts, options) {
|
|
|
164
191
|
const maxCommandLength = getMaxCommandLength();
|
|
165
192
|
const fullCommand = `${baseCommand} ${execArg.batchedArgs.join(" ")}`;
|
|
166
193
|
if (fullCommand.length <= maxCommandLength) {
|
|
167
|
-
return execString(
|
|
194
|
+
return execString({
|
|
195
|
+
command: fullCommand,
|
|
196
|
+
options
|
|
197
|
+
});
|
|
168
198
|
}
|
|
169
199
|
const batches = [];
|
|
170
200
|
let currentBatch = [];
|
|
@@ -187,12 +217,17 @@ function handleBatchedCommand(parts, options) {
|
|
|
187
217
|
if (currentBatch.length > 0) {
|
|
188
218
|
batches.push(currentBatch);
|
|
189
219
|
}
|
|
190
|
-
return executeBatches(
|
|
220
|
+
return executeBatches({
|
|
221
|
+
baseCommand,
|
|
222
|
+
batches,
|
|
223
|
+
options
|
|
224
|
+
});
|
|
191
225
|
}
|
|
192
226
|
function isExecArg(part) {
|
|
193
227
|
return typeof part === "object" && "batchedArgs" in part;
|
|
194
228
|
}
|
|
195
|
-
function spawnViaShell(
|
|
229
|
+
function spawnViaShell(params) {
|
|
230
|
+
const { command, cwd, rawArgs } = params;
|
|
196
231
|
if (process.platform === "win32" && command.includes("\n")) {
|
|
197
232
|
if (!rawArgs) {
|
|
198
233
|
throw new Error("Commands containing newlines cannot be executed through cmd.exe on Windows. Pass an argument array instead of a string.");
|
|
@@ -216,4 +251,4 @@ function spawnViaShell(command, cwd, rawArgs) {
|
|
|
216
251
|
export {
|
|
217
252
|
exec
|
|
218
253
|
};
|
|
219
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9leGVjLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGV4ZWN1dGluZyBjb21tYW5kcy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IENoaWxkUHJvY2Vzc1dpdGhvdXROdWxsU3RyZWFtcyB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2Vzcyc7XG5cbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5cbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnLi4vZGVidWcudHMnO1xuaW1wb3J0IHsgdHJpbUVuZCB9IGZyb20gJy4uL3N0cmluZy50cyc7XG5pbXBvcnQgeyBhc3NlcnROb25OdWxsYWJsZSB9IGZyb20gJy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7XG4gIGNtZEVzY2FwZUNvbW1hbmRMaW5lLFxuICB0b0NvbW1hbmRMaW5lXG59IGZyb20gJy4vY2xpLXV0aWxzLnRzJztcblxuLyoqXG4gKiBBIGNvbW1hbmQgcGFydDogZWl0aGVyIGEgcGxhaW4gc3RyaW5nIG9yIGFuIHtAbGluayBFeGVjQXJnfSB3aXRoIGJhdGNoZWQgYXJndW1lbnRzLlxuICovXG5leHBvcnQgdHlwZSBDb21tYW5kUGFydCA9IEV4ZWNBcmcgfCBzdHJpbmc7XG5cbi8qKlxuICogQSBjb21tYW5kIGFyZ3VtZW50IHRoYXQgY29udGFpbnMgYSBsaXN0IG9mIGFyZ3MgdG8gYmUgYmF0Y2hlZC5cbiAqIElmIHRoZSBleHBhbmRlZCBjb21tYW5kIGV4Y2VlZHMgdGhlIHBsYXRmb3JtJ3MgbWF4IGNvbW1hbmQgbGVuZ3RoLFxuICogdGhlIGJhdGNoZWQgYXJncyBhcmUgc3BsaXQgaW50byBzZXF1ZW50aWFsIGV4ZWN1dGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhlY0FyZyB7XG4gIC8qKlxuICAgKiBUaGUgYXJndW1lbnRzIHRvIGJhdGNoLlxuICAgKi9cbiAgcmVhZG9ubHkgYmF0Y2hlZEFyZ3M6IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBleGVjfSB0aGF0IHJldHVybiBkZXRhaWxlZCByZXN1bHRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNEZXRhaWxlZE9wdGlvbnMgZXh0ZW5kcyBFeGVjT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBNdXN0IGJlIGB0cnVlYCB0byByZWNlaXZlIGRldGFpbGVkIHJlc3VsdHMuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRJbmNsdWRlRGV0YWlsczogdHJ1ZTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBleGVjdXRpbmcgYSBjb21tYW5kLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNPcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgY3VycmVudCB3b3JraW5nIGZvbGRlciBmb3IgdGhlIGNvbW1hbmQgZXhlY3V0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY3dkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHN1cHByZXNzZXMgdGhlIG91dHB1dCBvZiB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IGlzUXVpZXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRocm93cyBhbiBlcnJvciBpZiB0aGUgY29tbWFuZCBmYWlscy5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEZhaWxJZkNhbGxlZEZyb21PdXRzaWRlUm9vdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgaWdub3JlcyB0aGUgZXhpdCBjb2RlIG9mIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSWdub3JlRXhpdENvZGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgZmFsc2VgLCBvbmx5IHJldHVybnMgdGhlIG91dHB1dCBvZiB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEluY2x1ZGVEZXRhaWxzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQW4gaW5wdXQgdG8gYmUgcGFzc2VkIHRvIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RkaW4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSByZXN1bHQgb2Yge0BsaW5rIGV4ZWN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNSZXN1bHQge1xuICAvKipcbiAgICogQW4gZXhpdCBjb2RlIG9mIHRoZSBjb21tYW5kLiBBIHZhbHVlIG9mIGBudWxsYCBpbmRpY2F0ZXMgdGhhdCB0aGUgcHJvY2VzcyBkaWQgbm90IGV4aXQgbm9ybWFsbHkuXG4gICAqL1xuICByZWFkb25seSBleGl0Q29kZTogbnVsbCB8IG51bWJlcjtcblxuICAvKipcbiAgICogQSBzaWduYWwgdGhhdCBjYXVzZWQgdGhlIHByb2Nlc3MgdG8gYmUgdGVybWluYXRlZC4gQSB2YWx1ZSBvZiBgbnVsbGAgaW5kaWNhdGVzIHRoYXQgbm8gc2lnbmFsIHdhcyByZWNlaXZlZC5cbiAgICovXG4gIHJlYWRvbmx5IGV4aXRTaWduYWw6IE5vZGVKUy5TaWduYWxzIHwgbnVsbDtcblxuICAvKipcbiAgICogQSBzdGFuZGFyZCBlcnJvciBvdXRwdXQgZnJvbSB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IHN0ZGVycjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHN0YW5kYXJkIG91dHB1dCBmcm9tIHRoZSBjb21tYW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgc3Rkb3V0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGV4ZWN9IHRoYXQgcmV0dXJuIG9ubHkgc3Rkb3V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNTaW1wbGVPcHRpb25zIGV4dGVuZHMgRXhlY09wdGlvbnMge1xuICAvKipcbiAgICogTXVzdCBiZSBgZmFsc2VgIG9yIG9taXR0ZWQgdG8gcmVjZWl2ZSBvbmx5IHN0ZG91dC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEluY2x1ZGVEZXRhaWxzPzogZmFsc2U7XG59XG5cbi8qKlxuICogRXhlY3V0ZXMgYSBjb21tYW5kLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgdG8gZXhlY3V0ZS4gSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZXhlY3V0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQuXG4gKiBAdGhyb3dzIElmIHRoZSBjb21tYW5kIGZhaWxzIHdpdGggYSBub24temVybyBleGl0IGNvZGUgYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGBmYWxzZWAuXG4gKiAgICAgICAgIFRoZSBlcnJvciBtZXNzYWdlIGluY2x1ZGVzIHRoZSBleGl0IGNvZGUgYW5kIHN0ZGVyci5cbiAqICAgICAgICAgSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgZXhlY3V0aW9uIGFuZCBpZ25vcmVFeGl0Q29kZSBpcyBgdHJ1ZWAsXG4gKiAgICAgICAgIHRoZSBlcnJvciBpcyByZXNvbHZlZCB3aXRoIHRoZSBzdGRvdXQgYW5kIHN0ZGVyci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4ZWMoY29tbWFuZDogQ29tbWFuZFBhcnRbXSB8IHN0cmluZywgb3B0aW9ucz86IEV4ZWNTaW1wbGVPcHRpb25zKTogUHJvbWlzZTxzdHJpbmc+O1xuLyoqXG4gKiBFeGVjdXRlcyBhIGNvbW1hbmQuXG4gKlxuICogQHBhcmFtIGNvbW1hbmQgLSBUaGUgY29tbWFuZCB0byBleGVjdXRlLiBJdCBjYW4gYmUgYSBzdHJpbmcgb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBleGVjdXRpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggRXhlY1Jlc3VsdCBvYmplY3QuXG4gKiAgICAgICAgICBUaGUgRXhlY1Jlc3VsdCBvYmplY3QgY29udGFpbnMgdGhlIGV4aXQgY29kZSwgZXhpdCBzaWduYWwsIHN0ZGVyciwgYW5kIHN0ZG91dC5cbiAqIEB0aHJvd3MgSWYgdGhlIGNvbW1hbmQgZmFpbHMgd2l0aCBhIG5vbi16ZXJvIGV4aXQgY29kZSBhbmQgaWdub3JlRXhpdENvZGUgaXMgYGZhbHNlYC5cbiAqICAgICAgICAgVGhlIGVycm9yIG1lc3NhZ2UgaW5jbHVkZXMgdGhlIGV4aXQgY29kZSBhbmQgc3RkZXJyLlxuICogICAgICAgICBJZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBleGVjdXRpb24gYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGB0cnVlYCxcbiAqICAgICAgICAgdGhlIGVycm9yIGlzIHJlc29sdmVkIHdpdGggdGhlIHN0ZG91dCBhbmQgc3RkZXJyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhlYyhjb21tYW5kOiBDb21tYW5kUGFydFtdIHwgc3RyaW5nLCBvcHRpb25zOiBFeGVjRGV0YWlsZWRPcHRpb25zKTogUHJvbWlzZTxFeGVjUmVzdWx0Pjtcbi8qKlxuICogRXhlY3V0ZXMgYSBjb21tYW5kLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgdG8gZXhlY3V0ZS4gSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZXhlY3V0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQgb3IgYW4gRXhlY1Jlc3VsdCBvYmplY3QuXG4gKiAgICAgICAgICBUaGUgRXhlY1Jlc3VsdCBvYmplY3QgY29udGFpbnMgdGhlIGV4aXQgY29kZSwgZXhpdCBzaWduYWwsIHN0ZGVyciwgYW5kIHN0ZG91dC5cbiAqIEB0aHJvd3MgSWYgdGhlIGNvbW1hbmQgZmFpbHMgd2l0aCBhIG5vbi16ZXJvIGV4aXQgY29kZSBhbmQgaWdub3JlRXhpdENvZGUgaXMgYGZhbHNlYC5cbiAqICAgICAgICAgVGhlIGVycm9yIG1lc3NhZ2UgaW5jbHVkZXMgdGhlIGV4aXQgY29kZSBhbmQgc3RkZXJyLlxuICogICAgICAgICBJZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBleGVjdXRpb24gYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGB0cnVlYCxcbiAqICAgICAgICAgdGhlIGVycm9yIGlzIHJlc29sdmVkIHdpdGggdGhlIHN0ZG91dCBhbmQgc3RkZXJyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhlYyhjb21tYW5kOiBDb21tYW5kUGFydFtdIHwgc3RyaW5nLCBvcHRpb25zOiBFeGVjT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxFeGVjUmVzdWx0IHwgc3RyaW5nPiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNvbW1hbmQpKSB7XG4gICAgY29uc3QgYmF0Y2hSZXN1bHQgPSBoYW5kbGVCYXRjaGVkQ29tbWFuZChjb21tYW5kLCBvcHRpb25zKTtcbiAgICBpZiAoYmF0Y2hSZXN1bHQpIHtcbiAgICAgIHJldHVybiBiYXRjaFJlc3VsdDtcbiAgICB9XG4gICAgY29uc3QgYXJncyA9IGNvbW1hbmQuZmlsdGVyKChwYXJ0KTogcGFydCBpcyBzdHJpbmcgPT4gdHlwZW9mIHBhcnQgPT09ICdzdHJpbmcnKTtcbiAgICBjb25zdCBjb21tYW5kTGluZSA9IHRvQ29tbWFuZExpbmUoYXJncyk7XG5cbiAgICBjb25zdCBtYXhDb21tYW5kTGVuZ3RoID0gZ2V0TWF4Q29tbWFuZExlbmd0aCgpO1xuICAgIGlmIChjb21tYW5kTGluZS5sZW5ndGggPiBtYXhDb21tYW5kTGVuZ3RoKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICBgQ29tbWFuZCBsaW5lIGlzIHRvbyBsb25nICgke1N0cmluZyhjb21tYW5kTGluZS5sZW5ndGgpfSBjaGFycywgbWF4ICR7U3RyaW5nKG1heENvbW1hbmRMZW5ndGgpfSBvbiAke3Byb2Nlc3MucGxhdGZvcm19KS4gQ29uc2lkZXIgc3BsaXR0aW5nIGludG8gc21hbGxlciBiYXRjaGVzIG9yIHVzZSBFeGVjQXJnLmBcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXhlY1N0cmluZyhjb21tYW5kTGluZSwgb3B0aW9ucywgYXJncyk7XG4gIH1cblxuICBjb25zdCBtYXhDb21tYW5kTGVuZ3RoID0gZ2V0TWF4Q29tbWFuZExlbmd0aCgpO1xuICBpZiAoY29tbWFuZC5sZW5ndGggPiBtYXhDb21tYW5kTGVuZ3RoKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgbmV3IEVycm9yKFxuICAgICAgICBgQ29tbWFuZCBsaW5lIGlzIHRvbyBsb25nICgke1N0cmluZyhjb21tYW5kLmxlbmd0aCl9IGNoYXJzLCBtYXggJHtTdHJpbmcobWF4Q29tbWFuZExlbmd0aCl9IG9uICR7cHJvY2Vzcy5wbGF0Zm9ybX0pLiBDb25zaWRlciBzcGxpdHRpbmcgaW50byBzbWFsbGVyIGJhdGNoZXMgb3IgdXNlIEV4ZWNBcmcuYFxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gZXhlY1N0cmluZyhjb21tYW5kLCBvcHRpb25zKTtcbn1cblxuLyoqXG4gKiBFeGVjdXRlcyBhIHNpbmdsZSBzdHJpbmcgY29tbWFuZC5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBjb21tYW5kIHN0cmluZy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGV4ZWMgb3B0aW9ucy5cbiAqIEBwYXJhbSByYXdBcmdzIC0gVGhlIG9yaWdpbmFsIGFyZ3VtZW50IGFycmF5IChpZiBhdmFpbGFibGUpLCB1c2VkIGJ5IHRoZSBQb3dlclNoZWxsXG4gKiAgIGZhbGxiYWNrIHBhdGggdG8gcXVvdGUgYXJndW1lbnRzIHdpdGggUG93ZXJTaGVsbC1uYXRpdmUgc2luZ2xlIHF1b3Rlcy5cbiAqIEByZXR1cm5zIEEgUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIHJlc3VsdC5cbiAqL1xuZnVuY3Rpb24gZXhlY1N0cmluZyhjb21tYW5kOiBzdHJpbmcsIG9wdGlvbnM6IEV4ZWNPcHRpb25zID0ge30sIHJhd0FyZ3M/OiBzdHJpbmdbXSk6IFByb21pc2U8RXhlY1Jlc3VsdCB8IHN0cmluZz4ge1xuICBjb25zdCB7XG4gICAgY3dkID0gcHJvY2Vzcy5jd2QoKSxcbiAgICBpc1F1aWV0OiBxdWlldCA9IGZhbHNlLFxuICAgIHNob3VsZElnbm9yZUV4aXRDb2RlOiBpZ25vcmVFeGl0Q29kZSA9IGZhbHNlLFxuICAgIHNob3VsZEluY2x1ZGVEZXRhaWxzID0gZmFsc2UsXG4gICAgc3RkaW4gPSAnJ1xuICB9ID0gb3B0aW9ucztcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGdldExpYkRlYnVnZ2VyKCdFeGVjJykoYEV4ZWN1dGluZyBjb21tYW5kOiAke2NvbW1hbmR9YCk7XG5cbiAgICBjb25zdCBjaGlsZCA9IHNwYXduVmlhU2hlbGwoY29tbWFuZCwgY3dkLCByYXdBcmdzKTtcblxuICAgIGxldCBzdGRvdXQgPSAnJztcbiAgICBsZXQgc3RkZXJyID0gJyc7XG5cbiAgICBjaGlsZC5zdGRpbi53cml0ZShzdGRpbik7XG4gICAgY2hpbGQuc3RkaW4uZW5kKCk7XG5cbiAgICBjaGlsZC5zdGRvdXQub24oJ2RhdGEnLCAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgICBpZiAoIXF1aWV0KSB7XG4gICAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGRhdGEpO1xuICAgICAgfVxuICAgICAgc3Rkb3V0ICs9IGRhdGEudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5zdGRvdXQub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIHN0ZG91dCA9IHRyaW1FbmQoc3Rkb3V0LCAnXFxuJyk7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5zdGRlcnIub24oJ2RhdGEnLCAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgICBpZiAoIXF1aWV0KSB7XG4gICAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGRhdGEpO1xuICAgICAgfVxuICAgICAgc3RkZXJyICs9IGRhdGEudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5zdGRlcnIub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIHN0ZGVyciA9IHRyaW1FbmQoc3RkZXJyLCAnXFxuJyk7XG4gICAgfSk7XG5cbiAgICBjaGlsZC5vbignY2xvc2UnLCAoZXhpdENvZGUsIGV4aXRTaWduYWwpID0+IHtcbiAgICAgIGlmIChleGl0Q29kZSAhPT0gMCAmJiAhaWdub3JlRXhpdENvZGUpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgQ29tbWFuZCBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJHtleGl0Q29kZSA/IFN0cmluZyhleGl0Q29kZSkgOiAnKG51bGwpJ31cXG4ke3N0ZGVycn1gKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFzaG91bGRJbmNsdWRlRGV0YWlscykge1xuICAgICAgICByZXNvbHZlKHN0ZG91dCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlc29sdmUoe1xuICAgICAgICBleGl0Q29kZSxcbiAgICAgICAgZXhpdFNpZ25hbCxcbiAgICAgICAgc3RkZXJyLFxuICAgICAgICBzdGRvdXRcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY2hpbGQub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgaWYgKCFpZ25vcmVFeGl0Q29kZSkge1xuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXNob3VsZEluY2x1ZGVEZXRhaWxzKSB7XG4gICAgICAgIHJlc29sdmUoc3Rkb3V0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXNvbHZlKHtcbiAgICAgICAgZXhpdENvZGU6IG51bGwsXG4gICAgICAgIGV4aXRTaWduYWw6IG51bGwsXG4gICAgICAgIHN0ZGVycixcbiAgICAgICAgc3Rkb3V0XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogRGVmYXVsdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgcGFzc2VkIHRvIGNoaWxkIHByb2Nlc3Nlcy5cbiAqL1xuY29uc3QgQ0hJTERfRU5WID0ge1xuICBERUJVR19DT0xPUlM6ICcxJyxcbiAgLi4ucHJvY2Vzcy5lbnZcbn07XG5cbi8qKlxuICogRXhlY3V0ZXMgYmF0Y2hlZCBjb21tYW5kcyBzZXF1ZW50aWFsbHkgYW5kIGNvbmNhdGVuYXRlcyBzdGRvdXQuXG4gKlxuICogQHBhcmFtIGJhc2VDb21tYW5kIC0gVGhlIGJhc2UgY29tbWFuZCB3aXRob3V0IGJhdGNoZWQgYXJncy5cbiAqIEBwYXJhbSBiYXRjaGVzIC0gVGhlIGJhdGNoZXMgb2YgYXJncy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGV4ZWMgb3B0aW9ucy5cbiAqIEByZXR1cm5zIEEgUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGNvbmNhdGVuYXRlZCByZXN1bHQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVCYXRjaGVzKGJhc2VDb21tYW5kOiBzdHJpbmcsIGJhdGNoZXM6IHN0cmluZ1tdW10sIG9wdGlvbnM6IEV4ZWNPcHRpb25zKTogUHJvbWlzZTxFeGVjUmVzdWx0IHwgc3RyaW5nPiB7XG4gIGNvbnN0IHJlc3VsdHM6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIChjb25zdCBiYXRjaCBvZiBiYXRjaGVzKSB7XG4gICAgY29uc3QgYmF0Y2hDb21tYW5kID0gYCR7YmFzZUNvbW1hbmR9ICR7YmF0Y2guam9pbignICcpfWA7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXhlY1N0cmluZyhiYXRjaENvbW1hbmQsIG9wdGlvbnMpO1xuICAgIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJykge1xuICAgICAgcmVzdWx0cy5wdXNoKHJlc3VsdCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdGlvbnMuc2hvdWxkSW5jbHVkZURldGFpbHMpIHtcbiAgICByZXR1cm4geyBleGl0Q29kZTogMCwgZXhpdFNpZ25hbDogbnVsbCwgc3RkZXJyOiAnJywgc3Rkb3V0OiByZXN1bHRzLmpvaW4oJ1xcbicpIH07XG4gIH1cblxuICByZXR1cm4gcmVzdWx0cy5qb2luKCdcXG4nKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBtYXggY29tbWFuZCBsaW5lIGxlbmd0aC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgbWF4IGNvbW1hbmQgbGVuZ3RoIGluIGNoYXJhY3RlcnMuXG4gKi9cbmZ1bmN0aW9uIGdldE1heENvbW1hbmRMZW5ndGgoKTogbnVtYmVyIHtcbiAgY29uc3QgV0lORE9XU19NQVhfQ09NTUFORF9MRU5HVEggPSA4MTkxO1xuICBjb25zdCBVTklYX01BWF9DT01NQU5EX0xFTkdUSCA9IDEzMTA3MjtcbiAgcmV0dXJuIHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyBXSU5ET1dTX01BWF9DT01NQU5EX0xFTkdUSCA6IFVOSVhfTUFYX0NPTU1BTkRfTEVOR1RIO1xufVxuXG4vKipcbiAqIEhhbmRsZXMgYSBjb21tYW5kIGFycmF5IHRoYXQgbWF5IGNvbnRhaW4gYW4ge0BsaW5rIEV4ZWNBcmd9LlxuICogUmV0dXJucyBhIFByb21pc2UgaWYgYmF0Y2hpbmcgaXMgbmVlZGVkLCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgY29tbWFuZFxuICogaGFzIG5vIEV4ZWNBcmcgYW5kIHNob3VsZCBiZSBwcm9jZXNzZWQgbm9ybWFsbHkuXG4gKlxuICogQHBhcmFtIHBhcnRzIC0gVGhlIGNvbW1hbmQgcGFydHMuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBleGVjIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBBIFByb21pc2UgaWYgYmF0Y2hpbmcgaXMgaGFuZGxlZCwgb3IgYHVuZGVmaW5lZGAuXG4gKi9cbmZ1bmN0aW9uIGhhbmRsZUJhdGNoZWRDb21tYW5kKHBhcnRzOiBDb21tYW5kUGFydFtdLCBvcHRpb25zOiBFeGVjT3B0aW9ucyk6IFByb21pc2U8RXhlY1Jlc3VsdCB8IHN0cmluZz4gfCB1bmRlZmluZWQge1xuICBjb25zdCBleGVjQXJncyA9IHBhcnRzLmZpbHRlcihpc0V4ZWNBcmcpO1xuICBpZiAoZXhlY0FyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBpZiAoZXhlY0FyZ3MubGVuZ3RoID4gMSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ09ubHkgb25lIEV4ZWNBcmcgd2l0aCBiYXRjaGVkQXJncyBpcyBhbGxvd2VkIHBlciBjb21tYW5kJykpO1xuICB9XG5cbiAgY29uc3QgZXhlY0FyZyA9IGV4ZWNBcmdzWzBdO1xuICBhc3NlcnROb25OdWxsYWJsZShleGVjQXJnKTtcbiAgY29uc3Qgc3RhdGljUGFydHMgPSBwYXJ0cy5maWx0ZXIoKHBhcnQpOiBwYXJ0IGlzIHN0cmluZyA9PiB0eXBlb2YgcGFydCA9PT0gJ3N0cmluZycpO1xuICBjb25zdCBiYXNlQ29tbWFuZCA9IHRvQ29tbWFuZExpbmUoc3RhdGljUGFydHMpO1xuICBjb25zdCBtYXhDb21tYW5kTGVuZ3RoID0gZ2V0TWF4Q29tbWFuZExlbmd0aCgpO1xuXG4gIC8vIFRyeSBleHBhbmRpbmcgYWxsIGFyZ3MgaW5saW5lXG4gIGNvbnN0IGZ1bGxDb21tYW5kID0gYCR7YmFzZUNvbW1hbmR9ICR7ZXhlY0FyZy5iYXRjaGVkQXJncy5qb2luKCcgJyl9YDtcbiAgaWYgKGZ1bGxDb21tYW5kLmxlbmd0aCA8PSBtYXhDb21tYW5kTGVuZ3RoKSB7XG4gICAgcmV0dXJuIGV4ZWNTdHJpbmcoZnVsbENvbW1hbmQsIG9wdGlvbnMpO1xuICB9XG5cbiAgLy8gU3BsaXQgaW50byBiYXRjaGVzXG4gIGNvbnN0IGJhdGNoZXM6IHN0cmluZ1tdW10gPSBbXTtcbiAgbGV0IGN1cnJlbnRCYXRjaDogc3RyaW5nW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGFyZyBvZiBleGVjQXJnLmJhdGNoZWRBcmdzKSB7XG4gICAgY29uc3QgdGVudGF0aXZlID0gYCR7YmFzZUNvbW1hbmR9ICR7Wy4uLmN1cnJlbnRCYXRjaCwgYXJnXS5qb2luKCcgJyl9YDtcbiAgICBpZiAodGVudGF0aXZlLmxlbmd0aCA+IG1heENvbW1hbmRMZW5ndGgpIHtcbiAgICAgIGlmIChjdXJyZW50QmF0Y2gubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgQ2Fubm90IHNwbGl0IGNvbW1hbmQgaW50byBiYXRjaGVzOiBhIHNpbmdsZSBhcmd1bWVudCAoJHtTdHJpbmcoYXJnLmxlbmd0aCl9IGNoYXJzKSBwbHVzIHRoZSBiYXNlIGNvbW1hbmQgKCR7U3RyaW5nKGJhc2VDb21tYW5kLmxlbmd0aCl9IGNoYXJzKSBleGNlZWRzIHRoZSBtYXggY29tbWFuZCBsZW5ndGggKCR7U3RyaW5nKG1heENvbW1hbmRMZW5ndGgpfSkuYFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGJhdGNoZXMucHVzaChjdXJyZW50QmF0Y2gpO1xuICAgICAgY3VycmVudEJhdGNoID0gW2FyZ107XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnRCYXRjaC5wdXNoKGFyZyk7XG4gICAgfVxuICB9XG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBBbHdheXMgdHJ1ZSBhZnRlciB0aGUgbG9vcDsgYmF0Y2hlZEFyZ3MgaXMgbm9uLWVtcHR5IGF0IHRoaXMgcG9pbnQuICovXG4gIGlmIChjdXJyZW50QmF0Y2gubGVuZ3RoID4gMCkge1xuICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgYmF0Y2hlcy5wdXNoKGN1cnJlbnRCYXRjaCk7XG4gIH1cblxuICByZXR1cm4gZXhlY3V0ZUJhdGNoZXMoYmFzZUNvbW1hbmQsIGJhdGNoZXMsIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGNvbW1hbmQgcGFydCBpcyBhbiB7QGxpbmsgRXhlY0FyZ30uXG4gKlxuICogQHBhcmFtIHBhcnQgLSBUaGUgY29tbWFuZCBwYXJ0IHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgcGFydCBpcyBhbiBFeGVjQXJnLlxuICovXG5mdW5jdGlvbiBpc0V4ZWNBcmcocGFydDogQ29tbWFuZFBhcnQpOiBwYXJ0IGlzIEV4ZWNBcmcge1xuICByZXR1cm4gdHlwZW9mIHBhcnQgPT09ICdvYmplY3QnICYmICdiYXRjaGVkQXJncycgaW4gcGFydDtcbn1cblxuLyoqXG4gKiBTcGF3bnMgYSBjaGlsZCBwcm9jZXNzIHZpYSB0aGUgYXBwcm9wcmlhdGUgc2hlbGwuXG4gKlxuICogT24gV2luZG93cywgaWYgdGhlIGNvbW1hbmQgY29udGFpbnMgbmV3bGluZXMgKHdoaWNoIGBjbWQuZXhlYCBjYW5ub3QgaGFuZGxlKVxuICogYW5kIHRoZSByYXcgYXJncyBhcnJheSBpcyBhdmFpbGFibGUsIHNwYXducyB0aGUgcHJvY2VzcyBkaXJlY3RseSB3aXRob3V0XG4gKiBhbnkgc2hlbGwgXHUyMDE0IHBhc3NpbmcgYXJncyB2aWEgYENyZWF0ZVByb2Nlc3NgLCB3aGljaCBhdm9pZHMgYWxsIHF1b3RpbmcgaXNzdWVzLlxuICpcbiAqIE9uIFdpbmRvd3MgKGNtZC5leGUgcGF0aCksIGFwcGxpZXMgYF5gLWVzY2FwaW5nIGZvciBjbWQgbWV0YWNoYXJhY3RlcnMuXG4gKlxuICogQHBhcmFtIGNvbW1hbmQgLSBUaGUgY29tbWFuZCBzdHJpbmcgdG8gZXhlY3V0ZS5cbiAqIEBwYXJhbSBjd2QgLSBUaGUgd29ya2luZyBkaXJlY3RvcnkuXG4gKiBAcGFyYW0gcmF3QXJncyAtIFRoZSBvcmlnaW5hbCBhcmd1bWVudCBhcnJheSAoaWYgYXZhaWxhYmxlKS5cbiAqIEByZXR1cm5zIFRoZSBzcGF3bmVkIGNoaWxkIHByb2Nlc3MuXG4gKi9cbmZ1bmN0aW9uIHNwYXduVmlhU2hlbGwoY29tbWFuZDogc3RyaW5nLCBjd2Q6IHN0cmluZywgcmF3QXJncz86IHN0cmluZ1tdKTogQ2hpbGRQcm9jZXNzV2l0aG91dE51bGxTdHJlYW1zIHtcbiAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgJiYgY29tbWFuZC5pbmNsdWRlcygnXFxuJykpIHtcbiAgICBpZiAoIXJhd0FyZ3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ29tbWFuZHMgY29udGFpbmluZyBuZXdsaW5lcyBjYW5ub3QgYmUgZXhlY3V0ZWQgdGhyb3VnaCBjbWQuZXhlIG9uIFdpbmRvd3MuIFBhc3MgYW4gYXJndW1lbnQgYXJyYXkgaW5zdGVhZCBvZiBhIHN0cmluZy4nKTtcbiAgICB9XG4gICAgY29uc3QgW3Byb2dyYW0sIC4uLmFyZ3NdID0gcmF3QXJncztcbiAgICBhc3NlcnROb25OdWxsYWJsZShwcm9ncmFtLCAnQ29tbWFuZCBhcnJheSBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICAgIHJldHVybiBzcGF3bihwcm9ncmFtLCBhcmdzLCB7XG4gICAgICBjd2QsXG4gICAgICBlbnY6IENISUxEX0VOVixcbiAgICAgIHN0ZGlvOiAncGlwZSdcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IHNoZWxsQ29tbWFuZCA9IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyBjbWRFc2NhcGVDb21tYW5kTGluZShjb21tYW5kKSA6IGNvbW1hbmQ7XG4gIHJldHVybiBzcGF3bihzaGVsbENvbW1hbmQsIFtdLCB7XG4gICAgY3dkLFxuICAgIGVudjogQ0hJTERfRU5WLFxuICAgIHNoZWxsOiB0cnVlLFxuICAgIHN0ZGlvOiAncGlw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
|
|
254
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9leGVjLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGV4ZWN1dGluZyBjb21tYW5kcy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IENoaWxkUHJvY2Vzc1dpdGhvdXROdWxsU3RyZWFtcyB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2Vzcyc7XG5cbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5cbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnLi4vZGVidWcudHMnO1xuaW1wb3J0IHsgbm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vb2JqZWN0LXV0aWxzLnRzJztcbmltcG9ydCB7IHRyaW1FbmQgfSBmcm9tICcuLi9zdHJpbmcudHMnO1xuaW1wb3J0IHsgYXNzZXJ0Tm9uTnVsbGFibGUgfSBmcm9tICcuLi90eXBlLWd1YXJkcy50cyc7XG5pbXBvcnQge1xuICBjbWRFc2NhcGVDb21tYW5kTGluZSxcbiAgdG9Db21tYW5kTGluZVxufSBmcm9tICcuL2NsaS11dGlscy50cyc7XG5cbi8qKlxuICogQSBjb21tYW5kIHBhcnQ6IGVpdGhlciBhIHBsYWluIHN0cmluZyBvciBhbiB7QGxpbmsgRXhlY0FyZ30gd2l0aCBiYXRjaGVkIGFyZ3VtZW50cy5cbiAqL1xuZXhwb3J0IHR5cGUgQ29tbWFuZFBhcnQgPSBFeGVjQXJnIHwgc3RyaW5nO1xuXG4vKipcbiAqIEEgY29tbWFuZCBhcmd1bWVudCB0aGF0IGNvbnRhaW5zIGEgbGlzdCBvZiBhcmdzIHRvIGJlIGJhdGNoZWQuXG4gKiBJZiB0aGUgZXhwYW5kZWQgY29tbWFuZCBleGNlZWRzIHRoZSBwbGF0Zm9ybSdzIG1heCBjb21tYW5kIGxlbmd0aCxcbiAqIHRoZSBiYXRjaGVkIGFyZ3MgYXJlIHNwbGl0IGludG8gc2VxdWVudGlhbCBleGVjdXRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWNBcmcge1xuICAvKipcbiAgICogVGhlIGFyZ3VtZW50cyB0byBiYXRjaC5cbiAgICovXG4gIHJlYWRvbmx5IGJhdGNoZWRBcmdzOiByZWFkb25seSBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgZXhlY30gdGhhdCByZXR1cm4gZGV0YWlsZWQgcmVzdWx0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGVjRGV0YWlsZWRPcHRpb25zIGV4dGVuZHMgRXhlY09wdGlvbnMge1xuICAvKipcbiAgICogTXVzdCBiZSBgdHJ1ZWAgdG8gcmVjZWl2ZSBkZXRhaWxlZCByZXN1bHRzLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSW5jbHVkZURldGFpbHM6IHRydWU7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgZXhlY3V0aW5nIGEgY29tbWFuZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGVjT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBIGN1cnJlbnQgd29ya2luZyBmb2xkZXIgZm9yIHRoZSBjb21tYW5kIGV4ZWN1dGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGN3ZD86IHN0cmluZztcblxuICAvKipcbiAgICogSWYgYHRydWVgLCBzdXBwcmVzc2VzIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IGlzUXVpZXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRocm93cyBhbiBlcnJvciBpZiB0aGUgY29tbWFuZCBmYWlscy5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRGYWlsSWZDYWxsZWRGcm9tT3V0c2lkZVJvb3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGlnbm9yZXMgdGhlIGV4aXQgY29kZSBvZiB0aGUgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSWdub3JlRXhpdENvZGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgZmFsc2VgLCBvbmx5IHJldHVybnMgdGhlIG91dHB1dCBvZiB0aGUgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSW5jbHVkZURldGFpbHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbiBpbnB1dCB0byBiZSBwYXNzZWQgdG8gdGhlIGNvbW1hbmQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAnJ2BcbiAgICovXG4gIHJlYWRvbmx5IHN0ZGluPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgcmVzdWx0IG9mIHtAbGluayBleGVjfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGVjUmVzdWx0IHtcbiAgLyoqXG4gICAqIEFuIGV4aXQgY29kZSBvZiB0aGUgY29tbWFuZC4gQSB2YWx1ZSBvZiBgbnVsbGAgaW5kaWNhdGVzIHRoYXQgdGhlIHByb2Nlc3MgZGlkIG5vdCBleGl0IG5vcm1hbGx5LlxuICAgKi9cbiAgcmVhZG9ubHkgZXhpdENvZGU6IG51bGwgfCBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgc2lnbmFsIHRoYXQgY2F1c2VkIHRoZSBwcm9jZXNzIHRvIGJlIHRlcm1pbmF0ZWQuIEEgdmFsdWUgb2YgYG51bGxgIGluZGljYXRlcyB0aGF0IG5vIHNpZ25hbCB3YXMgcmVjZWl2ZWQuXG4gICAqL1xuICByZWFkb25seSBleGl0U2lnbmFsOiBOb2RlSlMuU2lnbmFscyB8IG51bGw7XG5cbiAgLyoqXG4gICAqIEEgc3RhbmRhcmQgZXJyb3Igb3V0cHV0IGZyb20gdGhlIGNvbW1hbmQuXG4gICAqL1xuICByZWFkb25seSBzdGRlcnI6IHN0cmluZztcblxuICAvKipcbiAgICogQSBzdGFuZGFyZCBvdXRwdXQgZnJvbSB0aGUgY29tbWFuZC5cbiAgICovXG4gIHJlYWRvbmx5IHN0ZG91dDogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBleGVjfSB0aGF0IHJldHVybiBvbmx5IHN0ZG91dC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGVjU2ltcGxlT3B0aW9ucyBleHRlbmRzIEV4ZWNPcHRpb25zIHtcbiAgLyoqXG4gICAqIE11c3QgYmUgYGZhbHNlYCBvciBvbWl0dGVkIHRvIHJlY2VpdmUgb25seSBzdGRvdXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEluY2x1ZGVEZXRhaWxzPzogZmFsc2U7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGV4ZWNTdHJpbmd9LlxuICovXG5pbnRlcmZhY2UgRXhlY1N0cmluZ1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgY29tbWFuZCBzdHJpbmcuXG4gICAqL1xuICByZWFkb25seSBjb21tYW5kOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBleGVjIG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBvcHRpb25zPzogRXhlY09wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFRoZSBvcmlnaW5hbCBhcmd1bWVudCBhcnJheSAoaWYgYXZhaWxhYmxlKSwgdXNlZCBieSB0aGUgUG93ZXJTaGVsbFxuICAgKiBmYWxsYmFjayBwYXRoIHRvIHF1b3RlIGFyZ3VtZW50cyB3aXRoIFBvd2VyU2hlbGwtbmF0aXZlIHNpbmdsZSBxdW90ZXMuXG4gICAqL1xuICByZWFkb25seSByYXdBcmdzPzogc3RyaW5nW107XG59XG4vKipcbiAqIEV4ZWN1dGVzIGEgY29tbWFuZC5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBjb21tYW5kIHRvIGV4ZWN1dGUuIEl0IGNhbiBiZSBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGV4ZWN1dGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgb3V0cHV0IG9mIHRoZSBjb21tYW5kLlxuICogQHRocm93cyBJZiB0aGUgY29tbWFuZCBmYWlscyB3aXRoIGEgbm9uLXplcm8gZXhpdCBjb2RlIGFuZCBpZ25vcmVFeGl0Q29kZSBpcyBgZmFsc2VgLlxuICogICAgICAgICBUaGUgZXJyb3IgbWVzc2FnZSBpbmNsdWRlcyB0aGUgZXhpdCBjb2RlIGFuZCBzdGRlcnIuXG4gKiAgICAgICAgIElmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBhbmQgaWdub3JlRXhpdENvZGUgaXMgYHRydWVgLFxuICogICAgICAgICB0aGUgZXJyb3IgaXMgcmVzb2x2ZWQgd2l0aCB0aGUgc3Rkb3V0IGFuZCBzdGRlcnIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleGVjKGNvbW1hbmQ6IENvbW1hbmRQYXJ0W10gfCBzdHJpbmcsIG9wdGlvbnM/OiBFeGVjU2ltcGxlT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPjtcbi8qKlxuICogRXhlY3V0ZXMgYSBjb21tYW5kLlxuICpcbiAqIEBwYXJhbSBjb21tYW5kIC0gVGhlIGNvbW1hbmQgdG8gZXhlY3V0ZS4gSXQgY2FuIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZXhlY3V0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aXRoIEV4ZWNSZXN1bHQgb2JqZWN0LlxuICogICAgICAgICAgVGhlIEV4ZWNSZXN1bHQgb2JqZWN0IGNvbnRhaW5zIHRoZSBleGl0IGNvZGUsIGV4aXQgc2lnbmFsLCBzdGRlcnIsIGFuZCBzdGRvdXQuXG4gKiBAdGhyb3dzIElmIHRoZSBjb21tYW5kIGZhaWxzIHdpdGggYSBub24temVybyBleGl0IGNvZGUgYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGBmYWxzZWAuXG4gKiAgICAgICAgIFRoZSBlcnJvciBtZXNzYWdlIGluY2x1ZGVzIHRoZSBleGl0IGNvZGUgYW5kIHN0ZGVyci5cbiAqICAgICAgICAgSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgZXhlY3V0aW9uIGFuZCBpZ25vcmVFeGl0Q29kZSBpcyBgdHJ1ZWAsXG4gKiAgICAgICAgIHRoZSBlcnJvciBpcyByZXNvbHZlZCB3aXRoIHRoZSBzdGRvdXQgYW5kIHN0ZGVyci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4ZWMoY29tbWFuZDogQ29tbWFuZFBhcnRbXSB8IHN0cmluZywgb3B0aW9uczogRXhlY0RldGFpbGVkT3B0aW9ucyk6IFByb21pc2U8RXhlY1Jlc3VsdD47XG4vKipcbiAqIEV4ZWN1dGVzIGEgY29tbWFuZC5cbiAqXG4gKiBAcGFyYW0gY29tbWFuZCAtIFRoZSBjb21tYW5kIHRvIGV4ZWN1dGUuIEl0IGNhbiBiZSBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGV4ZWN1dGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgb3V0cHV0IG9mIHRoZSBjb21tYW5kIG9yIGFuIEV4ZWNSZXN1bHQgb2JqZWN0LlxuICogICAgICAgICAgVGhlIEV4ZWNSZXN1bHQgb2JqZWN0IGNvbnRhaW5zIHRoZSBleGl0IGNvZGUsIGV4aXQgc2lnbmFsLCBzdGRlcnIsIGFuZCBzdGRvdXQuXG4gKiBAdGhyb3dzIElmIHRoZSBjb21tYW5kIGZhaWxzIHdpdGggYSBub24temVybyBleGl0IGNvZGUgYW5kIGlnbm9yZUV4aXRDb2RlIGlzIGBmYWxzZWAuXG4gKiAgICAgICAgIFRoZSBlcnJvciBtZXNzYWdlIGluY2x1ZGVzIHRoZSBleGl0IGNvZGUgYW5kIHN0ZGVyci5cbiAqICAgICAgICAgSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgZXhlY3V0aW9uIGFuZCBpZ25vcmVFeGl0Q29kZSBpcyBgdHJ1ZWAsXG4gKiAgICAgICAgIHRoZSBlcnJvciBpcyByZXNvbHZlZCB3aXRoIHRoZSBzdGRvdXQgYW5kIHN0ZGVyci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4ZWMoY29tbWFuZDogQ29tbWFuZFBhcnRbXSB8IHN0cmluZywgb3B0aW9uczogRXhlY09wdGlvbnMgPSB7fSk6IFByb21pc2U8RXhlY1Jlc3VsdCB8IHN0cmluZz4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShjb21tYW5kKSkge1xuICAgIGNvbnN0IGJhdGNoUmVzdWx0ID0gaGFuZGxlQmF0Y2hlZENvbW1hbmQoY29tbWFuZCwgb3B0aW9ucyk7XG4gICAgaWYgKGJhdGNoUmVzdWx0KSB7XG4gICAgICByZXR1cm4gYmF0Y2hSZXN1bHQ7XG4gICAgfVxuICAgIGNvbnN0IGFyZ3MgPSBjb21tYW5kLmZpbHRlcigocGFydCk6IHBhcnQgaXMgc3RyaW5nID0+IHR5cGVvZiBwYXJ0ID09PSAnc3RyaW5nJyk7XG4gICAgY29uc3QgY29tbWFuZExpbmUgPSB0b0NvbW1hbmRMaW5lKGFyZ3MpO1xuXG4gICAgY29uc3QgbWF4Q29tbWFuZExlbmd0aCA9IGdldE1heENvbW1hbmRMZW5ndGgoKTtcbiAgICBpZiAoY29tbWFuZExpbmUubGVuZ3RoID4gbWF4Q29tbWFuZExlbmd0aCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KFxuICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgYENvbW1hbmQgbGluZSBpcyB0b28gbG9uZyAoJHtTdHJpbmcoY29tbWFuZExpbmUubGVuZ3RoKX0gY2hhcnMsIG1heCAke1N0cmluZyhtYXhDb21tYW5kTGVuZ3RoKX0gb24gJHtwcm9jZXNzLnBsYXRmb3JtfSkuIENvbnNpZGVyIHNwbGl0dGluZyBpbnRvIHNtYWxsZXIgYmF0Y2hlcyBvciB1c2UgRXhlY0FyZy5gXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4ZWNTdHJpbmcoe1xuICAgICAgY29tbWFuZDogY29tbWFuZExpbmUsXG4gICAgICBvcHRpb25zLFxuICAgICAgcmF3QXJnczogYXJnc1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgbWF4Q29tbWFuZExlbmd0aCA9IGdldE1heENvbW1hbmRMZW5ndGgoKTtcbiAgaWYgKGNvbW1hbmQubGVuZ3RoID4gbWF4Q29tbWFuZExlbmd0aCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgYENvbW1hbmQgbGluZSBpcyB0b28gbG9uZyAoJHtTdHJpbmcoY29tbWFuZC5sZW5ndGgpfSBjaGFycywgbWF4ICR7U3RyaW5nKG1heENvbW1hbmRMZW5ndGgpfSBvbiAke3Byb2Nlc3MucGxhdGZvcm19KS4gQ29uc2lkZXIgc3BsaXR0aW5nIGludG8gc21hbGxlciBiYXRjaGVzIG9yIHVzZSBFeGVjQXJnLmBcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGV4ZWNTdHJpbmcoe1xuICAgIGNvbW1hbmQsXG4gICAgb3B0aW9uc1xuICB9KTtcbn1cblxuLyoqXG4gKiBFeGVjdXRlcyBhIHNpbmdsZSBzdHJpbmcgY29tbWFuZC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBleGVjdXRpb24uXG4gKiBAcmV0dXJucyBBIFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSByZXN1bHQuXG4gKi9cbmZ1bmN0aW9uIGV4ZWNTdHJpbmcocGFyYW1zOiBFeGVjU3RyaW5nUGFyYW1zKTogUHJvbWlzZTxFeGVjUmVzdWx0IHwgc3RyaW5nPiB7XG4gIGNvbnN0IHtcbiAgICBjb21tYW5kLFxuICAgIG9wdGlvbnMgPSB7fSxcbiAgICByYXdBcmdzXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHtcbiAgICBjd2QgPSBwcm9jZXNzLmN3ZCgpLFxuICAgIGlzUXVpZXQ6IHF1aWV0ID0gZmFsc2UsXG4gICAgc2hvdWxkSWdub3JlRXhpdENvZGU6IGlnbm9yZUV4aXRDb2RlID0gZmFsc2UsXG4gICAgc2hvdWxkSW5jbHVkZURldGFpbHMgPSBmYWxzZSxcbiAgICBzdGRpbiA9ICcnXG4gIH0gPSBvcHRpb25zO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgZ2V0TGliRGVidWdnZXIoJ0V4ZWMnKShgRXhlY3V0aW5nIGNvbW1hbmQ6ICR7Y29tbWFuZH1gKTtcblxuICAgIGNvbnN0IGNoaWxkID0gc3Bhd25WaWFTaGVsbChub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8U3Bhd25WaWFTaGVsbFBhcmFtcz4oe1xuICAgICAgY29tbWFuZCxcbiAgICAgIGN3ZCxcbiAgICAgIHJhd0FyZ3NcbiAgICB9KSk7XG5cbiAgICBsZXQgc3Rkb3V0ID0gJyc7XG4gICAgbGV0IHN0ZGVyciA9ICcnO1xuXG4gICAgY2hpbGQuc3RkaW4ud3JpdGUoc3RkaW4pO1xuICAgIGNoaWxkLnN0ZGluLmVuZCgpO1xuXG4gICAgY2hpbGQuc3Rkb3V0Lm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgaWYgKCFxdWlldCkge1xuICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShkYXRhKTtcbiAgICAgIH1cbiAgICAgIHN0ZG91dCArPSBkYXRhLnRvU3RyaW5nKCd1dGYtOCcpO1xuICAgIH0pO1xuXG4gICAgY2hpbGQuc3Rkb3V0Lm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICBzdGRvdXQgPSB0cmltRW5kKHtcbiAgICAgICAgc3RyOiBzdGRvdXQsXG4gICAgICAgIHN1ZmZpeDogJ1xcbidcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY2hpbGQuc3RkZXJyLm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgaWYgKCFxdWlldCkge1xuICAgICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShkYXRhKTtcbiAgICAgIH1cbiAgICAgIHN0ZGVyciArPSBkYXRhLnRvU3RyaW5nKCd1dGYtOCcpO1xuICAgIH0pO1xuXG4gICAgY2hpbGQuc3RkZXJyLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICBzdGRlcnIgPSB0cmltRW5kKHtcbiAgICAgICAgc3RyOiBzdGRlcnIsXG4gICAgICAgIHN1ZmZpeDogJ1xcbidcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY2hpbGQub24oJ2Nsb3NlJywgKGV4aXRDb2RlLCBleGl0U2lnbmFsKSA9PiB7XG4gICAgICBpZiAoZXhpdENvZGUgIT09IDAgJiYgIWlnbm9yZUV4aXRDb2RlKSB7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoYENvbW1hbmQgZmFpbGVkIHdpdGggZXhpdCBjb2RlICR7ZXhpdENvZGUgPyBTdHJpbmcoZXhpdENvZGUpIDogJyhudWxsKSd9XFxuJHtzdGRlcnJ9YCkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghc2hvdWxkSW5jbHVkZURldGFpbHMpIHtcbiAgICAgICAgcmVzb2x2ZShzdGRvdXQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZXNvbHZlKHtcbiAgICAgICAgZXhpdENvZGUsXG4gICAgICAgIGV4aXRTaWduYWwsXG4gICAgICAgIHN0ZGVycixcbiAgICAgICAgc3Rkb3V0XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGNoaWxkLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgIGlmICghaWdub3JlRXhpdENvZGUpIHtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFzaG91bGRJbmNsdWRlRGV0YWlscykge1xuICAgICAgICByZXNvbHZlKHN0ZG91dCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmVzb2x2ZSh7XG4gICAgICAgIGV4aXRDb2RlOiBudWxsLFxuICAgICAgICBleGl0U2lnbmFsOiBudWxsLFxuICAgICAgICBzdGRlcnIsXG4gICAgICAgIHN0ZG91dFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIERlZmF1bHQgZW52aXJvbm1lbnQgdmFyaWFibGVzIHBhc3NlZCB0byBjaGlsZCBwcm9jZXNzZXMuXG4gKi9cbmNvbnN0IENISUxEX0VOViA9IHtcbiAgREVCVUdfQ09MT1JTOiAnMScsXG4gIC4uLnByb2Nlc3MuZW52XG59O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBleGVjdXRlQmF0Y2hlc30uXG4gKi9cbmludGVyZmFjZSBFeGVjdXRlQmF0Y2hlc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgYmFzZSBjb21tYW5kIHdpdGhvdXQgYmF0Y2hlZCBhcmdzLlxuICAgKi9cbiAgcmVhZG9ubHkgYmFzZUNvbW1hbmQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGJhdGNoZXMgb2YgYXJncy5cbiAgICovXG4gIHJlYWRvbmx5IGJhdGNoZXM6IHN0cmluZ1tdW107XG5cbiAgLyoqXG4gICAqIFRoZSBleGVjIG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBvcHRpb25zOiBFeGVjT3B0aW9ucztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgc3Bhd25WaWFTaGVsbH0uXG4gKi9cbmludGVyZmFjZSBTcGF3blZpYVNoZWxsUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBjb21tYW5kIHN0cmluZyB0byBleGVjdXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWFuZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgd29ya2luZyBkaXJlY3RvcnkuXG4gICAqL1xuICByZWFkb25seSBjd2Q6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG9yaWdpbmFsIGFyZ3VtZW50IGFycmF5IChpZiBhdmFpbGFibGUpLlxuICAgKi9cbiAgcmVhZG9ubHkgcmF3QXJncz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEV4ZWN1dGVzIGJhdGNoZWQgY29tbWFuZHMgc2VxdWVudGlhbGx5IGFuZCBjb25jYXRlbmF0ZXMgc3Rkb3V0LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGJhdGNoZWQgZXhlY3V0aW9uLlxuICogQHJldHVybnMgQSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgY29uY2F0ZW5hdGVkIHJlc3VsdC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZUJhdGNoZXMocGFyYW1zOiBFeGVjdXRlQmF0Y2hlc1BhcmFtcyk6IFByb21pc2U8RXhlY1Jlc3VsdCB8IHN0cmluZz4ge1xuICBjb25zdCB7IGJhc2VDb21tYW5kLCBiYXRjaGVzLCBvcHRpb25zIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHJlc3VsdHM6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIChjb25zdCBiYXRjaCBvZiBiYXRjaGVzKSB7XG4gICAgY29uc3QgYmF0Y2hDb21tYW5kID0gYCR7YmFzZUNvbW1hbmR9ICR7YmF0Y2guam9pbignICcpfWA7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXhlY1N0cmluZyh7XG4gICAgICBjb21tYW5kOiBiYXRjaENvbW1hbmQsXG4gICAgICBvcHRpb25zXG4gICAgfSk7XG4gICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXN1bHRzLnB1c2gocmVzdWx0KTtcbiAgICB9XG4gIH1cblxuICBpZiAob3B0aW9ucy5zaG91bGRJbmNsdWRlRGV0YWlscykge1xuICAgIHJldHVybiB7IGV4aXRDb2RlOiAwLCBleGl0U2lnbmFsOiBudWxsLCBzdGRlcnI6ICcnLCBzdGRvdXQ6IHJlc3VsdHMuam9pbignXFxuJykgfTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzLmpvaW4oJ1xcbicpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHBsYXRmb3JtLXNwZWNpZmljIG1heCBjb21tYW5kIGxpbmUgbGVuZ3RoLlxuICpcbiAqIEByZXR1cm5zIFRoZSBtYXggY29tbWFuZCBsZW5ndGggaW4gY2hhcmFjdGVycy5cbiAqL1xuZnVuY3Rpb24gZ2V0TWF4Q29tbWFuZExlbmd0aCgpOiBudW1iZXIge1xuICBjb25zdCBXSU5ET1dTX01BWF9DT01NQU5EX0xFTkdUSCA9IDgxOTE7XG4gIGNvbnN0IFVOSVhfTUFYX0NPTU1BTkRfTEVOR1RIID0gMTMxMDcyO1xuICByZXR1cm4gcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyA/IFdJTkRPV1NfTUFYX0NPTU1BTkRfTEVOR1RIIDogVU5JWF9NQVhfQ09NTUFORF9MRU5HVEg7XG59XG5cbi8qKlxuICogSGFuZGxlcyBhIGNvbW1hbmQgYXJyYXkgdGhhdCBtYXkgY29udGFpbiBhbiB7QGxpbmsgRXhlY0FyZ30uXG4gKiBSZXR1cm5zIGEgUHJvbWlzZSBpZiBiYXRjaGluZyBpcyBuZWVkZWQsIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBjb21tYW5kXG4gKiBoYXMgbm8gRXhlY0FyZyBhbmQgc2hvdWxkIGJlIHByb2Nlc3NlZCBub3JtYWxseS5cbiAqXG4gKiBAcGFyYW0gcGFydHMgLSBUaGUgY29tbWFuZCBwYXJ0cy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGV4ZWMgb3B0aW9ucy5cbiAqIEByZXR1cm5zIEEgUHJvbWlzZSBpZiBiYXRjaGluZyBpcyBoYW5kbGVkLCBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZnVuY3Rpb24gaGFuZGxlQmF0Y2hlZENvbW1hbmQocGFydHM6IENvbW1hbmRQYXJ0W10sIG9wdGlvbnM6IEV4ZWNPcHRpb25zKTogUHJvbWlzZTxFeGVjUmVzdWx0IHwgc3RyaW5nPiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGV4ZWNBcmdzID0gcGFydHMuZmlsdGVyKGlzRXhlY0FyZyk7XG4gIGlmIChleGVjQXJncy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGlmIChleGVjQXJncy5sZW5ndGggPiAxKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignT25seSBvbmUgRXhlY0FyZyB3aXRoIGJhdGNoZWRBcmdzIGlzIGFsbG93ZWQgcGVyIGNvbW1hbmQnKSk7XG4gIH1cblxuICBjb25zdCBleGVjQXJnID0gZXhlY0FyZ3NbMF07XG4gIGFzc2VydE5vbk51bGxhYmxlKGV4ZWNBcmcpO1xuICBjb25zdCBzdGF0aWNQYXJ0cyA9IHBhcnRzLmZpbHRlcigocGFydCk6IHBhcnQgaXMgc3RyaW5nID0+IHR5cGVvZiBwYXJ0ID09PSAnc3RyaW5nJyk7XG4gIGNvbnN0IGJhc2VDb21tYW5kID0gdG9Db21tYW5kTGluZShzdGF0aWNQYXJ0cyk7XG4gIGNvbnN0IG1heENvbW1hbmRMZW5ndGggPSBnZXRNYXhDb21tYW5kTGVuZ3RoKCk7XG5cbiAgLy8gVHJ5IGV4cGFuZGluZyBhbGwgYXJncyBpbmxpbmVcbiAgY29uc3QgZnVsbENvbW1hbmQgPSBgJHtiYXNlQ29tbWFuZH0gJHtleGVjQXJnLmJhdGNoZWRBcmdzLmpvaW4oJyAnKX1gO1xuICBpZiAoZnVsbENvbW1hbmQubGVuZ3RoIDw9IG1heENvbW1hbmRMZW5ndGgpIHtcbiAgICByZXR1cm4gZXhlY1N0cmluZyh7XG4gICAgICBjb21tYW5kOiBmdWxsQ29tbWFuZCxcbiAgICAgIG9wdGlvbnNcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFNwbGl0IGludG8gYmF0Y2hlc1xuICBjb25zdCBiYXRjaGVzOiBzdHJpbmdbXVtdID0gW107XG4gIGxldCBjdXJyZW50QmF0Y2g6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIChjb25zdCBhcmcgb2YgZXhlY0FyZy5iYXRjaGVkQXJncykge1xuICAgIGNvbnN0IHRlbnRhdGl2ZSA9IGAke2Jhc2VDb21tYW5kfSAke1suLi5jdXJyZW50QmF0Y2gsIGFyZ10uam9pbignICcpfWA7XG4gICAgaWYgKHRlbnRhdGl2ZS5sZW5ndGggPiBtYXhDb21tYW5kTGVuZ3RoKSB7XG4gICAgICBpZiAoY3VycmVudEJhdGNoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoXG4gICAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgICAgYENhbm5vdCBzcGxpdCBjb21tYW5kIGludG8gYmF0Y2hlczogYSBzaW5nbGUgYXJndW1lbnQgKCR7U3RyaW5nKGFyZy5sZW5ndGgpfSBjaGFycykgcGx1cyB0aGUgYmFzZSBjb21tYW5kICgke1N0cmluZyhiYXNlQ29tbWFuZC5sZW5ndGgpfSBjaGFycykgZXhjZWVkcyB0aGUgbWF4IGNvbW1hbmQgbGVuZ3RoICgke1N0cmluZyhtYXhDb21tYW5kTGVuZ3RoKX0pLmBcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBiYXRjaGVzLnB1c2goY3VycmVudEJhdGNoKTtcbiAgICAgIGN1cnJlbnRCYXRjaCA9IFthcmddO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50QmF0Y2gucHVzaChhcmcpO1xuICAgIH1cbiAgfVxuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gQWx3YXlzIHRydWUgYWZ0ZXIgdGhlIGxvb3A7IGJhdGNoZWRBcmdzIGlzIG5vbi1lbXB0eSBhdCB0aGlzIHBvaW50LiAqL1xuICBpZiAoY3VycmVudEJhdGNoLmxlbmd0aCA+IDApIHtcbiAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgIGJhdGNoZXMucHVzaChjdXJyZW50QmF0Y2gpO1xuICB9XG5cbiAgcmV0dXJuIGV4ZWN1dGVCYXRjaGVzKHtcbiAgICBiYXNlQ29tbWFuZCxcbiAgICBiYXRjaGVzLFxuICAgIG9wdGlvbnNcbiAgfSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgY29tbWFuZCBwYXJ0IGlzIGFuIHtAbGluayBFeGVjQXJnfS5cbiAqXG4gKiBAcGFyYW0gcGFydCAtIFRoZSBjb21tYW5kIHBhcnQgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBwYXJ0IGlzIGFuIEV4ZWNBcmcuXG4gKi9cbmZ1bmN0aW9uIGlzRXhlY0FyZyhwYXJ0OiBDb21tYW5kUGFydCk6IHBhcnQgaXMgRXhlY0FyZyB7XG4gIHJldHVybiB0eXBlb2YgcGFydCA9PT0gJ29iamVjdCcgJiYgJ2JhdGNoZWRBcmdzJyBpbiBwYXJ0O1xufVxuXG4vKipcbiAqIFNwYXducyBhIGNoaWxkIHByb2Nlc3MgdmlhIHRoZSBhcHByb3ByaWF0ZSBzaGVsbC5cbiAqXG4gKiBPbiBXaW5kb3dzLCBpZiB0aGUgY29tbWFuZCBjb250YWlucyBuZXdsaW5lcyAod2hpY2ggYGNtZC5leGVgIGNhbm5vdCBoYW5kbGUpXG4gKiBhbmQgdGhlIHJhdyBhcmdzIGFycmF5IGlzIGF2YWlsYWJsZSwgc3Bhd25zIHRoZSBwcm9jZXNzIGRpcmVjdGx5IHdpdGhvdXRcbiAqIGFueSBzaGVsbCBcdTIwMTQgcGFzc2luZyBhcmdzIHZpYSBgQ3JlYXRlUHJvY2Vzc2AsIHdoaWNoIGF2b2lkcyBhbGwgcXVvdGluZyBpc3N1ZXMuXG4gKlxuICogT24gV2luZG93cyAoY21kLmV4ZSBwYXRoKSwgYXBwbGllcyBgXmAtZXNjYXBpbmcgZm9yIGNtZCBtZXRhY2hhcmFjdGVycy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHNwYXduaW5nIHRoZSBjaGlsZCBwcm9jZXNzLlxuICogQHJldHVybnMgVGhlIHNwYXduZWQgY2hpbGQgcHJvY2Vzcy5cbiAqL1xuZnVuY3Rpb24gc3Bhd25WaWFTaGVsbChwYXJhbXM6IFNwYXduVmlhU2hlbGxQYXJhbXMpOiBDaGlsZFByb2Nlc3NXaXRob3V0TnVsbFN0cmVhbXMge1xuICBjb25zdCB7IGNvbW1hbmQsIGN3ZCwgcmF3QXJncyB9ID0gcGFyYW1zO1xuICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyAmJiBjb21tYW5kLmluY2x1ZGVzKCdcXG4nKSkge1xuICAgIGlmICghcmF3QXJncykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21tYW5kcyBjb250YWluaW5nIG5ld2xpbmVzIGNhbm5vdCBiZSBleGVjdXRlZCB0aHJvdWdoIGNtZC5leGUgb24gV2luZG93cy4gUGFzcyBhbiBhcmd1bWVudCBhcnJheSBpbnN0ZWFkIG9mIGEgc3RyaW5nLicpO1xuICAgIH1cbiAgICBjb25zdCBbcHJvZ3JhbSwgLi4uYXJnc10gPSByYXdBcmdzO1xuICAgIGFzc2VydE5vbk51bGxhYmxlKHByb2dyYW0sICdDb21tYW5kIGFycmF5IG11c3Qgbm90IGJlIGVtcHR5Jyk7XG4gICAgcmV0dXJuIHNwYXduKHByb2dyYW0sIGFyZ3MsIHtcbiAgICAgIGN3ZCxcbiAgICAgIGVudjogQ0hJTERfRU5WLFxuICAgICAgc3RkaW86ICdwaXBlJ1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3Qgc2hlbGxDb21tYW5kID0gcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyA/IGNtZEVzY2FwZUNvbW1hbmRMaW5lKGNvbW1hbmQpIDogY29tbWFuZDtcbiAgcmV0dXJuIHNwYXduKHNoZWxsQ29tbWFuZCwgW10sIHtcbiAgICBjd2QsXG4gICAgZW52OiBDSElMRF9FTlYsXG4gICAgc2hlbGw6IHRydWUsXG4gICAgc3RkaW86ICdwaXBlJ1xuICB9KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUUEsU0FBUyxhQUFhO0FBQ3RCLE9BQU8sYUFBYTtBQUVwQixTQUFTLHNCQUFzQjtBQUMvQixTQUFTLG1DQUFtQztBQUM1QyxTQUFTLGVBQWU7QUFDeEIsU0FBUyx5QkFBeUI7QUFDbEM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUF3S0EsU0FBUyxLQUFLLFNBQWlDLFVBQXVCLENBQUMsR0FBaUM7QUFDN0csTUFBSSxNQUFNLFFBQVEsT0FBTyxHQUFHO0FBQzFCLFVBQU0sY0FBYyxxQkFBcUIsU0FBUyxPQUFPO0FBQ3pELFFBQUksYUFBYTtBQUNmLGFBQU87QUFBQSxJQUNUO0FBQ0EsVUFBTSxPQUFPLFFBQVEsT0FBTyxDQUFDLFNBQXlCLE9BQU8sU0FBUyxRQUFRO0FBQzlFLFVBQU0sY0FBYyxjQUFjLElBQUk7QUFFdEMsVUFBTUEsb0JBQW1CLG9CQUFvQjtBQUM3QyxRQUFJLFlBQVksU0FBU0EsbUJBQWtCO0FBQ3pDLGFBQU8sUUFBUTtBQUFBLFFBQ2IsSUFBSTtBQUFBLFVBQ0YsNkJBQTZCLE9BQU8sWUFBWSxNQUFNLENBQUMsZUFBZSxPQUFPQSxpQkFBZ0IsQ0FBQyxPQUFPLFFBQVEsUUFBUTtBQUFBLFFBQ3ZIO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFFQSxXQUFPLFdBQVc7QUFBQSxNQUNoQixTQUFTO0FBQUEsTUFDVDtBQUFBLE1BQ0EsU0FBUztBQUFBLElBQ1gsQ0FBQztBQUFBLEVBQ0g7QUFFQSxRQUFNLG1CQUFtQixvQkFBb0I7QUFDN0MsTUFBSSxRQUFRLFNBQVMsa0JBQWtCO0FBQ3JDLFdBQU8sUUFBUTtBQUFBLE1BQ2IsSUFBSTtBQUFBLFFBQ0YsNkJBQTZCLE9BQU8sUUFBUSxNQUFNLENBQUMsZUFBZSxPQUFPLGdCQUFnQixDQUFDLE9BQU8sUUFBUSxRQUFRO0FBQUEsTUFDbkg7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFNBQU8sV0FBVztBQUFBLElBQ2hCO0FBQUEsSUFDQTtBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBUUEsU0FBUyxXQUFXLFFBQXdEO0FBQzFFLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQSxVQUFVLENBQUM7QUFBQSxJQUNYO0FBQUEsRUFDRixJQUFJO0FBQ0osUUFBTTtBQUFBLElBQ0osTUFBTSxRQUFRLElBQUk7QUFBQSxJQUNsQixTQUFTLFFBQVE7QUFBQSxJQUNqQixzQkFBc0IsaUJBQWlCO0FBQUEsSUFDdkMsdUJBQXVCO0FBQUEsSUFDdkIsUUFBUTtBQUFBLEVBQ1YsSUFBSTtBQUVKLFNBQU8sSUFBSSxRQUFRLENBQUMsU0FBUyxXQUFXO0FBQ3RDLG1CQUFlLE1BQU0sRUFBRSxzQkFBc0IsT0FBTyxFQUFFO0FBRXRELFVBQU0sUUFBUSxjQUFjLDRCQUFpRDtBQUFBLE1BQzNFO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGLENBQUMsQ0FBQztBQUVGLFFBQUksU0FBUztBQUNiLFFBQUksU0FBUztBQUViLFVBQU0sTUFBTSxNQUFNLEtBQUs7QUFDdkIsVUFBTSxNQUFNLElBQUk7QUFFaEIsVUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLFNBQWlCO0FBQ3hDLFVBQUksQ0FBQyxPQUFPO0FBQ1YsZ0JBQVEsT0FBTyxNQUFNLElBQUk7QUFBQSxNQUMzQjtBQUNBLGdCQUFVLEtBQUssU0FBUyxPQUFPO0FBQUEsSUFDakMsQ0FBQztBQUVELFVBQU0sT0FBTyxHQUFHLE9BQU8sTUFBTTtBQUMzQixlQUFTLFFBQVE7QUFBQSxRQUNmLEtBQUs7QUFBQSxRQUNMLFFBQVE7QUFBQSxNQUNWLENBQUM7QUFBQSxJQUNILENBQUM7QUFFRCxVQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsU0FBaUI7QUFDeEMsVUFBSSxDQUFDLE9BQU87QUFDVixnQkFBUSxPQUFPLE1BQU0sSUFBSTtBQUFBLE1BQzNCO0FBQ0EsZ0JBQVUsS0FBSyxTQUFTLE9BQU87QUFBQSxJQUNqQyxDQUFDO0FBRUQsVUFBTSxPQUFPLEdBQUcsT0FBTyxNQUFNO0FBQzNCLGVBQVMsUUFBUTtBQUFBLFFBQ2YsS0FBSztBQUFBLFFBQ0wsUUFBUTtBQUFBLE1BQ1YsQ0FBQztBQUFBLElBQ0gsQ0FBQztBQUVELFVBQU0sR0FBRyxTQUFTLENBQUMsVUFBVSxlQUFlO0FBQzFDLFVBQUksYUFBYSxLQUFLLENBQUMsZ0JBQWdCO0FBQ3JDLGVBQU8sSUFBSSxNQUFNLGlDQUFpQyxXQUFXLE9BQU8sUUFBUSxJQUFJLFFBQVE7QUFBQSxFQUFLLE1BQU0sRUFBRSxDQUFDO0FBQ3RHO0FBQUEsTUFDRjtBQUVBLFVBQUksQ0FBQyxzQkFBc0I7QUFDekIsZ0JBQVEsTUFBTTtBQUNkO0FBQUEsTUFDRjtBQUNBLGNBQVE7QUFBQSxRQUNOO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSCxDQUFDO0FBRUQsVUFBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRO0FBQ3pCLFVBQUksQ0FBQyxnQkFBZ0I7QUFDbkIsZUFBTyxHQUFHO0FBQ1Y7QUFBQSxNQUNGO0FBRUEsVUFBSSxDQUFDLHNCQUFzQjtBQUN6QixnQkFBUSxNQUFNO0FBQ2Q7QUFBQSxNQUNGO0FBRUEsY0FBUTtBQUFBLFFBQ04sVUFBVTtBQUFBLFFBQ1YsWUFBWTtBQUFBLFFBQ1o7QUFBQSxRQUNBO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSCxDQUFDO0FBQUEsRUFDSCxDQUFDO0FBQ0g7QUFLQSxNQUFNLFlBQVk7QUFBQSxFQUNoQixjQUFjO0FBQUEsRUFDZCxHQUFHLFFBQVE7QUFDYjtBQWdEQSxlQUFlLGVBQWUsUUFBNEQ7QUFDeEYsUUFBTSxFQUFFLGFBQWEsU0FBUyxRQUFRLElBQUk7QUFDMUMsUUFBTSxVQUFvQixDQUFDO0FBRTNCLGFBQVcsU0FBUyxTQUFTO0FBQzNCLFVBQU0sZUFBZSxHQUFHLFdBQVcsSUFBSSxNQUFNLEtBQUssR0FBRyxDQUFDO0FBQ3RELFVBQU0sU0FBUyxNQUFNLFdBQVc7QUFBQSxNQUM5QixTQUFTO0FBQUEsTUFDVDtBQUFBLElBQ0YsQ0FBQztBQUNELFFBQUksT0FBTyxXQUFXLFVBQVU7QUFDOUIsY0FBUSxLQUFLLE1BQU07QUFBQSxJQUNyQjtBQUFBLEVBQ0Y7QUFFQSxNQUFJLFFBQVEsc0JBQXNCO0FBQ2hDLFdBQU8sRUFBRSxVQUFVLEdBQUcsWUFBWSxNQUFNLFFBQVEsSUFBSSxRQUFRLFFBQVEsS0FBSyxJQUFJLEVBQUU7QUFBQSxFQUNqRjtBQUVBLFNBQU8sUUFBUSxLQUFLLElBQUk7QUFDMUI7QUFPQSxTQUFTLHNCQUE4QjtBQUNyQyxRQUFNLDZCQUE2QjtBQUNuQyxRQUFNLDBCQUEwQjtBQUNoQyxTQUFPLFFBQVEsYUFBYSxVQUFVLDZCQUE2QjtBQUNyRTtBQVdBLFNBQVMscUJBQXFCLE9BQXNCLFNBQWdFO0FBQ2xILFFBQU0sV0FBVyxNQUFNLE9BQU8sU0FBUztBQUN2QyxNQUFJLFNBQVMsV0FBVyxHQUFHO0FBQ3pCLFdBQU87QUFBQSxFQUNUO0FBQ0EsTUFBSSxTQUFTLFNBQVMsR0FBRztBQUN2QixXQUFPLFFBQVEsT0FBTyxJQUFJLE1BQU0sMERBQTBELENBQUM7QUFBQSxFQUM3RjtBQUVBLFFBQU0sVUFBVSxTQUFTLENBQUM7QUFDMUIsb0JBQWtCLE9BQU87QUFDekIsUUFBTSxjQUFjLE1BQU0sT0FBTyxDQUFDLFNBQXlCLE9BQU8sU0FBUyxRQUFRO0FBQ25GLFFBQU0sY0FBYyxjQUFjLFdBQVc7QUFDN0MsUUFBTSxtQkFBbUIsb0JBQW9CO0FBRzdDLFFBQU0sY0FBYyxHQUFHLFdBQVcsSUFBSSxRQUFRLFlBQVksS0FBSyxHQUFHLENBQUM7QUFDbkUsTUFBSSxZQUFZLFVBQVUsa0JBQWtCO0FBQzFDLFdBQU8sV0FBVztBQUFBLE1BQ2hCLFNBQVM7QUFBQSxNQUNUO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUdBLFFBQU0sVUFBc0IsQ0FBQztBQUM3QixNQUFJLGVBQXlCLENBQUM7QUFFOUIsYUFBVyxPQUFPLFFBQVEsYUFBYTtBQUNyQyxVQUFNLFlBQVksR0FBRyxXQUFXLElBQUksQ0FBQyxHQUFHLGNBQWMsR0FBRyxFQUFFLEtBQUssR0FBRyxDQUFDO0FBQ3BFLFFBQUksVUFBVSxTQUFTLGtCQUFrQjtBQUN2QyxVQUFJLGFBQWEsV0FBVyxHQUFHO0FBQzdCLGVBQU8sUUFBUTtBQUFBLFVBQ2IsSUFBSTtBQUFBLFlBQ0YseURBQXlELE9BQU8sSUFBSSxNQUFNLENBQUMsa0NBQWtDLE9BQU8sWUFBWSxNQUFNLENBQUMsMkNBQTJDLE9BQU8sZ0JBQWdCLENBQUM7QUFBQSxVQUM1TTtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQ0EsY0FBUSxLQUFLLFlBQVk7QUFDekIscUJBQWUsQ0FBQyxHQUFHO0FBQUEsSUFDckIsT0FBTztBQUNMLG1CQUFhLEtBQUssR0FBRztBQUFBLElBQ3ZCO0FBQUEsRUFDRjtBQUVBLE1BQUksYUFBYSxTQUFTLEdBQUc7QUFFM0IsWUFBUSxLQUFLLFlBQVk7QUFBQSxFQUMzQjtBQUVBLFNBQU8sZUFBZTtBQUFBLElBQ3BCO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGLENBQUM7QUFDSDtBQVFBLFNBQVMsVUFBVSxNQUFvQztBQUNyRCxTQUFPLE9BQU8sU0FBUyxZQUFZLGlCQUFpQjtBQUN0RDtBQWNBLFNBQVMsY0FBYyxRQUE2RDtBQUNsRixRQUFNLEVBQUUsU0FBUyxLQUFLLFFBQVEsSUFBSTtBQUNsQyxNQUFJLFFBQVEsYUFBYSxXQUFXLFFBQVEsU0FBUyxJQUFJLEdBQUc7QUFDMUQsUUFBSSxDQUFDLFNBQVM7QUFDWixZQUFNLElBQUksTUFBTSx5SEFBeUg7QUFBQSxJQUMzSTtBQUNBLFVBQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJO0FBQzNCLHNCQUFrQixTQUFTLGlDQUFpQztBQUM1RCxXQUFPLE1BQU0sU0FBUyxNQUFNO0FBQUEsTUFDMUI7QUFBQSxNQUNBLEtBQUs7QUFBQSxNQUNMLE9BQU87QUFBQSxJQUNULENBQUM7QUFBQSxFQUNIO0FBRUEsUUFBTSxlQUFlLFFBQVEsYUFBYSxVQUFVLHFCQUFxQixPQUFPLElBQUk7QUFDcEYsU0FBTyxNQUFNLGNBQWMsQ0FBQyxHQUFHO0FBQUEsSUFDN0I7QUFBQSxJQUNBLEtBQUs7QUFBQSxJQUNMLE9BQU87QUFBQSxJQUNQLE9BQU87QUFBQSxFQUNULENBQUM7QUFDSDsiLAogICJuYW1lcyI6IFsibWF4Q29tbWFuZExlbmd0aCJdCn0K
|
|
@@ -37,11 +37,11 @@ async function format(options) {
|
|
|
37
37
|
const { paths, rewrite = true } = options ?? {};
|
|
38
38
|
const rootFolder = getRootFolder();
|
|
39
39
|
assertNonNullable(rootFolder, "Root folder not found");
|
|
40
|
-
let dprintJsonPath = resolvePathFromRootSafe(ObsidianDevUtilsRepoPaths.DprintJson);
|
|
40
|
+
let dprintJsonPath = resolvePathFromRootSafe({ path: ObsidianDevUtilsRepoPaths.DprintJson });
|
|
41
41
|
if (!existsSync(dprintJsonPath)) {
|
|
42
42
|
const packageFolder = getRootFolder(getFolderName(import.meta.url));
|
|
43
43
|
assertNonNullable(packageFolder, "Could not find package folder.");
|
|
44
|
-
dprintJsonPath = resolvePathFromRootSafe(join(ObsidianDevUtilsRepoPaths.DistTemplates, ObsidianDevUtilsRepoPaths.DprintJson)
|
|
44
|
+
dprintJsonPath = resolvePathFromRootSafe({ cwd: packageFolder, path: join(ObsidianDevUtilsRepoPaths.DistTemplates, ObsidianDevUtilsRepoPaths.DprintJson) });
|
|
45
45
|
}
|
|
46
46
|
if (!existsSync(dprintJsonPath)) {
|
|
47
47
|
throw new Error("dprint.json not found");
|
|
@@ -53,4 +53,4 @@ async function format(options) {
|
|
|
53
53
|
export {
|
|
54
54
|
format
|
|
55
55
|
};
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9mb3JtYXR0ZXJzL2RwcmludC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEZvcm1hdCB0aGUgc291cmNlIGNvZGUuXG4gKi9cblxuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuXG5pbXBvcnQge1xuICBnZXRGb2xkZXJOYW1lLFxuICBqb2luXG59IGZyb20gJy4uLy4uL3BhdGgudHMnO1xuaW1wb3J0IHsgYXNzZXJ0Tm9uTnVsbGFibGUgfSBmcm9tICcuLi8uLi90eXBlLWd1YXJkcy50cyc7XG5pbXBvcnQgeyBPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzIH0gZnJvbSAnLi4vb2JzaWRpYW4tZGV2LXV0aWxzLXJlcG8tcGF0aHMudHMnO1xuaW1wb3J0IHtcbiAgZXhlY0Zyb21Sb290LFxuICBnZXRSb290Rm9sZGVyLFxuICByZXNvbHZlUGF0aEZyb21Sb290U2FmZVxufSBmcm9tICcuLi9yb290LnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB0aGUge0BsaW5rIGZvcm1hdH0gZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWF0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBmaWxlIHBhdGhzIHRvIGZvcm1hdC4gSWYgb21pdHRlZCwgZm9ybWF0cyB0aGUgZW50aXJlIHByb2plY3QuXG4gICAqL1xuICByZWFkb25seSBwYXRocz86IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJld3JpdGUgdGhlIHNvdXJjZSBjb2RlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHJld3JpdGU/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEZvcm1hdCB0aGUgc291cmNlIGNvZGUuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUge0BsaW5rIEZvcm1hdE9wdGlvbnN9LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBzb3VyY2UgY29kZSBoYXMgYmVlbiBmb3JtYXR0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmb3JtYXQob3B0aW9ucz86IEZvcm1hdE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBwYXRocywgcmV3cml0ZSA9IHRydWUgfSA9IG9wdGlvbnMgPz8ge307XG4gIGNvbnN0IHJvb3RGb2xkZXIgPSBnZXRSb290Rm9sZGVyKCk7XG4gIGFzc2VydE5vbk51bGxhYmxlKHJvb3RGb2xkZXIsICdSb290IGZvbGRlciBub3QgZm91bmQnKTtcbiAgbGV0IGRwcmludEpzb25QYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLkRwcmludEpzb24gfSk7XG4gIGlmICghZXhpc3RzU3luYyhkcHJpbnRKc29uUGF0aCkpIHtcbiAgICBjb25zdCBwYWNrYWdlRm9sZGVyID0gZ2V0Um9vdEZvbGRlcihnZXRGb2xkZXJOYW1lKGltcG9ydC5tZXRhLnVybCkpO1xuICAgIGFzc2VydE5vbk51bGxhYmxlKHBhY2thZ2VGb2xkZXIsICdDb3VsZCBub3QgZmluZCBwYWNrYWdlIGZvbGRlci4nKTtcbiAgICBkcHJpbnRKc29uUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgY3dkOiBwYWNrYWdlRm9sZGVyLCBwYXRoOiBqb2luKE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMuRGlzdFRlbXBsYXRlcywgT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5EcHJpbnRKc29uKSB9KTtcbiAgfVxuXG4gIGlmICghZXhpc3RzU3luYyhkcHJpbnRKc29uUGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RwcmludC5qc29uIG5vdCBmb3VuZCcpO1xuICB9XG5cbiAgY29uc3QgY29tbWFuZCA9IHJld3JpdGUgPyAnZm10JyA6ICdjaGVjayc7XG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBUaGUgcGF0aHMtcHJvdmlkZWQgYnJhbmNoIGlzIG9ubHkgZXhlcmNpc2VkIGJ5IGNvbnN1bWVyIHByb2plY3RzIHBhc3NpbmcgZmlsZSBsaXN0cy4gKi9cbiAgY29uc3QgdGFyZ2V0cyA9IHBhdGhzPy5sZW5ndGggPyBwYXRocyA6IFsnKiovKiddO1xuICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICBhd2FpdCBleGVjRnJvbVJvb3QoWyducHgnLCAnZHByaW50JywgY29tbWFuZCwgJy0tY29uZmlnJywgZHByaW50SnNvblBhdGgsIHsgYmF0Y2hlZEFyZ3M6IHRhcmdldHMgfV0pO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNQSxTQUFTLGtCQUFrQjtBQUUzQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMseUJBQXlCO0FBQ2xDLFNBQVMsaUNBQWlDO0FBQzFDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQXlCUCxlQUFzQixPQUFPLFNBQXdDO0FBQ25FLFFBQU0sRUFBRSxPQUFPLFVBQVUsS0FBSyxJQUFJLFdBQVcsQ0FBQztBQUM5QyxRQUFNLGFBQWEsY0FBYztBQUNqQyxvQkFBa0IsWUFBWSx1QkFBdUI7QUFDckQsTUFBSSxpQkFBaUIsd0JBQXdCLEVBQUUsTUFBTSwwQkFBMEIsV0FBVyxDQUFDO0FBQzNGLE1BQUksQ0FBQyxXQUFXLGNBQWMsR0FBRztBQUMvQixVQUFNLGdCQUFnQixjQUFjLGNBQWMsWUFBWSxHQUFHLENBQUM7QUFDbEUsc0JBQWtCLGVBQWUsZ0NBQWdDO0FBQ2pFLHFCQUFpQix3QkFBd0IsRUFBRSxLQUFLLGVBQWUsTUFBTSxLQUFLLDBCQUEwQixlQUFlLDBCQUEwQixVQUFVLEVBQUUsQ0FBQztBQUFBLEVBQzVKO0FBRUEsTUFBSSxDQUFDLFdBQVcsY0FBYyxHQUFHO0FBQy9CLFVBQU0sSUFBSSxNQUFNLHVCQUF1QjtBQUFBLEVBQ3pDO0FBRUEsUUFBTSxVQUFVLFVBQVUsUUFBUTtBQUVsQyxRQUFNLFVBQVUsT0FBTyxTQUFTLFFBQVEsQ0FBQyxNQUFNO0FBRS9DLFFBQU0sYUFBYSxDQUFDLE9BQU8sVUFBVSxTQUFTLFlBQVksZ0JBQWdCLEVBQUUsYUFBYSxRQUFRLENBQUMsQ0FBQztBQUNyRzsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -11,32 +11,64 @@ import type { Promisable } from 'type-fest';
|
|
|
11
11
|
export interface EditJsonOptions {
|
|
12
12
|
/**
|
|
13
13
|
* If `true`, skips editing if the file does not exist.
|
|
14
|
+
*
|
|
15
|
+
* @default `false`
|
|
14
16
|
*/
|
|
15
17
|
readonly shouldSkipIfMissing?: boolean;
|
|
16
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Parameters for {@link editJson}.
|
|
21
|
+
*
|
|
22
|
+
* @typeParam T - The type of the data to be edited.
|
|
23
|
+
*/
|
|
24
|
+
export interface EditJsonParams<T> extends EditJsonOptions {
|
|
25
|
+
/**
|
|
26
|
+
* The function to edit the parsed JSON data.
|
|
27
|
+
*
|
|
28
|
+
* @param data - The parsed JSON data to edit.
|
|
29
|
+
*/
|
|
30
|
+
editFn(this: void, data: T): Promisable<void>;
|
|
31
|
+
/**
|
|
32
|
+
* The path to the JSON file.
|
|
33
|
+
*/
|
|
34
|
+
readonly path: string;
|
|
35
|
+
}
|
|
17
36
|
/**
|
|
18
37
|
* Options for {@link editJsonSync}.
|
|
19
38
|
*/
|
|
20
39
|
export type EditJsonSyncOptions = EditJsonOptions;
|
|
40
|
+
/**
|
|
41
|
+
* Parameters for {@link editJsonSync}.
|
|
42
|
+
*
|
|
43
|
+
* @typeParam T - The type of the data to be edited.
|
|
44
|
+
*/
|
|
45
|
+
export interface EditJsonSyncParams<T> extends EditJsonSyncOptions {
|
|
46
|
+
/**
|
|
47
|
+
* The function to edit the parsed JSON data.
|
|
48
|
+
*
|
|
49
|
+
* @param data - The parsed JSON data to edit.
|
|
50
|
+
*/
|
|
51
|
+
editFn(this: void, data: T): void;
|
|
52
|
+
/**
|
|
53
|
+
* The path to the JSON file.
|
|
54
|
+
*/
|
|
55
|
+
readonly path: string;
|
|
56
|
+
}
|
|
21
57
|
/**
|
|
22
58
|
* Reads, edits, and writes back a JSON file using a provided edit function.
|
|
23
59
|
*
|
|
24
60
|
* @typeParam T - The type of the data to be edited.
|
|
25
|
-
* @param
|
|
26
|
-
* @param editFn - The function to edit the parsed JSON data.
|
|
27
|
-
* @param options - Additional options for editing.
|
|
61
|
+
* @param params - The parameters for the function.
|
|
28
62
|
* @returns A {@link Promise} that resolves when the file has been edited and written.
|
|
29
63
|
*/
|
|
30
|
-
export declare function editJson<T>(
|
|
64
|
+
export declare function editJson<T>(params: EditJsonParams<T>): Promise<void>;
|
|
31
65
|
/**
|
|
32
66
|
* Reads, edits, and writes back a JSON file using a provided edit function.
|
|
33
67
|
*
|
|
34
68
|
* @typeParam T - The type of the data to be edited.
|
|
35
|
-
* @param
|
|
36
|
-
* @param editFn - The function to edit the parsed JSON data.
|
|
37
|
-
* @param options - Additional options for editing.
|
|
69
|
+
* @param params - The parameters for the function.
|
|
38
70
|
*/
|
|
39
|
-
export declare function editJsonSync<T>(
|
|
71
|
+
export declare function editJsonSync<T>(params: EditJsonSyncParams<T>): void;
|
|
40
72
|
/**
|
|
41
73
|
* Reads a JSON file and parses its contents into a JavaScript object of type `T`.
|
|
42
74
|
*
|
|
@@ -31,10 +31,12 @@ import {
|
|
|
31
31
|
writeFile
|
|
32
32
|
} from "node:fs/promises";
|
|
33
33
|
import { toJson } from "../object-utils.mjs";
|
|
34
|
-
async function editJson(
|
|
34
|
+
async function editJson(params) {
|
|
35
35
|
const {
|
|
36
|
+
editFn,
|
|
37
|
+
path,
|
|
36
38
|
shouldSkipIfMissing
|
|
37
|
-
} =
|
|
39
|
+
} = params;
|
|
38
40
|
if (shouldSkipIfMissing && !existsSync(path)) {
|
|
39
41
|
return;
|
|
40
42
|
}
|
|
@@ -42,10 +44,12 @@ async function editJson(path, editFn, options = {}) {
|
|
|
42
44
|
await editFn(data);
|
|
43
45
|
await writeJson(path, data);
|
|
44
46
|
}
|
|
45
|
-
function editJsonSync(
|
|
47
|
+
function editJsonSync(params) {
|
|
46
48
|
const {
|
|
49
|
+
editFn,
|
|
50
|
+
path,
|
|
47
51
|
shouldSkipIfMissing
|
|
48
|
-
} =
|
|
52
|
+
} = params;
|
|
49
53
|
if (shouldSkipIfMissing && !existsSync(path)) {
|
|
50
54
|
return;
|
|
51
55
|
}
|
|
@@ -75,4 +79,4 @@ export {
|
|
|
75
79
|
writeJson,
|
|
76
80
|
writeJsonSync
|
|
77
81
|
};
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9qc29uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIEpTT04uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBQcm9taXNhYmxlIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHtcbiAgZXhpc3RzU3luYyxcbiAgcmVhZEZpbGVTeW5jLFxuICB3cml0ZUZpbGVTeW5jXG59IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgcmVhZEZpbGUsXG4gIHdyaXRlRmlsZVxufSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcblxuaW1wb3J0IHsgdG9Kc29uIH0gZnJvbSAnLi4vb2JqZWN0LXV0aWxzLnRzJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgZWRpdEpzb259LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVkaXRKc29uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHNraXBzIGVkaXRpbmcgaWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNraXBJZk1pc3Npbmc/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBlZGl0SnNvbn0uXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIGRhdGEgdG8gYmUgZWRpdGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVkaXRKc29uUGFyYW1zPFQ+IGV4dGVuZHMgRWRpdEpzb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbiB0byBlZGl0IHRoZSBwYXJzZWQgSlNPTiBkYXRhLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSAtIFRoZSBwYXJzZWQgSlNPTiBkYXRhIHRvIGVkaXQuXG4gICAqL1xuICBlZGl0Rm4odGhpczogdm9pZCwgZGF0YTogVCk6IFByb21pc2FibGU8dm9pZD47XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIHRvIHRoZSBKU09OIGZpbGUuXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGVkaXRKc29uU3luY30uXG4gKi9cbmV4cG9ydCB0eXBlIEVkaXRKc29uU3luY09wdGlvbnMgPSBFZGl0SnNvbk9wdGlvbnM7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGVkaXRKc29uU3luY30uXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIGRhdGEgdG8gYmUgZWRpdGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVkaXRKc29uU3luY1BhcmFtczxUPiBleHRlbmRzIEVkaXRKc29uU3luY09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIHRvIGVkaXQgdGhlIHBhcnNlZCBKU09OIGRhdGEuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIC0gVGhlIHBhcnNlZCBKU09OIGRhdGEgdG8gZWRpdC5cbiAgICovXG4gIGVkaXRGbih0aGlzOiB2b2lkLCBkYXRhOiBUKTogdm9pZDtcblxuICAvKipcbiAgICogVGhlIHBhdGggdG8gdGhlIEpTT04gZmlsZS5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZWFkcywgZWRpdHMsIGFuZCB3cml0ZXMgYmFjayBhIEpTT04gZmlsZSB1c2luZyBhIHByb3ZpZGVkIGVkaXQgZnVuY3Rpb24uXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIGRhdGEgdG8gYmUgZWRpdGVkLlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZpbGUgaGFzIGJlZW4gZWRpdGVkIGFuZCB3cml0dGVuLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZWRpdEpzb248VD4ocGFyYW1zOiBFZGl0SnNvblBhcmFtczxUPik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7XG4gICAgZWRpdEZuLFxuICAgIHBhdGgsXG4gICAgc2hvdWxkU2tpcElmTWlzc2luZ1xuICB9ID0gcGFyYW1zO1xuICBpZiAoc2hvdWxkU2tpcElmTWlzc2luZyAmJiAhZXhpc3RzU3luYyhwYXRoKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBkYXRhID0gYXdhaXQgcmVhZEpzb248VD4ocGF0aCk7XG4gIGF3YWl0IGVkaXRGbihkYXRhKTtcbiAgYXdhaXQgd3JpdGVKc29uKHBhdGgsIGRhdGEpO1xufVxuXG4vKipcbiAqIFJlYWRzLCBlZGl0cywgYW5kIHdyaXRlcyBiYWNrIGEgSlNPTiBmaWxlIHVzaW5nIGEgcHJvdmlkZWQgZWRpdCBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgZGF0YSB0byBiZSBlZGl0ZWQuXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVkaXRKc29uU3luYzxUPihwYXJhbXM6IEVkaXRKc29uU3luY1BhcmFtczxUPik6IHZvaWQge1xuICBjb25zdCB7XG4gICAgZWRpdEZuLFxuICAgIHBhdGgsXG4gICAgc2hvdWxkU2tpcElmTWlzc2luZ1xuICB9ID0gcGFyYW1zO1xuICBpZiAoc2hvdWxkU2tpcElmTWlzc2luZyAmJiAhZXhpc3RzU3luYyhwYXRoKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBkYXRhID0gcmVhZEpzb25TeW5jPFQ+KHBhdGgpO1xuICBlZGl0Rm4oZGF0YSk7XG4gIHdyaXRlSnNvblN5bmMocGF0aCwgZGF0YSk7XG59XG5cbi8qKlxuICogUmVhZHMgYSBKU09OIGZpbGUgYW5kIHBhcnNlcyBpdHMgY29udGVudHMgaW50byBhIEphdmFTY3JpcHQgb2JqZWN0IG9mIHR5cGUgYFRgLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIHRvIHdoaWNoIHRoZSBKU09OIGNvbnRlbnQgd2lsbCBiZSBwYXJzZWQuXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIHRoZSBKU09OIGZpbGUuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHBhcnNlZCBKU09OIG9iamVjdCBvZiB0eXBlIGBUYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRKc29uPFQ+KHBhdGg6IHN0cmluZyk6IFByb21pc2U8VD4ge1xuICByZXR1cm4gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShwYXRoLCAndXRmLTgnKSkgYXMgVDtcbn1cblxuLyoqXG4gKiBSZWFkcyBhIEpTT04gZmlsZSBhbmQgcGFyc2VzIGl0cyBjb250ZW50cyBpbnRvIGEgSmF2YVNjcmlwdCBvYmplY3Qgb2YgdHlwZSBgVGAuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgdG8gd2hpY2ggdGhlIEpTT04gY29udGVudCB3aWxsIGJlIHBhcnNlZC5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gdGhlIEpTT04gZmlsZS5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgSlNPTiBvYmplY3Qgb2YgdHlwZSBgVGAuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktdHlwZS1wYXJhbWV0ZXJzIC0tIFdlIG5lZWQgdG8gdXNlIHRoZSBkdW1teSBwYXJhbWV0ZXIgdG8gZ2V0IHR5cGUgaW5mZXJlbmNlLlxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRKc29uU3luYzxUPihwYXRoOiBzdHJpbmcpOiBUIHtcbiAgcmV0dXJuIEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKHBhdGgsICd1dGYtOCcpKSBhcyBUO1xufVxuXG4vKipcbiAqIFdyaXRlcyBhIEphdmFTY3JpcHQgb2JqZWN0IHRvIGEgSlNPTiBmaWxlLlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gdGhlIEpTT04gZmlsZS5cbiAqIEBwYXJhbSBkYXRhIC0gVGhlIGRhdGEgdG8gd3JpdGUgdG8gdGhlIEpTT04gZmlsZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgZmlsZSBoYXMgYmVlbiB3cml0dGVuLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVKc29uKHBhdGg6IHN0cmluZywgZGF0YTogdW5rbm93bik6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCB3cml0ZUZpbGUocGF0aCwgYCR7dG9Kc29uKGRhdGEpfVxcbmApO1xufVxuXG4vKipcbiAqIFdyaXRlcyBhIEphdmFTY3JpcHQgb2JqZWN0IHRvIGEgSlNPTiBmaWxlLlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gdGhlIEpTT04gZmlsZS5cbiAqIEBwYXJhbSBkYXRhIC0gVGhlIGRhdGEgdG8gd3JpdGUgdG8gdGhlIEpTT04gZmlsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlSnNvblN5bmMocGF0aDogc3RyaW5nLCBkYXRhOiB1bmtub3duKTogdm9pZCB7XG4gIHdyaXRlRmlsZVN5bmMocGF0aCwgYCR7dG9Kc29uKGRhdGEpfVxcbmApO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMsY0FBYztBQWdFdkIsZUFBc0IsU0FBWSxRQUEwQztBQUMxRSxRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRixJQUFJO0FBQ0osTUFBSSx1QkFBdUIsQ0FBQyxXQUFXLElBQUksR0FBRztBQUM1QztBQUFBLEVBQ0Y7QUFDQSxRQUFNLE9BQU8sTUFBTSxTQUFZLElBQUk7QUFDbkMsUUFBTSxPQUFPLElBQUk7QUFDakIsUUFBTSxVQUFVLE1BQU0sSUFBSTtBQUM1QjtBQVFPLFNBQVMsYUFBZ0IsUUFBcUM7QUFDbkUsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSTtBQUNKLE1BQUksdUJBQXVCLENBQUMsV0FBVyxJQUFJLEdBQUc7QUFDNUM7QUFBQSxFQUNGO0FBQ0EsUUFBTSxPQUFPLGFBQWdCLElBQUk7QUFDakMsU0FBTyxJQUFJO0FBQ1gsZ0JBQWMsTUFBTSxJQUFJO0FBQzFCO0FBU0EsZUFBc0IsU0FBWSxNQUEwQjtBQUMxRCxTQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsTUFBTSxPQUFPLENBQUM7QUFDakQ7QUFVTyxTQUFTLGFBQWdCLE1BQWlCO0FBQy9DLFNBQU8sS0FBSyxNQUFNLGFBQWEsTUFBTSxPQUFPLENBQUM7QUFDL0M7QUFTQSxlQUFzQixVQUFVLE1BQWMsTUFBOEI7QUFDMUUsUUFBTSxVQUFVLE1BQU0sR0FBRyxPQUFPLElBQUksQ0FBQztBQUFBLENBQUk7QUFDM0M7QUFRTyxTQUFTLGNBQWMsTUFBYyxNQUFxQjtBQUMvRCxnQkFBYyxNQUFNLEdBQUcsT0FBTyxJQUFJLENBQUM7QUFBQSxDQUFJO0FBQ3pDOyIsCiAgIm5hbWVzIjogW10KfQo=
|