@mnaoumov/obsidian-lib 6.0.1 → 6.0.3

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.
@@ -38,8 +38,7 @@ import {
38
38
  ConfigureCommunityPluginResult,
39
39
  disableCommunityPlugin,
40
40
  enableCommunityPlugin,
41
- installCommunityPlugin,
42
- installConfigureEnableCommunityPlugin
41
+ installCommunityPlugin
43
42
  } from "./community-plugins.mjs";
44
43
  import { appendCodeBlock } from "./html-element.mjs";
45
44
  const CODE_SCRIPT_TOOLKIT_PLUGIN_ID = "fix-require-modules";
@@ -66,7 +65,6 @@ const SANDBOX_NOTICE_DURATION_IN_MILLISECONDS = 0;
66
65
  async function bootstrapDemoVault(params) {
67
66
  const { app } = params;
68
67
  const demoedPluginId = await getDemoedPluginId(app);
69
- closeSettingsBeforeEnablingPlugins(app);
70
68
  await installCommunityPlugin({ app, pluginId: CODE_SCRIPT_TOOLKIT_PLUGIN_ID });
71
69
  const result = await configureCommunityPlugin({
72
70
  app,
@@ -74,17 +72,14 @@ async function bootstrapDemoVault(params) {
74
72
  settings: CODE_SCRIPT_TOOLKIT_SETTINGS
75
73
  });
76
74
  await ensureInvocableScriptsFolder(app);
77
- if (!app.plugins.enabledPlugins.has(CODE_SCRIPT_TOOLKIT_PLUGIN_ID)) {
78
- await enableCommunityPlugin({ app, pluginId: CODE_SCRIPT_TOOLKIT_PLUGIN_ID });
79
- } else if (result === ConfigureCommunityPluginResult.Success) {
80
- await disableCommunityPlugin({ app, pluginId: CODE_SCRIPT_TOOLKIT_PLUGIN_ID });
81
- await enableCommunityPlugin({ app, pluginId: CODE_SCRIPT_TOOLKIT_PLUGIN_ID });
82
- }
83
- await installConfigureEnableCommunityPlugin({
75
+ await enableOrReloadPlugin(app, CODE_SCRIPT_TOOLKIT_PLUGIN_ID, result === ConfigureCommunityPluginResult.Success);
76
+ await installCommunityPlugin({ app, pluginId: FOLDER_NOTES_PLUGIN_ID });
77
+ const folderNotesResult = await configureCommunityPlugin({
84
78
  app,
85
79
  pluginId: FOLDER_NOTES_PLUGIN_ID,
86
80
  settings: FOLDER_NOTES_SETTINGS
87
81
  });
82
+ await enableOrReloadPlugin(app, FOLDER_NOTES_PLUGIN_ID, folderNotesResult === ConfigureCommunityPluginResult.Success);
88
83
  showSandboxNotice(app, demoedPluginId);
89
84
  }
90
85
  function buildSandboxNoticeFragment(pluginName) {
@@ -100,8 +95,14 @@ function buildSandboxNoticeFragment(pluginName) {
100
95
  fragment.appendText(" command again creates a new copy with the latest plugin version, so your notes will not appear in it.");
101
96
  });
102
97
  }
103
- function closeSettingsBeforeEnablingPlugins(app) {
98
+ async function enableOrReloadPlugin(app, pluginId, shouldReloadIfEnabled) {
104
99
  app.setting.close();
100
+ if (!app.plugins.enabledPlugins.has(pluginId)) {
101
+ await enableCommunityPlugin({ app, pluginId });
102
+ } else if (shouldReloadIfEnabled) {
103
+ await disableCommunityPlugin({ app, pluginId });
104
+ await enableCommunityPlugin({ app, pluginId });
105
+ }
105
106
  }
106
107
  async function ensureInvocableScriptsFolder(app) {
107
108
  const invocableScriptsFolderPath = join(CODE_SCRIPT_TOOLKIT_MODULES_ROOT, CODE_SCRIPT_TOOLKIT_SETTINGS.invocableScriptsFolder);
@@ -135,4 +136,4 @@ function showSandboxNotice(app, demoedPluginId) {
135
136
  export {
136
137
  bootstrapDemoVault
137
138
  };
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZW1vLXZhdWx0LWhlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQm9vdHN0cmFwcyBhIGRlbW8gdmF1bHQgYnkgaW5zdGFsbGluZywgY29uZmlndXJpbmcsIGFuZCBlbmFibGluZyBgQ29kZVNjcmlwdCBUb29sa2l0YC5cbiAqXG4gKiBBIHBsdWdpbidzIGRlbW8gdmF1bHQgc2hvd2Nhc2VzIHRoZSBwbHVnaW4gdGhyb3VnaCBub3RlcyB3aG9zZSBgY29kZS1idXR0b25gcyBydW4gVHlwZVNjcmlwdCB2aWFcbiAqIGBDb2RlU2NyaXB0IFRvb2xraXRgLiBBIGRlbW8gdmF1bHQgdGhhdCBkb2VzIG5vdCBpdHNlbGYgc2hpcCBgQ29kZVNjcmlwdCBUb29sa2l0YCB0aGVyZWZvcmUgbmVlZHMgaXRcbiAqIGluc3RhbGxlZCwgY29uZmlndXJlZCwgYW5kIGVuYWJsZWQgYmVmb3JlIHRob3NlIGJ1dHRvbnMgd29yay4ge0BsaW5rIGJvb3RzdHJhcERlbW9WYXVsdH0gZG9lcyBleGFjdGx5XG4gKiB0aGF0IHdpdGggbm8gY29tbWl0dGVkIGBDb2RlU2NyaXB0IFRvb2xraXRgIGNvbmZpZyBhbmQgbm8gbWFudWFsIHNldHVwLCBzbyBpdCBjYW4gYmUgZHJpdmVuIGZyb20gYSB0aW55XG4gKiBjb21taXR0ZWQgYm9vdHN0cmFwIHBsdWdpbiAoYGRlbW8tdmF1bHQtaGVscGVyYCkgdGhhdCBpcyBpbmplY3RlZCBpbnRvIGV2ZXJ5IGRlbW8gdmF1bHQgYXQgcmVsZWFzZVxuICogdGltZS5cbiAqXG4gKiBUaGUgcGx1Z2luIHRoZSB2YXVsdCBkZW1vbnN0cmF0ZXMgaXMgcmVhZCBmcm9tIHRoZSBoZWxwZXIncyBvd24gYGRhdGEuanNvbmAsIHdyaXR0ZW4gYnkgdGhlIHBhY2thZ2luZ1xuICogc3RlcCAoe0BsaW5rIERlbW9WYXVsdEhlbHBlclNldHRpbmdzfSk7IGEgdmF1bHQgd2l0aG91dCB0aGF0IG1hcmtlciBpcyByZWZ1c2VkIGFzIG5vdCBhIGRlbW8gdmF1bHQuXG4gKlxuICogU2V0dGluZ3MgaXMgY2xvc2VkIGJlZm9yZSBhbnkgcGx1Z2luIGlzIGVuYWJsZWQuIEFmdGVyIHRoZSB0cnVzdCBwcm9tcHQgT2JzaWRpYW4gbGVhdmVzIFNldHRpbmdzIG9wZW4gYXNcbiAqIGEgcG9wb3V0IHdpbmRvdywgYW5kIGEgcmVhZGluZyB2aWV3IHJlLXJlbmRlcmVkIHdoaWxlIHRoYXQgcG9wb3V0IGlzIHRoZSBhY3RpdmUgd2luZG93IHF1ZXVlcyBpdHNcbiAqIHJlbmRlciBvbiB0aGUgcG9wb3V0J3MgYW5pbWF0aW9uIGZyYW1lIOKAlCB3aGljaCBuZXZlciBmaXJlcyBvbmNlIHRoZSBwb3BvdXQgY2xvc2VzLCBsZWF2aW5nIHRoZSBzdGFydFxuICogbm90ZSBibGFuayB1bnRpbCBpdHMgdGFiIGlzIHJlb3BlbmVkLlxuICpcbiAqIEl0IHdyaXRlcyBgQ29kZVNjcmlwdCBUb29sa2l0YCdzIHNldHRpbmdzIEJFRk9SRSBlbmFibGluZyBpdCwgc28gdGhlIHBsdWdpbiBsb2FkcyBhbHJlYWR5IGNvbmZpZ3VyZWQg4oCUXG4gKiBubyByZWxvYWQuIGBDb2RlU2NyaXB0IFRvb2xraXRgIHRoZW4gcnVucyB0aGUgdmF1bHQncyBgc3RhcnR1cC50c2AgKHZpYSBpdHMgYHN0YXJ0dXBTY3JpcHRQYXRoYFxuICogc2V0dGluZyksIHdoaWNoIGlzIHdoZXJlIGVhY2ggdmF1bHQgb3BlbnMgaXRzIHN0YXJ0IG5vdGUgYW5kIGRvZXMgYW55IHBsdWdpbi1zcGVjaWZpYyBzZXR1cC5cbiAqXG4gKiBJdCBhbHNvIGNyZWF0ZXMgYENvZGVTY3JpcHQgVG9vbGtpdGAncyBpbnZvY2FibGUtc2NyaXB0cyBmb2xkZXIgaWYgaXQgaXMgbWlzc2luZywgc28gZXZlcnkgZGVtbyB2YXVsdFxuICogaGFzIHRoZSBzYW1lIGxheW91dCBldmVuIHdoZW4gdGhlIHZhdWx0IHNoaXBzIG5vIGludm9jYWJsZSBzY3JpcHRzIOKAlCB0aGUgdmF1bHRzIHRoZW1zZWx2ZXMgY29tbWl0IG5vXG4gKiBlbXB0eSBmb2xkZXIgZm9yIGl0LlxuICpcbiAqIEl0IHRoZW4gaW5zdGFsbHMgdGhlIGBGb2xkZXIgTm90ZXNgIHBsdWdpbiwgY29uZmlndXJlZCB0byB0cmVhdCBgUkVBRE1FLm1kYCBhcyBhIGZvbGRlcidzIG93biBub3RlLiBBXG4gKiBkZW1vIHZhdWx0IHRoYXQgaGFzIG91dGdyb3duIGEgZmxhdCBub3RlIGxpc3QgZ3JvdXBzIGl0cyBub3RlcyBpbnRvIGZvbGRlcnMsIGFuZCBhIGdyb3VwIGZvbGRlciBvbmx5XG4gKiBzYXlzIHdoYXQgaXQgaXMgZm9yIGlmIGl0IGhhcyBhIG5vdGUgb2YgaXRzIG93biDigJQgYFJFQURNRS5tZGAsIGJlY2F1c2UgdGhhdCBpcyBhbHNvIHRoZSBmaWxlIEdpdEh1YlxuICogcmVuZGVycyB1bmRlciB0aGUgZmlsZSBsaXN0IHdoZW4gdGhlIHNhbWUgdmF1bHQgaXMgYnJvd3NlZCBhcyBhIHJlcG9zaXRvcnksIHNvIG9uZSBmaWxlIHNlcnZlcyBib3RoXG4gKiByZWFkZXJzLlxuICpcbiAqIEZpbmFsbHkgaXQgcmFpc2VzIHRoZSBzYW5kYm94IG5vdGljZSBleHBsYWluaW5nIHRoYXQgdGhlIG9wZW5lZCB2YXVsdCBpcyBhIHRocm93YXdheSBjb3B5LCBzbyBhIHVzZXJcbiAqIHdobyB3cml0ZXMgdGhlaXIgb3duIG5vdGVzIGluIGl0IGlzIG5ldmVyIHN1cnByaXNlZCBieSB0aGVtIGJlaW5nIGFic2VudCBmcm9tIHRoZSBuZXh0IGNvcHkuIFNldHRpbmdzXG4gKiBpcyBjbG9zZWQgZmlyc3QsIHNvIHRoZSBub3RpY2UgbGFuZHMgaW4gdGhlIHZhdWx0J3MgbWFpbiB3aW5kb3cgcmF0aGVyIHRoYW4gaW4gdGhlIHNldHRpbmdzIHBvcG91dC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgam9pbiB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9wYXRoJztcbmltcG9ydCB7IEVNUFRZIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3N0cmluZyc7XG5pbXBvcnQgeyBOb3RpY2UgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgRGVtb1ZhdWx0SGVscGVyU2V0dGluZ3MgfSBmcm9tICcuL2RlbW8tdmF1bHQtaGVscGVyLXNldHRpbmdzLnRzJztcblxuaW1wb3J0IHtcbiAgY29uZmlndXJlQ29tbXVuaXR5UGx1Z2luLFxuICBDb25maWd1cmVDb21tdW5pdHlQbHVnaW5SZXN1bHQsXG4gIGRpc2FibGVDb21tdW5pdHlQbHVnaW4sXG4gIGVuYWJsZUNvbW11bml0eVBsdWdpbixcbiAgaW5zdGFsbENvbW11bml0eVBsdWdpbixcbiAgaW5zdGFsbENvbmZpZ3VyZUVuYWJsZUNvbW11bml0eVBsdWdpblxufSBmcm9tICcuL2NvbW11bml0eS1wbHVnaW5zLnRzJztcbmltcG9ydCB7IGFwcGVuZENvZGVCbG9jayB9IGZyb20gJy4vaHRtbC1lbGVtZW50LnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgYm9vdHN0cmFwRGVtb1ZhdWx0fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCb290c3RyYXBEZW1vVmF1bHRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xufVxuXG4vKipcbiAqIGBDb2RlU2NyaXB0IFRvb2xraXRgJ3Mgc2V0dGluZ3MsIHdyaXR0ZW4gaW50byBpdHMgYGRhdGEuanNvbmAgYmVmb3JlIGl0IGlzIGVuYWJsZWQuXG4gKi9cbmludGVyZmFjZSBDb2RlU2NyaXB0VG9vbGtpdFNldHRpbmdzIHtcbiAgLyoqXG4gICAqIFRoZSBZQU1MIGZyb250bWF0dGVyIG1lcmdlZCBpbnRvIGV2ZXJ5IGBjb2RlLWJ1dHRvbmAgYmxvY2sncyBvd24gY29uZmlnLCB1c2VkIGhlcmUgdG8gdHVybiB0aGVcbiAgICogc291cmNlIHZpZXdlciBvbiBmb3IgZXZlcnkgYnV0dG9uIGluIGV2ZXJ5IGRlbW8gdmF1bHQgd2l0aG91dCBlZGl0aW5nIGEgc2luZ2xlIG5vdGUuXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0Q29kZUJ1dHRvbkNvbmZpZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZm9sZGVyICh1bmRlciB7QGxpbmsgQ29kZVNjcmlwdFRvb2xraXRTZXR0aW5ncy5tb2R1bGVzUm9vdH0pIGhvbGRpbmcgaW52b2NhYmxlIHNjcmlwdHMuXG4gICAqL1xuICByZWFkb25seSBpbnZvY2FibGVTY3JpcHRzRm9sZGVyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2YXVsdC1yZWxhdGl2ZSBmb2xkZXIgdGhhdCBgcmVxdWlyZSgnL+KApicpYCByZXNvbHZlcyBtb2R1bGUgcGF0aHMgYWdhaW5zdC5cbiAgICovXG4gIHJlYWRvbmx5IG1vZHVsZXNSb290OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYENvZGVTY3JpcHQgVG9vbGtpdGAgaGFuZGxlcyBgb2JzaWRpYW46Ly9gIHByb3RvY29sIFVSTHMuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRIYW5kbGVQcm90b2NvbFVybHM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwYXRoICh1bmRlciB7QGxpbmsgQ29kZVNjcmlwdFRvb2xraXRTZXR0aW5ncy5tb2R1bGVzUm9vdH0pIG9mIHRoZSBzY3JpcHQgcnVuIG9uIGxvYWQuXG4gICAqL1xuICByZWFkb25seSBzdGFydHVwU2NyaXB0UGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIGBGb2xkZXIgTm90ZXNgJyBzZXR0aW5ncywgd3JpdHRlbiBpbnRvIGl0cyBgZGF0YS5qc29uYCBiZWZvcmUgaXQgaXMgZW5hYmxlZC5cbiAqL1xuaW50ZXJmYWNlIEZvbGRlck5vdGVzU2V0dGluZ3Mge1xuICAvKipcbiAgICogVGhlIG5hbWUgYSBmb2xkZXIncyBvd24gbm90ZSBpcyBsb29rZWQgZm9yIHVuZGVyLCB3aXRob3V0IHRoZSBleHRlbnNpb24uXG4gICAqL1xuICByZWFkb25seSBmb2xkZXJOb3RlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGEgZm9sZGVyJ3Mgb3duIG5vdGUgaXMgaGlkZGVuIGZyb20gdGhlIGZpbGUgZXhwbG9yZXIsIHNvIHRoZSBmb2xkZXIgaXRzZWxmIHN0YW5kcyBmb3IgaXQuXG4gICAqL1xuICByZWFkb25seSBoaWRlRm9sZGVyTm90ZTogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlcmUgYSBmb2xkZXIncyBvd24gbm90ZSBpcyBrZXB0LCByZWxhdGl2ZSB0byB0aGUgZm9sZGVyIGl0IGRlc2NyaWJlcy5cbiAgICovXG4gIHJlYWRvbmx5IHN0b3JhZ2VMb2NhdGlvbjogc3RyaW5nO1xufVxuXG5jb25zdCBDT0RFX1NDUklQVF9UT09MS0lUX1BMVUdJTl9JRCA9ICdmaXgtcmVxdWlyZS1tb2R1bGVzJztcbmNvbnN0IENPREVfU0NSSVBUX1RPT0xLSVRfTU9EVUxFU19ST09UID0gJ19hc3NldHMvQ29kZVNjcmlwdFRvb2xraXQnO1xuY29uc3QgQ09ERV9TQ1JJUFRfVE9PTEtJVF9TRVRUSU5HUzogQ29kZVNjcmlwdFRvb2xraXRTZXR0aW5ncyA9IHtcbiAgZGVmYXVsdENvZGVCdXR0b25Db25maWc6ICctLS1cXG5zb3VyY2VWaXNpYmlsaXR5OiBjb2xsYXBzZWRcXG4tLS0nLFxuICBpbnZvY2FibGVTY3JpcHRzRm9sZGVyOiAnSW52b2NhYmxlcycsXG4gIG1vZHVsZXNSb290OiBDT0RFX1NDUklQVF9UT09MS0lUX01PRFVMRVNfUk9PVCxcbiAgc2hvdWxkSGFuZGxlUHJvdG9jb2xVcmxzOiB0cnVlLFxuICBzdGFydHVwU2NyaXB0UGF0aDogJ3N0YXJ0dXAudHMnXG59O1xuXG5jb25zdCBGT0xERVJfTk9URVNfUExVR0lOX0lEID0gJ2ZvbGRlci1ub3Rlcyc7XG4vLyBgUkVBRE1FYCByYXRoZXIgdGhhbiBgRm9sZGVyIE5vdGVzYCcgb3duIGB7e2ZvbGRlcl9uYW1lfX1gIGRlZmF1bHQ6IHRoZSBzYW1lIGZpbGUgaGFzIHRvIGJlIHRoZSBmb2xkZXInc1xuLy8gbm90ZSBpbiBPYnNpZGlhbiBBTkQgdGhlIHBhZ2UgR2l0SHViIHJlbmRlcnMgd2hlbiB0aGUgdmF1bHQgaXMgYnJvd3NlZCBhcyBhIHJlcG9zaXRvcnksIGFuZCBHaXRIdWJcbi8vIG9ubHkgZG9lcyB0aGF0IGZvciBgUkVBRE1FLm1kYC4gYGluc2lkZUZvbGRlcmAga2VlcHMgaXQgd2l0aCB0aGUgbm90ZXMgaXQgZGVzY3JpYmVzIHJhdGhlciB0aGFuIGJlc2lkZVxuLy8gdGhlIGZvbGRlciwgYW5kIGhpZGluZyBpdCBsZXRzIHRoZSBmb2xkZXIgaXRzZWxmIHN0YW5kIGZvciB0aGUgbm90ZSBpbnN0ZWFkIG9mIGxpc3RpbmcgYm90aC5cbmNvbnN0IEZPTERFUl9OT1RFU19TRVRUSU5HUzogRm9sZGVyTm90ZXNTZXR0aW5ncyA9IHtcbiAgZm9sZGVyTm90ZU5hbWU6ICdSRUFETUUnLFxuICBoaWRlRm9sZGVyTm90ZTogdHJ1ZSxcbiAgc3RvcmFnZUxvY2F0aW9uOiAnaW5zaWRlRm9sZGVyJ1xufTtcblxuY29uc3QgREVNT19WQVVMVF9IRUxQRVJfUExVR0lOX0lEID0gJ2RlbW8tdmF1bHQtaGVscGVyJztcbmNvbnN0IFBMVUdJTlNfRk9MREVSX05BTUUgPSAncGx1Z2lucyc7XG5jb25zdCBEQVRBX0pTT05fRklMRV9OQU1FID0gJ2RhdGEuanNvbic7XG5jb25zdCBJTlZBTElEX0RFTU9fVkFVTFRfRVJST1JfTUVTU0FHRSA9ICdJbnZhbGlkIGRlbW8gdmF1bHQnO1xuY29uc3QgT1BFTl9ERU1PX1ZBVUxUX0NPTU1BTkRfTkFNRSA9ICdPcGVuIGRlbW8gdmF1bHQnO1xuLy8gYDBgIGFza3MgT2JzaWRpYW4gdG8ga2VlcCB0aGUgbm90aWNlIHVwIHVudGlsIHRoZSB1c2VyIGNsaWNrcyBpdCDigJQgdGhlIHNhbWUgdHJlYXRtZW50IE9ic2lkaWFuIGdpdmVzXG4vLyBpdHMgb3duIHNhbmRib3gtdmF1bHQgbm90aWNlLCBhbmQgd2hhdCB0aGUgZGVtby12YXVsdCBub3RpY2UgaXMgbW9kZWxsZWQgb24uXG5jb25zdCBTQU5EQk9YX05PVElDRV9EVVJBVElPTl9JTl9NSUxMSVNFQ09ORFMgPSAwO1xuXG4vKipcbiAqIEJvb3RzdHJhcHMgYSBkZW1vIHZhdWx0IHNvIGl0cyBub3RlcycgYGNvZGUtYnV0dG9uYHMgd29yayB3aXRoIG5vIG1hbnVhbCBzZXR1cC4gSXQgZmlyc3QgY2xvc2VzIFNldHRpbmdzLFxuICogc28gbm8gcmVhZGluZyB2aWV3IHF1ZXVlcyBhIHJlLXJlbmRlciBvbiB0aGUgc2V0dGluZ3MgcG9wb3V0J3MgYW5pbWF0aW9uIGZyYW1lLiBJdCB0aGVuIGluc3RhbGxzIENvZGVTY3JpcHRcbiAqIFRvb2xraXQgZnJvbSB0aGUgY29tbXVuaXR5IHN0b3JlIChpZiBpdCBpcyBub3QgYWxyZWFkeSBpbnN0YWxsZWQpLCB3cml0ZXMgaXRzIHNldHRpbmdzLCB0aGVuIGVuYWJsZXNcbiAqIGl0IOKAlCB3cml0aW5nIHRoZSBzZXR0aW5ncyBCRUZPUkUgZW5hYmxpbmcgc28gYSBmcmVzaCBlbmFibGUgbG9hZHMgaXQgYWxyZWFkeSBjb25maWd1cmVkLCB3aXRoIG5vXG4gKiByZWxvYWQuIElmIGBDb2RlU2NyaXB0IFRvb2xraXRgIGlzIGFscmVhZHkgZW5hYmxlZCBidXQgdGhlIHNldHRpbmdzIGp1c3QgY2hhbmdlZCwgaXQgaXMgcmVsb2FkZWRcbiAqIChkaXNhYmxlZCB0aGVuIGVuYWJsZWQpIHNvIGl0IHJlLXJlYWRzIGBkYXRhLmpzb25gOyB3aGVuIHRoZSBzZXR0aW5ncyB3ZXJlIGFscmVhZHkgaW4gcGxhY2UsIG5vdGhpbmcgaXNcbiAqIHJlbG9hZGVkIChzbyBhIHJvdXRpbmUgdmF1bHQgcmUtb3BlbiBkb2VzIG5vdCByZS1ydW4gYENvZGVTY3JpcHQgVG9vbGtpdGAncyBzdGFydHVwKS4gYENvZGVTY3JpcHQgVG9vbGtpdGBcbiAqIHRoZW4gcnVucyB0aGUgdmF1bHQncyBgc3RhcnR1cC50c2AuIGBGb2xkZXIgTm90ZXNgIGlzIGluc3RhbGxlZCBuZXh0LCBjb25maWd1cmVkIHRvIHRyZWF0IGBSRUFETUUubWRgIGFzXG4gKiBhIGZvbGRlcidzIG93biBub3RlLCBzbyBhIHZhdWx0IHdob3NlIG5vdGVzIGFyZSBncm91cGVkIGludG8gZm9sZGVycyBkZXNjcmliZXMgZWFjaCBncm91cCBpbiB0aGUgZmlsZVxuICogZXhwbG9yZXIuIEZpbmFsbHkgaXQgY2xvc2VzIFNldHRpbmdzIGFnYWluIChzbyB0aGUgbm90aWNlIGNhbm5vdCBiZSByYWlzZWQgaW5zaWRlIHRoZSBzZXR0aW5ncyBwb3BvdXQpIGFuZFxuICogcmFpc2VzIHRoZSBzYW5kYm94IG5vdGljZSBkZXNjcmliaW5nIHRoZSBvcGVuZWQgdmF1bHQgYXMgYSB0aHJvd2F3YXkgY29weS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBCb290c3RyYXBEZW1vVmF1bHRQYXJhbXN9LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIGBDb2RlU2NyaXB0IFRvb2xraXRgIGlzIGluc3RhbGxlZCwgY29uZmlndXJlZCwgYW5kIGVuYWJsZWRcbiAqIGFuZCB0aGUgc2FuZGJveCBub3RpY2UgaGFzIGJlZW4gc2hvd24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBib290c3RyYXBEZW1vVmF1bHQocGFyYW1zOiBCb290c3RyYXBEZW1vVmF1bHRQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBhcHAgfSA9IHBhcmFtcztcbiAgLy8gUmVzb2x2ZWQgZmlyc3QsIHNvIGEgdmF1bHQgdGhhdCBpcyBub3QgYSBkZW1vIHZhdWx0IGlzIHJlZnVzZWQgYmVmb3JlIGFueXRoaW5nIGlzIGluc3RhbGxlZCBpbnRvIGl0LlxuICBjb25zdCBkZW1vZWRQbHVnaW5JZCA9IGF3YWl0IGdldERlbW9lZFBsdWdpbklkKGFwcCk7XG4gIGNsb3NlU2V0dGluZ3NCZWZvcmVFbmFibGluZ1BsdWdpbnMoYXBwKTtcbiAgYXdhaXQgaW5zdGFsbENvbW11bml0eVBsdWdpbih7IGFwcCwgcGx1Z2luSWQ6IENPREVfU0NSSVBUX1RPT0xLSVRfUExVR0lOX0lEIH0pO1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBjb25maWd1cmVDb21tdW5pdHlQbHVnaW4oe1xuICAgIGFwcCxcbiAgICBwbHVnaW5JZDogQ09ERV9TQ1JJUFRfVE9PTEtJVF9QTFVHSU5fSUQsXG4gICAgc2V0dGluZ3M6IENPREVfU0NSSVBUX1RPT0xLSVRfU0VUVElOR1NcbiAgfSk7XG4gIGF3YWl0IGVuc3VyZUludm9jYWJsZVNjcmlwdHNGb2xkZXIoYXBwKTtcblxuICBpZiAoIWFwcC5wbHVnaW5zLmVuYWJsZWRQbHVnaW5zLmhhcyhDT0RFX1NDUklQVF9UT09MS0lUX1BMVUdJTl9JRCkpIHtcbiAgICBhd2FpdCBlbmFibGVDb21tdW5pdHlQbHVnaW4oeyBhcHAsIHBsdWdpbklkOiBDT0RFX1NDUklQVF9UT09MS0lUX1BMVUdJTl9JRCB9KTtcbiAgfSBlbHNlIGlmIChyZXN1bHQgPT09IENvbmZpZ3VyZUNvbW11bml0eVBsdWdpblJlc3VsdC5TdWNjZXNzKSB7XG4gICAgLy8gQWxyZWFkeSBlbmFibGVkIHdpdGggc3RhbGUgc2V0dGluZ3Mg4oCUIHJlbG9hZCBzbyBgQ29kZVNjcmlwdCBUb29sa2l0YCByZS1yZWFkcyB0aGUgZnJlc2hseSB3cml0dGVuIGRhdGEuanNvbi5cbiAgICBhd2FpdCBkaXNhYmxlQ29tbXVuaXR5UGx1Z2luKHsgYXBwLCBwbHVnaW5JZDogQ09ERV9TQ1JJUFRfVE9PTEtJVF9QTFVHSU5fSUQgfSk7XG4gICAgYXdhaXQgZW5hYmxlQ29tbXVuaXR5UGx1Z2luKHsgYXBwLCBwbHVnaW5JZDogQ09ERV9TQ1JJUFRfVE9PTEtJVF9QTFVHSU5fSUQgfSk7XG4gIH1cblxuICAvLyBBZnRlciBgQ29kZVNjcmlwdCBUb29sa2l0YCwgc28gdGhlIHZhdWx0J3Mgc3RhcnR1cCBzY3JpcHQgaGFzIGFscmVhZHkgb3BlbmVkIHRoZSBzdGFydCBub3RlIGJ5IHRoZSB0aW1lXG4gIC8vIHRoZSBmaWxlIGV4cGxvcmVyIGdhaW5zIGl0cyBmb2xkZXItbm90ZSBiZWhhdmlvci5cbiAgYXdhaXQgaW5zdGFsbENvbmZpZ3VyZUVuYWJsZUNvbW11bml0eVBsdWdpbih7XG4gICAgYXBwLFxuICAgIHBsdWdpbklkOiBGT0xERVJfTk9URVNfUExVR0lOX0lELFxuICAgIHNldHRpbmdzOiBGT0xERVJfTk9URVNfU0VUVElOR1NcbiAgfSk7XG5cbiAgc2hvd1NhbmRib3hOb3RpY2UoYXBwLCBkZW1vZWRQbHVnaW5JZCk7XG59XG5cbi8vIEJ1aWxkcyB0aGUgc2FuZGJveCBub3RpY2UgY29udGVudDogd2hhdCB0aGlzIHZhdWx0IGlzLCB3aGVyZSBpdCBsaXZlcywgaG93IGxvbmcgaXQgbGl2ZXMsIGFuZCB3aHlcbi8vIHJlLXJ1bm5pbmcgdGhlIGNvbW1hbmQgcHJvZHVjZXMgYSB2YXVsdCB3aXRob3V0IHRoZSBub3RlcyBqdXN0IHdyaXR0ZW4gaGVyZS5cbi8vXG4vLyBFdmVyeSBjbGFpbSBoYXMgdG8gc3RheSB0cnVlIG9mIHRoZSBvcGVuZXIgKGBkZXNrdG9wLWRlbW8tdmF1bHQtb3BlbmVyLnRzYCk6IGl0IGV4dHJhY3RzIGEgRlJFU0ggY29weVxuLy8gaW50byBpdHMgb3duIGZvbGRlciBvbiBldmVyeSBvcGVuLCBhbmQgZGVsZXRlcyBleHRyYWN0ZWQgZm9sZGVycyBvbGRlciB0aGFuIGEgZGF5IG9uIGVhY2ggbGF0ZXIgb3Blbi5cbi8vIFNvIHRoZSB2YXVsdCBpcyBhIHRlbXBvcmFyeSBzYW5kYm94IOKAlCBpdCBtdXN0IG5ldmVyIGJlIGRlc2NyaWJlZCBhcyBhIHBsYWNlIHdvcmsgY2FuIGJlIGxlZnQuXG5mdW5jdGlvbiBidWlsZFNhbmRib3hOb3RpY2VGcmFnbWVudChwbHVnaW5OYW1lOiBzdHJpbmcpOiBEb2N1bWVudEZyYWdtZW50IHtcbiAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50KChmcmFnbWVudCkgPT4ge1xuICAgIGZyYWdtZW50LmFwcGVuZFRleHQoJ1RoaXMgaXMgYSBkZW1vIHZhdWx0IGZvciAnKTtcbiAgICBhcHBlbmRDb2RlQmxvY2soZnJhZ21lbnQsIHBsdWdpbk5hbWUpO1xuICAgIGZyYWdtZW50LmFwcGVuZFRleHQoJy4nKTtcblxuICAgIGZyYWdtZW50LmNyZWF0ZUVsKCdicicpO1xuICAgIGZyYWdtZW50LmFwcGVuZFRleHQoJ0l0IGlzIGEgdGVtcG9yYXJ5IHNhbmRib3gsIGNsZWFuZWQgdXAgYXV0b21hdGljYWxseSBhYm91dCBhIGRheSBhZnRlciB5b3UgbGFzdCB1c2UgaXQuJyk7XG5cbiAgICBmcmFnbWVudC5jcmVhdGVFbCgnYnInKTtcbiAgICBmcmFnbWVudC5hcHBlbmRUZXh0KCdFeGVjdXRpbmcgJyk7XG4gICAgZnJhZ21lbnQuY3JlYXRlRWwoJ2InLCB7IHRleHQ6IGAke3BsdWdpbk5hbWV9OiAke09QRU5fREVNT19WQVVMVF9DT01NQU5EX05BTUV9YCB9KTtcbiAgICBmcmFnbWVudC5hcHBlbmRUZXh0KCcgY29tbWFuZCBhZ2FpbiBjcmVhdGVzIGEgbmV3IGNvcHkgd2l0aCB0aGUgbGF0ZXN0IHBsdWdpbiB2ZXJzaW9uLCBzbyB5b3VyIG5vdGVzIHdpbGwgbm90IGFwcGVhciBpbiBpdC4nKTtcbiAgfSk7XG59XG5cbi8vIENsb3NlcyBTZXR0aW5ncyBiZWZvcmUgYW55IHBsdWdpbiBpcyBlbmFibGVkLiBUaGlzIGlzIGxvYWQtYmVhcmluZywgbm90IGNvc21ldGljLiBBIGZyZXNobHkgb3BlbmVkIGRlbW9cbi8vIHZhdWx0IGFza3MgdGhlIHVzZXIgdG8gdHJ1c3QgaXRzIGF1dGhvciwgYW5kIE9ic2lkaWFuIHRoZW4gb3BlbnMgU2V0dGluZ3MgYXMgYSBQT1BPVVQgV0lORE9XIHRoYXQgYmVjb21lc1xuLy8gYGFjdGl2ZVdpbmRvd2AuIEVuYWJsaW5nIGEgcGx1Z2luIHRoYXQgcmVnaXN0ZXJzIGEgbWFya2Rvd24gcG9zdC1wcm9jZXNzb3IgKGBGb2xkZXIgTm90ZXNgKSBtYWtlcyBldmVyeVxuLy8gcmVhZGluZyB2aWV3IGByZXJlbmRlcih0cnVlKWA6IGl0IGVtcHRpZXMgdGhlIGJvZHkgc2VjdGlvbnMgYW5kIHF1ZXVlcyB0aGUgcmVuZGVyIHRocm91Z2hcbi8vIGBhY3RpdmVXaW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lYC4gSWYgdGhhdCBpcyB0aGUgU2V0dGluZ3MgcG9wb3V0LCBjbG9zaW5nIGl0IGxhdGVyIGRlc3Ryb3lzIHRoZSB3aW5kb3dcbi8vIGJlZm9yZSB0aGUgZnJhbWUgZmlyZXMsIHRoZSByZW5kZXJlcidzIHF1ZXVlZCBoYW5kbGUgbmV2ZXIgY2xlYXJzLCBhbmQgZXZlcnkgbGF0ZXIgcmVuZGVyIHJlcXVlc3QgaXNcbi8vIGlnbm9yZWQsIHNvIHRoZSBzdGFydCBub3RlIHN0YXlzIGJsYW5rIHVudGlsIGl0cyB0YWIgaXMgY2xvc2VkLiBXaXRoIFNldHRpbmdzIGNsb3NlZCBmaXJzdCwgZXZlcnkgc3VjaFxuLy8gZnJhbWUgaXMgYm9va2VkIG9uIHRoZSBtYWluIHdpbmRvdy4gQ2xvc2luZyBhbiBhbHJlYWR5LWNsb3NlZCBTZXR0aW5ncyBpcyBhIG5vLW9wLlxuZnVuY3Rpb24gY2xvc2VTZXR0aW5nc0JlZm9yZUVuYWJsaW5nUGx1Z2lucyhhcHA6IEFwcCk6IHZvaWQge1xuICBhcHAuc2V0dGluZy5jbG9zZSgpO1xufVxuXG4vLyBDcmVhdGVzIGBDb2RlU2NyaXB0IFRvb2xraXRgJ3MgaW52b2NhYmxlLXNjcmlwdHMgZm9sZGVyICh1bmRlciBgbW9kdWxlc1Jvb3RgKSBpZiBpdCBpcyBtaXNzaW5nLlxuLy8gRXZlcnkgZGVtbyB2YXVsdCB0aGVuIGhhcyB0aGUgc2FtZSBgQ29kZVNjcmlwdCBUb29sa2l0YCBsYXlvdXQgZXZlbiB3aGVuIGl0IHNoaXBzIG5vIGludm9jYWJsZSBzY3JpcHRzLlxuLy8gVGhlIGNvbW1pdHRlZCB2YXVsdCB0aGVyZWZvcmUgY2FycmllcyBubyBvdGhlcndpc2UtZW1wdHkgcGxhY2Vob2xkZXIgZm9sZGVyLlxuYXN5bmMgZnVuY3Rpb24gZW5zdXJlSW52b2NhYmxlU2NyaXB0c0ZvbGRlcihhcHA6IEFwcCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBpbnZvY2FibGVTY3JpcHRzRm9sZGVyUGF0aCA9IGpvaW4oQ09ERV9TQ1JJUFRfVE9PTEtJVF9NT0RVTEVTX1JPT1QsIENPREVfU0NSSVBUX1RPT0xLSVRfU0VUVElOR1MuaW52b2NhYmxlU2NyaXB0c0ZvbGRlcik7XG4gIGlmICghYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIuZXhpc3RzKGludm9jYWJsZVNjcmlwdHNGb2xkZXJQYXRoKSkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLm1rZGlyKGludm9jYWJsZVNjcmlwdHNGb2xkZXJQYXRoKTtcbiAgfVxufVxuXG4vLyBSZWFkcyB0aGUgcGx1Z2luIHRoZSB2YXVsdCBkZW1vbnN0cmF0ZXMgb3V0IG9mIHRoaXMgaGVscGVyJ3Mgb3duIGBkYXRhLmpzb25gLCB3cml0dGVuIGJ5IHRoZVxuLy8gcGFja2FnaW5nIHN0ZXAgKHNlZSBgRGVtb1ZhdWx0SGVscGVyU2V0dGluZ3NgKS4gQSB2YXVsdCB3aXRob3V0IGEgcmVhZGFibGUgbWFya2VyIHdhcyBub3QgcHJvZHVjZWQgYnlcbi8vIHRoYXQgc3RlcCDigJQgaGFuZC1hc3NlbWJsZWQsIG9yIHVucGFja2VkIGZyb20gc29tZXRoaW5nIHRoYXQgaXMgbm90IGEgZGVtbyB2YXVsdCDigJQgc28gaXQgaXMgcmVmdXNlZFxuLy8gcmF0aGVyIHRoYW4gYm9vdHN0cmFwcGVkIGFnYWluc3QgYSBndWVzcy5cbmFzeW5jIGZ1bmN0aW9uIGdldERlbW9lZFBsdWdpbklkKGFwcDogQXBwKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qgc2V0dGluZ3NQYXRoID0gam9pbihhcHAudmF1bHQuY29uZmlnRGlyLCBQTFVHSU5TX0ZPTERFUl9OQU1FLCBERU1PX1ZBVUxUX0hFTFBFUl9QTFVHSU5fSUQsIERBVEFfSlNPTl9GSUxFX05BTUUpO1xuICBpZiAoIWF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLmV4aXN0cyhzZXR0aW5nc1BhdGgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKElOVkFMSURfREVNT19WQVVMVF9FUlJPUl9NRVNTQUdFKTtcbiAgfVxuXG4gIGxldCBwYXJzZWQ6IHVua25vd247XG4gIHRyeSB7XG4gICAgcGFyc2VkID0gSlNPTi5wYXJzZShhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5yZWFkKHNldHRpbmdzUGF0aCkpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IG5ldyBFcnJvcihJTlZBTElEX0RFTU9fVkFVTFRfRVJST1JfTUVTU0FHRSwgeyBjYXVzZTogZXJyb3IgfSk7XG4gIH1cblxuICBjb25zdCBkZW1vZWRQbHVnaW5JZCA9IChwYXJzZWQgYXMgbnVsbCB8IFBhcnRpYWw8RGVtb1ZhdWx0SGVscGVyU2V0dGluZ3M+KT8uZGVtb2VkUGx1Z2luSWQ7XG4gIGlmICh0eXBlb2YgZGVtb2VkUGx1Z2luSWQgIT09ICdzdHJpbmcnIHx8IGRlbW9lZFBsdWdpbklkID09PSBFTVBUWSkge1xuICAgIHRocm93IG5ldyBFcnJvcihJTlZBTElEX0RFTU9fVkFVTFRfRVJST1JfTUVTU0FHRSk7XG4gIH1cbiAgcmV0dXJuIGRlbW9lZFBsdWdpbklkO1xufVxuXG4vLyBUZWxscyB0aGUgdXNlciB0aGlzIHZhdWx0IGlzIGEgc2FuZGJveCwgdXNpbmcgT2JzaWRpYW4ncyBvd24gc2FuZGJveC12YXVsdCB0cmVhdG1lbnQ6IGFuIGluZmluaXRlXG4vLyBkdXJhdGlvbiwgZGlzbWlzc2VkIGJ5IGNsaWNraW5nIGl0LiBSYWlzZWQgbGFzdCwgc28gaXQgaXMgdGhlIG5ld2VzdCBub3RpY2Ugb24gc2NyZWVuIG9uY2Vcbi8vIGBDb2RlU2NyaXB0IFRvb2xraXRgJ3Mgc3RhcnR1cCBzY3JpcHQgaGFzIGRvbmUgaXRzIG93biB3b3JrLlxuLy9cbi8vIEEgYE5vdGljZWAgaXMgYnVpbHQgaW5zaWRlIHdoYXRldmVyIHdpbmRvdyBpcyBhY3RpdmUgYXQgdGhhdCBtb21lbnQsIGFuZCBTZXR0aW5ncyBpcyBhIFBPUE9VVCBXSU5ET1dcbi8vICh2ZXJpZmllZCBvbiAxLjEzLjYpIHRoYXQgYmVjb21lcyB0aGUgYWN0aXZlIG9uZSB3aGlsZSBpdCBpcyBvcGVuIOKAlCBzbyBhIG5vdGljZSByYWlzZWQgdGhlbiB3b3VsZCBiZVxuLy8gY3JlYXRlZCBpbiB0aGUgc2V0dGluZ3Mgd2luZG93IGFuZCB2YW5pc2ggd2l0aCBpdC4gYGJvb3RzdHJhcERlbW9WYXVsdGAgYWxyZWFkeSBjbG9zZWQgU2V0dGluZ3MgYmVmb3JlXG4vLyBlbmFibGluZyBhbnl0aGluZywgYnV0IGEgcGx1Z2luIGVuYWJsZWQgc2luY2UgbWF5IGhhdmUgb3BlbmVkIGl0IGFnYWluLCBzbyBpdCBpcyBjbG9zZWQgb25jZSBtb3JlIGhlcmU6XG4vLyBPYnNpZGlhbiBoYW5kcyB0aGUgbWFpbiB3aW5kb3cgYmFjayBhcyB0aGUgcG9wb3V0IGdvZXMgYXdheSAoc3luY2hyb25vdXNseSwgYmVmb3JlIHRoZSBub3RpY2UgaXMgYnVpbHQpLFxuLy8gYW5kIGEgdXNlciB3aG8gaGFzIGp1c3Qgb3BlbmVkIGEgZGVtbyB2YXVsdCB3YW50cyB0byBzZWUgdGhlIHZhdWx0IHJhdGhlciB0aGFuIGEgc2V0dGluZ3Mgd2luZG93IGFueXdheS5cbi8vIENsb3NpbmcgYW4gYWxyZWFkeS1jbG9zZWQgU2V0dGluZ3MgaXMgYSBuby1vcCwgc28gbm8gb3Blbi1zdGF0ZSBwcm9iZSBpcyBuZWVkZWQuXG5mdW5jdGlvbiBzaG93U2FuZGJveE5vdGljZShhcHA6IEFwcCwgZGVtb2VkUGx1Z2luSWQ6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBwbHVnaW5OYW1lID0gYXBwLnBsdWdpbnMubWFuaWZlc3RzW2RlbW9lZFBsdWdpbklkXT8ubmFtZSA/PyBkZW1vZWRQbHVnaW5JZDtcbiAgY29uc3QgZnJhZ21lbnQgPSBidWlsZFNhbmRib3hOb3RpY2VGcmFnbWVudChwbHVnaW5OYW1lKTtcbiAgYXBwLnNldHRpbmcuY2xvc2UoKTtcbiAgbmV3IE5vdGljZShmcmFnbWVudCwgU0FOREJPWF9OT1RJQ0VfRFVSQVRJT05fSU5fTUlMTElTRUNPTkRTKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5Q0EsU0FBUyxZQUFZO0FBQ3JCLFNBQVMsYUFBYTtBQUN0QixTQUFTLGNBQWM7QUFJdkI7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyx1QkFBdUI7QUErRGhDLE1BQU0sZ0NBQWdDO0FBQ3RDLE1BQU0sbUNBQW1DO0FBQ3pDLE1BQU0sK0JBQTBEO0FBQUEsRUFDOUQseUJBQXlCO0FBQUEsRUFDekIsd0JBQXdCO0FBQUEsRUFDeEIsYUFBYTtBQUFBLEVBQ2IsMEJBQTBCO0FBQUEsRUFDMUIsbUJBQW1CO0FBQ3JCO0FBRUEsTUFBTSx5QkFBeUI7QUFLL0IsTUFBTSx3QkFBNkM7QUFBQSxFQUNqRCxnQkFBZ0I7QUFBQSxFQUNoQixnQkFBZ0I7QUFBQSxFQUNoQixpQkFBaUI7QUFDbkI7QUFFQSxNQUFNLDhCQUE4QjtBQUNwQyxNQUFNLHNCQUFzQjtBQUM1QixNQUFNLHNCQUFzQjtBQUM1QixNQUFNLG1DQUFtQztBQUN6QyxNQUFNLCtCQUErQjtBQUdyQyxNQUFNLDBDQUEwQztBQW1CaEQsZUFBc0IsbUJBQW1CLFFBQWlEO0FBQ3hGLFFBQU0sRUFBRSxJQUFJLElBQUk7QUFFaEIsUUFBTSxpQkFBaUIsTUFBTSxrQkFBa0IsR0FBRztBQUNsRCxxQ0FBbUMsR0FBRztBQUN0QyxRQUFNLHVCQUF1QixFQUFFLEtBQUssVUFBVSw4QkFBOEIsQ0FBQztBQUM3RSxRQUFNLFNBQVMsTUFBTSx5QkFBeUI7QUFBQSxJQUM1QztBQUFBLElBQ0EsVUFBVTtBQUFBLElBQ1YsVUFBVTtBQUFBLEVBQ1osQ0FBQztBQUNELFFBQU0sNkJBQTZCLEdBQUc7QUFFdEMsTUFBSSxDQUFDLElBQUksUUFBUSxlQUFlLElBQUksNkJBQTZCLEdBQUc7QUFDbEUsVUFBTSxzQkFBc0IsRUFBRSxLQUFLLFVBQVUsOEJBQThCLENBQUM7QUFBQSxFQUM5RSxXQUFXLFdBQVcsK0JBQStCLFNBQVM7QUFFNUQsVUFBTSx1QkFBdUIsRUFBRSxLQUFLLFVBQVUsOEJBQThCLENBQUM7QUFDN0UsVUFBTSxzQkFBc0IsRUFBRSxLQUFLLFVBQVUsOEJBQThCLENBQUM7QUFBQSxFQUM5RTtBQUlBLFFBQU0sc0NBQXNDO0FBQUEsSUFDMUM7QUFBQSxJQUNBLFVBQVU7QUFBQSxJQUNWLFVBQVU7QUFBQSxFQUNaLENBQUM7QUFFRCxvQkFBa0IsS0FBSyxjQUFjO0FBQ3ZDO0FBUUEsU0FBUywyQkFBMkIsWUFBc0M7QUFDeEUsU0FBTyxlQUFlLENBQUMsYUFBYTtBQUNsQyxhQUFTLFdBQVcsMkJBQTJCO0FBQy9DLG9CQUFnQixVQUFVLFVBQVU7QUFDcEMsYUFBUyxXQUFXLEdBQUc7QUFFdkIsYUFBUyxTQUFTLElBQUk7QUFDdEIsYUFBUyxXQUFXLHdGQUF3RjtBQUU1RyxhQUFTLFNBQVMsSUFBSTtBQUN0QixhQUFTLFdBQVcsWUFBWTtBQUNoQyxhQUFTLFNBQVMsS0FBSyxFQUFFLE1BQU0sR0FBRyxVQUFVLEtBQUssNEJBQTRCLEdBQUcsQ0FBQztBQUNqRixhQUFTLFdBQVcsd0dBQXdHO0FBQUEsRUFDOUgsQ0FBQztBQUNIO0FBVUEsU0FBUyxtQ0FBbUMsS0FBZ0I7QUFDMUQsTUFBSSxRQUFRLE1BQU07QUFDcEI7QUFLQSxlQUFlLDZCQUE2QixLQUF5QjtBQUNuRSxRQUFNLDZCQUE2QixLQUFLLGtDQUFrQyw2QkFBNkIsc0JBQXNCO0FBQzdILE1BQUksQ0FBQyxNQUFNLElBQUksTUFBTSxRQUFRLE9BQU8sMEJBQTBCLEdBQUc7QUFDL0QsVUFBTSxJQUFJLE1BQU0sUUFBUSxNQUFNLDBCQUEwQjtBQUFBLEVBQzFEO0FBQ0Y7QUFNQSxlQUFlLGtCQUFrQixLQUEyQjtBQUMxRCxRQUFNLGVBQWUsS0FBSyxJQUFJLE1BQU0sV0FBVyxxQkFBcUIsNkJBQTZCLG1CQUFtQjtBQUNwSCxNQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sUUFBUSxPQUFPLFlBQVksR0FBRztBQUNqRCxVQUFNLElBQUksTUFBTSxnQ0FBZ0M7QUFBQSxFQUNsRDtBQUVBLE1BQUk7QUFDSixNQUFJO0FBQ0YsYUFBUyxLQUFLLE1BQU0sTUFBTSxJQUFJLE1BQU0sUUFBUSxLQUFLLFlBQVksQ0FBQztBQUFBLEVBQ2hFLFNBQVMsT0FBTztBQUNkLFVBQU0sSUFBSSxNQUFNLGtDQUFrQyxFQUFFLE9BQU8sTUFBTSxDQUFDO0FBQUEsRUFDcEU7QUFFQSxRQUFNLGlCQUFrQixRQUFvRDtBQUM1RSxNQUFJLE9BQU8sbUJBQW1CLFlBQVksbUJBQW1CLE9BQU87QUFDbEUsVUFBTSxJQUFJLE1BQU0sZ0NBQWdDO0FBQUEsRUFDbEQ7QUFDQSxTQUFPO0FBQ1Q7QUFhQSxTQUFTLGtCQUFrQixLQUFVLGdCQUE4QjtBQUNqRSxRQUFNLGFBQWEsSUFBSSxRQUFRLFVBQVUsY0FBYyxHQUFHLFFBQVE7QUFDbEUsUUFBTSxXQUFXLDJCQUEyQixVQUFVO0FBQ3RELE1BQUksUUFBUSxNQUFNO0FBQ2xCLE1BQUksT0FBTyxVQUFVLHVDQUF1QztBQUM5RDsiLCJuYW1lcyI6W119
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZW1vLXZhdWx0LWhlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQm9vdHN0cmFwcyBhIGRlbW8gdmF1bHQgYnkgaW5zdGFsbGluZywgY29uZmlndXJpbmcsIGFuZCBlbmFibGluZyBgQ29kZVNjcmlwdCBUb29sa2l0YC5cbiAqXG4gKiBBIHBsdWdpbidzIGRlbW8gdmF1bHQgc2hvd2Nhc2VzIHRoZSBwbHVnaW4gdGhyb3VnaCBub3RlcyB3aG9zZSBgY29kZS1idXR0b25gcyBydW4gVHlwZVNjcmlwdCB2aWFcbiAqIGBDb2RlU2NyaXB0IFRvb2xraXRgLiBBIGRlbW8gdmF1bHQgdGhhdCBkb2VzIG5vdCBpdHNlbGYgc2hpcCBgQ29kZVNjcmlwdCBUb29sa2l0YCB0aGVyZWZvcmUgbmVlZHMgaXRcbiAqIGluc3RhbGxlZCwgY29uZmlndXJlZCwgYW5kIGVuYWJsZWQgYmVmb3JlIHRob3NlIGJ1dHRvbnMgd29yay4ge0BsaW5rIGJvb3RzdHJhcERlbW9WYXVsdH0gZG9lcyBleGFjdGx5XG4gKiB0aGF0IHdpdGggbm8gY29tbWl0dGVkIGBDb2RlU2NyaXB0IFRvb2xraXRgIGNvbmZpZyBhbmQgbm8gbWFudWFsIHNldHVwLCBzbyBpdCBjYW4gYmUgZHJpdmVuIGZyb20gYSB0aW55XG4gKiBjb21taXR0ZWQgYm9vdHN0cmFwIHBsdWdpbiAoYGRlbW8tdmF1bHQtaGVscGVyYCkgdGhhdCBpcyBpbmplY3RlZCBpbnRvIGV2ZXJ5IGRlbW8gdmF1bHQgYXQgcmVsZWFzZVxuICogdGltZS5cbiAqXG4gKiBUaGUgcGx1Z2luIHRoZSB2YXVsdCBkZW1vbnN0cmF0ZXMgaXMgcmVhZCBmcm9tIHRoZSBoZWxwZXIncyBvd24gYGRhdGEuanNvbmAsIHdyaXR0ZW4gYnkgdGhlIHBhY2thZ2luZ1xuICogc3RlcCAoe0BsaW5rIERlbW9WYXVsdEhlbHBlclNldHRpbmdzfSk7IGEgdmF1bHQgd2l0aG91dCB0aGF0IG1hcmtlciBpcyByZWZ1c2VkIGFzIG5vdCBhIGRlbW8gdmF1bHQuXG4gKlxuICogU2V0dGluZ3MgaXMgY2xvc2VkIHJpZ2h0IGJlZm9yZSBlYWNoIHBsdWdpbiBpcyBlbmFibGVkLiBBZnRlciB0aGUgdHJ1c3QgcHJvbXB0IE9ic2lkaWFuIG9wZW5zIFNldHRpbmdzIGFzXG4gKiBhIHBvcG91dCB3aW5kb3cgd2hpbGUgdGhlIGJvb3RzdHJhcCBpcyBhbHJlYWR5IHJ1bm5pbmcsIGFuZCBhIHJlYWRpbmcgdmlldyByZS1yZW5kZXJlZCB3aGlsZSB0aGF0IHBvcG91dFxuICogaXMgdGhlIGFjdGl2ZSB3aW5kb3cgcXVldWVzIGl0cyByZW5kZXIgb24gdGhlIHBvcG91dCdzIGFuaW1hdGlvbiBmcmFtZSDigJQgd2hpY2ggbmV2ZXIgZmlyZXMgb25jZSB0aGVcbiAqIHBvcG91dCBjbG9zZXMsIGxlYXZpbmcgdGhlIHN0YXJ0IG5vdGUgYmxhbmsgdW50aWwgaXRzIHRhYiBpcyByZW9wZW5lZC5cbiAqXG4gKiBJdCB3cml0ZXMgYENvZGVTY3JpcHQgVG9vbGtpdGAncyBzZXR0aW5ncyBCRUZPUkUgZW5hYmxpbmcgaXQsIHNvIHRoZSBwbHVnaW4gbG9hZHMgYWxyZWFkeSBjb25maWd1cmVkIOKAlFxuICogbm8gcmVsb2FkLiBgQ29kZVNjcmlwdCBUb29sa2l0YCB0aGVuIHJ1bnMgdGhlIHZhdWx0J3MgYHN0YXJ0dXAudHNgICh2aWEgaXRzIGBzdGFydHVwU2NyaXB0UGF0aGBcbiAqIHNldHRpbmcpLCB3aGljaCBpcyB3aGVyZSBlYWNoIHZhdWx0IG9wZW5zIGl0cyBzdGFydCBub3RlIGFuZCBkb2VzIGFueSBwbHVnaW4tc3BlY2lmaWMgc2V0dXAuXG4gKlxuICogSXQgYWxzbyBjcmVhdGVzIGBDb2RlU2NyaXB0IFRvb2xraXRgJ3MgaW52b2NhYmxlLXNjcmlwdHMgZm9sZGVyIGlmIGl0IGlzIG1pc3NpbmcsIHNvIGV2ZXJ5IGRlbW8gdmF1bHRcbiAqIGhhcyB0aGUgc2FtZSBsYXlvdXQgZXZlbiB3aGVuIHRoZSB2YXVsdCBzaGlwcyBubyBpbnZvY2FibGUgc2NyaXB0cyDigJQgdGhlIHZhdWx0cyB0aGVtc2VsdmVzIGNvbW1pdCBub1xuICogZW1wdHkgZm9sZGVyIGZvciBpdC5cbiAqXG4gKiBJdCB0aGVuIGluc3RhbGxzIHRoZSBgRm9sZGVyIE5vdGVzYCBwbHVnaW4sIGNvbmZpZ3VyZWQgdG8gdHJlYXQgYFJFQURNRS5tZGAgYXMgYSBmb2xkZXIncyBvd24gbm90ZS4gQVxuICogZGVtbyB2YXVsdCB0aGF0IGhhcyBvdXRncm93biBhIGZsYXQgbm90ZSBsaXN0IGdyb3VwcyBpdHMgbm90ZXMgaW50byBmb2xkZXJzLCBhbmQgYSBncm91cCBmb2xkZXIgb25seVxuICogc2F5cyB3aGF0IGl0IGlzIGZvciBpZiBpdCBoYXMgYSBub3RlIG9mIGl0cyBvd24g4oCUIGBSRUFETUUubWRgLCBiZWNhdXNlIHRoYXQgaXMgYWxzbyB0aGUgZmlsZSBHaXRIdWJcbiAqIHJlbmRlcnMgdW5kZXIgdGhlIGZpbGUgbGlzdCB3aGVuIHRoZSBzYW1lIHZhdWx0IGlzIGJyb3dzZWQgYXMgYSByZXBvc2l0b3J5LCBzbyBvbmUgZmlsZSBzZXJ2ZXMgYm90aFxuICogcmVhZGVycy5cbiAqXG4gKiBGaW5hbGx5IGl0IHJhaXNlcyB0aGUgc2FuZGJveCBub3RpY2UgZXhwbGFpbmluZyB0aGF0IHRoZSBvcGVuZWQgdmF1bHQgaXMgYSB0aHJvd2F3YXkgY29weSwgc28gYSB1c2VyXG4gKiB3aG8gd3JpdGVzIHRoZWlyIG93biBub3RlcyBpbiBpdCBpcyBuZXZlciBzdXJwcmlzZWQgYnkgdGhlbSBiZWluZyBhYnNlbnQgZnJvbSB0aGUgbmV4dCBjb3B5LiBTZXR0aW5nc1xuICogaXMgY2xvc2VkIGZpcnN0LCBzbyB0aGUgbm90aWNlIGxhbmRzIGluIHRoZSB2YXVsdCdzIG1haW4gd2luZG93IHJhdGhlciB0aGFuIGluIHRoZSBzZXR0aW5ncyBwb3BvdXQuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGpvaW4gfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQgeyBFTVBUWSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9zdHJpbmcnO1xuaW1wb3J0IHsgTm90aWNlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IERlbW9WYXVsdEhlbHBlclNldHRpbmdzIH0gZnJvbSAnLi9kZW1vLXZhdWx0LWhlbHBlci1zZXR0aW5ncy50cyc7XG5cbmltcG9ydCB7XG4gIGNvbmZpZ3VyZUNvbW11bml0eVBsdWdpbixcbiAgQ29uZmlndXJlQ29tbXVuaXR5UGx1Z2luUmVzdWx0LFxuICBkaXNhYmxlQ29tbXVuaXR5UGx1Z2luLFxuICBlbmFibGVDb21tdW5pdHlQbHVnaW4sXG4gIGluc3RhbGxDb21tdW5pdHlQbHVnaW5cbn0gZnJvbSAnLi9jb21tdW5pdHktcGx1Z2lucy50cyc7XG5pbXBvcnQgeyBhcHBlbmRDb2RlQmxvY2sgfSBmcm9tICcuL2h0bWwtZWxlbWVudC50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGJvb3RzdHJhcERlbW9WYXVsdH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQm9vdHN0cmFwRGVtb1ZhdWx0UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcbn1cblxuLyoqXG4gKiBgQ29kZVNjcmlwdCBUb29sa2l0YCdzIHNldHRpbmdzLCB3cml0dGVuIGludG8gaXRzIGBkYXRhLmpzb25gIGJlZm9yZSBpdCBpcyBlbmFibGVkLlxuICovXG5pbnRlcmZhY2UgQ29kZVNjcmlwdFRvb2xraXRTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBUaGUgWUFNTCBmcm9udG1hdHRlciBtZXJnZWQgaW50byBldmVyeSBgY29kZS1idXR0b25gIGJsb2NrJ3Mgb3duIGNvbmZpZywgdXNlZCBoZXJlIHRvIHR1cm4gdGhlXG4gICAqIHNvdXJjZSB2aWV3ZXIgb24gZm9yIGV2ZXJ5IGJ1dHRvbiBpbiBldmVyeSBkZW1vIHZhdWx0IHdpdGhvdXQgZWRpdGluZyBhIHNpbmdsZSBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdENvZGVCdXR0b25Db25maWc6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGZvbGRlciAodW5kZXIge0BsaW5rIENvZGVTY3JpcHRUb29sa2l0U2V0dGluZ3MubW9kdWxlc1Jvb3R9KSBob2xkaW5nIGludm9jYWJsZSBzY3JpcHRzLlxuICAgKi9cbiAgcmVhZG9ubHkgaW52b2NhYmxlU2NyaXB0c0ZvbGRlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmF1bHQtcmVsYXRpdmUgZm9sZGVyIHRoYXQgYHJlcXVpcmUoJy/igKYnKWAgcmVzb2x2ZXMgbW9kdWxlIHBhdGhzIGFnYWluc3QuXG4gICAqL1xuICByZWFkb25seSBtb2R1bGVzUm9vdDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGBDb2RlU2NyaXB0IFRvb2xraXRgIGhhbmRsZXMgYG9ic2lkaWFuOi8vYCBwcm90b2NvbCBVUkxzLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkSGFuZGxlUHJvdG9jb2xVcmxzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0aCAodW5kZXIge0BsaW5rIENvZGVTY3JpcHRUb29sa2l0U2V0dGluZ3MubW9kdWxlc1Jvb3R9KSBvZiB0aGUgc2NyaXB0IHJ1biBvbiBsb2FkLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhcnR1cFNjcmlwdFBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBgRm9sZGVyIE5vdGVzYCcgc2V0dGluZ3MsIHdyaXR0ZW4gaW50byBpdHMgYGRhdGEuanNvbmAgYmVmb3JlIGl0IGlzIGVuYWJsZWQuXG4gKi9cbmludGVyZmFjZSBGb2xkZXJOb3Rlc1NldHRpbmdzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIGEgZm9sZGVyJ3Mgb3duIG5vdGUgaXMgbG9va2VkIGZvciB1bmRlciwgd2l0aG91dCB0aGUgZXh0ZW5zaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZm9sZGVyTm90ZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciBhIGZvbGRlcidzIG93biBub3RlIGlzIGhpZGRlbiBmcm9tIHRoZSBmaWxlIGV4cGxvcmVyLCBzbyB0aGUgZm9sZGVyIGl0c2VsZiBzdGFuZHMgZm9yIGl0LlxuICAgKi9cbiAgcmVhZG9ubHkgaGlkZUZvbGRlck5vdGU6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXJlIGEgZm9sZGVyJ3Mgb3duIG5vdGUgaXMga2VwdCwgcmVsYXRpdmUgdG8gdGhlIGZvbGRlciBpdCBkZXNjcmliZXMuXG4gICAqL1xuICByZWFkb25seSBzdG9yYWdlTG9jYXRpb246IHN0cmluZztcbn1cblxuY29uc3QgQ09ERV9TQ1JJUFRfVE9PTEtJVF9QTFVHSU5fSUQgPSAnZml4LXJlcXVpcmUtbW9kdWxlcyc7XG5jb25zdCBDT0RFX1NDUklQVF9UT09MS0lUX01PRFVMRVNfUk9PVCA9ICdfYXNzZXRzL0NvZGVTY3JpcHRUb29sa2l0JztcbmNvbnN0IENPREVfU0NSSVBUX1RPT0xLSVRfU0VUVElOR1M6IENvZGVTY3JpcHRUb29sa2l0U2V0dGluZ3MgPSB7XG4gIGRlZmF1bHRDb2RlQnV0dG9uQ29uZmlnOiAnLS0tXFxuc291cmNlVmlzaWJpbGl0eTogY29sbGFwc2VkXFxuLS0tJyxcbiAgaW52b2NhYmxlU2NyaXB0c0ZvbGRlcjogJ0ludm9jYWJsZXMnLFxuICBtb2R1bGVzUm9vdDogQ09ERV9TQ1JJUFRfVE9PTEtJVF9NT0RVTEVTX1JPT1QsXG4gIHNob3VsZEhhbmRsZVByb3RvY29sVXJsczogdHJ1ZSxcbiAgc3RhcnR1cFNjcmlwdFBhdGg6ICdzdGFydHVwLnRzJ1xufTtcblxuY29uc3QgRk9MREVSX05PVEVTX1BMVUdJTl9JRCA9ICdmb2xkZXItbm90ZXMnO1xuLy8gYFJFQURNRWAgcmF0aGVyIHRoYW4gYEZvbGRlciBOb3Rlc2AnIG93biBge3tmb2xkZXJfbmFtZX19YCBkZWZhdWx0OiB0aGUgc2FtZSBmaWxlIGhhcyB0byBiZSB0aGUgZm9sZGVyJ3Ncbi8vIG5vdGUgaW4gT2JzaWRpYW4gQU5EIHRoZSBwYWdlIEdpdEh1YiByZW5kZXJzIHdoZW4gdGhlIHZhdWx0IGlzIGJyb3dzZWQgYXMgYSByZXBvc2l0b3J5LCBhbmQgR2l0SHViXG4vLyBvbmx5IGRvZXMgdGhhdCBmb3IgYFJFQURNRS5tZGAuIGBpbnNpZGVGb2xkZXJgIGtlZXBzIGl0IHdpdGggdGhlIG5vdGVzIGl0IGRlc2NyaWJlcyByYXRoZXIgdGhhbiBiZXNpZGVcbi8vIHRoZSBmb2xkZXIsIGFuZCBoaWRpbmcgaXQgbGV0cyB0aGUgZm9sZGVyIGl0c2VsZiBzdGFuZCBmb3IgdGhlIG5vdGUgaW5zdGVhZCBvZiBsaXN0aW5nIGJvdGguXG5jb25zdCBGT0xERVJfTk9URVNfU0VUVElOR1M6IEZvbGRlck5vdGVzU2V0dGluZ3MgPSB7XG4gIGZvbGRlck5vdGVOYW1lOiAnUkVBRE1FJyxcbiAgaGlkZUZvbGRlck5vdGU6IHRydWUsXG4gIHN0b3JhZ2VMb2NhdGlvbjogJ2luc2lkZUZvbGRlcidcbn07XG5cbmNvbnN0IERFTU9fVkFVTFRfSEVMUEVSX1BMVUdJTl9JRCA9ICdkZW1vLXZhdWx0LWhlbHBlcic7XG5jb25zdCBQTFVHSU5TX0ZPTERFUl9OQU1FID0gJ3BsdWdpbnMnO1xuY29uc3QgREFUQV9KU09OX0ZJTEVfTkFNRSA9ICdkYXRhLmpzb24nO1xuY29uc3QgSU5WQUxJRF9ERU1PX1ZBVUxUX0VSUk9SX01FU1NBR0UgPSAnSW52YWxpZCBkZW1vIHZhdWx0JztcbmNvbnN0IE9QRU5fREVNT19WQVVMVF9DT01NQU5EX05BTUUgPSAnT3BlbiBkZW1vIHZhdWx0Jztcbi8vIGAwYCBhc2tzIE9ic2lkaWFuIHRvIGtlZXAgdGhlIG5vdGljZSB1cCB1bnRpbCB0aGUgdXNlciBjbGlja3MgaXQg4oCUIHRoZSBzYW1lIHRyZWF0bWVudCBPYnNpZGlhbiBnaXZlc1xuLy8gaXRzIG93biBzYW5kYm94LXZhdWx0IG5vdGljZSwgYW5kIHdoYXQgdGhlIGRlbW8tdmF1bHQgbm90aWNlIGlzIG1vZGVsbGVkIG9uLlxuY29uc3QgU0FOREJPWF9OT1RJQ0VfRFVSQVRJT05fSU5fTUlMTElTRUNPTkRTID0gMDtcblxuLyoqXG4gKiBCb290c3RyYXBzIGEgZGVtbyB2YXVsdCBzbyBpdHMgbm90ZXMnIGBjb2RlLWJ1dHRvbmBzIHdvcmsgd2l0aCBubyBtYW51YWwgc2V0dXAuIEl0IGluc3RhbGxzIENvZGVTY3JpcHRcbiAqIFRvb2xraXQgZnJvbSB0aGUgY29tbXVuaXR5IHN0b3JlIChpZiBpdCBpcyBub3QgYWxyZWFkeSBpbnN0YWxsZWQpLCB3cml0ZXMgaXRzIHNldHRpbmdzLCB0aGVuIGVuYWJsZXNcbiAqIGl0IOKAlCBjbG9zaW5nIFNldHRpbmdzIHJpZ2h0IGJlZm9yZSBlYWNoIGVuYWJsZSwgc28gbm8gcmVhZGluZyB2aWV3IHF1ZXVlcyBhIHJlLXJlbmRlciBvbiB0aGUgc2V0dGluZ3NcbiAqIHBvcG91dCdzIGFuaW1hdGlvbiBmcmFtZSwgYW5kIHdyaXRpbmcgdGhlIHNldHRpbmdzIEJFRk9SRSBlbmFibGluZyBzbyBhIGZyZXNoIGVuYWJsZSBsb2FkcyBpdCBhbHJlYWR5IGNvbmZpZ3VyZWQsIHdpdGggbm9cbiAqIHJlbG9hZC4gSWYgYENvZGVTY3JpcHQgVG9vbGtpdGAgaXMgYWxyZWFkeSBlbmFibGVkIGJ1dCB0aGUgc2V0dGluZ3MganVzdCBjaGFuZ2VkLCBpdCBpcyByZWxvYWRlZFxuICogKGRpc2FibGVkIHRoZW4gZW5hYmxlZCkgc28gaXQgcmUtcmVhZHMgYGRhdGEuanNvbmA7IHdoZW4gdGhlIHNldHRpbmdzIHdlcmUgYWxyZWFkeSBpbiBwbGFjZSwgbm90aGluZyBpc1xuICogcmVsb2FkZWQgKHNvIGEgcm91dGluZSB2YXVsdCByZS1vcGVuIGRvZXMgbm90IHJlLXJ1biBgQ29kZVNjcmlwdCBUb29sa2l0YCdzIHN0YXJ0dXApLiBgQ29kZVNjcmlwdCBUb29sa2l0YFxuICogdGhlbiBydW5zIHRoZSB2YXVsdCdzIGBzdGFydHVwLnRzYC4gYEZvbGRlciBOb3Rlc2AgaXMgaW5zdGFsbGVkIG5leHQsIGNvbmZpZ3VyZWQgdG8gdHJlYXQgYFJFQURNRS5tZGAgYXNcbiAqIGEgZm9sZGVyJ3Mgb3duIG5vdGUsIHNvIGEgdmF1bHQgd2hvc2Ugbm90ZXMgYXJlIGdyb3VwZWQgaW50byBmb2xkZXJzIGRlc2NyaWJlcyBlYWNoIGdyb3VwIGluIHRoZSBmaWxlXG4gKiBleHBsb3Jlci4gRmluYWxseSBpdCBjbG9zZXMgU2V0dGluZ3MgYWdhaW4gKHNvIHRoZSBub3RpY2UgY2Fubm90IGJlIHJhaXNlZCBpbnNpZGUgdGhlIHNldHRpbmdzIHBvcG91dCkgYW5kXG4gKiByYWlzZXMgdGhlIHNhbmRib3ggbm90aWNlIGRlc2NyaWJpbmcgdGhlIG9wZW5lZCB2YXVsdCBhcyBhIHRocm93YXdheSBjb3B5LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIEJvb3RzdHJhcERlbW9WYXVsdFBhcmFtc30uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgYENvZGVTY3JpcHQgVG9vbGtpdGAgaXMgaW5zdGFsbGVkLCBjb25maWd1cmVkLCBhbmQgZW5hYmxlZFxuICogYW5kIHRoZSBzYW5kYm94IG5vdGljZSBoYXMgYmVlbiBzaG93bi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJvb3RzdHJhcERlbW9WYXVsdChwYXJhbXM6IEJvb3RzdHJhcERlbW9WYXVsdFBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGFwcCB9ID0gcGFyYW1zO1xuICAvLyBSZXNvbHZlZCBmaXJzdCwgc28gYSB2YXVsdCB0aGF0IGlzIG5vdCBhIGRlbW8gdmF1bHQgaXMgcmVmdXNlZCBiZWZvcmUgYW55dGhpbmcgaXMgaW5zdGFsbGVkIGludG8gaXQuXG4gIGNvbnN0IGRlbW9lZFBsdWdpbklkID0gYXdhaXQgZ2V0RGVtb2VkUGx1Z2luSWQoYXBwKTtcbiAgYXdhaXQgaW5zdGFsbENvbW11bml0eVBsdWdpbih7IGFwcCwgcGx1Z2luSWQ6IENPREVfU0NSSVBUX1RPT0xLSVRfUExVR0lOX0lEIH0pO1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBjb25maWd1cmVDb21tdW5pdHlQbHVnaW4oe1xuICAgIGFwcCxcbiAgICBwbHVnaW5JZDogQ09ERV9TQ1JJUFRfVE9PTEtJVF9QTFVHSU5fSUQsXG4gICAgc2V0dGluZ3M6IENPREVfU0NSSVBUX1RPT0xLSVRfU0VUVElOR1NcbiAgfSk7XG4gIGF3YWl0IGVuc3VyZUludm9jYWJsZVNjcmlwdHNGb2xkZXIoYXBwKTtcbiAgLy8gUmVsb2FkZWQgd2hlbiBhbHJlYWR5IGVuYWJsZWQgd2l0aCBzdGFsZSBzZXR0aW5ncywgc28gYENvZGVTY3JpcHQgVG9vbGtpdGAgcmUtcmVhZHMgdGhlIGZyZXNobHkgd3JpdHRlbiBkYXRhLmpzb24uXG4gIGF3YWl0IGVuYWJsZU9yUmVsb2FkUGx1Z2luKGFwcCwgQ09ERV9TQ1JJUFRfVE9PTEtJVF9QTFVHSU5fSUQsIHJlc3VsdCA9PT0gQ29uZmlndXJlQ29tbXVuaXR5UGx1Z2luUmVzdWx0LlN1Y2Nlc3MpO1xuXG4gIC8vIEFmdGVyIGBDb2RlU2NyaXB0IFRvb2xraXRgLCBzbyB0aGUgdmF1bHQncyBzdGFydHVwIHNjcmlwdCBoYXMgYWxyZWFkeSBvcGVuZWQgdGhlIHN0YXJ0IG5vdGUgYnkgdGhlIHRpbWVcbiAgLy8gdGhlIGZpbGUgZXhwbG9yZXIgZ2FpbnMgaXRzIGZvbGRlci1ub3RlIGJlaGF2aW9yLlxuICBhd2FpdCBpbnN0YWxsQ29tbXVuaXR5UGx1Z2luKHsgYXBwLCBwbHVnaW5JZDogRk9MREVSX05PVEVTX1BMVUdJTl9JRCB9KTtcbiAgY29uc3QgZm9sZGVyTm90ZXNSZXN1bHQgPSBhd2FpdCBjb25maWd1cmVDb21tdW5pdHlQbHVnaW4oe1xuICAgIGFwcCxcbiAgICBwbHVnaW5JZDogRk9MREVSX05PVEVTX1BMVUdJTl9JRCxcbiAgICBzZXR0aW5nczogRk9MREVSX05PVEVTX1NFVFRJTkdTXG4gIH0pO1xuICBhd2FpdCBlbmFibGVPclJlbG9hZFBsdWdpbihhcHAsIEZPTERFUl9OT1RFU19QTFVHSU5fSUQsIGZvbGRlck5vdGVzUmVzdWx0ID09PSBDb25maWd1cmVDb21tdW5pdHlQbHVnaW5SZXN1bHQuU3VjY2Vzcyk7XG5cbiAgc2hvd1NhbmRib3hOb3RpY2UoYXBwLCBkZW1vZWRQbHVnaW5JZCk7XG59XG5cbi8vIEJ1aWxkcyB0aGUgc2FuZGJveCBub3RpY2UgY29udGVudDogd2hhdCB0aGlzIHZhdWx0IGlzLCB3aGVyZSBpdCBsaXZlcywgaG93IGxvbmcgaXQgbGl2ZXMsIGFuZCB3aHlcbi8vIHJlLXJ1bm5pbmcgdGhlIGNvbW1hbmQgcHJvZHVjZXMgYSB2YXVsdCB3aXRob3V0IHRoZSBub3RlcyBqdXN0IHdyaXR0ZW4gaGVyZS5cbi8vXG4vLyBFdmVyeSBjbGFpbSBoYXMgdG8gc3RheSB0cnVlIG9mIHRoZSBvcGVuZXIgKGBkZXNrdG9wLWRlbW8tdmF1bHQtb3BlbmVyLnRzYCk6IGl0IGV4dHJhY3RzIGEgRlJFU0ggY29weVxuLy8gaW50byBpdHMgb3duIGZvbGRlciBvbiBldmVyeSBvcGVuLCBhbmQgZGVsZXRlcyBleHRyYWN0ZWQgZm9sZGVycyBvbGRlciB0aGFuIGEgZGF5IG9uIGVhY2ggbGF0ZXIgb3Blbi5cbi8vIFNvIHRoZSB2YXVsdCBpcyBhIHRlbXBvcmFyeSBzYW5kYm94IOKAlCBpdCBtdXN0IG5ldmVyIGJlIGRlc2NyaWJlZCBhcyBhIHBsYWNlIHdvcmsgY2FuIGJlIGxlZnQuXG5mdW5jdGlvbiBidWlsZFNhbmRib3hOb3RpY2VGcmFnbWVudChwbHVnaW5OYW1lOiBzdHJpbmcpOiBEb2N1bWVudEZyYWdtZW50IHtcbiAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50KChmcmFnbWVudCkgPT4ge1xuICAgIGZyYWdtZW50LmFwcGVuZFRleHQoJ1RoaXMgaXMgYSBkZW1vIHZhdWx0IGZvciAnKTtcbiAgICBhcHBlbmRDb2RlQmxvY2soZnJhZ21lbnQsIHBsdWdpbk5hbWUpO1xuICAgIGZyYWdtZW50LmFwcGVuZFRleHQoJy4nKTtcblxuICAgIGZyYWdtZW50LmNyZWF0ZUVsKCdicicpO1xuICAgIGZyYWdtZW50LmFwcGVuZFRleHQoJ0l0IGlzIGEgdGVtcG9yYXJ5IHNhbmRib3gsIGNsZWFuZWQgdXAgYXV0b21hdGljYWxseSBhYm91dCBhIGRheSBhZnRlciB5b3UgbGFzdCB1c2UgaXQuJyk7XG5cbiAgICBmcmFnbWVudC5jcmVhdGVFbCgnYnInKTtcbiAgICBmcmFnbWVudC5hcHBlbmRUZXh0KCdFeGVjdXRpbmcgJyk7XG4gICAgZnJhZ21lbnQuY3JlYXRlRWwoJ2InLCB7IHRleHQ6IGAke3BsdWdpbk5hbWV9OiAke09QRU5fREVNT19WQVVMVF9DT01NQU5EX05BTUV9YCB9KTtcbiAgICBmcmFnbWVudC5hcHBlbmRUZXh0KCcgY29tbWFuZCBhZ2FpbiBjcmVhdGVzIGEgbmV3IGNvcHkgd2l0aCB0aGUgbGF0ZXN0IHBsdWdpbiB2ZXJzaW9uLCBzbyB5b3VyIG5vdGVzIHdpbGwgbm90IGFwcGVhciBpbiBpdC4nKTtcbiAgfSk7XG59XG5cbi8vIENsb3NlcyBTZXR0aW5ncywgdGhlbiBlbmFibGVzIHRoZSBwbHVnaW4sIG9yIHJlbG9hZHMgaXQgKGRpc2FibGVzIHRoZW4gZW5hYmxlcykgd2hlbiBpdCBpcyBhbHJlYWR5IGVuYWJsZWRcbi8vIGFuZCBgc2hvdWxkUmVsb2FkSWZFbmFibGVkYCBzYXlzIGl0cyBzZXR0aW5ncyBqdXN0IGNoYW5nZWQuXG4vL1xuLy8gVGhlIGNsb3NlIGlzIGxvYWQtYmVhcmluZywgbm90IGNvc21ldGljLCBhbmQgaXQgaGFzIHRvIGNvbWUgcmlnaHQgYmVmb3JlIEVBQ0ggZW5hYmxlIHJhdGhlciB0aGFuIG9uY2UgYXRcbi8vIHRoZSBzdGFydC4gQSBmcmVzaGx5IG9wZW5lZCBkZW1vIHZhdWx0IGFza3MgdGhlIHVzZXIgdG8gdHJ1c3QgaXRzIGF1dGhvciwgYW5kIHRoZSB0cnVzdCBidXR0b24gcnVuc1xuLy8gYGF3YWl0IGFwcC5wbHVnaW5zLnNldEVuYWJsZSh0cnVlKWAgYW5kIG9ubHkgdGhlbiBgYXBwLnNldHRpbmcub3BlbigpYCAocmVhZCBmcm9tIE9ic2lkaWFuIDEuMTQuNCdzXG4vLyBgYXBwLmpzYCkuIFRoZSBoZWxwZXIgaXMgb25lIG9mIHRoZSBwbHVnaW5zIGBzZXRFbmFibGVgIGxvYWRzLCBhbmQgYG9uTGF5b3V0UmVhZHlgIGNhbGxzIGJhY2sgYXQgb25jZSBvbiBhXG4vLyByZWFkeSBsYXlvdXQsIHNvIHRoZSBib290c3RyYXAgc3RhcnRzIElOU0lERSBgc2V0RW5hYmxlYCwgYmVmb3JlIFNldHRpbmdzIGV4aXN0cy4gU2V0dGluZ3MgdGhlbiBvcGVucyBhcyBhXG4vLyBQT1BPVVQgV0lORE9XIHRoYXQgYmVjb21lcyBgYWN0aXZlV2luZG93YCwgd2hpbGUgdGhlIGJvb3RzdHJhcCBpcyBzdGlsbCBkb3dubG9hZGluZyBwbHVnaW5zLiBFbmFibGluZyBhXG4vLyBwbHVnaW4gdGhhdCByZWdpc3RlcnMgYSBtYXJrZG93biBwb3N0LXByb2Nlc3NvciAoYEZvbGRlciBOb3Rlc2ApIG1ha2VzIGV2ZXJ5IHJlYWRpbmcgdmlldyBgcmVyZW5kZXIodHJ1ZSlgOlxuLy8gaXQgZW1wdGllcyB0aGUgYm9keSBzZWN0aW9ucyBhbmQgcXVldWVzIHRoZSByZW5kZXIgdGhyb3VnaCBgYWN0aXZlV2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZWAuIElmIHRoYXQgaXNcbi8vIHRoZSBTZXR0aW5ncyBwb3BvdXQsIGNsb3NpbmcgaXQgbGF0ZXIgZGVzdHJveXMgdGhlIHdpbmRvdyBiZWZvcmUgdGhlIGZyYW1lIGZpcmVzLCB0aGUgcmVuZGVyZXIncyBxdWV1ZWRcbi8vIGhhbmRsZSBuZXZlciBjbGVhcnMsIGFuZCBldmVyeSBsYXRlciByZW5kZXIgcmVxdWVzdCBpcyBpZ25vcmVkLCBzbyB0aGUgc3RhcnQgbm90ZSBzdGF5cyBibGFuayB1bnRpbCBpdHNcbi8vIHRhYiBpcyBjbG9zZWQuIENsb3NpbmcgU2V0dGluZ3MgcmlnaHQgYmVmb3JlIHRoZSBlbmFibGUgYm9va3MgZXZlcnkgc3VjaCBmcmFtZSBvbiB0aGUgbWFpbiB3aW5kb3cuIENsb3Npbmdcbi8vIGFuIGFscmVhZHktY2xvc2VkIFNldHRpbmdzIGlzIGEgbm8tb3AuXG5hc3luYyBmdW5jdGlvbiBlbmFibGVPclJlbG9hZFBsdWdpbihhcHA6IEFwcCwgcGx1Z2luSWQ6IHN0cmluZywgc2hvdWxkUmVsb2FkSWZFbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGFwcC5zZXR0aW5nLmNsb3NlKCk7XG4gIGlmICghYXBwLnBsdWdpbnMuZW5hYmxlZFBsdWdpbnMuaGFzKHBsdWdpbklkKSkge1xuICAgIGF3YWl0IGVuYWJsZUNvbW11bml0eVBsdWdpbih7IGFwcCwgcGx1Z2luSWQgfSk7XG4gIH0gZWxzZSBpZiAoc2hvdWxkUmVsb2FkSWZFbmFibGVkKSB7XG4gICAgYXdhaXQgZGlzYWJsZUNvbW11bml0eVBsdWdpbih7IGFwcCwgcGx1Z2luSWQgfSk7XG4gICAgYXdhaXQgZW5hYmxlQ29tbXVuaXR5UGx1Z2luKHsgYXBwLCBwbHVnaW5JZCB9KTtcbiAgfVxufVxuXG4vLyBDcmVhdGVzIGBDb2RlU2NyaXB0IFRvb2xraXRgJ3MgaW52b2NhYmxlLXNjcmlwdHMgZm9sZGVyICh1bmRlciBgbW9kdWxlc1Jvb3RgKSBpZiBpdCBpcyBtaXNzaW5nLlxuLy8gRXZlcnkgZGVtbyB2YXVsdCB0aGVuIGhhcyB0aGUgc2FtZSBgQ29kZVNjcmlwdCBUb29sa2l0YCBsYXlvdXQgZXZlbiB3aGVuIGl0IHNoaXBzIG5vIGludm9jYWJsZSBzY3JpcHRzLlxuLy8gVGhlIGNvbW1pdHRlZCB2YXVsdCB0aGVyZWZvcmUgY2FycmllcyBubyBvdGhlcndpc2UtZW1wdHkgcGxhY2Vob2xkZXIgZm9sZGVyLlxuYXN5bmMgZnVuY3Rpb24gZW5zdXJlSW52b2NhYmxlU2NyaXB0c0ZvbGRlcihhcHA6IEFwcCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBpbnZvY2FibGVTY3JpcHRzRm9sZGVyUGF0aCA9IGpvaW4oQ09ERV9TQ1JJUFRfVE9PTEtJVF9NT0RVTEVTX1JPT1QsIENPREVfU0NSSVBUX1RPT0xLSVRfU0VUVElOR1MuaW52b2NhYmxlU2NyaXB0c0ZvbGRlcik7XG4gIGlmICghYXdhaXQgYXBwLnZhdWx0LmFkYXB0ZXIuZXhpc3RzKGludm9jYWJsZVNjcmlwdHNGb2xkZXJQYXRoKSkge1xuICAgIGF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLm1rZGlyKGludm9jYWJsZVNjcmlwdHNGb2xkZXJQYXRoKTtcbiAgfVxufVxuXG4vLyBSZWFkcyB0aGUgcGx1Z2luIHRoZSB2YXVsdCBkZW1vbnN0cmF0ZXMgb3V0IG9mIHRoaXMgaGVscGVyJ3Mgb3duIGBkYXRhLmpzb25gLCB3cml0dGVuIGJ5IHRoZVxuLy8gcGFja2FnaW5nIHN0ZXAgKHNlZSBgRGVtb1ZhdWx0SGVscGVyU2V0dGluZ3NgKS4gQSB2YXVsdCB3aXRob3V0IGEgcmVhZGFibGUgbWFya2VyIHdhcyBub3QgcHJvZHVjZWQgYnlcbi8vIHRoYXQgc3RlcCDigJQgaGFuZC1hc3NlbWJsZWQsIG9yIHVucGFja2VkIGZyb20gc29tZXRoaW5nIHRoYXQgaXMgbm90IGEgZGVtbyB2YXVsdCDigJQgc28gaXQgaXMgcmVmdXNlZFxuLy8gcmF0aGVyIHRoYW4gYm9vdHN0cmFwcGVkIGFnYWluc3QgYSBndWVzcy5cbmFzeW5jIGZ1bmN0aW9uIGdldERlbW9lZFBsdWdpbklkKGFwcDogQXBwKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qgc2V0dGluZ3NQYXRoID0gam9pbihhcHAudmF1bHQuY29uZmlnRGlyLCBQTFVHSU5TX0ZPTERFUl9OQU1FLCBERU1PX1ZBVUxUX0hFTFBFUl9QTFVHSU5fSUQsIERBVEFfSlNPTl9GSUxFX05BTUUpO1xuICBpZiAoIWF3YWl0IGFwcC52YXVsdC5hZGFwdGVyLmV4aXN0cyhzZXR0aW5nc1BhdGgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKElOVkFMSURfREVNT19WQVVMVF9FUlJPUl9NRVNTQUdFKTtcbiAgfVxuXG4gIGxldCBwYXJzZWQ6IHVua25vd247XG4gIHRyeSB7XG4gICAgcGFyc2VkID0gSlNPTi5wYXJzZShhd2FpdCBhcHAudmF1bHQuYWRhcHRlci5yZWFkKHNldHRpbmdzUGF0aCkpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IG5ldyBFcnJvcihJTlZBTElEX0RFTU9fVkFVTFRfRVJST1JfTUVTU0FHRSwgeyBjYXVzZTogZXJyb3IgfSk7XG4gIH1cblxuICBjb25zdCBkZW1vZWRQbHVnaW5JZCA9IChwYXJzZWQgYXMgbnVsbCB8IFBhcnRpYWw8RGVtb1ZhdWx0SGVscGVyU2V0dGluZ3M+KT8uZGVtb2VkUGx1Z2luSWQ7XG4gIGlmICh0eXBlb2YgZGVtb2VkUGx1Z2luSWQgIT09ICdzdHJpbmcnIHx8IGRlbW9lZFBsdWdpbklkID09PSBFTVBUWSkge1xuICAgIHRocm93IG5ldyBFcnJvcihJTlZBTElEX0RFTU9fVkFVTFRfRVJST1JfTUVTU0FHRSk7XG4gIH1cbiAgcmV0dXJuIGRlbW9lZFBsdWdpbklkO1xufVxuXG4vLyBUZWxscyB0aGUgdXNlciB0aGlzIHZhdWx0IGlzIGEgc2FuZGJveCwgdXNpbmcgT2JzaWRpYW4ncyBvd24gc2FuZGJveC12YXVsdCB0cmVhdG1lbnQ6IGFuIGluZmluaXRlXG4vLyBkdXJhdGlvbiwgZGlzbWlzc2VkIGJ5IGNsaWNraW5nIGl0LiBSYWlzZWQgbGFzdCwgc28gaXQgaXMgdGhlIG5ld2VzdCBub3RpY2Ugb24gc2NyZWVuIG9uY2Vcbi8vIGBDb2RlU2NyaXB0IFRvb2xraXRgJ3Mgc3RhcnR1cCBzY3JpcHQgaGFzIGRvbmUgaXRzIG93biB3b3JrLlxuLy9cbi8vIEEgYE5vdGljZWAgaXMgYnVpbHQgaW5zaWRlIHdoYXRldmVyIHdpbmRvdyBpcyBhY3RpdmUgYXQgdGhhdCBtb21lbnQsIGFuZCBTZXR0aW5ncyBpcyBhIFBPUE9VVCBXSU5ET1dcbi8vICh2ZXJpZmllZCBvbiAxLjEzLjYpIHRoYXQgYmVjb21lcyB0aGUgYWN0aXZlIG9uZSB3aGlsZSBpdCBpcyBvcGVuIOKAlCBzbyBhIG5vdGljZSByYWlzZWQgdGhlbiB3b3VsZCBiZVxuLy8gY3JlYXRlZCBpbiB0aGUgc2V0dGluZ3Mgd2luZG93IGFuZCB2YW5pc2ggd2l0aCBpdC4gYGJvb3RzdHJhcERlbW9WYXVsdGAgYWxyZWFkeSBjbG9zZWQgU2V0dGluZ3MgYmVmb3JlXG4vLyBlYWNoIGVuYWJsZSwgYnV0IGEgcGx1Z2luIGVuYWJsZWQgc2luY2UgbWF5IGhhdmUgb3BlbmVkIGl0IGFnYWluLCBzbyBpdCBpcyBjbG9zZWQgb25jZSBtb3JlIGhlcmU6XG4vLyBPYnNpZGlhbiBoYW5kcyB0aGUgbWFpbiB3aW5kb3cgYmFjayBhcyB0aGUgcG9wb3V0IGdvZXMgYXdheSAoc3luY2hyb25vdXNseSwgYmVmb3JlIHRoZSBub3RpY2UgaXMgYnVpbHQpLFxuLy8gYW5kIGEgdXNlciB3aG8gaGFzIGp1c3Qgb3BlbmVkIGEgZGVtbyB2YXVsdCB3YW50cyB0byBzZWUgdGhlIHZhdWx0IHJhdGhlciB0aGFuIGEgc2V0dGluZ3Mgd2luZG93IGFueXdheS5cbi8vIENsb3NpbmcgYW4gYWxyZWFkeS1jbG9zZWQgU2V0dGluZ3MgaXMgYSBuby1vcCwgc28gbm8gb3Blbi1zdGF0ZSBwcm9iZSBpcyBuZWVkZWQuXG5mdW5jdGlvbiBzaG93U2FuZGJveE5vdGljZShhcHA6IEFwcCwgZGVtb2VkUGx1Z2luSWQ6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBwbHVnaW5OYW1lID0gYXBwLnBsdWdpbnMubWFuaWZlc3RzW2RlbW9lZFBsdWdpbklkXT8ubmFtZSA/PyBkZW1vZWRQbHVnaW5JZDtcbiAgY29uc3QgZnJhZ21lbnQgPSBidWlsZFNhbmRib3hOb3RpY2VGcmFnbWVudChwbHVnaW5OYW1lKTtcbiAgYXBwLnNldHRpbmcuY2xvc2UoKTtcbiAgbmV3IE5vdGljZShmcmFnbWVudCwgU0FOREJPWF9OT1RJQ0VfRFVSQVRJT05fSU5fTUlMTElTRUNPTkRTKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5Q0EsU0FBUyxZQUFZO0FBQ3JCLFNBQVMsYUFBYTtBQUN0QixTQUFTLGNBQWM7QUFJdkI7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLHVCQUF1QjtBQStEaEMsTUFBTSxnQ0FBZ0M7QUFDdEMsTUFBTSxtQ0FBbUM7QUFDekMsTUFBTSwrQkFBMEQ7QUFBQSxFQUM5RCx5QkFBeUI7QUFBQSxFQUN6Qix3QkFBd0I7QUFBQSxFQUN4QixhQUFhO0FBQUEsRUFDYiwwQkFBMEI7QUFBQSxFQUMxQixtQkFBbUI7QUFDckI7QUFFQSxNQUFNLHlCQUF5QjtBQUsvQixNQUFNLHdCQUE2QztBQUFBLEVBQ2pELGdCQUFnQjtBQUFBLEVBQ2hCLGdCQUFnQjtBQUFBLEVBQ2hCLGlCQUFpQjtBQUNuQjtBQUVBLE1BQU0sOEJBQThCO0FBQ3BDLE1BQU0sc0JBQXNCO0FBQzVCLE1BQU0sc0JBQXNCO0FBQzVCLE1BQU0sbUNBQW1DO0FBQ3pDLE1BQU0sK0JBQStCO0FBR3JDLE1BQU0sMENBQTBDO0FBbUJoRCxlQUFzQixtQkFBbUIsUUFBaUQ7QUFDeEYsUUFBTSxFQUFFLElBQUksSUFBSTtBQUVoQixRQUFNLGlCQUFpQixNQUFNLGtCQUFrQixHQUFHO0FBQ2xELFFBQU0sdUJBQXVCLEVBQUUsS0FBSyxVQUFVLDhCQUE4QixDQUFDO0FBQzdFLFFBQU0sU0FBUyxNQUFNLHlCQUF5QjtBQUFBLElBQzVDO0FBQUEsSUFDQSxVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsRUFDWixDQUFDO0FBQ0QsUUFBTSw2QkFBNkIsR0FBRztBQUV0QyxRQUFNLHFCQUFxQixLQUFLLCtCQUErQixXQUFXLCtCQUErQixPQUFPO0FBSWhILFFBQU0sdUJBQXVCLEVBQUUsS0FBSyxVQUFVLHVCQUF1QixDQUFDO0FBQ3RFLFFBQU0sb0JBQW9CLE1BQU0seUJBQXlCO0FBQUEsSUFDdkQ7QUFBQSxJQUNBLFVBQVU7QUFBQSxJQUNWLFVBQVU7QUFBQSxFQUNaLENBQUM7QUFDRCxRQUFNLHFCQUFxQixLQUFLLHdCQUF3QixzQkFBc0IsK0JBQStCLE9BQU87QUFFcEgsb0JBQWtCLEtBQUssY0FBYztBQUN2QztBQVFBLFNBQVMsMkJBQTJCLFlBQXNDO0FBQ3hFLFNBQU8sZUFBZSxDQUFDLGFBQWE7QUFDbEMsYUFBUyxXQUFXLDJCQUEyQjtBQUMvQyxvQkFBZ0IsVUFBVSxVQUFVO0FBQ3BDLGFBQVMsV0FBVyxHQUFHO0FBRXZCLGFBQVMsU0FBUyxJQUFJO0FBQ3RCLGFBQVMsV0FBVyx3RkFBd0Y7QUFFNUcsYUFBUyxTQUFTLElBQUk7QUFDdEIsYUFBUyxXQUFXLFlBQVk7QUFDaEMsYUFBUyxTQUFTLEtBQUssRUFBRSxNQUFNLEdBQUcsVUFBVSxLQUFLLDRCQUE0QixHQUFHLENBQUM7QUFDakYsYUFBUyxXQUFXLHdHQUF3RztBQUFBLEVBQzlILENBQUM7QUFDSDtBQWlCQSxlQUFlLHFCQUFxQixLQUFVLFVBQWtCLHVCQUErQztBQUM3RyxNQUFJLFFBQVEsTUFBTTtBQUNsQixNQUFJLENBQUMsSUFBSSxRQUFRLGVBQWUsSUFBSSxRQUFRLEdBQUc7QUFDN0MsVUFBTSxzQkFBc0IsRUFBRSxLQUFLLFNBQVMsQ0FBQztBQUFBLEVBQy9DLFdBQVcsdUJBQXVCO0FBQ2hDLFVBQU0sdUJBQXVCLEVBQUUsS0FBSyxTQUFTLENBQUM7QUFDOUMsVUFBTSxzQkFBc0IsRUFBRSxLQUFLLFNBQVMsQ0FBQztBQUFBLEVBQy9DO0FBQ0Y7QUFLQSxlQUFlLDZCQUE2QixLQUF5QjtBQUNuRSxRQUFNLDZCQUE2QixLQUFLLGtDQUFrQyw2QkFBNkIsc0JBQXNCO0FBQzdILE1BQUksQ0FBQyxNQUFNLElBQUksTUFBTSxRQUFRLE9BQU8sMEJBQTBCLEdBQUc7QUFDL0QsVUFBTSxJQUFJLE1BQU0sUUFBUSxNQUFNLDBCQUEwQjtBQUFBLEVBQzFEO0FBQ0Y7QUFNQSxlQUFlLGtCQUFrQixLQUEyQjtBQUMxRCxRQUFNLGVBQWUsS0FBSyxJQUFJLE1BQU0sV0FBVyxxQkFBcUIsNkJBQTZCLG1CQUFtQjtBQUNwSCxNQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sUUFBUSxPQUFPLFlBQVksR0FBRztBQUNqRCxVQUFNLElBQUksTUFBTSxnQ0FBZ0M7QUFBQSxFQUNsRDtBQUVBLE1BQUk7QUFDSixNQUFJO0FBQ0YsYUFBUyxLQUFLLE1BQU0sTUFBTSxJQUFJLE1BQU0sUUFBUSxLQUFLLFlBQVksQ0FBQztBQUFBLEVBQ2hFLFNBQVMsT0FBTztBQUNkLFVBQU0sSUFBSSxNQUFNLGtDQUFrQyxFQUFFLE9BQU8sTUFBTSxDQUFDO0FBQUEsRUFDcEU7QUFFQSxRQUFNLGlCQUFrQixRQUFvRDtBQUM1RSxNQUFJLE9BQU8sbUJBQW1CLFlBQVksbUJBQW1CLE9BQU87QUFDbEUsVUFBTSxJQUFJLE1BQU0sZ0NBQWdDO0FBQUEsRUFDbEQ7QUFDQSxTQUFPO0FBQ1Q7QUFhQSxTQUFTLGtCQUFrQixLQUFVLGdCQUE4QjtBQUNqRSxRQUFNLGFBQWEsSUFBSSxRQUFRLFVBQVUsY0FBYyxHQUFHLFFBQVE7QUFDbEUsUUFBTSxXQUFXLDJCQUEyQixVQUFVO0FBQ3RELE1BQUksUUFBUSxNQUFNO0FBQ2xCLE1BQUksT0FBTyxVQUFVLHVDQUF1QztBQUM5RDsiLCJuYW1lcyI6W119
@@ -3,7 +3,7 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
5
 
6
- const LIBRARY_VERSION = "6.0.1";
6
+ const LIBRARY_VERSION = "6.0.3";
7
7
  const LIBRARY_STYLES = ".obsidian-lib.code-highlighter-component textarea, .obsidian-lib.code-highlighter-component pre, .obsidian-lib.code-highlighter-component code {\n font-family: var(--font-monospace);\n line-height: var(--line-height-normal);\n margin: 0;\n}\n.obsidian-lib.code-highlighter-component textarea, .obsidian-lib.code-highlighter-component code {\n font-size: var(--code-size);\n}\n.obsidian-lib.code-highlighter-component textarea {\n background: transparent;\n color: transparent;\n z-index: 2;\n width: 20em;\n height: 10em;\n}\n.obsidian-lib.code-highlighter-component pre {\n position: absolute;\n pointer-events: none;\n border: var(--input-border-width) solid transparent;\n overflow: auto;\n inset: 0;\n padding: var(--size-4-1) var(--size-4-2);\n z-index: 1;\n}\n.obsidian-lib.code-highlighter-component pre::after {\n content: \"\";\n display: block;\n height: var(--bottom-gap, 0);\n}\n.obsidian-lib.code-highlighter-component pre.is-placeholder {\n opacity: 0.6;\n}\n.obsidian-lib.code-highlighter-component code {\n display: block;\n padding: 0;\n}\n\n.obsidian-lib-lock-indicator {\n display: inline-flex;\n align-items: center;\n color: var(--text-muted);\n}\n.obsidian-lib-lock-indicator .svg-icon {\n width: var(--icon-s);\n height: var(--icon-s);\n}\n\n@keyframes obsidian-lib-lock-indicator-flash {\n 40% {\n color: var(--text-error);\n transform: scale(1.4);\n }\n}\n.obsidian-lib-lock-indicator-flash {\n animation: obsidian-lib-lock-indicator-flash 0.35s ease-in-out;\n}\n\n.obsidian-lib input[type=url] {\n height: var(--input-height);\n}\n.obsidian-lib input[type=month],\n.obsidian-lib input[type=tel],\n.obsidian-lib input[type=time],\n.obsidian-lib input[type=url],\n.obsidian-lib input[type=week] {\n -webkit-app-region: no-drag;\n background: var(--background-modifier-form-field);\n border: var(--input-border-width) solid var(--background-modifier-border);\n color: var(--text-normal);\n font-family: inherit;\n padding: var(--size-4-1) var(--size-4-2);\n font-size: var(--font-ui-small);\n border-radius: var(--input-radius);\n outline: none;\n}\n@media (hover: hover) {\n .obsidian-lib input[type=month]:hover,\n .obsidian-lib input[type=tel]:hover,\n .obsidian-lib input[type=time]:hover,\n .obsidian-lib input[type=url]:hover,\n .obsidian-lib input[type=week]:hover {\n border-color: var(--background-modifier-border-hover);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n }\n}\n.obsidian-lib input[type=month]:active, .obsidian-lib input[type=month]:focus,\n.obsidian-lib input[type=tel]:active,\n.obsidian-lib input[type=tel]:focus,\n.obsidian-lib input[type=time]:active,\n.obsidian-lib input[type=time]:focus,\n.obsidian-lib input[type=url]:active,\n.obsidian-lib input[type=url]:focus,\n.obsidian-lib input[type=week]:active,\n.obsidian-lib input[type=week]:focus {\n border-color: var(--background-modifier-border-focus);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n}\n.obsidian-lib input[type=month]:active, .obsidian-lib input[type=month]:focus, .obsidian-lib input[type=month]:focus-visible,\n.obsidian-lib input[type=tel]:active,\n.obsidian-lib input[type=tel]:focus,\n.obsidian-lib input[type=tel]:focus-visible,\n.obsidian-lib input[type=time]:active,\n.obsidian-lib input[type=time]:focus,\n.obsidian-lib input[type=time]:focus-visible,\n.obsidian-lib input[type=url]:active,\n.obsidian-lib input[type=url]:focus,\n.obsidian-lib input[type=url]:focus-visible,\n.obsidian-lib input[type=week]:active,\n.obsidian-lib input[type=week]:focus,\n.obsidian-lib input[type=week]:focus-visible {\n box-shadow: 0 0 0 2px var(--background-modifier-border-focus);\n}\n.obsidian-lib input[type=month]::placeholder,\n.obsidian-lib input[type=tel]::placeholder,\n.obsidian-lib input[type=time]::placeholder,\n.obsidian-lib input[type=url]::placeholder,\n.obsidian-lib input[type=week]::placeholder {\n color: var(--text-faint);\n}\n.mod-rtl input[type=month],\n.mod-rtl input[type=time],\n.mod-rtl input[type=week],\n.is-rtl input[type=month],\n.is-rtl input[type=time],\n.is-rtl input[type=week],\n.rtl input[type=month],\n.rtl input[type=time],\n.rtl input[type=week] {\n direction: rtl;\n}\n.mod-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.rtl input[type=month]::-webkit-calendar-picker-indicator,\n.rtl input[type=time]::-webkit-calendar-picker-indicator,\n.rtl input[type=week]::-webkit-calendar-picker-indicator {\n right: var(--size-4-1);\n left: auto;\n}\n\n.obsidian-lib input[type=month],\n.obsidian-lib input[type=time],\n.obsidian-lib input[type=week] {\n font-variant-numeric: tabular-nums;\n position: relative;\n}\n.obsidian-lib input[type=month]::-webkit-datetime-edit-text,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-text,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-text {\n color: var(--text-faint);\n padding-inline-end: 0;\n}\n.obsidian-lib input[type=month]::-webkit-calendar-picker-indicator,\n.obsidian-lib input[type=time]::-webkit-calendar-picker-indicator,\n.obsidian-lib input[type=week]::-webkit-calendar-picker-indicator {\n position: absolute;\n left: var(--size-4-1);\n right: auto;\n opacity: 0.5;\n}\n.obsidian-lib input[type=month]::-webkit-datetime-edit-month-field:active, .obsidian-lib input[type=month]::-webkit-datetime-edit-month-field:focus, .obsidian-lib input[type=month]::-webkit-datetime-edit-day-field:active, .obsidian-lib input[type=month]::-webkit-datetime-edit-day-field:focus, .obsidian-lib input[type=month]::-webkit-datetime-edit-year-field:active, .obsidian-lib input[type=month]::-webkit-datetime-edit-year-field:focus,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-month-field:active,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-month-field:focus,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-day-field:active,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-day-field:focus,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-year-field:active,\n.obsidian-lib input[type=time]::-webkit-datetime-edit-year-field:focus,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-month-field:active,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-month-field:focus,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-day-field:active,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-day-field:focus,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-year-field:active,\n.obsidian-lib input[type=week]::-webkit-datetime-edit-year-field:focus {\n background-color: var(--text-selection);\n color: var(--text-normal);\n cursor: text;\n}\n.mod-rtl .obsidian-lib input[type=month], .is-rtl .obsidian-lib input[type=month], .rtl .obsidian-lib input[type=month],\n.mod-rtl .obsidian-lib input[type=time],\n.is-rtl .obsidian-lib input[type=time],\n.rtl .obsidian-lib input[type=time],\n.mod-rtl .obsidian-lib input[type=week],\n.is-rtl .obsidian-lib input[type=week],\n.rtl .obsidian-lib input[type=week] {\n direction: rtl;\n}\n.mod-rtl .obsidian-lib input[type=month]::-webkit-calendar-picker-indicator, .is-rtl .obsidian-lib input[type=month]::-webkit-calendar-picker-indicator, .rtl .obsidian-lib input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-lib input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-lib input[type=time]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-lib input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-lib input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-lib input[type=week]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-lib input[type=week]::-webkit-calendar-picker-indicator {\n left: auto;\n right: var(--size-4-1);\n}\n\nbody:not(.is-ios):not(.is-android) .obsidian-lib input[type=month],\nbody:not(.is-ios):not(.is-android) .obsidian-lib input[type=time],\nbody:not(.is-ios):not(.is-android) .obsidian-lib input[type=week] {\n padding-inline-start: var(--size-4-6);\n}\n\n.obsidian-lib input[type=time]::-webkit-calendar-picker-indicator {\n margin-inline-start: 0;\n}\n\nprogress.obsidian-lib.loop {\n min-width: 200px;\n}\n\n@keyframes obsidian-lib-minimized-modal-bar-pulse {\n 0%, 100% {\n box-shadow: var(--shadow-s);\n }\n 50% {\n box-shadow: 0 0 0 2px var(--interactive-accent);\n }\n}\n@keyframes obsidian-lib-minimized-modal-bar-attention {\n 0% {\n box-shadow: 0 0 0 0 var(--interactive-accent);\n }\n 40% {\n box-shadow: 0 0 0 4px var(--interactive-accent);\n }\n 100% {\n box-shadow: var(--shadow-s);\n }\n}\n.obsidian-lib.minimizable-modal .minimize-button {\n position: absolute;\n top: var(--size-4-2);\n right: calc(var(--size-4-2) + var(--size-4-9));\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--size-2-2);\n border: none;\n border-radius: var(--radius-s);\n background: transparent;\n color: var(--icon-color);\n cursor: pointer;\n box-shadow: none;\n}\n.obsidian-lib.minimizable-modal .minimize-button:hover {\n background: var(--background-modifier-hover);\n color: var(--icon-color-hover);\n}\n.obsidian-lib.minimized-modal-bar {\n position: fixed;\n right: var(--size-4-4);\n bottom: calc(var(--size-4-4) + var(--size-4-8));\n z-index: var(--layer-modal);\n display: flex;\n align-items: center;\n gap: var(--size-4-2);\n padding: var(--size-4-2) var(--size-4-3);\n border: 1px solid var(--background-modifier-border);\n border-radius: var(--radius-m);\n background: var(--background-secondary);\n box-shadow: var(--shadow-s);\n cursor: pointer;\n animation: obsidian-lib-minimized-modal-bar-pulse 2s ease-in-out infinite;\n}\n.obsidian-lib.minimized-modal-bar:hover {\n background-image: linear-gradient(var(--background-modifier-hover), var(--background-modifier-hover));\n}\n.obsidian-lib.minimized-modal-bar.minimized-modal-bar-attention {\n animation: obsidian-lib-minimized-modal-bar-attention 0.35s ease-out;\n}\n.obsidian-lib.minimized-modal-bar .minimized-modal-bar-title {\n font-weight: var(--font-medium);\n}\n.obsidian-lib.minimized-modal-bar .restore-button,\n.obsidian-lib.minimized-modal-bar .cancel-button {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--size-2-2);\n border: none;\n border-radius: var(--radius-s);\n background: transparent;\n color: var(--icon-color);\n cursor: pointer;\n box-shadow: none;\n}\n.obsidian-lib.minimized-modal-bar .restore-button:hover,\n.obsidian-lib.minimized-modal-bar .cancel-button:hover {\n background: var(--background-modifier-hover);\n color: var(--icon-color-hover);\n}\n\n.obsidian-lib.modal-commands {\n display: flex;\n flex-wrap: wrap;\n gap: var(--size-2-2);\n padding: var(--size-4-2) var(--size-4-3);\n border-top: 1px solid var(--background-modifier-border);\n}\n.obsidian-lib.modal-command-control {\n margin-inline-start: var(--size-2-2);\n vertical-align: middle;\n}\n.obsidian-lib.modal-command {\n display: inline-flex;\n align-items: baseline;\n gap: var(--size-2-2);\n min-height: var(--size-4-8);\n padding: var(--size-2-1) var(--size-4-2);\n border: 1px solid var(--background-modifier-border);\n border-radius: var(--radius-s);\n background-color: var(--background-secondary);\n color: var(--text-muted);\n font-size: var(--font-ui-smaller);\n white-space: nowrap;\n cursor: pointer;\n}\n.obsidian-lib.modal-command:hover:not(:disabled) {\n background-color: var(--background-modifier-hover);\n color: var(--text-normal);\n}\n.obsidian-lib.modal-command.is-active {\n border-color: var(--interactive-accent);\n background-color: var(--interactive-accent);\n color: var(--text-on-accent);\n}\n.obsidian-lib.modal-command:disabled {\n opacity: 0.5;\n cursor: default;\n}\n.obsidian-lib.modal-command-hotkey {\n color: var(--text-faint);\n font-size: var(--font-smallest);\n}\n.modal-command.is-active .obsidian-lib.modal-command-hotkey {\n opacity: 0.7;\n color: var(--text-on-accent);\n}\n\n.obsidian-lib.modal-container .ok-button {\n margin-right: 10px;\n margin-top: 20px;\n}\n\n.obsidian-lib.multiple-dropdown-component select,\n.obsidian-lib.multiple-dropdown-component select:focus,\n.obsidian-lib.multiple-dropdown-component .dropdown {\n height: auto;\n padding-top: 3px;\n}\n.obsidian-lib.multiple-dropdown-component select option:checked,\n.obsidian-lib.multiple-dropdown-component select:focus option:checked,\n.obsidian-lib.multiple-dropdown-component .dropdown option:checked {\n background-color: var(--interactive-accent);\n color: var(--text-on-accent);\n}\n\n.obsidian-lib.plugin-notice-name {\n color: var(--text-accent);\n display: inline-block;\n font-weight: var(--font-bold);\n margin-bottom: var(--size-4-2);\n}\n.obsidian-lib.plugin-notice-name code {\n color: inherit;\n}\n.obsidian-lib.plugin-notice-content {\n padding-right: var(--size-4-5);\n position: relative;\n}\n.obsidian-lib.plugin-notice-content .obsidian-lib.cancel-button {\n display: block;\n margin-top: var(--size-4-2);\n width: fit-content;\n}\n.obsidian-lib.plugin-notice-content .obsidian-lib.plugin-notice-close-button {\n position: absolute;\n right: var(--size-4-3);\n top: var(--size-4-3);\n}\n.obsidian-lib.plugin-notice-requires-explicit-close.notice {\n padding: 0;\n}\n.obsidian-lib.plugin-notice-requires-explicit-close.notice .obsidian-lib.plugin-notice-content {\n padding: var(--size-4-3) var(--size-4-4);\n}\n\n.obsidian-lib.plugin-settings-tab a:focus {\n outline: 2px solid var(--link-color);\n}\n\n.obsidian-lib.plugin-suggestion-banner {\n background-color: var(--background-secondary);\n border-left: var(--size-2-1) solid var(--text-accent);\n border-radius: var(--radius-s);\n display: flex;\n flex-direction: column;\n gap: var(--size-4-2);\n margin-bottom: var(--size-4-4);\n padding: var(--size-4-3) var(--size-4-4);\n}\n.obsidian-lib.plugin-suggestion-banner button {\n width: fit-content;\n}\n.obsidian-lib.plugin-suggestion-notice-buttons {\n display: flex;\n flex-wrap: wrap;\n gap: var(--size-4-2);\n margin-top: var(--size-4-2);\n}\n\n.obsidian-lib.popover {\n max-width: min(420px, 90vw);\n min-width: 320px;\n padding: var(--size-4-2) var(--size-4-3);\n position: absolute;\n z-index: var(--layer-menu);\n}\n.obsidian-lib.popover .setting-item {\n align-items: center;\n border-top: none;\n gap: var(--size-4-2);\n padding: var(--size-2-1) 0;\n}\n.obsidian-lib.popover .setting-item-info {\n margin-right: 0;\n}\n.obsidian-lib.popover .setting-item-control {\n flex-grow: 1;\n justify-content: flex-end;\n}\n.obsidian-lib.popover input[type=text] {\n width: 100%;\n}\n\n.obsidian-lib.prompt-modal .text-box {\n width: 100%;\n}\n\n.obsidian-lib button:not(.clickable-icon) {\n color: var(--text-color);\n}\n\n.obsidian-lib.tri-state-checkbox-component input[type=checkbox]:indeterminate {\n appearance: checkbox;\n}\n\n.obsidian-lib :invalid:not(.untouched) {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-lib input.metadata-input-text:active:invalid:not(.untouched), .obsidian-lib input.metadata-input-text:focus-visible:invalid:not(.untouched), .obsidian-lib input.metadata-input-text:focus:invalid:not(.untouched),\n.obsidian-lib input[type=date]:active:invalid:not(.untouched),\n.obsidian-lib input[type=date]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=date]:focus:invalid:not(.untouched),\n.obsidian-lib input[type=datetime-local]:active:invalid:not(.untouched),\n.obsidian-lib input[type=datetime-local]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=datetime-local]:focus:invalid:not(.untouched),\n.obsidian-lib input[type=email]:active:invalid:not(.untouched),\n.obsidian-lib input[type=email]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=email]:focus:invalid:not(.untouched),\n.obsidian-lib input[type=number]:active:invalid:not(.untouched),\n.obsidian-lib input[type=number]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=number]:focus:invalid:not(.untouched),\n.obsidian-lib input[type=password]:active:invalid:not(.untouched),\n.obsidian-lib input[type=password]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=password]:focus:invalid:not(.untouched),\n.obsidian-lib input[type=search]:active:invalid:not(.untouched),\n.obsidian-lib input[type=search]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=search]:focus:invalid:not(.untouched),\n.obsidian-lib input[type=text]:active:invalid:not(.untouched),\n.obsidian-lib input[type=text]:focus-visible:invalid:not(.untouched),\n.obsidian-lib input[type=text]:focus:invalid:not(.untouched),\n.obsidian-lib textarea:active:invalid:not(.untouched),\n.obsidian-lib textarea:focus-visible:invalid:not(.untouched),\n.obsidian-lib textarea:focus:invalid:not(.untouched) {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-lib.setting-component-wrapper {\n position: relative;\n display: inline-flex;\n}\n.obsidian-lib.overlay-validator {\n caret-color: transparent;\n cursor: default;\n position: absolute;\n background-color: transparent;\n border: none;\n outline: none;\n pointer-events: none;\n z-index: 9999;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n.obsidian-lib.tooltip.tooltip-validator {\n position: absolute;\n top: calc(100% + 8px);\n width: max-content;\n}\n\n/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../src/styles/code-highlighter-component.scss%22,%22../src/styles/editor-lock.scss%22,%22../src/styles/input.scss%22,%22../src/styles/input-time.scss%22,%22../src/styles/loop.scss%22,%22../src/styles/minimizable-modal.scss%22,%22../src/styles/modal-commands.scss%22,%22../src/styles/modal-container.scss%22,%22../src/styles/multiple-dropdown-component.scss%22,%22../src/styles/plugin-notice.scss%22,%22../src/styles/plugin-settings-tab.scss%22,%22../src/styles/plugin-suggestion.scss%22,%22../src/styles/popover.scss%22,%22../src/styles/prompt-modal.scss%22,%22../src/styles/tldraw-button-color-workaround.scss%22,%22../src/styles/tri-state-checkbox-component.scss%22,%22../src/styles/validation.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAEI;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;ACvCN;EACE;EACA;EACA;;AAEA;EACE;EACA;;;AAMJ;EACE;IACE;IACA;;;AAIJ;EACE;;;ACvBA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;AAAA;AAAA;AAAA;AAAA;IACE;IACA,YACE;;;AAMR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA,YACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAGF;AAAA;AAAA;AAAA;AAAA;EACE;;AASE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AC7DV;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;AAGF;AAAA;AAAA;EACE;EACA;EACA;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;EACA;;AAIK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGP;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AAKF;AAAA;AAAA;EACE;;;AAMJ;EACE;;;AC/CK;EACP;;;ACJJ;EACE;IAEE;;EAGF;IACE;;;AAIJ;EACE;IACE;;EAGF;IACE;;EAGF;IACE;;;AAOA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AASN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAOA;EACE;;AAOF;EACE;;AAGF;EACE;;AAGF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACE;EACA;;;ACpGN;EACE;EACA;EACA;EACA;EACA;;AAOF;EACE;EACA;;AAMF;EACE;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAKF;EACE;EACA;;AAIJ;EACE;EACA;;AAGA;EACE;EACA;;;ACpEF;EACE;EACA;;;ACCF;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;;ACZN;EACE;EACA;EACA;EACA;;AAGA;EACE;;AAIJ;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAKF;EACE;EACA;EACA;;AAOJ;EACE;;AAEA;EACE;;;ACrCF;EACE;;;ACFJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAKJ;EACE;EACA;EACA;EACA;;;ACjBF;EAIE;EACA;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;;AC9BF;EACE;;;ACUN;EACE;;;ACZE;EACE;;;ACKJ;EAPA;;AAuBI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAvBJ;;AA6BA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA%22,%22file%22:%22styles.css%22,%22sourcesContent%22:%5B%22.obsidian-lib%20%7B%5Cn%20%20&.code-highlighter-component%20%7B%5Cn%20%20%20%20textarea,%20pre,%20code%20%7B%5Cn%20%20%20%20%20%20font-family:%20var(--font-monospace);%5Cn%20%20%20%20%20%20line-height:%20var(--line-height-normal);%5Cn%20%20%20%20%20%20margin:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea,%20code%20%7B%5Cn%20%20%20%20%20%20font-size:%20var(--code-size);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea%20%7B%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20transparent;%5Cn%20%20%20%20%20%20z-index:%202;%5Cn%20%20%20%20%20%20width:%2020em;%5Cn%20%20%20%20%20%20height:%2010em;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20%20%20border:%20var(--input-border-width)%20solid%20transparent;%5Cn%20%20%20%20%20%20overflow:%20auto;%5Cn%20%20%20%20%20%20inset:%200;%5Cn%20%20%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20%20%20z-index:%201;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre::after%20%7B%5Cn%20%20%20%20%20%20content:%20%5C%22%5C%22;%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20height:%20var(--bottom-gap,%200);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre.is-placeholder%20%7B%5Cn%20%20%20%20%20%20opacity:%200.6;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20code%20%7B%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20padding:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%20Lock%20indicators%20shown%20in%20the%20tab%20header%20and%20the%20status%20bar%20while%20a%20note%20is%20locked.%20These%20live%20in%5Cn//%20global%20Obsidian%20DOM%20(tab%20header%20/%20status%20bar),%20so%20they%20are%20styled%20with%20a%20global%20class%20rather%20than%5Cn//%20scoped%20under%20%60.obsidian-lib%60.%5Cn.obsidian-lib-lock-indicator%20%7B%5Cn%20%20display:%20inline-flex;%5Cn%20%20align-items:%20center;%5Cn%20%20color:%20var(--text-muted);%5Cn%5Cn%20%20.svg-icon%20%7B%5Cn%20%20%20%20width:%20var(--icon-s);%5Cn%20%20%20%20height:%20var(--icon-s);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn//%20Flashed%20on%20every%20lock%20indicator%20(tab%20header,%20view%20action,%20status%20bar)%20when%20the%20user%20attempts%20to%5Cn//%20type%20in%20a%20locked%20note,%20to%20make%20clear%20the%20note%20is%20read-only.%20Re-added%20per%20rejected%20keystroke.%5Cn@keyframes%20obsidian-lib-lock-indicator-flash%20%7B%5Cn%20%2040%25%20%7B%5Cn%20%20%20%20color:%20var(--text-error);%5Cn%20%20%20%20transform:%20scale(1.4);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn.obsidian-lib-lock-indicator-flash%20%7B%5Cn%20%20animation:%20obsidian-lib-lock-indicator-flash%200.35s%20ease-in-out;%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20input%5Btype='url'%5D%20%7B%5Cn%20%20%20%20height:%20var(--input-height)%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='tel'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='url'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20-webkit-app-region:%20no-drag;%5Cn%20%20%20%20background:%20var(--background-modifier-form-field);%5Cn%20%20%20%20border:%20var(--input-border-width)%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20font-family:%20inherit;%5Cn%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20font-size:%20var(--font-ui-small);%5Cn%20%20%20%20border-radius:%20var(--input-radius);%5Cn%20%20%20%20outline:%20none;%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20@media%20(hover:%20hover)%20%7B%5Cn%20%20%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20border-color:%20var(--background-modifier-border-hover);%5Cn%20%20%20%20%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20border-color:%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus,%5Cn%20%20%20%20&:focus-visible%20%7B%5Cn%20%20%20%20%20%20box-shadow:%200%200%200%202px%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::placeholder%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20@at-root%20%7B%5Cn%20%20%20%20.mod-rtl,%5Cn%20%20%20%20.is-rtl,%5Cn%20%20%20%20.rtl%20%7B%5Cn%20%20%20%20%20%20&%20%7B%5Cn%20%20%20%20%20%20%20%20input%5Btype='month'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='time'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20font-variant-numeric:%20tabular-nums;%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-text%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%20%20padding-inline-end:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20left:%20var(--size-4-1);%5Cn%20%20%20%20%20%20right:%20auto;%5Cn%20%20%20%20%20%20opacity:%200.5;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-month-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-day-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-year-field%20%7B%5Cn%20%20%20%20%20%20&:active,%5Cn%20%20%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20var(--text-selection);%5Cn%20%20%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%20%20%20%20cursor:%20text;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20.mod-rtl%20&,%5Cn%20%20%20%20%20%20.is-rtl%20&,%5Cn%20%20%20%20%20%20.rtl%20&%20%7B%5Cn%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20body:not(.is-ios):not(.is-android)%20&%20%7B%5Cn%20%20%20%20%20%20%20%20padding-inline-start:%20var(--size-4-6);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='time'%5D%20%7B%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20margin-inline-start:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20//%20Not%20%60&progress%60:%20that%20APPENDS%20the%20element%20name%20to%20the%20parent%20class,%20producing%20one%20long%20class%20that%20matches%5Cn%20%20//%20nothing.%20The%20element%20type%20has%20to%20lead%20the%20compound%20selector%20instead.%5Cn%20%20@at-root%20progress%23%7B&%7D.loop%20%7B%5Cn%20%20%20%20min-width:%20200px;%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22@keyframes%20obsidian-lib-minimized-modal-bar-pulse%20%7B%5Cn%20%200%25,%5Cn%20%20100%25%20%7B%5Cn%20%20%20%20box-shadow:%20var(--shadow-s);%5Cn%20%20%7D%5Cn%5Cn%20%2050%25%20%7B%5Cn%20%20%20%20box-shadow:%200%200%200%202px%20var(--interactive-accent);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn@keyframes%20obsidian-lib-minimized-modal-bar-attention%20%7B%5Cn%20%200%25%20%7B%5Cn%20%20%20%20box-shadow:%200%200%200%200%20var(--interactive-accent);%5Cn%20%20%7D%5Cn%5Cn%20%2040%25%20%7B%5Cn%20%20%20%20box-shadow:%200%200%200%204px%20var(--interactive-accent);%5Cn%20%20%7D%5Cn%5Cn%20%20100%25%20%7B%5Cn%20%20%20%20box-shadow:%20var(--shadow-s);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn.obsidian-lib%20%7B%5Cn%20%20//%20The%20minimize%20button%20lives%20inside%20the%20modal%20container,%20left%20of%20Obsidian's%20close%20button.%5Cn%20%20&.minimizable-modal%20%7B%5Cn%20%20%20%20.minimize-button%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20top:%20var(--size-4-2);%5Cn%20%20%20%20%20%20right:%20calc(var(--size-4-2)%20+%20var(--size-4-9));%5Cn%20%20%20%20%20%20display:%20flex;%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20justify-content:%20center;%5Cn%20%20%20%20%20%20padding:%20var(--size-2-2);%5Cn%20%20%20%20%20%20border:%20none;%5Cn%20%20%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20var(--icon-color);%5Cn%20%20%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20%20%20box-shadow:%20none;%5Cn%5Cn%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20background:%20var(--background-modifier-hover);%5Cn%20%20%20%20%20%20%20%20color:%20var(--icon-color-hover);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20//%20The%20minimized%20bar%20is%20appended%20to%20document.body.%20It%20floats%20at%20the%20bottom-right%20while%20minimized,%5Cn%20%20//%20and%20gently%20pulses%20an%20accent%20ring%20so%20the%20user%20does%20not%20forget%20about%20the%20minimized%20operation.%5Cn%20%20//%20It%20floats%20a%20status-bar's%20height%20above%20the%20bottom%20edge%20so%20it%20never%20covers%20the%20bottom-right%5Cn%20%20//%20status-bar%20items%20(e.g.%20the%20editor-lock%20unlock%20indicator,%20which%20lives%20in%20the%20same%20corner).%5Cn%20%20&.minimized-modal-bar%20%7B%5Cn%20%20%20%20position:%20fixed;%5Cn%20%20%20%20right:%20var(--size-4-4);%5Cn%20%20%20%20bottom:%20calc(var(--size-4-4)%20+%20var(--size-4-8));%5Cn%20%20%20%20z-index:%20var(--layer-modal);%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20align-items:%20center;%5Cn%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20padding:%20var(--size-4-2)%20var(--size-4-3);%5Cn%20%20%20%20border:%201px%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20border-radius:%20var(--radius-m);%5Cn%20%20%20%20background:%20var(--background-secondary);%5Cn%20%20%20%20box-shadow:%20var(--shadow-s);%5Cn%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20animation:%20obsidian-lib-minimized-modal-bar-pulse%202s%20ease-in-out%20infinite;%5Cn%5Cn%20%20%20%20//%20Layer%20the%20translucent%20hover%20tint%20over%20the%20opaque%20%60background%60%20(%60--background-secondary%60)%20via%5Cn%20%20%20%20//%20%60background-image%60%20instead%20of%20replacing%20the%20background-color.%20%60--background-modifier-hover%60%20is%5Cn%20%20%20%20//%20translucent,%20so%20setting%20it%20as%20%60background%60%20would%20let%20the%20editor%20content%20behind%20the%20floating%20bar%5Cn%20%20%20%20//%20bleed%20through%20and%20make%20the%20title%20unreadable.%20A%20gradient%20of%20the%20tint%20composited%20over%20the%20opaque%5Cn%20%20%20%20//%20base%20keeps%20the%20bar%20opaque%20while%20preserving%20the%20subtle%20hover%20highlight.%5Cn%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20background-image:%20linear-gradient(var(--background-modifier-hover),%20var(--background-modifier-hover));%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20A%20one-shot,%20more%20pronounced%20flash%20played%20when%20the%20user%20attempts%20a%20blocked%20action%20(a%20keystroke,%5Cn%20%20%20%20//%20right-click,%20or%20opening%20another%20modal)%20while%20this%20modal%20is%20minimized,%20so%20the%20block%20is%20not%5Cn%20%20%20%20//%20silent.%20Its%20higher%20specificity%20overrides%20the%20gentle%20infinite%20idle%20pulse%20while%20it%20plays;%20the%5Cn%20%20%20%20//%20class%20is%20removed%20on%20%60animationend%60,%20restoring%20the%20idle%20pulse.%5Cn%20%20%20%20&.minimized-modal-bar-attention%20%7B%5Cn%20%20%20%20%20%20animation:%20obsidian-lib-minimized-modal-bar-attention%200.35s%20ease-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.minimized-modal-bar-title%20%7B%5Cn%20%20%20%20%20%20font-weight:%20var(--font-medium);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.restore-button,%5Cn%20%20%20%20.cancel-button%20%7B%5Cn%20%20%20%20%20%20display:%20flex;%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20justify-content:%20center;%5Cn%20%20%20%20%20%20padding:%20var(--size-2-2);%5Cn%20%20%20%20%20%20border:%20none;%5Cn%20%20%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20var(--icon-color);%5Cn%20%20%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20%20%20box-shadow:%20none;%5Cn%5Cn%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20background:%20var(--background-modifier-hover);%5Cn%20%20%20%20%20%20%20%20color:%20var(--icon-color-hover);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20//%20The%20strip%20of%20commands%20along%20the%20bottom%20of%20a%20modal.%5Cn%20%20//%5Cn%20%20//%20In%20%60Instructions%60%20render%20mode%20it%20also%20carries%20Obsidian's%20own%20%60.prompt-instructions%60%20%E2%80%94%20whose%20rule%20is%5Cn%20%20//%20unscoped,%20so%20it%20applies%20to%20a%20plain%20%60Modal%60%20too%20%E2%80%94%20and%20this%20one%20only%20re-tunes%20that%20rule's%20%60gap%60%20and%5Cn%20%20//%20%60padding%60%20and%20adds%20the%20separator;%20in%20%60Buttons%60%20mode%20it%20is%20the%20whole%20strip.%5Cn%20%20&.modal-commands%20%7B%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20flex-wrap:%20wrap;%5Cn%20%20%20%20gap:%20var(--size-2-2);%5Cn%20%20%20%20padding:%20var(--size-4-2)%20var(--size-4-3);%5Cn%20%20%20%20border-top:%201px%20solid%20var(--background-modifier-border);%5Cn%20%20%7D%5Cn%5Cn%20%20//%20A%20control%20the%20%60Instructions%60%20renderer%20injects%20into%20an%20instruction's%20purpose%20text%20%E2%80%94%20a%20checkbox,%20a%5Cn%20%20//%20dropdown.%20Obsidian%20styles%20the%20instruction%20bar%20itself,%20but%20its%20own%20bar%20never%20contains%20a%20control,%20so%5Cn%20%20//%20nothing%20upstream%20separates%20one%20from%20the%20label%20it%20belongs%20to.%20Sits%20on%20the%20control%20rather%20than%20on%20the%5Cn%20%20//%20strip,%20so%20it%20reaches%20a%20%60SuggestModal%60's%20native%20bar%20as%20well%20as%20a%20self-created%20one.%5Cn%20%20&.modal-command-control%20%7B%5Cn%20%20%20%20margin-inline-start:%20var(--size-2-2);%5Cn%20%20%20%20vertical-align:%20middle;%5Cn%20%20%7D%5Cn%5Cn%20%20//%20One%20command%20button.%20Replaces%20the%20instruction%20bar%20rather%20than%20supplementing%20it:%20the%20bar%20can%20only%20ever%5Cn%20%20//%20say%20which%20key%20to%20press,%20and%20on%20a%20phone%20there%20is%20no%20modifier%20key%20to%20press,%20so%20every%20control%20it%20names%5Cn%20%20//%20is%20unreachable%20there.%5Cn%20%20&.modal-command%20%7B%5Cn%20%20%20%20display:%20inline-flex;%5Cn%20%20%20%20align-items:%20baseline;%5Cn%20%20%20%20gap:%20var(--size-2-2);%5Cn%5Cn%20%20%20%20//%20Comfortably%20tappable%20on%20a%20phone,%20where%20this%20strip%20is%20the%20only%20way%20in.%5Cn%20%20%20%20min-height:%20var(--size-4-8);%5Cn%20%20%20%20padding:%20var(--size-2-1)%20var(--size-4-2);%5Cn%20%20%20%20border:%201px%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20background-color:%20var(--background-secondary);%5Cn%20%20%20%20color:%20var(--text-muted);%5Cn%20%20%20%20font-size:%20var(--font-ui-smaller);%5Cn%20%20%20%20white-space:%20nowrap;%5Cn%20%20%20%20cursor:%20pointer;%5Cn%5Cn%20%20%20%20&:hover:not(:disabled)%20%7B%5Cn%20%20%20%20%20%20background-color:%20var(--background-modifier-hover);%5Cn%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20A%20toggle%20that%20is%20ON.%20An%20action%20never%20carries%20it%20%E2%80%94%20it%20does%20something%20and%20is%20done,%20so%20there%20is%20no%5Cn%20%20%20%20//%20state%20for%20it%20to%20show.%5Cn%20%20%20%20&.is-active%20%7B%5Cn%20%20%20%20%20%20border-color:%20var(--interactive-accent);%5Cn%20%20%20%20%20%20background-color:%20var(--interactive-accent);%5Cn%20%20%20%20%20%20color:%20var(--text-on-accent);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20Disabled%20rather%20than%20removed:%20a%20strip%20that%20lost%20buttons%20as%20modes%20change%20would%20reflow%20under%20the%5Cn%20%20%20%20//%20pointer,%20which%20on%20a%20phone%20means%20a%20mis-tap.%5Cn%20%20%20%20&:disabled%20%7B%5Cn%20%20%20%20%20%20opacity:%200.5;%5Cn%20%20%20%20%20%20cursor:%20default;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.modal-command-hotkey%20%7B%5Cn%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20font-size:%20var(--font-smallest);%5Cn%5Cn%20%20%20%20//%20Faint%20against%20the%20surface%20is%20right;%20faint%20against%20the%20accent%20fill%20is%20invisible.%5Cn%20%20%20%20.modal-command.is-active%20&%20%7B%5Cn%20%20%20%20%20%20opacity:%200.7;%5Cn%20%20%20%20%20%20color:%20var(--text-on-accent);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20&.modal-container%20%7B%5Cn%20%20%20%20.ok-button%20%7B%5Cn%20%20%20%20%20%20margin-right:%2010px;%5Cn%20%20%20%20%20%20margin-top:%2020px;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20//%20Compound,%20not%20nested:%20%60addPluginCssClasses%60%20puts%20%60obsidian-lib%60%20and%20%60multiple-dropdown-component%60%20on%20the%5Cn%20%20//%20SAME%20element%20(the%20setting's%20control%20container),%20so%20a%20descendant%20selector%20matched%20nothing%20and%20every%20multiple%5Cn%20%20//%20dropdown%20rendered%20one%20row%20tall%20%E2%80%94%20Obsidian's%20%60.dropdown%60%20height,%20with%20no%20popup%20behind%20it%20to%20pick%20from.%5Cn%20%20&.multiple-dropdown-component%20%7B%5Cn%20%20%20%20select,%5Cn%20%20%20%20select:focus,%5Cn%20%20%20%20.dropdown%20%7B%5Cn%20%20%20%20%20%20height:%20auto;%5Cn%20%20%20%20%20%20padding-top:%203px;%5Cn%5Cn%20%20%20%20%20%20option:checked%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20var(--interactive-accent);%5Cn%20%20%20%20%20%20%20%20color:%20var(--text-on-accent);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20&.plugin-notice-name%20%7B%5Cn%20%20%20%20color:%20var(--text-accent);%5Cn%20%20%20%20display:%20inline-block;%5Cn%20%20%20%20font-weight:%20var(--font-bold);%5Cn%20%20%20%20margin-bottom:%20var(--size-4-2);%5Cn%5Cn%20%20%20%20//%20The%20name%20is%20inline%20code;%20it%20keeps%20the%20code%20background%20and%20font%20but%20takes%20the%20prefix's%20accent%20color.%5Cn%20%20%20%20code%20%7B%5Cn%20%20%20%20%20%20color:%20inherit;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.plugin-notice-content%20%7B%5Cn%20%20%20%20padding-right:%20var(--size-4-5);%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20.obsidian-lib.cancel-button%20%7B%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20margin-top:%20var(--size-4-2);%5Cn%20%20%20%20%20%20width:%20fit-content;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20The%20close%20button%20reuses%20Obsidian's%20%60modal-header-button%60%20+%20%60clickable-icon%60%20classes%20so%20it%20matches%5Cn%20%20%20%20//%20The%20native%20modal%20close%20button%20(box%20+%20hover);%20only%20its%20corner%20position%20is%20set%20here.%5Cn%20%20%20%20.obsidian-lib.plugin-notice-close-button%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20right:%20var(--size-4-3);%5Cn%20%20%20%20%20%20top:%20var(--size-4-3);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20//%20Move%20the%20notice's%20own%20padding%20onto%20the%20content%20wrapper%20so%20the%20wrapper%20covers%20the%20whole%20clickable%5Cn%20%20//%20Area%20%E2%80%94%20otherwise%20a%20click%20landing%20on%20the%20notice's%20bare%20padding%20(outside%20the%20wrapper)%20would%20bypass%20the%5Cn%20%20//%20Stop-propagation%20guard%20and%20dismiss%20the%20hard-to-close%20notice.%5Cn%20%20&.plugin-notice-requires-explicit-close.notice%20%7B%5Cn%20%20%20%20padding:%200;%5Cn%5Cn%20%20%20%20.obsidian-lib.plugin-notice-content%20%7B%5Cn%20%20%20%20%20%20padding:%20var(--size-4-3)%20var(--size-4-4);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20&.plugin-settings-tab%20%7B%5Cn%20%20%20%20a:focus%20%7B%5Cn%20%20%20%20%20%20outline:%202px%20solid%20var(--link-color);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20&.plugin-suggestion-banner%20%7B%5Cn%20%20%20%20background-color:%20var(--background-secondary);%5Cn%20%20%20%20border-left:%20var(--size-2-1)%20solid%20var(--text-accent);%5Cn%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20flex-direction:%20column;%5Cn%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20margin-bottom:%20var(--size-4-4);%5Cn%20%20%20%20padding:%20var(--size-4-3)%20var(--size-4-4);%5Cn%5Cn%20%20%20%20button%20%7B%5Cn%20%20%20%20%20%20width:%20fit-content;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20//%20A%20notice%20lays%20its%20buttons%20out%20inline%20with%20no%20spacing,%20so%20the%20action%20button%20would%20touch%20the%20decline%20button.%5Cn%20%20&.plugin-suggestion-notice-buttons%20%7B%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20flex-wrap:%20wrap;%5Cn%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20margin-top:%20var(--size-4-2);%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%20A%20popover%20is%20anchored%20at%20a%20point%20and%20appended%20to%20the%20document%20body,%20outside%20any%20plugin-scoped%5Cn//%20container,%20so%20it%20is%20positioned%20absolutely%20at%20the%20top%20level.%20It%20borrows%20Obsidian's%20%60.menu%60%20look,%5Cn//%20which%20already%20carries%20the%20popup%20background,%20border%20and%20shadow%20%E2%80%94%20only%20layout%20is%20set%20here.%5Cn.obsidian-lib%20%7B%5Cn%20%20&.popover%20%7B%5Cn%20%20%20%20//%20Deliberately%20not%20%60calc(100vw%20-%2016px)%60:%20the%20SCSS%20compiler%20strips%20the%20%60calc(%60%20wrapper%20inside%5Cn%20%20%20%20//%20%60min()%60,%20which%20yields%20invalid%20CSS.%20A%20viewport%20percentage%20keeps%20a%20narrow%20window's%20popover%20on%5Cn%20%20%20%20//%20screen.%5Cn%20%20%20%20max-width:%20min(420px,%2090vw);%5Cn%20%20%20%20min-width:%20320px;%5Cn%20%20%20%20padding:%20var(--size-4-2)%20var(--size-4-3);%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20z-index:%20var(--layer-menu);%5Cn%5Cn%20%20%20%20//%20Setting%20rows%20are%20built%20for%20a%20full-width%20settings%20tab;%20compact%20them%20for%20a%20popover.%5Cn%20%20%20%20.setting-item%20%7B%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20border-top:%20none;%5Cn%20%20%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20%20%20padding:%20var(--size-2-1)%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.setting-item-info%20%7B%5Cn%20%20%20%20%20%20margin-right:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.setting-item-control%20%7B%5Cn%20%20%20%20%20%20flex-grow:%201;%5Cn%20%20%20%20%20%20justify-content:%20flex-end;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20input%5Btype='text'%5D%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20&.prompt-modal%20%7B%5Cn%20%20%20%20.text-box%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%20The%20tldraw%20Obsidian%20plugin%20(tldraw/obsidian-plugin)%20ships%20an%20unscoped%20global%20rule%5Cn//%20%60button:not(.clickable-icon)%20%7B%20color:%20currentColor%20%7D%60%20that%20overrides%20Obsidian's%20own%5Cn//%20%60button:not(.clickable-icon)%20%7B%20color:%20var(--text-color)%20%7D%60%20app-wide.%20Obsidian%20sets%5Cn//%20%60--text-color%60%20contextually%20per%20button%20variant%20(%60--text-normal%60%20by%20default,%5Cn//%20%60--text-on-accent%60%20for%20%60.mod-cta%60,%20%60--text-error%60%20for%20%60.mod-warning%60),%20so%20tldraw's%5Cn//%20%60currentColor%60%20discards%20that%20and%20breaks%20button%20contrast%20outside%20tldraw%20%E2%80%94%20e.g.%5Cn//%20White-on-white%20action%20buttons%20inside%20a%20Notice.%20Re-assert%20Obsidian's%20own%20value%20inside%20the%5Cn//%20Library's%20own%20UI%20(specificity%200,2,1),%20which%20wins%20over%20tldraw's%20(0,1,1)%20while%20staying%20correct%5Cn//%20For%20every%20button%20variant%20(it%20reuses%20the%20same%20contextual%20%60--text-color%60).%5Cn//%20It%20MUST%20stay%20scoped%20to%20%60.obsidian-lib%60:%20an%20unscoped%20re-assert%20(it%20was%20%60body%20button%E2%80%A6%60,%5Cn//%200,1,2)%20lands%20on%20every%20button%20in%20the%20app%20and%20beats%20any%20other%20plugin's%20own%20button%20color%5Cn//%20Written%20at%200,1,1,%20which%20Obsidian's%20own%20rule%20used%20to%20lose%20to%20(obsidian-custom-attachment-location%2395).%5Cn//%20Defensive%20workaround%20%E2%80%94%20remove%20once%20the%20upstream%20fix%20ships%20(tldraw/obsidian-plugin%23210).%5Cn.obsidian-lib%20button:not(.clickable-icon)%20%7B%5Cn%20%20color:%20var(--text-color);%5Cn%7D%5Cn%22,%22.obsidian-lib%20%7B%5Cn%20%20&.tri-state-checkbox-component%20%7B%5Cn%20%20%20%20input%5Btype='checkbox'%5D:indeterminate%20%7B%5Cn%20%20%20%20%20%20appearance:%20checkbox;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22@mixin%20invalid%20%7B%5Cn%20%20box-shadow:%200%200%200%202px%20var(--text-error);%5Cn%7D%5Cn%5Cn//%20An%20input%20the%20user%20has%20not%20interacted%20with%20yet%20carries%20%60.untouched%60%20(set%20by%20%60PromptModal%60),%20so%20a%20modal%20that%5Cn//%20opens%20invalid%20by%20design%20does%20not%20greet%20the%20user%20in%20red.%20Both%20blocks%20below%20must%20be%20gated:%20the%20input%20is%5Cn//%20focused%20on%20open,%20so%20the%20focus%20block%20alone%20would%20keep%20painting%20it.%5Cn.obsidian-lib%20%7B%5Cn%20%20:invalid:not(.untouched)%20%7B%5Cn%20%20%20%20@include%20invalid;%5Cn%20%20%7D%5Cn%5Cn%20%20input.metadata-input-text,%5Cn%20%20input%5Btype='date'%5D,%5Cn%20%20input%5Btype='datetime-local'%5D,%5Cn%20%20input%5Btype='email'%5D,%5Cn%20%20input%5Btype='number'%5D,%5Cn%20%20input%5Btype='password'%5D,%5Cn%20%20input%5Btype='search'%5D,%5Cn%20%20input%5Btype='text'%5D,%5Cn%20%20textarea%20%7B%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus-visible,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20&:invalid:not(.untouched)%20%7B%5Cn%20%20%20%20%20%20%20%20@include%20invalid;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.setting-component-wrapper%20%7B%5Cn%20%20%20%20position:%20relative;%5Cn%20%20%20%20display:%20inline-flex;%5Cn%20%20%7D%5Cn%5Cn%20%20&.overlay-validator%20%7B%5Cn%20%20%20%20caret-color:%20transparent;%5Cn%20%20%20%20cursor:%20default;%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20background-color:%20transparent;%5Cn%20%20%20%20border:%20none;%5Cn%20%20%20%20outline:%20none;%5Cn%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20z-index:%209999;%5Cn%20%20%20%20left:%200;%5Cn%20%20%20%20top:%200;%5Cn%20%20%20%20width:%20100%25;%5Cn%20%20%20%20height:%20100%25;%5Cn%20%20%7D%5Cn%5Cn%20%20&.tooltip.tooltip-validator%20%7B%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20top:%20calc(100%25%20+%208px);%5Cn%20%20%20%20width:%20max-content;%5Cn%20%20%7D%5Cn%7D%5Cn%22%5D%7D */\n";
8
8
  export {
9
9
  LIBRARY_STYLES,
@@ -51,4 +51,4 @@ export {
51
51
  asCodeBlock,
52
52
  createFragmentWithCodeBlocks
53
53
  };
54
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2h0bWwtZWxlbWVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIE9ic2lkaWFuLXNwZWNpZmljIEhUTUwgZWxlbWVudCBoZWxwZXJzLlxuICpcbiAqIFVubGlrZSB0aGUgT2JzaWRpYW4tcnVudGltZS1hZ25vc3RpYyBoZWxwZXJzIGluIGBzcmMvaHRtbC1lbGVtZW50LnRzYCwgdGhlc2UgZGVwZW5kIG9uXG4gKiBPYnNpZGlhbi1zcGVjaWZpYyBwcmVzZW50YXRpb24gXHUyMDE0IHRoZSBgbWFya2Rvd24tcmVuZGVyZWRgIENTUyBjbGFzcyB0aGF0IHN0eWxlcyByZW5kZXJlZCBtYXJrZG93biwgYW5kXG4gKiB0aGUgYEVkaXRvciA+IFNwZWxsY2hlY2tgIHZhdWx0IHNldHRpbmcgXHUyMDE0IHNvIHRoZXkgbGl2ZSBpbiB0aGUgT2JzaWRpYW4gbGF5ZXIgYW5kIHVzZSBPYnNpZGlhbidzXG4gKiBgY3JlYXRlRWxgIERPTSBhdWdtZW50YXRpb24uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IENzc0NsYXNzIH0gZnJvbSAnLi9jc3MtY2xhc3MudHMnO1xuaW1wb3J0IHtcbiAgaXNTcGVsbGNoZWNrRW5hYmxlZEZvck1vZGUsXG4gIFNwZWxsY2hlY2tNb2RlXG59IGZyb20gJy4vb2JzaWRpYW4tc2V0dGluZ3MudHMnO1xuXG4vLyBUaGUgZmlyc3QgY29kZSBwb2ludCBvZiB0aGUgQmFzaWMgTXVsdGlsaW5ndWFsIFBsYW5lJ3MgUHJpdmF0ZSBVc2UgQXJlYS4gV3JpdHRlbiBhcyBhIGNvZGUgcG9pbnQgYW5kXG4vLyBjb21wb3NlZCBhdCBydW50aW1lIHJhdGhlciB0aGFuIGFzIGEgc3RyaW5nIGVzY2FwZSwgc28gdGhlIGNvbnN0YW50IGJlbG93IHN0YXlzIGxlZ2libGUgaW4gdGhlIHNvdXJjZVxuLy8gaW5zdGVhZCBvZiBiZWluZyBhbiBpbnZpc2libGUgY2hhcmFjdGVyIG5vIHJlYWRlciBjYW4gaWRlbnRpZnkuXG5jb25zdCBQUklWQVRFX1VTRV9BUkVBX0ZJUlNUX0NPREVfUE9JTlQgPSAweEUwXzAwO1xuXG4vLyBXcmFwcyBhIHZhbHVlIHRoYXQgc2hvdWxkIHJlbmRlciBhcyBhIGNvZGUgYmxvY2suIEEgcHJpdmF0ZS11c2UgY29kZSBwb2ludCwgc28gaXQgY2Fubm90IGNvbGxpZGUgd2l0aFxuLy8gYW55dGhpbmcgYSB0cmFuc2xhdG9yIHdvdWxkIGxlZ2l0aW1hdGVseSB3cml0ZSwgYW5kIHNvIGEgbWVzc2FnZSB0aGF0IHNvbWVob3cgcmVhY2hlcyB0aGUgdXNlciB3aXRoXG4vLyBpdHMgZGVsaW1pdGVycyBpbnRhY3QgaXMgdmlzaWJseSB3cm9uZyByYXRoZXIgdGhhbiBwbGF1c2libHkgaW50ZW50aW9uYWwuXG5jb25zdCBDT0RFX0JMT0NLX0RFTElNSVRFUiA9IFN0cmluZy5mcm9tQ29kZVBvaW50KFBSSVZBVEVfVVNFX0FSRUFfRklSU1RfQ09ERV9QT0lOVCk7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGFwcGx5U3BlbGxjaGVja01vZGV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcGx5U3BlbGxjaGVja01vZGVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCB0byBzZXQgdGhlIGBzcGVsbGNoZWNrYCBhdHRyaWJ1dGUgb24uXG4gICAqL1xuICByZWFkb25seSBlbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogVGhlIG1vZGUgZGVjaWRpbmcgd2hldGhlciB0aGUgZWxlbWVudCBpcyBzcGVsbC1jaGVja2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgU3BlbGxjaGVja01vZGUuT2ZmYFxuICAgKi9cbiAgcmVhZG9ubHkgc3BlbGxjaGVja01vZGU/OiBTcGVsbGNoZWNrTW9kZTtcbn1cblxuLyoqXG4gKiBBcHBlbmRzIGEgY29kZSBibG9jayB0byB0aGUgZ2l2ZW4gRG9jdW1lbnRGcmFnbWVudCBvciBIVE1MRWxlbWVudCwgc3R5bGVkIHRvIG1hdGNoIE9ic2lkaWFuJ3NcbiAqIHJlbmRlcmVkLW1hcmtkb3duIGlubGluZSBjb2RlLlxuICpcbiAqIEBwYXJhbSBlbGVtZW50IC0gVGhlIERvY3VtZW50RnJhZ21lbnQgb3IgSFRNTEVsZW1lbnQgdG8gYXBwZW5kIHRoZSBjb2RlIGJsb2NrIHRvLlxuICogQHBhcmFtIGNvZGUgLSBUaGUgY29kZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGNvZGUgYmxvY2suXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRDb2RlQmxvY2soZWxlbWVudDogRG9jdW1lbnRGcmFnbWVudCB8IEhUTUxFbGVtZW50LCBjb2RlOiBzdHJpbmcpOiB2b2lkIHtcbiAgZWxlbWVudC5jcmVhdGVFbCgnc3Ryb25nJywgeyBjbHM6IGAke0Nzc0NsYXNzLk1hcmtkb3duUmVuZGVyZWR9ICR7Q3NzQ2xhc3MuQ29kZX1gIH0sIChzdHJvbmcpID0+IHtcbiAgICBzdHJvbmcuY3JlYXRlRWwoJ2NvZGUnLCB7IHRleHQ6IGNvZGUgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIEFwcGVuZHMgYSBzdHJpbmcgYXMgdGV4dCwgb3IgYSBmcmVzaCBkZWVwIGNsb25lIG9mIGEge0BsaW5rIERvY3VtZW50RnJhZ21lbnR9LCB0byB0aGUgZ2l2ZW4gZWxlbWVudC5cbiAqXG4gKiBBcHBlbmRpbmcgYSBmcmFnbWVudCBtb3ZlcyBpdHMgY2hpbGRyZW4gb3V0IG9mIGl0LCBzbyBhIGZyYWdtZW50IHJlbmRlcmVkIG1vcmUgdGhhbiBvbmNlIFx1MjAxNCBhIG5vdGljZSBhbmRcbiAqIGEgc2V0dGluZ3MgYmFubmVyLCBvciBhIGJhbm5lciByZW5kZXJlZCBhZ2FpbiBvbiBldmVyeSByZWZyZXNoIFx1MjAxNCB3b3VsZCBiZSBlbXB0eSBmcm9tIHRoZSBzZWNvbmQgcmVuZGVyXG4gKiBvbi4gQ2xvbmluZyBsZWF2ZXMgdGhlIGNhbGxlcidzIGZyYWdtZW50IGludGFjdCBmb3IgdGhlIG5leHQgcmVuZGVyLlxuICpcbiAqIEBwYXJhbSBlbGVtZW50IC0gVGhlIERvY3VtZW50RnJhZ21lbnQgb3IgSFRNTEVsZW1lbnQgdG8gYXBwZW5kIHRvLlxuICogQHBhcmFtIGNvbnRlbnQgLSBUaGUgdGV4dCwgb3IgdGhlIGZyYWdtZW50IHRvIGFwcGVuZCBhIGNsb25lIG9mLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kVGV4dE9yRnJhZ21lbnRDbG9uZShlbGVtZW50OiBEb2N1bWVudEZyYWdtZW50IHwgSFRNTEVsZW1lbnQsIGNvbnRlbnQ6IERvY3VtZW50RnJhZ21lbnQgfCBzdHJpbmcpOiB2b2lkIHtcbiAgZWxlbWVudC5hcHBlbmQodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnID8gY29udGVudCA6IGNvbnRlbnQuY2xvbmVOb2RlKHRydWUpKTtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBgc3BlbGxjaGVja2AgYXR0cmlidXRlIG9uIGFuIGVsZW1lbnQgZnJvbSBhIHtAbGluayBTcGVsbGNoZWNrTW9kZX0uXG4gKlxuICogVGhlIGF0dHJpYnV0ZSBoYXMgdG8gYmUgc2V0IGV4cGxpY2l0bHksIGJlY2F1c2UgYm90aCBvZiB0aGUgc3VyZmFjZXMgdGhhdCBuZWVkIHRoaXMgYXJlIGJvcm4gd2l0aFxuICogYHNwZWxsY2hlY2s9XCJmYWxzZVwiYDogYEFic3RyYWN0VGV4dENvbXBvbmVudGAgZm9yY2VzIGl0IG9udG8gZXZlcnkgdGV4dCBjb21wb25lbnQsIGFuZCBPYnNpZGlhbiBidWlsZHNcbiAqIGV2ZXJ5IGBTdWdnZXN0TW9kYWxgIGlucHV0IHdpdGggaXQgd2l0aG91dCBjb25zdWx0aW5nIGBFZGl0b3IgPiBTcGVsbGNoZWNrYCBhdCBhbGwuXG4gKlxuICogV2hpY2ggb2YgdGhvc2UgYSBnaXZlbiBib3ggd2FudHMgaXMgYSBjYWxsLXNpdGUgZGVjaXNpb24sIGFuZCB0aGUgZGlzdGluY3Rpb24gdGhhdCBob2xkcyB1cCBpcyB3aGF0IHRoZVxuICogYm94IGlzIEZPUjogb25lIHRoYXQgb25seSBGSU5EUyBzb21ldGhpbmcgaXMgYSBzZWFyY2ggZmllbGQgYW5kIHN0YXlzIHVuY2hlY2tlZCwgYmVjYXVzZSBzcXVpZ2dsZXMgdW5kZXJcbiAqIGhhbGYtdHlwZWQgZnJhZ21lbnRzIGFyZSBub2lzZTsgb25lIHRoYXQgTkFNRVMgc29tZXRoaW5nIGlzIGEgcHJvc2UgZmllbGQgYW5kIGZvbGxvd3MgdGhlIHNldHRpbmcsIHRoZVxuICogd2F5IE9ic2lkaWFuJ3Mgb3duIGlubGluZSB0aXRsZSBhbmQgZmlsZS1leHBsb3JlciByZW5hbWUgZG8uXG4gKlxuICogQ2FsbCBpdCBhZ2FpbiB3aGVuZXZlciB0aGF0IGFuc3dlciBjaGFuZ2VzIFx1MjAxNCBhIHBpY2tlciB0aGF0IHN3aXRjaGVzIGJldHdlZW4gZmluZGluZyBhbmQgY3JlYXRpbmcgZmxpcHNcbiAqIG1vZGVzIG1pZC1vcGVuLCBhbmQgdGhlIGF0dHJpYnV0ZSBoYXMgdG8gZm9sbG93LlxuICpcbiAqIFRoZSBuYW1lIGJlaW5nIHR5cGVkIG1heSBiZSBhIFBBVEggcmF0aGVyIHRoYW4gYSBiYXJlIGJhc2VuYW1lLCBzbyBmb2xkZXIgc2VnbWVudHMgZ2V0IGNoZWNrZWQgdG9vLlxuICogVGhhdCBpcyB3aGF0IE9ic2lkaWFuJ3Mgb3duIGlubGluZSByZW5hbWUgZG9lcywgYW5kIHRoZSBhbHRlcm5hdGl2ZSBcdTIwMTQgY2hlY2tpbmcgb25seSB0aGUgbGFzdCBzZWdtZW50IFx1MjAxNFxuICogY2Fubm90IGJlIGV4cHJlc3NlZCBhcyBhbiBhdHRyaWJ1dGUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBhcHBseWluZyB0aGUgc3BlbGxjaGVjayBtb2RlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlTcGVsbGNoZWNrTW9kZShwYXJhbXM6IEFwcGx5U3BlbGxjaGVja01vZGVQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIGFwcCxcbiAgICBlbGVtZW50LFxuICAgIHNwZWxsY2hlY2tNb2RlID0gU3BlbGxjaGVja01vZGUuT2ZmXG4gIH0gPSBwYXJhbXM7XG4gIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdzcGVsbGNoZWNrJywgU3RyaW5nKGlzU3BlbGxjaGVja0VuYWJsZWRGb3JNb2RlKGFwcCwgc3BlbGxjaGVja01vZGUpKSk7XG59XG5cbi8qKlxuICogTWFya3MgYSB2YWx1ZSBzbyB0aGF0IHtAbGluayBjcmVhdGVGcmFnbWVudFdpdGhDb2RlQmxvY2tzfSByZW5kZXJzIGl0IGFzIGFuIGlubGluZSBjb2RlIGJsb2NrLlxuICpcbiAqIFdyYXAgYSB2YWx1ZSB3aXRoIHRoaXMgYmVmb3JlIGhhbmRpbmcgaXQgdG8gYHQoKWAsIGFuZCB0aGUgdHJhbnNsYXRlZCBtZXNzYWdlIGNvbWVzIGJhY2sgd2l0aCB0aGUgdmFsdWVcbiAqIGFscmVhZHkgaW4gcGxhY2UsIGRlbGltaXRlZDpcbiAqXG4gKiBgYGB0c1xuICogY3JlYXRlRnJhZ21lbnRXaXRoQ29kZUJsb2Nrcyh0KCgkKSA9PiAkLm9ic2lkaWFuTGliLnBsdWdpblN1Z2dlc3Rpb24uaW5zdGFsbGVkLCB7XG4gKiAgIHBsdWdpbk5hbWU6IGFzQ29kZUJsb2NrKHBsdWdpbk5hbWUpXG4gKiB9KSk7XG4gKiBgYGBcbiAqXG4gKiBUaGUgbWFya2VyIHRyYXZlbHMgV0lUSCB0aGUgdmFsdWUgcmF0aGVyIHRoYW4gYmVpbmcgYSBwb3NpdGlvbmFsIHBsYWNlaG9sZGVyIHRoZSBjYWxsZXIgbWF0Y2hlcyB1cFxuICogYWZ0ZXJ3YXJkcy4gVGhhdCBkaXN0aW5jdGlvbiBpcyB0aGUgd2hvbGUgcG9pbnQ6IGEgbWVzc2FnZSBuYW1pbmcgdHdvIHBsdWdpbnMgaXMgaW50ZXJwb2xhdGVkIGJ5IG5hbWUsXG4gKiBhbmQgYSB0cmFuc2xhdGlvbiBpcyBmcmVlIHRvIHB1dCB0aGVtIGluIGVpdGhlciBvcmRlciwgc28gYW55dGhpbmcgdGhhdCByZS1hc3NvY2lhdGVkIHZhbHVlcyB3aXRoXG4gKiBwbGFjZWhvbGRlcnMgYnkgcG9zaXRpb24gd291bGQgc2lsZW50bHkgc3dhcCB0aGVtIHRoZSBtb21lbnQgYSBzZW50ZW5jZSByZWFkIHRoZSBvdGhlciB3YXkgcm91bmQuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHJlbmRlciBhcyBhIGNvZGUgYmxvY2suXG4gKiBAcmV0dXJucyBUaGUgdmFsdWUsIGRlbGltaXRlZCBmb3Ige0BsaW5rIGNyZWF0ZUZyYWdtZW50V2l0aENvZGVCbG9ja3N9LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNDb2RlQmxvY2sodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtDT0RFX0JMT0NLX0RFTElNSVRFUn0ke3ZhbHVlfSR7Q09ERV9CTE9DS19ERUxJTUlURVJ9YDtcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSB7QGxpbmsgRG9jdW1lbnRGcmFnbWVudH0gZnJvbSBhbiBhbHJlYWR5LXRyYW5zbGF0ZWQgbWVzc2FnZSwgcmVuZGVyaW5nIGV2ZXJ5IHZhbHVlIHRoYXQgd2FzXG4gKiB3cmFwcGVkIGluIHtAbGluayBhc0NvZGVCbG9ja30gYXMgYW4gaW5saW5lIGNvZGUgYmxvY2sgYW5kIHRoZSByZXN0IGFzIHBsYWluIHRleHQuXG4gKlxuICogVGhlIG1lc3NhZ2Ugc3RheXMgT05FIHRyYW5zbGF0YWJsZSB1bml0LiBTcGxpdHRpbmcgYSBzZW50ZW5jZSBpbnRvIGEgcHJlZml4IGFuZCBhIHN1ZmZpeCBhcm91bmQgdGhlIHZhbHVlXG4gKiBpcyB0aGUgb2J2aW91cyBhbHRlcm5hdGl2ZSBhbmQgaXQgZG9lcyBub3Qgc3Vydml2ZSB0cmFuc2xhdGlvbjogYSBsYW5ndWFnZSB0aGF0IHJlb3JkZXJzIHRoZSBjbGF1c2UsIG9yXG4gKiB0aGF0IG5lZWRzIGRpZmZlcmVudCBjYXNlIG9uIHRoZSBzdXJyb3VuZGluZyB3b3JkcywgY2Fubm90IGV4cHJlc3MgdGhhdCB0aHJvdWdoIHR3byBmaXhlZCBoYWx2ZXMuIEhlcmVcbiAqIHRoZSB2YWx1ZSBzaXRzIHdoZXJldmVyIHRoZSB0cmFuc2xhdGlvbiBwdXRzIGl0LCBhbmQgb25seSBpdHMgcmVuZGVyaW5nIGlzIGRlY2lkZWQuXG4gKlxuICogQSBtZXNzYWdlIHdpdGggbm90aGluZyBtYXJrZWQgY29tZXMgYmFjayBhcyBwbGFpbiB0ZXh0LCBzbyB0aGlzIGlzIHNhZmUgdG8gYXBwbHkgdG8gYW55IG1lc3NhZ2UuXG4gKlxuICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgdHJhbnNsYXRlZCBtZXNzYWdlLCB3aXRoIGl0cyBjb2RlIHZhbHVlcyB3cmFwcGVkIGJ5IHtAbGluayBhc0NvZGVCbG9ja30uXG4gKiBAcmV0dXJucyBUaGUgZnJhZ21lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGcmFnbWVudFdpdGhDb2RlQmxvY2tzKG1lc3NhZ2U6IHN0cmluZyk6IERvY3VtZW50RnJhZ21lbnQge1xuICBjb25zdCBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50KCk7XG5cbiAgLy8gRGVsaW1pdGVycyBjb21lIGluIHBhaXJzLCBzbyB0aGUgc2VnbWVudHMgYmV0d2VlbiB0aGVtIGFsdGVybmF0ZTogcGxhaW4gdGV4dCwgY29kZSB2YWx1ZSwgcGxhaW4gdGV4dC5cbiAgbGV0IGlzQ29kZVNlZ21lbnQgPSBmYWxzZTtcbiAgZm9yIChjb25zdCBzZWdtZW50IG9mIG1lc3NhZ2Uuc3BsaXQoQ09ERV9CTE9DS19ERUxJTUlURVIpKSB7XG4gICAgaWYgKHNlZ21lbnQgIT09ICcnKSB7XG4gICAgICBpZiAoaXNDb2RlU2VnbWVudCkge1xuICAgICAgICBhcHBlbmRDb2RlQmxvY2soZnJhZ21lbnQsIHNlZ21lbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZnJhZ21lbnQuYXBwZW5kVGV4dChzZWdtZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpc0NvZGVTZWdtZW50ID0gIWlzQ29kZVNlZ21lbnQ7XG4gIH1cblxuICByZXR1cm4gZnJhZ21lbnQ7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7OztBQWFBLFNBQVMsZ0JBQWdCO0FBQ3pCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBS1AsTUFBTSxvQ0FBb0M7QUFLMUMsTUFBTSx1QkFBdUIsT0FBTyxjQUFjLGlDQUFpQztBQStCNUUsU0FBUyxnQkFBZ0IsU0FBeUMsTUFBb0I7QUFDM0YsVUFBUSxTQUFTLFVBQVUsRUFBRSxLQUFLLEdBQUcsU0FBUyxnQkFBZ0IsSUFBSSxTQUFTLElBQUksR0FBRyxHQUFHLENBQUMsV0FBVztBQUMvRixXQUFPLFNBQVMsUUFBUSxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQUEsRUFDeEMsQ0FBQztBQUNIO0FBWU8sU0FBUywwQkFBMEIsU0FBeUMsU0FBMEM7QUFDM0gsVUFBUSxPQUFPLE9BQU8sWUFBWSxXQUFXLFVBQVUsUUFBUSxVQUFVLElBQUksQ0FBQztBQUNoRjtBQXVCTyxTQUFTLG9CQUFvQixRQUF5QztBQUMzRSxRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxJQUNBLGlCQUFpQixlQUFlO0FBQUEsRUFDbEMsSUFBSTtBQUNKLFVBQVEsYUFBYSxjQUFjLE9BQU8sMkJBQTJCLEtBQUssY0FBYyxDQUFDLENBQUM7QUFDNUY7QUFzQk8sU0FBUyxZQUFZLE9BQXVCO0FBQ2pELFNBQU8sR0FBRyxvQkFBb0IsR0FBRyxLQUFLLEdBQUcsb0JBQW9CO0FBQy9EO0FBZ0JPLFNBQVMsNkJBQTZCLFNBQW1DO0FBQzlFLFFBQU0sV0FBVyxlQUFlO0FBR2hDLE1BQUksZ0JBQWdCO0FBQ3BCLGFBQVcsV0FBVyxRQUFRLE1BQU0sb0JBQW9CLEdBQUc7QUFDekQsUUFBSSxZQUFZLElBQUk7QUFDbEIsVUFBSSxlQUFlO0FBQ2pCLHdCQUFnQixVQUFVLE9BQU87QUFBQSxNQUNuQyxPQUFPO0FBQ0wsaUJBQVMsV0FBVyxPQUFPO0FBQUEsTUFDN0I7QUFBQSxJQUNGO0FBRUEsb0JBQWdCLENBQUM7QUFBQSxFQUNuQjtBQUVBLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFtdCn0K
54
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2h0bWwtZWxlbWVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIE9ic2lkaWFuLXNwZWNpZmljIEhUTUwgZWxlbWVudCBoZWxwZXJzLlxuICpcbiAqIFVubGlrZSB0aGUgT2JzaWRpYW4tcnVudGltZS1hZ25vc3RpYyBoZWxwZXJzIGluIGBzcmMvaHRtbC1lbGVtZW50LnRzYCwgdGhlc2UgZGVwZW5kIG9uXG4gKiBPYnNpZGlhbi1zcGVjaWZpYyBwcmVzZW50YXRpb24gXHUyMDE0IHRoZSBgbWFya2Rvd24tcmVuZGVyZWRgIENTUyBjbGFzcyB0aGF0IHN0eWxlcyByZW5kZXJlZCBtYXJrZG93biwgYW5kXG4gKiB0aGUgYEVkaXRvciA+IFNwZWxsY2hlY2tgIHZhdWx0IHNldHRpbmcgXHUyMDE0IHNvIHRoZXkgbGl2ZSBpbiB0aGUgT2JzaWRpYW4gbGF5ZXIgYW5kIHVzZSBPYnNpZGlhbidzXG4gKiBgY3JlYXRlRWxgIERPTSBhdWdtZW50YXRpb24uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IENzc0NsYXNzIH0gZnJvbSAnLi9jc3MtY2xhc3MudHMnO1xuaW1wb3J0IHtcbiAgaXNTcGVsbGNoZWNrRW5hYmxlZEZvck1vZGUsXG4gIFNwZWxsY2hlY2tNb2RlXG59IGZyb20gJy4vb2JzaWRpYW4tc2V0dGluZ3MudHMnO1xuXG4vLyBUaGUgZmlyc3QgY29kZSBwb2ludCBvZiB0aGUgQmFzaWMgTXVsdGlsaW5ndWFsIFBsYW5lJ3MgUHJpdmF0ZSBVc2UgQXJlYS4gV3JpdHRlbiBhcyBhIGNvZGUgcG9pbnQgYW5kXG4vLyBjb21wb3NlZCBhdCBydW50aW1lIHJhdGhlciB0aGFuIGFzIGEgc3RyaW5nIGVzY2FwZSwgc28gdGhlIGNvbnN0YW50IGJlbG93IHN0YXlzIGxlZ2libGUgaW4gdGhlIHNvdXJjZVxuLy8gaW5zdGVhZCBvZiBiZWluZyBhbiBpbnZpc2libGUgY2hhcmFjdGVyIG5vIHJlYWRlciBjYW4gaWRlbnRpZnkuXG5jb25zdCBQUklWQVRFX1VTRV9BUkVBX0ZJUlNUX0NPREVfUE9JTlQgPSAweEUwXzAwO1xuXG4vLyBXcmFwcyBhIHZhbHVlIHRoYXQgc2hvdWxkIHJlbmRlciBhcyBhIGNvZGUgYmxvY2suIEEgcHJpdmF0ZS11c2UgY29kZSBwb2ludCwgc28gaXQgY2Fubm90IGNvbGxpZGUgd2l0aFxuLy8gYW55dGhpbmcgYSB0cmFuc2xhdG9yIHdvdWxkIGxlZ2l0aW1hdGVseSB3cml0ZSwgYW5kIHNvIGEgbWVzc2FnZSB0aGF0IHNvbWVob3cgcmVhY2hlcyB0aGUgdXNlciB3aXRoXG4vLyBpdHMgZGVsaW1pdGVycyBpbnRhY3QgaXMgdmlzaWJseSB3cm9uZyByYXRoZXIgdGhhbiBwbGF1c2libHkgaW50ZW50aW9uYWwuXG5jb25zdCBDT0RFX0JMT0NLX0RFTElNSVRFUiA9IFN0cmluZy5mcm9tQ29kZVBvaW50KFBSSVZBVEVfVVNFX0FSRUFfRklSU1RfQ09ERV9QT0lOVCk7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGFwcGx5U3BlbGxjaGVja01vZGV9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcGx5U3BlbGxjaGVja01vZGVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCB0byBzZXQgdGhlIGBzcGVsbGNoZWNrYCBhdHRyaWJ1dGUgb24uXG4gICAqL1xuICByZWFkb25seSBlbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogVGhlIG1vZGUgZGVjaWRpbmcgd2hldGhlciB0aGUgZWxlbWVudCBpcyBzcGVsbC1jaGVja2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgU3BlbGxjaGVja01vZGUuT2ZmYFxuICAgKi9cbiAgcmVhZG9ubHkgc3BlbGxjaGVja01vZGU/OiBTcGVsbGNoZWNrTW9kZTtcbn1cblxuLyoqXG4gKiBBcHBlbmRzIGEgY29kZSBibG9jayB0byB0aGUgZ2l2ZW4gRG9jdW1lbnRGcmFnbWVudCBvciBIVE1MRWxlbWVudCwgc3R5bGVkIHRvIG1hdGNoIE9ic2lkaWFuJ3NcbiAqIHJlbmRlcmVkLW1hcmtkb3duIGlubGluZSBjb2RlLlxuICpcbiAqIEBwYXJhbSBlbGVtZW50IC0gVGhlIERvY3VtZW50RnJhZ21lbnQgb3IgSFRNTEVsZW1lbnQgdG8gYXBwZW5kIHRoZSBjb2RlIGJsb2NrIHRvLlxuICogQHBhcmFtIGNvZGUgLSBUaGUgY29kZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGNvZGUgYmxvY2suXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRDb2RlQmxvY2soZWxlbWVudDogRG9jdW1lbnRGcmFnbWVudCB8IEhUTUxFbGVtZW50LCBjb2RlOiBzdHJpbmcpOiB2b2lkIHtcbiAgZWxlbWVudC5jcmVhdGVFbCgnc3Ryb25nJywgeyBjbHM6IGAke0Nzc0NsYXNzLk1hcmtkb3duUmVuZGVyZWR9ICR7Q3NzQ2xhc3MuQ29kZX1gIH0sIChzdHJvbmcpID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgb2JzaWRpYW4tZGV2LXRvb2xraXQvbm8tYmFyZS1jb2RlLWVsZW1lbnQgLS0gVGhpcyBpcyB0aGUgaGVscGVyIHRoZSBydWxlIHBvaW50cyB0bzogdGhlIHdyYXBwaW5nIGBzdHJvbmdgIGNhcnJpZXMgdGhlIGNsYXNzZXMgdGhhdCBnaXZlIHRoaXMgYGNvZGVgIGl0cyBjaGlwLlxuICAgIHN0cm9uZy5jcmVhdGVFbCgnY29kZScsIHsgdGV4dDogY29kZSB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogQXBwZW5kcyBhIHN0cmluZyBhcyB0ZXh0LCBvciBhIGZyZXNoIGRlZXAgY2xvbmUgb2YgYSB7QGxpbmsgRG9jdW1lbnRGcmFnbWVudH0sIHRvIHRoZSBnaXZlbiBlbGVtZW50LlxuICpcbiAqIEFwcGVuZGluZyBhIGZyYWdtZW50IG1vdmVzIGl0cyBjaGlsZHJlbiBvdXQgb2YgaXQsIHNvIGEgZnJhZ21lbnQgcmVuZGVyZWQgbW9yZSB0aGFuIG9uY2UgXHUyMDE0IGEgbm90aWNlIGFuZFxuICogYSBzZXR0aW5ncyBiYW5uZXIsIG9yIGEgYmFubmVyIHJlbmRlcmVkIGFnYWluIG9uIGV2ZXJ5IHJlZnJlc2ggXHUyMDE0IHdvdWxkIGJlIGVtcHR5IGZyb20gdGhlIHNlY29uZCByZW5kZXJcbiAqIG9uLiBDbG9uaW5nIGxlYXZlcyB0aGUgY2FsbGVyJ3MgZnJhZ21lbnQgaW50YWN0IGZvciB0aGUgbmV4dCByZW5kZXIuXG4gKlxuICogQHBhcmFtIGVsZW1lbnQgLSBUaGUgRG9jdW1lbnRGcmFnbWVudCBvciBIVE1MRWxlbWVudCB0byBhcHBlbmQgdG8uXG4gKiBAcGFyYW0gY29udGVudCAtIFRoZSB0ZXh0LCBvciB0aGUgZnJhZ21lbnQgdG8gYXBwZW5kIGEgY2xvbmUgb2YuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRUZXh0T3JGcmFnbWVudENsb25lKGVsZW1lbnQ6IERvY3VtZW50RnJhZ21lbnQgfCBIVE1MRWxlbWVudCwgY29udGVudDogRG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZyk6IHZvaWQge1xuICBlbGVtZW50LmFwcGVuZCh0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycgPyBjb250ZW50IDogY29udGVudC5jbG9uZU5vZGUodHJ1ZSkpO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIGBzcGVsbGNoZWNrYCBhdHRyaWJ1dGUgb24gYW4gZWxlbWVudCBmcm9tIGEge0BsaW5rIFNwZWxsY2hlY2tNb2RlfS5cbiAqXG4gKiBUaGUgYXR0cmlidXRlIGhhcyB0byBiZSBzZXQgZXhwbGljaXRseSwgYmVjYXVzZSBib3RoIG9mIHRoZSBzdXJmYWNlcyB0aGF0IG5lZWQgdGhpcyBhcmUgYm9ybiB3aXRoXG4gKiBgc3BlbGxjaGVjaz1cImZhbHNlXCJgOiBgQWJzdHJhY3RUZXh0Q29tcG9uZW50YCBmb3JjZXMgaXQgb250byBldmVyeSB0ZXh0IGNvbXBvbmVudCwgYW5kIE9ic2lkaWFuIGJ1aWxkc1xuICogZXZlcnkgYFN1Z2dlc3RNb2RhbGAgaW5wdXQgd2l0aCBpdCB3aXRob3V0IGNvbnN1bHRpbmcgYEVkaXRvciA+IFNwZWxsY2hlY2tgIGF0IGFsbC5cbiAqXG4gKiBXaGljaCBvZiB0aG9zZSBhIGdpdmVuIGJveCB3YW50cyBpcyBhIGNhbGwtc2l0ZSBkZWNpc2lvbiwgYW5kIHRoZSBkaXN0aW5jdGlvbiB0aGF0IGhvbGRzIHVwIGlzIHdoYXQgdGhlXG4gKiBib3ggaXMgRk9SOiBvbmUgdGhhdCBvbmx5IEZJTkRTIHNvbWV0aGluZyBpcyBhIHNlYXJjaCBmaWVsZCBhbmQgc3RheXMgdW5jaGVja2VkLCBiZWNhdXNlIHNxdWlnZ2xlcyB1bmRlclxuICogaGFsZi10eXBlZCBmcmFnbWVudHMgYXJlIG5vaXNlOyBvbmUgdGhhdCBOQU1FUyBzb21ldGhpbmcgaXMgYSBwcm9zZSBmaWVsZCBhbmQgZm9sbG93cyB0aGUgc2V0dGluZywgdGhlXG4gKiB3YXkgT2JzaWRpYW4ncyBvd24gaW5saW5lIHRpdGxlIGFuZCBmaWxlLWV4cGxvcmVyIHJlbmFtZSBkby5cbiAqXG4gKiBDYWxsIGl0IGFnYWluIHdoZW5ldmVyIHRoYXQgYW5zd2VyIGNoYW5nZXMgXHUyMDE0IGEgcGlja2VyIHRoYXQgc3dpdGNoZXMgYmV0d2VlbiBmaW5kaW5nIGFuZCBjcmVhdGluZyBmbGlwc1xuICogbW9kZXMgbWlkLW9wZW4sIGFuZCB0aGUgYXR0cmlidXRlIGhhcyB0byBmb2xsb3cuXG4gKlxuICogVGhlIG5hbWUgYmVpbmcgdHlwZWQgbWF5IGJlIGEgUEFUSCByYXRoZXIgdGhhbiBhIGJhcmUgYmFzZW5hbWUsIHNvIGZvbGRlciBzZWdtZW50cyBnZXQgY2hlY2tlZCB0b28uXG4gKiBUaGF0IGlzIHdoYXQgT2JzaWRpYW4ncyBvd24gaW5saW5lIHJlbmFtZSBkb2VzLCBhbmQgdGhlIGFsdGVybmF0aXZlIFx1MjAxNCBjaGVja2luZyBvbmx5IHRoZSBsYXN0IHNlZ21lbnQgXHUyMDE0XG4gKiBjYW5ub3QgYmUgZXhwcmVzc2VkIGFzIGFuIGF0dHJpYnV0ZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIGFwcGx5aW5nIHRoZSBzcGVsbGNoZWNrIG1vZGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVNwZWxsY2hlY2tNb2RlKHBhcmFtczogQXBwbHlTcGVsbGNoZWNrTW9kZVBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgYXBwLFxuICAgIGVsZW1lbnQsXG4gICAgc3BlbGxjaGVja01vZGUgPSBTcGVsbGNoZWNrTW9kZS5PZmZcbiAgfSA9IHBhcmFtcztcbiAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3NwZWxsY2hlY2snLCBTdHJpbmcoaXNTcGVsbGNoZWNrRW5hYmxlZEZvck1vZGUoYXBwLCBzcGVsbGNoZWNrTW9kZSkpKTtcbn1cblxuLyoqXG4gKiBNYXJrcyBhIHZhbHVlIHNvIHRoYXQge0BsaW5rIGNyZWF0ZUZyYWdtZW50V2l0aENvZGVCbG9ja3N9IHJlbmRlcnMgaXQgYXMgYW4gaW5saW5lIGNvZGUgYmxvY2suXG4gKlxuICogV3JhcCBhIHZhbHVlIHdpdGggdGhpcyBiZWZvcmUgaGFuZGluZyBpdCB0byBgdCgpYCwgYW5kIHRoZSB0cmFuc2xhdGVkIG1lc3NhZ2UgY29tZXMgYmFjayB3aXRoIHRoZSB2YWx1ZVxuICogYWxyZWFkeSBpbiBwbGFjZSwgZGVsaW1pdGVkOlxuICpcbiAqIGBgYHRzXG4gKiBjcmVhdGVGcmFnbWVudFdpdGhDb2RlQmxvY2tzKHQoKCQpID0+ICQub2JzaWRpYW5MaWIucGx1Z2luU3VnZ2VzdGlvbi5pbnN0YWxsZWQsIHtcbiAqICAgcGx1Z2luTmFtZTogYXNDb2RlQmxvY2socGx1Z2luTmFtZSlcbiAqIH0pKTtcbiAqIGBgYFxuICpcbiAqIFRoZSBtYXJrZXIgdHJhdmVscyBXSVRIIHRoZSB2YWx1ZSByYXRoZXIgdGhhbiBiZWluZyBhIHBvc2l0aW9uYWwgcGxhY2Vob2xkZXIgdGhlIGNhbGxlciBtYXRjaGVzIHVwXG4gKiBhZnRlcndhcmRzLiBUaGF0IGRpc3RpbmN0aW9uIGlzIHRoZSB3aG9sZSBwb2ludDogYSBtZXNzYWdlIG5hbWluZyB0d28gcGx1Z2lucyBpcyBpbnRlcnBvbGF0ZWQgYnkgbmFtZSxcbiAqIGFuZCBhIHRyYW5zbGF0aW9uIGlzIGZyZWUgdG8gcHV0IHRoZW0gaW4gZWl0aGVyIG9yZGVyLCBzbyBhbnl0aGluZyB0aGF0IHJlLWFzc29jaWF0ZWQgdmFsdWVzIHdpdGhcbiAqIHBsYWNlaG9sZGVycyBieSBwb3NpdGlvbiB3b3VsZCBzaWxlbnRseSBzd2FwIHRoZW0gdGhlIG1vbWVudCBhIHNlbnRlbmNlIHJlYWQgdGhlIG90aGVyIHdheSByb3VuZC5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gcmVuZGVyIGFzIGEgY29kZSBibG9jay5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSwgZGVsaW1pdGVkIGZvciB7QGxpbmsgY3JlYXRlRnJhZ21lbnRXaXRoQ29kZUJsb2Nrc30uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc0NvZGVCbG9jayh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke0NPREVfQkxPQ0tfREVMSU1JVEVSfSR7dmFsdWV9JHtDT0RFX0JMT0NLX0RFTElNSVRFUn1gO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBhIHtAbGluayBEb2N1bWVudEZyYWdtZW50fSBmcm9tIGFuIGFscmVhZHktdHJhbnNsYXRlZCBtZXNzYWdlLCByZW5kZXJpbmcgZXZlcnkgdmFsdWUgdGhhdCB3YXNcbiAqIHdyYXBwZWQgaW4ge0BsaW5rIGFzQ29kZUJsb2NrfSBhcyBhbiBpbmxpbmUgY29kZSBibG9jayBhbmQgdGhlIHJlc3QgYXMgcGxhaW4gdGV4dC5cbiAqXG4gKiBUaGUgbWVzc2FnZSBzdGF5cyBPTkUgdHJhbnNsYXRhYmxlIHVuaXQuIFNwbGl0dGluZyBhIHNlbnRlbmNlIGludG8gYSBwcmVmaXggYW5kIGEgc3VmZml4IGFyb3VuZCB0aGUgdmFsdWVcbiAqIGlzIHRoZSBvYnZpb3VzIGFsdGVybmF0aXZlIGFuZCBpdCBkb2VzIG5vdCBzdXJ2aXZlIHRyYW5zbGF0aW9uOiBhIGxhbmd1YWdlIHRoYXQgcmVvcmRlcnMgdGhlIGNsYXVzZSwgb3JcbiAqIHRoYXQgbmVlZHMgZGlmZmVyZW50IGNhc2Ugb24gdGhlIHN1cnJvdW5kaW5nIHdvcmRzLCBjYW5ub3QgZXhwcmVzcyB0aGF0IHRocm91Z2ggdHdvIGZpeGVkIGhhbHZlcy4gSGVyZVxuICogdGhlIHZhbHVlIHNpdHMgd2hlcmV2ZXIgdGhlIHRyYW5zbGF0aW9uIHB1dHMgaXQsIGFuZCBvbmx5IGl0cyByZW5kZXJpbmcgaXMgZGVjaWRlZC5cbiAqXG4gKiBBIG1lc3NhZ2Ugd2l0aCBub3RoaW5nIG1hcmtlZCBjb21lcyBiYWNrIGFzIHBsYWluIHRleHQsIHNvIHRoaXMgaXMgc2FmZSB0byBhcHBseSB0byBhbnkgbWVzc2FnZS5cbiAqXG4gKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSB0cmFuc2xhdGVkIG1lc3NhZ2UsIHdpdGggaXRzIGNvZGUgdmFsdWVzIHdyYXBwZWQgYnkge0BsaW5rIGFzQ29kZUJsb2NrfS5cbiAqIEByZXR1cm5zIFRoZSBmcmFnbWVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZyYWdtZW50V2l0aENvZGVCbG9ja3MobWVzc2FnZTogc3RyaW5nKTogRG9jdW1lbnRGcmFnbWVudCB7XG4gIGNvbnN0IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnQoKTtcblxuICAvLyBEZWxpbWl0ZXJzIGNvbWUgaW4gcGFpcnMsIHNvIHRoZSBzZWdtZW50cyBiZXR3ZWVuIHRoZW0gYWx0ZXJuYXRlOiBwbGFpbiB0ZXh0LCBjb2RlIHZhbHVlLCBwbGFpbiB0ZXh0LlxuICBsZXQgaXNDb2RlU2VnbWVudCA9IGZhbHNlO1xuICBmb3IgKGNvbnN0IHNlZ21lbnQgb2YgbWVzc2FnZS5zcGxpdChDT0RFX0JMT0NLX0RFTElNSVRFUikpIHtcbiAgICBpZiAoc2VnbWVudCAhPT0gJycpIHtcbiAgICAgIGlmIChpc0NvZGVTZWdtZW50KSB7XG4gICAgICAgIGFwcGVuZENvZGVCbG9jayhmcmFnbWVudCwgc2VnbWVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmcmFnbWVudC5hcHBlbmRUZXh0KHNlZ21lbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlzQ29kZVNlZ21lbnQgPSAhaXNDb2RlU2VnbWVudDtcbiAgfVxuXG4gIHJldHVybiBmcmFnbWVudDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7O0FBYUEsU0FBUyxnQkFBZ0I7QUFDekI7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFLUCxNQUFNLG9DQUFvQztBQUsxQyxNQUFNLHVCQUF1QixPQUFPLGNBQWMsaUNBQWlDO0FBK0I1RSxTQUFTLGdCQUFnQixTQUF5QyxNQUFvQjtBQUMzRixVQUFRLFNBQVMsVUFBVSxFQUFFLEtBQUssR0FBRyxTQUFTLGdCQUFnQixJQUFJLFNBQVMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxXQUFXO0FBRS9GLFdBQU8sU0FBUyxRQUFRLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFBQSxFQUN4QyxDQUFDO0FBQ0g7QUFZTyxTQUFTLDBCQUEwQixTQUF5QyxTQUEwQztBQUMzSCxVQUFRLE9BQU8sT0FBTyxZQUFZLFdBQVcsVUFBVSxRQUFRLFVBQVUsSUFBSSxDQUFDO0FBQ2hGO0FBdUJPLFNBQVMsb0JBQW9CLFFBQXlDO0FBQzNFLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLElBQ0EsaUJBQWlCLGVBQWU7QUFBQSxFQUNsQyxJQUFJO0FBQ0osVUFBUSxhQUFhLGNBQWMsT0FBTywyQkFBMkIsS0FBSyxjQUFjLENBQUMsQ0FBQztBQUM1RjtBQXNCTyxTQUFTLFlBQVksT0FBdUI7QUFDakQsU0FBTyxHQUFHLG9CQUFvQixHQUFHLEtBQUssR0FBRyxvQkFBb0I7QUFDL0Q7QUFnQk8sU0FBUyw2QkFBNkIsU0FBbUM7QUFDOUUsUUFBTSxXQUFXLGVBQWU7QUFHaEMsTUFBSSxnQkFBZ0I7QUFDcEIsYUFBVyxXQUFXLFFBQVEsTUFBTSxvQkFBb0IsR0FBRztBQUN6RCxRQUFJLFlBQVksSUFBSTtBQUNsQixVQUFJLGVBQWU7QUFDakIsd0JBQWdCLFVBQVUsT0FBTztBQUFBLE1BQ25DLE9BQU87QUFDTCxpQkFBUyxXQUFXLE9BQU87QUFBQSxNQUM3QjtBQUFBLElBQ0Y7QUFFQSxvQkFBZ0IsQ0FBQztBQUFBLEVBQ25CO0FBRUEsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -236,7 +236,8 @@ export declare function isParseLinkReference(reference: Reference): reference is
236
236
  /**
237
237
  * Parses the links from a note's frontmatter. Each string value is parsed via {@link parseLinks}: a value
238
238
  * that is a single link yields an entry without offsets, and a value that holds multiple links yields
239
- * offset-carrying entries. Internal single-link values are omitted, as Obsidian natively caches them.
239
+ * offset-carrying entries. A value is a single link the way Obsidian reads it, so `[A [ B](t.md)` is one
240
+ * link captioned `A [ B` (see {@link parseLink}). Internal single-link values are omitted, as Obsidian natively caches them.
240
241
  *
241
242
  * @param frontmatter - The frontmatter to parse (a value, object, or array).
242
243
  * @returns The parsed frontmatter links.
@@ -245,6 +246,10 @@ export declare function parseFrontmatterLinks(frontmatter: unknown): ParseFrontm
245
246
  /**
246
247
  * Parses a link into its components.
247
248
  *
249
+ * A string that starts with `[` and ends with a markdown link is read as ONE link whose caption runs
250
+ * from the leading `[` to that link's `](`, the way Obsidian reads a frontmatter value: `[A [ B](t.md)`
251
+ * has the alias `A [ B`, where CommonMark finds only `[ B](t.md)`.
252
+ *
248
253
  * @param $string - The link to parse.
249
254
  * @param options - The parse options.
250
255
  * @returns The parsed link.