obsidian-dev-utils 99.0.0 → 100.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -13,11 +13,38 @@
13
13
  * This lives in the shared library rather than in one plugin because more than one plugin relocates
14
14
  * attachments over the same vault. If they each decided separately what one attachment is, a user
15
15
  * with both installed would get a folder kept whole by one and torn apart by the other.
16
+ *
17
+ * Which is why the designation itself is read from the vault rather than supplied per caller: pass an
18
+ * {@link App} and {@link findAttachmentUnitFolderPath} walks with whatever an attachment-location
19
+ * plugin published on the patched `Vault.getAvailablePathForAttachments`, so every plugin decides from
20
+ * one answer. The explicit-predicate form remains for a caller that genuinely owns its own patterns.
21
+ */
22
+ import type { App } from 'obsidian';
23
+ /**
24
+ * Parameters for {@link findAttachmentUnitFolderPath}, reading the designation published on the vault.
16
25
  */
26
+ export interface FindAttachmentUnitFolderPathFromAppParams {
27
+ /**
28
+ * An Obsidian application instance, whose patched `Vault.getAvailablePathForAttachments` carries the
29
+ * designation.
30
+ */
31
+ readonly app: App;
32
+ /**
33
+ * The vault-relative path of the attachment.
34
+ */
35
+ readonly attachmentPath: string;
36
+ }
17
37
  /**
18
38
  * Parameters for {@link findAttachmentUnitFolderPath}.
39
+ *
40
+ * Prefer {@link FindAttachmentUnitFolderPathFromAppParams} — it is the form that makes every plugin
41
+ * decide from one published answer.
19
42
  */
20
- export interface FindAttachmentUnitFolderPathParams {
43
+ export type FindAttachmentUnitFolderPathParams = FindAttachmentUnitFolderPathFromAppParams | FindAttachmentUnitFolderPathWithPredicateParams;
44
+ /**
45
+ * Parameters for {@link findAttachmentUnitFolderPath}, walking with a predicate the caller owns.
46
+ */
47
+ export interface FindAttachmentUnitFolderPathWithPredicateParams {
21
48
  /**
22
49
  * The vault-relative path of the attachment.
23
50
  */
@@ -28,7 +55,7 @@ export interface FindAttachmentUnitFolderPathParams {
28
55
  * @param folderPath - The vault-relative path of the folder.
29
56
  * @returns `true` if the folder is designated as an attachment unit, `false` otherwise.
30
57
  */
31
- checkIsAttachmentUnitFolder(folderPath: string): boolean;
58
+ checkIsAttachmentUnitFolder(this: void, folderPath: string): boolean;
32
59
  }
33
60
  /**
34
61
  * Parameters for {@link rebasePathOntoFolder}.
@@ -57,6 +84,9 @@ export interface RebasePathOntoFolderParams {
57
84
  * The vault root is never a unit, however the patterns are written: designating it would make every
58
85
  * relocation a no-op at best and a vault-wide move at worst.
59
86
  *
87
+ * Passing an {@link App} walks with the designation an attachment-location plugin published on the vault;
88
+ * when nobody published one, nothing is designated and the answer is `null`.
89
+ *
60
90
  * @param params - The parameters for finding the attachment unit folder.
61
91
  * @returns The unit folder's path, or `null` when the attachment belongs to no unit.
62
92
  */
@@ -42,15 +42,20 @@ function ensureBrowserProcess() {
42
42
  })();
43
43
 
44
44
  import { dirname } from "../path.mjs";
45
+ import { getCheckIsAttachmentUnitFolderFunction } from "./attachment-path.mjs";
45
46
  function findAttachmentUnitFolderPath(params) {
46
47
  const parentFolderPath = dirname(params.attachmentPath);
47
48
  if (!parentFolderPath || parentFolderPath === "." || parentFolderPath === "/") {
48
49
  return null;
49
50
  }
51
+ const checkIsAttachmentUnitFolder = "checkIsAttachmentUnitFolder" in params ? params.checkIsAttachmentUnitFolder : getCheckIsAttachmentUnitFolderFunction(params.app);
52
+ if (!checkIsAttachmentUnitFolder) {
53
+ return null;
54
+ }
50
55
  const segments = parentFolderPath.split("/").filter(Boolean);
51
56
  for (let count = 1; count <= segments.length; count++) {
52
57
  const candidate = segments.slice(0, count).join("/");
53
- if (params.checkIsAttachmentUnitFolder(candidate)) {
58
+ if (checkIsAttachmentUnitFolder(candidate)) {
54
59
  return candidate;
55
60
  }
56
61
  }
@@ -67,4 +72,4 @@ export {
67
72
  findAttachmentUnitFolderPath,
68
73
  rebasePathOntoFolder
69
74
  };
70
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2F0dGFjaG1lbnQtdW5pdC1mb2xkZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBSZXNvbHZlcyB3aGljaCBmb2xkZXIgYW4gYXR0YWNobWVudCBiZWxvbmdzIHRvIHdoZW4gdGhlIHVzZXIgaGFzIGRlc2lnbmF0ZWQgZm9sZGVycyB0aGF0IG11c3RcbiAqIHRyYXZlbCBhcyBhIHNpbmdsZSB1bml0LlxuICpcbiAqIFNvbWUgZm9ybWF0cyBhcmUgcmVhbGx5IGEgZGlyZWN0b3J5IHRyZWUgcmF0aGVyIHRoYW4gYSBmaWxlOiBhIHBhZ2Ugc2F2ZWQgZnJvbSBhIGJyb3dzZXIgc2l0cyBuZXh0XG4gKiB0byBhIGBfZmlsZXMvYCBmb2xkZXIgaG9sZGluZyBpdHMgaW1hZ2VzIGFuZCBzdHlsZXNoZWV0cywgYW4gYC5leGNhbGlkcmF3YCBzaXRzIG5leHQgdG8gdGhlIGltYWdlc1xuICogaXQgcmVmZXJlbmNlcy4gUmVsb2NhdGluZyBvbmx5IHRoZSBsaW5rZWQgZmlsZSBsZWF2ZXMgdGhlIHJlc3QgYmVoaW5kIGFuZCB0aGUgYXR0YWNobWVudCBhcnJpdmVzXG4gKiBicm9rZW4uXG4gKlxuICogVGhpcyBsaXZlcyBpbiB0aGUgc2hhcmVkIGxpYnJhcnkgcmF0aGVyIHRoYW4gaW4gb25lIHBsdWdpbiBiZWNhdXNlIG1vcmUgdGhhbiBvbmUgcGx1Z2luIHJlbG9jYXRlc1xuICogYXR0YWNobWVudHMgb3ZlciB0aGUgc2FtZSB2YXVsdC4gSWYgdGhleSBlYWNoIGRlY2lkZWQgc2VwYXJhdGVseSB3aGF0IG9uZSBhdHRhY2htZW50IGlzLCBhIHVzZXJcbiAqIHdpdGggYm90aCBpbnN0YWxsZWQgd291bGQgZ2V0IGEgZm9sZGVyIGtlcHQgd2hvbGUgYnkgb25lIGFuZCB0b3JuIGFwYXJ0IGJ5IHRoZSBvdGhlci5cbiAqL1xuXG5pbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSAnLi4vcGF0aC50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGZpbmRBdHRhY2htZW50VW5pdEZvbGRlclBhdGh9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbmRBdHRhY2htZW50VW5pdEZvbGRlclBhdGhQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHZhdWx0LXJlbGF0aXZlIHBhdGggb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50UGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGEgZm9sZGVyIHBhdGggaXMgZGVzaWduYXRlZCBhcyBhbiBhdHRhY2htZW50IHVuaXQuXG4gICAqXG4gICAqIEBwYXJhbSBmb2xkZXJQYXRoIC0gVGhlIHZhdWx0LXJlbGF0aXZlIHBhdGggb2YgdGhlIGZvbGRlci5cbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBmb2xkZXIgaXMgZGVzaWduYXRlZCBhcyBhbiBhdHRhY2htZW50IHVuaXQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgY2hlY2tJc0F0dGFjaG1lbnRVbml0Rm9sZGVyKGZvbGRlclBhdGg6IHN0cmluZyk6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlYmFzZVBhdGhPbnRvRm9sZGVyfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWJhc2VQYXRoT250b0ZvbGRlclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgZm9sZGVyJ3MgbmV3IHBhdGguXG4gICAqL1xuICByZWFkb25seSBuZXdGb2xkZXJQYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xkZXIncyBvbGQgcGF0aC5cbiAgICovXG4gIHJlYWRvbmx5IG9sZEZvbGRlclBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhdGggdG8gcmViYXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEZpbmRzIHRoZSBmb2xkZXIgdGhhdCBhbiBhdHRhY2htZW50IG11c3QgdHJhdmVsIHdpdGguXG4gKlxuICogUmV0dXJucyB0aGUgKipvdXRlcm1vc3QqKiBkZXNpZ25hdGVkIGFuY2VzdG9yLCBub3QgdGhlIG5lYXJlc3Qgb25lLiBXaXRoIG5lc3RlZCBkZXNpZ25hdGlvbnMsXG4gKiBtb3ZpbmcgdGhlIG5lYXJlc3Qgd291bGQgdGVhciB0aGUgb3V0ZXIgdHJlZSBpbiBoYWxmLCB3aGljaCBpcyB0aGUgZmFpbHVyZSB0aGUgd2hvbGUgZmVhdHVyZSBleGlzdHNcbiAqIHRvIHByZXZlbnQuXG4gKlxuICogVGhlIHZhdWx0IHJvb3QgaXMgbmV2ZXIgYSB1bml0LCBob3dldmVyIHRoZSBwYXR0ZXJucyBhcmUgd3JpdHRlbjogZGVzaWduYXRpbmcgaXQgd291bGQgbWFrZSBldmVyeVxuICogcmVsb2NhdGlvbiBhIG5vLW9wIGF0IGJlc3QgYW5kIGEgdmF1bHQtd2lkZSBtb3ZlIGF0IHdvcnN0LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgZmluZGluZyB0aGUgYXR0YWNobWVudCB1bml0IGZvbGRlci5cbiAqIEByZXR1cm5zIFRoZSB1bml0IGZvbGRlcidzIHBhdGgsIG9yIGBudWxsYCB3aGVuIHRoZSBhdHRhY2htZW50IGJlbG9uZ3MgdG8gbm8gdW5pdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRBdHRhY2htZW50VW5pdEZvbGRlclBhdGgocGFyYW1zOiBGaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRoUGFyYW1zKTogbnVsbCB8IHN0cmluZyB7XG4gIGNvbnN0IHBhcmVudEZvbGRlclBhdGggPSBkaXJuYW1lKHBhcmFtcy5hdHRhY2htZW50UGF0aCk7XG4gIGlmICghcGFyZW50Rm9sZGVyUGF0aCB8fCBwYXJlbnRGb2xkZXJQYXRoID09PSAnLicgfHwgcGFyZW50Rm9sZGVyUGF0aCA9PT0gJy8nKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBzZWdtZW50cyA9IHBhcmVudEZvbGRlclBhdGguc3BsaXQoJy8nKS5maWx0ZXIoQm9vbGVhbik7XG4gIGZvciAobGV0IGNvdW50ID0gMTsgY291bnQgPD0gc2VnbWVudHMubGVuZ3RoOyBjb3VudCsrKSB7XG4gICAgY29uc3QgY2FuZGlkYXRlID0gc2VnbWVudHMuc2xpY2UoMCwgY291bnQpLmpvaW4oJy8nKTtcbiAgICBpZiAocGFyYW1zLmNoZWNrSXNBdHRhY2htZW50VW5pdEZvbGRlcihjYW5kaWRhdGUpKSB7XG4gICAgICByZXR1cm4gY2FuZGlkYXRlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFJlYmFzZXMgYSBwYXRoIGZyb20gb25lIGZvbGRlciBvbnRvIGFub3RoZXIuXG4gKlxuICogVXNlZCB0byB3b3JrIG91dCB3aGVyZSBhIGxpbmtlZCBhdHRhY2htZW50IGVuZHMgdXAgb25jZSBpdHMgd2hvbGUgdW5pdCBmb2xkZXIgaGFzIG1vdmVkLCBzbyB0aGVcbiAqIGxpbmsgY2FuIGJlIHBvaW50ZWQgYXQgdGhlIGZpbGUncyBuZXcgaG9tZSByYXRoZXIgdGhhbiBhdCB3aGVyZSB0aGUgZm9sZGVyIHVzZWQgdG8gYmUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciByZWJhc2luZyB0aGUgcGF0aC5cbiAqIEByZXR1cm5zIFRoZSByZWJhc2VkIHBhdGgsIG9yIGBudWxsYCB3aGVuIHRoZSBwYXRoIGRvZXMgbm90IHNpdCBpbnNpZGUgdGhlIG9sZCBmb2xkZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWJhc2VQYXRoT250b0ZvbGRlcihwYXJhbXM6IFJlYmFzZVBhdGhPbnRvRm9sZGVyUGFyYW1zKTogbnVsbCB8IHN0cmluZyB7XG4gIGNvbnN0IHByZWZpeCA9IGAke3BhcmFtcy5vbGRGb2xkZXJQYXRofS9gO1xuICBpZiAoIXBhcmFtcy5wYXRoLnN0YXJ0c1dpdGgocHJlZml4KSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGAke3BhcmFtcy5uZXdGb2xkZXJQYXRofS8ke3BhcmFtcy5wYXRoLnNsaWNlKHByZWZpeC5sZW5ndGgpfWA7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0JBLFNBQVMsZUFBZTtBQXFEakIsU0FBUyw2QkFBNkIsUUFBMkQ7QUFDdEcsUUFBTSxtQkFBbUIsUUFBUSxPQUFPLGNBQWM7QUFDdEQsTUFBSSxDQUFDLG9CQUFvQixxQkFBcUIsT0FBTyxxQkFBcUIsS0FBSztBQUM3RSxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sV0FBVyxpQkFBaUIsTUFBTSxHQUFHLEVBQUUsT0FBTyxPQUFPO0FBQzNELFdBQVMsUUFBUSxHQUFHLFNBQVMsU0FBUyxRQUFRLFNBQVM7QUFDckQsVUFBTSxZQUFZLFNBQVMsTUFBTSxHQUFHLEtBQUssRUFBRSxLQUFLLEdBQUc7QUFDbkQsUUFBSSxPQUFPLDRCQUE0QixTQUFTLEdBQUc7QUFDakQsYUFBTztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUNUO0FBV08sU0FBUyxxQkFBcUIsUUFBbUQ7QUFDdEYsUUFBTSxTQUFTLEdBQUcsT0FBTyxhQUFhO0FBQ3RDLE1BQUksQ0FBQyxPQUFPLEtBQUssV0FBVyxNQUFNLEdBQUc7QUFDbkMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxTQUFPLEdBQUcsT0FBTyxhQUFhLElBQUksT0FBTyxLQUFLLE1BQU0sT0FBTyxNQUFNLENBQUM7QUFDcEU7IiwKICAibmFtZXMiOiBbXQp9Cg==
75
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL2F0dGFjaG1lbnQtdW5pdC1mb2xkZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBSZXNvbHZlcyB3aGljaCBmb2xkZXIgYW4gYXR0YWNobWVudCBiZWxvbmdzIHRvIHdoZW4gdGhlIHVzZXIgaGFzIGRlc2lnbmF0ZWQgZm9sZGVycyB0aGF0IG11c3RcbiAqIHRyYXZlbCBhcyBhIHNpbmdsZSB1bml0LlxuICpcbiAqIFNvbWUgZm9ybWF0cyBhcmUgcmVhbGx5IGEgZGlyZWN0b3J5IHRyZWUgcmF0aGVyIHRoYW4gYSBmaWxlOiBhIHBhZ2Ugc2F2ZWQgZnJvbSBhIGJyb3dzZXIgc2l0cyBuZXh0XG4gKiB0byBhIGBfZmlsZXMvYCBmb2xkZXIgaG9sZGluZyBpdHMgaW1hZ2VzIGFuZCBzdHlsZXNoZWV0cywgYW4gYC5leGNhbGlkcmF3YCBzaXRzIG5leHQgdG8gdGhlIGltYWdlc1xuICogaXQgcmVmZXJlbmNlcy4gUmVsb2NhdGluZyBvbmx5IHRoZSBsaW5rZWQgZmlsZSBsZWF2ZXMgdGhlIHJlc3QgYmVoaW5kIGFuZCB0aGUgYXR0YWNobWVudCBhcnJpdmVzXG4gKiBicm9rZW4uXG4gKlxuICogVGhpcyBsaXZlcyBpbiB0aGUgc2hhcmVkIGxpYnJhcnkgcmF0aGVyIHRoYW4gaW4gb25lIHBsdWdpbiBiZWNhdXNlIG1vcmUgdGhhbiBvbmUgcGx1Z2luIHJlbG9jYXRlc1xuICogYXR0YWNobWVudHMgb3ZlciB0aGUgc2FtZSB2YXVsdC4gSWYgdGhleSBlYWNoIGRlY2lkZWQgc2VwYXJhdGVseSB3aGF0IG9uZSBhdHRhY2htZW50IGlzLCBhIHVzZXJcbiAqIHdpdGggYm90aCBpbnN0YWxsZWQgd291bGQgZ2V0IGEgZm9sZGVyIGtlcHQgd2hvbGUgYnkgb25lIGFuZCB0b3JuIGFwYXJ0IGJ5IHRoZSBvdGhlci5cbiAqXG4gKiBXaGljaCBpcyB3aHkgdGhlIGRlc2lnbmF0aW9uIGl0c2VsZiBpcyByZWFkIGZyb20gdGhlIHZhdWx0IHJhdGhlciB0aGFuIHN1cHBsaWVkIHBlciBjYWxsZXI6IHBhc3MgYW5cbiAqIHtAbGluayBBcHB9IGFuZCB7QGxpbmsgZmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aH0gd2Fsa3Mgd2l0aCB3aGF0ZXZlciBhbiBhdHRhY2htZW50LWxvY2F0aW9uXG4gKiBwbHVnaW4gcHVibGlzaGVkIG9uIHRoZSBwYXRjaGVkIGBWYXVsdC5nZXRBdmFpbGFibGVQYXRoRm9yQXR0YWNobWVudHNgLCBzbyBldmVyeSBwbHVnaW4gZGVjaWRlcyBmcm9tXG4gKiBvbmUgYW5zd2VyLiBUaGUgZXhwbGljaXQtcHJlZGljYXRlIGZvcm0gcmVtYWlucyBmb3IgYSBjYWxsZXIgdGhhdCBnZW51aW5lbHkgb3ducyBpdHMgb3duIHBhdHRlcm5zLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBkaXJuYW1lIH0gZnJvbSAnLi4vcGF0aC50cyc7XG5pbXBvcnQgeyBnZXRDaGVja0lzQXR0YWNobWVudFVuaXRGb2xkZXJGdW5jdGlvbiB9IGZyb20gJy4vYXR0YWNobWVudC1wYXRoLnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aH0sIHJlYWRpbmcgdGhlIGRlc2lnbmF0aW9uIHB1Ymxpc2hlZCBvbiB0aGUgdmF1bHQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aEZyb21BcHBQYXJhbXMge1xuICAvKipcbiAgICogQW4gT2JzaWRpYW4gYXBwbGljYXRpb24gaW5zdGFuY2UsIHdob3NlIHBhdGNoZWQgYFZhdWx0LmdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50c2AgY2FycmllcyB0aGVcbiAgICogZGVzaWduYXRpb24uXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIHZhdWx0LXJlbGF0aXZlIHBhdGggb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50UGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBmaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRofS5cbiAqXG4gKiBQcmVmZXIge0BsaW5rIEZpbmRBdHRhY2htZW50VW5pdEZvbGRlclBhdGhGcm9tQXBwUGFyYW1zfSBcdTIwMTQgaXQgaXMgdGhlIGZvcm0gdGhhdCBtYWtlcyBldmVyeSBwbHVnaW5cbiAqIGRlY2lkZSBmcm9tIG9uZSBwdWJsaXNoZWQgYW5zd2VyLlxuICovXG5leHBvcnQgdHlwZSBGaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRoUGFyYW1zID0gRmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aEZyb21BcHBQYXJhbXMgfCBGaW5kQXR0YWNobWVudFVuaXRGb2xkZXJQYXRoV2l0aFByZWRpY2F0ZVBhcmFtcztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aH0sIHdhbGtpbmcgd2l0aCBhIHByZWRpY2F0ZSB0aGUgY2FsbGVyIG93bnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aFdpdGhQcmVkaWNhdGVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHZhdWx0LXJlbGF0aXZlIHBhdGggb2YgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBhdHRhY2htZW50UGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGEgZm9sZGVyIHBhdGggaXMgZGVzaWduYXRlZCBhcyBhbiBhdHRhY2htZW50IHVuaXQuXG4gICAqXG4gICAqIEBwYXJhbSBmb2xkZXJQYXRoIC0gVGhlIHZhdWx0LXJlbGF0aXZlIHBhdGggb2YgdGhlIGZvbGRlci5cbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBmb2xkZXIgaXMgZGVzaWduYXRlZCBhcyBhbiBhdHRhY2htZW50IHVuaXQsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgY2hlY2tJc0F0dGFjaG1lbnRVbml0Rm9sZGVyKHRoaXM6IHZvaWQsIGZvbGRlclBhdGg6IHN0cmluZyk6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlYmFzZVBhdGhPbnRvRm9sZGVyfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWJhc2VQYXRoT250b0ZvbGRlclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgZm9sZGVyJ3MgbmV3IHBhdGguXG4gICAqL1xuICByZWFkb25seSBuZXdGb2xkZXJQYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xkZXIncyBvbGQgcGF0aC5cbiAgICovXG4gIHJlYWRvbmx5IG9sZEZvbGRlclBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhdGggdG8gcmViYXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEZpbmRzIHRoZSBmb2xkZXIgdGhhdCBhbiBhdHRhY2htZW50IG11c3QgdHJhdmVsIHdpdGguXG4gKlxuICogUmV0dXJucyB0aGUgKipvdXRlcm1vc3QqKiBkZXNpZ25hdGVkIGFuY2VzdG9yLCBub3QgdGhlIG5lYXJlc3Qgb25lLiBXaXRoIG5lc3RlZCBkZXNpZ25hdGlvbnMsXG4gKiBtb3ZpbmcgdGhlIG5lYXJlc3Qgd291bGQgdGVhciB0aGUgb3V0ZXIgdHJlZSBpbiBoYWxmLCB3aGljaCBpcyB0aGUgZmFpbHVyZSB0aGUgd2hvbGUgZmVhdHVyZSBleGlzdHNcbiAqIHRvIHByZXZlbnQuXG4gKlxuICogVGhlIHZhdWx0IHJvb3QgaXMgbmV2ZXIgYSB1bml0LCBob3dldmVyIHRoZSBwYXR0ZXJucyBhcmUgd3JpdHRlbjogZGVzaWduYXRpbmcgaXQgd291bGQgbWFrZSBldmVyeVxuICogcmVsb2NhdGlvbiBhIG5vLW9wIGF0IGJlc3QgYW5kIGEgdmF1bHQtd2lkZSBtb3ZlIGF0IHdvcnN0LlxuICpcbiAqIFBhc3NpbmcgYW4ge0BsaW5rIEFwcH0gd2Fsa3Mgd2l0aCB0aGUgZGVzaWduYXRpb24gYW4gYXR0YWNobWVudC1sb2NhdGlvbiBwbHVnaW4gcHVibGlzaGVkIG9uIHRoZSB2YXVsdDtcbiAqIHdoZW4gbm9ib2R5IHB1Ymxpc2hlZCBvbmUsIG5vdGhpbmcgaXMgZGVzaWduYXRlZCBhbmQgdGhlIGFuc3dlciBpcyBgbnVsbGAuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBmaW5kaW5nIHRoZSBhdHRhY2htZW50IHVuaXQgZm9sZGVyLlxuICogQHJldHVybnMgVGhlIHVuaXQgZm9sZGVyJ3MgcGF0aCwgb3IgYG51bGxgIHdoZW4gdGhlIGF0dGFjaG1lbnQgYmVsb25ncyB0byBubyB1bml0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZEF0dGFjaG1lbnRVbml0Rm9sZGVyUGF0aChwYXJhbXM6IEZpbmRBdHRhY2htZW50VW5pdEZvbGRlclBhdGhQYXJhbXMpOiBudWxsIHwgc3RyaW5nIHtcbiAgY29uc3QgcGFyZW50Rm9sZGVyUGF0aCA9IGRpcm5hbWUocGFyYW1zLmF0dGFjaG1lbnRQYXRoKTtcbiAgaWYgKCFwYXJlbnRGb2xkZXJQYXRoIHx8IHBhcmVudEZvbGRlclBhdGggPT09ICcuJyB8fCBwYXJlbnRGb2xkZXJQYXRoID09PSAnLycpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGNoZWNrSXNBdHRhY2htZW50VW5pdEZvbGRlciA9ICdjaGVja0lzQXR0YWNobWVudFVuaXRGb2xkZXInIGluIHBhcmFtc1xuICAgID8gcGFyYW1zLmNoZWNrSXNBdHRhY2htZW50VW5pdEZvbGRlclxuICAgIDogZ2V0Q2hlY2tJc0F0dGFjaG1lbnRVbml0Rm9sZGVyRnVuY3Rpb24ocGFyYW1zLmFwcCk7XG5cbiAgaWYgKCFjaGVja0lzQXR0YWNobWVudFVuaXRGb2xkZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHNlZ21lbnRzID0gcGFyZW50Rm9sZGVyUGF0aC5zcGxpdCgnLycpLmZpbHRlcihCb29sZWFuKTtcbiAgZm9yIChsZXQgY291bnQgPSAxOyBjb3VudCA8PSBzZWdtZW50cy5sZW5ndGg7IGNvdW50KyspIHtcbiAgICBjb25zdCBjYW5kaWRhdGUgPSBzZWdtZW50cy5zbGljZSgwLCBjb3VudCkuam9pbignLycpO1xuICAgIGlmIChjaGVja0lzQXR0YWNobWVudFVuaXRGb2xkZXIoY2FuZGlkYXRlKSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBSZWJhc2VzIGEgcGF0aCBmcm9tIG9uZSBmb2xkZXIgb250byBhbm90aGVyLlxuICpcbiAqIFVzZWQgdG8gd29yayBvdXQgd2hlcmUgYSBsaW5rZWQgYXR0YWNobWVudCBlbmRzIHVwIG9uY2UgaXRzIHdob2xlIHVuaXQgZm9sZGVyIGhhcyBtb3ZlZCwgc28gdGhlXG4gKiBsaW5rIGNhbiBiZSBwb2ludGVkIGF0IHRoZSBmaWxlJ3MgbmV3IGhvbWUgcmF0aGVyIHRoYW4gYXQgd2hlcmUgdGhlIGZvbGRlciB1c2VkIHRvIGJlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcmViYXNpbmcgdGhlIHBhdGguXG4gKiBAcmV0dXJucyBUaGUgcmViYXNlZCBwYXRoLCBvciBgbnVsbGAgd2hlbiB0aGUgcGF0aCBkb2VzIG5vdCBzaXQgaW5zaWRlIHRoZSBvbGQgZm9sZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmViYXNlUGF0aE9udG9Gb2xkZXIocGFyYW1zOiBSZWJhc2VQYXRoT250b0ZvbGRlclBhcmFtcyk6IG51bGwgfCBzdHJpbmcge1xuICBjb25zdCBwcmVmaXggPSBgJHtwYXJhbXMub2xkRm9sZGVyUGF0aH0vYDtcbiAgaWYgKCFwYXJhbXMucGF0aC5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBgJHtwYXJhbXMubmV3Rm9sZGVyUGF0aH0vJHtwYXJhbXMucGF0aC5zbGljZShwcmVmaXgubGVuZ3RoKX1gO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVCQSxTQUFTLGVBQWU7QUFDeEIsU0FBUyw4Q0FBOEM7QUFnRmhELFNBQVMsNkJBQTZCLFFBQTJEO0FBQ3RHLFFBQU0sbUJBQW1CLFFBQVEsT0FBTyxjQUFjO0FBQ3RELE1BQUksQ0FBQyxvQkFBb0IscUJBQXFCLE9BQU8scUJBQXFCLEtBQUs7QUFDN0UsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLDhCQUE4QixpQ0FBaUMsU0FDakUsT0FBTyw4QkFDUCx1Q0FBdUMsT0FBTyxHQUFHO0FBRXJELE1BQUksQ0FBQyw2QkFBNkI7QUFDaEMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLFdBQVcsaUJBQWlCLE1BQU0sR0FBRyxFQUFFLE9BQU8sT0FBTztBQUMzRCxXQUFTLFFBQVEsR0FBRyxTQUFTLFNBQVMsUUFBUSxTQUFTO0FBQ3JELFVBQU0sWUFBWSxTQUFTLE1BQU0sR0FBRyxLQUFLLEVBQUUsS0FBSyxHQUFHO0FBQ25ELFFBQUksNEJBQTRCLFNBQVMsR0FBRztBQUMxQyxhQUFPO0FBQUEsSUFDVDtBQUFBLEVBQ0Y7QUFFQSxTQUFPO0FBQ1Q7QUFXTyxTQUFTLHFCQUFxQixRQUFtRDtBQUN0RixRQUFNLFNBQVMsR0FBRyxPQUFPLGFBQWE7QUFDdEMsTUFBSSxDQUFDLE9BQU8sS0FBSyxXQUFXLE1BQU0sR0FBRztBQUNuQyxXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU8sR0FBRyxPQUFPLGFBQWEsSUFBSSxPQUFPLEtBQUssTUFBTSxPQUFPLE1BQU0sQ0FBQztBQUNwRTsiLAogICJuYW1lcyI6IFtdCn0K
@@ -12,6 +12,11 @@
12
12
  * A tie is deliberately NOT resolved here. Two notes of equal priority is exactly the ambiguity the
13
13
  * existing mode setting already exists to handle, and inventing a second, silent rule for it would
14
14
  * move a file the user never named.
15
+ *
16
+ * The tie is also the whole of what gets REPORTED. A note the list ranked below the best rank cannot
17
+ * resolve the ambiguity, so listing it only adds noise — and worse in a picker, where offering it
18
+ * invites an answer the priority list itself would not have given. That is why
19
+ * {@link filterHighestPriorityNotePaths} exists alongside the two functions that decide.
15
20
  */
16
21
  /**
17
22
  * Why the priority list did not settle which note owns an attachment.
@@ -34,6 +39,13 @@ export declare enum NoPriorityWinnerReason {
34
39
  */
35
40
  Tie = "Tie"
36
41
  }
42
+ /**
43
+ * Parameters for {@link filterHighestPriorityNotePaths}.
44
+ *
45
+ * The same question as {@link pickHighestPriorityNotePath} asks, so deliberately the same parameters:
46
+ * the two must be answered from identical inputs or they could disagree.
47
+ */
48
+ export type FilterHighestPriorityNotePathsParams = PickHighestPriorityNotePathParams;
37
49
  /**
38
50
  * Parameters for {@link findNoPriorityWinnerReason}.
39
51
  */
@@ -81,6 +93,22 @@ export interface PickHighestPriorityNotePathParams {
81
93
  * that matches nothing always loses to one that matches something.
82
94
  */
83
95
  export declare const NO_PRIORITY_MATCH: number;
96
+ /**
97
+ * Narrows the referencing notes to the ones sharing the best rank.
98
+ *
99
+ * Those notes are the whole of the ambiguity: one the list ranked below them cannot resolve anything,
100
+ * so reporting it only adds noise. This mirrors {@link pickHighestPriorityNotePath}'s conditions
101
+ * rather than re-deciding anything, so the two can only ever agree — whenever that names a winner,
102
+ * this returns exactly that one note.
103
+ *
104
+ * A list that decides nothing at all — empty, or matching no note — ranks every note
105
+ * {@link NO_PRIORITY_MATCH}, so they all tie and every one of them is kept. That is the same list the
106
+ * user saw before, which is correct: nothing has ruled any of them out.
107
+ *
108
+ * @param params - The referencing notes and how to rank one.
109
+ * @returns The notes holding the best rank, in the order they were given.
110
+ */
111
+ export declare function filterHighestPriorityNotePaths(params: FilterHighestPriorityNotePathsParams): string[];
84
112
  /**
85
113
  * Explains why the priority list named no owner for an attachment.
86
114
  *
@@ -53,6 +53,19 @@ var NoPriorityWinnerReason = /* @__PURE__ */ ((NoPriorityWinnerReason2) => {
53
53
  return NoPriorityWinnerReason2;
54
54
  })(NoPriorityWinnerReason || {});
55
55
  const NO_PRIORITY_MATCH = Infinity;
56
+ function filterHighestPriorityNotePaths(params) {
57
+ const rankedNotePaths = params.notePaths.map((notePath) => ({
58
+ notePath,
59
+ rank: params.rank(notePath)
60
+ }));
61
+ let bestRank = NO_PRIORITY_MATCH;
62
+ for (const ranked of rankedNotePaths) {
63
+ if (ranked.rank < bestRank) {
64
+ bestRank = ranked.rank;
65
+ }
66
+ }
67
+ return rankedNotePaths.filter((ranked) => ranked.rank === bestRank).map((ranked) => ranked.notePath);
68
+ }
56
69
  function findNoPriorityWinnerReason(params) {
57
70
  if (params.entries.length === 0) {
58
71
  return "EmptyList" /* EmptyList */;
@@ -139,8 +152,9 @@ function checkPropertyMatches(specifier, frontmatter) {
139
152
  export {
140
153
  NO_PRIORITY_MATCH,
141
154
  NoPriorityWinnerReason,
155
+ filterHighestPriorityNotePaths,
142
156
  findNoPriorityWinnerReason,
143
157
  findNotePriorityRank,
144
158
  pickHighestPriorityNotePath
145
159
  };
146
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL25vdGUtcHJpb3JpdHkudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBEZWNpZGVzIHdoaWNoIG9mIHNldmVyYWwgbm90ZXMgcmVmZXJlbmNpbmcgdGhlIHNhbWUgYXR0YWNobWVudCBvd25zIGl0LlxuICpcbiAqIEFuIGF0dGFjaG1lbnQgcmVmZXJlbmNlZCBmcm9tIG1vcmUgdGhhbiBvbmUgbm90ZSBoYXMgbm8gc2luZ2xlIGNvcnJlY3QgaG9tZSwgc28gY29sbGVjdGluZyBpdCBmYWxsc1xuICogYmFjayB0byB3aGF0ZXZlciBgY29sbGVjdEF0dGFjaG1lbnRVc2VkQnlNdWx0aXBsZU5vdGVzTW9kZWAgc2F5cyBcdTIwMTQgc2tpcCwgY29weSwgY2FuY2VsLCBvciBhc2suIEFcbiAqIHByaW9yaXR5IGxpc3QgbGV0cyB0aGUgdXNlciBhbnN3ZXIgdGhlIHF1ZXN0aW9uIG9uY2UgaW5zdGVhZDogcHV0IGAubWRgIGFib3ZlIGAuZXhjYWxpZHJhd2AgYW5kIGFuXG4gKiBpbWFnZSBzaGFyZWQgYnkgYm90aCBsYW5kcyBpbiB0aGUgbWFya2Rvd24gbm90ZSdzIGZvbGRlci5cbiAqXG4gKiBBIHRpZSBpcyBkZWxpYmVyYXRlbHkgTk9UIHJlc29sdmVkIGhlcmUuIFR3byBub3RlcyBvZiBlcXVhbCBwcmlvcml0eSBpcyBleGFjdGx5IHRoZSBhbWJpZ3VpdHkgdGhlXG4gKiBleGlzdGluZyBtb2RlIHNldHRpbmcgYWxyZWFkeSBleGlzdHMgdG8gaGFuZGxlLCBhbmQgaW52ZW50aW5nIGEgc2Vjb25kLCBzaWxlbnQgcnVsZSBmb3IgaXQgd291bGRcbiAqIG1vdmUgYSBmaWxlIHRoZSB1c2VyIG5ldmVyIG5hbWVkLlxuICovXG5cbmltcG9ydCB7IGlzVmFsaWRSZWdFeHAgfSBmcm9tICcuLi9yZWctZXhwLnRzJztcblxuY29uc3QgUFJPUEVSVFlfUFJFRklYID0gJ3Byb3BlcnR5Oic7XG5jb25zdCBSRUdfRVhQX0RFTElNSVRFUiA9ICcvJztcbmNvbnN0IEVYVEVOU0lPTl9QUkVGSVggPSAnLic7XG5jb25zdCBQUk9QRVJUWV9WQUxVRV9TRVBBUkFUT1IgPSAnPSc7XG5cbi8qKlxuICogV2h5IHRoZSBwcmlvcml0eSBsaXN0IGRpZCBub3Qgc2V0dGxlIHdoaWNoIG5vdGUgb3ducyBhbiBhdHRhY2htZW50LlxuICpcbiAqIFRoZSB0aHJlZSB2YWx1ZXMgYXJlIGV4YWN0bHkgdGhlIHRocmVlIHdheXMge0BsaW5rIHBpY2tIaWdoZXN0UHJpb3JpdHlOb3RlUGF0aH0gKHBsdXMgaXRzIGVtcHR5LWxpc3RcbiAqIGd1YXJkKSBjYW4gZmFpbCB0byBuYW1lIGEgd2lubmVyLCBzbyBhIGNhbGxlciBjYW4gdGVsbCB0aGUgdXNlciB0aGUgcmVhbCByZWFzb24gaW5zdGVhZCBvZiBvbmx5XG4gKiByZXBvcnRpbmcgdGhhdCB0aGUgYXR0YWNobWVudCBpcyByZWZlcmVuY2VkIGJ5IHNldmVyYWwgbm90ZXMuXG4gKi9cbmV4cG9ydCBlbnVtIE5vUHJpb3JpdHlXaW5uZXJSZWFzb24ge1xuICAvKipcbiAgICogVGhlIHByaW9yaXR5IGxpc3QgaXMgZW1wdHkgXHUyMDE0IGl0cyBkZWZhdWx0LiBOb3RoaW5nIHdhcyBjb25maWd1cmVkIHRvIGRlY2lkZSBiZXR3ZWVuIHRoZSBub3Rlcy5cbiAgICovXG4gIEVtcHR5TGlzdCA9ICdFbXB0eUxpc3QnLFxuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBoYXMgZW50cmllcywgYnV0IG5vbmUgb2YgdGhlIHJlZmVyZW5jaW5nIG5vdGVzIG1hdGNoZXMgYW55IG9mIHRoZW0uXG4gICAqL1xuICBOb01hdGNoID0gJ05vTWF0Y2gnLFxuXG4gIC8qKlxuICAgKiBTZXZlcmFsIHJlZmVyZW5jaW5nIG5vdGVzIHRpZSBmb3IgdGhlIGJlc3QgcmFuaywgc28gdGhlIGxpc3QgbmFtZXMgbm8gc2luZ2xlIG93bmVyLlxuICAgKi9cbiAgVGllID0gJ1RpZSdcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZmluZE5vUHJpb3JpdHlXaW5uZXJSZWFzb259LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbmROb1ByaW9yaXR5V2lubmVyUmVhc29uUGFyYW1zIGV4dGVuZHMgUGlja0hpZ2hlc3RQcmlvcml0eU5vdGVQYXRoUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBwcmlvcml0eSBsaXN0LCBoaWdoZXN0IHByaW9yaXR5IGZpcnN0LlxuICAgKi9cbiAgcmVhZG9ubHkgZW50cmllczogcmVhZG9ubHkgc3RyaW5nW107XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGZpbmROb3RlUHJpb3JpdHlSYW5rfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaW5kTm90ZVByaW9yaXR5UmFua1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgcHJpb3JpdHkgbGlzdCwgaGlnaGVzdCBwcmlvcml0eSBmaXJzdC5cbiAgICovXG4gIHJlYWRvbmx5IGVudHJpZXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgbm90ZSdzIGZyb250bWF0dGVyLCBvciBgbnVsbGAgd2hlbiBpdCBoYXMgbm9uZS5cbiAgICovXG4gIHJlYWRvbmx5IGZyb250bWF0dGVyOiBudWxsIHwgUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuXG4gIC8qKlxuICAgKiBUaGUgdmF1bHQtcmVsYXRpdmUgcGF0aCBvZiB0aGUgbm90ZS5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGVQYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHBpY2tIaWdoZXN0UHJpb3JpdHlOb3RlUGF0aH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGlja0hpZ2hlc3RQcmlvcml0eU5vdGVQYXRoUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSB2YXVsdC1yZWxhdGl2ZSBwYXRocyBvZiB0aGUgbm90ZXMgcmVmZXJlbmNpbmcgdGhlIGF0dGFjaG1lbnQuXG4gICAqL1xuICByZWFkb25seSBub3RlUGF0aHM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJpb3JpdHkgcmFuayBvZiBhIG5vdGUuIExvd2VyIHdpbnM7IHtAbGluayBOT19QUklPUklUWV9NQVRDSH0gbWVhbnMgdGhlIG5vdGUgbWF0Y2hlZCBub3RoaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gbm90ZVBhdGggLSBUaGUgdmF1bHQtcmVsYXRpdmUgcGF0aCBvZiB0aGUgbm90ZS5cbiAgICogQHJldHVybnMgVGhlIHJhbmsuXG4gICAqL1xuICByYW5rKG5vdGVQYXRoOiBzdHJpbmcpOiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIHJhbmsgb2YgYSBub3RlIHRoYXQgbWF0Y2hlcyBubyBlbnRyeSBpbiB0aGUgcHJpb3JpdHkgbGlzdC4gSGlnaGVyIHRoYW4gYW55IHJlYWwgcmFuaywgc28gYSBub3RlXG4gKiB0aGF0IG1hdGNoZXMgbm90aGluZyBhbHdheXMgbG9zZXMgdG8gb25lIHRoYXQgbWF0Y2hlcyBzb21ldGhpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBOT19QUklPUklUWV9NQVRDSCA9IEluZmluaXR5O1xuXG4vKipcbiAqIEV4cGxhaW5zIHdoeSB0aGUgcHJpb3JpdHkgbGlzdCBuYW1lZCBubyBvd25lciBmb3IgYW4gYXR0YWNobWVudC5cbiAqXG4gKiBPbmx5IG1lYW5pbmdmdWwgb25jZSB7QGxpbmsgcGlja0hpZ2hlc3RQcmlvcml0eU5vdGVQYXRofSBoYXMgcmV0dXJuZWQgYG51bGxgIChvciB0aGUgbGlzdCB3YXMgZW1wdHlcbiAqIGFuZCB3YXMgbmV2ZXIgY29uc3VsdGVkKTsgaXQgbWlycm9ycyB0aGF0IGZ1bmN0aW9uJ3Mgb3duIGNvbmRpdGlvbnMgcmF0aGVyIHRoYW4gcmUtZGVjaWRpbmdcbiAqIGFueXRoaW5nLCBzbyB0aGUgdHdvIGNhbiBvbmx5IGV2ZXIgYWdyZWUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwcmlvcml0eSBsaXN0LCB0aGUgcmVmZXJlbmNpbmcgbm90ZXMsIGFuZCBob3cgdG8gcmFuayBvbmUuXG4gKiBAcmV0dXJucyBXaGljaCBvZiB0aGUgdGhyZWUgd2F5cyB0aGUgbGlzdCBmYWlsZWQgdG8gc2V0dGxlIGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZE5vUHJpb3JpdHlXaW5uZXJSZWFzb24ocGFyYW1zOiBGaW5kTm9Qcmlvcml0eVdpbm5lclJlYXNvblBhcmFtcyk6IE5vUHJpb3JpdHlXaW5uZXJSZWFzb24ge1xuICBpZiAocGFyYW1zLmVudHJpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIE5vUHJpb3JpdHlXaW5uZXJSZWFzb24uRW1wdHlMaXN0O1xuICB9XG5cbiAgbGV0IGJlc3RSYW5rID0gTk9fUFJJT1JJVFlfTUFUQ0g7XG4gIGZvciAoY29uc3Qgbm90ZVBhdGggb2YgcGFyYW1zLm5vdGVQYXRocykge1xuICAgIGNvbnN0IGN1cnJlbnRSYW5rID0gcGFyYW1zLnJhbmsobm90ZVBhdGgpO1xuICAgIGlmIChjdXJyZW50UmFuayA8IGJlc3RSYW5rKSB7XG4gICAgICBiZXN0UmFuayA9IGN1cnJlbnRSYW5rO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBiZXN0UmFuayA9PT0gTk9fUFJJT1JJVFlfTUFUQ0ggPyBOb1ByaW9yaXR5V2lubmVyUmVhc29uLk5vTWF0Y2ggOiBOb1ByaW9yaXR5V2lubmVyUmVhc29uLlRpZTtcbn1cblxuLyoqXG4gKiBGaW5kcyBob3cgaGlnaGx5IGEgbm90ZSByYW5rcyBpbiB0aGUgcHJpb3JpdHkgbGlzdC5cbiAqXG4gKiBBbiBlbnRyeSBtYXRjaGVzIGluIG9uZSBvZiBmb3VyIHdheXMsIHBpY2tlZCBieSBpdHMgc2hhcGUgc28gdGhhdCBvbmUgbGlzdCBjYW4gZXhwcmVzcyBhbGwgb2YgdGhlbTpcbiAqXG4gKiAtIGBwcm9wZXJ0eTpuYW1lYCBcdTIwMTQgdGhlIG5vdGUncyBmcm9udG1hdHRlciBoYXMgYG5hbWVgOyBgcHJvcGVydHk6bmFtZT12YWx1ZWAgYWxzbyBjb21wYXJlcyB0aGUgdmFsdWUuXG4gKiAtIGAvcmVndWxhciBleHByZXNzaW9uL2AgXHUyMDE0IHRlc3RlZCBhZ2FpbnN0IHRoZSBub3RlJ3MgcGF0aC5cbiAqIC0gYC5leHRgIFx1MjAxNCB0aGUgbm90ZSdzIHBhdGggZW5kcyB3aXRoIGl0LCBjYXNlLWluc2Vuc2l0aXZlbHkuIFRoaXMgaXMgdGhlIGZvcm0gdGhlIHJlcXVlc3QgYXNrZWQgZm9yLlxuICogLSBhbnl0aGluZyBlbHNlIFx1MjAxNCBhIHBhdGggZnJvbSB0aGUgdmF1bHQgcm9vdCwgbWF0Y2hpbmcgdGhlIHZvY2FidWxhcnkgb2YgdGhlIGluY2x1ZGUgLyBleGNsdWRlXG4gKiAgIHBhdGggc2V0dGluZ3MuXG4gKlxuICogV2hlbiBhIG5vdGUgbWF0Y2hlcyBzZXZlcmFsIGVudHJpZXMgdGhlICoqbG9uZ2VzdCoqIG9uZSBkZWNpZGVzIGl0cyByYW5rLCBzbyB0aGUgbW9zdCBzcGVjaWZpY1xuICogZW50cnkgd2lucyBhbmQgdGhlIG9yZGVyIG9mIHRoZSBsaXN0IGlzIGxlZnQgdG8gZXhwcmVzcyBwcmlvcml0eS4gV2l0aG91dCB0aGlzIGFuIEV4Y2FsaWRyYXcgbm90ZVxuICogY291bGQgbmV2ZXIgcmFuayBiZWxvdyBhIHBsYWluIG1hcmtkb3duIG9uZTogYGRyYXdpbmcuZXhjYWxpZHJhdy5tZGAgYWxzbyBlbmRzIHdpdGggYC5tZGAsIHNvXG4gKiBgLm1kYCBhYm92ZSBgLmV4Y2FsaWRyYXcubWRgIFx1MjAxNCB0aGUgdmVyeSBleGFtcGxlIHRoZSByZXF1ZXN0IGlzIGJ1aWx0IG9uIFx1MjAxNCB3b3VsZCB0aWUgaW5zdGVhZCBvZlxuICogcmVzb2x2aW5nLiBFcXVhbC1sZW5ndGggbWF0Y2hlcyBmYWxsIHRvIHRoZSBlYXJsaWVyIGVudHJ5LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgZmluZGluZyB0aGUgcmFuay5cbiAqIEByZXR1cm5zIFRoZSBpbmRleCBvZiB0aGUgbW9zdCBzcGVjaWZpYyBtYXRjaGluZyBlbnRyeSwgb3Ige0BsaW5rIE5PX1BSSU9SSVRZX01BVENIfSB3aGVuIG5vbmUgbWF0Y2guXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTm90ZVByaW9yaXR5UmFuayhwYXJhbXM6IEZpbmROb3RlUHJpb3JpdHlSYW5rUGFyYW1zKTogbnVtYmVyIHtcbiAgbGV0IGJlc3RSYW5rID0gTk9fUFJJT1JJVFlfTUFUQ0g7XG4gIGxldCBiZXN0TGVuZ3RoID0gLTE7XG5cbiAgZm9yIChjb25zdCBbaW5kZXgsIGVudHJ5XSBvZiBwYXJhbXMuZW50cmllcy5lbnRyaWVzKCkpIHtcbiAgICAvLyBBIHNob3J0ZXIgZW50cnkgY2FuIG5ldmVyIGJlYXQgb25lIHRoYXQgYWxyZWFkeSBtYXRjaGVkLCBzbyBpdCBpcyBub3Qgd29ydGggdGVzdGluZy5cbiAgICBpZiAoZW50cnkubGVuZ3RoIDw9IGJlc3RMZW5ndGgpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICghY2hlY2tFbnRyeU1hdGNoZXMoZW50cnksIHBhcmFtcykpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGJlc3RSYW5rID0gaW5kZXg7XG4gICAgYmVzdExlbmd0aCA9IGVudHJ5Lmxlbmd0aDtcbiAgfVxuXG4gIHJldHVybiBiZXN0UmFuaztcbn1cblxuLyoqXG4gKiBQaWNrcyB0aGUgc2luZ2xlIGhpZ2hlc3QtcHJpb3JpdHkgbm90ZSBhbW9uZyB0aG9zZSByZWZlcmVuY2luZyBhbiBhdHRhY2htZW50LlxuICpcbiAqIFJldHVybnMgYG51bGxgIHdoZW4gdGhlIGJlc3QgcmFuayBpcyBzaGFyZWQgYnkgbW9yZSB0aGFuIG9uZSBub3RlLCBvciB3aGVuIG5vIG5vdGUgbWF0Y2hlc1xuICogYW55dGhpbmcuIEJvdGggYXJlIHRpZXMsIGFuZCBhIHRpZSBpcyB0aGUgY2FsbGVyJ3MgcHJvYmxlbTogaXQgaXMgd2hhdCB0aGUgbXVsdGlwbGUtbm90ZXMgbW9kZVxuICogc2V0dGluZyBpcyBmb3IuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBwaWNraW5nIHRoZSBub3RlLlxuICogQHJldHVybnMgVGhlIHdpbm5pbmcgbm90ZSdzIHBhdGgsIG9yIGBudWxsYCB3aGVuIHRoZXJlIGlzIG5vIHNpbmdsZSB3aW5uZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwaWNrSGlnaGVzdFByaW9yaXR5Tm90ZVBhdGgocGFyYW1zOiBQaWNrSGlnaGVzdFByaW9yaXR5Tm90ZVBhdGhQYXJhbXMpOiBudWxsIHwgc3RyaW5nIHtcbiAgbGV0IGJlc3RSYW5rID0gTk9fUFJJT1JJVFlfTUFUQ0g7XG4gIGxldCBiZXN0Tm90ZVBhdGg6IG51bGwgfCBzdHJpbmcgPSBudWxsO1xuICBsZXQgYmVzdENvdW50ID0gMDtcblxuICBmb3IgKGNvbnN0IG5vdGVQYXRoIG9mIHBhcmFtcy5ub3RlUGF0aHMpIHtcbiAgICBjb25zdCBjdXJyZW50UmFuayA9IHBhcmFtcy5yYW5rKG5vdGVQYXRoKTtcbiAgICBpZiAoY3VycmVudFJhbmsgPCBiZXN0UmFuaykge1xuICAgICAgYmVzdFJhbmsgPSBjdXJyZW50UmFuaztcbiAgICAgIGJlc3ROb3RlUGF0aCA9IG5vdGVQYXRoO1xuICAgICAgYmVzdENvdW50ID0gMTtcbiAgICB9IGVsc2UgaWYgKGN1cnJlbnRSYW5rID09PSBiZXN0UmFuaykge1xuICAgICAgYmVzdENvdW50Kys7XG4gICAgfVxuICB9XG5cbiAgaWYgKGJlc3RDb3VudCAhPT0gMSB8fCBiZXN0UmFuayA9PT0gTk9fUFJJT1JJVFlfTUFUQ0gpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBiZXN0Tm90ZVBhdGg7XG59XG5cbmZ1bmN0aW9uIGNoZWNrRW50cnlNYXRjaGVzKGVudHJ5OiBzdHJpbmcsIHBhcmFtczogRmluZE5vdGVQcmlvcml0eVJhbmtQYXJhbXMpOiBib29sZWFuIHtcbiAgaWYgKCFlbnRyeSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChlbnRyeS5zdGFydHNXaXRoKFBST1BFUlRZX1BSRUZJWCkpIHtcbiAgICByZXR1cm4gY2hlY2tQcm9wZXJ0eU1hdGNoZXMoZW50cnkuc2xpY2UoUFJPUEVSVFlfUFJFRklYLmxlbmd0aCksIHBhcmFtcy5mcm9udG1hdHRlcik7XG4gIH1cblxuICBpZiAoZW50cnkubGVuZ3RoID4gMSAmJiBlbnRyeS5zdGFydHNXaXRoKFJFR19FWFBfREVMSU1JVEVSKSAmJiBlbnRyeS5lbmRzV2l0aChSRUdfRVhQX0RFTElNSVRFUikpIHtcbiAgICBjb25zdCBzb3VyY2UgPSBlbnRyeS5zbGljZSgxLCAtMSk7XG4gICAgLy8gQW4gdW5wYXJzZWFibGUgZXhwcmVzc2lvbiBtdXN0IG5vdCB0aHJvdyBtaWQtY29sbGVjdGlvbjsgaXQgc2ltcGx5IG1hdGNoZXMgbm90aGluZy5cbiAgICByZXR1cm4gaXNWYWxpZFJlZ0V4cChzb3VyY2UpICYmIG5ldyBSZWdFeHAoc291cmNlKS50ZXN0KHBhcmFtcy5ub3RlUGF0aCk7XG4gIH1cblxuICBpZiAoZW50cnkuc3RhcnRzV2l0aChFWFRFTlNJT05fUFJFRklYKSkge1xuICAgIHJldHVybiBwYXJhbXMubm90ZVBhdGgudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChlbnRyeS50b0xvd2VyQ2FzZSgpKTtcbiAgfVxuXG4gIGNvbnN0IHByZWZpeCA9IGVudHJ5LmVuZHNXaXRoKCcvJykgPyBlbnRyeSA6IGAke2VudHJ5fS9gO1xuICByZXR1cm4gcGFyYW1zLm5vdGVQYXRoID09PSBlbnRyeSB8fCBwYXJhbXMubm90ZVBhdGguc3RhcnRzV2l0aChwcmVmaXgpO1xufVxuXG5mdW5jdGlvbiBjaGVja1Byb3BlcnR5TWF0Y2hlcyhzcGVjaWZpZXI6IHN0cmluZywgZnJvbnRtYXR0ZXI6IG51bGwgfCBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4pOiBib29sZWFuIHtcbiAgaWYgKCFmcm9udG1hdHRlcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHNlcGFyYXRvckluZGV4ID0gc3BlY2lmaWVyLmluZGV4T2YoUFJPUEVSVFlfVkFMVUVfU0VQQVJBVE9SKTtcbiAgaWYgKHNlcGFyYXRvckluZGV4ID09PSAtMSkge1xuICAgIHJldHVybiBPYmplY3QuaGFzT3duKGZyb250bWF0dGVyLCBzcGVjaWZpZXIpO1xuICB9XG5cbiAgY29uc3QgcHJvcGVydHlOYW1lID0gc3BlY2lmaWVyLnNsaWNlKDAsIHNlcGFyYXRvckluZGV4KTtcbiAgY29uc3QgZXhwZWN0ZWRWYWx1ZSA9IHNwZWNpZmllci5zbGljZShzZXBhcmF0b3JJbmRleCArIDEpO1xuICBpZiAoIU9iamVjdC5oYXNPd24oZnJvbnRtYXR0ZXIsIHByb3BlcnR5TmFtZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBhY3R1YWxWYWx1ZSA9IGZyb250bWF0dGVyW3Byb3BlcnR5TmFtZV07XG4gIC8vIEZyb250bWF0dGVyIHZhbHVlcyBhcmUgd2hhdGV2ZXIgWUFNTCBwcm9kdWNlZCwgc28gY29tcGFyZSB0aGVpciByZW5kZXJpbmcgcmF0aGVyIHRoYW4gcmVxdWlyaW5nIGFcbiAgLy8gU3RyaW5nLiBBbiBhcnJheSBtYXRjaGVzIHdoZW4gYW55IG9mIGl0cyBlbnRyaWVzIGRvZXMsIHdoaWNoIGlzIGhvdyB0YWctbGlrZSBwcm9wZXJ0aWVzIHJlYWQuXG4gIGlmIChBcnJheS5pc0FycmF5KGFjdHVhbFZhbHVlKSkge1xuICAgIHJldHVybiBhY3R1YWxWYWx1ZS5zb21lKChpdGVtKSA9PiBTdHJpbmcoaXRlbSkgPT09IGV4cGVjdGVkVmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIFN0cmluZyhhY3R1YWxWYWx1ZSkgPT09IGV4cGVjdGVkVmFsdWU7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZUEsU0FBUyxxQkFBcUI7QUFFOUIsTUFBTSxrQkFBa0I7QUFDeEIsTUFBTSxvQkFBb0I7QUFDMUIsTUFBTSxtQkFBbUI7QUFDekIsTUFBTSwyQkFBMkI7QUFTMUIsSUFBSyx5QkFBTCxrQkFBS0EsNEJBQUw7QUFJTCxFQUFBQSx3QkFBQSxlQUFZO0FBS1osRUFBQUEsd0JBQUEsYUFBVTtBQUtWLEVBQUFBLHdCQUFBLFNBQU07QUFkSSxTQUFBQTtBQUFBLEdBQUE7QUFxRUwsTUFBTSxvQkFBb0I7QUFZMUIsU0FBUywyQkFBMkIsUUFBa0U7QUFDM0csTUFBSSxPQUFPLFFBQVEsV0FBVyxHQUFHO0FBQy9CLFdBQU87QUFBQSxFQUNUO0FBRUEsTUFBSSxXQUFXO0FBQ2YsYUFBVyxZQUFZLE9BQU8sV0FBVztBQUN2QyxVQUFNLGNBQWMsT0FBTyxLQUFLLFFBQVE7QUFDeEMsUUFBSSxjQUFjLFVBQVU7QUFDMUIsaUJBQVc7QUFBQSxJQUNiO0FBQUEsRUFDRjtBQUVBLFNBQU8sYUFBYSxvQkFBb0IsMEJBQWlDO0FBQzNFO0FBc0JPLFNBQVMscUJBQXFCLFFBQTRDO0FBQy9FLE1BQUksV0FBVztBQUNmLE1BQUksYUFBYTtBQUVqQixhQUFXLENBQUMsT0FBTyxLQUFLLEtBQUssT0FBTyxRQUFRLFFBQVEsR0FBRztBQUVyRCxRQUFJLE1BQU0sVUFBVSxZQUFZO0FBQzlCO0FBQUEsSUFDRjtBQUVBLFFBQUksQ0FBQyxrQkFBa0IsT0FBTyxNQUFNLEdBQUc7QUFDckM7QUFBQSxJQUNGO0FBRUEsZUFBVztBQUNYLGlCQUFhLE1BQU07QUFBQSxFQUNyQjtBQUVBLFNBQU87QUFDVDtBQVlPLFNBQVMsNEJBQTRCLFFBQTBEO0FBQ3BHLE1BQUksV0FBVztBQUNmLE1BQUksZUFBOEI7QUFDbEMsTUFBSSxZQUFZO0FBRWhCLGFBQVcsWUFBWSxPQUFPLFdBQVc7QUFDdkMsVUFBTSxjQUFjLE9BQU8sS0FBSyxRQUFRO0FBQ3hDLFFBQUksY0FBYyxVQUFVO0FBQzFCLGlCQUFXO0FBQ1gscUJBQWU7QUFDZixrQkFBWTtBQUFBLElBQ2QsV0FBVyxnQkFBZ0IsVUFBVTtBQUNuQztBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBRUEsTUFBSSxjQUFjLEtBQUssYUFBYSxtQkFBbUI7QUFDckQsV0FBTztBQUFBLEVBQ1Q7QUFFQSxTQUFPO0FBQ1Q7QUFFQSxTQUFTLGtCQUFrQixPQUFlLFFBQTZDO0FBQ3JGLE1BQUksQ0FBQyxPQUFPO0FBQ1YsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJLE1BQU0sV0FBVyxlQUFlLEdBQUc7QUFDckMsV0FBTyxxQkFBcUIsTUFBTSxNQUFNLGdCQUFnQixNQUFNLEdBQUcsT0FBTyxXQUFXO0FBQUEsRUFDckY7QUFFQSxNQUFJLE1BQU0sU0FBUyxLQUFLLE1BQU0sV0FBVyxpQkFBaUIsS0FBSyxNQUFNLFNBQVMsaUJBQWlCLEdBQUc7QUFDaEcsVUFBTSxTQUFTLE1BQU0sTUFBTSxHQUFHLEVBQUU7QUFFaEMsV0FBTyxjQUFjLE1BQU0sS0FBSyxJQUFJLE9BQU8sTUFBTSxFQUFFLEtBQUssT0FBTyxRQUFRO0FBQUEsRUFDekU7QUFFQSxNQUFJLE1BQU0sV0FBVyxnQkFBZ0IsR0FBRztBQUN0QyxXQUFPLE9BQU8sU0FBUyxZQUFZLEVBQUUsU0FBUyxNQUFNLFlBQVksQ0FBQztBQUFBLEVBQ25FO0FBRUEsUUFBTSxTQUFTLE1BQU0sU0FBUyxHQUFHLElBQUksUUFBUSxHQUFHLEtBQUs7QUFDckQsU0FBTyxPQUFPLGFBQWEsU0FBUyxPQUFPLFNBQVMsV0FBVyxNQUFNO0FBQ3ZFO0FBRUEsU0FBUyxxQkFBcUIsV0FBbUIsYUFBZ0U7QUFDL0csTUFBSSxDQUFDLGFBQWE7QUFDaEIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLGlCQUFpQixVQUFVLFFBQVEsd0JBQXdCO0FBQ2pFLE1BQUksbUJBQW1CLElBQUk7QUFDekIsV0FBTyxPQUFPLE9BQU8sYUFBYSxTQUFTO0FBQUEsRUFDN0M7QUFFQSxRQUFNLGVBQWUsVUFBVSxNQUFNLEdBQUcsY0FBYztBQUN0RCxRQUFNLGdCQUFnQixVQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsTUFBSSxDQUFDLE9BQU8sT0FBTyxhQUFhLFlBQVksR0FBRztBQUM3QyxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sY0FBYyxZQUFZLFlBQVk7QUFHNUMsTUFBSSxNQUFNLFFBQVEsV0FBVyxHQUFHO0FBQzlCLFdBQU8sWUFBWSxLQUFLLENBQUMsU0FBUyxPQUFPLElBQUksTUFBTSxhQUFhO0FBQUEsRUFDbEU7QUFFQSxTQUFPLE9BQU8sV0FBVyxNQUFNO0FBQ2pDOyIsCiAgIm5hbWVzIjogWyJOb1ByaW9yaXR5V2lubmVyUmVhc29uIl0KfQo=
160
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL25vdGUtcHJpb3JpdHkudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBEZWNpZGVzIHdoaWNoIG9mIHNldmVyYWwgbm90ZXMgcmVmZXJlbmNpbmcgdGhlIHNhbWUgYXR0YWNobWVudCBvd25zIGl0LlxuICpcbiAqIEFuIGF0dGFjaG1lbnQgcmVmZXJlbmNlZCBmcm9tIG1vcmUgdGhhbiBvbmUgbm90ZSBoYXMgbm8gc2luZ2xlIGNvcnJlY3QgaG9tZSwgc28gY29sbGVjdGluZyBpdCBmYWxsc1xuICogYmFjayB0byB3aGF0ZXZlciBgY29sbGVjdEF0dGFjaG1lbnRVc2VkQnlNdWx0aXBsZU5vdGVzTW9kZWAgc2F5cyBcdTIwMTQgc2tpcCwgY29weSwgY2FuY2VsLCBvciBhc2suIEFcbiAqIHByaW9yaXR5IGxpc3QgbGV0cyB0aGUgdXNlciBhbnN3ZXIgdGhlIHF1ZXN0aW9uIG9uY2UgaW5zdGVhZDogcHV0IGAubWRgIGFib3ZlIGAuZXhjYWxpZHJhd2AgYW5kIGFuXG4gKiBpbWFnZSBzaGFyZWQgYnkgYm90aCBsYW5kcyBpbiB0aGUgbWFya2Rvd24gbm90ZSdzIGZvbGRlci5cbiAqXG4gKiBBIHRpZSBpcyBkZWxpYmVyYXRlbHkgTk9UIHJlc29sdmVkIGhlcmUuIFR3byBub3RlcyBvZiBlcXVhbCBwcmlvcml0eSBpcyBleGFjdGx5IHRoZSBhbWJpZ3VpdHkgdGhlXG4gKiBleGlzdGluZyBtb2RlIHNldHRpbmcgYWxyZWFkeSBleGlzdHMgdG8gaGFuZGxlLCBhbmQgaW52ZW50aW5nIGEgc2Vjb25kLCBzaWxlbnQgcnVsZSBmb3IgaXQgd291bGRcbiAqIG1vdmUgYSBmaWxlIHRoZSB1c2VyIG5ldmVyIG5hbWVkLlxuICpcbiAqIFRoZSB0aWUgaXMgYWxzbyB0aGUgd2hvbGUgb2Ygd2hhdCBnZXRzIFJFUE9SVEVELiBBIG5vdGUgdGhlIGxpc3QgcmFua2VkIGJlbG93IHRoZSBiZXN0IHJhbmsgY2Fubm90XG4gKiByZXNvbHZlIHRoZSBhbWJpZ3VpdHksIHNvIGxpc3RpbmcgaXQgb25seSBhZGRzIG5vaXNlIFx1MjAxNCBhbmQgd29yc2UgaW4gYSBwaWNrZXIsIHdoZXJlIG9mZmVyaW5nIGl0XG4gKiBpbnZpdGVzIGFuIGFuc3dlciB0aGUgcHJpb3JpdHkgbGlzdCBpdHNlbGYgd291bGQgbm90IGhhdmUgZ2l2ZW4uIFRoYXQgaXMgd2h5XG4gKiB7QGxpbmsgZmlsdGVySGlnaGVzdFByaW9yaXR5Tm90ZVBhdGhzfSBleGlzdHMgYWxvbmdzaWRlIHRoZSB0d28gZnVuY3Rpb25zIHRoYXQgZGVjaWRlLlxuICovXG5cbmltcG9ydCB7IGlzVmFsaWRSZWdFeHAgfSBmcm9tICcuLi9yZWctZXhwLnRzJztcblxuY29uc3QgUFJPUEVSVFlfUFJFRklYID0gJ3Byb3BlcnR5Oic7XG5jb25zdCBSRUdfRVhQX0RFTElNSVRFUiA9ICcvJztcbmNvbnN0IEVYVEVOU0lPTl9QUkVGSVggPSAnLic7XG5jb25zdCBQUk9QRVJUWV9WQUxVRV9TRVBBUkFUT1IgPSAnPSc7XG5cbi8qKlxuICogV2h5IHRoZSBwcmlvcml0eSBsaXN0IGRpZCBub3Qgc2V0dGxlIHdoaWNoIG5vdGUgb3ducyBhbiBhdHRhY2htZW50LlxuICpcbiAqIFRoZSB0aHJlZSB2YWx1ZXMgYXJlIGV4YWN0bHkgdGhlIHRocmVlIHdheXMge0BsaW5rIHBpY2tIaWdoZXN0UHJpb3JpdHlOb3RlUGF0aH0gKHBsdXMgaXRzIGVtcHR5LWxpc3RcbiAqIGd1YXJkKSBjYW4gZmFpbCB0byBuYW1lIGEgd2lubmVyLCBzbyBhIGNhbGxlciBjYW4gdGVsbCB0aGUgdXNlciB0aGUgcmVhbCByZWFzb24gaW5zdGVhZCBvZiBvbmx5XG4gKiByZXBvcnRpbmcgdGhhdCB0aGUgYXR0YWNobWVudCBpcyByZWZlcmVuY2VkIGJ5IHNldmVyYWwgbm90ZXMuXG4gKi9cbmV4cG9ydCBlbnVtIE5vUHJpb3JpdHlXaW5uZXJSZWFzb24ge1xuICAvKipcbiAgICogVGhlIHByaW9yaXR5IGxpc3QgaXMgZW1wdHkgXHUyMDE0IGl0cyBkZWZhdWx0LiBOb3RoaW5nIHdhcyBjb25maWd1cmVkIHRvIGRlY2lkZSBiZXR3ZWVuIHRoZSBub3Rlcy5cbiAgICovXG4gIEVtcHR5TGlzdCA9ICdFbXB0eUxpc3QnLFxuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBoYXMgZW50cmllcywgYnV0IG5vbmUgb2YgdGhlIHJlZmVyZW5jaW5nIG5vdGVzIG1hdGNoZXMgYW55IG9mIHRoZW0uXG4gICAqL1xuICBOb01hdGNoID0gJ05vTWF0Y2gnLFxuXG4gIC8qKlxuICAgKiBTZXZlcmFsIHJlZmVyZW5jaW5nIG5vdGVzIHRpZSBmb3IgdGhlIGJlc3QgcmFuaywgc28gdGhlIGxpc3QgbmFtZXMgbm8gc2luZ2xlIG93bmVyLlxuICAgKi9cbiAgVGllID0gJ1RpZSdcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZmlsdGVySGlnaGVzdFByaW9yaXR5Tm90ZVBhdGhzfS5cbiAqXG4gKiBUaGUgc2FtZSBxdWVzdGlvbiBhcyB7QGxpbmsgcGlja0hpZ2hlc3RQcmlvcml0eU5vdGVQYXRofSBhc2tzLCBzbyBkZWxpYmVyYXRlbHkgdGhlIHNhbWUgcGFyYW1ldGVyczpcbiAqIHRoZSB0d28gbXVzdCBiZSBhbnN3ZXJlZCBmcm9tIGlkZW50aWNhbCBpbnB1dHMgb3IgdGhleSBjb3VsZCBkaXNhZ3JlZS5cbiAqL1xuZXhwb3J0IHR5cGUgRmlsdGVySGlnaGVzdFByaW9yaXR5Tm90ZVBhdGhzUGFyYW1zID0gUGlja0hpZ2hlc3RQcmlvcml0eU5vdGVQYXRoUGFyYW1zO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBmaW5kTm9Qcmlvcml0eVdpbm5lclJlYXNvbn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmluZE5vUHJpb3JpdHlXaW5uZXJSZWFzb25QYXJhbXMgZXh0ZW5kcyBQaWNrSGlnaGVzdFByaW9yaXR5Tm90ZVBhdGhQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHByaW9yaXR5IGxpc3QsIGhpZ2hlc3QgcHJpb3JpdHkgZmlyc3QuXG4gICAqL1xuICByZWFkb25seSBlbnRyaWVzOiByZWFkb25seSBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZmluZE5vdGVQcmlvcml0eVJhbmt9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbmROb3RlUHJpb3JpdHlSYW5rUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBwcmlvcml0eSBsaXN0LCBoaWdoZXN0IHByaW9yaXR5IGZpcnN0LlxuICAgKi9cbiAgcmVhZG9ubHkgZW50cmllczogcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBub3RlJ3MgZnJvbnRtYXR0ZXIsIG9yIGBudWxsYCB3aGVuIGl0IGhhcyBub25lLlxuICAgKi9cbiAgcmVhZG9ubHkgZnJvbnRtYXR0ZXI6IG51bGwgfCBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG5cbiAgLyoqXG4gICAqIFRoZSB2YXVsdC1yZWxhdGl2ZSBwYXRoIG9mIHRoZSBub3RlLlxuICAgKi9cbiAgcmVhZG9ubHkgbm90ZVBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcGlja0hpZ2hlc3RQcmlvcml0eU5vdGVQYXRofS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQaWNrSGlnaGVzdFByaW9yaXR5Tm90ZVBhdGhQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHZhdWx0LXJlbGF0aXZlIHBhdGhzIG9mIHRoZSBub3RlcyByZWZlcmVuY2luZyB0aGUgYXR0YWNobWVudC5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGVQYXRoczogcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBwcmlvcml0eSByYW5rIG9mIGEgbm90ZS4gTG93ZXIgd2luczsge0BsaW5rIE5PX1BSSU9SSVRZX01BVENIfSBtZWFucyB0aGUgbm90ZSBtYXRjaGVkIG5vdGhpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBub3RlUGF0aCAtIFRoZSB2YXVsdC1yZWxhdGl2ZSBwYXRoIG9mIHRoZSBub3RlLlxuICAgKiBAcmV0dXJucyBUaGUgcmFuay5cbiAgICovXG4gIHJhbmsobm90ZVBhdGg6IHN0cmluZyk6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBUaGUgcmFuayBvZiBhIG5vdGUgdGhhdCBtYXRjaGVzIG5vIGVudHJ5IGluIHRoZSBwcmlvcml0eSBsaXN0LiBIaWdoZXIgdGhhbiBhbnkgcmVhbCByYW5rLCBzbyBhIG5vdGVcbiAqIHRoYXQgbWF0Y2hlcyBub3RoaW5nIGFsd2F5cyBsb3NlcyB0byBvbmUgdGhhdCBtYXRjaGVzIHNvbWV0aGluZy5cbiAqL1xuZXhwb3J0IGNvbnN0IE5PX1BSSU9SSVRZX01BVENIID0gSW5maW5pdHk7XG5cbi8qKlxuICogTmFycm93cyB0aGUgcmVmZXJlbmNpbmcgbm90ZXMgdG8gdGhlIG9uZXMgc2hhcmluZyB0aGUgYmVzdCByYW5rLlxuICpcbiAqIFRob3NlIG5vdGVzIGFyZSB0aGUgd2hvbGUgb2YgdGhlIGFtYmlndWl0eTogb25lIHRoZSBsaXN0IHJhbmtlZCBiZWxvdyB0aGVtIGNhbm5vdCByZXNvbHZlIGFueXRoaW5nLFxuICogc28gcmVwb3J0aW5nIGl0IG9ubHkgYWRkcyBub2lzZS4gVGhpcyBtaXJyb3JzIHtAbGluayBwaWNrSGlnaGVzdFByaW9yaXR5Tm90ZVBhdGh9J3MgY29uZGl0aW9uc1xuICogcmF0aGVyIHRoYW4gcmUtZGVjaWRpbmcgYW55dGhpbmcsIHNvIHRoZSB0d28gY2FuIG9ubHkgZXZlciBhZ3JlZSBcdTIwMTQgd2hlbmV2ZXIgdGhhdCBuYW1lcyBhIHdpbm5lcixcbiAqIHRoaXMgcmV0dXJucyBleGFjdGx5IHRoYXQgb25lIG5vdGUuXG4gKlxuICogQSBsaXN0IHRoYXQgZGVjaWRlcyBub3RoaW5nIGF0IGFsbCBcdTIwMTQgZW1wdHksIG9yIG1hdGNoaW5nIG5vIG5vdGUgXHUyMDE0IHJhbmtzIGV2ZXJ5IG5vdGVcbiAqIHtAbGluayBOT19QUklPUklUWV9NQVRDSH0sIHNvIHRoZXkgYWxsIHRpZSBhbmQgZXZlcnkgb25lIG9mIHRoZW0gaXMga2VwdC4gVGhhdCBpcyB0aGUgc2FtZSBsaXN0IHRoZVxuICogdXNlciBzYXcgYmVmb3JlLCB3aGljaCBpcyBjb3JyZWN0OiBub3RoaW5nIGhhcyBydWxlZCBhbnkgb2YgdGhlbSBvdXQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSByZWZlcmVuY2luZyBub3RlcyBhbmQgaG93IHRvIHJhbmsgb25lLlxuICogQHJldHVybnMgVGhlIG5vdGVzIGhvbGRpbmcgdGhlIGJlc3QgcmFuaywgaW4gdGhlIG9yZGVyIHRoZXkgd2VyZSBnaXZlbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckhpZ2hlc3RQcmlvcml0eU5vdGVQYXRocyhwYXJhbXM6IEZpbHRlckhpZ2hlc3RQcmlvcml0eU5vdGVQYXRoc1BhcmFtcyk6IHN0cmluZ1tdIHtcbiAgLy8gUmFua2luZyBjYW4gaGl0IHRoZSB2YXVsdCBhbmQgdGhlIG1ldGFkYXRhIGNhY2hlLCBzbyBlYWNoIG5vdGUgaXMgcmFua2VkIG9uY2UgYW5kIGNhcnJpZWQuXG4gIGNvbnN0IHJhbmtlZE5vdGVQYXRocyA9IHBhcmFtcy5ub3RlUGF0aHMubWFwKChub3RlUGF0aCkgPT4gKHtcbiAgICBub3RlUGF0aCxcbiAgICByYW5rOiBwYXJhbXMucmFuayhub3RlUGF0aClcbiAgfSkpO1xuXG4gIGxldCBiZXN0UmFuayA9IE5PX1BSSU9SSVRZX01BVENIO1xuICBmb3IgKGNvbnN0IHJhbmtlZCBvZiByYW5rZWROb3RlUGF0aHMpIHtcbiAgICBpZiAocmFua2VkLnJhbmsgPCBiZXN0UmFuaykge1xuICAgICAgYmVzdFJhbmsgPSByYW5rZWQucmFuaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmFua2VkTm90ZVBhdGhzXG4gICAgLmZpbHRlcigocmFua2VkKSA9PiByYW5rZWQucmFuayA9PT0gYmVzdFJhbmspXG4gICAgLm1hcCgocmFua2VkKSA9PiByYW5rZWQubm90ZVBhdGgpO1xufVxuXG4vKipcbiAqIEV4cGxhaW5zIHdoeSB0aGUgcHJpb3JpdHkgbGlzdCBuYW1lZCBubyBvd25lciBmb3IgYW4gYXR0YWNobWVudC5cbiAqXG4gKiBPbmx5IG1lYW5pbmdmdWwgb25jZSB7QGxpbmsgcGlja0hpZ2hlc3RQcmlvcml0eU5vdGVQYXRofSBoYXMgcmV0dXJuZWQgYG51bGxgIChvciB0aGUgbGlzdCB3YXMgZW1wdHlcbiAqIGFuZCB3YXMgbmV2ZXIgY29uc3VsdGVkKTsgaXQgbWlycm9ycyB0aGF0IGZ1bmN0aW9uJ3Mgb3duIGNvbmRpdGlvbnMgcmF0aGVyIHRoYW4gcmUtZGVjaWRpbmdcbiAqIGFueXRoaW5nLCBzbyB0aGUgdHdvIGNhbiBvbmx5IGV2ZXIgYWdyZWUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwcmlvcml0eSBsaXN0LCB0aGUgcmVmZXJlbmNpbmcgbm90ZXMsIGFuZCBob3cgdG8gcmFuayBvbmUuXG4gKiBAcmV0dXJucyBXaGljaCBvZiB0aGUgdGhyZWUgd2F5cyB0aGUgbGlzdCBmYWlsZWQgdG8gc2V0dGxlIGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZE5vUHJpb3JpdHlXaW5uZXJSZWFzb24ocGFyYW1zOiBGaW5kTm9Qcmlvcml0eVdpbm5lclJlYXNvblBhcmFtcyk6IE5vUHJpb3JpdHlXaW5uZXJSZWFzb24ge1xuICBpZiAocGFyYW1zLmVudHJpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIE5vUHJpb3JpdHlXaW5uZXJSZWFzb24uRW1wdHlMaXN0O1xuICB9XG5cbiAgbGV0IGJlc3RSYW5rID0gTk9fUFJJT1JJVFlfTUFUQ0g7XG4gIGZvciAoY29uc3Qgbm90ZVBhdGggb2YgcGFyYW1zLm5vdGVQYXRocykge1xuICAgIGNvbnN0IGN1cnJlbnRSYW5rID0gcGFyYW1zLnJhbmsobm90ZVBhdGgpO1xuICAgIGlmIChjdXJyZW50UmFuayA8IGJlc3RSYW5rKSB7XG4gICAgICBiZXN0UmFuayA9IGN1cnJlbnRSYW5rO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBiZXN0UmFuayA9PT0gTk9fUFJJT1JJVFlfTUFUQ0ggPyBOb1ByaW9yaXR5V2lubmVyUmVhc29uLk5vTWF0Y2ggOiBOb1ByaW9yaXR5V2lubmVyUmVhc29uLlRpZTtcbn1cblxuLyoqXG4gKiBGaW5kcyBob3cgaGlnaGx5IGEgbm90ZSByYW5rcyBpbiB0aGUgcHJpb3JpdHkgbGlzdC5cbiAqXG4gKiBBbiBlbnRyeSBtYXRjaGVzIGluIG9uZSBvZiBmb3VyIHdheXMsIHBpY2tlZCBieSBpdHMgc2hhcGUgc28gdGhhdCBvbmUgbGlzdCBjYW4gZXhwcmVzcyBhbGwgb2YgdGhlbTpcbiAqXG4gKiAtIGBwcm9wZXJ0eTpuYW1lYCBcdTIwMTQgdGhlIG5vdGUncyBmcm9udG1hdHRlciBoYXMgYG5hbWVgOyBgcHJvcGVydHk6bmFtZT12YWx1ZWAgYWxzbyBjb21wYXJlcyB0aGUgdmFsdWUuXG4gKiAtIGAvcmVndWxhciBleHByZXNzaW9uL2AgXHUyMDE0IHRlc3RlZCBhZ2FpbnN0IHRoZSBub3RlJ3MgcGF0aC5cbiAqIC0gYC5leHRgIFx1MjAxNCB0aGUgbm90ZSdzIHBhdGggZW5kcyB3aXRoIGl0LCBjYXNlLWluc2Vuc2l0aXZlbHkuIFRoaXMgaXMgdGhlIGZvcm0gdGhlIHJlcXVlc3QgYXNrZWQgZm9yLlxuICogLSBhbnl0aGluZyBlbHNlIFx1MjAxNCBhIHBhdGggZnJvbSB0aGUgdmF1bHQgcm9vdCwgbWF0Y2hpbmcgdGhlIHZvY2FidWxhcnkgb2YgdGhlIGluY2x1ZGUgLyBleGNsdWRlXG4gKiAgIHBhdGggc2V0dGluZ3MuXG4gKlxuICogV2hlbiBhIG5vdGUgbWF0Y2hlcyBzZXZlcmFsIGVudHJpZXMgdGhlICoqbG9uZ2VzdCoqIG9uZSBkZWNpZGVzIGl0cyByYW5rLCBzbyB0aGUgbW9zdCBzcGVjaWZpY1xuICogZW50cnkgd2lucyBhbmQgdGhlIG9yZGVyIG9mIHRoZSBsaXN0IGlzIGxlZnQgdG8gZXhwcmVzcyBwcmlvcml0eS4gV2l0aG91dCB0aGlzIGFuIEV4Y2FsaWRyYXcgbm90ZVxuICogY291bGQgbmV2ZXIgcmFuayBiZWxvdyBhIHBsYWluIG1hcmtkb3duIG9uZTogYGRyYXdpbmcuZXhjYWxpZHJhdy5tZGAgYWxzbyBlbmRzIHdpdGggYC5tZGAsIHNvXG4gKiBgLm1kYCBhYm92ZSBgLmV4Y2FsaWRyYXcubWRgIFx1MjAxNCB0aGUgdmVyeSBleGFtcGxlIHRoZSByZXF1ZXN0IGlzIGJ1aWx0IG9uIFx1MjAxNCB3b3VsZCB0aWUgaW5zdGVhZCBvZlxuICogcmVzb2x2aW5nLiBFcXVhbC1sZW5ndGggbWF0Y2hlcyBmYWxsIHRvIHRoZSBlYXJsaWVyIGVudHJ5LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgZmluZGluZyB0aGUgcmFuay5cbiAqIEByZXR1cm5zIFRoZSBpbmRleCBvZiB0aGUgbW9zdCBzcGVjaWZpYyBtYXRjaGluZyBlbnRyeSwgb3Ige0BsaW5rIE5PX1BSSU9SSVRZX01BVENIfSB3aGVuIG5vbmUgbWF0Y2guXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTm90ZVByaW9yaXR5UmFuayhwYXJhbXM6IEZpbmROb3RlUHJpb3JpdHlSYW5rUGFyYW1zKTogbnVtYmVyIHtcbiAgbGV0IGJlc3RSYW5rID0gTk9fUFJJT1JJVFlfTUFUQ0g7XG4gIGxldCBiZXN0TGVuZ3RoID0gLTE7XG5cbiAgZm9yIChjb25zdCBbaW5kZXgsIGVudHJ5XSBvZiBwYXJhbXMuZW50cmllcy5lbnRyaWVzKCkpIHtcbiAgICAvLyBBIHNob3J0ZXIgZW50cnkgY2FuIG5ldmVyIGJlYXQgb25lIHRoYXQgYWxyZWFkeSBtYXRjaGVkLCBzbyBpdCBpcyBub3Qgd29ydGggdGVzdGluZy5cbiAgICBpZiAoZW50cnkubGVuZ3RoIDw9IGJlc3RMZW5ndGgpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICghY2hlY2tFbnRyeU1hdGNoZXMoZW50cnksIHBhcmFtcykpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGJlc3RSYW5rID0gaW5kZXg7XG4gICAgYmVzdExlbmd0aCA9IGVudHJ5Lmxlbmd0aDtcbiAgfVxuXG4gIHJldHVybiBiZXN0UmFuaztcbn1cblxuLyoqXG4gKiBQaWNrcyB0aGUgc2luZ2xlIGhpZ2hlc3QtcHJpb3JpdHkgbm90ZSBhbW9uZyB0aG9zZSByZWZlcmVuY2luZyBhbiBhdHRhY2htZW50LlxuICpcbiAqIFJldHVybnMgYG51bGxgIHdoZW4gdGhlIGJlc3QgcmFuayBpcyBzaGFyZWQgYnkgbW9yZSB0aGFuIG9uZSBub3RlLCBvciB3aGVuIG5vIG5vdGUgbWF0Y2hlc1xuICogYW55dGhpbmcuIEJvdGggYXJlIHRpZXMsIGFuZCBhIHRpZSBpcyB0aGUgY2FsbGVyJ3MgcHJvYmxlbTogaXQgaXMgd2hhdCB0aGUgbXVsdGlwbGUtbm90ZXMgbW9kZVxuICogc2V0dGluZyBpcyBmb3IuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBwaWNraW5nIHRoZSBub3RlLlxuICogQHJldHVybnMgVGhlIHdpbm5pbmcgbm90ZSdzIHBhdGgsIG9yIGBudWxsYCB3aGVuIHRoZXJlIGlzIG5vIHNpbmdsZSB3aW5uZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwaWNrSGlnaGVzdFByaW9yaXR5Tm90ZVBhdGgocGFyYW1zOiBQaWNrSGlnaGVzdFByaW9yaXR5Tm90ZVBhdGhQYXJhbXMpOiBudWxsIHwgc3RyaW5nIHtcbiAgbGV0IGJlc3RSYW5rID0gTk9fUFJJT1JJVFlfTUFUQ0g7XG4gIGxldCBiZXN0Tm90ZVBhdGg6IG51bGwgfCBzdHJpbmcgPSBudWxsO1xuICBsZXQgYmVzdENvdW50ID0gMDtcblxuICBmb3IgKGNvbnN0IG5vdGVQYXRoIG9mIHBhcmFtcy5ub3RlUGF0aHMpIHtcbiAgICBjb25zdCBjdXJyZW50UmFuayA9IHBhcmFtcy5yYW5rKG5vdGVQYXRoKTtcbiAgICBpZiAoY3VycmVudFJhbmsgPCBiZXN0UmFuaykge1xuICAgICAgYmVzdFJhbmsgPSBjdXJyZW50UmFuaztcbiAgICAgIGJlc3ROb3RlUGF0aCA9IG5vdGVQYXRoO1xuICAgICAgYmVzdENvdW50ID0gMTtcbiAgICB9IGVsc2UgaWYgKGN1cnJlbnRSYW5rID09PSBiZXN0UmFuaykge1xuICAgICAgYmVzdENvdW50Kys7XG4gICAgfVxuICB9XG5cbiAgaWYgKGJlc3RDb3VudCAhPT0gMSB8fCBiZXN0UmFuayA9PT0gTk9fUFJJT1JJVFlfTUFUQ0gpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBiZXN0Tm90ZVBhdGg7XG59XG5cbmZ1bmN0aW9uIGNoZWNrRW50cnlNYXRjaGVzKGVudHJ5OiBzdHJpbmcsIHBhcmFtczogRmluZE5vdGVQcmlvcml0eVJhbmtQYXJhbXMpOiBib29sZWFuIHtcbiAgaWYgKCFlbnRyeSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChlbnRyeS5zdGFydHNXaXRoKFBST1BFUlRZX1BSRUZJWCkpIHtcbiAgICByZXR1cm4gY2hlY2tQcm9wZXJ0eU1hdGNoZXMoZW50cnkuc2xpY2UoUFJPUEVSVFlfUFJFRklYLmxlbmd0aCksIHBhcmFtcy5mcm9udG1hdHRlcik7XG4gIH1cblxuICBpZiAoZW50cnkubGVuZ3RoID4gMSAmJiBlbnRyeS5zdGFydHNXaXRoKFJFR19FWFBfREVMSU1JVEVSKSAmJiBlbnRyeS5lbmRzV2l0aChSRUdfRVhQX0RFTElNSVRFUikpIHtcbiAgICBjb25zdCBzb3VyY2UgPSBlbnRyeS5zbGljZSgxLCAtMSk7XG4gICAgLy8gQW4gdW5wYXJzZWFibGUgZXhwcmVzc2lvbiBtdXN0IG5vdCB0aHJvdyBtaWQtY29sbGVjdGlvbjsgaXQgc2ltcGx5IG1hdGNoZXMgbm90aGluZy5cbiAgICByZXR1cm4gaXNWYWxpZFJlZ0V4cChzb3VyY2UpICYmIG5ldyBSZWdFeHAoc291cmNlKS50ZXN0KHBhcmFtcy5ub3RlUGF0aCk7XG4gIH1cblxuICBpZiAoZW50cnkuc3RhcnRzV2l0aChFWFRFTlNJT05fUFJFRklYKSkge1xuICAgIHJldHVybiBwYXJhbXMubm90ZVBhdGgudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChlbnRyeS50b0xvd2VyQ2FzZSgpKTtcbiAgfVxuXG4gIGNvbnN0IHByZWZpeCA9IGVudHJ5LmVuZHNXaXRoKCcvJykgPyBlbnRyeSA6IGAke2VudHJ5fS9gO1xuICByZXR1cm4gcGFyYW1zLm5vdGVQYXRoID09PSBlbnRyeSB8fCBwYXJhbXMubm90ZVBhdGguc3RhcnRzV2l0aChwcmVmaXgpO1xufVxuXG5mdW5jdGlvbiBjaGVja1Byb3BlcnR5TWF0Y2hlcyhzcGVjaWZpZXI6IHN0cmluZywgZnJvbnRtYXR0ZXI6IG51bGwgfCBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4pOiBib29sZWFuIHtcbiAgaWYgKCFmcm9udG1hdHRlcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHNlcGFyYXRvckluZGV4ID0gc3BlY2lmaWVyLmluZGV4T2YoUFJPUEVSVFlfVkFMVUVfU0VQQVJBVE9SKTtcbiAgaWYgKHNlcGFyYXRvckluZGV4ID09PSAtMSkge1xuICAgIHJldHVybiBPYmplY3QuaGFzT3duKGZyb250bWF0dGVyLCBzcGVjaWZpZXIpO1xuICB9XG5cbiAgY29uc3QgcHJvcGVydHlOYW1lID0gc3BlY2lmaWVyLnNsaWNlKDAsIHNlcGFyYXRvckluZGV4KTtcbiAgY29uc3QgZXhwZWN0ZWRWYWx1ZSA9IHNwZWNpZmllci5zbGljZShzZXBhcmF0b3JJbmRleCArIDEpO1xuICBpZiAoIU9iamVjdC5oYXNPd24oZnJvbnRtYXR0ZXIsIHByb3BlcnR5TmFtZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBhY3R1YWxWYWx1ZSA9IGZyb250bWF0dGVyW3Byb3BlcnR5TmFtZV07XG4gIC8vIEZyb250bWF0dGVyIHZhbHVlcyBhcmUgd2hhdGV2ZXIgWUFNTCBwcm9kdWNlZCwgc28gY29tcGFyZSB0aGVpciByZW5kZXJpbmcgcmF0aGVyIHRoYW4gcmVxdWlyaW5nIGFcbiAgLy8gU3RyaW5nLiBBbiBhcnJheSBtYXRjaGVzIHdoZW4gYW55IG9mIGl0cyBlbnRyaWVzIGRvZXMsIHdoaWNoIGlzIGhvdyB0YWctbGlrZSBwcm9wZXJ0aWVzIHJlYWQuXG4gIGlmIChBcnJheS5pc0FycmF5KGFjdHVhbFZhbHVlKSkge1xuICAgIHJldHVybiBhY3R1YWxWYWx1ZS5zb21lKChpdGVtKSA9PiBTdHJpbmcoaXRlbSkgPT09IGV4cGVjdGVkVmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIFN0cmluZyhhY3R1YWxWYWx1ZSkgPT09IGV4cGVjdGVkVmFsdWU7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBLFNBQVMscUJBQXFCO0FBRTlCLE1BQU0sa0JBQWtCO0FBQ3hCLE1BQU0sb0JBQW9CO0FBQzFCLE1BQU0sbUJBQW1CO0FBQ3pCLE1BQU0sMkJBQTJCO0FBUzFCLElBQUsseUJBQUwsa0JBQUtBLDRCQUFMO0FBSUwsRUFBQUEsd0JBQUEsZUFBWTtBQUtaLEVBQUFBLHdCQUFBLGFBQVU7QUFLVixFQUFBQSx3QkFBQSxTQUFNO0FBZEksU0FBQUE7QUFBQSxHQUFBO0FBNkVMLE1BQU0sb0JBQW9CO0FBaUIxQixTQUFTLCtCQUErQixRQUF3RDtBQUVyRyxRQUFNLGtCQUFrQixPQUFPLFVBQVUsSUFBSSxDQUFDLGNBQWM7QUFBQSxJQUMxRDtBQUFBLElBQ0EsTUFBTSxPQUFPLEtBQUssUUFBUTtBQUFBLEVBQzVCLEVBQUU7QUFFRixNQUFJLFdBQVc7QUFDZixhQUFXLFVBQVUsaUJBQWlCO0FBQ3BDLFFBQUksT0FBTyxPQUFPLFVBQVU7QUFDMUIsaUJBQVcsT0FBTztBQUFBLElBQ3BCO0FBQUEsRUFDRjtBQUVBLFNBQU8sZ0JBQ0osT0FBTyxDQUFDLFdBQVcsT0FBTyxTQUFTLFFBQVEsRUFDM0MsSUFBSSxDQUFDLFdBQVcsT0FBTyxRQUFRO0FBQ3BDO0FBWU8sU0FBUywyQkFBMkIsUUFBa0U7QUFD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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "obsidian-dev-utils",
3
- "version": "99.0.0",
3
+ "version": "100.1.0",
4
4
  "description": "This is the collection of useful functions that you can use for your Obsidian plugin development.",
5
5
  "keywords": [
6
6
  "obsidian"