obsidian-dev-utils 73.0.0 → 74.1.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 (50) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/dev/main.js +202 -194
  3. package/dist/lib/cjs/function.cjs +9 -1
  4. package/dist/lib/cjs/function.d.cts +10 -0
  5. package/dist/lib/cjs/library.cjs +1 -1
  6. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.cjs +3 -7
  7. package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.d.cts +1 -3
  8. package/dist/lib/cjs/obsidian/command-handlers/command-handler.cjs +15 -4
  9. package/dist/lib/cjs/obsidian/command-handlers/command-handler.d.cts +9 -3
  10. package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.cjs +3 -8
  11. package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.d.cts +1 -3
  12. package/dist/lib/cjs/obsidian/components/index.cjs +1 -4
  13. package/dist/lib/cjs/obsidian/components/index.d.cts +0 -1
  14. package/dist/lib/cjs/obsidian/components/monkey-around-component.cjs +5 -2
  15. package/dist/lib/cjs/obsidian/components/monkey-around-component.d.cts +41 -9
  16. package/dist/lib/cjs/obsidian/components/rename-delete-handler-component.cjs +118 -99
  17. package/dist/lib/cjs/obsidian/components/rename-delete-handler-component.d.cts +0 -1
  18. package/dist/lib/cjs/obsidian/constructors/getDomEventsHandlersConstructor.cjs +21 -17
  19. package/dist/lib/cjs/obsidian/i18n/i18n.cjs +2 -7
  20. package/dist/lib/cjs/obsidian/i18n/i18n.d.cts +4 -0
  21. package/dist/lib/cjs/obsidian/markdown.cjs +24 -15
  22. package/dist/lib/cjs/obsidian/plugin/plugin.cjs +15 -20
  23. package/dist/lib/cjs/obsidian/plugin/plugin.d.cts +10 -14
  24. package/dist/lib/esm/function.d.mts +10 -0
  25. package/dist/lib/esm/function.mjs +8 -1
  26. package/dist/lib/esm/library.mjs +1 -1
  27. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.d.mts +1 -3
  28. package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.mjs +3 -7
  29. package/dist/lib/esm/obsidian/command-handlers/command-handler.d.mts +9 -3
  30. package/dist/lib/esm/obsidian/command-handlers/command-handler.mjs +16 -5
  31. package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.d.mts +1 -3
  32. package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.mjs +3 -8
  33. package/dist/lib/esm/obsidian/components/index.d.mts +0 -1
  34. package/dist/lib/esm/obsidian/components/index.mjs +1 -3
  35. package/dist/lib/esm/obsidian/components/monkey-around-component.d.mts +41 -9
  36. package/dist/lib/esm/obsidian/components/monkey-around-component.mjs +5 -2
  37. package/dist/lib/esm/obsidian/components/rename-delete-handler-component.d.mts +0 -1
  38. package/dist/lib/esm/obsidian/components/rename-delete-handler-component.mjs +118 -99
  39. package/dist/lib/esm/obsidian/constructors/getDomEventsHandlersConstructor.mjs +21 -17
  40. package/dist/lib/esm/obsidian/i18n/i18n.d.mts +4 -0
  41. package/dist/lib/esm/obsidian/i18n/i18n.mjs +2 -7
  42. package/dist/lib/esm/obsidian/markdown.mjs +24 -15
  43. package/dist/lib/esm/obsidian/plugin/plugin.d.mts +10 -14
  44. package/dist/lib/esm/obsidian/plugin/plugin.mjs +15 -20
  45. package/package.json +6 -6
  46. package/dist/lib/cjs/obsidian/components/i18n-component.cjs +0 -156
  47. package/dist/lib/cjs/obsidian/components/i18n-component.d.cts +0 -24
  48. package/dist/lib/esm/obsidian/components/i18n-component.d.mts +0 -24
  49. package/dist/lib/esm/obsidian/components/i18n-component.mjs +0 -48
  50. package/obsidian/Components/i18n-component/package.json +0 -6
@@ -178,6 +178,22 @@ var import_async = require('../../async.cjs');
178
178
  var import_type_guards = require('../../type-guards.cjs');
179
179
  var import_monkey_around_component = require('../components/monkey-around-component.cjs');
180
180
  var import_vault = require('../vault.cjs');
181
+ class MarkdownPreviewRendererRegisterDomEventsPatchComponent extends import_monkey_around_component.MonkeyAroundComponent {
182
+ domEventsHandlersConstructor = null;
183
+ onload() {
184
+ this.registerMethodPatch({
185
+ methodName: "registerDomEvents",
186
+ obj: import_obsidian.MarkdownPreviewRenderer,
187
+ patchHandler: ({
188
+ fallback,
189
+ originalArgs: [, handlers]
190
+ }) => {
191
+ this.domEventsHandlersConstructor = handlers.constructor;
192
+ fallback();
193
+ }
194
+ });
195
+ }
196
+ }
181
197
  async function getDomEventsHandlersConstructor(app) {
182
198
  let mdFile = app.vault.getMarkdownFiles()[0];
183
199
  let shouldDelete = false;
@@ -185,23 +201,11 @@ async function getDomEventsHandlersConstructor(app) {
185
201
  mdFile = await app.vault.create("__temp.md", "");
186
202
  shouldDelete = true;
187
203
  }
188
- let ctor = null;
189
204
  try {
190
205
  var _stack = [];
191
206
  try {
192
- const patch = __using(_stack, new import_monkey_around_component.MonkeyAroundComponent());
207
+ const patch = __using(_stack, new MarkdownPreviewRendererRegisterDomEventsPatchComponent());
193
208
  patch.load();
194
- patch.registerMethodPatch({
195
- methodName: "registerDomEvents",
196
- obj: import_obsidian.MarkdownPreviewRenderer,
197
- patchHandler({
198
- fallback,
199
- originalArgs: [, handlers]
200
- }) {
201
- ctor = handlers.constructor;
202
- fallback();
203
- }
204
- });
205
209
  const leaf = app.workspace.getLeaf(true);
206
210
  await leaf.openFile(mdFile, {
207
211
  active: true,
@@ -209,14 +213,14 @@ async function getDomEventsHandlersConstructor(app) {
209
213
  });
210
214
  try {
211
215
  await (0, import_async.retryWithTimeout)({
212
- operationFn: () => ctor !== null,
216
+ operationFn: () => patch.domEventsHandlersConstructor !== null,
213
217
  operationName: "getDomEventsHandlersConstructor"
214
218
  });
215
219
  } finally {
216
220
  leaf.detach();
217
221
  }
218
- (0, import_type_guards.assertNonNullable)(ctor, "Failed to get register dom events handlers constructor");
219
- return ctor;
222
+ (0, import_type_guards.assertNonNullable)(patch.domEventsHandlersConstructor, "Failed to get register dom events handlers constructor");
223
+ return patch.domEventsHandlersConstructor;
220
224
  } catch (_) {
221
225
  var _error = _, _hasError = true;
222
226
  } finally {
@@ -232,4 +236,4 @@ async function getDomEventsHandlersConstructor(app) {
232
236
  0 && (module.exports = {
233
237
  getDomEventsHandlersConstructor
234
238
  });
235
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbnN0cnVjdG9ycy9nZXREb21FdmVudHNIYW5kbGVyc0NvbnN0cnVjdG9yLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgZXh0cmFjdHMgdGhlIGBEb21FdmVudHNIYW5kbGVyc0NvbnN0cnVjdG9yYCBmcm9tIE9ic2lkaWFuJ3MgcnVudGltZVxuICogYnkgdGVtcG9yYXJpbHkgb3BlbmluZyBhIG1hcmtkb3duIGZpbGUgaW4gcHJldmlldyBtb2RlIGFuZCBpbnRlcmNlcHRpbmcgdGhlXG4gKiBjb25zdHJ1Y3RvciBwYXNzZWQgdG8gYE1hcmtkb3duUHJldmlld1JlbmRlcmVyLnJlZ2lzdGVyRG9tRXZlbnRzYC5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVlcGx5IGNvdXBsZWQgdG8gT2JzaWRpYW4gcnVudGltZTsgcmVxdWlyZXMgcnVubmluZyB2YXVsdCBmb3IgbWVhbmluZ2Z1bCB0ZXN0aW5nLiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIERvbUV2ZW50c0hhbmRsZXJzLFxuICBFeHRyYWN0Q29uc3RydWN0b3Jcbn0gZnJvbSAnQG9ic2lkaWFuLXR5cGluZ3Mvb2JzaWRpYW4tcHVibGljLWxhdGVzdCc7XG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgTWFya2Rvd25QcmV2aWV3UmVuZGVyZXIgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IHJldHJ5V2l0aFRpbWVvdXQgfSBmcm9tICcuLi8uLi9hc3luYy50cyc7XG5pbXBvcnQgeyBhc3NlcnROb25OdWxsYWJsZSB9IGZyb20gJy4uLy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7IE1vbmtleUFyb3VuZENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvbW9ua2V5LWFyb3VuZC1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgdHJhc2hTYWZlIH0gZnJvbSAnLi4vdmF1bHQudHMnO1xuXG50eXBlIERvbUV2ZW50c0hhbmRsZXJzQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8RG9tRXZlbnRzSGFuZGxlcnM+O1xuXG4vKipcbiAqIEV4dHJhY3RzIHRoZSBgRG9tRXZlbnRzSGFuZGxlcnNDb25zdHJ1Y3RvcmAgZnJvbSBPYnNpZGlhbidzIHJ1bnRpbWUuXG4gKlxuICogT3BlbnMgYSB0ZW1wb3JhcnkgbWFya2Rvd24gZmlsZSBpbiBwcmV2aWV3IG1vZGUgYW5kIGludGVyY2VwdHMgdGhlIGNvbnN0cnVjdG9yXG4gKiBwYXNzZWQgdG8gYE1hcmtkb3duUHJldmlld1JlbmRlcmVyLnJlZ2lzdGVyRG9tRXZlbnRzYC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGBEb21FdmVudHNIYW5kbGVyc0NvbnN0cnVjdG9yYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldERvbUV2ZW50c0hhbmRsZXJzQ29uc3RydWN0b3IoYXBwOiBBcHApOiBQcm9taXNlPERvbUV2ZW50c0hhbmRsZXJzQ29uc3RydWN0b3I+IHtcbiAgbGV0IG1kRmlsZSA9IGFwcC52YXVsdC5nZXRNYXJrZG93bkZpbGVzKClbMF07XG4gIGxldCBzaG91bGREZWxldGUgPSBmYWxzZTtcbiAgaWYgKCFtZEZpbGUpIHtcbiAgICBtZEZpbGUgPSBhd2FpdCBhcHAudmF1bHQuY3JlYXRlKCdfX3RlbXAubWQnLCAnJyk7XG4gICAgc2hvdWxkRGVsZXRlID0gdHJ1ZTtcbiAgfVxuICBsZXQgY3RvcjogRG9tRXZlbnRzSGFuZGxlcnNDb25zdHJ1Y3RvciB8IG51bGwgPSBudWxsO1xuICB0cnkge1xuICAgIHVzaW5nIHBhdGNoID0gbmV3IE1vbmtleUFyb3VuZENvbXBvbmVudCgpO1xuICAgIHBhdGNoLmxvYWQoKTtcblxuICAgIHBhdGNoLnJlZ2lzdGVyTWV0aG9kUGF0Y2goe1xuICAgICAgbWV0aG9kTmFtZTogJ3JlZ2lzdGVyRG9tRXZlbnRzJyxcbiAgICAgIG9iajogTWFya2Rvd25QcmV2aWV3UmVuZGVyZXIsXG4gICAgICBwYXRjaEhhbmRsZXIoe1xuICAgICAgICBmYWxsYmFjayxcbiAgICAgICAgb3JpZ2luYWxBcmdzOiBbLCBoYW5kbGVyc11cbiAgICAgIH0pIHtcbiAgICAgICAgY3RvciA9IGhhbmRsZXJzLmNvbnN0cnVjdG9yIGFzIERvbUV2ZW50c0hhbmRsZXJzQ29uc3RydWN0b3I7XG4gICAgICAgIGZhbGxiYWNrKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBsZWFmID0gYXBwLndvcmtzcGFjZS5nZXRMZWFmKHRydWUpO1xuICAgIGF3YWl0IGxlYWYub3BlbkZpbGUobWRGaWxlLCB7XG4gICAgICBhY3RpdmU6IHRydWUsXG4gICAgICBzdGF0ZTogeyBtb2RlOiAncHJldmlldycgfVxuICAgIH0pO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCByZXRyeVdpdGhUaW1lb3V0KHtcbiAgICAgICAgb3BlcmF0aW9uRm46ICgpID0+IGN0b3IgIT09IG51bGwsXG4gICAgICAgIG9wZXJhdGlvbk5hbWU6ICdnZXREb21FdmVudHNIYW5kbGVyc0NvbnN0cnVjdG9yJ1xuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGxlYWYuZGV0YWNoKCk7XG4gICAgfVxuXG4gICAgYXNzZXJ0Tm9uTnVsbGFibGUoY3RvciwgJ0ZhaWxlZCB0byBnZXQgcmVnaXN0ZXIgZG9tIGV2ZW50cyBoYW5kbGVycyBjb25zdHJ1Y3RvcicpO1xuICAgIHJldHVybiBjdG9yO1xuICB9IGZpbmFsbHkge1xuICAgIGlmIChzaG91bGREZWxldGUpIHtcbiAgICAgIGF3YWl0IHRyYXNoU2FmZShhcHAsIG1kRmlsZSk7XG4gICAgfVxuICB9XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnQkEsc0JBQXdDO0FBRXhDLG1CQUFpQztBQUNqQyx5QkFBa0M7QUFDbEMscUNBQXNDO0FBQ3RDLG1CQUEwQjtBQWExQixlQUFzQixnQ0FBZ0MsS0FBaUQ7QUFDckcsTUFBSSxTQUFTLElBQUksTUFBTSxpQkFBaUIsRUFBRSxDQUFDO0FBQzNDLE1BQUksZUFBZTtBQUNuQixNQUFJLENBQUMsUUFBUTtBQUNYLGFBQVMsTUFBTSxJQUFJLE1BQU0sT0FBTyxhQUFhLEVBQUU7QUFDL0MsbUJBQWU7QUFBQSxFQUNqQjtBQUNBLE1BQUksT0FBNEM7QUFDaEQsTUFBSTtBQUNGO0FBQUE7QUFBQSxZQUFNLFFBQVEsb0JBQUkscURBQXNCO0FBQ3hDLFlBQU0sS0FBSztBQUVYLFlBQU0sb0JBQW9CO0FBQUEsUUFDeEIsWUFBWTtBQUFBLFFBQ1osS0FBSztBQUFBLFFBQ0wsYUFBYTtBQUFBLFVBQ1g7QUFBQSxVQUNBLGNBQWMsQ0FBQyxFQUFFLFFBQVE7QUFBQSxRQUMzQixHQUFHO0FBQ0QsaUJBQU8sU0FBUztBQUNoQixtQkFBUztBQUFBLFFBQ1g7QUFBQSxNQUNGLENBQUM7QUFFRCxZQUFNLE9BQU8sSUFBSSxVQUFVLFFBQVEsSUFBSTtBQUN2QyxZQUFNLEtBQUssU0FBUyxRQUFRO0FBQUEsUUFDMUIsUUFBUTtBQUFBLFFBQ1IsT0FBTyxFQUFFLE1BQU0sVUFBVTtBQUFBLE1BQzNCLENBQUM7QUFDRCxVQUFJO0FBQ0Ysa0JBQU0sK0JBQWlCO0FBQUEsVUFDckIsYUFBYSxNQUFNLFNBQVM7QUFBQSxVQUM1QixlQUFlO0FBQUEsUUFDakIsQ0FBQztBQUFBLE1BQ0gsVUFBRTtBQUNBLGFBQUssT0FBTztBQUFBLE1BQ2Q7QUFFQSxnREFBa0IsTUFBTSx3REFBd0Q7QUFDaEYsYUFBTztBQUFBLGFBOUJQO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQStCRixVQUFFO0FBQ0EsUUFBSSxjQUFjO0FBQ2hCLGdCQUFNLHdCQUFVLEtBQUssTUFBTTtBQUFBLElBQzdCO0FBQUEsRUFDRjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
239
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2NvbnN0cnVjdG9ycy9nZXREb21FdmVudHNIYW5kbGVyc0NvbnN0cnVjdG9yLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgZXh0cmFjdHMgdGhlIGBEb21FdmVudHNIYW5kbGVyc0NvbnN0cnVjdG9yYCBmcm9tIE9ic2lkaWFuJ3MgcnVudGltZVxuICogYnkgdGVtcG9yYXJpbHkgb3BlbmluZyBhIG1hcmtkb3duIGZpbGUgaW4gcHJldmlldyBtb2RlIGFuZCBpbnRlcmNlcHRpbmcgdGhlXG4gKiBjb25zdHJ1Y3RvciBwYXNzZWQgdG8gYE1hcmtkb3duUHJldmlld1JlbmRlcmVyLnJlZ2lzdGVyRG9tRXZlbnRzYC5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVlcGx5IGNvdXBsZWQgdG8gT2JzaWRpYW4gcnVudGltZTsgcmVxdWlyZXMgcnVubmluZyB2YXVsdCBmb3IgbWVhbmluZ2Z1bCB0ZXN0aW5nLiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIERvbUV2ZW50c0hhbmRsZXJzLFxuICBFeHRyYWN0Q29uc3RydWN0b3Jcbn0gZnJvbSAnQG9ic2lkaWFuLXR5cGluZ3Mvb2JzaWRpYW4tcHVibGljLWxhdGVzdCc7XG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgTWFya2Rvd25QcmV2aWV3UmVuZGVyZXIgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IHJldHJ5V2l0aFRpbWVvdXQgfSBmcm9tICcuLi8uLi9hc3luYy50cyc7XG5pbXBvcnQgeyBhc3NlcnROb25OdWxsYWJsZSB9IGZyb20gJy4uLy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7IE1vbmtleUFyb3VuZENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvbW9ua2V5LWFyb3VuZC1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgdHJhc2hTYWZlIH0gZnJvbSAnLi4vdmF1bHQudHMnO1xuXG50eXBlIERvbUV2ZW50c0hhbmRsZXJzQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8RG9tRXZlbnRzSGFuZGxlcnM+O1xuXG5jbGFzcyBNYXJrZG93blByZXZpZXdSZW5kZXJlclJlZ2lzdGVyRG9tRXZlbnRzUGF0Y2hDb21wb25lbnQgZXh0ZW5kcyBNb25rZXlBcm91bmRDb21wb25lbnQge1xuICBwdWJsaWMgZG9tRXZlbnRzSGFuZGxlcnNDb25zdHJ1Y3RvcjogRG9tRXZlbnRzSGFuZGxlcnNDb25zdHJ1Y3RvciB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBvbmxvYWQoKTogdm9pZCB7XG4gICAgdGhpcy5yZWdpc3Rlck1ldGhvZFBhdGNoKHtcbiAgICAgIG1ldGhvZE5hbWU6ICdyZWdpc3RlckRvbUV2ZW50cycsXG4gICAgICBvYmo6IE1hcmtkb3duUHJldmlld1JlbmRlcmVyLFxuICAgICAgcGF0Y2hIYW5kbGVyOiAoe1xuICAgICAgICBmYWxsYmFjayxcbiAgICAgICAgb3JpZ2luYWxBcmdzOiBbLCBoYW5kbGVyc11cbiAgICAgIH0pID0+IHtcbiAgICAgICAgdGhpcy5kb21FdmVudHNIYW5kbGVyc0NvbnN0cnVjdG9yID0gaGFuZGxlcnMuY29uc3RydWN0b3IgYXMgRG9tRXZlbnRzSGFuZGxlcnNDb25zdHJ1Y3RvcjtcbiAgICAgICAgZmFsbGJhY2soKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuXG4vKipcbiAqIEV4dHJhY3RzIHRoZSBgRG9tRXZlbnRzSGFuZGxlcnNDb25zdHJ1Y3RvcmAgZnJvbSBPYnNpZGlhbidzIHJ1bnRpbWUuXG4gKlxuICogT3BlbnMgYSB0ZW1wb3JhcnkgbWFya2Rvd24gZmlsZSBpbiBwcmV2aWV3IG1vZGUgYW5kIGludGVyY2VwdHMgdGhlIGNvbnN0cnVjdG9yXG4gKiBwYXNzZWQgdG8gYE1hcmtkb3duUHJldmlld1JlbmRlcmVyLnJlZ2lzdGVyRG9tRXZlbnRzYC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGBEb21FdmVudHNIYW5kbGVyc0NvbnN0cnVjdG9yYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldERvbUV2ZW50c0hhbmRsZXJzQ29uc3RydWN0b3IoYXBwOiBBcHApOiBQcm9taXNlPERvbUV2ZW50c0hhbmRsZXJzQ29uc3RydWN0b3I+IHtcbiAgbGV0IG1kRmlsZSA9IGFwcC52YXVsdC5nZXRNYXJrZG93bkZpbGVzKClbMF07XG4gIGxldCBzaG91bGREZWxldGUgPSBmYWxzZTtcbiAgaWYgKCFtZEZpbGUpIHtcbiAgICBtZEZpbGUgPSBhd2FpdCBhcHAudmF1bHQuY3JlYXRlKCdfX3RlbXAubWQnLCAnJyk7XG4gICAgc2hvdWxkRGVsZXRlID0gdHJ1ZTtcbiAgfVxuICB0cnkge1xuICAgIHVzaW5nIHBhdGNoID0gbmV3IE1hcmtkb3duUHJldmlld1JlbmRlcmVyUmVnaXN0ZXJEb21FdmVudHNQYXRjaENvbXBvbmVudCgpO1xuICAgIHBhdGNoLmxvYWQoKTtcblxuICAgIGNvbnN0IGxlYWYgPSBhcHAud29ya3NwYWNlLmdldExlYWYodHJ1ZSk7XG4gICAgYXdhaXQgbGVhZi5vcGVuRmlsZShtZEZpbGUsIHtcbiAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICAgIHN0YXRlOiB7IG1vZGU6ICdwcmV2aWV3JyB9XG4gICAgfSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHJldHJ5V2l0aFRpbWVvdXQoe1xuICAgICAgICBvcGVyYXRpb25GbjogKCkgPT4gcGF0Y2guZG9tRXZlbnRzSGFuZGxlcnNDb25zdHJ1Y3RvciAhPT0gbnVsbCxcbiAgICAgICAgb3BlcmF0aW9uTmFtZTogJ2dldERvbUV2ZW50c0hhbmRsZXJzQ29uc3RydWN0b3InXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgbGVhZi5kZXRhY2goKTtcbiAgICB9XG5cbiAgICBhc3NlcnROb25OdWxsYWJsZShwYXRjaC5kb21FdmVudHNIYW5kbGVyc0NvbnN0cnVjdG9yLCAnRmFpbGVkIHRvIGdldCByZWdpc3RlciBkb20gZXZlbnRzIGhhbmRsZXJzIGNvbnN0cnVjdG9yJyk7XG4gICAgcmV0dXJuIHBhdGNoLmRvbUV2ZW50c0hhbmRsZXJzQ29uc3RydWN0b3I7XG4gIH0gZmluYWxseSB7XG4gICAgaWYgKHNob3VsZERlbGV0ZSkge1xuICAgICAgYXdhaXQgdHJhc2hTYWZlKGFwcCwgbWRGaWxlKTtcbiAgICB9XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWdCQSxzQkFBd0M7QUFFeEMsbUJBQWlDO0FBQ2pDLHlCQUFrQztBQUNsQyxxQ0FBc0M7QUFDdEMsbUJBQTBCO0FBSTFCLE1BQU0sK0RBQStELHFEQUFzQjtBQUFBLEVBQ2xGLCtCQUFvRTtBQUFBLEVBRTNELFNBQWU7QUFDN0IsU0FBSyxvQkFBb0I7QUFBQSxNQUN2QixZQUFZO0FBQUEsTUFDWixLQUFLO0FBQUEsTUFDTCxjQUFjLENBQUM7QUFBQSxRQUNiO0FBQUEsUUFDQSxjQUFjLENBQUMsRUFBRSxRQUFRO0FBQUEsTUFDM0IsTUFBTTtBQUNKLGFBQUssK0JBQStCLFNBQVM7QUFDN0MsaUJBQVM7QUFBQSxNQUNYO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUNGO0FBYUEsZUFBc0IsZ0NBQWdDLEtBQWlEO0FBQ3JHLE1BQUksU0FBUyxJQUFJLE1BQU0saUJBQWlCLEVBQUUsQ0FBQztBQUMzQyxNQUFJLGVBQWU7QUFDbkIsTUFBSSxDQUFDLFFBQVE7QUFDWCxhQUFTLE1BQU0sSUFBSSxNQUFNLE9BQU8sYUFBYSxFQUFFO0FBQy9DLG1CQUFlO0FBQUEsRUFDakI7QUFDQSxNQUFJO0FBQ0Y7QUFBQTtBQUFBLFlBQU0sUUFBUSxvQkFBSSx1REFBdUQ7QUFDekUsWUFBTSxLQUFLO0FBRVgsWUFBTSxPQUFPLElBQUksVUFBVSxRQUFRLElBQUk7QUFDdkMsWUFBTSxLQUFLLFNBQVMsUUFBUTtBQUFBLFFBQzFCLFFBQVE7QUFBQSxRQUNSLE9BQU8sRUFBRSxNQUFNLFVBQVU7QUFBQSxNQUMzQixDQUFDO0FBQ0QsVUFBSTtBQUNGLGtCQUFNLCtCQUFpQjtBQUFBLFVBQ3JCLGFBQWEsTUFBTSxNQUFNLGlDQUFpQztBQUFBLFVBQzFELGVBQWU7QUFBQSxRQUNqQixDQUFDO0FBQUEsTUFDSCxVQUFFO0FBQ0EsYUFBSyxPQUFPO0FBQUEsTUFDZDtBQUVBLGdEQUFrQixNQUFNLDhCQUE4Qix3REFBd0Q7QUFDOUcsYUFBTyxNQUFNO0FBQUEsYUFsQmI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBbUJGLFVBQUU7QUFDQSxRQUFJLGNBQWM7QUFDaEIsZ0JBQU0sd0JBQVUsS0FBSyxNQUFNO0FBQUEsSUFDN0I7QUFBQSxFQUNGO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -146,12 +146,7 @@ var import_async = require('../../async.cjs');
146
146
  var import_en = require('./locales/en.cjs');
147
147
  var import_translations_map = require('./locales/translations-map.cjs');
148
148
  const DEFAULT_NS = "translation";
149
- let isInitialized = false;
150
149
  async function initI18N(translationsMap, isAsync = true) {
151
- if (isInitialized) {
152
- return;
153
- }
154
- isInitialized = true;
155
150
  await (0, import_i18next.init)({
156
151
  fallbackLng: import_translations_map.DEFAULT_LANGUAGE,
157
152
  initAsync: isAsync,
@@ -173,7 +168,7 @@ async function initI18N(translationsMap, isAsync = true) {
173
168
  import_i18next.default.addResourceBundle(import_translations_map.DEFAULT_LANGUAGE, DEFAULT_NS, import_en.en, true, false);
174
169
  }
175
170
  function tImpl(selector, options) {
176
- if (!isInitialized) {
171
+ if (!import_i18next.default.isInitialized) {
177
172
  console.warn("I18N was not initialized, initializing default obsidian-dev-utils translations");
178
173
  (0, import_async.invokeAsyncSafely)(() => initI18N(import_translations_map.defaultTranslationsMap, false));
179
174
  }
@@ -189,4 +184,4 @@ const t = tImpl;
189
184
  initI18N,
190
185
  t
191
186
  });
192
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2kxOG4vaTE4bi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBgaTE4bmAgbW9kdWxlIGZvciBgaTE4bmV4dGAuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBTZWxlY3RvckZuLFxuICBTZWxlY3Rvck9wdGlvbnMsXG4gIFRGdW5jdGlvblxufSBmcm9tICdpMThuZXh0JztcbmltcG9ydCB0eXBlIHsgUmVhZG9ubHlEZWVwIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IGkxOG5leHQsIHtcbiAgaW5pdCxcbiAgdCBhcyB0TGliXG59IGZyb20gJ2kxOG5leHQnO1xuaW1wb3J0IHsgZ2V0TGFuZ3VhZ2UgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRGVmYXVsdFRyYW5zbGF0aW9uc0Jhc2UgfSBmcm9tICcuL2RlZmF1bHQtdHJhbnNsYXRpb25zLnRzJztcblxuaW1wb3J0IHsgaW52b2tlQXN5bmNTYWZlbHkgfSBmcm9tICcuLi8uLi9hc3luYy50cyc7XG5pbXBvcnQgeyBlbiB9IGZyb20gJy4vbG9jYWxlcy9lbi50cyc7XG5pbXBvcnQge1xuICBERUZBVUxUX0xBTkdVQUdFLFxuICBkZWZhdWx0VHJhbnNsYXRpb25zTWFwXG59IGZyb20gJy4vbG9jYWxlcy90cmFuc2xhdGlvbnMtbWFwLnRzJztcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBuYW1lc3BhY2UuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX05TID0gJ3RyYW5zbGF0aW9uJztcblxuLyoqXG4gKiBUaGUgdHJhbnNsYXRpb25zIG1hcC5cbiAqL1xuZXhwb3J0IHR5cGUgVHJhbnNsYXRpb25zTWFwID0gUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuXG5sZXQgaXNJbml0aWFsaXplZCA9IGZhbHNlO1xuXG5pbnRlcmZhY2UgVE9wdGlvbnMgZXh0ZW5kcyBTZWxlY3Rvck9wdGlvbnM8W3R5cGVvZiBERUZBVUxUX05TXT4ge1xuICByZWFkb25seSBuczogW3R5cGVvZiBERUZBVUxUX05TXTtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplcyB0aGUgYGkxOG5gIG1vZHVsZS5cbiAqXG4gKiBAcGFyYW0gdHJhbnNsYXRpb25zTWFwIC0gVGhlIHRyYW5zbGF0aW9ucyBtYXAuXG4gKiBAcGFyYW0gaXNBc3luYyAtIFdoZXRoZXIgdGhlIGluaXRpYWxpemF0aW9uIGlzIGFzeW5jaHJvbm91cy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgYGkxOG5gIG1vZHVsZSBpcyBpbml0aWFsaXplZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXRJMThOKHRyYW5zbGF0aW9uc01hcDogVHJhbnNsYXRpb25zTWFwLCBpc0FzeW5jID0gdHJ1ZSk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoaXNJbml0aWFsaXplZCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gIGF3YWl0IGluaXQoe1xuICAgIGZhbGxiYWNrTG5nOiBERUZBVUxUX0xBTkdVQUdFLFxuICAgIGluaXRBc3luYzogaXNBc3luYyxcbiAgICBpbnRlcnBvbGF0aW9uOiB7XG4gICAgICBlc2NhcGVWYWx1ZTogZmFsc2VcbiAgICB9LFxuICAgIGxuZzogZ2V0TGFuZ3VhZ2UoKSxcbiAgICByZXNvdXJjZXM6IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIE9iamVjdC5lbnRyaWVzKHRyYW5zbGF0aW9uc01hcCkubWFwKChbbGFuZ3VhZ2UsIHRyYW5zbGF0aW9uc10pID0+IFtcbiAgICAgICAgbGFuZ3VhZ2UsXG4gICAgICAgIHtcbiAgICAgICAgICBbREVGQVVMVF9OU106IHRyYW5zbGF0aW9uc1xuICAgICAgICB9XG4gICAgICBdKVxuICAgICksXG4gICAgcmV0dXJuRW1wdHlTdHJpbmc6IGZhbHNlLFxuICAgIHJldHVybk51bGw6IGZhbHNlXG4gIH0pO1xuXG4gIGkxOG5leHQuYWRkUmVzb3VyY2VCdW5kbGUoREVGQVVMVF9MQU5HVUFHRSwgREVGQVVMVF9OUywgZW4sIHRydWUsIGZhbHNlKTtcbn1cblxuZnVuY3Rpb24gdEltcGwoXG4gIHNlbGVjdG9yOiBTZWxlY3RvckZuPFJlYWRvbmx5RGVlcDxEZWZhdWx0VHJhbnNsYXRpb25zQmFzZT4sIHN0cmluZywgU2VsZWN0b3JPcHRpb25zPFt0eXBlb2YgREVGQVVMVF9OU10+PixcbiAgb3B0aW9ucz86IFRPcHRpb25zXG4pOiBzdHJpbmcge1xuICBpZiAoIWlzSW5pdGlhbGl6ZWQpIHtcbiAgICBjb25zb2xlLndhcm4oJ0kxOE4gd2FzIG5vdCBpbml0aWFsaXplZCwgaW5pdGlhbGl6aW5nIGRlZmF1bHQgb2JzaWRpYW4tZGV2LXV0aWxzIHRyYW5zbGF0aW9ucycpO1xuICAgIGludm9rZUFzeW5jU2FmZWx5KCgpID0+IGluaXRJMThOKGRlZmF1bHRUcmFuc2xhdGlvbnNNYXAsIGZhbHNlKSk7XG4gIH1cblxuICBpZiAoIW9wdGlvbnMpIHtcbiAgICByZXR1cm4gdExpYihzZWxlY3Rvcik7XG4gIH1cblxuICByZXR1cm4gdExpYihzZWxlY3Rvciwgb3B0aW9ucyk7XG59XG5cbi8qKlxuICogVGhlIGB0YCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IHQgPSB0SW1wbCBhcyBURnVuY3Rpb247XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWFBLHFCQUdPO0FBQ1Asc0JBQTRCO0FBSTVCLG1CQUFrQztBQUNsQyxnQkFBbUI7QUFDbkIsOEJBR087QUFLQSxNQUFNLGFBQWE7QUFPMUIsSUFBSSxnQkFBZ0I7QUFhcEIsZUFBc0IsU0FBUyxpQkFBa0MsVUFBVSxNQUFxQjtBQUM5RixNQUFJLGVBQWU7QUFDakI7QUFBQSxFQUNGO0FBRUEsa0JBQWdCO0FBRWhCLFlBQU0scUJBQUs7QUFBQSxJQUNULGFBQWE7QUFBQSxJQUNiLFdBQVc7QUFBQSxJQUNYLGVBQWU7QUFBQSxNQUNiLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxTQUFLLDZCQUFZO0FBQUEsSUFDakIsV0FBVyxPQUFPO0FBQUEsTUFDaEIsT0FBTyxRQUFRLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQyxVQUFVLFlBQVksTUFBTTtBQUFBLFFBQ2hFO0FBQUEsUUFDQTtBQUFBLFVBQ0UsQ0FBQyxVQUFVLEdBQUc7QUFBQSxRQUNoQjtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFBQSxJQUNBLG1CQUFtQjtBQUFBLElBQ25CLFlBQVk7QUFBQSxFQUNkLENBQUM7QUFFRCxpQkFBQUEsUUFBUSxrQkFBa0IsMENBQWtCLFlBQVksY0FBSSxNQUFNLEtBQUs7QUFDekU7QUFFQSxTQUFTLE1BQ1AsVUFDQSxTQUNRO0FBQ1IsTUFBSSxDQUFDLGVBQWU7QUFDbEIsWUFBUSxLQUFLLGdGQUFnRjtBQUM3Rix3Q0FBa0IsTUFBTSxTQUFTLGdEQUF3QixLQUFLLENBQUM7QUFBQSxFQUNqRTtBQUVBLE1BQUksQ0FBQyxTQUFTO0FBQ1osZUFBTyxlQUFBQyxHQUFLLFFBQVE7QUFBQSxFQUN0QjtBQUVBLGFBQU8sZUFBQUEsR0FBSyxVQUFVLE9BQU87QUFDL0I7QUFLTyxNQUFNLElBQUk7IiwKICAibmFtZXMiOiBbImkxOG5leHQiLCAidExpYiJdCn0K
187
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2kxOG4vaTE4bi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBgaTE4bmAgbW9kdWxlIGZvciBgaTE4bmV4dGAuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBTZWxlY3RvckZuLFxuICBTZWxlY3Rvck9wdGlvbnMsXG4gIFRGdW5jdGlvblxufSBmcm9tICdpMThuZXh0JztcbmltcG9ydCB0eXBlIHsgUmVhZG9ubHlEZWVwIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IGkxOG5leHQsIHtcbiAgaW5pdCxcbiAgdCBhcyB0TGliXG59IGZyb20gJ2kxOG5leHQnO1xuaW1wb3J0IHsgZ2V0TGFuZ3VhZ2UgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRGVmYXVsdFRyYW5zbGF0aW9uc0Jhc2UgfSBmcm9tICcuL2RlZmF1bHQtdHJhbnNsYXRpb25zLnRzJztcblxuaW1wb3J0IHsgaW52b2tlQXN5bmNTYWZlbHkgfSBmcm9tICcuLi8uLi9hc3luYy50cyc7XG5pbXBvcnQgeyBlbiB9IGZyb20gJy4vbG9jYWxlcy9lbi50cyc7XG5pbXBvcnQge1xuICBERUZBVUxUX0xBTkdVQUdFLFxuICBkZWZhdWx0VHJhbnNsYXRpb25zTWFwXG59IGZyb20gJy4vbG9jYWxlcy90cmFuc2xhdGlvbnMtbWFwLnRzJztcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBuYW1lc3BhY2UuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX05TID0gJ3RyYW5zbGF0aW9uJztcblxuLyoqXG4gKiBUaGUgdHJhbnNsYXRpb25zIG1hcC5cbiAqL1xuZXhwb3J0IHR5cGUgVHJhbnNsYXRpb25zTWFwID0gUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuXG5pbnRlcmZhY2UgVE9wdGlvbnMgZXh0ZW5kcyBTZWxlY3Rvck9wdGlvbnM8W3R5cGVvZiBERUZBVUxUX05TXT4ge1xuICByZWFkb25seSBuczogW3R5cGVvZiBERUZBVUxUX05TXTtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplcyB0aGUgYGkxOG5gIG1vZHVsZS5cbiAqXG4gKiBDYWxsaW5nIHRoaXMgYWdhaW4gcmUtcnVucyBgaTE4bmV4dC5pbml0KClgLCB3aGljaCBmdWxseSByZXBsYWNlcyB0aGUgcmVzb3VyY2Ugc3RvcmUgYW5kIGxhbmd1YWdlLCBzbyBhIHJlbG9hZCBwaWNrc1xuICogdXAgYSBjaGFuZ2VkIGxhbmd1YWdlIG9yIHRyYW5zbGF0aW9ucyBtYXAuIFRoZSBsYXp5IGZhbGxiYWNrIGluIHtAbGluayB0fSBhbmQgZXh0ZXJuYWwgY2FsbGVycyByZWx5IG9uXG4gKiBgaTE4bmV4dC5pc0luaXRpYWxpemVkYCAoc2V0IGJ5IGBpMThuZXh0LmluaXQoKWApIGFzIHRoZSBzaW5nbGUgc291cmNlIG9mIHRydXRoLCBzbyBubyBzZXBhcmF0ZSBndWFyZCBpcyBrZXB0IGhlcmUuXG4gKlxuICogQHBhcmFtIHRyYW5zbGF0aW9uc01hcCAtIFRoZSB0cmFuc2xhdGlvbnMgbWFwLlxuICogQHBhcmFtIGlzQXN5bmMgLSBXaGV0aGVyIHRoZSBpbml0aWFsaXphdGlvbiBpcyBhc3luY2hyb25vdXMuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGBpMThuYCBtb2R1bGUgaXMgaW5pdGlhbGl6ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0STE4Tih0cmFuc2xhdGlvbnNNYXA6IFRyYW5zbGF0aW9uc01hcCwgaXNBc3luYyA9IHRydWUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgaW5pdCh7XG4gICAgZmFsbGJhY2tMbmc6IERFRkFVTFRfTEFOR1VBR0UsXG4gICAgaW5pdEFzeW5jOiBpc0FzeW5jLFxuICAgIGludGVycG9sYXRpb246IHtcbiAgICAgIGVzY2FwZVZhbHVlOiBmYWxzZVxuICAgIH0sXG4gICAgbG5nOiBnZXRMYW5ndWFnZSgpLFxuICAgIHJlc291cmNlczogT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgT2JqZWN0LmVudHJpZXModHJhbnNsYXRpb25zTWFwKS5tYXAoKFtsYW5ndWFnZSwgdHJhbnNsYXRpb25zXSkgPT4gW1xuICAgICAgICBsYW5ndWFnZSxcbiAgICAgICAge1xuICAgICAgICAgIFtERUZBVUxUX05TXTogdHJhbnNsYXRpb25zXG4gICAgICAgIH1cbiAgICAgIF0pXG4gICAgKSxcbiAgICByZXR1cm5FbXB0eVN0cmluZzogZmFsc2UsXG4gICAgcmV0dXJuTnVsbDogZmFsc2VcbiAgfSk7XG5cbiAgaTE4bmV4dC5hZGRSZXNvdXJjZUJ1bmRsZShERUZBVUxUX0xBTkdVQUdFLCBERUZBVUxUX05TLCBlbiwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5mdW5jdGlvbiB0SW1wbChcbiAgc2VsZWN0b3I6IFNlbGVjdG9yRm48UmVhZG9ubHlEZWVwPERlZmF1bHRUcmFuc2xhdGlvbnNCYXNlPiwgc3RyaW5nLCBTZWxlY3Rvck9wdGlvbnM8W3R5cGVvZiBERUZBVUxUX05TXT4+LFxuICBvcHRpb25zPzogVE9wdGlvbnNcbik6IHN0cmluZyB7XG4gIGlmICghaTE4bmV4dC5pc0luaXRpYWxpemVkKSB7XG4gICAgY29uc29sZS53YXJuKCdJMThOIHdhcyBub3QgaW5pdGlhbGl6ZWQsIGluaXRpYWxpemluZyBkZWZhdWx0IG9ic2lkaWFuLWRldi11dGlscyB0cmFuc2xhdGlvbnMnKTtcbiAgICBpbnZva2VBc3luY1NhZmVseSgoKSA9PiBpbml0STE4TihkZWZhdWx0VHJhbnNsYXRpb25zTWFwLCBmYWxzZSkpO1xuICB9XG5cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgcmV0dXJuIHRMaWIoc2VsZWN0b3IpO1xuICB9XG5cbiAgcmV0dXJuIHRMaWIoc2VsZWN0b3IsIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIFRoZSBgdGAgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBjb25zdCB0ID0gdEltcGwgYXMgVEZ1bmN0aW9uO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFhQSxxQkFHTztBQUNQLHNCQUE0QjtBQUk1QixtQkFBa0M7QUFDbEMsZ0JBQW1CO0FBQ25CLDhCQUdPO0FBS0EsTUFBTSxhQUFhO0FBc0IxQixlQUFzQixTQUFTLGlCQUFrQyxVQUFVLE1BQXFCO0FBQzlGLFlBQU0scUJBQUs7QUFBQSxJQUNULGFBQWE7QUFBQSxJQUNiLFdBQVc7QUFBQSxJQUNYLGVBQWU7QUFBQSxNQUNiLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxTQUFLLDZCQUFZO0FBQUEsSUFDakIsV0FBVyxPQUFPO0FBQUEsTUFDaEIsT0FBTyxRQUFRLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQyxVQUFVLFlBQVksTUFBTTtBQUFBLFFBQ2hFO0FBQUEsUUFDQTtBQUFBLFVBQ0UsQ0FBQyxVQUFVLEdBQUc7QUFBQSxRQUNoQjtBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFBQSxJQUNBLG1CQUFtQjtBQUFBLElBQ25CLFlBQVk7QUFBQSxFQUNkLENBQUM7QUFFRCxpQkFBQUEsUUFBUSxrQkFBa0IsMENBQWtCLFlBQVksY0FBSSxNQUFNLEtBQUs7QUFDekU7QUFFQSxTQUFTLE1BQ1AsVUFDQSxTQUNRO0FBQ1IsTUFBSSxDQUFDLGVBQUFBLFFBQVEsZUFBZTtBQUMxQixZQUFRLEtBQUssZ0ZBQWdGO0FBQzdGLHdDQUFrQixNQUFNLFNBQVMsZ0RBQXdCLEtBQUssQ0FBQztBQUFBLEVBQ2pFO0FBRUEsTUFBSSxDQUFDLFNBQVM7QUFDWixlQUFPLGVBQUFDLEdBQUssUUFBUTtBQUFBLEVBQ3RCO0FBRUEsYUFBTyxlQUFBQSxHQUFLLFVBQVUsT0FBTztBQUMvQjtBQUtPLE1BQU0sSUFBSTsiLAogICJuYW1lcyI6IFsiaTE4bmV4dCIsICJ0TGliIl0KfQo=
@@ -16,6 +16,10 @@ export type TranslationsMap = Record<string, Record<string, unknown>>;
16
16
  /**
17
17
  * Initializes the `i18n` module.
18
18
  *
19
+ * Calling this again re-runs `i18next.init()`, which fully replaces the resource store and language, so a reload picks
20
+ * up a changed language or translations map. The lazy fallback in {@link t} and external callers rely on
21
+ * `i18next.isInitialized` (set by `i18next.init()`) as the single source of truth, so no separate guard is kept here.
22
+ *
19
23
  * @param translationsMap - The translations map.
20
24
  * @param isAsync - Whether the initialization is asynchronous.
21
25
  * @returns A {@link Promise} that resolves when the `i18n` module is initialized.
@@ -184,6 +184,26 @@ var import_monkey_around_component = require('./components/monkey-around-compone
184
184
  var import_getDomEventsHandlersConstructor = require('./constructors/getDomEventsHandlersConstructor.cjs');
185
185
  var import_file_system = require('./file-system.cjs');
186
186
  let domEventsHandlersConstructor = null;
187
+ class EmbedByExtensionMdPatchComponent extends import_monkey_around_component.MonkeyAroundComponent {
188
+ constructor(embedByExtension) {
189
+ super();
190
+ this.embedByExtension = embedByExtension;
191
+ }
192
+ embedByExtension;
193
+ onload() {
194
+ this.registerMethodPatch({
195
+ methodName: "md",
196
+ obj: this.embedByExtension,
197
+ patchHandler: ({
198
+ fallback,
199
+ originalArgs: [context]
200
+ }) => {
201
+ context.displayMode = false;
202
+ return fallback();
203
+ }
204
+ });
205
+ }
206
+ }
187
207
  class FixedZIndexDomEventsHandlersInfo {
188
208
  app;
189
209
  el;
@@ -230,18 +250,7 @@ async function fullRender(params) {
230
250
  component.load();
231
251
  shouldUnloadComponent = true;
232
252
  }
233
- const patch = __using(_stack, component.addChild(new import_monkey_around_component.MonkeyAroundComponent()));
234
- patch.registerMethodPatch({
235
- methodName: "md",
236
- obj: params.app.embedRegistry.embedByExtension,
237
- patchHandler: ({
238
- fallback,
239
- originalArgs: [context]
240
- }) => {
241
- context.displayMode = false;
242
- return fallback();
243
- }
244
- });
253
+ const _ = __using(_stack, component.addChild(new EmbedByExtensionMdPatchComponent(params.app.embedRegistry.embedByExtension)));
245
254
  await import_obsidian.MarkdownRenderer.render(params.app, params.markdown, params.el, sourcePath, component);
246
255
  if (shouldUnloadComponent) {
247
256
  component.unload();
@@ -249,8 +258,8 @@ async function fullRender(params) {
249
258
  if (params.shouldRegisterLinkHandlers) {
250
259
  await registerLinkHandlers(params.app, params.el, params.sourcePath);
251
260
  }
252
- } catch (_) {
253
- var _error = _, _hasError = true;
261
+ } catch (_2) {
262
+ var _error = _2, _hasError = true;
254
263
  } finally {
255
264
  __callDispose(_stack, _error, _hasError);
256
265
  }
@@ -319,4 +328,4 @@ async function renderInternalLink(app, pathOrAbstractFile, displayText) {
319
328
  renderExternalLink,
320
329
  renderInternalLink
321
330
  });
322
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL21hcmtkb3duLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHByb2Nlc3NpbmcgTWFya2Rvd24gY29udGVudCBpbiBPYnNpZGlhbi5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVlcGx5IGNvdXBsZWQgdG8gT2JzaWRpYW4gcnVudGltZTsgcmVxdWlyZXMgcnVubmluZyB2YXVsdCBmb3IgbWVhbmluZ2Z1bCB0ZXN0aW5nLiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIERvbUV2ZW50c0hhbmRsZXJzLFxuICBEb21FdmVudHNIYW5kbGVyc0luZm9cbn0gZnJvbSAnQG9ic2lkaWFuLXR5cGluZ3Mvb2JzaWRpYW4tcHVibGljLWxhdGVzdCc7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RDb25zdHJ1Y3RvciB9IGZyb20gJ0BvYnNpZGlhbi10eXBpbmdzL29ic2lkaWFuLXB1YmxpYy1sYXRlc3QvaW1wbGVtZW50YXRpb25zJztcbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBJbnRlcm5hbFBsdWdpbk5hbWUgfSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0L2ltcGxlbWVudGF0aW9ucyc7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEhvdmVyUG9wb3ZlcixcbiAgTWFya2Rvd25QcmV2aWV3UmVuZGVyZXIsXG4gIE1hcmtkb3duUmVuZGVyZXJcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFBhdGhPckFic3RyYWN0RmlsZSB9IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuXG5pbXBvcnQgeyBnZXRaSW5kZXggfSBmcm9tICcuLi9odG1sLWVsZW1lbnQudHMnO1xuaW1wb3J0IHsgTW9ua2V5QXJvdW5kQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21vbmtleS1hcm91bmQtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IGdldERvbUV2ZW50c0hhbmRsZXJzQ29uc3RydWN0b3IgfSBmcm9tICcuL2NvbnN0cnVjdG9ycy9nZXREb21FdmVudHNIYW5kbGVyc0NvbnN0cnVjdG9yLnRzJztcbmltcG9ydCB7XG4gIGdldEFic3RyYWN0RmlsZU9yTnVsbCxcbiAgZ2V0UGF0aCxcbiAgaXNGb2xkZXJcbn0gZnJvbSAnLi9maWxlLXN5c3RlbS50cyc7XG5cbnR5cGUgRG9tRXZlbnRzSGFuZGxlcnNDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxEb21FdmVudHNIYW5kbGVycz47XG5cbmxldCBkb21FdmVudHNIYW5kbGVyc0NvbnN0cnVjdG9yOiBEb21FdmVudHNIYW5kbGVyc0NvbnN0cnVjdG9yIHwgbnVsbCA9IG51bGw7XG5cbi8qKlxuICogVGhlIHBhcmFtcyBmb3IgdGhlIGZ1bGwgcmVuZGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bGxSZW5kZXJQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgQ29tcG9uZW50IGluc3RhbmNlIHRvIHVzZSBmb3IgdGhlIHJlbmRlci5cbiAgICovXG4gIHJlYWRvbmx5IGNvbXBvbmVudD86IENvbXBvbmVudDtcblxuICAvKipcbiAgICogVGhlIEhUTUxFbGVtZW50IHRvIHJlbmRlciB0by5cbiAgICovXG4gIHJlYWRvbmx5IGVsOiBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogVGhlIE1hcmtkb3duIHN0cmluZyB0byByZW5kZXIuXG4gICAqL1xuICByZWFkb25seSBtYXJrZG93bjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlZ2lzdGVyIGxpbmsgaGFuZGxlcnMgZm9yIHRoZSByZW5kZXJlZCBlbGVtZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkUmVnaXN0ZXJMaW5rSGFuZGxlcnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc291cmNlIHBhdGggdG8gcmVzb2x2ZSByZWxhdGl2ZSBsaW5rcy5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZVBhdGg/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBGaXhlZFpJbmRleERvbUV2ZW50c0hhbmRsZXJzSW5mb0NvbnN0cnVjdG9yUGFyYW1zIHtcbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIHJlYWRvbmx5IGVsOiBIVE1MRWxlbWVudDtcbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG5jbGFzcyBGaXhlZFpJbmRleERvbUV2ZW50c0hhbmRsZXJzSW5mbyBpbXBsZW1lbnRzIERvbUV2ZW50c0hhbmRsZXJzSW5mbyB7XG4gIHB1YmxpYyByZWFkb25seSBhcHA6IEFwcDtcbiAgcHVibGljIHJlYWRvbmx5IGVsOiBIVE1MRWxlbWVudDtcbiAgcHVibGljIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcblxuICBwdWJsaWMgZ2V0IGhvdmVyUG9wb3ZlcigpOiBIb3ZlclBvcG92ZXIgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5faG92ZXJQb3BvdmVyO1xuICB9XG5cbiAgcHVibGljIHNldCBob3ZlclBvcG92ZXIoaG92ZXJQb3BvdmVyOiBIb3ZlclBvcG92ZXIgfCBudWxsKSB7XG4gICAgdGhpcy5faG92ZXJQb3BvdmVyID0gaG92ZXJQb3BvdmVyO1xuICAgIGlmIChob3ZlclBvcG92ZXIgJiYgdGhpcy56SW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgaG92ZXJQb3BvdmVyLmhvdmVyRWwuc2V0Q3NzU3R5bGVzKHtcbiAgICAgICAgekluZGV4OiBTdHJpbmcodGhpcy56SW5kZXgpXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9ob3ZlclBvcG92ZXI6IEhvdmVyUG9wb3ZlciB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgekluZGV4PzogbnVtYmVyO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IEZpeGVkWkluZGV4RG9tRXZlbnRzSGFuZGxlcnNJbmZvQ29uc3RydWN0b3JQYXJhbXMpIHtcbiAgICB0aGlzLmFwcCA9IHBhcmFtcy5hcHA7XG4gICAgdGhpcy5wYXRoID0gcGFyYW1zLnBhdGg7XG4gICAgdGhpcy5lbCA9IHBhcmFtcy5lbDtcblxuICAgIGlmICh0aGlzLmVsLmlzQ29ubmVjdGVkKSB7XG4gICAgICB0aGlzLnVwZGF0ZVpJbmRleCh0aGlzLmVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbC5vbk5vZGVJbnNlcnRlZCgoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlWkluZGV4KHRoaXMuZWwpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVaSW5kZXgoZWw6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgdGhpcy56SW5kZXggPSBnZXRaSW5kZXgoZWwpICsgMTtcbiAgfVxufVxuXG4vKipcbiAqIFJlbmRlciB0aGUgbWFya2Rvd24gYW5kIGVtYmVkcy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmdWxsIHJlbmRlci5cbiAqIEByZXR1cm5zIFRoZSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBmdWxsIHJlbmRlciBpcyBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZ1bGxSZW5kZXIocGFyYW1zOiBGdWxsUmVuZGVyUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHNvdXJjZVBhdGggPSBwYXJhbXMuc291cmNlUGF0aCA/PyAnLyc7XG4gIGxldCBzaG91bGRVbmxvYWRDb21wb25lbnQgPSBmYWxzZTtcbiAgbGV0IGNvbXBvbmVudDogQ29tcG9uZW50O1xuICBpZiAocGFyYW1zLmNvbXBvbmVudCkge1xuICAgIGNvbXBvbmVudCA9IHBhcmFtcy5jb21wb25lbnQ7XG4gIH0gZWxzZSB7XG4gICAgY29tcG9uZW50ID0gbmV3IENvbXBvbmVudCgpO1xuICAgIGNvbXBvbmVudC5sb2FkKCk7XG4gICAgc2hvdWxkVW5sb2FkQ29tcG9uZW50ID0gdHJ1ZTtcbiAgfVxuXG4gIHVzaW5nIHBhdGNoID0gY29tcG9uZW50LmFkZENoaWxkKG5ldyBNb25rZXlBcm91bmRDb21wb25lbnQoKSk7XG5cbiAgcGF0Y2gucmVnaXN0ZXJNZXRob2RQYXRjaCh7XG4gICAgbWV0aG9kTmFtZTogJ21kJyxcbiAgICBvYmo6IHBhcmFtcy5hcHAuZW1iZWRSZWdpc3RyeS5lbWJlZEJ5RXh0ZW5zaW9uLFxuICAgIHBhdGNoSGFuZGxlcjogKHtcbiAgICAgIGZhbGxiYWNrLFxuICAgICAgb3JpZ2luYWxBcmdzOiBbY29udGV4dF1cbiAgICB9KSA9PiB7XG4gICAgICBjb250ZXh0LmRpc3BsYXlNb2RlID0gZmFsc2U7XG4gICAgICByZXR1cm4gZmFsbGJhY2soKTtcbiAgICB9XG4gIH0pO1xuXG4gIGF3YWl0IE1hcmtkb3duUmVuZGVyZXIucmVuZGVyKHBhcmFtcy5hcHAsIHBhcmFtcy5tYXJrZG93biwgcGFyYW1zLmVsLCBzb3VyY2VQYXRoLCBjb21wb25lbnQpO1xuXG4gIGlmIChzaG91bGRVbmxvYWRDb21wb25lbnQpIHtcbiAgICBjb21wb25lbnQudW5sb2FkKCk7XG4gIH1cblxuICBpZiAocGFyYW1zLnNob3VsZFJlZ2lzdGVyTGlua0hhbmRsZXJzKSB7XG4gICAgYXdhaXQgcmVnaXN0ZXJMaW5rSGFuZGxlcnMocGFyYW1zLmFwcCwgcGFyYW1zLmVsLCBwYXJhbXMuc291cmNlUGF0aCk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBNYXJrZG93biB0byBIVE1MLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIG1hcmtkb3duIC0gVGhlIE1hcmtkb3duIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHBhcmFtIHNvdXJjZVBhdGggLSAob3B0aW9uYWwpIFRoZSBzb3VyY2UgcGF0aCB0byByZXNvbHZlIHJlbGF0aXZlIGxpbmtzLlxuICogQHJldHVybnMgVGhlIEhUTUwgc3RyaW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbWFya2Rvd25Ub0h0bWwoYXBwOiBBcHAsIG1hcmtkb3duOiBzdHJpbmcsIHNvdXJjZVBhdGg/OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBjb21wb25lbnQgPSBuZXcgQ29tcG9uZW50KCk7XG4gIGNvbXBvbmVudC5sb2FkKCk7XG4gIGNvbnN0IHJlbmRlckRpdiA9IGNyZWF0ZURpdigpO1xuICBhd2FpdCBNYXJrZG93blJlbmRlcmVyLnJlbmRlcihhcHAsIG1hcmtkb3duLCByZW5kZXJEaXYsIHNvdXJjZVBhdGggPz8gJycsIGNvbXBvbmVudCk7XG4gIGNvbnN0IGh0bWwgPSByZW5kZXJEaXYuaW5uZXJIVE1MO1xuICBjb21wb25lbnQudW5sb2FkKCk7XG4gIHJldHVybiBodG1sO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBsaW5rIGhhbmRsZXJzIGZvciB0aGUgZ2l2ZW4gZWxlbWVudC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBlbCAtIFRoZSBIVE1MRWxlbWVudCB0byByZWdpc3RlciBsaW5rIGhhbmRsZXJzIGZvci5cbiAqIEBwYXJhbSBzb3VyY2VQYXRoIC0gVGhlIHNvdXJjZSBwYXRoIHRvIHJlc29sdmUgcmVsYXRpdmUgbGlua3MgZnJvbS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyTGlua0hhbmRsZXJzKGFwcDogQXBwLCBlbDogSFRNTEVsZW1lbnQsIHNvdXJjZVBhdGg/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtYXRvbWljLXVwZGF0ZXMgLS0gTm8gcmFjZSBjb25kaXRpb24uXG4gIGRvbUV2ZW50c0hhbmRsZXJzQ29uc3RydWN0b3IgPz89IGF3YWl0IGdldERvbUV2ZW50c0hhbmRsZXJzQ29uc3RydWN0b3IoYXBwKTtcbiAgTWFya2Rvd25QcmV2aWV3UmVuZGVyZXIucmVnaXN0ZXJEb21FdmVudHMoXG4gICAgZWwsXG4gICAgbmV3IGRvbUV2ZW50c0hhbmRsZXJzQ29uc3RydWN0b3IoXG4gICAgICBuZXcgRml4ZWRaSW5kZXhEb21FdmVudHNIYW5kbGVyc0luZm8oe1xuICAgICAgICBhcHAsXG4gICAgICAgIGVsLFxuICAgICAgICBwYXRoOiBzb3VyY2VQYXRoID8/ICcnXG4gICAgICB9KVxuICAgIClcbiAgKTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGFuIGV4dGVybmFsIGxpbmsuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gdXJsIC0gVGhlIFVSTCB0byByZW5kZXIgdGhlIGV4dGVybmFsIGxpbmsgZm9yLlxuICogQHBhcmFtIGRpc3BsYXlUZXh0IC0gVGhlIHRleHQgdG8gZGlzcGxheSBmb3IgdGhlIGV4dGVybmFsIGxpbmsuXG4gKiBAcmV0dXJucyBUaGUgSFRNTEFuY2hvckVsZW1lbnQgY29udGFpbmluZyB0aGUgcmVuZGVyZWQgZXh0ZXJuYWwgbGluay5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlckV4dGVybmFsTGluayhhcHA6IEFwcCwgdXJsOiBzdHJpbmcsIGRpc3BsYXlUZXh0Pzogc3RyaW5nKTogUHJvbWlzZTxIVE1MQW5jaG9yRWxlbWVudD4ge1xuICBkaXNwbGF5VGV4dCA/Pz0gdXJsO1xuICBjb25zdCB3cmFwcGVyRWwgPSBjcmVhdGVTcGFuKCk7XG4gIGF3YWl0IGZ1bGxSZW5kZXIoe1xuICAgIGFwcCxcbiAgICBlbDogd3JhcHBlckVsLFxuICAgIG1hcmtkb3duOiBgWyR7ZGlzcGxheVRleHR9XSgke3VybH0pYFxuICB9KTtcbiAgY29uc3QgYUVsID0gd3JhcHBlckVsLmZpbmQoJ2EnKSBhcyBIVE1MQW5jaG9yRWxlbWVudDtcbiAgYXdhaXQgcmVnaXN0ZXJMaW5rSGFuZGxlcnMoYXBwLCBhRWwpO1xuICByZXR1cm4gYUVsO1xufVxuXG4vKipcbiAqIFJlbmRlcnMgYW4gaW50ZXJuYWwgbGluay5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBwYXRoT3JBYnN0cmFjdEZpbGUgLSBUaGUgcGF0aCBvciBhYnN0cmFjdCBmaWxlIHRvIHJlbmRlciB0aGUgaW50ZXJuYWwgbGluayBmb3IuXG4gKiBAcGFyYW0gZGlzcGxheVRleHQgLSBUaGUgdGV4dCB0byBkaXNwbGF5IGZvciB0aGUgaW50ZXJuYWwgbGluay5cbiAqIEByZXR1cm5zIFRoZSBIVE1MQW5jaG9yRWxlbWVudCBjb250YWluaW5nIHRoZSByZW5kZXJlZCBpbnRlcm5hbCBsaW5rLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVySW50ZXJuYWxMaW5rKGFwcDogQXBwLCBwYXRoT3JBYnN0cmFjdEZpbGU6IFBhdGhPckFic3RyYWN0RmlsZSwgZGlzcGxheVRleHQ/OiBzdHJpbmcpOiBQcm9taXNlPEhUTUxBbmNob3JFbGVtZW50PiB7XG4gIGNvbnN0IGFic3RyYWN0RmlsZSA9IGdldEFic3RyYWN0RmlsZU9yTnVsbChhcHAsIHBhdGhPckFic3RyYWN0RmlsZSk7XG4gIGNvbnN0IHBhdGggPSBnZXRQYXRoKGFwcCwgcGF0aE9yQWJzdHJhY3RGaWxlKTtcbiAgZGlzcGxheVRleHQgPz89IHBhdGg7XG4gIGlmIChpc0ZvbGRlcihhYnN0cmFjdEZpbGUpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUVsKCdhJywgeyB0ZXh0OiBkaXNwbGF5VGV4dCB9LCAoYUVsKSA9PiB7XG4gICAgICBhRWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZ0KSA9PiB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBhcHAuaW50ZXJuYWxQbHVnaW5zLmdldEVuYWJsZWRQbHVnaW5CeUlkKEludGVybmFsUGx1Z2luTmFtZS5GaWxlRXhwbG9yZXIpPy5yZXZlYWxJbkZvbGRlcihhYnN0cmFjdEZpbGUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCB3cmFwcGVyRWwgPSBjcmVhdGVTcGFuKCk7XG4gIGF3YWl0IGZ1bGxSZW5kZXIoe1xuICAgIGFwcCxcbiAgICBlbDogd3JhcHBlckVsLFxuICAgIG1hcmtkb3duOiBgW1ske3BhdGh9fCR7ZGlzcGxheVRleHR9XV1gXG4gIH0pO1xuICBjb25zdCBhRWwgPSB3cmFwcGVyRWwuZmluZCgnYScpIGFzIEhUTUxBbmNob3JFbGVtZW50O1xuICBhd2FpdCByZWdpc3RlckxpbmtIYW5kbGVycyhhcHAsIGFFbCk7XG4gIHJldHVybiBhRWw7XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWVBLDZCQUFtQztBQUNuQyxzQkFLTztBQUlQLDBCQUEwQjtBQUMxQixxQ0FBc0M7QUFDdEMsNkNBQWdEO0FBQ2hELHlCQUlPO0FBSVAsSUFBSSwrQkFBb0U7QUEyQ3hFLE1BQU0saUNBQWtFO0FBQUEsRUFDdEQ7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBRWhCLElBQVcsZUFBb0M7QUFDN0MsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBLEVBRUEsSUFBVyxhQUFhLGNBQW1DO0FBQ3pELFNBQUssZ0JBQWdCO0FBQ3JCLFFBQUksZ0JBQWdCLEtBQUss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
331
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL21hcmtkb3duLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHByb2Nlc3NpbmcgTWFya2Rvd24gY29udGVudCBpbiBPYnNpZGlhbi5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVlcGx5IGNvdXBsZWQgdG8gT2JzaWRpYW4gcnVudGltZTsgcmVxdWlyZXMgcnVubmluZyB2YXVsdCBmb3IgbWVhbmluZ2Z1bCB0ZXN0aW5nLiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIERvbUV2ZW50c0hhbmRsZXJzLFxuICBEb21FdmVudHNIYW5kbGVyc0luZm8sXG4gIEVtYmVkUmVnaXN0cnlFbWJlZEJ5RXh0ZW5zaW9uUmVjb3JkXG59IGZyb20gJ0BvYnNpZGlhbi10eXBpbmdzL29ic2lkaWFuLXB1YmxpYy1sYXRlc3QnO1xuaW1wb3J0IHR5cGUgeyBFeHRyYWN0Q29uc3RydWN0b3IgfSBmcm9tICdAb2JzaWRpYW4tdHlwaW5ncy9vYnNpZGlhbi1wdWJsaWMtbGF0ZXN0L2ltcGxlbWVudGF0aW9ucyc7XG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgSW50ZXJuYWxQbHVnaW5OYW1lIH0gZnJvbSAnQG9ic2lkaWFuLXR5cGluZ3Mvb2JzaWRpYW4tcHVibGljLWxhdGVzdC9pbXBsZW1lbnRhdGlvbnMnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBIb3ZlclBvcG92ZXIsXG4gIE1hcmtkb3duUHJldmlld1JlbmRlcmVyLFxuICBNYXJrZG93blJlbmRlcmVyXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBQYXRoT3JBYnN0cmFjdEZpbGUgfSBmcm9tICcuL2ZpbGUtc3lzdGVtLnRzJztcblxuaW1wb3J0IHsgZ2V0WkluZGV4IH0gZnJvbSAnLi4vaHRtbC1lbGVtZW50LnRzJztcbmltcG9ydCB7IE1vbmtleUFyb3VuZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tb25rZXktYXJvdW5kLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBnZXREb21FdmVudHNIYW5kbGVyc0NvbnN0cnVjdG9yIH0gZnJvbSAnLi9jb25zdHJ1Y3RvcnMvZ2V0RG9tRXZlbnRzSGFuZGxlcnNDb25zdHJ1Y3Rvci50cyc7XG5pbXBvcnQge1xuICBnZXRBYnN0cmFjdEZpbGVPck51bGwsXG4gIGdldFBhdGgsXG4gIGlzRm9sZGVyXG59IGZyb20gJy4vZmlsZS1zeXN0ZW0udHMnO1xuXG50eXBlIERvbUV2ZW50c0hhbmRsZXJzQ29uc3RydWN0b3IgPSBFeHRyYWN0Q29uc3RydWN0b3I8RG9tRXZlbnRzSGFuZGxlcnM+O1xuXG5sZXQgZG9tRXZlbnRzSGFuZGxlcnNDb25zdHJ1Y3RvcjogRG9tRXZlbnRzSGFuZGxlcnNDb25zdHJ1Y3RvciB8IG51bGwgPSBudWxsO1xuXG4vKipcbiAqIFRoZSBwYXJhbXMgZm9yIHRoZSBmdWxsIHJlbmRlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGdWxsUmVuZGVyUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIENvbXBvbmVudCBpbnN0YW5jZSB0byB1c2UgZm9yIHRoZSByZW5kZXIuXG4gICAqL1xuICByZWFkb25seSBjb21wb25lbnQ/OiBDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBIVE1MRWxlbWVudCB0byByZW5kZXIgdG8uXG4gICAqL1xuICByZWFkb25seSBlbDogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBNYXJrZG93biBzdHJpbmcgdG8gcmVuZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgbWFya2Rvd246IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byByZWdpc3RlciBsaW5rIGhhbmRsZXJzIGZvciB0aGUgcmVuZGVyZWQgZWxlbWVudC5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFJlZ2lzdGVyTGlua0hhbmRsZXJzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHNvdXJjZSBwYXRoIHRvIHJlc29sdmUgcmVsYXRpdmUgbGlua3MuXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VQYXRoPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgRml4ZWRaSW5kZXhEb21FdmVudHNIYW5kbGVyc0luZm9Db25zdHJ1Y3RvclBhcmFtcyB7XG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuICByZWFkb25seSBlbDogSFRNTEVsZW1lbnQ7XG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuY2xhc3MgRW1iZWRCeUV4dGVuc2lvbk1kUGF0Y2hDb21wb25lbnQgZXh0ZW5kcyBNb25rZXlBcm91bmRDb21wb25lbnQge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBlbWJlZEJ5RXh0ZW5zaW9uOiBFbWJlZFJlZ2lzdHJ5RW1iZWRCeUV4dGVuc2lvblJlY29yZCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgb25sb2FkKCk6IHZvaWQge1xuICAgIHRoaXMucmVnaXN0ZXJNZXRob2RQYXRjaCh7XG4gICAgICBtZXRob2ROYW1lOiAnbWQnLFxuICAgICAgb2JqOiB0aGlzLmVtYmVkQnlFeHRlbnNpb24sXG4gICAgICBwYXRjaEhhbmRsZXI6ICh7XG4gICAgICAgIGZhbGxiYWNrLFxuICAgICAgICBvcmlnaW5hbEFyZ3M6IFtjb250ZXh0XVxuICAgICAgfSkgPT4ge1xuICAgICAgICBjb250ZXh0LmRpc3BsYXlNb2RlID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBmYWxsYmFjaygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIEZpeGVkWkluZGV4RG9tRXZlbnRzSGFuZGxlcnNJbmZvIGltcGxlbWVudHMgRG9tRXZlbnRzSGFuZGxlcnNJbmZvIHtcbiAgcHVibGljIHJlYWRvbmx5IGFwcDogQXBwO1xuICBwdWJsaWMgcmVhZG9ubHkgZWw6IEhUTUxFbGVtZW50O1xuICBwdWJsaWMgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xuXG4gIHB1YmxpYyBnZXQgaG92ZXJQb3BvdmVyKCk6IEhvdmVyUG9wb3ZlciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9ob3ZlclBvcG92ZXI7XG4gIH1cblxuICBwdWJsaWMgc2V0IGhvdmVyUG9wb3Zlcihob3ZlclBvcG92ZXI6IEhvdmVyUG9wb3ZlciB8IG51bGwpIHtcbiAgICB0aGlzLl9ob3ZlclBvcG92ZXIgPSBob3ZlclBvcG92ZXI7XG4gICAgaWYgKGhvdmVyUG9wb3ZlciAmJiB0aGlzLnpJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBob3ZlclBvcG92ZXIuaG92ZXJFbC5zZXRDc3NTdHlsZXMoe1xuICAgICAgICB6SW5kZXg6IFN0cmluZyh0aGlzLnpJbmRleClcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hvdmVyUG9wb3ZlcjogSG92ZXJQb3BvdmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSB6SW5kZXg/OiBudW1iZXI7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogRml4ZWRaSW5kZXhEb21FdmVudHNIYW5kbGVyc0luZm9Db25zdHJ1Y3RvclBhcmFtcykge1xuICAgIHRoaXMuYXBwID0gcGFyYW1zLmFwcDtcbiAgICB0aGlzLnBhdGggPSBwYXJhbXMucGF0aDtcbiAgICB0aGlzLmVsID0gcGFyYW1zLmVsO1xuXG4gICAgaWYgKHRoaXMuZWwuaXNDb25uZWN0ZWQpIHtcbiAgICAgIHRoaXMudXBkYXRlWkluZGV4KHRoaXMuZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVsLm9uTm9kZUluc2VydGVkKCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVaSW5kZXgodGhpcy5lbCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVpJbmRleChlbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnpJbmRleCA9IGdldFpJbmRleChlbCkgKyAxO1xuICB9XG59XG5cbi8qKlxuICogUmVuZGVyIHRoZSBtYXJrZG93biBhbmQgZW1iZWRzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIGZ1bGwgcmVuZGVyLlxuICogQHJldHVybnMgVGhlIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZ1bGwgcmVuZGVyIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZnVsbFJlbmRlcihwYXJhbXM6IEZ1bGxSZW5kZXJQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qgc291cmNlUGF0aCA9IHBhcmFtcy5zb3VyY2VQYXRoID8/ICcvJztcbiAgbGV0IHNob3VsZFVubG9hZENvbXBvbmVudCA9IGZhbHNlO1xuICBsZXQgY29tcG9uZW50OiBDb21wb25lbnQ7XG4gIGlmIChwYXJhbXMuY29tcG9uZW50KSB7XG4gICAgY29tcG9uZW50ID0gcGFyYW1zLmNvbXBvbmVudDtcbiAgfSBlbHNlIHtcbiAgICBjb21wb25lbnQgPSBuZXcgQ29tcG9uZW50KCk7XG4gICAgY29tcG9uZW50LmxvYWQoKTtcbiAgICBzaG91bGRVbmxvYWRDb21wb25lbnQgPSB0cnVlO1xuICB9XG5cbiAgdXNpbmcgXyA9IGNvbXBvbmVudC5hZGRDaGlsZChuZXcgRW1iZWRCeUV4dGVuc2lvbk1kUGF0Y2hDb21wb25lbnQocGFyYW1zLmFwcC5lbWJlZFJlZ2lzdHJ5LmVtYmVkQnlFeHRlbnNpb24pKTtcblxuICBhd2FpdCBNYXJrZG93blJlbmRlcmVyLnJlbmRlcihwYXJhbXMuYXBwLCBwYXJhbXMubWFya2Rvd24sIHBhcmFtcy5lbCwgc291cmNlUGF0aCwgY29tcG9uZW50KTtcblxuICBpZiAoc2hvdWxkVW5sb2FkQ29tcG9uZW50KSB7XG4gICAgY29tcG9uZW50LnVubG9hZCgpO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5zaG91bGRSZWdpc3RlckxpbmtIYW5kbGVycykge1xuICAgIGF3YWl0IHJlZ2lzdGVyTGlua0hhbmRsZXJzKHBhcmFtcy5hcHAsIHBhcmFtcy5lbCwgcGFyYW1zLnNvdXJjZVBhdGgpO1xuICB9XG59XG5cbi8qKlxuICogQ29udmVydHMgTWFya2Rvd24gdG8gSFRNTC5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBtYXJrZG93biAtIFRoZSBNYXJrZG93biBzdHJpbmcgdG8gY29udmVydC5cbiAqIEBwYXJhbSBzb3VyY2VQYXRoIC0gKG9wdGlvbmFsKSBUaGUgc291cmNlIHBhdGggdG8gcmVzb2x2ZSByZWxhdGl2ZSBsaW5rcy5cbiAqIEByZXR1cm5zIFRoZSBIVE1MIHN0cmluZy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1hcmtkb3duVG9IdG1sKGFwcDogQXBwLCBtYXJrZG93bjogc3RyaW5nLCBzb3VyY2VQYXRoPzogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgY29tcG9uZW50ID0gbmV3IENvbXBvbmVudCgpO1xuICBjb21wb25lbnQubG9hZCgpO1xuICBjb25zdCByZW5kZXJEaXYgPSBjcmVhdGVEaXYoKTtcbiAgYXdhaXQgTWFya2Rvd25SZW5kZXJlci5yZW5kZXIoYXBwLCBtYXJrZG93biwgcmVuZGVyRGl2LCBzb3VyY2VQYXRoID8/ICcnLCBjb21wb25lbnQpO1xuICBjb25zdCBodG1sID0gcmVuZGVyRGl2LmlubmVySFRNTDtcbiAgY29tcG9uZW50LnVubG9hZCgpO1xuICByZXR1cm4gaHRtbDtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgbGluayBoYW5kbGVycyBmb3IgdGhlIGdpdmVuIGVsZW1lbnQuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZWwgLSBUaGUgSFRNTEVsZW1lbnQgdG8gcmVnaXN0ZXIgbGluayBoYW5kbGVycyBmb3IuXG4gKiBAcGFyYW0gc291cmNlUGF0aCAtIFRoZSBzb3VyY2UgcGF0aCB0byByZXNvbHZlIHJlbGF0aXZlIGxpbmtzIGZyb20uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWdpc3RlckxpbmtIYW5kbGVycyhhcHA6IEFwcCwgZWw6IEhUTUxFbGVtZW50LCBzb3VyY2VQYXRoPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZXF1aXJlLWF0b21pYy11cGRhdGVzIC0tIE5vIHJhY2UgY29uZGl0aW9uLlxuICBkb21FdmVudHNIYW5kbGVyc0NvbnN0cnVjdG9yID8/PSBhd2FpdCBnZXREb21FdmVudHNIYW5kbGVyc0NvbnN0cnVjdG9yKGFwcCk7XG4gIE1hcmtkb3duUHJldmlld1JlbmRlcmVyLnJlZ2lzdGVyRG9tRXZlbnRzKFxuICAgIGVsLFxuICAgIG5ldyBkb21FdmVudHNIYW5kbGVyc0NvbnN0cnVjdG9yKFxuICAgICAgbmV3IEZpeGVkWkluZGV4RG9tRXZlbnRzSGFuZGxlcnNJbmZvKHtcbiAgICAgICAgYXBwLFxuICAgICAgICBlbCxcbiAgICAgICAgcGF0aDogc291cmNlUGF0aCA/PyAnJ1xuICAgICAgfSlcbiAgICApXG4gICk7XG59XG5cbi8qKlxuICogUmVuZGVycyBhbiBleHRlcm5hbCBsaW5rLlxuICpcbiAqIEBwYXJhbSBhcHAgLSBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICogQHBhcmFtIHVybCAtIFRoZSBVUkwgdG8gcmVuZGVyIHRoZSBleHRlcm5hbCBsaW5rIGZvci5cbiAqIEBwYXJhbSBkaXNwbGF5VGV4dCAtIFRoZSB0ZXh0IHRvIGRpc3BsYXkgZm9yIHRoZSBleHRlcm5hbCBsaW5rLlxuICogQHJldHVybnMgVGhlIEhUTUxBbmNob3JFbGVtZW50IGNvbnRhaW5pbmcgdGhlIHJlbmRlcmVkIGV4dGVybmFsIGxpbmsuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXJFeHRlcm5hbExpbmsoYXBwOiBBcHAsIHVybDogc3RyaW5nLCBkaXNwbGF5VGV4dD86IHN0cmluZyk6IFByb21pc2U8SFRNTEFuY2hvckVsZW1lbnQ+IHtcbiAgZGlzcGxheVRleHQgPz89IHVybDtcbiAgY29uc3Qgd3JhcHBlckVsID0gY3JlYXRlU3BhbigpO1xuICBhd2FpdCBmdWxsUmVuZGVyKHtcbiAgICBhcHAsXG4gICAgZWw6IHdyYXBwZXJFbCxcbiAgICBtYXJrZG93bjogYFske2Rpc3BsYXlUZXh0fV0oJHt1cmx9KWBcbiAgfSk7XG4gIGNvbnN0IGFFbCA9IHdyYXBwZXJFbC5maW5kKCdhJykgYXMgSFRNTEFuY2hvckVsZW1lbnQ7XG4gIGF3YWl0IHJlZ2lzdGVyTGlua0hhbmRsZXJzKGFwcCwgYUVsKTtcbiAgcmV0dXJuIGFFbDtcbn1cblxuLyogdjggaWdub3JlIHN0b3AgKi9cblxuLyoqXG4gKiBSZW5kZXJzIGFuIGludGVybmFsIGxpbmsuXG4gKlxuICogQHBhcmFtIGFwcCAtIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gKiBAcGFyYW0gcGF0aE9yQWJzdHJhY3RGaWxlIC0gVGhlIHBhdGggb3IgYWJzdHJhY3QgZmlsZSB0byByZW5kZXIgdGhlIGludGVybmFsIGxpbmsgZm9yLlxuICogQHBhcmFtIGRpc3BsYXlUZXh0IC0gVGhlIHRleHQgdG8gZGlzcGxheSBmb3IgdGhlIGludGVybmFsIGxpbmsuXG4gKiBAcmV0dXJucyBUaGUgSFRNTEFuY2hvckVsZW1lbnQgY29udGFpbmluZyB0aGUgcmVuZGVyZWQgaW50ZXJuYWwgbGluay5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlckludGVybmFsTGluayhhcHA6IEFwcCwgcGF0aE9yQWJzdHJhY3RGaWxlOiBQYXRoT3JBYnN0cmFjdEZpbGUsIGRpc3BsYXlUZXh0Pzogc3RyaW5nKTogUHJvbWlzZTxIVE1MQW5jaG9yRWxlbWVudD4ge1xuICBjb25zdCBhYnN0cmFjdEZpbGUgPSBnZXRBYnN0cmFjdEZpbGVPck51bGwoYXBwLCBwYXRoT3JBYnN0cmFjdEZpbGUpO1xuICBjb25zdCBwYXRoID0gZ2V0UGF0aChhcHAsIHBhdGhPckFic3RyYWN0RmlsZSk7XG4gIGRpc3BsYXlUZXh0ID8/PSBwYXRoO1xuICBpZiAoaXNGb2xkZXIoYWJzdHJhY3RGaWxlKSkge1xuICAgIHJldHVybiBjcmVhdGVFbCgnYScsIHsgdGV4dDogZGlzcGxheVRleHQgfSwgKGFFbCkgPT4ge1xuICAgICAgYUVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGV2dCkgPT4ge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgYXBwLmludGVybmFsUGx1Z2lucy5nZXRFbmFibGVkUGx1Z2luQnlJZChJbnRlcm5hbFBsdWdpbk5hbWUuRmlsZUV4cGxvcmVyKT8ucmV2ZWFsSW5Gb2xkZXIoYWJzdHJhY3RGaWxlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3Qgd3JhcHBlckVsID0gY3JlYXRlU3BhbigpO1xuICBhd2FpdCBmdWxsUmVuZGVyKHtcbiAgICBhcHAsXG4gICAgZWw6IHdyYXBwZXJFbCxcbiAgICBtYXJrZG93bjogYFtbJHtwYXRofXwke2Rpc3BsYXlUZXh0fV1dYFxuICB9KTtcbiAgY29uc3QgYUVsID0gd3JhcHBlckVsLmZpbmQoJ2EnKSBhcyBIVE1MQW5jaG9yRWxlbWVudDtcbiAgYXdhaXQgcmVnaXN0ZXJMaW5rSGFuZGxlcnMoYXBwLCBhRWwpO1xuICByZXR1cm4gYUVsO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnQkEsNkJBQW1DO0FBQ25DLHNCQUtPO0FBSVAsMEJBQTBCO0FBQzFCLHFDQUFzQztBQUN0Qyw2Q0FBZ0Q7QUFDaEQseUJBSU87QUFJUCxJQUFJLCtCQUFvRTtBQTJDeEUsTUFBTSx5Q0FBeUMscURBQXNCO0FBQUEsRUFDNUQsWUFBNkIsa0JBQXVEO0FBQ3pGLFVBQU07QUFENEI7QUFBQSxFQUVwQztBQUFBLEVBRm9DO0FBQUEsRUFJcEIsU0FBZTtBQUM3QixTQUFLLG9CQUFvQjtBQUFBLE1BQ3ZCLFlBQVk7QUFBQSxNQUNaLEtBQUssS0FBSztBQUFBLE1BQ1YsY0FBYyxDQUFDO0FBQUEsUUFDYjtBQUFBLFFBQ0EsY0FBYyxDQUFDLE9BQU87QUFBQSxNQUN4QixNQUFNO0FBQ0osZ0JBQVEsY0FBYztBQUN0QixlQUFPLFNBQVM7QUFBQSxNQUNsQjtBQUFBLElBQ0YsQ0FBQztBQUFBLEVBQ0g7QUFDRjtBQUVBLE1BQU0saUNBQWtFO0FBQUEsRUFDdEQ7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBRWhCLElBQVcsZUFBb0M7QUFDN0MsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBLEVBRUEsSUFBVyxhQUFhLGNBQW1DO0FBQ3pELFNBQUssZ0JBQWdCO0FBQ3JCLFFBQUksZ0JBQWdCLEtBQUssV0FBVyxRQUFXO0FBQzdDLG1CQUFhLFFBQVEsYUFBYTtBQUFBLFFBQ2hDLFFBQVEsT0FBTyxLQUFLLE1BQU07QUFBQSxNQUM1QixDQUFDO0FBQUEsSUFDSDtBQUFBLEVBQ0Y7QUFBQSxFQUVRLGdCQUFxQztBQUFBLEVBRXJDO0FBQUEsRUFFRCxZQUFZLFFBQTJEO0FBQzVFLFNBQUssTUFBTSxPQUFPO0FBQ2xCLFNBQUssT0FBTyxPQUFPO0FBQ25CLFNBQUssS0FBSyxPQUFPO0FBRWpCLFFBQUksS0FBSyxHQUFHLGFBQWE7QUFDdkIsV0FBSyxhQUFhLEtBQUssRUFBRTtBQUFBLElBQzNCLE9BQU87QUFDTCxXQUFLLEdBQUcsZUFBZSxNQUFNO0FBQzNCLGFBQUssYUFBYSxLQUFLLEVBQUU7QUFBQSxNQUMzQixDQUFDO0FBQUEsSUFDSDtBQUFBLEVBQ0Y7QUFBQSxFQUVRLGFBQWEsSUFBdUI7QUFDMUMsU0FBSyxhQUFTLCtCQUFVLEVBQUUsSUFBSTtBQUFBLEVBQ2hDO0FBQ0Y7QUFRQSxlQUFzQixXQUFXLFFBQXlDO0FBWXhFO0FBQUE7QUFYQSxVQUFNLGFBQWEsT0FBTyxjQUFjO0FBQ3hDLFFBQUksd0JBQXdCO0FBQzVCLFFBQUk7QUFDSixRQUFJLE9BQU8sV0FBVztBQUNwQixrQkFBWSxPQUFPO0FBQUEsSUFDckIsT0FBTztBQUNMLGtCQUFZLElBQUksMEJBQVU7QUFDMUIsZ0JBQVUsS0FBSztBQUNmLDhCQUF3QjtBQUFBLElBQzFCO0FBRUEsVUFBTSxJQUFJLDBCQUFVLFNBQVMsSUFBSSxpQ0FBaUMsT0FBTyxJQUFJLGNBQWMsZ0JBQWdCLENBQUM7QUFFNUcsVUFBTSxpQ0FBaUIsT0FBTyxPQUFPLEtBQUssT0FBTyxVQUFVLE9BQU8sSUFBSSxZQUFZLFNBQVM7QUFFM0YsUUFBSSx1QkFBdUI7QUFDekIsZ0JBQVUsT0FBTztBQUFBLElBQ25CO0FBRUEsUUFBSSxPQUFPLDRCQUE0QjtBQUNyQyxZQUFNLHFCQUFxQixPQUFPLEtBQUssT0FBTyxJQUFJLE9BQU8sVUFBVTtBQUFBLElBQ3JFO0FBQUEsV0FWQUEsSUFBQTtBQUFBLGlCQUFBQSxJQUFBO0FBQUE7QUFBQTtBQUFBO0FBV0Y7QUFVQSxlQUFzQixlQUFlLEtBQVUsVUFBa0IsWUFBc0M7QUFDckcsUUFBTSxZQUFZLElBQUksMEJBQVU7QUFDaEMsWUFBVSxLQUFLO0FBQ2YsUUFBTSxZQUFZLFVBQVU7QUFDNUIsUUFBTSxpQ0FBaUIsT0FBTyxLQUFLLFVBQVUsV0FBVyxjQUFjLElBQUksU0FBUztBQUNuRixRQUFNLE9BQU8sVUFBVTtBQUN2QixZQUFVLE9BQU87QUFDakIsU0FBTztBQUNUO0FBU0EsZUFBc0IscUJBQXFCLEtBQVUsSUFBaUIsWUFBb0M7QUFFeEcsbUNBQWlDLFVBQU0sd0VBQWdDLEdBQUc7QUFDMUUsMENBQXdCO0FBQUEsSUFDdEI7QUFBQSxJQUNBLElBQUk7QUFBQSxNQUNGLElBQUksaUNBQWlDO0FBQUEsUUFDbkM7QUFBQSxRQUNBO0FBQUEsUUFDQSxNQUFNLGNBQWM7QUFBQSxNQUN0QixDQUFDO0FBQUEsSUFDSDtBQUFBLEVBQ0Y7QUFDRjtBQVVBLGVBQXNCLG1CQUFtQixLQUFVLEtBQWEsYUFBa0Q7QUFDaEgsa0JBQWdCO0FBQ2hCLFFBQU0sWUFBWSxXQUFXO0FBQzdCLFFBQU0sV0FBVztBQUFBLElBQ2Y7QUFBQSxJQUNBLElBQUk7QUFBQSxJQUNKLFVBQVUsSUFBSSxXQUFXLEtBQUssR0FBRztBQUFBLEVBQ25DLENBQUM7QUFDRCxRQUFNLE1BQU0sVUFBVSxLQUFLLEdBQUc7QUFDOUIsUUFBTSxxQkFBcUIsS0FBSyxHQUFHO0FBQ25DLFNBQU87QUFDVDtBQVlBLGVBQXNCLG1CQUFtQixLQUFVLG9CQUF3QyxhQUFrRDtBQUMzSSxRQUFNLG1CQUFlLDBDQUFzQixLQUFLLGtCQUFrQjtBQUNsRSxRQUFNLFdBQU8sNEJBQVEsS0FBSyxrQkFBa0I7QUFDNUMsa0JBQWdCO0FBQ2hCLFVBQUksNkJBQVMsWUFBWSxHQUFHO0FBQzFCLFdBQU8sU0FBUyxLQUFLLEVBQUUsTUFBTSxZQUFZLEdBQUcsQ0FBQ0MsU0FBUTtBQUNuRCxNQUFBQSxLQUFJLGlCQUFpQixTQUFTLENBQUMsUUFBUTtBQUNyQyxZQUFJLGVBQWU7QUFDbkIsWUFBSSxnQkFBZ0IscUJBQXFCLDBDQUFtQixZQUFZLEdBQUcsZUFBZSxZQUFZO0FBQUEsTUFDeEcsQ0FBQztBQUFBLElBQ0gsQ0FBQztBQUFBLEVBQ0g7QUFFQSxRQUFNLFlBQVksV0FBVztBQUM3QixRQUFNLFdBQVc7QUFBQSxJQUNmO0FBQUEsSUFDQSxJQUFJO0FBQUEsSUFDSixVQUFVLEtBQUssSUFBSSxJQUFJLFdBQVc7QUFBQSxFQUNwQyxDQUFDO0FBQ0QsUUFBTSxNQUFNLFVBQVUsS0FBSyxHQUFHO0FBQzlCLFFBQU0scUJBQXFCLEtBQUssR0FBRztBQUNuQyxTQUFPO0FBQ1Q7IiwKICAibmFtZXMiOiBbIl8iLCAiYUVsIl0KfQo=
@@ -139,9 +139,10 @@ var import_abort_signal_component = require('../components/abort-signal-componen
139
139
  var import_async_error_handler_component = require('../components/async-error-handler-component.cjs');
140
140
  var import_component_ex = require('../components/component-ex.cjs');
141
141
  var import_console_debug_component = require('../components/console-debug-component.cjs');
142
- var import_i18n_component = require('../components/i18n-component.cjs');
143
142
  var import_plugin_context_component = require('../components/plugin-context-component.cjs');
144
143
  var import_plugin_notice_component = require('../components/plugin-notice-component.cjs');
144
+ var import_i18n = require('../i18n/i18n.cjs');
145
+ var import_translations_map = require('../i18n/locales/translations-map.cjs');
145
146
  class PluginBase extends (0, import_async_events.mixinAsyncEvents)()(import_obsidian.Plugin) {
146
147
  /**
147
148
  * Gets abort signal component.
@@ -191,22 +192,6 @@ class PluginBase extends (0, import_async_events.mixinAsyncEvents)()(import_obsi
191
192
  set consoleDebugComponent(value) {
192
193
  this._consoleDebugComponent = value;
193
194
  }
194
- /**
195
- * Gets i18n component.
196
- *
197
- * @returns i18n component.
198
- */
199
- get i18nComponent() {
200
- return (0, import_type_guards.ensureNonNullable)(this._i18nComponent);
201
- }
202
- /**
203
- * Sets i18n component.
204
- *
205
- * @param value - I18n component.
206
- */
207
- set i18nComponent(value) {
208
- this._i18nComponent = value;
209
- }
210
195
  /**
211
196
  * Gets plugin context component (plugin ID, debug controller, library styles).
212
197
  *
@@ -242,7 +227,6 @@ class PluginBase extends (0, import_async_events.mixinAsyncEvents)()(import_obsi
242
227
  _abortSignalComponent;
243
228
  _asyncErrorHandlerComponent;
244
229
  _consoleDebugComponent;
245
- _i18nComponent;
246
230
  _pluginContextComponent;
247
231
  _pluginNoticeComponent;
248
232
  wrapperComponent = new import_component_ex.ComponentEx();
@@ -277,13 +261,13 @@ class PluginBase extends (0, import_async_events.mixinAsyncEvents)()(import_obsi
277
261
  * Do NOT override this method. Override {@link onloadImpl} instead.
278
262
  */
279
263
  async onload() {
264
+ await (0, import_i18n.initI18N)(this.createTranslationsMap());
280
265
  this.pluginContextComponent = this.addChild(
281
266
  new import_plugin_context_component.PluginContextComponent({
282
267
  app: this.app,
283
268
  pluginId: this.manifest.id
284
269
  })
285
270
  );
286
- this.i18nComponent = this.addChild(new import_i18n_component.I18nComponent());
287
271
  this.pluginNoticeComponent = this.addChild(new import_plugin_notice_component.PluginNoticeComponent(this.manifest.name));
288
272
  this.asyncErrorHandlerComponent = this.addChild(new import_async_error_handler_component.AsyncErrorHandlerComponent(this.pluginNoticeComponent));
289
273
  this.abortSignalComponent = this.addChild(new import_abort_signal_component.AbortSignalComponent(this.manifest.id));
@@ -302,6 +286,17 @@ class PluginBase extends (0, import_async_events.mixinAsyncEvents)()(import_obsi
302
286
  removeChild(component) {
303
287
  return this.wrapperComponent.removeChild(component);
304
288
  }
289
+ /**
290
+ * Provides the translations map used to initialize i18n during {@link onload}.
291
+ *
292
+ * Override in subclass to supply plugin-specific translations. The default returns the built-in
293
+ * `obsidian-dev-utils` translations.
294
+ *
295
+ * @returns The translations map.
296
+ */
297
+ createTranslationsMap() {
298
+ return import_translations_map.defaultTranslationsMap;
299
+ }
305
300
  /**
306
301
  * Called during {@link onload} to wire plugin-specific child components.
307
302
  *
@@ -331,4 +326,4 @@ async function showErrorAndDisablePlugin(plugin, message) {
331
326
  reloadPlugin,
332
327
  showErrorAndDisablePlugin
333
328
  });
334
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3BsdWdpbi9wbHVnaW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBCYXNlIGNsYXNzIGZvciBPYnNpZGlhbiBwbHVnaW5zIHVzaW5nIGEgY29tcG9uZW50LWJhc2VkIGFyY2hpdGVjdHVyZS5cbiAqXG4gKiBQbHVnaW5CYXNlIHJlZ2lzdGVycyB1bml2ZXJzYWwgY29tcG9uZW50cyAoY29udGV4dCwgaTE4biwgZXJyb3IgaGFuZGxpbmcsIGFib3J0IHNpZ25hbCwgbGlmZWN5Y2xlIGV2ZW50cywgZGVidWcpLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQ29tcG9uZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBQcm9taXNhYmxlIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHtcbiAgTm90aWNlLFxuICBQbHVnaW4gYXMgT2JzaWRpYW5QbHVnaW5cbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7XG4gIFBsdWdpbkV2ZW50TWFwLFxuICBQbHVnaW5FdmVudFNvdXJjZVxufSBmcm9tICcuL3BsdWdpbi1ldmVudC1zb3VyY2UudHMnO1xuXG5pbXBvcnQgeyBtaXhpbkFzeW5jRXZlbnRzIH0gZnJvbSAnLi4vLi4vYXN5bmMtZXZlbnRzLnRzJztcbmltcG9ydCB7IHByaW50RXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvci50cyc7XG5pbXBvcnQgeyBub29wQXN5bmMgfSBmcm9tICcuLi8uLi9mdW5jdGlvbi50cyc7XG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJy4uLy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7IEFib3J0U2lnbmFsQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9hYm9ydC1zaWduYWwtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IEFzeW5jRXJyb3JIYW5kbGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9hc3luYy1lcnJvci1oYW5kbGVyLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFeCB9IGZyb20gJy4uL2NvbXBvbmVudHMvY29tcG9uZW50LWV4LnRzJztcbmltcG9ydCB7IENvbnNvbGVEZWJ1Z0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvY29uc29sZS1kZWJ1Zy1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgSTE4bkNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvaTE4bi1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgUGx1Z2luQ29udGV4dENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvcGx1Z2luLWNvbnRleHQtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IFBsdWdpbk5vdGljZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvcGx1Z2luLW5vdGljZS1jb21wb25lbnQudHMnO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIE9ic2lkaWFuIHBsdWdpbnMgd2l0aCBhIGNvbXBvbmVudC1iYXNlZCBhcmNoaXRlY3R1cmUuXG4gKlxuICogUmVnaXN0ZXJzIHVuaXZlcnNhbCBjb21wb25lbnRzIGF1dG9tYXRpY2FsbHkuIFN1YmNsYXNzZXMgYWRkIG9yIHJlcGxhY2UgY29tcG9uZW50c1xuICogdmlhIHtAbGluayByZW1vdmVDaGlsZH0gLyB7QGxpbmsgYWRkQ2hpbGR9LlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGx1Z2luQmFzZSBleHRlbmRzIG1peGluQXN5bmNFdmVudHM8UGx1Z2luRXZlbnRNYXA+KCkoT2JzaWRpYW5QbHVnaW4pIGltcGxlbWVudHMgUGx1Z2luRXZlbnRTb3VyY2Uge1xuICAvKipcbiAgICogR2V0cyBhYm9ydCBzaWduYWwgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcmV0dXJucyBhYm9ydCBzaWduYWwgY29tcG9uZW50LlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBhYm9ydFNpZ25hbENvbXBvbmVudCgpOiBBYm9ydFNpZ25hbENvbXBvbmVudCB7XG4gICAgcmV0dXJuIGVuc3VyZU5vbk51bGxhYmxlKHRoaXMuX2Fib3J0U2lnbmFsQ29tcG9uZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGFib3J0IHNpZ25hbCBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIEFib3J0IHNpZ25hbCBjb21wb25lbnQuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0IGFib3J0U2lnbmFsQ29tcG9uZW50KHZhbHVlOiBBYm9ydFNpZ25hbENvbXBvbmVudCkge1xuICAgIHRoaXMuX2Fib3J0U2lnbmFsQ29tcG9uZW50ID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhc3luYyBlcnJvciBoYW5kbGVyIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHJldHVybnMgYXN5bmMgZXJyb3IgaGFuZGxlciBjb21wb25lbnQuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IGFzeW5jRXJyb3JIYW5kbGVyQ29tcG9uZW50KCk6IEFzeW5jRXJyb3JIYW5kbGVyQ29tcG9uZW50IHtcbiAgICByZXR1cm4gZW5zdXJlTm9uTnVsbGFibGUodGhpcy5fYXN5bmNFcnJvckhhbmRsZXJDb21wb25lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYXN5bmMgZXJyb3IgaGFuZGxlciBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIEFzeW5jIGVycm9yIGhhbmRsZXIgY29tcG9uZW50LlxuICAgKi9cbiAgcHJvdGVjdGVkIHNldCBhc3luY0Vycm9ySGFuZGxlckNvbXBvbmVudCh2YWx1ZTogQXN5bmNFcnJvckhhbmRsZXJDb21wb25lbnQpIHtcbiAgICB0aGlzLl9hc3luY0Vycm9ySGFuZGxlckNvbXBvbmVudCA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgY29uc29sZSBkZWJ1ZyBjb21wb25lbnQuXG4gICAqXG4gICAqIEByZXR1cm5zIGNvbnNvbGUgZGVidWcgY29tcG9uZW50LlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBjb25zb2xlRGVidWdDb21wb25lbnQoKTogQ29uc29sZURlYnVnQ29tcG9uZW50IHtcbiAgICByZXR1cm4gZW5zdXJlTm9uTnVsbGFibGUodGhpcy5fY29uc29sZURlYnVnQ29tcG9uZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGNvbnNvbGUgZGVidWcgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBDb25zb2xlIGRlYnVnIGNvbXBvbmVudC5cbiAgICovXG4gIHByb3RlY3RlZCBzZXQgY29uc29sZURlYnVnQ29tcG9uZW50KHZhbHVlOiBDb25zb2xlRGVidWdDb21wb25lbnQpIHtcbiAgICB0aGlzLl9jb25zb2xlRGVidWdDb21wb25lbnQgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGkxOG4gY29tcG9uZW50LlxuICAgKlxuICAgKiBAcmV0dXJucyBpMThuIGNvbXBvbmVudC5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgaTE4bkNvbXBvbmVudCgpOiBJMThuQ29tcG9uZW50IHtcbiAgICByZXR1cm4gZW5zdXJlTm9uTnVsbGFibGUodGhpcy5faTE4bkNvbXBvbmVudCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBpMThuIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gSTE4biBjb21wb25lbnQuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0IGkxOG5Db21wb25lbnQodmFsdWU6IEkxOG5Db21wb25lbnQpIHtcbiAgICB0aGlzLl9pMThuQ29tcG9uZW50ID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBwbHVnaW4gY29udGV4dCBjb21wb25lbnQgKHBsdWdpbiBJRCwgZGVidWcgY29udHJvbGxlciwgbGlicmFyeSBzdHlsZXMpLlxuICAgKlxuICAgKiBAcmV0dXJucyBwbHVnaW4gY29udGV4dCBjb21wb25lbnQuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IHBsdWdpbkNvbnRleHRDb21wb25lbnQoKTogUGx1Z2luQ29udGV4dENvbXBvbmVudCB7XG4gICAgcmV0dXJuIGVuc3VyZU5vbk51bGxhYmxlKHRoaXMuX3BsdWdpbkNvbnRleHRDb21wb25lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgcGx1Z2luIGNvbnRleHQgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBQbHVnaW4gY29udGV4dCBjb21wb25lbnQuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0IHBsdWdpbkNvbnRleHRDb21wb25lbnQodmFsdWU6IFBsdWdpbkNvbnRleHRDb21wb25lbnQpIHtcbiAgICB0aGlzLl9wbHVnaW5Db250ZXh0Q29tcG9uZW50ID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBwbHVnaW4gbm90aWNlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHJldHVybnMgcGx1Z2luIG5vdGljZSBjb21wb25lbnQuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IHBsdWdpbk5vdGljZUNvbXBvbmVudCgpOiBQbHVnaW5Ob3RpY2VDb21wb25lbnQge1xuICAgIHJldHVybiBlbnN1cmVOb25OdWxsYWJsZSh0aGlzLl9wbHVnaW5Ob3RpY2VDb21wb25lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgcGx1Z2luIG5vdGljZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFBsdWdpbiBub3RpY2UgY29tcG9uZW50LlxuICAgKi9cbiAgcHJvdGVjdGVkIHNldCBwbHVnaW5Ob3RpY2VDb21wb25lbnQodmFsdWU6IFBsdWdpbk5vdGljZUNvbXBvbmVudCkge1xuICAgIHRoaXMuX3BsdWdpbk5vdGljZUNvbXBvbmVudCA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWJvcnRTaWduYWxDb21wb25lbnQ/OiBBYm9ydFNpZ25hbENvbXBvbmVudDtcblxuICBwcml2YXRlIF9hc3luY0Vycm9ySGFuZGxlckNvbXBvbmVudD86IEFzeW5jRXJyb3JIYW5kbGVyQ29tcG9uZW50O1xuXG4gIHByaXZhdGUgX2NvbnNvbGVEZWJ1Z0NvbXBvbmVudD86IENvbnNvbGVEZWJ1Z0NvbXBvbmVudDtcblxuICBwcml2YXRlIF9pMThuQ29tcG9uZW50PzogSTE4bkNvbXBvbmVudDtcblxuICBwcml2YXRlIF9wbHVnaW5Db250ZXh0Q29tcG9uZW50PzogUGx1Z2luQ29udGV4dENvbXBvbmVudDtcblxuICBwcml2YXRlIF9wbHVnaW5Ob3RpY2VDb21wb25lbnQ/OiBQbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSB3cmFwcGVyQ29tcG9uZW50ID0gbmV3IENvbXBvbmVudEV4KCk7XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjaGlsZCBjb21wb25lbnQuXG4gICAqXG4gICAqIFRoZSBjaGlsZCBpcyBhZGRlZCB0byBhbiBpbnRlcm5hbCB3cmFwcGVyIGNvbXBvbmVudCBzbyB0aGF0LCBkdXJpbmcge0BsaW5rIG9ubG9hZEltcGx9LFxuICAgKiBjaGlsZHJlbiBhcmUgcXVldWVkIGFuZCB0aGVuIGxvYWRlZCBzZXF1ZW50aWFsbHkgKGNoaWxkcmVuLWZpcnN0KSB3aGVuIHRoZSBwbHVnaW4gbG9hZHMuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVENvbXBvbmVudCAtIFRoZSB0eXBlIG9mIGNvbXBvbmVudCB0byBhZGQuXG4gICAqIEBwYXJhbSBjb21wb25lbnQgLSBUaGUgY29tcG9uZW50IGluc3RhbmNlIHRvIGFkZC5cbiAgICogQHJldHVybnMgVGhlIGFkZGVkIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBhZGRDaGlsZDxUQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50Pihjb21wb25lbnQ6IFRDb21wb25lbnQpOiBUQ29tcG9uZW50IHtcbiAgICByZXR1cm4gdGhpcy53cmFwcGVyQ29tcG9uZW50LmFkZENoaWxkKGNvbXBvbmVudCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIGV4dGVybmFsIHNldHRpbmdzIGNoYW5nZS5cbiAgICpcbiAgICogT3ZlcnJpZGUgaW4gc3ViY2xhc3MgaWYgbmVlZGVkLiBNYWtlIHN1cmUgdG8gY2FsbCBgYXdhaXQgc3VwZXIub25FeHRlcm5hbFNldHRpbmdzQ2hhbmdlKClgIGZpcnN0LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIG9uRXh0ZXJuYWxTZXR0aW5nc0NoYW5nZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBzdXBlci5vbkV4dGVybmFsU2V0dGluZ3NDaGFuZ2U/LigpO1xuICAgIGF3YWl0IHRoaXMudHJpZ2dlckFzeW5jKCdleHRlcm5hbFNldHRpbmdzQ2hhbmdlJyk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHBsdWdpbiBpcyBsb2FkZWQuXG4gICAqXG4gICAqIE9yY2hlc3RyYXRlcyBsb2FkaW5nOiByZWdpc3RlcnMgdGhlIHVuaXZlcnNhbCBjb21wb25lbnRzLCBsZXRzIHRoZSBzdWJjbGFzcyB3aXJlIGl0cyBvd25cbiAgICogY29tcG9uZW50cyB2aWEge0BsaW5rIG9ubG9hZEltcGx9LCB0aGVuIGxvYWRzIGFsbCBvZiB0aGVtIHNlcXVlbnRpYWxseSAoY2hpbGRyZW4tZmlyc3QpLlxuICAgKlxuICAgKiBEbyBOT1Qgb3ZlcnJpZGUgdGhpcyBtZXRob2QuIE92ZXJyaWRlIHtAbGluayBvbmxvYWRJbXBsfSBpbnN0ZWFkLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIG9ubG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnBsdWdpbkNvbnRleHRDb21wb25lbnQgPSB0aGlzLmFkZENoaWxkKFxuICAgICAgbmV3IFBsdWdpbkNvbnRleHRDb21wb25lbnQoe1xuICAgICAgICBhcHA6IHRoaXMuYXBwLFxuICAgICAgICBwbHVnaW5JZDogdGhpcy5tYW5pZmVzdC5pZFxuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuaTE4bkNvbXBvbmVudCA9IHRoaXMuYWRkQ2hpbGQobmV3IEkxOG5Db21wb25lbnQoKSk7XG4gICAgdGhpcy5wbHVnaW5Ob3RpY2VDb21wb25lbnQgPSB0aGlzLmFkZENoaWxkKG5ldyBQbHVnaW5Ob3RpY2VDb21wb25lbnQodGhpcy5tYW5pZmVzdC5uYW1lKSk7XG4gICAgdGhpcy5hc3luY0Vycm9ySGFuZGxlckNvbXBvbmVudCA9IHRoaXMuYWRkQ2hpbGQobmV3IEFzeW5jRXJyb3JIYW5kbGVyQ29tcG9uZW50KHRoaXMucGx1Z2luTm90aWNlQ29tcG9uZW50KSk7XG4gICAgdGhpcy5hYm9ydFNpZ25hbENvbXBvbmVudCA9IHRoaXMuYWRkQ2hpbGQobmV3IEFib3J0U2lnbmFsQ29tcG9uZW50KHRoaXMubWFuaWZlc3QuaWQpKTtcbiAgICB0aGlzLmNvbnNvbGVEZWJ1Z0NvbXBvbmVudCA9IHRoaXMuYWRkQ2hpbGQobmV3IENvbnNvbGVEZWJ1Z0NvbXBvbmVudCh0aGlzLm1hbmlmZXN0LmlkKSk7XG5cbiAgICBhd2FpdCB0aGlzLm9ubG9hZEltcGwoKTtcblxuICAgIC8vIEFkZCB0aGUgd3JhcHBlciB0byB0aGUgbmF0aXZlIHBsdWdpbiBvbmx5IG5vdywgYWZ0ZXIgYWxsIGNoaWxkcmVuIGFyZSBxdWV1ZWQuXG4gICAgLy8gVGhlIHBsdWdpbiBpcyBhbHJlYWR5IGxvYWRlZCwgc28gdGhpcyBsb2FkcyB0aGUgd3JhcHBlcidzIGNoaWxkcmVuIHNlcXVlbnRpYWxseSAoY2hpbGRyZW4tZmlyc3QpLlxuICAgIC8vIEl0IGFsc28gcmVnaXN0ZXJzIHRoZSB3cmFwcGVyIGZvciBhdXRvbWF0aWMgdGVhcmRvd24gb24gcGx1Z2luIHVubG9hZC5cbiAgICBzdXBlci5hZGRDaGlsZCh0aGlzLndyYXBwZXJDb21wb25lbnQpO1xuICAgIGF3YWl0IHRoaXMud3JhcHBlckNvbXBvbmVudC5sb2FkV2l0aFByb21pc2VzKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIGNoaWxkIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBUQ29tcG9uZW50IC0gVGhlIHR5cGUgb2YgY29tcG9uZW50IHRvIHJlbW92ZS5cbiAgICogQHBhcmFtIGNvbXBvbmVudCAtIFRoZSBjb21wb25lbnQgaW5zdGFuY2UgdG8gcmVtb3ZlLlxuICAgKiBAcmV0dXJucyBUaGUgcmVtb3ZlZCBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgcmVtb3ZlQ2hpbGQ8VENvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudD4oY29tcG9uZW50OiBUQ29tcG9uZW50KTogVENvbXBvbmVudCB7XG4gICAgcmV0dXJuIHRoaXMud3JhcHBlckNvbXBvbmVudC5yZW1vdmVDaGlsZChjb21wb25lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBkdXJpbmcge0BsaW5rIG9ubG9hZH0gdG8gd2lyZSBwbHVnaW4tc3BlY2lmaWMgY2hpbGQgY29tcG9uZW50cy5cbiAgICpcbiAgICogT3ZlcnJpZGUgaW4gc3ViY2xhc3MgdG8gYWRkIGNoaWxkIGNvbXBvbmVudHMgdmlhIHtAbGluayBhZGRDaGlsZH0uIFRoZSB1bml2ZXJzYWwgY29tcG9uZW50cyBhcmVcbiAgICogYXZhaWxhYmxlIGhlcmUuIENoaWxkcmVuIGFyZSBsb2FkZWQgc2VxdWVudGlhbGx5IGluIHRoZSBvcmRlciB0aGV5IGFyZSBhZGRlZCAoY2hpbGRyZW4tZmlyc3QpLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHN1YmNsYXNzIGxvYWQgbG9naWMgaXMgY29tcGxldGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgb25sb2FkSW1wbCgpOiBQcm9taXNhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gbm9vcEFzeW5jKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZWxvYWRzIHRoZSBzcGVjaWZpZWQgcGx1Z2luIGJ5IGRpc2FibGluZyBhbmQgdGhlbiByZS1lbmFibGluZyBpdC5cbiAqXG4gKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbiB0byByZWxvYWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHBsdWdpbiBpcyByZWxvYWRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbG9hZFBsdWdpbihwbHVnaW46IE9ic2lkaWFuUGx1Z2luKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHBsdWdpbnMgPSBwbHVnaW4uYXBwLnBsdWdpbnM7XG4gIGNvbnN0IHBsdWdpbklkID0gcGx1Z2luLm1hbmlmZXN0LmlkO1xuICBhd2FpdCBwbHVnaW5zLmRpc2FibGVQbHVnaW4ocGx1Z2luSWQpO1xuICBhd2FpdCBwbHVnaW5zLmVuYWJsZVBsdWdpbihwbHVnaW5JZCk7XG59XG5cbi8qKlxuICogRGlzcGxheXMgYW4gZXJyb3IgbWVzc2FnZSBhcyBhIG5vdGljZSwgbG9ncyBpdCB0byB0aGUgY29uc29sZSwgYW5kIGRpc2FibGVzIHRoZSBzcGVjaWZpZWQgcGx1Z2luLlxuICpcbiAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luIHRvIGRpc2FibGUuXG4gKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBlcnJvciBtZXNzYWdlIHRvIGRpc3BsYXkgYW5kIGxvZy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcGx1Z2luIGlzIGRpc2FibGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2hvd0Vycm9yQW5kRGlzYWJsZVBsdWdpbihwbHVnaW46IE9ic2lkaWFuUGx1Z2luLCBtZXNzYWdlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgbmV3IE5vdGljZShtZXNzYWdlKTtcbiAgcHJpbnRFcnJvcihuZXcgRXJyb3IobWVzc2FnZSkpO1xuICBhd2FpdCBwbHVnaW4uYXBwLnBsdWdpbnMuZGlzYWJsZVBsdWdpbihwbHVnaW4ubWFuaWZlc3QuaWQpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjog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
329
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL3BsdWdpbi9wbHVnaW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBCYXNlIGNsYXNzIGZvciBPYnNpZGlhbiBwbHVnaW5zIHVzaW5nIGEgY29tcG9uZW50LWJhc2VkIGFyY2hpdGVjdHVyZS5cbiAqXG4gKiBQbHVnaW5CYXNlIHJlZ2lzdGVycyB1bml2ZXJzYWwgY29tcG9uZW50cyAoY29udGV4dCwgaTE4biwgZXJyb3IgaGFuZGxpbmcsIGFib3J0IHNpZ25hbCwgbGlmZWN5Y2xlIGV2ZW50cywgZGVidWcpLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQ29tcG9uZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBQcm9taXNhYmxlIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHtcbiAgTm90aWNlLFxuICBQbHVnaW4gYXMgT2JzaWRpYW5QbHVnaW5cbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFRyYW5zbGF0aW9uc01hcCB9IGZyb20gJy4uL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIFBsdWdpbkV2ZW50TWFwLFxuICBQbHVnaW5FdmVudFNvdXJjZVxufSBmcm9tICcuL3BsdWdpbi1ldmVudC1zb3VyY2UudHMnO1xuXG5pbXBvcnQgeyBtaXhpbkFzeW5jRXZlbnRzIH0gZnJvbSAnLi4vLi4vYXN5bmMtZXZlbnRzLnRzJztcbmltcG9ydCB7IHByaW50RXJyb3IgfSBmcm9tICcuLi8uLi9lcnJvci50cyc7XG5pbXBvcnQgeyBub29wQXN5bmMgfSBmcm9tICcuLi8uLi9mdW5jdGlvbi50cyc7XG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJy4uLy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7IEFib3J0U2lnbmFsQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9hYm9ydC1zaWduYWwtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IEFzeW5jRXJyb3JIYW5kbGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9hc3luYy1lcnJvci1oYW5kbGVyLWNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFeCB9IGZyb20gJy4uL2NvbXBvbmVudHMvY29tcG9uZW50LWV4LnRzJztcbmltcG9ydCB7IENvbnNvbGVEZWJ1Z0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvY29uc29sZS1kZWJ1Zy1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgUGx1Z2luQ29udGV4dENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvcGx1Z2luLWNvbnRleHQtY29tcG9uZW50LnRzJztcbmltcG9ydCB7IFBsdWdpbk5vdGljZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvcGx1Z2luLW5vdGljZS1jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgaW5pdEkxOE4gfSBmcm9tICcuLi9pMThuL2kxOG4udHMnO1xuaW1wb3J0IHsgZGVmYXVsdFRyYW5zbGF0aW9uc01hcCB9IGZyb20gJy4uL2kxOG4vbG9jYWxlcy90cmFuc2xhdGlvbnMtbWFwLnRzJztcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBjcmVhdGluZyBPYnNpZGlhbiBwbHVnaW5zIHdpdGggYSBjb21wb25lbnQtYmFzZWQgYXJjaGl0ZWN0dXJlLlxuICpcbiAqIFJlZ2lzdGVycyB1bml2ZXJzYWwgY29tcG9uZW50cyBhdXRvbWF0aWNhbGx5LiBTdWJjbGFzc2VzIGFkZCBvciByZXBsYWNlIGNvbXBvbmVudHNcbiAqIHZpYSB7QGxpbmsgcmVtb3ZlQ2hpbGR9IC8ge0BsaW5rIGFkZENoaWxkfS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBsdWdpbkJhc2UgZXh0ZW5kcyBtaXhpbkFzeW5jRXZlbnRzPFBsdWdpbkV2ZW50TWFwPigpKE9ic2lkaWFuUGx1Z2luKSBpbXBsZW1lbnRzIFBsdWdpbkV2ZW50U291cmNlIHtcbiAgLyoqXG4gICAqIEdldHMgYWJvcnQgc2lnbmFsIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHJldHVybnMgYWJvcnQgc2lnbmFsIGNvbXBvbmVudC5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgYWJvcnRTaWduYWxDb21wb25lbnQoKTogQWJvcnRTaWduYWxDb21wb25lbnQge1xuICAgIHJldHVybiBlbnN1cmVOb25OdWxsYWJsZSh0aGlzLl9hYm9ydFNpZ25hbENvbXBvbmVudCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBhYm9ydCBzaWduYWwgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBBYm9ydCBzaWduYWwgY29tcG9uZW50LlxuICAgKi9cbiAgcHJvdGVjdGVkIHNldCBhYm9ydFNpZ25hbENvbXBvbmVudCh2YWx1ZTogQWJvcnRTaWduYWxDb21wb25lbnQpIHtcbiAgICB0aGlzLl9hYm9ydFNpZ25hbENvbXBvbmVudCA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYXN5bmMgZXJyb3IgaGFuZGxlciBjb21wb25lbnQuXG4gICAqXG4gICAqIEByZXR1cm5zIGFzeW5jIGVycm9yIGhhbmRsZXIgY29tcG9uZW50LlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBhc3luY0Vycm9ySGFuZGxlckNvbXBvbmVudCgpOiBBc3luY0Vycm9ySGFuZGxlckNvbXBvbmVudCB7XG4gICAgcmV0dXJuIGVuc3VyZU5vbk51bGxhYmxlKHRoaXMuX2FzeW5jRXJyb3JIYW5kbGVyQ29tcG9uZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGFzeW5jIGVycm9yIGhhbmRsZXIgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBBc3luYyBlcnJvciBoYW5kbGVyIGNvbXBvbmVudC5cbiAgICovXG4gIHByb3RlY3RlZCBzZXQgYXN5bmNFcnJvckhhbmRsZXJDb21wb25lbnQodmFsdWU6IEFzeW5jRXJyb3JIYW5kbGVyQ29tcG9uZW50KSB7XG4gICAgdGhpcy5fYXN5bmNFcnJvckhhbmRsZXJDb21wb25lbnQgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGNvbnNvbGUgZGVidWcgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcmV0dXJucyBjb25zb2xlIGRlYnVnIGNvbXBvbmVudC5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgY29uc29sZURlYnVnQ29tcG9uZW50KCk6IENvbnNvbGVEZWJ1Z0NvbXBvbmVudCB7XG4gICAgcmV0dXJuIGVuc3VyZU5vbk51bGxhYmxlKHRoaXMuX2NvbnNvbGVEZWJ1Z0NvbXBvbmVudCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBjb25zb2xlIGRlYnVnIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gQ29uc29sZSBkZWJ1ZyBjb21wb25lbnQuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0IGNvbnNvbGVEZWJ1Z0NvbXBvbmVudCh2YWx1ZTogQ29uc29sZURlYnVnQ29tcG9uZW50KSB7XG4gICAgdGhpcy5fY29uc29sZURlYnVnQ29tcG9uZW50ID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBwbHVnaW4gY29udGV4dCBjb21wb25lbnQgKHBsdWdpbiBJRCwgZGVidWcgY29udHJvbGxlciwgbGlicmFyeSBzdHlsZXMpLlxuICAgKlxuICAgKiBAcmV0dXJucyBwbHVnaW4gY29udGV4dCBjb21wb25lbnQuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IHBsdWdpbkNvbnRleHRDb21wb25lbnQoKTogUGx1Z2luQ29udGV4dENvbXBvbmVudCB7XG4gICAgcmV0dXJuIGVuc3VyZU5vbk51bGxhYmxlKHRoaXMuX3BsdWdpbkNvbnRleHRDb21wb25lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgcGx1Z2luIGNvbnRleHQgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBQbHVnaW4gY29udGV4dCBjb21wb25lbnQuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0IHBsdWdpbkNvbnRleHRDb21wb25lbnQodmFsdWU6IFBsdWdpbkNvbnRleHRDb21wb25lbnQpIHtcbiAgICB0aGlzLl9wbHVnaW5Db250ZXh0Q29tcG9uZW50ID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBwbHVnaW4gbm90aWNlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHJldHVybnMgcGx1Z2luIG5vdGljZSBjb21wb25lbnQuXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IHBsdWdpbk5vdGljZUNvbXBvbmVudCgpOiBQbHVnaW5Ob3RpY2VDb21wb25lbnQge1xuICAgIHJldHVybiBlbnN1cmVOb25OdWxsYWJsZSh0aGlzLl9wbHVnaW5Ob3RpY2VDb21wb25lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgcGx1Z2luIG5vdGljZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFBsdWdpbiBub3RpY2UgY29tcG9uZW50LlxuICAgKi9cbiAgcHJvdGVjdGVkIHNldCBwbHVnaW5Ob3RpY2VDb21wb25lbnQodmFsdWU6IFBsdWdpbk5vdGljZUNvbXBvbmVudCkge1xuICAgIHRoaXMuX3BsdWdpbk5vdGljZUNvbXBvbmVudCA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWJvcnRTaWduYWxDb21wb25lbnQ/OiBBYm9ydFNpZ25hbENvbXBvbmVudDtcblxuICBwcml2YXRlIF9hc3luY0Vycm9ySGFuZGxlckNvbXBvbmVudD86IEFzeW5jRXJyb3JIYW5kbGVyQ29tcG9uZW50O1xuXG4gIHByaXZhdGUgX2NvbnNvbGVEZWJ1Z0NvbXBvbmVudD86IENvbnNvbGVEZWJ1Z0NvbXBvbmVudDtcblxuICBwcml2YXRlIF9wbHVnaW5Db250ZXh0Q29tcG9uZW50PzogUGx1Z2luQ29udGV4dENvbXBvbmVudDtcblxuICBwcml2YXRlIF9wbHVnaW5Ob3RpY2VDb21wb25lbnQ/OiBQbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSB3cmFwcGVyQ29tcG9uZW50ID0gbmV3IENvbXBvbmVudEV4KCk7XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjaGlsZCBjb21wb25lbnQuXG4gICAqXG4gICAqIFRoZSBjaGlsZCBpcyBhZGRlZCB0byBhbiBpbnRlcm5hbCB3cmFwcGVyIGNvbXBvbmVudCBzbyB0aGF0LCBkdXJpbmcge0BsaW5rIG9ubG9hZEltcGx9LFxuICAgKiBjaGlsZHJlbiBhcmUgcXVldWVkIGFuZCB0aGVuIGxvYWRlZCBzZXF1ZW50aWFsbHkgKGNoaWxkcmVuLWZpcnN0KSB3aGVuIHRoZSBwbHVnaW4gbG9hZHMuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVENvbXBvbmVudCAtIFRoZSB0eXBlIG9mIGNvbXBvbmVudCB0byBhZGQuXG4gICAqIEBwYXJhbSBjb21wb25lbnQgLSBUaGUgY29tcG9uZW50IGluc3RhbmNlIHRvIGFkZC5cbiAgICogQHJldHVybnMgVGhlIGFkZGVkIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBhZGRDaGlsZDxUQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50Pihjb21wb25lbnQ6IFRDb21wb25lbnQpOiBUQ29tcG9uZW50IHtcbiAgICByZXR1cm4gdGhpcy53cmFwcGVyQ29tcG9uZW50LmFkZENoaWxkKGNvbXBvbmVudCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIGV4dGVybmFsIHNldHRpbmdzIGNoYW5nZS5cbiAgICpcbiAgICogT3ZlcnJpZGUgaW4gc3ViY2xhc3MgaWYgbmVlZGVkLiBNYWtlIHN1cmUgdG8gY2FsbCBgYXdhaXQgc3VwZXIub25FeHRlcm5hbFNldHRpbmdzQ2hhbmdlKClgIGZpcnN0LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIG9uRXh0ZXJuYWxTZXR0aW5nc0NoYW5nZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBzdXBlci5vbkV4dGVybmFsU2V0dGluZ3NDaGFuZ2U/LigpO1xuICAgIGF3YWl0IHRoaXMudHJpZ2dlckFzeW5jKCdleHRlcm5hbFNldHRpbmdzQ2hhbmdlJyk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gdGhlIHBsdWdpbiBpcyBsb2FkZWQuXG4gICAqXG4gICAqIE9yY2hlc3RyYXRlcyBsb2FkaW5nOiByZWdpc3RlcnMgdGhlIHVuaXZlcnNhbCBjb21wb25lbnRzLCBsZXRzIHRoZSBzdWJjbGFzcyB3aXJlIGl0cyBvd25cbiAgICogY29tcG9uZW50cyB2aWEge0BsaW5rIG9ubG9hZEltcGx9LCB0aGVuIGxvYWRzIGFsbCBvZiB0aGVtIHNlcXVlbnRpYWxseSAoY2hpbGRyZW4tZmlyc3QpLlxuICAgKlxuICAgKiBEbyBOT1Qgb3ZlcnJpZGUgdGhpcyBtZXRob2QuIE92ZXJyaWRlIHtAbGluayBvbmxvYWRJbXBsfSBpbnN0ZWFkLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIG9ubG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBpbml0STE4Tih0aGlzLmNyZWF0ZVRyYW5zbGF0aW9uc01hcCgpKTtcbiAgICB0aGlzLnBsdWdpbkNvbnRleHRDb21wb25lbnQgPSB0aGlzLmFkZENoaWxkKFxuICAgICAgbmV3IFBsdWdpbkNvbnRleHRDb21wb25lbnQoe1xuICAgICAgICBhcHA6IHRoaXMuYXBwLFxuICAgICAgICBwbHVnaW5JZDogdGhpcy5tYW5pZmVzdC5pZFxuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMucGx1Z2luTm90aWNlQ29tcG9uZW50ID0gdGhpcy5hZGRDaGlsZChuZXcgUGx1Z2luTm90aWNlQ29tcG9uZW50KHRoaXMubWFuaWZlc3QubmFtZSkpO1xuICAgIHRoaXMuYXN5bmNFcnJvckhhbmRsZXJDb21wb25lbnQgPSB0aGlzLmFkZENoaWxkKG5ldyBBc3luY0Vycm9ySGFuZGxlckNvbXBvbmVudCh0aGlzLnBsdWdpbk5vdGljZUNvbXBvbmVudCkpO1xuICAgIHRoaXMuYWJvcnRTaWduYWxDb21wb25lbnQgPSB0aGlzLmFkZENoaWxkKG5ldyBBYm9ydFNpZ25hbENvbXBvbmVudCh0aGlzLm1hbmlmZXN0LmlkKSk7XG4gICAgdGhpcy5jb25zb2xlRGVidWdDb21wb25lbnQgPSB0aGlzLmFkZENoaWxkKG5ldyBDb25zb2xlRGVidWdDb21wb25lbnQodGhpcy5tYW5pZmVzdC5pZCkpO1xuXG4gICAgYXdhaXQgdGhpcy5vbmxvYWRJbXBsKCk7XG5cbiAgICAvLyBBZGQgdGhlIHdyYXBwZXIgdG8gdGhlIG5hdGl2ZSBwbHVnaW4gb25seSBub3csIGFmdGVyIGFsbCBjaGlsZHJlbiBhcmUgcXVldWVkLlxuICAgIC8vIFRoZSBwbHVnaW4gaXMgYWxyZWFkeSBsb2FkZWQsIHNvIHRoaXMgbG9hZHMgdGhlIHdyYXBwZXIncyBjaGlsZHJlbiBzZXF1ZW50aWFsbHkgKGNoaWxkcmVuLWZpcnN0KS5cbiAgICAvLyBJdCBhbHNvIHJlZ2lzdGVycyB0aGUgd3JhcHBlciBmb3IgYXV0b21hdGljIHRlYXJkb3duIG9uIHBsdWdpbiB1bmxvYWQuXG4gICAgc3VwZXIuYWRkQ2hpbGQodGhpcy53cmFwcGVyQ29tcG9uZW50KTtcbiAgICBhd2FpdCB0aGlzLndyYXBwZXJDb21wb25lbnQubG9hZFdpdGhQcm9taXNlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBjaGlsZCBjb21wb25lbnQuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVENvbXBvbmVudCAtIFRoZSB0eXBlIG9mIGNvbXBvbmVudCB0byByZW1vdmUuXG4gICAqIEBwYXJhbSBjb21wb25lbnQgLSBUaGUgY29tcG9uZW50IGluc3RhbmNlIHRvIHJlbW92ZS5cbiAgICogQHJldHVybnMgVGhlIHJlbW92ZWQgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHJlbW92ZUNoaWxkPFRDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnQ+KGNvbXBvbmVudDogVENvbXBvbmVudCk6IFRDb21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLndyYXBwZXJDb21wb25lbnQucmVtb3ZlQ2hpbGQoY29tcG9uZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm92aWRlcyB0aGUgdHJhbnNsYXRpb25zIG1hcCB1c2VkIHRvIGluaXRpYWxpemUgaTE4biBkdXJpbmcge0BsaW5rIG9ubG9hZH0uXG4gICAqXG4gICAqIE92ZXJyaWRlIGluIHN1YmNsYXNzIHRvIHN1cHBseSBwbHVnaW4tc3BlY2lmaWMgdHJhbnNsYXRpb25zLiBUaGUgZGVmYXVsdCByZXR1cm5zIHRoZSBidWlsdC1pblxuICAgKiBgb2JzaWRpYW4tZGV2LXV0aWxzYCB0cmFuc2xhdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSB0cmFuc2xhdGlvbnMgbWFwLlxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZVRyYW5zbGF0aW9uc01hcCgpOiBUcmFuc2xhdGlvbnNNYXAge1xuICAgIHJldHVybiBkZWZhdWx0VHJhbnNsYXRpb25zTWFwO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBkdXJpbmcge0BsaW5rIG9ubG9hZH0gdG8gd2lyZSBwbHVnaW4tc3BlY2lmaWMgY2hpbGQgY29tcG9uZW50cy5cbiAgICpcbiAgICogT3ZlcnJpZGUgaW4gc3ViY2xhc3MgdG8gYWRkIGNoaWxkIGNvbXBvbmVudHMgdmlhIHtAbGluayBhZGRDaGlsZH0uIFRoZSB1bml2ZXJzYWwgY29tcG9uZW50cyBhcmVcbiAgICogYXZhaWxhYmxlIGhlcmUuIENoaWxkcmVuIGFyZSBsb2FkZWQgc2VxdWVudGlhbGx5IGluIHRoZSBvcmRlciB0aGV5IGFyZSBhZGRlZCAoY2hpbGRyZW4tZmlyc3QpLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHN1YmNsYXNzIGxvYWQgbG9naWMgaXMgY29tcGxldGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgb25sb2FkSW1wbCgpOiBQcm9taXNhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gbm9vcEFzeW5jKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZWxvYWRzIHRoZSBzcGVjaWZpZWQgcGx1Z2luIGJ5IGRpc2FibGluZyBhbmQgdGhlbiByZS1lbmFibGluZyBpdC5cbiAqXG4gKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbiB0byByZWxvYWQuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHBsdWdpbiBpcyByZWxvYWRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbG9hZFBsdWdpbihwbHVnaW46IE9ic2lkaWFuUGx1Z2luKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHBsdWdpbnMgPSBwbHVnaW4uYXBwLnBsdWdpbnM7XG4gIGNvbnN0IHBsdWdpbklkID0gcGx1Z2luLm1hbmlmZXN0LmlkO1xuICBhd2FpdCBwbHVnaW5zLmRpc2FibGVQbHVnaW4ocGx1Z2luSWQpO1xuICBhd2FpdCBwbHVnaW5zLmVuYWJsZVBsdWdpbihwbHVnaW5JZCk7XG59XG5cbi8qKlxuICogRGlzcGxheXMgYW4gZXJyb3IgbWVzc2FnZSBhcyBhIG5vdGljZSwgbG9ncyBpdCB0byB0aGUgY29uc29sZSwgYW5kIGRpc2FibGVzIHRoZSBzcGVjaWZpZWQgcGx1Z2luLlxuICpcbiAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luIHRvIGRpc2FibGUuXG4gKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBlcnJvciBtZXNzYWdlIHRvIGRpc3BsYXkgYW5kIGxvZy5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcGx1Z2luIGlzIGRpc2FibGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2hvd0Vycm9yQW5kRGlzYWJsZVBsdWdpbihwbHVnaW46IE9ic2lkaWFuUGx1Z2luLCBtZXNzYWdlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgbmV3IE5vdGljZShtZXNzYWdlKTtcbiAgcHJpbnRFcnJvcihuZXcgRXJyb3IobWVzc2FnZSkpO1xuICBhd2FpdCBwbHVnaW4uYXBwLnBsdWdpbnMuZGlzYWJsZVBsdWdpbihwbHVnaW4ubWFuaWZlc3QuaWQpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVdBLHNCQUdPO0FBUVAsMEJBQWlDO0FBQ2pDLG1CQUEyQjtBQUMzQixzQkFBMEI7QUFDMUIseUJBQWtDO0FBQ2xDLG9DQUFxQztBQUNyQywyQ0FBMkM7QUFDM0MsMEJBQTRCO0FBQzVCLHFDQUFzQztBQUN0QyxzQ0FBdUM7QUFDdkMscUNBQXNDO0FBQ3RDLGtCQUF5QjtBQUN6Qiw4QkFBdUM7QUFRaEMsTUFBZSx1QkFBbUIsc0NBQWlDLEVBQUUsZ0JBQUFBLE1BQWMsRUFBK0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNdkgsSUFBYyx1QkFBNkM7QUFDekQsZUFBTyxzQ0FBa0IsS0FBSyxxQkFBcUI7QUFBQSxFQUNyRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLElBQWMscUJBQXFCLE9BQTZCO0FBQzlELFNBQUssd0JBQXdCO0FBQUEsRUFDL0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxJQUFjLDZCQUF5RDtBQUNyRSxlQUFPLHNDQUFrQixLQUFLLDJCQUEyQjtBQUFBLEVBQzNEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsSUFBYywyQkFBMkIsT0FBbUM7QUFDMUUsU0FBSyw4QkFBOEI7QUFBQSxFQUNyQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLElBQWMsd0JBQStDO0FBQzNELGVBQU8sc0NBQWtCLEtBQUssc0JBQXNCO0FBQUEsRUFDdEQ7QUFBQTtBQUFBO0FBQUE7QUFB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
@@ -9,11 +9,11 @@
9
9
  import type { Component } from 'obsidian';
10
10
  import type { Promisable } from 'type-fest';
11
11
  import { Plugin as ObsidianPlugin } from 'obsidian';
12
+ import type { TranslationsMap } from '../i18n/i18n.cjs';
12
13
  import type { PluginEventMap, PluginEventSource } from './plugin-event-source.cjs';
13
14
  import { AbortSignalComponent } from '../components/abort-signal-component.cjs';
14
15
  import { AsyncErrorHandlerComponent } from '../components/async-error-handler-component.cjs';
15
16
  import { ConsoleDebugComponent } from '../components/console-debug-component.cjs';
16
- import { I18nComponent } from '../components/i18n-component.cjs';
17
17
  import { PluginContextComponent } from '../components/plugin-context-component.cjs';
18
18
  import { PluginNoticeComponent } from '../components/plugin-notice-component.cjs';
19
19
  declare const PluginBase_base: import("type-fest").AbstractConstructor<import("../../async-events.cjs").AsyncEventSource<PluginEventMap> & import("../../async-events.cjs").AsyncEventTrigger<PluginEventMap>> & typeof ObsidianPlugin;
@@ -60,18 +60,6 @@ export declare abstract class PluginBase extends PluginBase_base implements Plug
60
60
  * @param value - Console debug component.
61
61
  */
62
62
  protected set consoleDebugComponent(value: ConsoleDebugComponent);
63
- /**
64
- * Gets i18n component.
65
- *
66
- * @returns i18n component.
67
- */
68
- protected get i18nComponent(): I18nComponent;
69
- /**
70
- * Sets i18n component.
71
- *
72
- * @param value - I18n component.
73
- */
74
- protected set i18nComponent(value: I18nComponent);
75
63
  /**
76
64
  * Gets plugin context component (plugin ID, debug controller, library styles).
77
65
  *
@@ -99,7 +87,6 @@ export declare abstract class PluginBase extends PluginBase_base implements Plug
99
87
  private _abortSignalComponent?;
100
88
  private _asyncErrorHandlerComponent?;
101
89
  private _consoleDebugComponent?;
102
- private _i18nComponent?;
103
90
  private _pluginContextComponent?;
104
91
  private _pluginNoticeComponent?;
105
92
  private readonly wrapperComponent;
@@ -137,6 +124,15 @@ export declare abstract class PluginBase extends PluginBase_base implements Plug
137
124
  * @returns The removed component.
138
125
  */
139
126
  removeChild<TComponent extends Component>(component: TComponent): TComponent;
127
+ /**
128
+ * Provides the translations map used to initialize i18n during {@link onload}.
129
+ *
130
+ * Override in subclass to supply plugin-specific translations. The default returns the built-in
131
+ * `obsidian-dev-utils` translations.
132
+ *
133
+ * @returns The translations map.
134
+ */
135
+ protected createTranslationsMap(): TranslationsMap;
140
136
  /**
141
137
  * Called during {@link onload} to wire plugin-specific child components.
142
138
  *
@@ -87,6 +87,16 @@ interface CreateFunctionParams<TFunction extends GenericFunction> extends Create
87
87
  type MapToArgNames<TArgs extends readonly unknown[]> = {
88
88
  readonly [K in keyof TArgs]: string;
89
89
  };
90
+ /**
91
+ * Clone a function by creating a new function that calls the original function.
92
+ *
93
+ * This is useful for creating a new instance of a function that has the same behavior but is not strictly equal to the original function.
94
+ *
95
+ * @typeParam TFunction - The type of the function to clone.
96
+ * @param fn - The function to clone.
97
+ * @returns A new function that has the same behavior as the original function.
98
+ */
99
+ export declare function cloneFunction<TFunction extends GenericFunction>(fn: TFunction): TFunction;
90
100
  /**
91
101
  * Creates a function from the provided parameters.
92
102
  *
@@ -45,6 +45,12 @@ function omitAsyncReturnType(fn) {
45
45
  }
46
46
  const FUNCTION_EXPRESSION_RE = /^(?:function\b|async\b\s*(?:function\b|\()|\()/;
47
47
  const ASYNC_KEYWORD_RE = /^async\b\s*/;
48
+ function cloneFunction(fn) {
49
+ return clonedFn;
50
+ function clonedFn(...args) {
51
+ return fn.apply(this, args);
52
+ }
53
+ }
48
54
  function createFunction(params) {
49
55
  const argNames = params.argNames ?? [];
50
56
  return new Function(...argNames, params.functionBody);
@@ -55,6 +61,7 @@ function omitReturnType(fn) {
55
61
  };
56
62
  }
57
63
  export {
64
+ cloneFunction,
58
65
  createFunction,
59
66
  getFunctionExpressionString,
60
67
  noop,
@@ -63,4 +70,4 @@ export {
63
70
  omitAsyncReturnType,
64
71
  omitReturnType
65
72
  };
66
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Z1bmN0aW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgYW5kIHR5cGVzIGZvciB3b3JraW5nIHdpdGggZnVuY3Rpb25zLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUHJvbWlzYWJsZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGdlbmVyaWMgYXN5bmMgZnVuY3Rpb24uXG4gKlxuICogQHR5cGVQYXJhbSBBcmdzIC0gVGhlIGFyZ3VtZW50cyBvZiB0aGUgZnVuY3Rpb24uXG4gKiBAdHlwZVBhcmFtIFJldHVybiAtIFRoZSBhd2FpdGVkIHJldHVybiB0eXBlIG9mIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgR2VuZXJpY0FzeW5jRnVuY3Rpb248QXJncyBleHRlbmRzIHVua25vd25bXSA9IG5ldmVyW10sIFJldHVybiA9IHVua25vd24+ID0gR2VuZXJpY0Z1bmN0aW9uPEFyZ3MsIFByb21pc2U8UmV0dXJuPj47XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGdlbmVyaWMgYXN5bmMgdm9pZCBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIEFyZ3MgLSBUaGUgYXJndW1lbnRzIG9mIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgR2VuZXJpY0FzeW5jVm9pZEZ1bmN0aW9uPEFyZ3MgZXh0ZW5kcyB1bmtub3duW10gPSBuZXZlcltdPiA9IEdlbmVyaWNBc3luY0Z1bmN0aW9uPEFyZ3MsIHZvaWQ+O1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBnZW5lcmljIGZ1bmN0aW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gQXJncyAtIFRoZSBhcmd1bWVudHMgb2YgdGhlIGZ1bmN0aW9uLlxuICogQHR5cGVQYXJhbSBSZXR1cm4gLSBUaGUgcmV0dXJuIHR5cGUgb2YgdGhlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgdHlwZSBHZW5lcmljRnVuY3Rpb248QXJncyBleHRlbmRzIHVua25vd25bXSA9IG5ldmVyW10sIFJldHVybiA9IHVua25vd24+ID0gKC4uLmFyZ3M6IEFyZ3MpID0+IFJldHVybjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgZ2VuZXJpYyBwcm9taXNhYmxlIGZ1bmN0aW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gQXJncyAtIFRoZSBhcmd1bWVudHMgb2YgdGhlIGZ1bmN0aW9uLlxuICogQHR5cGVQYXJhbSBSZXR1cm4gLSBUaGUgYXdhaXRlZCByZXR1cm4gdHlwZSBvZiB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCB0eXBlIEdlbmVyaWNQcm9taXNhYmxlRnVuY3Rpb248QXJncyBleHRlbmRzIHVua25vd25bXSA9IG5ldmVyW10sIFJldHVybiA9IHVua25vd24+ID0gR2VuZXJpY0Z1bmN0aW9uPEFyZ3MsIFByb21pc2FibGU8UmV0dXJuPj47XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGdlbmVyaWMgcHJvbWlzYWJsZSB2b2lkIGZ1bmN0aW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gQXJncyAtIFRoZSBhcmd1bWVudHMgb2YgdGhlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgdHlwZSBHZW5lcmljUHJvbWlzYWJsZVZvaWRGdW5jdGlvbjxBcmdzIGV4dGVuZHMgdW5rbm93bltdID0gbmV2ZXJbXT4gPSBHZW5lcmljUHJvbWlzYWJsZUZ1bmN0aW9uPEFyZ3MsIHZvaWQ+O1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBnZW5lcmljIHZvaWQgZnVuY3Rpb24uXG4gKlxuICogQHR5cGVQYXJhbSBBcmdzIC0gVGhlIGFyZ3VtZW50cyBvZiB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCB0eXBlIEdlbmVyaWNWb2lkRnVuY3Rpb248QXJncyBleHRlbmRzIHVua25vd25bXSA9IG5ldmVyW10+ID0gR2VuZXJpY0Z1bmN0aW9uPEFyZ3MsIHZvaWQ+O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgZnVuY3Rpb24gaW50byBhIHN0cmluZyB0aGF0IGlzIGEgdmFsaWQgZnVuY3Rpb24gZXhwcmVzc2lvbi5cbiAqXG4gKiBgRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nKClgIG9uIGEgc2hvcnRoYW5kIG1ldGhvZCBsaWtlIGB7IGZuKCkge30gfWBcbiAqIHJldHVybnMgYFwiZm4oKSB7fVwiYCwgd2hpY2ggaXMgbm90IGEgdmFsaWQgZXhwcmVzc2lvbi5cbiAqIFRoaXMgaGVscGVyIGRldGVjdHMgdGhhdCBmb3JtIGFuZCBwcmVmaXhlcyBpdCB3aXRoIGBmdW5jdGlvbiBgLlxuICpcbiAqIEBwYXJhbSBmbiAtIFRoZSBmdW5jdGlvbiB0byBjb252ZXJ0LlxuICogQHJldHVybnMgQSBzdHJpbmcgdGhhdCBpcyBhIHZhbGlkIGZ1bmN0aW9uIGV4cHJlc3Npb24uXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWZ1bmN0aW9uLXR5cGUgLS0gV2UgbmVlZCB0byB1c2UgYEZ1bmN0aW9uYCB0eXBlLlxuZXhwb3J0IGZ1bmN0aW9uIGdldEZ1bmN0aW9uRXhwcmVzc2lvblN0cmluZyhmbjogRnVuY3Rpb24pOiBzdHJpbmcge1xuICBjb25zdCBmblN0cmluZyA9IGZuLnRvU3RyaW5nKCk7XG5cbiAgaWYgKEZVTkNUSU9OX0VYUFJFU1NJT05fUkUudGVzdChmblN0cmluZykpIHtcbiAgICByZXR1cm4gZm5TdHJpbmc7XG4gIH1cblxuICBjb25zdCBhc3luY01hdGNoID0gQVNZTkNfS0VZV09SRF9SRS5leGVjKGZuU3RyaW5nKTtcbiAgaWYgKGFzeW5jTWF0Y2gpIHtcbiAgICByZXR1cm4gYGFzeW5jIGZ1bmN0aW9uICR7Zm5TdHJpbmcuc2xpY2UoYXN5bmNNYXRjaFswXS5sZW5ndGgpfWA7XG4gIH1cblxuICByZXR1cm4gYGZ1bmN0aW9uICR7Zm5TdHJpbmd9YDtcbn1cblxuLyoqXG4gKiBBIGZ1bmN0aW9uIHRoYXQgZG9lcyBub3RoaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9vcCgpOiB2b2lkIHtcbiAgLy8gRG9lcyBub3RoaW5nLlxufVxuXG4vKipcbiAqIEEgc2luZ2xldG9uIG5vLW9wIHByb21pc2UuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBvYnNpZGlhbi1kZXYtdXRpbHMvcHJlZmVyLW5vb3AtYXN5bmMgLS0gQXZvaWQgY2lyY3VsYXIgcmVmZXJlbmNlLlxuZXhwb3J0IGNvbnN0IG5vb3BBc3luY1NpbmdsZXRvblByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTtcblxuLyoqXG4gKiBBIGZ1bmN0aW9uIHRoYXQgZG9lcyBub3RoaW5nLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9vcEFzeW5jKCk6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbm9vcEFzeW5jU2luZ2xldG9uUHJvbWlzZTtcbn1cblxuLyoqXG4gKiBNYWtlcyBhbiBhc3luYyBmdW5jdGlvbiB0aGF0IGNhbGxzIHRoZSBvcmlnaW5hbCBhc3luYyBmdW5jdGlvbiB3aXRoIHRoZSBwcm92aWRlZCBhcmd1bWVudHMgYW5kIG9taXRzIHRoZSByZXR1cm4gdmFsdWUuXG4gKlxuICogQHR5cGVQYXJhbSBBcmdzIC0gQXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24uXG4gKiBAcGFyYW0gZm4gLSBGdW5jdGlvbiB0byBiZSBjYWxsZWQuXG4gKiBAcmV0dXJucyBBbiBhc3luYyBmdW5jdGlvbiB0aGF0IGNhbGxzIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiB3aXRoIHRoZSBwcm92aWRlZCBhcmd1bWVudHMgYW5kIG9taXRzIHRoZSByZXR1cm4gdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbWl0QXN5bmNSZXR1cm5UeXBlPEFyZ3MgZXh0ZW5kcyB1bmtub3duW10+KGZuOiBHZW5lcmljQXN5bmNGdW5jdGlvbjxBcmdzPik6IEdlbmVyaWNBc3luY1ZvaWRGdW5jdGlvbjxBcmdzPiB7XG4gIHJldHVybiBhc3luYyAoLi4uYXJnczogQXJncykgPT4ge1xuICAgIGF3YWl0IGZuKC4uLmFyZ3MpO1xuICB9O1xufVxuXG4vKipcbiAqIE1hdGNoZXMgc3RyaW5ncyB0aGF0IGFyZSBhbHJlYWR5IHZhbGlkIGZ1bmN0aW9uIGV4cHJlc3Npb25zOlxuICogLSBgZnVuY3Rpb24gLi4uYCAoa2V5d29yZCwgbm90IGlkZW50aWZpZXIgbGlrZSBgZnVuY3Rpb24xYClcbiAqIC0gYChgIChhcnJvdyBmdW5jdGlvbilcbiAqIC0gYGFzeW5jXFxiYCBmb2xsb3dlZCBieSBgZnVuY3Rpb25cXGJgIG9yIGAoYCAoYXN5bmMgZnVuY3Rpb24vYXJyb3cpXG4gKi9cbmNvbnN0IEZVTkNUSU9OX0VYUFJFU1NJT05fUkUgPSAvXig/OmZ1bmN0aW9uXFxifGFzeW5jXFxiXFxzKig/OmZ1bmN0aW9uXFxifFxcKCl8XFwoKS87XG5cbi8qKlxuICogTWF0Y2hlcyB0aGUgYGFzeW5jYCBrZXl3b3JkICh3b3JkIGJvdW5kYXJ5LCBub3QgYGFzeW5jMWApIGZvbGxvd2VkIGJ5IG9wdGlvbmFsIHdoaXRlc3BhY2UuXG4gKiBVc2VkIHRvIHN0cmlwIHRoZSBgYXN5bmNgIHByZWZpeCBmcm9tIGFzeW5jIHNob3J0aGFuZCBtZXRob2RzIGJlZm9yZSByZS1hZGRpbmcgYGFzeW5jIGZ1bmN0aW9uYC5cbiAqL1xuY29uc3QgQVNZTkNfS0VZV09SRF9SRSA9IC9eYXN5bmNcXGJcXHMqLztcblxudHlwZSBBcmdOYW1lc09mPFQgZXh0ZW5kcyBHZW5lcmljRnVuY3Rpb24+ID0gTWFwVG9BcmdOYW1lczxQYXJhbWV0ZXJzPFQ+PjtcblxuaW50ZXJmYWNlIENyZWF0ZUZ1bmN0aW9uQXJndW1lbnRsZXNzUGFyYW1zIHtcbiAgcmVhZG9ubHkgZnVuY3Rpb25Cb2R5OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBDcmVhdGVGdW5jdGlvblBhcmFtczxURnVuY3Rpb24gZXh0ZW5kcyBHZW5lcmljRnVuY3Rpb24+IGV4dGVuZHMgQ3JlYXRlRnVuY3Rpb25Bcmd1bWVudGxlc3NQYXJhbXMge1xuICByZWFkb25seSBhcmdOYW1lczogQXJnTmFtZXNPZjxURnVuY3Rpb24+O1xufVxuXG50eXBlIE1hcFRvQXJnTmFtZXM8VEFyZ3MgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10+ID0ge1xuICByZWFkb25seSBbSyBpbiBrZXlvZiBUQXJnc106IHN0cmluZztcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGZyb20gdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMuXG4gKlxuICogRnVuY3Rpb24gaXMgYXJndW1lbnRsZXNzLCBzbyBgYXJnTmFtZXNgIGlzIG5vdCBuZWVkZWQuXG4gKlxuICogQHR5cGVQYXJhbSBURnVuY3Rpb24gLSBUaGUgdHlwZSBvZiB0aGUgZnVuY3Rpb24gdG8gY3JlYXRlLlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIHRvIGNyZWF0ZSB0aGUgZnVuY3Rpb24gd2l0aC5cbiAqIEByZXR1cm5zIEEgZnVuY3Rpb24gY3JlYXRlZCBmcm9tIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LXR5cGUtcGFyYW1ldGVycyAtLSBXZSBuZWVkIHJldHVybiB0eXBlLlxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZ1bmN0aW9uPFRGdW5jdGlvbiBleHRlbmRzICgpID0+IHVua25vd24+KHBhcmFtczogQ3JlYXRlRnVuY3Rpb25Bcmd1bWVudGxlc3NQYXJhbXMpOiBURnVuY3Rpb247XG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiBmcm9tIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLlxuICpcbiAqIEZ1bmN0aW9uIGhhcyBhcmd1bWVudHMsIHNvIGBhcmdOYW1lc2AgaXMgcmVxdWlyZWQuXG4gKlxuICogQHR5cGVQYXJhbSBURnVuY3Rpb24gLSBUaGUgdHlwZSBvZiB0aGUgZnVuY3Rpb24gdG8gY3JlYXRlLlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIHRvIGNyZWF0ZSB0aGUgZnVuY3Rpb24gd2l0aC5cbiAqIEByZXR1cm5zIEEgZnVuY3Rpb24gY3JlYXRlZCBmcm9tIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRnVuY3Rpb248VEZ1bmN0aW9uIGV4dGVuZHMgR2VuZXJpY0Z1bmN0aW9uPihwYXJhbXM6IENyZWF0ZUZ1bmN0aW9uUGFyYW1zPFRGdW5jdGlvbj4pOiBURnVuY3Rpb247XG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiBmcm9tIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLlxuICpcbiAqIEB0eXBlUGFyYW0gVEZ1bmN0aW9uIC0gVGhlIHR5cGUgb2YgdGhlIGZ1bmN0aW9uIHRvIGNyZWF0ZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgdG8gY3JlYXRlIHRoZSBmdW5jdGlvbiB3aXRoLlxuICogQHJldHVybnMgQSBmdW5jdGlvbiBjcmVhdGVkIGZyb20gdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGdW5jdGlvbjxURnVuY3Rpb24gZXh0ZW5kcyBHZW5lcmljRnVuY3Rpb24+KFxuICBwYXJhbXM6IENyZWF0ZUZ1bmN0aW9uQXJndW1lbnRsZXNzUGFyYW1zICYgUGFydGlhbDxDcmVhdGVGdW5jdGlvblBhcmFtczxURnVuY3Rpb24+PlxuKTogVEZ1bmN0aW9uIHtcbiAgY29uc3QgYXJnTmFtZXMgPSBwYXJhbXMuYXJnTmFtZXMgPz8gW107XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuYywgQHR5cGVzY3JpcHQtZXNsaW50L25vLWltcGxpZWQtZXZhbCAtLSBOZWVkIGZ1bmN0aW9uIGNvbnN0cnVjdG9yXG4gIHJldHVybiBuZXcgRnVuY3Rpb24oLi4uYXJnTmFtZXMsIHBhcmFtcy5mdW5jdGlvbkJvZHkpIGFzIFRGdW5jdGlvbjtcbn1cblxuLyoqXG4gKiBNYWtlcyBhIGZ1bmN0aW9uIHRoYXQgY2FsbHMgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIHdpdGggdGhlIHByb3ZpZGVkIGFyZ3VtZW50cyBhbmQgb21pdHMgdGhlIHJldHVybiB2YWx1ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIEFyZ3MgLSBBcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbi5cbiAqIEBwYXJhbSBmbiAtIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZC5cbiAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCBjYWxscyB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gd2l0aCB0aGUgcHJvdmlkZWQgYXJndW1lbnRzIGFuZCBvbWl0cyB0aGUgcmV0dXJuIHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gb21pdFJldHVyblR5cGU8QXJncyBleHRlbmRzIHVua25vd25bXT4oZm46IEdlbmVyaWNGdW5jdGlvbjxBcmdzPik6IEdlbmVyaWNWb2lkRnVuY3Rpb248QXJncz4ge1xuICByZXR1cm4gKC4uLmFyZ3M6IEFyZ3MpID0+IHtcbiAgICBmbiguLi5hcmdzKTtcbiAgfTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0VPLFNBQVMsNEJBQTRCLElBQXNCO0FBQ2hFLFFBQU0sV0FBVyxHQUFHLFNBQVM7QUFFN0IsTUFBSSx1QkFBdUIsS0FBSyxRQUFRLEdBQUc7QUFDekMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLGFBQWEsaUJBQWlCLEtBQUssUUFBUTtBQUNqRCxNQUFJLFlBQVk7QUFDZCxXQUFPLGtCQUFrQixTQUFTLE1BQU0sV0FBVyxDQUFDLEVBQUUsTUFBTSxDQUFDO0FBQUEsRUFDL0Q7QUFFQSxTQUFPLFlBQVksUUFBUTtBQUM3QjtBQUtPLFNBQVMsT0FBYTtBQUU3QjtBQU1PLE1BQU0sNEJBQTRCLFFBQVEsUUFBUTtBQU9sRCxTQUFTLFlBQTJCO0FBQ3pDLFNBQU87QUFDVDtBQVNPLFNBQVMsb0JBQTRDLElBQWdFO0FBQzFILFNBQU8sVUFBVSxTQUFlO0FBQzlCLFVBQU0sR0FBRyxHQUFHLElBQUk7QUFBQSxFQUNsQjtBQUNGO0FBUUEsTUFBTSx5QkFBeUI7QUFNL0IsTUFBTSxtQkFBbUI7QUE2Q2xCLFNBQVMsZUFDZCxRQUNXO0FBQ1gsUUFBTSxXQUFXLE9BQU8sWUFBWSxDQUFDO0FBRXJDLFNBQU8sSUFBSSxTQUFTLEdBQUcsVUFBVSxPQUFPLFlBQVk7QUFDdEQ7QUFTTyxTQUFTLGVBQXVDLElBQXNEO0FBQzNHLFNBQU8sSUFBSSxTQUFlO0FBQ3hCLE9BQUcsR0FBRyxJQUFJO0FBQUEsRUFDWjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
73
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2Z1bmN0aW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgYW5kIHR5cGVzIGZvciB3b3JraW5nIHdpdGggZnVuY3Rpb25zLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUHJvbWlzYWJsZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGdlbmVyaWMgYXN5bmMgZnVuY3Rpb24uXG4gKlxuICogQHR5cGVQYXJhbSBBcmdzIC0gVGhlIGFyZ3VtZW50cyBvZiB0aGUgZnVuY3Rpb24uXG4gKiBAdHlwZVBhcmFtIFJldHVybiAtIFRoZSBhd2FpdGVkIHJldHVybiB0eXBlIG9mIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgR2VuZXJpY0FzeW5jRnVuY3Rpb248QXJncyBleHRlbmRzIHVua25vd25bXSA9IG5ldmVyW10sIFJldHVybiA9IHVua25vd24+ID0gR2VuZXJpY0Z1bmN0aW9uPEFyZ3MsIFByb21pc2U8UmV0dXJuPj47XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGdlbmVyaWMgYXN5bmMgdm9pZCBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIEFyZ3MgLSBUaGUgYXJndW1lbnRzIG9mIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgR2VuZXJpY0FzeW5jVm9pZEZ1bmN0aW9uPEFyZ3MgZXh0ZW5kcyB1bmtub3duW10gPSBuZXZlcltdPiA9IEdlbmVyaWNBc3luY0Z1bmN0aW9uPEFyZ3MsIHZvaWQ+O1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBnZW5lcmljIGZ1bmN0aW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gQXJncyAtIFRoZSBhcmd1bWVudHMgb2YgdGhlIGZ1bmN0aW9uLlxuICogQHR5cGVQYXJhbSBSZXR1cm4gLSBUaGUgcmV0dXJuIHR5cGUgb2YgdGhlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgdHlwZSBHZW5lcmljRnVuY3Rpb248QXJncyBleHRlbmRzIHVua25vd25bXSA9IG5ldmVyW10sIFJldHVybiA9IHVua25vd24+ID0gKC4uLmFyZ3M6IEFyZ3MpID0+IFJldHVybjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgZ2VuZXJpYyBwcm9taXNhYmxlIGZ1bmN0aW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gQXJncyAtIFRoZSBhcmd1bWVudHMgb2YgdGhlIGZ1bmN0aW9uLlxuICogQHR5cGVQYXJhbSBSZXR1cm4gLSBUaGUgYXdhaXRlZCByZXR1cm4gdHlwZSBvZiB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCB0eXBlIEdlbmVyaWNQcm9taXNhYmxlRnVuY3Rpb248QXJncyBleHRlbmRzIHVua25vd25bXSA9IG5ldmVyW10sIFJldHVybiA9IHVua25vd24+ID0gR2VuZXJpY0Z1bmN0aW9uPEFyZ3MsIFByb21pc2FibGU8UmV0dXJuPj47XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGdlbmVyaWMgcHJvbWlzYWJsZSB2b2lkIGZ1bmN0aW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gQXJncyAtIFRoZSBhcmd1bWVudHMgb2YgdGhlIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgdHlwZSBHZW5lcmljUHJvbWlzYWJsZVZvaWRGdW5jdGlvbjxBcmdzIGV4dGVuZHMgdW5rbm93bltdID0gbmV2ZXJbXT4gPSBHZW5lcmljUHJvbWlzYWJsZUZ1bmN0aW9uPEFyZ3MsIHZvaWQ+O1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBnZW5lcmljIHZvaWQgZnVuY3Rpb24uXG4gKlxuICogQHR5cGVQYXJhbSBBcmdzIC0gVGhlIGFyZ3VtZW50cyBvZiB0aGUgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCB0eXBlIEdlbmVyaWNWb2lkRnVuY3Rpb248QXJncyBleHRlbmRzIHVua25vd25bXSA9IG5ldmVyW10+ID0gR2VuZXJpY0Z1bmN0aW9uPEFyZ3MsIHZvaWQ+O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgZnVuY3Rpb24gaW50byBhIHN0cmluZyB0aGF0IGlzIGEgdmFsaWQgZnVuY3Rpb24gZXhwcmVzc2lvbi5cbiAqXG4gKiBgRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nKClgIG9uIGEgc2hvcnRoYW5kIG1ldGhvZCBsaWtlIGB7IGZuKCkge30gfWBcbiAqIHJldHVybnMgYFwiZm4oKSB7fVwiYCwgd2hpY2ggaXMgbm90IGEgdmFsaWQgZXhwcmVzc2lvbi5cbiAqIFRoaXMgaGVscGVyIGRldGVjdHMgdGhhdCBmb3JtIGFuZCBwcmVmaXhlcyBpdCB3aXRoIGBmdW5jdGlvbiBgLlxuICpcbiAqIEBwYXJhbSBmbiAtIFRoZSBmdW5jdGlvbiB0byBjb252ZXJ0LlxuICogQHJldHVybnMgQSBzdHJpbmcgdGhhdCBpcyBhIHZhbGlkIGZ1bmN0aW9uIGV4cHJlc3Npb24uXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWZ1bmN0aW9uLXR5cGUgLS0gV2UgbmVlZCB0byB1c2UgYEZ1bmN0aW9uYCB0eXBlLlxuZXhwb3J0IGZ1bmN0aW9uIGdldEZ1bmN0aW9uRXhwcmVzc2lvblN0cmluZyhmbjogRnVuY3Rpb24pOiBzdHJpbmcge1xuICBjb25zdCBmblN0cmluZyA9IGZuLnRvU3RyaW5nKCk7XG5cbiAgaWYgKEZVTkNUSU9OX0VYUFJFU1NJT05fUkUudGVzdChmblN0cmluZykpIHtcbiAgICByZXR1cm4gZm5TdHJpbmc7XG4gIH1cblxuICBjb25zdCBhc3luY01hdGNoID0gQVNZTkNfS0VZV09SRF9SRS5leGVjKGZuU3RyaW5nKTtcbiAgaWYgKGFzeW5jTWF0Y2gpIHtcbiAgICByZXR1cm4gYGFzeW5jIGZ1bmN0aW9uICR7Zm5TdHJpbmcuc2xpY2UoYXN5bmNNYXRjaFswXS5sZW5ndGgpfWA7XG4gIH1cblxuICByZXR1cm4gYGZ1bmN0aW9uICR7Zm5TdHJpbmd9YDtcbn1cblxuLyoqXG4gKiBBIGZ1bmN0aW9uIHRoYXQgZG9lcyBub3RoaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9vcCgpOiB2b2lkIHtcbiAgLy8gRG9lcyBub3RoaW5nLlxufVxuXG4vKipcbiAqIEEgc2luZ2xldG9uIG5vLW9wIHByb21pc2UuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBvYnNpZGlhbi1kZXYtdXRpbHMvcHJlZmVyLW5vb3AtYXN5bmMgLS0gQXZvaWQgY2lyY3VsYXIgcmVmZXJlbmNlLlxuZXhwb3J0IGNvbnN0IG5vb3BBc3luY1NpbmdsZXRvblByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTtcblxuLyoqXG4gKiBBIGZ1bmN0aW9uIHRoYXQgZG9lcyBub3RoaW5nLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9vcEFzeW5jKCk6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbm9vcEFzeW5jU2luZ2xldG9uUHJvbWlzZTtcbn1cblxuLyoqXG4gKiBNYWtlcyBhbiBhc3luYyBmdW5jdGlvbiB0aGF0IGNhbGxzIHRoZSBvcmlnaW5hbCBhc3luYyBmdW5jdGlvbiB3aXRoIHRoZSBwcm92aWRlZCBhcmd1bWVudHMgYW5kIG9taXRzIHRoZSByZXR1cm4gdmFsdWUuXG4gKlxuICogQHR5cGVQYXJhbSBBcmdzIC0gQXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24uXG4gKiBAcGFyYW0gZm4gLSBGdW5jdGlvbiB0byBiZSBjYWxsZWQuXG4gKiBAcmV0dXJucyBBbiBhc3luYyBmdW5jdGlvbiB0aGF0IGNhbGxzIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiB3aXRoIHRoZSBwcm92aWRlZCBhcmd1bWVudHMgYW5kIG9taXRzIHRoZSByZXR1cm4gdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbWl0QXN5bmNSZXR1cm5UeXBlPEFyZ3MgZXh0ZW5kcyB1bmtub3duW10+KGZuOiBHZW5lcmljQXN5bmNGdW5jdGlvbjxBcmdzPik6IEdlbmVyaWNBc3luY1ZvaWRGdW5jdGlvbjxBcmdzPiB7XG4gIHJldHVybiBhc3luYyAoLi4uYXJnczogQXJncykgPT4ge1xuICAgIGF3YWl0IGZuKC4uLmFyZ3MpO1xuICB9O1xufVxuXG4vKipcbiAqIE1hdGNoZXMgc3RyaW5ncyB0aGF0IGFyZSBhbHJlYWR5IHZhbGlkIGZ1bmN0aW9uIGV4cHJlc3Npb25zOlxuICogLSBgZnVuY3Rpb24gLi4uYCAoa2V5d29yZCwgbm90IGlkZW50aWZpZXIgbGlrZSBgZnVuY3Rpb24xYClcbiAqIC0gYChgIChhcnJvdyBmdW5jdGlvbilcbiAqIC0gYGFzeW5jXFxiYCBmb2xsb3dlZCBieSBgZnVuY3Rpb25cXGJgIG9yIGAoYCAoYXN5bmMgZnVuY3Rpb24vYXJyb3cpXG4gKi9cbmNvbnN0IEZVTkNUSU9OX0VYUFJFU1NJT05fUkUgPSAvXig/OmZ1bmN0aW9uXFxifGFzeW5jXFxiXFxzKig/OmZ1bmN0aW9uXFxifFxcKCl8XFwoKS87XG5cbi8qKlxuICogTWF0Y2hlcyB0aGUgYGFzeW5jYCBrZXl3b3JkICh3b3JkIGJvdW5kYXJ5LCBub3QgYGFzeW5jMWApIGZvbGxvd2VkIGJ5IG9wdGlvbmFsIHdoaXRlc3BhY2UuXG4gKiBVc2VkIHRvIHN0cmlwIHRoZSBgYXN5bmNgIHByZWZpeCBmcm9tIGFzeW5jIHNob3J0aGFuZCBtZXRob2RzIGJlZm9yZSByZS1hZGRpbmcgYGFzeW5jIGZ1bmN0aW9uYC5cbiAqL1xuY29uc3QgQVNZTkNfS0VZV09SRF9SRSA9IC9eYXN5bmNcXGJcXHMqLztcblxudHlwZSBBcmdOYW1lc09mPFQgZXh0ZW5kcyBHZW5lcmljRnVuY3Rpb24+ID0gTWFwVG9BcmdOYW1lczxQYXJhbWV0ZXJzPFQ+PjtcblxuaW50ZXJmYWNlIENyZWF0ZUZ1bmN0aW9uQXJndW1lbnRsZXNzUGFyYW1zIHtcbiAgcmVhZG9ubHkgZnVuY3Rpb25Cb2R5OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBDcmVhdGVGdW5jdGlvblBhcmFtczxURnVuY3Rpb24gZXh0ZW5kcyBHZW5lcmljRnVuY3Rpb24+IGV4dGVuZHMgQ3JlYXRlRnVuY3Rpb25Bcmd1bWVudGxlc3NQYXJhbXMge1xuICByZWFkb25seSBhcmdOYW1lczogQXJnTmFtZXNPZjxURnVuY3Rpb24+O1xufVxuXG50eXBlIE1hcFRvQXJnTmFtZXM8VEFyZ3MgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10+ID0ge1xuICByZWFkb25seSBbSyBpbiBrZXlvZiBUQXJnc106IHN0cmluZztcbn07XG5cbi8qKlxuICogQ2xvbmUgYSBmdW5jdGlvbiBieSBjcmVhdGluZyBhIG5ldyBmdW5jdGlvbiB0aGF0IGNhbGxzIHRoZSBvcmlnaW5hbCBmdW5jdGlvbi5cbiAqXG4gKiBUaGlzIGlzIHVzZWZ1bCBmb3IgY3JlYXRpbmcgYSBuZXcgaW5zdGFuY2Ugb2YgYSBmdW5jdGlvbiB0aGF0IGhhcyB0aGUgc2FtZSBiZWhhdmlvciBidXQgaXMgbm90IHN0cmljdGx5IGVxdWFsIHRvIHRoZSBvcmlnaW5hbCBmdW5jdGlvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFRGdW5jdGlvbiAtIFRoZSB0eXBlIG9mIHRoZSBmdW5jdGlvbiB0byBjbG9uZS5cbiAqIEBwYXJhbSBmbiAtIFRoZSBmdW5jdGlvbiB0byBjbG9uZS5cbiAqIEByZXR1cm5zIEEgbmV3IGZ1bmN0aW9uIHRoYXQgaGFzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIHRoZSBvcmlnaW5hbCBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsb25lRnVuY3Rpb248VEZ1bmN0aW9uIGV4dGVuZHMgR2VuZXJpY0Z1bmN0aW9uPihmbjogVEZ1bmN0aW9uKTogVEZ1bmN0aW9uIHtcbiAgcmV0dXJuIGNsb25lZEZuIGFzIFRGdW5jdGlvbjtcblxuICBmdW5jdGlvbiBjbG9uZWRGbih0aGlzOiBUaGlzUGFyYW1ldGVyVHlwZTxURnVuY3Rpb24+LCAuLi5hcmdzOiBQYXJhbWV0ZXJzPFRGdW5jdGlvbj4pOiBSZXR1cm5UeXBlPFRGdW5jdGlvbj4ge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmdzKSBhcyBSZXR1cm5UeXBlPFRGdW5jdGlvbj47XG4gIH1cbn1cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGZyb20gdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMuXG4gKlxuICogRnVuY3Rpb24gaXMgYXJndW1lbnRsZXNzLCBzbyBgYXJnTmFtZXNgIGlzIG5vdCBuZWVkZWQuXG4gKlxuICogQHR5cGVQYXJhbSBURnVuY3Rpb24gLSBUaGUgdHlwZSBvZiB0aGUgZnVuY3Rpb24gdG8gY3JlYXRlLlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIHRvIGNyZWF0ZSB0aGUgZnVuY3Rpb24gd2l0aC5cbiAqIEByZXR1cm5zIEEgZnVuY3Rpb24gY3JlYXRlZCBmcm9tIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LXR5cGUtcGFyYW1ldGVycyAtLSBXZSBuZWVkIHJldHVybiB0eXBlLlxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZ1bmN0aW9uPFRGdW5jdGlvbiBleHRlbmRzICgpID0+IHVua25vd24+KHBhcmFtczogQ3JlYXRlRnVuY3Rpb25Bcmd1bWVudGxlc3NQYXJhbXMpOiBURnVuY3Rpb247XG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiBmcm9tIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLlxuICpcbiAqIEZ1bmN0aW9uIGhhcyBhcmd1bWVudHMsIHNvIGBhcmdOYW1lc2AgaXMgcmVxdWlyZWQuXG4gKlxuICogQHR5cGVQYXJhbSBURnVuY3Rpb24gLSBUaGUgdHlwZSBvZiB0aGUgZnVuY3Rpb24gdG8gY3JlYXRlLlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIHRvIGNyZWF0ZSB0aGUgZnVuY3Rpb24gd2l0aC5cbiAqIEByZXR1cm5zIEEgZnVuY3Rpb24gY3JlYXRlZCBmcm9tIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRnVuY3Rpb248VEZ1bmN0aW9uIGV4dGVuZHMgR2VuZXJpY0Z1bmN0aW9uPihwYXJhbXM6IENyZWF0ZUZ1bmN0aW9uUGFyYW1zPFRGdW5jdGlvbj4pOiBURnVuY3Rpb247XG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiBmcm9tIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzLlxuICpcbiAqIEB0eXBlUGFyYW0gVEZ1bmN0aW9uIC0gVGhlIHR5cGUgb2YgdGhlIGZ1bmN0aW9uIHRvIGNyZWF0ZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgdG8gY3JlYXRlIHRoZSBmdW5jdGlvbiB3aXRoLlxuICogQHJldHVybnMgQSBmdW5jdGlvbiBjcmVhdGVkIGZyb20gdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGdW5jdGlvbjxURnVuY3Rpb24gZXh0ZW5kcyBHZW5lcmljRnVuY3Rpb24+KFxuICBwYXJhbXM6IENyZWF0ZUZ1bmN0aW9uQXJndW1lbnRsZXNzUGFyYW1zICYgUGFydGlhbDxDcmVhdGVGdW5jdGlvblBhcmFtczxURnVuY3Rpb24+PlxuKTogVEZ1bmN0aW9uIHtcbiAgY29uc3QgYXJnTmFtZXMgPSBwYXJhbXMuYXJnTmFtZXMgPz8gW107XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuYywgQHR5cGVzY3JpcHQtZXNsaW50L25vLWltcGxpZWQtZXZhbCAtLSBOZWVkIGZ1bmN0aW9uIGNvbnN0cnVjdG9yXG4gIHJldHVybiBuZXcgRnVuY3Rpb24oLi4uYXJnTmFtZXMsIHBhcmFtcy5mdW5jdGlvbkJvZHkpIGFzIFRGdW5jdGlvbjtcbn1cblxuLyoqXG4gKiBNYWtlcyBhIGZ1bmN0aW9uIHRoYXQgY2FsbHMgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIHdpdGggdGhlIHByb3ZpZGVkIGFyZ3VtZW50cyBhbmQgb21pdHMgdGhlIHJldHVybiB2YWx1ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIEFyZ3MgLSBBcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbi5cbiAqIEBwYXJhbSBmbiAtIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZC5cbiAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCBjYWxscyB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gd2l0aCB0aGUgcHJvdmlkZWQgYXJndW1lbnRzIGFuZCBvbWl0cyB0aGUgcmV0dXJuIHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gb21pdFJldHVyblR5cGU8QXJncyBleHRlbmRzIHVua25vd25bXT4oZm46IEdlbmVyaWNGdW5jdGlvbjxBcmdzPik6IEdlbmVyaWNWb2lkRnVuY3Rpb248QXJncz4ge1xuICByZXR1cm4gKC4uLmFyZ3M6IEFyZ3MpID0+IHtcbiAgICBmbiguLi5hcmdzKTtcbiAgfTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0VPLFNBQVMsNEJBQTRCLElBQXNCO0FBQ2hFLFFBQU0sV0FBVyxHQUFHLFNBQVM7QUFFN0IsTUFBSSx1QkFBdUIsS0FBSyxRQUFRLEdBQUc7QUFDekMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLGFBQWEsaUJBQWlCLEtBQUssUUFBUTtBQUNqRCxNQUFJLFlBQVk7QUFDZCxXQUFPLGtCQUFrQixTQUFTLE1BQU0sV0FBVyxDQUFDLEVBQUUsTUFBTSxDQUFDO0FBQUEsRUFDL0Q7QUFFQSxTQUFPLFlBQVksUUFBUTtBQUM3QjtBQUtPLFNBQVMsT0FBYTtBQUU3QjtBQU1PLE1BQU0sNEJBQTRCLFFBQVEsUUFBUTtBQU9sRCxTQUFTLFlBQTJCO0FBQ3pDLFNBQU87QUFDVDtBQVNPLFNBQVMsb0JBQTRDLElBQWdFO0FBQzFILFNBQU8sVUFBVSxTQUFlO0FBQzlCLFVBQU0sR0FBRyxHQUFHLElBQUk7QUFBQSxFQUNsQjtBQUNGO0FBUUEsTUFBTSx5QkFBeUI7QUFNL0IsTUFBTSxtQkFBbUI7QUF5QmxCLFNBQVMsY0FBaUQsSUFBMEI7QUFDekYsU0FBTztBQUVQLFdBQVMsWUFBZ0QsTUFBb0Q7QUFDM0csV0FBTyxHQUFHLE1BQU0sTUFBTSxJQUFJO0FBQUEsRUFDNUI7QUFDRjtBQThCTyxTQUFTLGVBQ2QsUUFDVztBQUNYLFFBQU0sV0FBVyxPQUFPLFlBQVksQ0FBQztBQUVyQyxTQUFPLElBQUksU0FBUyxHQUFHLFVBQVUsT0FBTyxZQUFZO0FBQ3REO0FBU08sU0FBUyxlQUF1QyxJQUFzRDtBQUMzRyxTQUFPLElBQUksU0FBZTtBQUN4QixPQUFHLEdBQUcsSUFBSTtBQUFBLEVBQ1o7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K