@mnaoumov/obsidian-lib 5.2.1 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/dist/lib/cjs/@types/obsidian-integration-testing.d.cts +1 -1
  2. package/dist/lib/cjs/__merged.cjs +8 -24
  3. package/dist/lib/cjs/__merged.d.cts +4 -4
  4. package/dist/lib/cjs/async-with-notice.cjs +7 -7
  5. package/dist/lib/cjs/backlink-index.cjs +3 -3
  6. package/dist/lib/cjs/callout.cjs +2 -2
  7. package/dist/lib/cjs/case-insensitive-file-index.cjs +5 -5
  8. package/dist/lib/cjs/community-plugins.cjs +3 -3
  9. package/dist/lib/cjs/components/async-error-handler-component.cjs +2 -2
  10. package/dist/lib/cjs/components/monkey-around-component.cjs +3 -3
  11. package/dist/lib/cjs/components/plugin-context-component.cjs +1 -3
  12. package/dist/lib/cjs/components/plugin-context-component.d.cts +1 -2
  13. package/dist/lib/cjs/components/plugin-gate-component.cjs +15 -15
  14. package/dist/lib/cjs/components/plugin-notice-component.cjs +5 -5
  15. package/dist/lib/cjs/components/plugin-suggestion-component.cjs +5 -5
  16. package/dist/lib/cjs/components/release-notes-component.cjs +2 -2
  17. package/dist/lib/cjs/components/rename-delete-handler-component.cjs +10 -10
  18. package/dist/lib/cjs/css-class.cjs +1 -2
  19. package/dist/lib/cjs/css-class.d.cts +3 -11
  20. package/dist/lib/cjs/dataview.cjs +4 -4
  21. package/dist/lib/cjs/debug.cjs +2 -22
  22. package/dist/lib/cjs/debug.d.cts +0 -5
  23. package/dist/lib/cjs/frontmatter.cjs +3 -3
  24. package/dist/lib/cjs/frontmatter.d.cts +1 -1
  25. package/dist/lib/cjs/generated-during-build.cjs +2 -2
  26. package/dist/lib/cjs/html-element.cjs +1 -1
  27. package/dist/lib/cjs/html-element.d.cts +1 -1
  28. package/dist/lib/cjs/i18n/i18n.cjs +1 -1
  29. package/dist/lib/cjs/i18n/i18n.d.cts +1 -1
  30. package/dist/lib/cjs/i18n/locales/en.cjs +2 -2
  31. package/dist/lib/cjs/i18n/locales/en.d.cts +1 -1
  32. package/dist/lib/cjs/i18n/locales/translations-map.d.cts +1 -1
  33. package/dist/lib/cjs/index.cjs +4 -4
  34. package/dist/lib/cjs/index.d.cts +1 -1
  35. package/dist/lib/cjs/library-styles.cjs +7 -14
  36. package/dist/lib/cjs/library-styles.d.cts +9 -23
  37. package/dist/lib/cjs/library.cjs +1 -4
  38. package/dist/lib/cjs/library.d.cts +3 -11
  39. package/dist/lib/cjs/link.cjs +3 -3
  40. package/dist/lib/cjs/markdown.cjs +3 -3
  41. package/dist/lib/cjs/metadata-cache.cjs +4 -4
  42. package/dist/lib/cjs/modals/alert.cjs +2 -2
  43. package/dist/lib/cjs/modals/confirm.cjs +3 -3
  44. package/dist/lib/cjs/modals/prompt.cjs +3 -3
  45. package/dist/lib/cjs/obsidian-lib-state.cjs +148 -0
  46. package/dist/lib/cjs/obsidian-lib-state.d.cts +30 -0
  47. package/dist/lib/cjs/path-settings.cjs +6 -6
  48. package/dist/lib/cjs/plugin/index.cjs +1 -4
  49. package/dist/lib/cjs/plugin/index.d.cts +0 -1
  50. package/dist/lib/cjs/plugin/plugin-api.cjs +3 -3
  51. package/dist/lib/cjs/plugin/plugin-api.d.cts +5 -41
  52. package/dist/lib/cjs/plugin/plugin-context.cjs +1 -6
  53. package/dist/lib/cjs/plugin/plugin-install-state.cjs +5 -5
  54. package/dist/lib/cjs/plugin/plugin-lifecycle-events.cjs +1 -40
  55. package/dist/lib/cjs/plugin/plugin-lifecycle-events.d.cts +8 -62
  56. package/dist/lib/cjs/plugin/plugin.cjs +2 -2
  57. package/dist/lib/cjs/plugin/plugin.d.cts +1 -1
  58. package/dist/lib/cjs/popovers/popover.cjs +3 -3
  59. package/dist/lib/cjs/queue.cjs +4 -4
  60. package/dist/lib/cjs/resource-lock.cjs +9 -9
  61. package/dist/lib/cjs/vault-delete.cjs +2 -2
  62. package/dist/lib/cjs/vault-transaction.cjs +17 -2
  63. package/dist/lib/cjs/vault-transaction.d.cts +2 -1
  64. package/dist/lib/cjs/vault.cjs +2 -2
  65. package/dist/lib/esm/@types/obsidian-integration-testing.d.mts +1 -1
  66. package/dist/lib/esm/__merged.d.mts +4 -4
  67. package/dist/lib/esm/__merged.mjs +8 -24
  68. package/dist/lib/esm/async-with-notice.mjs +7 -7
  69. package/dist/lib/esm/backlink-index.mjs +3 -3
  70. package/dist/lib/esm/callout.mjs +2 -2
  71. package/dist/lib/esm/case-insensitive-file-index.mjs +5 -5
  72. package/dist/lib/esm/community-plugins.mjs +3 -3
  73. package/dist/lib/esm/components/async-error-handler-component.mjs +2 -2
  74. package/dist/lib/esm/components/monkey-around-component.mjs +3 -3
  75. package/dist/lib/esm/components/plugin-context-component.d.mts +1 -2
  76. package/dist/lib/esm/components/plugin-context-component.mjs +1 -3
  77. package/dist/lib/esm/components/plugin-gate-component.mjs +15 -15
  78. package/dist/lib/esm/components/plugin-notice-component.mjs +5 -5
  79. package/dist/lib/esm/components/plugin-suggestion-component.mjs +5 -5
  80. package/dist/lib/esm/components/release-notes-component.mjs +2 -2
  81. package/dist/lib/esm/components/rename-delete-handler-component.mjs +10 -10
  82. package/dist/lib/esm/css-class.d.mts +3 -11
  83. package/dist/lib/esm/css-class.mjs +1 -2
  84. package/dist/lib/esm/dataview.mjs +4 -4
  85. package/dist/lib/esm/debug.d.mts +0 -5
  86. package/dist/lib/esm/debug.mjs +3 -26
  87. package/dist/lib/esm/frontmatter.d.mts +1 -1
  88. package/dist/lib/esm/frontmatter.mjs +3 -3
  89. package/dist/lib/esm/generated-during-build.mjs +2 -2
  90. package/dist/lib/esm/html-element.d.mts +1 -1
  91. package/dist/lib/esm/html-element.mjs +1 -1
  92. package/dist/lib/esm/i18n/i18n.d.mts +1 -1
  93. package/dist/lib/esm/i18n/i18n.mjs +1 -1
  94. package/dist/lib/esm/i18n/locales/en.d.mts +1 -1
  95. package/dist/lib/esm/i18n/locales/en.mjs +2 -2
  96. package/dist/lib/esm/i18n/locales/translations-map.d.mts +1 -1
  97. package/dist/lib/esm/index.d.mts +1 -1
  98. package/dist/lib/esm/index.mjs +3 -3
  99. package/dist/lib/esm/library-styles.d.mts +9 -23
  100. package/dist/lib/esm/library-styles.mjs +7 -12
  101. package/dist/lib/esm/library.d.mts +3 -11
  102. package/dist/lib/esm/library.mjs +1 -3
  103. package/dist/lib/esm/link.mjs +3 -3
  104. package/dist/lib/esm/markdown.mjs +3 -3
  105. package/dist/lib/esm/metadata-cache.mjs +4 -4
  106. package/dist/lib/esm/modals/alert.mjs +2 -2
  107. package/dist/lib/esm/modals/confirm.mjs +3 -3
  108. package/dist/lib/esm/modals/prompt.mjs +3 -3
  109. package/dist/lib/esm/obsidian-lib-state.d.mts +30 -0
  110. package/dist/lib/esm/obsidian-lib-state.mjs +59 -0
  111. package/dist/lib/esm/path-settings.mjs +6 -6
  112. package/dist/lib/esm/plugin/index.d.mts +0 -1
  113. package/dist/lib/esm/plugin/index.mjs +1 -3
  114. package/dist/lib/esm/plugin/plugin-api.d.mts +5 -41
  115. package/dist/lib/esm/plugin/plugin-api.mjs +3 -3
  116. package/dist/lib/esm/plugin/plugin-context.mjs +1 -7
  117. package/dist/lib/esm/plugin/plugin-install-state.mjs +5 -5
  118. package/dist/lib/esm/plugin/plugin-lifecycle-events.d.mts +8 -62
  119. package/dist/lib/esm/plugin/plugin-lifecycle-events.mjs +1 -37
  120. package/dist/lib/esm/plugin/plugin.d.mts +1 -1
  121. package/dist/lib/esm/plugin/plugin.mjs +2 -2
  122. package/dist/lib/esm/popovers/popover.mjs +3 -3
  123. package/dist/lib/esm/queue.mjs +4 -4
  124. package/dist/lib/esm/resource-lock.mjs +9 -9
  125. package/dist/lib/esm/vault-delete.mjs +2 -2
  126. package/dist/lib/esm/vault-transaction.d.mts +2 -1
  127. package/dist/lib/esm/vault-transaction.mjs +17 -2
  128. package/dist/lib/esm/vault.mjs +2 -2
  129. package/dist/styles.css +169 -169
  130. package/package.json +1 -1
  131. package/dist/lib/cjs/obsidian-dev-utils-state.cjs +0 -177
  132. package/dist/lib/cjs/obsidian-dev-utils-state.d.cts +0 -50
  133. package/dist/lib/cjs/plugin/plugin-api-schema.cjs +0 -127
  134. package/dist/lib/cjs/plugin/plugin-api-schema.d.cts +0 -37
  135. package/dist/lib/esm/obsidian-dev-utils-state.d.mts +0 -50
  136. package/dist/lib/esm/obsidian-dev-utils-state.mjs +0 -86
  137. package/dist/lib/esm/plugin/plugin-api-schema.d.mts +0 -37
  138. package/dist/lib/esm/plugin/plugin-api-schema.mjs +0 -41
  139. package/plugin/plugin-api-schema/package.json +0 -6
@@ -154,7 +154,7 @@ function renderCallout(params) {
154
154
  (0, import_queue.addToQueue)((0, import_object_utils.normalizeOptionalProperties)({
155
155
  abortSignal: params.abortSignal,
156
156
  operationFunction: loadContent,
157
- operationName: (0, import_i18n.t)(($) => $.obsidianDevUtils.callout.loadContent)
157
+ operationName: (0, import_i18n.t)(($) => $.obsidianLib.callout.loadContent)
158
158
  }));
159
159
  }
160
160
  });
@@ -199,4 +199,4 @@ function getModifier(mode) {
199
199
  renderCallout,
200
200
  wrapForCallout
201
201
  });
202
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jYWxsb3V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgcmVuZGVyaW5nIGNhbGxvdXRzIGluIGBEYXRhdmlld2AuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBNYXliZVJldHVybiB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlJztcbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi92YWx1ZS1wcm92aWRlcic7XG5cbmltcG9ydCB7IG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllcyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9vYmplY3QtdXRpbHMnO1xuaW1wb3J0IHtcbiAgYXNzZXJ0TmV2ZXIsXG4gIGVuc3VyZU5vbk51bGxhYmxlXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdmFsdWUtcHJvdmlkZXInO1xuXG5pbXBvcnQgdHlwZSB7IERhdGF2aWV3SW5saW5lQXBpIH0gZnJvbSAnLi9kYXRhdmlldy50cyc7XG5pbXBvcnQgdHlwZSB7IEFkZFRvUXVldWVQYXJhbXMgfSBmcm9tICcuL3F1ZXVlLnRzJztcblxuaW1wb3J0IHsgZ2V0UmVuZGVyZWRDb250YWluZXIgfSBmcm9tICcuL2RhdGF2aWV3LnRzJztcbmltcG9ydCB7IHQgfSBmcm9tICcuL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQgeyBhZGRUb1F1ZXVlIH0gZnJvbSAnLi9xdWV1ZS50cyc7XG5cbi8qKlxuICogRW51bSByZXByZXNlbnRpbmcgdGhlIG1vZGUgb2YgYSBjYWxsb3V0LlxuICovXG5leHBvcnQgZW51bSBDYWxsb3V0TW9kZSB7XG4gIC8qKlxuICBEZWZhdWx0IG1vZGUsIHdpdGggbm8gc3BlY2lhbCBiZWhhdmlvci5cbiAgICovXG4gIERlZmF1bHQsXG5cbiAgLyoqXG4gIEZvbGRhYmxlIG1vZGUgd2l0aCB0aGUgY2FsbG91dCBjb2xsYXBzZWQuXG4gICAqL1xuICBGb2xkYWJsZUNvbGxhcHNlZCxcblxuICAvKipcbiAgRm9sZGFibGUgbW9kZSB3aXRoIHRoZSBjYWxsb3V0IGV4cGFuZGVkLlxuICAgKi9cbiAgRm9sZGFibGVFeHBhbmRlZFxufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayByZW5kZXJDYWxsb3V0fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJDYWxsb3V0UGFyYW1zIHtcbiAgLyoqXG4gICAqIEFuIGFib3J0IHNpZ25hbC5cbiAgICovXG4gIHJlYWRvbmx5IGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWw7XG5cbiAgLyoqXG4gICAqIEFuIG9wdGlvbmFsIHByb3ZpZGVyIGZvciB0aGUgY29udGVudCwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIHN0cmluZyBvciBhIE5vZGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAnJ2BcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnRQcm92aWRlcj86IFZhbHVlUHJvdmlkZXI8TWF5YmVSZXR1cm48Tm9kZSB8IHN0cmluZz4+O1xuXG4gIC8qKlxuICAgKiBBIHtAbGluayBEYXRhdmlld0lubGluZUFwaX0gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBkdjogRGF0YXZpZXdJbmxpbmVBcGk7XG5cbiAgLyoqXG4gICAqIEEgaGVhZGVyIHRleHQgb2YgdGhlIGNhbGxvdXQsIGRlZmF1bHQgaXMgYW4gZW1wdHkgc3RyaW5nLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJydgXG4gICAqL1xuICByZWFkb25seSBoZWFkZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgY2FsbG91dCBtb2RlLCBkZWZhdWx0IGlzIGBDYWxsb3V0TW9kZS5Gb2xkYWJsZUNvbGxhcHNlZGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtAbGluayBDYWxsb3V0TW9kZS5Gb2xkYWJsZUNvbGxhcHNlZH1cbiAgICovXG4gIHJlYWRvbmx5IG1vZGU/OiBDYWxsb3V0TW9kZTtcblxuICAvKipcbiAgICogQSB0eXBlIG9mIHRoZSBjYWxsb3V0LCBkZWZhdWx0IGlzIGBcIk5PVEVcImAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAnTk9URSdgXG4gICAqL1xuICByZWFkb25seSB0eXBlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYSBjYWxsb3V0IGJsb2NrIGluIGBEYXRhdmlld2AuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZW5kZXJpbmcgdGhlIGNhbGxvdXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJDYWxsb3V0KHBhcmFtczogUmVuZGVyQ2FsbG91dFBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgY29udGVudFByb3ZpZGVyID0gJycsXG4gICAgZHYsXG4gICAgaGVhZGVyID0gJycsXG4gICAgbW9kZSA9IENhbGxvdXRNb2RlLkZvbGRhYmxlQ29sbGFwc2VkLFxuICAgIHR5cGUgPSAnTk9URSdcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgbW9kaWZpZXIgPSBnZXRNb2RpZmllcihtb2RlKTtcbiAgY29uc3QgY2FsbG91dCA9IGR2LnBhcmFncmFwaChgPiBbISR7dHlwZX1dJHttb2RpZmllcn0gJHtoZWFkZXJ9XFxuPlxcbj4gPGRpdiBjbGFzcz1cImNvbnRlbnRcIj48L2Rpdj5gKTtcbiAgY29uc3QgY29udGVudERpdiA9IGVuc3VyZU5vbk51bGxhYmxlKGNhbGxvdXQucXVlcnlTZWxlY3RvcjxIVE1MRGl2RWxlbWVudD4oJy5jb250ZW50JyksICdDb250ZW50IGRpdiBub3QgZm91bmQnKTtcbiAgZHYucGFyYWdyYXBoKCdMb2FkaW5nLi4uIOKPsycsIHsgY29udGFpbmVyOiBjb250ZW50RGl2IH0pO1xuXG4gIGNvbnN0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzOiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5W10pID0+IHtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgIGlmICghZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIG9ic2VydmVyLnVub2JzZXJ2ZShlbnRyeS50YXJnZXQpO1xuICAgICAgYWRkVG9RdWV1ZShub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8QWRkVG9RdWV1ZVBhcmFtcz4oe1xuICAgICAgICBhYm9ydFNpZ25hbDogcGFyYW1zLmFib3J0U2lnbmFsLFxuICAgICAgICBvcGVyYXRpb25GdW5jdGlvbjogbG9hZENvbnRlbnQsXG4gICAgICAgIG9wZXJhdGlvbk5hbWU6IHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5jYWxsb3V0LmxvYWRDb250ZW50KVxuICAgICAgfSkpO1xuICAgIH1cbiAgfSk7XG4gIG9ic2VydmVyLm9ic2VydmUoY29udGVudERpdik7XG5cbiAgYXN5bmMgZnVuY3Rpb24gbG9hZENvbnRlbnQoYWJvcnRTaWduYWw6IEFib3J0U2lnbmFsKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICBsZXQgY29udGVudDogTWF5YmVSZXR1cm48Tm9kZSB8IHN0cmluZyB8IHVuZGVmaW5lZD47XG5cbiAgICBjb25zdCBwYXJhZ3JhcGggPSBhd2FpdCBnZXRSZW5kZXJlZENvbnRhaW5lcihkdiwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29udGVudCA9IGF3YWl0IHJlc29sdmVWYWx1ZShjb250ZW50UHJvdmlkZXIsIGFib3J0U2lnbmFsKTtcbiAgICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgfSk7XG4gICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcblxuICAgIGNvbnRlbnQgPz89IHBhcmFncmFwaDtcblxuICAgIGNvbnRlbnREaXYuZW1wdHkoKTtcbiAgICBkdi5wYXJhZ3JhcGgoY29udGVudCwgeyBjb250YWluZXI6IGNvbnRlbnREaXYgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBXcmFwcyB0aGUgcHJvdmlkZWQgY29udGVudCBpbiBibG9ja3F1b3RlIHN5bnRheCBmb3IgYSBjYWxsb3V0LlxuICpcbiAqIEBwYXJhbSBjb250ZW50IC0gVGhlIGNvbnRlbnQgdG8gd3JhcC5cbiAqIEByZXR1cm5zIFRoZSBjb250ZW50IHdyYXBwZWQgaW4gYmxvY2txdW90ZSBzeW50YXguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3cmFwRm9yQ2FsbG91dChjb250ZW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICBjb25zdCBwcmVmaXhlZExpbmVzID0gbGluZXMubWFwKChsaW5lKSA9PiBgPiAke2xpbmV9YCk7XG4gIHJldHVybiBwcmVmaXhlZExpbmVzLmpvaW4oJ1xcbicpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIG1vZGlmaWVyIHN0cmluZyBiYXNlZCBvbiB0aGUgY2FsbG91dCBtb2RlLlxuICpcbiAqIEBwYXJhbSBtb2RlIC0gVGhlIG1vZGUgb2YgdGhlIGNhbGxvdXQuXG4gKiBAcmV0dXJucyBUaGUgY29ycmVzcG9uZGluZyBtb2RpZmllciBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGdldE1vZGlmaWVyKG1vZGU6IENhbGxvdXRNb2RlKTogc3RyaW5nIHtcbiAgc3dpdGNoIChtb2RlKSB7XG4gICAgY2FzZSBDYWxsb3V0TW9kZS5EZWZhdWx0OiB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGNhc2UgQ2FsbG91dE1vZGUuRm9sZGFibGVDb2xsYXBzZWQ6IHtcbiAgICAgIHJldHVybiAnLSc7XG4gICAgfVxuICAgIGNhc2UgQ2FsbG91dE1vZGUuRm9sZGFibGVFeHBhbmRlZDoge1xuICAgICAgcmV0dXJuICcrJztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgYXNzZXJ0TmV2ZXIobW9kZSk7XG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBU0EsMEJBQTRDO0FBQzVDLHlCQUdPO0FBQ1AsNEJBQTZCO0FBSzdCLHNCQUFxQztBQUNyQyxrQkFBa0I7QUFDbEIsbUJBQTJCO0FBS3BCLElBQUssY0FBTCxrQkFBS0EsaUJBQUw7QUFJTCxFQUFBQSwwQkFBQTtBQUtBLEVBQUFBLDBCQUFBO0FBS0EsRUFBQUEsMEJBQUE7QUFkVSxTQUFBQTtBQUFBLEdBQUE7QUFpRUwsU0FBUyxjQUFjLFFBQW1DO0FBQy9ELFFBQU07QUFBQSxJQUNKLGtCQUFrQjtBQUFBLElBQ2xCO0FBQUEsSUFDQSxTQUFTO0FBQUEsSUFDVCxPQUFPO0FBQUEsSUFDUCxPQUFPO0FBQUEsRUFDVCxJQUFJO0FBQ0osUUFBTSxXQUFXLFlBQVksSUFBSTtBQUNqQyxRQUFNLFVBQVUsR0FBRyxVQUFVLE9BQU8sSUFBSSxJQUFJLFFBQVEsSUFBSSxNQUFNO0FBQUE7QUFBQSw4QkFBb0M7QUFDbEcsUUFBTSxpQkFBYSxzQ0FBa0IsUUFBUSxjQUE4QixVQUFVLEdBQUcsdUJBQXVCO0FBQy9HLEtBQUcsVUFBVSxxQkFBZ0IsRUFBRSxXQUFXLFdBQVcsQ0FBQztBQUV0RCxRQUFNLFdBQVcsSUFBSSxxQkFBcUIsQ0FBQyxZQUF5QztBQUNsRixlQUFXLFNBQVMsU0FBUztBQUMzQixVQUFJLENBQUMsTUFBTSxnQkFBZ0I7QUFDekI7QUFBQSxNQUNGO0FBRUEsZUFBUyxVQUFVLE1BQU0sTUFBTTtBQUMvQix1Q0FBVyxpREFBOEM7QUFBQSxRQUN2RCxhQUFhLE9BQU87QUFBQSxRQUNwQixtQkFBbUI7QUFBQSxRQUNuQixtQkFBZSxlQUFFLENBQUMsTUFBTSxFQUFFLGlCQUFpQixRQUFRLFdBQVc7QUFBQSxNQUNoRSxDQUFDLENBQUM7QUFBQSxJQUNKO0FBQUEsRUFDRixDQUFDO0FBQ0QsV0FBUyxRQUFRLFVBQVU7QUFFM0IsaUJBQWUsWUFBWSxhQUF5QztBQUNsRSxnQkFBWSxlQUFlO0FBQzNCLFFBQUk7QUFFSixVQUFNLFlBQVksVUFBTSxzQ0FBcUIsSUFBSSxZQUFZO0FBQzNELGdCQUFVLFVBQU0sb0NBQWEsaUJBQWlCLFdBQVc7QUFDekQsa0JBQVksZUFBZTtBQUFBLElBQzdCLENBQUM7QUFDRCxnQkFBWSxlQUFlO0FBRTNCLGdCQUFZO0FBRVosZUFBVyxNQUFNO0FBQ2pCLE9BQUcsVUFBVSxTQUFTLEVBQUUsV0FBVyxXQUFXLENBQUM7QUFBQSxFQUNqRDtBQUNGO0FBUU8sU0FBUyxlQUFlLFNBQXlCO0FBQ3RELFFBQU0sUUFBUSxRQUFRLE1BQU0sSUFBSTtBQUNoQyxRQUFNLGdCQUFnQixNQUFNLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxFQUFFO0FBQ3JELFNBQU8sY0FBYyxLQUFLLElBQUk7QUFDaEM7QUFRQSxTQUFTLFlBQVksTUFBMkI7QUFDOUMsVUFBUSxNQUFNO0FBQUEsSUFDWixLQUFLLGlCQUFxQjtBQUN4QixhQUFPO0FBQUEsSUFDVDtBQUFBLElBQ0EsS0FBSywyQkFBK0I7QUFDbEMsYUFBTztBQUFBLElBQ1Q7QUFBQSxJQUNBLEtBQUssMEJBQThCO0FBQ2pDLGFBQU87QUFBQSxJQUNUO0FBQUEsSUFDQSxTQUFTO0FBQ1AsMENBQVksSUFBSTtBQUFBLElBQ2xCO0FBQUEsRUFDRjtBQUNGOyIsIm5hbWVzIjpbIkNhbGxvdXRNb2RlIl19
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jYWxsb3V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgcmVuZGVyaW5nIGNhbGxvdXRzIGluIGBEYXRhdmlld2AuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBNYXliZVJldHVybiB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlJztcbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi92YWx1ZS1wcm92aWRlcic7XG5cbmltcG9ydCB7IG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllcyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9vYmplY3QtdXRpbHMnO1xuaW1wb3J0IHtcbiAgYXNzZXJ0TmV2ZXIsXG4gIGVuc3VyZU5vbk51bGxhYmxlXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdmFsdWUtcHJvdmlkZXInO1xuXG5pbXBvcnQgdHlwZSB7IERhdGF2aWV3SW5saW5lQXBpIH0gZnJvbSAnLi9kYXRhdmlldy50cyc7XG5pbXBvcnQgdHlwZSB7IEFkZFRvUXVldWVQYXJhbXMgfSBmcm9tICcuL3F1ZXVlLnRzJztcblxuaW1wb3J0IHsgZ2V0UmVuZGVyZWRDb250YWluZXIgfSBmcm9tICcuL2RhdGF2aWV3LnRzJztcbmltcG9ydCB7IHQgfSBmcm9tICcuL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQgeyBhZGRUb1F1ZXVlIH0gZnJvbSAnLi9xdWV1ZS50cyc7XG5cbi8qKlxuICogRW51bSByZXByZXNlbnRpbmcgdGhlIG1vZGUgb2YgYSBjYWxsb3V0LlxuICovXG5leHBvcnQgZW51bSBDYWxsb3V0TW9kZSB7XG4gIC8qKlxuICBEZWZhdWx0IG1vZGUsIHdpdGggbm8gc3BlY2lhbCBiZWhhdmlvci5cbiAgICovXG4gIERlZmF1bHQsXG5cbiAgLyoqXG4gIEZvbGRhYmxlIG1vZGUgd2l0aCB0aGUgY2FsbG91dCBjb2xsYXBzZWQuXG4gICAqL1xuICBGb2xkYWJsZUNvbGxhcHNlZCxcblxuICAvKipcbiAgRm9sZGFibGUgbW9kZSB3aXRoIHRoZSBjYWxsb3V0IGV4cGFuZGVkLlxuICAgKi9cbiAgRm9sZGFibGVFeHBhbmRlZFxufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayByZW5kZXJDYWxsb3V0fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJDYWxsb3V0UGFyYW1zIHtcbiAgLyoqXG4gICAqIEFuIGFib3J0IHNpZ25hbC5cbiAgICovXG4gIHJlYWRvbmx5IGFib3J0U2lnbmFsPzogQWJvcnRTaWduYWw7XG5cbiAgLyoqXG4gICAqIEFuIG9wdGlvbmFsIHByb3ZpZGVyIGZvciB0aGUgY29udGVudCwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIHN0cmluZyBvciBhIE5vZGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAnJ2BcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRlbnRQcm92aWRlcj86IFZhbHVlUHJvdmlkZXI8TWF5YmVSZXR1cm48Tm9kZSB8IHN0cmluZz4+O1xuXG4gIC8qKlxuICAgKiBBIHtAbGluayBEYXRhdmlld0lubGluZUFwaX0gaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBkdjogRGF0YXZpZXdJbmxpbmVBcGk7XG5cbiAgLyoqXG4gICAqIEEgaGVhZGVyIHRleHQgb2YgdGhlIGNhbGxvdXQsIGRlZmF1bHQgaXMgYW4gZW1wdHkgc3RyaW5nLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgJydgXG4gICAqL1xuICByZWFkb25seSBoZWFkZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgY2FsbG91dCBtb2RlLCBkZWZhdWx0IGlzIGBDYWxsb3V0TW9kZS5Gb2xkYWJsZUNvbGxhcHNlZGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtAbGluayBDYWxsb3V0TW9kZS5Gb2xkYWJsZUNvbGxhcHNlZH1cbiAgICovXG4gIHJlYWRvbmx5IG1vZGU/OiBDYWxsb3V0TW9kZTtcblxuICAvKipcbiAgICogQSB0eXBlIG9mIHRoZSBjYWxsb3V0LCBkZWZhdWx0IGlzIGBcIk5PVEVcImAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAnTk9URSdgXG4gICAqL1xuICByZWFkb25seSB0eXBlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYSBjYWxsb3V0IGJsb2NrIGluIGBEYXRhdmlld2AuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZW5kZXJpbmcgdGhlIGNhbGxvdXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJDYWxsb3V0KHBhcmFtczogUmVuZGVyQ2FsbG91dFBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgY29udGVudFByb3ZpZGVyID0gJycsXG4gICAgZHYsXG4gICAgaGVhZGVyID0gJycsXG4gICAgbW9kZSA9IENhbGxvdXRNb2RlLkZvbGRhYmxlQ29sbGFwc2VkLFxuICAgIHR5cGUgPSAnTk9URSdcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgbW9kaWZpZXIgPSBnZXRNb2RpZmllcihtb2RlKTtcbiAgY29uc3QgY2FsbG91dCA9IGR2LnBhcmFncmFwaChgPiBbISR7dHlwZX1dJHttb2RpZmllcn0gJHtoZWFkZXJ9XFxuPlxcbj4gPGRpdiBjbGFzcz1cImNvbnRlbnRcIj48L2Rpdj5gKTtcbiAgY29uc3QgY29udGVudERpdiA9IGVuc3VyZU5vbk51bGxhYmxlKGNhbGxvdXQucXVlcnlTZWxlY3RvcjxIVE1MRGl2RWxlbWVudD4oJy5jb250ZW50JyksICdDb250ZW50IGRpdiBub3QgZm91bmQnKTtcbiAgZHYucGFyYWdyYXBoKCdMb2FkaW5nLi4uIOKPsycsIHsgY29udGFpbmVyOiBjb250ZW50RGl2IH0pO1xuXG4gIGNvbnN0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzOiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5W10pID0+IHtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgIGlmICghZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIG9ic2VydmVyLnVub2JzZXJ2ZShlbnRyeS50YXJnZXQpO1xuICAgICAgYWRkVG9RdWV1ZShub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8QWRkVG9RdWV1ZVBhcmFtcz4oe1xuICAgICAgICBhYm9ydFNpZ25hbDogcGFyYW1zLmFib3J0U2lnbmFsLFxuICAgICAgICBvcGVyYXRpb25GdW5jdGlvbjogbG9hZENvbnRlbnQsXG4gICAgICAgIG9wZXJhdGlvbk5hbWU6IHQoKCQpID0+ICQub2JzaWRpYW5MaWIuY2FsbG91dC5sb2FkQ29udGVudClcbiAgICAgIH0pKTtcbiAgICB9XG4gIH0pO1xuICBvYnNlcnZlci5vYnNlcnZlKGNvbnRlbnREaXYpO1xuXG4gIGFzeW5jIGZ1bmN0aW9uIGxvYWRDb250ZW50KGFib3J0U2lnbmFsOiBBYm9ydFNpZ25hbCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG4gICAgbGV0IGNvbnRlbnQ6IE1heWJlUmV0dXJuPE5vZGUgfCBzdHJpbmcgfCB1bmRlZmluZWQ+O1xuXG4gICAgY29uc3QgcGFyYWdyYXBoID0gYXdhaXQgZ2V0UmVuZGVyZWRDb250YWluZXIoZHYsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnRlbnQgPSBhd2FpdCByZXNvbHZlVmFsdWUoY29udGVudFByb3ZpZGVyLCBhYm9ydFNpZ25hbCk7XG4gICAgICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgIH0pO1xuICAgIGFib3J0U2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgICBjb250ZW50ID8/PSBwYXJhZ3JhcGg7XG5cbiAgICBjb250ZW50RGl2LmVtcHR5KCk7XG4gICAgZHYucGFyYWdyYXBoKGNvbnRlbnQsIHsgY29udGFpbmVyOiBjb250ZW50RGl2IH0pO1xuICB9XG59XG5cbi8qKlxuICogV3JhcHMgdGhlIHByb3ZpZGVkIGNvbnRlbnQgaW4gYmxvY2txdW90ZSBzeW50YXggZm9yIGEgY2FsbG91dC5cbiAqXG4gKiBAcGFyYW0gY29udGVudCAtIFRoZSBjb250ZW50IHRvIHdyYXAuXG4gKiBAcmV0dXJucyBUaGUgY29udGVudCB3cmFwcGVkIGluIGJsb2NrcXVvdGUgc3ludGF4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gd3JhcEZvckNhbGxvdXQoY29udGVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbGluZXMgPSBjb250ZW50LnNwbGl0KCdcXG4nKTtcbiAgY29uc3QgcHJlZml4ZWRMaW5lcyA9IGxpbmVzLm1hcCgobGluZSkgPT4gYD4gJHtsaW5lfWApO1xuICByZXR1cm4gcHJlZml4ZWRMaW5lcy5qb2luKCdcXG4nKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBtb2RpZmllciBzdHJpbmcgYmFzZWQgb24gdGhlIGNhbGxvdXQgbW9kZS5cbiAqXG4gKiBAcGFyYW0gbW9kZSAtIFRoZSBtb2RlIG9mIHRoZSBjYWxsb3V0LlxuICogQHJldHVybnMgVGhlIGNvcnJlc3BvbmRpbmcgbW9kaWZpZXIgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBnZXRNb2RpZmllcihtb2RlOiBDYWxsb3V0TW9kZSk6IHN0cmluZyB7XG4gIHN3aXRjaCAobW9kZSkge1xuICAgIGNhc2UgQ2FsbG91dE1vZGUuRGVmYXVsdDoge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBjYXNlIENhbGxvdXRNb2RlLkZvbGRhYmxlQ29sbGFwc2VkOiB7XG4gICAgICByZXR1cm4gJy0nO1xuICAgIH1cbiAgICBjYXNlIENhbGxvdXRNb2RlLkZvbGRhYmxlRXhwYW5kZWQ6IHtcbiAgICAgIHJldHVybiAnKyc7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGFzc2VydE5ldmVyKG1vZGUpO1xuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVNBLDBCQUE0QztBQUM1Qyx5QkFHTztBQUNQLDRCQUE2QjtBQUs3QixzQkFBcUM7QUFDckMsa0JBQWtCO0FBQ2xCLG1CQUEyQjtBQUtwQixJQUFLLGNBQUwsa0JBQUtBLGlCQUFMO0FBSUwsRUFBQUEsMEJBQUE7QUFLQSxFQUFBQSwwQkFBQTtBQUtBLEVBQUFBLDBCQUFBO0FBZFUsU0FBQUE7QUFBQSxHQUFBO0FBaUVMLFNBQVMsY0FBYyxRQUFtQztBQUMvRCxRQUFNO0FBQUEsSUFDSixrQkFBa0I7QUFBQSxJQUNsQjtBQUFBLElBQ0EsU0FBUztBQUFBLElBQ1QsT0FBTztBQUFBLElBQ1AsT0FBTztBQUFBLEVBQ1QsSUFBSTtBQUNKLFFBQU0sV0FBVyxZQUFZLElBQUk7QUFDakMsUUFBTSxVQUFVLEdBQUcsVUFBVSxPQUFPLElBQUksSUFBSSxRQUFRLElBQUksTUFBTTtBQUFBO0FBQUEsOEJBQW9DO0FBQ2xHLFFBQU0saUJBQWEsc0NBQWtCLFFBQVEsY0FBOEIsVUFBVSxHQUFHLHVCQUF1QjtBQUMvRyxLQUFHLFVBQVUscUJBQWdCLEVBQUUsV0FBVyxXQUFXLENBQUM7QUFFdEQsUUFBTSxXQUFXLElBQUkscUJBQXFCLENBQUMsWUFBeUM7QUFDbEYsZUFBVyxTQUFTLFNBQVM7QUFDM0IsVUFBSSxDQUFDLE1BQU0sZ0JBQWdCO0FBQ3pCO0FBQUEsTUFDRjtBQUVBLGVBQVMsVUFBVSxNQUFNLE1BQU07QUFDL0IsdUNBQVcsaURBQThDO0FBQUEsUUFDdkQsYUFBYSxPQUFPO0FBQUEsUUFDcEIsbUJBQW1CO0FBQUEsUUFDbkIsbUJBQWUsZUFBRSxDQUFDLE1BQU0sRUFBRSxZQUFZLFFBQVEsV0FBVztBQUFBLE1BQzNELENBQUMsQ0FBQztBQUFBLElBQ0o7QUFBQSxFQUNGLENBQUM7QUFDRCxXQUFTLFFBQVEsVUFBVTtBQUUzQixpQkFBZSxZQUFZLGFBQXlDO0FBQ2xFLGdCQUFZLGVBQWU7QUFDM0IsUUFBSTtBQUVKLFVBQU0sWUFBWSxVQUFNLHNDQUFxQixJQUFJLFlBQVk7QUFDM0QsZ0JBQVUsVUFBTSxvQ0FBYSxpQkFBaUIsV0FBVztBQUN6RCxrQkFBWSxlQUFlO0FBQUEsSUFDN0IsQ0FBQztBQUNELGdCQUFZLGVBQWU7QUFFM0IsZ0JBQVk7QUFFWixlQUFXLE1BQU07QUFDakIsT0FBRyxVQUFVLFNBQVMsRUFBRSxXQUFXLFdBQVcsQ0FBQztBQUFBLEVBQ2pEO0FBQ0Y7QUFRTyxTQUFTLGVBQWUsU0FBeUI7QUFDdEQsUUFBTSxRQUFRLFFBQVEsTUFBTSxJQUFJO0FBQ2hDLFFBQU0sZ0JBQWdCLE1BQU0sSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLEVBQUU7QUFDckQsU0FBTyxjQUFjLEtBQUssSUFBSTtBQUNoQztBQVFBLFNBQVMsWUFBWSxNQUEyQjtBQUM5QyxVQUFRLE1BQU07QUFBQSxJQUNaLEtBQUssaUJBQXFCO0FBQ3hCLGFBQU87QUFBQSxJQUNUO0FBQUEsSUFDQSxLQUFLLDJCQUErQjtBQUNsQyxhQUFPO0FBQUEsSUFDVDtBQUFBLElBQ0EsS0FBSywwQkFBOEI7QUFDakMsYUFBTztBQUFBLElBQ1Q7QUFBQSxJQUNBLFNBQVM7QUFDUCwwQ0FBWSxJQUFJO0FBQUEsSUFDbEI7QUFBQSxFQUNGO0FBQ0Y7IiwibmFtZXMiOlsiQ2FsbG91dE1vZGUiXX0=
@@ -121,7 +121,7 @@ __export(case_insensitive_file_index_exports, {
121
121
  });
122
122
  module.exports = __toCommonJS(case_insensitive_file_index_exports);
123
123
  var import_array = require('@mnaoumov/typescript-lib/array');
124
- var import_obsidian_dev_utils_state = require('./obsidian-dev-utils-state.cjs');
124
+ var import_obsidian_lib_state = require('./obsidian-lib-state.cjs');
125
125
  const STATE_KEY = "caseInsensitiveFileIndex";
126
126
  class CaseInsensitiveFileIndex {
127
127
  /**
@@ -204,14 +204,14 @@ class CaseInsensitiveFileIndex {
204
204
  }
205
205
  }
206
206
  function getCaseInsensitiveFileIndex(app) {
207
- const index = (0, import_obsidian_dev_utils_state.getObsidianDevUtilsState)(STATE_KEY, null).value;
207
+ const index = (0, import_obsidian_lib_state.getObsidianLibState)(STATE_KEY, null).value;
208
208
  return index?.ownsApp(app) ? index : null;
209
209
  }
210
210
  function setCaseInsensitiveFileIndex(index) {
211
- (0, import_obsidian_dev_utils_state.getObsidianDevUtilsState)(STATE_KEY, null).value = index;
211
+ (0, import_obsidian_lib_state.getObsidianLibState)(STATE_KEY, null).value = index;
212
212
  }
213
213
  function unsetCaseInsensitiveFileIndex(index) {
214
- const wrapper = (0, import_obsidian_dev_utils_state.getObsidianDevUtilsState)(STATE_KEY, null);
214
+ const wrapper = (0, import_obsidian_lib_state.getObsidianLibState)(STATE_KEY, null);
215
215
  if (wrapper.value === index) {
216
216
  wrapper.value = null;
217
217
  }
@@ -223,4 +223,4 @@ function unsetCaseInsensitiveFileIndex(index) {
223
223
  setCaseInsensitiveFileIndex,
224
224
  unsetCaseInsensitiveFileIndex
225
225
  });
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jYXNlLWluc2Vuc2l0aXZlLWZpbGUtaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFByb3ZpZGVzIGFuIG9wdC1pbiBPKDEpIGNhc2UtaW5zZW5zaXRpdmUgcmVzb2x2ZXIgZm9yIE9ic2lkaWFuIHZhdWx0cy5cbiAqXG4gKiBPYnNpZGlhbidzIG5hdGl2ZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLm9ic2lkaWFuLm1kL1JlZmVyZW5jZS9UeXBlU2NyaXB0K0FQSS9WYXVsdCB8IFZhdWx0fSByZXNvbHZlc1xuICogYSBzdHJpbmcgcGF0aCBjYXNlLWluc2Vuc2l0aXZlbHkgKHRoZSBXaW5kb3dzL21hY09TIGRlZmF1bHQpIGluIE8oMSkgb24gYSBoaXQgYnV0IHdpdGggYW5cbiAqIE8odmF1bHQpIHNjYW4gb24gYSBtaXNzLiBUaGUgbWlzcyBjYXNlIGlzIHRoZSBob3Qgb25lIGR1cmluZyBkZWxldGlvbiBjYXNjYWRlcywgd2hlcmUgZXh0ZW5zaW9uXG4gKiBjaGVja3MgYW5kIGNhY2hlIGxvb2t1cHMgYXJlIHBlcmZvcm1lZCBvbiBhbHJlYWR5LXJlbW92ZWQgcGF0aHMuIFRoaXMgbW9kdWxlIGJhY2tzIHRoZVxuICogY2FzZS1pbnNlbnNpdGl2ZSBsb29rdXAgd2l0aCBhIGBsb3dlcmNhc2UtcGF0aCDihpIgVEFic3RyYWN0RmlsZWAgaW5kZXggc28gbWlzc2VzIGFyZSBPKDEpIHRvby5cbiAqXG4gKiBUaGUgaW5kZXggaXMgZXhwbGljaXRseSBvcHQtaW46IGEgY29uc3VtZXIgaW5zdGFsbHMgaXQgYnkgbG9hZGluZyBhXG4gKiB7QGxpbmsgaHR0cHM6Ly9kb2NzLm9ic2lkaWFuLm1kL1JlZmVyZW5jZS9UeXBlU2NyaXB0K0FQSS9Db21wb25lbnQgfCBDb21wb25lbnR9IHRoYXQga2VlcHMgaXQgaW5cbiAqIHN5bmMgd2l0aCBgY3JlYXRlYC9gZGVsZXRlYC9gcmVuYW1lYCBldmVudHMgKHNlZSBgQ2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4Q29tcG9uZW50YCkuIFVudGlsIHRoZW4sXG4gKiB0aGUgcmVzb2x1dGlvbiBsYXllciBmYWxscyBiYWNrIHRvIHRoZSBuYXRpdmUgKE8odmF1bHQpLW9uLW1pc3MpIGxvb2t1cCwgc28gYmVoYXZpb3IgaXMgdW5jaGFuZ2VkLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBUQWJzdHJhY3RGaWxlXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgc25hcHNob3QgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXJyYXknO1xuXG5pbXBvcnQgeyBnZXRPYnNpZGlhbkRldlV0aWxzU3RhdGUgfSBmcm9tICcuL29ic2lkaWFuLWRldi11dGlscy1zdGF0ZS50cyc7XG5cbmNvbnN0IFNUQVRFX0tFWSA9ICdjYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXgnO1xuXG4vKipcbiAqIEFuIE8oMSkgY2FzZS1pbnNlbnNpdGl2ZSBpbmRleCBvZiB0aGUgbG9hZGVkIGZpbGVzIGFuZCBmb2xkZXJzIG9mIGEgc2luZ2xlIHZhdWx0LlxuICpcbiAqIFRoZSBpbmRleCBtYXBzIHRoZSBsb3dlcmNhc2VkIHBhdGggb2YgZWFjaCBhYnN0cmFjdCBmaWxlIHRvIHRoZSBhYnN0cmFjdCBmaWxlIGl0c2VsZi4gSXQgaXMga2VwdFxuICogaW4gc3luYyBieSBhbiBvd25pbmcgY29tcG9uZW50IHRoYXQgZm9yd2FyZHMgYGNyZWF0ZWAvYGRlbGV0ZWAvYHJlbmFtZWAgdmF1bHQgZXZlbnRzLlxuICovXG5leHBvcnQgY2xhc3MgQ2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4IHtcbiAgcHJpdmF0ZSByZWFkb25seSBtYXAgPSBuZXcgTWFwPHN0cmluZywgVEFic3RyYWN0RmlsZT4oKTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBjYXNlLWluc2Vuc2l0aXZlIGZpbGUgaW5kZXguXG4gICAqXG4gICAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2Ugd2hvc2UgdmF1bHQgdGhpcyBpbmRleCBtaXJyb3JzLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWFkb25seSBhcHA6IEFwcCkge31cblxuICAvKipcbiAgICogQWRkcyBhbiBhYnN0cmFjdCBmaWxlIHRvIHRoZSBpbmRleC5cbiAgICpcbiAgICogQHBhcmFtIGFic3RyYWN0RmlsZSAtIFRoZSBhYnN0cmFjdCBmaWxlIHRvIGFkZC5cbiAgICovXG4gIHB1YmxpYyBhZGQoYWJzdHJhY3RGaWxlOiBUQWJzdHJhY3RGaWxlKTogdm9pZCB7XG4gICAgdGhpcy5tYXAuc2V0KGFic3RyYWN0RmlsZS5wYXRoLnRvTG93ZXJDYXNlKCksIGFic3RyYWN0RmlsZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgYWJzdHJhY3QgZmlsZSBhdCB0aGUgZ2l2ZW4gcGF0aCBmcm9tIHRoZSBpbmRleCwgYWxvbmcgd2l0aCBhbGwgb2YgaXRzIGRlc2NlbmRhbnRzXG4gICAqIChmb3IgZm9sZGVyIGRlbGV0aW9ucywgd2hlcmUgT2JzaWRpYW4gcmVtb3ZlcyB0aGUgd2hvbGUgc3VidHJlZSkuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGFic3RyYWN0IGZpbGUgdG8gcmVtb3ZlLlxuICAgKi9cbiAgcHVibGljIGRlbGV0ZShwYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSBwYXRoLnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5tYXAuZGVsZXRlKGtleSk7XG4gICAgY29uc3QgZGVzY2VuZGFudFByZWZpeCA9IGAke2tleX0vYDtcbiAgICBmb3IgKGNvbnN0IGV4aXN0aW5nS2V5IG9mIHNuYXBzaG90KHRoaXMubWFwLmtleXMoKSkpIHtcbiAgICAgIGlmIChleGlzdGluZ0tleS5zdGFydHNXaXRoKGRlc2NlbmRhbnRQcmVmaXgpKSB7XG4gICAgICAgIHRoaXMubWFwLmRlbGV0ZShleGlzdGluZ0tleSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIGFuIGFic3RyYWN0IGZpbGUgYnkgaXRzIHBhdGgsIGNhc2UtaW5zZW5zaXRpdmVseSwgaW4gTygxKS5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byByZXNvbHZlLlxuICAgKiBAcmV0dXJucyBUaGUgYWJzdHJhY3QgZmlsZSBpZiBmb3VuZCwgb3RoZXJ3aXNlIGBudWxsYC5cbiAgICovXG4gIHB1YmxpYyBnZXQocGF0aDogc3RyaW5nKTogbnVsbCB8IFRBYnN0cmFjdEZpbGUge1xuICAgIHJldHVybiB0aGlzLm1hcC5nZXQocGF0aC50b0xvd2VyQ2FzZSgpKSA/PyBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIHRoaXMgaW5kZXggbWlycm9ycyB0aGUgZ2l2ZW4gYXBwbGljYXRpb24ncyB2YXVsdC5cbiAgICpcbiAgICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZSB0byBjaGVjayBhZ2FpbnN0LlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhpcyBpbmRleCBiZWxvbmdzIHRvIHRoZSBnaXZlbiBhcHBsaWNhdGlvbiwgYGZhbHNlYCBvdGhlcndpc2UuXG4gICAqL1xuICBwdWJsaWMgb3duc0FwcChhcHA6IEFwcCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFwcCA9PT0gYXBwO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlLWtleXMgYW4gYWJzdHJhY3QgZmlsZSAoYW5kLCBmb3IgZm9sZGVycywgYWxsIG9mIGl0cyBkZXNjZW5kYW50cykgYWZ0ZXIgYSByZW5hbWUuXG4gICAqXG4gICAqIE9ic2lkaWFuIGZpcmVzIGEgc2luZ2xlIGByZW5hbWVgIGV2ZW50IGZvciB0aGUgcmVuYW1lZCBhYnN0cmFjdCBmaWxlIGFuZCB1cGRhdGVzIGl0c1xuICAgKiBkZXNjZW5kYW50cycgcGF0aHMgaW4gcGxhY2Ugd2l0aG91dCBmaXJpbmcgcGVyLWRlc2NlbmRhbnQgZXZlbnRzLCBzbyBkZXNjZW5kYW50IGtleXMgYXJlXG4gICAqIHJlY29tcHV0ZWQgaGVyZSBieSBzd2FwcGluZyB0aGUgb2xkIHBhdGggcHJlZml4IGZvciB0aGUgbmV3IG9uZS4gSGFuZGxlcyBjYXNlLW9ubHkgcmVuYW1lcyAodGhlXG4gICAqIG9sZCBhbmQgbmV3IGtleXMgY29pbmNpZGUpLlxuICAgKlxuICAgKiBAcGFyYW0gb2xkUGF0aCAtIFRoZSBwYXRoIHRoZSBhYnN0cmFjdCBmaWxlIGhhZCBiZWZvcmUgdGhlIHJlbmFtZS5cbiAgICogQHBhcmFtIG5ld0Fic3RyYWN0RmlsZSAtIFRoZSBhYnN0cmFjdCBmaWxlIHdpdGggaXRzIHVwZGF0ZWQgKHBvc3QtcmVuYW1lKSBwYXRoLlxuICAgKi9cbiAgcHVibGljIHJlbmFtZShvbGRQYXRoOiBzdHJpbmcsIG5ld0Fic3RyYWN0RmlsZTogVEFic3RyYWN0RmlsZSk6IHZvaWQge1xuICAgIGNvbnN0IG9sZEtleSA9IG9sZFBhdGgudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBuZXdLZXkgPSBuZXdBYnN0cmFjdEZpbGUucGF0aC50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMubWFwLmRlbGV0ZShvbGRLZXkpO1xuICAgIHRoaXMubWFwLnNldChuZXdLZXksIG5ld0Fic3RyYWN0RmlsZSk7XG5cbiAgICBjb25zdCBvbGREZXNjZW5kYW50UHJlZml4ID0gYCR7b2xkS2V5fS9gO1xuICAgIGNvbnN0IG5ld0Rlc2NlbmRhbnRQcmVmaXggPSBgJHtuZXdLZXl9L2A7XG4gICAgZm9yIChjb25zdCBbZXhpc3RpbmdLZXksIGV4aXN0aW5nVmFsdWVdIG9mIHNuYXBzaG90KHRoaXMubWFwKSkge1xuICAgICAgaWYgKCFleGlzdGluZ0tleS5zdGFydHNXaXRoKG9sZERlc2NlbmRhbnRQcmVmaXgpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm1hcC5kZWxldGUoZXhpc3RpbmdLZXkpO1xuICAgICAgdGhpcy5tYXAuc2V0KG5ld0Rlc2NlbmRhbnRQcmVmaXggKyBleGlzdGluZ0tleS5zbGljZShvbGREZXNjZW5kYW50UHJlZml4Lmxlbmd0aCksIGV4aXN0aW5nVmFsdWUpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgaW5zdGFsbGVkIGNhc2UtaW5zZW5zaXRpdmUgZmlsZSBpbmRleCBmb3IgdGhlIGdpdmVuIGFwcGxpY2F0aW9uLCBpZiBhbnkuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBhcHBsaWNhdGlvbiBpbnN0YW5jZSB3aG9zZSBpbmRleCB0byByZXRyaWV2ZS5cbiAqIEByZXR1cm5zIFRoZSBpbmRleCBpZiBvbmUgaXMgaW5zdGFsbGVkIGZvciB0aGlzIGFwcGxpY2F0aW9uLCBvdGhlcndpc2UgYG51bGxgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4KGFwcDogQXBwKTogQ2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4IHwgbnVsbCB7XG4gIGNvbnN0IGluZGV4ID0gZ2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlPENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleCB8IG51bGw+KFNUQVRFX0tFWSwgbnVsbCkudmFsdWU7XG4gIHJldHVybiBpbmRleD8ub3duc0FwcChhcHApID8gaW5kZXggOiBudWxsO1xufVxuXG4vKipcbiAqIEluc3RhbGxzIGEgY2FzZS1pbnNlbnNpdGl2ZSBmaWxlIGluZGV4IGFzIHRoZSBhY3RpdmUgcmVzb2x2ZXIuXG4gKlxuICogQHBhcmFtIGluZGV4IC0gVGhlIGluZGV4IHRvIGluc3RhbGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXgoaW5kZXg6IENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleCk6IHZvaWQge1xuICBnZXRPYnNpZGlhbkRldlV0aWxzU3RhdGU8Q2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4IHwgbnVsbD4oU1RBVEVfS0VZLCBudWxsKS52YWx1ZSA9IGluZGV4O1xufVxuXG4vKipcbiAqIFVuaW5zdGFsbHMgYSBjYXNlLWluc2Vuc2l0aXZlIGZpbGUgaW5kZXgsIGJ1dCBvbmx5IGlmIGl0IGlzIHRoZSBjdXJyZW50bHktaW5zdGFsbGVkIG9uZS5cbiAqXG4gKiBAcGFyYW0gaW5kZXggLSBUaGUgaW5kZXggdG8gdW5pbnN0YWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5zZXRDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXgoaW5kZXg6IENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleCk6IHZvaWQge1xuICBjb25zdCB3cmFwcGVyID0gZ2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlPENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleCB8IG51bGw+KFNUQVRFX0tFWSwgbnVsbCk7XG4gIGlmICh3cmFwcGVyLnZhbHVlID09PSBpbmRleCkge1xuICAgIHdyYXBwZXIudmFsdWUgPSBudWxsO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzQkEsbUJBQXlCO0FBRXpCLHNDQUF5QztBQUV6QyxNQUFNLFlBQVk7QUFRWCxNQUFNLHlCQUF5QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVE3QixZQUErQixLQUFVO0FBQVY7QUFBQSxFQUFXO0FBQUEsRUFBWDtBQUFBLEVBUHJCLE1BQU0sb0JBQUksSUFBMkI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFjL0MsSUFBSSxjQUFtQztBQUM1QyxTQUFLLElBQUksSUFBSSxhQUFhLEtBQUssWUFBWSxHQUFHLFlBQVk7QUFBQSxFQUM1RDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sT0FBTyxNQUFvQjtBQUNoQyxVQUFNLE1BQU0sS0FBSyxZQUFZO0FBQzdCLFNBQUssSUFBSSxPQUFPLEdBQUc7QUFDbkIsVUFBTSxtQkFBbUIsR0FBRyxHQUFHO0FBQy9CLGVBQVcsbUJBQWUsdUJBQVMsS0FBSyxJQUFJLEtBQUssQ0FBQyxHQUFHO0FBQ25ELFVBQUksWUFBWSxXQUFXLGdCQUFnQixHQUFHO0FBQzVDLGFBQUssSUFBSSxPQUFPLFdBQVc7QUFBQSxNQUM3QjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRTyxJQUFJLE1BQW9DO0FBQzdDLFdBQU8sS0FBSyxJQUFJLElBQUksS0FBSyxZQUFZLENBQUMsS0FBSztBQUFBLEVBQzdDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRTyxRQUFRLEtBQW1CO0FBQ2hDLFdBQU8sS0FBSyxRQUFRO0FBQUEsRUFDdEI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFhTyxPQUFPLFNBQWlCLGlCQUFzQztBQUNuRSxVQUFNLFNBQVMsUUFBUSxZQUFZO0FBQ25DLFVBQU0sU0FBUyxnQkFBZ0IsS0FBSyxZQUFZO0FBQ2hELFNBQUssSUFBSSxPQUFPLE1BQU07QUFDdEIsU0FBSyxJQUFJLElBQUksUUFBUSxlQUFlO0FBRXBDLFVBQU0sc0JBQXNCLEdBQUcsTUFBTTtBQUNyQyxVQUFNLHNCQUFzQixHQUFHLE1BQU07QUFDckMsZUFBVyxDQUFDLGFBQWEsYUFBYSxTQUFLLHVCQUFTLEtBQUssR0FBRyxHQUFHO0FBQzdELFVBQUksQ0FBQyxZQUFZLFdBQVcsbUJBQW1CLEdBQUc7QUFDaEQ7QUFBQSxNQUNGO0FBRUEsV0FBSyxJQUFJLE9BQU8sV0FBVztBQUMzQixXQUFLLElBQUksSUFBSSxzQkFBc0IsWUFBWSxNQUFNLG9CQUFvQixNQUFNLEdBQUcsYUFBYTtBQUFBLElBQ2pHO0FBQUEsRUFDRjtBQUNGO0FBUU8sU0FBUyw0QkFBNEIsS0FBMkM7QUFDckYsUUFBTSxZQUFRLDBEQUEwRCxXQUFXLElBQUksRUFBRTtBQUN6RixTQUFPLE9BQU8sUUFBUSxHQUFHLElBQUksUUFBUTtBQUN2QztBQU9PLFNBQVMsNEJBQTRCLE9BQXVDO0FBQ2pGLGdFQUEwRCxXQUFXLElBQUksRUFBRSxRQUFRO0FBQ3JGO0FBT08sU0FBUyw4QkFBOEIsT0FBdUM7QUFDbkYsUUFBTSxjQUFVLDBEQUEwRCxXQUFXLElBQUk7QUFDekYsTUFBSSxRQUFRLFVBQVUsT0FBTztBQUMzQixZQUFRLFFBQVE7QUFBQSxFQUNsQjtBQUNGOyIsIm5hbWVzIjpbXX0=
226
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jYXNlLWluc2Vuc2l0aXZlLWZpbGUtaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFByb3ZpZGVzIGFuIG9wdC1pbiBPKDEpIGNhc2UtaW5zZW5zaXRpdmUgcmVzb2x2ZXIgZm9yIE9ic2lkaWFuIHZhdWx0cy5cbiAqXG4gKiBPYnNpZGlhbidzIG5hdGl2ZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLm9ic2lkaWFuLm1kL1JlZmVyZW5jZS9UeXBlU2NyaXB0K0FQSS9WYXVsdCB8IFZhdWx0fSByZXNvbHZlc1xuICogYSBzdHJpbmcgcGF0aCBjYXNlLWluc2Vuc2l0aXZlbHkgKHRoZSBXaW5kb3dzL21hY09TIGRlZmF1bHQpIGluIE8oMSkgb24gYSBoaXQgYnV0IHdpdGggYW5cbiAqIE8odmF1bHQpIHNjYW4gb24gYSBtaXNzLiBUaGUgbWlzcyBjYXNlIGlzIHRoZSBob3Qgb25lIGR1cmluZyBkZWxldGlvbiBjYXNjYWRlcywgd2hlcmUgZXh0ZW5zaW9uXG4gKiBjaGVja3MgYW5kIGNhY2hlIGxvb2t1cHMgYXJlIHBlcmZvcm1lZCBvbiBhbHJlYWR5LXJlbW92ZWQgcGF0aHMuIFRoaXMgbW9kdWxlIGJhY2tzIHRoZVxuICogY2FzZS1pbnNlbnNpdGl2ZSBsb29rdXAgd2l0aCBhIGBsb3dlcmNhc2UtcGF0aCDihpIgVEFic3RyYWN0RmlsZWAgaW5kZXggc28gbWlzc2VzIGFyZSBPKDEpIHRvby5cbiAqXG4gKiBUaGUgaW5kZXggaXMgZXhwbGljaXRseSBvcHQtaW46IGEgY29uc3VtZXIgaW5zdGFsbHMgaXQgYnkgbG9hZGluZyBhXG4gKiB7QGxpbmsgaHR0cHM6Ly9kb2NzLm9ic2lkaWFuLm1kL1JlZmVyZW5jZS9UeXBlU2NyaXB0K0FQSS9Db21wb25lbnQgfCBDb21wb25lbnR9IHRoYXQga2VlcHMgaXQgaW5cbiAqIHN5bmMgd2l0aCBgY3JlYXRlYC9gZGVsZXRlYC9gcmVuYW1lYCBldmVudHMgKHNlZSBgQ2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4Q29tcG9uZW50YCkuIFVudGlsIHRoZW4sXG4gKiB0aGUgcmVzb2x1dGlvbiBsYXllciBmYWxscyBiYWNrIHRvIHRoZSBuYXRpdmUgKE8odmF1bHQpLW9uLW1pc3MpIGxvb2t1cCwgc28gYmVoYXZpb3IgaXMgdW5jaGFuZ2VkLlxuICovXG5cbmltcG9ydCB0eXBlIHtcbiAgQXBwLFxuICBUQWJzdHJhY3RGaWxlXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgc25hcHNob3QgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXJyYXknO1xuXG5pbXBvcnQgeyBnZXRPYnNpZGlhbkxpYlN0YXRlIH0gZnJvbSAnLi9vYnNpZGlhbi1saWItc3RhdGUudHMnO1xuXG5jb25zdCBTVEFURV9LRVkgPSAnY2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4JztcblxuLyoqXG4gKiBBbiBPKDEpIGNhc2UtaW5zZW5zaXRpdmUgaW5kZXggb2YgdGhlIGxvYWRlZCBmaWxlcyBhbmQgZm9sZGVycyBvZiBhIHNpbmdsZSB2YXVsdC5cbiAqXG4gKiBUaGUgaW5kZXggbWFwcyB0aGUgbG93ZXJjYXNlZCBwYXRoIG9mIGVhY2ggYWJzdHJhY3QgZmlsZSB0byB0aGUgYWJzdHJhY3QgZmlsZSBpdHNlbGYuIEl0IGlzIGtlcHRcbiAqIGluIHN5bmMgYnkgYW4gb3duaW5nIGNvbXBvbmVudCB0aGF0IGZvcndhcmRzIGBjcmVhdGVgL2BkZWxldGVgL2ByZW5hbWVgIHZhdWx0IGV2ZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWFwID0gbmV3IE1hcDxzdHJpbmcsIFRBYnN0cmFjdEZpbGU+KCk7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgY2FzZS1pbnNlbnNpdGl2ZSBmaWxlIGluZGV4LlxuICAgKlxuICAgKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcGxpY2F0aW9uIGluc3RhbmNlIHdob3NlIHZhdWx0IHRoaXMgaW5kZXggbWlycm9ycy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwOiBBcHApIHt9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gYWJzdHJhY3QgZmlsZSB0byB0aGUgaW5kZXguXG4gICAqXG4gICAqIEBwYXJhbSBhYnN0cmFjdEZpbGUgLSBUaGUgYWJzdHJhY3QgZmlsZSB0byBhZGQuXG4gICAqL1xuICBwdWJsaWMgYWRkKGFic3RyYWN0RmlsZTogVEFic3RyYWN0RmlsZSk6IHZvaWQge1xuICAgIHRoaXMubWFwLnNldChhYnN0cmFjdEZpbGUucGF0aC50b0xvd2VyQ2FzZSgpLCBhYnN0cmFjdEZpbGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIGFic3RyYWN0IGZpbGUgYXQgdGhlIGdpdmVuIHBhdGggZnJvbSB0aGUgaW5kZXgsIGFsb25nIHdpdGggYWxsIG9mIGl0cyBkZXNjZW5kYW50c1xuICAgKiAoZm9yIGZvbGRlciBkZWxldGlvbnMsIHdoZXJlIE9ic2lkaWFuIHJlbW92ZXMgdGhlIHdob2xlIHN1YnRyZWUpLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIG9mIHRoZSBhYnN0cmFjdCBmaWxlIHRvIHJlbW92ZS5cbiAgICovXG4gIHB1YmxpYyBkZWxldGUocGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qga2V5ID0gcGF0aC50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMubWFwLmRlbGV0ZShrZXkpO1xuICAgIGNvbnN0IGRlc2NlbmRhbnRQcmVmaXggPSBgJHtrZXl9L2A7XG4gICAgZm9yIChjb25zdCBleGlzdGluZ0tleSBvZiBzbmFwc2hvdCh0aGlzLm1hcC5rZXlzKCkpKSB7XG4gICAgICBpZiAoZXhpc3RpbmdLZXkuc3RhcnRzV2l0aChkZXNjZW5kYW50UHJlZml4KSkge1xuICAgICAgICB0aGlzLm1hcC5kZWxldGUoZXhpc3RpbmdLZXkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBhbiBhYnN0cmFjdCBmaWxlIGJ5IGl0cyBwYXRoLCBjYXNlLWluc2Vuc2l0aXZlbHksIGluIE8oMSkuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gcmVzb2x2ZS5cbiAgICogQHJldHVybnMgVGhlIGFic3RyYWN0IGZpbGUgaWYgZm91bmQsIG90aGVyd2lzZSBgbnVsbGAuXG4gICAqL1xuICBwdWJsaWMgZ2V0KHBhdGg6IHN0cmluZyk6IG51bGwgfCBUQWJzdHJhY3RGaWxlIHtcbiAgICByZXR1cm4gdGhpcy5tYXAuZ2V0KHBhdGgudG9Mb3dlckNhc2UoKSkgPz8gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGlzIGluZGV4IG1pcnJvcnMgdGhlIGdpdmVuIGFwcGxpY2F0aW9uJ3MgdmF1bHQuXG4gICAqXG4gICAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2UgdG8gY2hlY2sgYWdhaW5zdC5cbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoaXMgaW5kZXggYmVsb25ncyB0byB0aGUgZ2l2ZW4gYXBwbGljYXRpb24sIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHVibGljIG93bnNBcHAoYXBwOiBBcHApOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hcHAgPT09IGFwcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZS1rZXlzIGFuIGFic3RyYWN0IGZpbGUgKGFuZCwgZm9yIGZvbGRlcnMsIGFsbCBvZiBpdHMgZGVzY2VuZGFudHMpIGFmdGVyIGEgcmVuYW1lLlxuICAgKlxuICAgKiBPYnNpZGlhbiBmaXJlcyBhIHNpbmdsZSBgcmVuYW1lYCBldmVudCBmb3IgdGhlIHJlbmFtZWQgYWJzdHJhY3QgZmlsZSBhbmQgdXBkYXRlcyBpdHNcbiAgICogZGVzY2VuZGFudHMnIHBhdGhzIGluIHBsYWNlIHdpdGhvdXQgZmlyaW5nIHBlci1kZXNjZW5kYW50IGV2ZW50cywgc28gZGVzY2VuZGFudCBrZXlzIGFyZVxuICAgKiByZWNvbXB1dGVkIGhlcmUgYnkgc3dhcHBpbmcgdGhlIG9sZCBwYXRoIHByZWZpeCBmb3IgdGhlIG5ldyBvbmUuIEhhbmRsZXMgY2FzZS1vbmx5IHJlbmFtZXMgKHRoZVxuICAgKiBvbGQgYW5kIG5ldyBrZXlzIGNvaW5jaWRlKS5cbiAgICpcbiAgICogQHBhcmFtIG9sZFBhdGggLSBUaGUgcGF0aCB0aGUgYWJzdHJhY3QgZmlsZSBoYWQgYmVmb3JlIHRoZSByZW5hbWUuXG4gICAqIEBwYXJhbSBuZXdBYnN0cmFjdEZpbGUgLSBUaGUgYWJzdHJhY3QgZmlsZSB3aXRoIGl0cyB1cGRhdGVkIChwb3N0LXJlbmFtZSkgcGF0aC5cbiAgICovXG4gIHB1YmxpYyByZW5hbWUob2xkUGF0aDogc3RyaW5nLCBuZXdBYnN0cmFjdEZpbGU6IFRBYnN0cmFjdEZpbGUpOiB2b2lkIHtcbiAgICBjb25zdCBvbGRLZXkgPSBvbGRQYXRoLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgbmV3S2V5ID0gbmV3QWJzdHJhY3RGaWxlLnBhdGgudG9Mb3dlckNhc2UoKTtcbiAgICB0aGlzLm1hcC5kZWxldGUob2xkS2V5KTtcbiAgICB0aGlzLm1hcC5zZXQobmV3S2V5LCBuZXdBYnN0cmFjdEZpbGUpO1xuXG4gICAgY29uc3Qgb2xkRGVzY2VuZGFudFByZWZpeCA9IGAke29sZEtleX0vYDtcbiAgICBjb25zdCBuZXdEZXNjZW5kYW50UHJlZml4ID0gYCR7bmV3S2V5fS9gO1xuICAgIGZvciAoY29uc3QgW2V4aXN0aW5nS2V5LCBleGlzdGluZ1ZhbHVlXSBvZiBzbmFwc2hvdCh0aGlzLm1hcCkpIHtcbiAgICAgIGlmICghZXhpc3RpbmdLZXkuc3RhcnRzV2l0aChvbGREZXNjZW5kYW50UHJlZml4KSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5tYXAuZGVsZXRlKGV4aXN0aW5nS2V5KTtcbiAgICAgIHRoaXMubWFwLnNldChuZXdEZXNjZW5kYW50UHJlZml4ICsgZXhpc3RpbmdLZXkuc2xpY2Uob2xkRGVzY2VuZGFudFByZWZpeC5sZW5ndGgpLCBleGlzdGluZ1ZhbHVlKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGluc3RhbGxlZCBjYXNlLWluc2Vuc2l0aXZlIGZpbGUgaW5kZXggZm9yIHRoZSBnaXZlbiBhcHBsaWNhdGlvbiwgaWYgYW55LlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgYXBwbGljYXRpb24gaW5zdGFuY2Ugd2hvc2UgaW5kZXggdG8gcmV0cmlldmUuXG4gKiBAcmV0dXJucyBUaGUgaW5kZXggaWYgb25lIGlzIGluc3RhbGxlZCBmb3IgdGhpcyBhcHBsaWNhdGlvbiwgb3RoZXJ3aXNlIGBudWxsYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleChhcHA6IEFwcCk6IENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleCB8IG51bGwge1xuICBjb25zdCBpbmRleCA9IGdldE9ic2lkaWFuTGliU3RhdGU8Q2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4IHwgbnVsbD4oU1RBVEVfS0VZLCBudWxsKS52YWx1ZTtcbiAgcmV0dXJuIGluZGV4Py5vd25zQXBwKGFwcCkgPyBpbmRleCA6IG51bGw7XG59XG5cbi8qKlxuICogSW5zdGFsbHMgYSBjYXNlLWluc2Vuc2l0aXZlIGZpbGUgaW5kZXggYXMgdGhlIGFjdGl2ZSByZXNvbHZlci5cbiAqXG4gKiBAcGFyYW0gaW5kZXggLSBUaGUgaW5kZXggdG8gaW5zdGFsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleChpbmRleDogQ2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4KTogdm9pZCB7XG4gIGdldE9ic2lkaWFuTGliU3RhdGU8Q2FzZUluc2Vuc2l0aXZlRmlsZUluZGV4IHwgbnVsbD4oU1RBVEVfS0VZLCBudWxsKS52YWx1ZSA9IGluZGV4O1xufVxuXG4vKipcbiAqIFVuaW5zdGFsbHMgYSBjYXNlLWluc2Vuc2l0aXZlIGZpbGUgaW5kZXgsIGJ1dCBvbmx5IGlmIGl0IGlzIHRoZSBjdXJyZW50bHktaW5zdGFsbGVkIG9uZS5cbiAqXG4gKiBAcGFyYW0gaW5kZXggLSBUaGUgaW5kZXggdG8gdW5pbnN0YWxsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5zZXRDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXgoaW5kZXg6IENhc2VJbnNlbnNpdGl2ZUZpbGVJbmRleCk6IHZvaWQge1xuICBjb25zdCB3cmFwcGVyID0gZ2V0T2JzaWRpYW5MaWJTdGF0ZTxDYXNlSW5zZW5zaXRpdmVGaWxlSW5kZXggfCBudWxsPihTVEFURV9LRVksIG51bGwpO1xuICBpZiAod3JhcHBlci52YWx1ZSA9PT0gaW5kZXgpIHtcbiAgICB3cmFwcGVyLnZhbHVlID0gbnVsbDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBc0JBLG1CQUF5QjtBQUV6QixnQ0FBb0M7QUFFcEMsTUFBTSxZQUFZO0FBUVgsTUFBTSx5QkFBeUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRN0IsWUFBK0IsS0FBVTtBQUFWO0FBQUEsRUFBVztBQUFBLEVBQVg7QUFBQSxFQVByQixNQUFNLG9CQUFJLElBQTJCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBYy9DLElBQUksY0FBbUM7QUFDNUMsU0FBSyxJQUFJLElBQUksYUFBYSxLQUFLLFlBQVksR0FBRyxZQUFZO0FBQUEsRUFDNUQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFPLE9BQU8sTUFBb0I7QUFDaEMsVUFBTSxNQUFNLEtBQUssWUFBWTtBQUM3QixTQUFLLElBQUksT0FBTyxHQUFHO0FBQ25CLFVBQU0sbUJBQW1CLEdBQUcsR0FBRztBQUMvQixlQUFXLG1CQUFlLHVCQUFTLEtBQUssSUFBSSxLQUFLLENBQUMsR0FBRztBQUNuRCxVQUFJLFlBQVksV0FBVyxnQkFBZ0IsR0FBRztBQUM1QyxhQUFLLElBQUksT0FBTyxXQUFXO0FBQUEsTUFDN0I7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sSUFBSSxNQUFvQztBQUM3QyxXQUFPLEtBQUssSUFBSSxJQUFJLEtBQUssWUFBWSxDQUFDLEtBQUs7QUFBQSxFQUM3QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUU8sUUFBUSxLQUFtQjtBQUNoQyxXQUFPLEtBQUssUUFBUTtBQUFBLEVBQ3RCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBYU8sT0FBTyxTQUFpQixpQkFBc0M7QUFDbkUsVUFBTSxTQUFTLFFBQVEsWUFBWTtBQUNuQyxVQUFNLFNBQVMsZ0JBQWdCLEtBQUssWUFBWTtBQUNoRCxTQUFLLElBQUksT0FBTyxNQUFNO0FBQ3RCLFNBQUssSUFBSSxJQUFJLFFBQVEsZUFBZTtBQUVwQyxVQUFNLHNCQUFzQixHQUFHLE1BQU07QUFDckMsVUFBTSxzQkFBc0IsR0FBRyxNQUFNO0FBQ3JDLGVBQVcsQ0FBQyxhQUFhLGFBQWEsU0FBSyx1QkFBUyxLQUFLLEdBQUcsR0FBRztBQUM3RCxVQUFJLENBQUMsWUFBWSxXQUFXLG1CQUFtQixHQUFHO0FBQ2hEO0FBQUEsTUFDRjtBQUVBLFdBQUssSUFBSSxPQUFPLFdBQVc7QUFDM0IsV0FBSyxJQUFJLElBQUksc0JBQXNCLFlBQVksTUFBTSxvQkFBb0IsTUFBTSxHQUFHLGFBQWE7QUFBQSxJQUNqRztBQUFBLEVBQ0Y7QUFDRjtBQVFPLFNBQVMsNEJBQTRCLEtBQTJDO0FBQ3JGLFFBQU0sWUFBUSwrQ0FBcUQsV0FBVyxJQUFJLEVBQUU7QUFDcEYsU0FBTyxPQUFPLFFBQVEsR0FBRyxJQUFJLFFBQVE7QUFDdkM7QUFPTyxTQUFTLDRCQUE0QixPQUF1QztBQUNqRixxREFBcUQsV0FBVyxJQUFJLEVBQUUsUUFBUTtBQUNoRjtBQU9PLFNBQVMsOEJBQThCLE9BQXVDO0FBQ25GLFFBQU0sY0FBVSwrQ0FBcUQsV0FBVyxJQUFJO0FBQ3BGLE1BQUksUUFBUSxVQUFVLE9BQU87QUFDM0IsWUFBUSxRQUFRO0FBQUEsRUFDbEI7QUFDRjsiLCJuYW1lcyI6W119
@@ -132,7 +132,7 @@ __export(community_plugins_exports, {
132
132
  module.exports = __toCommonJS(community_plugins_exports);
133
133
  var import_compare_versions = require('compare-versions');
134
134
  var import_obsidian = require('obsidian');
135
- var import_obsidian_dev_utils_state = require('./obsidian-dev-utils-state.cjs');
135
+ var import_obsidian_lib_state = require('./obsidian-lib-state.cjs');
136
136
  const COMMUNITY_PLUGINS_STATE_KEY = "communityPluginEntriesPromise";
137
137
  const COMMUNITY_PLUGINS_URL = "https://raw.githubusercontent.com/obsidianmd/obsidian-releases/HEAD/community-plugins.json";
138
138
  const DATA_JSON_INDENT = 2;
@@ -292,7 +292,7 @@ async function fetchCommunityPluginEntries() {
292
292
  return response.json;
293
293
  }
294
294
  async function getCommunityPluginEntries() {
295
- const cache = (0, import_obsidian_dev_utils_state.getObsidianDevUtilsState)(COMMUNITY_PLUGINS_STATE_KEY, null);
295
+ const cache = (0, import_obsidian_lib_state.getObsidianLibState)(COMMUNITY_PLUGINS_STATE_KEY, null);
296
296
  cache.value ??= fetchCommunityPluginEntries();
297
297
  try {
298
298
  return await cache.value;
@@ -343,4 +343,4 @@ async function resolveCommunityPluginId(reference) {
343
343
  uninstallCommunityPlugin,
344
344
  updateCommunityPlugin
345
345
  });
346
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tdW5pdHktcGx1Z2lucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogUmVzb2x2ZXMsIHNlYXJjaGVzIGFuZCBtYW5hZ2VzIGNvbW11bml0eSBwbHVnaW5zIHRocm91Z2ggT2JzaWRpYW4ncyBwdWJsaWMgcGx1Z2luIHJlZ2lzdHJ5IGFuZFxuICogc3RvcmUtaW5zdGFsbCBwYXRoLlxuICpcbiAqIE9ic2lkaWFuJ3MgYGNvbW11bml0eS1wbHVnaW5zLmpzb25gIGlzIHRoZSBhdXRob3JpdGF0aXZlIHNvdXJjZSB0aGF0IG1hcHMgYSBwbHVnaW4gYGlkYCB0byBpdHNcbiAqIGBvd25lci9uYW1lYCBHaXRIdWIgcmVwb3NpdG9yeSDigJQgdGhlIHBsdWdpbiBtYW5pZmVzdCBpdHNlbGYgY2FycmllcyBubyByZXBvc2l0b3J5LiBUaGlzIG1vZHVsZSB1c2VzXG4gKiBpdCB0byBzZWFyY2ggdGhlIHJlZ2lzdHJ5LCB0byBsb2NhdGUgYSBwbHVnaW4ncyBHaXRIdWIgcmVsZWFzZXMgKGUuZy4gdG8gZG93bmxvYWQgaXRzIHNoaXBwZWRcbiAqIGRlbW8tdmF1bHQgYXJjaGl2ZSksIGFuZCB0byBpbnN0YWxsL3VwZGF0ZS91bmluc3RhbGwvZW5hYmxlL2Rpc2FibGUgYW4gYXJiaXRyYXJ5IGNvbW11bml0eSBwbHVnaW4g4oCUIHNlbGVjdGVkXG4gKiBieSBlaXRoZXIgaXRzIGBpZGAgb3IgaXRzIGRpc3BsYXkgYG5hbWVgIOKAlCB2aWEgT2JzaWRpYW4ncyBvd24gc3RvcmUgcGF0aCAoYGFwcC5wbHVnaW5zLmluc3RhbGxQbHVnaW5gXG4gKiArIGBlbmFibGVQbHVnaW5BbmRTYXZlYCksIHNvIGFueSBkZXYvZGVwbG95IG9yIHRvb2xpbmcgZmxvdyBjYW4gcmV1c2UgaXQuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIFBsdWdpbk1hbmlmZXN0XG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgY29tcGFyZSBhcyBjb21wYXJlVmVyc2lvbnMgfSBmcm9tICdjb21wYXJlLXZlcnNpb25zJztcbmltcG9ydCB7IHJlcXVlc3RVcmwgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGdldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZSB9IGZyb20gJy4vb2JzaWRpYW4tZGV2LXV0aWxzLXN0YXRlLnRzJztcblxuLyoqXG4gKiBTZWxlY3RzIGEgY29tbXVuaXR5IHBsdWdpbiBlaXRoZXIgYnkgaXRzIGlkICh7QGxpbmsgQ29tbXVuaXR5UGx1Z2luQnlJZFJlZn0pIG9yIGJ5IGl0cyBkaXNwbGF5IG5hbWVcbiAqICh7QGxpbmsgQ29tbXVuaXR5UGx1Z2luQnlOYW1lUmVmfSkuXG4gKi9cbmV4cG9ydCB0eXBlIENvbW11bml0eVBsdWdpblJlZiA9IENvbW11bml0eVBsdWdpbkJ5SWRSZWYgfCBDb21tdW5pdHlQbHVnaW5CeU5hbWVSZWY7XG5cbi8qKlxuICogQSBzaW5nbGUgcmVzdWx0IG9mIHtAbGluayBzZWFyY2hDb21tdW5pdHlQbHVnaW5zfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tdW5pdHlQbHVnaW5TZWFyY2hSZXN1bHQge1xuICAvKipcbiAgICogVGhlIHBsdWdpbiBpZC5cbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gZGlzcGxheSBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBjb25maWd1cmVDb21tdW5pdHlQbHVnaW59LiBTZWxlY3RzIHRoZSBwbHVnaW4gYnkgZWl0aGVyIGBwbHVnaW5JZGAgb3JcbiAqIGBwbHVnaW5OYW1lYC5cbiAqL1xuZXhwb3J0IHR5cGUgQ29uZmlndXJlQ29tbXVuaXR5UGx1Z2luUGFyYW1zID0gQ29tbXVuaXR5UGx1Z2luT3BlcmF0aW9uQ29udGV4dCAmIENvbW11bml0eVBsdWdpblJlZiAmIENvbW11bml0eVBsdWdpblNldHRpbmdzO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBkaXNhYmxlQ29tbXVuaXR5UGx1Z2lufS4gU2VsZWN0cyB0aGUgcGx1Z2luIGJ5IGVpdGhlciBgcGx1Z2luSWRgIG9yXG4gKiBgcGx1Z2luTmFtZWAuXG4gKi9cbmV4cG9ydCB0eXBlIERpc2FibGVDb21tdW5pdHlQbHVnaW5QYXJhbXMgPSBDb21tdW5pdHlQbHVnaW5PcGVyYXRpb25Db250ZXh0ICYgQ29tbXVuaXR5UGx1Z2luUmVmO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBlbmFibGVDb21tdW5pdHlQbHVnaW59LiBTZWxlY3RzIHRoZSBwbHVnaW4gYnkgZWl0aGVyIGBwbHVnaW5JZGAgb3JcbiAqIGBwbHVnaW5OYW1lYC5cbiAqL1xuZXhwb3J0IHR5cGUgRW5hYmxlQ29tbXVuaXR5UGx1Z2luUGFyYW1zID0gQ29tbXVuaXR5UGx1Z2luT3BlcmF0aW9uQ29udGV4dCAmIENvbW11bml0eVBsdWdpblJlZjtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgaW5zdGFsbENvbW11bml0eVBsdWdpbn0uIFNlbGVjdHMgdGhlIHBsdWdpbiBieSBlaXRoZXIgYHBsdWdpbklkYCBvclxuICogYHBsdWdpbk5hbWVgLlxuICovXG5leHBvcnQgdHlwZSBJbnN0YWxsQ29tbXVuaXR5UGx1Z2luUGFyYW1zID0gQ29tbXVuaXR5UGx1Z2luT3BlcmF0aW9uQ29udGV4dCAmIENvbW11bml0eVBsdWdpblJlZjtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgaW5zdGFsbENvbmZpZ3VyZUVuYWJsZUNvbW11bml0eVBsdWdpbn0uIFNlbGVjdHMgdGhlIHBsdWdpbiBieSBlaXRoZXIgYHBsdWdpbklkYFxuICogb3IgYHBsdWdpbk5hbWVgOyBgc2V0dGluZ3NgIGlzIG9wdGlvbmFsIChvbWl0IGZvciBhIHBsdWdpbiB0aGF0IG5lZWRzIG5vIGNvbmZpZ3VyYXRpb24pLlxuICovXG5leHBvcnQgdHlwZSBJbnN0YWxsQ29uZmlndXJlRW5hYmxlQ29tbXVuaXR5UGx1Z2luUGFyYW1zID0gQ29tbXVuaXR5UGx1Z2luT3BlcmF0aW9uQ29udGV4dCAmIENvbW11bml0eVBsdWdpblJlZiAmIFBhcnRpYWw8Q29tbXVuaXR5UGx1Z2luU2V0dGluZ3M+O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayB0b2dnbGVFbmFibGVDb21tdW5pdHlQbHVnaW59LiBTZWxlY3RzIHRoZSBwbHVnaW4gYnkgZWl0aGVyIGBwbHVnaW5JZGAgb3JcbiAqIGBwbHVnaW5OYW1lYC5cbiAqL1xuZXhwb3J0IHR5cGUgVG9nZ2xlRW5hYmxlQ29tbXVuaXR5UGx1Z2luUGFyYW1zID0gQ29tbXVuaXR5UGx1Z2luT3BlcmF0aW9uQ29udGV4dCAmIENvbW11bml0eVBsdWdpblJlZiAmIENvbW11bml0eVBsdWdpblRvZ2dsZUVuYWJsZVN0YXRlO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayB0b2dnbGVJbnN0YWxsQ29tbXVuaXR5UGx1Z2lufS4gU2VsZWN0cyB0aGUgcGx1Z2luIGJ5IGVpdGhlciBgcGx1Z2luSWRgIG9yXG4gKiBgcGx1Z2luTmFtZWAuXG4gKi9cbmV4cG9ydCB0eXBlIFRvZ2dsZUluc3RhbGxDb21tdW5pdHlQbHVnaW5QYXJhbXMgPSBDb21tdW5pdHlQbHVnaW5PcGVyYXRpb25Db250ZXh0ICYgQ29tbXVuaXR5UGx1Z2luUmVmICYgQ29tbXVuaXR5UGx1Z2luVG9nZ2xlSW5zdGFsbFN0YXRlO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayB1bmluc3RhbGxDb21tdW5pdHlQbHVnaW59LiBTZWxlY3RzIHRoZSBwbHVnaW4gYnkgZWl0aGVyIGBwbHVnaW5JZGAgb3JcbiAqIGBwbHVnaW5OYW1lYC5cbiAqL1xuZXhwb3J0IHR5cGUgVW5pbnN0YWxsQ29tbXVuaXR5UGx1Z2luUGFyYW1zID0gQ29tbXVuaXR5UGx1Z2luT3BlcmF0aW9uQ29udGV4dCAmIENvbW11bml0eVBsdWdpblJlZjtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgdXBkYXRlQ29tbXVuaXR5UGx1Z2lufS4gU2VsZWN0cyB0aGUgcGx1Z2luIGJ5IGVpdGhlciBgcGx1Z2luSWRgIG9yIGBwbHVnaW5OYW1lYC5cbiAqL1xuZXhwb3J0IHR5cGUgVXBkYXRlQ29tbXVuaXR5UGx1Z2luUGFyYW1zID0gQ29tbXVuaXR5UGx1Z2luT3BlcmF0aW9uQ29udGV4dCAmIENvbW11bml0eVBsdWdpblJlZjtcblxuLyoqXG4gKiBTZWxlY3RzIGEgY29tbXVuaXR5IHBsdWdpbiBieSBpdHMgaWQuXG4gKi9cbmludGVyZmFjZSBDb21tdW5pdHlQbHVnaW5CeUlkUmVmIHtcbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gaWQuXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5JZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNlbGVjdHMgYSBjb21tdW5pdHkgcGx1Z2luIGJ5IGl0cyBkaXNwbGF5IG5hbWUgKGFzIGxpc3RlZCBpbiBPYnNpZGlhbidzIGNvbW11bml0eSByZWdpc3RyeSkuXG4gKi9cbmludGVyZmFjZSBDb21tdW5pdHlQbHVnaW5CeU5hbWVSZWYge1xuICAvKipcbiAgICogVGhlIHBsdWdpbiBkaXNwbGF5IG5hbWUuXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5OYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBzaW5nbGUgZW50cnkgaW4gT2JzaWRpYW4ncyBgY29tbXVuaXR5LXBsdWdpbnMuanNvbmAgcmVnaXN0cnkuXG4gKi9cbmludGVyZmFjZSBDb21tdW5pdHlQbHVnaW5FbnRyeSB7XG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luIGF1dGhvci5cbiAgICovXG4gIHJlYWRvbmx5IGF1dGhvcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luIGRlc2NyaXB0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBsdWdpbiBpZC5cbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gZGlzcGxheSBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luJ3MgYG93bmVyL25hbWVgIEdpdEh1YiByZXBvc2l0b3J5LlxuICAgKi9cbiAgcmVhZG9ubHkgcmVwbzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UgYSBjb21tdW5pdHktcGx1Z2luIG9wZXJhdGlvbiBydW5zIGFnYWluc3QuXG4gKi9cbmludGVyZmFjZSBDb21tdW5pdHlQbHVnaW5PcGVyYXRpb25Db250ZXh0IHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcbn1cblxuLyoqXG4gKiBUaGUgc2V0dGluZ3MgdG8gbWVyZ2UgaW50byBhIGNvbW11bml0eSBwbHVnaW4ncyBgZGF0YS5qc29uYC5cbiAqL1xuaW50ZXJmYWNlIENvbW11bml0eVBsdWdpblNldHRpbmdzIHtcbiAgLyoqXG4gICAqIFRoZSBzZXR0aW5ncyBvYmplY3Qgc2hhbGxvdy1tZXJnZWQgb3ZlciB0aGUgcGx1Z2luJ3MgZXhpc3RpbmcgYGRhdGEuanNvbmAgKHRoZSBmaWxlIGlzIGNyZWF0ZWQgaWZcbiAgICogYWJzZW50KS5cbiAgICovXG4gIHJlYWRvbmx5IHNldHRpbmdzOiBvYmplY3Q7XG59XG5cbi8qKlxuICogVGhlIGRlc2lyZWQgZW5hYmxlZCBzdGF0ZSBmb3Ige0BsaW5rIHRvZ2dsZUVuYWJsZUNvbW11bml0eVBsdWdpbn0uXG4gKi9cbmludGVyZmFjZSBDb21tdW5pdHlQbHVnaW5Ub2dnbGVFbmFibGVTdGF0ZSB7XG4gIC8qKlxuICAgKiBUaGUgZGVzaXJlZCBlbmFibGVkIHN0YXRlOiBgdHJ1ZWAgZW5hYmxlcyB0aGUgcGx1Z2luLCBgZmFsc2VgIGRpc2FibGVzIGl0LlxuICAgKi9cbiAgcmVhZG9ubHkgaXNFbmFibGVkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoZSBkZXNpcmVkIGluc3RhbGxlZCBzdGF0ZSBmb3Ige0BsaW5rIHRvZ2dsZUluc3RhbGxDb21tdW5pdHlQbHVnaW59LlxuICovXG5pbnRlcmZhY2UgQ29tbXVuaXR5UGx1Z2luVG9nZ2xlSW5zdGFsbFN0YXRlIHtcbiAgLyoqXG4gICAqIFRoZSBkZXNpcmVkIGluc3RhbGxlZCBzdGF0ZTogYHRydWVgIGluc3RhbGxzIHRoZSBwbHVnaW4sIGBmYWxzZWAgdW5pbnN0YWxscyBpdC5cbiAgICovXG4gIHJlYWRvbmx5IGlzSW5zdGFsbGVkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoZSBvbmUgbWV0aG9kIHtAbGluayBjb25maWd1cmVDb21tdW5pdHlQbHVnaW59IG5lZWRzIGZyb20gYSBwbHVnaW4ncyBzZXR0aW5ncyBjb21wb25lbnQgdG8gY29uZmlndXJlXG4gKiBpdCBsaXZlLiBEZWNsYXJlZCBzdHJ1Y3R1cmFsbHkgcmF0aGVyIHRoYW4gaW1wb3J0aW5nIGBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudGAsIHNvIGEgcGx1Z2luIGJ1aWx0IG9uXG4gKiBhbnkgdmVyc2lvbiBvZiBpdCAtLSBvciBvbiBpdHMgb3duIGVxdWl2YWxlbnQgLS0gaXMgY29uZmlndXJhYmxlIHdpdGhvdXQgYSBzaGFyZWQgbm9taW5hbCB0eXBlLlxuICovXG5pbnRlcmZhY2UgRWRpdGFibGVTZXR0aW5nc0NvbXBvbmVudCB7XG4gIGVkaXRBbmRTYXZlOiAoc2V0dGluZ3NFZGl0b3I6IChzZXR0aW5nczogb2JqZWN0KSA9PiB2b2lkKSA9PiBQcm9taXNlPHZvaWQ+O1xufVxuXG4vKipcbiAqIFRoZSBzdWJzZXQgb2YgYSBHaXRIdWIgcmVsZWFzZSB3ZSByZWFkLlxuICovXG5pbnRlcmZhY2UgR2l0SHViUmVsZWFzZSB7XG4gIC8qKlxuICAgKiBUaGUgcmVsZWFzZSB0YWcsIGEgYmFyZSB2ZXJzaW9uIHN1Y2ggYXMgYDEuMi4zYC5cbiAgICovXG4gIHJlYWRvbmx5IHRhZ19uYW1lOiBzdHJpbmc7XG59XG5cbmNvbnN0IENPTU1VTklUWV9QTFVHSU5TX1NUQVRFX0tFWSA9ICdjb21tdW5pdHlQbHVnaW5FbnRyaWVzUHJvbWlzZSc7XG5jb25zdCBDT01NVU5JVFlfUExVR0lOU19VUkwgPSAnaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29ic2lkaWFubWQvb2JzaWRpYW4tcmVsZWFzZXMvSEVBRC9jb21tdW5pdHktcGx1Z2lucy5qc29uJztcbmNvbnN0IERBVEFfSlNPTl9JTkRFTlQgPSAyO1xuXG4vKipcbiAqIFRoZSByZXN1bHQgb2Yge0BsaW5rIGNvbmZpZ3VyZUNvbW11bml0eVBsdWdpbn0uXG4gKi9cbmV4cG9ydCBlbnVtIENvbmZpZ3VyZUNvbW11bml0eVBsdWdpblJlc3VsdCB7XG4gIC8qKlxuICAgKiBUaGUgc2V0dGluZ3Mgd2VyZSBhcHBsaWVkIHRocm91Z2ggdGhlIHJ1bm5pbmcgcGx1Z2luJ3Mgb3duIHNldHRpbmdzIGNvbXBvbmVudCwgd2hpY2ggYm90aCB1cGRhdGVkXG4gICAqIHRoZW0gaW4gbWVtb3J5IGFuZCBwZXJzaXN0ZWQgdGhlbS4gVGhlIHBsdWdpbiBpcyBhbHJlYWR5IHVzaW5nIHRoZW0sIHNvIGl0IG11c3QgTk9UIGJlIHJlbG9hZGVkLlxuICAgKi9cbiAgQXBwbGllZExpdmUgPSAnYXBwbGllZExpdmUnLFxuXG4gIC8qKlxuICAgKiBUaGUgc2V0dGluZ3Mgd2VyZSBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIHBsdWdpbidzIGBkYXRhLmpzb25gLCBzbyBub3RoaW5nIHdhcyB3cml0dGVuLlxuICAgKi9cbiAgU2tpcHBlZCA9ICdza2lwcGVkJyxcblxuICAvKipcbiAgICogVGhlIHNldHRpbmdzIHdlcmUgbWVyZ2VkIGludG8gdGhlIHBsdWdpbidzIGBkYXRhLmpzb25gLCB3aGljaCB3YXMgd3JpdHRlbi5cbiAgICovXG4gIFN1Y2Nlc3MgPSAnc3VjY2Vzcydcbn1cblxuLyoqXG4gKiBUaGUgcmVzdWx0IG9mIHtAbGluayB1cGRhdGVDb21tdW5pdHlQbHVnaW59LlxuICovXG5leHBvcnQgZW51bSBVcGRhdGVDb21tdW5pdHlQbHVnaW5SZXN1bHQge1xuICAvKipcbiAgICogVGhlIGluc3RhbGxlZCBjb3B5IGlzIGFscmVhZHkgYXQgKG9yIHBhc3QpIHRoZSBsYXRlc3QgcmVsZWFzZSwgc28gbm90aGluZyB3YXMgZG93bmxvYWRlZC5cbiAgICovXG4gIEFscmVhZHlVcFRvRGF0ZSA9ICdhbHJlYWR5VXBUb0RhdGUnLFxuXG4gIC8qKlxuICAgKiBUaGUgbGF0ZXN0IHJlbGVhc2Ugd2FzIGluc3RhbGxlZCBvdmVyIHRoZSBvbGQgY29weSwgd2hpY2ggT2JzaWRpYW4gcmVsb2FkZWQgaWYgaXQgd2FzIHJ1bm5pbmcuXG4gICAqL1xuICBVcGRhdGVkID0gJ3VwZGF0ZWQnXG59XG5cbi8qKlxuICogQ29uZmlndXJlcyBhIGNvbW11bml0eSBwbHVnaW4sIHByZWZlcnJpbmcgdGhlIHJ1bm5pbmcgcGx1Z2luJ3Mgb3duIHNldHRpbmdzIGNvbXBvbmVudCBvdmVyIGl0c1xuICogYGRhdGEuanNvbmAuXG4gKlxuICogV2hlbiB0aGUgcGx1Z2luIGlzIGxvYWRlZCBBTkQgZXhwb3NlcyBhIGBwbHVnaW5TZXR0aW5nc0NvbXBvbmVudGAgd2l0aCBhbiBgZWRpdEFuZFNhdmVgIG1ldGhvZCwgdGhlXG4gKiBzZXR0aW5ncyBhcmUgc2hhbGxvdy1tZXJnZWQgdGhyb3VnaCBpdDogdGhleSB0YWtlIGVmZmVjdCBpbW1lZGlhdGVseSBhbmQgYXJlIHBlcnNpc3RlZCwgc28gdGhlIHBsdWdpblxuICogbmVlZHMgbm8gcmVsb2FkIGFuZCB7QGxpbmsgQ29uZmlndXJlQ29tbXVuaXR5UGx1Z2luUmVzdWx0LkFwcGxpZWRMaXZlfSBpcyByZXR1cm5lZC4gVGhpcyBpcyB3aGF0IGxldHMgYVxuICogcGx1Z2luJ3Mgb3duIHNjcmlwdCByZWNvbmZpZ3VyZSBpdCB3aXRob3V0IHRoZSBkaXNhYmxlL2VuYWJsZSBjeWNsZSB0aGF0IHdvdWxkIHRlYXIgZG93biB0aGUgdmVyeSBjb2RlXG4gKiBkb2luZyB0aGUgcmVjb25maWd1cmluZy4gTm90ZSB0aGF0IHRoaXMgcGF0aCBydW5zIHRoZSBwbHVnaW4ncyBzZXR0aW5nIHZhbGlkYXRvcnMsIHNvIGFuIGludmFsaWQgdmFsdWVcbiAqIGlzIHJlcGxhY2VkIGJ5IGl0cyBkZWZhdWx0IHJhdGhlciB0aGFuIHdyaXR0ZW4gdGhyb3VnaCB2ZXJiYXRpbS5cbiAqXG4gKiBPdGhlcndpc2UgdGhlIHNldHRpbmdzIGFyZSB3cml0dGVuIGludG8gdGhlIHBsdWdpbidzIGBkYXRhLmpzb25gLCBzaGFsbG93LW1lcmdlZCBvdmVyIGFueSBleGlzdGluZ1xuICogc2V0dGluZ3MgKGNyZWF0aW5nIHRoZSBmaWxlIGlmIGFic2VudCkuIFdyaXRpbmcgc2V0dGluZ3MgQkVGT1JFIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBtYWtlcyBpdCBsb2FkXG4gKiBhbHJlYWR5IGNvbmZpZ3VyZWQsIHdpdGggbm8gcmVsb2FkLiBBIG5vLW9wIHdyaXRlIGlzIHNraXBwZWQ6IHdoZW4gdGhlIG1lcmdlIGNoYW5nZXMgbm90aGluZywgdGhlIGZpbGVcbiAqIGlzIGxlZnQgdW50b3VjaGVkIGFuZCB7QGxpbmsgQ29uZmlndXJlQ29tbXVuaXR5UGx1Z2luUmVzdWx0LlNraXBwZWR9IGlzIHJldHVybmVkLCBzbyBhIGNhbGxlciBjYW4gYXZvaWRcbiAqIHJlbG9hZGluZyBhbiBhbHJlYWR5LWNvcnJlY3RseS1jb25maWd1cmVkIHBsdWdpbi5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBDb25maWd1cmVDb21tdW5pdHlQbHVnaW5QYXJhbXN9LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB7QGxpbmsgQ29uZmlndXJlQ29tbXVuaXR5UGx1Z2luUmVzdWx0LkFwcGxpZWRMaXZlfSBpZiB0aGVcbiAqIHJ1bm5pbmcgcGx1Z2luIGFwcGxpZWQgdGhlbSBpdHNlbGYgKG5vIHJlbG9hZCBuZWVkZWQpLCB7QGxpbmsgQ29uZmlndXJlQ29tbXVuaXR5UGx1Z2luUmVzdWx0LlN1Y2Nlc3N9IGlmXG4gKiB0aGUgYGRhdGEuanNvbmAgY29udGVudCBjaGFuZ2VkIChhbmQgd2FzIHdyaXR0ZW4pLCBvciB7QGxpbmsgQ29uZmlndXJlQ29tbXVuaXR5UGx1Z2luUmVzdWx0LlNraXBwZWR9IGlmXG4gKiB0aGUgc2V0dGluZ3Mgd2VyZSBhbHJlYWR5IHByZXNlbnQgKG5vdGhpbmcgd3JpdHRlbikuXG4gKiBAdGhyb3dzIElmIHNlbGVjdGVkIGJ5IGBwbHVnaW5OYW1lYCBhbmQgdGhlIG5hbWUgaXMgbm90IGxpc3RlZCBpbiBPYnNpZGlhbidzIGNvbW11bml0eSBwbHVnaW5zIHJlZ2lzdHJ5LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29uZmlndXJlQ29tbXVuaXR5UGx1Z2luKHBhcmFtczogQ29uZmlndXJlQ29tbXVuaXR5UGx1Z2luUGFyYW1zKTogUHJvbWlzZTxDb25maWd1cmVDb21tdW5pdHlQbHVnaW5SZXN1bHQ+IHtcbiAgY29uc3QgeyBhcHAsIHNldHRpbmdzIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHBsdWdpbklkID0gYXdhaXQgcmVzb2x2ZUNvbW11bml0eVBsdWdpbklkKHBhcmFtcyk7XG5cbiAgY29uc3Qgc2V0dGluZ3NDb21wb25lbnQgPSBnZXRTZXR0aW5nc0NvbXBvbmVudChhcHAucGx1Z2lucy5wbHVnaW5zW3BsdWdpbklkXSk7XG4gIGlmIChjaGVja0hhc0VkaXRBbmRTYXZlKHNldHRpbmdzQ29tcG9uZW50KSkge1xuICAgIGF3YWl0IHNldHRpbmdzQ29tcG9uZW50LmVkaXRBbmRTYXZlKChwbHVnaW5TZXR0aW5ncykgPT4ge1xuICAgICAgT2JqZWN0LmFzc2lnbihwbHVnaW5TZXR0aW5ncywgc2V0dGluZ3MpO1xuICAgIH0pO1xuICAgIHJldHVybiBDb25maWd1cmVDb21tdW5pdHlQbHVnaW5SZXN1bHQuQXBwbGllZExpdmU7XG4gIH1cblxuICBjb25zdCBkYXRhUGF0aCA9IGAke2FwcC52YXVsdC5jb25maWdEaXJ9L3BsdWdpbnMvJHtwbHVnaW5JZH0vZGF0YS5qc29uYDtcblxuICBsZXQgZGF0YTogb2JqZWN0ID0ge307XG4gIGlmIChhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5leGlzdHMoZGF0YVBhdGgpKSB7XG4gICAgY29uc3QgcGFyc2VkOiB1bmtub3duID0gSlNPTi5wYXJzZShhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5yZWFkKGRhdGFQYXRoKSk7XG4gICAgaWYgKHBhcnNlZCAhPT0gbnVsbCAmJiB0eXBlb2YgcGFyc2VkID09PSAnb2JqZWN0Jykge1xuICAgICAgZGF0YSA9IHBhcnNlZDtcbiAgICB9XG4gIH1cblxuICBjb25zdCBzZXJpYWxpemVkQmVmb3JlID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gIE9iamVjdC5hc3NpZ24oZGF0YSwgc2V0dGluZ3MpO1xuICBpZiAoSlNPTi5zdHJpbmdpZnkoZGF0YSkgPT09IHNlcmlhbGl6ZWRCZWZvcmUpIHtcbiAgICByZXR1cm4gQ29uZmlndXJlQ29tbXVuaXR5UGx1Z2luUmVzdWx0LlNraXBwZWQ7XG4gIH1cblxuICBjb25zdCBzZXJpYWxpemVkID0gU3RyaW5nKEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIERBVEFfSlNPTl9JTkRFTlQpKTtcbiAgYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIud3JpdGUoZGF0YVBhdGgsIGAke3NlcmlhbGl6ZWR9XFxuYCk7XG4gIHJldHVybiBDb25maWd1cmVDb21tdW5pdHlQbHVnaW5SZXN1bHQuU3VjY2Vzcztcbn1cblxuLyoqXG4gKiBEaXNhYmxlcyBhIGNvbW11bml0eSBwbHVnaW4gKHBlcnNpc3RpbmcgdGhlIGNoYW5nZSkgaWYgaXQgaXMgY3VycmVudGx5IGVuYWJsZWQuIElkZW1wb3RlbnQg4oCUIGEgbm8tb3BcbiAqIHdoZW4gdGhlIHBsdWdpbiBpcyBhbHJlYWR5IGRpc2FibGVkLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIERpc2FibGVDb21tdW5pdHlQbHVnaW5QYXJhbXN9LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBwbHVnaW4gaXMgZGlzYWJsZWQuXG4gKiBAdGhyb3dzIElmIHNlbGVjdGVkIGJ5IGBwbHVnaW5OYW1lYCBhbmQgdGhlIG5hbWUgaXMgbm90IGxpc3RlZCBpbiBPYnNpZGlhbidzIGNvbW11bml0eSBwbHVnaW5zIHJlZ2lzdHJ5LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGlzYWJsZUNvbW11bml0eVBsdWdpbihwYXJhbXM6IERpc2FibGVDb21tdW5pdHlQbHVnaW5QYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBhcHAgfSA9IHBhcmFtcztcbiAgY29uc3QgcGx1Z2luSWQgPSBhd2FpdCByZXNvbHZlQ29tbXVuaXR5UGx1Z2luSWQocGFyYW1zKTtcbiAgaWYgKCFhcHAucGx1Z2lucy5lbmFibGVkUGx1Z2lucy5oYXMocGx1Z2luSWQpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGF3YWl0IGFwcC5wbHVnaW5zLmRpc2FibGVQbHVnaW5BbmRTYXZlKHBsdWdpbklkKTtcbn1cblxuLyoqXG4gKiBFbmFibGVzIGEgY29tbXVuaXR5IHBsdWdpbiAocGVyc2lzdGluZyB0aGUgY2hhbmdlKSBpZiBpdCBpcyBub3QgYWxyZWFkeSBlbmFibGVkLiBJZGVtcG90ZW50IOKAlCBhIG5vLW9wXG4gKiB3aGVuIHRoZSBwbHVnaW4gaXMgYWxyZWFkeSBlbmFibGVkLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIEVuYWJsZUNvbW11bml0eVBsdWdpblBhcmFtc30uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgdGhlIHBsdWdpbiBpcyBlbmFibGVkLlxuICogQHRocm93cyBJZiBzZWxlY3RlZCBieSBgcGx1Z2luTmFtZWAgYW5kIHRoZSBuYW1lIGlzIG5vdCBsaXN0ZWQgaW4gT2JzaWRpYW4ncyBjb21tdW5pdHkgcGx1Z2lucyByZWdpc3RyeS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuYWJsZUNvbW11bml0eVBsdWdpbihwYXJhbXM6IEVuYWJsZUNvbW11bml0eVBsdWdpblBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGFwcCB9ID0gcGFyYW1zO1xuICBjb25zdCBwbHVnaW5JZCA9IGF3YWl0IHJlc29sdmVDb21tdW5pdHlQbHVnaW5JZChwYXJhbXMpO1xuICBpZiAoYXBwLnBsdWdpbnMuZW5hYmxlZFBsdWdpbnMuaGFzKHBsdWdpbklkKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBhd2FpdCBhcHAucGx1Z2lucy5lbmFibGVQbHVnaW5BbmRTYXZlKHBsdWdpbklkKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgYG93bmVyL25hbWVgIEdpdEh1YiByZXBvc2l0b3J5IG9mIGEgY29tbXVuaXR5IHBsdWdpbiBmcm9tIE9ic2lkaWFuJ3MgcHVibGljXG4gKiBgY29tbXVuaXR5LXBsdWdpbnMuanNvbmAgcmVnaXN0cnkuXG4gKlxuICogVGhlIHJlZ2lzdHJ5IGlzIGZldGNoZWQgb25jZSBhbmQgY2FjaGVkIG9uIHRoZSBzaGFyZWQgcGx1Z2luIHN0YXRlIGZvciBzdWJzZXF1ZW50IGNhbGxzOyBhIGZhaWxlZFxuICogZmV0Y2ggaXMgbm90IGNhY2hlZCwgc28gYSBsYXRlciBjYWxsIHJldHJpZXMuXG4gKlxuICogQHBhcmFtIHBsdWdpbklkIC0gVGhlIHBsdWdpbiBpZCB0byBsb29rIHVwLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gcmVzb2x2aW5nIHRvIHRoZSBwbHVnaW4ncyBgb3duZXIvbmFtZWAgcmVwb3NpdG9yeSwgb3IgYG51bGxgIGlmIHRoZVxuICogcGx1Z2luIGlzIG5vdCBsaXN0ZWQgaW4gdGhlIHJlZ2lzdHJ5LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q29tbXVuaXR5UGx1Z2luUmVwbyhwbHVnaW5JZDogc3RyaW5nKTogUHJvbWlzZTxudWxsIHwgc3RyaW5nPiB7XG4gIGNvbnN0IGVudHJpZXMgPSBhd2FpdCBnZXRDb21tdW5pdHlQbHVnaW5FbnRyaWVzKCk7XG4gIGNvbnN0IGVudHJ5ID0gZW50cmllcy5maW5kKChjYW5kaWRhdGUpID0+IGNhbmRpZGF0ZS5pZCA9PT0gcGx1Z2luSWQpO1xuICByZXR1cm4gZW50cnk/LnJlcG8gPz8gbnVsbDtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgbGF0ZXN0IHJlbGVhc2UgdmVyc2lvbiAodGhlIHJlbGVhc2UgYHRhZ19uYW1lYCwgYSBiYXJlIHZlcnNpb24gc3VjaCBhcyBgMS4yLjNgKSBvZiBhXG4gKiBHaXRIdWIgcmVwb3NpdG9yeS5cbiAqXG4gKiBAcGFyYW0gcmVwbyAtIFRoZSBgb3duZXIvbmFtZWAgR2l0SHViIHJlcG9zaXRvcnkuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSByZXNvbHZpbmcgdG8gdGhlIGxhdGVzdCByZWxlYXNlIHZlcnNpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRMYXRlc3RSZWxlYXNlVmVyc2lvbihyZXBvOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcXVlc3RVcmwoYGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvJHtyZXBvfS9yZWxlYXNlcy9sYXRlc3RgKTtcbiAgY29uc3QgcmVsZWFzZSA9IHJlc3BvbnNlLmpzb24gYXMgR2l0SHViUmVsZWFzZTtcbiAgcmV0dXJuIHJlbGVhc2UudGFnX25hbWU7XG59XG5cbi8qKlxuICogSW5zdGFsbHMgYSBjb21tdW5pdHkgcGx1Z2luIGZyb20gdGhlIG9mZmljaWFsIHN0b3JlIGlmIGl0IGlzIG5vdCBhbHJlYWR5IGluc3RhbGxlZC4gSWRlbXBvdGVudCDigJQgYVxuICogbm8tb3Agd2hlbiB0aGUgcGx1Z2luIGlzIGFscmVhZHkgaW5zdGFsbGVkLiBSZXNvbHZlcyB0aGUgcGx1Z2luJ3MgcmVwb3NpdG9yeSBmcm9tIE9ic2lkaWFuJ3NcbiAqIGNvbW11bml0eSByZWdpc3RyeSwgcmVhZHMgdGhlIGxhdGVzdCByZWxlYXNlIHZlcnNpb24gYW5kIGl0cyBtYW5pZmVzdCwgYW5kIGluc3RhbGxzIGl0IHRocm91Z2hcbiAqIE9ic2lkaWFuJ3Mgb3duIGBpbnN0YWxsUGx1Z2luYCBwYXRoLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIEluc3RhbGxDb21tdW5pdHlQbHVnaW5QYXJhbXN9LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBwbHVnaW4gaXMgaW5zdGFsbGVkLlxuICogQHRocm93cyBJZiB0aGUgcGx1Z2luIGlzIG5vdCBsaXN0ZWQgaW4gT2JzaWRpYW4ncyBjb21tdW5pdHkgcGx1Z2lucyByZWdpc3RyeS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluc3RhbGxDb21tdW5pdHlQbHVnaW4ocGFyYW1zOiBJbnN0YWxsQ29tbXVuaXR5UGx1Z2luUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgYXBwIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHBsdWdpbklkID0gYXdhaXQgcmVzb2x2ZUNvbW11bml0eVBsdWdpbklkKHBhcmFtcyk7XG4gIGlmIChPYmplY3QuaGFzT3duKGFwcC5wbHVnaW5zLm1hbmlmZXN0cywgcGx1Z2luSWQpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVwbyA9IGF3YWl0IGdldENvbW11bml0eVBsdWdpblJlcG8ocGx1Z2luSWQpO1xuICBpZiAoIXJlcG8pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFBsdWdpbiAnJHtwbHVnaW5JZH0nIHdhcyBub3QgZm91bmQgaW4gdGhlIE9ic2lkaWFuIGNvbW11bml0eSBwbHVnaW5zIHJlZ2lzdHJ5LmApO1xuICB9XG5cbiAgY29uc3QgdmVyc2lvbiA9IGF3YWl0IGdldExhdGVzdFJlbGVhc2VWZXJzaW9uKHJlcG8pO1xuICBjb25zdCBtYW5pZmVzdCA9IGF3YWl0IGdldFBsdWdpbk1hbmlmZXN0KHJlcG8sIHZlcnNpb24pO1xuICBhd2FpdCBhcHAucGx1Z2lucy5pbnN0YWxsUGx1Z2luKHJlcG8sIHZlcnNpb24sIG1hbmlmZXN0KTtcbn1cblxuLyoqXG4gKiBJbnN0YWxscyBhIGNvbW11bml0eSBwbHVnaW4sIHdyaXRlcyBpdHMgc2V0dGluZ3MsIFRIRU4gZW5hYmxlcyBpdCDigJQgaW4gdGhhdCBvcmRlciDigJQgc28gdGhlIHBsdWdpblxuICogbG9hZHMgYWxyZWFkeSBjb25maWd1cmVkIChhIHBsdWdpbiBlbmFibGVkIGJlZm9yZSBpdCBpcyBjb25maWd1cmVkIHJ1bnMgaXRzIGBvbmxvYWRgIHdpdGggZGVmYXVsdFxuICogc2V0dGluZ3MgYW5kIGRvZXMgbm90aGluZyB1c2VmdWwpLiBJZiB0aGUgcGx1Z2luIGlzIGFscmVhZHkgZW5hYmxlZCBhbmQgdGhlIHNldHRpbmdzIGNoYW5nZWQsIGl0IGlzXG4gKiBkaXNhYmxlZCBhbmQgcmUtZW5hYmxlZCBzbyB0aGUgbmV3IHNldHRpbmdzIHRha2UgZWZmZWN0LiBgc2V0dGluZ3NgIGlzIG9wdGlvbmFsOiBvbWl0IGl0IGZvciBhIHBsdWdpblxuICogdGhhdCBuZWVkcyBubyBjb25maWd1cmF0aW9uLiBDb21wb3NlcyB7QGxpbmsgaW5zdGFsbENvbW11bml0eVBsdWdpbn0sIHtAbGluayBjb25maWd1cmVDb21tdW5pdHlQbHVnaW59LFxuICoge0BsaW5rIGVuYWJsZUNvbW11bml0eVBsdWdpbn0gYW5kIHtAbGluayBkaXNhYmxlQ29tbXVuaXR5UGx1Z2lufS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBJbnN0YWxsQ29uZmlndXJlRW5hYmxlQ29tbXVuaXR5UGx1Z2luUGFyYW1zfS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgcGx1Z2luIGlzIGluc3RhbGxlZCwgY29uZmlndXJlZCBhbmQgZW5hYmxlZC5cbiAqIEB0aHJvd3MgSWYgc2VsZWN0ZWQgYnkgYHBsdWdpbk5hbWVgIGFuZCB0aGUgbmFtZSBpcyBub3QgbGlzdGVkIGluIE9ic2lkaWFuJ3MgY29tbXVuaXR5IHBsdWdpbnMgcmVnaXN0cnkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbnN0YWxsQ29uZmlndXJlRW5hYmxlQ29tbXVuaXR5UGx1Z2luKHBhcmFtczogSW5zdGFsbENvbmZpZ3VyZUVuYWJsZUNvbW11bml0eVBsdWdpblBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGFwcCwgc2V0dGluZ3MgfSA9IHBhcmFtcztcbiAgYXdhaXQgaW5zdGFsbENvbW11bml0eVBsdWdpbihwYXJhbXMpO1xuICBjb25zdCBkaWRTZXR0aW5nc0NoYW5nZSA9IHNldHRpbmdzID8gYXdhaXQgY29uZmlndXJlQ29tbXVuaXR5UGx1Z2luKHsgLi4ucGFyYW1zLCBzZXR0aW5ncyB9KSA9PT0gQ29uZmlndXJlQ29tbXVuaXR5UGx1Z2luUmVzdWx0LlN1Y2Nlc3MgOiBmYWxzZTtcbiAgY29uc3QgcGx1Z2luSWQgPSBhd2FpdCByZXNvbHZlQ29tbXVuaXR5UGx1Z2luSWQocGFyYW1zKTtcbiAgaWYgKCFhcHAucGx1Z2lucy5lbmFibGVkUGx1Z2lucy5oYXMocGx1Z2luSWQpKSB7XG4gICAgYXdhaXQgZW5hYmxlQ29tbXVuaXR5UGx1Z2luKHBhcmFtcyk7XG4gIH0gZWxzZSBpZiAoZGlkU2V0dGluZ3NDaGFuZ2UpIHtcbiAgICBhd2FpdCBkaXNhYmxlQ29tbXVuaXR5UGx1Z2luKHBhcmFtcyk7XG4gICAgYXdhaXQgZW5hYmxlQ29tbXVuaXR5UGx1Z2luKHBhcmFtcyk7XG4gIH1cbn1cblxuLyoqXG4gKiBTZWFyY2hlcyBPYnNpZGlhbidzIHB1YmxpYyBjb21tdW5pdHkgcGx1Z2lucyByZWdpc3RyeSwgcmV0dXJuaW5nIHRoZSBpZCBhbmQgZGlzcGxheSBuYW1lIG9mIGV2ZXJ5XG4gKiBwbHVnaW4gd2hvc2UgaWQsIG5hbWUsIGF1dGhvciBvciBkZXNjcmlwdGlvbiBjb250YWlucyB0aGUgcXVlcnkgKGNhc2UtaW5zZW5zaXRpdmUpLiBBbiBlbXB0eSBxdWVyeVxuICogbWF0Y2hlcyBldmVyeSBwbHVnaW4uXG4gKlxuICogQHBhcmFtIHF1ZXJ5IC0gVGhlIHNlYXJjaCBxdWVyeS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHJlc29sdmluZyB0byB0aGUgbWF0Y2hpbmcgcGx1Z2lucycge0BsaW5rIENvbW11bml0eVBsdWdpblNlYXJjaFJlc3VsdH1zLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VhcmNoQ29tbXVuaXR5UGx1Z2lucyhxdWVyeTogc3RyaW5nKTogUHJvbWlzZTxDb21tdW5pdHlQbHVnaW5TZWFyY2hSZXN1bHRbXT4ge1xuICBjb25zdCBlbnRyaWVzID0gYXdhaXQgZ2V0Q29tbXVuaXR5UGx1Z2luRW50cmllcygpO1xuICBjb25zdCBub3JtYWxpemVkUXVlcnkgPSBxdWVyeS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gZW50cmllc1xuICAgIC5maWx0ZXIoKGVudHJ5KSA9PlxuICAgICAgZW50cnkuaWQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhub3JtYWxpemVkUXVlcnkpXG4gICAgICB8fCBlbnRyeS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobm9ybWFsaXplZFF1ZXJ5KVxuICAgICAgfHwgZW50cnkuYXV0aG9yLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobm9ybWFsaXplZFF1ZXJ5KVxuICAgICAgfHwgZW50cnkuZGVzY3JpcHRpb24udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhub3JtYWxpemVkUXVlcnkpXG4gICAgKVxuICAgIC5tYXAoKGVudHJ5KSA9PiAoe1xuICAgICAgaWQ6IGVudHJ5LmlkLFxuICAgICAgbmFtZTogZW50cnkubmFtZVxuICAgIH0pKTtcbn1cblxuLyoqXG4gKiBFbmFibGVzIG9yIGRpc2FibGVzIGEgY29tbXVuaXR5IHBsdWdpbiB0byBtYXRjaCB0aGUgZGVzaXJlZCBzdGF0ZS4gRGVsZWdhdGVzIHRvXG4gKiB7QGxpbmsgZW5hYmxlQ29tbXVuaXR5UGx1Z2lufSAvIHtAbGluayBkaXNhYmxlQ29tbXVuaXR5UGx1Z2lufSwgc28gaXQgaXMgaWRlbXBvdGVudC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBUb2dnbGVFbmFibGVDb21tdW5pdHlQbHVnaW5QYXJhbXN9LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBwbHVnaW4gbWF0Y2hlcyB0aGUgZGVzaXJlZCBlbmFibGVkIHN0YXRlLlxuICogQHRocm93cyBJZiBzZWxlY3RlZCBieSBgcGx1Z2luTmFtZWAgYW5kIHRoZSBuYW1lIGlzIG5vdCBsaXN0ZWQgaW4gT2JzaWRpYW4ncyBjb21tdW5pdHkgcGx1Z2lucyByZWdpc3RyeS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRvZ2dsZUVuYWJsZUNvbW11bml0eVBsdWdpbihwYXJhbXM6IFRvZ2dsZUVuYWJsZUNvbW11bml0eVBsdWdpblBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAocGFyYW1zLmlzRW5hYmxlZCkge1xuICAgIGF3YWl0IGVuYWJsZUNvbW11bml0eVBsdWdpbihwYXJhbXMpO1xuICB9IGVsc2Uge1xuICAgIGF3YWl0IGRpc2FibGVDb21tdW5pdHlQbHVnaW4ocGFyYW1zKTtcbiAgfVxufVxuXG4vKipcbiAqIEluc3RhbGxzIG9yIHVuaW5zdGFsbHMgYSBjb21tdW5pdHkgcGx1Z2luIHRvIG1hdGNoIHRoZSBkZXNpcmVkIHN0YXRlLiBEZWxlZ2F0ZXMgdG9cbiAqIHtAbGluayBpbnN0YWxsQ29tbXVuaXR5UGx1Z2lufSAvIHtAbGluayB1bmluc3RhbGxDb21tdW5pdHlQbHVnaW59LCBzbyBpdCBpcyBpZGVtcG90ZW50LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIFRvZ2dsZUluc3RhbGxDb21tdW5pdHlQbHVnaW5QYXJhbXN9LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBwbHVnaW4gbWF0Y2hlcyB0aGUgZGVzaXJlZCBpbnN0YWxsZWQgc3RhdGUuXG4gKiBAdGhyb3dzIElmIGluc3RhbGxpbmcgYW5kIHRoZSBwbHVnaW4gaXMgbm90IGxpc3RlZCBpbiBPYnNpZGlhbidzIGNvbW11bml0eSBwbHVnaW5zIHJlZ2lzdHJ5LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdG9nZ2xlSW5zdGFsbENvbW11bml0eVBsdWdpbihwYXJhbXM6IFRvZ2dsZUluc3RhbGxDb21tdW5pdHlQbHVnaW5QYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKHBhcmFtcy5pc0luc3RhbGxlZCkge1xuICAgIGF3YWl0IGluc3RhbGxDb21tdW5pdHlQbHVnaW4ocGFyYW1zKTtcbiAgfSBlbHNlIHtcbiAgICBhd2FpdCB1bmluc3RhbGxDb21tdW5pdHlQbHVnaW4ocGFyYW1zKTtcbiAgfVxufVxuXG4vKipcbiAqIFVuaW5zdGFsbHMgYSBjb21tdW5pdHkgcGx1Z2luIGlmIGl0IGlzIGN1cnJlbnRseSBpbnN0YWxsZWQuIElkZW1wb3RlbnQg4oCUIGEgbm8tb3Agd2hlbiB0aGUgcGx1Z2luIGlzXG4gKiBub3QgaW5zdGFsbGVkLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIFVuaW5zdGFsbENvbW11bml0eVBsdWdpblBhcmFtc30uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgdGhlIHBsdWdpbiBpcyB1bmluc3RhbGxlZC5cbiAqIEB0aHJvd3MgSWYgc2VsZWN0ZWQgYnkgYHBsdWdpbk5hbWVgIGFuZCB0aGUgbmFtZSBpcyBub3QgbGlzdGVkIGluIE9ic2lkaWFuJ3MgY29tbXVuaXR5IHBsdWdpbnMgcmVnaXN0cnkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1bmluc3RhbGxDb21tdW5pdHlQbHVnaW4ocGFyYW1zOiBVbmluc3RhbGxDb21tdW5pdHlQbHVnaW5QYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBhcHAgfSA9IHBhcmFtcztcbiAgY29uc3QgcGx1Z2luSWQgPSBhd2FpdCByZXNvbHZlQ29tbXVuaXR5UGx1Z2luSWQocGFyYW1zKTtcbiAgaWYgKCFPYmplY3QuaGFzT3duKGFwcC5wbHVnaW5zLm1hbmlmZXN0cywgcGx1Z2luSWQpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGF3YWl0IGFwcC5wbHVnaW5zLnVuaW5zdGFsbFBsdWdpbihwbHVnaW5JZCk7XG59XG5cbi8qKlxuICogVXBkYXRlcyBhbiBpbnN0YWxsZWQgY29tbXVuaXR5IHBsdWdpbiB0byBpdHMgbGF0ZXN0IHJlbGVhc2UsIHRoZSB3YXkgdGhlIGNvbW11bml0eSBwbHVnaW4gYnJvd3NlcidzIG93blxuICogYFVwZGF0ZWAgYnV0dG9uIGRvZXMuXG4gKlxuICogT2JzaWRpYW4ncyBgaW5zdGFsbFBsdWdpbmAgd3JpdGVzIHRoZSByZWxlYXNlJ3MgZmlsZXMgb3ZlciB0aGUgaW5zdGFsbGVkIGNvcHkgYW5kLCB3aGVuIHRoZSBwbHVnaW4gaXNcbiAqIHJ1bm5pbmcsIGRpc2FibGVzIGFuZCByZS1lbmFibGVzIGl0IHNvIHRoZSBuZXcgY29kZSBsb2FkcyDigJQgcmVhZCBmcm9tIHRoZSBzaGlwcGVkIGJ1bmRsZSAoYDEuMTQuNGApLCBub3RcbiAqIGFzc3VtZWQuIEl0IHJlcG9ydHMgaXRzIG93biBmYWlsdXJlcyAoYSBmYWlsZWQgZG93bmxvYWQsIGEgbWFuaWZlc3Qgd2hvc2UgaWQgZG9lcyBub3QgbWF0Y2gpIGFzIGEgbm90aWNlXG4gKiBhbmQgUkVUVVJOUyByYXRoZXIgdGhhbiB0aHJvd2luZywgc28gdGhlIGluc3RhbGxlZCBtYW5pZmVzdCBpcyByZS1yZWFkIGFmdGVyd2FyZHMgYW5kIGEgdmVyc2lvbiB0aGF0IGRpZFxuICogbm90IG1vdmUgdG8gdGhlIHJlbGVhc2UgaXMgdGhyb3duIGFzIGEgZmFpbHVyZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBVcGRhdGVDb21tdW5pdHlQbHVnaW5QYXJhbXN9LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gcmVzb2x2aW5nIHRvIHtAbGluayBVcGRhdGVDb21tdW5pdHlQbHVnaW5SZXN1bHQuVXBkYXRlZH0gb25jZSB0aGUgbGF0ZXN0IHJlbGVhc2VcbiAqIGlzIGluc3RhbGxlZCwgb3Ige0BsaW5rIFVwZGF0ZUNvbW11bml0eVBsdWdpblJlc3VsdC5BbHJlYWR5VXBUb0RhdGV9IHdoZW4gdGhlIGluc3RhbGxlZCBjb3B5IGlzIG5vdCBvbGRlclxuICogdGhhbiBpdC5cbiAqIEB0aHJvd3MgSWYgdGhlIHBsdWdpbiBpcyBub3QgaW5zdGFsbGVkLCBpcyBub3QgbGlzdGVkIGluIE9ic2lkaWFuJ3MgY29tbXVuaXR5IHBsdWdpbnMgcmVnaXN0cnksIG9yIHRoZVxuICogaW5zdGFsbCBkaWQgbm90IGxlYXZlIHRoZSBsYXRlc3QgcmVsZWFzZSBpbiBwbGFjZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZUNvbW11bml0eVBsdWdpbihwYXJhbXM6IFVwZGF0ZUNvbW11bml0eVBsdWdpblBhcmFtcyk6IFByb21pc2U8VXBkYXRlQ29tbXVuaXR5UGx1Z2luUmVzdWx0PiB7XG4gIGNvbnN0IHsgYXBwIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHBsdWdpbklkID0gYXdhaXQgcmVzb2x2ZUNvbW11bml0eVBsdWdpbklkKHBhcmFtcyk7XG4gIGNvbnN0IGluc3RhbGxlZE1hbmlmZXN0ID0gYXBwLnBsdWdpbnMubWFuaWZlc3RzW3BsdWdpbklkXTtcbiAgaWYgKCFpbnN0YWxsZWRNYW5pZmVzdCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgUGx1Z2luICcke3BsdWdpbklkfScgaXMgbm90IGluc3RhbGxlZCwgc28gaXQgY2Fubm90IGJlIHVwZGF0ZWQuYCk7XG4gIH1cblxuICBjb25zdCByZXBvID0gYXdhaXQgZ2V0Q29tbXVuaXR5UGx1Z2luUmVwbyhwbHVnaW5JZCk7XG4gIGlmICghcmVwbykge1xuICAgIHRocm93IG5ldyBFcnJvcihgUGx1Z2luICcke3BsdWdpbklkfScgd2FzIG5vdCBmb3VuZCBpbiB0aGUgT2JzaWRpYW4gY29tbXVuaXR5IHBsdWdpbnMgcmVnaXN0cnkuYCk7XG4gIH1cblxuICBjb25zdCB2ZXJzaW9uID0gYXdhaXQgZ2V0TGF0ZXN0UmVsZWFzZVZlcnNpb24ocmVwbyk7XG4gIGlmIChpc0F0TGVhc3RWZXJzaW9uKGluc3RhbGxlZE1hbmlmZXN0LnZlcnNpb24sIHZlcnNpb24pKSB7XG4gICAgcmV0dXJuIFVwZGF0ZUNvbW11bml0eVBsdWdpblJlc3VsdC5BbHJlYWR5VXBUb0RhdGU7XG4gIH1cblxuICBjb25zdCBtYW5pZmVzdCA9IGF3YWl0IGdldFBsdWdpbk1hbmlmZXN0KHJlcG8sIHZlcnNpb24pO1xuICBhd2FpdCBhcHAucGx1Z2lucy5pbnN0YWxsUGx1Z2luKHJlcG8sIHZlcnNpb24sIG1hbmlmZXN0KTtcblxuICBjb25zdCB1cGRhdGVkVmVyc2lvbiA9IGFwcC5wbHVnaW5zLm1hbmlmZXN0c1twbHVnaW5JZF0/LnZlcnNpb247XG4gIGlmICh1cGRhdGVkVmVyc2lvbiAhPT0gbWFuaWZlc3QudmVyc2lvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBVcGRhdGluZyBwbHVnaW4gJyR7cGx1Z2luSWR9JyB0byAke21hbmlmZXN0LnZlcnNpb259IGxlZnQgdmVyc2lvbiAke3VwZGF0ZWRWZXJzaW9uID8/ICcobm9uZSknfSBpbnN0YWxsZWQuIE9ic2lkaWFuIHJlcG9ydHMgdGhlIGNhdXNlIGFzIGEgbm90aWNlLmBcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIFVwZGF0ZUNvbW11bml0eVBsdWdpblJlc3VsdC5VcGRhdGVkO1xufVxuXG4vLyBXaGV0aGVyIGEgcGx1Z2luJ3MgYHBsdWdpblNldHRpbmdzQ29tcG9uZW50YCBjYW4gY29uZmlndXJlIGl0c2VsZiBpbiBwbGFjZS4gU3RydWN0dXJhbCByYXRoZXIgdGhhbiBhblxuLy8gYGluc3RhbmNlb2ZgOiB0aGUgcGx1Z2luIHdhcyBsb2FkZWQgZnJvbSBpdHMgb3duIGJ1bmRsZSwgc28gZXZlbiBhIHBsdWdpbiBidWlsdCBvbiB0aGlzIHZlcnkgbGlicmFyeVxuLy8gY2FycmllcyBpdHMgb3duIGNvcHkgb2YgdGhlIGNsYXNzIGFuZCB3b3VsZCBmYWlsIGFuIGlkZW50aXR5IGNoZWNrLlxuZnVuY3Rpb24gY2hlY2tIYXNFZGl0QW5kU2F2ZShzZXR0aW5nc0NvbXBvbmVudDogdW5rbm93bik6IHNldHRpbmdzQ29tcG9uZW50IGlzIEVkaXRhYmxlU2V0dGluZ3NDb21wb25lbnQge1xuICByZXR1cm4gdHlwZW9mIHNldHRpbmdzQ29tcG9uZW50ID09PSAnb2JqZWN0J1xuICAgICYmIHNldHRpbmdzQ29tcG9uZW50ICE9PSBudWxsXG4gICAgJiYgJ2VkaXRBbmRTYXZlJyBpbiBzZXR0aW5nc0NvbXBvbmVudFxuICAgICYmIHR5cGVvZiBzZXR0aW5nc0NvbXBvbmVudC5lZGl0QW5kU2F2ZSA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hDb21tdW5pdHlQbHVnaW5FbnRyaWVzKCk6IFByb21pc2U8Q29tbXVuaXR5UGx1Z2luRW50cnlbXT4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcXVlc3RVcmwoQ09NTVVOSVRZX1BMVUdJTlNfVVJMKTtcbiAgcmV0dXJuIHJlc3BvbnNlLmpzb24gYXMgQ29tbXVuaXR5UGx1Z2luRW50cnlbXTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0Q29tbXVuaXR5UGx1Z2luRW50cmllcygpOiBQcm9taXNlPENvbW11bml0eVBsdWdpbkVudHJ5W10+IHtcbiAgY29uc3QgY2FjaGUgPSBnZXRPYnNpZGlhbkRldlV0aWxzU3RhdGU8bnVsbCB8IFByb21pc2U8Q29tbXVuaXR5UGx1Z2luRW50cnlbXT4+KENPTU1VTklUWV9QTFVHSU5TX1NUQVRFX0tFWSwgbnVsbCk7XG4gIGNhY2hlLnZhbHVlID8/PSBmZXRjaENvbW11bml0eVBsdWdpbkVudHJpZXMoKTtcblxuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBjYWNoZS52YWx1ZTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjYWNoZS52YWx1ZSA9IG51bGw7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0UGx1Z2luTWFuaWZlc3QocmVwbzogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpOiBQcm9taXNlPFBsdWdpbk1hbmlmZXN0PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVxdWVzdFVybChgaHR0cHM6Ly9naXRodWIuY29tLyR7cmVwb30vcmVsZWFzZXMvZG93bmxvYWQvJHt2ZXJzaW9ufS9tYW5pZmVzdC5qc29uYCk7XG4gIHJldHVybiByZXNwb25zZS5qc29uIGFzIFBsdWdpbk1hbmlmZXN0O1xufVxuXG4vLyBSZWFkcyBhIGxvYWRlZCBwbHVnaW4ncyBgcGx1Z2luU2V0dGluZ3NDb21wb25lbnRgLCBvciBgbnVsbGAgd2hlbiBpdCBoYXMgbm9uZS4gVGFrZXMgYHVua25vd25gIGJlY2F1c2Vcbi8vIEEgcGx1Z2luIGlzIHVuZGVyIG5vIG9ibGlnYXRpb24gdG8gZXhwb3NlIG9uZSwgc28gdGhlcmUgaXMgbm8gdHlwZSB0byBuYXJyb3cgZnJvbS5cbmZ1bmN0aW9uIGdldFNldHRpbmdzQ29tcG9uZW50KHBsdWdpbjogdW5rbm93bik6IHVua25vd24ge1xuICByZXR1cm4gdHlwZW9mIHBsdWdpbiAhPT0gJ29iamVjdCcgfHwgcGx1Z2luID09PSBudWxsIHx8ICEoJ3BsdWdpblNldHRpbmdzQ29tcG9uZW50JyBpbiBwbHVnaW4pID8gbnVsbCA6IHBsdWdpbi5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudDtcbn1cblxuLy8gQSB2ZXJzaW9uIHRoYXQgY2Fubm90IGJlIHBhcnNlZCByZWFkcyBhcyBvbGRlciwgc28gYW4gdXBkYXRlIGlzIGF0dGVtcHRlZCByYXRoZXIgdGhhbiBza2lwcGVkOiB0aGUgaW5zdGFsbCdzXG4vLyBvd24gdmVyc2lvbiBjaGVjayBhZnRlcndhcmRzIHN0aWxsIGNhdGNoZXMgYSByZWxlYXNlIHRoYXQgZG9lcyBub3QgbW92ZSBpdC5cbmZ1bmN0aW9uIGlzQXRMZWFzdFZlcnNpb24oaW5zdGFsbGVkVmVyc2lvbjogc3RyaW5nLCBsYXRlc3RWZXJzaW9uOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gY29tcGFyZVZlcnNpb25zKGluc3RhbGxlZFZlcnNpb24sIGxhdGVzdFZlcnNpb24sICc+PScpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZUNvbW11bml0eVBsdWdpbklkKHJlZmVyZW5jZTogQ29tbXVuaXR5UGx1Z2luUmVmKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgaWYgKCdwbHVnaW5JZCcgaW4gcmVmZXJlbmNlKSB7XG4gICAgcmV0dXJuIHJlZmVyZW5jZS5wbHVnaW5JZDtcbiAgfVxuXG4gIGNvbnN0IGVudHJpZXMgPSBhd2FpdCBnZXRDb21tdW5pdHlQbHVnaW5FbnRyaWVzKCk7XG4gIGNvbnN0IGVudHJ5ID0gZW50cmllcy5maW5kKChjYW5kaWRhdGUpID0+IGNhbmRpZGF0ZS5uYW1lID09PSByZWZlcmVuY2UucGx1Z2luTmFtZSk7XG4gIGlmICghZW50cnkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFBsdWdpbiBuYW1lZCAnJHtyZWZlcmVuY2UucGx1Z2luTmFtZX0nIHdhcyBub3QgZm91bmQgaW4gdGhlIE9ic2lkaWFuIGNvbW11bml0eSBwbHVnaW5zIHJlZ2lzdHJ5LmApO1xuICB9XG4gIHJldHVybiBlbnRyeS5pZDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFB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O0FBQUEsRUFDVDtBQUVBLFFBQU0sV0FBVyxNQUFNLGtCQUFrQixNQUFNLE9BQU87QUFDdEQsUUFBTSxJQUFJLFFBQVEsY0FBYyxNQUFNLFNBQVMsUUFBUTtBQUV2RCxRQUFNLGlCQUFpQixJQUFJLFFBQVEsVUFBVSxRQUFRLEdBQUc7QUFDeEQsTUFBSSxtQkFBbUIsU0FBUyxTQUFTO0FBQ3ZDLFVBQU0sSUFBSTtBQUFBLE1BQ1Isb0JBQW9CLFFBQVEsUUFBUSxTQUFTLE9BQU8saUJBQWlCLGtCQUFrQixRQUFRO0FBQUEsSUFDakc7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUNUO0FBS0EsU0FBUyxvQkFBb0IsbUJBQTRFO0FBQ3ZHLFNBQU8sT0FBTyxzQkFBc0IsWUFDL0Isc0JBQXNCLFFBQ3RCLGlCQUFpQixxQkFDakIsT0FBTyxrQkFBa0IsZ0JBQWdCO0FBQ2hEO0FBRUEsZUFBZSw4QkFBK0Q7QUFDNUUsUUFBTSxXQUFXLFVBQU0sNEJBQVcscUJBQXFCO0FBQ3ZELFNBQU8sU0FBUztBQUNsQjtBQUVBLGVBQWUsNEJBQTZEO0FBQzFFLFFBQU0sWUFBUSwwREFBaUUsNkJBQTZCLElBQUk7QUFDaEgsUUFBTSxVQUFVLDRCQUE0QjtBQUU1QyxNQUFJO0FBQ0YsV0FBTyxNQUFNLE1BQU07QUFBQSxFQUNyQixTQUFTLE9BQU87QUFDZCxVQUFNLFFBQVE7QUFDZCxVQUFNO0FBQUEsRUFDUjtBQUNGO0FBRUEsZUFBZSxrQkFBa0IsTUFBYyxTQUEwQztBQUN2RixRQUFNLFdBQVcsVUFBTSw0QkFBVyxzQkFBc0IsSUFBSSxzQkFBc0IsT0FBTyxnQkFBZ0I7QUFDekcsU0FBTyxTQUFTO0FBQ2xCO0FBSUEsU0FBUyxxQkFBcUIsUUFBMEI7QUFDdEQsU0FBTyxPQUFPLFdBQVcsWUFBWSxXQUFXLFFBQVEsRUFBRSw2QkFBNkIsVUFBVSxPQUFPLE9BQU87QUFDakg7QUFJQSxTQUFTLGlCQUFpQixrQkFBMEIsZUFBZ0M7QUFDbEYsTUFBSTtBQUNGLGVBQU8sd0JBQUFDLFNBQWdCLGtCQUFrQixlQUFlLElBQUk7QUFBQSxFQUM5RCxRQUFRO0FBQ04sV0FBTztBQUFBLEVBQ1Q7QUFDRjtBQUVBLGVBQWUseUJBQXlCLFdBQWdEO0FBQ3RGLE1BQUksY0FBYyxXQUFXO0FBQzNCLFdBQU8sVUFBVTtBQUFBLEVBQ25CO0FBRUEsUUFBTSxVQUFVLE1BQU0sMEJBQTBCO0FBQ2hELFFBQU0sUUFBUSxRQUFRLEtBQUssQ0FBQyxjQUFjLFVBQVUsU0FBUyxVQUFVLFVBQVU7QUFDakYsTUFBSSxDQUFDLE9BQU87QUFDVixVQUFNLElBQUksTUFBTSxpQkFBaUIsVUFBVSxVQUFVLDZEQUE2RDtBQUFBLEVBQ3BIO0FBQ0EsU0FBTyxNQUFNO0FBQ2Y7IiwibmFtZXMiOlsiQ29uZmlndXJlQ29tbXVuaXR5UGx1Z2luUmVzdWx0IiwiVXBkYXRlQ29tbXVuaXR5UGx1Z2luUmVzdWx0IiwiY29tcGFyZVZlcnNpb25zIl19
346
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tdW5pdHktcGx1Z2lucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogUmVzb2x2ZXMsIHNlYXJjaGVzIGFuZCBtYW5hZ2VzIGNvbW11bml0eSBwbHVnaW5zIHRocm91Z2ggT2JzaWRpYW4ncyBwdWJsaWMgcGx1Z2luIHJlZ2lzdHJ5IGFuZFxuICogc3RvcmUtaW5zdGFsbCBwYXRoLlxuICpcbiAqIE9ic2lkaWFuJ3MgYGNvbW11bml0eS1wbHVnaW5zLmpzb25gIGlzIHRoZSBhdXRob3JpdGF0aXZlIHNvdXJjZSB0aGF0IG1hcHMgYSBwbHVnaW4gYGlkYCB0byBpdHNcbiAqIGBvd25lci9uYW1lYCBHaXRIdWIgcmVwb3NpdG9yeSDigJQgdGhlIHBsdWdpbiBtYW5pZmVzdCBpdHNlbGYgY2FycmllcyBubyByZXBvc2l0b3J5LiBUaGlzIG1vZHVsZSB1c2VzXG4gKiBpdCB0byBzZWFyY2ggdGhlIHJlZ2lzdHJ5LCB0byBsb2NhdGUgYSBwbHVnaW4ncyBHaXRIdWIgcmVsZWFzZXMgKGUuZy4gdG8gZG93bmxvYWQgaXRzIHNoaXBwZWRcbiAqIGRlbW8tdmF1bHQgYXJjaGl2ZSksIGFuZCB0byBpbnN0YWxsL3VwZGF0ZS91bmluc3RhbGwvZW5hYmxlL2Rpc2FibGUgYW4gYXJiaXRyYXJ5IGNvbW11bml0eSBwbHVnaW4g4oCUIHNlbGVjdGVkXG4gKiBieSBlaXRoZXIgaXRzIGBpZGAgb3IgaXRzIGRpc3BsYXkgYG5hbWVgIOKAlCB2aWEgT2JzaWRpYW4ncyBvd24gc3RvcmUgcGF0aCAoYGFwcC5wbHVnaW5zLmluc3RhbGxQbHVnaW5gXG4gKiArIGBlbmFibGVQbHVnaW5BbmRTYXZlYCksIHNvIGFueSBkZXYvZGVwbG95IG9yIHRvb2xpbmcgZmxvdyBjYW4gcmV1c2UgaXQuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIFBsdWdpbk1hbmlmZXN0XG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgY29tcGFyZSBhcyBjb21wYXJlVmVyc2lvbnMgfSBmcm9tICdjb21wYXJlLXZlcnNpb25zJztcbmltcG9ydCB7IHJlcXVlc3RVcmwgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGdldE9ic2lkaWFuTGliU3RhdGUgfSBmcm9tICcuL29ic2lkaWFuLWxpYi1zdGF0ZS50cyc7XG5cbi8qKlxuICogU2VsZWN0cyBhIGNvbW11bml0eSBwbHVnaW4gZWl0aGVyIGJ5IGl0cyBpZCAoe0BsaW5rIENvbW11bml0eVBsdWdpbkJ5SWRSZWZ9KSBvciBieSBpdHMgZGlzcGxheSBuYW1lXG4gKiAoe0BsaW5rIENvbW11bml0eVBsdWdpbkJ5TmFtZVJlZn0pLlxuICovXG5leHBvcnQgdHlwZSBDb21tdW5pdHlQbHVnaW5SZWYgPSBDb21tdW5pdHlQbHVnaW5CeUlkUmVmIHwgQ29tbXVuaXR5UGx1Z2luQnlOYW1lUmVmO1xuXG4vKipcbiAqIEEgc2luZ2xlIHJlc3VsdCBvZiB7QGxpbmsgc2VhcmNoQ29tbXVuaXR5UGx1Z2luc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbXVuaXR5UGx1Z2luU2VhcmNoUmVzdWx0IHtcbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gaWQuXG4gICAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luIGRpc3BsYXkgbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgY29uZmlndXJlQ29tbXVuaXR5UGx1Z2lufS4gU2VsZWN0cyB0aGUgcGx1Z2luIGJ5IGVpdGhlciBgcGx1Z2luSWRgIG9yXG4gKiBgcGx1Z2luTmFtZWAuXG4gKi9cbmV4cG9ydCB0eXBlIENvbmZpZ3VyZUNvbW11bml0eVBsdWdpblBhcmFtcyA9IENvbW11bml0eVBsdWdpbk9wZXJhdGlvbkNvbnRleHQgJiBDb21tdW5pdHlQbHVnaW5SZWYgJiBDb21tdW5pdHlQbHVnaW5TZXR0aW5ncztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZGlzYWJsZUNvbW11bml0eVBsdWdpbn0uIFNlbGVjdHMgdGhlIHBsdWdpbiBieSBlaXRoZXIgYHBsdWdpbklkYCBvclxuICogYHBsdWdpbk5hbWVgLlxuICovXG5leHBvcnQgdHlwZSBEaXNhYmxlQ29tbXVuaXR5UGx1Z2luUGFyYW1zID0gQ29tbXVuaXR5UGx1Z2luT3BlcmF0aW9uQ29udGV4dCAmIENvbW11bml0eVBsdWdpblJlZjtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZW5hYmxlQ29tbXVuaXR5UGx1Z2lufS4gU2VsZWN0cyB0aGUgcGx1Z2luIGJ5IGVpdGhlciBgcGx1Z2luSWRgIG9yXG4gKiBgcGx1Z2luTmFtZWAuXG4gKi9cbmV4cG9ydCB0eXBlIEVuYWJsZUNvbW11bml0eVBsdWdpblBhcmFtcyA9IENvbW11bml0eVBsdWdpbk9wZXJhdGlvbkNvbnRleHQgJiBDb21tdW5pdHlQbHVnaW5SZWY7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGluc3RhbGxDb21tdW5pdHlQbHVnaW59LiBTZWxlY3RzIHRoZSBwbHVnaW4gYnkgZWl0aGVyIGBwbHVnaW5JZGAgb3JcbiAqIGBwbHVnaW5OYW1lYC5cbiAqL1xuZXhwb3J0IHR5cGUgSW5zdGFsbENvbW11bml0eVBsdWdpblBhcmFtcyA9IENvbW11bml0eVBsdWdpbk9wZXJhdGlvbkNvbnRleHQgJiBDb21tdW5pdHlQbHVnaW5SZWY7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGluc3RhbGxDb25maWd1cmVFbmFibGVDb21tdW5pdHlQbHVnaW59LiBTZWxlY3RzIHRoZSBwbHVnaW4gYnkgZWl0aGVyIGBwbHVnaW5JZGBcbiAqIG9yIGBwbHVnaW5OYW1lYDsgYHNldHRpbmdzYCBpcyBvcHRpb25hbCAob21pdCBmb3IgYSBwbHVnaW4gdGhhdCBuZWVkcyBubyBjb25maWd1cmF0aW9uKS5cbiAqL1xuZXhwb3J0IHR5cGUgSW5zdGFsbENvbmZpZ3VyZUVuYWJsZUNvbW11bml0eVBsdWdpblBhcmFtcyA9IENvbW11bml0eVBsdWdpbk9wZXJhdGlvbkNvbnRleHQgJiBDb21tdW5pdHlQbHVnaW5SZWYgJiBQYXJ0aWFsPENvbW11bml0eVBsdWdpblNldHRpbmdzPjtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgdG9nZ2xlRW5hYmxlQ29tbXVuaXR5UGx1Z2lufS4gU2VsZWN0cyB0aGUgcGx1Z2luIGJ5IGVpdGhlciBgcGx1Z2luSWRgIG9yXG4gKiBgcGx1Z2luTmFtZWAuXG4gKi9cbmV4cG9ydCB0eXBlIFRvZ2dsZUVuYWJsZUNvbW11bml0eVBsdWdpblBhcmFtcyA9IENvbW11bml0eVBsdWdpbk9wZXJhdGlvbkNvbnRleHQgJiBDb21tdW5pdHlQbHVnaW5SZWYgJiBDb21tdW5pdHlQbHVnaW5Ub2dnbGVFbmFibGVTdGF0ZTtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgdG9nZ2xlSW5zdGFsbENvbW11bml0eVBsdWdpbn0uIFNlbGVjdHMgdGhlIHBsdWdpbiBieSBlaXRoZXIgYHBsdWdpbklkYCBvclxuICogYHBsdWdpbk5hbWVgLlxuICovXG5leHBvcnQgdHlwZSBUb2dnbGVJbnN0YWxsQ29tbXVuaXR5UGx1Z2luUGFyYW1zID0gQ29tbXVuaXR5UGx1Z2luT3BlcmF0aW9uQ29udGV4dCAmIENvbW11bml0eVBsdWdpblJlZiAmIENvbW11bml0eVBsdWdpblRvZ2dsZUluc3RhbGxTdGF0ZTtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgdW5pbnN0YWxsQ29tbXVuaXR5UGx1Z2lufS4gU2VsZWN0cyB0aGUgcGx1Z2luIGJ5IGVpdGhlciBgcGx1Z2luSWRgIG9yXG4gKiBgcGx1Z2luTmFtZWAuXG4gKi9cbmV4cG9ydCB0eXBlIFVuaW5zdGFsbENvbW11bml0eVBsdWdpblBhcmFtcyA9IENvbW11bml0eVBsdWdpbk9wZXJhdGlvbkNvbnRleHQgJiBDb21tdW5pdHlQbHVnaW5SZWY7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHVwZGF0ZUNvbW11bml0eVBsdWdpbn0uIFNlbGVjdHMgdGhlIHBsdWdpbiBieSBlaXRoZXIgYHBsdWdpbklkYCBvciBgcGx1Z2luTmFtZWAuXG4gKi9cbmV4cG9ydCB0eXBlIFVwZGF0ZUNvbW11bml0eVBsdWdpblBhcmFtcyA9IENvbW11bml0eVBsdWdpbk9wZXJhdGlvbkNvbnRleHQgJiBDb21tdW5pdHlQbHVnaW5SZWY7XG5cbi8qKlxuICogU2VsZWN0cyBhIGNvbW11bml0eSBwbHVnaW4gYnkgaXRzIGlkLlxuICovXG5pbnRlcmZhY2UgQ29tbXVuaXR5UGx1Z2luQnlJZFJlZiB7XG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luIGlkLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBTZWxlY3RzIGEgY29tbXVuaXR5IHBsdWdpbiBieSBpdHMgZGlzcGxheSBuYW1lIChhcyBsaXN0ZWQgaW4gT2JzaWRpYW4ncyBjb21tdW5pdHkgcmVnaXN0cnkpLlxuICovXG5pbnRlcmZhY2UgQ29tbXVuaXR5UGx1Z2luQnlOYW1lUmVmIHtcbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gZGlzcGxheSBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgc2luZ2xlIGVudHJ5IGluIE9ic2lkaWFuJ3MgYGNvbW11bml0eS1wbHVnaW5zLmpzb25gIHJlZ2lzdHJ5LlxuICovXG5pbnRlcmZhY2UgQ29tbXVuaXR5UGx1Z2luRW50cnkge1xuICAvKipcbiAgICogVGhlIHBsdWdpbiBhdXRob3IuXG4gICAqL1xuICByZWFkb25seSBhdXRob3I6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBsdWdpbiBkZXNjcmlwdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gaWQuXG4gICAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luIGRpc3BsYXkgbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBsdWdpbidzIGBvd25lci9uYW1lYCBHaXRIdWIgcmVwb3NpdG9yeS5cbiAgICovXG4gIHJlYWRvbmx5IHJlcG86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlIGEgY29tbXVuaXR5LXBsdWdpbiBvcGVyYXRpb24gcnVucyBhZ2FpbnN0LlxuICovXG5pbnRlcmZhY2UgQ29tbXVuaXR5UGx1Z2luT3BlcmF0aW9uQ29udGV4dCB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG59XG5cbi8qKlxuICogVGhlIHNldHRpbmdzIHRvIG1lcmdlIGludG8gYSBjb21tdW5pdHkgcGx1Z2luJ3MgYGRhdGEuanNvbmAuXG4gKi9cbmludGVyZmFjZSBDb21tdW5pdHlQbHVnaW5TZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBUaGUgc2V0dGluZ3Mgb2JqZWN0IHNoYWxsb3ctbWVyZ2VkIG92ZXIgdGhlIHBsdWdpbidzIGV4aXN0aW5nIGBkYXRhLmpzb25gICh0aGUgZmlsZSBpcyBjcmVhdGVkIGlmXG4gICAqIGFic2VudCkuXG4gICAqL1xuICByZWFkb25seSBzZXR0aW5nczogb2JqZWN0O1xufVxuXG4vKipcbiAqIFRoZSBkZXNpcmVkIGVuYWJsZWQgc3RhdGUgZm9yIHtAbGluayB0b2dnbGVFbmFibGVDb21tdW5pdHlQbHVnaW59LlxuICovXG5pbnRlcmZhY2UgQ29tbXVuaXR5UGx1Z2luVG9nZ2xlRW5hYmxlU3RhdGUge1xuICAvKipcbiAgICogVGhlIGRlc2lyZWQgZW5hYmxlZCBzdGF0ZTogYHRydWVgIGVuYWJsZXMgdGhlIHBsdWdpbiwgYGZhbHNlYCBkaXNhYmxlcyBpdC5cbiAgICovXG4gIHJlYWRvbmx5IGlzRW5hYmxlZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgZGVzaXJlZCBpbnN0YWxsZWQgc3RhdGUgZm9yIHtAbGluayB0b2dnbGVJbnN0YWxsQ29tbXVuaXR5UGx1Z2lufS5cbiAqL1xuaW50ZXJmYWNlIENvbW11bml0eVBsdWdpblRvZ2dsZUluc3RhbGxTdGF0ZSB7XG4gIC8qKlxuICAgKiBUaGUgZGVzaXJlZCBpbnN0YWxsZWQgc3RhdGU6IGB0cnVlYCBpbnN0YWxscyB0aGUgcGx1Z2luLCBgZmFsc2VgIHVuaW5zdGFsbHMgaXQuXG4gICAqL1xuICByZWFkb25seSBpc0luc3RhbGxlZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgb25lIG1ldGhvZCB7QGxpbmsgY29uZmlndXJlQ29tbXVuaXR5UGx1Z2lufSBuZWVkcyBmcm9tIGEgcGx1Z2luJ3Mgc2V0dGluZ3MgY29tcG9uZW50IHRvIGNvbmZpZ3VyZVxuICogaXQgbGl2ZS4gRGVjbGFyZWQgc3RydWN0dXJhbGx5IHJhdGhlciB0aGFuIGltcG9ydGluZyBgUGx1Z2luU2V0dGluZ3NDb21wb25lbnRgLCBzbyBhIHBsdWdpbiBidWlsdCBvblxuICogYW55IHZlcnNpb24gb2YgaXQgLS0gb3Igb24gaXRzIG93biBlcXVpdmFsZW50IC0tIGlzIGNvbmZpZ3VyYWJsZSB3aXRob3V0IGEgc2hhcmVkIG5vbWluYWwgdHlwZS5cbiAqL1xuaW50ZXJmYWNlIEVkaXRhYmxlU2V0dGluZ3NDb21wb25lbnQge1xuICBlZGl0QW5kU2F2ZTogKHNldHRpbmdzRWRpdG9yOiAoc2V0dGluZ3M6IG9iamVjdCkgPT4gdm9pZCkgPT4gUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBUaGUgc3Vic2V0IG9mIGEgR2l0SHViIHJlbGVhc2Ugd2UgcmVhZC5cbiAqL1xuaW50ZXJmYWNlIEdpdEh1YlJlbGVhc2Uge1xuICAvKipcbiAgICogVGhlIHJlbGVhc2UgdGFnLCBhIGJhcmUgdmVyc2lvbiBzdWNoIGFzIGAxLjIuM2AuXG4gICAqL1xuICByZWFkb25seSB0YWdfbmFtZTogc3RyaW5nO1xufVxuXG5jb25zdCBDT01NVU5JVFlfUExVR0lOU19TVEFURV9LRVkgPSAnY29tbXVuaXR5UGx1Z2luRW50cmllc1Byb21pc2UnO1xuY29uc3QgQ09NTVVOSVRZX1BMVUdJTlNfVVJMID0gJ2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vYnNpZGlhbm1kL29ic2lkaWFuLXJlbGVhc2VzL0hFQUQvY29tbXVuaXR5LXBsdWdpbnMuanNvbic7XG5jb25zdCBEQVRBX0pTT05fSU5ERU5UID0gMjtcblxuLyoqXG4gKiBUaGUgcmVzdWx0IG9mIHtAbGluayBjb25maWd1cmVDb21tdW5pdHlQbHVnaW59LlxuICovXG5leHBvcnQgZW51bSBDb25maWd1cmVDb21tdW5pdHlQbHVnaW5SZXN1bHQge1xuICAvKipcbiAgICogVGhlIHNldHRpbmdzIHdlcmUgYXBwbGllZCB0aHJvdWdoIHRoZSBydW5uaW5nIHBsdWdpbidzIG93biBzZXR0aW5ncyBjb21wb25lbnQsIHdoaWNoIGJvdGggdXBkYXRlZFxuICAgKiB0aGVtIGluIG1lbW9yeSBhbmQgcGVyc2lzdGVkIHRoZW0uIFRoZSBwbHVnaW4gaXMgYWxyZWFkeSB1c2luZyB0aGVtLCBzbyBpdCBtdXN0IE5PVCBiZSByZWxvYWRlZC5cbiAgICovXG4gIEFwcGxpZWRMaXZlID0gJ2FwcGxpZWRMaXZlJyxcblxuICAvKipcbiAgICogVGhlIHNldHRpbmdzIHdlcmUgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBwbHVnaW4ncyBgZGF0YS5qc29uYCwgc28gbm90aGluZyB3YXMgd3JpdHRlbi5cbiAgICovXG4gIFNraXBwZWQgPSAnc2tpcHBlZCcsXG5cbiAgLyoqXG4gICAqIFRoZSBzZXR0aW5ncyB3ZXJlIG1lcmdlZCBpbnRvIHRoZSBwbHVnaW4ncyBgZGF0YS5qc29uYCwgd2hpY2ggd2FzIHdyaXR0ZW4uXG4gICAqL1xuICBTdWNjZXNzID0gJ3N1Y2Nlc3MnXG59XG5cbi8qKlxuICogVGhlIHJlc3VsdCBvZiB7QGxpbmsgdXBkYXRlQ29tbXVuaXR5UGx1Z2lufS5cbiAqL1xuZXhwb3J0IGVudW0gVXBkYXRlQ29tbXVuaXR5UGx1Z2luUmVzdWx0IHtcbiAgLyoqXG4gICAqIFRoZSBpbnN0YWxsZWQgY29weSBpcyBhbHJlYWR5IGF0IChvciBwYXN0KSB0aGUgbGF0ZXN0IHJlbGVhc2UsIHNvIG5vdGhpbmcgd2FzIGRvd25sb2FkZWQuXG4gICAqL1xuICBBbHJlYWR5VXBUb0RhdGUgPSAnYWxyZWFkeVVwVG9EYXRlJyxcblxuICAvKipcbiAgICogVGhlIGxhdGVzdCByZWxlYXNlIHdhcyBpbnN0YWxsZWQgb3ZlciB0aGUgb2xkIGNvcHksIHdoaWNoIE9ic2lkaWFuIHJlbG9hZGVkIGlmIGl0IHdhcyBydW5uaW5nLlxuICAgKi9cbiAgVXBkYXRlZCA9ICd1cGRhdGVkJ1xufVxuXG4vKipcbiAqIENvbmZpZ3VyZXMgYSBjb21tdW5pdHkgcGx1Z2luLCBwcmVmZXJyaW5nIHRoZSBydW5uaW5nIHBsdWdpbidzIG93biBzZXR0aW5ncyBjb21wb25lbnQgb3ZlciBpdHNcbiAqIGBkYXRhLmpzb25gLlxuICpcbiAqIFdoZW4gdGhlIHBsdWdpbiBpcyBsb2FkZWQgQU5EIGV4cG9zZXMgYSBgcGx1Z2luU2V0dGluZ3NDb21wb25lbnRgIHdpdGggYW4gYGVkaXRBbmRTYXZlYCBtZXRob2QsIHRoZVxuICogc2V0dGluZ3MgYXJlIHNoYWxsb3ctbWVyZ2VkIHRocm91Z2ggaXQ6IHRoZXkgdGFrZSBlZmZlY3QgaW1tZWRpYXRlbHkgYW5kIGFyZSBwZXJzaXN0ZWQsIHNvIHRoZSBwbHVnaW5cbiAqIG5lZWRzIG5vIHJlbG9hZCBhbmQge0BsaW5rIENvbmZpZ3VyZUNvbW11bml0eVBsdWdpblJlc3VsdC5BcHBsaWVkTGl2ZX0gaXMgcmV0dXJuZWQuIFRoaXMgaXMgd2hhdCBsZXRzIGFcbiAqIHBsdWdpbidzIG93biBzY3JpcHQgcmVjb25maWd1cmUgaXQgd2l0aG91dCB0aGUgZGlzYWJsZS9lbmFibGUgY3ljbGUgdGhhdCB3b3VsZCB0ZWFyIGRvd24gdGhlIHZlcnkgY29kZVxuICogZG9pbmcgdGhlIHJlY29uZmlndXJpbmcuIE5vdGUgdGhhdCB0aGlzIHBhdGggcnVucyB0aGUgcGx1Z2luJ3Mgc2V0dGluZyB2YWxpZGF0b3JzLCBzbyBhbiBpbnZhbGlkIHZhbHVlXG4gKiBpcyByZXBsYWNlZCBieSBpdHMgZGVmYXVsdCByYXRoZXIgdGhhbiB3cml0dGVuIHRocm91Z2ggdmVyYmF0aW0uXG4gKlxuICogT3RoZXJ3aXNlIHRoZSBzZXR0aW5ncyBhcmUgd3JpdHRlbiBpbnRvIHRoZSBwbHVnaW4ncyBgZGF0YS5qc29uYCwgc2hhbGxvdy1tZXJnZWQgb3ZlciBhbnkgZXhpc3RpbmdcbiAqIHNldHRpbmdzIChjcmVhdGluZyB0aGUgZmlsZSBpZiBhYnNlbnQpLiBXcml0aW5nIHNldHRpbmdzIEJFRk9SRSB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgbWFrZXMgaXQgbG9hZFxuICogYWxyZWFkeSBjb25maWd1cmVkLCB3aXRoIG5vIHJlbG9hZC4gQSBuby1vcCB3cml0ZSBpcyBza2lwcGVkOiB3aGVuIHRoZSBtZXJnZSBjaGFuZ2VzIG5vdGhpbmcsIHRoZSBmaWxlXG4gKiBpcyBsZWZ0IHVudG91Y2hlZCBhbmQge0BsaW5rIENvbmZpZ3VyZUNvbW11bml0eVBsdWdpblJlc3VsdC5Ta2lwcGVkfSBpcyByZXR1cm5lZCwgc28gYSBjYWxsZXIgY2FuIGF2b2lkXG4gKiByZWxvYWRpbmcgYW4gYWxyZWFkeS1jb3JyZWN0bHktY29uZmlndXJlZCBwbHVnaW4uXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB7QGxpbmsgQ29uZmlndXJlQ29tbXVuaXR5UGx1Z2luUGFyYW1zfS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8ge0BsaW5rIENvbmZpZ3VyZUNvbW11bml0eVBsdWdpblJlc3VsdC5BcHBsaWVkTGl2ZX0gaWYgdGhlXG4gKiBydW5uaW5nIHBsdWdpbiBhcHBsaWVkIHRoZW0gaXRzZWxmIChubyByZWxvYWQgbmVlZGVkKSwge0BsaW5rIENvbmZpZ3VyZUNvbW11bml0eVBsdWdpblJlc3VsdC5TdWNjZXNzfSBpZlxuICogdGhlIGBkYXRhLmpzb25gIGNvbnRlbnQgY2hhbmdlZCAoYW5kIHdhcyB3cml0dGVuKSwgb3Ige0BsaW5rIENvbmZpZ3VyZUNvbW11bml0eVBsdWdpblJlc3VsdC5Ta2lwcGVkfSBpZlxuICogdGhlIHNldHRpbmdzIHdlcmUgYWxyZWFkeSBwcmVzZW50IChub3RoaW5nIHdyaXR0ZW4pLlxuICogQHRocm93cyBJZiBzZWxlY3RlZCBieSBgcGx1Z2luTmFtZWAgYW5kIHRoZSBuYW1lIGlzIG5vdCBsaXN0ZWQgaW4gT2JzaWRpYW4ncyBjb21tdW5pdHkgcGx1Z2lucyByZWdpc3RyeS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvbmZpZ3VyZUNvbW11bml0eVBsdWdpbihwYXJhbXM6IENvbmZpZ3VyZUNvbW11bml0eVBsdWdpblBhcmFtcyk6IFByb21pc2U8Q29uZmlndXJlQ29tbXVuaXR5UGx1Z2luUmVzdWx0PiB7XG4gIGNvbnN0IHsgYXBwLCBzZXR0aW5ncyB9ID0gcGFyYW1zO1xuICBjb25zdCBwbHVnaW5JZCA9IGF3YWl0IHJlc29sdmVDb21tdW5pdHlQbHVnaW5JZChwYXJhbXMpO1xuXG4gIGNvbnN0IHNldHRpbmdzQ29tcG9uZW50ID0gZ2V0U2V0dGluZ3NDb21wb25lbnQoYXBwLnBsdWdpbnMucGx1Z2luc1twbHVnaW5JZF0pO1xuICBpZiAoY2hlY2tIYXNFZGl0QW5kU2F2ZShzZXR0aW5nc0NvbXBvbmVudCkpIHtcbiAgICBhd2FpdCBzZXR0aW5nc0NvbXBvbmVudC5lZGl0QW5kU2F2ZSgocGx1Z2luU2V0dGluZ3MpID0+IHtcbiAgICAgIE9iamVjdC5hc3NpZ24ocGx1Z2luU2V0dGluZ3MsIHNldHRpbmdzKTtcbiAgICB9KTtcbiAgICByZXR1cm4gQ29uZmlndXJlQ29tbXVuaXR5UGx1Z2luUmVzdWx0LkFwcGxpZWRMaXZlO1xuICB9XG5cbiAgY29uc3QgZGF0YVBhdGggPSBgJHthcHAudmF1bHQuY29uZmlnRGlyfS9wbHVnaW5zLyR7cGx1Z2luSWR9L2RhdGEuanNvbmA7XG5cbiAgbGV0IGRhdGE6IG9iamVjdCA9IHt9O1xuICBpZiAoYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIuZXhpc3RzKGRhdGFQYXRoKSkge1xuICAgIGNvbnN0IHBhcnNlZDogdW5rbm93biA9IEpTT04ucGFyc2UoYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIucmVhZChkYXRhUGF0aCkpO1xuICAgIGlmIChwYXJzZWQgIT09IG51bGwgJiYgdHlwZW9mIHBhcnNlZCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGRhdGEgPSBwYXJzZWQ7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2VyaWFsaXplZEJlZm9yZSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICBPYmplY3QuYXNzaWduKGRhdGEsIHNldHRpbmdzKTtcbiAgaWYgKEpTT04uc3RyaW5naWZ5KGRhdGEpID09PSBzZXJpYWxpemVkQmVmb3JlKSB7XG4gICAgcmV0dXJuIENvbmZpZ3VyZUNvbW11bml0eVBsdWdpblJlc3VsdC5Ta2lwcGVkO1xuICB9XG5cbiAgY29uc3Qgc2VyaWFsaXplZCA9IFN0cmluZyhKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCBEQVRBX0pTT05fSU5ERU5UKSk7XG4gIGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLndyaXRlKGRhdGFQYXRoLCBgJHtzZXJpYWxpemVkfVxcbmApO1xuICByZXR1cm4gQ29uZmlndXJlQ29tbXVuaXR5UGx1Z2luUmVzdWx0LlN1Y2Nlc3M7XG59XG5cbi8qKlxuICogRGlzYWJsZXMgYSBjb21tdW5pdHkgcGx1Z2luIChwZXJzaXN0aW5nIHRoZSBjaGFuZ2UpIGlmIGl0IGlzIGN1cnJlbnRseSBlbmFibGVkLiBJZGVtcG90ZW50IOKAlCBhIG5vLW9wXG4gKiB3aGVuIHRoZSBwbHVnaW4gaXMgYWxyZWFkeSBkaXNhYmxlZC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBEaXNhYmxlQ29tbXVuaXR5UGx1Z2luUGFyYW1zfS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgcGx1Z2luIGlzIGRpc2FibGVkLlxuICogQHRocm93cyBJZiBzZWxlY3RlZCBieSBgcGx1Z2luTmFtZWAgYW5kIHRoZSBuYW1lIGlzIG5vdCBsaXN0ZWQgaW4gT2JzaWRpYW4ncyBjb21tdW5pdHkgcGx1Z2lucyByZWdpc3RyeS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRpc2FibGVDb21tdW5pdHlQbHVnaW4ocGFyYW1zOiBEaXNhYmxlQ29tbXVuaXR5UGx1Z2luUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgYXBwIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHBsdWdpbklkID0gYXdhaXQgcmVzb2x2ZUNvbW11bml0eVBsdWdpbklkKHBhcmFtcyk7XG4gIGlmICghYXBwLnBsdWdpbnMuZW5hYmxlZFBsdWdpbnMuaGFzKHBsdWdpbklkKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBhd2FpdCBhcHAucGx1Z2lucy5kaXNhYmxlUGx1Z2luQW5kU2F2ZShwbHVnaW5JZCk7XG59XG5cbi8qKlxuICogRW5hYmxlcyBhIGNvbW11bml0eSBwbHVnaW4gKHBlcnNpc3RpbmcgdGhlIGNoYW5nZSkgaWYgaXQgaXMgbm90IGFscmVhZHkgZW5hYmxlZC4gSWRlbXBvdGVudCDigJQgYSBuby1vcFxuICogd2hlbiB0aGUgcGx1Z2luIGlzIGFscmVhZHkgZW5hYmxlZC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBFbmFibGVDb21tdW5pdHlQbHVnaW5QYXJhbXN9LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBwbHVnaW4gaXMgZW5hYmxlZC5cbiAqIEB0aHJvd3MgSWYgc2VsZWN0ZWQgYnkgYHBsdWdpbk5hbWVgIGFuZCB0aGUgbmFtZSBpcyBub3QgbGlzdGVkIGluIE9ic2lkaWFuJ3MgY29tbXVuaXR5IHBsdWdpbnMgcmVnaXN0cnkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbmFibGVDb21tdW5pdHlQbHVnaW4ocGFyYW1zOiBFbmFibGVDb21tdW5pdHlQbHVnaW5QYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBhcHAgfSA9IHBhcmFtcztcbiAgY29uc3QgcGx1Z2luSWQgPSBhd2FpdCByZXNvbHZlQ29tbXVuaXR5UGx1Z2luSWQocGFyYW1zKTtcbiAgaWYgKGFwcC5wbHVnaW5zLmVuYWJsZWRQbHVnaW5zLmhhcyhwbHVnaW5JZCkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgYXdhaXQgYXBwLnBsdWdpbnMuZW5hYmxlUGx1Z2luQW5kU2F2ZShwbHVnaW5JZCk7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGBvd25lci9uYW1lYCBHaXRIdWIgcmVwb3NpdG9yeSBvZiBhIGNvbW11bml0eSBwbHVnaW4gZnJvbSBPYnNpZGlhbidzIHB1YmxpY1xuICogYGNvbW11bml0eS1wbHVnaW5zLmpzb25gIHJlZ2lzdHJ5LlxuICpcbiAqIFRoZSByZWdpc3RyeSBpcyBmZXRjaGVkIG9uY2UgYW5kIGNhY2hlZCBvbiB0aGUgc2hhcmVkIHBsdWdpbiBzdGF0ZSBmb3Igc3Vic2VxdWVudCBjYWxsczsgYSBmYWlsZWRcbiAqIGZldGNoIGlzIG5vdCBjYWNoZWQsIHNvIGEgbGF0ZXIgY2FsbCByZXRyaWVzLlxuICpcbiAqIEBwYXJhbSBwbHVnaW5JZCAtIFRoZSBwbHVnaW4gaWQgdG8gbG9vayB1cC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHJlc29sdmluZyB0byB0aGUgcGx1Z2luJ3MgYG93bmVyL25hbWVgIHJlcG9zaXRvcnksIG9yIGBudWxsYCBpZiB0aGVcbiAqIHBsdWdpbiBpcyBub3QgbGlzdGVkIGluIHRoZSByZWdpc3RyeS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldENvbW11bml0eVBsdWdpblJlcG8ocGx1Z2luSWQ6IHN0cmluZyk6IFByb21pc2U8bnVsbCB8IHN0cmluZz4ge1xuICBjb25zdCBlbnRyaWVzID0gYXdhaXQgZ2V0Q29tbXVuaXR5UGx1Z2luRW50cmllcygpO1xuICBjb25zdCBlbnRyeSA9IGVudHJpZXMuZmluZCgoY2FuZGlkYXRlKSA9PiBjYW5kaWRhdGUuaWQgPT09IHBsdWdpbklkKTtcbiAgcmV0dXJuIGVudHJ5Py5yZXBvID8/IG51bGw7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGxhdGVzdCByZWxlYXNlIHZlcnNpb24gKHRoZSByZWxlYXNlIGB0YWdfbmFtZWAsIGEgYmFyZSB2ZXJzaW9uIHN1Y2ggYXMgYDEuMi4zYCkgb2YgYVxuICogR2l0SHViIHJlcG9zaXRvcnkuXG4gKlxuICogQHBhcmFtIHJlcG8gLSBUaGUgYG93bmVyL25hbWVgIEdpdEh1YiByZXBvc2l0b3J5LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gcmVzb2x2aW5nIHRvIHRoZSBsYXRlc3QgcmVsZWFzZSB2ZXJzaW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0TGF0ZXN0UmVsZWFzZVZlcnNpb24ocmVwbzogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZXF1ZXN0VXJsKGBodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zLyR7cmVwb30vcmVsZWFzZXMvbGF0ZXN0YCk7XG4gIGNvbnN0IHJlbGVhc2UgPSByZXNwb25zZS5qc29uIGFzIEdpdEh1YlJlbGVhc2U7XG4gIHJldHVybiByZWxlYXNlLnRhZ19uYW1lO1xufVxuXG4vKipcbiAqIEluc3RhbGxzIGEgY29tbXVuaXR5IHBsdWdpbiBmcm9tIHRoZSBvZmZpY2lhbCBzdG9yZSBpZiBpdCBpcyBub3QgYWxyZWFkeSBpbnN0YWxsZWQuIElkZW1wb3RlbnQg4oCUIGFcbiAqIG5vLW9wIHdoZW4gdGhlIHBsdWdpbiBpcyBhbHJlYWR5IGluc3RhbGxlZC4gUmVzb2x2ZXMgdGhlIHBsdWdpbidzIHJlcG9zaXRvcnkgZnJvbSBPYnNpZGlhbidzXG4gKiBjb21tdW5pdHkgcmVnaXN0cnksIHJlYWRzIHRoZSBsYXRlc3QgcmVsZWFzZSB2ZXJzaW9uIGFuZCBpdHMgbWFuaWZlc3QsIGFuZCBpbnN0YWxscyBpdCB0aHJvdWdoXG4gKiBPYnNpZGlhbidzIG93biBgaW5zdGFsbFBsdWdpbmAgcGF0aC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBJbnN0YWxsQ29tbXVuaXR5UGx1Z2luUGFyYW1zfS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgcGx1Z2luIGlzIGluc3RhbGxlZC5cbiAqIEB0aHJvd3MgSWYgdGhlIHBsdWdpbiBpcyBub3QgbGlzdGVkIGluIE9ic2lkaWFuJ3MgY29tbXVuaXR5IHBsdWdpbnMgcmVnaXN0cnkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbnN0YWxsQ29tbXVuaXR5UGx1Z2luKHBhcmFtczogSW5zdGFsbENvbW11bml0eVBsdWdpblBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGFwcCB9ID0gcGFyYW1zO1xuICBjb25zdCBwbHVnaW5JZCA9IGF3YWl0IHJlc29sdmVDb21tdW5pdHlQbHVnaW5JZChwYXJhbXMpO1xuICBpZiAoT2JqZWN0Lmhhc093bihhcHAucGx1Z2lucy5tYW5pZmVzdHMsIHBsdWdpbklkKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHJlcG8gPSBhd2FpdCBnZXRDb21tdW5pdHlQbHVnaW5SZXBvKHBsdWdpbklkKTtcbiAgaWYgKCFyZXBvKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBQbHVnaW4gJyR7cGx1Z2luSWR9JyB3YXMgbm90IGZvdW5kIGluIHRoZSBPYnNpZGlhbiBjb21tdW5pdHkgcGx1Z2lucyByZWdpc3RyeS5gKTtcbiAgfVxuXG4gIGNvbnN0IHZlcnNpb24gPSBhd2FpdCBnZXRMYXRlc3RSZWxlYXNlVmVyc2lvbihyZXBvKTtcbiAgY29uc3QgbWFuaWZlc3QgPSBhd2FpdCBnZXRQbHVnaW5NYW5pZmVzdChyZXBvLCB2ZXJzaW9uKTtcbiAgYXdhaXQgYXBwLnBsdWdpbnMuaW5zdGFsbFBsdWdpbihyZXBvLCB2ZXJzaW9uLCBtYW5pZmVzdCk7XG59XG5cbi8qKlxuICogSW5zdGFsbHMgYSBjb21tdW5pdHkgcGx1Z2luLCB3cml0ZXMgaXRzIHNldHRpbmdzLCBUSEVOIGVuYWJsZXMgaXQg4oCUIGluIHRoYXQgb3JkZXIg4oCUIHNvIHRoZSBwbHVnaW5cbiAqIGxvYWRzIGFscmVhZHkgY29uZmlndXJlZCAoYSBwbHVnaW4gZW5hYmxlZCBiZWZvcmUgaXQgaXMgY29uZmlndXJlZCBydW5zIGl0cyBgb25sb2FkYCB3aXRoIGRlZmF1bHRcbiAqIHNldHRpbmdzIGFuZCBkb2VzIG5vdGhpbmcgdXNlZnVsKS4gSWYgdGhlIHBsdWdpbiBpcyBhbHJlYWR5IGVuYWJsZWQgYW5kIHRoZSBzZXR0aW5ncyBjaGFuZ2VkLCBpdCBpc1xuICogZGlzYWJsZWQgYW5kIHJlLWVuYWJsZWQgc28gdGhlIG5ldyBzZXR0aW5ncyB0YWtlIGVmZmVjdC4gYHNldHRpbmdzYCBpcyBvcHRpb25hbDogb21pdCBpdCBmb3IgYSBwbHVnaW5cbiAqIHRoYXQgbmVlZHMgbm8gY29uZmlndXJhdGlvbi4gQ29tcG9zZXMge0BsaW5rIGluc3RhbGxDb21tdW5pdHlQbHVnaW59LCB7QGxpbmsgY29uZmlndXJlQ29tbXVuaXR5UGx1Z2lufSxcbiAqIHtAbGluayBlbmFibGVDb21tdW5pdHlQbHVnaW59IGFuZCB7QGxpbmsgZGlzYWJsZUNvbW11bml0eVBsdWdpbn0uXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB7QGxpbmsgSW5zdGFsbENvbmZpZ3VyZUVuYWJsZUNvbW11bml0eVBsdWdpblBhcmFtc30uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgdGhlIHBsdWdpbiBpcyBpbnN0YWxsZWQsIGNvbmZpZ3VyZWQgYW5kIGVuYWJsZWQuXG4gKiBAdGhyb3dzIElmIHNlbGVjdGVkIGJ5IGBwbHVnaW5OYW1lYCBhbmQgdGhlIG5hbWUgaXMgbm90IGxpc3RlZCBpbiBPYnNpZGlhbidzIGNvbW11bml0eSBwbHVnaW5zIHJlZ2lzdHJ5LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5zdGFsbENvbmZpZ3VyZUVuYWJsZUNvbW11bml0eVBsdWdpbihwYXJhbXM6IEluc3RhbGxDb25maWd1cmVFbmFibGVDb21tdW5pdHlQbHVnaW5QYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBhcHAsIHNldHRpbmdzIH0gPSBwYXJhbXM7XG4gIGF3YWl0IGluc3RhbGxDb21tdW5pdHlQbHVnaW4ocGFyYW1zKTtcbiAgY29uc3QgZGlkU2V0dGluZ3NDaGFuZ2UgPSBzZXR0aW5ncyA/IGF3YWl0IGNvbmZpZ3VyZUNvbW11bml0eVBsdWdpbih7IC4uLnBhcmFtcywgc2V0dGluZ3MgfSkgPT09IENvbmZpZ3VyZUNvbW11bml0eVBsdWdpblJlc3VsdC5TdWNjZXNzIDogZmFsc2U7XG4gIGNvbnN0IHBsdWdpbklkID0gYXdhaXQgcmVzb2x2ZUNvbW11bml0eVBsdWdpbklkKHBhcmFtcyk7XG4gIGlmICghYXBwLnBsdWdpbnMuZW5hYmxlZFBsdWdpbnMuaGFzKHBsdWdpbklkKSkge1xuICAgIGF3YWl0IGVuYWJsZUNvbW11bml0eVBsdWdpbihwYXJhbXMpO1xuICB9IGVsc2UgaWYgKGRpZFNldHRpbmdzQ2hhbmdlKSB7XG4gICAgYXdhaXQgZGlzYWJsZUNvbW11bml0eVBsdWdpbihwYXJhbXMpO1xuICAgIGF3YWl0IGVuYWJsZUNvbW11bml0eVBsdWdpbihwYXJhbXMpO1xuICB9XG59XG5cbi8qKlxuICogU2VhcmNoZXMgT2JzaWRpYW4ncyBwdWJsaWMgY29tbXVuaXR5IHBsdWdpbnMgcmVnaXN0cnksIHJldHVybmluZyB0aGUgaWQgYW5kIGRpc3BsYXkgbmFtZSBvZiBldmVyeVxuICogcGx1Z2luIHdob3NlIGlkLCBuYW1lLCBhdXRob3Igb3IgZGVzY3JpcHRpb24gY29udGFpbnMgdGhlIHF1ZXJ5IChjYXNlLWluc2Vuc2l0aXZlKS4gQW4gZW1wdHkgcXVlcnlcbiAqIG1hdGNoZXMgZXZlcnkgcGx1Z2luLlxuICpcbiAqIEBwYXJhbSBxdWVyeSAtIFRoZSBzZWFyY2ggcXVlcnkuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSByZXNvbHZpbmcgdG8gdGhlIG1hdGNoaW5nIHBsdWdpbnMnIHtAbGluayBDb21tdW5pdHlQbHVnaW5TZWFyY2hSZXN1bHR9cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlYXJjaENvbW11bml0eVBsdWdpbnMocXVlcnk6IHN0cmluZyk6IFByb21pc2U8Q29tbXVuaXR5UGx1Z2luU2VhcmNoUmVzdWx0W10+IHtcbiAgY29uc3QgZW50cmllcyA9IGF3YWl0IGdldENvbW11bml0eVBsdWdpbkVudHJpZXMoKTtcbiAgY29uc3Qgbm9ybWFsaXplZFF1ZXJ5ID0gcXVlcnkudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIGVudHJpZXNcbiAgICAuZmlsdGVyKChlbnRyeSkgPT5cbiAgICAgIGVudHJ5LmlkLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobm9ybWFsaXplZFF1ZXJ5KVxuICAgICAgfHwgZW50cnkubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKG5vcm1hbGl6ZWRRdWVyeSlcbiAgICAgIHx8IGVudHJ5LmF1dGhvci50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKG5vcm1hbGl6ZWRRdWVyeSlcbiAgICAgIHx8IGVudHJ5LmRlc2NyaXB0aW9uLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobm9ybWFsaXplZFF1ZXJ5KVxuICAgIClcbiAgICAubWFwKChlbnRyeSkgPT4gKHtcbiAgICAgIGlkOiBlbnRyeS5pZCxcbiAgICAgIG5hbWU6IGVudHJ5Lm5hbWVcbiAgICB9KSk7XG59XG5cbi8qKlxuICogRW5hYmxlcyBvciBkaXNhYmxlcyBhIGNvbW11bml0eSBwbHVnaW4gdG8gbWF0Y2ggdGhlIGRlc2lyZWQgc3RhdGUuIERlbGVnYXRlcyB0b1xuICoge0BsaW5rIGVuYWJsZUNvbW11bml0eVBsdWdpbn0gLyB7QGxpbmsgZGlzYWJsZUNvbW11bml0eVBsdWdpbn0sIHNvIGl0IGlzIGlkZW1wb3RlbnQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB7QGxpbmsgVG9nZ2xlRW5hYmxlQ29tbXVuaXR5UGx1Z2luUGFyYW1zfS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgcGx1Z2luIG1hdGNoZXMgdGhlIGRlc2lyZWQgZW5hYmxlZCBzdGF0ZS5cbiAqIEB0aHJvd3MgSWYgc2VsZWN0ZWQgYnkgYHBsdWdpbk5hbWVgIGFuZCB0aGUgbmFtZSBpcyBub3QgbGlzdGVkIGluIE9ic2lkaWFuJ3MgY29tbXVuaXR5IHBsdWdpbnMgcmVnaXN0cnkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0b2dnbGVFbmFibGVDb21tdW5pdHlQbHVnaW4ocGFyYW1zOiBUb2dnbGVFbmFibGVDb21tdW5pdHlQbHVnaW5QYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKHBhcmFtcy5pc0VuYWJsZWQpIHtcbiAgICBhd2FpdCBlbmFibGVDb21tdW5pdHlQbHVnaW4ocGFyYW1zKTtcbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBkaXNhYmxlQ29tbXVuaXR5UGx1Z2luKHBhcmFtcyk7XG4gIH1cbn1cblxuLyoqXG4gKiBJbnN0YWxscyBvciB1bmluc3RhbGxzIGEgY29tbXVuaXR5IHBsdWdpbiB0byBtYXRjaCB0aGUgZGVzaXJlZCBzdGF0ZS4gRGVsZWdhdGVzIHRvXG4gKiB7QGxpbmsgaW5zdGFsbENvbW11bml0eVBsdWdpbn0gLyB7QGxpbmsgdW5pbnN0YWxsQ29tbXVuaXR5UGx1Z2lufSwgc28gaXQgaXMgaWRlbXBvdGVudC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBUb2dnbGVJbnN0YWxsQ29tbXVuaXR5UGx1Z2luUGFyYW1zfS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgcGx1Z2luIG1hdGNoZXMgdGhlIGRlc2lyZWQgaW5zdGFsbGVkIHN0YXRlLlxuICogQHRocm93cyBJZiBpbnN0YWxsaW5nIGFuZCB0aGUgcGx1Z2luIGlzIG5vdCBsaXN0ZWQgaW4gT2JzaWRpYW4ncyBjb21tdW5pdHkgcGx1Z2lucyByZWdpc3RyeS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRvZ2dsZUluc3RhbGxDb21tdW5pdHlQbHVnaW4ocGFyYW1zOiBUb2dnbGVJbnN0YWxsQ29tbXVuaXR5UGx1Z2luUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChwYXJhbXMuaXNJbnN0YWxsZWQpIHtcbiAgICBhd2FpdCBpbnN0YWxsQ29tbXVuaXR5UGx1Z2luKHBhcmFtcyk7XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgdW5pbnN0YWxsQ29tbXVuaXR5UGx1Z2luKHBhcmFtcyk7XG4gIH1cbn1cblxuLyoqXG4gKiBVbmluc3RhbGxzIGEgY29tbXVuaXR5IHBsdWdpbiBpZiBpdCBpcyBjdXJyZW50bHkgaW5zdGFsbGVkLiBJZGVtcG90ZW50IOKAlCBhIG5vLW9wIHdoZW4gdGhlIHBsdWdpbiBpc1xuICogbm90IGluc3RhbGxlZC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBVbmluc3RhbGxDb21tdW5pdHlQbHVnaW5QYXJhbXN9LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBwbHVnaW4gaXMgdW5pbnN0YWxsZWQuXG4gKiBAdGhyb3dzIElmIHNlbGVjdGVkIGJ5IGBwbHVnaW5OYW1lYCBhbmQgdGhlIG5hbWUgaXMgbm90IGxpc3RlZCBpbiBPYnNpZGlhbidzIGNvbW11bml0eSBwbHVnaW5zIHJlZ2lzdHJ5LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdW5pbnN0YWxsQ29tbXVuaXR5UGx1Z2luKHBhcmFtczogVW5pbnN0YWxsQ29tbXVuaXR5UGx1Z2luUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgYXBwIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHBsdWdpbklkID0gYXdhaXQgcmVzb2x2ZUNvbW11bml0eVBsdWdpbklkKHBhcmFtcyk7XG4gIGlmICghT2JqZWN0Lmhhc093bihhcHAucGx1Z2lucy5tYW5pZmVzdHMsIHBsdWdpbklkKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBhd2FpdCBhcHAucGx1Z2lucy51bmluc3RhbGxQbHVnaW4ocGx1Z2luSWQpO1xufVxuXG4vKipcbiAqIFVwZGF0ZXMgYW4gaW5zdGFsbGVkIGNvbW11bml0eSBwbHVnaW4gdG8gaXRzIGxhdGVzdCByZWxlYXNlLCB0aGUgd2F5IHRoZSBjb21tdW5pdHkgcGx1Z2luIGJyb3dzZXIncyBvd25cbiAqIGBVcGRhdGVgIGJ1dHRvbiBkb2VzLlxuICpcbiAqIE9ic2lkaWFuJ3MgYGluc3RhbGxQbHVnaW5gIHdyaXRlcyB0aGUgcmVsZWFzZSdzIGZpbGVzIG92ZXIgdGhlIGluc3RhbGxlZCBjb3B5IGFuZCwgd2hlbiB0aGUgcGx1Z2luIGlzXG4gKiBydW5uaW5nLCBkaXNhYmxlcyBhbmQgcmUtZW5hYmxlcyBpdCBzbyB0aGUgbmV3IGNvZGUgbG9hZHMg4oCUIHJlYWQgZnJvbSB0aGUgc2hpcHBlZCBidW5kbGUgKGAxLjE0LjRgKSwgbm90XG4gKiBhc3N1bWVkLiBJdCByZXBvcnRzIGl0cyBvd24gZmFpbHVyZXMgKGEgZmFpbGVkIGRvd25sb2FkLCBhIG1hbmlmZXN0IHdob3NlIGlkIGRvZXMgbm90IG1hdGNoKSBhcyBhIG5vdGljZVxuICogYW5kIFJFVFVSTlMgcmF0aGVyIHRoYW4gdGhyb3dpbmcsIHNvIHRoZSBpbnN0YWxsZWQgbWFuaWZlc3QgaXMgcmUtcmVhZCBhZnRlcndhcmRzIGFuZCBhIHZlcnNpb24gdGhhdCBkaWRcbiAqIG5vdCBtb3ZlIHRvIHRoZSByZWxlYXNlIGlzIHRocm93biBhcyBhIGZhaWx1cmUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB7QGxpbmsgVXBkYXRlQ29tbXVuaXR5UGx1Z2luUGFyYW1zfS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHJlc29sdmluZyB0byB7QGxpbmsgVXBkYXRlQ29tbXVuaXR5UGx1Z2luUmVzdWx0LlVwZGF0ZWR9IG9uY2UgdGhlIGxhdGVzdCByZWxlYXNlXG4gKiBpcyBpbnN0YWxsZWQsIG9yIHtAbGluayBVcGRhdGVDb21tdW5pdHlQbHVnaW5SZXN1bHQuQWxyZWFkeVVwVG9EYXRlfSB3aGVuIHRoZSBpbnN0YWxsZWQgY29weSBpcyBub3Qgb2xkZXJcbiAqIHRoYW4gaXQuXG4gKiBAdGhyb3dzIElmIHRoZSBwbHVnaW4gaXMgbm90IGluc3RhbGxlZCwgaXMgbm90IGxpc3RlZCBpbiBPYnNpZGlhbidzIGNvbW11bml0eSBwbHVnaW5zIHJlZ2lzdHJ5LCBvciB0aGVcbiAqIGluc3RhbGwgZGlkIG5vdCBsZWF2ZSB0aGUgbGF0ZXN0IHJlbGVhc2UgaW4gcGxhY2UuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1cGRhdGVDb21tdW5pdHlQbHVnaW4ocGFyYW1zOiBVcGRhdGVDb21tdW5pdHlQbHVnaW5QYXJhbXMpOiBQcm9taXNlPFVwZGF0ZUNvbW11bml0eVBsdWdpblJlc3VsdD4ge1xuICBjb25zdCB7IGFwcCB9ID0gcGFyYW1zO1xuICBjb25zdCBwbHVnaW5JZCA9IGF3YWl0IHJlc29sdmVDb21tdW5pdHlQbHVnaW5JZChwYXJhbXMpO1xuICBjb25zdCBpbnN0YWxsZWRNYW5pZmVzdCA9IGFwcC5wbHVnaW5zLm1hbmlmZXN0c1twbHVnaW5JZF07XG4gIGlmICghaW5zdGFsbGVkTWFuaWZlc3QpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFBsdWdpbiAnJHtwbHVnaW5JZH0nIGlzIG5vdCBpbnN0YWxsZWQsIHNvIGl0IGNhbm5vdCBiZSB1cGRhdGVkLmApO1xuICB9XG5cbiAgY29uc3QgcmVwbyA9IGF3YWl0IGdldENvbW11bml0eVBsdWdpblJlcG8ocGx1Z2luSWQpO1xuICBpZiAoIXJlcG8pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFBsdWdpbiAnJHtwbHVnaW5JZH0nIHdhcyBub3QgZm91bmQgaW4gdGhlIE9ic2lkaWFuIGNvbW11bml0eSBwbHVnaW5zIHJlZ2lzdHJ5LmApO1xuICB9XG5cbiAgY29uc3QgdmVyc2lvbiA9IGF3YWl0IGdldExhdGVzdFJlbGVhc2VWZXJzaW9uKHJlcG8pO1xuICBpZiAoaXNBdExlYXN0VmVyc2lvbihpbnN0YWxsZWRNYW5pZmVzdC52ZXJzaW9uLCB2ZXJzaW9uKSkge1xuICAgIHJldHVybiBVcGRhdGVDb21tdW5pdHlQbHVnaW5SZXN1bHQuQWxyZWFkeVVwVG9EYXRlO1xuICB9XG5cbiAgY29uc3QgbWFuaWZlc3QgPSBhd2FpdCBnZXRQbHVnaW5NYW5pZmVzdChyZXBvLCB2ZXJzaW9uKTtcbiAgYXdhaXQgYXBwLnBsdWdpbnMuaW5zdGFsbFBsdWdpbihyZXBvLCB2ZXJzaW9uLCBtYW5pZmVzdCk7XG5cbiAgY29uc3QgdXBkYXRlZFZlcnNpb24gPSBhcHAucGx1Z2lucy5tYW5pZmVzdHNbcGx1Z2luSWRdPy52ZXJzaW9uO1xuICBpZiAodXBkYXRlZFZlcnNpb24gIT09IG1hbmlmZXN0LnZlcnNpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgVXBkYXRpbmcgcGx1Z2luICcke3BsdWdpbklkfScgdG8gJHttYW5pZmVzdC52ZXJzaW9ufSBsZWZ0IHZlcnNpb24gJHt1cGRhdGVkVmVyc2lvbiA/PyAnKG5vbmUpJ30gaW5zdGFsbGVkLiBPYnNpZGlhbiByZXBvcnRzIHRoZSBjYXVzZSBhcyBhIG5vdGljZS5gXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBVcGRhdGVDb21tdW5pdHlQbHVnaW5SZXN1bHQuVXBkYXRlZDtcbn1cblxuLy8gV2hldGhlciBhIHBsdWdpbidzIGBwbHVnaW5TZXR0aW5nc0NvbXBvbmVudGAgY2FuIGNvbmZpZ3VyZSBpdHNlbGYgaW4gcGxhY2UuIFN0cnVjdHVyYWwgcmF0aGVyIHRoYW4gYW5cbi8vIGBpbnN0YW5jZW9mYDogdGhlIHBsdWdpbiB3YXMgbG9hZGVkIGZyb20gaXRzIG93biBidW5kbGUsIHNvIGV2ZW4gYSBwbHVnaW4gYnVpbHQgb24gdGhpcyB2ZXJ5IGxpYnJhcnlcbi8vIGNhcnJpZXMgaXRzIG93biBjb3B5IG9mIHRoZSBjbGFzcyBhbmQgd291bGQgZmFpbCBhbiBpZGVudGl0eSBjaGVjay5cbmZ1bmN0aW9uIGNoZWNrSGFzRWRpdEFuZFNhdmUoc2V0dGluZ3NDb21wb25lbnQ6IHVua25vd24pOiBzZXR0aW5nc0NvbXBvbmVudCBpcyBFZGl0YWJsZVNldHRpbmdzQ29tcG9uZW50IHtcbiAgcmV0dXJuIHR5cGVvZiBzZXR0aW5nc0NvbXBvbmVudCA9PT0gJ29iamVjdCdcbiAgICAmJiBzZXR0aW5nc0NvbXBvbmVudCAhPT0gbnVsbFxuICAgICYmICdlZGl0QW5kU2F2ZScgaW4gc2V0dGluZ3NDb21wb25lbnRcbiAgICAmJiB0eXBlb2Ygc2V0dGluZ3NDb21wb25lbnQuZWRpdEFuZFNhdmUgPT09ICdmdW5jdGlvbic7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQ29tbXVuaXR5UGx1Z2luRW50cmllcygpOiBQcm9taXNlPENvbW11bml0eVBsdWdpbkVudHJ5W10+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZXF1ZXN0VXJsKENPTU1VTklUWV9QTFVHSU5TX1VSTCk7XG4gIHJldHVybiByZXNwb25zZS5qc29uIGFzIENvbW11bml0eVBsdWdpbkVudHJ5W107XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvbW11bml0eVBsdWdpbkVudHJpZXMoKTogUHJvbWlzZTxDb21tdW5pdHlQbHVnaW5FbnRyeVtdPiB7XG4gIGNvbnN0IGNhY2hlID0gZ2V0T2JzaWRpYW5MaWJTdGF0ZTxudWxsIHwgUHJvbWlzZTxDb21tdW5pdHlQbHVnaW5FbnRyeVtdPj4oQ09NTVVOSVRZX1BMVUdJTlNfU1RBVEVfS0VZLCBudWxsKTtcbiAgY2FjaGUudmFsdWUgPz89IGZldGNoQ29tbXVuaXR5UGx1Z2luRW50cmllcygpO1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGNhY2hlLnZhbHVlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNhY2hlLnZhbHVlID0gbnVsbDtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRQbHVnaW5NYW5pZmVzdChyZXBvOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZyk6IFByb21pc2U8UGx1Z2luTWFuaWZlc3Q+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZXF1ZXN0VXJsKGBodHRwczovL2dpdGh1Yi5jb20vJHtyZXBvfS9yZWxlYXNlcy9kb3dubG9hZC8ke3ZlcnNpb259L21hbmlmZXN0Lmpzb25gKTtcbiAgcmV0dXJuIHJlc3BvbnNlLmpzb24gYXMgUGx1Z2luTWFuaWZlc3Q7XG59XG5cbi8vIFJlYWRzIGEgbG9hZGVkIHBsdWdpbidzIGBwbHVnaW5TZXR0aW5nc0NvbXBvbmVudGAsIG9yIGBudWxsYCB3aGVuIGl0IGhhcyBub25lLiBUYWtlcyBgdW5rbm93bmAgYmVjYXVzZVxuLy8gQSBwbHVnaW4gaXMgdW5kZXIgbm8gb2JsaWdhdGlvbiB0byBleHBvc2Ugb25lLCBzbyB0aGVyZSBpcyBubyB0eXBlIHRvIG5hcnJvdyBmcm9tLlxuZnVuY3Rpb24gZ2V0U2V0dGluZ3NDb21wb25lbnQocGx1Z2luOiB1bmtub3duKTogdW5rbm93biB7XG4gIHJldHVybiB0eXBlb2YgcGx1Z2luICE9PSAnb2JqZWN0JyB8fCBwbHVnaW4gPT09IG51bGwgfHwgISgncGx1Z2luU2V0dGluZ3NDb21wb25lbnQnIGluIHBsdWdpbikgPyBudWxsIDogcGx1Z2luLnBsdWdpblNldHRpbmdzQ29tcG9uZW50O1xufVxuXG4vLyBBIHZlcnNpb24gdGhhdCBjYW5ub3QgYmUgcGFyc2VkIHJlYWRzIGFzIG9sZGVyLCBzbyBhbiB1cGRhdGUgaXMgYXR0ZW1wdGVkIHJhdGhlciB0aGFuIHNraXBwZWQ6IHRoZSBpbnN0YWxsJ3Ncbi8vIG93biB2ZXJzaW9uIGNoZWNrIGFmdGVyd2FyZHMgc3RpbGwgY2F0Y2hlcyBhIHJlbGVhc2UgdGhhdCBkb2VzIG5vdCBtb3ZlIGl0LlxuZnVuY3Rpb24gaXNBdExlYXN0VmVyc2lvbihpbnN0YWxsZWRWZXJzaW9uOiBzdHJpbmcsIGxhdGVzdFZlcnNpb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIHJldHVybiBjb21wYXJlVmVyc2lvbnMoaW5zdGFsbGVkVmVyc2lvbiwgbGF0ZXN0VmVyc2lvbiwgJz49Jyk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlQ29tbXVuaXR5UGx1Z2luSWQocmVmZXJlbmNlOiBDb21tdW5pdHlQbHVnaW5SZWYpOiBQcm9taXNlPHN0cmluZz4ge1xuICBpZiAoJ3BsdWdpbklkJyBpbiByZWZlcmVuY2UpIHtcbiAgICByZXR1cm4gcmVmZXJlbmNlLnBsdWdpbklkO1xuICB9XG5cbiAgY29uc3QgZW50cmllcyA9IGF3YWl0IGdldENvbW11bml0eVBsdWdpbkVudHJpZXMoKTtcbiAgY29uc3QgZW50cnkgPSBlbnRyaWVzLmZpbmQoKGNhbmRpZGF0ZSkgPT4gY2FuZGlkYXRlLm5hbWUgPT09IHJlZmVyZW5jZS5wbHVnaW5OYW1lKTtcbiAgaWYgKCFlbnRyeSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgUGx1Z2luIG5hbWVkICcke3JlZmVyZW5jZS5wbHVnaW5OYW1lfScgd2FzIG5vdCBmb3VuZCBpbiB0aGUgT2JzaWRpYW4gY29tbXVuaXR5IHBsdWdpbnMgcmVnaXN0cnkuYCk7XG4gIH1cbiAgcmV0dXJuIGVudHJ5LmlkO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFB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UUFBTSxXQUFXLE1BQU0sa0JBQWtCLE1BQU0sT0FBTztBQUN0RCxRQUFNLElBQUksUUFBUSxjQUFjLE1BQU0sU0FBUyxRQUFRO0FBRXZELFFBQU0saUJBQWlCLElBQUksUUFBUSxVQUFVLFFBQVEsR0FBRztBQUN4RCxNQUFJLG1CQUFtQixTQUFTLFNBQVM7QUFDdkMsVUFBTSxJQUFJO0FBQUEsTUFDUixvQkFBb0IsUUFBUSxRQUFRLFNBQVMsT0FBTyxpQkFBaUIsa0JBQWtCLFFBQVE7QUFBQSxJQUNqRztBQUFBLEVBQ0Y7QUFFQSxTQUFPO0FBQ1Q7QUFLQSxTQUFTLG9CQUFvQixtQkFBNEU7QUFDdkcsU0FBTyxPQUFPLHNCQUFzQixZQUMvQixzQkFBc0IsUUFDdEIsaUJBQWlCLHFCQUNqQixPQUFPLGtCQUFrQixnQkFBZ0I7QUFDaEQ7QUFFQSxlQUFlLDhCQUErRDtBQUM1RSxRQUFNLFdBQVcsVUFBTSw0QkFBVyxxQkFBcUI7QUFDdkQsU0FBTyxTQUFTO0FBQ2xCO0FBRUEsZUFBZSw0QkFBNkQ7QUFDMUUsUUFBTSxZQUFRLCtDQUE0RCw2QkFBNkIsSUFBSTtBQUMzRyxRQUFNLFVBQVUsNEJBQTRCO0FBRTVDLE1BQUk7QUFDRixXQUFPLE1BQU0sTUFBTTtBQUFBLEVBQ3JCLFNBQVMsT0FBTztBQUNkLFVBQU0sUUFBUTtBQUNkLFVBQU07QUFBQSxFQUNSO0FBQ0Y7QUFFQSxlQUFlLGtCQUFrQixNQUFjLFNBQTBDO0FBQ3ZGLFFBQU0sV0FBVyxVQUFNLDRCQUFXLHNCQUFzQixJQUFJLHNCQUFzQixPQUFPLGdCQUFnQjtBQUN6RyxTQUFPLFNBQVM7QUFDbEI7QUFJQSxTQUFTLHFCQUFxQixRQUEwQjtBQUN0RCxTQUFPLE9BQU8sV0FBVyxZQUFZLFdBQVcsUUFBUSxFQUFFLDZCQUE2QixVQUFVLE9BQU8sT0FBTztBQUNqSDtBQUlBLFNBQVMsaUJBQWlCLGtCQUEwQixlQUFnQztBQUNsRixNQUFJO0FBQ0YsZUFBTyx3QkFBQUMsU0FBZ0Isa0JBQWtCLGVBQWUsSUFBSTtBQUFBLEVBQzlELFFBQVE7QUFDTixXQUFPO0FBQUEsRUFDVDtBQUNGO0FBRUEsZUFBZSx5QkFBeUIsV0FBZ0Q7QUFDdEYsTUFBSSxjQUFjLFdBQVc7QUFDM0IsV0FBTyxVQUFVO0FBQUEsRUFDbkI7QUFFQSxRQUFNLFVBQVUsTUFBTSwwQkFBMEI7QUFDaEQsUUFBTSxRQUFRLFFBQVEsS0FBSyxDQUFDLGNBQWMsVUFBVSxTQUFTLFVBQVUsVUFBVTtBQUNqRixNQUFJLENBQUMsT0FBTztBQUNWLFVBQU0sSUFBSSxNQUFNLGlCQUFpQixVQUFVLFVBQVUsNkRBQTZEO0FBQUEsRUFDcEg7QUFDQSxTQUFPLE1BQU07QUFDZjsiLCJuYW1lcyI6WyJDb25maWd1cmVDb21tdW5pdHlQbHVnaW5SZXN1bHQiLCJVcGRhdGVDb21tdW5pdHlQbHVnaW5SZXN1bHQiLCJjb21wYXJlVmVyc2lvbnMiXX0=
@@ -148,11 +148,11 @@ class AsyncErrorHandlerComponent extends import_component_ex.ComponentEx {
148
148
  * @param _asyncError - The async error.
149
149
  */
150
150
  handleAsyncError(_asyncError) {
151
- this.pluginNoticeComponent.showNotice((0, import_i18n.t)(($) => $.obsidianDevUtils.notices.unhandledError));
151
+ this.pluginNoticeComponent.showNotice((0, import_i18n.t)(($) => $.obsidianLib.notices.unhandledError));
152
152
  }
153
153
  }
154
154
  // Annotate the CommonJS export names for ESM import in node:
155
155
  0 && (module.exports = {
156
156
  AsyncErrorHandlerComponent
157
157
  });
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2FzeW5jLWVycm9yLWhhbmRsZXItY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb21wb25lbnQgdGhhdCBoYW5kbGVzIGFzeW5jIGVycm9ycyBieSBzaG93aW5nIGEgbm90aWNlIHRvIHRoZSB1c2VyLlxuICovXG5cbmltcG9ydCB7IGRpc3Bvc2UgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZGlzcG9zYWJsZSc7XG5pbXBvcnQgeyByZWdpc3RlckFzeW5jRXJyb3JFdmVudEhhbmRsZXIgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZXJyb3InO1xuXG5pbXBvcnQgeyB0IH0gZnJvbSAnLi4vaTE4bi9pMThuLnRzJztcbmltcG9ydCB7IENvbXBvbmVudEV4IH0gZnJvbSAnLi9jb21wb25lbnQtZXgudHMnO1xuaW1wb3J0IHsgUGx1Z2luTm90aWNlQ29tcG9uZW50IH0gZnJvbSAnLi9wbHVnaW4tbm90aWNlLWNvbXBvbmVudC50cyc7XG5cbi8qKlxuICogUmVnaXN0ZXJzIGEgZ2xvYmFsIGFzeW5jIGVycm9yIGhhbmRsZXIgdGhhdCBzaG93cyBhIG5vdGljZSB0byB0aGUgdXNlci5cbiAqL1xuZXhwb3J0IGNsYXNzIEFzeW5jRXJyb3JIYW5kbGVyQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50RXgge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBhc3luYyBlcnJvciBoYW5kbGVyIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpbk5vdGljZUNvbXBvbmVudCAtIFRoZSBub3RpY2UgY29tcG9uZW50IHVzZWQgdG8gZGlzcGxheSBlcnJvciBtZXNzYWdlcy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgcGx1Z2luTm90aWNlQ29tcG9uZW50OiBQbHVnaW5Ob3RpY2VDb21wb25lbnQpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyB0aGUgZXJyb3IgaGFuZGxlci5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBvbmxvYWQoKTogdm9pZCB7XG4gICAgY29uc3QgYXN5bmNFcnJvckhhbmRsZXJEaXNwb3NhYmxlID0gcmVnaXN0ZXJBc3luY0Vycm9yRXZlbnRIYW5kbGVyKHRoaXMuaGFuZGxlQXN5bmNFcnJvci5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlZ2lzdGVyKCgpID0+IHtcbiAgICAgIGRpc3Bvc2UoYXN5bmNFcnJvckhhbmRsZXJEaXNwb3NhYmxlKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBhbiBhc3luYyBlcnJvciBvY2N1cnMuXG4gICAqXG4gICAqIEBwYXJhbSBfYXN5bmNFcnJvciAtIFRoZSBhc3luYyBlcnJvci5cbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVBc3luY0Vycm9yKF9hc3luY0Vycm9yOiB1bmtub3duKTogdm9pZCB7XG4gICAgdGhpcy5wbHVnaW5Ob3RpY2VDb21wb25lbnQuc2hvd05vdGljZSh0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMubm90aWNlcy51bmhhbmRsZWRFcnJvcikpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSx3QkFBd0I7QUFDeEIsbUJBQStDO0FBRS9DLGtCQUFrQjtBQUNsQiwwQkFBNEI7QUFDNUIscUNBQXNDO0FBSy9CLE1BQU0sbUNBQW1DLGdDQUFZO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTW5ELFlBQStCLHVCQUE4QztBQUNsRixVQUFNO0FBRDhCO0FBQUEsRUFFdEM7QUFBQSxFQUZzQztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT3RCLFNBQWU7QUFDN0IsVUFBTSxrQ0FBOEIsNkNBQStCLEtBQUssaUJBQWlCLEtBQUssSUFBSSxDQUFDO0FBQ25HLFNBQUssU0FBUyxNQUFNO0FBQ2xCLHFDQUFRLDJCQUEyQjtBQUFBLElBQ3JDLENBQUM7QUFBQSxFQUNIO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT1UsaUJBQWlCLGFBQTRCO0FBQ3JELFNBQUssc0JBQXNCLGVBQVcsZUFBRSxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsUUFBUSxjQUFjLENBQUM7QUFBQSxFQUMzRjtBQUNGOyIsIm5hbWVzIjpbXX0=
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2FzeW5jLWVycm9yLWhhbmRsZXItY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb21wb25lbnQgdGhhdCBoYW5kbGVzIGFzeW5jIGVycm9ycyBieSBzaG93aW5nIGEgbm90aWNlIHRvIHRoZSB1c2VyLlxuICovXG5cbmltcG9ydCB7IGRpc3Bvc2UgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZGlzcG9zYWJsZSc7XG5pbXBvcnQgeyByZWdpc3RlckFzeW5jRXJyb3JFdmVudEhhbmRsZXIgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZXJyb3InO1xuXG5pbXBvcnQgeyB0IH0gZnJvbSAnLi4vaTE4bi9pMThuLnRzJztcbmltcG9ydCB7IENvbXBvbmVudEV4IH0gZnJvbSAnLi9jb21wb25lbnQtZXgudHMnO1xuaW1wb3J0IHsgUGx1Z2luTm90aWNlQ29tcG9uZW50IH0gZnJvbSAnLi9wbHVnaW4tbm90aWNlLWNvbXBvbmVudC50cyc7XG5cbi8qKlxuICogUmVnaXN0ZXJzIGEgZ2xvYmFsIGFzeW5jIGVycm9yIGhhbmRsZXIgdGhhdCBzaG93cyBhIG5vdGljZSB0byB0aGUgdXNlci5cbiAqL1xuZXhwb3J0IGNsYXNzIEFzeW5jRXJyb3JIYW5kbGVyQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50RXgge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBhc3luYyBlcnJvciBoYW5kbGVyIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpbk5vdGljZUNvbXBvbmVudCAtIFRoZSBub3RpY2UgY29tcG9uZW50IHVzZWQgdG8gZGlzcGxheSBlcnJvciBtZXNzYWdlcy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgcGx1Z2luTm90aWNlQ29tcG9uZW50OiBQbHVnaW5Ob3RpY2VDb21wb25lbnQpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyB0aGUgZXJyb3IgaGFuZGxlci5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBvbmxvYWQoKTogdm9pZCB7XG4gICAgY29uc3QgYXN5bmNFcnJvckhhbmRsZXJEaXNwb3NhYmxlID0gcmVnaXN0ZXJBc3luY0Vycm9yRXZlbnRIYW5kbGVyKHRoaXMuaGFuZGxlQXN5bmNFcnJvci5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLnJlZ2lzdGVyKCgpID0+IHtcbiAgICAgIGRpc3Bvc2UoYXN5bmNFcnJvckhhbmRsZXJEaXNwb3NhYmxlKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBhbiBhc3luYyBlcnJvciBvY2N1cnMuXG4gICAqXG4gICAqIEBwYXJhbSBfYXN5bmNFcnJvciAtIFRoZSBhc3luYyBlcnJvci5cbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVBc3luY0Vycm9yKF9hc3luY0Vycm9yOiB1bmtub3duKTogdm9pZCB7XG4gICAgdGhpcy5wbHVnaW5Ob3RpY2VDb21wb25lbnQuc2hvd05vdGljZSh0KCgkKSA9PiAkLm9ic2lkaWFuTGliLm5vdGljZXMudW5oYW5kbGVkRXJyb3IpKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUEsd0JBQXdCO0FBQ3hCLG1CQUErQztBQUUvQyxrQkFBa0I7QUFDbEIsMEJBQTRCO0FBQzVCLHFDQUFzQztBQUsvQixNQUFNLG1DQUFtQyxnQ0FBWTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1uRCxZQUErQix1QkFBOEM7QUFDbEYsVUFBTTtBQUQ4QjtBQUFBLEVBRXRDO0FBQUEsRUFGc0M7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU90QixTQUFlO0FBQzdCLFVBQU0sa0NBQThCLDZDQUErQixLQUFLLGlCQUFpQixLQUFLLElBQUksQ0FBQztBQUNuRyxTQUFLLFNBQVMsTUFBTTtBQUNsQixxQ0FBUSwyQkFBMkI7QUFBQSxJQUNyQyxDQUFDO0FBQUEsRUFDSDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9VLGlCQUFpQixhQUE0QjtBQUNyRCxTQUFLLHNCQUFzQixlQUFXLGVBQUUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxRQUFRLGNBQWMsQ0FBQztBQUFBLEVBQ3RGO0FBQ0Y7IiwibmFtZXMiOltdfQ==
@@ -120,7 +120,7 @@ __export(monkey_around_component_exports, {
120
120
  });
121
121
  module.exports = __toCommonJS(monkey_around_component_exports);
122
122
  var import_monkey_around = require('monkey-around');
123
- var import_obsidian_dev_utils_state = require('../obsidian-dev-utils-state.cjs');
123
+ var import_obsidian_lib_state = require('../obsidian-lib-state.cjs');
124
124
  var import_component_ex = require('./component-ex.cjs');
125
125
  class MonkeyAroundComponent extends import_component_ex.ComponentEx {
126
126
  /**
@@ -213,7 +213,7 @@ function hasPatchToken($function, patchToken) {
213
213
  return getMonkeyAroundPatches().get($function) === patchToken;
214
214
  }
215
215
  function getMonkeyAroundPatches() {
216
- return (0, import_obsidian_dev_utils_state.getObsidianDevUtilsState)("monkeyAroundPatches", /* @__PURE__ */ new WeakMap()).value;
216
+ return (0, import_obsidian_lib_state.getObsidianLibState)("monkeyAroundPatches", /* @__PURE__ */ new WeakMap()).value;
217
217
  }
218
218
  // Annotate the CommonJS export names for ESM import in node:
219
219
  0 && (module.exports = {
@@ -221,4 +221,4 @@ function getMonkeyAroundPatches() {
221
221
  around,
222
222
  hasPatchToken
223
223
  });
224
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbmtleS1hcm91bmQtY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBJbXByb3ZlZCB0eXBlLXNhZmUgd3JhcHBlciBvZiB7QGxpbmsgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvbW9ua2V5LWFyb3VuZH0gbGlicmFyeS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNGdW5jdGlvbiB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9mdW5jdGlvbic7XG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNPYmplY3QgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHlwZS1ndWFyZHMnO1xuaW1wb3J0IHR5cGUgeyBDb25kaXRpb25hbEtleXMgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBhcm91bmQgYXMgb3JpZ2luYWxBcm91bmQgfSBmcm9tICdtb25rZXktYXJvdW5kJztcblxuaW1wb3J0IHsgZ2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlIH0gZnJvbSAnLi4vb2JzaWRpYW4tZGV2LXV0aWxzLXN0YXRlLnRzJztcbmltcG9ydCB7IENvbXBvbmVudEV4IH0gZnJvbSAnLi9jb21wb25lbnQtZXgudHMnO1xuXG4vKipcbiAqIEEgdHlwZSBvZiB0aGUgZmFjdG9yaWVzIHRvIGFwcGx5IHRvIHRoZSBvYmplY3QuXG4gKlxuICogQHR5cGVQYXJhbSAkT2JqZWN0IC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAqL1xuZXhwb3J0IHR5cGUgRmFjdG9yaWVzPCRPYmplY3QgZXh0ZW5kcyBvYmplY3Q+ID0gUGFydGlhbDxGdWxsRmFjdG9yaWVzPCRPYmplY3Q+PjtcblxuLyoqXG4gKiBLZXlzIG9mIGBPYmpgIHdob3NlIHZhbHVlIGlzIGNhbGxhYmxlIOKAlCBhIG1ldGhvZCwgb3IgYSBmdW5jdGlvbi1saWtlIG9iamVjdCBzdWNoIGFzIGEgYERlYm91bmNlcmAuIFRoZXNlIGFyZSB0aGUgbWVtYmVyc1xuICogYWNjZXB0ZWQgYnkge0BsaW5rIE1vbmtleUFyb3VuZENvbXBvbmVudCNyZWdpc3RlckZ1bmN0aW9uUGF0Y2h9LlxuICpcbiAqIEB0eXBlUGFyYW0gJE9iamVjdCAtIFRoZSBvYmplY3Qgd2hvc2Uga2V5cyBhcmUgZmlsdGVyZWQuXG4gKi9cbmV4cG9ydCB0eXBlIEZ1bmN0aW9uS2V5czwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0PiA9IENvbmRpdGlvbmFsS2V5czwkT2JqZWN0LCBHZW5lcmljRnVuY3Rpb24gfCB1bmRlZmluZWQ+ICYga2V5b2YgJE9iamVjdDtcblxuLyoqXG4gKiBLZXlzIG9mIGBPYmpgIHdob3NlIHZhbHVlIGlzIGEgcGxhaW4gZnVuY3Rpb24gKGEgXCJyZWFsIG1ldGhvZFwiKS4gRnVuY3Rpb24tbGlrZSBvYmplY3RzIHRoYXQgY2FycnkgZXh0cmEgbWVtYmVycyBhcmVcbiAqIGV4Y2x1ZGVkIOKAlCBlLmcuIGEgYERlYm91bmNlcmAgKHdoaWNoIGFkZHMgYGNhbmNlbGAvYHJ1bmApIGJlbG9uZ3MgdG8ge0BsaW5rIE1vbmtleUFyb3VuZENvbXBvbmVudCNyZWdpc3RlckZ1bmN0aW9uUGF0Y2h9LFxuICogbm90IHtAbGluayBNb25rZXlBcm91bmRDb21wb25lbnQjcmVnaXN0ZXJNZXRob2RQYXRjaH0uIFRoZSBjaGVjayBpcyB3aGV0aGVyIHRoZSBtZW1iZXIgaGFzIGFueSBvd24ga2V5cyBiZXlvbmQgYSBiYXJlXG4gKiBmdW5jdGlvbidzIChgRXhjbHVkZTxrZXlvZiBULCBrZXlvZiBHZW5lcmljRnVuY3Rpb24+YCBpcyBgbmV2ZXJgKS5cbiAqXG4gKiBAdHlwZVBhcmFtICRPYmplY3QgLSBUaGUgb2JqZWN0IHdob3NlIGtleXMgYXJlIGZpbHRlcmVkLlxuICovXG5leHBvcnQgdHlwZSBNZXRob2RLZXlzPCRPYmplY3QgZXh0ZW5kcyBvYmplY3Q+ID0gTWV0aG9kS2V5c01hcDwkT2JqZWN0PltGdW5jdGlvbktleXM8JE9iamVjdD5dO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgcGFzc2VkIHRvIHtAbGluayBNb25rZXlBcm91bmRDb21wb25lbnQjcmVnaXN0ZXJGdW5jdGlvblBhdGNofS5cbiAqXG4gKiBAdHlwZVBhcmFtICRPYmplY3QgLSBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICogQHR5cGVQYXJhbSBGdW5jdGlvbk5hbWUgLSBUaGUgZnVuY3Rpb24gbmFtZSB0byBwYXRjaC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb25rZXlBcm91bmRDb21wb25lbnRSZWdpc3RlckZ1bmN0aW9uUGF0Y2hQYXJhbXM8JE9iamVjdCBleHRlbmRzIG9iamVjdCwgRnVuY3Rpb25OYW1lIGV4dGVuZHMgRnVuY3Rpb25LZXlzPCRPYmplY3Q+PiB7XG4gIC8qKlxuICAgKiBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICAgKi9cbiAgcmVhZG9ubHkgJG9iamVjdDogJE9iamVjdDtcblxuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIG5hbWUgdG8gcGF0Y2guXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvbk5hbWU6IEZ1bmN0aW9uTmFtZTtcblxuICAvKipcbiAgICogV2hlbiBgdHJ1ZWAsIHRoZSBwYXRjaCB1bmluc3RhbGxzIGl0c2VsZiB0aGUgZmlyc3QgdGltZSB0aGUgcGF0Y2hlZCBmdW5jdGlvbiBpcyBpbnZva2VkIChieVxuICAgKiB1bmxvYWRpbmcgdGhpcyBjb21wb25lbnQpLCByZXN0b3JpbmcgdGhlIG9yaWdpbmFsIOKAlCBzbyB0aGUgaW50ZXJjZXB0aW9uIGhhcHBlbnMgZXhhY3RseSBvbmNlLlxuICAgKiBJbnRlbmRlZCBmb3IgYSBjb21wb25lbnQgZGVkaWNhdGVkIHRvIHRoaXMgc2luZ2xlIHBhdGNoLiBFeGlzdGluZyBjYWxsZXJzIHRoYXQgb21pdCBpdCBhcmVcbiAgICogdW5hZmZlY3RlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgb25jZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFBhdGNoIGhhbmRsZXIgZnVuY3Rpb24gdGhhdCB0YWtlcyB0aGUgb3JpZ2luYWwgdmFsdWUgYW5kIHJldHVybnMgdGhlIHBhdGNoZWQgdmFsdWUuXG4gICAqXG4gICAqIEBwYXJhbSBvcmlnaW5hbFZhbHVlIC0gVGhlIG9yaWdpbmFsIHZhbHVlIG9mIHRoZSBmdW5jdGlvbi5cbiAgICogQHJldHVybnMgVGhlIHBhdGNoZWQgdmFsdWUgb2YgdGhlIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0Y2hIYW5kbGVyOiAob3JpZ2luYWxWYWx1ZTogJE9iamVjdFtGdW5jdGlvbk5hbWVdKSA9PiAkT2JqZWN0W0Z1bmN0aW9uTmFtZV07XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBwYXNzZWQgdG8ge0BsaW5rIE1vbmtleUFyb3VuZENvbXBvbmVudCNyZWdpc3Rlck1ldGhvZFBhdGNofS5cbiAqXG4gKiBAdHlwZVBhcmFtICRPYmplY3QgLSBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICogQHR5cGVQYXJhbSBNZXRob2ROYW1lIC0gVGhlIG1ldGhvZCBuYW1lIHRvIHBhdGNoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vbmtleUFyb3VuZENvbXBvbmVudFJlZ2lzdGVyTWV0aG9kUGF0Y2hQYXJhbXM8JE9iamVjdCBleHRlbmRzIG9iamVjdCwgTWV0aG9kTmFtZSBleHRlbmRzIE1ldGhvZEtleXM8JE9iamVjdD4+IHtcbiAgLyoqXG4gICAqIFRoZSBvYmplY3QgdG8gcGF0Y2guXG4gICAqL1xuICByZWFkb25seSAkb2JqZWN0OiAkT2JqZWN0O1xuXG4gIC8qKlxuICAgKiBUaGUgbWV0aG9kIG5hbWUgdG8gcGF0Y2guXG4gICAqL1xuICByZWFkb25seSBtZXRob2ROYW1lOiBNZXRob2ROYW1lO1xuXG4gIC8qKlxuICAgKiBXaGVuIGB0cnVlYCwgdGhlIHBhdGNoIHVuaW5zdGFsbHMgaXRzZWxmIHRoZSBmaXJzdCB0aW1lIHRoZSBwYXRjaGVkIG1ldGhvZCBpcyBpbnZva2VkLCByZXN0b3JpbmdcbiAgICogdGhlIG9yaWdpbmFsIOKAlCBzbyB0aGUgaW50ZXJjZXB0aW9uIGhhcHBlbnMgZXhhY3RseSBvbmNlLiBFeGlzdGluZyBjYWxsZXJzIHRoYXQgb21pdCBpdCBhcmVcbiAgICogdW5hZmZlY3RlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgb25jZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRjaCBoYW5kbGVyIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0Y2hIYW5kbGVyOiBQYXRjaEhhbmRsZXJGdW5jdGlvbjwkT2JqZWN0LCBNZXRob2ROYW1lPjtcblxuICAvKipcbiAgICogQW4gb3B0aW9uYWwgdG9rZW4gdG8gaWRlbnRpZnkgdGhlIHBhdGNoLlxuICAgKlxuICAgKiBUaGUgdG9rZW4gaXMgcmVjb3JkZWQgYWdhaW5zdCB0aGUgbWV0aG9kIHRoaXMgcGF0Y2ggSU5TVEFMTFMsIHNvIHRoZSBuZXh0IHBhdGNoIG9mIHRoZSBzYW1lIG1ldGhvZFxuICAgKiBkZXRlY3RzIGl0IHZpYSB7QGxpbmsgaGFzUGF0Y2hUb2tlbn0gb24gaXRzIG93biBgb3JpZ2luYWxNZXRob2RgIGFuZCBjYW4gZGVmZXIgdG8gdGhpcyBvbmUuIFRoZVxuICAgKiBwYXRjaCB0aGF0IGluc3RhbGxzIGEgdG9rZW4gdGhlcmVmb3JlIG5ldmVyIHNlZXMgaXRzIG93biB0b2tlbiDigJQgb25seSB0aGUgcGF0Y2hlcyBzdGFja2VkIG9uIHRvcCBvZlxuICAgKiBpdCBkby4gVXNlIGEgYFN5bWJvbC5mb3JgIHRva2VuIHRvIG1ha2UgdGhlIGRldGVjdGlvbiB3b3JrIGFjcm9zcyBpbmRlcGVuZGVudGx5IGJ1bmRsZWQgY29waWVzIG9mXG4gICAqIHRoaXMgbGlicmFyeS5cbiAgICpcbiAgICogVGhlIHRva2VuIGlzIGRyb3BwZWQgd2hlbiB0aGlzIGNvbXBvbmVudCB1bmxvYWRzLCBzbyBhIGxhdGVyIHBhdGNoIHRoYXQgaGFkIGRlZmVycmVkIHRha2VzIG92ZXIgb25cbiAgICogaXRzIG5leHQgY2FsbC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGNoVG9rZW4/OiBzeW1ib2w7XG5cbiAgLyoqXG4gICAqIEFuIG9wdGlvbmFsIHBvc3QtcGF0Y2ggaGFuZGxlciBmdW5jdGlvbiB0aGF0IHJ1bnMgYWZ0ZXIgdGhlIHBhdGNoIGlzIGFwcGxpZWQsIHR5cGljYWxseSB0byBrZWVwIHRoZSBvcmlnaW5hbCBtZXRob2QuXG4gICAqL1xuICByZWFkb25seSBwb3N0UGF0Y2hIYW5kbGVyPzogUG9zdFBhdGNoSGFuZGxlckZ1bmN0aW9uPCRPYmplY3QsIE1ldGhvZE5hbWU+O1xufVxuXG4vKipcbiAqIEEgcGF0Y2ggaGFuZGxlciBmdW5jdGlvbiB0aGF0IGludGVyY2VwdHMgY2FsbHMgdG8gYSBtZXRob2Qgb24gYW4gb2JqZWN0LlxuICpcbiAqIEB0eXBlUGFyYW0gJE9iamVjdCAtIFRoZSBvYmplY3QgYmVpbmcgcGF0Y2hlZC5cbiAqIEB0eXBlUGFyYW0gTWV0aG9kTmFtZSAtIFRoZSBtZXRob2QgbmFtZSBiZWluZyBwYXRjaGVkLlxuICovXG5leHBvcnQgdHlwZSBQYXRjaEhhbmRsZXJGdW5jdGlvbjwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0LCBNZXRob2ROYW1lIGV4dGVuZHMgTWV0aG9kS2V5czwkT2JqZWN0Pj4gPSAoXG4gIHBhcmFtczogUGF0Y2hIYW5kbGVyUGFyYW1zPCRPYmplY3QsIE1ldGhvZE5hbWU+XG4pID0+IFJldHVyblR5cGU8RXh0cmFjdEZ1bmN0aW9uPCRPYmplY3QsIE1ldGhvZE5hbWU+PjtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIHBhc3NlZCB0byBhIHtAbGluayBQYXRjaEhhbmRsZXJGdW5jdGlvbn0gY2FsbGJhY2suXG4gKlxuICogQHR5cGVQYXJhbSAkT2JqZWN0IC0gVGhlIG9iamVjdCBiZWluZyBwYXRjaGVkLlxuICogQHR5cGVQYXJhbSBNZXRob2ROYW1lIC0gVGhlIG1ldGhvZCBuYW1lIGJlaW5nIHBhdGNoZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGF0Y2hIYW5kbGVyUGFyYW1zPCRPYmplY3QgZXh0ZW5kcyBvYmplY3QsIE1ldGhvZE5hbWUgZXh0ZW5kcyBNZXRob2RLZXlzPCRPYmplY3Q+PiB7XG4gIC8qKlxuICAgKiBJbnZva2VzIHRoZSBvcmlnaW5hbCBtZXRob2Qgd2l0aCB0aGUgb3JpZ2luYWwgYHRoaXNgIGFuZCBhcmd1bWVudHMuXG4gICAqXG4gICAqIEByZXR1cm5zIFdoYXRldmVyIHRoZSBvcmlnaW5hbCBtZXRob2QgcmV0dXJucy5cbiAgICovXG4gIHJlYWRvbmx5IGZhbGxiYWNrOiAoKSA9PiBSZXR1cm5UeXBlPEV4dHJhY3RGdW5jdGlvbjwkT2JqZWN0LCBNZXRob2ROYW1lPj47XG5cbiAgLyoqXG4gICAqIFRoZSBvcmlnaW5hbCBhcmd1bWVudHMgb2YgdGhlIGludGVyY2VwdGVkIGNhbGwsIGFzIGEgdHVwbGUuXG4gICAqL1xuICByZWFkb25seSBvcmlnaW5hbEFyZ3VtZW50czogUGFyYW1ldGVyczxFeHRyYWN0RnVuY3Rpb248JE9iamVjdCwgTWV0aG9kTmFtZT4+O1xuXG4gIC8qKlxuICAgKiBUaGUgb3JpZ2luYWwgKHVucGF0Y2hlZCkgbWV0aG9kLiBDYWxsIHZpYSBgb3JpZ2luYWxGbi5jYWxsKG9yaWdpbmFsVGhpcywgLi4ub3JpZ2luYWxBcmdzKWAuXG4gICAqL1xuICByZWFkb25seSBvcmlnaW5hbE1ldGhvZDogRXh0cmFjdEZ1bmN0aW9uPCRPYmplY3QsIE1ldGhvZE5hbWU+O1xuXG4gIC8qKlxuICAgKiBUaGUgb3JpZ2luYWwgbWV0aG9kLCBidXQgd2l0aCB0aGUgYHRoaXNgIGNvbnRleHQgYWxyZWFkeSBib3VuZCB0byB0aGUgb3JpZ2luYWwgb2JqZWN0LiBDYWxsIHZpYSBgb3JpZ2luYWxNZXRob2RCb3VuZCguLi5vcmlnaW5hbEFyZ3MpYC5cbiAgICovXG4gIHJlYWRvbmx5IG9yaWdpbmFsTWV0aG9kQm91bmQ6IE9taXRUaGlzUGFyYW1ldGVyPEV4dHJhY3RGdW5jdGlvbjwkT2JqZWN0LCBNZXRob2ROYW1lPj47XG5cbiAgLyoqXG4gICAqIFRoZSBvcmlnaW5hbCBgdGhpc2AgY29udGV4dCBvZiB0aGUgaW50ZXJjZXB0ZWQgY2FsbC5cbiAgICovXG4gIHJlYWRvbmx5IG9yaWdpbmFsVGhpczogJE9iamVjdDtcbn1cblxuLyoqXG4gKiBBIHBvc3QtcGF0Y2ggaGFuZGxlciBmdW5jdGlvbiB0aGF0IHJ1bnMgYWZ0ZXIgYSBwYXRjaCBpcyBhcHBsaWVkLlxuICpcbiAqIEl0IHJldHVybnMgbm90aGluZyBhbmQgaXMgbm90IGhhbmRlZCB0aGUgcGF0Y2hlZCBtZXRob2Q6IHRoZSBtZXRob2QgaW5zdGFsbGVkIGlzIGFsd2F5cyB0aGUgb25lIHRoZSBwYXRjaCBidWlsZHMsIHNvXG4gKiBhIHBvc3QtcGF0Y2ggaGFuZGxlciBjYW5ub3QgZ3JhZnQgbWVtYmVycyBvbnRvIGl0LiBBIGNhcGFiaWxpdHkgYmV5b25kIHRoZSBwYXRjaGVkIG1ldGhvZCdzIG93biBzaWduYXR1cmUgYmVsb25nc1xuICogb24gdGhlIHBsdWdpbidzIHB1Ymxpc2hlZCBBUEkgaW5zdGVhZC5cbiAqXG4gKiBAdHlwZVBhcmFtICRPYmplY3QgLSBUaGUgb2JqZWN0IGJlaW5nIHBhdGNoZWQuXG4gKiBAdHlwZVBhcmFtIE1ldGhvZE5hbWUgLSBUaGUgbWV0aG9kIG5hbWUgYmVpbmcgcGF0Y2hlZC5cbiAqL1xuZXhwb3J0IHR5cGUgUG9zdFBhdGNoSGFuZGxlckZ1bmN0aW9uPCRPYmplY3QgZXh0ZW5kcyBvYmplY3QsIE1ldGhvZE5hbWUgZXh0ZW5kcyBNZXRob2RLZXlzPCRPYmplY3Q+PiA9IChcbiAgcGFyYW1zOiBQb3N0UGF0Y2hIYW5kbGVyUGFyYW1zPCRPYmplY3QsIE1ldGhvZE5hbWU+XG4pID0+IHZvaWQ7XG5cbi8qKlxuICogUGFyYW1ldGVycyBwYXNzZWQgdG8gYSB7QGxpbmsgUG9zdFBhdGNoSGFuZGxlckZ1bmN0aW9ufSBjYWxsYmFjay5cbiAqXG4gKiBAdHlwZVBhcmFtICRPYmplY3QgLSBUaGUgb2JqZWN0IGJlaW5nIHBhdGNoZWQuXG4gKiBAdHlwZVBhcmFtIE1ldGhvZE5hbWUgLSBUaGUgbWV0aG9kIG5hbWUgYmVpbmcgcGF0Y2hlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQb3N0UGF0Y2hIYW5kbGVyUGFyYW1zPCRPYmplY3QgZXh0ZW5kcyBvYmplY3QsIE1ldGhvZE5hbWUgZXh0ZW5kcyBNZXRob2RLZXlzPCRPYmplY3Q+PiB7XG4gIC8qKlxuICAgKiBUaGUgb3JpZ2luYWwgKHVucGF0Y2hlZCkgbWV0aG9kLiBDYWxsIHZpYSBgb3JpZ2luYWxGbi5jYWxsKG9yaWdpbmFsVGhpcywgLi4ub3JpZ2luYWxBcmdzKWAuXG4gICAqL1xuICByZWFkb25seSBvcmlnaW5hbE1ldGhvZDogRXh0cmFjdEZ1bmN0aW9uPCRPYmplY3QsIE1ldGhvZE5hbWU+O1xufVxuXG50eXBlIEV4dHJhY3RGdW5jdGlvbjwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0LCBNZXRob2ROYW1lIGV4dGVuZHMgTWV0aG9kS2V5czwkT2JqZWN0Pj4gPSBHZW5lcmljRnVuY3Rpb248UGFyYW1ldGVyczxFeHRyYWN0PCRPYmplY3RbTWV0aG9kTmFtZV0sIEdlbmVyaWNGdW5jdGlvbj4+LCBSZXR1cm5UeXBlPEV4dHJhY3Q8JE9iamVjdFtNZXRob2ROYW1lXSwgR2VuZXJpY0Z1bmN0aW9uPj4+O1xuXG50eXBlIEZ1bGxGYWN0b3JpZXM8JE9iamVjdCBleHRlbmRzIG9iamVjdD4gPSB7XG4gIFtLZXkgaW4ga2V5b2YgJE9iamVjdF06IChvcmlnaW5hbFZhbHVlOiAkT2JqZWN0W0tleV0pID0+ICRPYmplY3RbS2V5XTtcbn07XG5cbnR5cGUgTWV0aG9kS2V5c01hcDwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0PiA9IHtcbiAgW0tleSBpbiBGdW5jdGlvbktleXM8JE9iamVjdD5dOiBbRXhjbHVkZTxrZXlvZiBOb25OdWxsYWJsZTwkT2JqZWN0W0tleV0+LCBrZXlvZiBHZW5lcmljRnVuY3Rpb24+XSBleHRlbmRzIFtuZXZlcl0gPyBLZXkgOiBuZXZlcjtcbn07XG5cbnR5cGUgT3JpZ2luYWxGYWN0b3JpZXM8JE9iamVjdCBleHRlbmRzIEdlbmVyaWNPYmplY3Q+ID0gUGFyYW1ldGVyczx0eXBlb2Ygb3JpZ2luYWxBcm91bmQ8JE9iamVjdD4+WzFdO1xuXG50eXBlIFVuaW5zdGFsbGVyID0gKCkgPT4gdm9pZDtcblxuLyoqXG4gKiBBIGNvbXBvbmVudCB0aGF0IG1hbmFnZXMgbW9ua2V5LXBhdGNoZXMgd2l0aCBsaWZlY3ljbGUtYm91bmQgY2xlYW51cC5cbiAqIEFsbCBwYXRjaGVzIHJlZ2lzdGVyZWQgdmlhIHRoaXMgY29tcG9uZW50IGFyZSBhdXRvbWF0aWNhbGx5IHVuaW5zdGFsbGVkIHdoZW4gdGhlIGNvbXBvbmVudCB1bmxvYWRzLlxuICovXG5leHBvcnQgY2xhc3MgTW9ua2V5QXJvdW5kQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50RXgge1xuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgcGF0Y2ggZm9yIGEgc2luZ2xlIGZ1bmN0aW9uLWxpa2UgbWVtYmVyIChhIG1ldGhvZCwgb3IgYSBjYWxsYWJsZSBzdWNoIGFzIGEgYERlYm91bmNlcmApIHVzaW5nIGEgc2ltcGxpZmllZCBoYW5kbGVyLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtICRPYmplY3QgLSBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICAgKiBAdHlwZVBhcmFtIEZ1bmN0aW9uTmFtZSAtIFRoZSBmdW5jdGlvbiBuYW1lIHRvIHBhdGNoLlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHBhdGNoLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyRnVuY3Rpb25QYXRjaDwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0LCBjb25zdCBGdW5jdGlvbk5hbWUgZXh0ZW5kcyBGdW5jdGlvbktleXM8JE9iamVjdD4+KFxuICAgIHBhcmFtczogTW9ua2V5QXJvdW5kQ29tcG9uZW50UmVnaXN0ZXJGdW5jdGlvblBhdGNoUGFyYW1zPCRPYmplY3QsIEZ1bmN0aW9uTmFtZT5cbiAgKTogdm9pZCB7XG4gICAgdGhpcy5lbnN1cmVMb2FkZWQoKTtcblxuICAgIGNvbnN0IGZhY3RvcmllczogRmFjdG9yaWVzPCRPYmplY3Q+ID0ge307XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbm8taW1tZWRpYXRlLW11dGF0aW9uIC0tIEEgY29tcHV0ZWQga2V5IGluIGFuIG9iamVjdCBsaXRlcmFsIGRvZXMgbm90IG1hdGNoIGBQYXJ0aWFsPEZ1bGxGYWN0b3JpZXM8JE9iamVjdD4+YCB3aGVuIHRoZSBrZXkgdHlwZSBpcyBnZW5lcmljOyBhc3NpZ25pbmcgYWZ0ZXIgZGVjbGFyYXRpb24ga2VlcHMgdGhlIHRhcmdldCB0eXBlIGtub3duLlxuICAgIGZhY3Rvcmllc1twYXJhbXMuZnVuY3Rpb25OYW1lXSA9IChvcmlnaW5hbFZhbHVlOiAkT2JqZWN0W0Z1bmN0aW9uTmFtZV0pOiAkT2JqZWN0W0Z1bmN0aW9uTmFtZV0gPT4ge1xuICAgICAgY29uc3QgcGF0Y2hlZFZhbHVlID0gcGFyYW1zLnBhdGNoSGFuZGxlcihvcmlnaW5hbFZhbHVlKTtcbiAgICAgIGlmICghcGFyYW1zLm9uY2UpIHtcbiAgICAgICAgcmV0dXJuIHBhdGNoZWRWYWx1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gQSBgb25jZWAgcGF0Y2ggdW5sb2FkcyB0aGlzIGNvbXBvbmVudCBhZnRlciB0aGUgZmlyc3QgaW52b2NhdGlvbiDigJQgcnVubmluZyB0aGUgcmVnaXN0ZXJlZFxuICAgICAgLy8gdW5pbnN0YWxsZXIgYW5kIHJlc3RvcmluZyB0aGUgb3JpZ2luYWwuIGB1bmxvYWRDb21wb25lbnRgIGlzIGFuIGFycm93IHNvIGl0IGNhcHR1cmVzIHRoZVxuICAgICAgLy8gY29tcG9uZW50IGB0aGlzYDsgdGhlIG5lc3RlZCBgb25jZVBhdGNoZWRWYWx1ZWAgbXVzdCBiZSBhIGZ1bmN0aW9uIHRvIHJlY2VpdmUgdGhlIGNhbGwtdGltZVxuICAgICAgLy8gYHRoaXNgLiBPd24gbWVtYmVycyAoZS5nLiBhIGBEZWJvdW5jZXJgJ3MgYGNhbmNlbGAvYHJ1bmApIGFyZSBjb3BpZWQgb250byBpdCBzbyBmdW5jdGlvbi1saWtlXG4gICAgICAvLyB2YWx1ZXMga2VlcCB3b3JraW5nLlxuICAgICAgY29uc3QgdW5sb2FkQ29tcG9uZW50ID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLnVubG9hZCgpO1xuICAgICAgfTtcbiAgICAgIGZ1bmN0aW9uIG9uY2VQYXRjaGVkVmFsdWUodGhpczogdW5rbm93biwgLi4uJGFyZ3VtZW50czogdW5rbm93bltdKTogdW5rbm93biB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIFJlZmxlY3QuYXBwbHkocGF0Y2hlZFZhbHVlLCB0aGlzLCAkYXJndW1lbnRzKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICB1bmxvYWRDb21wb25lbnQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24ob25jZVBhdGNoZWRWYWx1ZSwgcGF0Y2hlZFZhbHVlKSBhcyAkT2JqZWN0W0Z1bmN0aW9uTmFtZV07XG4gICAgfTtcblxuICAgIHRoaXMucmVnaXN0ZXJQYXRjaChwYXJhbXMuJG9iamVjdCwgZmFjdG9yaWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBzaW5nbGUtbWV0aG9kIHBhdGNoIHVzaW5nIGEgc2ltcGxpZmllZCBoYW5kbGVyLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtICRPYmplY3QgLSBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICAgKiBAdHlwZVBhcmFtIE1ldGhvZE5hbWUgLSBUaGUgbWV0aG9kIG5hbWUgdG8gcGF0Y2guXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBvZiB0aGUgcGF0Y2guXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJNZXRob2RQYXRjaDwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0LCBjb25zdCBNZXRob2ROYW1lIGV4dGVuZHMgTWV0aG9kS2V5czwkT2JqZWN0Pj4oXG4gICAgcGFyYW1zOiBNb25rZXlBcm91bmRDb21wb25lbnRSZWdpc3Rlck1ldGhvZFBhdGNoUGFyYW1zPCRPYmplY3QsIE1ldGhvZE5hbWU+XG4gICk6IHZvaWQge1xuICAgIHRoaXMuZW5zdXJlTG9hZGVkKCk7XG5cbiAgICB0eXBlICRGdW5jdGlvbiA9IEV4dHJhY3RGdW5jdGlvbjwkT2JqZWN0LCBNZXRob2ROYW1lPjtcblxuICAgIHRoaXMucmVnaXN0ZXJGdW5jdGlvblBhdGNoKHtcbiAgICAgICRvYmplY3Q6IHBhcmFtcy4kb2JqZWN0LFxuICAgICAgZnVuY3Rpb25OYW1lOiBwYXJhbXMubWV0aG9kTmFtZSxcbiAgICAgIG9uY2U6IHBhcmFtcy5vbmNlID8/IGZhbHNlLFxuICAgICAgcGF0Y2hIYW5kbGVyOiAob3JpZ2luYWxNZXRob2RSYXcpID0+IHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBvcmlnaW5hbE1ldGhvZFJhdyBhcyAkRnVuY3Rpb247XG4gICAgICAgIHBhcmFtcy5wb3N0UGF0Y2hIYW5kbGVyPy4oeyBvcmlnaW5hbE1ldGhvZCB9KTtcbiAgICAgICAgcmV0dXJuIHBhdGNoZWRNZXRob2QgYXMgJE9iamVjdFtNZXRob2ROYW1lXTtcblxuICAgICAgICBmdW5jdGlvbiBwYXRjaGVkTWV0aG9kKHRoaXM6ICRPYmplY3QsIC4uLm9yaWdpbmFsQXJndW1lbnRzOiBQYXJhbWV0ZXJzPCRGdW5jdGlvbj4pOiBSZXR1cm5UeXBlPCRGdW5jdGlvbj4ge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXRoaXMsIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzLCB1bmljb3JuL25vLXRoaXMtYXNzaWdubWVudCAtLSBXZSBuZWVkIHRvIHVzZSB0aGUgYHRoaXNgIGNvbnRleHQuXG4gICAgICAgICAgY29uc3Qgb3JpZ2luYWxUaGlzID0gdGhpcztcbiAgICAgICAgICByZXR1cm4gcGFyYW1zLnBhdGNoSGFuZGxlcih7XG4gICAgICAgICAgICBmYWxsYmFjaygpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsTWV0aG9kLmNhbGwob3JpZ2luYWxUaGlzLCAuLi5vcmlnaW5hbEFyZ3VtZW50cyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb3JpZ2luYWxBcmd1bWVudHMsXG4gICAgICAgICAgICBvcmlnaW5hbE1ldGhvZCxcbiAgICAgICAgICAgIG9yaWdpbmFsTWV0aG9kQm91bmQ6IG9yaWdpbmFsTWV0aG9kLmJpbmQob3JpZ2luYWxUaGlzKSxcbiAgICAgICAgICAgIG9yaWdpbmFsVGhpc1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoIXBhcmFtcy5wYXRjaFRva2VuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVGhlIHRva2VuIG1hcmtzIHRoZSBJTlNUQUxMRUQgbWV0aG9kLCByZWFkIGJhY2sgb25jZSB0aGUgcGF0Y2ggaXMgaW4gcGxhY2UuXG4gICAgLy8gVGhhdCBpcyB0aGUgaWRlbnRpdHkgdGhlIG5leHQgcGF0Y2ggb2YgdGhlIHNhbWUgbWV0aG9kIHJlY2VpdmVzIGFzIGl0cyBgb3JpZ2luYWxNZXRob2RgLlxuICAgIC8vIGBtb25rZXktYXJvdW5kYCBpbnN0YWxscyBhIHdyYXBwZXIgb2YgaXRzIG93biBhbmQgZXhwb3NlcyB0aGUgdmFsdWUgYnVpbHQgYWJvdmUgb25seSB2aWEgaXRzIHByb3RvdHlwZS5cbiAgICAvLyBNYXJraW5nIHRoYXQgdmFsdWUsIG9yIHRoZSBtZXRob2QgYmVpbmcgd3JhcHBlZCBhcyB0aGlzIG9uY2UgZGlkLCBtYXRjaGVzIG5vdGhpbmcgdGhlIG5leHQgcGF0Y2ggc2Vlcy5cbiAgICAvLyBEcm9wcGluZyB0aGUgdG9rZW4gb24gdW5sb2FkIGxldHMgYSBkZWZlcnJpbmcgbGF0ZXIgcGF0Y2ggdGFrZSBvdmVyLCBzaW5jZSB0aGUgZ3VhcmQgaXMgcmVhZCBwZXIgY2FsbC5cbiAgICBjb25zdCBwYXRjaGVkTWV0aG9kID0gcGFyYW1zLiRvYmplY3RbcGFyYW1zLm1ldGhvZE5hbWVdIGFzIEdlbmVyaWNGdW5jdGlvbjtcbiAgICBjb25zdCBtb25rZXlBcm91bmRQYXRjaGVzID0gZ2V0TW9ua2V5QXJvdW5kUGF0Y2hlcygpO1xuICAgIG1vbmtleUFyb3VuZFBhdGNoZXMuc2V0KHBhdGNoZWRNZXRob2QsIHBhcmFtcy5wYXRjaFRva2VuKTtcbiAgICB0aGlzLnJlZ2lzdGVyKCgpID0+IHtcbiAgICAgIG1vbmtleUFyb3VuZFBhdGNoZXMuZGVsZXRlKHBhdGNoZWRNZXRob2QpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIHBhdGNoIHVzaW5nIHJhdyBmYWN0b3JpZXMgKGFkdmFuY2VkIEFQSSkuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gJE9iamVjdCAtIFRoZSBvYmplY3QgdG8gcGF0Y2guXG4gICAqIEBwYXJhbSAkb2JqZWN0IC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAgICogQHBhcmFtIGZhY3RvcmllcyAtIFRoZSBmYWN0b3JpZXMgdG8gYXBwbHkgdG8gdGhlIG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyByZWdpc3RlclBhdGNoPCRPYmplY3QgZXh0ZW5kcyBvYmplY3Q+KCRvYmplY3Q6ICRPYmplY3QsIGZhY3RvcmllczogRmFjdG9yaWVzPCRPYmplY3Q+KTogdm9pZCB7XG4gICAgdGhpcy5lbnN1cmVMb2FkZWQoKTtcblxuICAgIGNvbnN0IHVuaW5zdGFsbGVyID0gYXJvdW5kKCRvYmplY3QsIGZhY3Rvcmllcyk7XG4gICAgdGhpcy5yZWdpc3Rlcih1bmluc3RhbGxlcik7XG4gIH1cbn1cblxuLyoqXG4gKiBBcHBsaWVzIGEgcGF0Y2ggdG8gdGhlIG9iamVjdC5cbiAqIEJldHRlciBzdHJvbmdseS10eXBlZCB2ZXJzaW9uIG9mIGBtb25rZXktYXJvdW5kYC5cbiAqXG4gKiBAdHlwZVBhcmFtICRPYmplY3QgLSBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICogQHBhcmFtICRvYmplY3QgLSBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICogQHBhcmFtIGZhY3RvcmllcyAtIFRoZSBmYWN0b3JpZXMgdG8gYXBwbHkgdG8gdGhlIG9iamVjdC5cbiAqIEByZXR1cm5zIFRoZSB1bmluc3RhbGxlciB0aGF0IHJlbW92ZXMgdGhlIHBhdGNoIHdoZW4gY2FsbGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXJvdW5kPCRPYmplY3QgZXh0ZW5kcyBvYmplY3Q+KCRvYmplY3Q6ICRPYmplY3QsIGZhY3RvcmllczogRmFjdG9yaWVzPCRPYmplY3Q+KTogVW5pbnN0YWxsZXIge1xuICByZXR1cm4gb3JpZ2luYWxBcm91bmQoJG9iamVjdCBhcyBHZW5lcmljT2JqZWN0LCBmYWN0b3JpZXMgYXMgT3JpZ2luYWxGYWN0b3JpZXM8R2VuZXJpY09iamVjdD4pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIGZ1bmN0aW9uIGhhcyBhIHNwZWNpZmljIHBhdGNoIHRva2VuLlxuICpcbiAqIEEgdG9rZW4gaXMgY2FycmllZCBieSB0aGUgbWV0aG9kIGEge0BsaW5rIE1vbmtleUFyb3VuZENvbXBvbmVudCNyZWdpc3Rlck1ldGhvZFBhdGNofSBjYWxsIElOU1RBTExFRCwgc29cbiAqIHRoZSBpbnRlbmRlZCBjYWxsZXIgaXMgYSBsYXRlciBwYXRjaCBvZiB0aGUgc2FtZSBtZXRob2QsIGNoZWNraW5nIHRoZSBgb3JpZ2luYWxNZXRob2RgIGl0IHdyYXBwZWQgaW5cbiAqIG9yZGVyIHRvIGRlZmVyIHRvIHRoZSBwYXRjaCBhbHJlYWR5IGluIHBsYWNlOlxuICpcbiAqIGBgYHRzXG4gKiBwYXRjaEhhbmRsZXI6ICh7IGZhbGxiYWNrLCBvcmlnaW5hbE1ldGhvZCB9KSA9PiB7XG4gKiAgIGlmIChoYXNQYXRjaFRva2VuKG9yaWdpbmFsTWV0aG9kLCBQQVRDSF9UT0tFTikpIHtcbiAqICAgICByZXR1cm4gZmFsbGJhY2soKTtcbiAqICAgfVxuICogICAuLi5cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFRoZSBjaGVjayBpcyBtYWRlIHBlciBjYWxsLCBzbyBpdCBzdG9wcyByZXBvcnRpbmcgdGhlIGVhcmxpZXIgcGF0Y2ggb25jZSB0aGF0IHBhdGNoJ3MgY29tcG9uZW50IHVubG9hZHMuXG4gKlxuICogQHBhcmFtICRmdW5jdGlvbiAtIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAqIEBwYXJhbSBwYXRjaFRva2VuIC0gVGhlIHBhdGNoIHRva2VuIHRvIGNoZWNrIGZvci5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGZ1bmN0aW9uIGhhcyB0aGUgcGF0Y2ggdG9rZW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNQYXRjaFRva2VuKCRmdW5jdGlvbjogR2VuZXJpY0Z1bmN0aW9uLCBwYXRjaFRva2VuOiBzeW1ib2wpOiBib29sZWFuIHtcbiAgcmV0dXJuIGdldE1vbmtleUFyb3VuZFBhdGNoZXMoKS5nZXQoJGZ1bmN0aW9uKSA9PT0gcGF0Y2hUb2tlbjtcbn1cblxuZnVuY3Rpb24gZ2V0TW9ua2V5QXJvdW5kUGF0Y2hlcygpOiBXZWFrTWFwPEdlbmVyaWNGdW5jdGlvbiwgc3ltYm9sPiB7XG4gIHJldHVybiBnZXRPYnNpZGlhbkRldlV0aWxzU3RhdGUoJ21vbmtleUFyb3VuZFBhdGNoZXMnLCBuZXcgV2Vha01hcDxHZW5lcmljRnVuY3Rpb24sIHN5bWJvbD4oKSkudmFsdWU7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBVUEsMkJBQXlDO0FBRXpDLHNDQUF5QztBQUN6QywwQkFBNEI7QUE0TXJCLE1BQU0sOEJBQThCLGdDQUFZO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7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
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbmtleS1hcm91bmQtY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBJbXByb3ZlZCB0eXBlLXNhZmUgd3JhcHBlciBvZiB7QGxpbmsgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvbW9ua2V5LWFyb3VuZH0gbGlicmFyeS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNGdW5jdGlvbiB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9mdW5jdGlvbic7XG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNPYmplY3QgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHlwZS1ndWFyZHMnO1xuaW1wb3J0IHR5cGUgeyBDb25kaXRpb25hbEtleXMgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBhcm91bmQgYXMgb3JpZ2luYWxBcm91bmQgfSBmcm9tICdtb25rZXktYXJvdW5kJztcblxuaW1wb3J0IHsgZ2V0T2JzaWRpYW5MaWJTdGF0ZSB9IGZyb20gJy4uL29ic2lkaWFuLWxpYi1zdGF0ZS50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFeCB9IGZyb20gJy4vY29tcG9uZW50LWV4LnRzJztcblxuLyoqXG4gKiBBIHR5cGUgb2YgdGhlIGZhY3RvcmllcyB0byBhcHBseSB0byB0aGUgb2JqZWN0LlxuICpcbiAqIEB0eXBlUGFyYW0gJE9iamVjdCAtIFRoZSBvYmplY3QgdG8gcGF0Y2guXG4gKi9cbmV4cG9ydCB0eXBlIEZhY3RvcmllczwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0PiA9IFBhcnRpYWw8RnVsbEZhY3RvcmllczwkT2JqZWN0Pj47XG5cbi8qKlxuICogS2V5cyBvZiBgT2JqYCB3aG9zZSB2YWx1ZSBpcyBjYWxsYWJsZSDigJQgYSBtZXRob2QsIG9yIGEgZnVuY3Rpb24tbGlrZSBvYmplY3Qgc3VjaCBhcyBhIGBEZWJvdW5jZXJgLiBUaGVzZSBhcmUgdGhlIG1lbWJlcnNcbiAqIGFjY2VwdGVkIGJ5IHtAbGluayBNb25rZXlBcm91bmRDb21wb25lbnQjcmVnaXN0ZXJGdW5jdGlvblBhdGNofS5cbiAqXG4gKiBAdHlwZVBhcmFtICRPYmplY3QgLSBUaGUgb2JqZWN0IHdob3NlIGtleXMgYXJlIGZpbHRlcmVkLlxuICovXG5leHBvcnQgdHlwZSBGdW5jdGlvbktleXM8JE9iamVjdCBleHRlbmRzIG9iamVjdD4gPSBDb25kaXRpb25hbEtleXM8JE9iamVjdCwgR2VuZXJpY0Z1bmN0aW9uIHwgdW5kZWZpbmVkPiAmIGtleW9mICRPYmplY3Q7XG5cbi8qKlxuICogS2V5cyBvZiBgT2JqYCB3aG9zZSB2YWx1ZSBpcyBhIHBsYWluIGZ1bmN0aW9uIChhIFwicmVhbCBtZXRob2RcIikuIEZ1bmN0aW9uLWxpa2Ugb2JqZWN0cyB0aGF0IGNhcnJ5IGV4dHJhIG1lbWJlcnMgYXJlXG4gKiBleGNsdWRlZCDigJQgZS5nLiBhIGBEZWJvdW5jZXJgICh3aGljaCBhZGRzIGBjYW5jZWxgL2BydW5gKSBiZWxvbmdzIHRvIHtAbGluayBNb25rZXlBcm91bmRDb21wb25lbnQjcmVnaXN0ZXJGdW5jdGlvblBhdGNofSxcbiAqIG5vdCB7QGxpbmsgTW9ua2V5QXJvdW5kQ29tcG9uZW50I3JlZ2lzdGVyTWV0aG9kUGF0Y2h9LiBUaGUgY2hlY2sgaXMgd2hldGhlciB0aGUgbWVtYmVyIGhhcyBhbnkgb3duIGtleXMgYmV5b25kIGEgYmFyZVxuICogZnVuY3Rpb24ncyAoYEV4Y2x1ZGU8a2V5b2YgVCwga2V5b2YgR2VuZXJpY0Z1bmN0aW9uPmAgaXMgYG5ldmVyYCkuXG4gKlxuICogQHR5cGVQYXJhbSAkT2JqZWN0IC0gVGhlIG9iamVjdCB3aG9zZSBrZXlzIGFyZSBmaWx0ZXJlZC5cbiAqL1xuZXhwb3J0IHR5cGUgTWV0aG9kS2V5czwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0PiA9IE1ldGhvZEtleXNNYXA8JE9iamVjdD5bRnVuY3Rpb25LZXlzPCRPYmplY3Q+XTtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIHBhc3NlZCB0byB7QGxpbmsgTW9ua2V5QXJvdW5kQ29tcG9uZW50I3JlZ2lzdGVyRnVuY3Rpb25QYXRjaH0uXG4gKlxuICogQHR5cGVQYXJhbSAkT2JqZWN0IC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAqIEB0eXBlUGFyYW0gRnVuY3Rpb25OYW1lIC0gVGhlIGZ1bmN0aW9uIG5hbWUgdG8gcGF0Y2guXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9ua2V5QXJvdW5kQ29tcG9uZW50UmVnaXN0ZXJGdW5jdGlvblBhdGNoUGFyYW1zPCRPYmplY3QgZXh0ZW5kcyBvYmplY3QsIEZ1bmN0aW9uTmFtZSBleHRlbmRzIEZ1bmN0aW9uS2V5czwkT2JqZWN0Pj4ge1xuICAvKipcbiAgICogVGhlIG9iamVjdCB0byBwYXRjaC5cbiAgICovXG4gIHJlYWRvbmx5ICRvYmplY3Q6ICRPYmplY3Q7XG5cbiAgLyoqXG4gICAqIFRoZSBmdW5jdGlvbiBuYW1lIHRvIHBhdGNoLlxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb25OYW1lOiBGdW5jdGlvbk5hbWU7XG5cbiAgLyoqXG4gICAqIFdoZW4gYHRydWVgLCB0aGUgcGF0Y2ggdW5pbnN0YWxscyBpdHNlbGYgdGhlIGZpcnN0IHRpbWUgdGhlIHBhdGNoZWQgZnVuY3Rpb24gaXMgaW52b2tlZCAoYnlcbiAgICogdW5sb2FkaW5nIHRoaXMgY29tcG9uZW50KSwgcmVzdG9yaW5nIHRoZSBvcmlnaW5hbCDigJQgc28gdGhlIGludGVyY2VwdGlvbiBoYXBwZW5zIGV4YWN0bHkgb25jZS5cbiAgICogSW50ZW5kZWQgZm9yIGEgY29tcG9uZW50IGRlZGljYXRlZCB0byB0aGlzIHNpbmdsZSBwYXRjaC4gRXhpc3RpbmcgY2FsbGVycyB0aGF0IG9taXQgaXQgYXJlXG4gICAqIHVuYWZmZWN0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IG9uY2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQYXRjaCBoYW5kbGVyIGZ1bmN0aW9uIHRoYXQgdGFrZXMgdGhlIG9yaWdpbmFsIHZhbHVlIGFuZCByZXR1cm5zIHRoZSBwYXRjaGVkIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0gb3JpZ2luYWxWYWx1ZSAtIFRoZSBvcmlnaW5hbCB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24uXG4gICAqIEByZXR1cm5zIFRoZSBwYXRjaGVkIHZhbHVlIG9mIHRoZSBmdW5jdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGNoSGFuZGxlcjogKG9yaWdpbmFsVmFsdWU6ICRPYmplY3RbRnVuY3Rpb25OYW1lXSkgPT4gJE9iamVjdFtGdW5jdGlvbk5hbWVdO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgcGFzc2VkIHRvIHtAbGluayBNb25rZXlBcm91bmRDb21wb25lbnQjcmVnaXN0ZXJNZXRob2RQYXRjaH0uXG4gKlxuICogQHR5cGVQYXJhbSAkT2JqZWN0IC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAqIEB0eXBlUGFyYW0gTWV0aG9kTmFtZSAtIFRoZSBtZXRob2QgbmFtZSB0byBwYXRjaC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNb25rZXlBcm91bmRDb21wb25lbnRSZWdpc3Rlck1ldGhvZFBhdGNoUGFyYW1zPCRPYmplY3QgZXh0ZW5kcyBvYmplY3QsIE1ldGhvZE5hbWUgZXh0ZW5kcyBNZXRob2RLZXlzPCRPYmplY3Q+PiB7XG4gIC8qKlxuICAgKiBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICAgKi9cbiAgcmVhZG9ubHkgJG9iamVjdDogJE9iamVjdDtcblxuICAvKipcbiAgICogVGhlIG1ldGhvZCBuYW1lIHRvIHBhdGNoLlxuICAgKi9cbiAgcmVhZG9ubHkgbWV0aG9kTmFtZTogTWV0aG9kTmFtZTtcblxuICAvKipcbiAgICogV2hlbiBgdHJ1ZWAsIHRoZSBwYXRjaCB1bmluc3RhbGxzIGl0c2VsZiB0aGUgZmlyc3QgdGltZSB0aGUgcGF0Y2hlZCBtZXRob2QgaXMgaW52b2tlZCwgcmVzdG9yaW5nXG4gICAqIHRoZSBvcmlnaW5hbCDigJQgc28gdGhlIGludGVyY2VwdGlvbiBoYXBwZW5zIGV4YWN0bHkgb25jZS4gRXhpc3RpbmcgY2FsbGVycyB0aGF0IG9taXQgaXQgYXJlXG4gICAqIHVuYWZmZWN0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IG9uY2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0Y2ggaGFuZGxlciBmdW5jdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGNoSGFuZGxlcjogUGF0Y2hIYW5kbGVyRnVuY3Rpb248JE9iamVjdCwgTWV0aG9kTmFtZT47XG5cbiAgLyoqXG4gICAqIEFuIG9wdGlvbmFsIHRva2VuIHRvIGlkZW50aWZ5IHRoZSBwYXRjaC5cbiAgICpcbiAgICogVGhlIHRva2VuIGlzIHJlY29yZGVkIGFnYWluc3QgdGhlIG1ldGhvZCB0aGlzIHBhdGNoIElOU1RBTExTLCBzbyB0aGUgbmV4dCBwYXRjaCBvZiB0aGUgc2FtZSBtZXRob2RcbiAgICogZGV0ZWN0cyBpdCB2aWEge0BsaW5rIGhhc1BhdGNoVG9rZW59IG9uIGl0cyBvd24gYG9yaWdpbmFsTWV0aG9kYCBhbmQgY2FuIGRlZmVyIHRvIHRoaXMgb25lLiBUaGVcbiAgICogcGF0Y2ggdGhhdCBpbnN0YWxscyBhIHRva2VuIHRoZXJlZm9yZSBuZXZlciBzZWVzIGl0cyBvd24gdG9rZW4g4oCUIG9ubHkgdGhlIHBhdGNoZXMgc3RhY2tlZCBvbiB0b3Agb2ZcbiAgICogaXQgZG8uIFVzZSBhIGBTeW1ib2wuZm9yYCB0b2tlbiB0byBtYWtlIHRoZSBkZXRlY3Rpb24gd29yayBhY3Jvc3MgaW5kZXBlbmRlbnRseSBidW5kbGVkIGNvcGllcyBvZlxuICAgKiB0aGlzIGxpYnJhcnkuXG4gICAqXG4gICAqIFRoZSB0b2tlbiBpcyBkcm9wcGVkIHdoZW4gdGhpcyBjb21wb25lbnQgdW5sb2Fkcywgc28gYSBsYXRlciBwYXRjaCB0aGF0IGhhZCBkZWZlcnJlZCB0YWtlcyBvdmVyIG9uXG4gICAqIGl0cyBuZXh0IGNhbGwuXG4gICAqL1xuICByZWFkb25seSBwYXRjaFRva2VuPzogc3ltYm9sO1xuXG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBwb3N0LXBhdGNoIGhhbmRsZXIgZnVuY3Rpb24gdGhhdCBydW5zIGFmdGVyIHRoZSBwYXRjaCBpcyBhcHBsaWVkLCB0eXBpY2FsbHkgdG8ga2VlcCB0aGUgb3JpZ2luYWwgbWV0aG9kLlxuICAgKi9cbiAgcmVhZG9ubHkgcG9zdFBhdGNoSGFuZGxlcj86IFBvc3RQYXRjaEhhbmRsZXJGdW5jdGlvbjwkT2JqZWN0LCBNZXRob2ROYW1lPjtcbn1cblxuLyoqXG4gKiBBIHBhdGNoIGhhbmRsZXIgZnVuY3Rpb24gdGhhdCBpbnRlcmNlcHRzIGNhbGxzIHRvIGEgbWV0aG9kIG9uIGFuIG9iamVjdC5cbiAqXG4gKiBAdHlwZVBhcmFtICRPYmplY3QgLSBUaGUgb2JqZWN0IGJlaW5nIHBhdGNoZWQuXG4gKiBAdHlwZVBhcmFtIE1ldGhvZE5hbWUgLSBUaGUgbWV0aG9kIG5hbWUgYmVpbmcgcGF0Y2hlZC5cbiAqL1xuZXhwb3J0IHR5cGUgUGF0Y2hIYW5kbGVyRnVuY3Rpb248JE9iamVjdCBleHRlbmRzIG9iamVjdCwgTWV0aG9kTmFtZSBleHRlbmRzIE1ldGhvZEtleXM8JE9iamVjdD4+ID0gKFxuICBwYXJhbXM6IFBhdGNoSGFuZGxlclBhcmFtczwkT2JqZWN0LCBNZXRob2ROYW1lPlxuKSA9PiBSZXR1cm5UeXBlPEV4dHJhY3RGdW5jdGlvbjwkT2JqZWN0LCBNZXRob2ROYW1lPj47XG5cbi8qKlxuICogUGFyYW1ldGVycyBwYXNzZWQgdG8gYSB7QGxpbmsgUGF0Y2hIYW5kbGVyRnVuY3Rpb259IGNhbGxiYWNrLlxuICpcbiAqIEB0eXBlUGFyYW0gJE9iamVjdCAtIFRoZSBvYmplY3QgYmVpbmcgcGF0Y2hlZC5cbiAqIEB0eXBlUGFyYW0gTWV0aG9kTmFtZSAtIFRoZSBtZXRob2QgbmFtZSBiZWluZyBwYXRjaGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhdGNoSGFuZGxlclBhcmFtczwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0LCBNZXRob2ROYW1lIGV4dGVuZHMgTWV0aG9kS2V5czwkT2JqZWN0Pj4ge1xuICAvKipcbiAgICogSW52b2tlcyB0aGUgb3JpZ2luYWwgbWV0aG9kIHdpdGggdGhlIG9yaWdpbmFsIGB0aGlzYCBhbmQgYXJndW1lbnRzLlxuICAgKlxuICAgKiBAcmV0dXJucyBXaGF0ZXZlciB0aGUgb3JpZ2luYWwgbWV0aG9kIHJldHVybnMuXG4gICAqL1xuICByZWFkb25seSBmYWxsYmFjazogKCkgPT4gUmV0dXJuVHlwZTxFeHRyYWN0RnVuY3Rpb248JE9iamVjdCwgTWV0aG9kTmFtZT4+O1xuXG4gIC8qKlxuICAgKiBUaGUgb3JpZ2luYWwgYXJndW1lbnRzIG9mIHRoZSBpbnRlcmNlcHRlZCBjYWxsLCBhcyBhIHR1cGxlLlxuICAgKi9cbiAgcmVhZG9ubHkgb3JpZ2luYWxBcmd1bWVudHM6IFBhcmFtZXRlcnM8RXh0cmFjdEZ1bmN0aW9uPCRPYmplY3QsIE1ldGhvZE5hbWU+PjtcblxuICAvKipcbiAgICogVGhlIG9yaWdpbmFsICh1bnBhdGNoZWQpIG1ldGhvZC4gQ2FsbCB2aWEgYG9yaWdpbmFsRm4uY2FsbChvcmlnaW5hbFRoaXMsIC4uLm9yaWdpbmFsQXJncylgLlxuICAgKi9cbiAgcmVhZG9ubHkgb3JpZ2luYWxNZXRob2Q6IEV4dHJhY3RGdW5jdGlvbjwkT2JqZWN0LCBNZXRob2ROYW1lPjtcblxuICAvKipcbiAgICogVGhlIG9yaWdpbmFsIG1ldGhvZCwgYnV0IHdpdGggdGhlIGB0aGlzYCBjb250ZXh0IGFscmVhZHkgYm91bmQgdG8gdGhlIG9yaWdpbmFsIG9iamVjdC4gQ2FsbCB2aWEgYG9yaWdpbmFsTWV0aG9kQm91bmQoLi4ub3JpZ2luYWxBcmdzKWAuXG4gICAqL1xuICByZWFkb25seSBvcmlnaW5hbE1ldGhvZEJvdW5kOiBPbWl0VGhpc1BhcmFtZXRlcjxFeHRyYWN0RnVuY3Rpb248JE9iamVjdCwgTWV0aG9kTmFtZT4+O1xuXG4gIC8qKlxuICAgKiBUaGUgb3JpZ2luYWwgYHRoaXNgIGNvbnRleHQgb2YgdGhlIGludGVyY2VwdGVkIGNhbGwuXG4gICAqL1xuICByZWFkb25seSBvcmlnaW5hbFRoaXM6ICRPYmplY3Q7XG59XG5cbi8qKlxuICogQSBwb3N0LXBhdGNoIGhhbmRsZXIgZnVuY3Rpb24gdGhhdCBydW5zIGFmdGVyIGEgcGF0Y2ggaXMgYXBwbGllZC5cbiAqXG4gKiBJdCByZXR1cm5zIG5vdGhpbmcgYW5kIGlzIG5vdCBoYW5kZWQgdGhlIHBhdGNoZWQgbWV0aG9kOiB0aGUgbWV0aG9kIGluc3RhbGxlZCBpcyBhbHdheXMgdGhlIG9uZSB0aGUgcGF0Y2ggYnVpbGRzLCBzb1xuICogYSBwb3N0LXBhdGNoIGhhbmRsZXIgY2Fubm90IGdyYWZ0IG1lbWJlcnMgb250byBpdC4gQSBjYXBhYmlsaXR5IGJleW9uZCB0aGUgcGF0Y2hlZCBtZXRob2QncyBvd24gc2lnbmF0dXJlIGJlbG9uZ3NcbiAqIG9uIHRoZSBwbHVnaW4ncyBwdWJsaXNoZWQgQVBJIGluc3RlYWQuXG4gKlxuICogQHR5cGVQYXJhbSAkT2JqZWN0IC0gVGhlIG9iamVjdCBiZWluZyBwYXRjaGVkLlxuICogQHR5cGVQYXJhbSBNZXRob2ROYW1lIC0gVGhlIG1ldGhvZCBuYW1lIGJlaW5nIHBhdGNoZWQuXG4gKi9cbmV4cG9ydCB0eXBlIFBvc3RQYXRjaEhhbmRsZXJGdW5jdGlvbjwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0LCBNZXRob2ROYW1lIGV4dGVuZHMgTWV0aG9kS2V5czwkT2JqZWN0Pj4gPSAoXG4gIHBhcmFtczogUG9zdFBhdGNoSGFuZGxlclBhcmFtczwkT2JqZWN0LCBNZXRob2ROYW1lPlxuKSA9PiB2b2lkO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgcGFzc2VkIHRvIGEge0BsaW5rIFBvc3RQYXRjaEhhbmRsZXJGdW5jdGlvbn0gY2FsbGJhY2suXG4gKlxuICogQHR5cGVQYXJhbSAkT2JqZWN0IC0gVGhlIG9iamVjdCBiZWluZyBwYXRjaGVkLlxuICogQHR5cGVQYXJhbSBNZXRob2ROYW1lIC0gVGhlIG1ldGhvZCBuYW1lIGJlaW5nIHBhdGNoZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9zdFBhdGNoSGFuZGxlclBhcmFtczwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0LCBNZXRob2ROYW1lIGV4dGVuZHMgTWV0aG9kS2V5czwkT2JqZWN0Pj4ge1xuICAvKipcbiAgICogVGhlIG9yaWdpbmFsICh1bnBhdGNoZWQpIG1ldGhvZC4gQ2FsbCB2aWEgYG9yaWdpbmFsRm4uY2FsbChvcmlnaW5hbFRoaXMsIC4uLm9yaWdpbmFsQXJncylgLlxuICAgKi9cbiAgcmVhZG9ubHkgb3JpZ2luYWxNZXRob2Q6IEV4dHJhY3RGdW5jdGlvbjwkT2JqZWN0LCBNZXRob2ROYW1lPjtcbn1cblxudHlwZSBFeHRyYWN0RnVuY3Rpb248JE9iamVjdCBleHRlbmRzIG9iamVjdCwgTWV0aG9kTmFtZSBleHRlbmRzIE1ldGhvZEtleXM8JE9iamVjdD4+ID0gR2VuZXJpY0Z1bmN0aW9uPFBhcmFtZXRlcnM8RXh0cmFjdDwkT2JqZWN0W01ldGhvZE5hbWVdLCBHZW5lcmljRnVuY3Rpb24+PiwgUmV0dXJuVHlwZTxFeHRyYWN0PCRPYmplY3RbTWV0aG9kTmFtZV0sIEdlbmVyaWNGdW5jdGlvbj4+PjtcblxudHlwZSBGdWxsRmFjdG9yaWVzPCRPYmplY3QgZXh0ZW5kcyBvYmplY3Q+ID0ge1xuICBbS2V5IGluIGtleW9mICRPYmplY3RdOiAob3JpZ2luYWxWYWx1ZTogJE9iamVjdFtLZXldKSA9PiAkT2JqZWN0W0tleV07XG59O1xuXG50eXBlIE1ldGhvZEtleXNNYXA8JE9iamVjdCBleHRlbmRzIG9iamVjdD4gPSB7XG4gIFtLZXkgaW4gRnVuY3Rpb25LZXlzPCRPYmplY3Q+XTogW0V4Y2x1ZGU8a2V5b2YgTm9uTnVsbGFibGU8JE9iamVjdFtLZXldPiwga2V5b2YgR2VuZXJpY0Z1bmN0aW9uPl0gZXh0ZW5kcyBbbmV2ZXJdID8gS2V5IDogbmV2ZXI7XG59O1xuXG50eXBlIE9yaWdpbmFsRmFjdG9yaWVzPCRPYmplY3QgZXh0ZW5kcyBHZW5lcmljT2JqZWN0PiA9IFBhcmFtZXRlcnM8dHlwZW9mIG9yaWdpbmFsQXJvdW5kPCRPYmplY3Q+PlsxXTtcblxudHlwZSBVbmluc3RhbGxlciA9ICgpID0+IHZvaWQ7XG5cbi8qKlxuICogQSBjb21wb25lbnQgdGhhdCBtYW5hZ2VzIG1vbmtleS1wYXRjaGVzIHdpdGggbGlmZWN5Y2xlLWJvdW5kIGNsZWFudXAuXG4gKiBBbGwgcGF0Y2hlcyByZWdpc3RlcmVkIHZpYSB0aGlzIGNvbXBvbmVudCBhcmUgYXV0b21hdGljYWxseSB1bmluc3RhbGxlZCB3aGVuIHRoZSBjb21wb25lbnQgdW5sb2Fkcy5cbiAqL1xuZXhwb3J0IGNsYXNzIE1vbmtleUFyb3VuZENvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEV4IHtcbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIHBhdGNoIGZvciBhIHNpbmdsZSBmdW5jdGlvbi1saWtlIG1lbWJlciAoYSBtZXRob2QsIG9yIGEgY2FsbGFibGUgc3VjaCBhcyBhIGBEZWJvdW5jZXJgKSB1c2luZyBhIHNpbXBsaWZpZWQgaGFuZGxlci5cbiAgICpcbiAgICogQHR5cGVQYXJhbSAkT2JqZWN0IC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAgICogQHR5cGVQYXJhbSBGdW5jdGlvbk5hbWUgLSBUaGUgZnVuY3Rpb24gbmFtZSB0byBwYXRjaC5cbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBwYXRjaC5cbiAgICovXG4gIHB1YmxpYyByZWdpc3RlckZ1bmN0aW9uUGF0Y2g8JE9iamVjdCBleHRlbmRzIG9iamVjdCwgY29uc3QgRnVuY3Rpb25OYW1lIGV4dGVuZHMgRnVuY3Rpb25LZXlzPCRPYmplY3Q+PihcbiAgICBwYXJhbXM6IE1vbmtleUFyb3VuZENvbXBvbmVudFJlZ2lzdGVyRnVuY3Rpb25QYXRjaFBhcmFtczwkT2JqZWN0LCBGdW5jdGlvbk5hbWU+XG4gICk6IHZvaWQge1xuICAgIHRoaXMuZW5zdXJlTG9hZGVkKCk7XG5cbiAgICBjb25zdCBmYWN0b3JpZXM6IEZhY3RvcmllczwkT2JqZWN0PiA9IHt9O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLWltbWVkaWF0ZS1tdXRhdGlvbiAtLSBBIGNvbXB1dGVkIGtleSBpbiBhbiBvYmplY3QgbGl0ZXJhbCBkb2VzIG5vdCBtYXRjaCBgUGFydGlhbDxGdWxsRmFjdG9yaWVzPCRPYmplY3Q+PmAgd2hlbiB0aGUga2V5IHR5cGUgaXMgZ2VuZXJpYzsgYXNzaWduaW5nIGFmdGVyIGRlY2xhcmF0aW9uIGtlZXBzIHRoZSB0YXJnZXQgdHlwZSBrbm93bi5cbiAgICBmYWN0b3JpZXNbcGFyYW1zLmZ1bmN0aW9uTmFtZV0gPSAob3JpZ2luYWxWYWx1ZTogJE9iamVjdFtGdW5jdGlvbk5hbWVdKTogJE9iamVjdFtGdW5jdGlvbk5hbWVdID0+IHtcbiAgICAgIGNvbnN0IHBhdGNoZWRWYWx1ZSA9IHBhcmFtcy5wYXRjaEhhbmRsZXIob3JpZ2luYWxWYWx1ZSk7XG4gICAgICBpZiAoIXBhcmFtcy5vbmNlKSB7XG4gICAgICAgIHJldHVybiBwYXRjaGVkVmFsdWU7XG4gICAgICB9XG5cbiAgICAgIC8vIEEgYG9uY2VgIHBhdGNoIHVubG9hZHMgdGhpcyBjb21wb25lbnQgYWZ0ZXIgdGhlIGZpcnN0IGludm9jYXRpb24g4oCUIHJ1bm5pbmcgdGhlIHJlZ2lzdGVyZWRcbiAgICAgIC8vIHVuaW5zdGFsbGVyIGFuZCByZXN0b3JpbmcgdGhlIG9yaWdpbmFsLiBgdW5sb2FkQ29tcG9uZW50YCBpcyBhbiBhcnJvdyBzbyBpdCBjYXB0dXJlcyB0aGVcbiAgICAgIC8vIGNvbXBvbmVudCBgdGhpc2A7IHRoZSBuZXN0ZWQgYG9uY2VQYXRjaGVkVmFsdWVgIG11c3QgYmUgYSBmdW5jdGlvbiB0byByZWNlaXZlIHRoZSBjYWxsLXRpbWVcbiAgICAgIC8vIGB0aGlzYC4gT3duIG1lbWJlcnMgKGUuZy4gYSBgRGVib3VuY2VyYCdzIGBjYW5jZWxgL2BydW5gKSBhcmUgY29waWVkIG9udG8gaXQgc28gZnVuY3Rpb24tbGlrZVxuICAgICAgLy8gdmFsdWVzIGtlZXAgd29ya2luZy5cbiAgICAgIGNvbnN0IHVubG9hZENvbXBvbmVudCA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy51bmxvYWQoKTtcbiAgICAgIH07XG4gICAgICBmdW5jdGlvbiBvbmNlUGF0Y2hlZFZhbHVlKHRoaXM6IHVua25vd24sIC4uLiRhcmd1bWVudHM6IHVua25vd25bXSk6IHVua25vd24ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBSZWZsZWN0LmFwcGx5KHBhdGNoZWRWYWx1ZSwgdGhpcywgJGFyZ3VtZW50cyk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgdW5sb2FkQ29tcG9uZW50KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKG9uY2VQYXRjaGVkVmFsdWUsIHBhdGNoZWRWYWx1ZSkgYXMgJE9iamVjdFtGdW5jdGlvbk5hbWVdO1xuICAgIH07XG5cbiAgICB0aGlzLnJlZ2lzdGVyUGF0Y2gocGFyYW1zLiRvYmplY3QsIGZhY3Rvcmllcyk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgc2luZ2xlLW1ldGhvZCBwYXRjaCB1c2luZyBhIHNpbXBsaWZpZWQgaGFuZGxlci5cbiAgICpcbiAgICogQHR5cGVQYXJhbSAkT2JqZWN0IC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAgICogQHR5cGVQYXJhbSBNZXRob2ROYW1lIC0gVGhlIG1ldGhvZCBuYW1lIHRvIHBhdGNoLlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgb2YgdGhlIHBhdGNoLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyTWV0aG9kUGF0Y2g8JE9iamVjdCBleHRlbmRzIG9iamVjdCwgY29uc3QgTWV0aG9kTmFtZSBleHRlbmRzIE1ldGhvZEtleXM8JE9iamVjdD4+KFxuICAgIHBhcmFtczogTW9ua2V5QXJvdW5kQ29tcG9uZW50UmVnaXN0ZXJNZXRob2RQYXRjaFBhcmFtczwkT2JqZWN0LCBNZXRob2ROYW1lPlxuICApOiB2b2lkIHtcbiAgICB0aGlzLmVuc3VyZUxvYWRlZCgpO1xuXG4gICAgdHlwZSAkRnVuY3Rpb24gPSBFeHRyYWN0RnVuY3Rpb248JE9iamVjdCwgTWV0aG9kTmFtZT47XG5cbiAgICB0aGlzLnJlZ2lzdGVyRnVuY3Rpb25QYXRjaCh7XG4gICAgICAkb2JqZWN0OiBwYXJhbXMuJG9iamVjdCxcbiAgICAgIGZ1bmN0aW9uTmFtZTogcGFyYW1zLm1ldGhvZE5hbWUsXG4gICAgICBvbmNlOiBwYXJhbXMub25jZSA/PyBmYWxzZSxcbiAgICAgIHBhdGNoSGFuZGxlcjogKG9yaWdpbmFsTWV0aG9kUmF3KSA9PiB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kID0gb3JpZ2luYWxNZXRob2RSYXcgYXMgJEZ1bmN0aW9uO1xuICAgICAgICBwYXJhbXMucG9zdFBhdGNoSGFuZGxlcj8uKHsgb3JpZ2luYWxNZXRob2QgfSk7XG4gICAgICAgIHJldHVybiBwYXRjaGVkTWV0aG9kIGFzICRPYmplY3RbTWV0aG9kTmFtZV07XG5cbiAgICAgICAgZnVuY3Rpb24gcGF0Y2hlZE1ldGhvZCh0aGlzOiAkT2JqZWN0LCAuLi5vcmlnaW5hbEFyZ3VtZW50czogUGFyYW1ldGVyczwkRnVuY3Rpb24+KTogUmV0dXJuVHlwZTwkRnVuY3Rpb24+IHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC10aGlzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhcywgdW5pY29ybi9uby10aGlzLWFzc2lnbm1lbnQgLS0gV2UgbmVlZCB0byB1c2UgdGhlIGB0aGlzYCBjb250ZXh0LlxuICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVGhpcyA9IHRoaXM7XG4gICAgICAgICAgcmV0dXJuIHBhcmFtcy5wYXRjaEhhbmRsZXIoe1xuICAgICAgICAgICAgZmFsbGJhY2soKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbE1ldGhvZC5jYWxsKG9yaWdpbmFsVGhpcywgLi4ub3JpZ2luYWxBcmd1bWVudHMpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9yaWdpbmFsQXJndW1lbnRzLFxuICAgICAgICAgICAgb3JpZ2luYWxNZXRob2QsXG4gICAgICAgICAgICBvcmlnaW5hbE1ldGhvZEJvdW5kOiBvcmlnaW5hbE1ldGhvZC5iaW5kKG9yaWdpbmFsVGhpcyksXG4gICAgICAgICAgICBvcmlnaW5hbFRoaXNcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFwYXJhbXMucGF0Y2hUb2tlbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFRoZSB0b2tlbiBtYXJrcyB0aGUgSU5TVEFMTEVEIG1ldGhvZCwgcmVhZCBiYWNrIG9uY2UgdGhlIHBhdGNoIGlzIGluIHBsYWNlLlxuICAgIC8vIFRoYXQgaXMgdGhlIGlkZW50aXR5IHRoZSBuZXh0IHBhdGNoIG9mIHRoZSBzYW1lIG1ldGhvZCByZWNlaXZlcyBhcyBpdHMgYG9yaWdpbmFsTWV0aG9kYC5cbiAgICAvLyBgbW9ua2V5LWFyb3VuZGAgaW5zdGFsbHMgYSB3cmFwcGVyIG9mIGl0cyBvd24gYW5kIGV4cG9zZXMgdGhlIHZhbHVlIGJ1aWx0IGFib3ZlIG9ubHkgdmlhIGl0cyBwcm90b3R5cGUuXG4gICAgLy8gTWFya2luZyB0aGF0IHZhbHVlLCBvciB0aGUgbWV0aG9kIGJlaW5nIHdyYXBwZWQgYXMgdGhpcyBvbmNlIGRpZCwgbWF0Y2hlcyBub3RoaW5nIHRoZSBuZXh0IHBhdGNoIHNlZXMuXG4gICAgLy8gRHJvcHBpbmcgdGhlIHRva2VuIG9uIHVubG9hZCBsZXRzIGEgZGVmZXJyaW5nIGxhdGVyIHBhdGNoIHRha2Ugb3Zlciwgc2luY2UgdGhlIGd1YXJkIGlzIHJlYWQgcGVyIGNhbGwuXG4gICAgY29uc3QgcGF0Y2hlZE1ldGhvZCA9IHBhcmFtcy4kb2JqZWN0W3BhcmFtcy5tZXRob2ROYW1lXSBhcyBHZW5lcmljRnVuY3Rpb247XG4gICAgY29uc3QgbW9ua2V5QXJvdW5kUGF0Y2hlcyA9IGdldE1vbmtleUFyb3VuZFBhdGNoZXMoKTtcbiAgICBtb25rZXlBcm91bmRQYXRjaGVzLnNldChwYXRjaGVkTWV0aG9kLCBwYXJhbXMucGF0Y2hUb2tlbik7XG4gICAgdGhpcy5yZWdpc3RlcigoKSA9PiB7XG4gICAgICBtb25rZXlBcm91bmRQYXRjaGVzLmRlbGV0ZShwYXRjaGVkTWV0aG9kKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBwYXRjaCB1c2luZyByYXcgZmFjdG9yaWVzIChhZHZhbmNlZCBBUEkpLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtICRPYmplY3QgLSBUaGUgb2JqZWN0IHRvIHBhdGNoLlxuICAgKiBAcGFyYW0gJG9iamVjdCAtIFRoZSBvYmplY3QgdG8gcGF0Y2guXG4gICAqIEBwYXJhbSBmYWN0b3JpZXMgLSBUaGUgZmFjdG9yaWVzIHRvIGFwcGx5IHRvIHRoZSBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJQYXRjaDwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0Pigkb2JqZWN0OiAkT2JqZWN0LCBmYWN0b3JpZXM6IEZhY3RvcmllczwkT2JqZWN0Pik6IHZvaWQge1xuICAgIHRoaXMuZW5zdXJlTG9hZGVkKCk7XG5cbiAgICBjb25zdCB1bmluc3RhbGxlciA9IGFyb3VuZCgkb2JqZWN0LCBmYWN0b3JpZXMpO1xuICAgIHRoaXMucmVnaXN0ZXIodW5pbnN0YWxsZXIpO1xuICB9XG59XG5cbi8qKlxuICogQXBwbGllcyBhIHBhdGNoIHRvIHRoZSBvYmplY3QuXG4gKiBCZXR0ZXIgc3Ryb25nbHktdHlwZWQgdmVyc2lvbiBvZiBgbW9ua2V5LWFyb3VuZGAuXG4gKlxuICogQHR5cGVQYXJhbSAkT2JqZWN0IC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAqIEBwYXJhbSAkb2JqZWN0IC0gVGhlIG9iamVjdCB0byBwYXRjaC5cbiAqIEBwYXJhbSBmYWN0b3JpZXMgLSBUaGUgZmFjdG9yaWVzIHRvIGFwcGx5IHRvIHRoZSBvYmplY3QuXG4gKiBAcmV0dXJucyBUaGUgdW5pbnN0YWxsZXIgdGhhdCByZW1vdmVzIHRoZSBwYXRjaCB3aGVuIGNhbGxlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFyb3VuZDwkT2JqZWN0IGV4dGVuZHMgb2JqZWN0Pigkb2JqZWN0OiAkT2JqZWN0LCBmYWN0b3JpZXM6IEZhY3RvcmllczwkT2JqZWN0Pik6IFVuaW5zdGFsbGVyIHtcbiAgcmV0dXJuIG9yaWdpbmFsQXJvdW5kKCRvYmplY3QgYXMgR2VuZXJpY09iamVjdCwgZmFjdG9yaWVzIGFzIE9yaWdpbmFsRmFjdG9yaWVzPEdlbmVyaWNPYmplY3Q+KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBmdW5jdGlvbiBoYXMgYSBzcGVjaWZpYyBwYXRjaCB0b2tlbi5cbiAqXG4gKiBBIHRva2VuIGlzIGNhcnJpZWQgYnkgdGhlIG1ldGhvZCBhIHtAbGluayBNb25rZXlBcm91bmRDb21wb25lbnQjcmVnaXN0ZXJNZXRob2RQYXRjaH0gY2FsbCBJTlNUQUxMRUQsIHNvXG4gKiB0aGUgaW50ZW5kZWQgY2FsbGVyIGlzIGEgbGF0ZXIgcGF0Y2ggb2YgdGhlIHNhbWUgbWV0aG9kLCBjaGVja2luZyB0aGUgYG9yaWdpbmFsTWV0aG9kYCBpdCB3cmFwcGVkIGluXG4gKiBvcmRlciB0byBkZWZlciB0byB0aGUgcGF0Y2ggYWxyZWFkeSBpbiBwbGFjZTpcbiAqXG4gKiBgYGB0c1xuICogcGF0Y2hIYW5kbGVyOiAoeyBmYWxsYmFjaywgb3JpZ2luYWxNZXRob2QgfSkgPT4ge1xuICogICBpZiAoaGFzUGF0Y2hUb2tlbihvcmlnaW5hbE1ldGhvZCwgUEFUQ0hfVE9LRU4pKSB7XG4gKiAgICAgcmV0dXJuIGZhbGxiYWNrKCk7XG4gKiAgIH1cbiAqICAgLi4uXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBUaGUgY2hlY2sgaXMgbWFkZSBwZXIgY2FsbCwgc28gaXQgc3RvcHMgcmVwb3J0aW5nIHRoZSBlYXJsaWVyIHBhdGNoIG9uY2UgdGhhdCBwYXRjaCdzIGNvbXBvbmVudCB1bmxvYWRzLlxuICpcbiAqIEBwYXJhbSAkZnVuY3Rpb24gLSBUaGUgZnVuY3Rpb24gdG8gY2hlY2suXG4gKiBAcGFyYW0gcGF0Y2hUb2tlbiAtIFRoZSBwYXRjaCB0b2tlbiB0byBjaGVjayBmb3IuXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBmdW5jdGlvbiBoYXMgdGhlIHBhdGNoIHRva2VuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzUGF0Y2hUb2tlbigkZnVuY3Rpb246IEdlbmVyaWNGdW5jdGlvbiwgcGF0Y2hUb2tlbjogc3ltYm9sKTogYm9vbGVhbiB7XG4gIHJldHVybiBnZXRNb25rZXlBcm91bmRQYXRjaGVzKCkuZ2V0KCRmdW5jdGlvbikgPT09IHBhdGNoVG9rZW47XG59XG5cbmZ1bmN0aW9uIGdldE1vbmtleUFyb3VuZFBhdGNoZXMoKTogV2Vha01hcDxHZW5lcmljRnVuY3Rpb24sIHN5bWJvbD4ge1xuICByZXR1cm4gZ2V0T2JzaWRpYW5MaWJTdGF0ZSgnbW9ua2V5QXJvdW5kUGF0Y2hlcycsIG5ldyBXZWFrTWFwPEdlbmVyaWNGdW5jdGlvbiwgc3ltYm9sPigpKS52YWx1ZTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFVQSwyQkFBeUM7QUFFekMsZ0NBQW9DO0FBQ3BDLDBCQUE0QjtBQTRNckIsTUFBTSw4QkFBOEIsZ0NBQVk7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUTlDLHNCQUNM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
@@ -120,7 +120,6 @@ module.exports = __toCommonJS(plugin_context_component_exports);
120
120
  var import_library = require('@mnaoumov/typescript-lib/library');
121
121
  var import_library2 = require('../library.cjs');
122
122
  var import_plugin_context = require('../plugin/plugin-context.cjs');
123
- var import_plugin_lifecycle_events = require('../plugin/plugin-lifecycle-events.cjs');
124
123
  var import_all_windows_event_component = require('./all-windows-event-component.cjs');
125
124
  var import_component_ex = require('./component-ex.cjs');
126
125
  class PluginContextComponent extends import_component_ex.ComponentEx {
@@ -154,11 +153,10 @@ class PluginContextComponent extends import_component_ex.ComponentEx {
154
153
  this.addChild(new import_all_windows_event_component.AllWindowsEventComponent(this.app)).registerAllWindowsHandler((win) => {
155
154
  (0, import_plugin_context.initDebugController)(win, this);
156
155
  });
157
- (0, import_plugin_lifecycle_events.registerPluginLifecycleEventRelay)({ app: this.app, component: this });
158
156
  }
159
157
  }
160
158
  // Annotate the CommonJS export names for ESM import in node:
161
159
  0 && (module.exports = {
162
160
  PluginContextComponent
163
161
  });
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BsdWdpbi1jb250ZXh0LWNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29tcG9uZW50IHRoYXQgaW5pdGlhbGl6ZXMgdGhlIHBsdWdpbiBjb250ZXh0LCBkZWJ1ZyBjb250cm9sbGVyLCBhbmQgbGlicmFyeSBzdHlsZXMsIGFuZCByZWxheXMgb2xkZXIgY29waWVzJ1xuICogbGlmZWN5Y2xlIGV2ZW50cyB0byB0aGVpciBjdXJyZW50IG5hbWVzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBMaWJyYXJ5IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2xpYnJhcnknO1xuXG5pbXBvcnQgeyBPYnNpZGlhbkxpYnJhcnkgfSBmcm9tICcuLi9saWJyYXJ5LnRzJztcbmltcG9ydCB7XG4gIGluaXREZWJ1Z0NvbnRyb2xsZXIsXG4gIGluaXRQbHVnaW5Db250ZXh0XG59IGZyb20gJy4uL3BsdWdpbi9wbHVnaW4tY29udGV4dC50cyc7XG5pbXBvcnQgeyByZWdpc3RlclBsdWdpbkxpZmVjeWNsZUV2ZW50UmVsYXkgfSBmcm9tICcuLi9wbHVnaW4vcGx1Z2luLWxpZmVjeWNsZS1ldmVudHMudHMnO1xuaW1wb3J0IHsgQWxsV2luZG93c0V2ZW50Q29tcG9uZW50IH0gZnJvbSAnLi9hbGwtd2luZG93cy1ldmVudC1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50RXggfSBmcm9tICcuL2NvbXBvbmVudC1leC50cyc7XG5cbmludGVyZmFjZSBQbHVnaW5Db250ZXh0Q29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXMge1xuICByZWFkb25seSBhcHA6IEFwcDtcbiAgcmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplcyBwbHVnaW4gY29udGV4dCAocGx1Z2luIElELCBkZWJ1ZyBjb250cm9sbGVyLCBsaWJyYXJ5IHN0eWxlcykgb24gbG9hZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFBsdWdpbkNvbnRleHRDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRFeCB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luIElEIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgcGx1Z2luIGNvbnRleHQgYW5kIGRlYnVnIGNvbnRyb2xsZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBwbHVnaW4gY29udGV4dCBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgY29uc3RydWN0b3IgcGFyYW1ldGVycy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IFBsdWdpbkNvbnRleHRDb21wb25lbnRDb25zdHJ1Y3RvclBhcmFtcykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hcHAgPSBwYXJhbXMuYXBwO1xuICAgIHRoaXMucGx1Z2luSWQgPSBwYXJhbXMucGx1Z2luSWQ7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIHBsdWdpbiBjb250ZXh0IGFuZCBkZWJ1ZyBjb250cm9sbGVyLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIG9ubG9hZCgpOiB2b2lkIHtcbiAgICBpbml0UGx1Z2luQ29udGV4dCh0aGlzLnBsdWdpbklkKTtcbiAgICAvLyBSZXNldCBvbiB1bmxvYWQgc28gYSBwbHVnaW4gcmVsb2FkIGNhbiByZS1pbml0aWFsaXplIHdpdGhvdXQgdHJpcHBpbmcgdGhlIG9uY2Utb25seSBgaW5pdGAgZ3VhcmRzLlxuICAgIHRoaXMucmVnaXN0ZXIoKCkgPT4ge1xuICAgICAgTGlicmFyeS5yZXNldFRvRGVmYXVsdCgpO1xuICAgICAgT2JzaWRpYW5MaWJyYXJ5LnJlc2V0VG9EZWZhdWx0KCk7XG4gICAgfSk7XG4gICAgdGhpcy5hZGRDaGlsZChuZXcgQWxsV2luZG93c0V2ZW50Q29tcG9uZW50KHRoaXMuYXBwKSkucmVnaXN0ZXJBbGxXaW5kb3dzSGFuZGxlcigod2luKSA9PiB7XG4gICAgICBpbml0RGVidWdDb250cm9sbGVyKHdpbiwgdGhpcyk7XG4gICAgfSk7XG4gICAgcmVnaXN0ZXJQbHVnaW5MaWZlY3ljbGVFdmVudFJlbGF5KHsgYXBwOiB0aGlzLmFwcCwgY29tcG9uZW50OiB0aGlzIH0pO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFTQSxxQkFBd0I7QUFFeEIsSUFBQUEsa0JBQWdDO0FBQ2hDLDRCQUdPO0FBQ1AscUNBQWtEO0FBQ2xELHlDQUF5QztBQUN6QywwQkFBNEI7QUFVckIsTUFBTSwrQkFBK0IsZ0NBQVk7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUluQztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPWixZQUFZLFFBQWlEO0FBQ2xFLFVBQU07QUFDTixTQUFLLE1BQU0sT0FBTztBQUNsQixTQUFLLFdBQVcsT0FBTztBQUFBLEVBQ3pCO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLZ0IsU0FBZTtBQUM3QixpREFBa0IsS0FBSyxRQUFRO0FBRS9CLFNBQUssU0FBUyxNQUFNO0FBQ2xCLDZCQUFRLGVBQWU7QUFDdkIsc0NBQWdCLGVBQWU7QUFBQSxJQUNqQyxDQUFDO0FBQ0QsU0FBSyxTQUFTLElBQUksNERBQXlCLEtBQUssR0FBRyxDQUFDLEVBQUUsMEJBQTBCLENBQUMsUUFBUTtBQUN2RixxREFBb0IsS0FBSyxJQUFJO0FBQUEsSUFDL0IsQ0FBQztBQUNELDBFQUFrQyxFQUFFLEtBQUssS0FBSyxLQUFLLFdBQVcsS0FBSyxDQUFDO0FBQUEsRUFDdEU7QUFDRjsiLCJuYW1lcyI6WyJpbXBvcnRfbGlicmFyeSJdfQ==
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BsdWdpbi1jb250ZXh0LWNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29tcG9uZW50IHRoYXQgaW5pdGlhbGl6ZXMgdGhlIHBsdWdpbiBjb250ZXh0LCBkZWJ1ZyBjb250cm9sbGVyLCBhbmQgbGlicmFyeSBzdHlsZXMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IExpYnJhcnkgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvbGlicmFyeSc7XG5cbmltcG9ydCB7IE9ic2lkaWFuTGlicmFyeSB9IGZyb20gJy4uL2xpYnJhcnkudHMnO1xuaW1wb3J0IHtcbiAgaW5pdERlYnVnQ29udHJvbGxlcixcbiAgaW5pdFBsdWdpbkNvbnRleHRcbn0gZnJvbSAnLi4vcGx1Z2luL3BsdWdpbi1jb250ZXh0LnRzJztcbmltcG9ydCB7IEFsbFdpbmRvd3NFdmVudENvbXBvbmVudCB9IGZyb20gJy4vYWxsLXdpbmRvd3MtZXZlbnQtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IENvbXBvbmVudEV4IH0gZnJvbSAnLi9jb21wb25lbnQtZXgudHMnO1xuXG5pbnRlcmZhY2UgUGx1Z2luQ29udGV4dENvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zIHtcbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgcGx1Z2luIGNvbnRleHQgKHBsdWdpbiBJRCwgZGVidWcgY29udHJvbGxlciwgbGlicmFyeSBzdHlsZXMpIG9uIGxvYWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBQbHVnaW5Db250ZXh0Q29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50RXgge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIHBsdWdpbiBJRCB1c2VkIHRvIGluaXRpYWxpemUgdGhlIHBsdWdpbiBjb250ZXh0IGFuZCBkZWJ1ZyBjb250cm9sbGVyLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgcGx1Z2luIGNvbnRleHQgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBQbHVnaW5Db250ZXh0Q29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYXBwID0gcGFyYW1zLmFwcDtcbiAgICB0aGlzLnBsdWdpbklkID0gcGFyYW1zLnBsdWdpbklkO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBwbHVnaW4gY29udGV4dCBhbmQgZGVidWcgY29udHJvbGxlci5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBvbmxvYWQoKTogdm9pZCB7XG4gICAgaW5pdFBsdWdpbkNvbnRleHQodGhpcy5wbHVnaW5JZCk7XG4gICAgLy8gUmVzZXQgb24gdW5sb2FkIHNvIGEgcGx1Z2luIHJlbG9hZCBjYW4gcmUtaW5pdGlhbGl6ZSB3aXRob3V0IHRyaXBwaW5nIHRoZSBvbmNlLW9ubHkgYGluaXRgIGd1YXJkcy5cbiAgICB0aGlzLnJlZ2lzdGVyKCgpID0+IHtcbiAgICAgIExpYnJhcnkucmVzZXRUb0RlZmF1bHQoKTtcbiAgICAgIE9ic2lkaWFuTGlicmFyeS5yZXNldFRvRGVmYXVsdCgpO1xuICAgIH0pO1xuICAgIHRoaXMuYWRkQ2hpbGQobmV3IEFsbFdpbmRvd3NFdmVudENvbXBvbmVudCh0aGlzLmFwcCkpLnJlZ2lzdGVyQWxsV2luZG93c0hhbmRsZXIoKHdpbikgPT4ge1xuICAgICAgaW5pdERlYnVnQ29udHJvbGxlcih3aW4sIHRoaXMpO1xuICAgIH0pO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQSxxQkFBd0I7QUFFeEIsSUFBQUEsa0JBQWdDO0FBQ2hDLDRCQUdPO0FBQ1AseUNBQXlDO0FBQ3pDLDBCQUE0QjtBQVVyQixNQUFNLCtCQUErQixnQ0FBWTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSW5DO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9aLFlBQVksUUFBaUQ7QUFDbEUsVUFBTTtBQUNOLFNBQUssTUFBTSxPQUFPO0FBQ2xCLFNBQUssV0FBVyxPQUFPO0FBQUEsRUFDekI7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtnQixTQUFlO0FBQzdCLGlEQUFrQixLQUFLLFFBQVE7QUFFL0IsU0FBSyxTQUFTLE1BQU07QUFDbEIsNkJBQVEsZUFBZTtBQUN2QixzQ0FBZ0IsZUFBZTtBQUFBLElBQ2pDLENBQUM7QUFDRCxTQUFLLFNBQVMsSUFBSSw0REFBeUIsS0FBSyxHQUFHLENBQUMsRUFBRSwwQkFBMEIsQ0FBQyxRQUFRO0FBQ3ZGLHFEQUFvQixLQUFLLElBQUk7QUFBQSxJQUMvQixDQUFDO0FBQUEsRUFDSDtBQUNGOyIsIm5hbWVzIjpbImltcG9ydF9saWJyYXJ5Il19
@@ -2,8 +2,7 @@
2
2
  /**
3
3
  * @file
4
4
  *
5
- * Component that initializes the plugin context, debug controller, and library styles, and relays older copies'
6
- * lifecycle events to their current names.
5
+ * Component that initializes the plugin context, debug controller, and library styles.
7
6
  */
8
7
  import type { App } from 'obsidian' with { 'resolution-mode': 'import' };
9
8
  import { ComponentEx } from './component-ex.cjs';