obsidian-dev-utils 57.0.0 → 57.0.2
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 +12 -0
- package/dist/lib/cjs/abort-controller.cjs +5 -5
- package/dist/lib/cjs/array.cjs +3 -3
- package/dist/lib/cjs/async-events.cjs +6 -6
- package/dist/lib/cjs/async.cjs +6 -6
- package/dist/lib/cjs/blob.cjs +3 -3
- package/dist/lib/cjs/codemirror/index.cjs +3 -3
- package/dist/lib/cjs/codemirror/state-field-spec.cjs +3 -3
- package/dist/lib/cjs/css-class.cjs +3 -3
- package/dist/lib/cjs/debug-controller.cjs +3 -3
- package/dist/lib/cjs/debug.cjs +3 -3
- package/dist/lib/cjs/enum.cjs +4 -4
- package/dist/lib/cjs/error.cjs +4 -4
- package/dist/lib/cjs/function.cjs +3 -3
- package/dist/lib/cjs/html-element.cjs +5 -5
- package/dist/lib/cjs/index.cjs +3 -3
- package/dist/lib/cjs/library.cjs +4 -4
- package/dist/lib/cjs/object-utils.cjs +4 -4
- package/dist/lib/cjs/obsidian/app.cjs +4 -4
- package/dist/lib/cjs/obsidian/async-with-notice.cjs +7 -7
- package/dist/lib/cjs/obsidian/attachment-path.cjs +3 -3
- package/dist/lib/cjs/obsidian/backlink.cjs +3 -3
- package/dist/lib/cjs/obsidian/callout.cjs +3 -3
- package/dist/lib/cjs/obsidian/code-block-markdown-information.cjs +3 -3
- package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.cjs +3 -3
- package/dist/lib/cjs/obsidian/command-handlers/app-active-file-provider.cjs +3 -3
- package/dist/lib/cjs/obsidian/command-handlers/app-menu-event-registrar.cjs +3 -3
- package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/command-handlers/command-handler.cjs +3 -3
- package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.cjs +3 -3
- package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.cjs +3 -3
- package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.cjs +3 -3
- package/dist/lib/cjs/obsidian/command-handlers/global-command-handler.cjs +3 -3
- package/dist/lib/cjs/obsidian/command-handlers/index.cjs +3 -3
- package/dist/lib/cjs/obsidian/command-handlers/open-settings-command-handler.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/all-windows-event-handler.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/async-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/async-events-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/index.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/setting-components/checkbox-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/setting-components/code-highlighter-component.cjs +5 -5
- package/dist/lib/cjs/obsidian/components/setting-components/date-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/setting-components/date-time-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/setting-components/email-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/setting-components/file-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/setting-components/index.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/setting-components/month-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/setting-components/multiple-dropdown-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/setting-components/multiple-email-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/setting-components/multiple-file-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/setting-components/multiple-text-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/setting-components/number-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/setting-components/password-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/setting-components/setting-component-wrapper.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/setting-components/telephone-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/setting-components/text-based-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/setting-components/time-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/setting-components/tri-state-checkbox-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/setting-components/typed-dropdown-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/setting-components/typed-multiple-dropdown-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/setting-components/typed-range-text-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/setting-components/typed-text-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/setting-components/url-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/setting-components/validator-component.cjs +5 -5
- package/dist/lib/cjs/obsidian/components/setting-components/value-component-with-change-tracking.cjs +3 -3
- package/dist/lib/cjs/obsidian/components/setting-components/week-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/constructors/getDomEventsHandlersConstructor.cjs +3 -3
- package/dist/lib/cjs/obsidian/constructors/index.cjs +3 -3
- package/dist/lib/cjs/obsidian/dataview-link.cjs +3 -3
- package/dist/lib/cjs/obsidian/dataview.cjs +3 -3
- package/dist/lib/cjs/obsidian/editor.cjs +3 -3
- package/dist/lib/cjs/obsidian/file-change.cjs +4 -4
- package/dist/lib/cjs/obsidian/file-manager.cjs +3 -3
- package/dist/lib/cjs/obsidian/file-system.cjs +4 -4
- package/dist/lib/cjs/obsidian/frontmatter-link-cache-with-offsets.cjs +3 -3
- package/dist/lib/cjs/obsidian/frontmatter.cjs +3 -3
- package/dist/lib/cjs/obsidian/i18n/custom-type-options.cjs +3 -3
- package/dist/lib/cjs/obsidian/i18n/default-translations.cjs +3 -3
- package/dist/lib/cjs/obsidian/i18n/i18n.cjs +3 -3
- package/dist/lib/cjs/obsidian/i18n/index.cjs +3 -3
- package/dist/lib/cjs/obsidian/i18n/locales/en.cjs +3 -3
- package/dist/lib/cjs/obsidian/i18n/locales/index.cjs +3 -3
- package/dist/lib/cjs/obsidian/i18n/locales/translations-map.cjs +3 -3
- package/dist/lib/cjs/obsidian/index.cjs +3 -3
- package/dist/lib/cjs/obsidian/is-in-obsidian.cjs +3 -3
- package/dist/lib/cjs/obsidian/link.cjs +3 -3
- package/dist/lib/cjs/obsidian/logger.cjs +3 -3
- package/dist/lib/cjs/obsidian/loop.cjs +3 -3
- package/dist/lib/cjs/obsidian/markdown-code-block-processor.cjs +3 -3
- package/dist/lib/cjs/obsidian/markdown-view.cjs +3 -3
- package/dist/lib/cjs/obsidian/markdown.cjs +3 -3
- package/dist/lib/cjs/obsidian/metadata-cache.cjs +3 -3
- package/dist/lib/cjs/obsidian/modals/alert.cjs +3 -3
- package/dist/lib/cjs/obsidian/modals/confirm.cjs +3 -3
- package/dist/lib/cjs/obsidian/modals/index.cjs +3 -3
- package/dist/lib/cjs/obsidian/modals/modal.cjs +3 -3
- package/dist/lib/cjs/obsidian/modals/prompt.cjs +3 -3
- package/dist/lib/cjs/obsidian/modals/select-item.cjs +3 -3
- package/dist/lib/cjs/obsidian/monkey-around.cjs +3 -3
- package/dist/lib/cjs/obsidian/obsidian-settings.cjs +3 -3
- package/dist/lib/cjs/obsidian/pdf.cjs +3 -3
- package/dist/lib/cjs/obsidian/plugin/components/abort-signal-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/plugin/components/async-error-handler-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/plugin/components/console-debug-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/plugin/components/i18n-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/plugin/components/index.cjs +3 -3
- package/dist/lib/cjs/obsidian/plugin/components/lifecycle-events-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/plugin/components/plugin-context-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/plugin/components/plugin-notice-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-component.cjs +4 -4
- package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-tab-component.cjs +3 -3
- package/dist/lib/cjs/obsidian/plugin/index.cjs +3 -3
- package/dist/lib/cjs/obsidian/plugin/obsidian-plugin-repo-paths.cjs +3 -3
- package/dist/lib/cjs/obsidian/plugin/path-settings.cjs +3 -3
- package/dist/lib/cjs/obsidian/plugin/plugin-context.cjs +6 -6
- package/dist/lib/cjs/obsidian/plugin/plugin-id.cjs +3 -3
- package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.cjs +6 -6
- package/dist/lib/cjs/obsidian/plugin/plugin.cjs +3 -3
- package/dist/lib/cjs/obsidian/queue.cjs +3 -3
- package/dist/lib/cjs/obsidian/react/app-context.cjs +3 -3
- package/dist/lib/cjs/obsidian/react/index.cjs +3 -3
- package/dist/lib/cjs/obsidian/reference.cjs +3 -3
- package/dist/lib/cjs/obsidian/rename-delete-handler.cjs +3 -3
- package/dist/lib/cjs/obsidian/resource-url.cjs +3 -3
- package/dist/lib/cjs/obsidian/setting-ex.cjs +3 -3
- package/dist/lib/cjs/obsidian/setting-group-ex.cjs +3 -3
- package/dist/lib/cjs/obsidian/validation.cjs +3 -3
- package/dist/lib/cjs/obsidian/vault-delete.cjs +3 -3
- package/dist/lib/cjs/obsidian/vault.cjs +3 -3
- package/dist/lib/cjs/obsidian/workspace.cjs +3 -3
- package/dist/lib/cjs/path.cjs +3 -3
- package/dist/lib/cjs/reg-exp.cjs +3 -3
- package/dist/lib/cjs/script-utils/build.cjs +3 -3
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/change-extension-plugin.cjs +3 -3
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +3 -3
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.cjs +3 -3
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/dependency.cjs +3 -3
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-esm-plugin.cjs +3 -3
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +3 -3
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/index.cjs +3 -3
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +3 -3
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/preprocess-plugin.cjs +4 -4
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/rename-css-plugin.cjs +3 -3
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.cjs +3 -3
- package/dist/lib/cjs/script-utils/bundlers/esbuild.cjs +3 -3
- package/dist/lib/cjs/script-utils/bundlers/index.cjs +3 -3
- package/dist/lib/cjs/script-utils/cli-utils.cjs +3 -3
- package/dist/lib/cjs/script-utils/code-generator.cjs +3 -3
- package/dist/lib/cjs/script-utils/commitlint-config.cjs +3 -3
- package/dist/lib/cjs/script-utils/exec.cjs +7 -7
- package/dist/lib/cjs/script-utils/exec.d.cts +7 -7
- package/dist/lib/cjs/script-utils/formatters/dprint.cjs +3 -3
- package/dist/lib/cjs/script-utils/formatters/index.cjs +3 -3
- package/dist/lib/cjs/script-utils/fs.cjs +3 -3
- package/dist/lib/cjs/script-utils/index.cjs +3 -3
- package/dist/lib/cjs/script-utils/json.cjs +3 -3
- package/dist/lib/cjs/script-utils/linters/cspell.cjs +3 -3
- package/dist/lib/cjs/script-utils/linters/eslint-config.cjs +4 -4
- package/dist/lib/cjs/script-utils/linters/eslint-rules/index.cjs +3 -3
- package/dist/lib/cjs/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.cjs +4 -4
- package/dist/lib/cjs/script-utils/linters/eslint-rules/no-used-underscore-variables.cjs +3 -3
- package/dist/lib/cjs/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +3 -3
- package/dist/lib/cjs/script-utils/linters/eslint-rules/rule-tester-helper.cjs +3 -3
- package/dist/lib/cjs/script-utils/linters/eslint.cjs +3 -3
- package/dist/lib/cjs/script-utils/linters/index.cjs +3 -3
- package/dist/lib/cjs/script-utils/linters/markdownlint-cli2-config.cjs +3 -3
- package/dist/lib/cjs/script-utils/linters/markdownlint.cjs +3 -3
- package/dist/lib/cjs/script-utils/nano-staged-config.cjs +3 -3
- package/dist/lib/cjs/script-utils/npm-publish.cjs +3 -3
- package/dist/lib/cjs/script-utils/npm-run.cjs +3 -3
- package/dist/lib/cjs/script-utils/npm.cjs +3 -3
- package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.cjs +3 -3
- package/dist/lib/cjs/script-utils/root.cjs +3 -3
- package/dist/lib/cjs/script-utils/test-runners/index.cjs +3 -3
- package/dist/lib/cjs/script-utils/test-runners/vitest.cjs +3 -3
- package/dist/lib/cjs/script-utils/version.cjs +3 -3
- package/dist/lib/cjs/strict-proxy.cjs +3 -3
- package/dist/lib/cjs/string.cjs +3 -3
- package/dist/lib/cjs/transformers/date-transformer.cjs +3 -3
- package/dist/lib/cjs/transformers/duration-transformer.cjs +3 -3
- package/dist/lib/cjs/transformers/group-transformer.cjs +3 -3
- package/dist/lib/cjs/transformers/index.cjs +3 -3
- package/dist/lib/cjs/transformers/map-transformer.cjs +3 -3
- package/dist/lib/cjs/transformers/set-transformer.cjs +3 -3
- package/dist/lib/cjs/transformers/skip-private-property-transformer.cjs +3 -3
- package/dist/lib/cjs/transformers/transformer.cjs +3 -3
- package/dist/lib/cjs/transformers/two-way-map-transformer.cjs +3 -3
- package/dist/lib/cjs/transformers/typed-transformer.cjs +3 -3
- package/dist/lib/cjs/two-way-map.cjs +3 -3
- package/dist/lib/cjs/type-guards.cjs +3 -3
- package/dist/lib/cjs/type.cjs +3 -3
- package/dist/lib/cjs/url.cjs +3 -3
- package/dist/lib/cjs/value-provider.cjs +3 -3
- package/dist/lib/esm/abort-controller.mjs +4 -4
- package/dist/lib/esm/array.mjs +2 -2
- package/dist/lib/esm/async-events.mjs +5 -5
- package/dist/lib/esm/async.mjs +5 -5
- package/dist/lib/esm/blob.mjs +2 -2
- package/dist/lib/esm/codemirror/index.mjs +2 -2
- package/dist/lib/esm/codemirror/state-field-spec.mjs +2 -2
- package/dist/lib/esm/css-class.mjs +2 -2
- package/dist/lib/esm/debug-controller.mjs +2 -2
- package/dist/lib/esm/debug.mjs +2 -2
- package/dist/lib/esm/enum.mjs +3 -3
- package/dist/lib/esm/error.mjs +3 -3
- package/dist/lib/esm/function.mjs +2 -2
- package/dist/lib/esm/html-element.mjs +4 -4
- package/dist/lib/esm/index.mjs +2 -2
- package/dist/lib/esm/library.mjs +3 -3
- package/dist/lib/esm/object-utils.mjs +3 -3
- package/dist/lib/esm/obsidian/app.mjs +3 -3
- package/dist/lib/esm/obsidian/async-with-notice.mjs +6 -6
- package/dist/lib/esm/obsidian/attachment-path.mjs +2 -2
- package/dist/lib/esm/obsidian/backlink.mjs +2 -2
- package/dist/lib/esm/obsidian/callout.mjs +2 -2
- package/dist/lib/esm/obsidian/code-block-markdown-information.mjs +2 -2
- package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.mjs +2 -2
- package/dist/lib/esm/obsidian/command-handlers/app-active-file-provider.mjs +2 -2
- package/dist/lib/esm/obsidian/command-handlers/app-menu-event-registrar.mjs +2 -2
- package/dist/lib/esm/obsidian/command-handlers/command-handler-component.mjs +2 -2
- package/dist/lib/esm/obsidian/command-handlers/command-handler.mjs +2 -2
- package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.mjs +2 -2
- package/dist/lib/esm/obsidian/command-handlers/file-command-handler.mjs +2 -2
- package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.mjs +2 -2
- package/dist/lib/esm/obsidian/command-handlers/global-command-handler.mjs +2 -2
- package/dist/lib/esm/obsidian/command-handlers/index.mjs +2 -2
- package/dist/lib/esm/obsidian/command-handlers/open-settings-command-handler.mjs +2 -2
- package/dist/lib/esm/obsidian/components/all-windows-event-handler.mjs +2 -2
- package/dist/lib/esm/obsidian/components/async-component.mjs +2 -2
- package/dist/lib/esm/obsidian/components/async-events-component.mjs +2 -2
- package/dist/lib/esm/obsidian/components/index.mjs +2 -2
- package/dist/lib/esm/obsidian/components/setting-components/checkbox-component.mjs +2 -2
- package/dist/lib/esm/obsidian/components/setting-components/code-highlighter-component.mjs +4 -4
- package/dist/lib/esm/obsidian/components/setting-components/date-component.mjs +2 -2
- package/dist/lib/esm/obsidian/components/setting-components/date-time-component.mjs +2 -2
- package/dist/lib/esm/obsidian/components/setting-components/email-component.mjs +2 -2
- package/dist/lib/esm/obsidian/components/setting-components/file-component.mjs +2 -2
- package/dist/lib/esm/obsidian/components/setting-components/index.mjs +2 -2
- package/dist/lib/esm/obsidian/components/setting-components/month-component.mjs +2 -2
- package/dist/lib/esm/obsidian/components/setting-components/multiple-dropdown-component.mjs +2 -2
- package/dist/lib/esm/obsidian/components/setting-components/multiple-email-component.mjs +2 -2
- package/dist/lib/esm/obsidian/components/setting-components/multiple-file-component.mjs +2 -2
- package/dist/lib/esm/obsidian/components/setting-components/multiple-text-component.mjs +2 -2
- package/dist/lib/esm/obsidian/components/setting-components/number-component.mjs +2 -2
- package/dist/lib/esm/obsidian/components/setting-components/password-component.mjs +2 -2
- package/dist/lib/esm/obsidian/components/setting-components/setting-component-wrapper.mjs +2 -2
- package/dist/lib/esm/obsidian/components/setting-components/telephone-component.mjs +2 -2
- package/dist/lib/esm/obsidian/components/setting-components/text-based-component.mjs +2 -2
- package/dist/lib/esm/obsidian/components/setting-components/time-component.mjs +2 -2
- package/dist/lib/esm/obsidian/components/setting-components/tri-state-checkbox-component.mjs +2 -2
- package/dist/lib/esm/obsidian/components/setting-components/typed-dropdown-component.mjs +2 -2
- package/dist/lib/esm/obsidian/components/setting-components/typed-multiple-dropdown-component.mjs +2 -2
- package/dist/lib/esm/obsidian/components/setting-components/typed-range-text-component.mjs +2 -2
- package/dist/lib/esm/obsidian/components/setting-components/typed-text-component.mjs +2 -2
- package/dist/lib/esm/obsidian/components/setting-components/url-component.mjs +2 -2
- package/dist/lib/esm/obsidian/components/setting-components/validator-component.mjs +4 -4
- package/dist/lib/esm/obsidian/components/setting-components/value-component-with-change-tracking.mjs +2 -2
- package/dist/lib/esm/obsidian/components/setting-components/week-component.mjs +2 -2
- package/dist/lib/esm/obsidian/constructors/getDomEventsHandlersConstructor.mjs +2 -2
- package/dist/lib/esm/obsidian/constructors/index.mjs +2 -2
- package/dist/lib/esm/obsidian/dataview-link.mjs +2 -2
- package/dist/lib/esm/obsidian/dataview.mjs +2 -2
- package/dist/lib/esm/obsidian/editor.mjs +2 -2
- package/dist/lib/esm/obsidian/file-change.mjs +3 -3
- package/dist/lib/esm/obsidian/file-manager.mjs +2 -2
- package/dist/lib/esm/obsidian/file-system.mjs +3 -3
- package/dist/lib/esm/obsidian/frontmatter-link-cache-with-offsets.mjs +2 -2
- package/dist/lib/esm/obsidian/frontmatter.mjs +2 -2
- package/dist/lib/esm/obsidian/i18n/custom-type-options.mjs +2 -2
- package/dist/lib/esm/obsidian/i18n/default-translations.mjs +2 -2
- package/dist/lib/esm/obsidian/i18n/i18n.mjs +2 -2
- package/dist/lib/esm/obsidian/i18n/index.mjs +2 -2
- package/dist/lib/esm/obsidian/i18n/locales/en.mjs +2 -2
- package/dist/lib/esm/obsidian/i18n/locales/index.mjs +2 -2
- package/dist/lib/esm/obsidian/i18n/locales/translations-map.mjs +2 -2
- package/dist/lib/esm/obsidian/index.mjs +2 -2
- package/dist/lib/esm/obsidian/is-in-obsidian.mjs +2 -2
- package/dist/lib/esm/obsidian/link.mjs +2 -2
- package/dist/lib/esm/obsidian/logger.mjs +2 -2
- package/dist/lib/esm/obsidian/loop.mjs +2 -2
- package/dist/lib/esm/obsidian/markdown-code-block-processor.mjs +2 -2
- package/dist/lib/esm/obsidian/markdown-view.mjs +2 -2
- package/dist/lib/esm/obsidian/markdown.mjs +2 -2
- package/dist/lib/esm/obsidian/metadata-cache.mjs +2 -2
- package/dist/lib/esm/obsidian/modals/alert.mjs +2 -2
- package/dist/lib/esm/obsidian/modals/confirm.mjs +2 -2
- package/dist/lib/esm/obsidian/modals/index.mjs +2 -2
- package/dist/lib/esm/obsidian/modals/modal.mjs +2 -2
- package/dist/lib/esm/obsidian/modals/prompt.mjs +2 -2
- package/dist/lib/esm/obsidian/modals/select-item.mjs +2 -2
- package/dist/lib/esm/obsidian/monkey-around.mjs +2 -2
- package/dist/lib/esm/obsidian/obsidian-settings.mjs +2 -2
- package/dist/lib/esm/obsidian/pdf.mjs +2 -2
- package/dist/lib/esm/obsidian/plugin/components/abort-signal-component.mjs +2 -2
- package/dist/lib/esm/obsidian/plugin/components/async-error-handler-component.mjs +2 -2
- package/dist/lib/esm/obsidian/plugin/components/console-debug-component.mjs +2 -2
- package/dist/lib/esm/obsidian/plugin/components/i18n-component.mjs +2 -2
- package/dist/lib/esm/obsidian/plugin/components/index.mjs +2 -2
- package/dist/lib/esm/obsidian/plugin/components/lifecycle-events-component.mjs +2 -2
- package/dist/lib/esm/obsidian/plugin/components/plugin-context-component.mjs +2 -2
- package/dist/lib/esm/obsidian/plugin/components/plugin-notice-component.mjs +2 -2
- package/dist/lib/esm/obsidian/plugin/components/plugin-settings-component.mjs +3 -3
- package/dist/lib/esm/obsidian/plugin/components/plugin-settings-tab-component.mjs +2 -2
- package/dist/lib/esm/obsidian/plugin/index.mjs +2 -2
- package/dist/lib/esm/obsidian/plugin/obsidian-plugin-repo-paths.mjs +2 -2
- package/dist/lib/esm/obsidian/plugin/path-settings.mjs +2 -2
- package/dist/lib/esm/obsidian/plugin/plugin-context.mjs +5 -5
- package/dist/lib/esm/obsidian/plugin/plugin-id.mjs +2 -2
- package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.mjs +5 -5
- package/dist/lib/esm/obsidian/plugin/plugin.mjs +2 -2
- package/dist/lib/esm/obsidian/queue.mjs +2 -2
- package/dist/lib/esm/obsidian/react/app-context.mjs +2 -2
- package/dist/lib/esm/obsidian/react/index.mjs +2 -2
- package/dist/lib/esm/obsidian/reference.mjs +2 -2
- package/dist/lib/esm/obsidian/rename-delete-handler.mjs +2 -2
- package/dist/lib/esm/obsidian/resource-url.mjs +2 -2
- package/dist/lib/esm/obsidian/setting-ex.mjs +2 -2
- package/dist/lib/esm/obsidian/setting-group-ex.mjs +2 -2
- package/dist/lib/esm/obsidian/validation.mjs +2 -2
- package/dist/lib/esm/obsidian/vault-delete.mjs +2 -2
- package/dist/lib/esm/obsidian/vault.mjs +2 -2
- package/dist/lib/esm/obsidian/workspace.mjs +2 -2
- package/dist/lib/esm/path.mjs +2 -2
- package/dist/lib/esm/reg-exp.mjs +2 -2
- package/dist/lib/esm/script-utils/build.mjs +2 -2
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/change-extension-plugin.mjs +2 -2
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +2 -2
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/custom-esbuild-options-plugin.mjs +2 -2
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/dependency.mjs +2 -2
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-esm-plugin.mjs +2 -2
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/fix-source-maps-plugin.mjs +2 -2
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/index.mjs +2 -2
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +2 -2
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/preprocess-plugin.mjs +3 -3
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/rename-css-plugin.mjs +2 -2
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/svelte-wrapper-plugin.mjs +2 -2
- package/dist/lib/esm/script-utils/bundlers/esbuild.mjs +2 -2
- package/dist/lib/esm/script-utils/bundlers/index.mjs +2 -2
- package/dist/lib/esm/script-utils/cli-utils.mjs +2 -2
- package/dist/lib/esm/script-utils/code-generator.mjs +2 -2
- package/dist/lib/esm/script-utils/commitlint-config.mjs +2 -2
- package/dist/lib/esm/script-utils/exec.d.mts +7 -7
- package/dist/lib/esm/script-utils/exec.mjs +6 -6
- package/dist/lib/esm/script-utils/formatters/dprint.mjs +2 -2
- package/dist/lib/esm/script-utils/formatters/index.mjs +2 -2
- package/dist/lib/esm/script-utils/fs.mjs +2 -2
- package/dist/lib/esm/script-utils/index.mjs +2 -2
- package/dist/lib/esm/script-utils/json.mjs +2 -2
- package/dist/lib/esm/script-utils/linters/cspell.mjs +2 -2
- package/dist/lib/esm/script-utils/linters/eslint-config.mjs +3 -3
- package/dist/lib/esm/script-utils/linters/eslint-rules/index.mjs +2 -2
- package/dist/lib/esm/script-utils/linters/eslint-rules/no-async-callback-to-unsafe-return.mjs +3 -3
- package/dist/lib/esm/script-utils/linters/eslint-rules/no-used-underscore-variables.mjs +2 -2
- package/dist/lib/esm/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.mjs +2 -2
- package/dist/lib/esm/script-utils/linters/eslint-rules/rule-tester-helper.mjs +2 -2
- package/dist/lib/esm/script-utils/linters/eslint.mjs +2 -2
- package/dist/lib/esm/script-utils/linters/index.mjs +2 -2
- package/dist/lib/esm/script-utils/linters/markdownlint-cli2-config.mjs +2 -2
- package/dist/lib/esm/script-utils/linters/markdownlint.mjs +2 -2
- package/dist/lib/esm/script-utils/nano-staged-config.mjs +2 -2
- package/dist/lib/esm/script-utils/npm-publish.mjs +2 -2
- package/dist/lib/esm/script-utils/npm-run.mjs +2 -2
- package/dist/lib/esm/script-utils/npm.mjs +2 -2
- package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.mjs +2 -2
- package/dist/lib/esm/script-utils/root.mjs +2 -2
- package/dist/lib/esm/script-utils/test-runners/index.mjs +2 -2
- package/dist/lib/esm/script-utils/test-runners/vitest.mjs +2 -2
- package/dist/lib/esm/script-utils/version.mjs +2 -2
- package/dist/lib/esm/strict-proxy.mjs +2 -2
- package/dist/lib/esm/string.mjs +2 -2
- package/dist/lib/esm/transformers/date-transformer.mjs +2 -2
- package/dist/lib/esm/transformers/duration-transformer.mjs +2 -2
- package/dist/lib/esm/transformers/group-transformer.mjs +2 -2
- package/dist/lib/esm/transformers/index.mjs +2 -2
- package/dist/lib/esm/transformers/map-transformer.mjs +2 -2
- package/dist/lib/esm/transformers/set-transformer.mjs +2 -2
- package/dist/lib/esm/transformers/skip-private-property-transformer.mjs +2 -2
- package/dist/lib/esm/transformers/transformer.mjs +2 -2
- package/dist/lib/esm/transformers/two-way-map-transformer.mjs +2 -2
- package/dist/lib/esm/transformers/typed-transformer.mjs +2 -2
- package/dist/lib/esm/two-way-map.mjs +2 -2
- package/dist/lib/esm/type-guards.mjs +2 -2
- package/dist/lib/esm/type.mjs +2 -2
- package/dist/lib/esm/url.mjs +2 -2
- package/dist/lib/esm/value-provider.mjs +2 -2
- package/package.json +4 -1
|
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
(function initCjs() {
|
|
7
|
-
// eslint-disable-next-line obsidianmd/
|
|
7
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
8
8
|
const globalThisRecord = globalThis;
|
|
9
9
|
globalThisRecord['__name'] ??= name;
|
|
10
10
|
const originalRequire = require;
|
|
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
84
84
|
return originalRequire?.(id);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/
|
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
88
88
|
if (globalThis.app.isMobile) {
|
|
89
89
|
if (id === 'process' || id === 'node:process') {
|
|
90
90
|
// eslint-disable-next-line no-console -- Valid usage.
|
|
91
91
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
92
|
-
// eslint-disable-next-line obsidianmd/
|
|
92
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
93
93
|
return globalThis.process;
|
|
94
94
|
}
|
|
95
95
|
} else {
|
|
@@ -243,7 +243,7 @@ class PluginSettingsTabBase extends import_obsidian.PluginSettingTab {
|
|
|
243
243
|
let shouldSkipOnChange = false;
|
|
244
244
|
const UPDATE_VALIDATOR_EL_TIMEOUT_IN_MILLISECONDS = 100;
|
|
245
245
|
const updateValidatorElDebounced = (0, import_obsidian.debounce)(() => {
|
|
246
|
-
requestAnimationFrame(() => {
|
|
246
|
+
window.requestAnimationFrame(() => {
|
|
247
247
|
updateValidatorEl();
|
|
248
248
|
});
|
|
249
249
|
}, UPDATE_VALIDATOR_EL_TIMEOUT_IN_MILLISECONDS);
|
|
@@ -287,7 +287,7 @@ class PluginSettingsTabBase extends import_obsidian.PluginSettingTab {
|
|
|
287
287
|
updateValidatorElDebounced();
|
|
288
288
|
});
|
|
289
289
|
validatorEl?.addEventListener("click", () => {
|
|
290
|
-
requestAnimationFrame(() => {
|
|
290
|
+
window.requestAnimationFrame(() => {
|
|
291
291
|
updateValidatorElDebounced();
|
|
292
292
|
});
|
|
293
293
|
});
|
|
@@ -409,4 +409,4 @@ class PluginSettingsTabBase extends import_obsidian.PluginSettingTab {
|
|
|
409
409
|
PluginSettingsTabBase,
|
|
410
410
|
SAVE_TO_FILE_CONTEXT
|
|
411
411
|
});
|
|
412
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3BsdWdpbi9wbHVnaW4tc2V0dGluZ3MtdGFiLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5nIHRhYnMgaW4gT2JzaWRpYW4uXG4gKiBJdCBwcm92aWRlcyBhIHV0aWxpdHkgbWV0aG9kIHRvIGJpbmQgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsZSBjaGFuZ2VzLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgRGVib3VuY2VyLFxuICBQbHVnaW5cbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUge1xuICBDb25kaXRpb25hbEtleXMsXG4gIFByb21pc2FibGUsXG4gIFJlYWRvbmx5RGVlcFxufSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQge1xuICBkZWJvdW5jZSxcbiAgUGx1Z2luU2V0dGluZ1RhYixcbiAgc2V0VG9vbHRpcFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgQXN5bmNFdmVudFJlZiB9IGZyb20gJy4uLy4uL2FzeW5jLWV2ZW50cy50cyc7XG5pbXBvcnQgdHlwZSB7IFN0cmluZ0tleXMgfSBmcm9tICcuLi8uLi90eXBlLnRzJztcbmltcG9ydCB0eXBlIHsgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmcgfSBmcm9tICcuLi9jb21wb25lbnRzL3NldHRpbmctY29tcG9uZW50cy92YWx1ZS1jb21wb25lbnQtd2l0aC1jaGFuZ2UtdHJhY2tpbmcudHMnO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uTWVzc2FnZUhvbGRlciB9IGZyb20gJy4uL3ZhbGlkYXRpb24udHMnO1xuaW1wb3J0IHR5cGUge1xuICBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2UsXG4gIFJlYWRvbmx5UGx1Z2luU2V0dGluZ3MsXG4gIFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NTdGF0ZVxufSBmcm9tICcuL2NvbXBvbmVudHMvcGx1Z2luLXNldHRpbmdzLWNvbXBvbmVudC50cyc7XG5cbmltcG9ydCB7XG4gIGNvbnZlcnRBc3luY1RvU3luYyxcbiAgaW52b2tlQXN5bmNTYWZlbHlcbn0gZnJvbSAnLi4vLi4vYXN5bmMudHMnO1xuaW1wb3J0IHsgQ3NzQ2xhc3MgfSBmcm9tICcuLi8uLi9jc3MtY2xhc3MudHMnO1xuaW1wb3J0IHtcbiAgbm9vcCxcbiAgbm9vcEFzeW5jXG59IGZyb20gJy4uLy4uL2Z1bmN0aW9uLnRzJztcbmltcG9ydCB7IGRlZXBFcXVhbCB9IGZyb20gJy4uLy4uL29iamVjdC11dGlscy50cyc7XG5pbXBvcnQgeyBhc3NlcnROb25OdWxsYWJsZSB9IGZyb20gJy4uLy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7IEFzeW5jRXZlbnRzQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9hc3luYy1ldmVudHMtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IGVuc3VyZVdyYXBwZWQgfSBmcm9tICcuLi9jb21wb25lbnRzL3NldHRpbmctY29tcG9uZW50cy9zZXR0aW5nLWNvbXBvbmVudC13cmFwcGVyLnRzJztcbmltcG9ydCB7IGdldFRleHRCYXNlZENvbXBvbmVudFZhbHVlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9zZXR0aW5nLWNvbXBvbmVudHMvdGV4dC1iYXNlZC1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgZ2V0VmFsaWRhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9zZXR0aW5nLWNvbXBvbmVudHMvdmFsaWRhdG9yLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBpc1ZhbGlkYXRpb25NZXNzYWdlSG9sZGVyIH0gZnJvbSAnLi4vdmFsaWRhdGlvbi50cyc7XG5pbXBvcnQgeyBhZGRQbHVnaW5Dc3NDbGFzc2VzIH0gZnJvbSAnLi9wbHVnaW4tY29udGV4dC50cyc7XG5cbi8qKlxuICogQSBjb250ZXh0IHBhc3NlZCB0byB0aGUge0BsaW5rIFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZS5zYXZlVG9GaWxlfSBtZXRob2QuXG4gKi9cbmV4cG9ydCBjb25zdCBTQVZFX1RPX0ZJTEVfQ09OVEVYVCA9ICdQbHVnaW5TZXR0aW5nc1RhYic7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYFBsdWdpblNldHRpbmdzVGFiQmFzZS5iaW5kYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaW5kT3B0aW9uczxUPiB7XG4gIC8qKlxuICAgKiBBIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSBjb21wb25lbnQgY2hhbmdlcy5cbiAgICovXG4gIHJlYWRvbmx5IG9uQ2hhbmdlZD86IChuZXdWYWx1ZTogUmVhZG9ubHlEZWVwPFQ+LCBvbGRWYWx1ZTogUmVhZG9ubHlEZWVwPFQ+KSA9PiBQcm9taXNhYmxlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlc2V0IHRoZSBzZXR0aW5nIHdoZW4gdGhlIGNvbXBvbmVudCB2YWx1ZSBpcyBlbXB0eS4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqIEFwcGxpY2FibGUgb25seSB0byB0ZXh0LWJhc2VkIGNvbXBvbmVudHMuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZXNldFNldHRpbmdXaGVuQ29tcG9uZW50SXNFbXB0eT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyB0aGUgcGxhY2Vob2xkZXIgZm9yIGRlZmF1bHQgdmFsdWVzLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICogQXBwbGljYWJsZSBvbmx5IHRvIHRleHQtYmFzZWQgY29tcG9uZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNob3dQbGFjZWhvbGRlckZvckRlZmF1bHRWYWx1ZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgdGhlIHZhbGlkYXRpb24gbWVzc2FnZSB3aGVuIHRoZSBjb21wb25lbnQgdmFsdWUgaXMgaW52YWxpZC4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTaG93VmFsaWRhdGlvbk1lc3NhZ2U/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEV4dGVuZGVkIG9wdGlvbnMgZm9yIGBQbHVnaW5TZXR0aW5nc1RhYkJhc2UuYmluZGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmluZE9wdGlvbnNFeHRlbmRlZDxcbiAgUGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3QsXG4gIFVJVmFsdWUsXG4gIFByb3BlcnR5TmFtZSBleHRlbmRzIFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+XG4+IGV4dGVuZHMgQmluZE9wdGlvbnM8UGx1Z2luU2V0dGluZ3NbUHJvcGVydHlOYW1lXT4ge1xuICAvKipcbiAgICogQ29udmVydHMgdGhlIFVJIGNvbXBvbmVudCdzIHZhbHVlIGJhY2sgdG8gdGhlIHBsdWdpbiBzZXR0aW5ncyB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHVpVmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIHRvIHNldCBvbiB0aGUgcGx1Z2luIHNldHRpbmdzLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcG9uZW50VG9QbHVnaW5TZXR0aW5nc1ZhbHVlQ29udmVydGVyOiAodWlWYWx1ZTogVUlWYWx1ZSkgPT4gUGx1Z2luU2V0dGluZ3NbUHJvcGVydHlOYW1lXSB8IFZhbGlkYXRpb25NZXNzYWdlSG9sZGVyO1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgcGx1Z2luIHNldHRpbmdzIHZhbHVlIHRvIHRoZSB2YWx1ZSB1c2VkIGJ5IHRoZSBVSSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBwbHVnaW5TZXR0aW5nc1ZhbHVlIC0gVGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgcGx1Z2luIHNldHRpbmdzLlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgdG8gc2V0IG9uIHRoZSBVSSBjb21wb25lbnQuXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5TZXR0aW5nc1RvQ29tcG9uZW50VmFsdWVDb252ZXJ0ZXI6IChwbHVnaW5TZXR0aW5nc1ZhbHVlOiBSZWFkb25seURlZXA8UGx1Z2luU2V0dGluZ3NbUHJvcGVydHlOYW1lXT4pID0+IFVJVmFsdWU7XG59XG5cbi8qKlxuICogUGFyYW1zIGZvciBjcmVhdGluZyBhIHtAbGluayBQbHVnaW5TZXR0aW5nc1RhYkJhc2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpblNldHRpbmdzVGFiQmFzZVBhcmFtczxQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdD4ge1xuICAvKipcbiAgICogVGhlIHBsdWdpbiBpbnN0YW5jZSAobmVlZGVkIGJ5IE9ic2lkaWFuJ3MgUGx1Z2luU2V0dGluZ1RhYikuXG4gICAqL1xuICByZWFkb25seSBwbHVnaW46IFBsdWdpbjtcblxuICAvKipcbiAgICogVGhlIHNldHRpbmdzIGNvbXBvbmVudC5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpblNldHRpbmdzQ29tcG9uZW50OiBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2U8UGx1Z2luU2V0dGluZ3M+O1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5ncyB0YWJzIGluIE9ic2lkaWFuLlxuICogUHJvdmlkZXMgYSBtZXRob2QgZm9yIGJpbmRpbmcgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsaW5nIGNoYW5nZXMuXG4gKlxuICogQHR5cGVQYXJhbSBQbHVnaW5TZXR0aW5ncyAtIFRoZSBwbHVnaW4gc2V0dGluZ3MgdHlwZS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBsdWdpblNldHRpbmdzVGFiQmFzZTxQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdD4gZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHBsdWdpbiBzZXR0aW5ncyB0YWIgaXMgb3Blbi5cbiAgICpcbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgcGx1Z2luIHNldHRpbmdzIHRhYiBpcyBvcGVuLlxuICAgKi9cbiAgcHVibGljIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzT3BlbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc2V0dGluZ3MgbWFuYWdlci5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBwbHVnaW5TZXR0aW5nc0NvbXBvbmVudDogUGx1Z2luU2V0dGluZ3NDb21wb25lbnRCYXNlPFBsdWdpblNldHRpbmdzPjtcblxuICAvKipcbiAgICogQSBkZWJvdW5jZSB0aW1lb3V0IGZvciBzYXZpbmcgc2V0dGluZ3MuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBkZWJvdW5jZSB0aW1lb3V0IGZvciBzYXZpbmcgc2V0dGluZ3MuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IHNhdmVTZXR0aW5nc0RlYm91bmNlVGltZW91dEluTWlsbGlzZWNvbmRzKCk6IG51bWJlciB7XG4gICAgY29uc3QgREVGQVVMVCA9IDJfMDAwO1xuICAgIHJldHVybiBERUZBVUxUO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNPcGVuID0gZmFsc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXN5bmNFdmVudHNDb21wb25lbnQ6IEFzeW5jRXZlbnRzQ29tcG9uZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IHNhdmVTZXR0aW5nc0RlYm91bmNlZDogRGVib3VuY2VyPFtdLCB2b2lkPjtcblxuICBwcml2YXRlIGdldCBwbHVnaW5TZXR0aW5ncygpOiBSZWFkb25seVBsdWdpblNldHRpbmdzPFBsdWdpblNldHRpbmdzPiB7XG4gICAgcmV0dXJuIHRoaXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQuc2V0dGluZ3NTdGF0ZS5pbnB1dFZhbHVlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IHBsdWdpbiBzZXR0aW5ncyB0YWIuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1zLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogUGx1Z2luU2V0dGluZ3NUYWJCYXNlUGFyYW1zPFBsdWdpblNldHRpbmdzPikge1xuICAgIHN1cGVyKHBhcmFtcy5wbHVnaW4uYXBwLCBwYXJhbXMucGx1Z2luKTtcbiAgICB0aGlzLnBsdWdpblNldHRpbmdzQ29tcG9uZW50ID0gcGFyYW1zLnBsdWdpblNldHRpbmdzQ29tcG9uZW50O1xuICAgIGFkZFBsdWdpbkNzc0NsYXNzZXModGhpcy5jb250YWluZXJFbCwgQ3NzQ2xhc3MuUGx1Z2luU2V0dGluZ3NUYWIpO1xuICAgIHRoaXMuc2F2ZVNldHRpbmdzRGVib3VuY2VkID0gZGVib3VuY2UoXG4gICAgICBjb252ZXJ0QXN5bmNUb1N5bmMoKCkgPT4gdGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudC5zYXZlVG9GaWxlKFNBVkVfVE9fRklMRV9DT05URVhUKSksXG4gICAgICB0aGlzLnNhdmVTZXR0aW5nc0RlYm91bmNlVGltZW91dEluTWlsbGlzZWNvbmRzXG4gICAgKTtcbiAgICB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50ID0gbmV3IEFzeW5jRXZlbnRzQ29tcG9uZW50KCk7XG4gIH1cblxuICAvKipcbiAgICogQmluZHMgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwbHVnaW4gc2V0dGluZy5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBVSVZhbHVlIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIG9mIHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEB0eXBlUGFyYW0gVFZhbHVlQ29tcG9uZW50IC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIHZhbHVlQ29tcG9uZW50IC0gVGhlIHZhbHVlIGNvbXBvbmVudCB0byBiaW5kLlxuICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lIC0gVGhlIHByb3BlcnR5IG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdG8gYmluZCB0by5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgYmluZGluZyB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGJpbmQ8XG4gICAgVUlWYWx1ZSxcbiAgICBUVmFsdWVDb21wb25lbnRcbiAgPihcbiAgICB2YWx1ZUNvbXBvbmVudDogVFZhbHVlQ29tcG9uZW50ICYgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmc8VUlWYWx1ZT4sXG4gICAgcHJvcGVydHlOYW1lOiBDb25kaXRpb25hbEtleXM8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWU+LFxuICAgIG9wdGlvbnM/OiBCaW5kT3B0aW9uczxVSVZhbHVlPlxuICApOiBUVmFsdWVDb21wb25lbnQ7XG4gIC8qKlxuICAgKiBCaW5kcyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHBsdWdpbiBzZXR0aW5nLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFVJVmFsdWUgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHR5cGVQYXJhbSBUVmFsdWVDb21wb25lbnQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFByb3BlcnR5TmFtZSAtIFRoZSBwcm9wZXJ0eSBuYW1lIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdG8gYmluZCB0by5cbiAgICogQHBhcmFtIHZhbHVlQ29tcG9uZW50IC0gVGhlIHZhbHVlIGNvbXBvbmVudCB0byBiaW5kLlxuICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lIC0gVGhlIHByb3BlcnR5IG5hbWUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyB0byBiaW5kIHRvLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBiaW5kaW5nIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgYmluZDxcbiAgICBVSVZhbHVlLFxuICAgIFRWYWx1ZUNvbXBvbmVudCxcbiAgICBQcm9wZXJ0eU5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPlxuICA+KFxuICAgIHZhbHVlQ29tcG9uZW50OiBUVmFsdWVDb21wb25lbnQgJiBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZzxVSVZhbHVlPixcbiAgICBwcm9wZXJ0eU5hbWU6IFByb3BlcnR5TmFtZSxcbiAgICBvcHRpb25zOiBCaW5kT3B0aW9uc0V4dGVuZGVkPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlLCBQcm9wZXJ0eU5hbWU+XG4gICk6IFRWYWx1ZUNvbXBvbmVudDtcbiAgLyoqXG4gICAqIEJpbmRzIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVUlWYWx1ZSAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFRWYWx1ZUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEB0eXBlUGFyYW0gUHJvcGVydHlOYW1lIC0gVGhlIHByb3BlcnR5IG5hbWUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyB0byBiaW5kIHRvLlxuICAgKiBAcGFyYW0gdmFsdWVDb21wb25lbnQgLSBUaGUgdmFsdWUgY29tcG9uZW50IHRvIGJpbmQuXG4gICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgLSBUaGUgcHJvcGVydHkgbmFtZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIHRvIGJpbmQgdG8uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGJpbmRpbmcgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBiaW5kPFxuICAgIFVJVmFsdWUsXG4gICAgVFZhbHVlQ29tcG9uZW50LFxuICAgIFByb3BlcnR5TmFtZSBleHRlbmRzIFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+XG4gID4oXG4gICAgdmFsdWVDb21wb25lbnQ6IFRWYWx1ZUNvbXBvbmVudCAmIFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPFVJVmFsdWU+LFxuICAgIHByb3BlcnR5TmFtZTogUHJvcGVydHlOYW1lLFxuICAgIG9wdGlvbnM/OiBCaW5kT3B0aW9uczxQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdPlxuICApOiBUVmFsdWVDb21wb25lbnQge1xuICAgIHR5cGUgUHJvcGVydHlUeXBlID0gUGx1Z2luU2V0dGluZ3NbUHJvcGVydHlOYW1lXTtcbiAgICBjb25zdCBERUZBVUxUX09QVElPTlM6IFJlcXVpcmVkPEJpbmRPcHRpb25zRXh0ZW5kZWQ8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWUsIFByb3BlcnR5TmFtZT4+ID0ge1xuICAgICAgY29tcG9uZW50VG9QbHVnaW5TZXR0aW5nc1ZhbHVlQ29udmVydGVyOiAodmFsdWU6IFVJVmFsdWUpOiBQcm9wZXJ0eVR5cGUgPT4gdmFsdWUgYXMgUHJvcGVydHlUeXBlLFxuICAgICAgb25DaGFuZ2VkOiBub29wLFxuICAgICAgcGx1Z2luU2V0dGluZ3NUb0NvbXBvbmVudFZhbHVlQ29udmVydGVyOiAodmFsdWU6IFJlYWRvbmx5RGVlcDxQcm9wZXJ0eVR5cGU+KTogVUlWYWx1ZSA9PiB2YWx1ZSBhcyBVSVZhbHVlLFxuICAgICAgc2hvdWxkUmVzZXRTZXR0aW5nV2hlbkNvbXBvbmVudElzRW1wdHk6IHRydWUsXG4gICAgICBzaG91bGRTaG93UGxhY2Vob2xkZXJGb3JEZWZhdWx0VmFsdWVzOiB0cnVlLFxuICAgICAgc2hvdWxkU2hvd1ZhbGlkYXRpb25NZXNzYWdlOiB0cnVlXG4gICAgfTtcblxuICAgIGNvbnN0IG9wdGlvbnNFeHQ6IFJlcXVpcmVkPEJpbmRPcHRpb25zRXh0ZW5kZWQ8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWUsIFByb3BlcnR5TmFtZT4+ID0geyAuLi5ERUZBVUxUX09QVElPTlMsIC4uLm9wdGlvbnMgfTtcblxuICAgIGNvbnN0IHZhbGlkYXRvckVsID0gZ2V0VmFsaWRhdG9yQ29tcG9uZW50KHZhbHVlQ29tcG9uZW50KT8udmFsaWRhdG9yRWw7XG5cbiAgICBjb25zdCB0ZXh0QmFzZWRDb21wb25lbnQgPSBnZXRUZXh0QmFzZWRDb21wb25lbnRWYWx1ZSh2YWx1ZUNvbXBvbmVudCk7XG5cbiAgICBjb25zdCByZWFkb25seVZhbHVlID0gdGhpcy5nZXRQbHVnaW5TZXR0aW5nc1Byb3BlcnR5KHByb3BlcnR5TmFtZSk7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB0aGlzLnBsdWdpblNldHRpbmdzQ29tcG9uZW50LmRlZmF1bHRTZXR0aW5ncyBhcyBQbHVnaW5TZXR0aW5ncztcbiAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBkZWZhdWx0c1twcm9wZXJ0eU5hbWVdIGFzIFByb3BlcnR5VHlwZTtcbiAgICBjb25zdCBkZWZhdWx0Q29tcG9uZW50VmFsdWUgPSBvcHRpb25zRXh0LnBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcihkZWZhdWx0VmFsdWUgYXMgUmVhZG9ubHlEZWVwPFByb3BlcnR5VHlwZT4pO1xuICAgIHRleHRCYXNlZENvbXBvbmVudD8uc2V0UGxhY2Vob2xkZXJWYWx1ZShkZWZhdWx0Q29tcG9uZW50VmFsdWUpO1xuXG4gICAgbGV0IHZhbGlkYXRpb25NZXNzYWdlOiBzdHJpbmc7XG4gICAgbGV0IHRvb2x0aXBFbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgdG9vbHRpcENvbnRlbnRFbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgICBpZiAodmFsaWRhdG9yRWwpIHtcbiAgICAgIGNvbnN0IHdyYXBwZXIgPSBlbnN1cmVXcmFwcGVkKHZhbGlkYXRvckVsKTtcbiAgICAgIHRvb2x0aXBFbCA9IHdyYXBwZXIuY3JlYXRlRGl2KCk7XG4gICAgICBhZGRQbHVnaW5Dc3NDbGFzc2VzKHRvb2x0aXBFbCwgQ3NzQ2xhc3MuVG9vbHRpcCwgQ3NzQ2xhc3MuVG9vbHRpcFZhbGlkYXRvcik7XG4gICAgICB0b29sdGlwQ29udGVudEVsID0gdG9vbHRpcEVsLmNyZWF0ZVNwYW4oKTtcbiAgICAgIGNvbnN0IHRvb2x0aXBBcnJvd0VsID0gdG9vbHRpcEVsLmNyZWF0ZURpdigpO1xuICAgICAgYWRkUGx1Z2luQ3NzQ2xhc3Nlcyh0b29sdGlwQXJyb3dFbCwgQ3NzQ2xhc3MuVG9vbHRpcEFycm93KTtcbiAgICAgIHRvb2x0aXBFbC5oaWRlKCk7XG4gICAgICB3cmFwcGVyLmFwcGVuZENoaWxkKHRvb2x0aXBFbCk7XG4gICAgfVxuXG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC5yZWdpc3RlckFzeW5jRXZlbnQodGhpcy5vbigndmFsaWRhdGlvbk1lc3NhZ2VDaGFuZ2VkJywgKGFub3RoZXJQcm9wZXJ0eU5hbWUsIGFub3RoZXJWYWxpZGF0aW9uTWVzc2FnZSkgPT4ge1xuICAgICAgaWYgKHByb3BlcnR5TmFtZSAhPT0gYW5vdGhlclByb3BlcnR5TmFtZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhbGlkYXRpb25NZXNzYWdlID0gYW5vdGhlclZhbGlkYXRpb25NZXNzYWdlO1xuICAgICAgdXBkYXRlVmFsaWRhdG9yRWxEZWJvdW5jZWQoKTtcbiAgICB9KSk7XG5cbiAgICBsZXQgc2hvdWxkRW1wdHlPbkJsdXIgPSBmYWxzZTtcbiAgICBsZXQgc2hvdWxkUmV2ZXJ0VG9EZWZhdWx0VmFsdWVPbkJsdXIgPSBmYWxzZTtcblxuICAgIGlmICh0ZXh0QmFzZWRDb21wb25lbnQgJiYgb3B0aW9uc0V4dC5zaG91bGRTaG93UGxhY2Vob2xkZXJGb3JEZWZhdWx0VmFsdWVzICYmIGRlZXBFcXVhbChyZWFkb25seVZhbHVlLCBkZWZhdWx0VmFsdWUpKSB7XG4gICAgICB0ZXh0QmFzZWRDb21wb25lbnQuZW1wdHkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWVDb21wb25lbnQuc2V0VmFsdWUob3B0aW9uc0V4dC5wbHVnaW5TZXR0aW5nc1RvQ29tcG9uZW50VmFsdWVDb252ZXJ0ZXIocmVhZG9ubHlWYWx1ZSkpO1xuICAgIH1cblxuICAgIGxldCBzaG91bGRTa2lwT25DaGFuZ2UgPSBmYWxzZTtcbiAgICBjb25zdCBVUERBVEVfVkFMSURBVE9SX0VMX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTID0gMTAwO1xuICAgIGNvbnN0IHVwZGF0ZVZhbGlkYXRvckVsRGVib3VuY2VkID0gZGVib3VuY2UoKCkgPT4ge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgdXBkYXRlVmFsaWRhdG9yRWwoKTtcbiAgICAgIH0pO1xuICAgIH0sIFVQREFURV9WQUxJREFUT1JfRUxfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMpO1xuXG4gICAgdmFsdWVDb21wb25lbnQub25DaGFuZ2UoYXN5bmMgKHVpVmFsdWUpID0+IHtcbiAgICAgIGlmIChzaG91bGRTa2lwT25DaGFuZ2UpIHtcbiAgICAgICAgc2hvdWxkU2tpcE9uQ2hhbmdlID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc2hvdWxkRW1wdHlPbkJsdXIgPSBmYWxzZTtcblxuICAgICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLmdldFBsdWdpblNldHRpbmdzUHJvcGVydHkocHJvcGVydHlOYW1lKTtcbiAgICAgIGxldCBuZXdWYWx1ZTogUHJvcGVydHlUeXBlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgbGV0IHNob3VsZFNldFByb3BlcnR5ID0gdHJ1ZTtcbiAgICAgIHNob3VsZFJldmVydFRvRGVmYXVsdFZhbHVlT25CbHVyID0gISF0ZXh0QmFzZWRDb21wb25lbnQ/LmlzRW1wdHkoKSAmJiBvcHRpb25zRXh0LnNob3VsZFJlc2V0U2V0dGluZ1doZW5Db21wb25lbnRJc0VtcHR5O1xuICAgICAgaWYgKHNob3VsZFJldmVydFRvRGVmYXVsdFZhbHVlT25CbHVyKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY29udmVydGVkVmFsdWUgPSBvcHRpb25zRXh0LmNvbXBvbmVudFRvUGx1Z2luU2V0dGluZ3NWYWx1ZUNvbnZlcnRlcih1aVZhbHVlKTtcbiAgICAgICAgaWYgKGlzVmFsaWRhdGlvbk1lc3NhZ2VIb2xkZXIoY29udmVydGVkVmFsdWUpKSB7XG4gICAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UgPSBjb252ZXJ0ZWRWYWx1ZS52YWxpZGF0aW9uTWVzc2FnZTtcbiAgICAgICAgICBzaG91bGRTZXRQcm9wZXJ0eSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld1ZhbHVlID0gY29udmVydGVkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHNob3VsZFNldFByb3BlcnR5KSB7XG4gICAgICAgIHZhbGlkYXRpb25NZXNzYWdlID0gYXdhaXQgdGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudC5zZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIG5ld1ZhbHVlIGFzIFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0pO1xuICAgICAgICBpZiAodGV4dEJhc2VkQ29tcG9uZW50ICYmIG9wdGlvbnNFeHQuc2hvdWxkU2hvd1BsYWNlaG9sZGVyRm9yRGVmYXVsdFZhbHVlcyAmJiAhdGV4dEJhc2VkQ29tcG9uZW50LmlzRW1wdHkoKSAmJiBkZWVwRXF1YWwobmV3VmFsdWUsIGRlZmF1bHRWYWx1ZSkpIHtcbiAgICAgICAgICBzaG91bGRFbXB0eU9uQmx1ciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdXBkYXRlVmFsaWRhdG9yRWxEZWJvdW5jZWQoKTtcbiAgICAgIGlmIChzaG91bGRTZXRQcm9wZXJ0eSkge1xuICAgICAgICBhd2FpdCBvcHRpb25zRXh0Lm9uQ2hhbmdlZChuZXdWYWx1ZSBhcyBSZWFkb25seURlZXA8UHJvcGVydHlUeXBlPiwgb2xkVmFsdWUgYXMgUmVhZG9ubHlEZWVwPFByb3BlcnR5VHlwZT4pO1xuICAgICAgfVxuICAgICAgdGhpcy5zYXZlU2V0dGluZ3NEZWJvdW5jZWQoKTtcbiAgICB9KTtcblxuICAgIHZhbGlkYXRvckVsPy5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsICgpID0+IHtcbiAgICAgIHVwZGF0ZVZhbGlkYXRvckVsRGVib3VuY2VkKCk7XG4gICAgfSk7XG4gICAgdmFsaWRhdG9yRWw/LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoKSA9PiB7XG4gICAgICB1cGRhdGVWYWxpZGF0b3JFbERlYm91bmNlZCgpO1xuICAgIH0pO1xuICAgIHZhbGlkYXRvckVsPy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHVwZGF0ZVZhbGlkYXRvckVsRGVib3VuY2VkKCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHZhbGlkYXRpb25NZXNzYWdlcyA9IHRoaXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQuc2V0dGluZ3NTdGF0ZS52YWxpZGF0aW9uTWVzc2FnZXMgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICB2YWxpZGF0aW9uTWVzc2FnZSA9IHZhbGlkYXRpb25NZXNzYWdlc1twcm9wZXJ0eU5hbWVdID8/ICcnO1xuICAgIHVwZGF0ZVZhbGlkYXRvckVsRGVib3VuY2VkKCk7XG5cbiAgICByZXR1cm4gdmFsdWVDb21wb25lbnQ7XG5cbiAgICBmdW5jdGlvbiB1cGRhdGVWYWxpZGF0b3JFbCgpOiB2b2lkIHtcbiAgICAgIGlmICghdmFsaWRhdG9yRWw/LmlzQWN0aXZlRWxlbWVudCgpKSB7XG4gICAgICAgIGlmIChzaG91bGRFbXB0eU9uQmx1cikge1xuICAgICAgICAgIHNob3VsZEVtcHR5T25CbHVyID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoIXRleHRCYXNlZENvbXBvbmVudD8uaXNFbXB0eSgpKSB7XG4gICAgICAgICAgICBzaG91bGRTa2lwT25DaGFuZ2UgPSB0cnVlO1xuICAgICAgICAgICAgdGV4dEJhc2VkQ29tcG9uZW50Py5lbXB0eSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChzaG91bGRSZXZlcnRUb0RlZmF1bHRWYWx1ZU9uQmx1cikge1xuICAgICAgICAgIHNob3VsZFJldmVydFRvRGVmYXVsdFZhbHVlT25CbHVyID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAodGV4dEJhc2VkQ29tcG9uZW50Py5pc0VtcHR5KCkpIHtcbiAgICAgICAgICAgIHNob3VsZFNraXBPbkNoYW5nZSA9IHRydWU7XG4gICAgICAgICAgICB2YWx1ZUNvbXBvbmVudC5zZXRWYWx1ZShkZWZhdWx0Q29tcG9uZW50VmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIXZhbGlkYXRvckVsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgYXNzZXJ0Tm9uTnVsbGFibGUodG9vbHRpcENvbnRlbnRFbCk7XG5cbiAgICAgIGlmICh2YWxpZGF0aW9uTWVzc2FnZSA9PT0gJycpIHtcbiAgICAgICAgdmFsaWRhdG9yRWwuc2V0Q3VzdG9tVmFsaWRpdHkoJycpO1xuICAgICAgICB2YWxpZGF0b3JFbC5jaGVja1ZhbGlkaXR5KCk7XG4gICAgICAgIHZhbGlkYXRpb25NZXNzYWdlID0gdmFsaWRhdG9yRWwudmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgICB9XG5cbiAgICAgIHZhbGlkYXRvckVsLnNldEN1c3RvbVZhbGlkaXR5KHZhbGlkYXRpb25NZXNzYWdlKTtcbiAgICAgIGlmIChvcHRpb25zRXh0LnNob3VsZFNob3dWYWxpZGF0aW9uTWVzc2FnZSkge1xuICAgICAgICB0b29sdGlwQ29udGVudEVsLnRleHRDb250ZW50ID0gdmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgICAgIHRvb2x0aXBFbD8udG9nZ2xlKCEhdmFsaWRhdGlvbk1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIGlmICh2YWxpZGF0aW9uTWVzc2FnZSkge1xuICAgICAgICBzZXRUb29sdGlwKHZhbGlkYXRvckVsLCB2YWxpZGF0aW9uTWVzc2FnZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIHBsdWdpbiBzZXR0aW5ncyB0YWIuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZGlzcGxheSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRhaW5lckVsLmVtcHR5KCk7XG4gICAgdGhpcy5faXNPcGVuID0gdHJ1ZTtcbiAgICB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50LmxvYWQoKTtcbiAgICB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50LnJlZ2lzdGVyQXN5bmNFdmVudCh0aGlzLnBsdWdpblNldHRpbmdzQ29tcG9uZW50Lm9uKCdsb2FkU2V0dGluZ3MnLCB0aGlzLm9uTG9hZFNldHRpbmdzLmJpbmQodGhpcykpKTtcbiAgICB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50LnJlZ2lzdGVyQXN5bmNFdmVudCh0aGlzLnBsdWdpblNldHRpbmdzQ29tcG9uZW50Lm9uKCdzYXZlU2V0dGluZ3MnLCB0aGlzLm9uU2F2ZVNldHRpbmdzLmJpbmQodGhpcykpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRlcyB0aGUgcGx1Z2luIHNldHRpbmdzIHRhYi5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBoaWRlKCk6IHZvaWQge1xuICAgIHN1cGVyLmhpZGUoKTtcbiAgICB0aGlzLnNhdmVTZXR0aW5nc0RlYm91bmNlZC5jYW5jZWwoKTtcbiAgICB0aGlzLl9pc09wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50LnVubG9hZCgpO1xuICAgIHRoaXMuYXN5bmNFdmVudHNDb21wb25lbnQubG9hZCgpO1xuICAgIGludm9rZUFzeW5jU2FmZWx5KCgpID0+IHRoaXMuaGlkZUFzeW5jKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFzeW5jIGFjdGlvbnMgdG8gcGVyZm9ybSB3aGVuIHRoZSBzZXR0aW5ncyB0YWIgaXMgYmVpbmcgaGlkZGVuLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHNldHRpbmdzIHRhYiBpcyBoaWRkZW4uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGlkZUFzeW5jKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQuc2F2ZVRvRmlsZShTQVZFX1RPX0ZJTEVfQ09OVEVYVCk7XG4gIH1cblxuICAvKipcbiAgICogU2hvd3MgdGhlIHBsdWdpbiBzZXR0aW5ncyB0YWIuXG4gICAqL1xuICBwdWJsaWMgc2hvdygpOiB2b2lkIHtcbiAgICB0aGlzLmFwcC5zZXR0aW5nLm9wZW5UYWIodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHBsdWdpbiBzZXR0aW5ncyBhcmUgbG9hZGVkLlxuICAgKlxuICAgKiBAcGFyYW0gX2xvYWRlZFN0YXRlIC0gVGhlIGxvYWRlZCBzZXR0aW5ncyBzdGF0ZS5cbiAgICogQHBhcmFtIF9pc0luaXRpYWxMb2FkIC0gV2hldGhlciB0aGUgc2V0dGluZ3MgYXJlIGJlaW5nIGxvYWRlZCBmb3IgdGhlIGZpcnN0IHRpbWUuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgc2V0dGluZ3MgYXJlIGxvYWRlZC5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBvbkxvYWRTZXR0aW5ncyhfbG9hZGVkU3RhdGU6IFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NTdGF0ZTxQbHVnaW5TZXR0aW5ncz4sIF9pc0luaXRpYWxMb2FkOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5kaXNwbGF5KCk7XG4gICAgYXdhaXQgbm9vcEFzeW5jKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV2YWxpZGF0ZXMgdGhlIHNldHRpbmdzLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHNldHRpbmdzIGFyZSByZXZhbGlkYXRlZC5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyByZXZhbGlkYXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHZhbGlkYXRpb25NZXNzYWdlcyA9IGF3YWl0IHRoaXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQucmV2YWxpZGF0ZSgpO1xuICAgIGF3YWl0IHRoaXMudXBkYXRlVmFsaWRhdGlvbnModmFsaWRhdGlvbk1lc3NhZ2VzKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGx1Z2luU2V0dGluZ3NQcm9wZXJ0eTxQcm9wZXJ0eU5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPj4oXG4gICAgcHJvcGVydHlOYW1lOiBQcm9wZXJ0eU5hbWVcbiAgKTogUmVhZG9ubHlEZWVwPFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0+IHtcbiAgICBjb25zdCBzZXR0aW5ncyA9IHRoaXMucGx1Z2luU2V0dGluZ3MgYXMgUGx1Z2luU2V0dGluZ3M7XG4gICAgcmV0dXJuIHNldHRpbmdzW3Byb3BlcnR5TmFtZV0gYXMgUmVhZG9ubHlEZWVwPFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0+O1xuICB9XG5cbiAgcHJpdmF0ZSBvbihcbiAgICBuYW1lOiAndmFsaWRhdGlvbk1lc3NhZ2VDaGFuZ2VkJyxcbiAgICBjYWxsYmFjazogKFxuICAgICAgcHJvcGVydHlOYW1lOiBzdHJpbmcsXG4gICAgICB2YWxpZGF0aW9uTWVzc2FnZTogc3RyaW5nXG4gICAgKSA9PiBQcm9taXNhYmxlPHZvaWQ+LFxuICAgIHRoaXNBcmc/OiB1bmtub3duXG4gICk6IEFzeW5jRXZlbnRSZWY7XG4gIHByaXZhdGUgb248QXJncyBleHRlbmRzIHVua25vd25bXT4oXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGNhbGxiYWNrOiAoLi4uYXJnczogQXJncykgPT4gUHJvbWlzYWJsZTx2b2lkPixcbiAgICB0aGlzQXJnPzogdW5rbm93blxuICApOiBBc3luY0V2ZW50UmVmIHtcbiAgICByZXR1cm4gdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC5hc3luY0V2ZW50cy5vbihuYW1lLCBjYWxsYmFjaywgdGhpc0FyZyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG9uU2F2ZVNldHRpbmdzKFxuICAgIG5ld1N0YXRlOiBSZWFkb25seVBsdWdpblNldHRpbmdzU3RhdGU8UGx1Z2luU2V0dGluZ3M+LFxuICAgIF9vbGRTdGF0ZTogUmVhZG9ubHlQbHVnaW5TZXR0aW5nc1N0YXRlPFBsdWdpblNldHRpbmdzPixcbiAgICBjb250ZXh0OiB1bmtub3duXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChjb250ZXh0ID09PSBTQVZFX1RPX0ZJTEVfQ09OVEVYVCkge1xuICAgICAgYXdhaXQgdGhpcy51cGRhdGVWYWxpZGF0aW9ucyhuZXdTdGF0ZS52YWxpZGF0aW9uTWVzc2FnZXMgYXMgUmVjb3JkPFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+LCBzdHJpbmc+KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRpc3BsYXkoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlVmFsaWRhdGlvbnModmFsaWRhdGlvbk1lc3NhZ2VzOiBSZWNvcmQ8U3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz4sIHN0cmluZz4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IFtwcm9wZXJ0eU5hbWUsIHZhbGlkYXRpb25NZXNzYWdlXSBvZiBPYmplY3QuZW50cmllcyh2YWxpZGF0aW9uTWVzc2FnZXMpKSB7XG4gICAgICBhd2FpdCB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50LmFzeW5jRXZlbnRzLnRyaWdnZXJBc3luYygndmFsaWRhdGlvbk1lc3NhZ2VDaGFuZ2VkJywgcHJvcGVydHlOYW1lLCB2YWxpZGF0aW9uTWVzc2FnZSk7XG4gICAgfVxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWlCQSxzQkFJTztBQVlQLG1CQUdPO0FBQ1AsdUJBQXlCO0FBQ3pCLHNCQUdPO0FBQ1AsMEJBQTBCO0FBQzFCLHlCQUFrQztBQUNsQyxvQ0FBcUM7QUFDckMsdUNBQThCO0FBQzlCLGtDQUEyQztBQUMzQyxpQ0FBc0M7QUFDdEMsd0JBQTBDO0FBQzFDLDRCQUFvQztBQUs3QixNQUFNLHVCQUF1QjtBQTJFN0IsTUFBZSw4QkFBNkQsaUNBQWlCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTWxHLElBQVcsU0FBa0I7QUFDM0IsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS21CO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT25CLElBQWMsNENBQW9EO0FBQ2hFLFVBQU0sVUFBVTtBQUNoQixXQUFPO0FBQUEsRUFDVDtBQUFBLEVBRVEsVUFBVTtBQUFBLEVBQ0Q7QUFBQSxFQUNBO0FBQUEsRUFFakIsSUFBWSxpQkFBeUQ7QUFDbkUsV0FBTyxLQUFLLHdCQUF3QixjQUFjO0FBQUEsRUFDcEQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPTyxZQUFZLFFBQXFEO0FBQ3RFLFVBQU0sT0FBTyxPQUFPLEtBQUssT0FBTyxNQUFNO0FBQ3RDLFNBQUssMEJBQTBC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
|
|
412
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3BsdWdpbi9wbHVnaW4tc2V0dGluZ3MtdGFiLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5nIHRhYnMgaW4gT2JzaWRpYW4uXG4gKiBJdCBwcm92aWRlcyBhIHV0aWxpdHkgbWV0aG9kIHRvIGJpbmQgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsZSBjaGFuZ2VzLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgRGVib3VuY2VyLFxuICBQbHVnaW5cbn0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUge1xuICBDb25kaXRpb25hbEtleXMsXG4gIFByb21pc2FibGUsXG4gIFJlYWRvbmx5RGVlcFxufSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQge1xuICBkZWJvdW5jZSxcbiAgUGx1Z2luU2V0dGluZ1RhYixcbiAgc2V0VG9vbHRpcFxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgQXN5bmNFdmVudFJlZiB9IGZyb20gJy4uLy4uL2FzeW5jLWV2ZW50cy50cyc7XG5pbXBvcnQgdHlwZSB7IFN0cmluZ0tleXMgfSBmcm9tICcuLi8uLi90eXBlLnRzJztcbmltcG9ydCB0eXBlIHsgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmcgfSBmcm9tICcuLi9jb21wb25lbnRzL3NldHRpbmctY29tcG9uZW50cy92YWx1ZS1jb21wb25lbnQtd2l0aC1jaGFuZ2UtdHJhY2tpbmcudHMnO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uTWVzc2FnZUhvbGRlciB9IGZyb20gJy4uL3ZhbGlkYXRpb24udHMnO1xuaW1wb3J0IHR5cGUge1xuICBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2UsXG4gIFJlYWRvbmx5UGx1Z2luU2V0dGluZ3MsXG4gIFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NTdGF0ZVxufSBmcm9tICcuL2NvbXBvbmVudHMvcGx1Z2luLXNldHRpbmdzLWNvbXBvbmVudC50cyc7XG5cbmltcG9ydCB7XG4gIGNvbnZlcnRBc3luY1RvU3luYyxcbiAgaW52b2tlQXN5bmNTYWZlbHlcbn0gZnJvbSAnLi4vLi4vYXN5bmMudHMnO1xuaW1wb3J0IHsgQ3NzQ2xhc3MgfSBmcm9tICcuLi8uLi9jc3MtY2xhc3MudHMnO1xuaW1wb3J0IHtcbiAgbm9vcCxcbiAgbm9vcEFzeW5jXG59IGZyb20gJy4uLy4uL2Z1bmN0aW9uLnRzJztcbmltcG9ydCB7IGRlZXBFcXVhbCB9IGZyb20gJy4uLy4uL29iamVjdC11dGlscy50cyc7XG5pbXBvcnQgeyBhc3NlcnROb25OdWxsYWJsZSB9IGZyb20gJy4uLy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7IEFzeW5jRXZlbnRzQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9hc3luYy1ldmVudHMtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IGVuc3VyZVdyYXBwZWQgfSBmcm9tICcuLi9jb21wb25lbnRzL3NldHRpbmctY29tcG9uZW50cy9zZXR0aW5nLWNvbXBvbmVudC13cmFwcGVyLnRzJztcbmltcG9ydCB7IGdldFRleHRCYXNlZENvbXBvbmVudFZhbHVlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9zZXR0aW5nLWNvbXBvbmVudHMvdGV4dC1iYXNlZC1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgZ2V0VmFsaWRhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9zZXR0aW5nLWNvbXBvbmVudHMvdmFsaWRhdG9yLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBpc1ZhbGlkYXRpb25NZXNzYWdlSG9sZGVyIH0gZnJvbSAnLi4vdmFsaWRhdGlvbi50cyc7XG5pbXBvcnQgeyBhZGRQbHVnaW5Dc3NDbGFzc2VzIH0gZnJvbSAnLi9wbHVnaW4tY29udGV4dC50cyc7XG5cbi8qKlxuICogQSBjb250ZXh0IHBhc3NlZCB0byB0aGUge0BsaW5rIFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZS5zYXZlVG9GaWxlfSBtZXRob2QuXG4gKi9cbmV4cG9ydCBjb25zdCBTQVZFX1RPX0ZJTEVfQ09OVEVYVCA9ICdQbHVnaW5TZXR0aW5nc1RhYic7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYFBsdWdpblNldHRpbmdzVGFiQmFzZS5iaW5kYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCaW5kT3B0aW9uczxUPiB7XG4gIC8qKlxuICAgKiBBIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSBjb21wb25lbnQgY2hhbmdlcy5cbiAgICovXG4gIHJlYWRvbmx5IG9uQ2hhbmdlZD86IChuZXdWYWx1ZTogUmVhZG9ubHlEZWVwPFQ+LCBvbGRWYWx1ZTogUmVhZG9ubHlEZWVwPFQ+KSA9PiBQcm9taXNhYmxlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlc2V0IHRoZSBzZXR0aW5nIHdoZW4gdGhlIGNvbXBvbmVudCB2YWx1ZSBpcyBlbXB0eS4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqIEFwcGxpY2FibGUgb25seSB0byB0ZXh0LWJhc2VkIGNvbXBvbmVudHMuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZXNldFNldHRpbmdXaGVuQ29tcG9uZW50SXNFbXB0eT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyB0aGUgcGxhY2Vob2xkZXIgZm9yIGRlZmF1bHQgdmFsdWVzLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICogQXBwbGljYWJsZSBvbmx5IHRvIHRleHQtYmFzZWQgY29tcG9uZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNob3dQbGFjZWhvbGRlckZvckRlZmF1bHRWYWx1ZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgdGhlIHZhbGlkYXRpb24gbWVzc2FnZSB3aGVuIHRoZSBjb21wb25lbnQgdmFsdWUgaXMgaW52YWxpZC4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTaG93VmFsaWRhdGlvbk1lc3NhZ2U/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEV4dGVuZGVkIG9wdGlvbnMgZm9yIGBQbHVnaW5TZXR0aW5nc1RhYkJhc2UuYmluZGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmluZE9wdGlvbnNFeHRlbmRlZDxcbiAgUGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3QsXG4gIFVJVmFsdWUsXG4gIFByb3BlcnR5TmFtZSBleHRlbmRzIFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+XG4+IGV4dGVuZHMgQmluZE9wdGlvbnM8UGx1Z2luU2V0dGluZ3NbUHJvcGVydHlOYW1lXT4ge1xuICAvKipcbiAgICogQ29udmVydHMgdGhlIFVJIGNvbXBvbmVudCdzIHZhbHVlIGJhY2sgdG8gdGhlIHBsdWdpbiBzZXR0aW5ncyB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHVpVmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIHRvIHNldCBvbiB0aGUgcGx1Z2luIHNldHRpbmdzLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcG9uZW50VG9QbHVnaW5TZXR0aW5nc1ZhbHVlQ29udmVydGVyOiAodWlWYWx1ZTogVUlWYWx1ZSkgPT4gUGx1Z2luU2V0dGluZ3NbUHJvcGVydHlOYW1lXSB8IFZhbGlkYXRpb25NZXNzYWdlSG9sZGVyO1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgcGx1Z2luIHNldHRpbmdzIHZhbHVlIHRvIHRoZSB2YWx1ZSB1c2VkIGJ5IHRoZSBVSSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBwbHVnaW5TZXR0aW5nc1ZhbHVlIC0gVGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgcGx1Z2luIHNldHRpbmdzLlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgdG8gc2V0IG9uIHRoZSBVSSBjb21wb25lbnQuXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5TZXR0aW5nc1RvQ29tcG9uZW50VmFsdWVDb252ZXJ0ZXI6IChwbHVnaW5TZXR0aW5nc1ZhbHVlOiBSZWFkb25seURlZXA8UGx1Z2luU2V0dGluZ3NbUHJvcGVydHlOYW1lXT4pID0+IFVJVmFsdWU7XG59XG5cbi8qKlxuICogUGFyYW1zIGZvciBjcmVhdGluZyBhIHtAbGluayBQbHVnaW5TZXR0aW5nc1RhYkJhc2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpblNldHRpbmdzVGFiQmFzZVBhcmFtczxQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdD4ge1xuICAvKipcbiAgICogVGhlIHBsdWdpbiBpbnN0YW5jZSAobmVlZGVkIGJ5IE9ic2lkaWFuJ3MgUGx1Z2luU2V0dGluZ1RhYikuXG4gICAqL1xuICByZWFkb25seSBwbHVnaW46IFBsdWdpbjtcblxuICAvKipcbiAgICogVGhlIHNldHRpbmdzIGNvbXBvbmVudC5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpblNldHRpbmdzQ29tcG9uZW50OiBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2U8UGx1Z2luU2V0dGluZ3M+O1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5ncyB0YWJzIGluIE9ic2lkaWFuLlxuICogUHJvdmlkZXMgYSBtZXRob2QgZm9yIGJpbmRpbmcgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsaW5nIGNoYW5nZXMuXG4gKlxuICogQHR5cGVQYXJhbSBQbHVnaW5TZXR0aW5ncyAtIFRoZSBwbHVnaW4gc2V0dGluZ3MgdHlwZS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBsdWdpblNldHRpbmdzVGFiQmFzZTxQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdD4gZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHBsdWdpbiBzZXR0aW5ncyB0YWIgaXMgb3Blbi5cbiAgICpcbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgcGx1Z2luIHNldHRpbmdzIHRhYiBpcyBvcGVuLlxuICAgKi9cbiAgcHVibGljIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzT3BlbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc2V0dGluZ3MgbWFuYWdlci5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBwbHVnaW5TZXR0aW5nc0NvbXBvbmVudDogUGx1Z2luU2V0dGluZ3NDb21wb25lbnRCYXNlPFBsdWdpblNldHRpbmdzPjtcblxuICAvKipcbiAgICogQSBkZWJvdW5jZSB0aW1lb3V0IGZvciBzYXZpbmcgc2V0dGluZ3MuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBkZWJvdW5jZSB0aW1lb3V0IGZvciBzYXZpbmcgc2V0dGluZ3MuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IHNhdmVTZXR0aW5nc0RlYm91bmNlVGltZW91dEluTWlsbGlzZWNvbmRzKCk6IG51bWJlciB7XG4gICAgY29uc3QgREVGQVVMVCA9IDJfMDAwO1xuICAgIHJldHVybiBERUZBVUxUO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNPcGVuID0gZmFsc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXN5bmNFdmVudHNDb21wb25lbnQ6IEFzeW5jRXZlbnRzQ29tcG9uZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IHNhdmVTZXR0aW5nc0RlYm91bmNlZDogRGVib3VuY2VyPFtdLCB2b2lkPjtcblxuICBwcml2YXRlIGdldCBwbHVnaW5TZXR0aW5ncygpOiBSZWFkb25seVBsdWdpblNldHRpbmdzPFBsdWdpblNldHRpbmdzPiB7XG4gICAgcmV0dXJuIHRoaXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQuc2V0dGluZ3NTdGF0ZS5pbnB1dFZhbHVlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IHBsdWdpbiBzZXR0aW5ncyB0YWIuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1zLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogUGx1Z2luU2V0dGluZ3NUYWJCYXNlUGFyYW1zPFBsdWdpblNldHRpbmdzPikge1xuICAgIHN1cGVyKHBhcmFtcy5wbHVnaW4uYXBwLCBwYXJhbXMucGx1Z2luKTtcbiAgICB0aGlzLnBsdWdpblNldHRpbmdzQ29tcG9uZW50ID0gcGFyYW1zLnBsdWdpblNldHRpbmdzQ29tcG9uZW50O1xuICAgIGFkZFBsdWdpbkNzc0NsYXNzZXModGhpcy5jb250YWluZXJFbCwgQ3NzQ2xhc3MuUGx1Z2luU2V0dGluZ3NUYWIpO1xuICAgIHRoaXMuc2F2ZVNldHRpbmdzRGVib3VuY2VkID0gZGVib3VuY2UoXG4gICAgICBjb252ZXJ0QXN5bmNUb1N5bmMoKCkgPT4gdGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudC5zYXZlVG9GaWxlKFNBVkVfVE9fRklMRV9DT05URVhUKSksXG4gICAgICB0aGlzLnNhdmVTZXR0aW5nc0RlYm91bmNlVGltZW91dEluTWlsbGlzZWNvbmRzXG4gICAgKTtcbiAgICB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50ID0gbmV3IEFzeW5jRXZlbnRzQ29tcG9uZW50KCk7XG4gIH1cblxuICAvKipcbiAgICogQmluZHMgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwbHVnaW4gc2V0dGluZy5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBVSVZhbHVlIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIG9mIHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEB0eXBlUGFyYW0gVFZhbHVlQ29tcG9uZW50IC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIHZhbHVlQ29tcG9uZW50IC0gVGhlIHZhbHVlIGNvbXBvbmVudCB0byBiaW5kLlxuICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lIC0gVGhlIHByb3BlcnR5IG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdG8gYmluZCB0by5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgYmluZGluZyB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGJpbmQ8XG4gICAgVUlWYWx1ZSxcbiAgICBUVmFsdWVDb21wb25lbnRcbiAgPihcbiAgICB2YWx1ZUNvbXBvbmVudDogVFZhbHVlQ29tcG9uZW50ICYgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmc8VUlWYWx1ZT4sXG4gICAgcHJvcGVydHlOYW1lOiBDb25kaXRpb25hbEtleXM8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWU+LFxuICAgIG9wdGlvbnM/OiBCaW5kT3B0aW9uczxVSVZhbHVlPlxuICApOiBUVmFsdWVDb21wb25lbnQ7XG4gIC8qKlxuICAgKiBCaW5kcyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHBsdWdpbiBzZXR0aW5nLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFVJVmFsdWUgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHR5cGVQYXJhbSBUVmFsdWVDb21wb25lbnQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFByb3BlcnR5TmFtZSAtIFRoZSBwcm9wZXJ0eSBuYW1lIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdG8gYmluZCB0by5cbiAgICogQHBhcmFtIHZhbHVlQ29tcG9uZW50IC0gVGhlIHZhbHVlIGNvbXBvbmVudCB0byBiaW5kLlxuICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lIC0gVGhlIHByb3BlcnR5IG5hbWUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyB0byBiaW5kIHRvLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBiaW5kaW5nIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgYmluZDxcbiAgICBVSVZhbHVlLFxuICAgIFRWYWx1ZUNvbXBvbmVudCxcbiAgICBQcm9wZXJ0eU5hbWUgZXh0ZW5kcyBTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPlxuICA+KFxuICAgIHZhbHVlQ29tcG9uZW50OiBUVmFsdWVDb21wb25lbnQgJiBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZzxVSVZhbHVlPixcbiAgICBwcm9wZXJ0eU5hbWU6IFByb3BlcnR5TmFtZSxcbiAgICBvcHRpb25zOiBCaW5kT3B0aW9uc0V4dGVuZGVkPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlLCBQcm9wZXJ0eU5hbWU+XG4gICk6IFRWYWx1ZUNvbXBvbmVudDtcbiAgLyoqXG4gICAqIEJpbmRzIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVUlWYWx1ZSAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAdHlwZVBhcmFtIFRWYWx1ZUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQuXG4gICAqIEB0eXBlUGFyYW0gUHJvcGVydHlOYW1lIC0gVGhlIHByb3BlcnR5IG5hbWUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyB0byBiaW5kIHRvLlxuICAgKiBAcGFyYW0gdmFsdWVDb21wb25lbnQgLSBUaGUgdmFsdWUgY29tcG9uZW50IHRvIGJpbmQuXG4gICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgLSBUaGUgcHJvcGVydHkgbmFtZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIHRvIGJpbmQgdG8uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGJpbmRpbmcgdGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBiaW5kPFxuICAgIFVJVmFsdWUsXG4gICAgVFZhbHVlQ29tcG9uZW50LFxuICAgIFByb3BlcnR5TmFtZSBleHRlbmRzIFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+XG4gID4oXG4gICAgdmFsdWVDb21wb25lbnQ6IFRWYWx1ZUNvbXBvbmVudCAmIFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPFVJVmFsdWU+LFxuICAgIHByb3BlcnR5TmFtZTogUHJvcGVydHlOYW1lLFxuICAgIG9wdGlvbnM/OiBCaW5kT3B0aW9uczxQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdPlxuICApOiBUVmFsdWVDb21wb25lbnQge1xuICAgIHR5cGUgUHJvcGVydHlUeXBlID0gUGx1Z2luU2V0dGluZ3NbUHJvcGVydHlOYW1lXTtcbiAgICBjb25zdCBERUZBVUxUX09QVElPTlM6IFJlcXVpcmVkPEJpbmRPcHRpb25zRXh0ZW5kZWQ8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWUsIFByb3BlcnR5TmFtZT4+ID0ge1xuICAgICAgY29tcG9uZW50VG9QbHVnaW5TZXR0aW5nc1ZhbHVlQ29udmVydGVyOiAodmFsdWU6IFVJVmFsdWUpOiBQcm9wZXJ0eVR5cGUgPT4gdmFsdWUgYXMgUHJvcGVydHlUeXBlLFxuICAgICAgb25DaGFuZ2VkOiBub29wLFxuICAgICAgcGx1Z2luU2V0dGluZ3NUb0NvbXBvbmVudFZhbHVlQ29udmVydGVyOiAodmFsdWU6IFJlYWRvbmx5RGVlcDxQcm9wZXJ0eVR5cGU+KTogVUlWYWx1ZSA9PiB2YWx1ZSBhcyBVSVZhbHVlLFxuICAgICAgc2hvdWxkUmVzZXRTZXR0aW5nV2hlbkNvbXBvbmVudElzRW1wdHk6IHRydWUsXG4gICAgICBzaG91bGRTaG93UGxhY2Vob2xkZXJGb3JEZWZhdWx0VmFsdWVzOiB0cnVlLFxuICAgICAgc2hvdWxkU2hvd1ZhbGlkYXRpb25NZXNzYWdlOiB0cnVlXG4gICAgfTtcblxuICAgIGNvbnN0IG9wdGlvbnNFeHQ6IFJlcXVpcmVkPEJpbmRPcHRpb25zRXh0ZW5kZWQ8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWUsIFByb3BlcnR5TmFtZT4+ID0geyAuLi5ERUZBVUxUX09QVElPTlMsIC4uLm9wdGlvbnMgfTtcblxuICAgIGNvbnN0IHZhbGlkYXRvckVsID0gZ2V0VmFsaWRhdG9yQ29tcG9uZW50KHZhbHVlQ29tcG9uZW50KT8udmFsaWRhdG9yRWw7XG5cbiAgICBjb25zdCB0ZXh0QmFzZWRDb21wb25lbnQgPSBnZXRUZXh0QmFzZWRDb21wb25lbnRWYWx1ZSh2YWx1ZUNvbXBvbmVudCk7XG5cbiAgICBjb25zdCByZWFkb25seVZhbHVlID0gdGhpcy5nZXRQbHVnaW5TZXR0aW5nc1Byb3BlcnR5KHByb3BlcnR5TmFtZSk7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB0aGlzLnBsdWdpblNldHRpbmdzQ29tcG9uZW50LmRlZmF1bHRTZXR0aW5ncyBhcyBQbHVnaW5TZXR0aW5ncztcbiAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBkZWZhdWx0c1twcm9wZXJ0eU5hbWVdO1xuICAgIGNvbnN0IGRlZmF1bHRDb21wb25lbnRWYWx1ZSA9IG9wdGlvbnNFeHQucGx1Z2luU2V0dGluZ3NUb0NvbXBvbmVudFZhbHVlQ29udmVydGVyKGRlZmF1bHRWYWx1ZSBhcyBSZWFkb25seURlZXA8UHJvcGVydHlUeXBlPik7XG4gICAgdGV4dEJhc2VkQ29tcG9uZW50Py5zZXRQbGFjZWhvbGRlclZhbHVlKGRlZmF1bHRDb21wb25lbnRWYWx1ZSk7XG5cbiAgICBsZXQgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZztcbiAgICBsZXQgdG9vbHRpcEVsOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIGxldCB0b29sdGlwQ29udGVudEVsOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIGlmICh2YWxpZGF0b3JFbCkge1xuICAgICAgY29uc3Qgd3JhcHBlciA9IGVuc3VyZVdyYXBwZWQodmFsaWRhdG9yRWwpO1xuICAgICAgdG9vbHRpcEVsID0gd3JhcHBlci5jcmVhdGVEaXYoKTtcbiAgICAgIGFkZFBsdWdpbkNzc0NsYXNzZXModG9vbHRpcEVsLCBDc3NDbGFzcy5Ub29sdGlwLCBDc3NDbGFzcy5Ub29sdGlwVmFsaWRhdG9yKTtcbiAgICAgIHRvb2x0aXBDb250ZW50RWwgPSB0b29sdGlwRWwuY3JlYXRlU3BhbigpO1xuICAgICAgY29uc3QgdG9vbHRpcEFycm93RWwgPSB0b29sdGlwRWwuY3JlYXRlRGl2KCk7XG4gICAgICBhZGRQbHVnaW5Dc3NDbGFzc2VzKHRvb2x0aXBBcnJvd0VsLCBDc3NDbGFzcy5Ub29sdGlwQXJyb3cpO1xuICAgICAgdG9vbHRpcEVsLmhpZGUoKTtcbiAgICAgIHdyYXBwZXIuYXBwZW5kQ2hpbGQodG9vbHRpcEVsKTtcbiAgICB9XG5cbiAgICB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50LnJlZ2lzdGVyQXN5bmNFdmVudCh0aGlzLm9uKCd2YWxpZGF0aW9uTWVzc2FnZUNoYW5nZWQnLCAoYW5vdGhlclByb3BlcnR5TmFtZSwgYW5vdGhlclZhbGlkYXRpb25NZXNzYWdlKSA9PiB7XG4gICAgICBpZiAocHJvcGVydHlOYW1lICE9PSBhbm90aGVyUHJvcGVydHlOYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UgPSBhbm90aGVyVmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgICB1cGRhdGVWYWxpZGF0b3JFbERlYm91bmNlZCgpO1xuICAgIH0pKTtcblxuICAgIGxldCBzaG91bGRFbXB0eU9uQmx1ciA9IGZhbHNlO1xuICAgIGxldCBzaG91bGRSZXZlcnRUb0RlZmF1bHRWYWx1ZU9uQmx1ciA9IGZhbHNlO1xuXG4gICAgaWYgKHRleHRCYXNlZENvbXBvbmVudCAmJiBvcHRpb25zRXh0LnNob3VsZFNob3dQbGFjZWhvbGRlckZvckRlZmF1bHRWYWx1ZXMgJiYgZGVlcEVxdWFsKHJlYWRvbmx5VmFsdWUsIGRlZmF1bHRWYWx1ZSkpIHtcbiAgICAgIHRleHRCYXNlZENvbXBvbmVudC5lbXB0eSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZUNvbXBvbmVudC5zZXRWYWx1ZShvcHRpb25zRXh0LnBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcihyZWFkb25seVZhbHVlKSk7XG4gICAgfVxuXG4gICAgbGV0IHNob3VsZFNraXBPbkNoYW5nZSA9IGZhbHNlO1xuICAgIGNvbnN0IFVQREFURV9WQUxJREFUT1JfRUxfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSAxMDA7XG4gICAgY29uc3QgdXBkYXRlVmFsaWRhdG9yRWxEZWJvdW5jZWQgPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgdXBkYXRlVmFsaWRhdG9yRWwoKTtcbiAgICAgIH0pO1xuICAgIH0sIFVQREFURV9WQUxJREFUT1JfRUxfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMpO1xuXG4gICAgdmFsdWVDb21wb25lbnQub25DaGFuZ2UoYXN5bmMgKHVpVmFsdWUpID0+IHtcbiAgICAgIGlmIChzaG91bGRTa2lwT25DaGFuZ2UpIHtcbiAgICAgICAgc2hvdWxkU2tpcE9uQ2hhbmdlID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc2hvdWxkRW1wdHlPbkJsdXIgPSBmYWxzZTtcblxuICAgICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLmdldFBsdWdpblNldHRpbmdzUHJvcGVydHkocHJvcGVydHlOYW1lKTtcbiAgICAgIGxldCBuZXdWYWx1ZTogUHJvcGVydHlUeXBlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgbGV0IHNob3VsZFNldFByb3BlcnR5ID0gdHJ1ZTtcbiAgICAgIHNob3VsZFJldmVydFRvRGVmYXVsdFZhbHVlT25CbHVyID0gISF0ZXh0QmFzZWRDb21wb25lbnQ/LmlzRW1wdHkoKSAmJiBvcHRpb25zRXh0LnNob3VsZFJlc2V0U2V0dGluZ1doZW5Db21wb25lbnRJc0VtcHR5O1xuICAgICAgaWYgKHNob3VsZFJldmVydFRvRGVmYXVsdFZhbHVlT25CbHVyKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY29udmVydGVkVmFsdWUgPSBvcHRpb25zRXh0LmNvbXBvbmVudFRvUGx1Z2luU2V0dGluZ3NWYWx1ZUNvbnZlcnRlcih1aVZhbHVlKTtcbiAgICAgICAgaWYgKGlzVmFsaWRhdGlvbk1lc3NhZ2VIb2xkZXIoY29udmVydGVkVmFsdWUpKSB7XG4gICAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UgPSBjb252ZXJ0ZWRWYWx1ZS52YWxpZGF0aW9uTWVzc2FnZTtcbiAgICAgICAgICBzaG91bGRTZXRQcm9wZXJ0eSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld1ZhbHVlID0gY29udmVydGVkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHNob3VsZFNldFByb3BlcnR5KSB7XG4gICAgICAgIHZhbGlkYXRpb25NZXNzYWdlID0gYXdhaXQgdGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudC5zZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIG5ld1ZhbHVlIGFzIFBsdWdpblNldHRpbmdzW1Byb3BlcnR5TmFtZV0pO1xuICAgICAgICBpZiAodGV4dEJhc2VkQ29tcG9uZW50ICYmIG9wdGlvbnNFeHQuc2hvdWxkU2hvd1BsYWNlaG9sZGVyRm9yRGVmYXVsdFZhbHVlcyAmJiAhdGV4dEJhc2VkQ29tcG9uZW50LmlzRW1wdHkoKSAmJiBkZWVwRXF1YWwobmV3VmFsdWUsIGRlZmF1bHRWYWx1ZSkpIHtcbiAgICAgICAgICBzaG91bGRFbXB0eU9uQmx1ciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdXBkYXRlVmFsaWRhdG9yRWxEZWJvdW5jZWQoKTtcbiAgICAgIGlmIChzaG91bGRTZXRQcm9wZXJ0eSkge1xuICAgICAgICBhd2FpdCBvcHRpb25zRXh0Lm9uQ2hhbmdlZChuZXdWYWx1ZSBhcyBSZWFkb25seURlZXA8UHJvcGVydHlUeXBlPiwgb2xkVmFsdWUpO1xuICAgICAgfVxuICAgICAgdGhpcy5zYXZlU2V0dGluZ3NEZWJvdW5jZWQoKTtcbiAgICB9KTtcblxuICAgIHZhbGlkYXRvckVsPy5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsICgpID0+IHtcbiAgICAgIHVwZGF0ZVZhbGlkYXRvckVsRGVib3VuY2VkKCk7XG4gICAgfSk7XG4gICAgdmFsaWRhdG9yRWw/LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoKSA9PiB7XG4gICAgICB1cGRhdGVWYWxpZGF0b3JFbERlYm91bmNlZCgpO1xuICAgIH0pO1xuICAgIHZhbGlkYXRvckVsPy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICB1cGRhdGVWYWxpZGF0b3JFbERlYm91bmNlZCgpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCB2YWxpZGF0aW9uTWVzc2FnZXMgPSB0aGlzLnBsdWdpblNldHRpbmdzQ29tcG9uZW50LnNldHRpbmdzU3RhdGUudmFsaWRhdGlvbk1lc3NhZ2VzIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgdmFsaWRhdGlvbk1lc3NhZ2UgPSB2YWxpZGF0aW9uTWVzc2FnZXNbcHJvcGVydHlOYW1lXSA/PyAnJztcbiAgICB1cGRhdGVWYWxpZGF0b3JFbERlYm91bmNlZCgpO1xuXG4gICAgcmV0dXJuIHZhbHVlQ29tcG9uZW50O1xuXG4gICAgZnVuY3Rpb24gdXBkYXRlVmFsaWRhdG9yRWwoKTogdm9pZCB7XG4gICAgICBpZiAoIXZhbGlkYXRvckVsPy5pc0FjdGl2ZUVsZW1lbnQoKSkge1xuICAgICAgICBpZiAoc2hvdWxkRW1wdHlPbkJsdXIpIHtcbiAgICAgICAgICBzaG91bGRFbXB0eU9uQmx1ciA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKCF0ZXh0QmFzZWRDb21wb25lbnQ/LmlzRW1wdHkoKSkge1xuICAgICAgICAgICAgc2hvdWxkU2tpcE9uQ2hhbmdlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRleHRCYXNlZENvbXBvbmVudD8uZW1wdHkoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkUmV2ZXJ0VG9EZWZhdWx0VmFsdWVPbkJsdXIpIHtcbiAgICAgICAgICBzaG91bGRSZXZlcnRUb0RlZmF1bHRWYWx1ZU9uQmx1ciA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHRleHRCYXNlZENvbXBvbmVudD8uaXNFbXB0eSgpKSB7XG4gICAgICAgICAgICBzaG91bGRTa2lwT25DaGFuZ2UgPSB0cnVlO1xuICAgICAgICAgICAgdmFsdWVDb21wb25lbnQuc2V0VmFsdWUoZGVmYXVsdENvbXBvbmVudFZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCF2YWxpZGF0b3JFbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGFzc2VydE5vbk51bGxhYmxlKHRvb2x0aXBDb250ZW50RWwpO1xuXG4gICAgICBpZiAodmFsaWRhdGlvbk1lc3NhZ2UgPT09ICcnKSB7XG4gICAgICAgIHZhbGlkYXRvckVsLnNldEN1c3RvbVZhbGlkaXR5KCcnKTtcbiAgICAgICAgdmFsaWRhdG9yRWwuY2hlY2tWYWxpZGl0eSgpO1xuICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZSA9IHZhbGlkYXRvckVsLnZhbGlkYXRpb25NZXNzYWdlO1xuICAgICAgfVxuXG4gICAgICB2YWxpZGF0b3JFbC5zZXRDdXN0b21WYWxpZGl0eSh2YWxpZGF0aW9uTWVzc2FnZSk7XG4gICAgICBpZiAob3B0aW9uc0V4dC5zaG91bGRTaG93VmFsaWRhdGlvbk1lc3NhZ2UpIHtcbiAgICAgICAgdG9vbHRpcENvbnRlbnRFbC50ZXh0Q29udGVudCA9IHZhbGlkYXRpb25NZXNzYWdlO1xuICAgICAgICB0b29sdGlwRWw/LnRvZ2dsZSghIXZhbGlkYXRpb25NZXNzYWdlKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsaWRhdGlvbk1lc3NhZ2UpIHtcbiAgICAgICAgc2V0VG9vbHRpcCh2YWxpZGF0b3JFbCwgdmFsaWRhdGlvbk1lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGRpc3BsYXkoKTogdm9pZCB7XG4gICAgdGhpcy5jb250YWluZXJFbC5lbXB0eSgpO1xuICAgIHRoaXMuX2lzT3BlbiA9IHRydWU7XG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC5sb2FkKCk7XG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC5yZWdpc3RlckFzeW5jRXZlbnQodGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudC5vbignbG9hZFNldHRpbmdzJywgdGhpcy5vbkxvYWRTZXR0aW5ncy5iaW5kKHRoaXMpKSk7XG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC5yZWdpc3RlckFzeW5jRXZlbnQodGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudC5vbignc2F2ZVNldHRpbmdzJywgdGhpcy5vblNhdmVTZXR0aW5ncy5iaW5kKHRoaXMpKSk7XG4gIH1cblxuICAvKipcbiAgICogSGlkZXMgdGhlIHBsdWdpbiBzZXR0aW5ncyB0YWIuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgaGlkZSgpOiB2b2lkIHtcbiAgICBzdXBlci5oaWRlKCk7XG4gICAgdGhpcy5zYXZlU2V0dGluZ3NEZWJvdW5jZWQuY2FuY2VsKCk7XG4gICAgdGhpcy5faXNPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC51bmxvYWQoKTtcbiAgICB0aGlzLmFzeW5jRXZlbnRzQ29tcG9uZW50LmxvYWQoKTtcbiAgICBpbnZva2VBc3luY1NhZmVseSgoKSA9PiB0aGlzLmhpZGVBc3luYygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBc3luYyBhY3Rpb25zIHRvIHBlcmZvcm0gd2hlbiB0aGUgc2V0dGluZ3MgdGFiIGlzIGJlaW5nIGhpZGRlbi5cbiAgICpcbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBzZXR0aW5ncyB0YWIgaXMgaGlkZGVuLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGhpZGVBc3luYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnBsdWdpblNldHRpbmdzQ29tcG9uZW50LnNhdmVUb0ZpbGUoU0FWRV9UT19GSUxFX0NPTlRFWFQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3dzIHRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiLlxuICAgKi9cbiAgcHVibGljIHNob3coKTogdm9pZCB7XG4gICAgdGhpcy5hcHAuc2V0dGluZy5vcGVuVGFiKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBwbHVnaW4gc2V0dGluZ3MgYXJlIGxvYWRlZC5cbiAgICpcbiAgICogQHBhcmFtIF9sb2FkZWRTdGF0ZSAtIFRoZSBsb2FkZWQgc2V0dGluZ3Mgc3RhdGUuXG4gICAqIEBwYXJhbSBfaXNJbml0aWFsTG9hZCAtIFdoZXRoZXIgdGhlIHNldHRpbmdzIGFyZSBiZWluZyBsb2FkZWQgZm9yIHRoZSBmaXJzdCB0aW1lLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHNldHRpbmdzIGFyZSBsb2FkZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgb25Mb2FkU2V0dGluZ3MoX2xvYWRlZFN0YXRlOiBSZWFkb25seVBsdWdpblNldHRpbmdzU3RhdGU8UGx1Z2luU2V0dGluZ3M+LCBfaXNJbml0aWFsTG9hZDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuZGlzcGxheSgpO1xuICAgIGF3YWl0IG5vb3BBc3luYygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldmFsaWRhdGVzIHRoZSBzZXR0aW5ncy5cbiAgICpcbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBzZXR0aW5ncyBhcmUgcmV2YWxpZGF0ZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgcmV2YWxpZGF0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB2YWxpZGF0aW9uTWVzc2FnZXMgPSBhd2FpdCB0aGlzLnBsdWdpblNldHRpbmdzQ29tcG9uZW50LnJldmFsaWRhdGUoKTtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZVZhbGlkYXRpb25zKHZhbGlkYXRpb25NZXNzYWdlcyk7XG4gIH1cblxuICBwcml2YXRlIGdldFBsdWdpblNldHRpbmdzUHJvcGVydHk8UHJvcGVydHlOYW1lIGV4dGVuZHMgU3RyaW5nS2V5czxQbHVnaW5TZXR0aW5ncz4+KFxuICAgIHByb3BlcnR5TmFtZTogUHJvcGVydHlOYW1lXG4gICk6IFJlYWRvbmx5RGVlcDxQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdPiB7XG4gICAgY29uc3Qgc2V0dGluZ3MgPSB0aGlzLnBsdWdpblNldHRpbmdzIGFzIFBsdWdpblNldHRpbmdzO1xuICAgIHJldHVybiBzZXR0aW5nc1twcm9wZXJ0eU5hbWVdIGFzIFJlYWRvbmx5RGVlcDxQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eU5hbWVdPjtcbiAgfVxuXG4gIHByaXZhdGUgb24oXG4gICAgbmFtZTogJ3ZhbGlkYXRpb25NZXNzYWdlQ2hhbmdlZCcsXG4gICAgY2FsbGJhY2s6IChcbiAgICAgIHByb3BlcnR5TmFtZTogc3RyaW5nLFxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2U6IHN0cmluZ1xuICAgICkgPT4gUHJvbWlzYWJsZTx2b2lkPixcbiAgICB0aGlzQXJnPzogdW5rbm93blxuICApOiBBc3luY0V2ZW50UmVmO1xuICBwcml2YXRlIG9uPEFyZ3MgZXh0ZW5kcyB1bmtub3duW10+KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBjYWxsYmFjazogKC4uLmFyZ3M6IEFyZ3MpID0+IFByb21pc2FibGU8dm9pZD4sXG4gICAgdGhpc0FyZz86IHVua25vd25cbiAgKTogQXN5bmNFdmVudFJlZiB7XG4gICAgcmV0dXJuIHRoaXMuYXN5bmNFdmVudHNDb21wb25lbnQuYXN5bmNFdmVudHMub24obmFtZSwgY2FsbGJhY2ssIHRoaXNBcmcpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBvblNhdmVTZXR0aW5ncyhcbiAgICBuZXdTdGF0ZTogUmVhZG9ubHlQbHVnaW5TZXR0aW5nc1N0YXRlPFBsdWdpblNldHRpbmdzPixcbiAgICBfb2xkU3RhdGU6IFJlYWRvbmx5UGx1Z2luU2V0dGluZ3NTdGF0ZTxQbHVnaW5TZXR0aW5ncz4sXG4gICAgY29udGV4dDogdW5rbm93blxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoY29udGV4dCA9PT0gU0FWRV9UT19GSUxFX0NPTlRFWFQpIHtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlVmFsaWRhdGlvbnMobmV3U3RhdGUudmFsaWRhdGlvbk1lc3NhZ2VzIGFzIFJlY29yZDxTdHJpbmdLZXlzPFBsdWdpblNldHRpbmdzPiwgc3RyaW5nPik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kaXNwbGF5KCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVZhbGlkYXRpb25zKHZhbGlkYXRpb25NZXNzYWdlczogUmVjb3JkPFN0cmluZ0tleXM8UGx1Z2luU2V0dGluZ3M+LCBzdHJpbmc+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZm9yIChjb25zdCBbcHJvcGVydHlOYW1lLCB2YWxpZGF0aW9uTWVzc2FnZV0gb2YgT2JqZWN0LmVudHJpZXModmFsaWRhdGlvbk1lc3NhZ2VzKSkge1xuICAgICAgYXdhaXQgdGhpcy5hc3luY0V2ZW50c0NvbXBvbmVudC5hc3luY0V2ZW50cy50cmlnZ2VyQXN5bmMoJ3ZhbGlkYXRpb25NZXNzYWdlQ2hhbmdlZCcsIHByb3BlcnR5TmFtZSwgdmFsaWRhdGlvbk1lc3NhZ2UpO1xuICAgIH1cbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFpQkEsc0JBSU87QUFZUCxtQkFHTztBQUNQLHVCQUF5QjtBQUN6QixzQkFHTztBQUNQLDBCQUEwQjtBQUMxQix5QkFBa0M7QUFDbEMsb0NBQXFDO0FBQ3JDLHVDQUE4QjtBQUM5QixrQ0FBMkM7QUFDM0MsaUNBQXNDO0FBQ3RDLHdCQUEwQztBQUMxQyw0QkFBb0M7QUFLN0IsTUFBTSx1QkFBdUI7QUEyRTdCLE1BQWUsOEJBQTZELGlDQUFpQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1sRyxJQUFXLFNBQWtCO0FBQzNCLFdBQU8sS0FBSztBQUFBLEVBQ2Q7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUttQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9uQixJQUFjLDRDQUFvRDtBQUNoRSxVQUFNLFVBQVU7QUFDaEIsV0FBTztBQUFBLEVBQ1Q7QUFBQSxFQUVRLFVBQVU7QUFBQSxFQUNEO0FBQUEsRUFDQTtBQUFBLEVBRWpCLElBQVksaUJBQXlEO0FBQ25FLFdBQU8sS0FBSyx3QkFBd0IsY0FBYztBQUFBLEVBQ3BEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT08sWUFBWSxRQUFxRDtBQUN0RSxVQUFNLE9BQU8sT0FBTyxLQUFLLE9BQU8sTUFBTTtBQUN0QyxTQUFLLDBCQUEwQixPQUFPO0FBQ3RDLG1EQUFvQixLQUFLLGFBQWEsMEJB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
|
|
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
(function initCjs() {
|
|
7
|
-
// eslint-disable-next-line obsidianmd/
|
|
7
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
8
8
|
const globalThisRecord = globalThis;
|
|
9
9
|
globalThisRecord['__name'] ??= name;
|
|
10
10
|
const originalRequire = require;
|
|
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
84
84
|
return originalRequire?.(id);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/
|
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
88
88
|
if (globalThis.app.isMobile) {
|
|
89
89
|
if (id === 'process' || id === 'node:process') {
|
|
90
90
|
// eslint-disable-next-line no-console -- Valid usage.
|
|
91
91
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
92
|
-
// eslint-disable-next-line obsidianmd/
|
|
92
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
93
93
|
return globalThis.process;
|
|
94
94
|
}
|
|
95
95
|
} else {
|
|
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
(function initCjs() {
|
|
7
|
-
// eslint-disable-next-line obsidianmd/
|
|
7
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
8
8
|
const globalThisRecord = globalThis;
|
|
9
9
|
globalThisRecord['__name'] ??= name;
|
|
10
10
|
const originalRequire = require;
|
|
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
84
84
|
return originalRequire?.(id);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/
|
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
88
88
|
if (globalThis.app.isMobile) {
|
|
89
89
|
if (id === 'process' || id === 'node:process') {
|
|
90
90
|
// eslint-disable-next-line no-console -- Valid usage.
|
|
91
91
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
92
|
-
// eslint-disable-next-line obsidianmd/
|
|
92
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
93
93
|
return globalThis.process;
|
|
94
94
|
}
|
|
95
95
|
} else {
|
|
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
(function initCjs() {
|
|
7
|
-
// eslint-disable-next-line obsidianmd/
|
|
7
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
8
8
|
const globalThisRecord = globalThis;
|
|
9
9
|
globalThisRecord['__name'] ??= name;
|
|
10
10
|
const originalRequire = require;
|
|
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
84
84
|
return originalRequire?.(id);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/
|
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
88
88
|
if (globalThis.app.isMobile) {
|
|
89
89
|
if (id === 'process' || id === 'node:process') {
|
|
90
90
|
// eslint-disable-next-line no-console -- Valid usage.
|
|
91
91
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
92
|
-
// eslint-disable-next-line obsidianmd/
|
|
92
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
93
93
|
return globalThis.process;
|
|
94
94
|
}
|
|
95
95
|
} else {
|
|
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
(function initCjs() {
|
|
7
|
-
// eslint-disable-next-line obsidianmd/
|
|
7
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
8
8
|
const globalThisRecord = globalThis;
|
|
9
9
|
globalThisRecord['__name'] ??= name;
|
|
10
10
|
const originalRequire = require;
|
|
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
84
84
|
return originalRequire?.(id);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/
|
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
88
88
|
if (globalThis.app.isMobile) {
|
|
89
89
|
if (id === 'process' || id === 'node:process') {
|
|
90
90
|
// eslint-disable-next-line no-console -- Valid usage.
|
|
91
91
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
92
|
-
// eslint-disable-next-line obsidianmd/
|
|
92
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
93
93
|
return globalThis.process;
|
|
94
94
|
}
|
|
95
95
|
} else {
|
|
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
(function initCjs() {
|
|
7
|
-
// eslint-disable-next-line obsidianmd/
|
|
7
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
8
8
|
const globalThisRecord = globalThis;
|
|
9
9
|
globalThisRecord['__name'] ??= name;
|
|
10
10
|
const originalRequire = require;
|
|
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
84
84
|
return originalRequire?.(id);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/
|
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
88
88
|
if (globalThis.app.isMobile) {
|
|
89
89
|
if (id === 'process' || id === 'node:process') {
|
|
90
90
|
// eslint-disable-next-line no-console -- Valid usage.
|
|
91
91
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
92
|
-
// eslint-disable-next-line obsidianmd/
|
|
92
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
93
93
|
return globalThis.process;
|
|
94
94
|
}
|
|
95
95
|
} else {
|
|
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
(function initCjs() {
|
|
7
|
-
// eslint-disable-next-line obsidianmd/
|
|
7
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
8
8
|
const globalThisRecord = globalThis;
|
|
9
9
|
globalThisRecord['__name'] ??= name;
|
|
10
10
|
const originalRequire = require;
|
|
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
84
84
|
return originalRequire?.(id);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/
|
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
88
88
|
if (globalThis.app.isMobile) {
|
|
89
89
|
if (id === 'process' || id === 'node:process') {
|
|
90
90
|
// eslint-disable-next-line no-console -- Valid usage.
|
|
91
91
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
92
|
-
// eslint-disable-next-line obsidianmd/
|
|
92
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
93
93
|
return globalThis.process;
|
|
94
94
|
}
|
|
95
95
|
} else {
|
|
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
(function initCjs() {
|
|
7
|
-
// eslint-disable-next-line obsidianmd/
|
|
7
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
8
8
|
const globalThisRecord = globalThis;
|
|
9
9
|
globalThisRecord['__name'] ??= name;
|
|
10
10
|
const originalRequire = require;
|
|
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
84
84
|
return originalRequire?.(id);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/
|
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
88
88
|
if (globalThis.app.isMobile) {
|
|
89
89
|
if (id === 'process' || id === 'node:process') {
|
|
90
90
|
// eslint-disable-next-line no-console -- Valid usage.
|
|
91
91
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
92
|
-
// eslint-disable-next-line obsidianmd/
|
|
92
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
93
93
|
return globalThis.process;
|
|
94
94
|
}
|
|
95
95
|
} else {
|
|
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
(function initCjs() {
|
|
7
|
-
// eslint-disable-next-line obsidianmd/
|
|
7
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
8
8
|
const globalThisRecord = globalThis;
|
|
9
9
|
globalThisRecord['__name'] ??= name;
|
|
10
10
|
const originalRequire = require;
|
|
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
84
84
|
return originalRequire?.(id);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/
|
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
88
88
|
if (globalThis.app.isMobile) {
|
|
89
89
|
if (id === 'process' || id === 'node:process') {
|
|
90
90
|
// eslint-disable-next-line no-console -- Valid usage.
|
|
91
91
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
92
|
-
// eslint-disable-next-line obsidianmd/
|
|
92
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
93
93
|
return globalThis.process;
|
|
94
94
|
}
|
|
95
95
|
} else {
|
|
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
(function initCjs() {
|
|
7
|
-
// eslint-disable-next-line obsidianmd/
|
|
7
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
8
8
|
const globalThisRecord = globalThis;
|
|
9
9
|
globalThisRecord['__name'] ??= name;
|
|
10
10
|
const originalRequire = require;
|
|
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
84
84
|
return originalRequire?.(id);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/
|
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
88
88
|
if (globalThis.app.isMobile) {
|
|
89
89
|
if (id === 'process' || id === 'node:process') {
|
|
90
90
|
// eslint-disable-next-line no-console -- Valid usage.
|
|
91
91
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
92
|
-
// eslint-disable-next-line obsidianmd/
|
|
92
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
93
93
|
return globalThis.process;
|
|
94
94
|
}
|
|
95
95
|
} else {
|
|
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
(function initCjs() {
|
|
7
|
-
// eslint-disable-next-line obsidianmd/
|
|
7
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
8
8
|
const globalThisRecord = globalThis;
|
|
9
9
|
globalThisRecord['__name'] ??= name;
|
|
10
10
|
const originalRequire = require;
|
|
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
84
84
|
return originalRequire?.(id);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/
|
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
88
88
|
if (globalThis.app.isMobile) {
|
|
89
89
|
if (id === 'process' || id === 'node:process') {
|
|
90
90
|
// eslint-disable-next-line no-console -- Valid usage.
|
|
91
91
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
92
|
-
// eslint-disable-next-line obsidianmd/
|
|
92
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
93
93
|
return globalThis.process;
|
|
94
94
|
}
|
|
95
95
|
} else {
|
|
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
(function initCjs() {
|
|
7
|
-
// eslint-disable-next-line obsidianmd/
|
|
7
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
8
8
|
const globalThisRecord = globalThis;
|
|
9
9
|
globalThisRecord['__name'] ??= name;
|
|
10
10
|
const originalRequire = require;
|
|
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
84
84
|
return originalRequire?.(id);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/
|
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
88
88
|
if (globalThis.app.isMobile) {
|
|
89
89
|
if (id === 'process' || id === 'node:process') {
|
|
90
90
|
// eslint-disable-next-line no-console -- Valid usage.
|
|
91
91
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
92
|
-
// eslint-disable-next-line obsidianmd/
|
|
92
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
93
93
|
return globalThis.process;
|
|
94
94
|
}
|
|
95
95
|
} else {
|
|
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
(function initCjs() {
|
|
7
|
-
// eslint-disable-next-line obsidianmd/
|
|
7
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
8
8
|
const globalThisRecord = globalThis;
|
|
9
9
|
globalThisRecord['__name'] ??= name;
|
|
10
10
|
const originalRequire = require;
|
|
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
84
84
|
return originalRequire?.(id);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/
|
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
88
88
|
if (globalThis.app.isMobile) {
|
|
89
89
|
if (id === 'process' || id === 'node:process') {
|
|
90
90
|
// eslint-disable-next-line no-console -- Valid usage.
|
|
91
91
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
92
|
-
// eslint-disable-next-line obsidianmd/
|
|
92
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
93
93
|
return globalThis.process;
|
|
94
94
|
}
|
|
95
95
|
} else {
|
|
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
(function initCjs() {
|
|
7
|
-
// eslint-disable-next-line obsidianmd/
|
|
7
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
8
8
|
const globalThisRecord = globalThis;
|
|
9
9
|
globalThisRecord['__name'] ??= name;
|
|
10
10
|
const originalRequire = require;
|
|
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
84
84
|
return originalRequire?.(id);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/
|
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
88
88
|
if (globalThis.app.isMobile) {
|
|
89
89
|
if (id === 'process' || id === 'node:process') {
|
|
90
90
|
// eslint-disable-next-line no-console -- Valid usage.
|
|
91
91
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
92
|
-
// eslint-disable-next-line obsidianmd/
|
|
92
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
93
93
|
return globalThis.process;
|
|
94
94
|
}
|
|
95
95
|
} else {
|
package/dist/lib/cjs/path.cjs
CHANGED
|
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
(function initCjs() {
|
|
7
|
-
// eslint-disable-next-line obsidianmd/
|
|
7
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
8
8
|
const globalThisRecord = globalThis;
|
|
9
9
|
globalThisRecord['__name'] ??= name;
|
|
10
10
|
const originalRequire = require;
|
|
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
84
84
|
return originalRequire?.(id);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/
|
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
88
88
|
if (globalThis.app.isMobile) {
|
|
89
89
|
if (id === 'process' || id === 'node:process') {
|
|
90
90
|
// eslint-disable-next-line no-console -- Valid usage.
|
|
91
91
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
92
|
-
// eslint-disable-next-line obsidianmd/
|
|
92
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
93
93
|
return globalThis.process;
|
|
94
94
|
}
|
|
95
95
|
} else {
|
package/dist/lib/cjs/reg-exp.cjs
CHANGED
|
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
(function initCjs() {
|
|
7
|
-
// eslint-disable-next-line obsidianmd/
|
|
7
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
8
8
|
const globalThisRecord = globalThis;
|
|
9
9
|
globalThisRecord['__name'] ??= name;
|
|
10
10
|
const originalRequire = require;
|
|
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
84
84
|
return originalRequire?.(id);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/
|
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
88
88
|
if (globalThis.app.isMobile) {
|
|
89
89
|
if (id === 'process' || id === 'node:process') {
|
|
90
90
|
// eslint-disable-next-line no-console -- Valid usage.
|
|
91
91
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
92
|
-
// eslint-disable-next-line obsidianmd/
|
|
92
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
93
93
|
return globalThis.process;
|
|
94
94
|
}
|
|
95
95
|
} else {
|
|
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
(function initCjs() {
|
|
7
|
-
// eslint-disable-next-line obsidianmd/
|
|
7
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
8
8
|
const globalThisRecord = globalThis;
|
|
9
9
|
globalThisRecord['__name'] ??= name;
|
|
10
10
|
const originalRequire = require;
|
|
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
84
84
|
return originalRequire?.(id);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/
|
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
88
88
|
if (globalThis.app.isMobile) {
|
|
89
89
|
if (id === 'process' || id === 'node:process') {
|
|
90
90
|
// eslint-disable-next-line no-console -- Valid usage.
|
|
91
91
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
92
|
-
// eslint-disable-next-line obsidianmd/
|
|
92
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
93
93
|
return globalThis.process;
|
|
94
94
|
}
|
|
95
95
|
} else {
|
|
@@ -4,7 +4,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
(function initCjs() {
|
|
7
|
-
// eslint-disable-next-line obsidianmd/
|
|
7
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
8
8
|
const globalThisRecord = globalThis;
|
|
9
9
|
globalThisRecord['__name'] ??= name;
|
|
10
10
|
const originalRequire = require;
|
|
@@ -84,12 +84,12 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
84
84
|
return originalRequire?.(id);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/
|
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
88
88
|
if (globalThis.app.isMobile) {
|
|
89
89
|
if (id === 'process' || id === 'node:process') {
|
|
90
90
|
// eslint-disable-next-line no-console -- Valid usage.
|
|
91
91
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
92
|
-
// eslint-disable-next-line obsidianmd/
|
|
92
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
93
93
|
return globalThis.process;
|
|
94
94
|
}
|
|
95
95
|
} else {
|