@mnaoumov/obsidian-lib 3.2.0 → 3.3.1
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/dist/lib/cjs/@types/i18next.d.cts +1 -1
- package/dist/lib/cjs/@types/obsidian-integration-testing.d.cts +3 -3
- package/dist/lib/cjs/@types/original-fs.d.cts +2 -1
- package/dist/lib/cjs/__merged.cjs +31 -24
- package/dist/lib/cjs/__merged.d.cts +3 -3
- package/dist/lib/cjs/active-file-provider.cjs +1 -47
- package/dist/lib/cjs/active-file-provider.d.cts +1 -1
- package/dist/lib/cjs/app.cjs +1 -47
- package/dist/lib/cjs/app.d.cts +1 -1
- package/dist/lib/cjs/async-with-notice.cjs +2 -21
- package/dist/lib/cjs/async-with-notice.d.cts +2 -1
- package/dist/lib/cjs/attachment-path.cjs +7 -26
- package/dist/lib/cjs/attachment-path.d.cts +1 -1
- package/dist/lib/cjs/attachment-unit-folder.cjs +2 -21
- package/dist/lib/cjs/attachment-unit-folder.d.cts +1 -1
- package/dist/lib/cjs/backlink-index.cjs +2 -21
- package/dist/lib/cjs/backlink-index.d.cts +1 -1
- package/dist/lib/cjs/backlink.cjs +2 -21
- package/dist/lib/cjs/backlink.d.cts +1 -1
- package/dist/lib/cjs/bases-view-registrar.cjs +2 -21
- package/dist/lib/cjs/bases-view-registrar.d.cts +1 -1
- package/dist/lib/cjs/callout.cjs +2 -21
- package/dist/lib/cjs/callout.d.cts +2 -1
- package/dist/lib/cjs/canvas.cjs +2 -21
- package/dist/lib/cjs/canvas.d.cts +1 -1
- package/dist/lib/cjs/case-insensitive-file-index.cjs +2 -21
- package/dist/lib/cjs/case-insensitive-file-index.d.cts +1 -1
- package/dist/lib/cjs/code-block-markdown-information.cjs +1 -47
- package/dist/lib/cjs/code-block-markdown-information.d.cts +1 -1
- package/dist/lib/cjs/code-block-reg-exp.cjs +1 -47
- package/dist/lib/cjs/code-block-reg-exp.d.cts +1 -1
- package/dist/lib/cjs/codemirror/index.cjs +2 -48
- package/dist/lib/cjs/codemirror/index.d.cts +1 -1
- package/dist/lib/cjs/codemirror/state-field-spec.cjs +1 -47
- package/dist/lib/cjs/codemirror/state-field-spec.d.cts +1 -1
- package/dist/lib/cjs/command-handlers/abstract-file-command-handler.cjs +2 -21
- package/dist/lib/cjs/command-handlers/abstract-file-command-handler.d.cts +1 -1
- package/dist/lib/cjs/command-handlers/command-handler-component.cjs +2 -21
- package/dist/lib/cjs/command-handlers/command-handler-component.d.cts +1 -1
- package/dist/lib/cjs/command-handlers/command-handler.cjs +2 -21
- package/dist/lib/cjs/command-handlers/command-handler.d.cts +1 -1
- package/dist/lib/cjs/command-handlers/editor-command-handler.cjs +2 -21
- package/dist/lib/cjs/command-handlers/editor-command-handler.d.cts +1 -1
- package/dist/lib/cjs/command-handlers/file-command-handler.cjs +5 -24
- package/dist/lib/cjs/command-handlers/file-command-handler.d.cts +1 -1
- package/dist/lib/cjs/command-handlers/folder-command-handler.cjs +5 -24
- package/dist/lib/cjs/command-handlers/folder-command-handler.d.cts +1 -1
- package/dist/lib/cjs/command-handlers/global-command-handler.cjs +3 -22
- package/dist/lib/cjs/command-handlers/global-command-handler.d.cts +1 -1
- package/dist/lib/cjs/command-handlers/index.cjs +11 -57
- package/dist/lib/cjs/command-handlers/index.d.cts +1 -1
- package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.cjs +2 -21
- package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.d.cts +1 -1
- package/dist/lib/cjs/command-handlers/open-settings-command-handler.cjs +1 -47
- package/dist/lib/cjs/command-handlers/open-settings-command-handler.d.cts +1 -1
- package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.cjs +1 -47
- package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.d.cts +1 -1
- package/dist/lib/cjs/command-registrar.cjs +1 -47
- package/dist/lib/cjs/command-registrar.d.cts +1 -1
- package/dist/lib/cjs/community-plugins.cjs +2 -21
- package/dist/lib/cjs/community-plugins.d.cts +1 -1
- package/dist/lib/cjs/components/abort-signal-component.cjs +2 -21
- package/dist/lib/cjs/components/abort-signal-component.d.cts +2 -1
- package/dist/lib/cjs/components/all-windows-event-component.cjs +1 -47
- package/dist/lib/cjs/components/all-windows-event-component.d.cts +2 -1
- package/dist/lib/cjs/components/async-error-handler-component.cjs +2 -21
- package/dist/lib/cjs/components/async-error-handler-component.d.cts +1 -1
- package/dist/lib/cjs/components/async-events-component.cjs +2 -21
- package/dist/lib/cjs/components/async-events-component.d.cts +1 -1
- package/dist/lib/cjs/components/case-insensitive-file-index-component.cjs +1 -47
- package/dist/lib/cjs/components/case-insensitive-file-index-component.d.cts +1 -1
- package/dist/lib/cjs/components/component-ex.cjs +3 -16
- package/dist/lib/cjs/components/component-ex.d.cts +1 -1
- package/dist/lib/cjs/components/console-debug-component.cjs +2 -21
- package/dist/lib/cjs/components/console-debug-component.d.cts +1 -1
- package/dist/lib/cjs/components/core-plugin-toggle-component.cjs +2 -21
- package/dist/lib/cjs/components/core-plugin-toggle-component.d.cts +1 -1
- package/dist/lib/cjs/components/disposable-component.cjs +3 -16
- package/dist/lib/cjs/components/disposable-component.d.cts +1 -1
- package/dist/lib/cjs/components/embed-extensions-component.cjs +1 -47
- package/dist/lib/cjs/components/embed-extensions-component.d.cts +1 -1
- package/dist/lib/cjs/components/generate-markdown-link-default-params-component.cjs +1 -47
- package/dist/lib/cjs/components/generate-markdown-link-default-params-component.d.cts +1 -1
- package/dist/lib/cjs/components/index.cjs +30 -76
- package/dist/lib/cjs/components/index.d.cts +1 -1
- package/dist/lib/cjs/components/layout-ready-component.cjs +2 -21
- package/dist/lib/cjs/components/layout-ready-component.d.cts +1 -1
- package/dist/lib/cjs/components/menu-event-registrar-component.cjs +1 -47
- package/dist/lib/cjs/components/menu-event-registrar-component.d.cts +1 -1
- package/dist/lib/cjs/components/monkey-around-component.cjs +2 -21
- package/dist/lib/cjs/components/monkey-around-component.d.cts +1 -1
- package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.cjs +2 -21
- package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.d.cts +1 -1
- package/dist/lib/cjs/components/plugin-context-component.cjs +2 -21
- package/dist/lib/cjs/components/plugin-context-component.d.cts +1 -1
- package/dist/lib/cjs/components/plugin-gate-component.cjs +2 -21
- package/dist/lib/cjs/components/plugin-gate-component.d.cts +2 -1
- package/dist/lib/cjs/components/plugin-notice-component.cjs +3 -16
- package/dist/lib/cjs/components/plugin-notice-component.d.cts +2 -1
- package/dist/lib/cjs/components/plugin-settings-component.cjs +2 -21
- package/dist/lib/cjs/components/plugin-settings-component.d.cts +1 -1
- package/dist/lib/cjs/components/plugin-settings-tab-component.cjs +2 -21
- package/dist/lib/cjs/components/plugin-settings-tab-component.d.cts +1 -1
- package/dist/lib/cjs/components/plugin-suggestion-component.cjs +2 -21
- package/dist/lib/cjs/components/plugin-suggestion-component.d.cts +2 -1
- package/dist/lib/cjs/components/pointer-position-component.cjs +1 -47
- package/dist/lib/cjs/components/pointer-position-component.d.cts +1 -1
- package/dist/lib/cjs/components/registry-component.cjs +2 -21
- package/dist/lib/cjs/components/registry-component.d.cts +1 -1
- package/dist/lib/cjs/components/release-notes-component.cjs +2 -21
- package/dist/lib/cjs/components/release-notes-component.d.cts +2 -1
- package/dist/lib/cjs/components/rename-delete-handler-component.cjs +3 -16
- package/dist/lib/cjs/components/rename-delete-handler-component.d.cts +1 -1
- package/dist/lib/cjs/components/rmdir-guard-component.cjs +1 -47
- package/dist/lib/cjs/components/rmdir-guard-component.d.cts +1 -1
- package/dist/lib/cjs/components/settings-migration-component.cjs +2 -21
- package/dist/lib/cjs/components/settings-migration-component.d.cts +3 -3
- package/dist/lib/cjs/components/syntax-highlighting-component.cjs +2 -21
- package/dist/lib/cjs/components/syntax-highlighting-component.d.cts +1 -1
- package/dist/lib/cjs/components/templates-language-component.cjs +3 -49
- package/dist/lib/cjs/components/templates-language-component.d.cts +1 -1
- package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.cjs +3 -16
- package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.d.cts +1 -1
- package/dist/lib/cjs/constructors/index.cjs +2 -48
- package/dist/lib/cjs/constructors/index.d.cts +1 -1
- package/dist/lib/cjs/css-class.cjs +1 -47
- package/dist/lib/cjs/css-class.d.cts +1 -1
- package/dist/lib/cjs/data-handler.cjs +1 -47
- package/dist/lib/cjs/data-handler.d.cts +1 -1
- package/dist/lib/cjs/dataview-link.cjs +2 -21
- package/dist/lib/cjs/dataview-link.d.cts +1 -1
- package/dist/lib/cjs/dataview.cjs +2 -21
- package/dist/lib/cjs/dataview.d.cts +2 -1
- package/dist/lib/cjs/debug.cjs +2 -21
- package/dist/lib/cjs/debug.d.cts +1 -1
- package/dist/lib/cjs/demo-vault-helper-settings.cjs +1 -47
- package/dist/lib/cjs/demo-vault-helper-settings.d.cts +1 -1
- package/dist/lib/cjs/demo-vault-helper.cjs +2 -21
- package/dist/lib/cjs/demo-vault-helper.d.cts +1 -1
- package/dist/lib/cjs/demo-vault-naming.cjs +1 -47
- package/dist/lib/cjs/demo-vault-naming.d.cts +1 -1
- package/dist/lib/cjs/desktop-demo-vault-opener.cjs +3 -16
- package/dist/lib/cjs/desktop-demo-vault-opener.d.cts +1 -1
- package/dist/lib/cjs/desktop-trusted-input.cjs +2 -21
- package/dist/lib/cjs/desktop-trusted-input.d.cts +2 -1
- package/dist/lib/cjs/editor-extension-registrar.cjs +2 -21
- package/dist/lib/cjs/editor-extension-registrar.d.cts +1 -1
- package/dist/lib/cjs/editor-suggest-registrar.cjs +2 -21
- package/dist/lib/cjs/editor-suggest-registrar.d.cts +1 -1
- package/dist/lib/cjs/editor.cjs +2 -21
- package/dist/lib/cjs/editor.d.cts +1 -1
- package/dist/lib/cjs/events.cjs +2 -21
- package/dist/lib/cjs/events.d.cts +1 -1
- package/dist/lib/cjs/extensions-registrar.cjs +2 -21
- package/dist/lib/cjs/extensions-registrar.d.cts +1 -1
- package/dist/lib/cjs/file-change.cjs +2 -21
- package/dist/lib/cjs/file-change.d.cts +2 -1
- package/dist/lib/cjs/file-explorer.cjs +2 -21
- package/dist/lib/cjs/file-explorer.d.cts +1 -1
- package/dist/lib/cjs/file-manager.cjs +2 -21
- package/dist/lib/cjs/file-manager.d.cts +2 -1
- package/dist/lib/cjs/file-system.cjs +2 -21
- package/dist/lib/cjs/file-system.d.cts +1 -1
- package/dist/lib/cjs/folder-note.cjs +2 -21
- package/dist/lib/cjs/folder-note.d.cts +1 -1
- package/dist/lib/cjs/frontmatter-formatting.cjs +2 -21
- package/dist/lib/cjs/frontmatter-formatting.d.cts +1 -1
- package/dist/lib/cjs/frontmatter-link-cache-with-offsets.cjs +2 -21
- package/dist/lib/cjs/frontmatter-link-cache-with-offsets.d.cts +1 -1
- package/dist/lib/cjs/frontmatter.cjs +2 -21
- package/dist/lib/cjs/frontmatter.d.cts +1 -1
- package/dist/lib/cjs/generated-during-build.cjs +2 -48
- package/dist/lib/cjs/generated-during-build.d.cts +1 -1
- package/dist/lib/cjs/hover-link-source-registrar.cjs +2 -21
- package/dist/lib/cjs/hover-link-source-registrar.d.cts +1 -1
- package/dist/lib/cjs/html-element.cjs +1 -47
- package/dist/lib/cjs/html-element.d.cts +2 -1
- package/dist/lib/cjs/i18n/custom-type-options.cjs +1 -47
- package/dist/lib/cjs/i18n/custom-type-options.d.cts +1 -1
- package/dist/lib/cjs/i18n/default-translations.cjs +1 -47
- package/dist/lib/cjs/i18n/default-translations.d.cts +1 -1
- package/dist/lib/cjs/i18n/i18n.cjs +3 -22
- package/dist/lib/cjs/i18n/i18n.d.cts +1 -1
- package/dist/lib/cjs/i18n/index.cjs +5 -51
- package/dist/lib/cjs/i18n/index.d.cts +1 -1
- package/dist/lib/cjs/i18n/locales/en.cjs +1 -47
- package/dist/lib/cjs/i18n/locales/en.d.cts +1 -1
- package/dist/lib/cjs/i18n/locales/index.cjs +3 -49
- package/dist/lib/cjs/i18n/locales/index.d.cts +1 -1
- package/dist/lib/cjs/i18n/locales/translations-map.cjs +1 -47
- package/dist/lib/cjs/i18n/locales/translations-map.d.cts +1 -1
- package/dist/lib/cjs/index.cjs +96 -142
- package/dist/lib/cjs/index.d.cts +1 -1
- package/dist/lib/cjs/is-in-obsidian.cjs +1 -47
- package/dist/lib/cjs/is-in-obsidian.d.cts +1 -1
- package/dist/lib/cjs/library-references.d.cts +2 -0
- package/dist/lib/cjs/library-styles.cjs +2 -21
- package/dist/lib/cjs/library-styles.d.cts +2 -1
- package/dist/lib/cjs/library.cjs +1 -47
- package/dist/lib/cjs/link-name.cjs +1 -47
- package/dist/lib/cjs/link-name.d.cts +1 -1
- package/dist/lib/cjs/link-update-progress.cjs +1 -47
- package/dist/lib/cjs/link-update-progress.d.cts +1 -1
- package/dist/lib/cjs/link.cjs +3 -16
- package/dist/lib/cjs/link.d.cts +2 -1
- package/dist/lib/cjs/logger.cjs +2 -21
- package/dist/lib/cjs/logger.d.cts +2 -1
- package/dist/lib/cjs/loop.cjs +3 -16
- package/dist/lib/cjs/loop.d.cts +2 -1
- package/dist/lib/cjs/markdown-code-block-processor-registrar.cjs +2 -21
- package/dist/lib/cjs/markdown-code-block-processor-registrar.d.cts +2 -1
- package/dist/lib/cjs/markdown-code-block-processor.cjs +2 -21
- package/dist/lib/cjs/markdown-code-block-processor.d.cts +2 -1
- package/dist/lib/cjs/markdown-post-processor-registrar.cjs +2 -21
- package/dist/lib/cjs/markdown-post-processor-registrar.d.cts +2 -1
- package/dist/lib/cjs/markdown-view.cjs +1 -47
- package/dist/lib/cjs/markdown-view.d.cts +1 -1
- package/dist/lib/cjs/markdown.cjs +3 -16
- package/dist/lib/cjs/markdown.d.cts +2 -1
- package/dist/lib/cjs/menu-event-registrar.cjs +1 -47
- package/dist/lib/cjs/menu-event-registrar.d.cts +1 -1
- package/dist/lib/cjs/metadata-cache.cjs +6 -19
- package/dist/lib/cjs/metadata-cache.d.cts +1 -1
- package/dist/lib/cjs/mobile-trusted-input.cjs +1 -47
- package/dist/lib/cjs/mobile-trusted-input.d.cts +1 -1
- package/dist/lib/cjs/modals/alert.cjs +2 -21
- package/dist/lib/cjs/modals/alert.d.cts +2 -1
- package/dist/lib/cjs/modals/confirm.cjs +2 -21
- package/dist/lib/cjs/modals/confirm.d.cts +2 -1
- package/dist/lib/cjs/modals/index.cjs +10 -56
- package/dist/lib/cjs/modals/index.d.cts +1 -1
- package/dist/lib/cjs/modals/minimizable-modal.cjs +2 -21
- package/dist/lib/cjs/modals/minimizable-modal.d.cts +1 -1
- package/dist/lib/cjs/modals/modal-command-builder.cjs +2 -21
- package/dist/lib/cjs/modals/modal-command-builder.d.cts +2 -1
- package/dist/lib/cjs/modals/modal.cjs +2 -21
- package/dist/lib/cjs/modals/modal.d.cts +1 -1
- package/dist/lib/cjs/modals/prompt.cjs +2 -21
- package/dist/lib/cjs/modals/prompt.d.cts +2 -1
- package/dist/lib/cjs/modals/select-item.cjs +2 -21
- package/dist/lib/cjs/modals/select-item.d.cts +1 -1
- package/dist/lib/cjs/modals/select-option.cjs +2 -21
- package/dist/lib/cjs/modals/select-option.d.cts +2 -1
- package/dist/lib/cjs/modals/suggest-modal-command-builder.cjs +1 -47
- package/dist/lib/cjs/modals/suggest-modal-command-builder.d.cts +1 -1
- package/dist/lib/cjs/note-priority.cjs +2 -21
- package/dist/lib/cjs/note-priority.d.cts +1 -1
- package/dist/lib/cjs/notebook-navigator.cjs +1 -47
- package/dist/lib/cjs/notebook-navigator.d.cts +1 -1
- package/dist/lib/cjs/obsidian-dev-utils-state.cjs +2 -21
- package/dist/lib/cjs/obsidian-dev-utils-state.d.cts +1 -1
- package/dist/lib/cjs/obsidian-protocol-handler-registrar.cjs +2 -21
- package/dist/lib/cjs/obsidian-protocol-handler-registrar.d.cts +1 -1
- package/dist/lib/cjs/obsidian-settings.cjs +2 -21
- package/dist/lib/cjs/obsidian-settings.d.cts +1 -1
- package/dist/lib/cjs/parse-link.cjs +3 -22
- package/dist/lib/cjs/parse-link.d.cts +1 -1
- package/dist/lib/cjs/path-settings.cjs +2 -21
- package/dist/lib/cjs/path-settings.d.cts +1 -1
- package/dist/lib/cjs/pdf.cjs +2 -21
- package/dist/lib/cjs/pdf.d.cts +2 -1
- package/dist/lib/cjs/plugin/index.cjs +10 -56
- package/dist/lib/cjs/plugin/index.d.cts +1 -1
- package/dist/lib/cjs/plugin/plugin-api-schema.cjs +5 -50
- package/dist/lib/cjs/plugin/plugin-api-schema.d.cts +19 -41
- package/dist/lib/cjs/plugin/plugin-api.cjs +2 -21
- package/dist/lib/cjs/plugin/plugin-api.d.cts +35 -50
- package/dist/lib/cjs/plugin/plugin-context.cjs +2 -21
- package/dist/lib/cjs/plugin/plugin-context.d.cts +2 -1
- package/dist/lib/cjs/plugin/plugin-event-source.cjs +1 -47
- package/dist/lib/cjs/plugin/plugin-event-source.d.cts +1 -1
- package/dist/lib/cjs/plugin/plugin-install-state.cjs +1 -47
- package/dist/lib/cjs/plugin/plugin-install-state.d.cts +1 -1
- package/dist/lib/cjs/plugin/plugin-lifecycle-events.cjs +1 -47
- package/dist/lib/cjs/plugin/plugin-lifecycle-events.d.cts +1 -1
- package/dist/lib/cjs/plugin/plugin-settings-tab.cjs +2 -21
- package/dist/lib/cjs/plugin/plugin-settings-tab.d.cts +2 -1
- package/dist/lib/cjs/plugin/plugin.cjs +2 -21
- package/dist/lib/cjs/plugin/plugin.d.cts +1 -1
- package/dist/lib/cjs/plugin/settings-migration-api.cjs +5 -24
- package/dist/lib/cjs/plugin/settings-migration-api.d.cts +3 -3
- package/dist/lib/cjs/plugin-cli-handler-registrar.cjs +2 -21
- package/dist/lib/cjs/plugin-cli-handler-registrar.d.cts +1 -1
- package/dist/lib/cjs/popovers/field-popover.cjs +2 -21
- package/dist/lib/cjs/popovers/field-popover.d.cts +1 -1
- package/dist/lib/cjs/popovers/index.cjs +4 -50
- package/dist/lib/cjs/popovers/index.d.cts +1 -1
- package/dist/lib/cjs/popovers/popover-anchor.cjs +2 -21
- package/dist/lib/cjs/popovers/popover-anchor.d.cts +2 -1
- package/dist/lib/cjs/popovers/popover.cjs +2 -21
- package/dist/lib/cjs/popovers/popover.d.cts +2 -1
- package/dist/lib/cjs/property-entry.cjs +1 -47
- package/dist/lib/cjs/property-entry.d.cts +1 -1
- package/dist/lib/cjs/queue.cjs +2 -21
- package/dist/lib/cjs/queue.d.cts +2 -1
- package/dist/lib/cjs/react/app-context.cjs +2 -21
- package/dist/lib/cjs/react/app-context.d.cts +1 -1
- package/dist/lib/cjs/react/index.cjs +2 -48
- package/dist/lib/cjs/react/index.d.cts +1 -1
- package/dist/lib/cjs/reference.cjs +2 -21
- package/dist/lib/cjs/reference.d.cts +1 -1
- package/dist/lib/cjs/resource-lock.cjs +2 -21
- package/dist/lib/cjs/resource-lock.d.cts +2 -1
- package/dist/lib/cjs/resource-url.cjs +2 -21
- package/dist/lib/cjs/resource-url.d.cts +1 -1
- package/dist/lib/cjs/ribbon-icon-registrar.cjs +2 -21
- package/dist/lib/cjs/ribbon-icon-registrar.d.cts +2 -1
- package/dist/lib/cjs/setting-components/checkbox-component.cjs +2 -21
- package/dist/lib/cjs/setting-components/checkbox-component.d.cts +2 -1
- package/dist/lib/cjs/setting-components/code-highlighter-component.cjs +2 -21
- package/dist/lib/cjs/setting-components/code-highlighter-component.d.cts +2 -1
- package/dist/lib/cjs/setting-components/date-component.cjs +2 -21
- package/dist/lib/cjs/setting-components/date-component.d.cts +2 -1
- package/dist/lib/cjs/setting-components/date-time-component.cjs +2 -21
- package/dist/lib/cjs/setting-components/date-time-component.d.cts +2 -1
- package/dist/lib/cjs/setting-components/email-component.cjs +1 -47
- package/dist/lib/cjs/setting-components/email-component.d.cts +2 -1
- package/dist/lib/cjs/setting-components/file-component.cjs +1 -47
- package/dist/lib/cjs/setting-components/file-component.d.cts +2 -1
- package/dist/lib/cjs/setting-components/index.cjs +27 -73
- package/dist/lib/cjs/setting-components/index.d.cts +1 -1
- package/dist/lib/cjs/setting-components/month-component.cjs +2 -21
- package/dist/lib/cjs/setting-components/month-component.d.cts +2 -1
- package/dist/lib/cjs/setting-components/multiple-dropdown-component.cjs +2 -21
- package/dist/lib/cjs/setting-components/multiple-dropdown-component.d.cts +3 -1
- package/dist/lib/cjs/setting-components/multiple-email-component.cjs +1 -47
- package/dist/lib/cjs/setting-components/multiple-email-component.d.cts +2 -1
- package/dist/lib/cjs/setting-components/multiple-file-component.cjs +2 -21
- package/dist/lib/cjs/setting-components/multiple-file-component.d.cts +2 -1
- package/dist/lib/cjs/setting-components/multiple-text-component.cjs +2 -21
- package/dist/lib/cjs/setting-components/multiple-text-component.d.cts +2 -1
- package/dist/lib/cjs/setting-components/number-component.cjs +1 -47
- package/dist/lib/cjs/setting-components/number-component.d.cts +2 -1
- package/dist/lib/cjs/setting-components/password-component.cjs +1 -47
- package/dist/lib/cjs/setting-components/password-component.d.cts +2 -1
- package/dist/lib/cjs/setting-components/setting-component-wrapper.cjs +2 -21
- package/dist/lib/cjs/setting-components/setting-component-wrapper.d.cts +2 -1
- package/dist/lib/cjs/setting-components/telephone-component.cjs +1 -47
- package/dist/lib/cjs/setting-components/telephone-component.d.cts +2 -1
- package/dist/lib/cjs/setting-components/text-based-component.cjs +2 -21
- package/dist/lib/cjs/setting-components/text-based-component.d.cts +1 -1
- package/dist/lib/cjs/setting-components/time-component.cjs +2 -21
- package/dist/lib/cjs/setting-components/time-component.d.cts +2 -1
- package/dist/lib/cjs/setting-components/tri-state-checkbox-component.cjs +2 -21
- package/dist/lib/cjs/setting-components/tri-state-checkbox-component.d.cts +2 -1
- package/dist/lib/cjs/setting-components/typed-dropdown-component.cjs +2 -21
- package/dist/lib/cjs/setting-components/typed-dropdown-component.d.cts +3 -1
- package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.cjs +2 -21
- package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.d.cts +3 -1
- package/dist/lib/cjs/setting-components/typed-range-text-component.cjs +1 -47
- package/dist/lib/cjs/setting-components/typed-range-text-component.d.cts +1 -1
- package/dist/lib/cjs/setting-components/typed-text-component.cjs +2 -21
- package/dist/lib/cjs/setting-components/typed-text-component.d.cts +2 -1
- package/dist/lib/cjs/setting-components/url-component.cjs +1 -47
- package/dist/lib/cjs/setting-components/url-component.d.cts +2 -1
- package/dist/lib/cjs/setting-components/validator-component.cjs +2 -21
- package/dist/lib/cjs/setting-components/validator-component.d.cts +1 -1
- package/dist/lib/cjs/setting-components/value-component-with-change-tracking.cjs +1 -47
- package/dist/lib/cjs/setting-components/value-component-with-change-tracking.d.cts +1 -1
- package/dist/lib/cjs/setting-components/week-component.cjs +2 -21
- package/dist/lib/cjs/setting-components/week-component.d.cts +2 -1
- package/dist/lib/cjs/setting-ex.cjs +2 -21
- package/dist/lib/cjs/setting-ex.d.cts +2 -1
- package/dist/lib/cjs/setting-group-ex.cjs +2 -21
- package/dist/lib/cjs/setting-group-ex.d.cts +2 -1
- package/dist/lib/cjs/status-bar-item-registrar.cjs +2 -21
- package/dist/lib/cjs/status-bar-item-registrar.d.cts +2 -1
- package/dist/lib/cjs/templater.cjs +1 -47
- package/dist/lib/cjs/templater.d.cts +1 -1
- package/dist/lib/cjs/transformers/duration-transformer.cjs +2 -21
- package/dist/lib/cjs/transformers/duration-transformer.d.cts +1 -1
- package/dist/lib/cjs/transformers/index.cjs +2 -48
- package/dist/lib/cjs/transformers/index.d.cts +1 -1
- package/dist/lib/cjs/trusted-input.cjs +2 -21
- package/dist/lib/cjs/trusted-input.d.cts +1 -1
- package/dist/lib/cjs/validation.cjs +2 -21
- package/dist/lib/cjs/validation.d.cts +1 -1
- package/dist/lib/cjs/vault-delete.cjs +2 -21
- package/dist/lib/cjs/vault-delete.d.cts +1 -1
- package/dist/lib/cjs/vault-transaction.cjs +3 -16
- package/dist/lib/cjs/vault-transaction.d.cts +1 -1
- package/dist/lib/cjs/vault.cjs +3 -16
- package/dist/lib/cjs/vault.d.cts +1 -1
- package/dist/lib/cjs/view-registrar.cjs +2 -21
- package/dist/lib/cjs/view-registrar.d.cts +1 -1
- package/dist/lib/cjs/workspace.cjs +2 -21
- package/dist/lib/cjs/workspace.d.cts +2 -1
- package/dist/lib/esm/@types/i18next.d.mts +1 -1
- package/dist/lib/esm/@types/obsidian-integration-testing.d.mts +3 -3
- package/dist/lib/esm/@types/original-fs.d.mts +2 -1
- package/dist/lib/esm/__merged.d.mts +3 -3
- package/dist/lib/esm/__merged.mjs +33 -16
- package/dist/lib/esm/active-file-provider.d.mts +1 -1
- package/dist/lib/esm/active-file-provider.mjs +1 -37
- package/dist/lib/esm/app.d.mts +1 -1
- package/dist/lib/esm/app.mjs +1 -37
- package/dist/lib/esm/async-with-notice.d.mts +2 -1
- package/dist/lib/esm/async-with-notice.mjs +2 -11
- package/dist/lib/esm/attachment-path.d.mts +1 -1
- package/dist/lib/esm/attachment-path.mjs +6 -15
- package/dist/lib/esm/attachment-unit-folder.d.mts +1 -1
- package/dist/lib/esm/attachment-unit-folder.mjs +2 -11
- package/dist/lib/esm/backlink-index.d.mts +1 -1
- package/dist/lib/esm/backlink-index.mjs +2 -11
- package/dist/lib/esm/backlink.d.mts +1 -1
- package/dist/lib/esm/backlink.mjs +2 -11
- package/dist/lib/esm/bases-view-registrar.d.mts +1 -1
- package/dist/lib/esm/bases-view-registrar.mjs +2 -11
- package/dist/lib/esm/callout.d.mts +2 -1
- package/dist/lib/esm/callout.mjs +2 -11
- package/dist/lib/esm/canvas.d.mts +1 -1
- package/dist/lib/esm/canvas.mjs +2 -11
- package/dist/lib/esm/case-insensitive-file-index.d.mts +1 -1
- package/dist/lib/esm/case-insensitive-file-index.mjs +2 -11
- package/dist/lib/esm/code-block-markdown-information.d.mts +1 -1
- package/dist/lib/esm/code-block-markdown-information.mjs +0 -36
- package/dist/lib/esm/code-block-reg-exp.d.mts +1 -1
- package/dist/lib/esm/code-block-reg-exp.mjs +1 -37
- package/dist/lib/esm/codemirror/index.d.mts +1 -1
- package/dist/lib/esm/codemirror/index.mjs +1 -37
- package/dist/lib/esm/codemirror/state-field-spec.d.mts +1 -1
- package/dist/lib/esm/codemirror/state-field-spec.mjs +0 -36
- package/dist/lib/esm/command-handlers/abstract-file-command-handler.d.mts +1 -1
- package/dist/lib/esm/command-handlers/abstract-file-command-handler.mjs +2 -11
- package/dist/lib/esm/command-handlers/command-handler-component.d.mts +1 -1
- package/dist/lib/esm/command-handlers/command-handler-component.mjs +2 -11
- package/dist/lib/esm/command-handlers/command-handler.d.mts +1 -1
- package/dist/lib/esm/command-handlers/command-handler.mjs +2 -11
- package/dist/lib/esm/command-handlers/editor-command-handler.d.mts +1 -1
- package/dist/lib/esm/command-handlers/editor-command-handler.mjs +2 -11
- package/dist/lib/esm/command-handlers/file-command-handler.d.mts +1 -1
- package/dist/lib/esm/command-handlers/file-command-handler.mjs +5 -14
- package/dist/lib/esm/command-handlers/folder-command-handler.d.mts +1 -1
- package/dist/lib/esm/command-handlers/folder-command-handler.mjs +5 -14
- package/dist/lib/esm/command-handlers/global-command-handler.d.mts +1 -1
- package/dist/lib/esm/command-handlers/global-command-handler.mjs +3 -12
- package/dist/lib/esm/command-handlers/index.d.mts +1 -1
- package/dist/lib/esm/command-handlers/index.mjs +1 -37
- package/dist/lib/esm/command-handlers/open-demo-vault-command-handler.d.mts +1 -1
- package/dist/lib/esm/command-handlers/open-demo-vault-command-handler.mjs +2 -11
- package/dist/lib/esm/command-handlers/open-settings-command-handler.d.mts +1 -1
- package/dist/lib/esm/command-handlers/open-settings-command-handler.mjs +1 -37
- package/dist/lib/esm/command-handlers/unlock-active-note-command-handler.d.mts +1 -1
- package/dist/lib/esm/command-handlers/unlock-active-note-command-handler.mjs +1 -37
- package/dist/lib/esm/command-registrar.d.mts +1 -1
- package/dist/lib/esm/command-registrar.mjs +1 -37
- package/dist/lib/esm/community-plugins.d.mts +1 -1
- package/dist/lib/esm/community-plugins.mjs +2 -11
- package/dist/lib/esm/components/abort-signal-component.d.mts +2 -1
- package/dist/lib/esm/components/abort-signal-component.mjs +2 -11
- package/dist/lib/esm/components/all-windows-event-component.d.mts +2 -1
- package/dist/lib/esm/components/all-windows-event-component.mjs +1 -37
- package/dist/lib/esm/components/async-error-handler-component.d.mts +1 -1
- package/dist/lib/esm/components/async-error-handler-component.mjs +2 -11
- package/dist/lib/esm/components/async-events-component.d.mts +1 -1
- package/dist/lib/esm/components/async-events-component.mjs +2 -11
- package/dist/lib/esm/components/case-insensitive-file-index-component.d.mts +1 -1
- package/dist/lib/esm/components/case-insensitive-file-index-component.mjs +1 -37
- package/dist/lib/esm/components/component-ex.d.mts +1 -1
- package/dist/lib/esm/components/component-ex.mjs +3 -6
- package/dist/lib/esm/components/console-debug-component.d.mts +1 -1
- package/dist/lib/esm/components/console-debug-component.mjs +2 -11
- package/dist/lib/esm/components/core-plugin-toggle-component.d.mts +1 -1
- package/dist/lib/esm/components/core-plugin-toggle-component.mjs +2 -11
- package/dist/lib/esm/components/disposable-component.d.mts +1 -1
- package/dist/lib/esm/components/disposable-component.mjs +3 -6
- package/dist/lib/esm/components/embed-extensions-component.d.mts +1 -1
- package/dist/lib/esm/components/embed-extensions-component.mjs +1 -37
- package/dist/lib/esm/components/generate-markdown-link-default-params-component.d.mts +1 -1
- package/dist/lib/esm/components/generate-markdown-link-default-params-component.mjs +1 -37
- package/dist/lib/esm/components/index.d.mts +1 -1
- package/dist/lib/esm/components/index.mjs +1 -37
- package/dist/lib/esm/components/layout-ready-component.d.mts +1 -1
- package/dist/lib/esm/components/layout-ready-component.mjs +2 -11
- package/dist/lib/esm/components/menu-event-registrar-component.d.mts +1 -1
- package/dist/lib/esm/components/menu-event-registrar-component.mjs +1 -37
- package/dist/lib/esm/components/monkey-around-component.d.mts +1 -1
- package/dist/lib/esm/components/monkey-around-component.mjs +2 -11
- package/dist/lib/esm/components/notebook-navigator-menu-event-registrar-component.d.mts +1 -1
- package/dist/lib/esm/components/notebook-navigator-menu-event-registrar-component.mjs +2 -11
- package/dist/lib/esm/components/plugin-context-component.d.mts +1 -1
- package/dist/lib/esm/components/plugin-context-component.mjs +2 -11
- package/dist/lib/esm/components/plugin-gate-component.d.mts +2 -1
- package/dist/lib/esm/components/plugin-gate-component.mjs +2 -11
- package/dist/lib/esm/components/plugin-notice-component.d.mts +2 -1
- package/dist/lib/esm/components/plugin-notice-component.mjs +3 -6
- package/dist/lib/esm/components/plugin-settings-component.d.mts +1 -1
- package/dist/lib/esm/components/plugin-settings-component.mjs +2 -11
- package/dist/lib/esm/components/plugin-settings-tab-component.d.mts +1 -1
- package/dist/lib/esm/components/plugin-settings-tab-component.mjs +2 -11
- package/dist/lib/esm/components/plugin-suggestion-component.d.mts +2 -1
- package/dist/lib/esm/components/plugin-suggestion-component.mjs +2 -11
- package/dist/lib/esm/components/pointer-position-component.d.mts +1 -1
- package/dist/lib/esm/components/pointer-position-component.mjs +1 -37
- package/dist/lib/esm/components/registry-component.d.mts +1 -1
- package/dist/lib/esm/components/registry-component.mjs +2 -11
- package/dist/lib/esm/components/release-notes-component.d.mts +2 -1
- package/dist/lib/esm/components/release-notes-component.mjs +2 -11
- package/dist/lib/esm/components/rename-delete-handler-component.d.mts +1 -1
- package/dist/lib/esm/components/rename-delete-handler-component.mjs +3 -6
- package/dist/lib/esm/components/rmdir-guard-component.d.mts +1 -1
- package/dist/lib/esm/components/rmdir-guard-component.mjs +1 -37
- package/dist/lib/esm/components/settings-migration-component.d.mts +3 -3
- package/dist/lib/esm/components/settings-migration-component.mjs +2 -11
- package/dist/lib/esm/components/syntax-highlighting-component.d.mts +1 -1
- package/dist/lib/esm/components/syntax-highlighting-component.mjs +2 -11
- package/dist/lib/esm/components/templates-language-component.d.mts +1 -1
- package/dist/lib/esm/components/templates-language-component.mjs +3 -39
- package/dist/lib/esm/constructors/get-dom-events-handlers-constructor.d.mts +1 -1
- package/dist/lib/esm/constructors/get-dom-events-handlers-constructor.mjs +3 -6
- package/dist/lib/esm/constructors/index.d.mts +1 -1
- package/dist/lib/esm/constructors/index.mjs +1 -37
- package/dist/lib/esm/css-class.d.mts +1 -1
- package/dist/lib/esm/css-class.mjs +1 -37
- package/dist/lib/esm/data-handler.d.mts +1 -1
- package/dist/lib/esm/data-handler.mjs +1 -37
- package/dist/lib/esm/dataview-link.d.mts +1 -1
- package/dist/lib/esm/dataview-link.mjs +2 -11
- package/dist/lib/esm/dataview.d.mts +2 -1
- package/dist/lib/esm/dataview.mjs +2 -11
- package/dist/lib/esm/debug.d.mts +1 -1
- package/dist/lib/esm/debug.mjs +2 -11
- package/dist/lib/esm/demo-vault-helper-settings.d.mts +1 -1
- package/dist/lib/esm/demo-vault-helper-settings.mjs +0 -36
- package/dist/lib/esm/demo-vault-helper.d.mts +1 -1
- package/dist/lib/esm/demo-vault-helper.mjs +2 -11
- package/dist/lib/esm/demo-vault-naming.d.mts +1 -1
- package/dist/lib/esm/demo-vault-naming.mjs +1 -37
- package/dist/lib/esm/desktop-demo-vault-opener.d.mts +1 -1
- package/dist/lib/esm/desktop-demo-vault-opener.mjs +3 -6
- package/dist/lib/esm/desktop-trusted-input.d.mts +2 -1
- package/dist/lib/esm/desktop-trusted-input.mjs +2 -11
- package/dist/lib/esm/editor-extension-registrar.d.mts +1 -1
- package/dist/lib/esm/editor-extension-registrar.mjs +2 -11
- package/dist/lib/esm/editor-suggest-registrar.d.mts +1 -1
- package/dist/lib/esm/editor-suggest-registrar.mjs +2 -11
- package/dist/lib/esm/editor.d.mts +1 -1
- package/dist/lib/esm/editor.mjs +2 -11
- package/dist/lib/esm/events.d.mts +1 -1
- package/dist/lib/esm/events.mjs +2 -11
- package/dist/lib/esm/extensions-registrar.d.mts +1 -1
- package/dist/lib/esm/extensions-registrar.mjs +2 -11
- package/dist/lib/esm/file-change.d.mts +2 -1
- package/dist/lib/esm/file-change.mjs +2 -11
- package/dist/lib/esm/file-explorer.d.mts +1 -1
- package/dist/lib/esm/file-explorer.mjs +2 -11
- package/dist/lib/esm/file-manager.d.mts +2 -1
- package/dist/lib/esm/file-manager.mjs +2 -11
- package/dist/lib/esm/file-system.d.mts +1 -1
- package/dist/lib/esm/file-system.mjs +2 -11
- package/dist/lib/esm/folder-note.d.mts +1 -1
- package/dist/lib/esm/folder-note.mjs +2 -11
- package/dist/lib/esm/frontmatter-formatting.d.mts +1 -1
- package/dist/lib/esm/frontmatter-formatting.mjs +2 -11
- package/dist/lib/esm/frontmatter-link-cache-with-offsets.d.mts +1 -1
- package/dist/lib/esm/frontmatter-link-cache-with-offsets.mjs +2 -11
- package/dist/lib/esm/frontmatter.d.mts +1 -1
- package/dist/lib/esm/frontmatter.mjs +2 -11
- package/dist/lib/esm/generated-during-build.d.mts +1 -1
- package/dist/lib/esm/generated-during-build.mjs +2 -38
- package/dist/lib/esm/hover-link-source-registrar.d.mts +1 -1
- package/dist/lib/esm/hover-link-source-registrar.mjs +2 -11
- package/dist/lib/esm/html-element.d.mts +2 -1
- package/dist/lib/esm/html-element.mjs +1 -37
- package/dist/lib/esm/i18n/custom-type-options.d.mts +1 -1
- package/dist/lib/esm/i18n/custom-type-options.mjs +1 -37
- package/dist/lib/esm/i18n/default-translations.d.mts +1 -1
- package/dist/lib/esm/i18n/default-translations.mjs +1 -37
- package/dist/lib/esm/i18n/i18n.d.mts +1 -1
- package/dist/lib/esm/i18n/i18n.mjs +2 -11
- package/dist/lib/esm/i18n/index.d.mts +1 -1
- package/dist/lib/esm/i18n/index.mjs +1 -37
- package/dist/lib/esm/i18n/locales/en.d.mts +1 -1
- package/dist/lib/esm/i18n/locales/en.mjs +1 -37
- package/dist/lib/esm/i18n/locales/index.d.mts +1 -1
- package/dist/lib/esm/i18n/locales/index.mjs +1 -37
- package/dist/lib/esm/i18n/locales/translations-map.d.mts +1 -1
- package/dist/lib/esm/i18n/locales/translations-map.mjs +1 -37
- package/dist/lib/esm/index.d.mts +1 -1
- package/dist/lib/esm/index.mjs +1 -37
- package/dist/lib/esm/is-in-obsidian.d.mts +1 -1
- package/dist/lib/esm/is-in-obsidian.mjs +1 -37
- package/dist/lib/esm/library-references.d.mts +2 -0
- package/dist/lib/esm/library-styles.d.mts +2 -1
- package/dist/lib/esm/library-styles.mjs +2 -11
- package/dist/lib/esm/library.mjs +1 -37
- package/dist/lib/esm/link-name.d.mts +1 -1
- package/dist/lib/esm/link-name.mjs +1 -37
- package/dist/lib/esm/link-update-progress.d.mts +1 -1
- package/dist/lib/esm/link-update-progress.mjs +0 -36
- package/dist/lib/esm/link.d.mts +2 -1
- package/dist/lib/esm/link.mjs +3 -6
- package/dist/lib/esm/logger.d.mts +2 -1
- package/dist/lib/esm/logger.mjs +2 -11
- package/dist/lib/esm/loop.d.mts +2 -1
- package/dist/lib/esm/loop.mjs +3 -6
- package/dist/lib/esm/markdown-code-block-processor-registrar.d.mts +2 -1
- package/dist/lib/esm/markdown-code-block-processor-registrar.mjs +2 -11
- package/dist/lib/esm/markdown-code-block-processor.d.mts +2 -1
- package/dist/lib/esm/markdown-code-block-processor.mjs +2 -11
- package/dist/lib/esm/markdown-post-processor-registrar.d.mts +2 -1
- package/dist/lib/esm/markdown-post-processor-registrar.mjs +2 -11
- package/dist/lib/esm/markdown-view.d.mts +1 -1
- package/dist/lib/esm/markdown-view.mjs +1 -37
- package/dist/lib/esm/markdown.d.mts +2 -1
- package/dist/lib/esm/markdown.mjs +3 -6
- package/dist/lib/esm/menu-event-registrar.d.mts +1 -1
- package/dist/lib/esm/menu-event-registrar.mjs +0 -36
- package/dist/lib/esm/metadata-cache.d.mts +1 -1
- package/dist/lib/esm/metadata-cache.mjs +7 -10
- package/dist/lib/esm/mobile-trusted-input.d.mts +1 -1
- package/dist/lib/esm/mobile-trusted-input.mjs +1 -37
- package/dist/lib/esm/modals/alert.d.mts +2 -1
- package/dist/lib/esm/modals/alert.mjs +2 -11
- package/dist/lib/esm/modals/confirm.d.mts +2 -1
- package/dist/lib/esm/modals/confirm.mjs +2 -11
- package/dist/lib/esm/modals/index.d.mts +1 -1
- package/dist/lib/esm/modals/index.mjs +1 -37
- package/dist/lib/esm/modals/minimizable-modal.d.mts +1 -1
- package/dist/lib/esm/modals/minimizable-modal.mjs +2 -11
- package/dist/lib/esm/modals/modal-command-builder.d.mts +2 -1
- package/dist/lib/esm/modals/modal-command-builder.mjs +2 -11
- package/dist/lib/esm/modals/modal.d.mts +1 -1
- package/dist/lib/esm/modals/modal.mjs +2 -11
- package/dist/lib/esm/modals/prompt.d.mts +2 -1
- package/dist/lib/esm/modals/prompt.mjs +2 -11
- package/dist/lib/esm/modals/select-item.d.mts +1 -1
- package/dist/lib/esm/modals/select-item.mjs +2 -11
- package/dist/lib/esm/modals/select-option.d.mts +2 -1
- package/dist/lib/esm/modals/select-option.mjs +2 -11
- package/dist/lib/esm/modals/suggest-modal-command-builder.d.mts +1 -1
- package/dist/lib/esm/modals/suggest-modal-command-builder.mjs +1 -37
- package/dist/lib/esm/note-priority.d.mts +1 -1
- package/dist/lib/esm/note-priority.mjs +2 -11
- package/dist/lib/esm/notebook-navigator.d.mts +1 -1
- package/dist/lib/esm/notebook-navigator.mjs +1 -37
- package/dist/lib/esm/obsidian-dev-utils-state.d.mts +1 -1
- package/dist/lib/esm/obsidian-dev-utils-state.mjs +2 -11
- package/dist/lib/esm/obsidian-protocol-handler-registrar.d.mts +1 -1
- package/dist/lib/esm/obsidian-protocol-handler-registrar.mjs +2 -11
- package/dist/lib/esm/obsidian-settings.d.mts +1 -1
- package/dist/lib/esm/obsidian-settings.mjs +2 -11
- package/dist/lib/esm/parse-link.d.mts +1 -1
- package/dist/lib/esm/parse-link.mjs +2 -11
- package/dist/lib/esm/path-settings.d.mts +1 -1
- package/dist/lib/esm/path-settings.mjs +2 -11
- package/dist/lib/esm/pdf.d.mts +2 -1
- package/dist/lib/esm/pdf.mjs +2 -11
- package/dist/lib/esm/plugin/index.d.mts +1 -1
- package/dist/lib/esm/plugin/index.mjs +1 -37
- package/dist/lib/esm/plugin/plugin-api-schema.d.mts +19 -41
- package/dist/lib/esm/plugin/plugin-api-schema.mjs +6 -38
- package/dist/lib/esm/plugin/plugin-api.d.mts +35 -50
- package/dist/lib/esm/plugin/plugin-api.mjs +2 -11
- package/dist/lib/esm/plugin/plugin-context.d.mts +2 -1
- package/dist/lib/esm/plugin/plugin-context.mjs +2 -11
- package/dist/lib/esm/plugin/plugin-event-source.d.mts +1 -1
- package/dist/lib/esm/plugin/plugin-event-source.mjs +1 -37
- package/dist/lib/esm/plugin/plugin-install-state.d.mts +1 -1
- package/dist/lib/esm/plugin/plugin-install-state.mjs +1 -37
- package/dist/lib/esm/plugin/plugin-lifecycle-events.d.mts +1 -1
- package/dist/lib/esm/plugin/plugin-lifecycle-events.mjs +1 -37
- package/dist/lib/esm/plugin/plugin-settings-tab.d.mts +2 -1
- package/dist/lib/esm/plugin/plugin-settings-tab.mjs +2 -11
- package/dist/lib/esm/plugin/plugin.d.mts +1 -1
- package/dist/lib/esm/plugin/plugin.mjs +2 -11
- package/dist/lib/esm/plugin/settings-migration-api.d.mts +3 -3
- package/dist/lib/esm/plugin/settings-migration-api.mjs +3 -12
- package/dist/lib/esm/plugin-cli-handler-registrar.d.mts +1 -1
- package/dist/lib/esm/plugin-cli-handler-registrar.mjs +2 -11
- package/dist/lib/esm/popovers/field-popover.d.mts +1 -1
- package/dist/lib/esm/popovers/field-popover.mjs +2 -11
- package/dist/lib/esm/popovers/index.d.mts +1 -1
- package/dist/lib/esm/popovers/index.mjs +1 -37
- package/dist/lib/esm/popovers/popover-anchor.d.mts +2 -1
- package/dist/lib/esm/popovers/popover-anchor.mjs +2 -11
- package/dist/lib/esm/popovers/popover.d.mts +2 -1
- package/dist/lib/esm/popovers/popover.mjs +2 -11
- package/dist/lib/esm/property-entry.d.mts +1 -1
- package/dist/lib/esm/property-entry.mjs +1 -37
- package/dist/lib/esm/queue.d.mts +2 -1
- package/dist/lib/esm/queue.mjs +2 -11
- package/dist/lib/esm/react/app-context.d.mts +1 -1
- package/dist/lib/esm/react/app-context.mjs +2 -11
- package/dist/lib/esm/react/index.d.mts +1 -1
- package/dist/lib/esm/react/index.mjs +1 -37
- package/dist/lib/esm/reference.d.mts +1 -1
- package/dist/lib/esm/reference.mjs +2 -11
- package/dist/lib/esm/resource-lock.d.mts +2 -1
- package/dist/lib/esm/resource-lock.mjs +2 -11
- package/dist/lib/esm/resource-url.d.mts +1 -1
- package/dist/lib/esm/resource-url.mjs +2 -11
- package/dist/lib/esm/ribbon-icon-registrar.d.mts +2 -1
- package/dist/lib/esm/ribbon-icon-registrar.mjs +2 -11
- package/dist/lib/esm/setting-components/checkbox-component.d.mts +2 -1
- package/dist/lib/esm/setting-components/checkbox-component.mjs +2 -11
- package/dist/lib/esm/setting-components/code-highlighter-component.d.mts +2 -1
- package/dist/lib/esm/setting-components/code-highlighter-component.mjs +2 -11
- package/dist/lib/esm/setting-components/date-component.d.mts +2 -1
- package/dist/lib/esm/setting-components/date-component.mjs +2 -11
- package/dist/lib/esm/setting-components/date-time-component.d.mts +2 -1
- package/dist/lib/esm/setting-components/date-time-component.mjs +2 -11
- package/dist/lib/esm/setting-components/email-component.d.mts +2 -1
- package/dist/lib/esm/setting-components/email-component.mjs +1 -37
- package/dist/lib/esm/setting-components/file-component.d.mts +2 -1
- package/dist/lib/esm/setting-components/file-component.mjs +1 -37
- package/dist/lib/esm/setting-components/index.d.mts +1 -1
- package/dist/lib/esm/setting-components/index.mjs +1 -37
- package/dist/lib/esm/setting-components/month-component.d.mts +2 -1
- package/dist/lib/esm/setting-components/month-component.mjs +2 -11
- package/dist/lib/esm/setting-components/multiple-dropdown-component.d.mts +3 -1
- package/dist/lib/esm/setting-components/multiple-dropdown-component.mjs +2 -11
- package/dist/lib/esm/setting-components/multiple-email-component.d.mts +2 -1
- package/dist/lib/esm/setting-components/multiple-email-component.mjs +1 -37
- package/dist/lib/esm/setting-components/multiple-file-component.d.mts +2 -1
- package/dist/lib/esm/setting-components/multiple-file-component.mjs +2 -11
- package/dist/lib/esm/setting-components/multiple-text-component.d.mts +2 -1
- package/dist/lib/esm/setting-components/multiple-text-component.mjs +2 -11
- package/dist/lib/esm/setting-components/number-component.d.mts +2 -1
- package/dist/lib/esm/setting-components/number-component.mjs +1 -37
- package/dist/lib/esm/setting-components/password-component.d.mts +2 -1
- package/dist/lib/esm/setting-components/password-component.mjs +1 -37
- package/dist/lib/esm/setting-components/setting-component-wrapper.d.mts +2 -1
- package/dist/lib/esm/setting-components/setting-component-wrapper.mjs +2 -11
- package/dist/lib/esm/setting-components/telephone-component.d.mts +2 -1
- package/dist/lib/esm/setting-components/telephone-component.mjs +1 -37
- package/dist/lib/esm/setting-components/text-based-component.d.mts +1 -1
- package/dist/lib/esm/setting-components/text-based-component.mjs +2 -11
- package/dist/lib/esm/setting-components/time-component.d.mts +2 -1
- package/dist/lib/esm/setting-components/time-component.mjs +2 -11
- package/dist/lib/esm/setting-components/tri-state-checkbox-component.d.mts +2 -1
- package/dist/lib/esm/setting-components/tri-state-checkbox-component.mjs +2 -11
- package/dist/lib/esm/setting-components/typed-dropdown-component.d.mts +3 -1
- package/dist/lib/esm/setting-components/typed-dropdown-component.mjs +2 -11
- package/dist/lib/esm/setting-components/typed-multiple-dropdown-component.d.mts +3 -1
- package/dist/lib/esm/setting-components/typed-multiple-dropdown-component.mjs +2 -11
- package/dist/lib/esm/setting-components/typed-range-text-component.d.mts +1 -1
- package/dist/lib/esm/setting-components/typed-range-text-component.mjs +1 -37
- package/dist/lib/esm/setting-components/typed-text-component.d.mts +2 -1
- package/dist/lib/esm/setting-components/typed-text-component.mjs +2 -11
- package/dist/lib/esm/setting-components/url-component.d.mts +2 -1
- package/dist/lib/esm/setting-components/url-component.mjs +1 -37
- package/dist/lib/esm/setting-components/validator-component.d.mts +1 -1
- package/dist/lib/esm/setting-components/validator-component.mjs +2 -11
- package/dist/lib/esm/setting-components/value-component-with-change-tracking.d.mts +1 -1
- package/dist/lib/esm/setting-components/value-component-with-change-tracking.mjs +0 -36
- package/dist/lib/esm/setting-components/week-component.d.mts +2 -1
- package/dist/lib/esm/setting-components/week-component.mjs +2 -11
- package/dist/lib/esm/setting-ex.d.mts +2 -1
- package/dist/lib/esm/setting-ex.mjs +2 -11
- package/dist/lib/esm/setting-group-ex.d.mts +2 -1
- package/dist/lib/esm/setting-group-ex.mjs +2 -11
- package/dist/lib/esm/status-bar-item-registrar.d.mts +2 -1
- package/dist/lib/esm/status-bar-item-registrar.mjs +2 -11
- package/dist/lib/esm/templater.d.mts +1 -1
- package/dist/lib/esm/templater.mjs +1 -37
- package/dist/lib/esm/transformers/duration-transformer.d.mts +1 -1
- package/dist/lib/esm/transformers/duration-transformer.mjs +2 -11
- package/dist/lib/esm/transformers/index.d.mts +1 -1
- package/dist/lib/esm/transformers/index.mjs +1 -37
- package/dist/lib/esm/trusted-input.d.mts +1 -1
- package/dist/lib/esm/trusted-input.mjs +2 -11
- package/dist/lib/esm/validation.d.mts +1 -1
- package/dist/lib/esm/validation.mjs +2 -11
- package/dist/lib/esm/vault-delete.d.mts +1 -1
- package/dist/lib/esm/vault-delete.mjs +2 -11
- package/dist/lib/esm/vault-transaction.d.mts +1 -1
- package/dist/lib/esm/vault-transaction.mjs +3 -6
- package/dist/lib/esm/vault.d.mts +1 -1
- package/dist/lib/esm/vault.mjs +3 -6
- package/dist/lib/esm/view-registrar.d.mts +1 -1
- package/dist/lib/esm/view-registrar.mjs +2 -11
- package/dist/lib/esm/workspace.d.mts +2 -1
- package/dist/lib/esm/workspace.mjs +2 -11
- package/package.json +16 -5
package/dist/lib/cjs/app.d.cts
CHANGED
|
@@ -2,13 +2,7 @@
|
|
|
2
2
|
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
3
|
if you want to view the source, please visit the github repository of this plugin
|
|
4
4
|
*/
|
|
5
|
-
|
|
6
5
|
(function () {
|
|
7
|
-
function ensureDisposeSymbols(symbolConstructor = Symbol) {
|
|
8
|
-
symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
|
|
9
|
-
symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
|
|
10
|
-
}
|
|
11
|
-
|
|
12
6
|
function ensureBrowserProcess() {
|
|
13
7
|
const browserProcess = {
|
|
14
8
|
browser: true,
|
|
@@ -33,20 +27,7 @@ function ensureBrowserProcess() {
|
|
|
33
27
|
existingProcessRecord["browser"] = true;
|
|
34
28
|
}
|
|
35
29
|
|
|
36
|
-
|
|
37
|
-
return $unknown;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
(function initCjs() {
|
|
41
|
-
const globalThisRecord = globalThis;
|
|
42
|
-
ensureDisposeSymbols();
|
|
43
|
-
globalThisRecord["__name"] ??= keepName;
|
|
44
|
-
globalThisRecord["__extractDefault"] ??= extractDefault;
|
|
45
|
-
ensureBrowserProcess();
|
|
46
|
-
function extractDefault(module) {
|
|
47
|
-
return module && module.__esModule && "default" in module ? module.default : module;
|
|
48
|
-
}
|
|
49
|
-
})();
|
|
30
|
+
ensureBrowserProcess();
|
|
50
31
|
})();
|
|
51
32
|
(function patchObsidianRequire() {
|
|
52
33
|
const originalRequire = require;
|
|
@@ -232,4 +213,4 @@ function showCustomContentNotice(context, pluginNoticeComponent, content) {
|
|
|
232
213
|
retryWithTimeoutNotice,
|
|
233
214
|
runWithTimeoutNotice
|
|
234
215
|
});
|
|
235
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FzeW5jLXdpdGgtbm90aWNlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHJvdmlkZXMgYSB1dGlsaXR5IHRvIGV4ZWN1dGUgYW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHdpdGggYSBub3RpY2UuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBSZXRyeU9wdGlvbnMsXG4gIFRpbWVvdXRDb250ZXh0XG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hc3luYyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlUHJvdmlkZXIgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdmFsdWUtcHJvdmlkZXInO1xuaW1wb3J0IHR5cGUgeyBOb3RpY2UgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQge1xuICBpbnZva2VBc3luY1NhZmVseSxcbiAgcmV0cnlXaXRoVGltZW91dCxcbiAgcnVuV2l0aFRpbWVvdXRcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FzeW5jJztcbmltcG9ydCB7IGdldERlYnVnZ2VyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2RlYnVnJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi92YWx1ZS1wcm92aWRlcic7XG5cbmltcG9ydCB0eXBlIHsgUGx1Z2luTm90aWNlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BsdWdpbi1ub3RpY2UtY29tcG9uZW50LnRzJztcblxuaW1wb3J0IHsgdCB9IGZyb20gJy4vaTE4bi9pMThuLnRzJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmV0cnlXaXRoVGltZW91dE5vdGljZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmV0cnlXaXRoVGltZW91dE5vdGljZVBhcmFtcyB7XG4gIC8qKlxuICAgKiBDdXN0b20gY29udGVudCB0byBzaG93IGluIHRoZSBub3RpY2UgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCB0aW1lZC1vdXQgbWVzc2FnZS4gUmVzb2x2ZWQgb25seSBpZlxuICAgKiB0aGUgb3BlcmF0aW9uIGV4Y2VlZHMgdGhlIHRpbWVvdXQsIHNob3duIGFzIGEgcGVybWFuZW50IG5vdGljZSwgYW5kIGhpZGRlbiB3aGVuIHRoZSBvcGVyYXRpb25cbiAgICogY29tcGxldGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudD86IFZhbHVlUHJvdmlkZXI8RG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZz47XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRpb24gZnVuY3Rpb24gdG8gZXhlY3V0ZS5cbiAgICpcbiAgICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byBsaXN0ZW4gdG8uXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW9uRnVuY3Rpb246IChhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpID0+IFByb21pc2FibGU8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBvcGVyYXRpb24uXG4gICAqL1xuICByZWFkb25seSBvcGVyYXRpb25OYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQbHVnaW4gbm90aWNlIGNvbXBvbmVudCB1c2VkIHRvIHNob3cgdGhlIHRpbWVvdXQgbm90aWNlLiBXaGVuIGBudWxsYCAob3IgYHNob3VsZFNob3dUaW1lb3V0Tm90aWNlYFxuICAgKiBpcyBgZmFsc2VgKSwgbm8gbm90aWNlIGlzIHNob3duIGFuZCB0aGUgdGltZW91dCBpcyBvbmx5IGxvZ2dlZC5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbk5vdGljZUNvbXBvbmVudDogbnVsbCB8IFBsdWdpbk5vdGljZUNvbXBvbmVudDtcblxuICAvKipcbiAgICogVGhlIHJldHJ5IG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSByZXRyeU9wdGlvbnM/OiBSZXRyeU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyBhIHRpbWVvdXQgbm90aWNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNob3dUaW1lb3V0Tm90aWNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHN0YWNrIHRyYWNlIG9mIHRoZSBzb3VyY2UgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBzdGFja1RyYWNlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBydW5XaXRoVGltZW91dH0uXG4gKlxuICogQHR5cGVQYXJhbSBSZXN1bHQgLSBUaGUgdHlwZSBvZiB0aGUgcmVzdWx0IGZyb20gdGhlIG9wZXJhdGlvbiBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdW5XaXRoVGltZW91dE5vdGljZVBhcmFtczxSZXN1bHQ+IHtcbiAgLyoqXG4gICAqIEN1c3RvbSBjb250ZW50IHRvIHNob3cgaW4gdGhlIG5vdGljZSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IHRpbWVkLW91dCBtZXNzYWdlLiBSZXNvbHZlZCBvbmx5IGlmXG4gICAqIHRoZSBvcGVyYXRpb24gZXhjZWVkcyB7QGxpbmsgUnVuV2l0aFRpbWVvdXROb3RpY2VQYXJhbXMudGltZW91dEluTWlsbGlzZWNvbmRzfSwgc2hvd24gYXMgYVxuICAgKiBwZXJtYW5lbnQgbm90aWNlLCBhbmQgaGlkZGVuIHdoZW4gdGhlIG9wZXJhdGlvbiBjb21wbGV0ZXMuXG4gICAqL1xuICByZWFkb25seSBjb250ZW50PzogVmFsdWVQcm92aWRlcjxEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nPjtcblxuICAvKipcbiAgICogVGhlIGNvbnRleHQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dD86IHVua25vd247XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRpb24gZnVuY3Rpb24gdG8gZXhlY3V0ZS5cbiAgICpcbiAgICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byBsaXN0ZW4gdG8uXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW9uRnVuY3Rpb246IChhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpID0+IFByb21pc2FibGU8UmVzdWx0PjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIG9wZXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IG9wZXJhdGlvbk5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBsdWdpbiBub3RpY2UgY29tcG9uZW50IHVzZWQgdG8gc2hvdyB0aGUgdGltZW91dCBub3RpY2UuIFdoZW4gYG51bGxgIChvciBgc2hvdWxkU2hvd1RpbWVvdXROb3RpY2VgXG4gICAqIGlzIGBmYWxzZWApLCBubyBub3RpY2UgaXMgc2hvd24gYW5kIHRoZSB0aW1lb3V0IGlzIG9ubHkgbG9nZ2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTm90aWNlQ29tcG9uZW50OiBudWxsIHwgUGx1Z2luTm90aWNlQ29tcG9uZW50O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgYSB0aW1lb3V0IG5vdGljZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTaG93VGltZW91dE5vdGljZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFjayB0cmFjZSBvZiB0aGUgc291cmNlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tUcmFjZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gdGltZSB0byB3YWl0IGluIG1pbGxpc2Vjb25kcy5cbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXRJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJldHJpZXMgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIHVudGlsIGl0IHJldHVybnMgYHRydWVgIG9yIHRoZSB0aW1lb3V0IGlzIHJlYWNoZWQgYW5kIGRpc3BsYXlzIGEgbm90aWNlIGlmIHRoZSBmdW5jdGlvbiB0aW1lcyBvdXQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZ1bmN0aW9uIHJldHVybnMgYHRydWVgIG9yIHJlamVjdHMgd2hlbiB0aGUgdGltZW91dCBpcyByZWFjaGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmV0cnlXaXRoVGltZW91dE5vdGljZShwYXJhbXM6IFJldHJ5V2l0aFRpbWVvdXROb3RpY2VQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIHJldHJ5V2l0aFRpbWVvdXQoe1xuICAgIC4uLnBhcmFtcyxcbiAgICBvblRpbWVvdXQ6IHJlc29sdmVPblRpbWVvdXQocGFyYW1zLnNob3VsZFNob3dUaW1lb3V0Tm90aWNlLCBwYXJhbXMucGx1Z2luTm90aWNlQ29tcG9uZW50LCBwYXJhbXMuY29udGVudClcbiAgfSk7XG59XG5cbi8qKlxuICogRXhlY3V0ZXMgYSBmdW5jdGlvbiB3aXRoIGEgdGltZW91dCBhbmQgZGlzcGxheXMgYSBub3RpY2UgaWYgdGhlIGZ1bmN0aW9uIHRpbWVzIG91dC5cbiAqXG4gKiBAdHlwZVBhcmFtIFJlc3VsdCAtIFRoZSB0eXBlIG9mIHRoZSByZXN1bHQgZnJvbSB0aGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uLlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bldpdGhUaW1lb3V0Tm90aWNlPFJlc3VsdD4ocGFyYW1zOiBSdW5XaXRoVGltZW91dE5vdGljZVBhcmFtczxSZXN1bHQ+KTogUHJvbWlzZTxSZXN1bHQ+IHtcbiAgcmV0dXJuIHJ1bldpdGhUaW1lb3V0KHtcbiAgICAuLi5wYXJhbXMsXG4gICAgb25UaW1lb3V0OiByZXNvbHZlT25UaW1lb3V0KHBhcmFtcy5zaG91bGRTaG93VGltZW91dE5vdGljZSwgcGFyYW1zLnBsdWdpbk5vdGljZUNvbXBvbmVudCwgcGFyYW1zLmNvbnRlbnQpXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBvblRpbWVvdXROb3RpY2UoY29udGV4dDogVGltZW91dENvbnRleHQsIHBsdWdpbk5vdGljZUNvbXBvbmVudDogUGx1Z2luTm90aWNlQ29tcG9uZW50LCBjb250ZW50PzogVmFsdWVQcm92aWRlcjxEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nPik6IHZvaWQge1xuICBpZiAoY29udGVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgc2hvd0N1c3RvbUNvbnRlbnROb3RpY2UoY29udGV4dCwgcGx1Z2luTm90aWNlQ29tcG9uZW50LCBjb250ZW50KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBzdGFydFRpbWUgPSBNYXRoLnRydW5jKHBlcmZvcm1hbmNlLm5vdygpIC0gY29udGV4dC5kdXJhdGlvbik7XG4gIGxldCBydW5uaW5nVGltZUVsOiBIVE1MU3BhbkVsZW1lbnQ7XG4gIGNvbnN0IFNFQ09ORF9JTl9NSUxMSVNFQ09ORFMgPSAxMDAwO1xuICBjb25zdCBjbGVhbnVwID0geyBpbnRlcnZhbElkOiAwIH07XG5cbiAgY29uc3Qgbm90aWNlID0gcGx1Z2luTm90aWNlQ29tcG9uZW50LnNob3dOb3RpY2UoY3JlYXRlRnJhZ21lbnQoKGYpID0+IHtcbiAgICBpZiAoY29udGV4dC5vcGVyYXRpb25OYW1lKSB7XG4gICAgICBmLmFwcGVuZFRleHQodCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmFzeW5jV2l0aE5vdGljZS5vcGVyYXRpb24pKTtcbiAgICAgIGYuYXBwZW5kVGV4dCgnOiAnKTtcbiAgICAgIGYuYXBwZW5kVGV4dChjb250ZXh0Lm9wZXJhdGlvbk5hbWUpO1xuICAgICAgZi5jcmVhdGVFbCgnYnInKTtcbiAgICB9XG4gICAgZi5hcHBlbmRUZXh0KHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5hc3luY1dpdGhOb3RpY2UudGltZWRPdXQsIHsgZHVyYXRpb246IGNvbnRleHQuZHVyYXRpb24gfSkpO1xuICAgIGYuY3JlYXRlRWwoJ2JyJyk7XG4gICAgZi5hcHBlbmRUZXh0KHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5hc3luY1dpdGhOb3RpY2UucnVubmluZ0ZvcikpO1xuICAgIGYuYXBwZW5kVGV4dCgnICcpO1xuICAgIHJ1bm5pbmdUaW1lRWwgPSBmLmNyZWF0ZVNwYW4oKTtcbiAgICBmLmFwcGVuZFRleHQoJyAnKTtcbiAgICBmLmFwcGVuZFRleHQodCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmFzeW5jV2l0aE5vdGljZS5taWxsaXNlY29uZHMpKTtcbiAgICBmLmNyZWF0ZUVsKCdicicpO1xuICAgIGYuYXBwZW5kVGV4dCh0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMuYXN5bmNXaXRoTm90aWNlLnRlcm1pbmF0ZU9wZXJhdGlvbikpO1xuICAgIGYuY3JlYXRlRWwoJ2JyJyk7XG4gICAgY29uc3QgYnV0dG9uID0gZi5jcmVhdGVFbCgnYnV0dG9uJywge1xuICAgICAgdGV4dDogdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmJ1dHRvbnMuY2FuY2VsKVxuICAgIH0pO1xuICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIGNvbnRleHQudGVybWluYXRlT3BlcmF0aW9uKCk7XG4gICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChjbGVhbnVwLmludGVydmFsSWQpO1xuICAgICAgbm90aWNlLmhpZGUoKTtcbiAgICB9KTtcbiAgfSkpO1xuXG4gIHVwZGF0ZVJ1bm5pbmdUaW1lKCk7XG4gIGNsZWFudXAuaW50ZXJ2YWxJZCA9IHdpbmRvdy5zZXRJbnRlcnZhbCh1cGRhdGVSdW5uaW5nVGltZSwgU0VDT05EX0lOX01JTExJU0VDT05EUyk7XG5cbiAgY29udGV4dC5vbk9wZXJhdGlvbkNvbXBsZXRlZCgoKSA9PiB7XG4gICAgd2luZG93LmNsZWFySW50ZXJ2YWwoY2xlYW51cC5pbnRlcnZhbElkKTtcbiAgICBub3RpY2UuaGlkZSgpO1xuICB9KTtcblxuICBmdW5jdGlvbiB1cGRhdGVSdW5uaW5nVGltZSgpOiB2b2lkIHtcbiAgICBjb25zdCBydW5uaW5nVGltZUluTWlsbGlzZWNvbmRzID0gTWF0aC5tYXgoY29udGV4dC5kdXJhdGlvbiwgTWF0aC5yb3VuZCgocGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydFRpbWUpIC8gU0VDT05EX0lOX01JTExJU0VDT05EUykgKiBTRUNPTkRfSU5fTUlMTElTRUNPTkRTKTtcbiAgICBydW5uaW5nVGltZUVsLnRleHRDb250ZW50ID0gU3RyaW5nKHJ1bm5pbmdUaW1lSW5NaWxsaXNlY29uZHMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG9uVGltZW91dFdpdGhvdXROb3RpY2UoY29udGV4dDogVGltZW91dENvbnRleHQpOiB2b2lkIHtcbiAgY29uc3Qgc3RhcnRUaW1lID0gTWF0aC50cnVuYyhwZXJmb3JtYW5jZS5ub3coKSAtIGNvbnRleHQuZHVyYXRpb24pO1xuXG4gIGNvbnRleHQub25PcGVyYXRpb25Db21wbGV0ZWQoKCkgPT4ge1xuICAgIGdldERlYnVnZ2VyKCdBc3luY1dpdGhOb3RpY2U6b25UaW1lb3V0V2l0aG91dE5vdGljZScpKCdPcGVyYXRpb24gY29tcGxldGVkIGFmdGVyIHRpbWVvdXQnLCB7XG4gICAgICBvcGVyYXRpb25OYW1lOiBjb250ZXh0Lm9wZXJhdGlvbk5hbWUsXG4gICAgICB0b3RhbER1cmF0aW9uOiBNYXRoLnRydW5jKHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRUaW1lKVxuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBTZWxlY3RzIHRoZSB0aW1lb3V0IGhhbmRsZXIgZm9yIHtAbGluayByZXRyeVdpdGhUaW1lb3V0Tm90aWNlfSAvIHtAbGluayBydW5XaXRoVGltZW91dE5vdGljZX0uIEEgbm90aWNlXG4gKiBpcyBzaG93biBvbmx5IHdoZW4gbm90aWNlcyBhcmUgZW5hYmxlZCBBTkQgYSByZWFsIHtAbGluayBQbHVnaW5Ob3RpY2VDb21wb25lbnR9IGlzIHN1cHBsaWVkOyBvdGhlcndpc2VcbiAqIHRoZSB0aW1lb3V0IGlzIHNpbGVudGx5IGxvZ2dlZC5cbiAqXG4gKiBAcGFyYW0gc2hvdWxkU2hvd1RpbWVvdXROb3RpY2UgLSBXaGV0aGVyIGEgdGltZW91dCBub3RpY2UgaXMgcmVxdWVzdGVkIChkZWZhdWx0cyB0byBgdHJ1ZWApLlxuICogQHBhcmFtIHBsdWdpbk5vdGljZUNvbXBvbmVudCAtIFRoZSBjb21wb25lbnQgdXNlZCB0byBzaG93IHRoZSBub3RpY2UsIGlmIGFueS5cbiAqIEBwYXJhbSBjb250ZW50IC0gT3B0aW9uYWwgY3VzdG9tIGNvbnRlbnQgZm9yIHRoZSBub3RpY2UuXG4gKiBAcmV0dXJucyBUaGUgdGltZW91dCBoYW5kbGVyIHRvIHBhc3MgdG8gdGhlIHVuZGVybHlpbmcgcmV0cnkvcnVuIGhlbHBlci5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZU9uVGltZW91dChcbiAgc2hvdWxkU2hvd1RpbWVvdXROb3RpY2U6IGJvb2xlYW4gfCB1bmRlZmluZWQsXG4gIHBsdWdpbk5vdGljZUNvbXBvbmVudDogbnVsbCB8IFBsdWdpbk5vdGljZUNvbXBvbmVudCxcbiAgY29udGVudD86IFZhbHVlUHJvdmlkZXI8RG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZz5cbik6IChjb250ZXh0OiBUaW1lb3V0Q29udGV4dCkgPT4gdm9pZCB7XG4gIHJldHVybiAhKHNob3VsZFNob3dUaW1lb3V0Tm90aWNlID8/IHRydWUpIHx8IHBsdWdpbk5vdGljZUNvbXBvbmVudCA9PT0gbnVsbFxuICAgID8gb25UaW1lb3V0V2l0aG91dE5vdGljZVxuICAgIDogKGNvbnRleHQpOiB2b2lkID0+IHtcbiAgICAgIG9uVGltZW91dE5vdGljZShjb250ZXh0LCBwbHVnaW5Ob3RpY2VDb21wb25lbnQsIGNvbnRlbnQpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIHNob3dDdXN0b21Db250ZW50Tm90aWNlKGNvbnRleHQ6IFRpbWVvdXRDb250ZXh0LCBwbHVnaW5Ob3RpY2VDb21wb25lbnQ6IFBsdWdpbk5vdGljZUNvbXBvbmVudCwgY29udGVudDogVmFsdWVQcm92aWRlcjxEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nPik6IHZvaWQge1xuICBsZXQgaXNPcGVyYXRpb25Db21wbGV0ZWQgPSBmYWxzZTtcbiAgbGV0IG5vdGljZTogTm90aWNlIHwgbnVsbCA9IG51bGw7XG5cbiAgY29udGV4dC5vbk9wZXJhdGlvbkNvbXBsZXRlZCgoKSA9PiB7XG4gICAgaXNPcGVyYXRpb25Db21wbGV0ZWQgPSB0cnVlO1xuICAgIG5vdGljZT8uaGlkZSgpO1xuICB9KTtcblxuICBpbnZva2VBc3luY1NhZmVseShhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzb2x2ZWRDb250ZW50ID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNvbnRlbnQsIHt9KTtcbiAgICAvLyBUaGUgb3BlcmF0aW9uIG1heSBoYXZlIGNvbXBsZXRlZCB3aGlsZSB0aGUgY29udGVudCB3YXMgcmVzb2x2aW5nOyBpZiBzbywgZG8gbm90IHNob3cgYSBzdGFsZSBub3RpY2UuXG4gICAgaWYgKGlzT3BlcmF0aW9uQ29tcGxldGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG5vdGljZSA9IHBsdWdpbk5vdGljZUNvbXBvbmVudC5zaG93Tm90aWNlKHJlc29sdmVkQ29udGVudCwgeyBpc1Blcm1hbmVudDogdHJ1ZSB9KTtcbiAgfSk7XG59XG4iXSwKICAi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
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hc3luYy13aXRoLW5vdGljZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHJvdmlkZXMgYSB1dGlsaXR5IHRvIGV4ZWN1dGUgYW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHdpdGggYSBub3RpY2UuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBSZXRyeU9wdGlvbnMsXG4gIFRpbWVvdXRDb250ZXh0XG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hc3luYyc7XG5pbXBvcnQgdHlwZSB7IFZhbHVlUHJvdmlkZXIgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdmFsdWUtcHJvdmlkZXInO1xuaW1wb3J0IHR5cGUgeyBOb3RpY2UgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQge1xuICBpbnZva2VBc3luY1NhZmVseSxcbiAgcmV0cnlXaXRoVGltZW91dCxcbiAgcnVuV2l0aFRpbWVvdXRcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FzeW5jJztcbmltcG9ydCB7IGdldERlYnVnZ2VyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2RlYnVnJztcbmltcG9ydCB7IHJlc29sdmVWYWx1ZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi92YWx1ZS1wcm92aWRlcic7XG5cbmltcG9ydCB0eXBlIHsgUGx1Z2luTm90aWNlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BsdWdpbi1ub3RpY2UtY29tcG9uZW50LnRzJztcblxuaW1wb3J0IHsgdCB9IGZyb20gJy4vaTE4bi9pMThuLnRzJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmV0cnlXaXRoVGltZW91dE5vdGljZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmV0cnlXaXRoVGltZW91dE5vdGljZVBhcmFtcyB7XG4gIC8qKlxuICAgKiBDdXN0b20gY29udGVudCB0byBzaG93IGluIHRoZSBub3RpY2UgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCB0aW1lZC1vdXQgbWVzc2FnZS4gUmVzb2x2ZWQgb25seSBpZlxuICAgKiB0aGUgb3BlcmF0aW9uIGV4Y2VlZHMgdGhlIHRpbWVvdXQsIHNob3duIGFzIGEgcGVybWFuZW50IG5vdGljZSwgYW5kIGhpZGRlbiB3aGVuIHRoZSBvcGVyYXRpb25cbiAgICogY29tcGxldGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudD86IFZhbHVlUHJvdmlkZXI8RG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZz47XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRpb24gZnVuY3Rpb24gdG8gZXhlY3V0ZS5cbiAgICpcbiAgICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byBsaXN0ZW4gdG8uXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW9uRnVuY3Rpb246IChhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpID0+IFByb21pc2FibGU8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBvcGVyYXRpb24uXG4gICAqL1xuICByZWFkb25seSBvcGVyYXRpb25OYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQbHVnaW4gbm90aWNlIGNvbXBvbmVudCB1c2VkIHRvIHNob3cgdGhlIHRpbWVvdXQgbm90aWNlLiBXaGVuIGBudWxsYCAob3IgYHNob3VsZFNob3dUaW1lb3V0Tm90aWNlYFxuICAgKiBpcyBgZmFsc2VgKSwgbm8gbm90aWNlIGlzIHNob3duIGFuZCB0aGUgdGltZW91dCBpcyBvbmx5IGxvZ2dlZC5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbk5vdGljZUNvbXBvbmVudDogbnVsbCB8IFBsdWdpbk5vdGljZUNvbXBvbmVudDtcblxuICAvKipcbiAgICogVGhlIHJldHJ5IG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSByZXRyeU9wdGlvbnM/OiBSZXRyeU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2hvdyBhIHRpbWVvdXQgbm90aWNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNob3dUaW1lb3V0Tm90aWNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHN0YWNrIHRyYWNlIG9mIHRoZSBzb3VyY2UgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBzdGFja1RyYWNlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBydW5XaXRoVGltZW91dH0uXG4gKlxuICogQHR5cGVQYXJhbSBSZXN1bHQgLSBUaGUgdHlwZSBvZiB0aGUgcmVzdWx0IGZyb20gdGhlIG9wZXJhdGlvbiBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdW5XaXRoVGltZW91dE5vdGljZVBhcmFtczxSZXN1bHQ+IHtcbiAgLyoqXG4gICAqIEN1c3RvbSBjb250ZW50IHRvIHNob3cgaW4gdGhlIG5vdGljZSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IHRpbWVkLW91dCBtZXNzYWdlLiBSZXNvbHZlZCBvbmx5IGlmXG4gICAqIHRoZSBvcGVyYXRpb24gZXhjZWVkcyB7QGxpbmsgUnVuV2l0aFRpbWVvdXROb3RpY2VQYXJhbXMudGltZW91dEluTWlsbGlzZWNvbmRzfSwgc2hvd24gYXMgYVxuICAgKiBwZXJtYW5lbnQgbm90aWNlLCBhbmQgaGlkZGVuIHdoZW4gdGhlIG9wZXJhdGlvbiBjb21wbGV0ZXMuXG4gICAqL1xuICByZWFkb25seSBjb250ZW50PzogVmFsdWVQcm92aWRlcjxEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nPjtcblxuICAvKipcbiAgICogVGhlIGNvbnRleHQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dD86IHVua25vd247XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRpb24gZnVuY3Rpb24gdG8gZXhlY3V0ZS5cbiAgICpcbiAgICogQHBhcmFtIGFib3J0U2lnbmFsIC0gVGhlIGFib3J0IHNpZ25hbCB0byBsaXN0ZW4gdG8uXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW9uRnVuY3Rpb246IChhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpID0+IFByb21pc2FibGU8UmVzdWx0PjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIG9wZXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IG9wZXJhdGlvbk5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBsdWdpbiBub3RpY2UgY29tcG9uZW50IHVzZWQgdG8gc2hvdyB0aGUgdGltZW91dCBub3RpY2UuIFdoZW4gYG51bGxgIChvciBgc2hvdWxkU2hvd1RpbWVvdXROb3RpY2VgXG4gICAqIGlzIGBmYWxzZWApLCBubyBub3RpY2UgaXMgc2hvd24gYW5kIHRoZSB0aW1lb3V0IGlzIG9ubHkgbG9nZ2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTm90aWNlQ29tcG9uZW50OiBudWxsIHwgUGx1Z2luTm90aWNlQ29tcG9uZW50O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgYSB0aW1lb3V0IG5vdGljZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTaG93VGltZW91dE5vdGljZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFjayB0cmFjZSBvZiB0aGUgc291cmNlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tUcmFjZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gdGltZSB0byB3YWl0IGluIG1pbGxpc2Vjb25kcy5cbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXRJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJldHJpZXMgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIHVudGlsIGl0IHJldHVybnMgYHRydWVgIG9yIHRoZSB0aW1lb3V0IGlzIHJlYWNoZWQgYW5kIGRpc3BsYXlzIGEgbm90aWNlIGlmIHRoZSBmdW5jdGlvbiB0aW1lcyBvdXQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZ1bmN0aW9uIHJldHVybnMgYHRydWVgIG9yIHJlamVjdHMgd2hlbiB0aGUgdGltZW91dCBpcyByZWFjaGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmV0cnlXaXRoVGltZW91dE5vdGljZShwYXJhbXM6IFJldHJ5V2l0aFRpbWVvdXROb3RpY2VQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIHJldHJ5V2l0aFRpbWVvdXQoe1xuICAgIC4uLnBhcmFtcyxcbiAgICBvblRpbWVvdXQ6IHJlc29sdmVPblRpbWVvdXQocGFyYW1zLnNob3VsZFNob3dUaW1lb3V0Tm90aWNlLCBwYXJhbXMucGx1Z2luTm90aWNlQ29tcG9uZW50LCBwYXJhbXMuY29udGVudClcbiAgfSk7XG59XG5cbi8qKlxuICogRXhlY3V0ZXMgYSBmdW5jdGlvbiB3aXRoIGEgdGltZW91dCBhbmQgZGlzcGxheXMgYSBub3RpY2UgaWYgdGhlIGZ1bmN0aW9uIHRpbWVzIG91dC5cbiAqXG4gKiBAdHlwZVBhcmFtIFJlc3VsdCAtIFRoZSB0eXBlIG9mIHRoZSByZXN1bHQgZnJvbSB0aGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uLlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bldpdGhUaW1lb3V0Tm90aWNlPFJlc3VsdD4ocGFyYW1zOiBSdW5XaXRoVGltZW91dE5vdGljZVBhcmFtczxSZXN1bHQ+KTogUHJvbWlzZTxSZXN1bHQ+IHtcbiAgcmV0dXJuIHJ1bldpdGhUaW1lb3V0KHtcbiAgICAuLi5wYXJhbXMsXG4gICAgb25UaW1lb3V0OiByZXNvbHZlT25UaW1lb3V0KHBhcmFtcy5zaG91bGRTaG93VGltZW91dE5vdGljZSwgcGFyYW1zLnBsdWdpbk5vdGljZUNvbXBvbmVudCwgcGFyYW1zLmNvbnRlbnQpXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBvblRpbWVvdXROb3RpY2UoY29udGV4dDogVGltZW91dENvbnRleHQsIHBsdWdpbk5vdGljZUNvbXBvbmVudDogUGx1Z2luTm90aWNlQ29tcG9uZW50LCBjb250ZW50PzogVmFsdWVQcm92aWRlcjxEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nPik6IHZvaWQge1xuICBpZiAoY29udGVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgc2hvd0N1c3RvbUNvbnRlbnROb3RpY2UoY29udGV4dCwgcGx1Z2luTm90aWNlQ29tcG9uZW50LCBjb250ZW50KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBzdGFydFRpbWUgPSBNYXRoLnRydW5jKHBlcmZvcm1hbmNlLm5vdygpIC0gY29udGV4dC5kdXJhdGlvbik7XG4gIGxldCBydW5uaW5nVGltZUVsOiBIVE1MU3BhbkVsZW1lbnQ7XG4gIGNvbnN0IFNFQ09ORF9JTl9NSUxMSVNFQ09ORFMgPSAxMDAwO1xuICBjb25zdCBjbGVhbnVwID0geyBpbnRlcnZhbElkOiAwIH07XG5cbiAgY29uc3Qgbm90aWNlID0gcGx1Z2luTm90aWNlQ29tcG9uZW50LnNob3dOb3RpY2UoY3JlYXRlRnJhZ21lbnQoKGYpID0+IHtcbiAgICBpZiAoY29udGV4dC5vcGVyYXRpb25OYW1lKSB7XG4gICAgICBmLmFwcGVuZFRleHQodCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmFzeW5jV2l0aE5vdGljZS5vcGVyYXRpb24pKTtcbiAgICAgIGYuYXBwZW5kVGV4dCgnOiAnKTtcbiAgICAgIGYuYXBwZW5kVGV4dChjb250ZXh0Lm9wZXJhdGlvbk5hbWUpO1xuICAgICAgZi5jcmVhdGVFbCgnYnInKTtcbiAgICB9XG4gICAgZi5hcHBlbmRUZXh0KHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5hc3luY1dpdGhOb3RpY2UudGltZWRPdXQsIHsgZHVyYXRpb246IGNvbnRleHQuZHVyYXRpb24gfSkpO1xuICAgIGYuY3JlYXRlRWwoJ2JyJyk7XG4gICAgZi5hcHBlbmRUZXh0KHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5hc3luY1dpdGhOb3RpY2UucnVubmluZ0ZvcikpO1xuICAgIGYuYXBwZW5kVGV4dCgnICcpO1xuICAgIHJ1bm5pbmdUaW1lRWwgPSBmLmNyZWF0ZVNwYW4oKTtcbiAgICBmLmFwcGVuZFRleHQoJyAnKTtcbiAgICBmLmFwcGVuZFRleHQodCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmFzeW5jV2l0aE5vdGljZS5taWxsaXNlY29uZHMpKTtcbiAgICBmLmNyZWF0ZUVsKCdicicpO1xuICAgIGYuYXBwZW5kVGV4dCh0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMuYXN5bmNXaXRoTm90aWNlLnRlcm1pbmF0ZU9wZXJhdGlvbikpO1xuICAgIGYuY3JlYXRlRWwoJ2JyJyk7XG4gICAgY29uc3QgYnV0dG9uID0gZi5jcmVhdGVFbCgnYnV0dG9uJywge1xuICAgICAgdGV4dDogdCgoJCkgPT4gJC5vYnNpZGlhbkRldlV0aWxzLmJ1dHRvbnMuY2FuY2VsKVxuICAgIH0pO1xuICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIGNvbnRleHQudGVybWluYXRlT3BlcmF0aW9uKCk7XG4gICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChjbGVhbnVwLmludGVydmFsSWQpO1xuICAgICAgbm90aWNlLmhpZGUoKTtcbiAgICB9KTtcbiAgfSkpO1xuXG4gIHVwZGF0ZVJ1bm5pbmdUaW1lKCk7XG4gIGNsZWFudXAuaW50ZXJ2YWxJZCA9IHdpbmRvdy5zZXRJbnRlcnZhbCh1cGRhdGVSdW5uaW5nVGltZSwgU0VDT05EX0lOX01JTExJU0VDT05EUyk7XG5cbiAgY29udGV4dC5vbk9wZXJhdGlvbkNvbXBsZXRlZCgoKSA9PiB7XG4gICAgd2luZG93LmNsZWFySW50ZXJ2YWwoY2xlYW51cC5pbnRlcnZhbElkKTtcbiAgICBub3RpY2UuaGlkZSgpO1xuICB9KTtcblxuICBmdW5jdGlvbiB1cGRhdGVSdW5uaW5nVGltZSgpOiB2b2lkIHtcbiAgICBjb25zdCBydW5uaW5nVGltZUluTWlsbGlzZWNvbmRzID0gTWF0aC5tYXgoY29udGV4dC5kdXJhdGlvbiwgTWF0aC5yb3VuZCgocGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydFRpbWUpIC8gU0VDT05EX0lOX01JTExJU0VDT05EUykgKiBTRUNPTkRfSU5fTUlMTElTRUNPTkRTKTtcbiAgICBydW5uaW5nVGltZUVsLnRleHRDb250ZW50ID0gU3RyaW5nKHJ1bm5pbmdUaW1lSW5NaWxsaXNlY29uZHMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG9uVGltZW91dFdpdGhvdXROb3RpY2UoY29udGV4dDogVGltZW91dENvbnRleHQpOiB2b2lkIHtcbiAgY29uc3Qgc3RhcnRUaW1lID0gTWF0aC50cnVuYyhwZXJmb3JtYW5jZS5ub3coKSAtIGNvbnRleHQuZHVyYXRpb24pO1xuXG4gIGNvbnRleHQub25PcGVyYXRpb25Db21wbGV0ZWQoKCkgPT4ge1xuICAgIGdldERlYnVnZ2VyKCdBc3luY1dpdGhOb3RpY2U6b25UaW1lb3V0V2l0aG91dE5vdGljZScpKCdPcGVyYXRpb24gY29tcGxldGVkIGFmdGVyIHRpbWVvdXQnLCB7XG4gICAgICBvcGVyYXRpb25OYW1lOiBjb250ZXh0Lm9wZXJhdGlvbk5hbWUsXG4gICAgICB0b3RhbER1cmF0aW9uOiBNYXRoLnRydW5jKHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRUaW1lKVxuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBTZWxlY3RzIHRoZSB0aW1lb3V0IGhhbmRsZXIgZm9yIHtAbGluayByZXRyeVdpdGhUaW1lb3V0Tm90aWNlfSAvIHtAbGluayBydW5XaXRoVGltZW91dE5vdGljZX0uIEEgbm90aWNlXG4gKiBpcyBzaG93biBvbmx5IHdoZW4gbm90aWNlcyBhcmUgZW5hYmxlZCBBTkQgYSByZWFsIHtAbGluayBQbHVnaW5Ob3RpY2VDb21wb25lbnR9IGlzIHN1cHBsaWVkOyBvdGhlcndpc2VcbiAqIHRoZSB0aW1lb3V0IGlzIHNpbGVudGx5IGxvZ2dlZC5cbiAqXG4gKiBAcGFyYW0gc2hvdWxkU2hvd1RpbWVvdXROb3RpY2UgLSBXaGV0aGVyIGEgdGltZW91dCBub3RpY2UgaXMgcmVxdWVzdGVkIChkZWZhdWx0cyB0byBgdHJ1ZWApLlxuICogQHBhcmFtIHBsdWdpbk5vdGljZUNvbXBvbmVudCAtIFRoZSBjb21wb25lbnQgdXNlZCB0byBzaG93IHRoZSBub3RpY2UsIGlmIGFueS5cbiAqIEBwYXJhbSBjb250ZW50IC0gT3B0aW9uYWwgY3VzdG9tIGNvbnRlbnQgZm9yIHRoZSBub3RpY2UuXG4gKiBAcmV0dXJucyBUaGUgdGltZW91dCBoYW5kbGVyIHRvIHBhc3MgdG8gdGhlIHVuZGVybHlpbmcgcmV0cnkvcnVuIGhlbHBlci5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZU9uVGltZW91dChcbiAgc2hvdWxkU2hvd1RpbWVvdXROb3RpY2U6IGJvb2xlYW4gfCB1bmRlZmluZWQsXG4gIHBsdWdpbk5vdGljZUNvbXBvbmVudDogbnVsbCB8IFBsdWdpbk5vdGljZUNvbXBvbmVudCxcbiAgY29udGVudD86IFZhbHVlUHJvdmlkZXI8RG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZz5cbik6IChjb250ZXh0OiBUaW1lb3V0Q29udGV4dCkgPT4gdm9pZCB7XG4gIHJldHVybiAhKHNob3VsZFNob3dUaW1lb3V0Tm90aWNlID8/IHRydWUpIHx8IHBsdWdpbk5vdGljZUNvbXBvbmVudCA9PT0gbnVsbFxuICAgID8gb25UaW1lb3V0V2l0aG91dE5vdGljZVxuICAgIDogKGNvbnRleHQpOiB2b2lkID0+IHtcbiAgICAgIG9uVGltZW91dE5vdGljZShjb250ZXh0LCBwbHVnaW5Ob3RpY2VDb21wb25lbnQsIGNvbnRlbnQpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIHNob3dDdXN0b21Db250ZW50Tm90aWNlKGNvbnRleHQ6IFRpbWVvdXRDb250ZXh0LCBwbHVnaW5Ob3RpY2VDb21wb25lbnQ6IFBsdWdpbk5vdGljZUNvbXBvbmVudCwgY29udGVudDogVmFsdWVQcm92aWRlcjxEb2N1bWVudEZyYWdtZW50IHwgc3RyaW5nPik6IHZvaWQge1xuICBsZXQgaXNPcGVyYXRpb25Db21wbGV0ZWQgPSBmYWxzZTtcbiAgbGV0IG5vdGljZTogTm90aWNlIHwgbnVsbCA9IG51bGw7XG5cbiAgY29udGV4dC5vbk9wZXJhdGlvbkNvbXBsZXRlZCgoKSA9PiB7XG4gICAgaXNPcGVyYXRpb25Db21wbGV0ZWQgPSB0cnVlO1xuICAgIG5vdGljZT8uaGlkZSgpO1xuICB9KTtcblxuICBpbnZva2VBc3luY1NhZmVseShhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzb2x2ZWRDb250ZW50ID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNvbnRlbnQsIHt9KTtcbiAgICAvLyBUaGUgb3BlcmF0aW9uIG1heSBoYXZlIGNvbXBsZXRlZCB3aGlsZSB0aGUgY29udGVudCB3YXMgcmVzb2x2aW5nOyBpZiBzbywgZG8gbm90IHNob3cgYSBzdGFsZSBub3RpY2UuXG4gICAgaWYgKGlzT3BlcmF0aW9uQ29tcGxldGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG5vdGljZSA9IHBsdWdpbk5vdGljZUNvbXBvbmVudC5zaG93Tm90aWNlKHJlc29sdmVkQ29udGVudCwgeyBpc1Blcm1hbmVudDogdHJ1ZSB9KTtcbiAgfSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7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
|
|
@@ -2,13 +2,7 @@
|
|
|
2
2
|
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
3
|
if you want to view the source, please visit the github repository of this plugin
|
|
4
4
|
*/
|
|
5
|
-
|
|
6
5
|
(function () {
|
|
7
|
-
function ensureDisposeSymbols(symbolConstructor = Symbol) {
|
|
8
|
-
symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
|
|
9
|
-
symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
|
|
10
|
-
}
|
|
11
|
-
|
|
12
6
|
function ensureBrowserProcess() {
|
|
13
7
|
const browserProcess = {
|
|
14
8
|
browser: true,
|
|
@@ -33,20 +27,7 @@ function ensureBrowserProcess() {
|
|
|
33
27
|
existingProcessRecord["browser"] = true;
|
|
34
28
|
}
|
|
35
29
|
|
|
36
|
-
|
|
37
|
-
return $unknown;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
(function initCjs() {
|
|
41
|
-
const globalThisRecord = globalThis;
|
|
42
|
-
ensureDisposeSymbols();
|
|
43
|
-
globalThisRecord["__name"] ??= keepName;
|
|
44
|
-
globalThisRecord["__extractDefault"] ??= extractDefault;
|
|
45
|
-
ensureBrowserProcess();
|
|
46
|
-
function extractDefault(module) {
|
|
47
|
-
return module && module.__esModule && "default" in module ? module.default : module;
|
|
48
|
-
}
|
|
49
|
-
})();
|
|
30
|
+
ensureBrowserProcess();
|
|
50
31
|
})();
|
|
51
32
|
(function patchObsidianRequire() {
|
|
52
33
|
const originalRequire = require;
|
|
@@ -144,11 +125,11 @@ __export(attachment_path_exports, {
|
|
|
144
125
|
isAtProperAttachmentPath: () => isAtProperAttachmentPath
|
|
145
126
|
});
|
|
146
127
|
module.exports = __toCommonJS(attachment_path_exports);
|
|
128
|
+
var import_api_contract = require('@mnaoumov/typescript-lib/api-contract');
|
|
147
129
|
var import_path = require('@mnaoumov/typescript-lib/path');
|
|
148
130
|
var import_string = require('@mnaoumov/typescript-lib/string');
|
|
149
131
|
var import_implementations = require('@obsidian-typings/obsidian-public-latest/implementations');
|
|
150
132
|
var import_file_system = require('./file-system.cjs');
|
|
151
|
-
var import_plugin_api_schema = require('./plugin/plugin-api-schema.cjs');
|
|
152
133
|
var import_plugin_api = require('./plugin/plugin-api.cjs');
|
|
153
134
|
var AttachmentPathContext = /* @__PURE__ */ ((AttachmentPathContext2) => {
|
|
154
135
|
AttachmentPathContext2["DeleteNote"] = "DeleteNote";
|
|
@@ -160,18 +141,18 @@ const CUSTOM_ATTACHMENT_LOCATION_PLUGIN_ID = "obsidian-custom-attachment-locatio
|
|
|
160
141
|
const CUSTOM_ATTACHMENT_LOCATION_ATTACHMENT_PATH_API_VERSION_RANGE = "^1.3.0";
|
|
161
142
|
const CUSTOM_ATTACHMENT_LOCATION_ATTACHMENT_PATH_API_CONTRACT = {
|
|
162
143
|
getAvailablePathForAttachments: {
|
|
163
|
-
input: (0,
|
|
144
|
+
input: (0, import_api_contract.createArgumentsSchema)([{
|
|
164
145
|
expected: "available-path-for-attachments params",
|
|
165
146
|
typeGuard: isGetAvailablePathForAttachmentsExtendedFunctionParams
|
|
166
147
|
}]),
|
|
167
|
-
output: (0,
|
|
148
|
+
output: (0, import_api_contract.createTypeGuardSchema)({ expected: "an attachment path", typeGuard: isString })
|
|
168
149
|
},
|
|
169
150
|
isAttachmentUnitFolder: {
|
|
170
|
-
input: (0,
|
|
151
|
+
input: (0, import_api_contract.createArgumentsSchema)([{
|
|
171
152
|
expected: "attachment-unit-folder params: { folderPath: string }",
|
|
172
153
|
typeGuard: isCustomAttachmentLocationIsAttachmentUnitFolderParams
|
|
173
154
|
}]),
|
|
174
|
-
output: (0,
|
|
155
|
+
output: (0, import_api_contract.createTypeGuardSchema)({ expected: "a boolean", typeGuard: isBoolean })
|
|
175
156
|
}
|
|
176
157
|
};
|
|
177
158
|
const DUMMY_PATH = "__DUMMY__";
|
|
@@ -432,4 +413,4 @@ function resolveAttachmentFolder(params) {
|
|
|
432
413
|
hasOwnAttachmentFolder,
|
|
433
414
|
isAtProperAttachmentPath
|
|
434
415
|
});
|
|
435
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2F0dGFjaG1lbnQtcGF0aC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggYXR0YWNobWVudCBwYXRocy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgRmlsZVN0YXRzLFxuICBURm9sZGVyXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHtcbiAgYmFzZW5hbWUsXG4gIGRpcm5hbWUsXG4gIGV4dG5hbWUsXG4gIGpvaW4sXG4gIG1ha2VGaWxlTmFtZVxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQge1xuICBub3JtYWxpemVTdHJpbmcsXG4gIHJlcGxhY2VBbGwsXG4gIHRyaW1TdGFydFxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvc3RyaW5nJztcbmltcG9ydCB7XG4gIGdldERhdGFBZGFwdGVyRXgsXG4gIHBhcmVudEZvbGRlclBhdGhcbn0gZnJvbSAnQG9ic2lkaWFuLXR5cGluZ3Mvb2JzaWRpYW4tcHVibGljLWxhdGVzdC9pbXBsZW1lbnRhdGlvbnMnO1xuXG5pbXBvcnQgdHlwZSB7IFBhdGhPckZpbGUgfSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB0eXBlIHsgUGx1Z2luQXBpQ29udHJhY3QgfSBmcm9tICcuL3BsdWdpbi9wbHVnaW4tYXBpLnRzJztcblxuaW1wb3J0IHtcbiAgZ2V0RmlsZSxcbiAgZ2V0RmlsZU9yTnVsbCxcbiAgZ2V0Rm9sZGVyLFxuICBnZXRGb2xkZXJPck51bGwsXG4gIGdldFBhdGgsXG4gIGlzUGF0aE9yRmlsZSxcbiAgTUFSS0RPV05fRklMRV9FWFRFTlNJT05cbn0gZnJvbSAnLi9maWxlLXN5c3RlbS50cyc7XG5pbXBvcnQge1xuICBjcmVhdGVBcmd1bWVudHNTY2hlbWEsXG4gIGNyZWF0ZVR5cGVHdWFyZFNjaGVtYVxufSBmcm9tICcuL3BsdWdpbi9wbHVnaW4tYXBpLXNjaGVtYS50cyc7XG5pbXBvcnQgeyBmaW5kUGx1Z2luQXBpIH0gZnJvbSAnLi9wbHVnaW4vcGx1Z2luLWFwaS50cyc7XG5cbi8qKlxuICogQSBjb250ZXh0IGZvciBhbiBhdHRhY2htZW50IHBhdGguXG4gKi9cbmV4cG9ydCBlbnVtIEF0dGFjaG1lbnRQYXRoQ29udGV4dCB7XG4gIC8qKlxuICAgKiBBIGNvbnRleHQgZm9yIGEgZGVsZXRlIG5vdGUuXG4gICAqL1xuICBEZWxldGVOb3RlID0gJ0RlbGV0ZU5vdGUnLFxuXG4gIC8qKlxuICAgKiBBIGNvbnRleHQgZm9yIGEgcmVuYW1lIG5vdGUuXG4gICAqL1xuICBSZW5hbWVOb3RlID0gJ1JlbmFtZU5vdGUnLFxuXG4gIC8qKlxuICAgKiBBbiB1bmtub3duIGNvbnRleHQuXG4gICAqL1xuICBVbmtub3duID0gJ1Vua25vd24nXG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGdldCBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMgZXh0ZW5kZWQgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzRXh0ZW5kZWRGdW5jdGlvblBhcmFtcyB7XG4gIC8qKlxuICAgKiBBIGJhc2UgbmFtZSBvZiB0aGUgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGF0dGFjaG1lbnRGaWxlQmFzZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQW4gZXh0ZW5zaW9uIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpbGVFeHRlbnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogQSBzdGF0cyBvZiB0aGUgYXR0YWNobWVudCBmaWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpbGVTdGF0cz86IEZpbGVTdGF0cyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQSBjb250ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dDogQXR0YWNobWVudFBhdGhDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBBIHBhdGggb3IgZmlsZSBvZiB0aGUgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGVQYXRoT3JGaWxlOiBudWxsIHwgUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogQSBwYXRoIG9yIGZpbGUgb2YgdGhlIG9sZCBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgb2xkQXR0YWNobWVudFBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCBvciBmaWxlIG9mIHRoZSBvbGQgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IG9sZE5vdGVQYXRoT3JGaWxlPzogUGF0aE9yRmlsZSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogTGF6aWx5IHJlYWRzIHRoZSBjb250ZW50IG9mIHRoZSBhdHRhY2htZW50IGZpbGUuXG4gICAqXG4gICAqIFRoZSBjb250ZW50IGlzIHJlYWQgb24gZGVtYW5kIG9ubHkgd2hlbiBhIGNvbnN1bWVyIGFjdHVhbGx5IG5lZWRzIHRoZSBieXRlcyAoZS5nLiBhIHRlbXBsYXRlXG4gICAqIHRva2VuIHRoYXQgZW1iZWRzIHRoZW0pLiBGb3IgdGhlIGRlZmF1bHQgdGVtcGxhdGVzIG5vdGhpbmcgcHVsbHMgdGhlIGJ5dGVzLCBzbyB0aGUgcG90ZW50aWFsbHlcbiAgICogZXhwZW5zaXZlIChzaXplLXByb3BvcnRpb25hbCkgYHJlYWRCaW5hcnlgIG5ldmVyIHJ1bnMuIENvbnN1bWVycyB0aGF0IG1heSBjYWxsIHRoaXMgbW9yZSB0aGFuXG4gICAqIG9uY2Ugc2hvdWxkIG1lbW9pemUgdGhlIGZpcnN0IGNhbGwuIGBudWxsYCB3aGVuIHRoZXJlIGlzIG5vIGF0dGFjaG1lbnQgZmlsZSB0byByZWFkLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBjb250ZW50IG9mIHRoZSBhdHRhY2htZW50IGZpbGUuXG4gICAqL1xuICByZWFkb25seSByZWFkQXR0YWNobWVudEZpbGVDb250ZW50OiAoKCkgPT4gUHJvbWlzZTxBcnJheUJ1ZmZlcj4pIHwgbnVsbDtcblxuICAvKipcbiAgICogU2hvdWxkIHRoZSBkdXBsaWNhdGUgY2hlY2sgYmUgc2tpcHBlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNraXBEdXBsaWNhdGVDaGVjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNob3VsZCB0aGUgZ2VuZXJhdGVkIGF0dGFjaG1lbnQgZmlsZSBuYW1lIGJlIHNraXBwZWQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTa2lwR2VuZXJhdGVkQXR0YWNobWVudEZpbGVOYW1lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2hvdWxkIG1pc3NpbmcgYXR0YWNobWVudCBmb2xkZXIgY3JlYXRpb24gYmUgc2tpcHBlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNraXBNaXNzaW5nQXR0YWNobWVudEZvbGRlckNyZWF0aW9uOiBib29sZWFuIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFRoZSBzbGljZSBvZiBgQ3VzdG9tIEF0dGFjaG1lbnQgTG9jYXRpb25gJ3MgcmVnaXN0cnkgQVBJIHRoaXMgbW9kdWxlIGNhbGxzLCBkZWNsYXJlZCBoZXJlIHJhdGhlciB0aGFuIGltcG9ydGVkOlxuICogdGhhdCBwbHVnaW4gc2hpcHMgaXRzIHN1cmZhY2UgYXMgYSBoYW5kLXdyaXR0ZW4gYGFwaS5kLnRzYCwgbm90IGFzIGEgcGFja2FnZSAoc2VlIHJ1bGUgTDkgaW4gYEFHRU5UUy5tZGApLlxuICovXG5pbnRlcmZhY2UgQ3VzdG9tQXR0YWNobWVudExvY2F0aW9uQXR0YWNobWVudFBhdGhBcGkge1xuICAvKipcbiAgICogVGhlIHBsdWdpbidzIGZ1bGwgYXR0YWNobWVudC1wYXRoIHJlc29sdmVyLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHNhbWUgZmllbGRzIGFzIHtAbGluayBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNFeHRlbmRlZEZ1bmN0aW9uUGFyYW1zfSwgd2hpY2ggdGhlXG4gICAqICAgcGx1Z2luIGRlY2xhcmVzIGZpZWxkIGZvciBmaWVsZC5cbiAgICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgYXR0YWNobWVudCdzIHBhdGggZnJvbSB0aGUgdmF1bHQgcm9vdC5cbiAgICovXG4gIGdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50czogKHBhcmFtczogR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzRXh0ZW5kZWRGdW5jdGlvblBhcmFtcykgPT4gUHJvbWlzZTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSB1c2VyIGRlc2lnbmF0ZWQgYSBmb2xkZXIgYW4gYXR0YWNobWVudCB1bml0IGZvbGRlci4gU3luY2hyb25vdXMgb24gcHVycG9zZS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBmb2xkZXIuXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGZvbGRlciBpcyBkZXNpZ25hdGVkLlxuICAgKi9cbiAgaXNBdHRhY2htZW50VW5pdEZvbGRlcjogKHBhcmFtczogQ3VzdG9tQXR0YWNobWVudExvY2F0aW9uSXNBdHRhY2htZW50VW5pdEZvbGRlclBhcmFtcykgPT4gYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgQ3VzdG9tQXR0YWNobWVudExvY2F0aW9uQXR0YWNobWVudFBhdGhBcGkuaXNBdHRhY2htZW50VW5pdEZvbGRlcn0uXG4gKi9cbmludGVyZmFjZSBDdXN0b21BdHRhY2htZW50TG9jYXRpb25Jc0F0dGFjaG1lbnRVbml0Rm9sZGVyUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBmb2xkZXIsIGFzIGEgdmF1bHQtcmVsYXRpdmUgcGF0aC5cbiAgICovXG4gIHJlYWRvbmx5IGZvbGRlclBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgcGx1Z2luIGlkIGBDdXN0b20gQXR0YWNobWVudCBMb2NhdGlvbmAgcHVibGlzaGVzIGl0cyBBUEkgdW5kZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBDVVNUT01fQVRUQUNITUVOVF9MT0NBVElPTl9QTFVHSU5fSUQgPSAnb2JzaWRpYW4tY3VzdG9tLWF0dGFjaG1lbnQtbG9jYXRpb24nO1xuXG4vKipcbiAqIFRoZSBjb250cmFjdCB2ZXJzaW9ucyBvZiBgQ3VzdG9tIEF0dGFjaG1lbnQgTG9jYXRpb25gJ3MgQVBJIHRoaXMgbW9kdWxlIGNvbXBpbGVkIGFnYWluc3QuIGAxLjMuMGAgaXMgdGhlIGZpcnN0XG4gKiB0byBjYXJyeSB0aGUgdHdvIGF0dGFjaG1lbnQtcGF0aCBtZXRob2RzLlxuICovXG5jb25zdCBDVVNUT01fQVRUQUNITUVOVF9MT0NBVElPTl9BVFRBQ0hNRU5UX1BBVEhfQVBJX1ZFUlNJT05fUkFOR0UgPSAnXjEuMy4wJztcblxuLyoqXG4gKiBUaGUgY29udHJhY3Qgb2YgdGhlIG1lbWJlcnMgb2YgYEN1c3RvbSBBdHRhY2htZW50IExvY2F0aW9uYCdzIEFQSSB0aGlzIG1vZHVsZSBjYWxscywgc28gYSByZWNvcmQgdGhhdCBsYWNrc1xuICogZWl0aGVyIGlzIHBhc3NlZCBvdmVyLCBhbmQgYSBwYXlsb2FkIHRoYXQgYnJlYWtzIGl0cyBzaWduYXR1cmUgaXMgcmVwb3J0ZWQgd2hpbGUgdGhlIGBQbHVnaW5BcGlgIGRlYnVnZ2VyIGlzIG9uLlxuICpcbiAqIEEgY29weSBvZiB0aG9zZSB0d28gZW50cmllcyBvZiBgQ1VTVE9NX0FUVEFDSE1FTlRfTE9DQVRJT05fQVBJX0NPTlRSQUNUYCwgd2hpY2ggYEN1c3RvbSBBdHRhY2htZW50IExvY2F0aW9uYCBzaGlwcyBhcyBpdHMgcm9vdCBgYXBpLWNvbnRyYWN0LnRzYFxuICogYW5kIHB1Ymxpc2hlcy4gS2VlcCB0aGUgZ3VhcmRzIGluIGFncmVlbWVudCB3aXRoIHRoYXQgZmlsZSwgc28gdGhlIHByb3ZpZGVyIGFuZCB0aGlzIGNvbnN1bWVyIGNoZWNrIG9uZSBkZWZpbml0aW9uLlxuICovXG5jb25zdCBDVVNUT01fQVRUQUNITUVOVF9MT0NBVElPTl9BVFRBQ0hNRU5UX1BBVEhfQVBJX0NPTlRSQUNUOiBQbHVnaW5BcGlDb250cmFjdDxDdXN0b21BdHRhY2htZW50TG9jYXRpb25BdHRhY2htZW50UGF0aEFwaT4gPSB7XG4gIGdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50czoge1xuICAgIGlucHV0OiBjcmVhdGVBcmd1bWVudHNTY2hlbWE8W3BhcmFtczogR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzRXh0ZW5kZWRGdW5jdGlvblBhcmFtc10+KFt7XG4gICAgICBleHBlY3RlZDogJ2F2YWlsYWJsZS1wYXRoLWZvci1hdHRhY2htZW50cyBwYXJhbXMnLFxuICAgICAgdHlwZUd1YXJkOiBpc0dldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c0V4dGVuZGVkRnVuY3Rpb25QYXJhbXNcbiAgICB9XSksXG4gICAgb3V0cHV0OiBjcmVhdGVUeXBlR3VhcmRTY2hlbWEoeyBleHBlY3RlZDogJ2FuIGF0dGFjaG1lbnQgcGF0aCcsIHR5cGVHdWFyZDogaXNTdHJpbmcgfSlcbiAgfSxcbiAgaXNBdHRhY2htZW50VW5pdEZvbGRlcjoge1xuICAgIGlucHV0OiBjcmVhdGVBcmd1bWVudHNTY2hlbWE8W3BhcmFtczogQ3VzdG9tQXR0YWNobWVudExvY2F0aW9uSXNBdHRhY2htZW50VW5pdEZvbGRlclBhcmFtc10+KFt7XG4gICAgICBleHBlY3RlZDogJ2F0dGFjaG1lbnQtdW5pdC1mb2xkZXIgcGFyYW1zOiB7IGZvbGRlclBhdGg6IHN0cmluZyB9JyxcbiAgICAgIHR5cGVHdWFyZDogaXNDdXN0b21BdHRhY2htZW50TG9jYXRpb25Jc0F0dGFjaG1lbnRVbml0Rm9sZGVyUGFyYW1zXG4gICAgfV0pLFxuICAgIG91dHB1dDogY3JlYXRlVHlwZUd1YXJkU2NoZW1hKHsgZXhwZWN0ZWQ6ICdhIGJvb2xlYW4nLCB0eXBlR3VhcmQ6IGlzQm9vbGVhbiB9KVxuICB9XG59O1xuXG4vKipcbiAqIER1bW15IHBhdGguXG4gKi9cbmV4cG9ydCBjb25zdCBEVU1NWV9QQVRIID0gJ19fRFVNTVlfXyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGdldEF0dGFjaG1lbnRGaWxlUGF0aCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRBdHRhY2htZW50RmlsZVBhdGhQYXJhbXMge1xuICAvKipcbiAgICogQW4gT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogQSBjb250ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dDogQXR0YWNobWVudFBhdGhDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBBIHBhdGggb2YgdGhlIG5vdGUuXG4gICAqL1xuICByZWFkb25seSBub3RlUGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogQSBwYXRoIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgb2xkQXR0YWNobWVudFBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCBvZiB0aGUgb2xkIG5vdGUuXG4gICAqL1xuICByZWFkb25seSBvbGROb3RlUGF0aE9yRmlsZT86IFBhdGhPckZpbGUgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFNob3VsZCB0aGUgZHVwbGljYXRlIGNoZWNrIGJlIHNraXBwZWQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2s6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGdldEF0dGFjaG1lbnRGb2xkZXJQYXRofS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRBdHRhY2htZW50Rm9sZGVyUGF0aFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIGNvbnRleHQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtAbGluayBBdHRhY2htZW50UGF0aENvbnRleHQuVW5rbm93bn1cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ/OiBBdHRhY2htZW50UGF0aENvbnRleHQ7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9mIHRoZSBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90ZVBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoU3luY09yTnVsbH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0QXR0YWNobWVudEZvbGRlclBhdGhTeW5jT3JOdWxsUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvZiB0aGUgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGVQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHRoZSBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHMgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzUGFyYW1zIHtcbiAgLyoqXG4gICAqIEFuIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIC8qKlxuICAgKiBBIGJhc2UgbmFtZSBvZiB0aGUgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGF0dGFjaG1lbnRGaWxlQmFzZU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIEFuIGV4dGVuc2lvbiBvZiB0aGUgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIGZpbGUgdG8gYXR0YWNoIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90ZVBhdGhPckZpbGU6IG51bGwgfCBQYXRoT3JGaWxlO1xuICAvKipcbiAgICogU2hvdWxkIHRoZSBkdXBsaWNhdGUgY2hlY2sgYmUgc2tpcHBlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNob3VsZCBtaXNzaW5nIGF0dGFjaG1lbnQgZm9sZGVyIGNyZWF0aW9uIGJlIHNraXBwZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNraXBNaXNzaW5nQXR0YWNobWVudEZvbGRlckNyZWF0aW9uPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgaGFzT3duQXR0YWNobWVudEZvbGRlcn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGFzT3duQXR0YWNobWVudEZvbGRlclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIGNvbnRleHQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtAbGluayBBdHRhY2htZW50UGF0aENvbnRleHQuVW5rbm93bn1cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRleHQ/OiBBdHRhY2htZW50UGF0aENvbnRleHQ7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9mIHRoZSBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBpc0F0UHJvcGVyQXR0YWNobWVudFBhdGh9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElzQXRQcm9wZXJBdHRhY2htZW50UGF0aFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgZmlsZSBvZiB0aGUgYXR0YWNobWVudCB0byBjaGVjay5cbiAgICovXG4gIHJlYWRvbmx5IGF0dGFjaG1lbnRQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGV4dC5cbiAgICpcbiAgICogQGRlZmF1bHQge0BsaW5rIEF0dGFjaG1lbnRQYXRoQ29udGV4dC5Vbmtub3dufVxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dD86IEF0dGFjaG1lbnRQYXRoQ29udGV4dDtcblxuICAvKipcbiAgICogVGhlIHBhdGggb3IgZmlsZSBvZiB0aGUgbm90ZSB0aGF0IHJlZmVyZW5jZXMgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBub3RlUGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0QXR0YWNobWVudEZpbGVQYXRoU3luY30uXG4gKi9cbmludGVyZmFjZSBHZXRBdHRhY2htZW50RmlsZVBhdGhTeW5jUGFyYW1zIHtcbiAgLyoqXG4gICAqIEFuIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCBvZiB0aGUgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGVQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBBIHBhdGggb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBvbGRBdHRhY2htZW50UGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogU2hvdWxkIHRoZSBkdXBsaWNhdGUgY2hlY2sgYmUgc2tpcHBlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNraXBEdXBsaWNhdGVDaGVjazogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzU3luY30uXG4gKi9cbmludGVyZmFjZSBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNTeW5jUGFyYW1zIHtcbiAgLyoqXG4gICAqIEFuIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIEEgYmFzZSBuYW1lIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpbGVCYXNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbiBleHRlbnNpb24gb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50RmlsZUV4dGVuc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGZpbGUgdG8gYXR0YWNoIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90ZVBhdGhPckZpbGU6IG51bGwgfCBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgdGhlIGR1cGxpY2F0ZSBjaGVjayBiZSBza2lwcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcmVzb2x2ZUF0dGFjaG1lbnRGb2xkZXJ9LlxuICovXG5pbnRlcmZhY2UgUmVzb2x2ZUF0dGFjaG1lbnRGb2xkZXJQYXJhbXMge1xuICAvKipcbiAgICogQW4gT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogQSBmaWxlIHRvIGF0dGFjaCB0by5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGVQYXRoT3JGaWxlOiBudWxsIHwgUGF0aE9yRmlsZTtcbn1cblxuLyoqXG4gKiBUaGUgYXR0YWNobWVudCBmb2xkZXIgYSBub3RlIHJlc29sdmVzIHRvLCBiZWZvcmUgdGhlIGF0dGFjaG1lbnQgZmlsZSBuYW1lIGlzIGFwcGVuZGVkLlxuICovXG5pbnRlcmZhY2UgUmVzb2x2ZUF0dGFjaG1lbnRGb2xkZXJSZXN1bHQge1xuICAvKipcbiAgICogVGhlIGF0dGFjaG1lbnQgZm9sZGVyLCBvciBgbnVsbGAgd2hlbiBpdCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgdmF1bHQgeWV0LlxuICAgKi9cbiAgcmVhZG9ubHkgZm9sZGVyOiBudWxsIHwgVEZvbGRlcjtcblxuICAvKipcbiAgICogVGhlIG5vcm1hbGl6ZWQgYXR0YWNobWVudCBmb2xkZXIgcGF0aCwgd2hldGhlciBvciBub3QgdGhlIGZvbGRlciBleGlzdHMuXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXJ0IG9mIHRoZSBgYXR0YWNobWVudEZvbGRlclBhdGhgIHNldHRpbmcgdGhhdCBmb2xsb3dzIGAuL2AsIG9yIGBudWxsYCB3aGVuIHRoZSBzZXR0aW5nIGlzIG5vdFxuICAgKiByZWxhdGl2ZSB0byB0aGUgbm90ZS4gT25seSBhIHJlbGF0aXZlIHNldHRpbmcgbWF5IGhhdmUgaXRzIG1pc3NpbmcgZm9sZGVyIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSByZWxhdGl2ZVBhdGg6IG51bGwgfCBzdHJpbmc7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBmaWxlIHBhdGggZm9yIGFuIGF0dGFjaG1lbnQgd2l0aGluIGEgbm90ZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIGdldCBhdHRhY2htZW50IGZpbGUgcGF0aCBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGZpbGUgcGF0aCBvZiB0aGUgYXR0YWNobWVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEF0dGFjaG1lbnRGaWxlUGF0aChwYXJhbXM6IEdldEF0dGFjaG1lbnRGaWxlUGF0aFBhcmFtcyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgbm90ZVBhdGhPckZpbGUsXG4gICAgb2xkQXR0YWNobWVudFBhdGhPckZpbGUsXG4gICAgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrXG4gIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgY3VzdG9tQXR0YWNobWVudExvY2F0aW9uQXBpID0gZmluZEN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkFwaSgpO1xuICBpZiAoIWN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkFwaSkge1xuICAgIC8vIE5vYm9keSBvdmVycmlkZXMgdGhlIHJlc29sdXRpb24sIHNvIGl0IGlzIGVudGlyZWx5IHN5bmNocm9ub3VzLlxuICAgIC8vIFRoZSBzYW1lIGNvcmUgYW5zd2VycyBgZ2V0QXR0YWNobWVudEZvbGRlclBhdGhTeW5jT3JOdWxsYCwgd2hpY2ggaXMgd2hhdCBrZWVwcyB0aGUgdHdvIGluIHN0ZXAuXG4gICAgcmV0dXJuIGdldEF0dGFjaG1lbnRGaWxlUGF0aFN5bmMoe1xuICAgICAgYXBwLFxuICAgICAgbm90ZVBhdGhPckZpbGUsXG4gICAgICBvbGRBdHRhY2htZW50UGF0aE9yRmlsZSxcbiAgICAgIHNob3VsZFNraXBEdXBsaWNhdGVDaGVja1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgYXR0YWNobWVudFBhdGggPSBnZXRQYXRoKGFwcCwgb2xkQXR0YWNobWVudFBhdGhPckZpbGUpO1xuICBjb25zdCBhdHRhY2htZW50RmlsZUV4dGVuc2lvbiA9IGV4dG5hbWUoYXR0YWNobWVudFBhdGgpO1xuICBjb25zdCBhdHRhY2htZW50RmlsZUJhc2VOYW1lID0gYmFzZW5hbWUoYXR0YWNobWVudFBhdGgsIGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uKTtcbiAgY29uc3QgYXR0YWNobWVudEZpbGUgPSBnZXRGaWxlT3JOdWxsKHsgYXBwLCBwYXRoT3JGaWxlOiBhdHRhY2htZW50UGF0aCB9KTtcblxuICByZXR1cm4gYXdhaXQgY3VzdG9tQXR0YWNobWVudExvY2F0aW9uQXBpLmdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50cyh7XG4gICAgYXR0YWNobWVudEZpbGVCYXNlTmFtZSxcbiAgICBhdHRhY2htZW50RmlsZUV4dGVuc2lvbjogYXR0YWNobWVudEZpbGVFeHRlbnNpb24uc2xpY2UoMSksXG4gICAgYXR0YWNobWVudEZpbGVTdGF0czogYXR0YWNobWVudEZpbGU/LnN0YXQsXG4gICAgY29udGV4dDogcGFyYW1zLmNvbnRleHQsXG4gICAgbm90ZVBhdGhPckZpbGUsXG4gICAgb2xkQXR0YWNobWVudFBhdGhPckZpbGUsXG4gICAgb2xkTm90ZVBhdGhPckZpbGU6IHBhcmFtcy5vbGROb3RlUGF0aE9yRmlsZSxcbiAgICByZWFkQXR0YWNobWVudEZpbGVDb250ZW50OiBhdHRhY2htZW50RmlsZSA/ICgpOiBQcm9taXNlPEFycmF5QnVmZmVyPiA9PiBhcHAudmF1bHQucmVhZEJpbmFyeShhdHRhY2htZW50RmlsZSkgOiBudWxsLFxuICAgIHNob3VsZFNraXBEdXBsaWNhdGVDaGVjayxcbiAgICBzaG91bGRTa2lwTWlzc2luZ0F0dGFjaG1lbnRGb2xkZXJDcmVhdGlvbjogdHJ1ZVxuICB9KTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGF0dGFjaG1lbnQgZm9sZGVyIHBhdGggZm9yIGEgZ2l2ZW4gbm90ZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIGdldCBhdHRhY2htZW50IGZvbGRlciBwYXRoIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgYXR0YWNobWVudCBmb2xkZXIgcGF0aC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoKHBhcmFtczogR2V0QXR0YWNobWVudEZvbGRlclBhdGhQYXJhbXMpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIGNvbnRleHQgPSBBdHRhY2htZW50UGF0aENvbnRleHQuVW5rbm93bixcbiAgICBub3RlUGF0aE9yRmlsZVxuICB9ID0gcGFyYW1zO1xuICByZXR1cm4gcGFyZW50Rm9sZGVyUGF0aChcbiAgICBhd2FpdCBnZXRBdHRhY2htZW50RmlsZVBhdGgoe1xuICAgICAgYXBwLFxuICAgICAgY29udGV4dCxcbiAgICAgIG5vdGVQYXRoT3JGaWxlLFxuICAgICAgb2xkQXR0YWNobWVudFBhdGhPckZpbGU6IERVTU1ZX1BBVEgsXG4gICAgICBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2s6IHRydWVcbiAgICB9KVxuICApO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgYXR0YWNobWVudCBmb2xkZXIgcGF0aCBmb3IgYSBnaXZlbiBub3RlICoqc3luY2hyb25vdXNseSoqLCB3aGVuIHRoYXQgaXMgcG9zc2libGUgYXQgYWxsLlxuICpcbiAqIE9ic2lkaWFuIGJ1aWxkcyBpdHMgZmlsZS9mb2xkZXIgY29udGV4dCBtZW51cyBhbmQgZXZhbHVhdGVzIGEgY29tbWFuZCdzIGBjaGVja0NhbGxiYWNrYCBzeW5jaHJvbm91c2x5LCBzbyBhXG4gKiBjYWxsZXIgZGVjaWRpbmcgd2hldGhlciB0byBtZXJlbHkgKm9mZmVyKiBhIGNvbW1hbmQgY2Fubm90IGF3YWl0IHtAbGluayBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aH0uIFRoaXMgaXNcbiAqIHRoZSBzeW5jaHJvbm91cyB0d2luIHN1Y2ggYSBjYWxsZXIgY2FuIHVzZSBpbnN0ZWFkLlxuICpcbiAqIFRoZSBhbnN3ZXIgaXMgYG51bGxgIHdoZW4gaXQgaXMgbm90IGtub3dhYmxlIHN5bmNocm9ub3VzbHkgXHUyMDE0IHRoYXQgaXMsIHdoZW4gYEN1c3RvbSBBdHRhY2htZW50IExvY2F0aW9uYCBwdWJsaXNoZXNcbiAqIGl0cyBhdHRhY2htZW50LXBhdGggQVBJIGFuZCB0aGVyZWZvcmUgb3ducyB0aGUgcmVzb2x1dGlvbiwgd2hpY2ggaXMgZ2VudWluZWx5IGFzeW5jaHJvbm91cy4gYG51bGxgIG1lYW5zIFwiYXNrIHtAbGluayBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aH1cIiwgbmV2ZXIgXCJ0aGVyZSBpcyBubyBhdHRhY2htZW50XG4gKiBmb2xkZXJcIi4gT3RoZXJ3aXNlIHRoZSBhbnN3ZXIgaXMgZXhhY3QgcmF0aGVyIHRoYW4gYSBndWVzczogaXQgaXMgcHJvZHVjZWQgYnkgdGhlIHZlcnkgc2FtZSBjb2RlXG4gKiB7QGxpbmsgZ2V0QXR0YWNobWVudEZvbGRlclBhdGh9IHJ1bnMsIHdob3NlIG9ubHkgYXN5bmNocm9ub3VzIHN0ZXAgXHUyMDE0IGNyZWF0aW5nIGEgbWlzc2luZyBhdHRhY2htZW50IGZvbGRlciBcdTIwMTRcbiAqIGlzIHVucmVhY2hhYmxlIG9uIHRoaXMgcGF0aC5cbiAqXG4gKiBUaGVyZSBpcyBkZWxpYmVyYXRlbHkgbm8gYGNvbnRleHRgIHBhcmFtZXRlcjoge0BsaW5rIEF0dGFjaG1lbnRQYXRoQ29udGV4dH0gb25seSBldmVyIHJlYWNoZXMgdGhhdCBwbHVnaW4nc1xuICogcmVzb2x2ZXIsIGFuZCB0aGlzIGZ1bmN0aW9uIGFuc3dlcnMgYG51bGxgIHdoZW5ldmVyIGl0IGlzIHB1Ymxpc2hlZC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIGdldCBhdHRhY2htZW50IGZvbGRlciBwYXRoIHN5bmMgb3IgbnVsbCBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBhdHRhY2htZW50IGZvbGRlciBwYXRoLCBvciBgbnVsbGAgd2hlbiBpdCBjYW4gb25seSBiZSByZXNvbHZlZCBhc3luY2hyb25vdXNseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoU3luY09yTnVsbChwYXJhbXM6IEdldEF0dGFjaG1lbnRGb2xkZXJQYXRoU3luY09yTnVsbFBhcmFtcyk6IG51bGwgfCBzdHJpbmcge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIG5vdGVQYXRoT3JGaWxlXG4gIH0gPSBwYXJhbXM7XG5cbiAgcmV0dXJuIGZpbmRDdXN0b21BdHRhY2htZW50TG9jYXRpb25BcGkoKVxuICAgID8gbnVsbFxuICAgIDogcGFyZW50Rm9sZGVyUGF0aChnZXRBdHRhY2htZW50RmlsZVBhdGhTeW5jKHtcbiAgICAgIGFwcCxcbiAgICAgIG5vdGVQYXRoT3JGaWxlLFxuICAgICAgb2xkQXR0YWNobWVudFBhdGhPckZpbGU6IERVTU1ZX1BBVEgsXG4gICAgICBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2s6IHRydWVcbiAgICB9KSk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFBhcmFtZXRlcnMgZm9yIHRoZSBnZXQgYXZhaWxhYmxlIHBhdGggZm9yIGF0dGFjaG1lbnRzIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgYXZhaWxhYmxlIHBhdGggZm9yIGF0dGFjaG1lbnRzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzKHBhcmFtczogR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzUGFyYW1zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBub3RlUGF0aE9yRmlsZSxcbiAgICBzaG91bGRTa2lwTWlzc2luZ0F0dGFjaG1lbnRGb2xkZXJDcmVhdGlvblxuICB9ID0gcGFyYW1zO1xuXG4gIC8vIE1hdGVyaWFsaXppbmcgYSBtaXNzaW5nIGF0dGFjaG1lbnQgZm9sZGVyIGlzIHRoZSBPTkUgZ2VudWluZWx5IGFzeW5jaHJvbm91cyBzdGVwIGluIHRoaXMgZnVuY3Rpb24uXG4gIC8vIEV2ZXJ5dGhpbmcgZWxzZSBsaXZlcyBpbiB0aGUgc3luY2hyb25vdXMgY29yZSwgd2hpY2ggdGhlIHN5bmNocm9ub3VzIGVudHJ5IHBvaW50cyByZXVzZSB2ZXJiYXRpbS5cbiAgY29uc3QgYXR0YWNobWVudEZvbGRlciA9IHJlc29sdmVBdHRhY2htZW50Rm9sZGVyKHsgYXBwLCBub3RlUGF0aE9yRmlsZSB9KTtcbiAgaWYgKCFhdHRhY2htZW50Rm9sZGVyLmZvbGRlciAmJiBhdHRhY2htZW50Rm9sZGVyLnJlbGF0aXZlUGF0aCAmJiAhc2hvdWxkU2tpcE1pc3NpbmdBdHRhY2htZW50Rm9sZGVyQ3JlYXRpb24pIHtcbiAgICBhd2FpdCBhcHAudmF1bHQuY3JlYXRlRm9sZGVyKGF0dGFjaG1lbnRGb2xkZXIucGF0aCk7XG4gIH1cblxuICByZXR1cm4gZ2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzU3luYyhwYXJhbXMpO1xufVxuXG4vKipcbiAqIFJlYWRzIHRoZSBhdHRhY2htZW50LXVuaXQtZm9sZGVyIGRlc2lnbmF0aW9uIGBDdXN0b20gQXR0YWNobWVudCBMb2NhdGlvbmAgcHVibGlzaGVzIHRocm91Z2ggaXRzIHBsdWdpbiBBUEkuXG4gKlxuICogVGhlIGRlc2lnbmF0aW9uIGlzIG9uZSBwbHVnaW4ncyBzZXR0aW5nIGJ1dCBldmVyeSByZWxvY2F0aW5nIHBsdWdpbidzIGJ1c2luZXNzLCBzbyBpdCBpcyByZWFkIGZyb20gdGhlIHNhbWVcbiAqIEFQSSB0aGF0IGFuc3dlcnMgdGhlIGF0dGFjaG1lbnQgcGF0aCBpdHNlbGYuIFJlYWRpbmcgaXQgaGVyZSByYXRoZXIgdGhhbiBoYXZpbmcgZWFjaCBjYWxsZXIgbG9vayBmb3IgdGhlXG4gKiBwbHVnaW4gaXMgdGhlIHBvaW50IFx1MjAxNCBhIGZvbGRlciBrZXB0IHdob2xlIGJ5IG9uZSBwbHVnaW4gYW5kIHRvcm4gYXBhcnQgYnkgYW5vdGhlciBpcyBleGFjdGx5IHRoZSBmYWlsdXJlXG4gKiBgZmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aGAgZXhpc3RzIHRvIHByZXZlbnQuXG4gKlxuICogYHVuZGVmaW5lZGAgbWVhbnMgbm9ib2R5IHB1Ymxpc2hlZCBhIGRlc2lnbmF0aW9uLCB0aGUgc2FtZSBcIm5vYm9keSBvd25zIHRoaXMgcG9saWN5XCIgYW5zd2VyIHRoYXQgc2VuZHNcbiAqIHtAbGluayBnZXRBdHRhY2htZW50RmlsZVBhdGh9IHRvIE9ic2lkaWFuJ3Mgb3duIHJlc29sdXRpb24uIEl0IGlzIGRpc3RpbmN0IGZyb20gYSBkZXNpZ25hdGlvbiB0aGF0IGFuc3dlcnNcbiAqIGBmYWxzZWAgZm9yIGV2ZXJ5IGZvbGRlci5cbiAqXG4gKiBUaGUgcmVnaXN0cnkgaXMgbG9va2VkIHVwIG9uY2UsIHdoZW4gdGhpcyBpcyBjYWxsZWQsIHNvIGEgY2FsbGVyIHdhbGtpbmcgYSBmb2xkZXIncyBhbmNlc3RvcnMgYXNrcyB0aGUgc2FtZVxuICogQVBJIGFsbCB0aGUgd2F5IHVwLlxuICpcbiAqIEBwYXJhbSBfYXBwIC0gQW4gT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuIFVudXNlZCBzaW5jZSB0aGUgYW5zd2VyIGNvbWVzIGZyb20gdGhlIHBsdWdpbiBBUEkgcmVnaXN0cnk7XG4gKiAgIGtlcHQgc28gZXhpc3RpbmcgY2FsbGVycyBjb21waWxlIHVuY2hhbmdlZC5cbiAqIEByZXR1cm5zIFRoZSBkZXNpZ25hdGlvbiBwcmVkaWNhdGUsIG9yIGB1bmRlZmluZWRgIHdoZW4gbm9ib2R5IHB1Ymxpc2hlZCBvbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGVja0lzQXR0YWNobWVudFVuaXRGb2xkZXJGdW5jdGlvbihfYXBwOiBBcHApOiAoKGZvbGRlclBhdGg6IHN0cmluZykgPT4gYm9vbGVhbikgfCB1bmRlZmluZWQge1xuICBjb25zdCBjdXN0b21BdHRhY2htZW50TG9jYXRpb25BcGkgPSBmaW5kQ3VzdG9tQXR0YWNobWVudExvY2F0aW9uQXBpKCk7XG4gIHJldHVybiBjdXN0b21BdHRhY2htZW50TG9jYXRpb25BcGlcbiAgICA/IChmb2xkZXJQYXRoOiBzdHJpbmcpOiBib29sZWFuID0+IGN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkFwaS5pc0F0dGFjaG1lbnRVbml0Rm9sZGVyKHsgZm9sZGVyUGF0aCB9KVxuICAgIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgbm90ZSdzIGF0dGFjaG1lbnQgZm9sZGVyIGlzIHNwZWNpZmljIHRvIHRoYXQgbm90ZSByYXRoZXIgdGhhbiBzaGFyZWQgd2l0aCBpdHMgc2libGluZ3MuXG4gKlxuICogVGhlIGFuc3dlciBpcyBkZXJpdmVkIGJ5IGNvbXBhcmluZyB0aGUgbm90ZSdzIGF0dGFjaG1lbnQgZm9sZGVyIHdpdGggdGhlIG9uZSBhIHNhbWUtZm9sZGVyIHNpYmxpbmcgbm90ZVxuICogd291bGQgZ2V0OiB0aGV5IGRpZmZlciBvbmx5IHdoZW4gdGhlIGZvbGRlciBkZXBlbmRzIG9uIHRoZSBub3RlJ3MgTkFNRS4gRXZlcnkgYnVpbHQtaW5cbiAqIGBhdHRhY2htZW50Rm9sZGVyUGF0aGAgbW9kZSBcdTIwMTQgdGhlIHZhdWx0IHJvb3QsIGEgZml4ZWQgZm9sZGVyLCB0aGUgbm90ZSdzIG93biBmb2xkZXIgKGAuL2ApLCBhIHN1YmZvbGRlciBvZlxuICogdGhlIG5vdGUncyBmb2xkZXIgKGAuL3N1YmApIFx1MjAxNCBpcyBzaGFyZWQgYnkgZXZlcnkgbm90ZSBpbiB0aGF0IGZvbGRlciwgc28gaXQgYW5zd2VycyBgZmFsc2VgOyBgdHJ1ZWAgYXJpc2VzXG4gKiBmcm9tIGBDdXN0b20gQXR0YWNobWVudCBMb2NhdGlvbmAncyByZXNvbHZlciBkZXJpdmluZyB0aGUgZm9sZGVyIGZyb20gdGhlIG5vdGUncyBuYW1lLlxuICpcbiAqIFRoaXMgaXMgdGhlIGRpc3RpbmN0aW9uIGEgY2FsbGVyIG5lZWRzIGJlZm9yZSBzd2VlcGluZyBhbiBhdHRhY2htZW50IGZvbGRlciB3aG9sZXNhbGU6IG9ubHkgYVxuICogbm90ZS1zcGVjaWZpYyBmb2xkZXIgY2FuIGJlIHRyZWF0ZWQgYXMgYmVsb25naW5nIHRvIHRoZSBub3RlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGZvciB0aGUgaGFzIG93biBhdHRhY2htZW50IGZvbGRlciBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgbm90ZSBoYXMgaXRzIG93biBhdHRhY2htZW50IGZvbGRlci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhc093bkF0dGFjaG1lbnRGb2xkZXIocGFyYW1zOiBIYXNPd25BdHRhY2htZW50Rm9sZGVyUGFyYW1zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgY29udGV4dCA9IEF0dGFjaG1lbnRQYXRoQ29udGV4dC5Vbmtub3duLFxuICAgIHBhdGhcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgYXR0YWNobWVudEZvbGRlclBhdGggPSBhd2FpdCBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aCh7XG4gICAgYXBwLFxuICAgIGNvbnRleHQsXG4gICAgbm90ZVBhdGhPckZpbGU6IHBhdGhcbiAgfSk7XG4gIGNvbnN0IGR1bW15QXR0YWNobWVudEZvbGRlclBhdGggPSBhd2FpdCBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aCh7XG4gICAgYXBwLFxuICAgIGNvbnRleHQsXG4gICAgbm90ZVBhdGhPckZpbGU6IGpvaW4oZGlybmFtZShwYXRoKSwgYCR7RFVNTVlfUEFUSH0uJHtNQVJLRE9XTl9GSUxFX0VYVEVOU0lPTn1gKVxuICB9KTtcbiAgcmV0dXJuIGF0dGFjaG1lbnRGb2xkZXJQYXRoICE9PSBkdW1teUF0dGFjaG1lbnRGb2xkZXJQYXRoO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGFuIGF0dGFjaG1lbnQgYWxyZWFkeSBzaXRzIGF0IGl0cyBwcm9wZXIgYXR0YWNobWVudCBwYXRoLlxuICpcbiAqIFJldHVybnMgYHRydWVgIHdoZW4gdGhlIGF0dGFjaG1lbnQncyBjdXJyZW50IHBhdGggaXMsIHdpdGhpbiBpdHMgcHJvcGVyIGF0dGFjaG1lbnQgZm9sZGVyLCBlaXRoZXIgdGhlIHByb3BlclxuICogYmFzZSBuYW1lIG9yIHRoZSBwcm9wZXIgYmFzZSBuYW1lIHBsdXMgYW4gT2JzaWRpYW4gZGVkdXBsaWNhdGlvbiBzdWZmaXggKGEgc3BhY2UgZm9sbG93ZWQgYnkgZGlnaXRzLCBlLmcuXG4gKiBgaW1nIDFgKSB3aXRoIHRoZSBzYW1lIGV4dGVuc2lvbi4gVGhlIHByb3BlciBwYXRoIGlzIGNvbXB1dGVkIHZpYSB7QGxpbmsgZ2V0QXR0YWNobWVudEZpbGVQYXRofSB3aXRoXG4gKiB7QGxpbmsgR2V0QXR0YWNobWVudEZpbGVQYXRoUGFyYW1zLnNob3VsZFNraXBEdXBsaWNhdGVDaGVja30gc2V0IHRvIGB0cnVlYCAodGhlIHRhcmdldCBiZWZvcmUgYW55XG4gKiBkZWR1cGxpY2F0aW9uIHN1ZmZpeCksIGFuZCB0aGUgY29tcGFyaXNvbiByZXNwZWN0cyB0aGUgZmlsZSBzeXN0ZW0gY2FzZS1zZW5zaXRpdml0eSBmbGFnXG4gKiAoYGdldERhdGFBZGFwdGVyRXgoYXBwKS5pbnNlbnNpdGl2ZWApIHRoYXQgYGdldFNhZmVSZW5hbWVQYXRoYCB1c2VzLlxuICpcbiAqIFRoaXMgbGV0cyBhIGNhbGxlciByZWNvZ25pemUgYSBkZWR1cGxpY2F0aW9uLXBhcmtlZCBhdHRhY2htZW50IGFzIGFscmVhZHktY29sbGVjdGVkLCBzbyBhIFwibmVlZHMgbW92ZT9cIlxuICogZGVjaXNpb24gbWFkZSBhZ2FpbnN0IHRoZSBkZWR1cGxpY2F0aW9uLWZyZWUgcHJvcGVyIHBhdGggY29udmVyZ2VzIGluc3RlYWQgb2YgcmUtc2NoZWR1bGluZyB0aGUgZmlsZSBmb3JldmVyLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGZvciB0aGUgaXMgYXQgcHJvcGVyIGF0dGFjaG1lbnQgcGF0aCBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gYHRydWVgIHdoZW4gdGhlIGF0dGFjaG1lbnQgaXMgYWxyZWFkeSBhdCBpdHMgcHJvcGVyIHBhdGguXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpc0F0UHJvcGVyQXR0YWNobWVudFBhdGgocGFyYW1zOiBJc0F0UHJvcGVyQXR0YWNobWVudFBhdGhQYXJhbXMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBhdHRhY2htZW50UGF0aE9yRmlsZSxcbiAgICBjb250ZXh0ID0gQXR0YWNobWVudFBhdGhDb250ZXh0LlVua25vd24sXG4gICAgbm90ZVBhdGhPckZpbGVcbiAgfSA9IHBhcmFtcztcblxuICBjb25zdCBjdXJyZW50UGF0aCA9IGdldFBhdGgoYXBwLCBhdHRhY2htZW50UGF0aE9yRmlsZSk7XG4gIGNvbnN0IHByb3BlclBhdGggPSBhd2FpdCBnZXRBdHRhY2htZW50RmlsZVBhdGgoe1xuICAgIGFwcCxcbiAgICBjb250ZXh0LFxuICAgIG5vdGVQYXRoT3JGaWxlLFxuICAgIG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlOiBhdHRhY2htZW50UGF0aE9yRmlsZSxcbiAgICBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2s6IHRydWVcbiAgfSk7XG5cbiAgY29uc3QgaXNJbnNlbnNpdGl2ZSA9IGdldERhdGFBZGFwdGVyRXgoYXBwKS5pbnNlbnNpdGl2ZTtcblxuICBmdW5jdGlvbiBmb2xkKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBpc0luc2Vuc2l0aXZlID8gdmFsdWUudG9Mb3dlckNhc2UoKSA6IHZhbHVlO1xuICB9XG5cbiAgaWYgKGZvbGQoZGlybmFtZShjdXJyZW50UGF0aCkpICE9PSBmb2xkKGRpcm5hbWUocHJvcGVyUGF0aCkpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgY3VycmVudEV4dGVuc2lvbiA9IGV4dG5hbWUoY3VycmVudFBhdGgpO1xuICBjb25zdCBwcm9wZXJFeHRlbnNpb24gPSBleHRuYW1lKHByb3BlclBhdGgpO1xuICBpZiAoZm9sZChjdXJyZW50RXh0ZW5zaW9uKSAhPT0gZm9sZChwcm9wZXJFeHRlbnNpb24pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgY3VycmVudEJhc2VOYW1lID0gYmFzZW5hbWUoY3VycmVudFBhdGgsIGN1cnJlbnRFeHRlbnNpb24pO1xuICBjb25zdCBwcm9wZXJCYXNlTmFtZSA9IGJhc2VuYW1lKHByb3BlclBhdGgsIHByb3BlckV4dGVuc2lvbik7XG5cbiAgaWYgKGZvbGQoY3VycmVudEJhc2VOYW1lKSA9PT0gZm9sZChwcm9wZXJCYXNlTmFtZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IGRlZHVwbGljYXRpb25QcmVmaXggPSBgJHtwcm9wZXJCYXNlTmFtZX0gYDtcbiAgaWYgKCFmb2xkKGN1cnJlbnRCYXNlTmFtZSkuc3RhcnRzV2l0aChmb2xkKGRlZHVwbGljYXRpb25QcmVmaXgpKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGRlZHVwbGljYXRpb25TdWZmaXggPSBjdXJyZW50QmFzZU5hbWUuc2xpY2UoZGVkdXBsaWNhdGlvblByZWZpeC5sZW5ndGgpO1xuICByZXR1cm4gL15cXGQrJC8udGVzdChkZWR1cGxpY2F0aW9uU3VmZml4KTtcbn1cblxuLyoqXG4gKiBGaW5kcyBgQ3VzdG9tIEF0dGFjaG1lbnQgTG9jYXRpb25gJ3MgYXR0YWNobWVudC1wYXRoIEFQSSBpbiB0aGUgcGx1Z2luIEFQSSByZWdpc3RyeS4gSXRzIHByZXNlbmNlIGlzIHRoZVxuICogc3luY2hyb25vdXMgcHJvYmUgZm9yIFwic29tZWJvZHkgZWxzZSBvd25zIHRoZSByZXNvbHV0aW9uXCIuXG4gKlxuICogQHJldHVybnMgVGhlIEFQSSwgb3IgYG51bGxgIHdoZW4gdGhhdCBwbHVnaW4gcHVibGlzaGVzIG5vIHJlY29yZCBzYXRpc2Z5aW5nIHRoZSByYW5nZSBhbmQgY29udHJhY3QuXG4gKi9cbmZ1bmN0aW9uIGZpbmRDdXN0b21BdHRhY2htZW50TG9jYXRpb25BcGkoKTogQ3VzdG9tQXR0YWNobWVudExvY2F0aW9uQXR0YWNobWVudFBhdGhBcGkgfCBudWxsIHtcbiAgcmV0dXJuIGZpbmRQbHVnaW5BcGk8Q3VzdG9tQXR0YWNobWVudExvY2F0aW9uQXR0YWNobWVudFBhdGhBcGk+KHtcbiAgICBhcGlWZXJzaW9uUmFuZ2U6IENVU1RPTV9BVFRBQ0hNRU5UX0xPQ0FUSU9OX0FUVEFDSE1FTlRfUEFUSF9BUElfVkVSU0lPTl9SQU5HRSxcbiAgICBjb250cmFjdDogQ1VTVE9NX0FUVEFDSE1FTlRfTE9DQVRJT05fQVRUQUNITUVOVF9QQVRIX0FQSV9DT05UUkFDVCxcbiAgICBwbHVnaW5JZDogQ1VTVE9NX0FUVEFDSE1FTlRfTE9DQVRJT05fUExVR0lOX0lEXG4gIH0pO1xufVxuXG4vKipcbiAqIFRoZSBzeW5jaHJvbm91cyBjb3JlIG9mIHtAbGluayBnZXRBdHRhY2htZW50RmlsZVBhdGh9LCByZWFjaGVkIHdoZW4gYEN1c3RvbSBBdHRhY2htZW50IExvY2F0aW9uYCBwdWJsaXNoZXMgbm9cbiAqIGF0dGFjaG1lbnQtcGF0aCBBUEkuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFBhcmFtZXRlcnMgZm9yIHRoZSBnZXQgYXR0YWNobWVudCBmaWxlIHBhdGggc3luYyBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBmaWxlIHBhdGggb2YgdGhlIGF0dGFjaG1lbnQuXG4gKi9cbmZ1bmN0aW9uIGdldEF0dGFjaG1lbnRGaWxlUGF0aFN5bmMocGFyYW1zOiBHZXRBdHRhY2htZW50RmlsZVBhdGhTeW5jUGFyYW1zKTogc3RyaW5nIHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBub3RlUGF0aE9yRmlsZSxcbiAgICBvbGRBdHRhY2htZW50UGF0aE9yRmlsZSxcbiAgICBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2tcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgYXR0YWNobWVudFBhdGggPSBnZXRQYXRoKGFwcCwgb2xkQXR0YWNobWVudFBhdGhPckZpbGUpO1xuICBjb25zdCBhdHRhY2htZW50RmlsZUV4dGVuc2lvbiA9IGV4dG5hbWUoYXR0YWNobWVudFBhdGgpO1xuXG4gIHJldHVybiBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNTeW5jKHtcbiAgICBhcHAsXG4gICAgYXR0YWNobWVudEZpbGVCYXNlTmFtZTogYmFzZW5hbWUoYXR0YWNobWVudFBhdGgsIGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uKSxcbiAgICBhdHRhY2htZW50RmlsZUV4dGVuc2lvbjogYXR0YWNobWVudEZpbGVFeHRlbnNpb24uc2xpY2UoMSksXG4gICAgbm90ZVBhdGhPckZpbGUsXG4gICAgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrXG4gIH0pO1xufVxuXG4vKipcbiAqIFRoZSBzeW5jaHJvbm91cyBjb3JlIG9mIHtAbGluayBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHN9LCB3aGljaCBjYW5ub3QgY3JlYXRlIGEgbWlzc2luZyBhdHRhY2htZW50XG4gKiBmb2xkZXIuIEl0cyBjYWxsZXIgY3JlYXRlcyB0aGUgZm9sZGVyIGZpcnN0IHdoZW4gdGhhdCBpcyB3YW50ZWQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFBhcmFtZXRlcnMgZm9yIHRoZSBnZXQgYXZhaWxhYmxlIHBhdGggZm9yIGF0dGFjaG1lbnRzIHN5bmMgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBUaGUgYXZhaWxhYmxlIHBhdGggZm9yIGF0dGFjaG1lbnRzLlxuICovXG5mdW5jdGlvbiBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNTeW5jKHBhcmFtczogR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzU3luY1BhcmFtcyk6IHN0cmluZyB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgYXR0YWNobWVudEZpbGVFeHRlbnNpb24sXG4gICAgbm90ZVBhdGhPckZpbGUsXG4gICAgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGF0dGFjaG1lbnRGb2xkZXIgPSByZXNvbHZlQXR0YWNobWVudEZvbGRlcih7IGFwcCwgbm90ZVBhdGhPckZpbGUgfSk7XG4gIGNvbnN0IGF0dGFjaG1lbnRGaWxlQmFzZU5hbWUgPSBub3JtYWxpemVTdHJpbmcobm9ybWFsaXplU2xhc2hlcyhwYXJhbXMuYXR0YWNobWVudEZpbGVCYXNlTmFtZSkpO1xuXG4gIC8vIEEgZm9sZGVyIHRoYXQgZG9lcyBub3QgZXhpc3QgeWV0IHN0aWxsIG93bnMgdGhlIGF0dGFjaG1lbnQgcGF0aC5cbiAgLy8gUmVzb2x2aW5nIGl0IGFzIGEgbm9uLWV4aXN0aW5nIGZvbGRlciBzdG9wcyB0aGUgYW5zd2VyIGZyb20gY29sbGFwc2luZyB0byB0aGUgdmF1bHQgcm9vdC5cbiAgY29uc3QgZm9sZGVyID0gYXR0YWNobWVudEZvbGRlci5mb2xkZXIgPz8gZ2V0Rm9sZGVyKHsgYXBwLCBwYXRoT3JGb2xkZXI6IGF0dGFjaG1lbnRGb2xkZXIucGF0aCwgc2hvdWxkSW5jbHVkZU5vbkV4aXN0aW5nOiB0cnVlIH0pO1xuXG4gIGNvbnN0IHByZWZpeCA9IGZvbGRlci5nZXRQYXJlbnRQcmVmaXgoKTtcbiAgcmV0dXJuIHNob3VsZFNraXBEdXBsaWNhdGVDaGVja1xuICAgID8gbWFrZUZpbGVOYW1lKHtcbiAgICAgIGZpbGVCYXNlTmFtZTogcHJlZml4ICsgYXR0YWNobWVudEZpbGVCYXNlTmFtZSxcbiAgICAgIGZpbGVFeHRlbnNpb246IGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uXG4gICAgfSlcbiAgICA6IGFwcC52YXVsdC5nZXRBdmFpbGFibGVQYXRoKHByZWZpeCArIGF0dGFjaG1lbnRGaWxlQmFzZU5hbWUsIGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uKTtcbn1cblxuZnVuY3Rpb24gaXNCb29sZWFuKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJztcbn1cblxuZnVuY3Rpb24gaXNDdXN0b21BdHRhY2htZW50TG9jYXRpb25Jc0F0dGFjaG1lbnRVbml0Rm9sZGVyUGFyYW1zKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgQ3VzdG9tQXR0YWNobWVudExvY2F0aW9uSXNBdHRhY2htZW50VW5pdEZvbGRlclBhcmFtcyB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiBSZWZsZWN0LmdldCh2YWx1ZSwgJ2ZvbGRlclBhdGgnKSA9PT0gJ3N0cmluZyc7XG59XG5cbmZ1bmN0aW9uIGlzRmlsZVN0YXRzKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgRmlsZVN0YXRzIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCdcbiAgICAmJiB2YWx1ZSAhPT0gbnVsbFxuICAgICYmIHR5cGVvZiBSZWZsZWN0LmdldCh2YWx1ZSwgJ2N0aW1lJykgPT09ICdudW1iZXInXG4gICAgJiYgdHlwZW9mIFJlZmxlY3QuZ2V0KHZhbHVlLCAnbXRpbWUnKSA9PT0gJ251bWJlcidcbiAgICAmJiB0eXBlb2YgUmVmbGVjdC5nZXQodmFsdWUsICdzaXplJykgPT09ICdudW1iZXInO1xufVxuXG5mdW5jdGlvbiBpc0dldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c0V4dGVuZGVkRnVuY3Rpb25QYXJhbXModmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNFeHRlbmRlZEZ1bmN0aW9uUGFyYW1zIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmdW5jdGlvbiByZWFkKGtleToga2V5b2YgR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzRXh0ZW5kZWRGdW5jdGlvblBhcmFtcyk6IHVua25vd24ge1xuICAgIHJldHVybiBSZWZsZWN0LmdldCh2YWx1ZSBhcyBvYmplY3QsIGtleSk7XG4gIH1cblxuICBjb25zdCBhdHRhY2htZW50RmlsZVN0YXRzID0gcmVhZCgnYXR0YWNobWVudEZpbGVTdGF0cycpO1xuICBjb25zdCBjb250ZXh0ID0gcmVhZCgnY29udGV4dCcpO1xuICBjb25zdCBub3RlUGF0aE9yRmlsZSA9IHJlYWQoJ25vdGVQYXRoT3JGaWxlJyk7XG4gIGNvbnN0IG9sZE5vdGVQYXRoT3JGaWxlID0gcmVhZCgnb2xkTm90ZVBhdGhPckZpbGUnKTtcbiAgY29uc3QgcmVhZEF0dGFjaG1lbnRGaWxlQ29udGVudCA9IHJlYWQoJ3JlYWRBdHRhY2htZW50RmlsZUNvbnRlbnQnKTtcbiAgcmV0dXJuIHR5cGVvZiByZWFkKCdhdHRhY2htZW50RmlsZUJhc2VOYW1lJykgPT09ICdzdHJpbmcnXG4gICAgJiYgdHlwZW9mIHJlYWQoJ2F0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uJykgPT09ICdzdHJpbmcnXG4gICAgJiYgKGF0dGFjaG1lbnRGaWxlU3RhdHMgPT09IHVuZGVmaW5lZCB8fCBpc0ZpbGVTdGF0cyhhdHRhY2htZW50RmlsZVN0YXRzKSlcbiAgICAmJiBPYmplY3QudmFsdWVzKEF0dGFjaG1lbnRQYXRoQ29udGV4dCkuaW5jbHVkZXMoY29udGV4dClcbiAgICAmJiAobm90ZVBhdGhPckZpbGUgPT09IG51bGwgfHwgaXNQYXRoT3JGaWxlKG5vdGVQYXRoT3JGaWxlKSlcbiAgICAmJiBpc1BhdGhPckZpbGUocmVhZCgnb2xkQXR0YWNobWVudFBhdGhPckZpbGUnKSlcbiAgICAmJiAob2xkTm90ZVBhdGhPckZpbGUgPT09IHVuZGVmaW5lZCB8fCBpc1BhdGhPckZpbGUob2xkTm90ZVBhdGhPckZpbGUpKVxuICAgICYmIChyZWFkQXR0YWNobWVudEZpbGVDb250ZW50ID09PSBudWxsIHx8IHR5cGVvZiByZWFkQXR0YWNobWVudEZpbGVDb250ZW50ID09PSAnZnVuY3Rpb24nKVxuICAgICYmIGlzT3B0aW9uYWxCb29sZWFuKHJlYWQoJ3Nob3VsZFNraXBEdXBsaWNhdGVDaGVjaycpKVxuICAgICYmIGlzT3B0aW9uYWxCb29sZWFuKHJlYWQoJ3Nob3VsZFNraXBHZW5lcmF0ZWRBdHRhY2htZW50RmlsZU5hbWUnKSlcbiAgICAmJiBpc09wdGlvbmFsQm9vbGVhbihyZWFkKCdzaG91bGRTa2lwTWlzc2luZ0F0dGFjaG1lbnRGb2xkZXJDcmVhdGlvbicpKTtcbn1cbmZ1bmN0aW9uIGlzT3B0aW9uYWxCb29sZWFuKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGlzQm9vbGVhbih2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZyc7XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHBhdGggYnkgY29tYmluaW5nIG11bHRpcGxlIHNsYXNoZXMgaW50byBhIHNpbmdsZSBzbGFzaCBhbmQgcmVtb3ZpbmcgbGVhZGluZyBhbmQgdHJhaWxpbmcgc2xhc2hlcy5cbiAqXG4gKiBAcGFyYW0gcGF0aCAtIFBhdGggdG8gbm9ybWFsaXplLlxuICogQHJldHVybnMgVGhlIG5vcm1hbGl6ZWQgcGF0aC5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplU2xhc2hlcyhwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBwYXRoID0gcmVwbGFjZUFsbCh7XG4gICAgJHN0cmluZzogcGF0aCxcbiAgICByZXBsYWNlcjogJy8nLFxuICAgIHNlYXJjaFZhbHVlOiAvKD86W1xcXFwvXSkrL2dcbiAgfSk7XG4gIHBhdGggPSByZXBsYWNlQWxsKHtcbiAgICAkc3RyaW5nOiBwYXRoLFxuICAgIHJlcGxhY2VyOiAnJyxcbiAgICBzZWFyY2hWYWx1ZTogL15cXC8rfFxcLyskL2dcbiAgfSk7XG4gIHJldHVybiBwYXRoIHx8ICcvJztcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgYGF0dGFjaG1lbnRGb2xkZXJQYXRoYCBzZXR0aW5nIGFnYWluc3QgYSBub3RlIGludG8gYSBjb25jcmV0ZSBhdHRhY2htZW50IGZvbGRlci5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIHJlc29sdmUgYXR0YWNobWVudCBmb2xkZXIgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBUaGUgcmVzb2x2ZWQgYXR0YWNobWVudCBmb2xkZXIuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVBdHRhY2htZW50Rm9sZGVyKHBhcmFtczogUmVzb2x2ZUF0dGFjaG1lbnRGb2xkZXJQYXJhbXMpOiBSZXNvbHZlQXR0YWNobWVudEZvbGRlclJlc3VsdCB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgbm90ZVBhdGhPckZpbGVcbiAgfSA9IHBhcmFtcztcbiAgbGV0IGF0dGFjaG1lbnRGb2xkZXJQYXRoID0gYXBwLnZhdWx0LmdldENvbmZpZygnYXR0YWNobWVudEZvbGRlclBhdGgnKSBhcyBzdHJpbmc7XG4gIGNvbnN0IGlzQ3VycmVudEZvbGRlciA9IGF0dGFjaG1lbnRGb2xkZXJQYXRoID09PSAnLicgfHwgYXR0YWNobWVudEZvbGRlclBhdGggPT09ICcuLyc7XG4gIGNvbnN0IHJlbGF0aXZlUGF0aCA9IGF0dGFjaG1lbnRGb2xkZXJQYXRoLnN0YXJ0c1dpdGgoJy4vJylcbiAgICA/IHRyaW1TdGFydCh7XG4gICAgICAkc3RyaW5nOiBhdHRhY2htZW50Rm9sZGVyUGF0aCxcbiAgICAgIHByZWZpeDogJy4vJ1xuICAgIH0pXG4gICAgOiBudWxsO1xuXG4gIC8vIEEgbm90ZSB0aGF0IGRvZXMgbm90IGV4aXN0IHlldCAoYSByZW5hbWUgdGFyZ2V0LCBhIGR1bW15IHNpYmxpbmcpIHN0aWxsIGJlbG9uZ3MgdG8gaXRzIG93biBmb2xkZXIuXG4gIC8vIE1hdGVyaWFsaXppbmcgaXQgZnJvbSBpdHMgcGF0aCBrZWVwcyB0aGF0IGZvbGRlciwgd2hlcmUgYSB2YXVsdCBsb29rdXAgd291bGQgZmFsbCBiYWNrIHRvIHRoZSByb290LlxuICAvLyBPbmx5IGFuIGV4cGxpY2l0bHkgbm90ZS1sZXNzIGF0dGFjaG1lbnQgcmVzb2x2ZXMgdG8gdGhlIHZhdWx0IHJvb3QuXG4gIGNvbnN0IG5vdGVGaWxlT3JOdWxsID0gbm90ZVBhdGhPckZpbGUgPT09IG51bGxcbiAgICA/IG51bGxcbiAgICA6IGdldEZpbGUoe1xuICAgICAgYXBwLFxuICAgICAgcGF0aE9yRmlsZTogbm90ZVBhdGhPckZpbGUsXG4gICAgICBzaG91bGRJbmNsdWRlTm9uRXhpc3Rpbmc6IHRydWVcbiAgICB9KTtcblxuICBpZiAoaXNDdXJyZW50Rm9sZGVyKSB7XG4gICAgYXR0YWNobWVudEZvbGRlclBhdGggPSBub3RlRmlsZU9yTnVsbCA/IG5vdGVGaWxlT3JOdWxsLnBhcmVudD8ucGF0aCA/PyAnJyA6ICcnO1xuICB9IGVsc2UgaWYgKHJlbGF0aXZlUGF0aCkge1xuICAgIGF0dGFjaG1lbnRGb2xkZXJQYXRoID0gKG5vdGVGaWxlT3JOdWxsID8gbm90ZUZpbGVPck51bGwucGFyZW50Py5nZXRQYXJlbnRQcmVmaXgoKSA/PyAnJyA6ICcnKSArIHJlbGF0aXZlUGF0aDtcbiAgfVxuXG4gIGF0dGFjaG1lbnRGb2xkZXJQYXRoID0gbm9ybWFsaXplU3RyaW5nKG5vcm1hbGl6ZVNsYXNoZXMoYXR0YWNobWVudEZvbGRlclBhdGgpKTtcblxuICByZXR1cm4ge1xuICAgIGZvbGRlcjogZ2V0Rm9sZGVyT3JOdWxsKHsgYXBwLCBpc0Nhc2VJbnNlbnNpdGl2ZTogdHJ1ZSwgcGF0aE9yRm9sZGVyOiBhdHRhY2htZW50Rm9sZGVyUGF0aCB9KSxcbiAgICBwYXRoOiBhdHRhY2htZW50Rm9sZGVyUGF0aCxcbiAgICByZWxhdGl2ZVBhdGhcbiAgfTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFZQSxrQkFNTztBQUNQLG9CQUlPO0FBQ1AsNkJBR087QUFLUCx5QkFRTztBQUNQLCtCQUdPO0FBQ1Asd0JBQThCO0FBS3ZCLElBQUssd0JBQUwsa0JBQUtBLDJCQUFMO0FBSUwsRUFBQUEsdUJBQUEsZ0JBQWE7QUFLYixFQUFBQSx1QkFBQSxnQkFBYTtBQUtiLEVBQUFBLHVCQUFBLGFBQVU7QUFkQSxTQUFBQTtBQUFBLEdBQUE7QUF3SEwsTUFBTSx1Q0FBdUM7QUFNcEQsTUFBTSwrREFBK0Q7QUFTckUsTUFBTSwwREFBd0g7QUFBQSxFQUM1SCxnQ0FBZ0M7QUFBQSxJQUM5QixXQUFPLGdEQUFzRixDQUFDO0FBQUEsTUFDNUYsVUFBVTtBQUFBLE1BQ1YsV0FBVztBQUFBLElBQ2IsQ0FBQyxDQUFDO0FBQUEsSUFDRixZQUFRLGdEQUFzQixFQUFFLFVBQVUsc0JBQXNCLFdBQVcsU0FBUyxDQUFDO0FBQUEsRUFDdkY7QUFBQSxFQUNBLHdCQUF3QjtBQUFBLElBQ3RCLFdBQU8sZ0RBQXNGLENBQUM7QUFBQSxNQUM1RixVQUFVO0FBQUEsTUFDVixXQUFXO0FBQUEsSUFDYixDQUFDLENBQUM7QUFBQSxJQUNGLFlBQVEsZ0RBQXNCLEVBQUUsVUFBVSxhQUFhLFdBQVcsVUFBVSxDQUFDO0FBQUEsRUFDL0U7QUFDRjtBQUtPLE1BQU0sYUFBYTtBQThQMUIsZUFBc0Isc0JBQXNCLFFBQXNEO0FBQ2hHLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRixJQUFJO0FBRUosUUFBTSw4QkFBOEIsZ0NBQWdDO0FBQ3BFLE1BQUksQ0FBQyw2QkFBNkI7QUFHaEMsV0FBTywwQkFBMEI7QUFBQSxNQUMvQjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0YsQ0FBQztBQUFBLEVBQ0g7QUFFQSxRQUFNLHFCQUFpQiw0QkFBUSxLQUFLLHVCQUF1QjtBQUMzRCxRQUFNLDhCQUEwQixxQkFBUSxjQUFjO0FBQ3RELFFBQU0sNkJBQXlCLHNCQUFTLGdCQUFnQix1QkFBdUI7QUFDL0UsUUFBTSxxQkFBaUIsa0NBQWMsRUFBRSxLQUFLLFlBQVksZUFBZSxDQUFDO0FBRXhFLFNBQU8sTUFBTSw0QkFBNEIsK0JBQStCO0FBQUEsSUFDdEU7QUFBQSxJQUNBLHlCQUF5Qix3QkFBd0IsTUFBTSxDQUFDO0FBQUEsSUFDeEQscUJBQXFCLGdCQUFnQjtBQUFBLElBQ3JDLFNBQVMsT0FBTztBQUFBLElBQ2hCO0FBQUEsSUFDQTtBQUFBLElBQ0EsbUJBQW1CLE9BQU87QUFBQSxJQUMxQiwyQkFBMkIsaUJBQWlCLE1BQTRCLElBQUksTUFBTSxXQUFXLGNBQWMsSUFBSTtBQUFBLElBQy9HO0FBQUEsSUFDQSwyQ0FBMkM7QUFBQSxFQUM3QyxDQUFDO0FBQ0g7QUFRQSxlQUFzQix3QkFBd0IsUUFBd0Q7QUFDcEcsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBLFVBQVU7QUFBQSxJQUNWO0FBQUEsRUFDRixJQUFJO0FBQ0osYUFBTztBQUFBLElBQ0wsTUFBTSxzQkFBc0I7QUFBQSxNQUMxQjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQSx5QkFBeUI7QUFBQSxNQUN6QiwwQkFBMEI7QUFBQSxJQUM1QixDQUFDO0FBQUEsRUFDSDtBQUNGO0FBcUJPLFNBQVMsa0NBQWtDLFFBQWdFO0FBQ2hILFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSTtBQUVKLFNBQU8sZ0NBQWdDLElBQ25DLFdBQ0EseUNBQWlCLDBCQUEwQjtBQUFBLElBQzNDO0FBQUEsSUFDQTtBQUFBLElBQ0EseUJBQXlCO0FBQUEsSUFDekIsMEJBQTBCO0FBQUEsRUFDNUIsQ0FBQyxDQUFDO0FBQ047QUFRQSxlQUFzQiwrQkFBK0IsUUFBK0Q7QUFDbEgsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSTtBQUlKLFFBQU0sbUJBQW1CLHdCQUF3QixFQUFFLEtBQUssZUFBZSxDQUFDO0FBQ3hFLE1BQUksQ0FBQyxpQkFBaUIsVUFBVSxpQkFBaUIsZ0JBQWdCLENBQUMsMkNBQTJDO0FBQzNHLFVBQU0sSUFBSSxNQUFNLGFBQWEsaUJBQWlCLElBQUk7QUFBQSxFQUNwRDtBQUVBLFNBQU8sbUNBQW1DLE1BQU07QUFDbEQ7QUFxQk8sU0FBUyx1Q0FBdUMsTUFBMEQ7QUFDL0csUUFBTSw4QkFBOEIsZ0NBQWdDO0FBQ3BFLFNBQU8sOEJBQ0gsQ0FBQyxlQUFnQyw0QkFBNEIsdUJBQXVCLEVBQUUsV0FBVyxDQUFDLElBQ2xHO0FBQ047QUFpQkEsZUFBc0IsdUJBQXVCLFFBQXdEO0FBQ25HLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQSxVQUFVO0FBQUEsSUFDVjtBQUFBLEVBQ0YsSUFBSTtBQUNKLFFBQU0sdUJBQXVCLE1BQU0sd0JBQXdCO0FBQUEsSUFDekQ7QUFBQSxJQUNBO0FBQUEsSUFDQSxnQkFBZ0I7QUFBQSxFQUNsQixDQUFDO0FBQ0QsUUFBTSw0QkFBNEIsTUFBTSx3QkFBd0I7QUFBQSxJQUM5RDtBQUFBLElBQ0E7QUFBQSxJQUNBLG9CQUFnQixzQkFBSyxxQkFBUSxJQUFJLEdBQUcsR0FBRyxVQUFVLElBQUksMENBQXVCLEVBQUU7QUFBQSxFQUNoRixDQUFDO0FBQ0QsU0FBTyx5QkFBeUI7QUFDbEM7QUFrQkEsZUFBc0IseUJBQXlCLFFBQTBEO0FBQ3ZHLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLElBQ0EsVUFBVTtBQUFBLElBQ1Y7QUFBQSxFQUNGLElBQUk7QUFFSixRQUFNLGtCQUFjLDRCQUFRLEtBQUssb0JBQW9CO0FBQ3JELFFBQU0sYUFBYSxNQUFNLHNCQUFzQjtBQUFBLElBQzdDO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBLHlCQUF5QjtBQUFBLElBQ3pCLDBCQUEwQjtBQUFBLEVBQzVCLENBQUM7QUFFRCxRQUFNLG9CQUFnQix5Q0FBaUIsR0FBRyxFQUFFO0FBRTVDLFdBQVMsS0FBSyxPQUF1QjtBQUNuQyxXQUFPLGdCQUFnQixNQUFNLFlBQVksSUFBSTtBQUFBLEVBQy9DO0FBRUEsTUFBSSxTQUFLLHFCQUFRLFdBQVcsQ0FBQyxNQUFNLFNBQUsscUJBQVEsVUFBVSxDQUFDLEdBQUc7QUFDNUQsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLHVCQUFtQixxQkFBUSxXQUFXO0FBQzVDLFFBQU0sc0JBQWtCLHFCQUFRLFVBQVU7QUFDMUMsTUFBSSxLQUFLLGdCQUFnQixNQUFNLEtBQUssZUFBZSxHQUFHO0FBQ3BELFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxzQkFBa0Isc0JBQVMsYUFBYSxnQkFBZ0I7QUFDOUQsUUFBTSxxQkFBaUIsc0JBQVMsWUFBWSxlQUFlO0FBRTNELE1BQUksS0FBSyxlQUFlLE1BQU0sS0FBSyxjQUFjLEdBQUc7QUFDbEQsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLHNCQUFzQixHQUFHLGNBQWM7QUFDN0MsTUFBSSxDQUFDLEtBQUssZUFBZSxFQUFFLFdBQVcsS0FBSyxtQkFBbUIsQ0FBQyxHQUFHO0FBQ2hFLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxzQkFBc0IsZ0JBQWdCLE1BQU0sb0JBQW9CLE1BQU07QUFDNUUsU0FBTyxRQUFRLEtBQUssbUJBQW1CO0FBQ3pDO0FBUUEsU0FBUyxrQ0FBb0Y7QUFDM0YsYUFBTyxpQ0FBeUQ7QUFBQSxJQUM5RCxpQkFBaUI7QUFBQSxJQUNqQixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsRUFDWixDQUFDO0FBQ0g7QUFTQSxTQUFTLDBCQUEwQixRQUFpRDtBQUNsRixRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSTtBQUNKLFFBQU0scUJBQWlCLDRCQUFRLEtBQUssdUJBQXVCO0FBQzNELFFBQU0sOEJBQTBCLHFCQUFRLGNBQWM7QUFFdEQsU0FBTyxtQ0FBbUM7QUFBQSxJQUN4QztBQUFBLElBQ0EsNEJBQXdCLHNCQUFTLGdCQUFnQix1QkFBdUI7QUFBQSxJQUN4RSx5QkFBeUIsd0JBQXdCLE1BQU0sQ0FBQztBQUFBLElBQ3hEO0FBQUEsSUFDQTtBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBU0EsU0FBUyxtQ0FBbUMsUUFBMEQ7QUFDcEcsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGLElBQUk7QUFDSixRQUFNLG1CQUFtQix3QkFBd0IsRUFBRSxLQUFLLGVBQWUsQ0FBQztBQUN4RSxRQUFNLDZCQUF5QiwrQkFBZ0IsaUJBQWlCLE9BQU8sc0JBQXNCLENBQUM7QUFJOUYsUUFBTSxTQUFTLGlCQUFpQixjQUFVLDhCQUFVLEVBQUUsS0FBSyxjQUFjLGlCQUFpQixNQUFNLDBCQUEwQixLQUFLLENBQUM7QUFFaEksUUFBTSxTQUFTLE9BQU8sZ0JBQWdCO0FBQ3RDLFNBQU8sK0JBQ0gsMEJBQWE7QUFBQSxJQUNiLGNBQWMsU0FBUztBQUFBLElBQ3ZCLGVBQWU7QUFBQSxFQUNqQixDQUFDLElBQ0MsSUFBSSxNQUFNLGlCQUFpQixTQUFTLHdCQUF3Qix1QkFBdUI7QUFDekY7QUFFQSxTQUFTLFVBQVUsT0FBa0M7QUFDbkQsU0FBTyxPQUFPLFVBQVU7QUFDMUI7QUFFQSxTQUFTLHVEQUF1RCxPQUErRTtBQUM3SSxTQUFPLE9BQU8sVUFBVSxZQUFZLFVBQVUsUUFBUSxPQUFPLFFBQVEsSUFBSSxPQUFPLFlBQVksTUFBTTtBQUNwRztBQUVBLFNBQVMsWUFBWSxPQUFvQztBQUN2RCxTQUFPLE9BQU8sVUFBVSxZQUNuQixVQUFVLFFBQ1YsT0FBTyxRQUFRLElBQUksT0FBTyxPQUFPLE1BQU0sWUFDdkMsT0FBTyxRQUFRLElBQUksT0FBTyxPQUFPLE1BQU0sWUFDdkMsT0FBTyxRQUFRLElBQUksT0FBTyxNQUFNLE1BQU07QUFDN0M7QUFFQSxTQUFTLHVEQUF1RCxPQUErRTtBQUM3SSxNQUFJLE9BQU8sVUFBVSxZQUFZLFVBQVUsTUFBTTtBQUMvQyxXQUFPO0FBQUEsRUFDVDtBQUVBLFdBQVMsS0FBSyxLQUEwRTtBQUN0RixXQUFPLFFBQVEsSUFBSSxPQUFpQixHQUFHO0FBQUEsRUFDekM7QUFFQSxRQUFNLHNCQUFzQixLQUFLLHFCQUFxQjtBQUN0RCxRQUFNLFVBQVUsS0FBSyxTQUFTO0FBQzlCLFFBQU0saUJBQWlCLEtBQUssZ0JBQWdCO0FBQzVDLFFBQU0sb0JBQW9CLEtBQUssbUJBQW1CO0FBQ2xELFFBQU0sNEJBQTRCLEtBQUssMkJBQTJCO0FBQ2xFLFNBQU8sT0FBTyxLQUFLLHdCQUF3QixNQUFNLFlBQzVDLE9BQU8sS0FBSyx5QkFBeUIsTUFBTSxhQUMxQyx3QkFBd0IsVUFBYSxZQUFZLG1CQUFtQixNQUNyRSxPQUFPLE9BQU8scUJBQXFCLEVBQUUsU0FBUyxPQUFPLE1BQ3BELG1CQUFtQixZQUFRLGlDQUFhLGNBQWMsVUFDdkQsaUNBQWEsS0FBSyx5QkFBeUIsQ0FBQyxNQUMzQyxzQkFBc0IsY0FBYSxpQ0FBYSxpQkFBaUIsT0FDakUsOEJBQThCLFFBQVEsT0FBTyw4QkFBOEIsZUFDNUUsa0JBQWtCLEtBQUssMEJBQTBCLENBQUMsS0FDbEQsa0JBQWtCLEtBQUssdUNBQXVDLENBQUMsS0FDL0Qsa0JBQWtCLEtBQUssMkNBQTJDLENBQUM7QUFDMUU7QUFDQSxTQUFTLGtCQUFrQixPQUE4QztBQUN2RSxTQUFPLFVBQVUsVUFBYSxVQUFVLEtBQUs7QUFDL0M7QUFFQSxTQUFTLFNBQVMsT0FBaUM7QUFDakQsU0FBTyxPQUFPLFVBQVU7QUFDMUI7QUFRQSxTQUFTLGlCQUFpQixNQUFzQjtBQUM5QyxhQUFPLDBCQUFXO0FBQUEsSUFDaEIsU0FBUztBQUFBLElBQ1QsVUFBVTtBQUFBLElBQ1YsYUFBYTtBQUFBLEVBQ2YsQ0FBQztBQUNELGFBQU8sMEJBQVc7QUFBQSxJQUNoQixTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsSUFDVixhQUFhO0FBQUEsRUFDZixDQUFDO0FBQ0QsU0FBTyxRQUFRO0FBQ2pCO0FBUUEsU0FBUyx3QkFBd0IsUUFBc0U7QUFDckcsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsRUFDRixJQUFJO0FBQ0osTUFBSSx1QkFBdUIsSUFBSSxNQUFNLFVBQVUsc0JBQXNCO0FBQ3JFLFFBQU0sa0JBQWtCLHlCQUF5QixPQUFPLHlCQUF5QjtBQUNqRixRQUFNLGVBQWUscUJBQXFCLFdBQVcsSUFBSSxRQUNyRCx5QkFBVTtBQUFBLElBQ1YsU0FBUztBQUFBLElBQ1QsUUFBUTtBQUFBLEVBQ1YsQ0FBQyxJQUNDO0FBS0osUUFBTSxpQkFBaUIsbUJBQW1CLE9BQ3RDLFdBQ0EsNEJBQVE7QUFBQSxJQUNSO0FBQUEsSUFDQSxZQUFZO0FBQUEsSUFDWiwwQkFBMEI7QUFBQSxFQUM1QixDQUFDO0FBRUgsTUFBSSxpQkFBaUI7QUFDbkIsMkJBQXVCLGlCQUFpQixlQUFlLFFBQVEsUUFBUSxLQUFLO0FBQUEsRUFDOUUsV0FBVyxjQUFjO0FBQ3ZCLDRCQUF3QixpQkFBaUIsZUFBZSxRQUFRLGdCQUFnQixLQUFLLEtBQUssTUFBTTtBQUFBLEVBQ2xHO0FBRUEsNkJBQXVCLCtCQUFnQixpQkFBaUIsb0JBQW9CLENBQUM7QUFFN0UsU0FBTztBQUFBLElBQ0wsWUFBUSxvQ0FBZ0IsRUFBRSxLQUFLLG1CQUFtQixNQUFNLGNBQWMscUJBQXFCLENBQUM7QUFBQSxJQUM1RixNQUFNO0FBQUEsSUFDTjtBQUFBLEVBQ0Y7QUFDRjsiLAogICJuYW1lcyI6IFsiQXR0YWNobWVudFBhdGhDb250ZXh0Il0KfQo=
|
|
416
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdHRhY2htZW50LXBhdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggYXR0YWNobWVudCBwYXRocy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwaUNvbnRyYWN0IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FwaS1jb250cmFjdCc7XG5pbXBvcnQgdHlwZSB7XG4gIEFwcCxcbiAgRmlsZVN0YXRzLFxuICBURm9sZGVyXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHtcbiAgY3JlYXRlQXJndW1lbnRzU2NoZW1hLFxuICBjcmVhdGVUeXBlR3VhcmRTY2hlbWFcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FwaS1jb250cmFjdCc7XG5pbXBvcnQge1xuICBiYXNlbmFtZSxcbiAgZGlybmFtZSxcbiAgZXh0bmFtZSxcbiAgam9pbixcbiAgbWFrZUZpbGVOYW1lXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9wYXRoJztcbmltcG9ydCB7XG4gIG5vcm1hbGl6ZVN0cmluZyxcbiAgcmVwbGFjZUFsbCxcbiAgdHJpbVN0YXJ0XG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9zdHJpbmcnO1xuaW1wb3J0IHtcbiAgZ2V0RGF0YUFkYXB0ZXJFeCxcbiAgcGFyZW50Rm9sZGVyUGF0aFxufSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0L2ltcGxlbWVudGF0aW9ucyc7XG5cbmltcG9ydCB0eXBlIHsgUGF0aE9yRmlsZSB9IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuXG5pbXBvcnQge1xuICBnZXRGaWxlLFxuICBnZXRGaWxlT3JOdWxsLFxuICBnZXRGb2xkZXIsXG4gIGdldEZvbGRlck9yTnVsbCxcbiAgZ2V0UGF0aCxcbiAgaXNQYXRoT3JGaWxlLFxuICBNQVJLRE9XTl9GSUxFX0VYVEVOU0lPTlxufSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcbmltcG9ydCB7IGZpbmRQbHVnaW5BcGkgfSBmcm9tICcuL3BsdWdpbi9wbHVnaW4tYXBpLnRzJztcblxuLyoqXG4gKiBBIGNvbnRleHQgZm9yIGFuIGF0dGFjaG1lbnQgcGF0aC5cbiAqL1xuZXhwb3J0IGVudW0gQXR0YWNobWVudFBhdGhDb250ZXh0IHtcbiAgLyoqXG4gICAqIEEgY29udGV4dCBmb3IgYSBkZWxldGUgbm90ZS5cbiAgICovXG4gIERlbGV0ZU5vdGUgPSAnRGVsZXRlTm90ZScsXG5cbiAgLyoqXG4gICAqIEEgY29udGV4dCBmb3IgYSByZW5hbWUgbm90ZS5cbiAgICovXG4gIFJlbmFtZU5vdGUgPSAnUmVuYW1lTm90ZScsXG5cbiAgLyoqXG4gICAqIEFuIHVua25vd24gY29udGV4dC5cbiAgICovXG4gIFVua25vd24gPSAnVW5rbm93bidcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgZ2V0IGF2YWlsYWJsZSBwYXRoIGZvciBhdHRhY2htZW50cyBleHRlbmRlZCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNFeHRlbmRlZEZ1bmN0aW9uUGFyYW1zIHtcbiAgLyoqXG4gICAqIEEgYmFzZSBuYW1lIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpbGVCYXNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbiBleHRlbnNpb24gb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50RmlsZUV4dGVuc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIHN0YXRzIG9mIHRoZSBhdHRhY2htZW50IGZpbGUuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50RmlsZVN0YXRzPzogRmlsZVN0YXRzIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBBIGNvbnRleHQuXG4gICAqL1xuICByZWFkb25seSBjb250ZXh0OiBBdHRhY2htZW50UGF0aENvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCBvciBmaWxlIG9mIHRoZSBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90ZVBhdGhPckZpbGU6IG51bGwgfCBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBBIHBhdGggb3IgZmlsZSBvZiB0aGUgb2xkIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBvbGRBdHRhY2htZW50UGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogQSBwYXRoIG9yIGZpbGUgb2YgdGhlIG9sZCBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgb2xkTm90ZVBhdGhPckZpbGU/OiBQYXRoT3JGaWxlIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBMYXppbHkgcmVhZHMgdGhlIGNvbnRlbnQgb2YgdGhlIGF0dGFjaG1lbnQgZmlsZS5cbiAgICpcbiAgICogVGhlIGNvbnRlbnQgaXMgcmVhZCBvbiBkZW1hbmQgb25seSB3aGVuIGEgY29uc3VtZXIgYWN0dWFsbHkgbmVlZHMgdGhlIGJ5dGVzIChlLmcuIGEgdGVtcGxhdGVcbiAgICogdG9rZW4gdGhhdCBlbWJlZHMgdGhlbSkuIEZvciB0aGUgZGVmYXVsdCB0ZW1wbGF0ZXMgbm90aGluZyBwdWxscyB0aGUgYnl0ZXMsIHNvIHRoZSBwb3RlbnRpYWxseVxuICAgKiBleHBlbnNpdmUgKHNpemUtcHJvcG9ydGlvbmFsKSBgcmVhZEJpbmFyeWAgbmV2ZXIgcnVucy4gQ29uc3VtZXJzIHRoYXQgbWF5IGNhbGwgdGhpcyBtb3JlIHRoYW5cbiAgICogb25jZSBzaG91bGQgbWVtb2l6ZSB0aGUgZmlyc3QgY2FsbC4gYG51bGxgIHdoZW4gdGhlcmUgaXMgbm8gYXR0YWNobWVudCBmaWxlIHRvIHJlYWQuXG4gICAqXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGNvbnRlbnQgb2YgdGhlIGF0dGFjaG1lbnQgZmlsZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlYWRBdHRhY2htZW50RmlsZUNvbnRlbnQ6ICgoKSA9PiBQcm9taXNlPEFycmF5QnVmZmVyPikgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgdGhlIGR1cGxpY2F0ZSBjaGVjayBiZSBza2lwcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2hvdWxkIHRoZSBnZW5lcmF0ZWQgYXR0YWNobWVudCBmaWxlIG5hbWUgYmUgc2tpcHBlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNraXBHZW5lcmF0ZWRBdHRhY2htZW50RmlsZU5hbWU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgbWlzc2luZyBhdHRhY2htZW50IGZvbGRlciBjcmVhdGlvbiBiZSBza2lwcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcE1pc3NpbmdBdHRhY2htZW50Rm9sZGVyQ3JlYXRpb246IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogVGhlIHNsaWNlIG9mIGBDdXN0b20gQXR0YWNobWVudCBMb2NhdGlvbmAncyByZWdpc3RyeSBBUEkgdGhpcyBtb2R1bGUgY2FsbHMsIGRlY2xhcmVkIGhlcmUgcmF0aGVyIHRoYW4gaW1wb3J0ZWQ6XG4gKiB0aGF0IHBsdWdpbiBzaGlwcyBpdHMgc3VyZmFjZSBhcyBhIGhhbmQtd3JpdHRlbiBgYXBpLmQudHNgLCBub3QgYXMgYSBwYWNrYWdlIChzZWUgcnVsZSBMOSBpbiBgQUdFTlRTLm1kYCkuXG4gKi9cbmludGVyZmFjZSBDdXN0b21BdHRhY2htZW50TG9jYXRpb25BdHRhY2htZW50UGF0aEFwaSB7XG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luJ3MgZnVsbCBhdHRhY2htZW50LXBhdGggcmVzb2x2ZXIuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgc2FtZSBmaWVsZHMgYXMge0BsaW5rIEdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c0V4dGVuZGVkRnVuY3Rpb25QYXJhbXN9LCB3aGljaCB0aGVcbiAgICogICBwbHVnaW4gZGVjbGFyZXMgZmllbGQgZm9yIGZpZWxkLlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBhdHRhY2htZW50J3MgcGF0aCBmcm9tIHRoZSB2YXVsdCByb290LlxuICAgKi9cbiAgZ2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzOiAocGFyYW1zOiBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNFeHRlbmRlZEZ1bmN0aW9uUGFyYW1zKSA9PiBQcm9taXNlPHN0cmluZz47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHVzZXIgZGVzaWduYXRlZCBhIGZvbGRlciBhbiBhdHRhY2htZW50IHVuaXQgZm9sZGVyLiBTeW5jaHJvbm91cyBvbiBwdXJwb3NlLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGZvbGRlci5cbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgZm9sZGVyIGlzIGRlc2lnbmF0ZWQuXG4gICAqL1xuICBpc0F0dGFjaG1lbnRVbml0Rm9sZGVyOiAocGFyYW1zOiBDdXN0b21BdHRhY2htZW50TG9jYXRpb25Jc0F0dGFjaG1lbnRVbml0Rm9sZGVyUGFyYW1zKSA9PiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBDdXN0b21BdHRhY2htZW50TG9jYXRpb25BdHRhY2htZW50UGF0aEFwaS5pc0F0dGFjaG1lbnRVbml0Rm9sZGVyfS5cbiAqL1xuaW50ZXJmYWNlIEN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbklzQXR0YWNobWVudFVuaXRGb2xkZXJQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGZvbGRlciwgYXMgYSB2YXVsdC1yZWxhdGl2ZSBwYXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgZm9sZGVyUGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBwbHVnaW4gaWQgYEN1c3RvbSBBdHRhY2htZW50IExvY2F0aW9uYCBwdWJsaXNoZXMgaXRzIEFQSSB1bmRlci5cbiAqL1xuZXhwb3J0IGNvbnN0IENVU1RPTV9BVFRBQ0hNRU5UX0xPQ0FUSU9OX1BMVUdJTl9JRCA9ICdvYnNpZGlhbi1jdXN0b20tYXR0YWNobWVudC1sb2NhdGlvbic7XG5cbi8qKlxuICogVGhlIGNvbnRyYWN0IHZlcnNpb25zIG9mIGBDdXN0b20gQXR0YWNobWVudCBMb2NhdGlvbmAncyBBUEkgdGhpcyBtb2R1bGUgY29tcGlsZWQgYWdhaW5zdC4gYDEuMy4wYCBpcyB0aGUgZmlyc3RcbiAqIHRvIGNhcnJ5IHRoZSB0d28gYXR0YWNobWVudC1wYXRoIG1ldGhvZHMuXG4gKi9cbmNvbnN0IENVU1RPTV9BVFRBQ0hNRU5UX0xPQ0FUSU9OX0FUVEFDSE1FTlRfUEFUSF9BUElfVkVSU0lPTl9SQU5HRSA9ICdeMS4zLjAnO1xuXG4vKipcbiAqIFRoZSBjb250cmFjdCBvZiB0aGUgbWVtYmVycyBvZiBgQ3VzdG9tIEF0dGFjaG1lbnQgTG9jYXRpb25gJ3MgQVBJIHRoaXMgbW9kdWxlIGNhbGxzLCBzbyBhIHJlY29yZCB0aGF0IGxhY2tzXG4gKiBlaXRoZXIgaXMgcGFzc2VkIG92ZXIsIGFuZCBhIHBheWxvYWQgdGhhdCBicmVha3MgaXRzIHNpZ25hdHVyZSBpcyByZXBvcnRlZCB3aGlsZSB0aGUgYFBsdWdpbkFwaWAgZGVidWdnZXIgaXMgb24uXG4gKlxuICogQSBjb3B5IG9mIHRob3NlIHR3byBlbnRyaWVzIG9mIGBDVVNUT01fQVRUQUNITUVOVF9MT0NBVElPTl9BUElfQ09OVFJBQ1RgLCB3aGljaCBgQ3VzdG9tIEF0dGFjaG1lbnQgTG9jYXRpb25gIHNoaXBzIGFzIGl0cyByb290IGBhcGktY29udHJhY3QudHNgXG4gKiBhbmQgcHVibGlzaGVzLiBLZWVwIHRoZSBndWFyZHMgaW4gYWdyZWVtZW50IHdpdGggdGhhdCBmaWxlLCBzbyB0aGUgcHJvdmlkZXIgYW5kIHRoaXMgY29uc3VtZXIgY2hlY2sgb25lIGRlZmluaXRpb24uXG4gKi9cbmNvbnN0IENVU1RPTV9BVFRBQ0hNRU5UX0xPQ0FUSU9OX0FUVEFDSE1FTlRfUEFUSF9BUElfQ09OVFJBQ1Q6IEFwaUNvbnRyYWN0PEN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkF0dGFjaG1lbnRQYXRoQXBpPiA9IHtcbiAgZ2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzOiB7XG4gICAgaW5wdXQ6IGNyZWF0ZUFyZ3VtZW50c1NjaGVtYTxbcGFyYW1zOiBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNFeHRlbmRlZEZ1bmN0aW9uUGFyYW1zXT4oW3tcbiAgICAgIGV4cGVjdGVkOiAnYXZhaWxhYmxlLXBhdGgtZm9yLWF0dGFjaG1lbnRzIHBhcmFtcycsXG4gICAgICB0eXBlR3VhcmQ6IGlzR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzRXh0ZW5kZWRGdW5jdGlvblBhcmFtc1xuICAgIH1dKSxcbiAgICBvdXRwdXQ6IGNyZWF0ZVR5cGVHdWFyZFNjaGVtYSh7IGV4cGVjdGVkOiAnYW4gYXR0YWNobWVudCBwYXRoJywgdHlwZUd1YXJkOiBpc1N0cmluZyB9KVxuICB9LFxuICBpc0F0dGFjaG1lbnRVbml0Rm9sZGVyOiB7XG4gICAgaW5wdXQ6IGNyZWF0ZUFyZ3VtZW50c1NjaGVtYTxbcGFyYW1zOiBDdXN0b21BdHRhY2htZW50TG9jYXRpb25Jc0F0dGFjaG1lbnRVbml0Rm9sZGVyUGFyYW1zXT4oW3tcbiAgICAgIGV4cGVjdGVkOiAnYXR0YWNobWVudC11bml0LWZvbGRlciBwYXJhbXM6IHsgZm9sZGVyUGF0aDogc3RyaW5nIH0nLFxuICAgICAgdHlwZUd1YXJkOiBpc0N1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbklzQXR0YWNobWVudFVuaXRGb2xkZXJQYXJhbXNcbiAgICB9XSksXG4gICAgb3V0cHV0OiBjcmVhdGVUeXBlR3VhcmRTY2hlbWEoeyBleHBlY3RlZDogJ2EgYm9vbGVhbicsIHR5cGVHdWFyZDogaXNCb29sZWFuIH0pXG4gIH1cbn07XG5cbi8qKlxuICogRHVtbXkgcGF0aC5cbiAqL1xuZXhwb3J0IGNvbnN0IERVTU1ZX1BBVEggPSAnX19EVU1NWV9fJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgZ2V0QXR0YWNobWVudEZpbGVQYXRoIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEF0dGFjaG1lbnRGaWxlUGF0aFBhcmFtcyB7XG4gIC8qKlxuICAgKiBBbiBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBBIGNvbnRleHQuXG4gICAqL1xuICByZWFkb25seSBjb250ZXh0OiBBdHRhY2htZW50UGF0aENvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCBvZiB0aGUgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGVQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBBIHBhdGggb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBvbGRBdHRhY2htZW50UGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcblxuICAvKipcbiAgICogQSBwYXRoIG9mIHRoZSBvbGQgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IG9sZE5vdGVQYXRoT3JGaWxlPzogUGF0aE9yRmlsZSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogU2hvdWxkIHRoZSBkdXBsaWNhdGUgY2hlY2sgYmUgc2tpcHBlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFNraXBEdXBsaWNhdGVDaGVjazogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0QXR0YWNobWVudEZvbGRlclBhdGh9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEF0dGFjaG1lbnRGb2xkZXJQYXRoUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGV4dC5cbiAgICpcbiAgICogQGRlZmF1bHQge0BsaW5rIEF0dGFjaG1lbnRQYXRoQ29udGV4dC5Vbmtub3dufVxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dD86IEF0dGFjaG1lbnRQYXRoQ29udGV4dDtcblxuICAvKipcbiAgICogVGhlIHBhdGggb2YgdGhlIG5vdGUuXG4gICAqL1xuICByZWFkb25seSBub3RlUGF0aE9yRmlsZTogUGF0aE9yRmlsZTtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZ2V0QXR0YWNobWVudEZvbGRlclBhdGhTeW5jT3JOdWxsfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRBdHRhY2htZW50Rm9sZGVyUGF0aFN5bmNPck51bGxQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIG9mIHRoZSBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90ZVBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50cyBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNQYXJhbXMge1xuICAvKipcbiAgICogQW4gT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcbiAgLyoqXG4gICAqIEEgYmFzZSBuYW1lIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpbGVCYXNlTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogQW4gZXh0ZW5zaW9uIG9mIHRoZSBhdHRhY2htZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpbGVFeHRlbnNpb246IHN0cmluZztcbiAgLyoqXG4gICAqIEEgZmlsZSB0byBhdHRhY2ggdG8uXG4gICAqL1xuICByZWFkb25seSBub3RlUGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckZpbGU7XG4gIC8qKlxuICAgKiBTaG91bGQgdGhlIGR1cGxpY2F0ZSBjaGVjayBiZSBza2lwcGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2s/OiBib29sZWFuO1xuICAvKipcbiAgICogU2hvdWxkIG1pc3NpbmcgYXR0YWNobWVudCBmb2xkZXIgY3JlYXRpb24gYmUgc2tpcHBlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcE1pc3NpbmdBdHRhY2htZW50Rm9sZGVyQ3JlYXRpb24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBoYXNPd25BdHRhY2htZW50Rm9sZGVyfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIYXNPd25BdHRhY2htZW50Rm9sZGVyUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGV4dC5cbiAgICpcbiAgICogQGRlZmF1bHQge0BsaW5rIEF0dGFjaG1lbnRQYXRoQ29udGV4dC5Vbmtub3dufVxuICAgKi9cbiAgcmVhZG9ubHkgY29udGV4dD86IEF0dGFjaG1lbnRQYXRoQ29udGV4dDtcblxuICAvKipcbiAgICogVGhlIHBhdGggb2YgdGhlIG5vdGUuXG4gICAqL1xuICByZWFkb25seSBwYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGlzQXRQcm9wZXJBdHRhY2htZW50UGF0aH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSXNBdFByb3BlckF0dGFjaG1lbnRQYXRoUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvciBmaWxlIG9mIHRoZSBhdHRhY2htZW50IHRvIGNoZWNrLlxuICAgKi9cbiAgcmVhZG9ubHkgYXR0YWNobWVudFBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZXh0LlxuICAgKlxuICAgKiBAZGVmYXVsdCB7QGxpbmsgQXR0YWNobWVudFBhdGhDb250ZXh0LlVua25vd259XG4gICAqL1xuICByZWFkb25seSBjb250ZXh0PzogQXR0YWNobWVudFBhdGhDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCBvciBmaWxlIG9mIHRoZSBub3RlIHRoYXQgcmVmZXJlbmNlcyB0aGUgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGVQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRBdHRhY2htZW50RmlsZVBhdGhTeW5jfS5cbiAqL1xuaW50ZXJmYWNlIEdldEF0dGFjaG1lbnRGaWxlUGF0aFN5bmNQYXJhbXMge1xuICAvKipcbiAgICogQW4gT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogQSBwYXRoIG9mIHRoZSBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90ZVBhdGhPckZpbGU6IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIEEgcGF0aCBvZiB0aGUgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlOiBQYXRoT3JGaWxlO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgdGhlIGR1cGxpY2F0ZSBjaGVjayBiZSBza2lwcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNTeW5jfS5cbiAqL1xuaW50ZXJmYWNlIEdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c1N5bmNQYXJhbXMge1xuICAvKipcbiAgICogQW4gT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogQSBiYXNlIG5hbWUgb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50RmlsZUJhc2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFuIGV4dGVuc2lvbiBvZiB0aGUgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgZmlsZSB0byBhdHRhY2ggdG8uXG4gICAqL1xuICByZWFkb25seSBub3RlUGF0aE9yRmlsZTogbnVsbCB8IFBhdGhPckZpbGU7XG5cbiAgLyoqXG4gICAqIFNob3VsZCB0aGUgZHVwbGljYXRlIGNoZWNrIGJlIHNraXBwZWQuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2s/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZXNvbHZlQXR0YWNobWVudEZvbGRlcn0uXG4gKi9cbmludGVyZmFjZSBSZXNvbHZlQXR0YWNobWVudEZvbGRlclBhcmFtcyB7XG4gIC8qKlxuICAgKiBBbiBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBBIGZpbGUgdG8gYXR0YWNoIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90ZVBhdGhPckZpbGU6IG51bGwgfCBQYXRoT3JGaWxlO1xufVxuXG4vKipcbiAqIFRoZSBhdHRhY2htZW50IGZvbGRlciBhIG5vdGUgcmVzb2x2ZXMgdG8sIGJlZm9yZSB0aGUgYXR0YWNobWVudCBmaWxlIG5hbWUgaXMgYXBwZW5kZWQuXG4gKi9cbmludGVyZmFjZSBSZXNvbHZlQXR0YWNobWVudEZvbGRlclJlc3VsdCB7XG4gIC8qKlxuICAgKiBUaGUgYXR0YWNobWVudCBmb2xkZXIsIG9yIGBudWxsYCB3aGVuIGl0IGRvZXMgbm90IGV4aXN0IGluIHRoZSB2YXVsdCB5ZXQuXG4gICAqL1xuICByZWFkb25seSBmb2xkZXI6IG51bGwgfCBURm9sZGVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbm9ybWFsaXplZCBhdHRhY2htZW50IGZvbGRlciBwYXRoLCB3aGV0aGVyIG9yIG5vdCB0aGUgZm9sZGVyIGV4aXN0cy5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhcnQgb2YgdGhlIGBhdHRhY2htZW50Rm9sZGVyUGF0aGAgc2V0dGluZyB0aGF0IGZvbGxvd3MgYC4vYCwgb3IgYG51bGxgIHdoZW4gdGhlIHNldHRpbmcgaXMgbm90XG4gICAqIHJlbGF0aXZlIHRvIHRoZSBub3RlLiBPbmx5IGEgcmVsYXRpdmUgc2V0dGluZyBtYXkgaGF2ZSBpdHMgbWlzc2luZyBmb2xkZXIgY3JlYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHJlbGF0aXZlUGF0aDogbnVsbCB8IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGZpbGUgcGF0aCBmb3IgYW4gYXR0YWNobWVudCB3aXRoaW4gYSBub3RlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGZvciB0aGUgZ2V0IGF0dGFjaG1lbnQgZmlsZSBwYXRoIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgZmlsZSBwYXRoIG9mIHRoZSBhdHRhY2htZW50LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QXR0YWNobWVudEZpbGVQYXRoKHBhcmFtczogR2V0QXR0YWNobWVudEZpbGVQYXRoUGFyYW1zKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBub3RlUGF0aE9yRmlsZSxcbiAgICBvbGRBdHRhY2htZW50UGF0aE9yRmlsZSxcbiAgICBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2tcbiAgfSA9IHBhcmFtcztcblxuICBjb25zdCBjdXN0b21BdHRhY2htZW50TG9jYXRpb25BcGkgPSBmaW5kQ3VzdG9tQXR0YWNobWVudExvY2F0aW9uQXBpKCk7XG4gIGlmICghY3VzdG9tQXR0YWNobWVudExvY2F0aW9uQXBpKSB7XG4gICAgLy8gTm9ib2R5IG92ZXJyaWRlcyB0aGUgcmVzb2x1dGlvbiwgc28gaXQgaXMgZW50aXJlbHkgc3luY2hyb25vdXMuXG4gICAgLy8gVGhlIHNhbWUgY29yZSBhbnN3ZXJzIGBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aFN5bmNPck51bGxgLCB3aGljaCBpcyB3aGF0IGtlZXBzIHRoZSB0d28gaW4gc3RlcC5cbiAgICByZXR1cm4gZ2V0QXR0YWNobWVudEZpbGVQYXRoU3luYyh7XG4gICAgICBhcHAsXG4gICAgICBub3RlUGF0aE9yRmlsZSxcbiAgICAgIG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlLFxuICAgICAgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBhdHRhY2htZW50UGF0aCA9IGdldFBhdGgoYXBwLCBvbGRBdHRhY2htZW50UGF0aE9yRmlsZSk7XG4gIGNvbnN0IGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uID0gZXh0bmFtZShhdHRhY2htZW50UGF0aCk7XG4gIGNvbnN0IGF0dGFjaG1lbnRGaWxlQmFzZU5hbWUgPSBiYXNlbmFtZShhdHRhY2htZW50UGF0aCwgYXR0YWNobWVudEZpbGVFeHRlbnNpb24pO1xuICBjb25zdCBhdHRhY2htZW50RmlsZSA9IGdldEZpbGVPck51bGwoeyBhcHAsIHBhdGhPckZpbGU6IGF0dGFjaG1lbnRQYXRoIH0pO1xuXG4gIHJldHVybiBhd2FpdCBjdXN0b21BdHRhY2htZW50TG9jYXRpb25BcGkuZ2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzKHtcbiAgICBhdHRhY2htZW50RmlsZUJhc2VOYW1lLFxuICAgIGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uOiBhdHRhY2htZW50RmlsZUV4dGVuc2lvbi5zbGljZSgxKSxcbiAgICBhdHRhY2htZW50RmlsZVN0YXRzOiBhdHRhY2htZW50RmlsZT8uc3RhdCxcbiAgICBjb250ZXh0OiBwYXJhbXMuY29udGV4dCxcbiAgICBub3RlUGF0aE9yRmlsZSxcbiAgICBvbGRBdHRhY2htZW50UGF0aE9yRmlsZSxcbiAgICBvbGROb3RlUGF0aE9yRmlsZTogcGFyYW1zLm9sZE5vdGVQYXRoT3JGaWxlLFxuICAgIHJlYWRBdHRhY2htZW50RmlsZUNvbnRlbnQ6IGF0dGFjaG1lbnRGaWxlID8gKCk6IFByb21pc2U8QXJyYXlCdWZmZXI+ID0+IGFwcC52YXVsdC5yZWFkQmluYXJ5KGF0dGFjaG1lbnRGaWxlKSA6IG51bGwsXG4gICAgc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrLFxuICAgIHNob3VsZFNraXBNaXNzaW5nQXR0YWNobWVudEZvbGRlckNyZWF0aW9uOiB0cnVlXG4gIH0pO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgYXR0YWNobWVudCBmb2xkZXIgcGF0aCBmb3IgYSBnaXZlbiBub3RlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGZvciB0aGUgZ2V0IGF0dGFjaG1lbnQgZm9sZGVyIHBhdGggZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBhdHRhY2htZW50IGZvbGRlciBwYXRoLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QXR0YWNobWVudEZvbGRlclBhdGgocGFyYW1zOiBHZXRBdHRhY2htZW50Rm9sZGVyUGF0aFBhcmFtcyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgY29udGV4dCA9IEF0dGFjaG1lbnRQYXRoQ29udGV4dC5Vbmtub3duLFxuICAgIG5vdGVQYXRoT3JGaWxlXG4gIH0gPSBwYXJhbXM7XG4gIHJldHVybiBwYXJlbnRGb2xkZXJQYXRoKFxuICAgIGF3YWl0IGdldEF0dGFjaG1lbnRGaWxlUGF0aCh7XG4gICAgICBhcHAsXG4gICAgICBjb250ZXh0LFxuICAgICAgbm90ZVBhdGhPckZpbGUsXG4gICAgICBvbGRBdHRhY2htZW50UGF0aE9yRmlsZTogRFVNTVlfUEFUSCxcbiAgICAgIHNob3VsZFNraXBEdXBsaWNhdGVDaGVjazogdHJ1ZVxuICAgIH0pXG4gICk7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBhdHRhY2htZW50IGZvbGRlciBwYXRoIGZvciBhIGdpdmVuIG5vdGUgKipzeW5jaHJvbm91c2x5KiosIHdoZW4gdGhhdCBpcyBwb3NzaWJsZSBhdCBhbGwuXG4gKlxuICogT2JzaWRpYW4gYnVpbGRzIGl0cyBmaWxlL2ZvbGRlciBjb250ZXh0IG1lbnVzIGFuZCBldmFsdWF0ZXMgYSBjb21tYW5kJ3MgYGNoZWNrQ2FsbGJhY2tgIHN5bmNocm9ub3VzbHksIHNvIGFcbiAqIGNhbGxlciBkZWNpZGluZyB3aGV0aGVyIHRvIG1lcmVseSAqb2ZmZXIqIGEgY29tbWFuZCBjYW5ub3QgYXdhaXQge0BsaW5rIGdldEF0dGFjaG1lbnRGb2xkZXJQYXRofS4gVGhpcyBpc1xuICogdGhlIHN5bmNocm9ub3VzIHR3aW4gc3VjaCBhIGNhbGxlciBjYW4gdXNlIGluc3RlYWQuXG4gKlxuICogVGhlIGFuc3dlciBpcyBgbnVsbGAgd2hlbiBpdCBpcyBub3Qga25vd2FibGUgc3luY2hyb25vdXNseSDigJQgdGhhdCBpcywgd2hlbiBgQ3VzdG9tIEF0dGFjaG1lbnQgTG9jYXRpb25gIHB1Ymxpc2hlc1xuICogaXRzIGF0dGFjaG1lbnQtcGF0aCBBUEkgYW5kIHRoZXJlZm9yZSBvd25zIHRoZSByZXNvbHV0aW9uLCB3aGljaCBpcyBnZW51aW5lbHkgYXN5bmNocm9ub3VzLiBgbnVsbGAgbWVhbnMgXCJhc2sge0BsaW5rIGdldEF0dGFjaG1lbnRGb2xkZXJQYXRofVwiLCBuZXZlciBcInRoZXJlIGlzIG5vIGF0dGFjaG1lbnRcbiAqIGZvbGRlclwiLiBPdGhlcndpc2UgdGhlIGFuc3dlciBpcyBleGFjdCByYXRoZXIgdGhhbiBhIGd1ZXNzOiBpdCBpcyBwcm9kdWNlZCBieSB0aGUgdmVyeSBzYW1lIGNvZGVcbiAqIHtAbGluayBnZXRBdHRhY2htZW50Rm9sZGVyUGF0aH0gcnVucywgd2hvc2Ugb25seSBhc3luY2hyb25vdXMgc3RlcCDigJQgY3JlYXRpbmcgYSBtaXNzaW5nIGF0dGFjaG1lbnQgZm9sZGVyIOKAlFxuICogaXMgdW5yZWFjaGFibGUgb24gdGhpcyBwYXRoLlxuICpcbiAqIFRoZXJlIGlzIGRlbGliZXJhdGVseSBubyBgY29udGV4dGAgcGFyYW1ldGVyOiB7QGxpbmsgQXR0YWNobWVudFBhdGhDb250ZXh0fSBvbmx5IGV2ZXIgcmVhY2hlcyB0aGF0IHBsdWdpbidzXG4gKiByZXNvbHZlciwgYW5kIHRoaXMgZnVuY3Rpb24gYW5zd2VycyBgbnVsbGAgd2hlbmV2ZXIgaXQgaXMgcHVibGlzaGVkLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGZvciB0aGUgZ2V0IGF0dGFjaG1lbnQgZm9sZGVyIHBhdGggc3luYyBvciBudWxsIGZ1bmN0aW9uLlxuICogQHJldHVybnMgVGhlIGF0dGFjaG1lbnQgZm9sZGVyIHBhdGgsIG9yIGBudWxsYCB3aGVuIGl0IGNhbiBvbmx5IGJlIHJlc29sdmVkIGFzeW5jaHJvbm91c2x5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXR0YWNobWVudEZvbGRlclBhdGhTeW5jT3JOdWxsKHBhcmFtczogR2V0QXR0YWNobWVudEZvbGRlclBhdGhTeW5jT3JOdWxsUGFyYW1zKTogbnVsbCB8IHN0cmluZyB7XG4gIGNvbnN0IHtcbiAgICBhcHAsXG4gICAgbm90ZVBhdGhPckZpbGVcbiAgfSA9IHBhcmFtcztcblxuICByZXR1cm4gZmluZEN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkFwaSgpXG4gICAgPyBudWxsXG4gICAgOiBwYXJlbnRGb2xkZXJQYXRoKGdldEF0dGFjaG1lbnRGaWxlUGF0aFN5bmMoe1xuICAgICAgYXBwLFxuICAgICAgbm90ZVBhdGhPckZpbGUsXG4gICAgICBvbGRBdHRhY2htZW50UGF0aE9yRmlsZTogRFVNTVlfUEFUSCxcbiAgICAgIHNob3VsZFNraXBEdXBsaWNhdGVDaGVjazogdHJ1ZVxuICAgIH0pKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGF2YWlsYWJsZSBwYXRoIGZvciBhdHRhY2htZW50cy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIGdldCBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHMocGFyYW1zOiBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNQYXJhbXMpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIG5vdGVQYXRoT3JGaWxlLFxuICAgIHNob3VsZFNraXBNaXNzaW5nQXR0YWNobWVudEZvbGRlckNyZWF0aW9uXG4gIH0gPSBwYXJhbXM7XG5cbiAgLy8gTWF0ZXJpYWxpemluZyBhIG1pc3NpbmcgYXR0YWNobWVudCBmb2xkZXIgaXMgdGhlIE9ORSBnZW51aW5lbHkgYXN5bmNocm9ub3VzIHN0ZXAgaW4gdGhpcyBmdW5jdGlvbi5cbiAgLy8gRXZlcnl0aGluZyBlbHNlIGxpdmVzIGluIHRoZSBzeW5jaHJvbm91cyBjb3JlLCB3aGljaCB0aGUgc3luY2hyb25vdXMgZW50cnkgcG9pbnRzIHJldXNlIHZlcmJhdGltLlxuICBjb25zdCBhdHRhY2htZW50Rm9sZGVyID0gcmVzb2x2ZUF0dGFjaG1lbnRGb2xkZXIoeyBhcHAsIG5vdGVQYXRoT3JGaWxlIH0pO1xuICBpZiAoIWF0dGFjaG1lbnRGb2xkZXIuZm9sZGVyICYmIGF0dGFjaG1lbnRGb2xkZXIucmVsYXRpdmVQYXRoICYmICFzaG91bGRTa2lwTWlzc2luZ0F0dGFjaG1lbnRGb2xkZXJDcmVhdGlvbikge1xuICAgIGF3YWl0IGFwcC52YXVsdC5jcmVhdGVGb2xkZXIoYXR0YWNobWVudEZvbGRlci5wYXRoKTtcbiAgfVxuXG4gIHJldHVybiBnZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNTeW5jKHBhcmFtcyk7XG59XG5cbi8qKlxuICogUmVhZHMgdGhlIGF0dGFjaG1lbnQtdW5pdC1mb2xkZXIgZGVzaWduYXRpb24gYEN1c3RvbSBBdHRhY2htZW50IExvY2F0aW9uYCBwdWJsaXNoZXMgdGhyb3VnaCBpdHMgcGx1Z2luIEFQSS5cbiAqXG4gKiBUaGUgZGVzaWduYXRpb24gaXMgb25lIHBsdWdpbidzIHNldHRpbmcgYnV0IGV2ZXJ5IHJlbG9jYXRpbmcgcGx1Z2luJ3MgYnVzaW5lc3MsIHNvIGl0IGlzIHJlYWQgZnJvbSB0aGUgc2FtZVxuICogQVBJIHRoYXQgYW5zd2VycyB0aGUgYXR0YWNobWVudCBwYXRoIGl0c2VsZi4gUmVhZGluZyBpdCBoZXJlIHJhdGhlciB0aGFuIGhhdmluZyBlYWNoIGNhbGxlciBsb29rIGZvciB0aGVcbiAqIHBsdWdpbiBpcyB0aGUgcG9pbnQg4oCUIGEgZm9sZGVyIGtlcHQgd2hvbGUgYnkgb25lIHBsdWdpbiBhbmQgdG9ybiBhcGFydCBieSBhbm90aGVyIGlzIGV4YWN0bHkgdGhlIGZhaWx1cmVcbiAqIGBmaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRoYCBleGlzdHMgdG8gcHJldmVudC5cbiAqXG4gKiBgdW5kZWZpbmVkYCBtZWFucyBub2JvZHkgcHVibGlzaGVkIGEgZGVzaWduYXRpb24sIHRoZSBzYW1lIFwibm9ib2R5IG93bnMgdGhpcyBwb2xpY3lcIiBhbnN3ZXIgdGhhdCBzZW5kc1xuICoge0BsaW5rIGdldEF0dGFjaG1lbnRGaWxlUGF0aH0gdG8gT2JzaWRpYW4ncyBvd24gcmVzb2x1dGlvbi4gSXQgaXMgZGlzdGluY3QgZnJvbSBhIGRlc2lnbmF0aW9uIHRoYXQgYW5zd2Vyc1xuICogYGZhbHNlYCBmb3IgZXZlcnkgZm9sZGVyLlxuICpcbiAqIFRoZSByZWdpc3RyeSBpcyBsb29rZWQgdXAgb25jZSwgd2hlbiB0aGlzIGlzIGNhbGxlZCwgc28gYSBjYWxsZXIgd2Fsa2luZyBhIGZvbGRlcidzIGFuY2VzdG9ycyBhc2tzIHRoZSBzYW1lXG4gKiBBUEkgYWxsIHRoZSB3YXkgdXAuXG4gKlxuICogQHBhcmFtIF9hcHAgLSBBbiBPYnNpZGlhbiBhcHBsaWNhdGlvbiBpbnN0YW5jZS4gVW51c2VkIHNpbmNlIHRoZSBhbnN3ZXIgY29tZXMgZnJvbSB0aGUgcGx1Z2luIEFQSSByZWdpc3RyeTtcbiAqICAga2VwdCBzbyBleGlzdGluZyBjYWxsZXJzIGNvbXBpbGUgdW5jaGFuZ2VkLlxuICogQHJldHVybnMgVGhlIGRlc2lnbmF0aW9uIHByZWRpY2F0ZSwgb3IgYHVuZGVmaW5lZGAgd2hlbiBub2JvZHkgcHVibGlzaGVkIG9uZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoZWNrSXNBdHRhY2htZW50VW5pdEZvbGRlckZ1bmN0aW9uKF9hcHA6IEFwcCk6ICgoZm9sZGVyUGF0aDogc3RyaW5nKSA9PiBib29sZWFuKSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkFwaSA9IGZpbmRDdXN0b21BdHRhY2htZW50TG9jYXRpb25BcGkoKTtcbiAgcmV0dXJuIGN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkFwaVxuICAgID8gKGZvbGRlclBhdGg6IHN0cmluZyk6IGJvb2xlYW4gPT4gY3VzdG9tQXR0YWNobWVudExvY2F0aW9uQXBpLmlzQXR0YWNobWVudFVuaXRGb2xkZXIoeyBmb2xkZXJQYXRoIH0pXG4gICAgOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBub3RlJ3MgYXR0YWNobWVudCBmb2xkZXIgaXMgc3BlY2lmaWMgdG8gdGhhdCBub3RlIHJhdGhlciB0aGFuIHNoYXJlZCB3aXRoIGl0cyBzaWJsaW5ncy5cbiAqXG4gKiBUaGUgYW5zd2VyIGlzIGRlcml2ZWQgYnkgY29tcGFyaW5nIHRoZSBub3RlJ3MgYXR0YWNobWVudCBmb2xkZXIgd2l0aCB0aGUgb25lIGEgc2FtZS1mb2xkZXIgc2libGluZyBub3RlXG4gKiB3b3VsZCBnZXQ6IHRoZXkgZGlmZmVyIG9ubHkgd2hlbiB0aGUgZm9sZGVyIGRlcGVuZHMgb24gdGhlIG5vdGUncyBOQU1FLiBFdmVyeSBidWlsdC1pblxuICogYGF0dGFjaG1lbnRGb2xkZXJQYXRoYCBtb2RlIOKAlCB0aGUgdmF1bHQgcm9vdCwgYSBmaXhlZCBmb2xkZXIsIHRoZSBub3RlJ3Mgb3duIGZvbGRlciAoYC4vYCksIGEgc3ViZm9sZGVyIG9mXG4gKiB0aGUgbm90ZSdzIGZvbGRlciAoYC4vc3ViYCkg4oCUIGlzIHNoYXJlZCBieSBldmVyeSBub3RlIGluIHRoYXQgZm9sZGVyLCBzbyBpdCBhbnN3ZXJzIGBmYWxzZWA7IGB0cnVlYCBhcmlzZXNcbiAqIGZyb20gYEN1c3RvbSBBdHRhY2htZW50IExvY2F0aW9uYCdzIHJlc29sdmVyIGRlcml2aW5nIHRoZSBmb2xkZXIgZnJvbSB0aGUgbm90ZSdzIG5hbWUuXG4gKlxuICogVGhpcyBpcyB0aGUgZGlzdGluY3Rpb24gYSBjYWxsZXIgbmVlZHMgYmVmb3JlIHN3ZWVwaW5nIGFuIGF0dGFjaG1lbnQgZm9sZGVyIHdob2xlc2FsZTogb25seSBhXG4gKiBub3RlLXNwZWNpZmljIGZvbGRlciBjYW4gYmUgdHJlYXRlZCBhcyBiZWxvbmdpbmcgdG8gdGhlIG5vdGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFBhcmFtZXRlcnMgZm9yIHRoZSBoYXMgb3duIGF0dGFjaG1lbnQgZm9sZGVyIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBub3RlIGhhcyBpdHMgb3duIGF0dGFjaG1lbnQgZm9sZGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFzT3duQXR0YWNobWVudEZvbGRlcihwYXJhbXM6IEhhc093bkF0dGFjaG1lbnRGb2xkZXJQYXJhbXMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBjb250ZXh0ID0gQXR0YWNobWVudFBhdGhDb250ZXh0LlVua25vd24sXG4gICAgcGF0aFxuICB9ID0gcGFyYW1zO1xuICBjb25zdCBhdHRhY2htZW50Rm9sZGVyUGF0aCA9IGF3YWl0IGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoKHtcbiAgICBhcHAsXG4gICAgY29udGV4dCxcbiAgICBub3RlUGF0aE9yRmlsZTogcGF0aFxuICB9KTtcbiAgY29uc3QgZHVtbXlBdHRhY2htZW50Rm9sZGVyUGF0aCA9IGF3YWl0IGdldEF0dGFjaG1lbnRGb2xkZXJQYXRoKHtcbiAgICBhcHAsXG4gICAgY29udGV4dCxcbiAgICBub3RlUGF0aE9yRmlsZTogam9pbihkaXJuYW1lKHBhdGgpLCBgJHtEVU1NWV9QQVRIfS4ke01BUktET1dOX0ZJTEVfRVhURU5TSU9OfWApXG4gIH0pO1xuICByZXR1cm4gYXR0YWNobWVudEZvbGRlclBhdGggIT09IGR1bW15QXR0YWNobWVudEZvbGRlclBhdGg7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYW4gYXR0YWNobWVudCBhbHJlYWR5IHNpdHMgYXQgaXRzIHByb3BlciBhdHRhY2htZW50IHBhdGguXG4gKlxuICogUmV0dXJucyBgdHJ1ZWAgd2hlbiB0aGUgYXR0YWNobWVudCdzIGN1cnJlbnQgcGF0aCBpcywgd2l0aGluIGl0cyBwcm9wZXIgYXR0YWNobWVudCBmb2xkZXIsIGVpdGhlciB0aGUgcHJvcGVyXG4gKiBiYXNlIG5hbWUgb3IgdGhlIHByb3BlciBiYXNlIG5hbWUgcGx1cyBhbiBPYnNpZGlhbiBkZWR1cGxpY2F0aW9uIHN1ZmZpeCAoYSBzcGFjZSBmb2xsb3dlZCBieSBkaWdpdHMsIGUuZy5cbiAqIGBpbWcgMWApIHdpdGggdGhlIHNhbWUgZXh0ZW5zaW9uLiBUaGUgcHJvcGVyIHBhdGggaXMgY29tcHV0ZWQgdmlhIHtAbGluayBnZXRBdHRhY2htZW50RmlsZVBhdGh9IHdpdGhcbiAqIHtAbGluayBHZXRBdHRhY2htZW50RmlsZVBhdGhQYXJhbXMuc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrfSBzZXQgdG8gYHRydWVgICh0aGUgdGFyZ2V0IGJlZm9yZSBhbnlcbiAqIGRlZHVwbGljYXRpb24gc3VmZml4KSwgYW5kIHRoZSBjb21wYXJpc29uIHJlc3BlY3RzIHRoZSBmaWxlIHN5c3RlbSBjYXNlLXNlbnNpdGl2aXR5IGZsYWdcbiAqIChgZ2V0RGF0YUFkYXB0ZXJFeChhcHApLmluc2Vuc2l0aXZlYCkgdGhhdCBgZ2V0U2FmZVJlbmFtZVBhdGhgIHVzZXMuXG4gKlxuICogVGhpcyBsZXRzIGEgY2FsbGVyIHJlY29nbml6ZSBhIGRlZHVwbGljYXRpb24tcGFya2VkIGF0dGFjaG1lbnQgYXMgYWxyZWFkeS1jb2xsZWN0ZWQsIHNvIGEgXCJuZWVkcyBtb3ZlP1wiXG4gKiBkZWNpc2lvbiBtYWRlIGFnYWluc3QgdGhlIGRlZHVwbGljYXRpb24tZnJlZSBwcm9wZXIgcGF0aCBjb252ZXJnZXMgaW5zdGVhZCBvZiByZS1zY2hlZHVsaW5nIHRoZSBmaWxlIGZvcmV2ZXIuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFBhcmFtZXRlcnMgZm9yIHRoZSBpcyBhdCBwcm9wZXIgYXR0YWNobWVudCBwYXRoIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byBgdHJ1ZWAgd2hlbiB0aGUgYXR0YWNobWVudCBpcyBhbHJlYWR5IGF0IGl0cyBwcm9wZXIgcGF0aC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlzQXRQcm9wZXJBdHRhY2htZW50UGF0aChwYXJhbXM6IElzQXRQcm9wZXJBdHRhY2htZW50UGF0aFBhcmFtcyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIGF0dGFjaG1lbnRQYXRoT3JGaWxlLFxuICAgIGNvbnRleHQgPSBBdHRhY2htZW50UGF0aENvbnRleHQuVW5rbm93bixcbiAgICBub3RlUGF0aE9yRmlsZVxuICB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IGN1cnJlbnRQYXRoID0gZ2V0UGF0aChhcHAsIGF0dGFjaG1lbnRQYXRoT3JGaWxlKTtcbiAgY29uc3QgcHJvcGVyUGF0aCA9IGF3YWl0IGdldEF0dGFjaG1lbnRGaWxlUGF0aCh7XG4gICAgYXBwLFxuICAgIGNvbnRleHQsXG4gICAgbm90ZVBhdGhPckZpbGUsXG4gICAgb2xkQXR0YWNobWVudFBhdGhPckZpbGU6IGF0dGFjaG1lbnRQYXRoT3JGaWxlLFxuICAgIHNob3VsZFNraXBEdXBsaWNhdGVDaGVjazogdHJ1ZVxuICB9KTtcblxuICBjb25zdCBpc0luc2Vuc2l0aXZlID0gZ2V0RGF0YUFkYXB0ZXJFeChhcHApLmluc2Vuc2l0aXZlO1xuXG4gIGZ1bmN0aW9uIGZvbGQodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGlzSW5zZW5zaXRpdmUgPyB2YWx1ZS50b0xvd2VyQ2FzZSgpIDogdmFsdWU7XG4gIH1cblxuICBpZiAoZm9sZChkaXJuYW1lKGN1cnJlbnRQYXRoKSkgIT09IGZvbGQoZGlybmFtZShwcm9wZXJQYXRoKSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBjdXJyZW50RXh0ZW5zaW9uID0gZXh0bmFtZShjdXJyZW50UGF0aCk7XG4gIGNvbnN0IHByb3BlckV4dGVuc2lvbiA9IGV4dG5hbWUocHJvcGVyUGF0aCk7XG4gIGlmIChmb2xkKGN1cnJlbnRFeHRlbnNpb24pICE9PSBmb2xkKHByb3BlckV4dGVuc2lvbikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBjdXJyZW50QmFzZU5hbWUgPSBiYXNlbmFtZShjdXJyZW50UGF0aCwgY3VycmVudEV4dGVuc2lvbik7XG4gIGNvbnN0IHByb3BlckJhc2VOYW1lID0gYmFzZW5hbWUocHJvcGVyUGF0aCwgcHJvcGVyRXh0ZW5zaW9uKTtcblxuICBpZiAoZm9sZChjdXJyZW50QmFzZU5hbWUpID09PSBmb2xkKHByb3BlckJhc2VOYW1lKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY29uc3QgZGVkdXBsaWNhdGlvblByZWZpeCA9IGAke3Byb3BlckJhc2VOYW1lfSBgO1xuICBpZiAoIWZvbGQoY3VycmVudEJhc2VOYW1lKS5zdGFydHNXaXRoKGZvbGQoZGVkdXBsaWNhdGlvblByZWZpeCkpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgZGVkdXBsaWNhdGlvblN1ZmZpeCA9IGN1cnJlbnRCYXNlTmFtZS5zbGljZShkZWR1cGxpY2F0aW9uUHJlZml4Lmxlbmd0aCk7XG4gIHJldHVybiAvXlxcZCskLy50ZXN0KGRlZHVwbGljYXRpb25TdWZmaXgpO1xufVxuXG4vKipcbiAqIEZpbmRzIGBDdXN0b20gQXR0YWNobWVudCBMb2NhdGlvbmAncyBhdHRhY2htZW50LXBhdGggQVBJIGluIHRoZSBwbHVnaW4gQVBJIHJlZ2lzdHJ5LiBJdHMgcHJlc2VuY2UgaXMgdGhlXG4gKiBzeW5jaHJvbm91cyBwcm9iZSBmb3IgXCJzb21lYm9keSBlbHNlIG93bnMgdGhlIHJlc29sdXRpb25cIi5cbiAqXG4gKiBAcmV0dXJucyBUaGUgQVBJLCBvciBgbnVsbGAgd2hlbiB0aGF0IHBsdWdpbiBwdWJsaXNoZXMgbm8gcmVjb3JkIHNhdGlzZnlpbmcgdGhlIHJhbmdlIGFuZCBjb250cmFjdC5cbiAqL1xuZnVuY3Rpb24gZmluZEN1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbkFwaSgpOiBDdXN0b21BdHRhY2htZW50TG9jYXRpb25BdHRhY2htZW50UGF0aEFwaSB8IG51bGwge1xuICByZXR1cm4gZmluZFBsdWdpbkFwaTxDdXN0b21BdHRhY2htZW50TG9jYXRpb25BdHRhY2htZW50UGF0aEFwaT4oe1xuICAgIGFwaVZlcnNpb25SYW5nZTogQ1VTVE9NX0FUVEFDSE1FTlRfTE9DQVRJT05fQVRUQUNITUVOVF9QQVRIX0FQSV9WRVJTSU9OX1JBTkdFLFxuICAgIGNvbnRyYWN0OiBDVVNUT01fQVRUQUNITUVOVF9MT0NBVElPTl9BVFRBQ0hNRU5UX1BBVEhfQVBJX0NPTlRSQUNULFxuICAgIHBsdWdpbklkOiBDVVNUT01fQVRUQUNITUVOVF9MT0NBVElPTl9QTFVHSU5fSURcbiAgfSk7XG59XG5cbi8qKlxuICogVGhlIHN5bmNocm9ub3VzIGNvcmUgb2Yge0BsaW5rIGdldEF0dGFjaG1lbnRGaWxlUGF0aH0sIHJlYWNoZWQgd2hlbiBgQ3VzdG9tIEF0dGFjaG1lbnQgTG9jYXRpb25gIHB1Ymxpc2hlcyBub1xuICogYXR0YWNobWVudC1wYXRoIEFQSS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIGdldCBhdHRhY2htZW50IGZpbGUgcGF0aCBzeW5jIGZ1bmN0aW9uLlxuICogQHJldHVybnMgVGhlIGZpbGUgcGF0aCBvZiB0aGUgYXR0YWNobWVudC5cbiAqL1xuZnVuY3Rpb24gZ2V0QXR0YWNobWVudEZpbGVQYXRoU3luYyhwYXJhbXM6IEdldEF0dGFjaG1lbnRGaWxlUGF0aFN5bmNQYXJhbXMpOiBzdHJpbmcge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIG5vdGVQYXRoT3JGaWxlLFxuICAgIG9sZEF0dGFjaG1lbnRQYXRoT3JGaWxlLFxuICAgIHNob3VsZFNraXBEdXBsaWNhdGVDaGVja1xuICB9ID0gcGFyYW1zO1xuICBjb25zdCBhdHRhY2htZW50UGF0aCA9IGdldFBhdGgoYXBwLCBvbGRBdHRhY2htZW50UGF0aE9yRmlsZSk7XG4gIGNvbnN0IGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uID0gZXh0bmFtZShhdHRhY2htZW50UGF0aCk7XG5cbiAgcmV0dXJuIGdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c1N5bmMoe1xuICAgIGFwcCxcbiAgICBhdHRhY2htZW50RmlsZUJhc2VOYW1lOiBiYXNlbmFtZShhdHRhY2htZW50UGF0aCwgYXR0YWNobWVudEZpbGVFeHRlbnNpb24pLFxuICAgIGF0dGFjaG1lbnRGaWxlRXh0ZW5zaW9uOiBhdHRhY2htZW50RmlsZUV4dGVuc2lvbi5zbGljZSgxKSxcbiAgICBub3RlUGF0aE9yRmlsZSxcbiAgICBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2tcbiAgfSk7XG59XG5cbi8qKlxuICogVGhlIHN5bmNocm9ub3VzIGNvcmUgb2Yge0BsaW5rIGdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c30sIHdoaWNoIGNhbm5vdCBjcmVhdGUgYSBtaXNzaW5nIGF0dGFjaG1lbnRcbiAqIGZvbGRlci4gSXRzIGNhbGxlciBjcmVhdGVzIHRoZSBmb2xkZXIgZmlyc3Qgd2hlbiB0aGF0IGlzIHdhbnRlZC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIGdldCBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMgc3luYyBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBhdmFpbGFibGUgcGF0aCBmb3IgYXR0YWNobWVudHMuXG4gKi9cbmZ1bmN0aW9uIGdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c1N5bmMocGFyYW1zOiBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNTeW5jUGFyYW1zKTogc3RyaW5nIHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBhdHRhY2htZW50RmlsZUV4dGVuc2lvbixcbiAgICBub3RlUGF0aE9yRmlsZSxcbiAgICBzaG91bGRTa2lwRHVwbGljYXRlQ2hlY2tcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgYXR0YWNobWVudEZvbGRlciA9IHJlc29sdmVBdHRhY2htZW50Rm9sZGVyKHsgYXBwLCBub3RlUGF0aE9yRmlsZSB9KTtcbiAgY29uc3QgYXR0YWNobWVudEZpbGVCYXNlTmFtZSA9IG5vcm1hbGl6ZVN0cmluZyhub3JtYWxpemVTbGFzaGVzKHBhcmFtcy5hdHRhY2htZW50RmlsZUJhc2VOYW1lKSk7XG5cbiAgLy8gQSBmb2xkZXIgdGhhdCBkb2VzIG5vdCBleGlzdCB5ZXQgc3RpbGwgb3ducyB0aGUgYXR0YWNobWVudCBwYXRoLlxuICAvLyBSZXNvbHZpbmcgaXQgYXMgYSBub24tZXhpc3RpbmcgZm9sZGVyIHN0b3BzIHRoZSBhbnN3ZXIgZnJvbSBjb2xsYXBzaW5nIHRvIHRoZSB2YXVsdCByb290LlxuICBjb25zdCBmb2xkZXIgPSBhdHRhY2htZW50Rm9sZGVyLmZvbGRlciA/PyBnZXRGb2xkZXIoeyBhcHAsIHBhdGhPckZvbGRlcjogYXR0YWNobWVudEZvbGRlci5wYXRoLCBzaG91bGRJbmNsdWRlTm9uRXhpc3Rpbmc6IHRydWUgfSk7XG5cbiAgY29uc3QgcHJlZml4ID0gZm9sZGVyLmdldFBhcmVudFByZWZpeCgpO1xuICByZXR1cm4gc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrXG4gICAgPyBtYWtlRmlsZU5hbWUoe1xuICAgICAgZmlsZUJhc2VOYW1lOiBwcmVmaXggKyBhdHRhY2htZW50RmlsZUJhc2VOYW1lLFxuICAgICAgZmlsZUV4dGVuc2lvbjogYXR0YWNobWVudEZpbGVFeHRlbnNpb25cbiAgICB9KVxuICAgIDogYXBwLnZhdWx0LmdldEF2YWlsYWJsZVBhdGgocHJlZml4ICsgYXR0YWNobWVudEZpbGVCYXNlTmFtZSwgYXR0YWNobWVudEZpbGVFeHRlbnNpb24pO1xufVxuXG5mdW5jdGlvbiBpc0Jvb2xlYW4odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nO1xufVxuXG5mdW5jdGlvbiBpc0N1c3RvbUF0dGFjaG1lbnRMb2NhdGlvbklzQXR0YWNobWVudFVuaXRGb2xkZXJQYXJhbXModmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBDdXN0b21BdHRhY2htZW50TG9jYXRpb25Jc0F0dGFjaG1lbnRVbml0Rm9sZGVyUGFyYW1zIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIFJlZmxlY3QuZ2V0KHZhbHVlLCAnZm9sZGVyUGF0aCcpID09PSAnc3RyaW5nJztcbn1cblxuZnVuY3Rpb24gaXNGaWxlU3RhdHModmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBGaWxlU3RhdHMge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0J1xuICAgICYmIHZhbHVlICE9PSBudWxsXG4gICAgJiYgdHlwZW9mIFJlZmxlY3QuZ2V0KHZhbHVlLCAnY3RpbWUnKSA9PT0gJ251bWJlcidcbiAgICAmJiB0eXBlb2YgUmVmbGVjdC5nZXQodmFsdWUsICdtdGltZScpID09PSAnbnVtYmVyJ1xuICAgICYmIHR5cGVvZiBSZWZsZWN0LmdldCh2YWx1ZSwgJ3NpemUnKSA9PT0gJ251bWJlcic7XG59XG5cbmZ1bmN0aW9uIGlzR2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzRXh0ZW5kZWRGdW5jdGlvblBhcmFtcyh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIEdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c0V4dGVuZGVkRnVuY3Rpb25QYXJhbXMge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWQoa2V5OiBrZXlvZiBHZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNFeHRlbmRlZEZ1bmN0aW9uUGFyYW1zKTogdW5rbm93biB7XG4gICAgcmV0dXJuIFJlZmxlY3QuZ2V0KHZhbHVlIGFzIG9iamVjdCwga2V5KTtcbiAgfVxuXG4gIGNvbnN0IGF0dGFjaG1lbnRGaWxlU3RhdHMgPSByZWFkKCdhdHRhY2htZW50RmlsZVN0YXRzJyk7XG4gIGNvbnN0IGNvbnRleHQgPSByZWFkKCdjb250ZXh0Jyk7XG4gIGNvbnN0IG5vdGVQYXRoT3JGaWxlID0gcmVhZCgnbm90ZVBhdGhPckZpbGUnKTtcbiAgY29uc3Qgb2xkTm90ZVBhdGhPckZpbGUgPSByZWFkKCdvbGROb3RlUGF0aE9yRmlsZScpO1xuICBjb25zdCByZWFkQXR0YWNobWVudEZpbGVDb250ZW50ID0gcmVhZCgncmVhZEF0dGFjaG1lbnRGaWxlQ29udGVudCcpO1xuICByZXR1cm4gdHlwZW9mIHJlYWQoJ2F0dGFjaG1lbnRGaWxlQmFzZU5hbWUnKSA9PT0gJ3N0cmluZydcbiAgICAmJiB0eXBlb2YgcmVhZCgnYXR0YWNobWVudEZpbGVFeHRlbnNpb24nKSA9PT0gJ3N0cmluZydcbiAgICAmJiAoYXR0YWNobWVudEZpbGVTdGF0cyA9PT0gdW5kZWZpbmVkIHx8IGlzRmlsZVN0YXRzKGF0dGFjaG1lbnRGaWxlU3RhdHMpKVxuICAgICYmIE9iamVjdC52YWx1ZXMoQXR0YWNobWVudFBhdGhDb250ZXh0KS5pbmNsdWRlcyhjb250ZXh0KVxuICAgICYmIChub3RlUGF0aE9yRmlsZSA9PT0gbnVsbCB8fCBpc1BhdGhPckZpbGUobm90ZVBhdGhPckZpbGUpKVxuICAgICYmIGlzUGF0aE9yRmlsZShyZWFkKCdvbGRBdHRhY2htZW50UGF0aE9yRmlsZScpKVxuICAgICYmIChvbGROb3RlUGF0aE9yRmlsZSA9PT0gdW5kZWZpbmVkIHx8IGlzUGF0aE9yRmlsZShvbGROb3RlUGF0aE9yRmlsZSkpXG4gICAgJiYgKHJlYWRBdHRhY2htZW50RmlsZUNvbnRlbnQgPT09IG51bGwgfHwgdHlwZW9mIHJlYWRBdHRhY2htZW50RmlsZUNvbnRlbnQgPT09ICdmdW5jdGlvbicpXG4gICAgJiYgaXNPcHRpb25hbEJvb2xlYW4ocmVhZCgnc2hvdWxkU2tpcER1cGxpY2F0ZUNoZWNrJykpXG4gICAgJiYgaXNPcHRpb25hbEJvb2xlYW4ocmVhZCgnc2hvdWxkU2tpcEdlbmVyYXRlZEF0dGFjaG1lbnRGaWxlTmFtZScpKVxuICAgICYmIGlzT3B0aW9uYWxCb29sZWFuKHJlYWQoJ3Nob3VsZFNraXBNaXNzaW5nQXR0YWNobWVudEZvbGRlckNyZWF0aW9uJykpO1xufVxuZnVuY3Rpb24gaXNPcHRpb25hbEJvb2xlYW4odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgfHwgaXNCb29sZWFuKHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gaXNTdHJpbmcodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIGEgcGF0aCBieSBjb21iaW5pbmcgbXVsdGlwbGUgc2xhc2hlcyBpbnRvIGEgc2luZ2xlIHNsYXNoIGFuZCByZW1vdmluZyBsZWFkaW5nIGFuZCB0cmFpbGluZyBzbGFzaGVzLlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gUGF0aCB0byBub3JtYWxpemUuXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBwYXRoLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVTbGFzaGVzKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHBhdGggPSByZXBsYWNlQWxsKHtcbiAgICAkc3RyaW5nOiBwYXRoLFxuICAgIHJlcGxhY2VyOiAnLycsXG4gICAgc2VhcmNoVmFsdWU6IC8oPzpbXFxcXC9dKSsvZ1xuICB9KTtcbiAgcGF0aCA9IHJlcGxhY2VBbGwoe1xuICAgICRzdHJpbmc6IHBhdGgsXG4gICAgcmVwbGFjZXI6ICcnLFxuICAgIHNlYXJjaFZhbHVlOiAvXlxcLyt8XFwvKyQvZ1xuICB9KTtcbiAgcmV0dXJuIHBhdGggfHwgJy8nO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBgYXR0YWNobWVudEZvbGRlclBhdGhgIHNldHRpbmcgYWdhaW5zdCBhIG5vdGUgaW50byBhIGNvbmNyZXRlIGF0dGFjaG1lbnQgZm9sZGVyLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGZvciB0aGUgcmVzb2x2ZSBhdHRhY2htZW50IGZvbGRlciBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIFRoZSByZXNvbHZlZCBhdHRhY2htZW50IGZvbGRlci5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUF0dGFjaG1lbnRGb2xkZXIocGFyYW1zOiBSZXNvbHZlQXR0YWNobWVudEZvbGRlclBhcmFtcyk6IFJlc29sdmVBdHRhY2htZW50Rm9sZGVyUmVzdWx0IHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBub3RlUGF0aE9yRmlsZVxuICB9ID0gcGFyYW1zO1xuICBsZXQgYXR0YWNobWVudEZvbGRlclBhdGggPSBhcHAudmF1bHQuZ2V0Q29uZmlnKCdhdHRhY2htZW50Rm9sZGVyUGF0aCcpIGFzIHN0cmluZztcbiAgY29uc3QgaXNDdXJyZW50Rm9sZGVyID0gYXR0YWNobWVudEZvbGRlclBhdGggPT09ICcuJyB8fCBhdHRhY2htZW50Rm9sZGVyUGF0aCA9PT0gJy4vJztcbiAgY29uc3QgcmVsYXRpdmVQYXRoID0gYXR0YWNobWVudEZvbGRlclBhdGguc3RhcnRzV2l0aCgnLi8nKVxuICAgID8gdHJpbVN0YXJ0KHtcbiAgICAgICRzdHJpbmc6IGF0dGFjaG1lbnRGb2xkZXJQYXRoLFxuICAgICAgcHJlZml4OiAnLi8nXG4gICAgfSlcbiAgICA6IG51bGw7XG5cbiAgLy8gQSBub3RlIHRoYXQgZG9lcyBub3QgZXhpc3QgeWV0IChhIHJlbmFtZSB0YXJnZXQsIGEgZHVtbXkgc2libGluZykgc3RpbGwgYmVsb25ncyB0byBpdHMgb3duIGZvbGRlci5cbiAgLy8gTWF0ZXJpYWxpemluZyBpdCBmcm9tIGl0cyBwYXRoIGtlZXBzIHRoYXQgZm9sZGVyLCB3aGVyZSBhIHZhdWx0IGxvb2t1cCB3b3VsZCBmYWxsIGJhY2sgdG8gdGhlIHJvb3QuXG4gIC8vIE9ubHkgYW4gZXhwbGljaXRseSBub3RlLWxlc3MgYXR0YWNobWVudCByZXNvbHZlcyB0byB0aGUgdmF1bHQgcm9vdC5cbiAgY29uc3Qgbm90ZUZpbGVPck51bGwgPSBub3RlUGF0aE9yRmlsZSA9PT0gbnVsbFxuICAgID8gbnVsbFxuICAgIDogZ2V0RmlsZSh7XG4gICAgICBhcHAsXG4gICAgICBwYXRoT3JGaWxlOiBub3RlUGF0aE9yRmlsZSxcbiAgICAgIHNob3VsZEluY2x1ZGVOb25FeGlzdGluZzogdHJ1ZVxuICAgIH0pO1xuXG4gIGlmIChpc0N1cnJlbnRGb2xkZXIpIHtcbiAgICBhdHRhY2htZW50Rm9sZGVyUGF0aCA9IG5vdGVGaWxlT3JOdWxsID8gbm90ZUZpbGVPck51bGwucGFyZW50Py5wYXRoID8/ICcnIDogJyc7XG4gIH0gZWxzZSBpZiAocmVsYXRpdmVQYXRoKSB7XG4gICAgYXR0YWNobWVudEZvbGRlclBhdGggPSAobm90ZUZpbGVPck51bGwgPyBub3RlRmlsZU9yTnVsbC5wYXJlbnQ/LmdldFBhcmVudFByZWZpeCgpID8/ICcnIDogJycpICsgcmVsYXRpdmVQYXRoO1xuICB9XG5cbiAgYXR0YWNobWVudEZvbGRlclBhdGggPSBub3JtYWxpemVTdHJpbmcobm9ybWFsaXplU2xhc2hlcyhhdHRhY2htZW50Rm9sZGVyUGF0aCkpO1xuXG4gIHJldHVybiB7XG4gICAgZm9sZGVyOiBnZXRGb2xkZXJPck51bGwoeyBhcHAsIGlzQ2FzZUluc2Vuc2l0aXZlOiB0cnVlLCBwYXRoT3JGb2xkZXI6IGF0dGFjaG1lbnRGb2xkZXJQYXRoIH0pLFxuICAgIHBhdGg6IGF0dGFjaG1lbnRGb2xkZXJQYXRoLFxuICAgIHJlbGF0aXZlUGF0aFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFhQSwwQkFHTztBQUNQLGtCQU1PO0FBQ1Asb0JBSU87QUFDUCw2QkFHTztBQUlQLHlCQVFPO0FBQ1Asd0JBQThCO0FBS3ZCLElBQUssd0JBQUwsa0JBQUtBLDJCQUFMO0FBSUwsRUFBQUEsdUJBQUEsZ0JBQWE7QUFLYixFQUFBQSx1QkFBQSxnQkFBYTtBQUtiLEVBQUFBLHVCQUFBLGFBQVU7QUFkQSxTQUFBQTtBQUFBLEdBQUE7QUF3SEwsTUFBTSx1Q0FBdUM7QUFNcEQsTUFBTSwrREFBK0Q7QUFTckUsTUFBTSwwREFBa0g7QUFBQSxFQUN0SCxnQ0FBZ0M7QUFBQSxJQUM5QixXQUFPLDJDQUFzRixDQUFDO0FBQUEsTUFDNUYsVUFBVTtBQUFBLE1BQ1YsV0FBVztBQUFBLElBQ2IsQ0FBQyxDQUFDO0FBQUEsSUFDRixZQUFRLDJDQUFzQixFQUFFLFVBQVUsc0JBQXNCLFdBQVcsU0FBUyxDQUFDO0FBQUEsRUFDdkY7QUFBQSxFQUNBLHdCQUF3QjtBQUFBLElBQ3RCLFdBQU8sMkNBQXNGLENBQUM7QUFBQSxNQUM1RixVQUFVO0FBQUEsTUFDVixXQUFXO0FBQUEsSUFDYixDQUFDLENBQUM7QUFBQSxJQUNGLFlBQVEsMkNBQXNCLEVBQUUsVUFBVSxhQUFhLFdBQVcsVUFBVSxDQUFDO0FBQUEsRUFDL0U7QUFDRjtBQUtPLE1BQU0sYUFBYTtBQThQMUIsZUFBc0Isc0JBQXNCLFFBQXNEO0FBQ2hHLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRixJQUFJO0FBRUosUUFBTSw4QkFBOEIsZ0NBQWdDO0FBQ3BFLE1BQUksQ0FBQyw2QkFBNkI7QUFHaEMsV0FBTywwQkFBMEI7QUFBQSxNQUMvQjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0YsQ0FBQztBQUFBLEVBQ0g7QUFFQSxRQUFNLHFCQUFpQiw0QkFBUSxLQUFLLHVCQUF1QjtBQUMzRCxRQUFNLDhCQUEwQixxQkFBUSxjQUFjO0FBQ3RELFFBQU0sNkJBQXlCLHNCQUFTLGdCQUFnQix1QkFBdUI7QUFDL0UsUUFBTSxxQkFBaUIsa0NBQWMsRUFBRSxLQUFLLFlBQVksZUFBZSxDQUFDO0FBRXhFLFNBQU8sTUFBTSw0QkFBNEIsK0JBQStCO0FBQUEsSUFDdEU7QUFBQSxJQUNBLHlCQUF5Qix3QkFBd0IsTUFBTSxDQUFDO0FBQUEsSUFDeEQscUJBQXFCLGdCQUFnQjtBQUFBLElBQ3JDLFNBQVMsT0FBTztBQUFBLElBQ2hCO0FBQUEsSUFDQTtBQUFBLElBQ0EsbUJBQW1CLE9BQU87QUFBQSxJQUMxQiwyQkFBMkIsaUJBQWlCLE1BQTRCLElBQUksTUFBTSxXQUFXLGNBQWMsSUFBSTtBQUFBLElBQy9HO0FBQUEsSUFDQSwyQ0FBMkM7QUFBQSxFQUM3QyxDQUFDO0FBQ0g7QUFRQSxlQUFzQix3QkFBd0IsUUFBd0Q7QUFDcEcsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBLFVBQVU7QUFBQSxJQUNWO0FBQUEsRUFDRixJQUFJO0FBQ0osYUFBTztBQUFBLElBQ0wsTUFBTSxzQkFBc0I7QUFBQSxNQUMxQjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQSx5QkFBeUI7QUFBQSxNQUN6QiwwQkFBMEI7QUFBQSxJQUM1QixDQUFDO0FBQUEsRUFDSDtBQUNGO0FBcUJPLFNBQVMsa0NBQWtDLFFBQWdFO0FBQ2hILFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSTtBQUVKLFNBQU8sZ0NBQWdDLElBQ25DLFdBQ0EseUNBQWlCLDBCQUEwQjtBQUFBLElBQzNDO0FBQUEsSUFDQTtBQUFBLElBQ0EseUJBQXlCO0FBQUEsSUFDekIsMEJBQTBCO0FBQUEsRUFDNUIsQ0FBQyxDQUFDO0FBQ047QUFRQSxlQUFzQiwrQkFBK0IsUUFBK0Q7QUFDbEgsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSTtBQUlKLFFBQU0sbUJBQW1CLHdCQUF3QixFQUFFLEtBQUssZUFBZSxDQUFDO0FBQ3hFLE1BQUksQ0FBQyxpQkFBaUIsVUFBVSxpQkFBaUIsZ0JBQWdCLENBQUMsMkNBQTJDO0FBQzNHLFVBQU0sSUFBSSxNQUFNLGFBQWEsaUJBQWlCLElBQUk7QUFBQSxFQUNwRDtBQUVBLFNBQU8sbUNBQW1DLE1BQU07QUFDbEQ7QUFxQk8sU0FBUyx1Q0FBdUMsTUFBMEQ7QUFDL0csUUFBTSw4QkFBOEIsZ0NBQWdDO0FBQ3BFLFNBQU8sOEJBQ0gsQ0FBQyxlQUFnQyw0QkFBNEIsdUJBQXVCLEVBQUUsV0FBVyxDQUFDLElBQ2xHO0FBQ047QUFpQkEsZUFBc0IsdUJBQXVCLFFBQXdEO0FBQ25HLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQSxVQUFVO0FBQUEsSUFDVjtBQUFBLEVBQ0YsSUFBSTtBQUNKLFFBQU0sdUJBQXVCLE1BQU0sd0JBQXdCO0FBQUEsSUFDekQ7QUFBQSxJQUNBO0FBQUEsSUFDQSxnQkFBZ0I7QUFBQSxFQUNsQixDQUFDO0FBQ0QsUUFBTSw0QkFBNEIsTUFBTSx3QkFBd0I7QUFBQSxJQUM5RDtBQUFBLElBQ0E7QUFBQSxJQUNBLG9CQUFnQixzQkFBSyxxQkFBUSxJQUFJLEdBQUcsR0FBRyxVQUFVLElBQUksMENBQXVCLEVBQUU7QUFBQSxFQUNoRixDQUFDO0FBQ0QsU0FBTyx5QkFBeUI7QUFDbEM7QUFrQkEsZUFBc0IseUJBQXlCLFFBQTBEO0FBQ3ZHLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLElBQ0EsVUFBVTtBQUFBLElBQ1Y7QUFBQSxFQUNGLElBQUk7QUFFSixRQUFNLGtCQUFjLDRCQUFRLEtBQUssb0JBQW9CO0FBQ3JELFFBQU0sYUFBYSxNQUFNLHNCQUFzQjtBQUFBLElBQzdDO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBLHlCQUF5QjtBQUFBLElBQ3pCLDBCQUEwQjtBQUFBLEVBQzVCLENBQUM7QUFFRCxRQUFNLG9CQUFnQix5Q0FBaUIsR0FBRyxFQUFFO0FBRTVDLFdBQVMsS0FBSyxPQUF1QjtBQUNuQyxXQUFPLGdCQUFnQixNQUFNLFlBQVksSUFBSTtBQUFBLEVBQy9DO0FBRUEsTUFBSSxTQUFLLHFCQUFRLFdBQVcsQ0FBQyxNQUFNLFNBQUsscUJBQVEsVUFBVSxDQUFDLEdBQUc7QUFDNUQsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLHVCQUFtQixxQkFBUSxXQUFXO0FBQzVDLFFBQU0sc0JBQWtCLHFCQUFRLFVBQVU7QUFDMUMsTUFBSSxLQUFLLGdCQUFnQixNQUFNLEtBQUssZUFBZSxHQUFHO0FBQ3BELFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxzQkFBa0Isc0JBQVMsYUFBYSxnQkFBZ0I7QUFDOUQsUUFBTSxxQkFBaUIsc0JBQVMsWUFBWSxlQUFlO0FBRTNELE1BQUksS0FBSyxlQUFlLE1BQU0sS0FBSyxjQUFjLEdBQUc7QUFDbEQsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLHNCQUFzQixHQUFHLGNBQWM7QUFDN0MsTUFBSSxDQUFDLEtBQUssZUFBZSxFQUFFLFdBQVcsS0FBSyxtQkFBbUIsQ0FBQyxHQUFHO0FBQ2hFLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxzQkFBc0IsZ0JBQWdCLE1BQU0sb0JBQW9CLE1BQU07QUFDNUUsU0FBTyxRQUFRLEtBQUssbUJBQW1CO0FBQ3pDO0FBUUEsU0FBUyxrQ0FBb0Y7QUFDM0YsYUFBTyxpQ0FBeUQ7QUFBQSxJQUM5RCxpQkFBaUI7QUFBQSxJQUNqQixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsRUFDWixDQUFDO0FBQ0g7QUFTQSxTQUFTLDBCQUEwQixRQUFpRDtBQUNsRixRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSTtBQUNKLFFBQU0scUJBQWlCLDRCQUFRLEtBQUssdUJBQXVCO0FBQzNELFFBQU0sOEJBQTBCLHFCQUFRLGNBQWM7QUFFdEQsU0FBTyxtQ0FBbUM7QUFBQSxJQUN4QztBQUFBLElBQ0EsNEJBQXdCLHNCQUFTLGdCQUFnQix1QkFBdUI7QUFBQSxJQUN4RSx5QkFBeUIsd0JBQXdCLE1BQU0sQ0FBQztBQUFBLElBQ3hEO0FBQUEsSUFDQTtBQUFBLEVBQ0YsQ0FBQztBQUNIO0FBU0EsU0FBUyxtQ0FBbUMsUUFBMEQ7QUFDcEcsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGLElBQUk7QUFDSixRQUFNLG1CQUFtQix3QkFBd0IsRUFBRSxLQUFLLGVBQWUsQ0FBQztBQUN4RSxRQUFNLDZCQUF5QiwrQkFBZ0IsaUJBQWlCLE9BQU8sc0JBQXNCLENBQUM7QUFJOUYsUUFBTSxTQUFTLGlCQUFpQixjQUFVLDhCQUFVLEVBQUUsS0FBSyxjQUFjLGlCQUFpQixNQUFNLDBCQUEwQixLQUFLLENBQUM7QUFFaEksUUFBTSxTQUFTLE9BQU8sZ0JBQWdCO0FBQ3RDLFNBQU8sK0JBQ0gsMEJBQWE7QUFBQSxJQUNiLGNBQWMsU0FBUztBQUFBLElBQ3ZCLGVBQWU7QUFBQSxFQUNqQixDQUFDLElBQ0MsSUFBSSxNQUFNLGlCQUFpQixTQUFTLHdCQUF3Qix1QkFBdUI7QUFDekY7QUFFQSxTQUFTLFVBQVUsT0FBa0M7QUFDbkQsU0FBTyxPQUFPLFVBQVU7QUFDMUI7QUFFQSxTQUFTLHVEQUF1RCxPQUErRTtBQUM3SSxTQUFPLE9BQU8sVUFBVSxZQUFZLFVBQVUsUUFBUSxPQUFPLFFBQVEsSUFBSSxPQUFPLFlBQVksTUFBTTtBQUNwRztBQUVBLFNBQVMsWUFBWSxPQUFvQztBQUN2RCxTQUFPLE9BQU8sVUFBVSxZQUNuQixVQUFVLFFBQ1YsT0FBTyxRQUFRLElBQUksT0FBTyxPQUFPLE1BQU0sWUFDdkMsT0FBTyxRQUFRLElBQUksT0FBTyxPQUFPLE1BQU0sWUFDdkMsT0FBTyxRQUFRLElBQUksT0FBTyxNQUFNLE1BQU07QUFDN0M7QUFFQSxTQUFTLHVEQUF1RCxPQUErRTtBQUM3SSxNQUFJLE9BQU8sVUFBVSxZQUFZLFVBQVUsTUFBTTtBQUMvQyxXQUFPO0FBQUEsRUFDVDtBQUVBLFdBQVMsS0FBSyxLQUEwRTtBQUN0RixXQUFPLFFBQVEsSUFBSSxPQUFpQixHQUFHO0FBQUEsRUFDekM7QUFFQSxRQUFNLHNCQUFzQixLQUFLLHFCQUFxQjtBQUN0RCxRQUFNLFVBQVUsS0FBSyxTQUFTO0FBQzlCLFFBQU0saUJBQWlCLEtBQUssZ0JBQWdCO0FBQzVDLFFBQU0sb0JBQW9CLEtBQUssbUJBQW1CO0FBQ2xELFFBQU0sNEJBQTRCLEtBQUssMkJBQTJCO0FBQ2xFLFNBQU8sT0FBTyxLQUFLLHdCQUF3QixNQUFNLFlBQzVDLE9BQU8sS0FBSyx5QkFBeUIsTUFBTSxhQUMxQyx3QkFBd0IsVUFBYSxZQUFZLG1CQUFtQixNQUNyRSxPQUFPLE9BQU8scUJBQXFCLEVBQUUsU0FBUyxPQUFPLE1BQ3BELG1CQUFtQixZQUFRLGlDQUFhLGNBQWMsVUFDdkQsaUNBQWEsS0FBSyx5QkFBeUIsQ0FBQyxNQUMzQyxzQkFBc0IsY0FBYSxpQ0FBYSxpQkFBaUIsT0FDakUsOEJBQThCLFFBQVEsT0FBTyw4QkFBOEIsZUFDNUUsa0JBQWtCLEtBQUssMEJBQTBCLENBQUMsS0FDbEQsa0JBQWtCLEtBQUssdUNBQXVDLENBQUMsS0FDL0Qsa0JBQWtCLEtBQUssMkNBQTJDLENBQUM7QUFDMUU7QUFDQSxTQUFTLGtCQUFrQixPQUE4QztBQUN2RSxTQUFPLFVBQVUsVUFBYSxVQUFVLEtBQUs7QUFDL0M7QUFFQSxTQUFTLFNBQVMsT0FBaUM7QUFDakQsU0FBTyxPQUFPLFVBQVU7QUFDMUI7QUFRQSxTQUFTLGlCQUFpQixNQUFzQjtBQUM5QyxhQUFPLDBCQUFXO0FBQUEsSUFDaEIsU0FBUztBQUFBLElBQ1QsVUFBVTtBQUFBLElBQ1YsYUFBYTtBQUFBLEVBQ2YsQ0FBQztBQUNELGFBQU8sMEJBQVc7QUFBQSxJQUNoQixTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsSUFDVixhQUFhO0FBQUEsRUFDZixDQUFDO0FBQ0QsU0FBTyxRQUFRO0FBQ2pCO0FBUUEsU0FBUyx3QkFBd0IsUUFBc0U7QUFDckcsUUFBTTtBQUFBLElBQ0o7QUFBQSxJQUNBO0FBQUEsRUFDRixJQUFJO0FBQ0osTUFBSSx1QkFBdUIsSUFBSSxNQUFNLFVBQVUsc0JBQXNCO0FBQ3JFLFFBQU0sa0JBQWtCLHlCQUF5QixPQUFPLHlCQUF5QjtBQUNqRixRQUFNLGVBQWUscUJBQXFCLFdBQVcsSUFBSSxRQUNyRCx5QkFBVTtBQUFBLElBQ1YsU0FBUztBQUFBLElBQ1QsUUFBUTtBQUFBLEVBQ1YsQ0FBQyxJQUNDO0FBS0osUUFBTSxpQkFBaUIsbUJBQW1CLE9BQ3RDLFdBQ0EsNEJBQVE7QUFBQSxJQUNSO0FBQUEsSUFDQSxZQUFZO0FBQUEsSUFDWiwwQkFBMEI7QUFBQSxFQUM1QixDQUFDO0FBRUgsTUFBSSxpQkFBaUI7QUFDbkIsMkJBQXVCLGlCQUFpQixlQUFlLFFBQVEsUUFBUSxLQUFLO0FBQUEsRUFDOUUsV0FBVyxjQUFjO0FBQ3ZCLDRCQUF3QixpQkFBaUIsZUFBZSxRQUFRLGdCQUFnQixLQUFLLEtBQUssTUFBTTtBQUFBLEVBQ2xHO0FBRUEsNkJBQXVCLCtCQUFnQixpQkFBaUIsb0JBQW9CLENBQUM7QUFFN0UsU0FBTztBQUFBLElBQ0wsWUFBUSxvQ0FBZ0IsRUFBRSxLQUFLLG1CQUFtQixNQUFNLGNBQWMscUJBQXFCLENBQUM7QUFBQSxJQUM1RixNQUFNO0FBQUEsSUFDTjtBQUFBLEVBQ0Y7QUFDRjsiLCJuYW1lcyI6WyJBdHRhY2htZW50UGF0aENvbnRleHQiXX0=
|
|
@@ -2,13 +2,7 @@
|
|
|
2
2
|
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
3
|
if you want to view the source, please visit the github repository of this plugin
|
|
4
4
|
*/
|
|
5
|
-
|
|
6
5
|
(function () {
|
|
7
|
-
function ensureDisposeSymbols(symbolConstructor = Symbol) {
|
|
8
|
-
symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
|
|
9
|
-
symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
|
|
10
|
-
}
|
|
11
|
-
|
|
12
6
|
function ensureBrowserProcess() {
|
|
13
7
|
const browserProcess = {
|
|
14
8
|
browser: true,
|
|
@@ -33,20 +27,7 @@ function ensureBrowserProcess() {
|
|
|
33
27
|
existingProcessRecord["browser"] = true;
|
|
34
28
|
}
|
|
35
29
|
|
|
36
|
-
|
|
37
|
-
return $unknown;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
(function initCjs() {
|
|
41
|
-
const globalThisRecord = globalThis;
|
|
42
|
-
ensureDisposeSymbols();
|
|
43
|
-
globalThisRecord["__name"] ??= keepName;
|
|
44
|
-
globalThisRecord["__extractDefault"] ??= extractDefault;
|
|
45
|
-
ensureBrowserProcess();
|
|
46
|
-
function extractDefault(module) {
|
|
47
|
-
return module && module.__esModule && "default" in module ? module.default : module;
|
|
48
|
-
}
|
|
49
|
-
})();
|
|
30
|
+
ensureBrowserProcess();
|
|
50
31
|
})();
|
|
51
32
|
(function patchObsidianRequire() {
|
|
52
33
|
const originalRequire = require;
|
|
@@ -165,4 +146,4 @@ function rebasePathOntoFolder(params) {
|
|
|
165
146
|
findAttachmentUnitFolderPath,
|
|
166
147
|
rebasePathOntoFolder
|
|
167
148
|
});
|
|
168
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdHRhY2htZW50LXVuaXQtZm9sZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBSZXNvbHZlcyB3aGljaCBmb2xkZXIgYW4gYXR0YWNobWVudCBiZWxvbmdzIHRvIHdoZW4gdGhlIHVzZXIgaGFzIGRlc2lnbmF0ZWQgZm9sZGVycyB0aGF0IG11c3RcbiAqIHRyYXZlbCBhcyBhIHNpbmdsZSB1bml0LlxuICpcbiAqIFNvbWUgZm9ybWF0cyBhcmUgcmVhbGx5IGEgZGlyZWN0b3J5IHRyZWUgcmF0aGVyIHRoYW4gYSBmaWxlOiBhIHBhZ2Ugc2F2ZWQgZnJvbSBhIGJyb3dzZXIgc2l0cyBuZXh0XG4gKiB0byBhIGBfZmlsZXMvYCBmb2xkZXIgaG9sZGluZyBpdHMgaW1hZ2VzIGFuZCBzdHlsZXNoZWV0cywgYW4gYC5leGNhbGlkcmF3YCBzaXRzIG5leHQgdG8gdGhlIGltYWdlc1xuICogaXQgcmVmZXJlbmNlcy4gUmVsb2NhdGluZyBvbmx5IHRoZSBsaW5rZWQgZmlsZSBsZWF2ZXMgdGhlIHJlc3QgYmVoaW5kIGFuZCB0aGUgYXR0YWNobWVudCBhcnJpdmVzXG4gKiBicm9rZW4uXG4gKlxuICogVGhpcyBsaXZlcyBpbiB0aGUgc2hhcmVkIGxpYnJhcnkgcmF0aGVyIHRoYW4gaW4gb25lIHBsdWdpbiBiZWNhdXNlIG1vcmUgdGhhbiBvbmUgcGx1Z2luIHJlbG9jYXRlc1xuICogYXR0YWNobWVudHMgb3ZlciB0aGUgc2FtZSB2YXVsdC4gSWYgdGhleSBlYWNoIGRlY2lkZWQgc2VwYXJhdGVseSB3aGF0IG9uZSBhdHRhY2htZW50IGlzLCBhIHVzZXJcbiAqIHdpdGggYm90aCBpbnN0YWxsZWQgd291bGQgZ2V0IGEgZm9sZGVyIGtlcHQgd2hvbGUgYnkgb25lIGFuZCB0b3JuIGFwYXJ0IGJ5IHRoZSBvdGhlci5cbiAqXG4gKiBXaGljaCBpcyB3aHkgdGhlIGRlc2lnbmF0aW9uIGl0c2VsZiBpcyByZWFkIGZyb20gb25lIHNoYXJlZCBzb3VyY2UgcmF0aGVyIHRoYW4gc3VwcGxpZWQgcGVyIGNhbGxlcjogcGFzc1xuICogYW4ge0BsaW5rIEFwcH0gYW5kIHtAbGluayBmaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRofSB3YWxrcyB3aXRoIHdoYXRldmVyIGBDdXN0b20gQXR0YWNobWVudCBMb2NhdGlvbmBcbiAqIHB1Ymxpc2hlcyB0aHJvdWdoIGl0cyBwbHVnaW4gQVBJLCBzbyBldmVyeSBwbHVnaW4gZGVjaWRlcyBmcm9tIG9uZSBhbnN3ZXIuIFRoZSBleHBsaWNpdC1wcmVkaWNhdGUgZm9ybSByZW1haW5zIGZvciBhIGNhbGxlciB0aGF0IGdlbnVpbmVseSBvd25zIGl0cyBvd24gcGF0dGVybnMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGRpcm5hbWUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5cbmltcG9ydCB7IGdldENoZWNrSXNBdHRhY2htZW50VW5pdEZvbGRlckZ1bmN0aW9uIH0gZnJvbSAnLi9hdHRhY2htZW50LXBhdGgudHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBmaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRofSwgcmVhZGluZyB0aGUgZGVzaWduYXRpb24gYEN1c3RvbSBBdHRhY2htZW50IExvY2F0aW9uYFxuICogcHVibGlzaGVzIHRocm91Z2ggaXRzIHBsdWdpbiBBUEkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aEZyb21BcHBQYXJhbXMge1xuICAvKipcbiAgICogQW4gT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIHZhdWx0LXJlbGF0aXZlIHBhdGggb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50UGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBmaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRofS5cbiAqXG4gKiBQcmVmZXIge0BsaW5rIEZpbmRBdHRhY2htZW50VW5pdEZvbGRlclBhdGhGcm9tQXBwUGFyYW1zfSDigJQgaXQgaXMgdGhlIGZvcm0gdGhhdCBtYWtlcyBldmVyeSBwbHVnaW5cbiAqIGRlY2lkZSBmcm9tIG9uZSBwdWJsaXNoZWQgYW5zd2VyLlxuICovXG5leHBvcnQgdHlwZSBGaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRoUGFyYW1zID0gRmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aEZyb21BcHBQYXJhbXMgfCBGaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRoV2l0aFByZWRpY2F0ZVBhcmFtcztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aH0sIHdhbGtpbmcgd2l0aCBhIHByZWRpY2F0ZSB0aGUgY2FsbGVyIG93bnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aFdpdGhQcmVkaWNhdGVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHZhdWx0LXJlbGF0aXZlIHBhdGggb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50UGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGEgZm9sZGVyIHBhdGggaXMgZGVzaWduYXRlZCBhcyBhbiBhdHRhY2htZW50IHVuaXQuXG4gICAqXG4gICAqIEBwYXJhbSBmb2xkZXJQYXRoIC0gVGhlIHZhdWx0LXJlbGF0aXZlIHBhdGggb2YgdGhlIGZvbGRlci5cbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBmb2xkZXIgaXMgZGVzaWduYXRlZCBhcyBhbiBhdHRhY2htZW50IHVuaXQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgY2hlY2tJc0F0dGFjaG1lbnRVbml0Rm9sZGVyOiAoZm9sZGVyUGF0aDogc3RyaW5nKSA9PiBib29sZWFuO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZWJhc2VQYXRoT250b0ZvbGRlcn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmViYXNlUGF0aE9udG9Gb2xkZXJQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGZvbGRlcidzIG5ldyBwYXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgbmV3Rm9sZGVyUGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZm9sZGVyJ3Mgb2xkIHBhdGguXG4gICAqL1xuICByZWFkb25seSBvbGRGb2xkZXJQYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoIHRvIHJlYmFzZS5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBGaW5kcyB0aGUgZm9sZGVyIHRoYXQgYW4gYXR0YWNobWVudCBtdXN0IHRyYXZlbCB3aXRoLlxuICpcbiAqIFJldHVybnMgdGhlICoqb3V0ZXJtb3N0KiogZGVzaWduYXRlZCBhbmNlc3Rvciwgbm90IHRoZSBuZWFyZXN0IG9uZS4gV2l0aCBuZXN0ZWQgZGVzaWduYXRpb25zLFxuICogbW92aW5nIHRoZSBuZWFyZXN0IHdvdWxkIHRlYXIgdGhlIG91dGVyIHRyZWUgaW4gaGFsZiwgd2hpY2ggaXMgdGhlIGZhaWx1cmUgdGhlIHdob2xlIGZlYXR1cmUgZXhpc3RzXG4gKiB0byBwcmV2ZW50LlxuICpcbiAqIFRoZSB2YXVsdCByb290IGlzIG5ldmVyIGEgdW5pdCwgaG93ZXZlciB0aGUgcGF0dGVybnMgYXJlIHdyaXR0ZW46IGRlc2lnbmF0aW5nIGl0IHdvdWxkIG1ha2UgZXZlcnlcbiAqIHJlbG9jYXRpb24gYSBuby1vcCBhdCBiZXN0IGFuZCBhIHZhdWx0LXdpZGUgbW92ZSBhdCB3b3JzdC5cbiAqXG4gKiBQYXNzaW5nIGFuIHtAbGluayBBcHB9IHdhbGtzIHdpdGggdGhlIGRlc2lnbmF0aW9uIGBDdXN0b20gQXR0YWNobWVudCBMb2NhdGlvbmAgcHVibGlzaGVzIHRocm91Z2ggaXRzIHBsdWdpblxuICogQVBJOyB3aGVuIG5vYm9keSBwdWJsaXNoZWQgb25lLCBub3RoaW5nIGlzIGRlc2lnbmF0ZWQgYW5kIHRoZSBhbnN3ZXIgaXMgYG51bGxgLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgZmluZGluZyB0aGUgYXR0YWNobWVudCB1bml0IGZvbGRlci5cbiAqIEByZXR1cm5zIFRoZSB1bml0IGZvbGRlcidzIHBhdGgsIG9yIGBudWxsYCB3aGVuIHRoZSBhdHRhY2htZW50IGJlbG9uZ3MgdG8gbm8gdW5pdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRBdHRhY2htZW50VW5pdEZvbGRlclBhdGgocGFyYW1zOiBGaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRoUGFyYW1zKTogbnVsbCB8IHN0cmluZyB7XG4gIGNvbnN0IHBhcmVudEZvbGRlclBhdGggPSBkaXJuYW1lKHBhcmFtcy5hdHRhY2htZW50UGF0aCk7XG4gIGlmICghcGFyZW50Rm9sZGVyUGF0aCB8fCBwYXJlbnRGb2xkZXJQYXRoID09PSAnLicgfHwgcGFyZW50Rm9sZGVyUGF0aCA9PT0gJy8nKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBjaGVja0lzQXR0YWNobWVudFVuaXRGb2xkZXIgPSAnY2hlY2tJc0F0dGFjaG1lbnRVbml0Rm9sZGVyJyBpbiBwYXJhbXNcbiAgICA/IHBhcmFtcy5jaGVja0lzQXR0YWNobWVudFVuaXRGb2xkZXJcbiAgICA6IGdldENoZWNrSXNBdHRhY2htZW50VW5pdEZvbGRlckZ1bmN0aW9uKHBhcmFtcy5hcHApO1xuXG4gIGlmICghY2hlY2tJc0F0dGFjaG1lbnRVbml0Rm9sZGVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBzZWdtZW50cyA9IHBhcmVudEZvbGRlclBhdGguc3BsaXQoJy8nKS5maWx0ZXIoQm9vbGVhbik7XG4gIGZvciAobGV0IGNvdW50ID0gMTsgY291bnQgPD0gc2VnbWVudHMubGVuZ3RoOyBjb3VudCsrKSB7XG4gICAgY29uc3QgY2FuZGlkYXRlID0gc2VnbWVudHMuc2xpY2UoMCwgY291bnQpLmpvaW4oJy8nKTtcbiAgICBpZiAoY2hlY2tJc0F0dGFjaG1lbnRVbml0Rm9sZGVyKGNhbmRpZGF0ZSkpIHtcbiAgICAgIHJldHVybiBjYW5kaWRhdGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogUmViYXNlcyBhIHBhdGggZnJvbSBvbmUgZm9sZGVyIG9udG8gYW5vdGhlci5cbiAqXG4gKiBVc2VkIHRvIHdvcmsgb3V0IHdoZXJlIGEgbGlua2VkIGF0dGFjaG1lbnQgZW5kcyB1cCBvbmNlIGl0cyB3aG9sZSB1bml0IGZvbGRlciBoYXMgbW92ZWQsIHNvIHRoZVxuICogbGluayBjYW4gYmUgcG9pbnRlZCBhdCB0aGUgZmlsZSdzIG5ldyBob21lIHJhdGhlciB0aGFuIGF0IHdoZXJlIHRoZSBmb2xkZXIgdXNlZCB0byBiZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHJlYmFzaW5nIHRoZSBwYXRoLlxuICogQHJldHVybnMgVGhlIHJlYmFzZWQgcGF0aCwgb3IgYG51bGxgIHdoZW4gdGhlIHBhdGggZG9lcyBub3Qgc2l0IGluc2lkZSB0aGUgb2xkIGZvbGRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYmFzZVBhdGhPbnRvRm9sZGVyKHBhcmFtczogUmViYXNlUGF0aE9udG9Gb2xkZXJQYXJhbXMpOiBudWxsIHwgc3RyaW5nIHtcbiAgY29uc3QgcHJlZml4ID0gYCR7cGFyYW1zLm9sZEZvbGRlclBhdGh9L2A7XG4gIHJldHVybiBwYXJhbXMucGF0aC5zdGFydHNXaXRoKHByZWZpeCkgPyBgJHtwYXJhbXMubmV3Rm9sZGVyUGF0aH0vJHtwYXJhbXMucGF0aC5zbGljZShwcmVmaXgubGVuZ3RoKX1gIDogbnVsbDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzQkEsa0JBQXdCO0FBRXhCLDZCQUF1RDtBQWdGaEQsU0FBUyw2QkFBNkIsUUFBMkQ7QUFDdEcsUUFBTSx1QkFBbUIscUJBQVEsT0FBTyxjQUFjO0FBQ3RELE1BQUksQ0FBQyxvQkFBb0IscUJBQXFCLE9BQU8scUJBQXFCLEtBQUs7QUFDN0UsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLDhCQUE4QixpQ0FBaUMsU0FDakUsT0FBTyxrQ0FDUCwrREFBdUMsT0FBTyxHQUFHO0FBRXJELE1BQUksQ0FBQyw2QkFBNkI7QUFDaEMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLFdBQVcsaUJBQWlCLE1BQU0sR0FBRyxFQUFFLE9BQU8sT0FBTztBQUMzRCxXQUFTLFFBQVEsR0FBRyxTQUFTLFNBQVMsUUFBUSxTQUFTO0FBQ3JELFVBQU0sWUFBWSxTQUFTLE1BQU0sR0FBRyxLQUFLLEVBQUUsS0FBSyxHQUFHO0FBQ25ELFFBQUksNEJBQTRCLFNBQVMsR0FBRztBQUMxQyxhQUFPO0FBQUEsSUFDVDtBQUFBLEVBQ0Y7QUFFQSxTQUFPO0FBQ1Q7QUFXTyxTQUFTLHFCQUFxQixRQUFtRDtBQUN0RixRQUFNLFNBQVMsR0FBRyxPQUFPLGFBQWE7QUFDdEMsU0FBTyxPQUFPLEtBQUssV0FBVyxNQUFNLElBQUksR0FBRyxPQUFPLGFBQWEsSUFBSSxPQUFPLEtBQUssTUFBTSxPQUFPLE1BQU0sQ0FBQyxLQUFLO0FBQzFHOyIsIm5hbWVzIjpbXX0=
|