@mnaoumov/obsidian-lib 1.0.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -1
- package/dist/lib/cjs/__merged.cjs +54 -64
- package/dist/lib/cjs/__merged.d.cts +5 -3
- package/dist/lib/cjs/active-file-provider.cjs +40 -64
- package/dist/lib/cjs/app.cjs +40 -64
- package/dist/lib/cjs/async-with-notice.cjs +40 -64
- package/dist/lib/cjs/attachment-path.cjs +101 -72
- package/dist/lib/cjs/attachment-path.d.cts +21 -43
- package/dist/lib/cjs/attachment-unit-folder.cjs +40 -64
- package/dist/lib/cjs/attachment-unit-folder.d.cts +8 -9
- package/dist/lib/cjs/backlink-index.cjs +41 -65
- package/dist/lib/cjs/backlink.cjs +40 -64
- package/dist/lib/cjs/bases-view-registrar.cjs +40 -64
- package/dist/lib/cjs/callout.cjs +40 -64
- package/dist/lib/cjs/canvas.cjs +40 -64
- package/dist/lib/cjs/case-insensitive-file-index.cjs +40 -64
- package/dist/lib/cjs/code-block-markdown-information.cjs +40 -64
- package/dist/lib/cjs/code-block-reg-exp.cjs +40 -64
- package/dist/lib/cjs/codemirror/index.cjs +40 -64
- package/dist/lib/cjs/codemirror/state-field-spec.cjs +40 -64
- package/dist/lib/cjs/command-handlers/abstract-file-command-handler.cjs +40 -64
- package/dist/lib/cjs/command-handlers/command-handler-component.cjs +40 -64
- package/dist/lib/cjs/command-handlers/command-handler.cjs +40 -64
- package/dist/lib/cjs/command-handlers/editor-command-handler.cjs +40 -64
- package/dist/lib/cjs/command-handlers/file-command-handler.cjs +40 -64
- package/dist/lib/cjs/command-handlers/folder-command-handler.cjs +40 -64
- package/dist/lib/cjs/command-handlers/global-command-handler.cjs +40 -64
- package/dist/lib/cjs/command-handlers/index.cjs +40 -64
- package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.cjs +40 -64
- package/dist/lib/cjs/command-handlers/open-settings-command-handler.cjs +40 -64
- package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.cjs +40 -64
- package/dist/lib/cjs/command-registrar.cjs +40 -64
- package/dist/lib/cjs/community-plugins.cjs +40 -64
- package/dist/lib/cjs/components/abort-signal-component.cjs +40 -64
- package/dist/lib/cjs/components/all-windows-event-component.cjs +40 -64
- package/dist/lib/cjs/components/async-error-handler-component.cjs +40 -64
- package/dist/lib/cjs/components/async-events-component.cjs +40 -64
- package/dist/lib/cjs/components/case-insensitive-file-index-component.cjs +40 -64
- package/dist/lib/cjs/components/component-ex.cjs +41 -65
- package/dist/lib/cjs/components/console-debug-component.cjs +40 -64
- package/dist/lib/cjs/components/core-plugin-toggle-component.cjs +40 -64
- package/dist/lib/cjs/components/disposable-component.cjs +40 -64
- package/dist/lib/cjs/components/embed-extensions-component.cjs +40 -64
- package/dist/lib/cjs/components/generate-markdown-link-default-params-component.cjs +40 -64
- package/dist/lib/cjs/components/index.cjs +40 -64
- package/dist/lib/cjs/components/layout-ready-component.cjs +40 -64
- package/dist/lib/cjs/components/menu-event-registrar-component.cjs +40 -64
- package/dist/lib/cjs/components/monkey-around-component.cjs +40 -64
- package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.cjs +40 -64
- package/dist/lib/cjs/components/plugin-context-component.cjs +40 -64
- package/dist/lib/cjs/components/plugin-gate-component.cjs +41 -65
- package/dist/lib/cjs/components/plugin-notice-component.cjs +46 -65
- package/dist/lib/cjs/components/plugin-notice-component.d.cts +3 -0
- package/dist/lib/cjs/components/plugin-settings-component.cjs +41 -65
- package/dist/lib/cjs/components/plugin-settings-tab-component.cjs +40 -64
- package/dist/lib/cjs/components/plugin-suggestion-component.cjs +40 -64
- package/dist/lib/cjs/components/pointer-position-component.cjs +40 -64
- package/dist/lib/cjs/components/registry-component.cjs +40 -64
- package/dist/lib/cjs/components/release-notes-component.cjs +42 -65
- package/dist/lib/cjs/components/rename-delete-handler-component.cjs +40 -64
- package/dist/lib/cjs/components/rmdir-guard-component.cjs +40 -64
- package/dist/lib/cjs/components/settings-migration-component.cjs +44 -68
- package/dist/lib/cjs/components/settings-migration-component.d.cts +6 -4
- package/dist/lib/cjs/components/syntax-highlighting-component.cjs +40 -64
- package/dist/lib/cjs/components/templates-language-component.cjs +40 -64
- package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.cjs +40 -64
- package/dist/lib/cjs/constructors/index.cjs +40 -64
- package/dist/lib/cjs/css-class.cjs +40 -64
- package/dist/lib/cjs/data-handler.cjs +40 -64
- package/dist/lib/cjs/dataview-link.cjs +40 -64
- package/dist/lib/cjs/dataview.cjs +40 -64
- package/dist/lib/cjs/debug.cjs +40 -64
- package/dist/lib/cjs/demo-vault-helper-settings.cjs +40 -64
- package/dist/lib/cjs/demo-vault-helper.cjs +42 -65
- package/dist/lib/cjs/demo-vault-naming.cjs +40 -64
- package/dist/lib/cjs/desktop-demo-vault-opener.cjs +48 -71
- package/dist/lib/cjs/desktop-trusted-input.cjs +40 -64
- package/dist/lib/cjs/editor-extension-registrar.cjs +40 -64
- package/dist/lib/cjs/editor-suggest-registrar.cjs +40 -64
- package/dist/lib/cjs/editor.cjs +40 -64
- package/dist/lib/cjs/events.cjs +40 -64
- package/dist/lib/cjs/extensions-registrar.cjs +40 -64
- package/dist/lib/cjs/file-change.cjs +40 -64
- package/dist/lib/cjs/file-explorer.cjs +40 -64
- package/dist/lib/cjs/file-manager.cjs +40 -64
- package/dist/lib/cjs/file-system.cjs +45 -64
- package/dist/lib/cjs/file-system.d.cts +7 -0
- package/dist/lib/cjs/folder-note.cjs +40 -64
- package/dist/lib/cjs/frontmatter-formatting.cjs +41 -65
- package/dist/lib/cjs/frontmatter-link-cache-with-offsets.cjs +40 -64
- package/dist/lib/cjs/frontmatter.cjs +40 -64
- package/dist/lib/cjs/generated-during-build.cjs +42 -66
- package/dist/lib/cjs/generated-during-build.d.cts +8 -2
- package/dist/lib/cjs/hover-link-source-registrar.cjs +40 -64
- package/dist/lib/cjs/html-element.cjs +40 -64
- package/dist/lib/cjs/i18n/custom-type-options.cjs +40 -64
- package/dist/lib/cjs/i18n/default-translations.cjs +40 -64
- package/dist/lib/cjs/i18n/i18n.cjs +40 -64
- package/dist/lib/cjs/i18n/index.cjs +40 -64
- package/dist/lib/cjs/i18n/locales/en.cjs +40 -64
- package/dist/lib/cjs/i18n/locales/index.cjs +40 -64
- package/dist/lib/cjs/i18n/locales/translations-map.cjs +40 -64
- package/dist/lib/cjs/index.cjs +40 -64
- package/dist/lib/cjs/is-in-obsidian.cjs +40 -64
- package/dist/lib/cjs/library-styles.cjs +40 -64
- package/dist/lib/cjs/library.cjs +40 -64
- package/dist/lib/cjs/link-name.cjs +40 -64
- package/dist/lib/cjs/link-update-progress.cjs +40 -64
- package/dist/lib/cjs/link.cjs +40 -64
- package/dist/lib/cjs/logger.cjs +40 -64
- package/dist/lib/cjs/loop.cjs +40 -64
- package/dist/lib/cjs/markdown-code-block-processor-registrar.cjs +40 -64
- package/dist/lib/cjs/markdown-code-block-processor.cjs +40 -64
- package/dist/lib/cjs/markdown-post-processor-registrar.cjs +40 -64
- package/dist/lib/cjs/markdown-view.cjs +40 -64
- package/dist/lib/cjs/markdown.cjs +40 -64
- package/dist/lib/cjs/menu-event-registrar.cjs +40 -64
- package/dist/lib/cjs/metadata-cache.cjs +64 -70
- package/dist/lib/cjs/metadata-cache.d.cts +8 -19
- package/dist/lib/cjs/mobile-trusted-input.cjs +40 -64
- package/dist/lib/cjs/modals/alert.cjs +40 -64
- package/dist/lib/cjs/modals/confirm.cjs +40 -64
- package/dist/lib/cjs/modals/index.cjs +40 -64
- package/dist/lib/cjs/modals/minimizable-modal.cjs +40 -64
- package/dist/lib/cjs/modals/modal-command-builder.cjs +40 -64
- package/dist/lib/cjs/modals/modal.cjs +40 -64
- package/dist/lib/cjs/modals/prompt.cjs +40 -64
- package/dist/lib/cjs/modals/select-item.cjs +40 -64
- package/dist/lib/cjs/modals/select-option.cjs +40 -64
- package/dist/lib/cjs/modals/suggest-modal-command-builder.cjs +40 -64
- package/dist/lib/cjs/note-priority.cjs +41 -65
- package/dist/lib/cjs/notebook-navigator.cjs +40 -64
- package/dist/lib/cjs/obsidian-dev-utils-state.cjs +40 -64
- package/dist/lib/cjs/obsidian-protocol-handler-registrar.cjs +40 -64
- package/dist/lib/cjs/obsidian-settings.cjs +40 -64
- package/dist/lib/cjs/parse-link.cjs +40 -64
- package/dist/lib/cjs/path-settings.cjs +40 -64
- package/dist/lib/cjs/pdf.cjs +40 -64
- package/dist/lib/cjs/plugin/index.cjs +43 -64
- package/dist/lib/cjs/plugin/index.d.cts +1 -0
- package/dist/lib/cjs/plugin/plugin-api-schema.cjs +171 -0
- package/dist/lib/cjs/plugin/plugin-api-schema.d.cts +59 -0
- package/dist/lib/cjs/plugin/plugin-api.cjs +46 -64
- package/dist/lib/cjs/plugin/plugin-api.d.cts +83 -10
- package/dist/lib/cjs/plugin/plugin-context.cjs +40 -64
- package/dist/lib/cjs/plugin/plugin-event-source.cjs +40 -64
- package/dist/lib/cjs/plugin/plugin-install-state.cjs +40 -64
- package/dist/lib/cjs/plugin/plugin-lifecycle-events.cjs +40 -64
- package/dist/lib/cjs/plugin/plugin-settings-tab.cjs +41 -65
- package/dist/lib/cjs/plugin/plugin.cjs +41 -65
- package/dist/lib/cjs/plugin/settings-migration-api.cjs +69 -64
- package/dist/lib/cjs/plugin/settings-migration-api.d.cts +16 -3
- package/dist/lib/cjs/plugin-cli-handler-registrar.cjs +40 -64
- package/dist/lib/cjs/popovers/field-popover.cjs +40 -64
- package/dist/lib/cjs/popovers/index.cjs +40 -64
- package/dist/lib/cjs/popovers/popover-anchor.cjs +40 -64
- package/dist/lib/cjs/popovers/popover.cjs +40 -64
- package/dist/lib/cjs/property-entry.cjs +40 -64
- package/dist/lib/cjs/queue.cjs +40 -64
- package/dist/lib/cjs/react/app-context.cjs +40 -64
- package/dist/lib/cjs/react/index.cjs +40 -64
- package/dist/lib/cjs/reference.cjs +40 -64
- package/dist/lib/cjs/resource-lock.cjs +40 -64
- package/dist/lib/cjs/resource-url.cjs +40 -64
- package/dist/lib/cjs/ribbon-icon-registrar.cjs +40 -64
- package/dist/lib/cjs/setting-components/checkbox-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/code-highlighter-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/date-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/date-time-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/email-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/file-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/index.cjs +40 -64
- package/dist/lib/cjs/setting-components/month-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/multiple-dropdown-component.cjs +41 -65
- package/dist/lib/cjs/setting-components/multiple-email-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/multiple-file-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/multiple-text-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/number-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/password-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/setting-component-wrapper.cjs +40 -64
- package/dist/lib/cjs/setting-components/telephone-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/text-based-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/time-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/tri-state-checkbox-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/typed-dropdown-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/typed-range-text-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/typed-text-component.cjs +41 -65
- package/dist/lib/cjs/setting-components/url-component.cjs +40 -64
- package/dist/lib/cjs/setting-components/validator-component.cjs +41 -65
- package/dist/lib/cjs/setting-components/value-component-with-change-tracking.cjs +40 -64
- package/dist/lib/cjs/setting-components/week-component.cjs +40 -64
- package/dist/lib/cjs/setting-ex.cjs +40 -64
- package/dist/lib/cjs/setting-group-ex.cjs +40 -64
- package/dist/lib/cjs/status-bar-item-registrar.cjs +40 -64
- package/dist/lib/cjs/templater.cjs +40 -64
- package/dist/lib/cjs/transformers/duration-transformer.cjs +40 -64
- package/dist/lib/cjs/transformers/index.cjs +40 -64
- package/dist/lib/cjs/trusted-input.cjs +40 -64
- package/dist/lib/cjs/validation.cjs +40 -64
- package/dist/lib/cjs/vault-delete.cjs +40 -64
- package/dist/lib/cjs/vault-transaction.cjs +40 -64
- package/dist/lib/cjs/vault.cjs +41 -65
- package/dist/lib/cjs/view-registrar.cjs +40 -64
- package/dist/lib/cjs/workspace.cjs +40 -64
- package/dist/lib/esm/__merged.d.mts +5 -3
- package/dist/lib/esm/__merged.mjs +20 -14
- package/dist/lib/esm/active-file-provider.mjs +6 -14
- package/dist/lib/esm/app.mjs +6 -14
- package/dist/lib/esm/async-with-notice.mjs +6 -14
- package/dist/lib/esm/attachment-path.d.mts +21 -43
- package/dist/lib/esm/attachment-path.mjs +70 -22
- package/dist/lib/esm/attachment-unit-folder.d.mts +8 -9
- package/dist/lib/esm/attachment-unit-folder.mjs +6 -14
- package/dist/lib/esm/backlink-index.mjs +6 -14
- package/dist/lib/esm/backlink.mjs +6 -14
- package/dist/lib/esm/bases-view-registrar.mjs +6 -14
- package/dist/lib/esm/callout.mjs +6 -14
- package/dist/lib/esm/canvas.mjs +6 -14
- package/dist/lib/esm/case-insensitive-file-index.mjs +6 -14
- package/dist/lib/esm/code-block-markdown-information.mjs +5 -13
- package/dist/lib/esm/code-block-reg-exp.mjs +6 -14
- package/dist/lib/esm/codemirror/index.mjs +6 -14
- package/dist/lib/esm/codemirror/state-field-spec.mjs +5 -13
- package/dist/lib/esm/command-handlers/abstract-file-command-handler.mjs +6 -14
- package/dist/lib/esm/command-handlers/command-handler-component.mjs +6 -14
- package/dist/lib/esm/command-handlers/command-handler.mjs +6 -14
- package/dist/lib/esm/command-handlers/editor-command-handler.mjs +6 -14
- package/dist/lib/esm/command-handlers/file-command-handler.mjs +6 -14
- package/dist/lib/esm/command-handlers/folder-command-handler.mjs +6 -14
- package/dist/lib/esm/command-handlers/global-command-handler.mjs +6 -14
- package/dist/lib/esm/command-handlers/index.mjs +6 -14
- package/dist/lib/esm/command-handlers/open-demo-vault-command-handler.mjs +6 -14
- package/dist/lib/esm/command-handlers/open-settings-command-handler.mjs +6 -14
- package/dist/lib/esm/command-handlers/unlock-active-note-command-handler.mjs +6 -14
- package/dist/lib/esm/command-registrar.mjs +6 -14
- package/dist/lib/esm/community-plugins.mjs +6 -14
- package/dist/lib/esm/components/abort-signal-component.mjs +6 -14
- package/dist/lib/esm/components/all-windows-event-component.mjs +6 -14
- package/dist/lib/esm/components/async-error-handler-component.mjs +6 -14
- package/dist/lib/esm/components/async-events-component.mjs +6 -14
- package/dist/lib/esm/components/case-insensitive-file-index-component.mjs +6 -14
- package/dist/lib/esm/components/component-ex.mjs +6 -14
- package/dist/lib/esm/components/console-debug-component.mjs +6 -14
- package/dist/lib/esm/components/core-plugin-toggle-component.mjs +6 -14
- package/dist/lib/esm/components/disposable-component.mjs +6 -14
- package/dist/lib/esm/components/embed-extensions-component.mjs +6 -14
- package/dist/lib/esm/components/generate-markdown-link-default-params-component.mjs +6 -14
- package/dist/lib/esm/components/index.mjs +6 -14
- package/dist/lib/esm/components/layout-ready-component.mjs +6 -14
- package/dist/lib/esm/components/menu-event-registrar-component.mjs +6 -14
- package/dist/lib/esm/components/monkey-around-component.mjs +6 -14
- package/dist/lib/esm/components/notebook-navigator-menu-event-registrar-component.mjs +6 -14
- package/dist/lib/esm/components/plugin-context-component.mjs +6 -14
- package/dist/lib/esm/components/plugin-gate-component.mjs +6 -14
- package/dist/lib/esm/components/plugin-notice-component.d.mts +3 -0
- package/dist/lib/esm/components/plugin-notice-component.mjs +12 -15
- package/dist/lib/esm/components/plugin-settings-component.mjs +6 -14
- package/dist/lib/esm/components/plugin-settings-tab-component.mjs +6 -14
- package/dist/lib/esm/components/plugin-suggestion-component.mjs +6 -14
- package/dist/lib/esm/components/pointer-position-component.mjs +6 -14
- package/dist/lib/esm/components/registry-component.mjs +6 -14
- package/dist/lib/esm/components/release-notes-component.mjs +11 -15
- package/dist/lib/esm/components/rename-delete-handler-component.mjs +6 -14
- package/dist/lib/esm/components/rmdir-guard-component.mjs +6 -14
- package/dist/lib/esm/components/settings-migration-component.d.mts +6 -4
- package/dist/lib/esm/components/settings-migration-component.mjs +10 -18
- package/dist/lib/esm/components/syntax-highlighting-component.mjs +6 -14
- package/dist/lib/esm/components/templates-language-component.mjs +6 -14
- package/dist/lib/esm/constructors/get-dom-events-handlers-constructor.mjs +6 -14
- package/dist/lib/esm/constructors/index.mjs +6 -14
- package/dist/lib/esm/css-class.mjs +6 -14
- package/dist/lib/esm/data-handler.mjs +6 -14
- package/dist/lib/esm/dataview-link.mjs +6 -14
- package/dist/lib/esm/dataview.mjs +6 -14
- package/dist/lib/esm/debug.mjs +6 -14
- package/dist/lib/esm/demo-vault-helper-settings.mjs +5 -13
- package/dist/lib/esm/demo-vault-helper.mjs +8 -15
- package/dist/lib/esm/demo-vault-naming.mjs +6 -14
- package/dist/lib/esm/desktop-demo-vault-opener.mjs +17 -21
- package/dist/lib/esm/desktop-trusted-input.mjs +6 -14
- package/dist/lib/esm/editor-extension-registrar.mjs +6 -14
- package/dist/lib/esm/editor-suggest-registrar.mjs +6 -14
- package/dist/lib/esm/editor.mjs +6 -14
- package/dist/lib/esm/events.mjs +6 -14
- package/dist/lib/esm/extensions-registrar.mjs +6 -14
- package/dist/lib/esm/file-change.mjs +6 -14
- package/dist/lib/esm/file-explorer.mjs +6 -14
- package/dist/lib/esm/file-manager.mjs +6 -14
- package/dist/lib/esm/file-system.d.mts +7 -0
- package/dist/lib/esm/file-system.mjs +10 -14
- package/dist/lib/esm/folder-note.mjs +6 -14
- package/dist/lib/esm/frontmatter-formatting.mjs +6 -14
- package/dist/lib/esm/frontmatter-link-cache-with-offsets.mjs +6 -14
- package/dist/lib/esm/frontmatter.mjs +6 -14
- package/dist/lib/esm/generated-during-build.d.mts +8 -2
- package/dist/lib/esm/generated-during-build.mjs +8 -16
- package/dist/lib/esm/hover-link-source-registrar.mjs +6 -14
- package/dist/lib/esm/html-element.mjs +6 -14
- package/dist/lib/esm/i18n/custom-type-options.mjs +6 -14
- package/dist/lib/esm/i18n/default-translations.mjs +6 -14
- package/dist/lib/esm/i18n/i18n.mjs +6 -14
- package/dist/lib/esm/i18n/index.mjs +6 -14
- package/dist/lib/esm/i18n/locales/en.mjs +6 -14
- package/dist/lib/esm/i18n/locales/index.mjs +6 -14
- package/dist/lib/esm/i18n/locales/translations-map.mjs +6 -14
- package/dist/lib/esm/index.mjs +6 -14
- package/dist/lib/esm/is-in-obsidian.mjs +6 -14
- package/dist/lib/esm/library-styles.mjs +6 -14
- package/dist/lib/esm/library.mjs +6 -14
- package/dist/lib/esm/link-name.mjs +6 -14
- package/dist/lib/esm/link-update-progress.mjs +5 -13
- package/dist/lib/esm/link.mjs +6 -14
- package/dist/lib/esm/logger.mjs +6 -14
- package/dist/lib/esm/loop.mjs +6 -14
- package/dist/lib/esm/markdown-code-block-processor-registrar.mjs +6 -14
- package/dist/lib/esm/markdown-code-block-processor.mjs +6 -14
- package/dist/lib/esm/markdown-post-processor-registrar.mjs +6 -14
- package/dist/lib/esm/markdown-view.mjs +6 -14
- package/dist/lib/esm/markdown.mjs +6 -14
- package/dist/lib/esm/menu-event-registrar.mjs +5 -13
- package/dist/lib/esm/metadata-cache.d.mts +8 -19
- package/dist/lib/esm/metadata-cache.mjs +35 -21
- package/dist/lib/esm/mobile-trusted-input.mjs +6 -14
- package/dist/lib/esm/modals/alert.mjs +6 -14
- package/dist/lib/esm/modals/confirm.mjs +6 -14
- package/dist/lib/esm/modals/index.mjs +6 -14
- package/dist/lib/esm/modals/minimizable-modal.mjs +6 -14
- package/dist/lib/esm/modals/modal-command-builder.mjs +6 -14
- package/dist/lib/esm/modals/modal.mjs +6 -14
- package/dist/lib/esm/modals/prompt.mjs +6 -14
- package/dist/lib/esm/modals/select-item.mjs +6 -14
- package/dist/lib/esm/modals/select-option.mjs +6 -14
- package/dist/lib/esm/modals/suggest-modal-command-builder.mjs +6 -14
- package/dist/lib/esm/note-priority.mjs +6 -14
- package/dist/lib/esm/notebook-navigator.mjs +6 -14
- package/dist/lib/esm/obsidian-dev-utils-state.mjs +6 -14
- package/dist/lib/esm/obsidian-protocol-handler-registrar.mjs +6 -14
- package/dist/lib/esm/obsidian-settings.mjs +6 -14
- package/dist/lib/esm/parse-link.mjs +6 -14
- package/dist/lib/esm/path-settings.mjs +6 -14
- package/dist/lib/esm/pdf.mjs +6 -14
- package/dist/lib/esm/plugin/index.d.mts +1 -0
- package/dist/lib/esm/plugin/index.mjs +8 -14
- package/dist/lib/esm/plugin/plugin-api-schema.d.mts +59 -0
- package/dist/lib/esm/plugin/plugin-api-schema.mjs +73 -0
- package/dist/lib/esm/plugin/plugin-api.d.mts +83 -10
- package/dist/lib/esm/plugin/plugin-api.mjs +11 -14
- package/dist/lib/esm/plugin/plugin-context.mjs +6 -14
- package/dist/lib/esm/plugin/plugin-event-source.mjs +6 -14
- package/dist/lib/esm/plugin/plugin-install-state.mjs +6 -14
- package/dist/lib/esm/plugin/plugin-lifecycle-events.mjs +6 -14
- package/dist/lib/esm/plugin/plugin-settings-tab.mjs +6 -14
- package/dist/lib/esm/plugin/plugin.mjs +6 -14
- package/dist/lib/esm/plugin/settings-migration-api.d.mts +16 -3
- package/dist/lib/esm/plugin/settings-migration-api.mjs +30 -14
- package/dist/lib/esm/plugin-cli-handler-registrar.mjs +6 -14
- package/dist/lib/esm/popovers/field-popover.mjs +6 -14
- package/dist/lib/esm/popovers/index.mjs +6 -14
- package/dist/lib/esm/popovers/popover-anchor.mjs +6 -14
- package/dist/lib/esm/popovers/popover.mjs +6 -14
- package/dist/lib/esm/property-entry.mjs +6 -14
- package/dist/lib/esm/queue.mjs +6 -14
- package/dist/lib/esm/react/app-context.mjs +6 -14
- package/dist/lib/esm/react/index.mjs +6 -14
- package/dist/lib/esm/reference.mjs +6 -14
- package/dist/lib/esm/resource-lock.mjs +6 -14
- package/dist/lib/esm/resource-url.mjs +6 -14
- package/dist/lib/esm/ribbon-icon-registrar.mjs +6 -14
- package/dist/lib/esm/setting-components/checkbox-component.mjs +6 -14
- package/dist/lib/esm/setting-components/code-highlighter-component.mjs +6 -14
- package/dist/lib/esm/setting-components/date-component.mjs +6 -14
- package/dist/lib/esm/setting-components/date-time-component.mjs +6 -14
- package/dist/lib/esm/setting-components/email-component.mjs +6 -14
- package/dist/lib/esm/setting-components/file-component.mjs +6 -14
- package/dist/lib/esm/setting-components/index.mjs +6 -14
- package/dist/lib/esm/setting-components/month-component.mjs +6 -14
- package/dist/lib/esm/setting-components/multiple-dropdown-component.mjs +6 -14
- package/dist/lib/esm/setting-components/multiple-email-component.mjs +6 -14
- package/dist/lib/esm/setting-components/multiple-file-component.mjs +6 -14
- package/dist/lib/esm/setting-components/multiple-text-component.mjs +6 -14
- package/dist/lib/esm/setting-components/number-component.mjs +6 -14
- package/dist/lib/esm/setting-components/password-component.mjs +6 -14
- package/dist/lib/esm/setting-components/setting-component-wrapper.mjs +6 -14
- package/dist/lib/esm/setting-components/telephone-component.mjs +6 -14
- package/dist/lib/esm/setting-components/text-based-component.mjs +6 -14
- package/dist/lib/esm/setting-components/time-component.mjs +6 -14
- package/dist/lib/esm/setting-components/tri-state-checkbox-component.mjs +6 -14
- package/dist/lib/esm/setting-components/typed-dropdown-component.mjs +6 -14
- package/dist/lib/esm/setting-components/typed-multiple-dropdown-component.mjs +6 -14
- package/dist/lib/esm/setting-components/typed-range-text-component.mjs +6 -14
- package/dist/lib/esm/setting-components/typed-text-component.mjs +6 -14
- package/dist/lib/esm/setting-components/url-component.mjs +6 -14
- package/dist/lib/esm/setting-components/validator-component.mjs +6 -14
- package/dist/lib/esm/setting-components/value-component-with-change-tracking.mjs +5 -13
- package/dist/lib/esm/setting-components/week-component.mjs +6 -14
- package/dist/lib/esm/setting-ex.mjs +6 -14
- package/dist/lib/esm/setting-group-ex.mjs +6 -14
- package/dist/lib/esm/status-bar-item-registrar.mjs +6 -14
- package/dist/lib/esm/templater.mjs +6 -14
- package/dist/lib/esm/transformers/duration-transformer.mjs +6 -14
- package/dist/lib/esm/transformers/index.mjs +6 -14
- package/dist/lib/esm/trusted-input.mjs +6 -14
- package/dist/lib/esm/validation.mjs +6 -14
- package/dist/lib/esm/vault-delete.mjs +6 -14
- package/dist/lib/esm/vault-transaction.mjs +6 -14
- package/dist/lib/esm/vault.mjs +6 -14
- package/dist/lib/esm/view-registrar.mjs +6 -14
- package/dist/lib/esm/workspace.mjs +6 -14
- package/dist/styles.css +4 -1
- package/package.json +69 -24
- package/plugin/plugin-api-schema/package.json +6 -0
|
@@ -5,40 +5,32 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
5
5
|
|
|
6
6
|
(function () {
|
|
7
7
|
function ensureDisposeSymbols(symbolConstructor = Symbol) {
|
|
8
|
-
symbolConstructor.asyncDispose ??= symbolConstructor.for(
|
|
9
|
-
symbolConstructor.dispose ??= symbolConstructor.for(
|
|
8
|
+
symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
|
|
9
|
+
symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
function ensureBrowserProcess() {
|
|
13
13
|
const browserProcess = {
|
|
14
14
|
browser: true,
|
|
15
15
|
cwd() {
|
|
16
|
-
return
|
|
16
|
+
return "/";
|
|
17
17
|
},
|
|
18
18
|
env: {},
|
|
19
|
-
platform:
|
|
19
|
+
platform: "android"
|
|
20
20
|
};
|
|
21
|
-
|
|
22
|
-
// eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
|
|
23
21
|
const existingProcess = globalThis.process;
|
|
24
|
-
|
|
25
22
|
if (!existingProcess) {
|
|
26
|
-
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
27
23
|
globalThis.process = browserProcess;
|
|
28
24
|
return;
|
|
29
25
|
}
|
|
30
|
-
|
|
31
26
|
if (existingProcess.versions?.node) {
|
|
32
27
|
return;
|
|
33
28
|
}
|
|
34
|
-
|
|
35
29
|
const existingProcessRecord = existingProcess;
|
|
36
|
-
|
|
37
30
|
for (const [key, value] of Object.entries(browserProcess)) {
|
|
38
31
|
existingProcessRecord[key] ??= value;
|
|
39
32
|
}
|
|
40
|
-
|
|
41
|
-
existingProcessRecord['browser'] = true;
|
|
33
|
+
existingProcessRecord["browser"] = true;
|
|
42
34
|
}
|
|
43
35
|
|
|
44
36
|
function keepName($unknown) {
|
|
@@ -46,17 +38,13 @@ function keepName($unknown) {
|
|
|
46
38
|
}
|
|
47
39
|
|
|
48
40
|
(function initCjs() {
|
|
49
|
-
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
50
41
|
const globalThisRecord = globalThis;
|
|
51
42
|
ensureDisposeSymbols();
|
|
52
|
-
globalThisRecord[
|
|
53
|
-
globalThisRecord[
|
|
54
|
-
|
|
43
|
+
globalThisRecord["__name"] ??= keepName;
|
|
44
|
+
globalThisRecord["__extractDefault"] ??= extractDefault;
|
|
55
45
|
ensureBrowserProcess();
|
|
56
|
-
|
|
57
|
-
// eslint-disable-next-line unicorn/consistent-function-scoping -- Serialized with initCjs into the banner; at module scope it would be left out of it.
|
|
58
46
|
function extractDefault(module) {
|
|
59
|
-
return module && module.__esModule &&
|
|
47
|
+
return module && module.__esModule && "default" in module ? module.default : module;
|
|
60
48
|
}
|
|
61
49
|
})();
|
|
62
50
|
})();
|
|
@@ -65,8 +53,6 @@ function keepName($unknown) {
|
|
|
65
53
|
if (!originalRequire || originalRequire.__isPatched) {
|
|
66
54
|
return;
|
|
67
55
|
}
|
|
68
|
-
|
|
69
|
-
// eslint-disable-next-line no-global-assign, no-implicit-globals -- We need to patch the `require()` function.
|
|
70
56
|
require = Object.assign(
|
|
71
57
|
(id) => requirePatched(id),
|
|
72
58
|
originalRequire,
|
|
@@ -74,53 +60,45 @@ function keepName($unknown) {
|
|
|
74
60
|
__isPatched: true
|
|
75
61
|
}
|
|
76
62
|
);
|
|
77
|
-
|
|
78
63
|
function extractDefault(module) {
|
|
79
|
-
return module && module.__esModule &&
|
|
64
|
+
return module && module.__esModule && "default" in module ? module.default : module;
|
|
80
65
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
'@codemirror/tooltip']
|
|
111
|
-
);
|
|
112
|
-
|
|
66
|
+
const OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
|
|
67
|
+
"@codemirror/autocomplete",
|
|
68
|
+
"@codemirror/collab",
|
|
69
|
+
"@codemirror/commands",
|
|
70
|
+
"@codemirror/language",
|
|
71
|
+
"@codemirror/lint",
|
|
72
|
+
"@codemirror/search",
|
|
73
|
+
"@codemirror/state",
|
|
74
|
+
"@codemirror/text",
|
|
75
|
+
"@codemirror/view",
|
|
76
|
+
"@lezer/common",
|
|
77
|
+
"@lezer/highlight",
|
|
78
|
+
"@lezer/lr",
|
|
79
|
+
"obsidian"
|
|
80
|
+
]);
|
|
81
|
+
const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
|
|
82
|
+
"@codemirror/closebrackets",
|
|
83
|
+
"@codemirror/comment",
|
|
84
|
+
"@codemirror/fold",
|
|
85
|
+
"@codemirror/gutter",
|
|
86
|
+
"@codemirror/highlight",
|
|
87
|
+
"@codemirror/history",
|
|
88
|
+
"@codemirror/matchbrackets",
|
|
89
|
+
"@codemirror/panel",
|
|
90
|
+
"@codemirror/rangeset",
|
|
91
|
+
"@codemirror/rectangular-selection",
|
|
92
|
+
"@codemirror/stream-parser",
|
|
93
|
+
"@codemirror/tooltip"
|
|
94
|
+
]);
|
|
113
95
|
function requirePatched(id) {
|
|
114
96
|
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
|
|
115
97
|
return originalRequire?.(id);
|
|
116
98
|
}
|
|
117
|
-
|
|
118
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
119
99
|
if (globalThis.app.isMobile) {
|
|
120
|
-
if (id ===
|
|
121
|
-
// eslint-disable-next-line no-console -- Valid usage.
|
|
100
|
+
if (id === "process" || id === "node:process") {
|
|
122
101
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
123
|
-
|
|
124
102
|
return process;
|
|
125
103
|
}
|
|
126
104
|
} else {
|
|
@@ -129,8 +107,6 @@ function keepName($unknown) {
|
|
|
129
107
|
return extractDefault(module);
|
|
130
108
|
}
|
|
131
109
|
}
|
|
132
|
-
|
|
133
|
-
// eslint-disable-next-line no-console -- Valid usage.
|
|
134
110
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
|
|
135
111
|
return {};
|
|
136
112
|
}
|
|
@@ -437,4 +413,4 @@ class AbstractFileCommandHandler extends import_global_command_handler.GlobalCom
|
|
|
437
413
|
0 && (module.exports = {
|
|
438
414
|
AbstractFileCommandHandler
|
|
439
415
|
});
|
|
440
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2NvbW1hbmQtaGFuZGxlcnMvYWJzdHJhY3QtZmlsZS1jb21tYW5kLWhhbmRsZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb21tYW5kIGhhbmRsZXIgZm9yIGFic3RyYWN0IGZpbGUgY29tbWFuZHMgd2l0aCBmaWxlL2ZpbGVzIG1lbnUgaW50ZWdyYXRpb24uXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBJY29uTmFtZSxcbiAgTWVudSxcbiAgVEFic3RyYWN0RmlsZSxcbiAgV29ya3NwYWNlTGVhZlxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQge1xuICBjaGFpbixcbiAgY29udmVydEFzeW5jVG9TeW5jXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hc3luYyc7XG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5cbmltcG9ydCB0eXBlIHsgQWN0aXZlRmlsZVByb3ZpZGVyIH0gZnJvbSAnLi4vYWN0aXZlLWZpbGUtcHJvdmlkZXIudHMnO1xuaW1wb3J0IHR5cGUge1xuICBDb21tYW5kSGFuZGxlckNvbnN0cnVjdG9yUGFyYW1zLFxuICBDb21tYW5kSGFuZGxlclJlZ2lzdHJhdGlvbkNvbnRleHRcbn0gZnJvbSAnLi9jb21tYW5kLWhhbmRsZXIudHMnO1xuXG5pbXBvcnQgeyBHbG9iYWxDb21tYW5kSGFuZGxlciB9IGZyb20gJy4vZ2xvYmFsLWNvbW1hbmQtaGFuZGxlci50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgY3JlYXRpbmcgYW4gYWJzdHJhY3QgZmlsZSBjb21tYW5kIGhhbmRsZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWJzdHJhY3RGaWxlQ29tbWFuZEhhbmRsZXJDb25zdHJ1Y3RvclBhcmFtcyBleHRlbmRzIENvbW1hbmRIYW5kbGVyQ29uc3RydWN0b3JQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGl0ZW0gbmFtZSB0byB1c2UgaW4gdGhlIHNpbmdsZS1maWxlIG1lbnUuXG4gICAqL1xuICByZWFkb25seSBmaWxlTWVudUl0ZW1OYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VjdGlvbiB0byB1c2UgaW4gdGhlIHNpbmdsZS1maWxlIG1lbnUuXG4gICAqL1xuICByZWFkb25seSBmaWxlTWVudVNlY3Rpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBpY29uIHRvIHVzZSBpbiB0aGUgc2luZ2xlLWZpbGUgbWVudSBzdWJtZW51LlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZU1lbnVTdWJtZW51SWNvbj86IEljb25OYW1lIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgaXRlbSBuYW1lIHRvIHVzZSBpbiB0aGUgbXVsdGktZmlsZSBtZW51LlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZXNNZW51SXRlbU5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBzZWN0aW9uIHRvIHVzZSBpbiB0aGUgbXVsdGktZmlsZSBtZW51LlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZXNNZW51U2VjdGlvbj86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGljb24gdG8gdXNlIGluIHRoZSBtdWx0aS1maWxlIG1lbnUgc3VibWVudS5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVzTWVudVN1Ym1lbnVJY29uPzogSWNvbk5hbWUgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYWRkIHRoZSBjb21tYW5kIHRvIGEgc3VibWVudS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkQWRkQ29tbWFuZFRvU3VibWVudT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIEFic3RyYWN0RmlsZUNvbW1hbmRIYW5kbGVyLmhhbmRsZUFic3RyYWN0RmlsZU1lbnV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFic3RyYWN0RmlsZUNvbW1hbmRIYW5kbGVySGFuZGxlQWJzdHJhY3RGaWxlTWVudVBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgZmlsZSBvciBmb2xkZXIuXG4gICAqL1xuICByZWFkb25seSBhYnN0cmFjdEZpbGU6IFRBYnN0cmFjdEZpbGU7XG5cbiAgLyoqXG4gICAqIFRoZSB3b3Jrc3BhY2UgbGVhZiwgaWYgYXZhaWxhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgbGVhZj86IHVuZGVmaW5lZCB8IFdvcmtzcGFjZUxlYWY7XG5cbiAgLyoqXG4gICAqIFRoZSBtZW51IHRvIGFkZCBpdGVtcyB0by5cbiAgICovXG4gIHJlYWRvbmx5IG1lbnU6IE1lbnU7XG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2Ugb2YgdGhlIGV2ZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIEFic3RyYWN0RmlsZUNvbW1hbmRIYW5kbGVyLmhhbmRsZUFic3RyYWN0RmlsZXNNZW51fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBYnN0cmFjdEZpbGVDb21tYW5kSGFuZGxlckhhbmRsZUFic3RyYWN0RmlsZXNNZW51UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBmaWxlcyBvciBmb2xkZXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgYWJzdHJhY3RGaWxlczogVEFic3RyYWN0RmlsZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgd29ya3NwYWNlIGxlYWYsIGlmIGF2YWlsYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IGxlYWY/OiB1bmRlZmluZWQgfCBXb3Jrc3BhY2VMZWFmO1xuXG4gIC8qKlxuICAgKiBUaGUgbWVudSB0byBhZGQgaXRlbXMgdG8uXG4gICAqL1xuICByZWFkb25seSBtZW51OiBNZW51O1xuXG4gIC8qKlxuICAgKiBUaGUgc291cmNlIG9mIHRoZSBldmVudC5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBBYnN0cmFjdEZpbGVDb21tYW5kSGFuZGxlci5zaG91bGRBZGRUb0Fic3RyYWN0RmlsZU1lbnV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFic3RyYWN0RmlsZUNvbW1hbmRIYW5kbGVyU2hvdWxkQWRkVG9BYnN0cmFjdEZpbGVNZW51UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBmaWxlIG9yIGZvbGRlci5cbiAgICovXG4gIHJlYWRvbmx5IGFic3RyYWN0RmlsZTogVEFic3RyYWN0RmlsZTtcblxuICAvKipcbiAgICogVGhlIHdvcmtzcGFjZSBsZWFmLCBpZiBhdmFpbGFibGUuXG4gICAqL1xuICByZWFkb25seSBsZWFmPzogdW5kZWZpbmVkIHwgV29ya3NwYWNlTGVhZjtcblxuICAvKipcbiAgICogVGhlIHNvdXJjZSBvZiB0aGUgZXZlbnQuXG4gICAqL1xuICByZWFkb25seSBzb3VyY2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgQWJzdHJhY3RGaWxlQ29tbWFuZEhhbmRsZXIuc2hvdWxkQWRkVG9BYnN0cmFjdEZpbGVzTWVudX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWJzdHJhY3RGaWxlQ29tbWFuZEhhbmRsZXJTaG91bGRBZGRUb0Fic3RyYWN0RmlsZXNNZW51UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBmaWxlcyBvciBmb2xkZXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgYWJzdHJhY3RGaWxlczogVEFic3RyYWN0RmlsZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgd29ya3NwYWNlIGxlYWYsIGlmIGF2YWlsYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IGxlYWY/OiB1bmRlZmluZWQgfCBXb3Jrc3BhY2VMZWFmO1xuXG4gIC8qKlxuICAgKiBUaGUgc291cmNlIG9mIHRoZSBldmVudC5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbW1hbmQgaGFuZGxlciBmb3IgYWJzdHJhY3QgZmlsZSBjb21tYW5kcy5cbiAqXG4gKiBIYW5kbGVzIGJvdGggc2luZ2xlLWZpbGUgYW5kIG11bHRpLWZpbGUgY29udGV4dCBtZW51cy5cbiAqIFN1YmNsYXNzZXMgb3ZlcnJpZGUge0BsaW5rIGNhbkV4ZWN1dGVBYnN0cmFjdEZpbGV9IGFuZCB7QGxpbmsgZXhlY3V0ZUFic3RyYWN0RmlsZX0uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEZpbGVDb21tYW5kSGFuZGxlciBleHRlbmRzIEdsb2JhbENvbW1hbmRIYW5kbGVyIHtcbiAgLyoqXG4gICAqIEdldCB0aGUgYWN0aXZlIGZpbGUgcHJvdmlkZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBhY3RpdmUgZmlsZSBwcm92aWRlci5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgYWN0aXZlRmlsZVByb3ZpZGVyKCk6IEFjdGl2ZUZpbGVQcm92aWRlciB7XG4gICAgcmV0dXJuIGVuc3VyZU5vbk51bGxhYmxlKHRoaXMuX2FjdGl2ZUZpbGVQcm92aWRlcik7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaXRlbSBuYW1lIHRvIHVzZSBpbiB0aGUgc2luZ2xlLWZpbGUgbWVudS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGl0ZW0gbmFtZSwgb3IgYHVuZGVmaW5lZGAgdG8gdXNlIHRoZSBjb21tYW5kIG5hbWUuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IGZpbGVNZW51SXRlbU5hbWUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsZU1lbnVJdGVtTmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzZWN0aW9uIHRvIHVzZSBpbiB0aGUgc2luZ2xlLWZpbGUgbWVudS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHNlY3Rpb24gbmFtZSwgb3IgYHVuZGVmaW5lZGAgdG8gdXNlIHRoZSBwbHVnaW4gbmFtZS5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgZmlsZU1lbnVTZWN0aW9uKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbGVNZW51U2VjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBpY29uIHRvIHVzZSBpbiB0aGUgc2luZ2xlLWZpbGUgbWVudSBzdWJtZW51LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgaWNvbiwgb3IgYHVuZGVmaW5lZGAgZm9yIG5vIGljb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IGZpbGVNZW51U3VibWVudUljb24oKTogSWNvbk5hbWUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9maWxlTWVudVN1Ym1lbnVJY29uO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGl0ZW0gbmFtZSB0byB1c2UgaW4gdGhlIG11bHRpLWZpbGUgbWVudS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGl0ZW0gbmFtZSwgb3IgYHVuZGVmaW5lZGAgdG8gZmFsbCBiYWNrIHRvIHNpbmdsZS1maWxlIGl0ZW0gbmFtZS5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgZmlsZXNNZW51SXRlbU5hbWUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsZXNNZW51SXRlbU5hbWU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc2VjdGlvbiB0byB1c2UgaW4gdGhlIG11bHRpLWZpbGUgbWVudS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHNlY3Rpb24gbmFtZSwgb3IgYHVuZGVmaW5lZGAgdG8gZmFsbCBiYWNrIHRvIHNpbmdsZS1maWxlIHNlY3Rpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IGZpbGVzTWVudVNlY3Rpb24oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsZXNNZW51U2VjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBpY29uIHRvIHVzZSBpbiB0aGUgbXVsdGktZmlsZSBtZW51IHN1Ym1lbnUuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBpY29uLCBvciBgdW5kZWZpbmVkYCB0byBmYWxsIGJhY2sgdG8gc2luZ2xlLWZpbGUgc3VibWVudSBpY29uLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBmaWxlc01lbnVTdWJtZW51SWNvbigpOiBJY29uTmFtZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbGVzTWVudVN1Ym1lbnVJY29uO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWN0aXZlRmlsZVByb3ZpZGVyPzogQWN0aXZlRmlsZVByb3ZpZGVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9maWxlTWVudUl0ZW1OYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9maWxlTWVudVNlY3Rpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbGVNZW51U3VibWVudUljb24/OiBJY29uTmFtZSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSBfZmlsZXNNZW51SXRlbU5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbGVzTWVudVNlY3Rpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbGVzTWVudVN1Ym1lbnVJY29uPzogSWNvbk5hbWUgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBfcmVnaXN0cmF0aW9uU2hvdWxkQWRkQ29tbWFuZFRvU3VibWVudT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nob3VsZEFkZENvbW1hbmRUb1N1Ym1lbnU/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGFic3RyYWN0IGZpbGUgY29tbWFuZCBoYW5kbGVyLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBhYnN0cmFjdCBmaWxlIGNvbW1hbmQgaGFuZGxlci5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IEFic3RyYWN0RmlsZUNvbW1hbmRIYW5kbGVyQ29uc3RydWN0b3JQYXJhbXMpIHtcbiAgICBzdXBlcihwYXJhbXMpO1xuICAgIHRoaXMuX2ZpbGVNZW51SXRlbU5hbWUgPSBwYXJhbXMuZmlsZU1lbnVJdGVtTmFtZTtcbiAgICB0aGlzLl9maWxlTWVudVNlY3Rpb24gPSBwYXJhbXMuZmlsZU1lbnVTZWN0aW9uO1xuICAgIHRoaXMuX2ZpbGVNZW51U3VibWVudUljb24gPSBwYXJhbXMuZmlsZU1lbnVTdWJtZW51SWNvbjtcbiAgICB0aGlzLl9maWxlc01lbnVJdGVtTmFtZSA9IHBhcmFtcy5maWxlc01lbnVJdGVtTmFtZTtcbiAgICB0aGlzLl9maWxlc01lbnVTZWN0aW9uID0gcGFyYW1zLmZpbGVzTWVudVNlY3Rpb247XG4gICAgdGhpcy5fZmlsZXNNZW51U3VibWVudUljb24gPSBwYXJhbXMuZmlsZXNNZW51U3VibWVudUljb247XG4gICAgdGhpcy5fc2hvdWxkQWRkQ29tbWFuZFRvU3VibWVudSA9IHBhcmFtcy5zaG91bGRBZGRDb21tYW5kVG9TdWJtZW51O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBmaWxlLW1lbnUgYW5kIGZpbGVzLW1lbnUgZXZlbnQgaGFuZGxlcnMuXG4gICAqXG4gICAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIHJlZ2lzdHJhdGlvbiBjb250ZXh0LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIG9uUmVnaXN0ZXJlZChjb250ZXh0OiBDb21tYW5kSGFuZGxlclJlZ2lzdHJhdGlvbkNvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBzdXBlci5vblJlZ2lzdGVyZWQoY29udGV4dCk7XG4gICAgdGhpcy5fYWN0aXZlRmlsZVByb3ZpZGVyID0gY29udGV4dC5hY3RpdmVGaWxlUHJvdmlkZXI7XG4gICAgdGhpcy5fcmVnaXN0cmF0aW9uU2hvdWxkQWRkQ29tbWFuZFRvU3VibWVudSA9IGNvbnRleHQuc2hvdWxkQWRkQ29tbWFuZFRvU3VibWVudTtcbiAgICBjb250ZXh0Lm1lbnVFdmVudFJlZ2lzdHJhci5yZWdpc3RlckZpbGVNZW51RXZlbnRIYW5kbGVyKChtZW51LCBhYnN0cmFjdEZpbGUsIHNvdXJjZSwgbGVhZikgPT4ge1xuICAgICAgdGhpcy5oYW5kbGVBYnN0cmFjdEZpbGVNZW51KHtcbiAgICAgICAgYWJzdHJhY3RGaWxlLFxuICAgICAgICBsZWFmLFxuICAgICAgICBtZW51LFxuICAgICAgICBzb3VyY2VcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGNvbnRleHQubWVudUV2ZW50UmVnaXN0cmFyLnJlZ2lzdGVyRmlsZXNNZW51RXZlbnRIYW5kbGVyKChtZW51LCBhYnN0cmFjdEZpbGVzLCBzb3VyY2UsIGxlYWYpID0+IHtcbiAgICAgIHRoaXMuaGFuZGxlQWJzdHJhY3RGaWxlc01lbnUoe1xuICAgICAgICBhYnN0cmFjdEZpbGVzLFxuICAgICAgICBsZWFmLFxuICAgICAgICBtZW51LFxuICAgICAgICBzb3VyY2VcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlIGZyb20gdGhlIGNvbW1hbmQgcGFsZXR0ZS5cbiAgICogVXNlcyB0aGUgYWN0aXZlIGZpbGUgYXMgdGhlIHRhcmdldC5cbiAgICpcbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgY29tbWFuZCBjYW4gZXhlY3V0ZS5cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBjYW5FeGVjdXRlKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5zaG91bGRBZGRUb0NvbW1hbmRQYWxldHRlKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBhY3RpdmVGaWxlID0gdGhpcy5nZXRBY3RpdmVGaWxlKCk7XG4gICAgcmV0dXJuICEhYWN0aXZlRmlsZSAmJiB0aGlzLmNhbkV4ZWN1dGVBYnN0cmFjdEZpbGUoYWN0aXZlRmlsZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUgZm9yIGEgc2luZ2xlIGFic3RyYWN0IGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBfYWJzdHJhY3RGaWxlIC0gVGhlIGZpbGUgb3IgZm9sZGVyLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNhbkV4ZWN1dGVBYnN0cmFjdEZpbGUoX2Fic3RyYWN0RmlsZTogVEFic3RyYWN0RmlsZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlIGZvciBtdWx0aXBsZSBhYnN0cmFjdCBmaWxlcy5cbiAgICogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjaGVja3MgZWFjaCBmaWxlIGluZGl2aWR1YWxseS5cbiAgICpcbiAgICogQHBhcmFtIGFic3RyYWN0RmlsZXMgLSBUaGUgZmlsZXMgb3IgZm9sZGVycy5cbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgY29tbWFuZCBjYW4gZXhlY3V0ZS5cbiAgICovXG4gIHByb3RlY3RlZCBjYW5FeGVjdXRlQWJzdHJhY3RGaWxlcyhhYnN0cmFjdEZpbGVzOiBUQWJzdHJhY3RGaWxlW10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gYWJzdHJhY3RGaWxlcy5sZW5ndGggPiAwICYmIGFic3RyYWN0RmlsZXMuZXZlcnkoKGYpID0+IHRoaXMuY2FuRXhlY3V0ZUFic3RyYWN0RmlsZShmKSk7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZXMgdGhlIGNvbW1hbmQgZnJvbSB0aGUgY29tbWFuZCBwYWxldHRlIHVzaW5nIHRoZSBhY3RpdmUgZmlsZS5cbiAgICpcbiAgICogQHJldHVybnMgYFByb21pc2FibGU8dm9pZD5gIHRoYXQgcmVzb2x2ZXMgd2hlbiBjb21tYW5kIGhhZCBiZWVuIGV4ZWN1dGVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGV4ZWN1dGUoKTogUHJvbWlzYWJsZTx2b2lkPiB7XG4gICAgY29uc3QgYWN0aXZlRmlsZSA9IHRoaXMuZ2V0QWN0aXZlRmlsZSgpO1xuICAgIGlmIChhY3RpdmVGaWxlKSB7XG4gICAgICByZXR1cm4gdGhpcy5leGVjdXRlQWJzdHJhY3RGaWxlKGFjdGl2ZUZpbGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyB0aGUgY29tbWFuZCBmb3IgYSBzaW5nbGUgYWJzdHJhY3QgZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIGFic3RyYWN0RmlsZSAtIFRoZSBmaWxlIG9yIGZvbGRlci5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBleGVjdXRlQWJzdHJhY3RGaWxlKGFic3RyYWN0RmlsZTogVEFic3RyYWN0RmlsZSk6IFByb21pc2FibGU8dm9pZD47XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIHRoZSBjb21tYW5kIGZvciBtdWx0aXBsZSBhYnN0cmFjdCBmaWxlcy5cbiAgICogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBleGVjdXRlcyBzZXF1ZW50aWFsbHkuXG4gICAqXG4gICAqIEBwYXJhbSBhYnN0cmFjdEZpbGVzIC0gVGhlIGZpbGVzIG9yIGZvbGRlcnMuXG4gICAqIEByZXR1cm5zIGBQcm9taXNhYmxlPHZvaWQ+YCB0aGF0IHJlc29sdmVzIHdoZW4gYWxsIGFic3RyYWN0IGZpbGVzIGhhdmUgYmVlbiBleGVjdXRlZC5cbiAgICovXG4gIHByb3RlY3RlZCBleGVjdXRlQWJzdHJhY3RGaWxlcyhhYnN0cmFjdEZpbGVzOiBUQWJzdHJhY3RGaWxlW10pOiBQcm9taXNhYmxlPHZvaWQ+IHtcbiAgICBsZXQgcHJvbWlzZTogbnVsbCB8IFByb21pc2U8dm9pZD4gPSBudWxsO1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiBhYnN0cmFjdEZpbGVzKSB7XG4gICAgICBwcm9taXNlID0gY2hhaW4ocHJvbWlzZSwgKCkgPT4gdGhpcy5leGVjdXRlQWJzdHJhY3RGaWxlKGZpbGUpKTtcbiAgICB9XG5cbiAgICBpZiAocHJvbWlzZSkge1xuICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGFjdGl2ZSBmaWxlLCBpZiBhbnksIHRvIHVzZSBhcyB0aGUgdGFyZ2V0IHdoZW4gZXhlY3V0aW5nIGZyb20gdGhlIGNvbW1hbmQgcGFsZXR0ZS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGFjdGl2ZSBmaWxlIG9yIGBudWxsYCBpZiBub25lIGlzIGFjdGl2ZS5cbiAgICovXG4gIHByb3RlY3RlZCBnZXRBY3RpdmVGaWxlKCk6IG51bGwgfCBUQWJzdHJhY3RGaWxlIHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVGaWxlUHJvdmlkZXIuZ2V0QWN0aXZlRmlsZSgpID8/IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB3aGV0aGVyIHRvIGFkZCB0aGUgY29tbWFuZCB0byBhIHN1Ym1lbnUuXG4gICAqXG4gICAqIFRoZSByZWdpc3RyYXRpb24gY29udGV4dCB3aW5zIG92ZXIgdGhlIGNvbnN0cnVjdG9yIHZhbHVlOiBhIG1lbnUgc3VyZmFjZSB0aGF0IGFscmVhZHkgd3JhcHMgZXZlcnlcbiAgICogY29udHJpYnV0ZWQgaXRlbSBpbiBhIHBsdWdpbi10aXRsZWQgcGFyZW50IGVudHJ5IGZvcmNlcyB0aGlzIG9mZiwgYmVjYXVzZSBhIHNlY3Rpb24gc3VibWVudVxuICAgKiBkZWNsYXJlZCBoZXJlIHdvdWxkIG1ha2UgYE1lbnUuc29ydCgpYCBuZXN0IGEgc2Vjb25kIHBsdWdpbi10aXRsZWQgZW50cnkgaW5zaWRlIHRoZSBmaXJzdC5cbiAgICpcbiAgICogQHJldHVybnMgV2hldGhlciB0byBhZGQgdG8gYSBzdWJtZW51LlxuICAgKi9cbiAgcHJvdGVjdGVkIHNob3VsZEFkZENvbW1hbmRUb1N1Ym1lbnUoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3JlZ2lzdHJhdGlvblNob3VsZEFkZENvbW1hbmRUb1N1Ym1lbnUgPz8gdGhpcy5fc2hvdWxkQWRkQ29tbWFuZFRvU3VibWVudTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgY29tbWFuZCBzaG91bGQgYXBwZWFyIGluIHRoZSBzaW5nbGUtZmlsZSBjb250ZXh0IG1lbnUuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIHNpbmdsZS1maWxlIG1lbnUgY2hlY2suXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdG8gYWRkIHRvIHRoZSBmaWxlIG1lbnUuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2hvdWxkQWRkVG9BYnN0cmFjdEZpbGVNZW51KHBhcmFtczogQWJzdHJhY3RGaWxlQ29tbWFuZEhhbmRsZXJTaG91bGRBZGRUb0Fic3RyYWN0RmlsZU1lbnVQYXJhbXMpOiBib29sZWFuIHtcbiAgICBjb25zdCB7IGFic3RyYWN0RmlsZTogX2Fic3RyYWN0RmlsZSwgbGVhZjogX2xlYWYsIHNvdXJjZTogX3NvdXJjZSB9ID0gcGFyYW1zO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgY29tbWFuZCBzaG91bGQgYXBwZWFyIGluIHRoZSBtdWx0aS1maWxlIGNvbnRleHQgbWVudS5cbiAgICogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjaGVja3MgZWFjaCBmaWxlIGluZGl2aWR1YWxseS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgbXVsdGktZmlsZSBtZW51IGNoZWNrLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRvIGFkZCB0byB0aGUgZmlsZXMgbWVudS5cbiAgICovXG4gIHByb3RlY3RlZCBzaG91bGRBZGRUb0Fic3RyYWN0RmlsZXNNZW51KHBhcmFtczogQWJzdHJhY3RGaWxlQ29tbWFuZEhhbmRsZXJTaG91bGRBZGRUb0Fic3RyYWN0RmlsZXNNZW51UGFyYW1zKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHBhcmFtcy5hYnN0cmFjdEZpbGVzLmV2ZXJ5KChmKSA9PlxuICAgICAgdGhpcy5zaG91bGRBZGRUb0Fic3RyYWN0RmlsZU1lbnUoe1xuICAgICAgICBhYnN0cmFjdEZpbGU6IGYsXG4gICAgICAgIGxlYWY6IHBhcmFtcy5sZWFmLFxuICAgICAgICBzb3VyY2U6IHBhcmFtcy5zb3VyY2VcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgY29tbWFuZCBzaG91bGQgYXBwZWFyIGluIHRoZSBjb21tYW5kIHBhbGV0dGUuXG4gICAqXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdG8gYWRkIHRvIHRoZSBjb21tYW5kIHBhbGV0dGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2hvdWxkQWRkVG9Db21tYW5kUGFsZXR0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQWJzdHJhY3RGaWxlTWVudShwYXJhbXM6IEFic3RyYWN0RmlsZUNvbW1hbmRIYW5kbGVySGFuZGxlQWJzdHJhY3RGaWxlTWVudVBhcmFtcyk6IHZvaWQge1xuICAgIGNvbnN0IHtcbiAgICAgIGFic3RyYWN0RmlsZSxcbiAgICAgIGxlYWYsXG4gICAgICBtZW51LFxuICAgICAgc291cmNlXG4gICAgfSA9IHBhcmFtcztcbiAgICBpZiAoXG4gICAgICAhdGhpcy5zaG91bGRBZGRUb0Fic3RyYWN0RmlsZU1lbnUoe1xuICAgICAgICBhYnN0cmFjdEZpbGUsXG4gICAgICAgIGxlYWYsXG4gICAgICAgIHNvdXJjZVxuICAgICAgfSkgfHwgIXRoaXMuY2FuRXhlY3V0ZUFic3RyYWN0RmlsZShhYnN0cmFjdEZpbGUpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2VjdGlvbiA9IHRoaXMuZmlsZU1lbnVTZWN0aW9uID8/IHRoaXMucGx1Z2luTmFtZTtcbiAgICBpZiAodGhpcy5zaG91bGRBZGRDb21tYW5kVG9TdWJtZW51KCkpIHtcbiAgICAgIG1lbnUuc2V0U2VjdGlvblN1Ym1lbnUoc2VjdGlvbiwge1xuICAgICAgICBpY29uOiB0aGlzLmZpbGVNZW51U3VibWVudUljb24gPz8gJycsXG4gICAgICAgIHRpdGxlOiBzZWN0aW9uXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBtZW51LmFkZEl0ZW0oKGl0ZW0pID0+IHtcbiAgICAgIGl0ZW1cbiAgICAgICAgLnNldFRpdGxlKHRoaXMuZmlsZU1lbnVJdGVtTmFtZSA/PyB0aGlzLm5hbWUpXG4gICAgICAgIC5zZXRJY29uKHRoaXMuaWNvbilcbiAgICAgICAgLnNldFNlY3Rpb24oc2VjdGlvbilcbiAgICAgICAgLm9uQ2xpY2soY29udmVydEFzeW5jVG9TeW5jKGFzeW5jICgpID0+IHRoaXMuZXhlY3V0ZUFic3RyYWN0RmlsZShhYnN0cmFjdEZpbGUpKSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUFic3RyYWN0RmlsZXNNZW51KHBhcmFtczogQWJzdHJhY3RGaWxlQ29tbWFuZEhhbmRsZXJIYW5kbGVBYnN0cmFjdEZpbGVzTWVudVBhcmFtcyk6IHZvaWQge1xuICAgIGNvbnN0IHtcbiAgICAgIGFic3RyYWN0RmlsZXMsXG4gICAgICBsZWFmLFxuICAgICAgbWVudSxcbiAgICAgIHNvdXJjZVxuICAgIH0gPSBwYXJhbXM7XG4gICAgaWYgKFxuICAgICAgIXRoaXMuc2hvdWxkQWRkVG9BYnN0cmFjdEZpbGVzTWVudSh7XG4gICAgICAgIGFic3RyYWN0RmlsZXMsXG4gICAgICAgIGxlYWYsXG4gICAgICAgIHNvdXJjZVxuICAgICAgfSkgfHwgIXRoaXMuY2FuRXhlY3V0ZUFic3RyYWN0RmlsZXMoYWJzdHJhY3RGaWxlcylcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWN0aW9uID0gdGhpcy5maWxlc01lbnVTZWN0aW9uID8/IHRoaXMuZmlsZU1lbnVTZWN0aW9uID8/IHRoaXMucGx1Z2luTmFtZTtcbiAgICBpZiAodGhpcy5zaG91bGRBZGRDb21tYW5kVG9TdWJtZW51KCkpIHtcbiAgICAgIG1lbnUuc2V0U2VjdGlvblN1Ym1lbnUoc2VjdGlvbiwge1xuICAgICAgICBpY29uOiB0aGlzLmZpbGVzTWVudVN1Ym1lbnVJY29uID8/IHRoaXMuZmlsZU1lbnVTdWJtZW51SWNvbiA/PyAnJyxcbiAgICAgICAgdGl0bGU6IHNlY3Rpb25cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIG1lbnUuYWRkSXRlbSgoaXRlbSkgPT4ge1xuICAgICAgaXRlbVxuICAgICAgICAuc2V0VGl0bGUodGhpcy5maWxlc01lbnVJdGVtTmFtZSA/PyB0aGlzLmZpbGVNZW51SXRlbU5hbWUgPz8gdGhpcy5uYW1lKVxuICAgICAgICAuc2V0SWNvbih0aGlzLmljb24pXG4gICAgICAgIC5zZXRTZWN0aW9uKHNlY3Rpb24pXG4gICAgICAgIC5vbkNsaWNrKGNvbnZlcnRBc3luY1RvU3luYyhhc3luYyAoKSA9PiB0aGlzLmV4ZWN1dGVBYnN0cmFjdEZpbGVzKGFic3RyYWN0RmlsZXMpKSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUEsTUFDSjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0YsSUFBSTtBQUNKLFFBQ0UsQ0FBQyxLQUFLLDRCQUE0QjtBQUFBLE1BQ2hDO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGLENBQUMsS0FBSyxDQUFDLEtBQUssdUJBQXVCLFlBQVksR0FDL0M7QUFDQTtBQUFBLElBQ0Y7QUFFQSxVQUFNLFVBQVUsS0FBSyxtQkFBbUIsS0FBSztBQUM3QyxRQUFJLEtBQUssMEJBQTBCLEdBQUc7QUFDcEMsV0FBSyxrQkFBa0IsU0FBUztBQUFBLFFBQzlCLE1BQU0sS0FBSyx1QkFBdUI7QUFBQSxRQUNsQyxPQUFPO0FBQUEsTUFDVCxDQUFDO0FBQUEsSUFDSDtBQUVBLFNBQUssUUFBUSxDQUFDLFNBQVM7QUFDckIsV0FDRyxTQUFTLEtBQUssb0JBQW9CLEtBQUssSUFBSSxFQUMzQyxRQUFRLEtBQUssSUFBSSxFQUNqQixXQUFXLE9BQU8sRUFDbEIsWUFBUSxpQ0FBbUIsWUFBWSxLQUFLLG9CQUFvQixZQUFZLENBQUMsQ0FBQztBQUFBLElBQ25GLENBQUM7QUFBQSxFQUNIO0FBQUEsRUFFUSx3QkFBd0IsUUFBdUU7QUFDckcsVUFBTTtBQUFBLE1BQ0o7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGLElBQUk7QUFDSixRQUNFLENBQUMsS0FBSyw2QkFBNkI7QUFBQSxNQUNqQztBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRixDQUFDLEtBQUssQ0FBQyxLQUFLLHdCQUF3QixhQUFhLEdBQ2pEO0FBQ0E7QUFBQSxJQUNGO0FBRUEsVUFBTSxVQUFVLEtBQUssb0JBQW9CLEtBQUssbUJBQW1CLEtBQUs7QUFDdEUsUUFBSSxLQUFLLDBCQUEwQixHQUFHO0FBQ3BDLFdBQUssa0JBQWtCLFNBQVM7QUFBQSxRQUM5QixNQUFNLEtBQUssd0JBQXdCLEtBQUssdUJBQXVCO0FBQUEsUUFDL0QsT0FBTztBQUFBLE1BQ1QsQ0FBQztBQUFBLElBQ0g7QUFFQSxTQUFLLFFBQVEsQ0FBQyxTQUFTO0FBQ3JCLFdBQ0csU0FBUyxLQUFLLHFCQUFxQixLQUFLLG9CQUFvQixLQUFLLElBQUksRUFDckUsUUFBUSxLQUFLLElBQUksRUFDakIsV0FBVyxPQUFPLEVBQ2xCLFlBQVEsaUNBQW1CLFlBQVksS0FBSyxxQkFBcUIsYUFBYSxDQUFDLENBQUM7QUFBQSxJQUNyRixDQUFDO0FBQUEsRUFDSDtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
416
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2NvbW1hbmQtaGFuZGxlcnMvYWJzdHJhY3QtZmlsZS1jb21tYW5kLWhhbmRsZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb21tYW5kIGhhbmRsZXIgZm9yIGFic3RyYWN0IGZpbGUgY29tbWFuZHMgd2l0aCBmaWxlL2ZpbGVzIG1lbnUgaW50ZWdyYXRpb24uXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBJY29uTmFtZSxcbiAgTWVudSxcbiAgVEFic3RyYWN0RmlsZSxcbiAgV29ya3NwYWNlTGVhZlxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQge1xuICBjaGFpbixcbiAgY29udmVydEFzeW5jVG9TeW5jXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hc3luYyc7XG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5cbmltcG9ydCB0eXBlIHsgQWN0aXZlRmlsZVByb3ZpZGVyIH0gZnJvbSAnLi4vYWN0aXZlLWZpbGUtcHJvdmlkZXIudHMnO1xuaW1wb3J0IHR5cGUge1xuICBDb21tYW5kSGFuZGxlckNvbnN0cnVjdG9yUGFyYW1zLFxuICBDb21tYW5kSGFuZGxlclJlZ2lzdHJhdGlvbkNvbnRleHRcbn0gZnJvbSAnLi9jb21tYW5kLWhhbmRsZXIudHMnO1xuXG5pbXBvcnQgeyBHbG9iYWxDb21tYW5kSGFuZGxlciB9IGZyb20gJy4vZ2xvYmFsLWNvbW1hbmQtaGFuZGxlci50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgY3JlYXRpbmcgYW4gYWJzdHJhY3QgZmlsZSBjb21tYW5kIGhhbmRsZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWJzdHJhY3RGaWxlQ29tbWFuZEhhbmRsZXJDb25zdHJ1Y3RvclBhcmFtcyBleHRlbmRzIENvbW1hbmRIYW5kbGVyQ29uc3RydWN0b3JQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGl0ZW0gbmFtZSB0byB1c2UgaW4gdGhlIHNpbmdsZS1maWxlIG1lbnUuXG4gICAqL1xuICByZWFkb25seSBmaWxlTWVudUl0ZW1OYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VjdGlvbiB0byB1c2UgaW4gdGhlIHNpbmdsZS1maWxlIG1lbnUuXG4gICAqL1xuICByZWFkb25seSBmaWxlTWVudVNlY3Rpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBpY29uIHRvIHVzZSBpbiB0aGUgc2luZ2xlLWZpbGUgbWVudSBzdWJtZW51LlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZU1lbnVTdWJtZW51SWNvbj86IEljb25OYW1lIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgaXRlbSBuYW1lIHRvIHVzZSBpbiB0aGUgbXVsdGktZmlsZSBtZW51LlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZXNNZW51SXRlbU5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBzZWN0aW9uIHRvIHVzZSBpbiB0aGUgbXVsdGktZmlsZSBtZW51LlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZXNNZW51U2VjdGlvbj86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGljb24gdG8gdXNlIGluIHRoZSBtdWx0aS1maWxlIG1lbnUgc3VibWVudS5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVzTWVudVN1Ym1lbnVJY29uPzogSWNvbk5hbWUgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYWRkIHRoZSBjb21tYW5kIHRvIGEgc3VibWVudS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkQWRkQ29tbWFuZFRvU3VibWVudT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIEFic3RyYWN0RmlsZUNvbW1hbmRIYW5kbGVyLmhhbmRsZUFic3RyYWN0RmlsZU1lbnV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFic3RyYWN0RmlsZUNvbW1hbmRIYW5kbGVySGFuZGxlQWJzdHJhY3RGaWxlTWVudVBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgZmlsZSBvciBmb2xkZXIuXG4gICAqL1xuICByZWFkb25seSBhYnN0cmFjdEZpbGU6IFRBYnN0cmFjdEZpbGU7XG5cbiAgLyoqXG4gICAqIFRoZSB3b3Jrc3BhY2UgbGVhZiwgaWYgYXZhaWxhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgbGVhZj86IHVuZGVmaW5lZCB8IFdvcmtzcGFjZUxlYWY7XG5cbiAgLyoqXG4gICAqIFRoZSBtZW51IHRvIGFkZCBpdGVtcyB0by5cbiAgICovXG4gIHJlYWRvbmx5IG1lbnU6IE1lbnU7XG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2Ugb2YgdGhlIGV2ZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIEFic3RyYWN0RmlsZUNvbW1hbmRIYW5kbGVyLmhhbmRsZUFic3RyYWN0RmlsZXNNZW51fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBYnN0cmFjdEZpbGVDb21tYW5kSGFuZGxlckhhbmRsZUFic3RyYWN0RmlsZXNNZW51UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBmaWxlcyBvciBmb2xkZXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgYWJzdHJhY3RGaWxlczogVEFic3RyYWN0RmlsZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgd29ya3NwYWNlIGxlYWYsIGlmIGF2YWlsYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IGxlYWY/OiB1bmRlZmluZWQgfCBXb3Jrc3BhY2VMZWFmO1xuXG4gIC8qKlxuICAgKiBUaGUgbWVudSB0byBhZGQgaXRlbXMgdG8uXG4gICAqL1xuICByZWFkb25seSBtZW51OiBNZW51O1xuXG4gIC8qKlxuICAgKiBUaGUgc291cmNlIG9mIHRoZSBldmVudC5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBBYnN0cmFjdEZpbGVDb21tYW5kSGFuZGxlci5zaG91bGRBZGRUb0Fic3RyYWN0RmlsZU1lbnV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFic3RyYWN0RmlsZUNvbW1hbmRIYW5kbGVyU2hvdWxkQWRkVG9BYnN0cmFjdEZpbGVNZW51UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBmaWxlIG9yIGZvbGRlci5cbiAgICovXG4gIHJlYWRvbmx5IGFic3RyYWN0RmlsZTogVEFic3RyYWN0RmlsZTtcblxuICAvKipcbiAgICogVGhlIHdvcmtzcGFjZSBsZWFmLCBpZiBhdmFpbGFibGUuXG4gICAqL1xuICByZWFkb25seSBsZWFmPzogdW5kZWZpbmVkIHwgV29ya3NwYWNlTGVhZjtcblxuICAvKipcbiAgICogVGhlIHNvdXJjZSBvZiB0aGUgZXZlbnQuXG4gICAqL1xuICByZWFkb25seSBzb3VyY2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgQWJzdHJhY3RGaWxlQ29tbWFuZEhhbmRsZXIuc2hvdWxkQWRkVG9BYnN0cmFjdEZpbGVzTWVudX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWJzdHJhY3RGaWxlQ29tbWFuZEhhbmRsZXJTaG91bGRBZGRUb0Fic3RyYWN0RmlsZXNNZW51UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBmaWxlcyBvciBmb2xkZXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgYWJzdHJhY3RGaWxlczogVEFic3RyYWN0RmlsZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgd29ya3NwYWNlIGxlYWYsIGlmIGF2YWlsYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IGxlYWY/OiB1bmRlZmluZWQgfCBXb3Jrc3BhY2VMZWFmO1xuXG4gIC8qKlxuICAgKiBUaGUgc291cmNlIG9mIHRoZSBldmVudC5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbW1hbmQgaGFuZGxlciBmb3IgYWJzdHJhY3QgZmlsZSBjb21tYW5kcy5cbiAqXG4gKiBIYW5kbGVzIGJvdGggc2luZ2xlLWZpbGUgYW5kIG11bHRpLWZpbGUgY29udGV4dCBtZW51cy5cbiAqIFN1YmNsYXNzZXMgb3ZlcnJpZGUge0BsaW5rIGNhbkV4ZWN1dGVBYnN0cmFjdEZpbGV9IGFuZCB7QGxpbmsgZXhlY3V0ZUFic3RyYWN0RmlsZX0uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEZpbGVDb21tYW5kSGFuZGxlciBleHRlbmRzIEdsb2JhbENvbW1hbmRIYW5kbGVyIHtcbiAgLyoqXG4gICAqIEdldCB0aGUgYWN0aXZlIGZpbGUgcHJvdmlkZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBhY3RpdmUgZmlsZSBwcm92aWRlci5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgYWN0aXZlRmlsZVByb3ZpZGVyKCk6IEFjdGl2ZUZpbGVQcm92aWRlciB7XG4gICAgcmV0dXJuIGVuc3VyZU5vbk51bGxhYmxlKHRoaXMuX2FjdGl2ZUZpbGVQcm92aWRlcik7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaXRlbSBuYW1lIHRvIHVzZSBpbiB0aGUgc2luZ2xlLWZpbGUgbWVudS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGl0ZW0gbmFtZSwgb3IgYHVuZGVmaW5lZGAgdG8gdXNlIHRoZSBjb21tYW5kIG5hbWUuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IGZpbGVNZW51SXRlbU5hbWUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsZU1lbnVJdGVtTmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzZWN0aW9uIHRvIHVzZSBpbiB0aGUgc2luZ2xlLWZpbGUgbWVudS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHNlY3Rpb24gbmFtZSwgb3IgYHVuZGVmaW5lZGAgdG8gdXNlIHRoZSBwbHVnaW4gbmFtZS5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgZmlsZU1lbnVTZWN0aW9uKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbGVNZW51U2VjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBpY29uIHRvIHVzZSBpbiB0aGUgc2luZ2xlLWZpbGUgbWVudSBzdWJtZW51LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgaWNvbiwgb3IgYHVuZGVmaW5lZGAgZm9yIG5vIGljb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IGZpbGVNZW51U3VibWVudUljb24oKTogSWNvbk5hbWUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9maWxlTWVudVN1Ym1lbnVJY29uO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGl0ZW0gbmFtZSB0byB1c2UgaW4gdGhlIG11bHRpLWZpbGUgbWVudS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGl0ZW0gbmFtZSwgb3IgYHVuZGVmaW5lZGAgdG8gZmFsbCBiYWNrIHRvIHNpbmdsZS1maWxlIGl0ZW0gbmFtZS5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgZmlsZXNNZW51SXRlbU5hbWUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsZXNNZW51SXRlbU5hbWU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc2VjdGlvbiB0byB1c2UgaW4gdGhlIG11bHRpLWZpbGUgbWVudS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHNlY3Rpb24gbmFtZSwgb3IgYHVuZGVmaW5lZGAgdG8gZmFsbCBiYWNrIHRvIHNpbmdsZS1maWxlIHNlY3Rpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IGZpbGVzTWVudVNlY3Rpb24oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsZXNNZW51U2VjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBpY29uIHRvIHVzZSBpbiB0aGUgbXVsdGktZmlsZSBtZW51IHN1Ym1lbnUuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBpY29uLCBvciBgdW5kZWZpbmVkYCB0byBmYWxsIGJhY2sgdG8gc2luZ2xlLWZpbGUgc3VibWVudSBpY29uLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBmaWxlc01lbnVTdWJtZW51SWNvbigpOiBJY29uTmFtZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbGVzTWVudVN1Ym1lbnVJY29uO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWN0aXZlRmlsZVByb3ZpZGVyPzogQWN0aXZlRmlsZVByb3ZpZGVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9maWxlTWVudUl0ZW1OYW1lPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9maWxlTWVudVNlY3Rpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbGVNZW51U3VibWVudUljb24/OiBJY29uTmFtZSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSBfZmlsZXNNZW51SXRlbU5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbGVzTWVudVNlY3Rpb24/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpbGVzTWVudVN1Ym1lbnVJY29uPzogSWNvbk5hbWUgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBfcmVnaXN0cmF0aW9uU2hvdWxkQWRkQ29tbWFuZFRvU3VibWVudT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nob3VsZEFkZENvbW1hbmRUb1N1Ym1lbnU/OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGFic3RyYWN0IGZpbGUgY29tbWFuZCBoYW5kbGVyLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBhYnN0cmFjdCBmaWxlIGNvbW1hbmQgaGFuZGxlci5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IEFic3RyYWN0RmlsZUNvbW1hbmRIYW5kbGVyQ29uc3RydWN0b3JQYXJhbXMpIHtcbiAgICBzdXBlcihwYXJhbXMpO1xuICAgIHRoaXMuX2ZpbGVNZW51SXRlbU5hbWUgPSBwYXJhbXMuZmlsZU1lbnVJdGVtTmFtZTtcbiAgICB0aGlzLl9maWxlTWVudVNlY3Rpb24gPSBwYXJhbXMuZmlsZU1lbnVTZWN0aW9uO1xuICAgIHRoaXMuX2ZpbGVNZW51U3VibWVudUljb24gPSBwYXJhbXMuZmlsZU1lbnVTdWJtZW51SWNvbjtcbiAgICB0aGlzLl9maWxlc01lbnVJdGVtTmFtZSA9IHBhcmFtcy5maWxlc01lbnVJdGVtTmFtZTtcbiAgICB0aGlzLl9maWxlc01lbnVTZWN0aW9uID0gcGFyYW1zLmZpbGVzTWVudVNlY3Rpb247XG4gICAgdGhpcy5fZmlsZXNNZW51U3VibWVudUljb24gPSBwYXJhbXMuZmlsZXNNZW51U3VibWVudUljb247XG4gICAgdGhpcy5fc2hvdWxkQWRkQ29tbWFuZFRvU3VibWVudSA9IHBhcmFtcy5zaG91bGRBZGRDb21tYW5kVG9TdWJtZW51O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBmaWxlLW1lbnUgYW5kIGZpbGVzLW1lbnUgZXZlbnQgaGFuZGxlcnMuXG4gICAqXG4gICAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIHJlZ2lzdHJhdGlvbiBjb250ZXh0LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIG9uUmVnaXN0ZXJlZChjb250ZXh0OiBDb21tYW5kSGFuZGxlclJlZ2lzdHJhdGlvbkNvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBzdXBlci5vblJlZ2lzdGVyZWQoY29udGV4dCk7XG4gICAgdGhpcy5fYWN0aXZlRmlsZVByb3ZpZGVyID0gY29udGV4dC5hY3RpdmVGaWxlUHJvdmlkZXI7XG4gICAgdGhpcy5fcmVnaXN0cmF0aW9uU2hvdWxkQWRkQ29tbWFuZFRvU3VibWVudSA9IGNvbnRleHQuc2hvdWxkQWRkQ29tbWFuZFRvU3VibWVudTtcbiAgICBjb250ZXh0Lm1lbnVFdmVudFJlZ2lzdHJhci5yZWdpc3RlckZpbGVNZW51RXZlbnRIYW5kbGVyKChtZW51LCBhYnN0cmFjdEZpbGUsIHNvdXJjZSwgbGVhZikgPT4ge1xuICAgICAgdGhpcy5oYW5kbGVBYnN0cmFjdEZpbGVNZW51KHtcbiAgICAgICAgYWJzdHJhY3RGaWxlLFxuICAgICAgICBsZWFmLFxuICAgICAgICBtZW51LFxuICAgICAgICBzb3VyY2VcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGNvbnRleHQubWVudUV2ZW50UmVnaXN0cmFyLnJlZ2lzdGVyRmlsZXNNZW51RXZlbnRIYW5kbGVyKChtZW51LCBhYnN0cmFjdEZpbGVzLCBzb3VyY2UsIGxlYWYpID0+IHtcbiAgICAgIHRoaXMuaGFuZGxlQWJzdHJhY3RGaWxlc01lbnUoe1xuICAgICAgICBhYnN0cmFjdEZpbGVzLFxuICAgICAgICBsZWFmLFxuICAgICAgICBtZW51LFxuICAgICAgICBzb3VyY2VcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlIGZyb20gdGhlIGNvbW1hbmQgcGFsZXR0ZS5cbiAgICogVXNlcyB0aGUgYWN0aXZlIGZpbGUgYXMgdGhlIHRhcmdldC5cbiAgICpcbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgY29tbWFuZCBjYW4gZXhlY3V0ZS5cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBjYW5FeGVjdXRlKCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5zaG91bGRBZGRUb0NvbW1hbmRQYWxldHRlKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBhY3RpdmVGaWxlID0gdGhpcy5nZXRBY3RpdmVGaWxlKCk7XG4gICAgcmV0dXJuICEhYWN0aXZlRmlsZSAmJiB0aGlzLmNhbkV4ZWN1dGVBYnN0cmFjdEZpbGUoYWN0aXZlRmlsZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUgZm9yIGEgc2luZ2xlIGFic3RyYWN0IGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBfYWJzdHJhY3RGaWxlIC0gVGhlIGZpbGUgb3IgZm9sZGVyLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNhbkV4ZWN1dGVBYnN0cmFjdEZpbGUoX2Fic3RyYWN0RmlsZTogVEFic3RyYWN0RmlsZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlIGZvciBtdWx0aXBsZSBhYnN0cmFjdCBmaWxlcy5cbiAgICogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjaGVja3MgZWFjaCBmaWxlIGluZGl2aWR1YWxseS5cbiAgICpcbiAgICogQHBhcmFtIGFic3RyYWN0RmlsZXMgLSBUaGUgZmlsZXMgb3IgZm9sZGVycy5cbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgY29tbWFuZCBjYW4gZXhlY3V0ZS5cbiAgICovXG4gIHByb3RlY3RlZCBjYW5FeGVjdXRlQWJzdHJhY3RGaWxlcyhhYnN0cmFjdEZpbGVzOiBUQWJzdHJhY3RGaWxlW10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gYWJzdHJhY3RGaWxlcy5sZW5ndGggPiAwICYmIGFic3RyYWN0RmlsZXMuZXZlcnkoKGYpID0+IHRoaXMuY2FuRXhlY3V0ZUFic3RyYWN0RmlsZShmKSk7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZXMgdGhlIGNvbW1hbmQgZnJvbSB0aGUgY29tbWFuZCBwYWxldHRlIHVzaW5nIHRoZSBhY3RpdmUgZmlsZS5cbiAgICpcbiAgICogQHJldHVybnMgYFByb21pc2FibGU8dm9pZD5gIHRoYXQgcmVzb2x2ZXMgd2hlbiBjb21tYW5kIGhhZCBiZWVuIGV4ZWN1dGVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGV4ZWN1dGUoKTogUHJvbWlzYWJsZTx2b2lkPiB7XG4gICAgY29uc3QgYWN0aXZlRmlsZSA9IHRoaXMuZ2V0QWN0aXZlRmlsZSgpO1xuICAgIGlmIChhY3RpdmVGaWxlKSB7XG4gICAgICByZXR1cm4gdGhpcy5leGVjdXRlQWJzdHJhY3RGaWxlKGFjdGl2ZUZpbGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyB0aGUgY29tbWFuZCBmb3IgYSBzaW5nbGUgYWJzdHJhY3QgZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIGFic3RyYWN0RmlsZSAtIFRoZSBmaWxlIG9yIGZvbGRlci5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBleGVjdXRlQWJzdHJhY3RGaWxlKGFic3RyYWN0RmlsZTogVEFic3RyYWN0RmlsZSk6IFByb21pc2FibGU8dm9pZD47XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGVzIHRoZSBjb21tYW5kIGZvciBtdWx0aXBsZSBhYnN0cmFjdCBmaWxlcy5cbiAgICogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBleGVjdXRlcyBzZXF1ZW50aWFsbHkuXG4gICAqXG4gICAqIEBwYXJhbSBhYnN0cmFjdEZpbGVzIC0gVGhlIGZpbGVzIG9yIGZvbGRlcnMuXG4gICAqIEByZXR1cm5zIGBQcm9taXNhYmxlPHZvaWQ+YCB0aGF0IHJlc29sdmVzIHdoZW4gYWxsIGFic3RyYWN0IGZpbGVzIGhhdmUgYmVlbiBleGVjdXRlZC5cbiAgICovXG4gIHByb3RlY3RlZCBleGVjdXRlQWJzdHJhY3RGaWxlcyhhYnN0cmFjdEZpbGVzOiBUQWJzdHJhY3RGaWxlW10pOiBQcm9taXNhYmxlPHZvaWQ+IHtcbiAgICBsZXQgcHJvbWlzZTogbnVsbCB8IFByb21pc2U8dm9pZD4gPSBudWxsO1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiBhYnN0cmFjdEZpbGVzKSB7XG4gICAgICBwcm9taXNlID0gY2hhaW4ocHJvbWlzZSwgKCkgPT4gdGhpcy5leGVjdXRlQWJzdHJhY3RGaWxlKGZpbGUpKTtcbiAgICB9XG5cbiAgICBpZiAocHJvbWlzZSkge1xuICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGFjdGl2ZSBmaWxlLCBpZiBhbnksIHRvIHVzZSBhcyB0aGUgdGFyZ2V0IHdoZW4gZXhlY3V0aW5nIGZyb20gdGhlIGNvbW1hbmQgcGFsZXR0ZS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGFjdGl2ZSBmaWxlIG9yIGBudWxsYCBpZiBub25lIGlzIGFjdGl2ZS5cbiAgICovXG4gIHByb3RlY3RlZCBnZXRBY3RpdmVGaWxlKCk6IG51bGwgfCBUQWJzdHJhY3RGaWxlIHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVGaWxlUHJvdmlkZXIuZ2V0QWN0aXZlRmlsZSgpID8/IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB3aGV0aGVyIHRvIGFkZCB0aGUgY29tbWFuZCB0byBhIHN1Ym1lbnUuXG4gICAqXG4gICAqIFRoZSByZWdpc3RyYXRpb24gY29udGV4dCB3aW5zIG92ZXIgdGhlIGNvbnN0cnVjdG9yIHZhbHVlOiBhIG1lbnUgc3VyZmFjZSB0aGF0IGFscmVhZHkgd3JhcHMgZXZlcnlcbiAgICogY29udHJpYnV0ZWQgaXRlbSBpbiBhIHBsdWdpbi10aXRsZWQgcGFyZW50IGVudHJ5IGZvcmNlcyB0aGlzIG9mZiwgYmVjYXVzZSBhIHNlY3Rpb24gc3VibWVudVxuICAgKiBkZWNsYXJlZCBoZXJlIHdvdWxkIG1ha2UgYE1lbnUuc29ydCgpYCBuZXN0IGEgc2Vjb25kIHBsdWdpbi10aXRsZWQgZW50cnkgaW5zaWRlIHRoZSBmaXJzdC5cbiAgICpcbiAgICogQHJldHVybnMgV2hldGhlciB0byBhZGQgdG8gYSBzdWJtZW51LlxuICAgKi9cbiAgcHJvdGVjdGVkIHNob3VsZEFkZENvbW1hbmRUb1N1Ym1lbnUoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3JlZ2lzdHJhdGlvblNob3VsZEFkZENvbW1hbmRUb1N1Ym1lbnUgPz8gdGhpcy5fc2hvdWxkQWRkQ29tbWFuZFRvU3VibWVudTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgY29tbWFuZCBzaG91bGQgYXBwZWFyIGluIHRoZSBzaW5nbGUtZmlsZSBjb250ZXh0IG1lbnUuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIHNpbmdsZS1maWxlIG1lbnUgY2hlY2suXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdG8gYWRkIHRvIHRoZSBmaWxlIG1lbnUuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2hvdWxkQWRkVG9BYnN0cmFjdEZpbGVNZW51KHBhcmFtczogQWJzdHJhY3RGaWxlQ29tbWFuZEhhbmRsZXJTaG91bGRBZGRUb0Fic3RyYWN0RmlsZU1lbnVQYXJhbXMpOiBib29sZWFuIHtcbiAgICBjb25zdCB7IGFic3RyYWN0RmlsZTogX2Fic3RyYWN0RmlsZSwgbGVhZjogX2xlYWYsIHNvdXJjZTogX3NvdXJjZSB9ID0gcGFyYW1zO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgY29tbWFuZCBzaG91bGQgYXBwZWFyIGluIHRoZSBtdWx0aS1maWxlIGNvbnRleHQgbWVudS5cbiAgICogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjaGVja3MgZWFjaCBmaWxlIGluZGl2aWR1YWxseS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgbXVsdGktZmlsZSBtZW51IGNoZWNrLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRvIGFkZCB0byB0aGUgZmlsZXMgbWVudS5cbiAgICovXG4gIHByb3RlY3RlZCBzaG91bGRBZGRUb0Fic3RyYWN0RmlsZXNNZW51KHBhcmFtczogQWJzdHJhY3RGaWxlQ29tbWFuZEhhbmRsZXJTaG91bGRBZGRUb0Fic3RyYWN0RmlsZXNNZW51UGFyYW1zKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHBhcmFtcy5hYnN0cmFjdEZpbGVzLmV2ZXJ5KChmKSA9PlxuICAgICAgdGhpcy5zaG91bGRBZGRUb0Fic3RyYWN0RmlsZU1lbnUoe1xuICAgICAgICBhYnN0cmFjdEZpbGU6IGYsXG4gICAgICAgIGxlYWY6IHBhcmFtcy5sZWFmLFxuICAgICAgICBzb3VyY2U6IHBhcmFtcy5zb3VyY2VcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgY29tbWFuZCBzaG91bGQgYXBwZWFyIGluIHRoZSBjb21tYW5kIHBhbGV0dGUuXG4gICAqXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdG8gYWRkIHRvIHRoZSBjb21tYW5kIHBhbGV0dGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2hvdWxkQWRkVG9Db21tYW5kUGFsZXR0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQWJzdHJhY3RGaWxlTWVudShwYXJhbXM6IEFic3RyYWN0RmlsZUNvbW1hbmRIYW5kbGVySGFuZGxlQWJzdHJhY3RGaWxlTWVudVBhcmFtcyk6IHZvaWQge1xuICAgIGNvbnN0IHtcbiAgICAgIGFic3RyYWN0RmlsZSxcbiAgICAgIGxlYWYsXG4gICAgICBtZW51LFxuICAgICAgc291cmNlXG4gICAgfSA9IHBhcmFtcztcbiAgICBpZiAoXG4gICAgICAhdGhpcy5zaG91bGRBZGRUb0Fic3RyYWN0RmlsZU1lbnUoe1xuICAgICAgICBhYnN0cmFjdEZpbGUsXG4gICAgICAgIGxlYWYsXG4gICAgICAgIHNvdXJjZVxuICAgICAgfSkgfHwgIXRoaXMuY2FuRXhlY3V0ZUFic3RyYWN0RmlsZShhYnN0cmFjdEZpbGUpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2VjdGlvbiA9IHRoaXMuZmlsZU1lbnVTZWN0aW9uID8/IHRoaXMucGx1Z2luTmFtZTtcbiAgICBpZiAodGhpcy5zaG91bGRBZGRDb21tYW5kVG9TdWJtZW51KCkpIHtcbiAgICAgIG1lbnUuc2V0U2VjdGlvblN1Ym1lbnUoc2VjdGlvbiwge1xuICAgICAgICBpY29uOiB0aGlzLmZpbGVNZW51U3VibWVudUljb24gPz8gJycsXG4gICAgICAgIHRpdGxlOiBzZWN0aW9uXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBtZW51LmFkZEl0ZW0oKGl0ZW0pID0+IHtcbiAgICAgIGl0ZW1cbiAgICAgICAgLnNldFRpdGxlKHRoaXMuZmlsZU1lbnVJdGVtTmFtZSA/PyB0aGlzLm5hbWUpXG4gICAgICAgIC5zZXRJY29uKHRoaXMuaWNvbilcbiAgICAgICAgLnNldFNlY3Rpb24oc2VjdGlvbilcbiAgICAgICAgLm9uQ2xpY2soY29udmVydEFzeW5jVG9TeW5jKGFzeW5jICgpID0+IHRoaXMuZXhlY3V0ZUFic3RyYWN0RmlsZShhYnN0cmFjdEZpbGUpKSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUFic3RyYWN0RmlsZXNNZW51KHBhcmFtczogQWJzdHJhY3RGaWxlQ29tbWFuZEhhbmRsZXJIYW5kbGVBYnN0cmFjdEZpbGVzTWVudVBhcmFtcyk6IHZvaWQge1xuICAgIGNvbnN0IHtcbiAgICAgIGFic3RyYWN0RmlsZXMsXG4gICAgICBsZWFmLFxuICAgICAgbWVudSxcbiAgICAgIHNvdXJjZVxuICAgIH0gPSBwYXJhbXM7XG4gICAgaWYgKFxuICAgICAgIXRoaXMuc2hvdWxkQWRkVG9BYnN0cmFjdEZpbGVzTWVudSh7XG4gICAgICAgIGFic3RyYWN0RmlsZXMsXG4gICAgICAgIGxlYWYsXG4gICAgICAgIHNvdXJjZVxuICAgICAgfSkgfHwgIXRoaXMuY2FuRXhlY3V0ZUFic3RyYWN0RmlsZXMoYWJzdHJhY3RGaWxlcylcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWN0aW9uID0gdGhpcy5maWxlc01lbnVTZWN0aW9uID8/IHRoaXMuZmlsZU1lbnVTZWN0aW9uID8/IHRoaXMucGx1Z2luTmFtZTtcbiAgICBpZiAodGhpcy5zaG91bGRBZGRDb21tYW5kVG9TdWJtZW51KCkpIHtcbiAgICAgIG1lbnUuc2V0U2VjdGlvblN1Ym1lbnUoc2VjdGlvbiwge1xuICAgICAgICBpY29uOiB0aGlzLmZpbGVzTWVudVN1Ym1lbnVJY29uID8/IHRoaXMuZmlsZU1lbnVTdWJtZW51SWNvbiA/PyAnJyxcbiAgICAgICAgdGl0bGU6IHNlY3Rpb25cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIG1lbnUuYWRkSXRlbSgoaXRlbSkgPT4ge1xuICAgICAgaXRlbVxuICAgICAgICAuc2V0VGl0bGUodGhpcy5maWxlc01lbnVJdGVtTmFtZSA/PyB0aGlzLmZpbGVNZW51SXRlbU5hbWUgPz8gdGhpcy5uYW1lKVxuICAgICAgICAuc2V0SWNvbih0aGlzLmljb24pXG4gICAgICAgIC5zZXRTZWN0aW9uKHNlY3Rpb24pXG4gICAgICAgIC5vbkNsaWNrKGNvbnZlcnRBc3luY1RvU3luYyhhc3luYyAoKSA9PiB0aGlzLmV4ZWN1dGVBYnN0cmFjdEZpbGVzKGFic3RyYWN0RmlsZXMpKSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFB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QUNBO0FBQUEsTUFDQTtBQUFBLElBQ0YsSUFBSTtBQUNKLFFBQ0UsQ0FBQyxLQUFLLDRCQUE0QjtBQUFBLE1BQ2hDO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGLENBQUMsS0FBSyxDQUFDLEtBQUssdUJBQXVCLFlBQVksR0FDL0M7QUFDQTtBQUFBLElBQ0Y7QUFFQSxVQUFNLFVBQVUsS0FBSyxtQkFBbUIsS0FBSztBQUM3QyxRQUFJLEtBQUssMEJBQTBCLEdBQUc7QUFDcEMsV0FBSyxrQkFBa0IsU0FBUztBQUFBLFFBQzlCLE1BQU0sS0FBSyx1QkFBdUI7QUFBQSxRQUNsQyxPQUFPO0FBQUEsTUFDVCxDQUFDO0FBQUEsSUFDSDtBQUVBLFNBQUssUUFBUSxDQUFDLFNBQVM7QUFDckIsV0FDRyxTQUFTLEtBQUssb0JBQW9CLEtBQUssSUFBSSxFQUMzQyxRQUFRLEtBQUssSUFBSSxFQUNqQixXQUFXLE9BQU8sRUFDbEIsWUFBUSxpQ0FBbUIsWUFBWSxLQUFLLG9CQUFvQixZQUFZLENBQUMsQ0FBQztBQUFBLElBQ25GLENBQUM7QUFBQSxFQUNIO0FBQUEsRUFFUSx3QkFBd0IsUUFBdUU7QUFDckcsVUFBTTtBQUFBLE1BQ0o7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGLElBQUk7QUFDSixRQUNFLENBQUMsS0FBSyw2QkFBNkI7QUFBQSxNQUNqQztBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRixDQUFDLEtBQUssQ0FBQyxLQUFLLHdCQUF3QixhQUFhLEdBQ2pEO0FBQ0E7QUFBQSxJQUNGO0FBRUEsVUFBTSxVQUFVLEtBQUssb0JBQW9CLEtBQUssbUJBQW1CLEtBQUs7QUFDdEUsUUFBSSxLQUFLLDBCQUEwQixHQUFHO0FBQ3BDLFdBQUssa0JBQWtCLFNBQVM7QUFBQSxRQUM5QixNQUFNLEtBQUssd0JBQXdCLEtBQUssdUJBQXVCO0FBQUEsUUFDL0QsT0FBTztBQUFBLE1BQ1QsQ0FBQztBQUFBLElBQ0g7QUFFQSxTQUFLLFFBQVEsQ0FBQyxTQUFTO0FBQ3JCLFdBQ0csU0FBUyxLQUFLLHFCQUFxQixLQUFLLG9CQUFvQixLQUFLLElBQUksRUFDckUsUUFBUSxLQUFLLElBQUksRUFDakIsV0FBVyxPQUFPLEVBQ2xCLFlBQVEsaUNBQW1CLFlBQVksS0FBSyxxQkFBcUIsYUFBYSxDQUFDLENBQUM7QUFBQSxJQUNyRixDQUFDO0FBQUEsRUFDSDtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -5,40 +5,32 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
5
5
|
|
|
6
6
|
(function () {
|
|
7
7
|
function ensureDisposeSymbols(symbolConstructor = Symbol) {
|
|
8
|
-
symbolConstructor.asyncDispose ??= symbolConstructor.for(
|
|
9
|
-
symbolConstructor.dispose ??= symbolConstructor.for(
|
|
8
|
+
symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
|
|
9
|
+
symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
function ensureBrowserProcess() {
|
|
13
13
|
const browserProcess = {
|
|
14
14
|
browser: true,
|
|
15
15
|
cwd() {
|
|
16
|
-
return
|
|
16
|
+
return "/";
|
|
17
17
|
},
|
|
18
18
|
env: {},
|
|
19
|
-
platform:
|
|
19
|
+
platform: "android"
|
|
20
20
|
};
|
|
21
|
-
|
|
22
|
-
// eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
|
|
23
21
|
const existingProcess = globalThis.process;
|
|
24
|
-
|
|
25
22
|
if (!existingProcess) {
|
|
26
|
-
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
27
23
|
globalThis.process = browserProcess;
|
|
28
24
|
return;
|
|
29
25
|
}
|
|
30
|
-
|
|
31
26
|
if (existingProcess.versions?.node) {
|
|
32
27
|
return;
|
|
33
28
|
}
|
|
34
|
-
|
|
35
29
|
const existingProcessRecord = existingProcess;
|
|
36
|
-
|
|
37
30
|
for (const [key, value] of Object.entries(browserProcess)) {
|
|
38
31
|
existingProcessRecord[key] ??= value;
|
|
39
32
|
}
|
|
40
|
-
|
|
41
|
-
existingProcessRecord['browser'] = true;
|
|
33
|
+
existingProcessRecord["browser"] = true;
|
|
42
34
|
}
|
|
43
35
|
|
|
44
36
|
function keepName($unknown) {
|
|
@@ -46,17 +38,13 @@ function keepName($unknown) {
|
|
|
46
38
|
}
|
|
47
39
|
|
|
48
40
|
(function initCjs() {
|
|
49
|
-
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
50
41
|
const globalThisRecord = globalThis;
|
|
51
42
|
ensureDisposeSymbols();
|
|
52
|
-
globalThisRecord[
|
|
53
|
-
globalThisRecord[
|
|
54
|
-
|
|
43
|
+
globalThisRecord["__name"] ??= keepName;
|
|
44
|
+
globalThisRecord["__extractDefault"] ??= extractDefault;
|
|
55
45
|
ensureBrowserProcess();
|
|
56
|
-
|
|
57
|
-
// eslint-disable-next-line unicorn/consistent-function-scoping -- Serialized with initCjs into the banner; at module scope it would be left out of it.
|
|
58
46
|
function extractDefault(module) {
|
|
59
|
-
return module && module.__esModule &&
|
|
47
|
+
return module && module.__esModule && "default" in module ? module.default : module;
|
|
60
48
|
}
|
|
61
49
|
})();
|
|
62
50
|
})();
|
|
@@ -65,8 +53,6 @@ function keepName($unknown) {
|
|
|
65
53
|
if (!originalRequire || originalRequire.__isPatched) {
|
|
66
54
|
return;
|
|
67
55
|
}
|
|
68
|
-
|
|
69
|
-
// eslint-disable-next-line no-global-assign, no-implicit-globals -- We need to patch the `require()` function.
|
|
70
56
|
require = Object.assign(
|
|
71
57
|
(id) => requirePatched(id),
|
|
72
58
|
originalRequire,
|
|
@@ -74,53 +60,45 @@ function keepName($unknown) {
|
|
|
74
60
|
__isPatched: true
|
|
75
61
|
}
|
|
76
62
|
);
|
|
77
|
-
|
|
78
63
|
function extractDefault(module) {
|
|
79
|
-
return module && module.__esModule &&
|
|
64
|
+
return module && module.__esModule && "default" in module ? module.default : module;
|
|
80
65
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
'@codemirror/tooltip']
|
|
111
|
-
);
|
|
112
|
-
|
|
66
|
+
const OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
|
|
67
|
+
"@codemirror/autocomplete",
|
|
68
|
+
"@codemirror/collab",
|
|
69
|
+
"@codemirror/commands",
|
|
70
|
+
"@codemirror/language",
|
|
71
|
+
"@codemirror/lint",
|
|
72
|
+
"@codemirror/search",
|
|
73
|
+
"@codemirror/state",
|
|
74
|
+
"@codemirror/text",
|
|
75
|
+
"@codemirror/view",
|
|
76
|
+
"@lezer/common",
|
|
77
|
+
"@lezer/highlight",
|
|
78
|
+
"@lezer/lr",
|
|
79
|
+
"obsidian"
|
|
80
|
+
]);
|
|
81
|
+
const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = /* @__PURE__ */ new Set([
|
|
82
|
+
"@codemirror/closebrackets",
|
|
83
|
+
"@codemirror/comment",
|
|
84
|
+
"@codemirror/fold",
|
|
85
|
+
"@codemirror/gutter",
|
|
86
|
+
"@codemirror/highlight",
|
|
87
|
+
"@codemirror/history",
|
|
88
|
+
"@codemirror/matchbrackets",
|
|
89
|
+
"@codemirror/panel",
|
|
90
|
+
"@codemirror/rangeset",
|
|
91
|
+
"@codemirror/rectangular-selection",
|
|
92
|
+
"@codemirror/stream-parser",
|
|
93
|
+
"@codemirror/tooltip"
|
|
94
|
+
]);
|
|
113
95
|
function requirePatched(id) {
|
|
114
96
|
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
|
|
115
97
|
return originalRequire?.(id);
|
|
116
98
|
}
|
|
117
|
-
|
|
118
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
119
99
|
if (globalThis.app.isMobile) {
|
|
120
|
-
if (id ===
|
|
121
|
-
// eslint-disable-next-line no-console -- Valid usage.
|
|
100
|
+
if (id === "process" || id === "node:process") {
|
|
122
101
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
123
|
-
|
|
124
102
|
return process;
|
|
125
103
|
}
|
|
126
104
|
} else {
|
|
@@ -129,8 +107,6 @@ function keepName($unknown) {
|
|
|
129
107
|
return extractDefault(module);
|
|
130
108
|
}
|
|
131
109
|
}
|
|
132
|
-
|
|
133
|
-
// eslint-disable-next-line no-console -- Valid usage.
|
|
134
110
|
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
|
|
135
111
|
return {};
|
|
136
112
|
}
|
|
@@ -299,4 +275,4 @@ class CommandHandlerComponent extends import_component_ex.ComponentEx {
|
|
|
299
275
|
0 && (module.exports = {
|
|
300
276
|
CommandHandlerComponent
|
|
301
277
|
});
|
|
302
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2NvbW1hbmQtaGFuZGxlcnMvY29tbWFuZC1oYW5kbGVyLWNvbXBvbmVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbXBvbmVudCB0aGF0IHJlZ2lzdGVycyB7QGxpbmsgQ29tbWFuZEhhbmRsZXJ9cyB3aXRoIE9ic2lkaWFuIGFuZCB0aWVzIHRoZWlyIHJlbW92YWwgdG8gYSBjaG9zZW4gbGlmZXRpbWUuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBEaXNwb3NhYmxlRXggfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZGlzcG9zYWJsZSc7XG5cbmltcG9ydCB7XG4gIENhbGxiYWNrRGlzcG9zYWJsZSxcbiAgQ29tYmluZURpc3Bvc2FibGUsXG4gIERpc3Bvc2FibGVCYXNlXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9kaXNwb3NhYmxlJztcblxuaW1wb3J0IHR5cGUgeyBBY3RpdmVGaWxlUHJvdmlkZXIgfSBmcm9tICcuLi9hY3RpdmUtZmlsZS1wcm92aWRlci50cyc7XG5pbXBvcnQgdHlwZSB7IENvbW1hbmRSZWdpc3RyYXIgfSBmcm9tICcuLi9jb21tYW5kLXJlZ2lzdHJhci50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIEVkaXRvck1lbnVFdmVudEhhbmRsZXIsXG4gIEZpbGVNZW51RXZlbnRIYW5kbGVyLFxuICBGaWxlc01lbnVFdmVudEhhbmRsZXIsXG4gIE1hcmtkb3duVmlld3BvcnRNZW51RXZlbnRIYW5kbGVyLFxuICBNZW51RXZlbnRSZWdpc3RyYXJcbn0gZnJvbSAnLi4vbWVudS1ldmVudC1yZWdpc3RyYXIudHMnO1xuaW1wb3J0IHR5cGUge1xuICBDb21tYW5kSGFuZGxlcixcbiAgQ29tbWFuZEhhbmRsZXJSZWdpc3RyYXRpb25Db250ZXh0XG59IGZyb20gJy4vY29tbWFuZC1oYW5kbGVyLnRzJztcblxuaW1wb3J0IHsgQ29tcG9uZW50RXggfSBmcm9tICcuLi9jb21wb25lbnRzL2NvbXBvbmVudC1leC50cyc7XG5cbi8qKlxuICogQnVpbGRzIGEgZnJlc2ggc2V0IG9mIHtAbGluayBDb21tYW5kSGFuZGxlcn1zLlxuICpcbiAqIEEgZmFjdG9yeSByYXRoZXIgdGhhbiBhIHJlYWR5LW1hZGUgYXJyYXkgYmVjYXVzZSB7QGxpbmsgQ29tbWFuZEhhbmRsZXJDb21wb25lbnR9IHJlZ2lzdGVycyB0aGUgc2FtZVxuICogaGFuZGxlcnMgYWdhaW5zdCBzZXZlcmFsIG1lbnUgc3VyZmFjZXMsIGFuZCBhIGhhbmRsZXIgY2FycmllcyBwZXItcmVnaXN0cmF0aW9uIHN0YXRlIChpdHNcbiAqIGFjdGl2ZS1maWxlIHByb3ZpZGVyLCBpdHMgcGx1Z2luIG5hbWUsIGFuZCB3aGF0ZXZlciBhIHN1YmNsYXNzIHJlY29yZHMgaW5cbiAqIHtAbGluayBDb21tYW5kSGFuZGxlci5vblJlZ2lzdGVyZWR9KSBcdTIwMTQgc28gZXZlcnkgc3VyZmFjZSBuZWVkcyBpdHMgb3duIGluc3RhbmNlcy5cbiAqXG4gKiBSZXR1cm5pbmcgc2hhcmVkIGluc3RhbmNlcyAoYCgpID0+IFtoYW5kbGVyMVNpbmdsZXRvbiwgaGFuZGxlcjJTaW5nbGV0b25dYCkgcmVpbnRyb2R1Y2VzIGV4YWN0bHkgdGhlXG4gKiBidWcgdGhlIGZhY3RvcnkgZXhpc3RzIHRvIGF2b2lkLCBzbyBpdCBpcyBub3QgbWVyZWx5IGRpc2NvdXJhZ2VkOiB7QGxpbmsgQ29tbWFuZEhhbmRsZXIub25SZWdpc3RlcmVkfVxuICogdGhyb3dzIG9uIHRoZSBzZWNvbmQgcmVnaXN0cmF0aW9uIG9mIGFuIGluc3RhbmNlLiB7QGxpbmsgQ29tbWFuZEhhbmRsZXJDb21wb25lbnQucmVnaXN0ZXJDb21tYW5kSGFuZGxlcnN9XG4gKiBhd2FpdHMgaXQsIHNvIHRoYXQgdGhyb3cgcmVqZWN0cyB0aGUgY2FsbGVyJ3MgcHJvbWlzZSBpbnN0ZWFkIG9mIGRlZ3JhZGluZyBpbnRvIGEgd3JvbmcgY29udGV4dCBtZW51LlxuICpcbiAqIEByZXR1cm5zIFRoZSBjb21tYW5kIGhhbmRsZXJzIHRvIHJlZ2lzdGVyLiBBIE5FVyBpbnN0YW5jZSBvZiBlYWNoIG9uIGV2ZXJ5IGNhbGwuXG4gKi9cbmV4cG9ydCB0eXBlIENvbW1hbmRIYW5kbGVyRmFjdG9yeSA9ICgpID0+IENvbW1hbmRIYW5kbGVyW107XG5cbmludGVyZmFjZSBDb21tYW5kSGFuZGxlckNvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zIHtcbiAgcmVhZG9ubHkgYWN0aXZlRmlsZVByb3ZpZGVyOiBBY3RpdmVGaWxlUHJvdmlkZXI7XG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxNZW51RXZlbnRSZWdpc3RyYXJzPzogcmVhZG9ubHkgTWVudUV2ZW50UmVnaXN0cmFyW10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIHRoZSBsaWZldGltZSBvd25lciBmb3IgYSByZWdpc3RyYXRpb24gdGhhdCBuYW1lcyBub25lIG9mIGl0cyBvd24uXG4gICAqXG4gICAqIFdoZW4gb21pdHRlZCwgZXZlcnkgcmVnaXN0cmF0aW9uIGlzIG93bmVkIGJ5IHRoZSBjb21wb25lbnQgaXRzZWxmLCBzbyBpdHMgdW5sb2FkIHJlbW92ZXMgZXZlcnkgY29tbWFuZFxuICAgKiBpdCByZWdpc3RlcmVkIFx1MjAxNCB0aGUgYmVoYXZpb3IgYSBzdGFuZGFsb25lIGNvbXBvbmVudCBoYXMgYWx3YXlzIGhhZC4gTm8gYEBkZWZhdWx0YCB0YWcsIGJlY2F1c2UgdGhlXG4gICAqIGVmZmVjdGl2ZSBkZWZhdWx0IGlzIGEgY2xvc3VyZSBvdmVyIGB0aGlzYCByYXRoZXIgdGhhbiBhIGxpdGVyYWwgb3IgYSBsaW5rYWJsZSBzeW1ib2wuXG4gICAqL1xuICByZWFkb25seSBjb21tYW5kTGlmZXRpbWVPd25lclByb3ZpZGVyPzogQ29tbWFuZExpZmV0aW1lT3duZXJQcm92aWRlciB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgY29tbWFuZFJlZ2lzdHJhcjogQ29tbWFuZFJlZ2lzdHJhcjtcbiAgcmVhZG9ubHkgbWVudUV2ZW50UmVnaXN0cmFyOiBNZW51RXZlbnRSZWdpc3RyYXI7XG4gIHJlYWRvbmx5IHBsdWdpbk5hbWU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIENvbW1hbmRIYW5kbGVyQ29tcG9uZW50UmVnaXN0ZXJDb21tYW5kSGFuZGxlcnNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgd2hvc2UgdW5sb2FkIHJlbW92ZXMgdGhlIGNvbW1hbmRzIHRoaXMgY2FsbCByZWdpc3RlcnMsIG92ZXJyaWRpbmcgdGhlIGNvbXBvbmVudCdzXG4gICAqIHtAbGluayBDb21tYW5kTGlmZXRpbWVPd25lclByb3ZpZGVyfSBmb3IgdGhpcyBvbmUgY2FsbC5cbiAgICpcbiAgICogTmFtZSBvbmUgd2hlbiB0aGUgYmF0Y2gncyBsaWZldGltZSBkaWZmZXJzIGZyb20gdGhlIGRlZmF1bHQgXHUyMDE0IHRoZSBjYWxsZXIgdGhhdCBuZWVkcyBpdCBpcyBvbmVcbiAgICogcmVnaXN0ZXJpbmcgdGhyb3VnaCBhIGNvbXBvbmVudCB3aG9zZSBkZWZhdWx0IG93bmVyIGlzIHNvbWUgU0hPUlRFUi1saXZlZCBzdXJmYWNlLCBhbmQgd2hvc2Ugb3duXG4gICAqIGNvbW1hbmRzIGhhdmUgdG8gb3V0bGl2ZSBpdC5cbiAgICovXG4gIHJlYWRvbmx5IGxpZmV0aW1lT3duZXI/OiBDb21wb25lbnRFeCB8IHVuZGVmaW5lZDtcbn1cblxuaW50ZXJmYWNlIENvbW1hbmRIYW5kbGVyQ29tcG9uZW50UmVnaXN0ZXJNZW51RXZlbnRIYW5kbGVyc1BhcmFtcyB7XG4gIHJlYWRvbmx5IGNvbW1hbmRIYW5kbGVyOiBDb21tYW5kSGFuZGxlcjtcbiAgcmVhZG9ubHkgbWVudUV2ZW50UmVnaXN0cmFyOiBNZW51RXZlbnRSZWdpc3RyYXI7XG4gIHJlYWRvbmx5IHNob3VsZEFkZENvbW1hbmRUb1N1Ym1lbnU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBjb21wb25lbnQgdGhhdCBvd25zIHRoZSB0ZWFyZG93biBvZiB0aGUgY29tbWFuZHMgYSB7QGxpbmsgQ29tbWFuZEhhbmRsZXJDb21wb25lbnQucmVnaXN0ZXJDb21tYW5kSGFuZGxlcnN9XG4gKiBjYWxsIHJlZ2lzdGVycyBcdTIwMTQgdGhlIG9uZSB3aG9zZSB1bmxvYWQgcmVtb3ZlcyB0aGVtIGZyb20gdGhlIHBhbGV0dGUuXG4gKlxuICogQSBwcm92aWRlciByYXRoZXIgdGhhbiBhIGNvbXBvbmVudCwgYmVjYXVzZSB0aGUgb3duZXIgaXMgbm90IHN0YWJsZSBmb3IgdGhlIGxpZmUgb2YgdGhlIHJlZ2lzdGVyaW5nXG4gKiBjb21wb25lbnQuIGBQbHVnaW5CYXNlYCBoYW5kcyBiYWNrIHRoZSB3cmFwcGVyIGhvbGRpbmcgdGhlIHBsdWdpbidzIGZlYXR1cmUgc3VyZmFjZSwgYW5kIHRoYXQgd3JhcHBlciBpc1xuICogUkVQTEFDRUQgd2hvbGVzYWxlIGV2ZXJ5IHRpbWUgdGhlIHN1cmZhY2UgZ29lcyBkb3duIGFuZCBjb21lcyBiYWNrIChhIGRlY2xhcmVkIGRlcGVuZGVuY3kgbG9zdCBhbmRcbiAqIHJlZ2FpbmVkLCBhIGRlY2xhcmVkIGNvbmZsaWN0IGFwcGVhcmluZyBhbmQgYmVpbmcgcmVzb2x2ZWQpLiBBIHZhbHVlIGNhcHR1cmVkIG9uY2Ugd291bGQgdGllIHRoZSBzZWNvbmRcbiAqIGN5Y2xlJ3MgY29tbWFuZHMgdG8gdGhlIGZpcnN0IGN5Y2xlJ3MgZGVhZCB3cmFwcGVyLCB3aGVyZSBub3RoaW5nIHdvdWxkIGV2ZXIgZGlzcG9zZSB0aGVtLlxuICpcbiAqIEByZXR1cm5zIFRoZSBjb21wb25lbnQgdGhhdCBzaG91bGQgb3duIHRoZSByZWdpc3RyYXRpb24ncyB0ZWFyZG93bi5cbiAqL1xudHlwZSBDb21tYW5kTGlmZXRpbWVPd25lclByb3ZpZGVyID0gKCkgPT4gQ29tcG9uZW50RXg7XG5cbi8qKlxuICogQSBwZXItY29tbWFuZCB7QGxpbmsgTWVudUV2ZW50UmVnaXN0cmFyfSB0aGF0IGRlbGVnYXRlcyB0byBhIHNoYXJlZCByZWdpc3RyYXIgd2hpbGUgY29sbGVjdGluZyB0aGVcbiAqIHtAbGluayBEaXNwb3NhYmxlRXh9IGVhY2ggcmVnaXN0cmF0aW9uIHJldHVybnMsIHNvIGRpc3Bvc2luZyB0aGlzIHNjb3BlIHVucmVnaXN0ZXJzIGV4YWN0bHkgdGhhdCBjb21tYW5kJ3NcbiAqIG1lbnUgZXZlbnRzLiBBIGhhbmRsZXIgbWF5IGtlZXAgdGhlIHNjb3BlIHBhc3Qge0BsaW5rIENvbW1hbmRIYW5kbGVyLm9uUmVnaXN0ZXJlZH0gYW5kIHJlZ2lzdGVyIG1lbnUgZXZlbnRzXG4gKiBsYXRlciBcdTIwMTQgYSBicmlkZ2UgYmluZGluZyBhdCBsYXlvdXQtcmVhZHksIHNheSBcdTIwMTQgc28gYSByZWdpc3RyYXRpb24gdGhhdCBhcnJpdmVzIGFmdGVyIHRoaXMgc2NvcGUgd2FzIGRpc3Bvc2VkXG4gKiBpcyBkaXNwb3NlZCBpbW1lZGlhdGVseSBpbnN0ZWFkIG9mIGxlYWtpbmcuXG4gKi9cbmNsYXNzIENvbW1hbmRNZW51RXZlbnRTY29wZSBleHRlbmRzIERpc3Bvc2FibGVCYXNlIGltcGxlbWVudHMgTWVudUV2ZW50UmVnaXN0cmFyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBkaXNwb3NhYmxlczogRGlzcG9zYWJsZUV4W10gPSBbXTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBpbm5lcjogTWVudUV2ZW50UmVnaXN0cmFyKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlckVkaXRvck1lbnVFdmVudEhhbmRsZXIoaGFuZGxlcjogRWRpdG9yTWVudUV2ZW50SGFuZGxlcik6IERpc3Bvc2FibGVFeCB7XG4gICAgcmV0dXJuIHRoaXMuY29sbGVjdCh0aGlzLmlubmVyLnJlZ2lzdGVyRWRpdG9yTWVudUV2ZW50SGFuZGxlcihoYW5kbGVyKSk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJGaWxlTWVudUV2ZW50SGFuZGxlcihoYW5kbGVyOiBGaWxlTWVudUV2ZW50SGFuZGxlcik6IERpc3Bvc2FibGVFeCB7XG4gICAgcmV0dXJuIHRoaXMuY29sbGVjdCh0aGlzLmlubmVyLnJlZ2lzdGVyRmlsZU1lbnVFdmVudEhhbmRsZXIoaGFuZGxlcikpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyRmlsZXNNZW51RXZlbnRIYW5kbGVyKGhhbmRsZXI6IEZpbGVzTWVudUV2ZW50SGFuZGxlcik6IERpc3Bvc2FibGVFeCB7XG4gICAgcmV0dXJuIHRoaXMuY29sbGVjdCh0aGlzLmlubmVyLnJlZ2lzdGVyRmlsZXNNZW51RXZlbnRIYW5kbGVyKGhhbmRsZXIpKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck1hcmtkb3duVmlld3BvcnRNZW51RXZlbnRIYW5kbGVyKGhhbmRsZXI6IE1hcmtkb3duVmlld3BvcnRNZW51RXZlbnRIYW5kbGVyKTogRGlzcG9zYWJsZUV4IHtcbiAgICByZXR1cm4gdGhpcy5jb2xsZWN0KHRoaXMuaW5uZXIucmVnaXN0ZXJNYXJrZG93blZpZXdwb3J0TWVudUV2ZW50SGFuZGxlcihoYW5kbGVyKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcGVyZm9ybURpc3Bvc2UoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBkaXNwb3NhYmxlIG9mIHRoaXMuZGlzcG9zYWJsZXMpIHtcbiAgICAgIGRpc3Bvc2FibGUuZGlzcG9zZSgpO1xuICAgIH1cbiAgICB0aGlzLmRpc3Bvc2FibGVzLmxlbmd0aCA9IDA7XG4gIH1cblxuICBwcml2YXRlIGNvbGxlY3QoZGlzcG9zYWJsZTogRGlzcG9zYWJsZUV4KTogRGlzcG9zYWJsZUV4IHtcbiAgICBpZiAodGhpcy5pc0Rpc3Bvc2VkKSB7XG4gICAgICBkaXNwb3NhYmxlLmRpc3Bvc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kaXNwb3NhYmxlcy5wdXNoKGRpc3Bvc2FibGUpO1xuICAgIH1cblxuICAgIHJldHVybiBkaXNwb3NhYmxlO1xuICB9XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHtAbGluayBDb21tYW5kSGFuZGxlcn1zIHdpdGggT2JzaWRpYW4gYW5kIG1hbmFnZXMgdGhlaXIgbGlmZWN5Y2xlLlxuICpcbiAqIENhbGwge0BsaW5rIHJlZ2lzdGVyQ29tbWFuZEhhbmRsZXJzfSB0byByZWdpc3RlciBhIGJhdGNoIG9mIGhhbmRsZXJzIG9uIGRlbWFuZCAoYXMgbWFueSB0aW1lcyBhc1xuICogbmVlZGVkIHdoaWxlIHRoZSBjb21wb25lbnQgaXMgYWxpdmUpOyBkaXNwb3NlIHRoZSByZXR1cm5lZCB7QGxpbmsgRGlzcG9zYWJsZUV4fSB0byB1bnJlZ2lzdGVyIGV4YWN0bHlcbiAqIHRob3NlIGhhbmRsZXJzIFx1MjAxNCBpbmNsdWRpbmcgYW55IG1lbnUgZXZlbnRzIHRoZXkgcmVnaXN0ZXJlZCBcdTIwMTQgb3IgbGV0IHRoZSBiYXRjaCdzIExJRkVUSU1FIE9XTkVSIHVubG9hZCB0b1xuICogcmVtb3ZlIGV2ZXJ5IGNvbW1hbmQgc3RpbGwgcmVnaXN0ZXJlZCB0aHJvdWdoIGl0LlxuICpcbiAqIFRoYXQgb3duZXIgaXMgdGhpcyBjb21wb25lbnQgYnkgZGVmYXVsdCwgd2hpY2ggaXMgd2h5IGEgc3RhbmRhbG9uZSBjb21wb25lbnQgcmVtb3ZlcyBpdHMgb3duIGNvbW1hbmRzXG4gKiB3aGVuIGl0IHVubG9hZHMuIEl0IGlzIG92ZXJyaWRhYmxlIGJlY2F1c2UgdGhlIHJlZ2lzdGVyaW5nIGNvbXBvbmVudCBhbmQgdGhlIHJlZ2lzdGVyZWQgY29tbWFuZHMgZG8gbm90XG4gKiBhbHdheXMgc2hhcmUgYSBsaWZldGltZTogYFBsdWdpbkJhc2VgIGtlZXBzIE9ORSBvZiB0aGVzZSBydW5uaW5nIGZvciB0aGUgd2hvbGUgbGlmZSBvZiB0aGUgcGx1Z2luIFx1MjAxNCBpdCBpc1xuICogd2hhdCB0aGUgXCJ5b3VyIGRlcGVuZGVuY3kgd2VudCBhd2F5XCIgbm90aWNlIGlzIGJ1aWx0IGJlc2lkZSBcdTIwMTQgd2hpbGUgdGhlIGNvbW1hbmRzIGEgc3ViY2xhc3MgcmVnaXN0ZXJzIGZyb21cbiAqIGBvbmxvYWRJbXBsYCBiZWxvbmcgdG8gdGhlIGZlYXR1cmUgc3VyZmFjZSB0aGUgZ2F0ZSB0ZWFycyBkb3duIGFuZCByZWJ1aWxkcyB1bmRlcm5lYXRoIGl0LiBTbyB0aGUgb3duZXIgaXNcbiAqIHJlc29sdmVkIHBlciBjYWxsLCBmcm9tIGEge0BsaW5rIENvbW1hbmRMaWZldGltZU93bmVyUHJvdmlkZXJ9IG9yIGZyb20gdGhlIGNhbGwncyBvd24gYGxpZmV0aW1lT3duZXJgLlxuICpcbiAqIFRoZSBzYW1lIGhhbmRsZXJzIGFyZSBmZWQgdG8gZXZlcnkgbWVudSBzdXJmYWNlIHRoZSBjb21wb25lbnQga25vd3MgYWJvdXQ6IE9ic2lkaWFuJ3Mgb3duIHdvcmtzcGFjZVxuICogZXZlbnRzLCBwbHVzIGVhY2ggYWRkaXRpb25hbCB7QGxpbmsgTWVudUV2ZW50UmVnaXN0cmFyfSBicmlkZ2luZyBhbm90aGVyIHBsdWdpbidzIG1lbnVzLlxuICovXG5leHBvcnQgY2xhc3MgQ29tbWFuZEhhbmRsZXJDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRFeCB7XG4gIC8qKlxuICAgKiBQcm92aWRlciBmb3IgYWNjZXNzaW5nIHRoZSBjdXJyZW50bHkgYWN0aXZlIGZpbGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWN0aXZlRmlsZVByb3ZpZGVyOiBBY3RpdmVGaWxlUHJvdmlkZXI7XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhcnMgZm9yIG1lbnUgc3VyZmFjZXMgdGhhdCBidWlsZCB0aGVpciBvd24gcGx1Z2luLXRpdGxlZCBwYXJlbnQgZW50cnksIGFuZCB0aGVyZWZvcmUgdGFrZVxuICAgKiB0aGUgaGFuZGxlcnMgd2l0aCB0aGVpciBzZWN0aW9uIHN1Ym1lbnUgZm9yY2VkIG9mZi5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBhZGRpdGlvbmFsTWVudUV2ZW50UmVnaXN0cmFyczogcmVhZG9ubHkgTWVudUV2ZW50UmVnaXN0cmFyW107XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhciB1c2VkIHRvIGFkZCBhbmQgcmVtb3ZlIGNvbW1hbmRzIHdpdGggT2JzaWRpYW4uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29tbWFuZFJlZ2lzdHJhcjogQ29tbWFuZFJlZ2lzdHJhcjtcblxuICAvKipcbiAgICogUmVnaXN0cmFyIGZvciBtZW51IGV2ZW50IGhhbmRsZXJzLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1lbnVFdmVudFJlZ2lzdHJhcjogTWVudUV2ZW50UmVnaXN0cmFyO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcGx1Z2luIHRoYXQgb3ducyB0aGUgY29tbWFuZHMuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY29tbWFuZExpZmV0aW1lT3duZXJQcm92aWRlcjogQ29tbWFuZExpZmV0aW1lT3duZXJQcm92aWRlcjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBjb21tYW5kIGhhbmRsZXIgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBDb21tYW5kSGFuZGxlckNvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFjdGl2ZUZpbGVQcm92aWRlciA9IHBhcmFtcy5hY3RpdmVGaWxlUHJvdmlkZXI7XG4gICAgdGhpcy5tZW51RXZlbnRSZWdpc3RyYXIgPSBwYXJhbXMubWVudUV2ZW50UmVnaXN0cmFyO1xuICAgIHRoaXMuYWRkaXRpb25hbE1lbnVFdmVudFJlZ2lzdHJhcnMgPSBwYXJhbXMuYWRkaXRpb25hbE1lbnVFdmVudFJlZ2lzdHJhcnMgPz8gW107XG4gICAgdGhpcy5jb21tYW5kUmVnaXN0cmFyID0gcGFyYW1zLmNvbW1hbmRSZWdpc3RyYXI7XG4gICAgdGhpcy5wbHVnaW5OYW1lID0gcGFyYW1zLnBsdWdpbk5hbWU7XG4gICAgdGhpcy5jb21tYW5kTGlmZXRpbWVPd25lclByb3ZpZGVyID0gcGFyYW1zLmNvbW1hbmRMaWZldGltZU93bmVyUHJvdmlkZXIgPz8gKCgpOiBDb21wb25lbnRFeCA9PiB0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIGNvbW1hbmQgaGFuZGxlcnMgYW5kIHJlZ2lzdGVycyB0aGVtIHdpdGggT2JzaWRpYW4sIGdpdmluZyBlYWNoIGl0cyBvd24gcnVudGltZVxuICAgKiByZWdpc3RyYXRpb24gY29udGV4dC4gRWFjaCBoYW5kbGVyJ3MgY29tbWFuZCBpcyBhZGRlZCBpbW1lZGlhdGVseTsgdGhlIHJldHVybmVkXG4gICAqIHtAbGluayBEaXNwb3NhYmxlRXh9IHJlbW92ZXMgdGhlIGNvbW1hbmRzIHJlZ2lzdGVyZWQgYnkgdGhpcyBjYWxsIFx1MjAxNCBhbmQgYW55IG1lbnUgZXZlbnRzIHRob3NlXG4gICAqIGhhbmRsZXJzIHJlZ2lzdGVyZWQgdmlhIHRoZWlyIGNvbnRleHQncyB7QGxpbmsgTWVudUV2ZW50UmVnaXN0cmFyfSBcdTIwMTQgd2hlbiBkaXNwb3NlZC4gQW55IGNvbW1hbmRcbiAgICogc3RpbGwgcmVnaXN0ZXJlZCB3aGVuIHRoZSBjb21wb25lbnQgdW5sb2FkcyBpcyByZW1vdmVkIGF1dG9tYXRpY2FsbHkuXG4gICAqXG4gICAqIFRoZSBmYWN0b3J5IGlzIGludm9rZWQgb25jZSBtb3JlIGZvciBldmVyeSBhZGRpdGlvbmFsIG1lbnUgc3VyZmFjZSwgc28gYSBwbHVnaW4gZGVjbGFyZXMgaXRzXG4gICAqIGhhbmRsZXJzIE9OQ0UgYW5kIGFsbCBzdXJmYWNlcyBhcmUgZmVkLiBUaG9zZSBleHRyYSBwYXNzZXMgYWRkIG5vIGNvbW1hbmRzIFx1MjAxNCB0aGUgcGFsZXR0ZSBhbHJlYWR5XG4gICAqIGhhcyBldmVyeSBjb21tYW5kIGZyb20gdGhlIGZpcnN0IHBhc3MuXG4gICAqXG4gICAqIFdoaWNoIGNvbXBvbmVudCdzIHVubG9hZCByZW1vdmVzIHRoZW0gaXMgdGhlIGNhbGxlcidzIHRvIGNob29zZTogYG9wdGlvbnMubGlmZXRpbWVPd25lcmAgZm9yIHRoaXMgb25lXG4gICAqIGJhdGNoLCBvdGhlcndpc2Ugd2hhdGV2ZXIgdGhpcyBjb21wb25lbnQncyB7QGxpbmsgQ29tbWFuZExpZmV0aW1lT3duZXJQcm92aWRlcn0gcmVzb2x2ZXMgdG8sIHdoaWNoXG4gICAqIGRlZmF1bHRzIHRvIHRoZSBjb21wb25lbnQgaXRzZWxmLiBBIGNvbW1hbmQgbXVzdCBuZXZlciBvdXRsaXZlIHRoZSBjb2xsYWJvcmF0b3JzIGl0cyBoYW5kbGVyIGNsb3Nlc1xuICAgKiBvdmVyIFx1MjAxNCBsZWZ0IG9uIGEgbG9uZ2VyLWxpdmVkIG93bmVyIGl0IHN0YXlzIGluIHRoZSBwYWxldHRlIGNhbGxpbmcgaW50byB0b3JuLWRvd24gb2JqZWN0cyBcdTIwMTQgc28gdGhlXG4gICAqIG93bmVyIHRvIG5hbWUgaXMgdGhlIHNob3J0ZXN0LWxpdmVkIHRoaW5nIHRoZSBiYXRjaCBkZXBlbmRzIG9uLlxuICAgKlxuICAgKiBAcGFyYW0gY29tbWFuZEhhbmRsZXJGYWN0b3J5IC0gQnVpbGRzIGEgZnJlc2ggc2V0IG9mIGNvbW1hbmQgaGFuZGxlcnMsIG9uY2UgcGVyIG1lbnUgc3VyZmFjZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcmVnaXN0cmF0aW9uIG9wdGlvbnMuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIERpc3Bvc2FibGVFeH0gdGhhdCB1bnJlZ2lzdGVycyB0aGUgaGFuZGxlcnMgKGNvbW1hbmRzICsgbWVudSBldmVudHMpIHJlZ2lzdGVyZWQgYnkgdGhpcyBjYWxsLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHJlZ2lzdGVyQ29tbWFuZEhhbmRsZXJzKGNvbW1hbmRIYW5kbGVyRmFjdG9yeTogQ29tbWFuZEhhbmRsZXJGYWN0b3J5LCBvcHRpb25zPzogQ29tbWFuZEhhbmRsZXJDb21wb25lbnRSZWdpc3RlckNvbW1hbmRIYW5kbGVyc09wdGlvbnMpOiBQcm9taXNlPERpc3Bvc2FibGVFeD4ge1xuICAgIC8vIFJlc29sdmVkIHBlciBjYWxsLCBuZXZlciBjYXB0dXJlZCBhdCBjb25zdHJ1Y3Rpb246IGEgcHJvdmlkZXIncyBhbnN3ZXIgY2hhbmdlcyBvdmVyIHRoZSBjb21wb25lbnQnc1xuICAgIC8vIGxpZmUuIGBQbHVnaW5CYXNlYCByZXR1cm5zIHRoZSB3cmFwcGVyIGhvbGRpbmcgdGhlIGZlYXR1cmUgc3VyZmFjZSwgYW5kIHRoYXQgd3JhcHBlciBpcyByZXBsYWNlZFxuICAgIC8vIHdob2xlc2FsZSBvbiBldmVyeSBnYXRlIGN5Y2xlIFx1MjAxNCBzbyB0aGlzIGN5Y2xlJ3MgY29tbWFuZHMgaGF2ZSB0byBsYW5kIG9uIHRoaXMgY3ljbGUncyB3cmFwcGVyLlxuICAgIGNvbnN0IGxpZmV0aW1lT3duZXIgPSBvcHRpb25zPy5saWZldGltZU93bmVyID8/IHRoaXMuY29tbWFuZExpZmV0aW1lT3duZXJQcm92aWRlcigpO1xuICAgIGNvbnN0IGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGNvbW1hbmRIYW5kbGVyIG9mIGNvbW1hbmRIYW5kbGVyRmFjdG9yeSgpKSB7XG4gICAgICBjb25zdCBjb21tYW5kID0gY29tbWFuZEhhbmRsZXIuYnVpbGRDb21tYW5kKCk7XG4gICAgICAvLyBDYXB0dXJlIHRoZSBpZCBiZWZvcmUgcmVnaXN0ZXJpbmcuIGBQbHVnaW4uYWRkQ29tbWFuZGAgbXV0YXRlcyBgY29tbWFuZC5pZGAgKHByZWZpeGluZyBpdCB3aXRoXG4gICAgICAvLyBgdGhpcy5tYW5pZmVzdC5pZGApLCB3aGlsZSBgUGx1Z2luLnJlbW92ZUNvbW1hbmRgIHJlLXByZWZpeGVzIFx1MjAxNCBzbyByZW1vdmFsIG5lZWRzIHRoZSBvcmlnaW5hbCBpZC5cbiAgICAgIC8vIFJlYWRpbmcgYGNvbW1hbmQuaWRgIGFmdGVyIGBhZGRDb21tYW5kYCB3b3VsZCBkb3VibGUtcHJlZml4IGl0LCBzbyB0aGUgY29tbWFuZCBpcyBuZXZlciByZW1vdmVkLlxuICAgICAgY29uc3QgY29tbWFuZElkID0gY29tbWFuZC5pZDtcbiAgICAgIHRoaXMuY29tbWFuZFJlZ2lzdHJhci5hZGRDb21tYW5kKGNvbW1hbmQpO1xuXG4gICAgICAvLyBFYWNoIGNvbW1hbmQgZ2V0cyBpdHMgb3duIHJlZ2lzdHJhdGlvbiBjb250ZXh0IHdpdGggYSBwZXItY29tbWFuZCBtZW51LWV2ZW50IHNjb3BlLCBzbyBkaXNwb3Npbmcgb25lXG4gICAgICAvLyBjb21tYW5kIHRlYXJzIGRvd24gaXRzIG93biBtZW51IGV2ZW50cyB3aXRob3V0IGFmZmVjdGluZyB0aGUgb3RoZXJzLlxuICAgICAgY29uc3QgbWVudUV2ZW50U2NvcGUgPSBhd2FpdCB0aGlzLnJlZ2lzdGVyTWVudUV2ZW50SGFuZGxlcnMoeyBjb21tYW5kSGFuZGxlciwgbWVudUV2ZW50UmVnaXN0cmFyOiB0aGlzLm1lbnVFdmVudFJlZ2lzdHJhciB9KTtcblxuICAgICAgY29uc3QgZGlzcG9zYWJsZSA9IG5ldyBDYWxsYmFja0Rpc3Bvc2FibGUoe1xuICAgICAgICBjYWxsYmFjazogKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuY29tbWFuZFJlZ2lzdHJhci5yZW1vdmVDb21tYW5kKGNvbW1hbmRJZCk7XG4gICAgICAgICAgbWVudUV2ZW50U2NvcGUuZGlzcG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIFRpZSByZW1vdmFsIHRvIHRoZSBsaWZldGltZSBvd25lcidzIHVubG9hZCwgc28gYSBjb21tYW5kIG5ldmVyIG91dGxpdmVzIHdoYXQgaXQgY2FsbHMgaW50by5cbiAgICAgIGRpc3Bvc2FibGVzLnB1c2gobGlmZXRpbWVPd25lci5yZWdpc3RlckRpc3Bvc2FibGUoZGlzcG9zYWJsZSkpO1xuICAgIH1cblxuICAgIC8vIEV2ZXJ5IGFkZGl0aW9uYWwgc3VyZmFjZSBnZXRzIGl0cyBPV04gaGFuZGxlciBpbnN0YW5jZXMgXHUyMDE0IGEgaGFuZGxlciBjYXJyaWVzIHBlci1yZWdpc3RyYXRpb25cbiAgICAvLyBzdGF0ZSwgc28gb25lIGluc3RhbmNlIGNhbm5vdCBzZXJ2ZSB0d28gc3VyZmFjZXMgXHUyMDE0IGFuZCB0YWtlcyB0aGVtIHdpdGggdGhlIHNlY3Rpb24gc3VibWVudVxuICAgIC8vIGZvcmNlZCBvZmYsIGJlY2F1c2Ugc3VjaCBhIHN1cmZhY2Ugd3JhcHMgZXZlcnl0aGluZyBpbiBhIHBsdWdpbi10aXRsZWQgcGFyZW50IGVudHJ5IG9mIGl0cyBvd24uXG4gICAgZm9yIChjb25zdCBhZGRpdGlvbmFsTWVudUV2ZW50UmVnaXN0cmFyIG9mIHRoaXMuYWRkaXRpb25hbE1lbnVFdmVudFJlZ2lzdHJhcnMpIHtcbiAgICAgIGZvciAoY29uc3QgY29tbWFuZEhhbmRsZXIgb2YgY29tbWFuZEhhbmRsZXJGYWN0b3J5KCkpIHtcbiAgICAgICAgZGlzcG9zYWJsZXMucHVzaChsaWZldGltZU93bmVyLnJlZ2lzdGVyRGlzcG9zYWJsZShhd2FpdCB0aGlzLnJlZ2lzdGVyTWVudUV2ZW50SGFuZGxlcnMoeyBjb21tYW5kSGFuZGxlciwgbWVudUV2ZW50UmVnaXN0cmFyOiBhZGRpdGlvbmFsTWVudUV2ZW50UmVnaXN0cmFyLCBzaG91bGRBZGRDb21tYW5kVG9TdWJtZW51OiBmYWxzZSB9KSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgQ29tYmluZURpc3Bvc2FibGUoeyBkaXNwb3NhYmxlcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kcyBhIGNvbW1hbmQgaGFuZGxlciBpdHMgcmVnaXN0cmF0aW9uIGNvbnRleHQsIHNjb3BlZCBzbyB0aGF0IGRpc3Bvc2luZyB0aGUgcmV0dXJuZWQgc2NvcGVcbiAgICogdW5yZWdpc3RlcnMgZXhhY3RseSB0aGUgbWVudSBldmVudHMgdGhhdCBoYW5kbGVyIHJlZ2lzdGVyZWQuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhpcyByZWdpc3RyYXRpb24uXG4gICAqIEByZXR1cm5zIFRoZSBoYW5kbGVyJ3MgbWVudS1ldmVudCBzY29wZS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcmVnaXN0ZXJNZW51RXZlbnRIYW5kbGVycyhwYXJhbXM6IENvbW1hbmRIYW5kbGVyQ29tcG9uZW50UmVnaXN0ZXJNZW51RXZlbnRIYW5kbGVyc1BhcmFtcyk6IFByb21pc2U8Q29tbWFuZE1lbnVFdmVudFNjb3BlPiB7XG4gICAgY29uc3QgbWVudUV2ZW50U2NvcGUgPSBuZXcgQ29tbWFuZE1lbnVFdmVudFNjb3BlKHBhcmFtcy5tZW51RXZlbnRSZWdpc3RyYXIpO1xuICAgIGNvbnN0IGNvbnRleHQ6IENvbW1hbmRIYW5kbGVyUmVnaXN0cmF0aW9uQ29udGV4dCA9IHtcbiAgICAgIGFjdGl2ZUZpbGVQcm92aWRlcjogdGhpcy5hY3RpdmVGaWxlUHJvdmlkZXIsXG4gICAgICBtZW51RXZlbnRSZWdpc3RyYXI6IG1lbnVFdmVudFNjb3BlLFxuICAgICAgcGx1Z2luTmFtZTogdGhpcy5wbHVnaW5OYW1lLFxuICAgICAgc2hvdWxkQWRkQ29tbWFuZFRvU3VibWVudTogcGFyYW1zLnNob3VsZEFkZENvbW1hbmRUb1N1Ym1lbnVcbiAgICB9O1xuICAgIGF3YWl0IHBhcmFtcy5jb21tYW5kSGFuZGxlci5vblJlZ2lzdGVyZWQoY29udGV4dCk7XG4gICAgcmV0dXJuIG1lbnVFdmVudFNjb3BlO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBUUEsd0JBSU87QUFnQlAsMEJBQTRCO0FBMkU1QixNQUFNLDhCQUE4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
|
|
278
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2NvbW1hbmQtaGFuZGxlcnMvY29tbWFuZC1oYW5kbGVyLWNvbXBvbmVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbXBvbmVudCB0aGF0IHJlZ2lzdGVycyB7QGxpbmsgQ29tbWFuZEhhbmRsZXJ9cyB3aXRoIE9ic2lkaWFuIGFuZCB0aWVzIHRoZWlyIHJlbW92YWwgdG8gYSBjaG9zZW4gbGlmZXRpbWUuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBEaXNwb3NhYmxlRXggfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZGlzcG9zYWJsZSc7XG5cbmltcG9ydCB7XG4gIENhbGxiYWNrRGlzcG9zYWJsZSxcbiAgQ29tYmluZURpc3Bvc2FibGUsXG4gIERpc3Bvc2FibGVCYXNlXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9kaXNwb3NhYmxlJztcblxuaW1wb3J0IHR5cGUgeyBBY3RpdmVGaWxlUHJvdmlkZXIgfSBmcm9tICcuLi9hY3RpdmUtZmlsZS1wcm92aWRlci50cyc7XG5pbXBvcnQgdHlwZSB7IENvbW1hbmRSZWdpc3RyYXIgfSBmcm9tICcuLi9jb21tYW5kLXJlZ2lzdHJhci50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIEVkaXRvck1lbnVFdmVudEhhbmRsZXIsXG4gIEZpbGVNZW51RXZlbnRIYW5kbGVyLFxuICBGaWxlc01lbnVFdmVudEhhbmRsZXIsXG4gIE1hcmtkb3duVmlld3BvcnRNZW51RXZlbnRIYW5kbGVyLFxuICBNZW51RXZlbnRSZWdpc3RyYXJcbn0gZnJvbSAnLi4vbWVudS1ldmVudC1yZWdpc3RyYXIudHMnO1xuaW1wb3J0IHR5cGUge1xuICBDb21tYW5kSGFuZGxlcixcbiAgQ29tbWFuZEhhbmRsZXJSZWdpc3RyYXRpb25Db250ZXh0XG59IGZyb20gJy4vY29tbWFuZC1oYW5kbGVyLnRzJztcblxuaW1wb3J0IHsgQ29tcG9uZW50RXggfSBmcm9tICcuLi9jb21wb25lbnRzL2NvbXBvbmVudC1leC50cyc7XG5cbi8qKlxuICogQnVpbGRzIGEgZnJlc2ggc2V0IG9mIHtAbGluayBDb21tYW5kSGFuZGxlcn1zLlxuICpcbiAqIEEgZmFjdG9yeSByYXRoZXIgdGhhbiBhIHJlYWR5LW1hZGUgYXJyYXkgYmVjYXVzZSB7QGxpbmsgQ29tbWFuZEhhbmRsZXJDb21wb25lbnR9IHJlZ2lzdGVycyB0aGUgc2FtZVxuICogaGFuZGxlcnMgYWdhaW5zdCBzZXZlcmFsIG1lbnUgc3VyZmFjZXMsIGFuZCBhIGhhbmRsZXIgY2FycmllcyBwZXItcmVnaXN0cmF0aW9uIHN0YXRlIChpdHNcbiAqIGFjdGl2ZS1maWxlIHByb3ZpZGVyLCBpdHMgcGx1Z2luIG5hbWUsIGFuZCB3aGF0ZXZlciBhIHN1YmNsYXNzIHJlY29yZHMgaW5cbiAqIHtAbGluayBDb21tYW5kSGFuZGxlci5vblJlZ2lzdGVyZWR9KSBcdTIwMTQgc28gZXZlcnkgc3VyZmFjZSBuZWVkcyBpdHMgb3duIGluc3RhbmNlcy5cbiAqXG4gKiBSZXR1cm5pbmcgc2hhcmVkIGluc3RhbmNlcyAoYCgpID0+IFtoYW5kbGVyMVNpbmdsZXRvbiwgaGFuZGxlcjJTaW5nbGV0b25dYCkgcmVpbnRyb2R1Y2VzIGV4YWN0bHkgdGhlXG4gKiBidWcgdGhlIGZhY3RvcnkgZXhpc3RzIHRvIGF2b2lkLCBzbyBpdCBpcyBub3QgbWVyZWx5IGRpc2NvdXJhZ2VkOiB7QGxpbmsgQ29tbWFuZEhhbmRsZXIub25SZWdpc3RlcmVkfVxuICogdGhyb3dzIG9uIHRoZSBzZWNvbmQgcmVnaXN0cmF0aW9uIG9mIGFuIGluc3RhbmNlLiB7QGxpbmsgQ29tbWFuZEhhbmRsZXJDb21wb25lbnQucmVnaXN0ZXJDb21tYW5kSGFuZGxlcnN9XG4gKiBhd2FpdHMgaXQsIHNvIHRoYXQgdGhyb3cgcmVqZWN0cyB0aGUgY2FsbGVyJ3MgcHJvbWlzZSBpbnN0ZWFkIG9mIGRlZ3JhZGluZyBpbnRvIGEgd3JvbmcgY29udGV4dCBtZW51LlxuICpcbiAqIEByZXR1cm5zIFRoZSBjb21tYW5kIGhhbmRsZXJzIHRvIHJlZ2lzdGVyLiBBIE5FVyBpbnN0YW5jZSBvZiBlYWNoIG9uIGV2ZXJ5IGNhbGwuXG4gKi9cbmV4cG9ydCB0eXBlIENvbW1hbmRIYW5kbGVyRmFjdG9yeSA9ICgpID0+IENvbW1hbmRIYW5kbGVyW107XG5cbmludGVyZmFjZSBDb21tYW5kSGFuZGxlckNvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zIHtcbiAgcmVhZG9ubHkgYWN0aXZlRmlsZVByb3ZpZGVyOiBBY3RpdmVGaWxlUHJvdmlkZXI7XG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxNZW51RXZlbnRSZWdpc3RyYXJzPzogcmVhZG9ubHkgTWVudUV2ZW50UmVnaXN0cmFyW10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIHRoZSBsaWZldGltZSBvd25lciBmb3IgYSByZWdpc3RyYXRpb24gdGhhdCBuYW1lcyBub25lIG9mIGl0cyBvd24uXG4gICAqXG4gICAqIFdoZW4gb21pdHRlZCwgZXZlcnkgcmVnaXN0cmF0aW9uIGlzIG93bmVkIGJ5IHRoZSBjb21wb25lbnQgaXRzZWxmLCBzbyBpdHMgdW5sb2FkIHJlbW92ZXMgZXZlcnkgY29tbWFuZFxuICAgKiBpdCByZWdpc3RlcmVkIFx1MjAxNCB0aGUgYmVoYXZpb3IgYSBzdGFuZGFsb25lIGNvbXBvbmVudCBoYXMgYWx3YXlzIGhhZC4gTm8gYEBkZWZhdWx0YCB0YWcsIGJlY2F1c2UgdGhlXG4gICAqIGVmZmVjdGl2ZSBkZWZhdWx0IGlzIGEgY2xvc3VyZSBvdmVyIGB0aGlzYCByYXRoZXIgdGhhbiBhIGxpdGVyYWwgb3IgYSBsaW5rYWJsZSBzeW1ib2wuXG4gICAqL1xuICByZWFkb25seSBjb21tYW5kTGlmZXRpbWVPd25lclByb3ZpZGVyPzogQ29tbWFuZExpZmV0aW1lT3duZXJQcm92aWRlciB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgY29tbWFuZFJlZ2lzdHJhcjogQ29tbWFuZFJlZ2lzdHJhcjtcbiAgcmVhZG9ubHkgbWVudUV2ZW50UmVnaXN0cmFyOiBNZW51RXZlbnRSZWdpc3RyYXI7XG4gIHJlYWRvbmx5IHBsdWdpbk5hbWU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIENvbW1hbmRIYW5kbGVyQ29tcG9uZW50UmVnaXN0ZXJDb21tYW5kSGFuZGxlcnNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgd2hvc2UgdW5sb2FkIHJlbW92ZXMgdGhlIGNvbW1hbmRzIHRoaXMgY2FsbCByZWdpc3RlcnMsIG92ZXJyaWRpbmcgdGhlIGNvbXBvbmVudCdzXG4gICAqIHtAbGluayBDb21tYW5kTGlmZXRpbWVPd25lclByb3ZpZGVyfSBmb3IgdGhpcyBvbmUgY2FsbC5cbiAgICpcbiAgICogTmFtZSBvbmUgd2hlbiB0aGUgYmF0Y2gncyBsaWZldGltZSBkaWZmZXJzIGZyb20gdGhlIGRlZmF1bHQgXHUyMDE0IHRoZSBjYWxsZXIgdGhhdCBuZWVkcyBpdCBpcyBvbmVcbiAgICogcmVnaXN0ZXJpbmcgdGhyb3VnaCBhIGNvbXBvbmVudCB3aG9zZSBkZWZhdWx0IG93bmVyIGlzIHNvbWUgU0hPUlRFUi1saXZlZCBzdXJmYWNlLCBhbmQgd2hvc2Ugb3duXG4gICAqIGNvbW1hbmRzIGhhdmUgdG8gb3V0bGl2ZSBpdC5cbiAgICovXG4gIHJlYWRvbmx5IGxpZmV0aW1lT3duZXI/OiBDb21wb25lbnRFeCB8IHVuZGVmaW5lZDtcbn1cblxuaW50ZXJmYWNlIENvbW1hbmRIYW5kbGVyQ29tcG9uZW50UmVnaXN0ZXJNZW51RXZlbnRIYW5kbGVyc1BhcmFtcyB7XG4gIHJlYWRvbmx5IGNvbW1hbmRIYW5kbGVyOiBDb21tYW5kSGFuZGxlcjtcbiAgcmVhZG9ubHkgbWVudUV2ZW50UmVnaXN0cmFyOiBNZW51RXZlbnRSZWdpc3RyYXI7XG4gIHJlYWRvbmx5IHNob3VsZEFkZENvbW1hbmRUb1N1Ym1lbnU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBjb21wb25lbnQgdGhhdCBvd25zIHRoZSB0ZWFyZG93biBvZiB0aGUgY29tbWFuZHMgYSB7QGxpbmsgQ29tbWFuZEhhbmRsZXJDb21wb25lbnQucmVnaXN0ZXJDb21tYW5kSGFuZGxlcnN9XG4gKiBjYWxsIHJlZ2lzdGVycyBcdTIwMTQgdGhlIG9uZSB3aG9zZSB1bmxvYWQgcmVtb3ZlcyB0aGVtIGZyb20gdGhlIHBhbGV0dGUuXG4gKlxuICogQSBwcm92aWRlciByYXRoZXIgdGhhbiBhIGNvbXBvbmVudCwgYmVjYXVzZSB0aGUgb3duZXIgaXMgbm90IHN0YWJsZSBmb3IgdGhlIGxpZmUgb2YgdGhlIHJlZ2lzdGVyaW5nXG4gKiBjb21wb25lbnQuIGBQbHVnaW5CYXNlYCBoYW5kcyBiYWNrIHRoZSB3cmFwcGVyIGhvbGRpbmcgdGhlIHBsdWdpbidzIGZlYXR1cmUgc3VyZmFjZSwgYW5kIHRoYXQgd3JhcHBlciBpc1xuICogUkVQTEFDRUQgd2hvbGVzYWxlIGV2ZXJ5IHRpbWUgdGhlIHN1cmZhY2UgZ29lcyBkb3duIGFuZCBjb21lcyBiYWNrIChhIGRlY2xhcmVkIGRlcGVuZGVuY3kgbG9zdCBhbmRcbiAqIHJlZ2FpbmVkLCBhIGRlY2xhcmVkIGNvbmZsaWN0IGFwcGVhcmluZyBhbmQgYmVpbmcgcmVzb2x2ZWQpLiBBIHZhbHVlIGNhcHR1cmVkIG9uY2Ugd291bGQgdGllIHRoZSBzZWNvbmRcbiAqIGN5Y2xlJ3MgY29tbWFuZHMgdG8gdGhlIGZpcnN0IGN5Y2xlJ3MgZGVhZCB3cmFwcGVyLCB3aGVyZSBub3RoaW5nIHdvdWxkIGV2ZXIgZGlzcG9zZSB0aGVtLlxuICpcbiAqIEByZXR1cm5zIFRoZSBjb21wb25lbnQgdGhhdCBzaG91bGQgb3duIHRoZSByZWdpc3RyYXRpb24ncyB0ZWFyZG93bi5cbiAqL1xudHlwZSBDb21tYW5kTGlmZXRpbWVPd25lclByb3ZpZGVyID0gKCkgPT4gQ29tcG9uZW50RXg7XG5cbi8qKlxuICogQSBwZXItY29tbWFuZCB7QGxpbmsgTWVudUV2ZW50UmVnaXN0cmFyfSB0aGF0IGRlbGVnYXRlcyB0byBhIHNoYXJlZCByZWdpc3RyYXIgd2hpbGUgY29sbGVjdGluZyB0aGVcbiAqIHtAbGluayBEaXNwb3NhYmxlRXh9IGVhY2ggcmVnaXN0cmF0aW9uIHJldHVybnMsIHNvIGRpc3Bvc2luZyB0aGlzIHNjb3BlIHVucmVnaXN0ZXJzIGV4YWN0bHkgdGhhdCBjb21tYW5kJ3NcbiAqIG1lbnUgZXZlbnRzLiBBIGhhbmRsZXIgbWF5IGtlZXAgdGhlIHNjb3BlIHBhc3Qge0BsaW5rIENvbW1hbmRIYW5kbGVyLm9uUmVnaXN0ZXJlZH0gYW5kIHJlZ2lzdGVyIG1lbnUgZXZlbnRzXG4gKiBsYXRlciBcdTIwMTQgYSBicmlkZ2UgYmluZGluZyBhdCBsYXlvdXQtcmVhZHksIHNheSBcdTIwMTQgc28gYSByZWdpc3RyYXRpb24gdGhhdCBhcnJpdmVzIGFmdGVyIHRoaXMgc2NvcGUgd2FzIGRpc3Bvc2VkXG4gKiBpcyBkaXNwb3NlZCBpbW1lZGlhdGVseSBpbnN0ZWFkIG9mIGxlYWtpbmcuXG4gKi9cbmNsYXNzIENvbW1hbmRNZW51RXZlbnRTY29wZSBleHRlbmRzIERpc3Bvc2FibGVCYXNlIGltcGxlbWVudHMgTWVudUV2ZW50UmVnaXN0cmFyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBkaXNwb3NhYmxlczogRGlzcG9zYWJsZUV4W10gPSBbXTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBpbm5lcjogTWVudUV2ZW50UmVnaXN0cmFyKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlckVkaXRvck1lbnVFdmVudEhhbmRsZXIoaGFuZGxlcjogRWRpdG9yTWVudUV2ZW50SGFuZGxlcik6IERpc3Bvc2FibGVFeCB7XG4gICAgcmV0dXJuIHRoaXMuY29sbGVjdCh0aGlzLmlubmVyLnJlZ2lzdGVyRWRpdG9yTWVudUV2ZW50SGFuZGxlcihoYW5kbGVyKSk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJGaWxlTWVudUV2ZW50SGFuZGxlcihoYW5kbGVyOiBGaWxlTWVudUV2ZW50SGFuZGxlcik6IERpc3Bvc2FibGVFeCB7XG4gICAgcmV0dXJuIHRoaXMuY29sbGVjdCh0aGlzLmlubmVyLnJlZ2lzdGVyRmlsZU1lbnVFdmVudEhhbmRsZXIoaGFuZGxlcikpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyRmlsZXNNZW51RXZlbnRIYW5kbGVyKGhhbmRsZXI6IEZpbGVzTWVudUV2ZW50SGFuZGxlcik6IERpc3Bvc2FibGVFeCB7XG4gICAgcmV0dXJuIHRoaXMuY29sbGVjdCh0aGlzLmlubmVyLnJlZ2lzdGVyRmlsZXNNZW51RXZlbnRIYW5kbGVyKGhhbmRsZXIpKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck1hcmtkb3duVmlld3BvcnRNZW51RXZlbnRIYW5kbGVyKGhhbmRsZXI6IE1hcmtkb3duVmlld3BvcnRNZW51RXZlbnRIYW5kbGVyKTogRGlzcG9zYWJsZUV4IHtcbiAgICByZXR1cm4gdGhpcy5jb2xsZWN0KHRoaXMuaW5uZXIucmVnaXN0ZXJNYXJrZG93blZpZXdwb3J0TWVudUV2ZW50SGFuZGxlcihoYW5kbGVyKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcGVyZm9ybURpc3Bvc2UoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBkaXNwb3NhYmxlIG9mIHRoaXMuZGlzcG9zYWJsZXMpIHtcbiAgICAgIGRpc3Bvc2FibGUuZGlzcG9zZSgpO1xuICAgIH1cbiAgICB0aGlzLmRpc3Bvc2FibGVzLmxlbmd0aCA9IDA7XG4gIH1cblxuICBwcml2YXRlIGNvbGxlY3QoZGlzcG9zYWJsZTogRGlzcG9zYWJsZUV4KTogRGlzcG9zYWJsZUV4IHtcbiAgICBpZiAodGhpcy5pc0Rpc3Bvc2VkKSB7XG4gICAgICBkaXNwb3NhYmxlLmRpc3Bvc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kaXNwb3NhYmxlcy5wdXNoKGRpc3Bvc2FibGUpO1xuICAgIH1cblxuICAgIHJldHVybiBkaXNwb3NhYmxlO1xuICB9XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHtAbGluayBDb21tYW5kSGFuZGxlcn1zIHdpdGggT2JzaWRpYW4gYW5kIG1hbmFnZXMgdGhlaXIgbGlmZWN5Y2xlLlxuICpcbiAqIENhbGwge0BsaW5rIHJlZ2lzdGVyQ29tbWFuZEhhbmRsZXJzfSB0byByZWdpc3RlciBhIGJhdGNoIG9mIGhhbmRsZXJzIG9uIGRlbWFuZCAoYXMgbWFueSB0aW1lcyBhc1xuICogbmVlZGVkIHdoaWxlIHRoZSBjb21wb25lbnQgaXMgYWxpdmUpOyBkaXNwb3NlIHRoZSByZXR1cm5lZCB7QGxpbmsgRGlzcG9zYWJsZUV4fSB0byB1bnJlZ2lzdGVyIGV4YWN0bHlcbiAqIHRob3NlIGhhbmRsZXJzIFx1MjAxNCBpbmNsdWRpbmcgYW55IG1lbnUgZXZlbnRzIHRoZXkgcmVnaXN0ZXJlZCBcdTIwMTQgb3IgbGV0IHRoZSBiYXRjaCdzIExJRkVUSU1FIE9XTkVSIHVubG9hZCB0b1xuICogcmVtb3ZlIGV2ZXJ5IGNvbW1hbmQgc3RpbGwgcmVnaXN0ZXJlZCB0aHJvdWdoIGl0LlxuICpcbiAqIFRoYXQgb3duZXIgaXMgdGhpcyBjb21wb25lbnQgYnkgZGVmYXVsdCwgd2hpY2ggaXMgd2h5IGEgc3RhbmRhbG9uZSBjb21wb25lbnQgcmVtb3ZlcyBpdHMgb3duIGNvbW1hbmRzXG4gKiB3aGVuIGl0IHVubG9hZHMuIEl0IGlzIG92ZXJyaWRhYmxlIGJlY2F1c2UgdGhlIHJlZ2lzdGVyaW5nIGNvbXBvbmVudCBhbmQgdGhlIHJlZ2lzdGVyZWQgY29tbWFuZHMgZG8gbm90XG4gKiBhbHdheXMgc2hhcmUgYSBsaWZldGltZTogYFBsdWdpbkJhc2VgIGtlZXBzIE9ORSBvZiB0aGVzZSBydW5uaW5nIGZvciB0aGUgd2hvbGUgbGlmZSBvZiB0aGUgcGx1Z2luIFx1MjAxNCBpdCBpc1xuICogd2hhdCB0aGUgXCJ5b3VyIGRlcGVuZGVuY3kgd2VudCBhd2F5XCIgbm90aWNlIGlzIGJ1aWx0IGJlc2lkZSBcdTIwMTQgd2hpbGUgdGhlIGNvbW1hbmRzIGEgc3ViY2xhc3MgcmVnaXN0ZXJzIGZyb21cbiAqIGBvbmxvYWRJbXBsYCBiZWxvbmcgdG8gdGhlIGZlYXR1cmUgc3VyZmFjZSB0aGUgZ2F0ZSB0ZWFycyBkb3duIGFuZCByZWJ1aWxkcyB1bmRlcm5lYXRoIGl0LiBTbyB0aGUgb3duZXIgaXNcbiAqIHJlc29sdmVkIHBlciBjYWxsLCBmcm9tIGEge0BsaW5rIENvbW1hbmRMaWZldGltZU93bmVyUHJvdmlkZXJ9IG9yIGZyb20gdGhlIGNhbGwncyBvd24gYGxpZmV0aW1lT3duZXJgLlxuICpcbiAqIFRoZSBzYW1lIGhhbmRsZXJzIGFyZSBmZWQgdG8gZXZlcnkgbWVudSBzdXJmYWNlIHRoZSBjb21wb25lbnQga25vd3MgYWJvdXQ6IE9ic2lkaWFuJ3Mgb3duIHdvcmtzcGFjZVxuICogZXZlbnRzLCBwbHVzIGVhY2ggYWRkaXRpb25hbCB7QGxpbmsgTWVudUV2ZW50UmVnaXN0cmFyfSBicmlkZ2luZyBhbm90aGVyIHBsdWdpbidzIG1lbnVzLlxuICovXG5leHBvcnQgY2xhc3MgQ29tbWFuZEhhbmRsZXJDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRFeCB7XG4gIC8qKlxuICAgKiBQcm92aWRlciBmb3IgYWNjZXNzaW5nIHRoZSBjdXJyZW50bHkgYWN0aXZlIGZpbGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWN0aXZlRmlsZVByb3ZpZGVyOiBBY3RpdmVGaWxlUHJvdmlkZXI7XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhcnMgZm9yIG1lbnUgc3VyZmFjZXMgdGhhdCBidWlsZCB0aGVpciBvd24gcGx1Z2luLXRpdGxlZCBwYXJlbnQgZW50cnksIGFuZCB0aGVyZWZvcmUgdGFrZVxuICAgKiB0aGUgaGFuZGxlcnMgd2l0aCB0aGVpciBzZWN0aW9uIHN1Ym1lbnUgZm9yY2VkIG9mZi5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBhZGRpdGlvbmFsTWVudUV2ZW50UmVnaXN0cmFyczogcmVhZG9ubHkgTWVudUV2ZW50UmVnaXN0cmFyW107XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhciB1c2VkIHRvIGFkZCBhbmQgcmVtb3ZlIGNvbW1hbmRzIHdpdGggT2JzaWRpYW4uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29tbWFuZFJlZ2lzdHJhcjogQ29tbWFuZFJlZ2lzdHJhcjtcblxuICAvKipcbiAgICogUmVnaXN0cmFyIGZvciBtZW51IGV2ZW50IGhhbmRsZXJzLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1lbnVFdmVudFJlZ2lzdHJhcjogTWVudUV2ZW50UmVnaXN0cmFyO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcGx1Z2luIHRoYXQgb3ducyB0aGUgY29tbWFuZHMuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY29tbWFuZExpZmV0aW1lT3duZXJQcm92aWRlcjogQ29tbWFuZExpZmV0aW1lT3duZXJQcm92aWRlcjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBjb21tYW5kIGhhbmRsZXIgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBDb21tYW5kSGFuZGxlckNvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFjdGl2ZUZpbGVQcm92aWRlciA9IHBhcmFtcy5hY3RpdmVGaWxlUHJvdmlkZXI7XG4gICAgdGhpcy5tZW51RXZlbnRSZWdpc3RyYXIgPSBwYXJhbXMubWVudUV2ZW50UmVnaXN0cmFyO1xuICAgIHRoaXMuYWRkaXRpb25hbE1lbnVFdmVudFJlZ2lzdHJhcnMgPSBwYXJhbXMuYWRkaXRpb25hbE1lbnVFdmVudFJlZ2lzdHJhcnMgPz8gW107XG4gICAgdGhpcy5jb21tYW5kUmVnaXN0cmFyID0gcGFyYW1zLmNvbW1hbmRSZWdpc3RyYXI7XG4gICAgdGhpcy5wbHVnaW5OYW1lID0gcGFyYW1zLnBsdWdpbk5hbWU7XG4gICAgdGhpcy5jb21tYW5kTGlmZXRpbWVPd25lclByb3ZpZGVyID0gcGFyYW1zLmNvbW1hbmRMaWZldGltZU93bmVyUHJvdmlkZXIgPz8gKCgpOiBDb21wb25lbnRFeCA9PiB0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIGNvbW1hbmQgaGFuZGxlcnMgYW5kIHJlZ2lzdGVycyB0aGVtIHdpdGggT2JzaWRpYW4sIGdpdmluZyBlYWNoIGl0cyBvd24gcnVudGltZVxuICAgKiByZWdpc3RyYXRpb24gY29udGV4dC4gRWFjaCBoYW5kbGVyJ3MgY29tbWFuZCBpcyBhZGRlZCBpbW1lZGlhdGVseTsgdGhlIHJldHVybmVkXG4gICAqIHtAbGluayBEaXNwb3NhYmxlRXh9IHJlbW92ZXMgdGhlIGNvbW1hbmRzIHJlZ2lzdGVyZWQgYnkgdGhpcyBjYWxsIFx1MjAxNCBhbmQgYW55IG1lbnUgZXZlbnRzIHRob3NlXG4gICAqIGhhbmRsZXJzIHJlZ2lzdGVyZWQgdmlhIHRoZWlyIGNvbnRleHQncyB7QGxpbmsgTWVudUV2ZW50UmVnaXN0cmFyfSBcdTIwMTQgd2hlbiBkaXNwb3NlZC4gQW55IGNvbW1hbmRcbiAgICogc3RpbGwgcmVnaXN0ZXJlZCB3aGVuIHRoZSBjb21wb25lbnQgdW5sb2FkcyBpcyByZW1vdmVkIGF1dG9tYXRpY2FsbHkuXG4gICAqXG4gICAqIFRoZSBmYWN0b3J5IGlzIGludm9rZWQgb25jZSBtb3JlIGZvciBldmVyeSBhZGRpdGlvbmFsIG1lbnUgc3VyZmFjZSwgc28gYSBwbHVnaW4gZGVjbGFyZXMgaXRzXG4gICAqIGhhbmRsZXJzIE9OQ0UgYW5kIGFsbCBzdXJmYWNlcyBhcmUgZmVkLiBUaG9zZSBleHRyYSBwYXNzZXMgYWRkIG5vIGNvbW1hbmRzIFx1MjAxNCB0aGUgcGFsZXR0ZSBhbHJlYWR5XG4gICAqIGhhcyBldmVyeSBjb21tYW5kIGZyb20gdGhlIGZpcnN0IHBhc3MuXG4gICAqXG4gICAqIFdoaWNoIGNvbXBvbmVudCdzIHVubG9hZCByZW1vdmVzIHRoZW0gaXMgdGhlIGNhbGxlcidzIHRvIGNob29zZTogYG9wdGlvbnMubGlmZXRpbWVPd25lcmAgZm9yIHRoaXMgb25lXG4gICAqIGJhdGNoLCBvdGhlcndpc2Ugd2hhdGV2ZXIgdGhpcyBjb21wb25lbnQncyB7QGxpbmsgQ29tbWFuZExpZmV0aW1lT3duZXJQcm92aWRlcn0gcmVzb2x2ZXMgdG8sIHdoaWNoXG4gICAqIGRlZmF1bHRzIHRvIHRoZSBjb21wb25lbnQgaXRzZWxmLiBBIGNvbW1hbmQgbXVzdCBuZXZlciBvdXRsaXZlIHRoZSBjb2xsYWJvcmF0b3JzIGl0cyBoYW5kbGVyIGNsb3Nlc1xuICAgKiBvdmVyIFx1MjAxNCBsZWZ0IG9uIGEgbG9uZ2VyLWxpdmVkIG93bmVyIGl0IHN0YXlzIGluIHRoZSBwYWxldHRlIGNhbGxpbmcgaW50byB0b3JuLWRvd24gb2JqZWN0cyBcdTIwMTQgc28gdGhlXG4gICAqIG93bmVyIHRvIG5hbWUgaXMgdGhlIHNob3J0ZXN0LWxpdmVkIHRoaW5nIHRoZSBiYXRjaCBkZXBlbmRzIG9uLlxuICAgKlxuICAgKiBAcGFyYW0gY29tbWFuZEhhbmRsZXJGYWN0b3J5IC0gQnVpbGRzIGEgZnJlc2ggc2V0IG9mIGNvbW1hbmQgaGFuZGxlcnMsIG9uY2UgcGVyIG1lbnUgc3VyZmFjZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcmVnaXN0cmF0aW9uIG9wdGlvbnMuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIERpc3Bvc2FibGVFeH0gdGhhdCB1bnJlZ2lzdGVycyB0aGUgaGFuZGxlcnMgKGNvbW1hbmRzICsgbWVudSBldmVudHMpIHJlZ2lzdGVyZWQgYnkgdGhpcyBjYWxsLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHJlZ2lzdGVyQ29tbWFuZEhhbmRsZXJzKGNvbW1hbmRIYW5kbGVyRmFjdG9yeTogQ29tbWFuZEhhbmRsZXJGYWN0b3J5LCBvcHRpb25zPzogQ29tbWFuZEhhbmRsZXJDb21wb25lbnRSZWdpc3RlckNvbW1hbmRIYW5kbGVyc09wdGlvbnMpOiBQcm9taXNlPERpc3Bvc2FibGVFeD4ge1xuICAgIC8vIFJlc29sdmVkIHBlciBjYWxsLCBuZXZlciBjYXB0dXJlZCBhdCBjb25zdHJ1Y3Rpb246IGEgcHJvdmlkZXIncyBhbnN3ZXIgY2hhbmdlcyBvdmVyIHRoZSBjb21wb25lbnQnc1xuICAgIC8vIGxpZmUuIGBQbHVnaW5CYXNlYCByZXR1cm5zIHRoZSB3cmFwcGVyIGhvbGRpbmcgdGhlIGZlYXR1cmUgc3VyZmFjZSwgYW5kIHRoYXQgd3JhcHBlciBpcyByZXBsYWNlZFxuICAgIC8vIHdob2xlc2FsZSBvbiBldmVyeSBnYXRlIGN5Y2xlIFx1MjAxNCBzbyB0aGlzIGN5Y2xlJ3MgY29tbWFuZHMgaGF2ZSB0byBsYW5kIG9uIHRoaXMgY3ljbGUncyB3cmFwcGVyLlxuICAgIGNvbnN0IGxpZmV0aW1lT3duZXIgPSBvcHRpb25zPy5saWZldGltZU93bmVyID8/IHRoaXMuY29tbWFuZExpZmV0aW1lT3duZXJQcm92aWRlcigpO1xuICAgIGNvbnN0IGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGNvbW1hbmRIYW5kbGVyIG9mIGNvbW1hbmRIYW5kbGVyRmFjdG9yeSgpKSB7XG4gICAgICBjb25zdCBjb21tYW5kID0gY29tbWFuZEhhbmRsZXIuYnVpbGRDb21tYW5kKCk7XG4gICAgICAvLyBDYXB0dXJlIHRoZSBpZCBiZWZvcmUgcmVnaXN0ZXJpbmcuIGBQbHVnaW4uYWRkQ29tbWFuZGAgbXV0YXRlcyBgY29tbWFuZC5pZGAgKHByZWZpeGluZyBpdCB3aXRoXG4gICAgICAvLyBgdGhpcy5tYW5pZmVzdC5pZGApLCB3aGlsZSBgUGx1Z2luLnJlbW92ZUNvbW1hbmRgIHJlLXByZWZpeGVzIFx1MjAxNCBzbyByZW1vdmFsIG5lZWRzIHRoZSBvcmlnaW5hbCBpZC5cbiAgICAgIC8vIFJlYWRpbmcgYGNvbW1hbmQuaWRgIGFmdGVyIGBhZGRDb21tYW5kYCB3b3VsZCBkb3VibGUtcHJlZml4IGl0LCBzbyB0aGUgY29tbWFuZCBpcyBuZXZlciByZW1vdmVkLlxuICAgICAgY29uc3QgY29tbWFuZElkID0gY29tbWFuZC5pZDtcbiAgICAgIHRoaXMuY29tbWFuZFJlZ2lzdHJhci5hZGRDb21tYW5kKGNvbW1hbmQpO1xuXG4gICAgICAvLyBFYWNoIGNvbW1hbmQgZ2V0cyBpdHMgb3duIHJlZ2lzdHJhdGlvbiBjb250ZXh0IHdpdGggYSBwZXItY29tbWFuZCBtZW51LWV2ZW50IHNjb3BlLCBzbyBkaXNwb3Npbmcgb25lXG4gICAgICAvLyBjb21tYW5kIHRlYXJzIGRvd24gaXRzIG93biBtZW51IGV2ZW50cyB3aXRob3V0IGFmZmVjdGluZyB0aGUgb3RoZXJzLlxuICAgICAgY29uc3QgbWVudUV2ZW50U2NvcGUgPSBhd2FpdCB0aGlzLnJlZ2lzdGVyTWVudUV2ZW50SGFuZGxlcnMoeyBjb21tYW5kSGFuZGxlciwgbWVudUV2ZW50UmVnaXN0cmFyOiB0aGlzLm1lbnVFdmVudFJlZ2lzdHJhciB9KTtcblxuICAgICAgY29uc3QgZGlzcG9zYWJsZSA9IG5ldyBDYWxsYmFja0Rpc3Bvc2FibGUoe1xuICAgICAgICBjYWxsYmFjazogKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuY29tbWFuZFJlZ2lzdHJhci5yZW1vdmVDb21tYW5kKGNvbW1hbmRJZCk7XG4gICAgICAgICAgbWVudUV2ZW50U2NvcGUuZGlzcG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIFRpZSByZW1vdmFsIHRvIHRoZSBsaWZldGltZSBvd25lcidzIHVubG9hZCwgc28gYSBjb21tYW5kIG5ldmVyIG91dGxpdmVzIHdoYXQgaXQgY2FsbHMgaW50by5cbiAgICAgIGRpc3Bvc2FibGVzLnB1c2gobGlmZXRpbWVPd25lci5yZWdpc3RlckRpc3Bvc2FibGUoZGlzcG9zYWJsZSkpO1xuICAgIH1cblxuICAgIC8vIEV2ZXJ5IGFkZGl0aW9uYWwgc3VyZmFjZSBnZXRzIGl0cyBPV04gaGFuZGxlciBpbnN0YW5jZXMgXHUyMDE0IGEgaGFuZGxlciBjYXJyaWVzIHBlci1yZWdpc3RyYXRpb25cbiAgICAvLyBzdGF0ZSwgc28gb25lIGluc3RhbmNlIGNhbm5vdCBzZXJ2ZSB0d28gc3VyZmFjZXMgXHUyMDE0IGFuZCB0YWtlcyB0aGVtIHdpdGggdGhlIHNlY3Rpb24gc3VibWVudVxuICAgIC8vIGZvcmNlZCBvZmYsIGJlY2F1c2Ugc3VjaCBhIHN1cmZhY2Ugd3JhcHMgZXZlcnl0aGluZyBpbiBhIHBsdWdpbi10aXRsZWQgcGFyZW50IGVudHJ5IG9mIGl0cyBvd24uXG4gICAgZm9yIChjb25zdCBhZGRpdGlvbmFsTWVudUV2ZW50UmVnaXN0cmFyIG9mIHRoaXMuYWRkaXRpb25hbE1lbnVFdmVudFJlZ2lzdHJhcnMpIHtcbiAgICAgIGZvciAoY29uc3QgY29tbWFuZEhhbmRsZXIgb2YgY29tbWFuZEhhbmRsZXJGYWN0b3J5KCkpIHtcbiAgICAgICAgZGlzcG9zYWJsZXMucHVzaChsaWZldGltZU93bmVyLnJlZ2lzdGVyRGlzcG9zYWJsZShhd2FpdCB0aGlzLnJlZ2lzdGVyTWVudUV2ZW50SGFuZGxlcnMoeyBjb21tYW5kSGFuZGxlciwgbWVudUV2ZW50UmVnaXN0cmFyOiBhZGRpdGlvbmFsTWVudUV2ZW50UmVnaXN0cmFyLCBzaG91bGRBZGRDb21tYW5kVG9TdWJtZW51OiBmYWxzZSB9KSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgQ29tYmluZURpc3Bvc2FibGUoeyBkaXNwb3NhYmxlcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kcyBhIGNvbW1hbmQgaGFuZGxlciBpdHMgcmVnaXN0cmF0aW9uIGNvbnRleHQsIHNjb3BlZCBzbyB0aGF0IGRpc3Bvc2luZyB0aGUgcmV0dXJuZWQgc2NvcGVcbiAgICogdW5yZWdpc3RlcnMgZXhhY3RseSB0aGUgbWVudSBldmVudHMgdGhhdCBoYW5kbGVyIHJlZ2lzdGVyZWQuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhpcyByZWdpc3RyYXRpb24uXG4gICAqIEByZXR1cm5zIFRoZSBoYW5kbGVyJ3MgbWVudS1ldmVudCBzY29wZS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcmVnaXN0ZXJNZW51RXZlbnRIYW5kbGVycyhwYXJhbXM6IENvbW1hbmRIYW5kbGVyQ29tcG9uZW50UmVnaXN0ZXJNZW51RXZlbnRIYW5kbGVyc1BhcmFtcyk6IFByb21pc2U8Q29tbWFuZE1lbnVFdmVudFNjb3BlPiB7XG4gICAgY29uc3QgbWVudUV2ZW50U2NvcGUgPSBuZXcgQ29tbWFuZE1lbnVFdmVudFNjb3BlKHBhcmFtcy5tZW51RXZlbnRSZWdpc3RyYXIpO1xuICAgIGNvbnN0IGNvbnRleHQ6IENvbW1hbmRIYW5kbGVyUmVnaXN0cmF0aW9uQ29udGV4dCA9IHtcbiAgICAgIGFjdGl2ZUZpbGVQcm92aWRlcjogdGhpcy5hY3RpdmVGaWxlUHJvdmlkZXIsXG4gICAgICBtZW51RXZlbnRSZWdpc3RyYXI6IG1lbnVFdmVudFNjb3BlLFxuICAgICAgcGx1Z2luTmFtZTogdGhpcy5wbHVnaW5OYW1lLFxuICAgICAgc2hvdWxkQWRkQ29tbWFuZFRvU3VibWVudTogcGFyYW1zLnNob3VsZEFkZENvbW1hbmRUb1N1Ym1lbnVcbiAgICB9O1xuICAgIGF3YWl0IHBhcmFtcy5jb21tYW5kSGFuZGxlci5vblJlZ2lzdGVyZWQoY29udGV4dCk7XG4gICAgcmV0dXJuIG1lbnVFdmVudFNjb3BlO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBUUEsd0JBSU87QUFnQlAsMEJBQTRCO0FBMkU1QixNQUFNLDhCQUE4QixpQ0FBNkM7QUFBQSxFQUd4RSxZQUE2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
|