@mnaoumov/obsidian-lib 0.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/@types/dataview/api/data-array/package.json +4 -0
- package/@types/dataview/api/extensions/package.json +4 -0
- package/@types/dataview/api/inline-api/package.json +4 -0
- package/@types/dataview/api/plugin-api/package.json +4 -0
- package/@types/dataview/api/result/package.json +4 -0
- package/@types/dataview/data-import/common/package.json +4 -0
- package/@types/dataview/data-import/csv/package.json +4 -0
- package/@types/dataview/data-import/inline-field/package.json +4 -0
- package/@types/dataview/data-import/markdown-file/package.json +4 -0
- package/@types/dataview/data-import/persister/package.json +4 -0
- package/@types/dataview/data-import/web-worker/import-entry/package.json +4 -0
- package/@types/dataview/data-import/web-worker/import-impl/package.json +4 -0
- package/@types/dataview/data-import/web-worker/import-manager/package.json +4 -0
- package/@types/dataview/data-index/index/package.json +4 -0
- package/@types/dataview/data-index/package.json +4 -0
- package/@types/dataview/data-index/resolver/package.json +4 -0
- package/@types/dataview/data-index/source/package.json +4 -0
- package/@types/dataview/data-model/markdown/package.json +4 -0
- package/@types/dataview/data-model/serialized/markdown/package.json +4 -0
- package/@types/dataview/data-model/transferable/package.json +4 -0
- package/@types/dataview/data-model/value/package.json +4 -0
- package/@types/dataview/expression/binaryop/package.json +4 -0
- package/@types/dataview/expression/context/package.json +4 -0
- package/@types/dataview/expression/field/package.json +4 -0
- package/@types/dataview/expression/functions/package.json +4 -0
- package/@types/dataview/expression/parse/package.json +4 -0
- package/@types/dataview/index/package.json +4 -0
- package/@types/dataview/main/package.json +4 -0
- package/@types/dataview/package.json +4 -0
- package/@types/dataview/query/engine/package.json +4 -0
- package/@types/dataview/query/parse/package.json +4 -0
- package/@types/dataview/query/query/package.json +4 -0
- package/@types/dataview/settings/package.json +4 -0
- package/@types/dataview/typings/obsidian-ex/package.json +4 -0
- package/@types/dataview/typings/workers/package.json +4 -0
- package/@types/dataview/ui/export/markdown/package.json +4 -0
- package/@types/dataview/ui/lp-render/package.json +4 -0
- package/@types/dataview/ui/markdown/package.json +4 -0
- package/@types/dataview/ui/refreshable-view/package.json +4 -0
- package/@types/dataview/ui/render/package.json +4 -0
- package/@types/dataview/ui/views/calendar-view/package.json +4 -0
- package/@types/dataview/ui/views/inline-field-live-preview/package.json +4 -0
- package/@types/dataview/ui/views/inline-view/package.json +4 -0
- package/@types/dataview/ui/views/js-view/package.json +4 -0
- package/@types/dataview/ui/views/list-view/package.json +4 -0
- package/@types/dataview/ui/views/table-view/package.json +4 -0
- package/@types/dataview/ui/views/task-view/package.json +4 -0
- package/@types/dataview/util/hash/package.json +4 -0
- package/@types/dataview/util/locale/package.json +4 -0
- package/@types/dataview/util/media/package.json +4 -0
- package/@types/dataview/util/normalize/package.json +4 -0
- package/@types/i18next/package.json +4 -0
- package/@types/obsidian-integration-testing/package.json +4 -0
- package/@types/original-fs/package.json +4 -0
- package/LICENSE +21 -0
- package/README.md +15 -1
- package/codemirror/index/package.json +6 -0
- package/codemirror/package.json +6 -0
- package/codemirror/state-field-spec/package.json +6 -0
- package/command-handlers/abstract-file-command-handler/package.json +6 -0
- package/command-handlers/command-handler/package.json +6 -0
- package/command-handlers/command-handler-component/package.json +6 -0
- package/command-handlers/editor-command-handler/package.json +6 -0
- package/command-handlers/file-command-handler/package.json +6 -0
- package/command-handlers/folder-command-handler/package.json +6 -0
- package/command-handlers/global-command-handler/package.json +6 -0
- package/command-handlers/index/package.json +6 -0
- package/command-handlers/open-demo-vault-command-handler/package.json +6 -0
- package/command-handlers/open-settings-command-handler/package.json +6 -0
- package/command-handlers/package.json +6 -0
- package/command-handlers/unlock-active-note-command-handler/package.json +6 -0
- package/components/abort-signal-component/package.json +6 -0
- package/components/all-windows-event-component/package.json +6 -0
- package/components/async-error-handler-component/package.json +6 -0
- package/components/async-events-component/package.json +6 -0
- package/components/case-insensitive-file-index-component/package.json +6 -0
- package/components/component-ex/package.json +6 -0
- package/components/console-debug-component/package.json +6 -0
- package/components/core-plugin-toggle-component/package.json +6 -0
- package/components/disposable-component/package.json +6 -0
- package/components/embed-extensions-component/package.json +6 -0
- package/components/generate-markdown-link-default-params-component/package.json +6 -0
- package/components/index/package.json +6 -0
- package/components/layout-ready-component/package.json +6 -0
- package/components/menu-event-registrar-component/package.json +6 -0
- package/components/monkey-around-component/package.json +6 -0
- package/components/notebook-navigator-menu-event-registrar-component/package.json +6 -0
- package/components/package.json +6 -0
- package/components/plugin-context-component/package.json +6 -0
- package/components/plugin-gate-component/package.json +6 -0
- package/components/plugin-notice-component/package.json +6 -0
- package/components/plugin-settings-component/package.json +6 -0
- package/components/plugin-settings-tab-component/package.json +6 -0
- package/components/plugin-suggestion-component/package.json +6 -0
- package/components/pointer-position-component/package.json +6 -0
- package/components/registry-component/package.json +6 -0
- package/components/release-notes-component/package.json +6 -0
- package/components/rename-delete-handler-component/package.json +6 -0
- package/components/rmdir-guard-component/package.json +6 -0
- package/components/settings-migration-component/package.json +6 -0
- package/components/syntax-highlighting-component/package.json +6 -0
- package/components/templates-language-component/package.json +6 -0
- package/constructors/get-dom-events-handlers-constructor/package.json +6 -0
- package/constructors/index/package.json +6 -0
- package/constructors/package.json +6 -0
- package/dist/lib/cjs/@types/dataview/api/data-array.d.cts +137 -0
- package/dist/lib/cjs/@types/dataview/api/extensions.d.cts +16 -0
- package/dist/lib/cjs/@types/dataview/api/inline-api.d.cts +187 -0
- package/dist/lib/cjs/@types/dataview/api/plugin-api.d.cts +210 -0
- package/dist/lib/cjs/@types/dataview/api/result.d.cts +39 -0
- package/dist/lib/cjs/@types/dataview/data-import/common.d.cts +4 -0
- package/dist/lib/cjs/@types/dataview/data-import/csv.d.cts +4 -0
- package/dist/lib/cjs/@types/dataview/data-import/inline-field.d.cts +43 -0
- package/dist/lib/cjs/@types/dataview/data-import/markdown-file.d.cts +53 -0
- package/dist/lib/cjs/@types/dataview/data-import/persister.d.cts +33 -0
- package/dist/lib/cjs/@types/dataview/data-import/web-worker/import-entry.d.cts +2 -0
- package/dist/lib/cjs/@types/dataview/data-import/web-worker/import-impl.d.cts +7 -0
- package/dist/lib/cjs/@types/dataview/data-import/web-worker/import-manager.d.cts +38 -0
- package/dist/lib/cjs/@types/dataview/data-index/index.d.cts +187 -0
- package/dist/lib/cjs/@types/dataview/data-index/resolver.d.cts +24 -0
- package/dist/lib/cjs/@types/dataview/data-index/source.d.cts +72 -0
- package/dist/lib/cjs/@types/dataview/data-model/markdown.d.cts +116 -0
- package/dist/lib/cjs/@types/dataview/data-model/serialized/markdown.d.cts +107 -0
- package/dist/lib/cjs/@types/dataview/data-model/transferable.d.cts +8 -0
- package/dist/lib/cjs/@types/dataview/data-model/value.d.cts +176 -0
- package/dist/lib/cjs/@types/dataview/expression/binaryop.d.cts +44 -0
- package/dist/lib/cjs/@types/dataview/expression/context.d.cts +50 -0
- package/dist/lib/cjs/@types/dataview/expression/field.d.cts +83 -0
- package/dist/lib/cjs/@types/dataview/expression/functions.d.cts +150 -0
- package/dist/lib/cjs/@types/dataview/expression/parse.d.cts +164 -0
- package/dist/lib/cjs/@types/dataview/index.d.cts +56 -0
- package/dist/lib/cjs/@types/dataview/main.d.cts +53 -0
- package/dist/lib/cjs/@types/dataview/query/engine.d.cts +104 -0
- package/dist/lib/cjs/@types/dataview/query/parse.d.cts +45 -0
- package/dist/lib/cjs/@types/dataview/query/query.d.cts +96 -0
- package/dist/lib/cjs/@types/dataview/settings.d.cts +61 -0
- package/dist/lib/cjs/@types/dataview/typings/obsidian-ex.d.cts +29 -0
- package/dist/lib/cjs/@types/dataview/typings/workers.d.cts +5 -0
- package/dist/lib/cjs/@types/dataview/ui/export/markdown.d.cts +16 -0
- package/dist/lib/cjs/@types/dataview/ui/lp-render.d.cts +38 -0
- package/dist/lib/cjs/@types/dataview/ui/markdown.d.cts +87 -0
- package/dist/lib/cjs/@types/dataview/ui/refreshable-view.d.cts +19 -0
- package/dist/lib/cjs/@types/dataview/ui/render.d.cts +34 -0
- package/dist/lib/cjs/@types/dataview/ui/views/calendar-view.d.cts +18 -0
- package/dist/lib/cjs/@types/dataview/ui/views/inline-field-live-preview.d.cts +43 -0
- package/dist/lib/cjs/@types/dataview/ui/views/inline-view.d.cts +29 -0
- package/dist/lib/cjs/@types/dataview/ui/views/js-view.d.cts +24 -0
- package/dist/lib/cjs/@types/dataview/ui/views/list-view.d.cts +26 -0
- package/dist/lib/cjs/@types/dataview/ui/views/table-view.d.cts +29 -0
- package/dist/lib/cjs/@types/dataview/ui/views/task-view.d.cts +52 -0
- package/dist/lib/cjs/@types/dataview/util/hash.d.cts +2 -0
- package/dist/lib/cjs/@types/dataview/util/locale.d.cts +3 -0
- package/dist/lib/cjs/@types/dataview/util/media.d.cts +7 -0
- package/dist/lib/cjs/@types/dataview/util/normalize.d.cts +45 -0
- package/dist/lib/cjs/@types/i18next.d.cts +14 -0
- package/dist/lib/cjs/@types/obsidian-integration-testing.d.cts +29 -0
- package/dist/lib/cjs/@types/original-fs.d.cts +15 -0
- package/dist/lib/cjs/__merged.cjs +1656 -0
- package/dist/lib/cjs/__merged.d.cts +205 -0
- package/dist/lib/cjs/active-file-provider.cjs +161 -0
- package/dist/lib/cjs/active-file-provider.d.cts +36 -0
- package/dist/lib/cjs/app.cjs +153 -0
- package/dist/lib/cjs/app.d.cts +17 -0
- package/dist/lib/cjs/async-with-notice.cjs +235 -0
- package/dist/lib/cjs/async-with-notice.d.cts +113 -0
- package/dist/lib/cjs/attachment-path.cjs +379 -0
- package/dist/lib/cjs/attachment-path.d.cts +341 -0
- package/dist/lib/cjs/attachment-unit-folder.cjs +168 -0
- package/dist/lib/cjs/attachment-unit-folder.d.cts +103 -0
- package/dist/lib/cjs/backlink-index.cjs +249 -0
- package/dist/lib/cjs/backlink-index.d.cts +51 -0
- package/dist/lib/cjs/backlink.cjs +217 -0
- package/dist/lib/cjs/backlink.d.cts +66 -0
- package/dist/lib/cjs/bases-view-registrar.cjs +162 -0
- package/dist/lib/cjs/bases-view-registrar.d.cts +52 -0
- package/dist/lib/cjs/callout.cjs +220 -0
- package/dist/lib/cjs/callout.d.cts +76 -0
- package/dist/lib/cjs/canvas.cjs +215 -0
- package/dist/lib/cjs/canvas.d.cts +28 -0
- package/dist/lib/cjs/case-insensitive-file-index.cjs +244 -0
- package/dist/lib/cjs/case-insensitive-file-index.d.cts +92 -0
- package/dist/lib/cjs/code-block-markdown-information.cjs +131 -0
- package/dist/lib/cjs/code-block-markdown-information.d.cts +48 -0
- package/dist/lib/cjs/code-block-reg-exp.cjs +145 -0
- package/dist/lib/cjs/code-block-reg-exp.d.cts +39 -0
- package/dist/lib/cjs/codemirror/index.cjs +153 -0
- package/dist/lib/cjs/codemirror/index.d.cts +2 -0
- package/dist/lib/cjs/codemirror/state-field-spec.cjs +131 -0
- package/dist/lib/cjs/codemirror/state-field-spec.d.cts +72 -0
- package/dist/lib/cjs/command-handlers/abstract-file-command-handler.cjs +416 -0
- package/dist/lib/cjs/command-handlers/abstract-file-command-handler.d.cts +274 -0
- package/dist/lib/cjs/command-handlers/command-handler-component.cjs +278 -0
- package/dist/lib/cjs/command-handlers/command-handler-component.d.cts +146 -0
- package/dist/lib/cjs/command-handlers/command-handler.cjs +200 -0
- package/dist/lib/cjs/command-handlers/command-handler.d.cts +107 -0
- package/dist/lib/cjs/command-handlers/editor-command-handler.cjs +348 -0
- package/dist/lib/cjs/command-handlers/editor-command-handler.d.cts +208 -0
- package/dist/lib/cjs/command-handlers/file-command-handler.cjs +285 -0
- package/dist/lib/cjs/command-handlers/file-command-handler.d.cts +143 -0
- package/dist/lib/cjs/command-handlers/folder-command-handler.cjs +293 -0
- package/dist/lib/cjs/command-handlers/folder-command-handler.d.cts +149 -0
- package/dist/lib/cjs/command-handlers/global-command-handler.cjs +185 -0
- package/dist/lib/cjs/command-handlers/global-command-handler.d.cts +40 -0
- package/dist/lib/cjs/command-handlers/index.cjs +180 -0
- package/dist/lib/cjs/command-handlers/index.d.cts +11 -0
- package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.cjs +209 -0
- package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.d.cts +73 -0
- package/dist/lib/cjs/command-handlers/open-settings-command-handler.cjs +174 -0
- package/dist/lib/cjs/command-handlers/open-settings-command-handler.d.cts +44 -0
- package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.cjs +187 -0
- package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.d.cts +54 -0
- package/dist/lib/cjs/command-registrar.cjs +169 -0
- package/dist/lib/cjs/command-registrar.d.cts +48 -0
- package/dist/lib/cjs/community-plugins.cjs +322 -0
- package/dist/lib/cjs/community-plugins.d.cts +270 -0
- package/dist/lib/cjs/components/abort-signal-component.cjs +172 -0
- package/dist/lib/cjs/components/abort-signal-component.d.cts +30 -0
- package/dist/lib/cjs/components/all-windows-event-component.cjs +214 -0
- package/dist/lib/cjs/components/all-windows-event-component.d.cts +84 -0
- package/dist/lib/cjs/components/async-error-handler-component.cjs +176 -0
- package/dist/lib/cjs/components/async-error-handler-component.d.cts +30 -0
- package/dist/lib/cjs/components/async-events-component.cjs +148 -0
- package/dist/lib/cjs/components/async-events-component.d.cts +15 -0
- package/dist/lib/cjs/components/case-insensitive-file-index-component.cjs +186 -0
- package/dist/lib/cjs/components/case-insensitive-file-index-component.d.cts +36 -0
- package/dist/lib/cjs/components/component-ex.cjs +504 -0
- package/dist/lib/cjs/components/component-ex.d.cts +229 -0
- package/dist/lib/cjs/components/console-debug-component.cjs +170 -0
- package/dist/lib/cjs/components/console-debug-component.d.cts +30 -0
- package/dist/lib/cjs/components/core-plugin-toggle-component.cjs +202 -0
- package/dist/lib/cjs/components/core-plugin-toggle-component.d.cts +102 -0
- package/dist/lib/cjs/components/disposable-component.cjs +154 -0
- package/dist/lib/cjs/components/disposable-component.d.cts +24 -0
- package/dist/lib/cjs/components/embed-extensions-component.cjs +174 -0
- package/dist/lib/cjs/components/embed-extensions-component.d.cts +38 -0
- package/dist/lib/cjs/components/generate-markdown-link-default-params-component.cjs +170 -0
- package/dist/lib/cjs/components/generate-markdown-link-default-params-component.d.cts +42 -0
- package/dist/lib/cjs/components/index.cjs +237 -0
- package/dist/lib/cjs/components/index.d.cts +30 -0
- package/dist/lib/cjs/components/layout-ready-component.cjs +211 -0
- package/dist/lib/cjs/components/layout-ready-component.d.cts +48 -0
- package/dist/lib/cjs/components/menu-event-registrar-component.cjs +196 -0
- package/dist/lib/cjs/components/menu-event-registrar-component.d.cts +52 -0
- package/dist/lib/cjs/components/monkey-around-component.cjs +245 -0
- package/dist/lib/cjs/components/monkey-around-component.d.cts +241 -0
- package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.cjs +321 -0
- package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.d.cts +150 -0
- package/dist/lib/cjs/components/plugin-context-component.cjs +180 -0
- package/dist/lib/cjs/components/plugin-context-component.d.cts +36 -0
- package/dist/lib/cjs/components/plugin-gate-component.cjs +548 -0
- package/dist/lib/cjs/components/plugin-gate-component.d.cts +332 -0
- package/dist/lib/cjs/components/plugin-notice-component.cjs +629 -0
- package/dist/lib/cjs/components/plugin-notice-component.d.cts +362 -0
- package/dist/lib/cjs/components/plugin-settings-component.cjs +644 -0
- package/dist/lib/cjs/components/plugin-settings-component.d.cts +362 -0
- package/dist/lib/cjs/components/plugin-settings-tab-component.cjs +170 -0
- package/dist/lib/cjs/components/plugin-settings-tab-component.d.cts +39 -0
- package/dist/lib/cjs/components/plugin-suggestion-component.cjs +278 -0
- package/dist/lib/cjs/components/plugin-suggestion-component.d.cts +162 -0
- package/dist/lib/cjs/components/pointer-position-component.cjs +166 -0
- package/dist/lib/cjs/components/pointer-position-component.d.cts +29 -0
- package/dist/lib/cjs/components/registry-component.cjs +187 -0
- package/dist/lib/cjs/components/registry-component.d.cts +37 -0
- package/dist/lib/cjs/components/release-notes-component.cjs +225 -0
- package/dist/lib/cjs/components/release-notes-component.d.cts +129 -0
- package/dist/lib/cjs/components/rename-delete-handler-component.cjs +1275 -0
- package/dist/lib/cjs/components/rename-delete-handler-component.d.cts +165 -0
- package/dist/lib/cjs/components/rmdir-guard-component.cjs +190 -0
- package/dist/lib/cjs/components/rmdir-guard-component.d.cts +76 -0
- package/dist/lib/cjs/components/settings-migration-component.cjs +222 -0
- package/dist/lib/cjs/components/settings-migration-component.d.cts +120 -0
- package/dist/lib/cjs/components/syntax-highlighting-component.cjs +248 -0
- package/dist/lib/cjs/components/syntax-highlighting-component.d.cts +149 -0
- package/dist/lib/cjs/components/templates-language-component.cjs +276 -0
- package/dist/lib/cjs/components/templates-language-component.d.cts +124 -0
- package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.cjs +246 -0
- package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.d.cts +22 -0
- package/dist/lib/cjs/constructors/index.cjs +153 -0
- package/dist/lib/cjs/constructors/index.d.cts +2 -0
- package/dist/lib/cjs/css-class.cjs +208 -0
- package/dist/lib/cjs/css-class.d.cts +278 -0
- package/dist/lib/cjs/data-handler.cjs +170 -0
- package/dist/lib/cjs/data-handler.d.cts +49 -0
- package/dist/lib/cjs/dataview-link.cjs +160 -0
- package/dist/lib/cjs/dataview-link.d.cts +42 -0
- package/dist/lib/cjs/dataview.cjs +379 -0
- package/dist/lib/cjs/dataview.d.cts +249 -0
- package/dist/lib/cjs/debug.cjs +148 -0
- package/dist/lib/cjs/debug.d.cts +19 -0
- package/dist/lib/cjs/demo-vault-helper-settings.cjs +131 -0
- package/dist/lib/cjs/demo-vault-helper-settings.d.cts +29 -0
- package/dist/lib/cjs/demo-vault-helper.cjs +232 -0
- package/dist/lib/cjs/demo-vault-helper.d.cts +61 -0
- package/dist/lib/cjs/demo-vault-naming.cjs +157 -0
- package/dist/lib/cjs/demo-vault-naming.d.cts +54 -0
- package/dist/lib/cjs/desktop-demo-vault-opener.cjs +348 -0
- package/dist/lib/cjs/desktop-demo-vault-opener.d.cts +76 -0
- package/dist/lib/cjs/desktop-trusted-input.cjs +301 -0
- package/dist/lib/cjs/desktop-trusted-input.d.cts +288 -0
- package/dist/lib/cjs/editor-extension-registrar.cjs +162 -0
- package/dist/lib/cjs/editor-extension-registrar.d.cts +37 -0
- package/dist/lib/cjs/editor-suggest-registrar.cjs +162 -0
- package/dist/lib/cjs/editor-suggest-registrar.d.cts +36 -0
- package/dist/lib/cjs/editor.cjs +200 -0
- package/dist/lib/cjs/editor.d.cts +45 -0
- package/dist/lib/cjs/events.cjs +172 -0
- package/dist/lib/cjs/events.d.cts +98 -0
- package/dist/lib/cjs/extensions-registrar.cjs +162 -0
- package/dist/lib/cjs/extensions-registrar.d.cts +51 -0
- package/dist/lib/cjs/file-change.cjs +558 -0
- package/dist/lib/cjs/file-change.d.cts +156 -0
- package/dist/lib/cjs/file-explorer.cjs +157 -0
- package/dist/lib/cjs/file-explorer.d.cts +34 -0
- package/dist/lib/cjs/file-manager.cjs +251 -0
- package/dist/lib/cjs/file-manager.d.cts +123 -0
- package/dist/lib/cjs/file-system.cjs +571 -0
- package/dist/lib/cjs/file-system.d.cts +554 -0
- package/dist/lib/cjs/folder-note.cjs +261 -0
- package/dist/lib/cjs/folder-note.d.cts +166 -0
- package/dist/lib/cjs/frontmatter-formatting.cjs +448 -0
- package/dist/lib/cjs/frontmatter-formatting.d.cts +44 -0
- package/dist/lib/cjs/frontmatter-link-cache-with-offsets.cjs +159 -0
- package/dist/lib/cjs/frontmatter-link-cache-with-offsets.d.cts +34 -0
- package/dist/lib/cjs/frontmatter.cjs +271 -0
- package/dist/lib/cjs/frontmatter.d.cts +145 -0
- package/dist/lib/cjs/generated-during-build.cjs +146 -0
- package/dist/lib/cjs/generated-during-build.d.cts +25 -0
- package/dist/lib/cjs/hover-link-source-registrar.cjs +162 -0
- package/dist/lib/cjs/hover-link-source-registrar.d.cts +52 -0
- package/dist/lib/cjs/html-element.cjs +183 -0
- package/dist/lib/cjs/html-element.d.cts +98 -0
- package/dist/lib/cjs/i18n/custom-type-options.cjs +132 -0
- package/dist/lib/cjs/i18n/custom-type-options.d.cts +38 -0
- package/dist/lib/cjs/i18n/default-translations.cjs +132 -0
- package/dist/lib/cjs/i18n/default-translations.d.cts +15 -0
- package/dist/lib/cjs/i18n/i18n.cjs +192 -0
- package/dist/lib/cjs/i18n/i18n.d.cts +38 -0
- package/dist/lib/cjs/i18n/index.cjs +162 -0
- package/dist/lib/cjs/i18n/index.d.cts +5 -0
- package/dist/lib/cjs/i18n/locales/en.cjs +224 -0
- package/dist/lib/cjs/i18n/locales/en.d.cts +91 -0
- package/dist/lib/cjs/i18n/locales/index.cjs +156 -0
- package/dist/lib/cjs/i18n/locales/index.d.cts +3 -0
- package/dist/lib/cjs/i18n/locales/translations-map.cjs +150 -0
- package/dist/lib/cjs/i18n/locales/translations-map.d.cts +100 -0
- package/dist/lib/cjs/index.cjs +435 -0
- package/dist/lib/cjs/index.d.cts +96 -0
- package/dist/lib/cjs/is-in-obsidian.cjs +154 -0
- package/dist/lib/cjs/is-in-obsidian.d.cts +12 -0
- package/dist/lib/cjs/library-styles.cjs +173 -0
- package/dist/lib/cjs/library-styles.d.cts +56 -0
- package/dist/lib/cjs/library.cjs +181 -0
- package/dist/lib/cjs/library.d.cts +57 -0
- package/dist/lib/cjs/link-name.cjs +145 -0
- package/dist/lib/cjs/link-name.d.cts +23 -0
- package/dist/lib/cjs/link-update-progress.cjs +131 -0
- package/dist/lib/cjs/link-update-progress.d.cts +32 -0
- package/dist/lib/cjs/link.cjs +1053 -0
- package/dist/lib/cjs/link.d.cts +1369 -0
- package/dist/lib/cjs/logger.cjs +212 -0
- package/dist/lib/cjs/logger.d.cts +37 -0
- package/dist/lib/cjs/loop.cjs +243 -0
- package/dist/lib/cjs/loop.d.cts +104 -0
- package/dist/lib/cjs/markdown-code-block-processor-registrar.cjs +166 -0
- package/dist/lib/cjs/markdown-code-block-processor-registrar.d.cts +62 -0
- package/dist/lib/cjs/markdown-code-block-processor.cjs +444 -0
- package/dist/lib/cjs/markdown-code-block-processor.d.cts +137 -0
- package/dist/lib/cjs/markdown-post-processor-registrar.cjs +163 -0
- package/dist/lib/cjs/markdown-post-processor-registrar.d.cts +59 -0
- package/dist/lib/cjs/markdown-view.cjs +151 -0
- package/dist/lib/cjs/markdown-view.d.cts +14 -0
- package/dist/lib/cjs/markdown.cjs +470 -0
- package/dist/lib/cjs/markdown.d.cts +226 -0
- package/dist/lib/cjs/menu-event-registrar.cjs +131 -0
- package/dist/lib/cjs/menu-event-registrar.d.cts +84 -0
- package/dist/lib/cjs/metadata-cache.cjs +544 -0
- package/dist/lib/cjs/metadata-cache.d.cts +359 -0
- package/dist/lib/cjs/mobile-trusted-input.cjs +185 -0
- package/dist/lib/cjs/mobile-trusted-input.d.cts +98 -0
- package/dist/lib/cjs/modals/alert.cjs +178 -0
- package/dist/lib/cjs/modals/alert.d.cts +35 -0
- package/dist/lib/cjs/modals/confirm.cjs +188 -0
- package/dist/lib/cjs/modals/confirm.d.cts +39 -0
- package/dist/lib/cjs/modals/index.cjs +177 -0
- package/dist/lib/cjs/modals/index.d.cts +10 -0
- package/dist/lib/cjs/modals/minimizable-modal.cjs +441 -0
- package/dist/lib/cjs/modals/minimizable-modal.d.cts +129 -0
- package/dist/lib/cjs/modals/modal-command-builder.cjs +458 -0
- package/dist/lib/cjs/modals/modal-command-builder.d.cts +285 -0
- package/dist/lib/cjs/modals/modal.cjs +176 -0
- package/dist/lib/cjs/modals/modal.d.cts +64 -0
- package/dist/lib/cjs/modals/prompt.cjs +256 -0
- package/dist/lib/cjs/modals/prompt.d.cts +83 -0
- package/dist/lib/cjs/modals/select-item.cjs +201 -0
- package/dist/lib/cjs/modals/select-item.d.cts +55 -0
- package/dist/lib/cjs/modals/select-option.cjs +189 -0
- package/dist/lib/cjs/modals/select-option.d.cts +65 -0
- package/dist/lib/cjs/modals/suggest-modal-command-builder.cjs +144 -0
- package/dist/lib/cjs/modals/suggest-modal-command-builder.d.cts +35 -0
- package/dist/lib/cjs/note-priority.cjs +234 -0
- package/dist/lib/cjs/note-priority.d.cts +154 -0
- package/dist/lib/cjs/notebook-navigator.cjs +163 -0
- package/dist/lib/cjs/notebook-navigator.d.cts +132 -0
- package/dist/lib/cjs/obsidian-dev-utils-state.cjs +175 -0
- package/dist/lib/cjs/obsidian-dev-utils-state.d.cts +42 -0
- package/dist/lib/cjs/obsidian-protocol-handler-registrar.cjs +165 -0
- package/dist/lib/cjs/obsidian-protocol-handler-registrar.d.cts +55 -0
- package/dist/lib/cjs/obsidian-settings.cjs +182 -0
- package/dist/lib/cjs/obsidian-settings.d.cts +62 -0
- package/dist/lib/cjs/parse-link.cjs +538 -0
- package/dist/lib/cjs/parse-link.d.cts +288 -0
- package/dist/lib/cjs/path-settings.cjs +269 -0
- package/dist/lib/cjs/path-settings.d.cts +56 -0
- package/dist/lib/cjs/pdf.cjs +173 -0
- package/dist/lib/cjs/pdf.d.cts +26 -0
- package/dist/lib/cjs/plugin/index.cjs +174 -0
- package/dist/lib/cjs/plugin/index.d.cts +9 -0
- package/dist/lib/cjs/plugin/plugin-api.cjs +519 -0
- package/dist/lib/cjs/plugin/plugin-api.d.cts +413 -0
- package/dist/lib/cjs/plugin/plugin-context.cjs +191 -0
- package/dist/lib/cjs/plugin/plugin-context.d.cts +27 -0
- package/dist/lib/cjs/plugin/plugin-event-source.cjs +226 -0
- package/dist/lib/cjs/plugin/plugin-event-source.d.cts +97 -0
- package/dist/lib/cjs/plugin/plugin-install-state.cjs +195 -0
- package/dist/lib/cjs/plugin/plugin-install-state.d.cts +113 -0
- package/dist/lib/cjs/plugin/plugin-lifecycle-events.cjs +151 -0
- package/dist/lib/cjs/plugin/plugin-lifecycle-events.d.cts +127 -0
- package/dist/lib/cjs/plugin/plugin-settings-tab.cjs +611 -0
- package/dist/lib/cjs/plugin/plugin-settings-tab.d.cts +368 -0
- package/dist/lib/cjs/plugin/plugin.cjs +706 -0
- package/dist/lib/cjs/plugin/plugin.d.cts +363 -0
- package/dist/lib/cjs/plugin/settings-migration-api.cjs +131 -0
- package/dist/lib/cjs/plugin/settings-migration-api.d.cts +91 -0
- package/dist/lib/cjs/plugin-cli-handler-registrar.cjs +163 -0
- package/dist/lib/cjs/plugin-cli-handler-registrar.d.cts +64 -0
- package/dist/lib/cjs/popovers/field-popover.cjs +182 -0
- package/dist/lib/cjs/popovers/field-popover.d.cts +75 -0
- package/dist/lib/cjs/popovers/index.cjs +159 -0
- package/dist/lib/cjs/popovers/index.d.cts +4 -0
- package/dist/lib/cjs/popovers/popover-anchor.cjs +182 -0
- package/dist/lib/cjs/popovers/popover-anchor.d.cts +67 -0
- package/dist/lib/cjs/popovers/popover.cjs +229 -0
- package/dist/lib/cjs/popovers/popover.d.cts +78 -0
- package/dist/lib/cjs/property-entry.cjs +172 -0
- package/dist/lib/cjs/property-entry.d.cts +43 -0
- package/dist/lib/cjs/queue.cjs +212 -0
- package/dist/lib/cjs/queue.d.cts +93 -0
- package/dist/lib/cjs/react/app-context.cjs +151 -0
- package/dist/lib/cjs/react/app-context.d.cts +24 -0
- package/dist/lib/cjs/react/index.cjs +153 -0
- package/dist/lib/cjs/react/index.d.cts +2 -0
- package/dist/lib/cjs/reference.cjs +186 -0
- package/dist/lib/cjs/reference.d.cts +116 -0
- package/dist/lib/cjs/resource-lock.cjs +1096 -0
- package/dist/lib/cjs/resource-lock.d.cts +318 -0
- package/dist/lib/cjs/resource-url.cjs +156 -0
- package/dist/lib/cjs/resource-url.d.cts +31 -0
- package/dist/lib/cjs/ribbon-icon-registrar.cjs +163 -0
- package/dist/lib/cjs/ribbon-icon-registrar.d.cts +60 -0
- package/dist/lib/cjs/setting-components/checkbox-component.cjs +216 -0
- package/dist/lib/cjs/setting-components/checkbox-component.d.cts +69 -0
- package/dist/lib/cjs/setting-components/code-highlighter-component.cjs +378 -0
- package/dist/lib/cjs/setting-components/code-highlighter-component.d.cts +132 -0
- package/dist/lib/cjs/setting-components/date-component.cjs +180 -0
- package/dist/lib/cjs/setting-components/date-component.d.cts +38 -0
- package/dist/lib/cjs/setting-components/date-time-component.cjs +180 -0
- package/dist/lib/cjs/setting-components/date-time-component.d.cts +38 -0
- package/dist/lib/cjs/setting-components/email-component.cjs +191 -0
- package/dist/lib/cjs/setting-components/email-component.d.cts +49 -0
- package/dist/lib/cjs/setting-components/file-component.cjs +183 -0
- package/dist/lib/cjs/setting-components/file-component.d.cts +43 -0
- package/dist/lib/cjs/setting-components/index.cjs +228 -0
- package/dist/lib/cjs/setting-components/index.d.cts +27 -0
- package/dist/lib/cjs/setting-components/month-component.cjs +188 -0
- package/dist/lib/cjs/setting-components/month-component.d.cts +51 -0
- package/dist/lib/cjs/setting-components/multiple-dropdown-component.cjs +253 -0
- package/dist/lib/cjs/setting-components/multiple-dropdown-component.d.cts +92 -0
- package/dist/lib/cjs/setting-components/multiple-email-component.cjs +177 -0
- package/dist/lib/cjs/setting-components/multiple-email-component.d.cts +38 -0
- package/dist/lib/cjs/setting-components/multiple-file-component.cjs +185 -0
- package/dist/lib/cjs/setting-components/multiple-file-component.d.cts +43 -0
- package/dist/lib/cjs/setting-components/multiple-text-component.cjs +272 -0
- package/dist/lib/cjs/setting-components/multiple-text-component.d.cts +109 -0
- package/dist/lib/cjs/setting-components/number-component.cjs +201 -0
- package/dist/lib/cjs/setting-components/number-component.d.cts +56 -0
- package/dist/lib/cjs/setting-components/password-component.cjs +177 -0
- package/dist/lib/cjs/setting-components/password-component.d.cts +38 -0
- package/dist/lib/cjs/setting-components/setting-component-wrapper.cjs +160 -0
- package/dist/lib/cjs/setting-components/setting-component-wrapper.d.cts +13 -0
- package/dist/lib/cjs/setting-components/telephone-component.cjs +191 -0
- package/dist/lib/cjs/setting-components/telephone-component.d.cts +51 -0
- package/dist/lib/cjs/setting-components/text-based-component.cjs +170 -0
- package/dist/lib/cjs/setting-components/text-based-component.d.cts +38 -0
- package/dist/lib/cjs/setting-components/time-component.cjs +185 -0
- package/dist/lib/cjs/setting-components/time-component.d.cts +38 -0
- package/dist/lib/cjs/setting-components/tri-state-checkbox-component.cjs +217 -0
- package/dist/lib/cjs/setting-components/tri-state-checkbox-component.d.cts +69 -0
- package/dist/lib/cjs/setting-components/typed-dropdown-component.cjs +262 -0
- package/dist/lib/cjs/setting-components/typed-dropdown-component.d.cts +97 -0
- package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.cjs +264 -0
- package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.d.cts +99 -0
- package/dist/lib/cjs/setting-components/typed-range-text-component.cjs +175 -0
- package/dist/lib/cjs/setting-components/typed-range-text-component.d.cts +35 -0
- package/dist/lib/cjs/setting-components/typed-text-component.cjs +232 -0
- package/dist/lib/cjs/setting-components/typed-text-component.d.cts +100 -0
- package/dist/lib/cjs/setting-components/url-component.cjs +191 -0
- package/dist/lib/cjs/setting-components/url-component.d.cts +49 -0
- package/dist/lib/cjs/setting-components/validator-component.cjs +230 -0
- package/dist/lib/cjs/setting-components/validator-component.d.cts +23 -0
- package/dist/lib/cjs/setting-components/value-component-with-change-tracking.cjs +131 -0
- package/dist/lib/cjs/setting-components/value-component-with-change-tracking.d.cts +20 -0
- package/dist/lib/cjs/setting-components/week-component.cjs +188 -0
- package/dist/lib/cjs/setting-components/week-component.d.cts +51 -0
- package/dist/lib/cjs/setting-ex.cjs +372 -0
- package/dist/lib/cjs/setting-ex.d.cts +198 -0
- package/dist/lib/cjs/setting-group-ex.cjs +165 -0
- package/dist/lib/cjs/setting-group-ex.d.cts +26 -0
- package/dist/lib/cjs/status-bar-item-registrar.cjs +162 -0
- package/dist/lib/cjs/status-bar-item-registrar.d.cts +36 -0
- package/dist/lib/cjs/templater.cjs +279 -0
- package/dist/lib/cjs/templater.d.cts +284 -0
- package/dist/lib/cjs/transformers/duration-transformer.cjs +182 -0
- package/dist/lib/cjs/transformers/duration-transformer.d.cts +39 -0
- package/dist/lib/cjs/transformers/index.cjs +153 -0
- package/dist/lib/cjs/transformers/index.d.cts +2 -0
- package/dist/lib/cjs/trusted-input.cjs +196 -0
- package/dist/lib/cjs/trusted-input.d.cts +131 -0
- package/dist/lib/cjs/validation.cjs +189 -0
- package/dist/lib/cjs/validation.d.cts +87 -0
- package/dist/lib/cjs/vault-delete.cjs +222 -0
- package/dist/lib/cjs/vault-delete.d.cts +82 -0
- package/dist/lib/cjs/vault-transaction.cjs +412 -0
- package/dist/lib/cjs/vault-transaction.d.cts +163 -0
- package/dist/lib/cjs/vault.cjs +701 -0
- package/dist/lib/cjs/vault.d.cts +506 -0
- package/dist/lib/cjs/view-registrar.cjs +162 -0
- package/dist/lib/cjs/view-registrar.d.cts +52 -0
- package/dist/lib/cjs/workspace.cjs +186 -0
- package/dist/lib/cjs/workspace.d.cts +81 -0
- package/dist/lib/esm/@types/dataview/api/data-array.d.mts +137 -0
- package/dist/lib/esm/@types/dataview/api/extensions.d.mts +16 -0
- package/dist/lib/esm/@types/dataview/api/inline-api.d.mts +187 -0
- package/dist/lib/esm/@types/dataview/api/plugin-api.d.mts +210 -0
- package/dist/lib/esm/@types/dataview/api/result.d.mts +39 -0
- package/dist/lib/esm/@types/dataview/data-import/common.d.mts +4 -0
- package/dist/lib/esm/@types/dataview/data-import/csv.d.mts +4 -0
- package/dist/lib/esm/@types/dataview/data-import/inline-field.d.mts +43 -0
- package/dist/lib/esm/@types/dataview/data-import/markdown-file.d.mts +53 -0
- package/dist/lib/esm/@types/dataview/data-import/persister.d.mts +33 -0
- package/dist/lib/esm/@types/dataview/data-import/web-worker/import-entry.d.mts +2 -0
- package/dist/lib/esm/@types/dataview/data-import/web-worker/import-impl.d.mts +7 -0
- package/dist/lib/esm/@types/dataview/data-import/web-worker/import-manager.d.mts +38 -0
- package/dist/lib/esm/@types/dataview/data-index/index.d.mts +187 -0
- package/dist/lib/esm/@types/dataview/data-index/resolver.d.mts +24 -0
- package/dist/lib/esm/@types/dataview/data-index/source.d.mts +72 -0
- package/dist/lib/esm/@types/dataview/data-model/markdown.d.mts +116 -0
- package/dist/lib/esm/@types/dataview/data-model/serialized/markdown.d.mts +107 -0
- package/dist/lib/esm/@types/dataview/data-model/transferable.d.mts +8 -0
- package/dist/lib/esm/@types/dataview/data-model/value.d.mts +176 -0
- package/dist/lib/esm/@types/dataview/expression/binaryop.d.mts +44 -0
- package/dist/lib/esm/@types/dataview/expression/context.d.mts +50 -0
- package/dist/lib/esm/@types/dataview/expression/field.d.mts +83 -0
- package/dist/lib/esm/@types/dataview/expression/functions.d.mts +150 -0
- package/dist/lib/esm/@types/dataview/expression/parse.d.mts +164 -0
- package/dist/lib/esm/@types/dataview/index.d.mts +56 -0
- package/dist/lib/esm/@types/dataview/main.d.mts +53 -0
- package/dist/lib/esm/@types/dataview/query/engine.d.mts +104 -0
- package/dist/lib/esm/@types/dataview/query/parse.d.mts +45 -0
- package/dist/lib/esm/@types/dataview/query/query.d.mts +96 -0
- package/dist/lib/esm/@types/dataview/settings.d.mts +61 -0
- package/dist/lib/esm/@types/dataview/typings/obsidian-ex.d.mts +29 -0
- package/dist/lib/esm/@types/dataview/typings/workers.d.mts +5 -0
- package/dist/lib/esm/@types/dataview/ui/export/markdown.d.mts +16 -0
- package/dist/lib/esm/@types/dataview/ui/lp-render.d.mts +38 -0
- package/dist/lib/esm/@types/dataview/ui/markdown.d.mts +87 -0
- package/dist/lib/esm/@types/dataview/ui/refreshable-view.d.mts +19 -0
- package/dist/lib/esm/@types/dataview/ui/render.d.mts +34 -0
- package/dist/lib/esm/@types/dataview/ui/views/calendar-view.d.mts +18 -0
- package/dist/lib/esm/@types/dataview/ui/views/inline-field-live-preview.d.mts +43 -0
- package/dist/lib/esm/@types/dataview/ui/views/inline-view.d.mts +29 -0
- package/dist/lib/esm/@types/dataview/ui/views/js-view.d.mts +24 -0
- package/dist/lib/esm/@types/dataview/ui/views/list-view.d.mts +26 -0
- package/dist/lib/esm/@types/dataview/ui/views/table-view.d.mts +29 -0
- package/dist/lib/esm/@types/dataview/ui/views/task-view.d.mts +52 -0
- package/dist/lib/esm/@types/dataview/util/hash.d.mts +2 -0
- package/dist/lib/esm/@types/dataview/util/locale.d.mts +3 -0
- package/dist/lib/esm/@types/dataview/util/media.d.mts +7 -0
- package/dist/lib/esm/@types/dataview/util/normalize.d.mts +45 -0
- package/dist/lib/esm/@types/i18next.d.mts +14 -0
- package/dist/lib/esm/@types/obsidian-integration-testing.d.mts +29 -0
- package/dist/lib/esm/@types/original-fs.d.mts +15 -0
- package/dist/lib/esm/__merged.d.mts +205 -0
- package/dist/lib/esm/__merged.mjs +1524 -0
- package/dist/lib/esm/active-file-provider.d.mts +36 -0
- package/dist/lib/esm/active-file-provider.mjs +64 -0
- package/dist/lib/esm/app.d.mts +17 -0
- package/dist/lib/esm/app.mjs +56 -0
- package/dist/lib/esm/async-with-notice.d.mts +113 -0
- package/dist/lib/esm/async-with-notice.mjs +141 -0
- package/dist/lib/esm/attachment-path.d.mts +341 -0
- package/dist/lib/esm/attachment-path.mjs +294 -0
- package/dist/lib/esm/attachment-unit-folder.d.mts +103 -0
- package/dist/lib/esm/attachment-unit-folder.mjs +70 -0
- package/dist/lib/esm/backlink-index.d.mts +51 -0
- package/dist/lib/esm/backlink-index.mjs +152 -0
- package/dist/lib/esm/backlink.d.mts +66 -0
- package/dist/lib/esm/backlink.mjs +123 -0
- package/dist/lib/esm/bases-view-registrar.d.mts +52 -0
- package/dist/lib/esm/bases-view-registrar.mjs +65 -0
- package/dist/lib/esm/callout.d.mts +76 -0
- package/dist/lib/esm/callout.mjs +124 -0
- package/dist/lib/esm/canvas.d.mts +28 -0
- package/dist/lib/esm/canvas.mjs +121 -0
- package/dist/lib/esm/case-insensitive-file-index.d.mts +92 -0
- package/dist/lib/esm/case-insensitive-file-index.mjs +144 -0
- package/dist/lib/esm/code-block-markdown-information.d.mts +48 -0
- package/dist/lib/esm/code-block-markdown-information.mjs +42 -0
- package/dist/lib/esm/code-block-reg-exp.d.mts +39 -0
- package/dist/lib/esm/code-block-reg-exp.mjs +48 -0
- package/dist/lib/esm/codemirror/index.d.mts +2 -0
- package/dist/lib/esm/codemirror/index.mjs +46 -0
- package/dist/lib/esm/codemirror/state-field-spec.d.mts +72 -0
- package/dist/lib/esm/codemirror/state-field-spec.mjs +42 -0
- package/dist/lib/esm/command-handlers/abstract-file-command-handler.d.mts +274 -0
- package/dist/lib/esm/command-handlers/abstract-file-command-handler.mjs +322 -0
- package/dist/lib/esm/command-handlers/command-handler-component.d.mts +146 -0
- package/dist/lib/esm/command-handlers/command-handler-component.mjs +185 -0
- package/dist/lib/esm/command-handlers/command-handler.d.mts +107 -0
- package/dist/lib/esm/command-handlers/command-handler.mjs +103 -0
- package/dist/lib/esm/command-handlers/editor-command-handler.d.mts +208 -0
- package/dist/lib/esm/command-handlers/editor-command-handler.mjs +254 -0
- package/dist/lib/esm/command-handlers/file-command-handler.d.mts +143 -0
- package/dist/lib/esm/command-handlers/file-command-handler.mjs +192 -0
- package/dist/lib/esm/command-handlers/folder-command-handler.d.mts +149 -0
- package/dist/lib/esm/command-handlers/folder-command-handler.mjs +200 -0
- package/dist/lib/esm/command-handlers/global-command-handler.d.mts +40 -0
- package/dist/lib/esm/command-handlers/global-command-handler.mjs +88 -0
- package/dist/lib/esm/command-handlers/index.d.mts +11 -0
- package/dist/lib/esm/command-handlers/index.mjs +64 -0
- package/dist/lib/esm/command-handlers/open-demo-vault-command-handler.d.mts +73 -0
- package/dist/lib/esm/command-handlers/open-demo-vault-command-handler.mjs +102 -0
- package/dist/lib/esm/command-handlers/open-settings-command-handler.d.mts +44 -0
- package/dist/lib/esm/command-handlers/open-settings-command-handler.mjs +77 -0
- package/dist/lib/esm/command-handlers/unlock-active-note-command-handler.d.mts +54 -0
- package/dist/lib/esm/command-handlers/unlock-active-note-command-handler.mjs +90 -0
- package/dist/lib/esm/command-registrar.d.mts +48 -0
- package/dist/lib/esm/command-registrar.mjs +72 -0
- package/dist/lib/esm/community-plugins.d.mts +270 -0
- package/dist/lib/esm/community-plugins.mjs +214 -0
- package/dist/lib/esm/components/abort-signal-component.d.mts +30 -0
- package/dist/lib/esm/components/abort-signal-component.mjs +75 -0
- package/dist/lib/esm/components/all-windows-event-component.d.mts +84 -0
- package/dist/lib/esm/components/all-windows-event-component.mjs +117 -0
- package/dist/lib/esm/components/async-error-handler-component.d.mts +30 -0
- package/dist/lib/esm/components/async-error-handler-component.mjs +79 -0
- package/dist/lib/esm/components/async-events-component.d.mts +15 -0
- package/dist/lib/esm/components/async-events-component.mjs +51 -0
- package/dist/lib/esm/components/case-insensitive-file-index-component.d.mts +36 -0
- package/dist/lib/esm/components/case-insensitive-file-index-component.mjs +93 -0
- package/dist/lib/esm/components/component-ex.d.mts +229 -0
- package/dist/lib/esm/components/component-ex.mjs +413 -0
- package/dist/lib/esm/components/console-debug-component.d.mts +30 -0
- package/dist/lib/esm/components/console-debug-component.mjs +73 -0
- package/dist/lib/esm/components/core-plugin-toggle-component.d.mts +102 -0
- package/dist/lib/esm/components/core-plugin-toggle-component.mjs +105 -0
- package/dist/lib/esm/components/disposable-component.d.mts +24 -0
- package/dist/lib/esm/components/disposable-component.mjs +57 -0
- package/dist/lib/esm/components/embed-extensions-component.d.mts +38 -0
- package/dist/lib/esm/components/embed-extensions-component.mjs +77 -0
- package/dist/lib/esm/components/generate-markdown-link-default-params-component.d.mts +42 -0
- package/dist/lib/esm/components/generate-markdown-link-default-params-component.mjs +73 -0
- package/dist/lib/esm/components/index.d.mts +30 -0
- package/dist/lib/esm/components/index.mjs +102 -0
- package/dist/lib/esm/components/layout-ready-component.d.mts +48 -0
- package/dist/lib/esm/components/layout-ready-component.mjs +113 -0
- package/dist/lib/esm/components/menu-event-registrar-component.d.mts +52 -0
- package/dist/lib/esm/components/menu-event-registrar-component.mjs +99 -0
- package/dist/lib/esm/components/monkey-around-component.d.mts +241 -0
- package/dist/lib/esm/components/monkey-around-component.mjs +146 -0
- package/dist/lib/esm/components/notebook-navigator-menu-event-registrar-component.d.mts +150 -0
- package/dist/lib/esm/components/notebook-navigator-menu-event-registrar-component.mjs +227 -0
- package/dist/lib/esm/components/plugin-context-component.d.mts +36 -0
- package/dist/lib/esm/components/plugin-context-component.mjs +86 -0
- package/dist/lib/esm/components/plugin-gate-component.d.mts +332 -0
- package/dist/lib/esm/components/plugin-gate-component.mjs +464 -0
- package/dist/lib/esm/components/plugin-notice-component.d.mts +362 -0
- package/dist/lib/esm/components/plugin-notice-component.mjs +535 -0
- package/dist/lib/esm/components/plugin-settings-component.d.mts +362 -0
- package/dist/lib/esm/components/plugin-settings-component.mjs +554 -0
- package/dist/lib/esm/components/plugin-settings-tab-component.d.mts +39 -0
- package/dist/lib/esm/components/plugin-settings-tab-component.mjs +73 -0
- package/dist/lib/esm/components/plugin-suggestion-component.d.mts +162 -0
- package/dist/lib/esm/components/plugin-suggestion-component.mjs +184 -0
- package/dist/lib/esm/components/pointer-position-component.d.mts +29 -0
- package/dist/lib/esm/components/pointer-position-component.mjs +69 -0
- package/dist/lib/esm/components/registry-component.d.mts +37 -0
- package/dist/lib/esm/components/registry-component.mjs +90 -0
- package/dist/lib/esm/components/release-notes-component.d.mts +129 -0
- package/dist/lib/esm/components/release-notes-component.mjs +128 -0
- package/dist/lib/esm/components/rename-delete-handler-component.d.mts +165 -0
- package/dist/lib/esm/components/rename-delete-handler-component.mjs +1230 -0
- package/dist/lib/esm/components/rmdir-guard-component.d.mts +76 -0
- package/dist/lib/esm/components/rmdir-guard-component.mjs +92 -0
- package/dist/lib/esm/components/settings-migration-component.d.mts +120 -0
- package/dist/lib/esm/components/settings-migration-component.mjs +125 -0
- package/dist/lib/esm/components/syntax-highlighting-component.d.mts +149 -0
- package/dist/lib/esm/components/syntax-highlighting-component.mjs +151 -0
- package/dist/lib/esm/components/templates-language-component.d.mts +124 -0
- package/dist/lib/esm/components/templates-language-component.mjs +179 -0
- package/dist/lib/esm/constructors/get-dom-events-handlers-constructor.d.mts +22 -0
- package/dist/lib/esm/constructors/get-dom-events-handlers-constructor.mjs +149 -0
- package/dist/lib/esm/constructors/index.d.mts +2 -0
- package/dist/lib/esm/constructors/index.mjs +46 -0
- package/dist/lib/esm/css-class.d.mts +278 -0
- package/dist/lib/esm/css-class.mjs +111 -0
- package/dist/lib/esm/data-handler.d.mts +49 -0
- package/dist/lib/esm/data-handler.mjs +73 -0
- package/dist/lib/esm/dataview-link.d.mts +42 -0
- package/dist/lib/esm/dataview-link.mjs +66 -0
- package/dist/lib/esm/dataview.d.mts +249 -0
- package/dist/lib/esm/dataview.mjs +280 -0
- package/dist/lib/esm/debug.d.mts +19 -0
- package/dist/lib/esm/debug.mjs +51 -0
- package/dist/lib/esm/demo-vault-helper-settings.d.mts +29 -0
- package/dist/lib/esm/demo-vault-helper-settings.mjs +42 -0
- package/dist/lib/esm/demo-vault-helper.d.mts +61 -0
- package/dist/lib/esm/demo-vault-helper.mjs +142 -0
- package/dist/lib/esm/demo-vault-naming.d.mts +54 -0
- package/dist/lib/esm/demo-vault-naming.mjs +59 -0
- package/dist/lib/esm/desktop-demo-vault-opener.d.mts +76 -0
- package/dist/lib/esm/desktop-demo-vault-opener.mjs +266 -0
- package/dist/lib/esm/desktop-trusted-input.d.mts +288 -0
- package/dist/lib/esm/desktop-trusted-input.mjs +198 -0
- package/dist/lib/esm/editor-extension-registrar.d.mts +37 -0
- package/dist/lib/esm/editor-extension-registrar.mjs +65 -0
- package/dist/lib/esm/editor-suggest-registrar.d.mts +36 -0
- package/dist/lib/esm/editor-suggest-registrar.mjs +68 -0
- package/dist/lib/esm/editor.d.mts +45 -0
- package/dist/lib/esm/editor.mjs +107 -0
- package/dist/lib/esm/events.d.mts +98 -0
- package/dist/lib/esm/events.mjs +73 -0
- package/dist/lib/esm/extensions-registrar.d.mts +51 -0
- package/dist/lib/esm/extensions-registrar.mjs +65 -0
- package/dist/lib/esm/file-change.d.mts +156 -0
- package/dist/lib/esm/file-change.mjs +473 -0
- package/dist/lib/esm/file-explorer.d.mts +34 -0
- package/dist/lib/esm/file-explorer.mjs +60 -0
- package/dist/lib/esm/file-manager.d.mts +123 -0
- package/dist/lib/esm/file-manager.mjs +161 -0
- package/dist/lib/esm/file-system.d.mts +554 -0
- package/dist/lib/esm/file-system.mjs +458 -0
- package/dist/lib/esm/folder-note.d.mts +166 -0
- package/dist/lib/esm/folder-note.mjs +161 -0
- package/dist/lib/esm/frontmatter-formatting.d.mts +44 -0
- package/dist/lib/esm/frontmatter-formatting.mjs +368 -0
- package/dist/lib/esm/frontmatter-link-cache-with-offsets.d.mts +34 -0
- package/dist/lib/esm/frontmatter-link-cache-with-offsets.mjs +61 -0
- package/dist/lib/esm/frontmatter.d.mts +145 -0
- package/dist/lib/esm/frontmatter.mjs +174 -0
- package/dist/lib/esm/generated-during-build.d.mts +25 -0
- package/dist/lib/esm/generated-during-build.mjs +48 -0
- package/dist/lib/esm/hover-link-source-registrar.d.mts +52 -0
- package/dist/lib/esm/hover-link-source-registrar.mjs +65 -0
- package/dist/lib/esm/html-element.d.mts +98 -0
- package/dist/lib/esm/html-element.mjs +86 -0
- package/dist/lib/esm/i18n/custom-type-options.d.mts +38 -0
- package/dist/lib/esm/i18n/custom-type-options.mjs +43 -0
- package/dist/lib/esm/i18n/default-translations.d.mts +15 -0
- package/dist/lib/esm/i18n/default-translations.mjs +43 -0
- package/dist/lib/esm/i18n/i18n.d.mts +38 -0
- package/dist/lib/esm/i18n/i18n.mjs +89 -0
- package/dist/lib/esm/i18n/index.d.mts +5 -0
- package/dist/lib/esm/i18n/index.mjs +52 -0
- package/dist/lib/esm/i18n/locales/en.d.mts +91 -0
- package/dist/lib/esm/i18n/locales/en.mjs +127 -0
- package/dist/lib/esm/i18n/locales/index.d.mts +3 -0
- package/dist/lib/esm/i18n/locales/index.mjs +48 -0
- package/dist/lib/esm/i18n/locales/translations-map.d.mts +100 -0
- package/dist/lib/esm/i18n/locales/translations-map.mjs +52 -0
- package/dist/lib/esm/index.d.mts +96 -0
- package/dist/lib/esm/index.mjs +234 -0
- package/dist/lib/esm/is-in-obsidian.d.mts +12 -0
- package/dist/lib/esm/is-in-obsidian.mjs +59 -0
- package/dist/lib/esm/library-styles.d.mts +56 -0
- package/dist/lib/esm/library-styles.mjs +72 -0
- package/dist/lib/esm/library.d.mts +57 -0
- package/dist/lib/esm/library.mjs +83 -0
- package/dist/lib/esm/link-name.d.mts +23 -0
- package/dist/lib/esm/link-name.mjs +48 -0
- package/dist/lib/esm/link-update-progress.d.mts +32 -0
- package/dist/lib/esm/link-update-progress.mjs +42 -0
- package/dist/lib/esm/link.d.mts +1369 -0
- package/dist/lib/esm/link.mjs +988 -0
- package/dist/lib/esm/logger.d.mts +37 -0
- package/dist/lib/esm/logger.mjs +115 -0
- package/dist/lib/esm/loop.d.mts +104 -0
- package/dist/lib/esm/loop.mjs +151 -0
- package/dist/lib/esm/markdown-code-block-processor-registrar.d.mts +62 -0
- package/dist/lib/esm/markdown-code-block-processor-registrar.mjs +69 -0
- package/dist/lib/esm/markdown-code-block-processor.d.mts +137 -0
- package/dist/lib/esm/markdown-code-block-processor.mjs +356 -0
- package/dist/lib/esm/markdown-post-processor-registrar.d.mts +59 -0
- package/dist/lib/esm/markdown-post-processor-registrar.mjs +66 -0
- package/dist/lib/esm/markdown-view.d.mts +14 -0
- package/dist/lib/esm/markdown-view.mjs +54 -0
- package/dist/lib/esm/markdown.d.mts +226 -0
- package/dist/lib/esm/markdown.mjs +391 -0
- package/dist/lib/esm/menu-event-registrar.d.mts +84 -0
- package/dist/lib/esm/menu-event-registrar.mjs +42 -0
- package/dist/lib/esm/metadata-cache.d.mts +359 -0
- package/dist/lib/esm/metadata-cache.mjs +454 -0
- package/dist/lib/esm/mobile-trusted-input.d.mts +98 -0
- package/dist/lib/esm/mobile-trusted-input.mjs +82 -0
- package/dist/lib/esm/modals/alert.d.mts +35 -0
- package/dist/lib/esm/modals/alert.mjs +84 -0
- package/dist/lib/esm/modals/confirm.d.mts +39 -0
- package/dist/lib/esm/modals/confirm.mjs +94 -0
- package/dist/lib/esm/modals/index.d.mts +10 -0
- package/dist/lib/esm/modals/index.mjs +62 -0
- package/dist/lib/esm/modals/minimizable-modal.d.mts +129 -0
- package/dist/lib/esm/modals/minimizable-modal.mjs +348 -0
- package/dist/lib/esm/modals/modal-command-builder.d.mts +285 -0
- package/dist/lib/esm/modals/modal-command-builder.mjs +363 -0
- package/dist/lib/esm/modals/modal.d.mts +64 -0
- package/dist/lib/esm/modals/modal.mjs +78 -0
- package/dist/lib/esm/modals/prompt.d.mts +83 -0
- package/dist/lib/esm/modals/prompt.mjs +168 -0
- package/dist/lib/esm/modals/select-item.d.mts +55 -0
- package/dist/lib/esm/modals/select-item.mjs +104 -0
- package/dist/lib/esm/modals/select-option.d.mts +65 -0
- package/dist/lib/esm/modals/select-option.mjs +95 -0
- package/dist/lib/esm/modals/suggest-modal-command-builder.d.mts +35 -0
- package/dist/lib/esm/modals/suggest-modal-command-builder.mjs +47 -0
- package/dist/lib/esm/note-priority.d.mts +154 -0
- package/dist/lib/esm/note-priority.mjs +135 -0
- package/dist/lib/esm/notebook-navigator.d.mts +132 -0
- package/dist/lib/esm/notebook-navigator.mjs +64 -0
- package/dist/lib/esm/obsidian-dev-utils-state.d.mts +42 -0
- package/dist/lib/esm/obsidian-dev-utils-state.mjs +76 -0
- package/dist/lib/esm/obsidian-protocol-handler-registrar.d.mts +55 -0
- package/dist/lib/esm/obsidian-protocol-handler-registrar.mjs +68 -0
- package/dist/lib/esm/obsidian-settings.d.mts +62 -0
- package/dist/lib/esm/obsidian-settings.mjs +81 -0
- package/dist/lib/esm/parse-link.d.mts +288 -0
- package/dist/lib/esm/parse-link.mjs +428 -0
- package/dist/lib/esm/path-settings.d.mts +56 -0
- package/dist/lib/esm/path-settings.mjs +176 -0
- package/dist/lib/esm/pdf.d.mts +26 -0
- package/dist/lib/esm/pdf.mjs +76 -0
- package/dist/lib/esm/plugin/index.d.mts +9 -0
- package/dist/lib/esm/plugin/index.mjs +60 -0
- package/dist/lib/esm/plugin/plugin-api.d.mts +413 -0
- package/dist/lib/esm/plugin/plugin-api.mjs +422 -0
- package/dist/lib/esm/plugin/plugin-context.d.mts +27 -0
- package/dist/lib/esm/plugin/plugin-context.mjs +101 -0
- package/dist/lib/esm/plugin/plugin-event-source.d.mts +97 -0
- package/dist/lib/esm/plugin/plugin-event-source.mjs +129 -0
- package/dist/lib/esm/plugin/plugin-install-state.d.mts +113 -0
- package/dist/lib/esm/plugin/plugin-install-state.mjs +101 -0
- package/dist/lib/esm/plugin/plugin-lifecycle-events.d.mts +127 -0
- package/dist/lib/esm/plugin/plugin-lifecycle-events.mjs +52 -0
- package/dist/lib/esm/plugin/plugin-settings-tab.d.mts +368 -0
- package/dist/lib/esm/plugin/plugin-settings-tab.mjs +527 -0
- package/dist/lib/esm/plugin/plugin.d.mts +363 -0
- package/dist/lib/esm/plugin/plugin.mjs +611 -0
- package/dist/lib/esm/plugin/settings-migration-api.d.mts +91 -0
- package/dist/lib/esm/plugin/settings-migration-api.mjs +42 -0
- package/dist/lib/esm/plugin-cli-handler-registrar.d.mts +64 -0
- package/dist/lib/esm/plugin-cli-handler-registrar.mjs +66 -0
- package/dist/lib/esm/popovers/field-popover.d.mts +75 -0
- package/dist/lib/esm/popovers/field-popover.mjs +88 -0
- package/dist/lib/esm/popovers/index.d.mts +4 -0
- package/dist/lib/esm/popovers/index.mjs +50 -0
- package/dist/lib/esm/popovers/popover-anchor.d.mts +67 -0
- package/dist/lib/esm/popovers/popover-anchor.mjs +82 -0
- package/dist/lib/esm/popovers/popover.d.mts +78 -0
- package/dist/lib/esm/popovers/popover.mjs +132 -0
- package/dist/lib/esm/property-entry.d.mts +43 -0
- package/dist/lib/esm/property-entry.mjs +73 -0
- package/dist/lib/esm/queue.d.mts +93 -0
- package/dist/lib/esm/queue.mjs +122 -0
- package/dist/lib/esm/react/app-context.d.mts +24 -0
- package/dist/lib/esm/react/app-context.mjs +56 -0
- package/dist/lib/esm/react/index.d.mts +2 -0
- package/dist/lib/esm/react/index.mjs +46 -0
- package/dist/lib/esm/reference.d.mts +116 -0
- package/dist/lib/esm/reference.mjs +87 -0
- package/dist/lib/esm/resource-lock.d.mts +318 -0
- package/dist/lib/esm/resource-lock.mjs +1006 -0
- package/dist/lib/esm/resource-url.d.mts +31 -0
- package/dist/lib/esm/resource-url.mjs +59 -0
- package/dist/lib/esm/ribbon-icon-registrar.d.mts +60 -0
- package/dist/lib/esm/ribbon-icon-registrar.mjs +66 -0
- package/dist/lib/esm/setting-components/checkbox-component.d.mts +69 -0
- package/dist/lib/esm/setting-components/checkbox-component.mjs +119 -0
- package/dist/lib/esm/setting-components/code-highlighter-component.d.mts +132 -0
- package/dist/lib/esm/setting-components/code-highlighter-component.mjs +287 -0
- package/dist/lib/esm/setting-components/date-component.d.mts +38 -0
- package/dist/lib/esm/setting-components/date-component.mjs +83 -0
- package/dist/lib/esm/setting-components/date-time-component.d.mts +38 -0
- package/dist/lib/esm/setting-components/date-time-component.mjs +83 -0
- package/dist/lib/esm/setting-components/email-component.d.mts +49 -0
- package/dist/lib/esm/setting-components/email-component.mjs +94 -0
- package/dist/lib/esm/setting-components/file-component.d.mts +43 -0
- package/dist/lib/esm/setting-components/file-component.mjs +86 -0
- package/dist/lib/esm/setting-components/index.d.mts +27 -0
- package/dist/lib/esm/setting-components/index.mjs +96 -0
- package/dist/lib/esm/setting-components/month-component.d.mts +51 -0
- package/dist/lib/esm/setting-components/month-component.mjs +91 -0
- package/dist/lib/esm/setting-components/multiple-dropdown-component.d.mts +92 -0
- package/dist/lib/esm/setting-components/multiple-dropdown-component.mjs +159 -0
- package/dist/lib/esm/setting-components/multiple-email-component.d.mts +38 -0
- package/dist/lib/esm/setting-components/multiple-email-component.mjs +80 -0
- package/dist/lib/esm/setting-components/multiple-file-component.d.mts +43 -0
- package/dist/lib/esm/setting-components/multiple-file-component.mjs +88 -0
- package/dist/lib/esm/setting-components/multiple-text-component.d.mts +109 -0
- package/dist/lib/esm/setting-components/multiple-text-component.mjs +178 -0
- package/dist/lib/esm/setting-components/number-component.d.mts +56 -0
- package/dist/lib/esm/setting-components/number-component.mjs +104 -0
- package/dist/lib/esm/setting-components/password-component.d.mts +38 -0
- package/dist/lib/esm/setting-components/password-component.mjs +80 -0
- package/dist/lib/esm/setting-components/setting-component-wrapper.d.mts +13 -0
- package/dist/lib/esm/setting-components/setting-component-wrapper.mjs +63 -0
- package/dist/lib/esm/setting-components/telephone-component.d.mts +51 -0
- package/dist/lib/esm/setting-components/telephone-component.mjs +94 -0
- package/dist/lib/esm/setting-components/text-based-component.d.mts +38 -0
- package/dist/lib/esm/setting-components/text-based-component.mjs +73 -0
- package/dist/lib/esm/setting-components/time-component.d.mts +38 -0
- package/dist/lib/esm/setting-components/time-component.mjs +88 -0
- package/dist/lib/esm/setting-components/tri-state-checkbox-component.d.mts +69 -0
- package/dist/lib/esm/setting-components/tri-state-checkbox-component.mjs +120 -0
- package/dist/lib/esm/setting-components/typed-dropdown-component.d.mts +97 -0
- package/dist/lib/esm/setting-components/typed-dropdown-component.mjs +168 -0
- package/dist/lib/esm/setting-components/typed-multiple-dropdown-component.d.mts +99 -0
- package/dist/lib/esm/setting-components/typed-multiple-dropdown-component.mjs +167 -0
- package/dist/lib/esm/setting-components/typed-range-text-component.d.mts +35 -0
- package/dist/lib/esm/setting-components/typed-range-text-component.mjs +78 -0
- package/dist/lib/esm/setting-components/typed-text-component.d.mts +100 -0
- package/dist/lib/esm/setting-components/typed-text-component.mjs +138 -0
- package/dist/lib/esm/setting-components/url-component.d.mts +49 -0
- package/dist/lib/esm/setting-components/url-component.mjs +94 -0
- package/dist/lib/esm/setting-components/validator-component.d.mts +23 -0
- package/dist/lib/esm/setting-components/validator-component.mjs +142 -0
- package/dist/lib/esm/setting-components/value-component-with-change-tracking.d.mts +20 -0
- package/dist/lib/esm/setting-components/value-component-with-change-tracking.mjs +42 -0
- package/dist/lib/esm/setting-components/week-component.d.mts +51 -0
- package/dist/lib/esm/setting-components/week-component.mjs +91 -0
- package/dist/lib/esm/setting-ex.d.mts +198 -0
- package/dist/lib/esm/setting-ex.mjs +274 -0
- package/dist/lib/esm/setting-group-ex.d.mts +26 -0
- package/dist/lib/esm/setting-group-ex.mjs +68 -0
- package/dist/lib/esm/status-bar-item-registrar.d.mts +36 -0
- package/dist/lib/esm/status-bar-item-registrar.mjs +65 -0
- package/dist/lib/esm/templater.d.mts +284 -0
- package/dist/lib/esm/templater.mjs +173 -0
- package/dist/lib/esm/transformers/duration-transformer.d.mts +39 -0
- package/dist/lib/esm/transformers/duration-transformer.mjs +85 -0
- package/dist/lib/esm/transformers/index.d.mts +2 -0
- package/dist/lib/esm/transformers/index.mjs +46 -0
- package/dist/lib/esm/trusted-input.d.mts +131 -0
- package/dist/lib/esm/trusted-input.mjs +83 -0
- package/dist/lib/esm/validation.d.mts +87 -0
- package/dist/lib/esm/validation.mjs +87 -0
- package/dist/lib/esm/vault-delete.d.mts +82 -0
- package/dist/lib/esm/vault-delete.mjs +132 -0
- package/dist/lib/esm/vault-transaction.d.mts +163 -0
- package/dist/lib/esm/vault-transaction.mjs +325 -0
- package/dist/lib/esm/vault.d.mts +506 -0
- package/dist/lib/esm/vault.mjs +604 -0
- package/dist/lib/esm/view-registrar.d.mts +52 -0
- package/dist/lib/esm/view-registrar.mjs +65 -0
- package/dist/lib/esm/workspace.d.mts +81 -0
- package/dist/lib/esm/workspace.mjs +84 -0
- package/dist/styles.css +497 -0
- package/i18n/custom-type-options/package.json +6 -0
- package/i18n/default-translations/package.json +6 -0
- package/i18n/i18n/package.json +6 -0
- package/i18n/index/package.json +6 -0
- package/i18n/locales/en/package.json +6 -0
- package/i18n/locales/index/package.json +6 -0
- package/i18n/locales/package.json +6 -0
- package/i18n/locales/translations-map/package.json +6 -0
- package/i18n/package.json +6 -0
- package/modals/alert/package.json +6 -0
- package/modals/confirm/package.json +6 -0
- package/modals/index/package.json +6 -0
- package/modals/minimizable-modal/package.json +6 -0
- package/modals/modal/package.json +6 -0
- package/modals/modal-command-builder/package.json +6 -0
- package/modals/package.json +6 -0
- package/modals/prompt/package.json +6 -0
- package/modals/select-item/package.json +6 -0
- package/modals/select-option/package.json +6 -0
- package/modals/suggest-modal-command-builder/package.json +6 -0
- package/package.json +533 -13
- package/plugin/index/package.json +6 -0
- package/plugin/package.json +6 -0
- package/plugin/plugin/package.json +6 -0
- package/plugin/plugin-api/package.json +6 -0
- package/plugin/plugin-context/package.json +6 -0
- package/plugin/plugin-event-source/package.json +6 -0
- package/plugin/plugin-install-state/package.json +6 -0
- package/plugin/plugin-lifecycle-events/package.json +6 -0
- package/plugin/plugin-settings-tab/package.json +6 -0
- package/plugin/settings-migration-api/package.json +6 -0
- package/popovers/field-popover/package.json +6 -0
- package/popovers/index/package.json +6 -0
- package/popovers/package.json +6 -0
- package/popovers/popover/package.json +6 -0
- package/popovers/popover-anchor/package.json +6 -0
- package/react/app-context/package.json +6 -0
- package/react/index/package.json +6 -0
- package/react/package.json +6 -0
- package/setting-components/checkbox-component/package.json +6 -0
- package/setting-components/code-highlighter-component/package.json +6 -0
- package/setting-components/date-component/package.json +6 -0
- package/setting-components/date-time-component/package.json +6 -0
- package/setting-components/email-component/package.json +6 -0
- package/setting-components/file-component/package.json +6 -0
- package/setting-components/index/package.json +6 -0
- package/setting-components/month-component/package.json +6 -0
- package/setting-components/multiple-dropdown-component/package.json +6 -0
- package/setting-components/multiple-email-component/package.json +6 -0
- package/setting-components/multiple-file-component/package.json +6 -0
- package/setting-components/multiple-text-component/package.json +6 -0
- package/setting-components/number-component/package.json +6 -0
- package/setting-components/package.json +6 -0
- package/setting-components/password-component/package.json +6 -0
- package/setting-components/setting-component-wrapper/package.json +6 -0
- package/setting-components/telephone-component/package.json +6 -0
- package/setting-components/text-based-component/package.json +6 -0
- package/setting-components/time-component/package.json +6 -0
- package/setting-components/tri-state-checkbox-component/package.json +6 -0
- package/setting-components/typed-dropdown-component/package.json +6 -0
- package/setting-components/typed-multiple-dropdown-component/package.json +6 -0
- package/setting-components/typed-range-text-component/package.json +6 -0
- package/setting-components/typed-text-component/package.json +6 -0
- package/setting-components/url-component/package.json +6 -0
- package/setting-components/validator-component/package.json +6 -0
- package/setting-components/value-component-with-change-tracking/package.json +6 -0
- package/setting-components/week-component/package.json +6 -0
- package/transformers/duration-transformer/package.json +6 -0
- package/transformers/index/package.json +6 -0
- package/transformers/package.json +6 -0
|
@@ -0,0 +1,519 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
(function () {
|
|
7
|
+
function ensureDisposeSymbols(symbolConstructor = Symbol) {
|
|
8
|
+
symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
|
|
9
|
+
symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function ensureBrowserProcess() {
|
|
13
|
+
const browserProcess = {
|
|
14
|
+
browser: true,
|
|
15
|
+
cwd() {
|
|
16
|
+
return "/";
|
|
17
|
+
},
|
|
18
|
+
env: {},
|
|
19
|
+
platform: "android"
|
|
20
|
+
};
|
|
21
|
+
const existingProcess = globalThis.process;
|
|
22
|
+
if (!existingProcess) {
|
|
23
|
+
globalThis.process = browserProcess;
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (existingProcess.versions?.node) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const existingProcessRecord = existingProcess;
|
|
30
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
31
|
+
existingProcessRecord[key] ??= value;
|
|
32
|
+
}
|
|
33
|
+
existingProcessRecord["browser"] = true;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function keepName($unknown) {
|
|
37
|
+
return $unknown;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
(function initCjs() {
|
|
41
|
+
const globalThisRecord = globalThis;
|
|
42
|
+
ensureDisposeSymbols();
|
|
43
|
+
globalThisRecord["__name"] ??= keepName;
|
|
44
|
+
globalThisRecord["__extractDefault"] ??= extractDefault;
|
|
45
|
+
ensureBrowserProcess();
|
|
46
|
+
function extractDefault(module) {
|
|
47
|
+
return module && module.__esModule && "default" in module ? module.default : module;
|
|
48
|
+
}
|
|
49
|
+
})();
|
|
50
|
+
})();
|
|
51
|
+
(function patchObsidianRequire() {
|
|
52
|
+
const originalRequire = require;
|
|
53
|
+
if (!originalRequire || originalRequire.__isPatched) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
require = Object.assign(
|
|
57
|
+
(id) => requirePatched(id),
|
|
58
|
+
originalRequire,
|
|
59
|
+
{
|
|
60
|
+
__isPatched: true
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
function extractDefault(module) {
|
|
64
|
+
return module && module.__esModule && "default" in module ? module.default : module;
|
|
65
|
+
}
|
|
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
|
+
]);
|
|
95
|
+
function requirePatched(id) {
|
|
96
|
+
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
|
|
97
|
+
return originalRequire?.(id);
|
|
98
|
+
}
|
|
99
|
+
if (globalThis.app.isMobile) {
|
|
100
|
+
if (id === "process" || id === "node:process") {
|
|
101
|
+
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
102
|
+
return process;
|
|
103
|
+
}
|
|
104
|
+
} else {
|
|
105
|
+
const module = originalRequire?.(id);
|
|
106
|
+
if (module) {
|
|
107
|
+
return extractDefault(module);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
|
|
111
|
+
return {};
|
|
112
|
+
}
|
|
113
|
+
})();
|
|
114
|
+
|
|
115
|
+
"use strict";
|
|
116
|
+
var __defProp = Object.defineProperty;
|
|
117
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
118
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
119
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
120
|
+
var __export = (target, all) => {
|
|
121
|
+
for (var name in all)
|
|
122
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
123
|
+
};
|
|
124
|
+
var __copyProps = (to, from, except, desc) => {
|
|
125
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
126
|
+
for (let key of __getOwnPropNames(from))
|
|
127
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
128
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
129
|
+
}
|
|
130
|
+
return to;
|
|
131
|
+
};
|
|
132
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
133
|
+
var plugin_api_exports = {};
|
|
134
|
+
__export(plugin_api_exports, {
|
|
135
|
+
PluginApiPayloadKind: () => PluginApiPayloadKind,
|
|
136
|
+
PluginApiRevokedError: () => PluginApiRevokedError,
|
|
137
|
+
PluginApiUnavailabilityReason: () => PluginApiUnavailabilityReason,
|
|
138
|
+
PluginApiUnavailableError: () => PluginApiUnavailableError,
|
|
139
|
+
PluginApiValidationError: () => PluginApiValidationError,
|
|
140
|
+
publishPluginApi: () => publishPluginApi,
|
|
141
|
+
watchPluginApi: () => watchPluginApi
|
|
142
|
+
});
|
|
143
|
+
module.exports = __toCommonJS(plugin_api_exports);
|
|
144
|
+
var import_array = require('@mnaoumov/typescript-lib/array');
|
|
145
|
+
var import_async = require('@mnaoumov/typescript-lib/async');
|
|
146
|
+
var import_async_events = require('@mnaoumov/typescript-lib/async-events');
|
|
147
|
+
var import_object_utils = require('@mnaoumov/typescript-lib/object-utils');
|
|
148
|
+
var import_compare_versions = require('compare-versions');
|
|
149
|
+
var import_debug = require('../debug.cjs');
|
|
150
|
+
var import_obsidian_dev_utils_state = require('../obsidian-dev-utils-state.cjs');
|
|
151
|
+
const PLUGIN_API_DEBUGGER_NAMESPACE = "PluginApi";
|
|
152
|
+
const PLUGIN_API_REGISTRY_STATE_KEY = "pluginApiRegistry";
|
|
153
|
+
const DEFAULT_WHEN_AVAILABLE_TIMEOUT_IN_MILLISECONDS = 1e4;
|
|
154
|
+
var PluginApiPayloadKind = /* @__PURE__ */ ((PluginApiPayloadKind2) => {
|
|
155
|
+
PluginApiPayloadKind2["Input"] = "input";
|
|
156
|
+
PluginApiPayloadKind2["Output"] = "output";
|
|
157
|
+
return PluginApiPayloadKind2;
|
|
158
|
+
})(PluginApiPayloadKind || {});
|
|
159
|
+
var PluginApiUnavailabilityReason = /* @__PURE__ */ ((PluginApiUnavailabilityReason2) => {
|
|
160
|
+
PluginApiUnavailabilityReason2["NotEnabled"] = "notEnabled";
|
|
161
|
+
PluginApiUnavailabilityReason2["NotInstalled"] = "notInstalled";
|
|
162
|
+
PluginApiUnavailabilityReason2["NotPublished"] = "notPublished";
|
|
163
|
+
PluginApiUnavailabilityReason2["Revoked"] = "revoked";
|
|
164
|
+
PluginApiUnavailabilityReason2["ShapeMismatch"] = "shapeMismatch";
|
|
165
|
+
PluginApiUnavailabilityReason2["VersionMismatch"] = "versionMismatch";
|
|
166
|
+
return PluginApiUnavailabilityReason2;
|
|
167
|
+
})(PluginApiUnavailabilityReason || {});
|
|
168
|
+
class PluginApiWatchBase {
|
|
169
|
+
// A `protected` constructor is not assignable to `AbstractConstructor<object>`, which is what
|
|
170
|
+
// `mixinAsyncEvents` accepts, so this stays public even though only the subclass below calls it.
|
|
171
|
+
constructor(params) {
|
|
172
|
+
this.params = params;
|
|
173
|
+
}
|
|
174
|
+
params;
|
|
175
|
+
handle = null;
|
|
176
|
+
record = null;
|
|
177
|
+
/**
|
|
178
|
+
* Builds the error describing why the API is not available right now.
|
|
179
|
+
*
|
|
180
|
+
* @returns The classified error.
|
|
181
|
+
*/
|
|
182
|
+
createUnavailableError() {
|
|
183
|
+
return new PluginApiUnavailableError({
|
|
184
|
+
pluginId: this.params.pluginId,
|
|
185
|
+
reason: resolveUnavailabilityReason(this.params)
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
class PluginApiRefImpl extends (0, import_async_events.mixinAsyncEvents)()(PluginApiWatchBase) {
|
|
190
|
+
get value() {
|
|
191
|
+
return (0, import_object_utils.castTo)(this.handle);
|
|
192
|
+
}
|
|
193
|
+
constructor(params) {
|
|
194
|
+
super(params);
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Recomputes the current value from the registry, firing `change` only when it actually changed.
|
|
198
|
+
*/
|
|
199
|
+
refresh() {
|
|
200
|
+
const record = selectRecord(this.params);
|
|
201
|
+
if (record === this.record) {
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
this.record = record;
|
|
205
|
+
this.handle = record === null ? null : createRevocableHandle(record, this.params.contract);
|
|
206
|
+
this.trigger("change");
|
|
207
|
+
}
|
|
208
|
+
async whenAvailable(options) {
|
|
209
|
+
const currentValue = this.value;
|
|
210
|
+
if (currentValue !== null) {
|
|
211
|
+
return currentValue;
|
|
212
|
+
}
|
|
213
|
+
try {
|
|
214
|
+
return await (0, import_async.runWithTimeout)({
|
|
215
|
+
operationFunction: async (abortSignal) => await this.waitForValue(abortSignal),
|
|
216
|
+
operationName: `watchPluginApi("${this.params.pluginId}").whenAvailable`,
|
|
217
|
+
timeoutInMilliseconds: options?.timeoutInMilliseconds ?? DEFAULT_WHEN_AVAILABLE_TIMEOUT_IN_MILLISECONDS
|
|
218
|
+
});
|
|
219
|
+
} catch {
|
|
220
|
+
throw this.createUnavailableError();
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
async waitForValue(abortSignal) {
|
|
224
|
+
return await new Promise((resolve, reject) => {
|
|
225
|
+
const eventRef = this.on("change", () => {
|
|
226
|
+
handleChange();
|
|
227
|
+
});
|
|
228
|
+
function cleanUp() {
|
|
229
|
+
eventRef.asyncEventSource.offref(eventRef);
|
|
230
|
+
abortSignal.removeEventListener("abort", handleAbort);
|
|
231
|
+
}
|
|
232
|
+
function handleAbort() {
|
|
233
|
+
cleanUp();
|
|
234
|
+
reject(abortSignal.reason);
|
|
235
|
+
}
|
|
236
|
+
const handleChange = () => {
|
|
237
|
+
const value = this.value;
|
|
238
|
+
if (value === null) {
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
cleanUp();
|
|
242
|
+
resolve(value);
|
|
243
|
+
};
|
|
244
|
+
abortSignal.addEventListener("abort", handleAbort);
|
|
245
|
+
handleChange();
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
class PluginApiUnavailableError extends Error {
|
|
250
|
+
/**
|
|
251
|
+
* The `manifest.id` of the plugin whose API was requested.
|
|
252
|
+
*/
|
|
253
|
+
pluginId;
|
|
254
|
+
/**
|
|
255
|
+
* Which of the five failures occurred.
|
|
256
|
+
*/
|
|
257
|
+
reason;
|
|
258
|
+
/**
|
|
259
|
+
* Creates a {@link PluginApiUnavailableError}.
|
|
260
|
+
*
|
|
261
|
+
* @param params - The parameters for the error.
|
|
262
|
+
*/
|
|
263
|
+
constructor(params) {
|
|
264
|
+
super(params.message ?? `The API of the plugin "${params.pluginId}" is unavailable: ${params.reason}.`);
|
|
265
|
+
this.name = "PluginApiUnavailableError";
|
|
266
|
+
this.pluginId = params.pluginId;
|
|
267
|
+
this.reason = params.reason;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
class PluginApiRevokedError extends PluginApiUnavailableError {
|
|
271
|
+
/**
|
|
272
|
+
* Creates a {@link PluginApiRevokedError}.
|
|
273
|
+
*
|
|
274
|
+
* @param pluginId - The `manifest.id` of the plugin whose API was revoked.
|
|
275
|
+
*/
|
|
276
|
+
constructor(pluginId) {
|
|
277
|
+
super({
|
|
278
|
+
message: `The API of the plugin "${pluginId}" has been revoked, because the plugin was unloaded.`,
|
|
279
|
+
pluginId,
|
|
280
|
+
reason: "revoked" /* Revoked */
|
|
281
|
+
});
|
|
282
|
+
this.name = "PluginApiRevokedError";
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
class PluginApiValidationError extends Error {
|
|
286
|
+
/**
|
|
287
|
+
* The issues the schema reported.
|
|
288
|
+
*/
|
|
289
|
+
issues;
|
|
290
|
+
/**
|
|
291
|
+
* The name of the method whose payload failed validation.
|
|
292
|
+
*/
|
|
293
|
+
methodName;
|
|
294
|
+
/**
|
|
295
|
+
* The `manifest.id` of the providing plugin.
|
|
296
|
+
*/
|
|
297
|
+
pluginId;
|
|
298
|
+
/**
|
|
299
|
+
* Creates a {@link PluginApiValidationError}.
|
|
300
|
+
*
|
|
301
|
+
* @param params - The parameters for the error.
|
|
302
|
+
*/
|
|
303
|
+
constructor(params) {
|
|
304
|
+
super(
|
|
305
|
+
`The ${params.payloadKind} of "${params.pluginId}" API method "${params.methodName}" failed validation: ${formatIssues(params.issues)}`
|
|
306
|
+
);
|
|
307
|
+
this.name = "PluginApiValidationError";
|
|
308
|
+
this.issues = params.issues;
|
|
309
|
+
this.methodName = params.methodName;
|
|
310
|
+
this.pluginId = params.pluginId;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
function publishPluginApi(params) {
|
|
314
|
+
const pluginId = params.plugin.manifest.id;
|
|
315
|
+
const registry = getRegistry();
|
|
316
|
+
const records = registry.records[pluginId] ?? [];
|
|
317
|
+
registry.records[pluginId] = records;
|
|
318
|
+
if (records.some((record2) => record2.apiVersion === params.apiVersion)) {
|
|
319
|
+
throw new Error(`The plugin "${pluginId}" has already published the API version "${params.apiVersion}".`);
|
|
320
|
+
}
|
|
321
|
+
const record = {
|
|
322
|
+
api: params.api,
|
|
323
|
+
apiVersion: params.apiVersion,
|
|
324
|
+
contract: params.contract ?? {},
|
|
325
|
+
isRevoked: false,
|
|
326
|
+
pluginId
|
|
327
|
+
};
|
|
328
|
+
records.push(record);
|
|
329
|
+
notifySubscribers();
|
|
330
|
+
(params.component ?? params.plugin).register(() => {
|
|
331
|
+
revokeRecord(record);
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
function watchPluginApi(params) {
|
|
335
|
+
const ref = new PluginApiRefImpl(params);
|
|
336
|
+
const unsubscribe = subscribe(() => {
|
|
337
|
+
ref.refresh();
|
|
338
|
+
});
|
|
339
|
+
params.component.register(unsubscribe);
|
|
340
|
+
ref.refresh();
|
|
341
|
+
return ref;
|
|
342
|
+
}
|
|
343
|
+
function checkIsPromiseLike(value) {
|
|
344
|
+
return typeof value === "object" && value !== null && "then" in value && typeof value.then === "function";
|
|
345
|
+
}
|
|
346
|
+
function checkMatchesContractShape(record, consumerContract) {
|
|
347
|
+
const contract = consumerContract ?? record.contract;
|
|
348
|
+
return Object.keys(contract).every((methodName) => typeof getMember(record.api, methodName) === "function");
|
|
349
|
+
}
|
|
350
|
+
function createMethodWrapper(params) {
|
|
351
|
+
return function pluginApiMethod(...$arguments) {
|
|
352
|
+
const method = (0, import_object_utils.castTo)(getMember(params.target, params.propertyKey));
|
|
353
|
+
const methodContract = params.methodContract;
|
|
354
|
+
if (methodContract === void 0 || !getPluginApiDebugger().enabled) {
|
|
355
|
+
return method.apply(params.target, $arguments);
|
|
356
|
+
}
|
|
357
|
+
if (methodContract.input) {
|
|
358
|
+
validatePayload({
|
|
359
|
+
methodName: params.methodName,
|
|
360
|
+
payloadKind: "input" /* Input */,
|
|
361
|
+
pluginId: params.pluginId,
|
|
362
|
+
schema: methodContract.input,
|
|
363
|
+
value: $arguments
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
const returnValue = method.apply(params.target, $arguments);
|
|
367
|
+
const outputSchema = methodContract.output;
|
|
368
|
+
if (!outputSchema) {
|
|
369
|
+
return returnValue;
|
|
370
|
+
}
|
|
371
|
+
if (checkIsPromiseLike(returnValue)) {
|
|
372
|
+
return returnValue.then((resolvedValue) => {
|
|
373
|
+
validatePayload({
|
|
374
|
+
methodName: params.methodName,
|
|
375
|
+
payloadKind: "output" /* Output */,
|
|
376
|
+
pluginId: params.pluginId,
|
|
377
|
+
schema: outputSchema,
|
|
378
|
+
value: resolvedValue
|
|
379
|
+
});
|
|
380
|
+
return resolvedValue;
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
validatePayload({
|
|
384
|
+
methodName: params.methodName,
|
|
385
|
+
payloadKind: "output" /* Output */,
|
|
386
|
+
pluginId: params.pluginId,
|
|
387
|
+
schema: outputSchema,
|
|
388
|
+
value: returnValue
|
|
389
|
+
});
|
|
390
|
+
return returnValue;
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
function createRevocableHandle(record, consumerContract) {
|
|
394
|
+
const contract = consumerContract ?? record.contract;
|
|
395
|
+
const methodCache = /* @__PURE__ */ new Map();
|
|
396
|
+
return new Proxy(record.api, {
|
|
397
|
+
get(target, propertyKey) {
|
|
398
|
+
if (record.isRevoked) {
|
|
399
|
+
throw new PluginApiRevokedError(record.pluginId);
|
|
400
|
+
}
|
|
401
|
+
const value = getMember(target, propertyKey);
|
|
402
|
+
if (typeof value !== "function") {
|
|
403
|
+
return value;
|
|
404
|
+
}
|
|
405
|
+
let method = methodCache.get(propertyKey);
|
|
406
|
+
if (method === void 0) {
|
|
407
|
+
method = createMethodWrapper({
|
|
408
|
+
methodContract: typeof propertyKey === "string" ? contract[propertyKey] : void 0,
|
|
409
|
+
methodName: String(propertyKey),
|
|
410
|
+
pluginId: record.pluginId,
|
|
411
|
+
propertyKey,
|
|
412
|
+
target
|
|
413
|
+
});
|
|
414
|
+
methodCache.set(propertyKey, method);
|
|
415
|
+
}
|
|
416
|
+
return method;
|
|
417
|
+
}
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
function formatIssues(issues) {
|
|
421
|
+
return issues.map((issue) => {
|
|
422
|
+
const path = issue.path?.map((segment) => String(typeof segment === "object" ? segment.key : segment)).join(".");
|
|
423
|
+
return path ? `${path}: ${issue.message}` : issue.message;
|
|
424
|
+
}).join("; ");
|
|
425
|
+
}
|
|
426
|
+
function getLiveRecords(pluginId) {
|
|
427
|
+
return (getRegistry().records[pluginId] ?? []).filter((record) => !record.isRevoked);
|
|
428
|
+
}
|
|
429
|
+
function getMember(api, methodName) {
|
|
430
|
+
return Reflect.get(api, methodName);
|
|
431
|
+
}
|
|
432
|
+
function getPluginApiDebugger() {
|
|
433
|
+
return (0, import_debug.getObsidianLibDebugger)(PLUGIN_API_DEBUGGER_NAMESPACE);
|
|
434
|
+
}
|
|
435
|
+
function getRegistry() {
|
|
436
|
+
const wrapper = (0, import_obsidian_dev_utils_state.getObsidianDevUtilsState)(PLUGIN_API_REGISTRY_STATE_KEY, {});
|
|
437
|
+
const registry = wrapper.value;
|
|
438
|
+
registry.records ??= {};
|
|
439
|
+
registry.subscribers ??= [];
|
|
440
|
+
return (0, import_object_utils.castTo)(registry);
|
|
441
|
+
}
|
|
442
|
+
function notifySubscribers() {
|
|
443
|
+
for (const subscriber of (0, import_array.snapshot)(getRegistry().subscribers)) {
|
|
444
|
+
subscriber();
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
function resolveUnavailabilityReason(params) {
|
|
448
|
+
if (!Object.hasOwn(params.app.plugins.manifests, params.pluginId)) {
|
|
449
|
+
return "notInstalled" /* NotInstalled */;
|
|
450
|
+
}
|
|
451
|
+
if (!params.app.plugins.enabledPlugins.has(params.pluginId)) {
|
|
452
|
+
return "notEnabled" /* NotEnabled */;
|
|
453
|
+
}
|
|
454
|
+
const records = getLiveRecords(params.pluginId);
|
|
455
|
+
if (records.length === 0) {
|
|
456
|
+
return "notPublished" /* NotPublished */;
|
|
457
|
+
}
|
|
458
|
+
return records.every((record) => !(0, import_compare_versions.satisfies)(record.apiVersion, params.apiVersionRange)) ? "versionMismatch" /* VersionMismatch */ : "shapeMismatch" /* ShapeMismatch */;
|
|
459
|
+
}
|
|
460
|
+
function revokeRecord(record) {
|
|
461
|
+
record.isRevoked = true;
|
|
462
|
+
const registry = getRegistry();
|
|
463
|
+
const records = registry.records[record.pluginId];
|
|
464
|
+
if (records) {
|
|
465
|
+
registry.records[record.pluginId] = records.filter((candidate) => candidate !== record);
|
|
466
|
+
}
|
|
467
|
+
notifySubscribers();
|
|
468
|
+
}
|
|
469
|
+
function selectRecord(params) {
|
|
470
|
+
const candidates = getLiveRecords(params.pluginId).filter((record) => (0, import_compare_versions.satisfies)(record.apiVersion, params.apiVersionRange)).filter((record) => checkMatchesContractShape(record, params.contract)).sort((a, b) => (0, import_compare_versions.compareVersions)(b.apiVersion, a.apiVersion));
|
|
471
|
+
return candidates[0] ?? null;
|
|
472
|
+
}
|
|
473
|
+
function subscribe(subscriber) {
|
|
474
|
+
const registry = getRegistry();
|
|
475
|
+
registry.subscribers.push(subscriber);
|
|
476
|
+
return () => {
|
|
477
|
+
const index = registry.subscribers.indexOf(subscriber);
|
|
478
|
+
if (index !== -1) {
|
|
479
|
+
registry.subscribers.splice(index, 1);
|
|
480
|
+
}
|
|
481
|
+
};
|
|
482
|
+
}
|
|
483
|
+
function validatePayload(params) {
|
|
484
|
+
const result = params.schema["~standard"].validate(params.value);
|
|
485
|
+
if (checkIsPromiseLike(result)) {
|
|
486
|
+
(0, import_async.invokeAsyncSafely)(async () => {
|
|
487
|
+
const asyncResult = await result;
|
|
488
|
+
if (asyncResult.issues) {
|
|
489
|
+
getPluginApiDebugger()(
|
|
490
|
+
'Asynchronous validation of the %s of "%s" API method "%s" failed: %s',
|
|
491
|
+
params.payloadKind,
|
|
492
|
+
params.pluginId,
|
|
493
|
+
params.methodName,
|
|
494
|
+
formatIssues(asyncResult.issues)
|
|
495
|
+
);
|
|
496
|
+
}
|
|
497
|
+
});
|
|
498
|
+
return;
|
|
499
|
+
}
|
|
500
|
+
if (result.issues) {
|
|
501
|
+
throw new PluginApiValidationError({
|
|
502
|
+
issues: result.issues,
|
|
503
|
+
methodName: params.methodName,
|
|
504
|
+
payloadKind: params.payloadKind,
|
|
505
|
+
pluginId: params.pluginId
|
|
506
|
+
});
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
510
|
+
0 && (module.exports = {
|
|
511
|
+
PluginApiPayloadKind,
|
|
512
|
+
PluginApiRevokedError,
|
|
513
|
+
PluginApiUnavailabilityReason,
|
|
514
|
+
PluginApiUnavailableError,
|
|
515
|
+
PluginApiValidationError,
|
|
516
|
+
publishPluginApi,
|
|
517
|
+
watchPluginApi
|
|
518
|
+
});
|
|
519
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3BsdWdpbi9wbHVnaW4tYXBpLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQSB0eXBlZCwgdmVyc2lvbmVkLCBsaWZlY3ljbGUtYXdhcmUgcmVnaXN0cnkgZm9yIGNyb3NzLXBsdWdpbiBBUElzIFx1MjAxNCB0aGUgYWR2YW5jZWQgc3VjY2Vzc29yIHRvXG4gKiBgQHZhbmFrYXQvcGx1Z2luLWFwaWAuXG4gKlxuICogQSBwcm92aWRlciBwdWJsaXNoZXMgaXRzIEFQSSBvbmNlLCB1bmRlciBhIGNvbnRyYWN0IHZlcnNpb24gdGhhdCBpcyBpbmRlcGVuZGVudCBvZiBpdHMgcGx1Z2luIHZlcnNpb246XG4gKlxuICogYGBgdHNcbiAqIHB1Ymxpc2hQbHVnaW5BcGkoe1xuICogICBhcGk6IG5ldyBNeUFwaSh0aGlzKSxcbiAqICAgYXBpVmVyc2lvbjogJzIuMS4wJyxcbiAqICAgY29udHJhY3Q6IE1ZX0FQSV9DT05UUkFDVF9WMixcbiAqICAgcGx1Z2luOiB0aGlzXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEEgY29uc3VtZXIgZ2V0cyBhIExJVkUgUkVGIHdob3NlIHtAbGluayBQbHVnaW5BcGlSZWYudmFsdWV9IGlzIGFsd2F5cyBjdXJyZW50IFx1MjAxNCBgbnVsbGAgYmVmb3JlIHRoZVxuICogcHJvdmlkZXIgbG9hZHMsIHRoZSBBUEkgb25jZSBpdCBwdWJsaXNoZXMsIGBudWxsYCBhZ2FpbiBvbmNlIGl0IHVubG9hZHMsIGFuZCB0aGUgQVBJIGFnYWluIGFmdGVyIGFcbiAqIHJlLWVuYWJsZTpcbiAqXG4gKiBgYGB0c1xuICogY29uc3QgcmVmID0gd2F0Y2hQbHVnaW5BcGk8TXlBcGk+KHtcbiAqICAgYXBpVmVyc2lvblJhbmdlOiAnXjInLFxuICogICBhcHA6IHRoaXMuYXBwLFxuICogICBjb21wb25lbnQ6IHRoaXMsXG4gKiAgIHBsdWdpbklkOiAnbXktcHJvdmlkZXInXG4gKiB9KTtcbiAqXG4gKiByZWYudmFsdWU7ICAgICAgICAgICAgICAgICAgICAvLyBNeUFwaSB8IG51bGwgXHUyMDE0IHN5bmMsIGZyZWUsIGFsd2F5cyBjb3JyZWN0XG4gKiBhd2FpdCByZWYud2hlbkF2YWlsYWJsZSgpOyAgICAvLyBvbmUtc2hvdCBmbG93czsgcmVqZWN0cyB3aXRoIGEgdHlwZWQsIGNsYXNzaWZpZWQgZXJyb3JcbiAqIHJlZi5vbignY2hhbmdlJywgKCkgPT4geyB9KTsgLy8gZm9yIGNvbnN1bWVycyB0aGF0IG11c3QgUkVBQ1QgcmF0aGVyIHRoYW4gcmVhZFxuICogYGBgXG4gKlxuICogV2hhdCB0aGlzIGZpeGVzLCByZWxhdGl2ZSB0byBwdWJsaXNoaW5nIGEgYmFyZSBvYmplY3Qgb24gYHdpbmRvdy5QbHVnaW5BcGlgOlxuICpcbiAqIC0gKipMb2FkIG9yZGVyLioqIFRoZSByZWYgc3Vic2NyaWJlczsgaXQgZG9lcyBub3Qgc2FtcGxlLiBSZWFkaW5nIGBudWxsYCBkdXJpbmcgYG9ubG9hZGAgbWVhbnMgXCJub3QgeWV0XCIsXG4gKiAgIGFuZCBpdCBiZWNvbWVzIG5vbi1gbnVsbGAgb24gaXRzIG93bi5cbiAqIC0gKipWZXJzaW9uIG5lZ290aWF0aW9uLioqIFRoZSBwcm92aWRlciBkZWNsYXJlcyBhIGNvbnRyYWN0IHZlcnNpb247IHRoZSBjb25zdW1lciBkZWNsYXJlcyB0aGUgcmFuZ2UgaXRcbiAqICAgY29tcGlsZWQgYWdhaW5zdDsgdGhlIGhpZ2hlc3Qgc2F0aXNmeWluZyByZWNvcmQgd2lucy5cbiAqIC0gKipTdGFsZSBoYW5kbGVzLioqIFRoZSB2YWx1ZSBpcyBhIHJldm9jYWJsZSBoYW5kbGUgXHUyMDE0IGFmdGVyIHRoZSBwcm92aWRlciB1bmxvYWRzLCBhIHByb3BlcnR5IHJlYWQgdGhyb3dzXG4gKiAgIGEge0BsaW5rIFBsdWdpbkFwaVJldm9rZWRFcnJvcn0gbmFtaW5nIHRoZSBwcm92aWRlciBpbnN0ZWFkIG9mIGEgbnVsbCBkZXJlZiBkZWVwIGluIHNvbWVvbmUgZWxzZSdzIHN0YWNrLlxuICogLSAqKkZyZWUtc3RyaW5nIG5hbWVzLioqIFJlY29yZHMgYXJlIGtleWVkIGJ5IGBwbHVnaW4ubWFuaWZlc3QuaWRgLCB3aGljaCBPYnNpZGlhbiBhbHJlYWR5IGtlZXBzIHVuaXF1ZS5cbiAqIC0gKipMZWdpYmxlIGZhaWx1cmUuKioge0BsaW5rIFBsdWdpbkFwaVJlZi53aGVuQXZhaWxhYmxlfSByZWplY3RzIHdpdGggYVxuICogICB7QGxpbmsgUGx1Z2luQXBpVW5hdmFpbGFibGVFcnJvcn0gY2FycnlpbmcgYSB7QGxpbmsgUGx1Z2luQXBpVW5hdmFpbGFiaWxpdHlSZWFzb259LCBzbyB0aGUgZml2ZSBkaXN0aW5jdFxuICogICBjYXVzZXMgYXJlIHRvbGQgYXBhcnQuXG4gKlxuICogUGF5bG9hZCB2YWxpZGF0aW9uIGlzIG9wdC1pbiBwZXIgbWV0aG9kIHRocm91Z2gge0BsaW5rIGh0dHBzOi8vc3RhbmRhcmRzY2hlbWEuZGV2IHwgU3RhbmRhcmQgU2NoZW1hfSwgc29cbiAqIHpvZCAvIHZhbGlib3QgLyBhcmt0eXBlIC8gYSBoYW5kLXdyaXR0ZW4gdmFsaWRhdG9yIGFsbCBwbHVnIGluIGFuZCBub25lIG9mIHRoZW0gaXMgYSBkZXBlbmRlbmN5IGhlcmUuIEl0XG4gKiBydW5zIG9ubHkgd2hpbGUgdGhlIGBvYnNpZGlhbi1kZXYtdXRpbHM6UGx1Z2luQXBpYCBkZWJ1Z2dlciBpcyBlbmFibGVkLCBzbyBwcm9kdWN0aW9uIHBheXMgbm90aGluZy5cbiAqXG4gKiBAcmVtYXJrc1xuICogRXZlcnkgcGx1Z2luIGJ1bmRsZXMgaXRzIE9XTiBjb3B5IG9mIGBvYnNpZGlhbi1kZXYtdXRpbHNgLCBzbyBhIHJlZ2lzdHJ5IHJlY29yZCBpcyBhIHdpcmUgZm9ybWF0IGJldHdlZW5cbiAqIGRpZmZlcmVudCBsaWJyYXJ5IHZlcnNpb25zIGFuZCBtdXN0IHN0YXkgYmFja3dhcmQtY29tcGF0aWJsZSBmb3JldmVyLiBOb3RoaW5nIGNyb3NzaW5nIGl0IG1heSBiZVxuICogYGluc3RhbmNlb2ZgLWNoZWNrZWQgXHUyMDE0IHJlYWRzIGFyZSBzdHJ1Y3R1cmFsLCBhbmQgb25seSBwbGFpbiBkYXRhIG9iamVjdHMgYW5kIHBsYWluIGZ1bmN0aW9ucyBhcmUgc3RvcmVkLlxuICpcbiAqIFRoYXQgd2lyZSBmb3JtYXQgaXMgYWxzbyBQVUJMSVNIRUQsIGFzIG9mIHRoZSBgUGx1Z2luIEFQSSBwcm90b2NvbGAgZ3VpZGU6IGEgcGx1Z2luIHRoYXQgZG9lcyBub3QgdXNlXG4gKiB0aGlzIGxpYnJhcnkgcmVhY2hlcyBhbiBBUEkgYnkgcmVhZGluZ1xuICogYGdsb2JhbFRoaXMuX19vYnNpZGlhbkRldlV0aWxzLnBsdWdpbkFwaVJlZ2lzdHJ5LnZhbHVlLnJlY29yZHNbcGx1Z2luSWRdYCBhbmQgYXBwbHlpbmcgdGhlIHNlbGVjdGlvbiBydWxlXG4gKiB7QGxpbmsgc2VsZWN0UmVjb3JkfSBpbXBsZW1lbnRzLiBTbyB7QGxpbmsgUHVibGlzaGVkUGx1Z2luQXBpUmVjb3JkfSdzIGZpZWxkIG5hbWVzLCB0aGUgc3RhdGUga2V5LCBhbmRcbiAqIFwiaGlnaGVzdCBsaXZlIHJlY29yZCBzYXRpc2Z5aW5nIHRoZSByYW5nZSB3aW5zXCIgYXJlIGEgZG9jdW1lbnRlZCBjb250cmFjdCB3aXRoIGFuIGF1ZGllbmNlIG91dHNpZGUgdGhpc1xuICogcmVwb3NpdG9yeSwgYW5kIHRoZSBndWlkZSBoYXMgdG8gYmUgdXBkYXRlZCBpbiB0aGUgc2FtZSBjaGFuZ2UgYXMgYW55IG9mIHRoZW0uIE9ubHkgYHBsdWdpbkFwaVJlZ2lzdHJ5YFxuICogaXMgcHVibGljIHdpdGhpbiB0aGUgc2hhcmVkLXN0YXRlIGJhZzsgdGhlIHJlc3Qgb2YgaXQgc3RheXMgaW50ZXJuYWwuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBc3luY0V2ZW50U291cmNlIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FzeW5jLWV2ZW50cyc7XG5pbXBvcnQgdHlwZSB7IFN0YW5kYXJkU2NoZW1hVjEgfSBmcm9tICdAc3RhbmRhcmQtc2NoZW1hL3NwZWMnO1xuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIENvbXBvbmVudCxcbiAgUGx1Z2luXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgc25hcHNob3QgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXJyYXknO1xuaW1wb3J0IHtcbiAgaW52b2tlQXN5bmNTYWZlbHksXG4gIHJ1bldpdGhUaW1lb3V0XG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9hc3luYyc7XG5pbXBvcnQgeyBtaXhpbkFzeW5jRXZlbnRzIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FzeW5jLWV2ZW50cyc7XG5pbXBvcnQgeyBjYXN0VG8gfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvb2JqZWN0LXV0aWxzJztcbmltcG9ydCB7XG4gIGNvbXBhcmVWZXJzaW9ucyxcbiAgc2F0aXNmaWVzIGFzIHNhdGlzZmllc1ZlcnNpb25cbn0gZnJvbSAnY29tcGFyZS12ZXJzaW9ucyc7XG5cbmltcG9ydCB7IGdldE9ic2lkaWFuTGliRGVidWdnZXIgfSBmcm9tICcuLi9kZWJ1Zy50cyc7XG5pbXBvcnQgeyBnZXRPYnNpZGlhbkRldlV0aWxzU3RhdGUgfSBmcm9tICcuLi9vYnNpZGlhbi1kZXYtdXRpbHMtc3RhdGUudHMnO1xuXG5jb25zdCBQTFVHSU5fQVBJX0RFQlVHR0VSX05BTUVTUEFDRSA9ICdQbHVnaW5BcGknO1xuY29uc3QgUExVR0lOX0FQSV9SRUdJU1RSWV9TVEFURV9LRVkgPSAncGx1Z2luQXBpUmVnaXN0cnknO1xuXG4vKipcbiAqIEhvdyBsb25nIHtAbGluayBQbHVnaW5BcGlSZWYud2hlbkF2YWlsYWJsZX0gd2FpdHMgYmVmb3JlIGdpdmluZyB1cCBhbmQgY2xhc3NpZnlpbmcgdGhlIGZhaWx1cmUuXG4gKi9cbmNvbnN0IERFRkFVTFRfV0hFTl9BVkFJTEFCTEVfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSAxMF8wMDA7XG5cbi8qKlxuICogV2hpY2ggaGFsZiBvZiBhIG1ldGhvZCBjYWxsIGEgdmFsaWRhdGlvbiBmYWlsdXJlIGNhbWUgZnJvbS5cbiAqL1xuZXhwb3J0IGVudW0gUGx1Z2luQXBpUGF5bG9hZEtpbmQge1xuICAvKipcbiAgICogVGhlIG1ldGhvZCdzIGFyZ3VtZW50cy5cbiAgICovXG4gIElucHV0ID0gJ2lucHV0JyxcblxuICAvKipcbiAgICogVGhlIG1ldGhvZCdzIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIE91dHB1dCA9ICdvdXRwdXQnXG59XG5cbi8qKlxuICogVGhlIHJlYXNvbiBhIHBsdWdpbiBBUEkgY291bGQgbm90IGJlIGhhbmRlZCBvdmVyLlxuICpcbiAqIFRoZSB3aG9sZSBwb2ludCBvZiB0aGUgZW51bSBpcyB0aGF0IHRoZXNlIGFyZSB0b2xkIGFwYXJ0LiBgQHZhbmFrYXQvcGx1Z2luLWFwaWAgY2Fubm90IHRlbGwgYW55IG9mIHRoZW1cbiAqIGFwYXJ0LCBhbmQgbm90IHVuaWZvcm1seTogYE5vdEluc3RhbGxlZGAgLyBgTm90RW5hYmxlZGAgLyBgTm90UHVibGlzaGVkYCBhbGwgcmVkdWNlIHRvIG9uZSBgTm90aWNlYCBwbHVzXG4gKiBgdW5kZWZpbmVkYCwgd2hpbGUgYFZlcnNpb25NaXNtYXRjaGAgLyBgU2hhcGVNaXNtYXRjaGAgcHJvZHVjZSBOTyBzaWduYWwgYXQgYWxsIFx1MjAxNCBpdCBuZXZlciBleGFtaW5lcyB3aGF0IGl0XG4gKiBmb3VuZCwgc28gaXQgaGFuZHMgdGhlIG9iamVjdCBvdmVyIGFuZCB0aGUgbWlzbWF0Y2ggc3VyZmFjZXMgbGF0ZXIsIHNvbWV3aGVyZSBlbHNlLCBhcyBzb21lYm9keSBlbHNlJ3NcbiAqIGBUeXBlRXJyb3JgLlxuICpcbiAqIEByZW1hcmtzXG4gKiB7QGxpbmsgUGx1Z2luQXBpUmVmLndoZW5BdmFpbGFibGV9IGNhbiByZXBvcnQgdGhlIGZpcnN0IGZpdmU7IHtAbGluayBQbHVnaW5BcGlVbmF2YWlsYWJpbGl0eVJlYXNvbi5SZXZva2VkfVxuICogaXMgbm90IG9uZSBvZiB0aGVtLCBiZWNhdXNlIGl0IGRlc2NyaWJlcyBhIGhhbmRsZSB0aGF0IFdBUyB2YWxpZCBhbmQgaXMgY2FycmllZCBieVxuICoge0BsaW5rIFBsdWdpbkFwaVJldm9rZWRFcnJvcn0gaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGVudW0gUGx1Z2luQXBpVW5hdmFpbGFiaWxpdHlSZWFzb24ge1xuICAvKipcbiAgICogVGhlIHBsdWdpbiBpcyBpbnN0YWxsZWQgYnV0IG5vdCBlbmFibGVkLlxuICAgKi9cbiAgTm90RW5hYmxlZCA9ICdub3RFbmFibGVkJyxcblxuICAvKipcbiAgICogVGhlIHBsdWdpbiBpcyBub3QgaW5zdGFsbGVkIGluIHRoaXMgdmF1bHQuXG4gICAqL1xuICBOb3RJbnN0YWxsZWQgPSAnbm90SW5zdGFsbGVkJyxcblxuICAvKipcbiAgICogVGhlIHBsdWdpbiBpcyBpbnN0YWxsZWQgYW5kIGVuYWJsZWQgYnV0IGhhcyBub3QgcHVibGlzaGVkIGFueSBBUEkuXG4gICAqL1xuICBOb3RQdWJsaXNoZWQgPSAnbm90UHVibGlzaGVkJyxcblxuICAvKipcbiAgICogVGhlIGhhbmRsZSB3YXMgdmFsaWQgYnV0IHRoZSBwcm92aWRlciBoYXMgc2luY2UgdW5sb2FkZWQsIHNvIGl0IGhhcyBiZWVuIHJldm9rZWQuXG4gICAqL1xuICBSZXZva2VkID0gJ3Jldm9rZWQnLFxuXG4gIC8qKlxuICAgKiBBIHJlY29yZCBzYXRpc2ZpZXMgdGhlIHJlcXVlc3RlZCB2ZXJzaW9uIHJhbmdlLCBidXQgdGhlIEFQSSBvYmplY3QgaXMgbWlzc2luZyBhIG1ldGhvZCB0aGUgY29udHJhY3RcbiAgICogZGVjbGFyZXMgXHUyMDE0IHRoZSBwcm92aWRlcidzIHNoaXBwZWQgc2hhcGUgYW5kIGl0cyBkZWNsYXJlZCBzaGFwZSBkaXNhZ3JlZS5cbiAgICovXG4gIFNoYXBlTWlzbWF0Y2ggPSAnc2hhcGVNaXNtYXRjaCcsXG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gcHVibGlzaGVkIGFuIEFQSSwgYnV0IG5vIHB1Ymxpc2hlZCBjb250cmFjdCB2ZXJzaW9uIHNhdGlzZmllcyB0aGUgcmVxdWVzdGVkIHJhbmdlLlxuICAgKi9cbiAgVmVyc2lvbk1pc21hdGNoID0gJ3ZlcnNpb25NaXNtYXRjaCdcbn1cblxuLyoqXG4gKiBUaGUgY29udHJhY3QgYSBwcm92aWRlciBkZWNsYXJlcyBmb3IgaXRzIEFQSTogZXZlcnkga2V5IGlzIGEgbWV0aG9kIHRoZSBBUEkgaXMgcHJvbWlzaW5nIHRvIGV4cG9zZSwgYW5kXG4gKiBpdHMgdmFsdWUgb3B0aW9uYWxseSBjYXJyaWVzIHRoZSBwYXlsb2FkIHNjaGVtYXMgZm9yIHRoYXQgbWV0aG9kLlxuICpcbiAqIFRoZSBLRVlTIGFyZSB0aGUgcGFydCB0aGF0IGFsd2F5cyBtYXR0ZXJzIFx1MjAxNCB0aGV5IGRyaXZlIHRoZSBzaGFwZSBjaGVjayB0aGF0IGRlY2lkZXMgd2hldGhlciBhIHB1Ymxpc2hlZFxuICogcmVjb3JkIGlzIHVzYWJsZSBhdCBhbGwuIFRoZSBzY2hlbWFzIGFyZSBvcHRpb25hbCBhbmQgb25seSBldmVyIGNvbnN1bHRlZCB3aGlsZSBkZWJ1Z2dpbmcuXG4gKlxuICogQHJlbWFya3NcbiAqIFdoeSB0aGUgc2hhcGUgY2hlY2sgaXMgYSBgdHlwZW9mYCByYXRoZXIgdGhhbiBhIHNjaGVtYSBvdmVyIHRoZSB3aG9sZSBBUEkgb2JqZWN0LiBJbiB6b2QgNCBgei5mdW5jdGlvbigpYFxuICogcmV0dXJucyBhIGZ1bmN0aW9uIEZBQ1RPUlksIG5vdCBhIHNjaGVtYSwgc28gaXQgY2Fubm90IGJlIGEgYHoub2JqZWN0KClgIG1lbWJlciBkaXJlY3RseS4gVGhlcmUgaXMgYSBrbm93blxuICogd29ya2Fyb3VuZCAoem9kIzQxNDMpIFx1MjAxNCBgei5jdXN0b20oKGZuKSA9PiBmdW5jdGlvblNjaGVtYS5pbXBsZW1lbnQoZm4pKWAgXHUyMDE0IGFuZCBpdCBkb2VzIGJ1eSBjb3JyZWN0XG4gKiBgei5pbmZlcmAgdHlwZXMgZm9yIGEgZnVuY3Rpb24gbWVtYmVyLiBJdCBkb2VzIG5vdCBidXkgcnVudGltZSB2YWxpZGF0aW9uIGhlcmUsIHRob3VnaDogYHouY3VzdG9tYCBpcyBhXG4gKiBib29sZWFuIHByZWRpY2F0ZSB0aGF0IHJldHVybnMgaXRzIGlucHV0IHVuY2hhbmdlZCwgc28gdGhlIHZhbGlkYXRpbmcgd3JhcHBlciBgaW1wbGVtZW50YCBidWlsZHMgaXNcbiAqIGRpc2NhcmRlZCBhbmQgdGhlIGNoZWNrIGNvbGxhcHNlcyBiYWNrIHRvIFwiaXMgaXQgY2FsbGFibGVcIi4gS2VlcGluZyB0aGF0IHdyYXBwZXIgd291bGQgbmVlZCBhIGZ1cnRoZXJcbiAqIGAudHJhbnNmb3JtKClgLCBhbmQgd291bGQgdGhlbiBtb3ZlIHZhbGlkYXRpb24gb250byBldmVyeSBjYWxsIGluc3RlYWQgb2YgYmVoaW5kIHRoZSBkZWJ1ZyBnYXRlLCBhbmQgYmluZFxuICogdGhlIGNvbnRyYWN0IHRvIHpvZCBzcGVjaWZpY2FsbHkgXHUyMDE0IHdoaWNoIGlzIGV4YWN0bHkgd2hhdCByZWFjaGluZyB0aHJvdWdoIFN0YW5kYXJkIFNjaGVtYSBhdm9pZHMuIFNvIHRoZVxuICogZGVjbGFyZWQgbWV0aG9kIG5hbWVzIGFyZSBjaGVja2VkIHdpdGggYHR5cGVvZmAsIGFuZCB0aGUgcGF5bG9hZHMgYXJlIHZhbGlkYXRlZCBwZXIgbWV0aG9kIGluc3RlYWQuXG4gKi9cbmV4cG9ydCB0eXBlIFBsdWdpbkFwaUNvbnRyYWN0ID0gUmVjb3JkPHN0cmluZywgUGx1Z2luQXBpTWV0aG9kQ29udHJhY3Q+O1xuXG4vKipcbiAqIE9uZSBBUEkgYSBwbHVnaW4gZXhwb3NlczogdGhlIG9iamVjdCwgdGhlIGNvbnRyYWN0IHZlcnNpb24gaXQgc2F0aXNmaWVzLCBhbmQgb3B0aW9uYWxseSB0aGUgY29udHJhY3RcbiAqIGl0c2VsZi4gVGhpcyBpcyB7QGxpbmsgUHVibGlzaFBsdWdpbkFwaVBhcmFtc30gd2l0aG91dCB0aGUgcHVibGlzaGluZyBwbHVnaW4sIHNvIGEgcGx1Z2luIGNhbiBERUNMQVJFIHdoYXRcbiAqIGl0IGV4cG9zZXMgd2l0aG91dCBhbHNvIHN0YXRpbmcgd2hvIGlzIHB1Ymxpc2hpbmcgaXQgXHUyMDE0IHdoaWNoIGlzIHdoYXQgbGV0cyBgUGx1Z2luQmFzZS5nZXRQbHVnaW5BcGlzYCBjb2xsZWN0XG4gKiB0aGUgZGVjbGFyYXRpb25zIGFuZCBkbyB0aGUgcHVibGlzaGluZyBpdHNlbGYuXG4gKlxuICogQHR5cGVQYXJhbSBUQXBpIC0gVGhlIEFQSSB0eXBlIGJlaW5nIGRlY2xhcmVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbkFwaURlY2xhcmF0aW9uPFRBcGkgZXh0ZW5kcyBvYmplY3QgPSBvYmplY3Q+IHtcbiAgLyoqXG4gICAqIFRoZSBBUEkgb2JqZWN0IHRvIHB1Ymxpc2guIEl0cyBtZXRob2RzIGFyZSBoYW5kZWQgdG8gY29uc3VtZXJzIHRocm91Z2ggYSByZXZvY2FibGUgaGFuZGxlLCBhbmQgdGhleSBhcmVcbiAgICogYWx3YXlzIGludm9rZWQgd2l0aCB0aGlzIG9iamVjdCBhcyB0aGVpciBgdGhpc2AsIHNvIGFuIGltcGxlbWVudGF0aW9uIHVzaW5nIHByaXZhdGUgY2xhc3MgZmllbGRzIGtlZXBzXG4gICAqIHdvcmtpbmcuXG4gICAqL1xuICByZWFkb25seSBhcGk6IFRBcGk7XG5cbiAgLyoqXG4gICAqIFRoZSBDT05UUkFDVCB2ZXJzaW9uLCBpbiBzZW12ZXIgZm9ybSBcdTIwMTQgaW5kZXBlbmRlbnQgb2YgdGhlIHBsdWdpbidzIG93biB2ZXJzaW9uLiBQbHVnaW4gYDEuNC43YCBtYXlcbiAgICogcGVyZmVjdGx5IHdlbGwgZXhwb3NlIEFQSSBgMi4wLjBgLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBpVmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udHJhY3QgdGhpcyB2ZXJzaW9uIG9mIHRoZSBBUEkgc2F0aXNmaWVzLiBPcHRpb25hbDogd2hlbiBvbWl0dGVkLCBubyBzaGFwZSBjaGVjayBpcyBwZXJmb3JtZWQgb25cbiAgICogdGhlIHByb3ZpZGVyJ3MgYmVoYWxmIGFuZCB0aGUgY29uc3VtZXIncyBvd24gY29udHJhY3QgKGlmIGFueSkgaXMgdXNlZCBpbnN0ZWFkLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udHJhY3Q/OiBQbHVnaW5BcGlDb250cmFjdDtcbn1cblxuLyoqXG4gKiBUaGUgcGF5bG9hZCBzY2hlbWFzIGZvciBhIHNpbmdsZSBBUEkgbWV0aG9kLiBCb3RoIGhhbHZlcyBhcmUgb3B0aW9uYWw6IGEgbWV0aG9kIG1heSBkZWNsYXJlIG9ubHkgaXRzIGlucHV0LFxuICogb25seSBpdHMgb3V0cHV0LCBuZWl0aGVyICh0aGUgZW50cnkgdGhlbiBqdXN0IGRlY2xhcmVzIHRoYXQgdGhlIG1ldGhvZCBtdXN0IGV4aXN0KSwgb3IgYm90aC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5BcGlNZXRob2RDb250cmFjdCB7XG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIG1ldGhvZCdzIGFyZ3VtZW50cywgYXMgYW4gYXJyYXkuXG4gICAqL1xuICByZWFkb25seSBpbnB1dD86IFN0YW5kYXJkU2NoZW1hVjE7XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgbWV0aG9kJ3MgcmV0dXJuIHZhbHVlIFx1MjAxNCBvciwgd2hlbiB0aGUgbWV0aG9kIHJldHVybnMgYSB0aGVuYWJsZSwgdGhlIHZhbHVlIGl0IHJlc29sdmVzIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0PzogU3RhbmRhcmRTY2hlbWFWMTtcbn1cblxuLyoqXG4gKiBBIGxpdmUgcmVmZXJlbmNlIHRvIGFub3RoZXIgcGx1Z2luJ3MgQVBJLlxuICpcbiAqIEB0eXBlUGFyYW0gVEFwaSAtIFRoZSBBUEkgdHlwZSB0aGUgY29uc3VtZXIgY29tcGlsZWQgYWdhaW5zdC5cbiAqXG4gKiBAcmVtYXJrc1xuICogVGhlIHJlZiBpcyB0aGUgV0hPTEUgY29uc3VtZXIgc3VyZmFjZSwgZGVsaWJlcmF0ZWx5LiBBIHBsYWluIHtAbGluayBQcm9taXNlfSBjYW5ub3QgbW9kZWwgdGhpcyBiZWNhdXNlIGl0XG4gKiBzZXR0bGVzIG9uY2UsIHdoZXJlYXMgYXZhaWxhYmlsaXR5IGlzIGEgcmVwZWF0aW5nIHNpZ25hbCAoYXZhaWxhYmxlIFx1MjE5MiBnb25lIFx1MjE5MiBhdmFpbGFibGUgYWdhaW4gYWNyb3NzIGFcbiAqIGRpc2FibGUvZW5hYmxlIGN5Y2xlKSBcdTIwMTQgd2hpY2ggaXMgd2h5IHtAbGluayBQbHVnaW5BcGlSZWYud2hlbkF2YWlsYWJsZX0gaXMgYSBtZXRob2QgT04gdGhlIHJlZiByYXRoZXIgdGhhblxuICogdGhlIHRoaW5nIGhhbmRlZCBiYWNrLiBUaGUgYGNoYW5nZWAgZXZlbnQgZXhpc3RzIGZvciBjb25zdW1lcnMgdGhhdCBtdXN0IHJlYWN0IHJhdGhlciB0aGFuIHJlYWQsIGFuZCBpc1xuICogc2Vjb25kYXJ5OiBpdCBpbXBvc2VzIG5vIGNlcmVtb255IG9uIHRoZSBjb21tb24gY2FzZSwgd2hpY2ggaXMgcmVhZGluZyB7QGxpbmsgUGx1Z2luQXBpUmVmLnZhbHVlfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5BcGlSZWY8VEFwaSBleHRlbmRzIG9iamVjdD4gZXh0ZW5kcyBBc3luY0V2ZW50U291cmNlPFBsdWdpbkFwaVJlZkV2ZW50TWFwPiB7XG4gIC8qKlxuICAgKiBUaGUgQVBJLCBvciBgbnVsbGAgd2hlbiBpdCBpcyBub3QgY3VycmVudGx5IGF2YWlsYWJsZS5cbiAgICpcbiAgICogQWx3YXlzIGN1cnJlbnQsIHN5bmNocm9ub3VzLCBhbmQgZnJlZSBcdTIwMTQgdGhlIHJlZiBtYWludGFpbnMgaXQsIHNvIHRoZXJlIGlzIG5vIHJlZ2lzdHJ5IGxvb2t1cCBwZXIgcmVhZC5cbiAgICogYG51bGxgIGhlcmUgbWVhbnMgXCJub3QgYXZhaWxhYmxlIHJpZ2h0IG5vd1wiLCBOT1QgXCJub3QgaW5zdGFsbGVkXCI6IGR1cmluZyBhIGNvbnN1bWVyJ3MgYG9ubG9hZGAgdGhlXG4gICAqIHByb3ZpZGVyIG1heSBzaW1wbHkgbm90IGhhdmUgbG9hZGVkIHlldCwgYW5kIHRoZSB2YWx1ZSBiZWNvbWVzIG5vbi1gbnVsbGAgb24gaXRzIG93bi5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlOiBudWxsIHwgVEFwaTtcblxuICAvKipcbiAgICogV2FpdHMgZm9yIHRoZSBBUEkgdG8gYmVjb21lIGF2YWlsYWJsZS5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIHdhaXQuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgQVBJLlxuICAgKiBAdGhyb3dzIEEge0BsaW5rIFBsdWdpbkFwaVVuYXZhaWxhYmxlRXJyb3J9IHdob3NlIHtAbGluayBQbHVnaW5BcGlVbmF2YWlsYWJsZUVycm9yLnJlYXNvbn0gc2F5cyB3aGljaCBvZlxuICAgKiB0aGUgZml2ZSBmYWlsdXJlcyBvY2N1cnJlZCwgaWYgdGhlIEFQSSBkb2VzIG5vdCBiZWNvbWUgYXZhaWxhYmxlIGJlZm9yZSB0aGUgdGltZW91dCBlbGFwc2VzLlxuICAgKi9cbiAgd2hlbkF2YWlsYWJsZTogKG9wdGlvbnM/OiBXaGVuQXZhaWxhYmxlUGx1Z2luQXBpT3B0aW9ucykgPT4gUHJvbWlzZTxUQXBpPjtcbn1cblxuLyoqXG4gKiBUaGUgZXZlbnRzIGEge0BsaW5rIFBsdWdpbkFwaVJlZn0gZmlyZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luQXBpUmVmRXZlbnRNYXAge1xuICAvKipcbiAgICogRmlyZWQgd2hlbmV2ZXIge0BsaW5rIFBsdWdpbkFwaVJlZi52YWx1ZX0gY2hhbmdlcyBcdTIwMTQgaW5jbHVkaW5nIHdoZW4gaXQgYmVjb21lcyBgbnVsbGAgYmVjYXVzZSB0aGUgcHJvdmlkZXJcbiAgICogdW5sb2FkZWQuXG4gICAqL1xuICBjaGFuZ2U6IFtdO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHRoZSB7QGxpbmsgUGx1Z2luQXBpVW5hdmFpbGFibGVFcnJvcn0gY29uc3RydWN0b3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luQXBpVW5hdmFpbGFibGVFcnJvckNvbnN0cnVjdG9yUGFyYW1zIHtcbiAgLyoqXG4gICAqIEFuIGV4cGxpY2l0IG1lc3NhZ2UuIFdoZW4gb21pdHRlZCwgb25lIGlzIGRlcml2ZWQgZnJvbSB0aGUgcGx1Z2luIGlkIGFuZCB0aGUgcmVhc29uLlxuICAgKi9cbiAgcmVhZG9ubHkgbWVzc2FnZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGBtYW5pZmVzdC5pZGAgb2YgdGhlIHBsdWdpbiB3aG9zZSBBUEkgd2FzIHJlcXVlc3RlZC5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoaWNoIG9mIHRoZSBmaXZlIGZhaWx1cmVzIG9jY3VycmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVhc29uOiBQbHVnaW5BcGlVbmF2YWlsYWJpbGl0eVJlYXNvbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB0aGUge0BsaW5rIFBsdWdpbkFwaVZhbGlkYXRpb25FcnJvcn0gY29uc3RydWN0b3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luQXBpVmFsaWRhdGlvbkVycm9yQ29uc3RydWN0b3JQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGlzc3VlcyB0aGUgc2NoZW1hIHJlcG9ydGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNzdWVzOiByZWFkb25seSBTdGFuZGFyZFNjaGVtYVYxLklzc3VlW107XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBtZXRob2Qgd2hvc2UgcGF5bG9hZCBmYWlsZWQgdmFsaWRhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IG1ldGhvZE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgaW5wdXQgb3IgdGhlIG91dHB1dCBmYWlsZWQuXG4gICAqL1xuICByZWFkb25seSBwYXlsb2FkS2luZDogUGx1Z2luQXBpUGF5bG9hZEtpbmQ7XG5cbiAgLyoqXG4gICAqIFRoZSBgbWFuaWZlc3QuaWRgIG9mIHRoZSBwcm92aWRpbmcgcGx1Z2luLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcHVibGlzaFBsdWdpbkFwaX0uXG4gKlxuICogQHR5cGVQYXJhbSBUQXBpIC0gVGhlIEFQSSB0eXBlIGJlaW5nIHB1Ymxpc2hlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoUGx1Z2luQXBpUGFyYW1zPFRBcGkgZXh0ZW5kcyBvYmplY3Q+IGV4dGVuZHMgUGx1Z2luQXBpRGVjbGFyYXRpb248VEFwaT4ge1xuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB3aG9zZSB1bmxvYWQgcmV2b2tlcyB0aGUgcmVjb3JkLiBEZWZhdWx0cyB0byB7QGxpbmsgUHVibGlzaFBsdWdpbkFwaVBhcmFtcy5wbHVnaW59LCB3aGljaCBpc1xuICAgKiB0aGUgcmlnaHQgb3duZXIgZm9yIGFuIEFQSSBwdWJsaXNoZWQgZm9yIGFzIGxvbmcgYXMgdGhlIHBsdWdpbiBydW5zLlxuICAgKlxuICAgKiBQYXNzIGEgbmFycm93ZXIgb25lIHdoZW4gdGhlIEFQSSBpcyBvbmx5IHZhbGlkIGZvciBwYXJ0IG9mIHRoZSBwbHVnaW4ncyBsaWZlIFx1MjAxNCBhIHBsdWdpbiB3aG9zZSBmZWF0dXJlXG4gICAqIHN1cmZhY2UgaXMgdG9ybiBkb3duIGFuZCByZWJ1aWx0IHdoaWxlIHRoZSBwbHVnaW4gaXRzZWxmIHN0YXlzIGxvYWRlZCBtdXN0IHJldm9rZSB3aXRoIHRoZSBzdXJmYWNlLCBvciBpdFxuICAgKiBsZWF2ZXMgY29uc3VtZXJzIGhvbGRpbmcgaGFuZGxlcyBpbnRvIGNvZGUgdGhhdCBpcyBubyBsb25nZXIgdGhlcmUuXG4gICAqL1xuICByZWFkb25seSBjb21wb25lbnQ/OiBDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBwdWJsaXNoaW5nIHBsdWdpbi4gVGhlIHJlY29yZCBpcyBrZXllZCBieSBpdHMgYG1hbmlmZXN0LmlkYCBhbmQgcmV2b2tlZCBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlIHBsdWdpblxuICAgKiB1bmxvYWRzLCB2aWEgYHBsdWdpbi5yZWdpc3RlcigpYC5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbjogUGx1Z2luO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayB3YXRjaFBsdWdpbkFwaX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2F0Y2hQbHVnaW5BcGlQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHNlbXZlciByYW5nZSBvZiBjb250cmFjdCB2ZXJzaW9ucyB0aGUgY29uc3VtZXIgY29tcGlsZWQgYWdhaW5zdCwgZS5nLiBgJ14yJ2AuIFRoZSBoaWdoZXN0IHB1Ymxpc2hlZFxuICAgKiB2ZXJzaW9uIHNhdGlzZnlpbmcgaXQgd2lucy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogVGhlIHJhbmdlIGlzIGV2YWx1YXRlZCBieSBgY29tcGFyZS12ZXJzaW9uc2AsIHdoaWNoIGFjY2VwdHMgYF5gLCBgfmAsIGNvbXBhcmlzb24gb3BlcmF0b3JzLCBhbmQgYHhgXG4gICAqIHdpbGRjYXJkcyBcdTIwMTQgYnV0IE5PVCBhIGJhcmUgYCpgLiBTcGVsbCBcImFueSB2ZXJzaW9uXCIgYXMgYCc+PTAuMC4wJ2AuXG4gICAqL1xuICByZWFkb25seSBhcGlWZXJzaW9uUmFuZ2U6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZSwgdXNlZCB0byBjbGFzc2lmeSBhIGZhaWx1cmUgYXMgbm90LWluc3RhbGxlZCB2cyBub3QtZW5hYmxlZC5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IG93bmluZyB0aGUgc3Vic2NyaXB0aW9uLiBUaGUgd2F0Y2ggaXMgdG9ybiBkb3duIHdoZW4gaXQgdW5sb2Fkcy5cbiAgICovXG4gIHJlYWRvbmx5IGNvbXBvbmVudDogQ29tcG9uZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgY29udHJhY3QgdGhlIENPTlNVTUVSIGV4cGVjdHMuIE9wdGlvbmFsLCBhbmQgaXQgd2lucyBvdmVyIHRoZSBwcm92aWRlcidzIHB1Ymxpc2hlZCBjb250cmFjdCB3aGVuXG4gICAqIHN1cHBsaWVkIFx1MjAxNCBpdCBpcyB0aGUgY29uc3VtZXIncyBvd24gY29tcGlsZWQtYWdhaW5zdCBleHBlY3RhdGlvbiwgc28gaXQgaXMgdGhlIG9uZSB3aG9zZSB2aW9sYXRpb24gaXNcbiAgICogdGhlIGNvbnN1bWVyJ3MgcHJvYmxlbS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRyYWN0PzogUGx1Z2luQXBpQ29udHJhY3Q7XG5cbiAgLyoqXG4gICAqIFRoZSBgbWFuaWZlc3QuaWRgIG9mIHRoZSBwcm92aWRpbmcgcGx1Z2luLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgUGx1Z2luQXBpUmVmLndoZW5BdmFpbGFibGV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdoZW5BdmFpbGFibGVQbHVnaW5BcGlPcHRpb25zIHtcbiAgLyoqXG4gICAqIEhvdyBsb25nIHRvIHdhaXQgYmVmb3JlIGdpdmluZyB1cCBhbmQgY2xhc3NpZnlpbmcgdGhlIGZhaWx1cmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IDEwMDAwXG4gICAqL1xuICByZWFkb25seSB0aW1lb3V0SW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGNyZWF0ZU1ldGhvZFdyYXBwZXJ9LlxuICovXG5pbnRlcmZhY2UgQ3JlYXRlTWV0aG9kV3JhcHBlclBhcmFtcyB7XG4gIHJlYWRvbmx5IG1ldGhvZENvbnRyYWN0OiBQbHVnaW5BcGlNZXRob2RDb250cmFjdCB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGh1bWFuLXJlYWRhYmxlIG5hbWUgdXNlZCBpbiBlcnJvciBtZXNzYWdlcyBhbmQgZGVidWcgb3V0cHV0LiBOT1QgYSBrZXkgXHUyMDE0IHNlZSB7QGxpbmsgcHJvcGVydHlLZXl9LlxuICAgKi9cbiAgcmVhZG9ubHkgbWV0aG9kTmFtZTogc3RyaW5nO1xuXG4gIHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBrZXkgdGhlIG1ldGhvZCBpcyBhY3R1YWxseSByZWFkIGJ5LCB3aGljaCBtYXkgYmUgYSBzeW1ib2wuXG4gICAqL1xuICByZWFkb25seSBwcm9wZXJ0eUtleTogUHJvcGVydHlLZXk7XG5cbiAgcmVhZG9ubHkgdGFyZ2V0OiBvYmplY3Q7XG59XG5cbi8qKlxuICogVGhlIHJlYWxtLWdsb2JhbCByZWdpc3RyeSBzaGFyZWQgYnkgZXZlcnkgYG9ic2lkaWFuLWRldi11dGlsc2AgY29weSBpbiB0aGUgcmVuZGVyZXIuXG4gKi9cbmludGVyZmFjZSBQbHVnaW5BcGlSZWdpc3RyeSB7XG4gIHJlY29yZHM6IFJlY29yZDxzdHJpbmcsIFB1Ymxpc2hlZFBsdWdpbkFwaVJlY29yZFtdPjtcbiAgc3Vic2NyaWJlcnM6ICgoKSA9PiB2b2lkKVtdO1xufVxuXG4vKipcbiAqIEEgcmVjb3JkIGFzIGl0IHNpdHMgaW4gdGhlIHNoYXJlZCByZWdpc3RyeS5cbiAqXG4gKiBAcmVtYXJrc1xuICogVGhpcyBpcyB0aGUgV0lSRSBGT1JNQVQgYmV0d2VlbiBkaWZmZXJlbnQgYG9ic2lkaWFuLWRldi11dGlsc2AgY29waWVzLCBzbyBpdCBob2xkcyBub3RoaW5nIGJ1dCBwbGFpbiBkYXRhXG4gKiBhbmQgcGxhaW4gZnVuY3Rpb25zLCBhbmQgZXZlcnkgcmVhZCBvZiBpdCBlbHNld2hlcmUgaW4gdGhpcyBmaWxlIGlzIHN0cnVjdHVyYWwuXG4gKlxuICogVW5leHBvcnRlZCBhbmQgbm9uZXRoZWxlc3MgUFVCTElDOiB0aGUgYFBsdWdpbiBBUEkgcHJvdG9jb2xgIGd1aWRlIGRvY3VtZW50cyB0aGVzZSBmaXZlIGZpZWxkIG5hbWVzIGZvclxuICogdGhpcmQtcGFydHkgcGx1Z2lucyB0aGF0IHJlYWQgdGhlIHJlZ2lzdHJ5IHdpdGhvdXQgdGhpcyBsaWJyYXJ5LCBhbmQgcmVwcm9kdWNlcyB0aGUgaW50ZXJmYWNlIHZlcmJhdGltXG4gKiBmb3IgdGhlbSB0byBwYXN0ZS4gSXQgc3RheXMgdW5leHBvcnRlZCBiZWNhdXNlIG5vIGNvbnN1bWVyIE9GIHRoaXMgbGlicmFyeSBldmVyIHRvdWNoZXMgYSByZWNvcmQgXHUyMDE0XG4gKiB7QGxpbmsgd2F0Y2hQbHVnaW5BcGl9IGlzIHRoZWlyIHdob2xlIHN1cmZhY2UgXHUyMDE0IHNvIGV4cG9ydGluZyBpdCB3b3VsZCB3aWRlbiB0aGUgcGFja2FnZSdzIEFQSSBmb3IgYW5cbiAqIGF1ZGllbmNlIHRoYXQgZG9lcyBub3QgaW1wb3J0IHRoZSBwYWNrYWdlLiBSZW5hbWluZyBhIGZpZWxkIGhlcmUgaXMgYSBicmVha2luZyBjaGFuZ2UgdG8gdGhlIGd1aWRlLlxuICovXG5pbnRlcmZhY2UgUHVibGlzaGVkUGx1Z2luQXBpUmVjb3JkIHtcbiAgYXBpOiBvYmplY3Q7XG4gIGFwaVZlcnNpb246IHN0cmluZztcbiAgY29udHJhY3Q6IFBsdWdpbkFwaUNvbnRyYWN0O1xuICBpc1Jldm9rZWQ6IGJvb2xlYW47XG4gIHBsdWdpbklkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHZhbGlkYXRlUGF5bG9hZH0uXG4gKi9cbmludGVyZmFjZSBWYWxpZGF0ZVBheWxvYWRQYXJhbXMge1xuICByZWFkb25seSBtZXRob2ROYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBheWxvYWRLaW5kOiBQbHVnaW5BcGlQYXlsb2FkS2luZDtcbiAgcmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgc2NoZW1hOiBTdGFuZGFyZFNjaGVtYVYxO1xuICByZWFkb25seSB2YWx1ZTogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBIb2xkcyB3aGF0IGEgd2F0Y2ggbmVlZHMgcmVnYXJkbGVzcyBvZiB0aGUgQVBJIHR5cGUgaXQgaXMgdHlwZWQgYWdhaW5zdCwgc28gdGhlIHtAbGluayBtaXhpbkFzeW5jRXZlbnRzfVxuICogbWl4aW4gaGFzIGEgcmVhbCBiYXNlIHRvIGV4dGVuZC5cbiAqL1xuYWJzdHJhY3QgY2xhc3MgUGx1Z2luQXBpV2F0Y2hCYXNlIHtcbiAgcHJvdGVjdGVkIGhhbmRsZTogbnVsbCB8IG9iamVjdCA9IG51bGw7XG5cbiAgcHJvdGVjdGVkIHJlY29yZDogbnVsbCB8IFB1Ymxpc2hlZFBsdWdpbkFwaVJlY29yZCA9IG51bGw7XG5cbiAgLy8gQSBgcHJvdGVjdGVkYCBjb25zdHJ1Y3RvciBpcyBub3QgYXNzaWduYWJsZSB0byBgQWJzdHJhY3RDb25zdHJ1Y3RvcjxvYmplY3Q+YCwgd2hpY2ggaXMgd2hhdFxuICAvLyBgbWl4aW5Bc3luY0V2ZW50c2AgYWNjZXB0cywgc28gdGhpcyBzdGF5cyBwdWJsaWMgZXZlbiB0aG91Z2ggb25seSB0aGUgc3ViY2xhc3MgYmVsb3cgY2FsbHMgaXQuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgcGFyYW1zOiBXYXRjaFBsdWdpbkFwaVBhcmFtcykge31cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBlcnJvciBkZXNjcmliaW5nIHdoeSB0aGUgQVBJIGlzIG5vdCBhdmFpbGFibGUgcmlnaHQgbm93LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgY2xhc3NpZmllZCBlcnJvci5cbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVVbmF2YWlsYWJsZUVycm9yKCk6IFBsdWdpbkFwaVVuYXZhaWxhYmxlRXJyb3Ige1xuICAgIHJldHVybiBuZXcgUGx1Z2luQXBpVW5hdmFpbGFibGVFcnJvcih7XG4gICAgICBwbHVnaW5JZDogdGhpcy5wYXJhbXMucGx1Z2luSWQsXG4gICAgICByZWFzb246IHJlc29sdmVVbmF2YWlsYWJpbGl0eVJlYXNvbih0aGlzLnBhcmFtcylcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBQbHVnaW5BcGlSZWZJbXBsPFRBcGkgZXh0ZW5kcyBvYmplY3Q+IGV4dGVuZHMgbWl4aW5Bc3luY0V2ZW50czxQbHVnaW5BcGlSZWZFdmVudE1hcD4oKShQbHVnaW5BcGlXYXRjaEJhc2UpIGltcGxlbWVudHMgUGx1Z2luQXBpUmVmPFRBcGk+IHtcbiAgcHVibGljIGdldCB2YWx1ZSgpOiBudWxsIHwgVEFwaSB7XG4gICAgcmV0dXJuIGNhc3RUbzxudWxsIHwgVEFwaT4odGhpcy5oYW5kbGUpO1xuICB9XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogV2F0Y2hQbHVnaW5BcGlQYXJhbXMpIHtcbiAgICBzdXBlcihwYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY29tcHV0ZXMgdGhlIGN1cnJlbnQgdmFsdWUgZnJvbSB0aGUgcmVnaXN0cnksIGZpcmluZyBgY2hhbmdlYCBvbmx5IHdoZW4gaXQgYWN0dWFsbHkgY2hhbmdlZC5cbiAgICovXG4gIHB1YmxpYyByZWZyZXNoKCk6IHZvaWQge1xuICAgIGNvbnN0IHJlY29yZCA9IHNlbGVjdFJlY29yZCh0aGlzLnBhcmFtcyk7XG4gICAgaWYgKHJlY29yZCA9PT0gdGhpcy5yZWNvcmQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJlY29yZCA9IHJlY29yZDtcbiAgICB0aGlzLmhhbmRsZSA9IHJlY29yZCA9PT0gbnVsbCA/IG51bGwgOiBjcmVhdGVSZXZvY2FibGVIYW5kbGUocmVjb3JkLCB0aGlzLnBhcmFtcy5jb250cmFjdCk7XG4gICAgdGhpcy50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB3aGVuQXZhaWxhYmxlKG9wdGlvbnM/OiBXaGVuQXZhaWxhYmxlUGx1Z2luQXBpT3B0aW9ucyk6IFByb21pc2U8VEFwaT4ge1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGN1cnJlbnRWYWx1ZTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHJ1bldpdGhUaW1lb3V0PFRBcGk+KHtcbiAgICAgICAgb3BlcmF0aW9uRnVuY3Rpb246IGFzeW5jIChhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwpOiBQcm9taXNlPFRBcGk+ID0+IGF3YWl0IHRoaXMud2FpdEZvclZhbHVlKGFib3J0U2lnbmFsKSxcbiAgICAgICAgb3BlcmF0aW9uTmFtZTogYHdhdGNoUGx1Z2luQXBpKFwiJHt0aGlzLnBhcmFtcy5wbHVnaW5JZH1cIikud2hlbkF2YWlsYWJsZWAsXG4gICAgICAgIHRpbWVvdXRJbk1pbGxpc2Vjb25kczogb3B0aW9ucz8udGltZW91dEluTWlsbGlzZWNvbmRzID8/IERFRkFVTFRfV0hFTl9BVkFJTEFCTEVfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFNcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhyb3cgdGhpcy5jcmVhdGVVbmF2YWlsYWJsZUVycm9yKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB3YWl0Rm9yVmFsdWUoYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsKTogUHJvbWlzZTxUQXBpPiB7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlPFRBcGk+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIC8vIFRoZSBsaXN0ZW5lciBpcyByZWdpc3RlcmVkIEZJUlNUIGFuZCBpbnZva2VkIHRocm91Z2ggYSB0aHVuaywgc28gYGV2ZW50UmVmYCBpcyBhbHJlYWR5IGJvdW5kIGJ5IHRoZVxuICAgICAgLy8gdGltZSBhbnl0aGluZyBjYW4gcmVhY2ggaXQgXHUyMDE0IHdoaWNoIGlzIHdoYXQgbGV0cyBgY2xlYW5VcGAgYmUgdW5jb25kaXRpb25hbCByYXRoZXIgdGhhbiBudWxsLWd1YXJkZWQuXG4gICAgICBjb25zdCBldmVudFJlZiA9IHRoaXMub24oJ2NoYW5nZScsICgpID0+IHtcbiAgICAgICAgaGFuZGxlQ2hhbmdlKCk7XG4gICAgICB9KTtcblxuICAgICAgZnVuY3Rpb24gY2xlYW5VcCgpOiB2b2lkIHtcbiAgICAgICAgZXZlbnRSZWYuYXN5bmNFdmVudFNvdXJjZS5vZmZyZWYoZXZlbnRSZWYpO1xuICAgICAgICBhYm9ydFNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIGhhbmRsZUFib3J0KTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gaGFuZGxlQWJvcnQoKTogdm9pZCB7XG4gICAgICAgIGNsZWFuVXAoKTtcbiAgICAgICAgcmVqZWN0KGFib3J0U2lnbmFsLnJlYXNvbiBhcyBFcnJvcik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjbGVhblVwKCk7XG4gICAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgICAgfTtcblxuICAgICAgYWJvcnRTaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBoYW5kbGVBYm9ydCk7XG4gICAgICBoYW5kbGVDaGFuZ2UoKTtcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFRocm93biB3aGVuIGEgcGx1Z2luIEFQSSBjYW5ub3QgYmUgaGFuZGVkIG92ZXIsIGNhcnJ5aW5nIHRoZSB7QGxpbmsgUGx1Z2luQXBpVW5hdmFpbGFiaWxpdHlSZWFzb259IHRoYXQgc2F5c1xuICogd2h5LlxuICovXG5leHBvcnQgY2xhc3MgUGx1Z2luQXBpVW5hdmFpbGFibGVFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgLyoqXG4gICAqIFRoZSBgbWFuaWZlc3QuaWRgIG9mIHRoZSBwbHVnaW4gd2hvc2UgQVBJIHdhcyByZXF1ZXN0ZWQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogV2hpY2ggb2YgdGhlIGZpdmUgZmFpbHVyZXMgb2NjdXJyZWQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVhc29uOiBQbHVnaW5BcGlVbmF2YWlsYWJpbGl0eVJlYXNvbjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHtAbGluayBQbHVnaW5BcGlVbmF2YWlsYWJsZUVycm9yfS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBQbHVnaW5BcGlVbmF2YWlsYWJsZUVycm9yQ29uc3RydWN0b3JQYXJhbXMpIHtcbiAgICBzdXBlcihwYXJhbXMubWVzc2FnZSA/PyBgVGhlIEFQSSBvZiB0aGUgcGx1Z2luIFwiJHtwYXJhbXMucGx1Z2luSWR9XCIgaXMgdW5hdmFpbGFibGU6ICR7cGFyYW1zLnJlYXNvbn0uYCk7XG4gICAgdGhpcy5uYW1lID0gJ1BsdWdpbkFwaVVuYXZhaWxhYmxlRXJyb3InO1xuICAgIHRoaXMucGx1Z2luSWQgPSBwYXJhbXMucGx1Z2luSWQ7XG4gICAgdGhpcy5yZWFzb24gPSBwYXJhbXMucmVhc29uO1xuICB9XG59XG5cbi8qKlxuICogVGhyb3duIHdoZW4gYSBwcm9wZXJ0eSBpcyByZWFkIGZyb20gYSBoYW5kbGUgd2hvc2UgcHJvdmlkZXIgaGFzIHNpbmNlIHVubG9hZGVkLlxuICpcbiAqIFRoaXMgaXMgdGhlIHBvaW50IG9mIGhhbmRpbmcgb3V0IGEgcmV2b2NhYmxlIGhhbmRsZSByYXRoZXIgdGhhbiB0aGUgcmF3IG9iamVjdDogYSBjb25zdW1lciB0aGF0IGNhY2hlZCB0aGVcbiAqIEFQSSBpbiBhIGZpZWxkIGFuZCBrZXB0IHVzaW5nIGl0IGFjcm9zcyBhIGRpc2FibGUgZ2V0cyBhbiBlcnJvciBuYW1pbmcgdGhlIHByb3ZpZGVyLCBpbnN0ZWFkIG9mXG4gKiBgQ2Fubm90IHJlYWQgcHJvcGVydGllcyBvZiB1bmRlZmluZWRgIHNvbWV3aGVyZSBkZWVwIGluc2lkZSBhIHRvcm4tZG93biBwbHVnaW4uXG4gKi9cbmV4cG9ydCBjbGFzcyBQbHVnaW5BcGlSZXZva2VkRXJyb3IgZXh0ZW5kcyBQbHVnaW5BcGlVbmF2YWlsYWJsZUVycm9yIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB7QGxpbmsgUGx1Z2luQXBpUmV2b2tlZEVycm9yfS5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpbklkIC0gVGhlIGBtYW5pZmVzdC5pZGAgb2YgdGhlIHBsdWdpbiB3aG9zZSBBUEkgd2FzIHJldm9rZWQuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGx1Z2luSWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHtcbiAgICAgIG1lc3NhZ2U6IGBUaGUgQVBJIG9mIHRoZSBwbHVnaW4gXCIke3BsdWdpbklkfVwiIGhhcyBiZWVuIHJldm9rZWQsIGJlY2F1c2UgdGhlIHBsdWdpbiB3YXMgdW5sb2FkZWQuYCxcbiAgICAgIHBsdWdpbklkLFxuICAgICAgcmVhc29uOiBQbHVnaW5BcGlVbmF2YWlsYWJpbGl0eVJlYXNvbi5SZXZva2VkXG4gICAgfSk7XG4gICAgdGhpcy5uYW1lID0gJ1BsdWdpbkFwaVJldm9rZWRFcnJvcic7XG4gIH1cbn1cblxuLyoqXG4gKiBUaHJvd24gd2hlbiBhIHB1Ymxpc2hlZCBBUEkncyBwYXlsb2FkIGZhaWxzIHRoZSBzY2hlbWEgaXRzIGNvbnRyYWN0IGRlY2xhcmVzLlxuICpcbiAqIE9ubHkgZXZlciB0aHJvd24gd2hpbGUgdGhlIGBvYnNpZGlhbi1kZXYtdXRpbHM6UGx1Z2luQXBpYCBkZWJ1Z2dlciBpcyBlbmFibGVkIFx1MjAxNCBpbiBwcm9kdWN0aW9uIHRoZSBtZXRob2RzXG4gKiBhcmUgbm90IHdyYXBwZWQgYXQgYWxsLlxuICovXG5leHBvcnQgY2xhc3MgUGx1Z2luQXBpVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAvKipcbiAgICogVGhlIGlzc3VlcyB0aGUgc2NoZW1hIHJlcG9ydGVkLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlzc3VlczogcmVhZG9ubHkgU3RhbmRhcmRTY2hlbWFWMS5Jc3N1ZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgbWV0aG9kIHdob3NlIHBheWxvYWQgZmFpbGVkIHZhbGlkYXRpb24uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbWV0aG9kTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYG1hbmlmZXN0LmlkYCBvZiB0aGUgcHJvdmlkaW5nIHBsdWdpbi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwbHVnaW5JZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEge0BsaW5rIFBsdWdpbkFwaVZhbGlkYXRpb25FcnJvcn0uXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGVycm9yLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogUGx1Z2luQXBpVmFsaWRhdGlvbkVycm9yQ29uc3RydWN0b3JQYXJhbXMpIHtcbiAgICBzdXBlcihcbiAgICAgIGBUaGUgJHtwYXJhbXMucGF5bG9hZEtpbmR9IG9mIFwiJHtwYXJhbXMucGx1Z2luSWR9XCIgQVBJIG1ldGhvZCBcIiR7cGFyYW1zLm1ldGhvZE5hbWV9XCIgZmFpbGVkIHZhbGlkYXRpb246ICR7Zm9ybWF0SXNzdWVzKHBhcmFtcy5pc3N1ZXMpfWBcbiAgICApO1xuICAgIHRoaXMubmFtZSA9ICdQbHVnaW5BcGlWYWxpZGF0aW9uRXJyb3InO1xuICAgIHRoaXMuaXNzdWVzID0gcGFyYW1zLmlzc3VlcztcbiAgICB0aGlzLm1ldGhvZE5hbWUgPSBwYXJhbXMubWV0aG9kTmFtZTtcbiAgICB0aGlzLnBsdWdpbklkID0gcGFyYW1zLnBsdWdpbklkO1xuICB9XG59XG5cbi8qKlxuICogUHVibGlzaGVzIGEgcGx1Z2luJ3MgQVBJIHNvIG90aGVyIHBsdWdpbnMgY2FuIGNvbnN1bWUgaXQsIGtleWVkIGJ5IHRoZSBwbHVnaW4ncyBgbWFuaWZlc3QuaWRgIGFuZCByZXZva2VkXG4gKiBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlIHBsdWdpbiB1bmxvYWRzLlxuICpcbiAqIFNldmVyYWwgY29udHJhY3QgdmVyc2lvbnMgbWF5IGJlIHB1Ymxpc2hlZCBzaWRlIGJ5IHNpZGUsIHNvIGEgcHJvdmlkZXIgY2FuIG1vdmUgdG8gYDIuMC4wYCB3aXRob3V0IGJyZWFraW5nXG4gKiBjb25zdW1lcnMgc3RpbGwgcGlubmVkIHRvIGBeMWAuXG4gKlxuICogQHR5cGVQYXJhbSBUQXBpIC0gVGhlIEFQSSB0eXBlIGJlaW5nIHB1Ymxpc2hlZC5cbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcHVibGlzaGluZy5cbiAqIEB0aHJvd3MgQW4ge0BsaW5rIEVycm9yfSBpZiB0aGlzIHBsdWdpbiBoYXMgYWxyZWFkeSBwdWJsaXNoZWQgdGhpcyBleGFjdCBgYXBpVmVyc2lvbmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwdWJsaXNoUGx1Z2luQXBpPFRBcGkgZXh0ZW5kcyBvYmplY3Q+KHBhcmFtczogUHVibGlzaFBsdWdpbkFwaVBhcmFtczxUQXBpPik6IHZvaWQge1xuICBjb25zdCBwbHVnaW5JZCA9IHBhcmFtcy5wbHVnaW4ubWFuaWZlc3QuaWQ7XG4gIGNvbnN0IHJlZ2lzdHJ5ID0gZ2V0UmVnaXN0cnkoKTtcbiAgY29uc3QgcmVjb3JkcyA9IHJlZ2lzdHJ5LnJlY29yZHNbcGx1Z2luSWRdID8/IFtdO1xuICByZWdpc3RyeS5yZWNvcmRzW3BsdWdpbklkXSA9IHJlY29yZHM7XG5cbiAgaWYgKHJlY29yZHMuc29tZSgocmVjb3JkKSA9PiByZWNvcmQuYXBpVmVyc2lvbiA9PT0gcGFyYW1zLmFwaVZlcnNpb24pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgcGx1Z2luIFwiJHtwbHVnaW5JZH1cIiBoYXMgYWxyZWFkeSBwdWJsaXNoZWQgdGhlIEFQSSB2ZXJzaW9uIFwiJHtwYXJhbXMuYXBpVmVyc2lvbn1cIi5gKTtcbiAgfVxuXG4gIGNvbnN0IHJlY29yZDogUHVibGlzaGVkUGx1Z2luQXBpUmVjb3JkID0ge1xuICAgIGFwaTogcGFyYW1zLmFwaSxcbiAgICBhcGlWZXJzaW9uOiBwYXJhbXMuYXBpVmVyc2lvbixcbiAgICBjb250cmFjdDogcGFyYW1zLmNvbnRyYWN0ID8/IHt9LFxuICAgIGlzUmV2b2tlZDogZmFsc2UsXG4gICAgcGx1Z2luSWRcbiAgfTtcbiAgcmVjb3Jkcy5wdXNoKHJlY29yZCk7XG4gIG5vdGlmeVN1YnNjcmliZXJzKCk7XG5cbiAgKHBhcmFtcy5jb21wb25lbnQgPz8gcGFyYW1zLnBsdWdpbikucmVnaXN0ZXIoKCkgPT4ge1xuICAgIHJldm9rZVJlY29yZChyZWNvcmQpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBXYXRjaGVzIGFub3RoZXIgcGx1Z2luJ3MgQVBJIGFuZCByZXR1cm5zIGEgbGl2ZSB7QGxpbmsgUGx1Z2luQXBpUmVmfSB3aG9zZSB7QGxpbmsgUGx1Z2luQXBpUmVmLnZhbHVlfSBzdGF5c1xuICogY29ycmVjdCBhY3Jvc3MgdGhlIHByb3ZpZGVyJ3MgbG9hZCwgdW5sb2FkLCBhbmQgcmUtZW5hYmxlLlxuICpcbiAqIFRoaXMgaXMgdGhlIGVudGlyZSBjb25zdW1lciBzdXJmYWNlLiBUaGVyZSBpcyBkZWxpYmVyYXRlbHkgbm8gc3luY2hyb25vdXMgXCJnZXQgaXQgb3IgYG51bGxgXCIgcHJvYmU6IGEgcHJvYmVcbiAqIG9ubHkgYW5zd2VycyBcIm5vd1wiIGFuZCBuZXZlciB0ZWxscyB5b3Ugd2hlbiBcIm5vd1wiIGNoYW5nZWQsIHNvIGNhbGxpbmcgb25lIGR1cmluZyBgb25sb2FkYCByZWFkcyBgbnVsbGAgYW5kXG4gKiBpbnZpdGVzIHRoZSBjb25jbHVzaW9uIFwibm90IGluc3RhbGxlZFwiLiBBIGNvbnN1bWVyIHRoYXQgbmVlZHMgYSBzeW5jaHJvbm91cyBhbnN3ZXIgaW5zaWRlIGEgY2FsbGJhY2sgd2hvc2VcbiAqIHNpZ25hdHVyZSBmb3JiaWRzIGBhd2FpdGAgXHUyMDE0IGBjaGVja0NhbGxiYWNrKGlzQ2hlY2tpbmcpOiBib29sZWFuYCwgYGNhbkV4ZWN1dGUoKWAsIGEgc2V0dGluZ3Mtcm93IGB2aXNpYmxlYFxuICogcHJlZGljYXRlIFx1MjAxNCBob2xkcyB0aGUgcmVmIChvciB0aGUgdmFsdWUgaXQgbWFpbnRhaW5zKSBpbiBhIGZpZWxkIGFuZCByZWFkcyB0aGF0LCB3aGljaCBpcyBib3RoIGNoZWFwZXIgYW5kXG4gKiBjb3JyZWN0IGFjcm9zcyBCT1RIIGVkZ2VzLlxuICpcbiAqIEB0eXBlUGFyYW0gVEFwaSAtIFRoZSBBUEkgdHlwZSB0aGUgY29uc3VtZXIgY29tcGlsZWQgYWdhaW5zdC5cbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIHdhdGNoLlxuICogQHJldHVybnMgVGhlIGxpdmUgcmVmZXJlbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2F0Y2hQbHVnaW5BcGk8VEFwaSBleHRlbmRzIG9iamVjdD4ocGFyYW1zOiBXYXRjaFBsdWdpbkFwaVBhcmFtcyk6IFBsdWdpbkFwaVJlZjxUQXBpPiB7XG4gIGNvbnN0IHJlZiA9IG5ldyBQbHVnaW5BcGlSZWZJbXBsPFRBcGk+KHBhcmFtcyk7XG4gIGNvbnN0IHVuc3Vic2NyaWJlID0gc3Vic2NyaWJlKCgpID0+IHtcbiAgICByZWYucmVmcmVzaCgpO1xuICB9KTtcbiAgcGFyYW1zLmNvbXBvbmVudC5yZWdpc3Rlcih1bnN1YnNjcmliZSk7XG4gIHJlZi5yZWZyZXNoKCk7XG4gIHJldHVybiByZWY7XG59XG5cbi8qKlxuICogU3RydWN0dXJhbGx5IGRldGVjdHMgYSB0aGVuYWJsZS4gQSBjcm9zcy1jb3B5IHZhbHVlIG1heSBjb21lIGZyb20gYW5vdGhlciByZWFsbSwgc28gYGluc3RhbmNlb2YgUHJvbWlzZWAgaXNcbiAqIG5vdCB1c2FibGUgaGVyZSBcdTIwMTQgdGhlIHNhbWUgZGlzY2lwbGluZSB0aGUgcmVnaXN0cnkgcmVjb3JkcyBmb2xsb3cuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHZhbHVlIHRoZSB0aGVuYWJsZSByZXNvbHZlcyB0by5cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byB0ZXN0LlxuICogQHJldHVybnMgYHRydWVgIHdoZW4gdGhlIHZhbHVlIGlzIHRoZW5hYmxlLlxuICovXG5mdW5jdGlvbiBjaGVja0lzUHJvbWlzZUxpa2U8VD4odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBQcm9taXNlTGlrZTxUPiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnXG4gICAgJiYgdmFsdWUgIT09IG51bGxcbiAgICAmJiAndGhlbicgaW4gdmFsdWVcbiAgICAmJiB0eXBlb2YgKHZhbHVlIGFzIFByb21pc2VMaWtlPFQ+KS50aGVuID09PSAnZnVuY3Rpb24nO1xufVxuXG4vKipcbiAqIENoZWNrcyB0aGF0IGV2ZXJ5IG1ldGhvZCB0aGUgZWZmZWN0aXZlIGNvbnRyYWN0IGRlY2xhcmVzIGlzIGFjdHVhbGx5IHByZXNlbnQgb24gdGhlIHB1Ymxpc2hlZCBBUEkuXG4gKlxuICogQHBhcmFtIHJlY29yZCAtIFRoZSBwdWJsaXNoZWQgcmVjb3JkLlxuICogQHBhcmFtIGNvbnN1bWVyQ29udHJhY3QgLSBUaGUgY29uc3VtZXIncyBvd24gY29udHJhY3QsIHdoaWNoIHdpbnMgd2hlbiBzdXBwbGllZC5cbiAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSBzaGFwZSBtYXRjaGVzLlxuICovXG5mdW5jdGlvbiBjaGVja01hdGNoZXNDb250cmFjdFNoYXBlKHJlY29yZDogUHVibGlzaGVkUGx1Z2luQXBpUmVjb3JkLCBjb25zdW1lckNvbnRyYWN0PzogUGx1Z2luQXBpQ29udHJhY3QpOiBib29sZWFuIHtcbiAgY29uc3QgY29udHJhY3QgPSBjb25zdW1lckNvbnRyYWN0ID8/IHJlY29yZC5jb250cmFjdDtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKGNvbnRyYWN0KS5ldmVyeSgobWV0aG9kTmFtZSkgPT4gdHlwZW9mIGdldE1lbWJlcihyZWNvcmQuYXBpLCBtZXRob2ROYW1lKSA9PT0gJ2Z1bmN0aW9uJyk7XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBmdW5jdGlvbiBhIGNvbnN1bWVyIGFjdHVhbGx5IGNhbGxzOiBpdCBhbHdheXMgaW52b2tlcyB0aGUgb3JpZ2luYWwgd2l0aCB0aGUgcmF3IEFQSSBvYmplY3QgYXNcbiAqIGB0aGlzYCwgYW5kIFx1MjAxNCBvbmx5IHdoaWxlIHRoZSBsaWJyYXJ5IGRlYnVnZ2VyIGlzIGVuYWJsZWQgXHUyMDE0IHZhbGlkYXRlcyB0aGUgZGVjbGFyZWQgcGF5bG9hZHMgYXJvdW5kIGl0LlxuICpcbiAqIFRoZSBkZWJ1Z2dlciBpcyBjb25zdWx0ZWQgcGVyIGNhbGwgcmF0aGVyIHRoYW4gcGVyIHdyYXAsIHNvIHRvZ2dsaW5nIGBERUJVR2AgYXQgcnVudGltZSB0YWtlcyBlZmZlY3Qgd2l0aG91dFxuICogcmUtYWNxdWlyaW5nIHRoZSBoYW5kbGUsIHdoaWxlIHRoZSB3cmFwcGVyJ3MgaWRlbnRpdHkgc3RheXMgc3RhYmxlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIHdyYXBwZXIuXG4gKiBAcmV0dXJucyBUaGUgd3JhcHBlciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlTWV0aG9kV3JhcHBlcihwYXJhbXM6IENyZWF0ZU1ldGhvZFdyYXBwZXJQYXJhbXMpOiAoLi4uJGFyZ3VtZW50czogdW5rbm93bltdKSA9PiB1bmtub3duIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHBsdWdpbkFwaU1ldGhvZCguLi4kYXJndW1lbnRzOiB1bmtub3duW10pOiB1bmtub3duIHtcbiAgICAvLyBSZWFkIGJ5IHRoZSBPUklHSU5BTCBrZXksIG5vdCBieSB0aGUgZGlzcGxheSBuYW1lOiBgU3RyaW5nKHN5bWJvbClgIGlzIGAnU3ltYm9sKHgpJ2AsIHdoaWNoIGlzIG5vdCBhXG4gICAgLy8ga2V5IHRoZSBBUEkgb2JqZWN0IGhhcy5cbiAgICBjb25zdCBtZXRob2QgPSBjYXN0VG88KC4uLiRpbm5lckFyZ3VtZW50czogdW5rbm93bltdKSA9PiB1bmtub3duPihnZXRNZW1iZXIocGFyYW1zLnRhcmdldCwgcGFyYW1zLnByb3BlcnR5S2V5KSk7XG4gICAgY29uc3QgbWV0aG9kQ29udHJhY3QgPSBwYXJhbXMubWV0aG9kQ29udHJhY3Q7XG5cbiAgICBpZiAobWV0aG9kQ29udHJhY3QgPT09IHVuZGVmaW5lZCB8fCAhZ2V0UGx1Z2luQXBpRGVidWdnZXIoKS5lbmFibGVkKSB7XG4gICAgICByZXR1cm4gbWV0aG9kLmFwcGx5KHBhcmFtcy50YXJnZXQsICRhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIGlmIChtZXRob2RDb250cmFjdC5pbnB1dCkge1xuICAgICAgdmFsaWRhdGVQYXlsb2FkKHtcbiAgICAgICAgbWV0aG9kTmFtZTogcGFyYW1zLm1ldGhvZE5hbWUsXG4gICAgICAgIHBheWxvYWRLaW5kOiBQbHVnaW5BcGlQYXlsb2FkS2luZC5JbnB1dCxcbiAgICAgICAgcGx1Z2luSWQ6IHBhcmFtcy5wbHVnaW5JZCxcbiAgICAgICAgc2NoZW1hOiBtZXRob2RDb250cmFjdC5pbnB1dCxcbiAgICAgICAgdmFsdWU6ICRhcmd1bWVudHNcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHJldHVyblZhbHVlID0gbWV0aG9kLmFwcGx5KHBhcmFtcy50YXJnZXQsICRhcmd1bWVudHMpO1xuICAgIGNvbnN0IG91dHB1dFNjaGVtYSA9IG1ldGhvZENvbnRyYWN0Lm91dHB1dDtcbiAgICBpZiAoIW91dHB1dFNjaGVtYSkge1xuICAgICAgcmV0dXJuIHJldHVyblZhbHVlO1xuICAgIH1cblxuICAgIGlmIChjaGVja0lzUHJvbWlzZUxpa2UocmV0dXJuVmFsdWUpKSB7XG4gICAgICByZXR1cm4gcmV0dXJuVmFsdWUudGhlbigocmVzb2x2ZWRWYWx1ZTogdW5rbm93bikgPT4ge1xuICAgICAgICB2YWxpZGF0ZVBheWxvYWQoe1xuICAgICAgICAgIG1ldGhvZE5hbWU6IHBhcmFtcy5tZXRob2ROYW1lLFxuICAgICAgICAgIHBheWxvYWRLaW5kOiBQbHVnaW5BcGlQYXlsb2FkS2luZC5PdXRwdXQsXG4gICAgICAgICAgcGx1Z2luSWQ6IHBhcmFtcy5wbHVnaW5JZCxcbiAgICAgICAgICBzY2hlbWE6IG91dHB1dFNjaGVtYSxcbiAgICAgICAgICB2YWx1ZTogcmVzb2x2ZWRWYWx1ZVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVkVmFsdWU7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZVBheWxvYWQoe1xuICAgICAgbWV0aG9kTmFtZTogcGFyYW1zLm1ldGhvZE5hbWUsXG4gICAgICBwYXlsb2FkS2luZDogUGx1Z2luQXBpUGF5bG9hZEtpbmQuT3V0cHV0LFxuICAgICAgcGx1Z2luSWQ6IHBhcmFtcy5wbHVnaW5JZCxcbiAgICAgIHNjaGVtYTogb3V0cHV0U2NoZW1hLFxuICAgICAgdmFsdWU6IHJldHVyblZhbHVlXG4gICAgfSk7XG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xuICB9O1xufVxuXG4vKipcbiAqIFdyYXBzIGEgcHVibGlzaGVkIEFQSSBpbiBhIHJldm9jYWJsZSBoYW5kbGUuXG4gKlxuICogQSBmbGFnLWNoZWNraW5nIGBnZXRgIHRyYXAgaXMgdXNlZCByYXRoZXIgdGhhbiBgUHJveHkucmV2b2NhYmxlYCwgYmVjYXVzZSB0aGUgbGF0dGVyIHRocm93cyBhIGJhcmVcbiAqIGBUeXBlRXJyb3JgIHdob3NlIG1lc3NhZ2Ugd2UgY2Fubm90IHBocmFzZSBcdTIwMTQgYW5kIHRoZSB3aG9sZSB2YWx1ZSBvZiByZXZva2luZyBpcyB0aGF0IHRoZSBlcnJvciBuYW1lcyB0aGVcbiAqIHByb3ZpZGVyLlxuICpcbiAqIE1ldGhvZHMgYXJlIGJvdW5kIHRvIHRoZSBSQVcgYXBpIG9iamVjdCByYXRoZXIgdGhhbiB0byB0aGUgcHJveHk6IGFuIGltcGxlbWVudGF0aW9uIHVzaW5nIHByaXZhdGUgY2xhc3NcbiAqIGZpZWxkcyAoYCNmaWVsZGApIHRocm93cyBpZiBpdHMgYHRoaXNgIGlzIGEgcHJveHkuXG4gKlxuICogQHBhcmFtIHJlY29yZCAtIFRoZSBwdWJsaXNoZWQgcmVjb3JkLlxuICogQHBhcmFtIGNvbnN1bWVyQ29udHJhY3QgLSBUaGUgY29uc3VtZXIncyBvd24gY29udHJhY3QsIHdoaWNoIHdpbnMgb3ZlciB0aGUgcHVibGlzaGVkIG9uZSB3aGVuIHN1cHBsaWVkLlxuICogQHJldHVybnMgVGhlIGhhbmRsZS5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlUmV2b2NhYmxlSGFuZGxlKHJlY29yZDogUHVibGlzaGVkUGx1Z2luQXBpUmVjb3JkLCBjb25zdW1lckNvbnRyYWN0PzogUGx1Z2luQXBpQ29udHJhY3QpOiBvYmplY3Qge1xuICBjb25zdCBjb250cmFjdCA9IGNvbnN1bWVyQ29udHJhY3QgPz8gcmVjb3JkLmNvbnRyYWN0O1xuICBjb25zdCBtZXRob2RDYWNoZSA9IG5ldyBNYXA8UHJvcGVydHlLZXk+KCk7XG5cbiAgcmV0dXJuIG5ldyBQcm94eShyZWNvcmQuYXBpLCB7XG4gICAgZ2V0KHRhcmdldDogb2JqZWN0LCBwcm9wZXJ0eUtleTogUHJvcGVydHlLZXkpOiB1bmtub3duIHtcbiAgICAgIGlmIChyZWNvcmQuaXNSZXZva2VkKSB7XG4gICAgICAgIHRocm93IG5ldyBQbHVnaW5BcGlSZXZva2VkRXJyb3IocmVjb3JkLnBsdWdpbklkKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdmFsdWUgPSBnZXRNZW1iZXIodGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cblxuICAgICAgbGV0IG1ldGhvZCA9IG1ldGhvZENhY2hlLmdldChwcm9wZXJ0eUtleSk7XG4gICAgICBpZiAobWV0aG9kID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbWV0aG9kID0gY3JlYXRlTWV0aG9kV3JhcHBlcih7XG4gICAgICAgICAgbWV0aG9kQ29udHJhY3Q6IHR5cGVvZiBwcm9wZXJ0eUtleSA9PT0gJ3N0cmluZycgPyBjb250cmFjdFtwcm9wZXJ0eUtleV0gOiB1bmRlZmluZWQsXG4gICAgICAgICAgbWV0aG9kTmFtZTogU3RyaW5nKHByb3BlcnR5S2V5KSxcbiAgICAgICAgICBwbHVnaW5JZDogcmVjb3JkLnBsdWdpbklkLFxuICAgICAgICAgIHByb3BlcnR5S2V5LFxuICAgICAgICAgIHRhcmdldFxuICAgICAgICB9KTtcbiAgICAgICAgbWV0aG9kQ2FjaGUuc2V0KHByb3BlcnR5S2V5LCBtZXRob2QpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1ldGhvZDtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgc2NoZW1hIGlzc3VlcyBpbnRvIGEgc2luZ2xlIHJlYWRhYmxlIGxpbmUuXG4gKlxuICogQHBhcmFtIGlzc3VlcyAtIFRoZSBpc3N1ZXMgdG8gcmVuZGVyLlxuICogQHJldHVybnMgVGhlIHJlbmRlcmVkIG1lc3NhZ2UuXG4gKi9cbmZ1bmN0aW9uIGZvcm1hdElzc3Vlcyhpc3N1ZXM6IHJlYWRvbmx5IFN0YW5kYXJkU2NoZW1hVjEuSXNzdWVbXSk6IHN0cmluZyB7XG4gIHJldHVybiBpc3N1ZXNcbiAgICAubWFwKChpc3N1ZSkgPT4ge1xuICAgICAgY29uc3QgcGF0aCA9IGlzc3VlLnBhdGg/Lm1hcCgoc2VnbWVudCkgPT4gU3RyaW5nKHR5cGVvZiBzZWdtZW50ID09PSAnb2JqZWN0JyA/IHNlZ21lbnQua2V5IDogc2VnbWVudCkpLmpvaW4oJy4nKTtcbiAgICAgIHJldHVybiBwYXRoID8gYCR7cGF0aH06ICR7aXNzdWUubWVzc2FnZX1gIDogaXNzdWUubWVzc2FnZTtcbiAgICB9KVxuICAgIC5qb2luKCc7ICcpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHJlY29yZHMgYSBwbHVnaW4gY3VycmVudGx5IGhhcyBwdWJsaXNoZWQsIGV4Y2x1ZGluZyBhbnkgdGhhdCBoYXZlIGJlZW4gcmV2b2tlZC5cbiAqXG4gKiBAcGFyYW0gcGx1Z2luSWQgLSBUaGUgYG1hbmlmZXN0LmlkYCBvZiB0aGUgcHJvdmlkaW5nIHBsdWdpbi5cbiAqIEByZXR1cm5zIFRoZSBsaXZlIHJlY29yZHMuXG4gKi9cbmZ1bmN0aW9uIGdldExpdmVSZWNvcmRzKHBsdWdpbklkOiBzdHJpbmcpOiBQdWJsaXNoZWRQbHVnaW5BcGlSZWNvcmRbXSB7XG4gIHJldHVybiAoZ2V0UmVnaXN0cnkoKS5yZWNvcmRzW3BsdWdpbklkXSA/PyBbXSkuZmlsdGVyKChyZWNvcmQpID0+ICFyZWNvcmQuaXNSZXZva2VkKTtcbn1cblxuLyoqXG4gKiBSZWFkcyBhIG1lbWJlciBvZmYgYSBwdWJsaXNoZWQgQVBJIG9iamVjdCB3aXRob3V0IG5hcnJvd2luZyBpdCBcdTIwMTQgdGhlIEFQSSBjcm9zc2VzIGEgbGlicmFyeS12ZXJzaW9uIGJvdW5kYXJ5LFxuICogc28gbm90aGluZyBhYm91dCBpdHMgc2hhcGUgbWF5IGJlIGFzc3VtZWQuXG4gKlxuICogQHBhcmFtIGFwaSAtIFRoZSBwdWJsaXNoZWQgQVBJIG9iamVjdC5cbiAqIEBwYXJhbSBtZXRob2ROYW1lIC0gVGhlIG1lbWJlciB0byByZWFkLlxuICogQHJldHVybnMgVGhlIG1lbWJlcidzIHZhbHVlLlxuICovXG5mdW5jdGlvbiBnZXRNZW1iZXIoYXBpOiBvYmplY3QsIG1ldGhvZE5hbWU6IFByb3BlcnR5S2V5KTogdW5rbm93biB7XG4gIHJldHVybiBSZWZsZWN0LmdldChhcGksIG1ldGhvZE5hbWUpO1xufVxuXG4vKipcbiAqIFRoZSBkZWJ1Z2dlciB0aGF0IGdhdGVzIHBheWxvYWQgdmFsaWRhdGlvbi5cbiAqXG4gKiBAcmV0dXJucyBUaGUgZGVidWdnZXIuXG4gKi9cbmZ1bmN0aW9uIGdldFBsdWdpbkFwaURlYnVnZ2VyKCk6IFJldHVyblR5cGU8dHlwZW9mIGdldE9ic2lkaWFuTGliRGVidWdnZXI+IHtcbiAgcmV0dXJuIGdldE9ic2lkaWFuTGliRGVidWdnZXIoUExVR0lOX0FQSV9ERUJVR0dFUl9OQU1FU1BBQ0UpO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgc2hhcmVkIHJlZ2lzdHJ5LCB0b2xlcmF0aW5nIGEgYmFnIHdyaXR0ZW4gYnkgYSBESUZGRVJFTlQgYG9ic2lkaWFuLWRldi11dGlsc2AgY29weSB0aGF0IG1heVxuICogcHJlZGF0ZSBvbmUgb2YgaXRzIGZpZWxkcy5cbiAqXG4gKiBAcmV0dXJucyBUaGUgcmVnaXN0cnkuXG4gKi9cbmZ1bmN0aW9uIGdldFJlZ2lzdHJ5KCk6IFBsdWdpbkFwaVJlZ2lzdHJ5IHtcbiAgY29uc3Qgd3JhcHBlciA9IGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZTxQYXJ0aWFsPFBsdWdpbkFwaVJlZ2lzdHJ5Pj4oUExVR0lOX0FQSV9SRUdJU1RSWV9TVEFURV9LRVksIHt9KTtcbiAgY29uc3QgcmVnaXN0cnkgPSB3cmFwcGVyLnZhbHVlO1xuICByZWdpc3RyeS5yZWNvcmRzID8/PSB7fTtcbiAgcmVnaXN0cnkuc3Vic2NyaWJlcnMgPz89IFtdO1xuICByZXR1cm4gY2FzdFRvPFBsdWdpbkFwaVJlZ2lzdHJ5PihyZWdpc3RyeSk7XG59XG5cbi8qKlxuICogTm90aWZpZXMgZXZlcnkgc3Vic2NyaWJlciwgb3ZlciBhIFNOQVBTSE9UIG9mIHRoZSBsaXN0IFx1MjAxNCBhIGNhbGxiYWNrIGlzIGZyZWUgdG8gdW5zdWJzY3JpYmUgKG9yIHN1YnNjcmliZSlcbiAqIHdoaWxlIHRoZSBzd2VlcCBpcyBydW5uaW5nLlxuICovXG5mdW5jdGlvbiBub3RpZnlTdWJzY3JpYmVycygpOiB2b2lkIHtcbiAgZm9yIChjb25zdCBzdWJzY3JpYmVyIG9mIHNuYXBzaG90KGdldFJlZ2lzdHJ5KCkuc3Vic2NyaWJlcnMpKSB7XG4gICAgc3Vic2NyaWJlcigpO1xuICB9XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGljaCBvZiB0aGUgZml2ZSBmYWlsdXJlcyBhcHBsaWVzLCBwcm9iaW5nIHRoZSBjYXVzZXMgZnJvbSB0aGUgb3V0ZXJtb3N0IGlud2FyZHMgc28gdGhlIG1vc3RcbiAqIGFjdGlvbmFibGUgb25lIHdpbnMuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB3YXRjaCBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgVGhlIHJlYXNvbi5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVVuYXZhaWxhYmlsaXR5UmVhc29uKHBhcmFtczogV2F0Y2hQbHVnaW5BcGlQYXJhbXMpOiBQbHVnaW5BcGlVbmF2YWlsYWJpbGl0eVJlYXNvbiB7XG4gIGlmICghT2JqZWN0Lmhhc093bihwYXJhbXMuYXBwLnBsdWdpbnMubWFuaWZlc3RzLCBwYXJhbXMucGx1Z2luSWQpKSB7XG4gICAgcmV0dXJuIFBsdWdpbkFwaVVuYXZhaWxhYmlsaXR5UmVhc29uLk5vdEluc3RhbGxlZDtcbiAgfVxuXG4gIGlmICghcGFyYW1zLmFwcC5wbHVnaW5zLmVuYWJsZWRQbHVnaW5zLmhhcyhwYXJhbXMucGx1Z2luSWQpKSB7XG4gICAgcmV0dXJuIFBsdWdpbkFwaVVuYXZhaWxhYmlsaXR5UmVhc29uLk5vdEVuYWJsZWQ7XG4gIH1cblxuICBjb25zdCByZWNvcmRzID0gZ2V0TGl2ZVJlY29yZHMocGFyYW1zLnBsdWdpbklkKTtcbiAgaWYgKHJlY29yZHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFBsdWdpbkFwaVVuYXZhaWxhYmlsaXR5UmVhc29uLk5vdFB1Ymxpc2hlZDtcbiAgfVxuXG4gIHJldHVybiByZWNvcmRzLmV2ZXJ5KChyZWNvcmQpID0+ICFzYXRpc2ZpZXNWZXJzaW9uKHJlY29yZC5hcGlWZXJzaW9uLCBwYXJhbXMuYXBpVmVyc2lvblJhbmdlKSkgPyBQbHVnaW5BcGlVbmF2YWlsYWJpbGl0eVJlYXNvbi5WZXJzaW9uTWlzbWF0Y2ggOiBQbHVnaW5BcGlVbmF2YWlsYWJpbGl0eVJlYXNvbi5TaGFwZU1pc21hdGNoO1xufVxuXG4vKipcbiAqIE1hcmtzIGEgcmVjb3JkIHJldm9rZWQgYW5kIGRyb3BzIGl0IGZyb20gdGhlIHJlZ2lzdHJ5LCB0aGVuIHRlbGxzIGV2ZXJ5IHdhdGNoZXIgdG8gcmVjb21wdXRlLlxuICpcbiAqIFRoZSByZWNvcmQgb2JqZWN0IGl0c2VsZiBpcyBkZWxpYmVyYXRlbHkga2VwdCBhbGl2ZSBhbmQgZmxhZ2dlZCByYXRoZXIgdGhhbiBkaXNjYXJkZWQsIGJlY2F1c2UgaGFuZGxlc1xuICogYWxyZWFkeSBoYW5kZWQgb3V0IGNsb3NlIG92ZXIgaXQgXHUyMDE0IHRoYXQgZmxhZyBpcyB3aGF0IHR1cm5zIGEgbGF0ZXIgcHJvcGVydHkgcmVhZCBpbnRvIGFcbiAqIHtAbGluayBQbHVnaW5BcGlSZXZva2VkRXJyb3J9LlxuICpcbiAqIEBwYXJhbSByZWNvcmQgLSBUaGUgcmVjb3JkIHRvIHJldm9rZS5cbiAqL1xuZnVuY3Rpb24gcmV2b2tlUmVjb3JkKHJlY29yZDogUHVibGlzaGVkUGx1Z2luQXBpUmVjb3JkKTogdm9pZCB7XG4gIHJlY29yZC5pc1Jldm9rZWQgPSB0cnVlO1xuICBjb25zdCByZWdpc3RyeSA9IGdldFJlZ2lzdHJ5KCk7XG4gIGNvbnN0IHJlY29yZHMgPSByZWdpc3RyeS5yZWNvcmRzW3JlY29yZC5wbHVnaW5JZF07XG4gIGlmIChyZWNvcmRzKSB7XG4gICAgcmVnaXN0cnkucmVjb3Jkc1tyZWNvcmQucGx1Z2luSWRdID0gcmVjb3Jkcy5maWx0ZXIoKGNhbmRpZGF0ZSkgPT4gY2FuZGlkYXRlICE9PSByZWNvcmQpO1xuICB9XG4gIG5vdGlmeVN1YnNjcmliZXJzKCk7XG59XG5cbi8qKlxuICogUGlja3MgdGhlIGhpZ2hlc3QgcHVibGlzaGVkIHJlY29yZCB0aGF0IGlzIGxpdmUsIHNhdGlzZmllcyB0aGUgcmVxdWVzdGVkIHZlcnNpb24gcmFuZ2UsIGFuZCBtYXRjaGVzIHRoZVxuICogZWZmZWN0aXZlIGNvbnRyYWN0J3Mgc2hhcGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB3YXRjaCBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgVGhlIHdpbm5pbmcgcmVjb3JkLCBvciBgbnVsbGAgd2hlbiBub25lIHF1YWxpZmllcy5cbiAqL1xuZnVuY3Rpb24gc2VsZWN0UmVjb3JkKHBhcmFtczogV2F0Y2hQbHVnaW5BcGlQYXJhbXMpOiBudWxsIHwgUHVibGlzaGVkUGx1Z2luQXBpUmVjb3JkIHtcbiAgY29uc3QgY2FuZGlkYXRlcyA9IGdldExpdmVSZWNvcmRzKHBhcmFtcy5wbHVnaW5JZClcbiAgICAuZmlsdGVyKChyZWNvcmQpID0+IHNhdGlzZmllc1ZlcnNpb24ocmVjb3JkLmFwaVZlcnNpb24sIHBhcmFtcy5hcGlWZXJzaW9uUmFuZ2UpKVxuICAgIC5maWx0ZXIoKHJlY29yZCkgPT4gY2hlY2tNYXRjaGVzQ29udHJhY3RTaGFwZShyZWNvcmQsIHBhcmFtcy5jb250cmFjdCkpXG4gICAgLnNvcnQoKGEsIGIpID0+IGNvbXBhcmVWZXJzaW9ucyhiLmFwaVZlcnNpb24sIGEuYXBpVmVyc2lvbikpO1xuXG4gIHJldHVybiBjYW5kaWRhdGVzWzBdID8/IG51bGw7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgZmlyZWQgd2hlbmV2ZXIgdGhlIHJlZ2lzdHJ5IGNoYW5nZXMuXG4gKlxuICogQHBhcmFtIHN1YnNjcmliZXIgLSBUaGUgY2FsbGJhY2suXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgdW5yZWdpc3RlcnMgdGhlIGNhbGxiYWNrLlxuICovXG5mdW5jdGlvbiBzdWJzY3JpYmUoc3Vic2NyaWJlcjogKCkgPT4gdm9pZCk6ICgpID0+IHZvaWQge1xuICBjb25zdCByZWdpc3RyeSA9IGdldFJlZ2lzdHJ5KCk7XG4gIHJlZ2lzdHJ5LnN1YnNjcmliZXJzLnB1c2goc3Vic2NyaWJlcik7XG4gIHJldHVybiAoKTogdm9pZCA9PiB7XG4gICAgY29uc3QgaW5kZXggPSByZWdpc3RyeS5zdWJzY3JpYmVycy5pbmRleE9mKHN1YnNjcmliZXIpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHJlZ2lzdHJ5LnN1YnNjcmliZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIFJ1bnMgb25lIFN0YW5kYXJkIFNjaGVtYSBvdmVyIG9uZSBwYXlsb2FkLlxuICpcbiAqIEEgc2NoZW1hIHRoYXQgYW5zd2VycyBTWU5DSFJPTk9VU0xZIHRocm93cyBhdCB0aGUgY2FsbCBzaXRlLCB3aGljaCBpcyB0aGUgd2hvbGUgcG9pbnQgXHUyMDE0IGEgdmVyc2lvbiBza2V3IHJlYWRzXG4gKiBhcyBhIGxlZ2libGUgZXJyb3Igd2hlcmUgdGhlIGNhbGwgd2FzIG1hZGUuIEEgc2NoZW1hIHRoYXQgYW5zd2VycyB3aXRoIGEge0BsaW5rIFByb21pc2V9IGNhbm5vdCBkbyB0aGF0OiB0aGVcbiAqIHN5bmNocm9ub3VzIGNhbGwgaXQgd2FzIGd1YXJkaW5nIGhhcyBhbHJlYWR5IHJldHVybmVkIGJ5IHRoZSB0aW1lIHRoZSBhbnN3ZXIgYXJyaXZlcywgc28gdGhlcmUgaXMgbm90aGluZyB0b1xuICogdGhyb3cgaW50byBhbmQgdGhlIGZhaWx1cmUgaXMgcmVwb3J0ZWQgdGhyb3VnaCB0aGUgbGlicmFyeSBkZWJ1Z2dlciBpbnN0ZWFkLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIHZhbGlkYXRpb24uXG4gKiBAdGhyb3dzIEEge0BsaW5rIFBsdWdpbkFwaVZhbGlkYXRpb25FcnJvcn0gaWYgYSBzeW5jaHJvbm91cyBzY2hlbWEgcmVwb3J0cyBpc3N1ZXMuXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlUGF5bG9hZChwYXJhbXM6IFZhbGlkYXRlUGF5bG9hZFBhcmFtcyk6IHZvaWQge1xuICBjb25zdCByZXN1bHQgPSBwYXJhbXMuc2NoZW1hWyd+c3RhbmRhcmQnXS52YWxpZGF0ZShwYXJhbXMudmFsdWUpO1xuXG4gIGlmIChjaGVja0lzUHJvbWlzZUxpa2U8U3RhbmRhcmRTY2hlbWFWMS5SZXN1bHQ8dW5rbm93bj4+KHJlc3VsdCkpIHtcbiAgICBpbnZva2VBc3luY1NhZmVseShhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBhc3luY1Jlc3VsdCA9IGF3YWl0IHJlc3VsdDtcbiAgICAgIGlmIChhc3luY1Jlc3VsdC5pc3N1ZXMpIHtcbiAgICAgICAgZ2V0UGx1Z2luQXBpRGVidWdnZXIoKShcbiAgICAgICAgICAnQXN5bmNocm9ub3VzIHZhbGlkYXRpb24gb2YgdGhlICVzIG9mIFwiJXNcIiBBUEkgbWV0aG9kIFwiJXNcIiBmYWlsZWQ6ICVzJyxcbiAgICAgICAgICBwYXJhbXMucGF5bG9hZEtpbmQsXG4gICAgICAgICAgcGFyYW1zLnBsdWdpbklkLFxuICAgICAgICAgIHBhcmFtcy5tZXRob2ROYW1lLFxuICAgICAgICAgIGZvcm1hdElzc3Vlcyhhc3luY1Jlc3VsdC5pc3N1ZXMpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHJlc3VsdC5pc3N1ZXMpIHtcbiAgICB0aHJvdyBuZXcgUGx1Z2luQXBpVmFsaWRhdGlvbkVycm9yKHtcbiAgICAgIGlzc3VlczogcmVzdWx0Lmlzc3VlcyxcbiAgICAgIG1ldGhvZE5hbWU6IHBhcmFtcy5tZXRob2ROYW1lLFxuICAgICAgcGF5bG9hZEtpbmQ6IHBhcmFtcy5wYXlsb2FkS2luZCxcbiAgICAgIHBsdWdpbklkOiBwYXJhbXMucGx1Z2luSWRcbiAgICB9KTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXlFQSxtQkFBeUI7QUFDekIsbUJBR087QUFDUCwwQkFBaUM7QUFDakMsMEJBQXVCO0FBQ3ZCLDhCQUdPO0FBRVAsbUJBQXVDO0FBQ3ZDLHNDQUF5QztBQUV6QyxNQUFNLGdDQUFn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LFFBQU0sV0FBVyxZQUFZO0FBQzdCLFdBQVMsWUFBWSxLQUFLLFVBQVU7QUFDcEMsU0FBTyxNQUFZO0FBQ2pCLFVBQU0sUUFBUSxTQUFTLFlBQVksUUFBUSxVQUFVO0FBQ3JELFFBQUksVUFBVSxJQUFJO0FBQ2hCLGVBQVMsWUFBWSxPQUFPLE9BQU8sQ0FBQztBQUFBLElBQ3RDO0FBQUEsRUFDRjtBQUNGO0FBYUEsU0FBUyxnQkFBZ0IsUUFBcUM7QUFDNUQsUUFBTSxTQUFTLE9BQU8sT0FBTyxXQUFXLEVBQUUsU0FBUyxPQUFPLEtBQUs7QUFFL0QsTUFBSSxtQkFBcUQsTUFBTSxHQUFHO0FBQ2hFLHdDQUFrQixZQUFZO0FBQzVCLFlBQU0sY0FBYyxNQUFNO0FBQzFCLFVBQUksWUFBWSxRQUFRO0FBQ3RCLDZCQUFxQjtBQUFBLFVBQ25CO0FBQUEsVUFDQSxPQUFPO0FBQUEsVUFDUCxPQUFPO0FBQUEsVUFDUCxPQUFPO0FBQUEsVUFDUCxhQUFhLFlBQVksTUFBTTtBQUFBLFFBQ2pDO0FBQUEsTUFDRjtBQUFBLElBQ0YsQ0FBQztBQUNEO0FBQUEsRUFDRjtBQUVBLE1BQUksT0FBTyxRQUFRO0FBQ2pCLFVBQU0sSUFBSSx5QkFBeUI7QUFBQSxNQUNqQyxRQUFRLE9BQU87QUFBQSxNQUNmLFlBQVksT0FBTztBQUFBLE1BQ25CLGFBQWEsT0FBTztBQUFBLE1BQ3BCLFVBQVUsT0FBTztBQUFBLElBQ25CLENBQUM7QUFBQSxFQUNIO0FBQ0Y7IiwKICAibmFtZXMiOiBbIlBsdWdpbkFwaVBheWxvYWRLaW5kIiwgIlBsdWdpbkFwaVVuYXZhaWxhYmlsaXR5UmVhc29uIiwgInJlY29yZCIsICJzYXRpc2ZpZXNWZXJzaW9uIl0KfQo=
|