obsidian-dev-utils 4.2.0 → 4.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 4.3.1
4
+
5
+ - Fix assignWithNonEnumerableProperties
6
+
7
+ ## 4.3.0
8
+
9
+ - Simplify generics
10
+
3
11
  ## 4.2.0
4
12
 
5
13
  - Refactor
@@ -52,4 +52,4 @@ async function noopAsync() {
52
52
  omitAsyncReturnType,
53
53
  omitReturnType
54
54
  });
55
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL0Z1bmN0aW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIE1ha2VzIGEgZnVuY3Rpb24gdGhhdCBjYWxscyB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gd2l0aCB0aGUgcHJvdmlkZWQgYXJndW1lbnRzIGFuZCBvbWl0cyB0aGUgcmV0dXJuIHZhbHVlLlxuICpcbiAqIEB0eXBlUGFyYW0gQXJncyAtIEFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLlxuICogQHBhcmFtIGZuIC0gRnVuY3Rpb24gdG8gYmUgY2FsbGVkLlxuICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0IGNhbGxzIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiB3aXRoIHRoZSBwcm92aWRlZCBhcmd1bWVudHMgYW5kIG9taXRzIHRoZSByZXR1cm4gdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbWl0UmV0dXJuVHlwZTxBcmdzIGV4dGVuZHMgdW5rbm93bltdPihmbjogKC4uLmFyZ3M6IEFyZ3MpID0+IHVua25vd24pOiAoLi4uYXJnczogQXJncykgPT4gdm9pZCB7XG4gIHJldHVybiAoLi4uYXJnczogQXJncykgPT4ge1xuICAgIGZuKC4uLmFyZ3MpO1xuICB9O1xufVxuXG4vKipcbiAqIE1ha2VzIGFuIGFzeW5jIGZ1bmN0aW9uIHRoYXQgY2FsbHMgdGhlIG9yaWdpbmFsIGFzeW5jIGZ1bmN0aW9uIHdpdGggdGhlIHByb3ZpZGVkIGFyZ3VtZW50cyBhbmQgb21pdHMgdGhlIHJldHVybiB2YWx1ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIEFyZ3MgLSBBcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbi5cbiAqIEBwYXJhbSBmbiAtIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZC5cbiAqIEByZXR1cm5zIEFuIGFzeW5jIGZ1bmN0aW9uIHRoYXQgY2FsbHMgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIHdpdGggdGhlIHByb3ZpZGVkIGFyZ3VtZW50cyBhbmQgb21pdHMgdGhlIHJldHVybiB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9taXRBc3luY1JldHVyblR5cGU8QXJncyBleHRlbmRzIHVua25vd25bXT4oZm46ICguLi5hcmdzOiBBcmdzKSA9PiBQcm9taXNlPHVua25vd24+KTogKC4uLmFyZ3M6IEFyZ3MpID0+IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gYXN5bmMgKC4uLmFyZ3M6IEFyZ3MpID0+IHtcbiAgICBhd2FpdCBmbiguLi5hcmdzKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBBIGZ1bmN0aW9uIHRoYXQgZG9lcyBub3RoaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9vcCgpOiB2b2lkIHtcbiAgLy8gRG9lcyBub3RoaW5nLlxufVxuXG4vKipcbiAqIEEgZnVuY3Rpb24gdGhhdCBkb2VzIG5vdGhpbmcuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBub29wQXN5bmMoKTogUHJvbWlzZTx2b2lkPiB7XG4gIC8vIERvZXMgbm90aGluZy5cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBT08sU0FBUyxlQUF1QyxJQUF5RDtBQUM5RyxTQUFPLElBQUksU0FBZTtBQUN4QixPQUFHLEdBQUcsSUFBSTtBQUFBLEVBQ1o7QUFDRjtBQVNPLFNBQVMsb0JBQTRDLElBQTJFO0FBQ3JJLFNBQU8sVUFBVSxTQUFlO0FBQzlCLFVBQU0sR0FBRyxHQUFHLElBQUk7QUFBQSxFQUNsQjtBQUNGO0FBS08sU0FBUyxPQUFhO0FBRTdCO0FBS0EsZUFBc0IsWUFBMkI7QUFFakQ7IiwKICAibmFtZXMiOiBbXQp9Cg==
55
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL0Z1bmN0aW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBGdW5jdGlvblxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCBmdW5jdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBNYWtlcyBhIGZ1bmN0aW9uIHRoYXQgY2FsbHMgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIHdpdGggdGhlIHByb3ZpZGVkIGFyZ3VtZW50cyBhbmQgb21pdHMgdGhlIHJldHVybiB2YWx1ZS5cbiAqXG4gKiBAdHlwZVBhcmFtIEFyZ3MgLSBBcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbi5cbiAqIEBwYXJhbSBmbiAtIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZC5cbiAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCBjYWxscyB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gd2l0aCB0aGUgcHJvdmlkZWQgYXJndW1lbnRzIGFuZCBvbWl0cyB0aGUgcmV0dXJuIHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gb21pdFJldHVyblR5cGU8QXJncyBleHRlbmRzIHVua25vd25bXT4oZm46ICguLi5hcmdzOiBBcmdzKSA9PiB1bmtub3duKTogKC4uLmFyZ3M6IEFyZ3MpID0+IHZvaWQge1xuICByZXR1cm4gKC4uLmFyZ3M6IEFyZ3MpID0+IHtcbiAgICBmbiguLi5hcmdzKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBNYWtlcyBhbiBhc3luYyBmdW5jdGlvbiB0aGF0IGNhbGxzIHRoZSBvcmlnaW5hbCBhc3luYyBmdW5jdGlvbiB3aXRoIHRoZSBwcm92aWRlZCBhcmd1bWVudHMgYW5kIG9taXRzIHRoZSByZXR1cm4gdmFsdWUuXG4gKlxuICogQHR5cGVQYXJhbSBBcmdzIC0gQXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24uXG4gKiBAcGFyYW0gZm4gLSBGdW5jdGlvbiB0byBiZSBjYWxsZWQuXG4gKiBAcmV0dXJucyBBbiBhc3luYyBmdW5jdGlvbiB0aGF0IGNhbGxzIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiB3aXRoIHRoZSBwcm92aWRlZCBhcmd1bWVudHMgYW5kIG9taXRzIHRoZSByZXR1cm4gdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbWl0QXN5bmNSZXR1cm5UeXBlPEFyZ3MgZXh0ZW5kcyB1bmtub3duW10+KGZuOiAoLi4uYXJnczogQXJncykgPT4gUHJvbWlzZTx1bmtub3duPik6ICguLi5hcmdzOiBBcmdzKSA9PiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIGFzeW5jICguLi5hcmdzOiBBcmdzKSA9PiB7XG4gICAgYXdhaXQgZm4oLi4uYXJncyk7XG4gIH07XG59XG5cbi8qKlxuICogQSBmdW5jdGlvbiB0aGF0IGRvZXMgbm90aGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vb3AoKTogdm9pZCB7XG4gIC8vIERvZXMgbm90aGluZy5cbn1cblxuLyoqXG4gKiBBIGZ1bmN0aW9uIHRoYXQgZG9lcyBub3RoaW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbm9vcEFzeW5jKCk6IFByb21pc2U8dm9pZD4ge1xuICAvLyBEb2VzIG5vdGhpbmcuXG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVlPLFNBQVMsZUFBdUMsSUFBeUQ7QUFDOUcsU0FBTyxJQUFJLFNBQWU7QUFDeEIsT0FBRyxHQUFHLElBQUk7QUFBQSxFQUNaO0FBQ0Y7QUFTTyxTQUFTLG9CQUE0QyxJQUEyRTtBQUNySSxTQUFPLFVBQVUsU0FBZTtBQUM5QixVQUFNLEdBQUcsR0FBRyxJQUFJO0FBQUEsRUFDbEI7QUFDRjtBQUtPLFNBQVMsT0FBYTtBQUU3QjtBQUtBLGVBQXNCLFlBQTJCO0FBRWpEOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -1,3 +1,7 @@
1
+ /**
2
+ * @packageDocumentation Function
3
+ * Contains utility functions for working with functions.
4
+ */
1
5
  /**
2
6
  * Makes a function that calls the original function with the provided arguments and omits the return value.
3
7
  *
@@ -0,0 +1,24 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function patchRequireEsmDefault(){const __require=require;require=Object.assign(id=>{const module=__require(id);return module.__esModule&&module.default?module.default:module},__require)})()
7
+
8
+ "use strict";
9
+ var __defProp = Object.defineProperty;
10
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
11
+ var __getOwnPropNames = Object.getOwnPropertyNames;
12
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
22
+ var HTMLElement_exports = {};
23
+ module.exports = __toCommonJS(HTMLElement_exports);
24
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL0hUTUxFbGVtZW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcclxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uIEhUTUxFbGVtZW50XHJcbiAqIEhlbHBlcnMgZm9yIHdvcmtpbmcgd2l0aCBIVE1MIGVsZW1lbnRzLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBBIEhUTUwgZWxlbWVudCB0aGF0IGNhbiBiZSB2YWxpZGF0ZWQuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRvckVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7XHJcbiAgLyoqXHJcbiAgICogU2V0cyBhIGN1c3RvbSBlcnJvciBtZXNzYWdlIG9uIHRoZSBlbGVtZW50LlxyXG4gICAqIEBwYXJhbSBlcnJvciAtIFRoZSBlcnJvciBtZXNzYWdlIHRvIHNldCBvbiB0aGUgZWxlbWVudC5cclxuICAgKi9cclxuICBzZXRDdXN0b21WYWxpZGl0eShlcnJvcjogc3RyaW5nKTogdm9pZDtcclxuXHJcbiAgLyoqXHJcbiAgICogUmVwb3J0cyB0aGUgdmFsaWRpdHkgb2YgdGhlIGVsZW1lbnQuXHJcbiAgICovXHJcbiAgcmVwb3J0VmFsaWRpdHkoKTogYm9vbGVhbjtcclxufVxyXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @packageDocumentation HTMLElement
3
+ * Helpers for working with HTML elements.
4
+ */
5
+ /**
6
+ * A HTML element that can be validated.
7
+ */
8
+ export interface ValidatorElement extends HTMLElement {
9
+ /**
10
+ * Sets a custom error message on the element.
11
+ * @param error - The error message to set on the element.
12
+ */
13
+ setCustomValidity(error: string): void;
14
+ /**
15
+ * Reports the validity of the element.
16
+ */
17
+ reportValidity(): boolean;
18
+ }
@@ -25,6 +25,8 @@ var __copyProps = (to, from, except, desc) => {
25
25
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
26
26
  var Object_exports = {};
27
27
  __export(Object_exports, {
28
+ assignWithNonEnumerableProperties: () => assignWithNonEnumerableProperties,
29
+ cloneWithNonEnumerableProperties: () => cloneWithNonEnumerableProperties,
28
30
  deepEqual: () => deepEqual,
29
31
  getNestedPropertyValue: () => getNestedPropertyValue,
30
32
  getPrototypeOf: () => getPrototypeOf,
@@ -64,6 +66,9 @@ function nameof(name) {
64
66
  return name;
65
67
  }
66
68
  function getPrototypeOf(instance) {
69
+ if (instance === void 0 || instance === null) {
70
+ return instance;
71
+ }
67
72
  return Object.getPrototypeOf(instance);
68
73
  }
69
74
  function toJson(value, options = {}) {
@@ -114,8 +119,27 @@ function setNestedPropertyValue(obj, path, value) {
114
119
  }
115
120
  node[lastKey] = value;
116
121
  }
122
+ function cloneWithNonEnumerableProperties(obj) {
123
+ return Object.create(getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));
124
+ }
125
+ function assignWithNonEnumerableProperties(target, ...sources) {
126
+ return _assignWithNonEnumerableProperties(target, ...sources);
127
+ }
128
+ function _assignWithNonEnumerableProperties(target, ...sources) {
129
+ for (const source of sources) {
130
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
131
+ }
132
+ const sourcePrototypes = sources.map((source) => getPrototypeOf(source)).filter((proto) => !!proto);
133
+ if (sourcePrototypes.length > 0) {
134
+ const targetPrototype = _assignWithNonEnumerableProperties({}, getPrototypeOf(target), ...sourcePrototypes);
135
+ Object.setPrototypeOf(target, targetPrototype);
136
+ }
137
+ return target;
138
+ }
117
139
  // Annotate the CommonJS export names for ESM import in node:
118
140
  0 && (module.exports = {
141
+ assignWithNonEnumerableProperties,
142
+ cloneWithNonEnumerableProperties,
119
143
  deepEqual,
120
144
  getNestedPropertyValue,
121
145
  getPrototypeOf,
@@ -123,4 +147,4 @@ function setNestedPropertyValue(obj, path, value) {
123
147
  setNestedPropertyValue,
124
148
  toJson
125
149
  });
126
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL09iamVjdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsidmFyIF9fcHJvY2VzcyA9IGdsb2JhbFRoaXNbJ3Byb2Nlc3MnXSA/PyB7XG4gIFwiY3dkXCI6ICgpPT5cIi9cIixcbiAgXCJlbnZcIjoge30sXG4gIFwicGxhdGZvcm1cIjogXCJhbmRyb2lkXCJcbn07XG4vKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBPYmplY3RcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBPYmplY3RzLlxuICovXG5cbmltcG9ydCB7IHRocm93RXhwcmVzc2lvbiB9IGZyb20gJy4vRXJyb3IudHMnO1xuXG4vKipcbiAqIENvbXBhcmVzIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGRlZXBseSBlcXVhbC5cbiAqXG4gKiBAcGFyYW0gYSAtIFRoZSBmaXJzdCB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIGIgLSBUaGUgc2Vjb25kIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZGVlcGx5IGVxdWFsLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZXBFcXVhbChhOiB1bmtub3duLCBiOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAodHlwZW9mIGEgIT09ICdvYmplY3QnIHx8IHR5cGVvZiBiICE9PSAnb2JqZWN0JyB8fCBhID09PSBudWxsIHx8IGIgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBrZXlzQSA9IE9iamVjdC5rZXlzKGEpO1xuICBjb25zdCBrZXlzQiA9IE9iamVjdC5rZXlzKGIpO1xuXG4gIGlmIChrZXlzQS5sZW5ndGggIT09IGtleXNCLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGFSZWNvcmQgPSBhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBjb25zdCBiUmVjb3JkID0gYiBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzQSkge1xuICAgIGlmICgha2V5c0IuaW5jbHVkZXMoa2V5KSB8fCAhZGVlcEVxdWFsKGFSZWNvcmRba2V5XSwgYlJlY29yZFtrZXldKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgbmFtZSBvZiBhIHByb3BlcnR5IG9mIGEgZ2l2ZW4gdHlwZSBgVGAuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdCBjb250YWluaW5nIHRoZSBwcm9wZXJ0eS5cbiAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IGFzIGEgc3RyaW5nLlxuICogQHJldHVybnMgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmFtZW9mPFQ+KG5hbWU6IEV4dHJhY3Q8a2V5b2YgVCwgc3RyaW5nPik6IHN0cmluZyB7XG4gIHJldHVybiBuYW1lO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIHByb3RvdHlwZSBvZiB0aGUgc3BlY2lmaWVkIG9iamVjdC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0LlxuICogQHBhcmFtIGluc3RhbmNlIC0gVGhlIG9iamVjdCBpbnN0YW5jZSB0byByZXRyaWV2ZSB0aGUgcHJvdG90eXBlIG9mLlxuICogQHJldHVybnMgVGhlIHByb3RvdHlwZSBvZiB0aGUgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvdG90eXBlT2Y8VD4oaW5zdGFuY2U6IFQpOiBUIHtcbiAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihpbnN0YW5jZSkgYXMgVDtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBjb252ZXJ0aW5nIGFuIG9iamVjdCB0byBKU09OLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvSnNvbk9wdGlvbnMge1xuICAvKipcbiAgICogSWYgYHRydWVgLCBmdW5jdGlvbnMgd2l0aGluIHRoZSB2YWx1ZSB3aWxsIGJlIGhhbmRsZWQgYW5kIGluY2x1ZGVkIGluIHRoZSBKU09OIHN0cmluZy4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICovXG4gIHNob3VsZEhhbmRsZUZ1bmN0aW9ucz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGluZGVudGF0aW9uIG9mIHRoZSBKU09OIG91dHB1dC4gVGhpcyBjYW4gYmUgYSBudW1iZXIgb2Ygc3BhY2VzIG9yIGEgc3RyaW5nLiBEZWZhdWx0cyB0byBgMmAuXG4gICAqL1xuICBzcGFjZT86IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGdpdmVuIHZhbHVlIHRvIGEgSlNPTiBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGJlIGNvbnZlcnRlZCB0byBKU09OLiBUaGlzIGNhbiBiZSBvZiBhbnkgdHlwZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgY3VzdG9taXppbmcgdGhlIEpTT04gY29udmVyc2lvbiBwcm9jZXNzLlxuICogQHJldHVybnMgVGhlIEpTT04gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbnB1dCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbih2YWx1ZTogdW5rbm93biwgb3B0aW9uczogVG9Kc29uT3B0aW9ucyA9IHt9KTogc3RyaW5nIHtcbiAgY29uc3Qge1xuICAgIHNob3VsZEhhbmRsZUZ1bmN0aW9ucyA9IGZhbHNlLFxuICAgIHNwYWNlID0gMlxuICB9ID0gb3B0aW9ucztcbiAgaWYgKCFzaG91bGRIYW5kbGVGdW5jdGlvbnMpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUsIG51bGwsIHNwYWNlKTtcbiAgfVxuXG4gIGNvbnN0IGZ1bmN0aW9uVGV4dHM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3QgcmVwbGFjZXIgPSAoXzogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHVua25vd24gPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gZnVuY3Rpb25UZXh0cy5sZW5ndGg7XG4gICAgICBmdW5jdGlvblRleHRzLnB1c2godmFsdWUudG9TdHJpbmcoKSk7XG4gICAgICByZXR1cm4gYF9fRlVOQ1RJT05fJHtpbmRleC50b1N0cmluZygpfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xuXG4gIGxldCBqc29uID0gSlNPTi5zdHJpbmdpZnkodmFsdWUsIHJlcGxhY2VyLCBzcGFjZSk7XG4gIGpzb24gPSBqc29uLnJlcGxhY2VBbGwoL1wiX19GVU5DVElPTl8oXFxkKylcIi9nLCAoXywgaW5kZXhTdHI6IHN0cmluZykgPT4gZnVuY3Rpb25UZXh0c1twYXJzZUludChpbmRleFN0cildID8/IHRocm93RXhwcmVzc2lvbihuZXcgRXJyb3IoYEZ1bmN0aW9uIHdpdGggaW5kZXggJHtpbmRleFN0cn0gbm90IGZvdW5kYCkpKTtcbiAgcmV0dXJuIGpzb247XG59XG5cbi8qKlxuICogR2V0cyB0aGUgdmFsdWUgb2YgYSBuZXN0ZWQgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gZ2V0IHRoZSBuZXN0ZWQgcHJvcGVydHkgdmFsdWUgZnJvbS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gdGhlIG5lc3RlZCBwcm9wZXJ0eS5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSBvZiB0aGUgbmVzdGVkIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBwYXRoOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgbGV0IG5vZGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkID0gb2JqO1xuICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgaWYgKG5vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgbm9kZSA9IG5vZGVba2V5XSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIHZhbHVlIG9mIGEgbmVzdGVkIHByb3BlcnR5IGluIGFuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBzZXQgdGhlIG5lc3RlZCBwcm9wZXJ0eSB2YWx1ZSBpbi5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gdGhlIG5lc3RlZCBwcm9wZXJ0eS5cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXROZXN0ZWRQcm9wZXJ0eVZhbHVlKG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHBhdGg6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYFByb3BlcnR5IHBhdGggJHtwYXRofSBub3QgZm91bmRgKTtcbiAgbGV0IG5vZGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkID0gb2JqO1xuICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzLnNsaWNlKDAsIC0xKSkge1xuICAgIGlmIChub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICBub2RlID0gbm9kZVtrZXldIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgbGFzdEtleSA9IGtleXMuYXQoLTEpO1xuICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkIHx8IGxhc3RLZXkgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IGVycm9yO1xuICB9XG5cbiAgbm9kZVtsYXN0S2V5XSA9IHZhbHVlO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBVUEsbUJBQWdDO0FBVmhDLElBQUksWUFBWSxXQUFXLFNBQVMsS0FBSztBQUFBLEVBQ3ZDLE9BQU8sTUFBSTtBQUFBLEVBQ1gsT0FBTyxDQUFDO0FBQUEsRUFDUixZQUFZO0FBQ2Q7QUFlTyxTQUFTLFVBQVUsR0FBWSxHQUFxQjtBQUN6RCxNQUFJLE1BQU0sR0FBRztBQUNYLFdBQU87QUFBQSxFQUNUO0FBRUEsTUFBSSxPQUFPLE1BQU0sWUFBWSxPQUFPLE1BQU0sWUFBWSxNQUFNLFFBQVEsTUFBTSxNQUFNO0FBQzlFLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxRQUFRLE9BQU8sS0FBSyxDQUFDO0FBQzNCLFFBQU0sUUFBUSxPQUFPLEtBQUssQ0FBQztBQUUzQixNQUFJLE1BQU0sV0FBVyxNQUFNLFFBQVE7QUFDakMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLFVBQVU7QUFDaEIsUUFBTSxVQUFVO0FBRWhCLGFBQVcsT0FBTyxPQUFPO0FBQ3ZCLFFBQUksQ0FBQyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsVUFBVSxRQUFRLEdBQUcsR0FBRyxRQUFRLEdBQUcsQ0FBQyxHQUFHO0FBQ2xFLGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDtBQVNPLFNBQVMsT0FBVSxNQUF3QztBQUNoRSxTQUFPO0FBQ1Q7QUFTTyxTQUFTLGVBQWtCLFVBQWdCO0FBQ2hELFNBQU8sT0FBTyxlQUFlLFFBQVE7QUFDdkM7QUF1Qk8sU0FBUyxPQUFPLE9BQWdCLFVBQXlCLENBQUMsR0FBVztBQUMxRSxRQUFNO0FBQUEsSUFDSix3QkFBd0I7QUFBQSxJQUN4QixRQUFRO0FBQUEsRUFDVixJQUFJO0FBQ0osTUFBSSxDQUFDLHVCQUF1QjtBQUMxQixXQUFPLEtBQUssVUFBVSxPQUFPLE1BQU0sS0FBSztBQUFBLEVBQzFDO0FBRUEsUUFBTSxnQkFBMEIsQ0FBQztBQUVqQyxRQUFNLFdBQVcsQ0FBQyxHQUFXQSxXQUE0QjtBQUN2RCxRQUFJLE9BQU9BLFdBQVUsWUFBWTtBQUMvQixZQUFNLFFBQVEsY0FBYztBQUM1QixvQkFBYyxLQUFLQSxPQUFNLFNBQVMsQ0FBQztBQUNuQyxhQUFPLGNBQWMsTUFBTSxTQUFTLENBQUM7QUFBQSxJQUN2QztBQUVBLFdBQU9BO0FBQUEsRUFDVDtBQUVBLE1BQUksT0FBTyxLQUFLLFVBQVUsT0FBTyxVQUFVLEtBQUs7QUFDaEQsU0FBTyxLQUFLLFdBQVcsdUJBQXVCLENBQUMsR0FBRyxhQUFxQixjQUFjLFNBQVMsUUFBUSxDQUFDLFNBQUssOEJBQWdCLElBQUksTUFBTSx1QkFBdUIsUUFBUSxZQUFZLENBQUMsQ0FBQztBQUNuTCxTQUFPO0FBQ1Q7QUFTTyxTQUFTLHVCQUF1QixLQUE4QixNQUF1QjtBQUMxRixNQUFJLE9BQTRDO0FBQ2hELFFBQU0sT0FBTyxLQUFLLE1BQU0sR0FBRztBQUMzQixhQUFXLE9BQU8sTUFBTTtBQUN0QixRQUFJLFNBQVMsUUFBVztBQUN0QixhQUFPO0FBQUEsSUFDVDtBQUNBLFdBQU8sS0FBSyxHQUFHO0FBQUEsRUFDakI7QUFFQSxTQUFPO0FBQ1Q7QUFTTyxTQUFTLHVCQUF1QixLQUE4QixNQUFjLE9BQXNCO0FBQ3ZHLFFBQU0sUUFBUSxJQUFJLE1BQU0saUJBQWlCLElBQUksWUFBWTtBQUN6RCxNQUFJLE9BQTRDO0FBQ2hELFFBQU0sT0FBTyxLQUFLLE1BQU0sR0FBRztBQUMzQixhQUFXLE9BQU8sS0FBSyxNQUFNLEdBQUcsRUFBRSxHQUFHO0FBQ25DLFFBQUksU0FBUyxRQUFXO0FBQ3RCLFlBQU07QUFBQSxJQUNSO0FBQ0EsV0FBTyxLQUFLLEdBQUc7QUFBQSxFQUNqQjtBQUVBLFFBQU0sVUFBVSxLQUFLLEdBQUcsRUFBRTtBQUMxQixNQUFJLFNBQVMsVUFBYSxZQUFZLFFBQVc7QUFDL0MsVUFBTTtBQUFBLEVBQ1I7QUFFQSxPQUFLLE9BQU8sSUFBSTtBQUNsQjsiLAogICJuYW1lcyI6IFsidmFsdWUiXQp9Cg==
150
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL09iamVjdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsidmFyIF9fcHJvY2VzcyA9IGdsb2JhbFRoaXNbJ3Byb2Nlc3MnXSA/PyB7XG4gIFwiY3dkXCI6ICgpPT5cIi9cIixcbiAgXCJlbnZcIjoge30sXG4gIFwicGxhdGZvcm1cIjogXCJhbmRyb2lkXCJcbn07XG4vKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBPYmplY3RcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBPYmplY3RzLlxuICovXG5cbmltcG9ydCB7IHRocm93RXhwcmVzc2lvbiB9IGZyb20gJy4vRXJyb3IudHMnO1xuXG4vKipcbiAqIENvbXBhcmVzIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGRlZXBseSBlcXVhbC5cbiAqXG4gKiBAcGFyYW0gYSAtIFRoZSBmaXJzdCB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIGIgLSBUaGUgc2Vjb25kIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZGVlcGx5IGVxdWFsLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZXBFcXVhbChhOiB1bmtub3duLCBiOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAodHlwZW9mIGEgIT09ICdvYmplY3QnIHx8IHR5cGVvZiBiICE9PSAnb2JqZWN0JyB8fCBhID09PSBudWxsIHx8IGIgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBrZXlzQSA9IE9iamVjdC5rZXlzKGEpO1xuICBjb25zdCBrZXlzQiA9IE9iamVjdC5rZXlzKGIpO1xuXG4gIGlmIChrZXlzQS5sZW5ndGggIT09IGtleXNCLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGFSZWNvcmQgPSBhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBjb25zdCBiUmVjb3JkID0gYiBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzQSkge1xuICAgIGlmICgha2V5c0IuaW5jbHVkZXMoa2V5KSB8fCAhZGVlcEVxdWFsKGFSZWNvcmRba2V5XSwgYlJlY29yZFtrZXldKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgbmFtZSBvZiBhIHByb3BlcnR5IG9mIGEgZ2l2ZW4gdHlwZSBgVGAuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdCBjb250YWluaW5nIHRoZSBwcm9wZXJ0eS5cbiAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IGFzIGEgc3RyaW5nLlxuICogQHJldHVybnMgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmFtZW9mPFQ+KG5hbWU6IEV4dHJhY3Q8a2V5b2YgVCwgc3RyaW5nPik6IHN0cmluZyB7XG4gIHJldHVybiBuYW1lO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIHByb3RvdHlwZSBvZiB0aGUgc3BlY2lmaWVkIG9iamVjdC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0LlxuICogQHBhcmFtIGluc3RhbmNlIC0gVGhlIG9iamVjdCBpbnN0YW5jZSB0byByZXRyaWV2ZSB0aGUgcHJvdG90eXBlIG9mLlxuICogQHJldHVybnMgVGhlIHByb3RvdHlwZSBvZiB0aGUgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvdG90eXBlT2Y8VD4oaW5zdGFuY2U6IFQpOiBUIHtcbiAgaWYgKGluc3RhbmNlID09PSB1bmRlZmluZWQgfHwgaW5zdGFuY2UgPT09IG51bGwpIHtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihpbnN0YW5jZSkgYXMgVDtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBjb252ZXJ0aW5nIGFuIG9iamVjdCB0byBKU09OLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvSnNvbk9wdGlvbnMge1xuICAvKipcbiAgICogSWYgYHRydWVgLCBmdW5jdGlvbnMgd2l0aGluIHRoZSB2YWx1ZSB3aWxsIGJlIGhhbmRsZWQgYW5kIGluY2x1ZGVkIGluIHRoZSBKU09OIHN0cmluZy4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICovXG4gIHNob3VsZEhhbmRsZUZ1bmN0aW9ucz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGluZGVudGF0aW9uIG9mIHRoZSBKU09OIG91dHB1dC4gVGhpcyBjYW4gYmUgYSBudW1iZXIgb2Ygc3BhY2VzIG9yIGEgc3RyaW5nLiBEZWZhdWx0cyB0byBgMmAuXG4gICAqL1xuICBzcGFjZT86IHN0cmluZyB8IG51bWJlciB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGdpdmVuIHZhbHVlIHRvIGEgSlNPTiBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGJlIGNvbnZlcnRlZCB0byBKU09OLiBUaGlzIGNhbiBiZSBvZiBhbnkgdHlwZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgY3VzdG9taXppbmcgdGhlIEpTT04gY29udmVyc2lvbiBwcm9jZXNzLlxuICogQHJldHVybnMgVGhlIEpTT04gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbnB1dCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbih2YWx1ZTogdW5rbm93biwgb3B0aW9uczogVG9Kc29uT3B0aW9ucyA9IHt9KTogc3RyaW5nIHtcbiAgY29uc3Qge1xuICAgIHNob3VsZEhhbmRsZUZ1bmN0aW9ucyA9IGZhbHNlLFxuICAgIHNwYWNlID0gMlxuICB9ID0gb3B0aW9ucztcbiAgaWYgKCFzaG91bGRIYW5kbGVGdW5jdGlvbnMpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUsIG51bGwsIHNwYWNlKTtcbiAgfVxuXG4gIGNvbnN0IGZ1bmN0aW9uVGV4dHM6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3QgcmVwbGFjZXIgPSAoXzogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHVua25vd24gPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gZnVuY3Rpb25UZXh0cy5sZW5ndGg7XG4gICAgICBmdW5jdGlvblRleHRzLnB1c2godmFsdWUudG9TdHJpbmcoKSk7XG4gICAgICByZXR1cm4gYF9fRlVOQ1RJT05fJHtpbmRleC50b1N0cmluZygpfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xuXG4gIGxldCBqc29uID0gSlNPTi5zdHJpbmdpZnkodmFsdWUsIHJlcGxhY2VyLCBzcGFjZSk7XG4gIGpzb24gPSBqc29uLnJlcGxhY2VBbGwoL1wiX19GVU5DVElPTl8oXFxkKylcIi9nLCAoXywgaW5kZXhTdHI6IHN0cmluZykgPT4gZnVuY3Rpb25UZXh0c1twYXJzZUludChpbmRleFN0cildID8/IHRocm93RXhwcmVzc2lvbihuZXcgRXJyb3IoYEZ1bmN0aW9uIHdpdGggaW5kZXggJHtpbmRleFN0cn0gbm90IGZvdW5kYCkpKTtcbiAgcmV0dXJuIGpzb247XG59XG5cbi8qKlxuICogR2V0cyB0aGUgdmFsdWUgb2YgYSBuZXN0ZWQgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gZ2V0IHRoZSBuZXN0ZWQgcHJvcGVydHkgdmFsdWUgZnJvbS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gdGhlIG5lc3RlZCBwcm9wZXJ0eS5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSBvZiB0aGUgbmVzdGVkIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBwYXRoOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgbGV0IG5vZGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkID0gb2JqO1xuICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgaWYgKG5vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgbm9kZSA9IG5vZGVba2V5XSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIHZhbHVlIG9mIGEgbmVzdGVkIHByb3BlcnR5IGluIGFuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBzZXQgdGhlIG5lc3RlZCBwcm9wZXJ0eSB2YWx1ZSBpbi5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gdGhlIG5lc3RlZCBwcm9wZXJ0eS5cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXROZXN0ZWRQcm9wZXJ0eVZhbHVlKG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHBhdGg6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYFByb3BlcnR5IHBhdGggJHtwYXRofSBub3QgZm91bmRgKTtcbiAgbGV0IG5vZGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkID0gb2JqO1xuICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzLnNsaWNlKDAsIC0xKSkge1xuICAgIGlmIChub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICBub2RlID0gbm9kZVtrZXldIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgbGFzdEtleSA9IGtleXMuYXQoLTEpO1xuICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkIHx8IGxhc3RLZXkgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IGVycm9yO1xuICB9XG5cbiAgbm9kZVtsYXN0S2V5XSA9IHZhbHVlO1xufVxuXG4vKipcbiAqIENsb25lcyBhbiBvYmplY3QsIGluY2x1ZGluZyBub24tZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHJldHVybnMgQSBuZXcgb2JqZWN0IHdpdGggdGhlIHNhbWUgcHJvcGVydGllcyBhcyB0aGUgb3JpZ2luYWwgb2JqZWN0LCBpbmNsdWRpbmcgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsb25lV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzPFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogVCk6IFQge1xuICByZXR1cm4gT2JqZWN0LmNyZWF0ZShnZXRQcm90b3R5cGVPZihvYmopLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhvYmopKSBhcyBUO1xufVxuXG4vKipcbiAqIEFzc2lnbnMgcHJvcGVydGllcyBmcm9tIG9uZSBvciBtb3JlIHNvdXJjZSBvYmplY3RzIHRvIGEgdGFyZ2V0IG9iamVjdCwgaW5jbHVkaW5nIG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIHRhcmdldCAtIFRoZSB0YXJnZXQgb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHNvdXJjZSAtIFRoZSBzb3VyY2Ugb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgdGFyZ2V0IG9iamVjdCB3aXRoIHRoZSBhc3NpZ25lZCBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzPFQgZXh0ZW5kcyBvYmplY3QsIFU+KHRhcmdldDogVCwgc291cmNlOiBVKTogVCAmIFU7XG5cbi8qKlxuICogQHBhcmFtIHRhcmdldCAtIFRoZSB0YXJnZXQgb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHNvdXJjZTEgLSBUaGUgZmlyc3Qgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHBhcmFtIHNvdXJjZTIgLSBUaGUgc2Vjb25kIHNvdXJjZSBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSB0YXJnZXQgb2JqZWN0IHdpdGggdGhlIGFzc2lnbmVkIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXM8VCBleHRlbmRzIG9iamVjdCwgVSwgVj4odGFyZ2V0OiBULCBzb3VyY2UxOiBVLCBzb3VyY2UyOiBWKTogVCAmIFUgJiBWO1xuXG4vKipcbiAqIEFzc2lnbnMgcHJvcGVydGllcyBmcm9tIG9uZSBvciBtb3JlIHNvdXJjZSBvYmplY3RzIHRvIGEgdGFyZ2V0IG9iamVjdCwgaW5jbHVkaW5nIG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIHRhcmdldCAtIFRoZSB0YXJnZXQgb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHNvdXJjZTEgLSBUaGUgZmlyc3Qgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHBhcmFtIHNvdXJjZTIgLSBUaGUgc2Vjb25kIHNvdXJjZSBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSBzb3VyY2UzIC0gVGhlIHRoaXJkIHNvdXJjZSBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSB0YXJnZXQgb2JqZWN0IHdpdGggdGhlIGFzc2lnbmVkIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXM8VCBleHRlbmRzIG9iamVjdCwgVSwgViwgVz4odGFyZ2V0OiBULCBzb3VyY2UxOiBVLCBzb3VyY2UyOiBWLCBzb3VyY2UzOiBXKTogVCAmIFUgJiBWICYgVztcblxuLyoqXG4gKiBBc3NpZ25zIHByb3BlcnRpZXMgZnJvbSBvbmUgb3IgbW9yZSBzb3VyY2Ugb2JqZWN0cyB0byBhIHRhcmdldCBvYmplY3QsIGluY2x1ZGluZyBub24tZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgLSBUaGUgdGFyZ2V0IG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyB0by5cbiAqIEBwYXJhbSBzb3VyY2VzIC0gVGhlIHNvdXJjZSBvYmplY3RzIHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgdGFyZ2V0IG9iamVjdCB3aXRoIHRoZSBhc3NpZ25lZCBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzKHRhcmdldDogb2JqZWN0LCAuLi5zb3VyY2VzOiBvYmplY3RbXSk6IG9iamVjdCB7XG4gIHJldHVybiBfYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzKHRhcmdldCwgLi4uc291cmNlcyk7XG59XG5cbmZ1bmN0aW9uIF9hc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXModGFyZ2V0OiBvYmplY3QsIC4uLnNvdXJjZXM6IG9iamVjdFtdKTogb2JqZWN0IHtcbiAgZm9yIChjb25zdCBzb3VyY2Ugb2Ygc291cmNlcykge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7XG4gIH1cblxuICBjb25zdCBzb3VyY2VQcm90b3R5cGVzID0gKHNvdXJjZXMubWFwKChzb3VyY2UpID0+IGdldFByb3RvdHlwZU9mKHNvdXJjZSkpIGFzIChvYmplY3QgfCBudWxsKVtdKS5maWx0ZXI8b2JqZWN0IHwgbnVsbD4oKHByb3RvKSA9PiAhIXByb3RvKSBhcyBvYmplY3RbXTtcblxuICBpZiAoc291cmNlUHJvdG90eXBlcy5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgdGFyZ2V0UHJvdG90eXBlID0gX2Fzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllcyh7fSwgZ2V0UHJvdG90eXBlT2YodGFyZ2V0KSwgLi4uc291cmNlUHJvdG90eXBlcyk7XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRhcmdldCwgdGFyZ2V0UHJvdG90eXBlKTtcbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBVUEsbUJBQWdDO0FBVmhDLElBQUksWUFBWSxXQUFXLFNBQVMsS0FBSztBQUFBLEVBQ3ZDLE9BQU8sTUFBSTtBQUFBLEVBQ1gsT0FBTyxDQUFDO0FBQUEsRUFDUixZQUFZO0FBQ2Q7QUFlTyxTQUFTLFVBQVUsR0FBWSxHQUFxQjtBQUN6RCxNQUFJLE1BQU0sR0FBRztBQUNYLFdBQU87QUFBQSxFQUNUO0FBRUEsTUFBSSxPQUFPLE1BQU0sWUFBWSxPQUFPLE1BQU0sWUFBWSxNQUFNLFFBQVEsTUFBTSxNQUFNO0FBQzlFLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxRQUFRLE9BQU8sS0FBSyxDQUFDO0FBQzNCLFFBQU0sUUFBUSxPQUFPLEtBQUssQ0FBQztBQUUzQixNQUFJLE1BQU0sV0FBVyxNQUFNLFFBQVE7QUFDakMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLFVBQVU7QUFDaEIsUUFBTSxVQUFVO0FBRWhCLGFBQVcsT0FBTyxPQUFPO0FBQ3ZCLFFBQUksQ0FBQyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsVUFBVSxRQUFRLEdBQUcsR0FBRyxRQUFRLEdBQUcsQ0FBQyxHQUFHO0FBQ2xFLGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDtBQVNPLFNBQVMsT0FBVSxNQUF3QztBQUNoRSxTQUFPO0FBQ1Q7QUFTTyxTQUFTLGVBQWtCLFVBQWdCO0FBQ2hELE1BQUksYUFBYSxVQUFhLGFBQWEsTUFBTTtBQUMvQyxXQUFPO0FBQUEsRUFDVDtBQUNBLFNBQU8sT0FBTyxlQUFlLFFBQVE7QUFDdkM7QUF1Qk8sU0FBUyxPQUFPLE9BQWdCLFVBQXlCLENBQUMsR0FBVztBQUMxRSxRQUFNO0FBQUEsSUFDSix3QkFBd0I7QUFBQSxJQUN4QixRQUFRO0FBQUEsRUFDVixJQUFJO0FBQ0osTUFBSSxDQUFDLHVCQUF1QjtBQUMxQixXQUFPLEtBQUssVUFBVSxPQUFPLE1BQU0sS0FBSztBQUFBLEVBQzFDO0FBRUEsUUFBTSxnQkFBMEIsQ0FBQztBQUVqQyxRQUFNLFdBQVcsQ0FBQyxHQUFXQSxXQUE0QjtBQUN2RCxRQUFJLE9BQU9BLFdBQVUsWUFBWTtBQUMvQixZQUFNLFFBQVEsY0FBYztBQUM1QixvQkFBYyxLQUFLQSxPQUFNLFNBQVMsQ0FBQztBQUNuQyxhQUFPLGNBQWMsTUFBTSxTQUFTLENBQUM7QUFBQSxJQUN2QztBQUVBLFdBQU9BO0FBQUEsRUFDVDtBQUVBLE1BQUksT0FBTyxLQUFLLFVBQVUsT0FBTyxVQUFVLEtBQUs7QUFDaEQsU0FBTyxLQUFLLFdBQVcsdUJBQXVCLENBQUMsR0FBRyxhQUFxQixjQUFjLFNBQVMsUUFBUSxDQUFDLFNBQUssOEJBQWdCLElBQUksTUFBTSx1QkFBdUIsUUFBUSxZQUFZLENBQUMsQ0FBQztBQUNuTCxTQUFPO0FBQ1Q7QUFTTyxTQUFTLHVCQUF1QixLQUE4QixNQUF1QjtBQUMxRixNQUFJLE9BQTRDO0FBQ2hELFFBQU0sT0FBTyxLQUFLLE1BQU0sR0FBRztBQUMzQixhQUFXLE9BQU8sTUFBTTtBQUN0QixRQUFJLFNBQVMsUUFBVztBQUN0QixhQUFPO0FBQUEsSUFDVDtBQUNBLFdBQU8sS0FBSyxHQUFHO0FBQUEsRUFDakI7QUFFQSxTQUFPO0FBQ1Q7QUFTTyxTQUFTLHVCQUF1QixLQUE4QixNQUFjLE9BQXNCO0FBQ3ZHLFFBQU0sUUFBUSxJQUFJLE1BQU0saUJBQWlCLElBQUksWUFBWTtBQUN6RCxNQUFJLE9BQTRDO0FBQ2hELFFBQU0sT0FBTyxLQUFLLE1BQU0sR0FBRztBQUMzQixhQUFXLE9BQU8sS0FBSyxNQUFNLEdBQUcsRUFBRSxHQUFHO0FBQ25DLFFBQUksU0FBUyxRQUFXO0FBQ3RCLFlBQU07QUFBQSxJQUNSO0FBQ0EsV0FBTyxLQUFLLEdBQUc7QUFBQSxFQUNqQjtBQUVBLFFBQU0sVUFBVSxLQUFLLEdBQUcsRUFBRTtBQUMxQixNQUFJLFNBQVMsVUFBYSxZQUFZLFFBQVc7QUFDL0MsVUFBTTtBQUFBLEVBQ1I7QUFFQSxPQUFLLE9BQU8sSUFBSTtBQUNsQjtBQVFPLFNBQVMsaUNBQW1ELEtBQVc7QUFDNUUsU0FBTyxPQUFPLE9BQU8sZUFBZSxHQUFHLEdBQUcsT0FBTywwQkFBMEIsR0FBRyxDQUFDO0FBQ2pGO0FBcUNPLFNBQVMsa0NBQWtDLFdBQW1CLFNBQTJCO0FBQzlGLFNBQU8sbUNBQW1DLFFBQVEsR0FBRyxPQUFPO0FBQzlEO0FBRUEsU0FBUyxtQ0FBbUMsV0FBbUIsU0FBMkI7QUFDeEYsYUFBVyxVQUFVLFNBQVM7QUFDNUIsV0FBTyxpQkFBaUIsUUFBUSxPQUFPLDBCQUEwQixNQUFNLENBQUM7QUFBQSxFQUMxRTtBQUVBLFFBQU0sbUJBQW9CLFFBQVEsSUFBSSxDQUFDLFdBQVcsZUFBZSxNQUFNLENBQUMsRUFBd0IsT0FBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLO0FBRXhJLE1BQUksaUJBQWlCLFNBQVMsR0FBRztBQUMvQixVQUFNLGtCQUFrQixtQ0FBbUMsQ0FBQyxHQUFHLGVBQWUsTUFBTSxHQUFHLEdBQUcsZ0JBQWdCO0FBQzFHLFdBQU8sZUFBZSxRQUFRLGVBQWU7QUFBQSxFQUMvQztBQUVBLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFsidmFsdWUiXQp9Cg==
@@ -63,3 +63,35 @@ export declare function getNestedPropertyValue(obj: Record<string, unknown>, pat
63
63
  * @param value - The value to set.
64
64
  */
65
65
  export declare function setNestedPropertyValue(obj: Record<string, unknown>, path: string, value: unknown): void;
66
+ /**
67
+ * Clones an object, including non-enumerable properties.
68
+ *
69
+ * @param obj - The object to clone.
70
+ * @returns A new object with the same properties as the original object, including non-enumerable properties.
71
+ */
72
+ export declare function cloneWithNonEnumerableProperties<T extends object>(obj: T): T;
73
+ /**
74
+ * Assigns properties from one or more source objects to a target object, including non-enumerable properties.
75
+ *
76
+ * @param target - The target object to assign properties to.
77
+ * @param source - The source object to assign properties from.
78
+ * @returns The target object with the assigned properties.
79
+ */
80
+ export declare function assignWithNonEnumerableProperties<T extends object, U>(target: T, source: U): T & U;
81
+ /**
82
+ * @param target - The target object to assign properties to.
83
+ * @param source1 - The first source object to assign properties from.
84
+ * @param source2 - The second source object to assign properties from.
85
+ * @returns The target object with the assigned properties.
86
+ */
87
+ export declare function assignWithNonEnumerableProperties<T extends object, U, V>(target: T, source1: U, source2: V): T & U & V;
88
+ /**
89
+ * Assigns properties from one or more source objects to a target object, including non-enumerable properties.
90
+ *
91
+ * @param target - The target object to assign properties to.
92
+ * @param source1 - The first source object to assign properties from.
93
+ * @param source2 - The second source object to assign properties from.
94
+ * @param source3 - The third source object to assign properties from.
95
+ * @returns The target object with the assigned properties.
96
+ */
97
+ export declare function assignWithNonEnumerableProperties<T extends object, U, V, W>(target: T, source1: U, source2: V, source3: W): T & U & V & W;
@@ -40,6 +40,7 @@ __export(src_exports, {
40
40
  DocumentFragment: () => DocumentFragment,
41
41
  Error: () => Error2,
42
42
  Function: () => Function,
43
+ HTMLElement: () => HTMLElement,
43
44
  Object: () => Object2,
44
45
  Path: () => Path,
45
46
  RegExp: () => RegExp,
@@ -57,6 +58,7 @@ var Blob = __toESM(require('./Blob.cjs'), 1);
57
58
  var DocumentFragment = __toESM(require('./DocumentFragment.cjs'), 1);
58
59
  var Error2 = __toESM(require('./Error.cjs'), 1);
59
60
  var Function = __toESM(require('./Function.cjs'), 1);
61
+ var HTMLElement = __toESM(require('./HTMLElement.cjs'), 1);
60
62
  var Object2 = __toESM(require('./Object.cjs'), 1);
61
63
  var obsidian = __toESM(require('./obsidian/index.cjs'), 1);
62
64
  var Path = __toESM(require('./Path.cjs'), 1);
@@ -72,6 +74,7 @@ var ValueProvider = __toESM(require('./ValueProvider.cjs'), 1);
72
74
  DocumentFragment,
73
75
  Error,
74
76
  Function,
77
+ HTMLElement,
75
78
  Object,
76
79
  Path,
77
80
  RegExp,
@@ -82,4 +85,4 @@ var ValueProvider = __toESM(require('./ValueProvider.cjs'), 1);
82
85
  scripts,
83
86
  url
84
87
  });
85
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgX3R5cGVzIGZyb20gJy4vQHR5cGVzLnRzJztcbmV4cG9ydCAqIGFzIEFzeW5jIGZyb20gJy4vQXN5bmMudHMnO1xuZXhwb3J0ICogYXMgQmxvYiBmcm9tICcuL0Jsb2IudHMnO1xuZXhwb3J0ICogYXMgRG9jdW1lbnRGcmFnbWVudCBmcm9tICcuL0RvY3VtZW50RnJhZ21lbnQudHMnO1xuZXhwb3J0ICogYXMgRXJyb3IgZnJvbSAnLi9FcnJvci50cyc7XG5leHBvcnQgKiBhcyBGdW5jdGlvbiBmcm9tICcuL0Z1bmN0aW9uLnRzJztcbmV4cG9ydCAqIGFzIE9iamVjdCBmcm9tICcuL09iamVjdC50cyc7XG5leHBvcnQgKiBhcyBvYnNpZGlhbiBmcm9tICcuL29ic2lkaWFuL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzIFBhdGggZnJvbSAnLi9QYXRoLnRzJztcbmV4cG9ydCAqIGFzIFJlZ0V4cCBmcm9tICcuL1JlZ0V4cC50cyc7XG5leHBvcnQgKiBhcyBzY3JpcHRzIGZyb20gJy4vc2NyaXB0cy9pbmRleC50cyc7XG5leHBvcnQgKiBhcyBTdHJpbmcgZnJvbSAnLi9TdHJpbmcudHMnO1xuZXhwb3J0ICogYXMgdXJsIGZyb20gJy4vdXJsLnRzJztcbmV4cG9ydCAqIGFzIFZhbHVlUHJvdmlkZXIgZnJvbSAnLi9WYWx1ZVByb3ZpZGVyLnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGVBQUFBO0FBQUEsRUFBQTtBQUFBLGdCQUFBQztBQUFBLEVBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQSxhQUF3QjtBQUN4QixZQUF1QjtBQUN2QixXQUFzQjtBQUN0Qix1QkFBa0M7QUFDbEMsSUFBQUQsU0FBdUI7QUFDdkIsZUFBMEI7QUFDMUIsSUFBQUMsVUFBd0I7QUFDeEIsZUFBMEI7QUFDMUIsV0FBc0I7QUFDdEIsYUFBd0I7QUFDeEIsY0FBeUI7QUFDekIsYUFBd0I7QUFDeEIsVUFBcUI7QUFDckIsb0JBQStCOyIsCiAgIm5hbWVzIjogWyJFcnJvciIsICJPYmplY3QiXQp9Cg==
88
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgX3R5cGVzIGZyb20gJy4vQHR5cGVzLnRzJztcbmV4cG9ydCAqIGFzIEFzeW5jIGZyb20gJy4vQXN5bmMudHMnO1xuZXhwb3J0ICogYXMgQmxvYiBmcm9tICcuL0Jsb2IudHMnO1xuZXhwb3J0ICogYXMgRG9jdW1lbnRGcmFnbWVudCBmcm9tICcuL0RvY3VtZW50RnJhZ21lbnQudHMnO1xuZXhwb3J0ICogYXMgRXJyb3IgZnJvbSAnLi9FcnJvci50cyc7XG5leHBvcnQgKiBhcyBGdW5jdGlvbiBmcm9tICcuL0Z1bmN0aW9uLnRzJztcbmV4cG9ydCAqIGFzIEhUTUxFbGVtZW50IGZyb20gJy4vSFRNTEVsZW1lbnQudHMnO1xuZXhwb3J0ICogYXMgT2JqZWN0IGZyb20gJy4vT2JqZWN0LnRzJztcbmV4cG9ydCAqIGFzIG9ic2lkaWFuIGZyb20gJy4vb2JzaWRpYW4vaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgUGF0aCBmcm9tICcuL1BhdGgudHMnO1xuZXhwb3J0ICogYXMgUmVnRXhwIGZyb20gJy4vUmVnRXhwLnRzJztcbmV4cG9ydCAqIGFzIHNjcmlwdHMgZnJvbSAnLi9zY3JpcHRzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzIFN0cmluZyBmcm9tICcuL1N0cmluZy50cyc7XG5leHBvcnQgKiBhcyB1cmwgZnJvbSAnLi91cmwudHMnO1xuZXhwb3J0ICogYXMgVmFsdWVQcm92aWRlciBmcm9tICcuL1ZhbHVlUHJvdmlkZXIudHMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsZUFBQUE7QUFBQSxFQUFBO0FBQUE7QUFBQSxnQkFBQUM7QUFBQSxFQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUEsYUFBd0I7QUFDeEIsWUFBdUI7QUFDdkIsV0FBc0I7QUFDdEIsdUJBQWtDO0FBQ2xDLElBQUFELFNBQXVCO0FBQ3ZCLGVBQTBCO0FBQzFCLGtCQUE2QjtBQUM3QixJQUFBQyxVQUF3QjtBQUN4QixlQUEwQjtBQUMxQixXQUFzQjtBQUN0QixhQUF3QjtBQUN4QixjQUF5QjtBQUN6QixhQUF3QjtBQUN4QixVQUFxQjtBQUNyQixvQkFBK0I7IiwKICAibmFtZXMiOiBbIkVycm9yIiwgIk9iamVjdCJdCn0K
@@ -4,6 +4,7 @@ export * as Blob from './Blob.ts';
4
4
  export * as DocumentFragment from './DocumentFragment.ts';
5
5
  export * as Error from './Error.ts';
6
6
  export * as Function from './Function.ts';
7
+ export * as HTMLElement from './HTMLElement.ts';
7
8
  export * as Object from './Object.ts';
8
9
  export * as obsidian from './obsidian/index.ts';
9
10
  export * as Path from './Path.ts';
@@ -25,51 +25,76 @@ var __copyProps = (to, from, except, desc) => {
25
25
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
26
26
  var ValueComponent_exports = {};
27
27
  __export(ValueComponent_exports, {
28
- bindValueComponent: () => bindValueComponent
28
+ extend: () => extend
29
29
  });
30
30
  module.exports = __toCommonJS(ValueComponent_exports);
31
31
  var import_obsidian = require('obsidian');
32
- function bindValueComponent(valueComponent, plugin, property, options) {
33
- const DEFAULT_OPTIONS = {
34
- autoSave: true,
35
- pluginSettingsToComponentValueConverter: (value) => value,
36
- componentToPluginSettingsValueConverter: (value) => value
37
- };
38
- const optionsExt = { ...DEFAULT_OPTIONS, ...options };
39
- const pluginExt = plugin;
40
- const uiComponentExt = valueComponent;
41
- const pluginSettingsFn = () => optionsExt.pluginSettings ?? pluginExt.settingsCopy;
42
- uiComponentExt.setValue(optionsExt.pluginSettingsToComponentValueConverter(pluginSettingsFn()[property])).onChange(async (uiValue) => {
43
- if (!validateComponent(uiValue)) {
44
- return;
45
- }
46
- const pluginSettings = pluginSettingsFn();
47
- pluginSettings[property] = optionsExt.componentToPluginSettingsValueConverter(uiValue);
48
- if (optionsExt.autoSave) {
49
- await pluginExt.saveSettings(pluginSettings);
32
+ var import_Object = require('../../Object.cjs');
33
+ class ValueComponentEx {
34
+ constructor(valueComponent) {
35
+ this.valueComponent = valueComponent;
36
+ }
37
+ /**
38
+ * Returns the ValueComponent with extended functionality.
39
+ */
40
+ asExtended() {
41
+ return (0, import_Object.assignWithNonEnumerableProperties)({}, this.valueComponent, this);
42
+ }
43
+ /**
44
+ * Binds the ValueComponent to a property in the plugin settings.
45
+ *
46
+ * @typeParam Plugin - The type of the plugin that extends `PluginBase`.
47
+ * @typeParam Property - The key of the plugin setting that the component is bound to.
48
+ * @typeParam PluginSettings - The type of the plugin settings object.
49
+ * @param plugin - The plugin.
50
+ * @param property - The property key in `PluginSettings` to bind to the UI component.
51
+ * @param options - Configuration options.
52
+ * @returns The `ValueComponent` instance that was bound to the property.
53
+ */
54
+ bind(plugin, property, options) {
55
+ const DEFAULT_OPTIONS = {
56
+ autoSave: true,
57
+ pluginSettingsToComponentValueConverter: (value) => value,
58
+ componentToPluginSettingsValueConverter: (value) => value
59
+ };
60
+ const optionsExt = { ...DEFAULT_OPTIONS, ...options };
61
+ const pluginExt = plugin;
62
+ const pluginSettingsFn = () => optionsExt.pluginSettings ?? pluginExt.settingsCopy;
63
+ this.valueComponent.setValue(optionsExt.pluginSettingsToComponentValueConverter(pluginSettingsFn()[property])).onChange(async (uiValue) => {
64
+ if (!this.validate(optionsExt.valueValidator, uiValue)) {
65
+ return;
66
+ }
67
+ const pluginSettings = pluginSettingsFn();
68
+ pluginSettings[property] = optionsExt.componentToPluginSettingsValueConverter(uiValue);
69
+ if (optionsExt.autoSave) {
70
+ await pluginExt.saveSettings(pluginSettings);
71
+ }
72
+ await optionsExt.onChanged?.();
73
+ });
74
+ const validatorElement = getValidatorElement(this.valueComponent);
75
+ if (validatorElement) {
76
+ validatorElement.addEventListener("focus", () => this.validate(optionsExt.valueValidator));
77
+ validatorElement.addEventListener("blur", () => this.validate(optionsExt.valueValidator));
50
78
  }
51
- await optionsExt.onChanged?.();
52
- });
53
- const validatorElement = getValidatorElement(valueComponent);
54
- if (validatorElement) {
55
- validatorElement.addEventListener("focus", () => validateComponent());
56
- validatorElement.addEventListener("blur", () => validateComponent());
79
+ return this.asExtended();
57
80
  }
58
- return valueComponent;
59
- function validateComponent(uiValue) {
60
- if (!optionsExt.valueValidator) {
81
+ validate(valueValidator, uiValue) {
82
+ if (!valueValidator) {
61
83
  return true;
62
84
  }
63
- uiValue ??= uiComponentExt.getValue();
64
- const errorMessage = optionsExt.valueValidator(uiValue);
65
- const validatorElement2 = getValidatorElement(valueComponent);
66
- if (validatorElement2) {
67
- validatorElement2.setCustomValidity(errorMessage ?? "");
68
- validatorElement2.reportValidity();
85
+ uiValue ??= this.valueComponent.getValue();
86
+ const errorMessage = valueValidator(uiValue);
87
+ const validatorElement = getValidatorElement(this.valueComponent);
88
+ if (validatorElement) {
89
+ validatorElement.setCustomValidity(errorMessage ?? "");
90
+ validatorElement.reportValidity();
69
91
  }
70
92
  return !errorMessage;
71
93
  }
72
94
  }
95
+ function extend(valueComponent) {
96
+ return new ValueComponentEx(valueComponent).asExtended();
97
+ }
73
98
  function getValidatorElement(valueComponent) {
74
99
  if (valueComponent instanceof import_obsidian.DropdownComponent) {
75
100
  return valueComponent.selectEl;
@@ -87,6 +112,6 @@ function getValidatorElement(valueComponent) {
87
112
  }
88
113
  // Annotate the CommonJS export names for ESM import in node:
89
114
  0 && (module.exports = {
90
- bindValueComponent
115
+ extend
91
116
  });
92
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9WYWx1ZUNvbXBvbmVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHtcbiAgRHJvcGRvd25Db21wb25lbnQsXG4gIFNsaWRlckNvbXBvbmVudCxcbiAgVGV4dEFyZWFDb21wb25lbnQsXG4gIFRleHRDb21wb25lbnRcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IEtleXNNYXRjaGluZyB9IGZyb20gJy4uLy4uL0B0eXBlcy50cyc7XG5pbXBvcnQgdHlwZSB7IE1heWJlUHJvbWlzZSB9IGZyb20gJy4uLy4uL0FzeW5jLnRzJztcbmltcG9ydCB0eXBlIHsgUGx1Z2luQmFzZSB9IGZyb20gJy4vUGx1Z2luQmFzZS50cyc7XG5cbi8qKlxuICogQSBWYWx1ZUNvbXBvbmVudCB0aGF0IGNhbiBiZSBib3VuZCB0byBhIHBsdWdpbiBzZXR0aW5nLlxuICovXG5pbnRlcmZhY2UgVmFsdWVDb21wb25lbnQ8VUlWYWx1ZT4ge1xuICAvKipcbiAgICogR2V0cyB0aGUgdmFsdWUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHZhbHVlIG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBnZXRWYWx1ZSgpOiBVSVZhbHVlO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2V0IG9uIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBzZXRWYWx1ZSh2YWx1ZTogVUlWYWx1ZSk6IHRoaXM7XG5cbiAgLyoqXG4gICAqIFNldHMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgdmFsdWUgb2YgdGhlIGNvbXBvbmVudCBjaGFuZ2VzLlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBBIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSBjb21wb25lbnQgY2hhbmdlcy5cbiAgICovXG4gIG9uQ2hhbmdlKGNhbGxiYWNrOiAobmV3VmFsdWU6IFVJVmFsdWUpID0+IFByb21pc2U8dm9pZD4pOiB0aGlzO1xufVxuXG4vKipcbiAqIEEgSFRNTCBlbGVtZW50IHRoYXQgY2FuIGJlIHZhbGlkYXRlZC5cbiAqL1xuaW50ZXJmYWNlIFZhbGlkYXRvckVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7XG4gIC8qKlxuICAgKiBTZXRzIGEgY3VzdG9tIGVycm9yIG1lc3NhZ2Ugb24gdGhlIGVsZW1lbnQuXG4gICAqIEBwYXJhbSBlcnJvciAtIFRoZSBlcnJvciBtZXNzYWdlIHRvIHNldCBvbiB0aGUgZWxlbWVudC5cbiAgICovXG4gIHNldEN1c3RvbVZhbGlkaXR5KGVycm9yOiBzdHJpbmcpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZXBvcnRzIHRoZSB2YWxpZGl0eSBvZiB0aGUgZWxlbWVudC5cbiAgICovXG4gIHJlcG9ydFZhbGlkaXR5KCk6IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYmluZGluZyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHBsdWdpbiBzZXR0aW5nLlxuICovXG5pbnRlcmZhY2UgQmluZFZhbHVlQ29tcG9uZW50T3B0aW9uczxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZT4ge1xuICAvKipcbiAgICogSWYgdHJ1ZSwgc2F2ZXMgdGhlIHBsdWdpbiBzZXR0aW5ncyBhdXRvbWF0aWNhbGx5IGFmdGVyIHRoZSBjb21wb25lbnQgdmFsdWUgY2hhbmdlcy4gRGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAqL1xuICBhdXRvU2F2ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gc2V0dGluZ3Mgb2JqZWN0IHRvIGJpbmQgdGhlIGNvbXBvbmVudCB0by4gRGVmYXVsdCBpcyB0aGUgcGx1Z2luJ3MgY3VycmVudCBzZXR0aW5ncy5cbiAgICovXG4gIHBsdWdpblNldHRpbmdzPzogUGx1Z2luU2V0dGluZ3M7XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgVUkgdmFsdWUgYmVmb3JlIHNldHRpbmcgaXQgb24gdGhlIHBsdWdpbiBzZXR0aW5ncy5cbiAgICogQHBhcmFtIHVpVmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgQW4gZXJyb3IgbWVzc2FnZSBpZiB0aGUgdmFsdWUgaXMgaW52YWxpZCwgb3IgYG51bGxgIGlmIGl0IGlzIHZhbGlkLlxuICAgKi9cbiAgdmFsdWVWYWxpZGF0b3I/OiAodWlWYWx1ZTogVUlWYWx1ZSkgPT4gc3RyaW5nIHwgbnVsbDtcblxuICAvKipcbiAgICogQSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50IGNoYW5nZXMuXG4gICAqL1xuICBvbkNoYW5nZWQ/OiAoKSA9PiBNYXliZVByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogRXh0ZW5kZWQgb3B0aW9ucyBmb3IgYmluZGluZyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHBsdWdpbiBzZXR0aW5nLlxuICovXG5pbnRlcmZhY2UgQmluZFZhbHVlQ29tcG9uZW50T3B0aW9uc0V4dGVuZGVkPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlLCBQcm9wZXJ0eSBleHRlbmRzIGtleW9mIFBsdWdpblNldHRpbmdzPiBleHRlbmRzIEJpbmRWYWx1ZUNvbXBvbmVudE9wdGlvbnM8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWU+IHtcbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBwbHVnaW4gc2V0dGluZ3MgdmFsdWUgdG8gdGhlIHZhbHVlIHVzZWQgYnkgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIHBsdWdpblNldHRpbmdzVmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBwbHVnaW4gc2V0dGluZ3MuXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZSB0byBzZXQgb24gdGhlIFVJIGNvbXBvbmVudC5cbiAgICovXG4gIHBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcjogKHBsdWdpblNldHRpbmdzVmFsdWU6IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5XSkgPT4gVUlWYWx1ZTtcblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIFVJIGNvbXBvbmVudCdzIHZhbHVlIGJhY2sgdG8gdGhlIHBsdWdpbiBzZXR0aW5ncyB2YWx1ZS5cbiAgICogQHBhcmFtIHVpVmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIHRvIHNldCBvbiB0aGUgcGx1Z2luIHNldHRpbmdzLlxuICAgKi9cbiAgY29tcG9uZW50VG9QbHVnaW5TZXR0aW5nc1ZhbHVlQ29udmVydGVyOiAodWlWYWx1ZTogVUlWYWx1ZSkgPT4gUGx1Z2luU2V0dGluZ3NbUHJvcGVydHldO1xufVxuXG4vKipcbiAqIEJpbmRzIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcHJvcGVydHkgaW4gdGhlIHBsdWdpbiBzZXR0aW5ncyB3aXRoIG9wdGlvbmFsIGF1dG9tYXRpYyBzYXZpbmcgYW5kIHZhbHVlIGNvbnZlcnNpb24uXG4gKlxuICogQHR5cGVQYXJhbSBQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgZXh0ZW5kcyBgUGx1Z2luQmFzZWAuXG4gKiBAdHlwZVBhcmFtIFRWYWx1ZUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQgZXh0ZW5kaW5nIGBWYWx1ZUNvbXBvbmVudGAuXG4gKiBAdHlwZVBhcmFtIFByb3BlcnR5IC0gVGhlIGtleSBvZiB0aGUgcGx1Z2luIHNldHRpbmcgdGhhdCB0aGUgY29tcG9uZW50IGlzIGJvdW5kIHRvLlxuICogQHR5cGVQYXJhbSBVSVZhbHVlIC0gVGhlIGluZmVycmVkIHR5cGUgYmFzZWQgb24gdGhlIFVJIGNvbXBvbmVudCdzIHR5cGUuXG4gKiBAdHlwZVBhcmFtIFBsdWdpblNldHRpbmdzIC0gVGhlIGluZmVycmVkIHR5cGUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyBvYmplY3QuXG4gKlxuICogQHBhcmFtIHBsdWdpbiAtIFRoZSBwbHVnaW4uXG4gKiBAcGFyYW0gdmFsdWVDb21wb25lbnQgLSBUaGUgY29tcG9uZW50IHRoYXQgd2lsbCBkaXNwbGF5IGFuZCBpbnRlcmFjdCB3aXRoIHRoZSBzZXR0aW5nIHZhbHVlLlxuICogQHBhcmFtIHByb3BlcnR5IC0gVGhlIHByb3BlcnR5IGtleSBpbiBgUGx1Z2luU2V0dGluZ3NgIHRvIGJpbmQgdG8gdGhlIFVJIGNvbXBvbmVudC5cbiAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zLlxuICogQHJldHVybnMgVGhlIGBWYWx1ZUNvbXBvbmVudGAgaW5zdGFuY2UgdGhhdCB3YXMgYm91bmQgdG8gdGhlIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYmluZFZhbHVlQ29tcG9uZW50PFxuICBQbHVnaW4gZXh0ZW5kcyBQbHVnaW5CYXNlPG9iamVjdD4sXG4gIFRWYWx1ZUNvbXBvbmVudCBleHRlbmRzIFZhbHVlQ29tcG9uZW50PHVua25vd24+LFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LXR5cGUtcGFyYW1ldGVyc1xuICBQcm9wZXJ0eSBleHRlbmRzIEtleXNNYXRjaGluZzxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZT4sXG4gIFVJVmFsdWUgPSBUVmFsdWVDb21wb25lbnQgZXh0ZW5kcyBWYWx1ZUNvbXBvbmVudDxpbmZlciBQPiA/IFAgOiBuZXZlcixcbiAgUGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3QgPSBQbHVnaW4gZXh0ZW5kcyBQbHVnaW5CYXNlPGluZmVyIFA+ID8gUCA6IG5ldmVyXG4+KFxuICB2YWx1ZUNvbXBvbmVudDogVFZhbHVlQ29tcG9uZW50LFxuICBwbHVnaW46IFBsdWdpbixcbiAgcHJvcGVydHk6IFByb3BlcnR5LFxuICBvcHRpb25zPzogQmluZFZhbHVlQ29tcG9uZW50T3B0aW9uczxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZT5cbik6IFRWYWx1ZUNvbXBvbmVudDtcblxuLyoqXG4gKiBCaW5kcyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHByb3BlcnR5IGluIHRoZSBwbHVnaW4gc2V0dGluZ3Mgd2l0aCBvcHRpb25hbCBhdXRvbWF0aWMgc2F2aW5nIGFuZCB2YWx1ZSBjb252ZXJzaW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gUGx1Z2luIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IGV4dGVuZHMgYFBsdWdpbkJhc2VgLlxuICogQHR5cGVQYXJhbSBUVmFsdWVDb21wb25lbnQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgY29tcG9uZW50IGV4dGVuZGluZyBgVmFsdWVDb21wb25lbnRgLlxuICogQHR5cGVQYXJhbSBQcm9wZXJ0eSAtIFRoZSBrZXkgb2YgdGhlIHBsdWdpbiBzZXR0aW5nIHRoYXQgdGhlIGNvbXBvbmVudCBpcyBib3VuZCB0by5cbiAqIEB0eXBlUGFyYW0gVUlWYWx1ZSAtIFRoZSBpbmZlcnJlZCB0eXBlIGJhc2VkIG9uIHRoZSB2YWx1ZSBjb21wb25lbnQncyB0eXBlLlxuICogQHR5cGVQYXJhbSBQbHVnaW5TZXR0aW5ncyAtIFRoZSBpbmZlcnJlZCB0eXBlIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3Mgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luLlxuICogQHBhcmFtIHZhbHVlQ29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCB0aGF0IHdpbGwgZGlzcGxheSBhbmQgaW50ZXJhY3Qgd2l0aCB0aGUgc2V0dGluZyB2YWx1ZS5cbiAqIEBwYXJhbSBwcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgaW4gYFBsdWdpblNldHRpbmdzYCB0byBiaW5kIHRvIHRoZSBVSSBjb21wb25lbnQuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAqIEByZXR1cm5zIFRoZSBgVmFsdWVDb21wb25lbnRgIGluc3RhbmNlIHRoYXQgd2FzIGJvdW5kIHRvIHRoZSBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJpbmRWYWx1ZUNvbXBvbmVudDxcbiAgUGx1Z2luIGV4dGVuZHMgUGx1Z2luQmFzZTxvYmplY3Q+LFxuICBUVmFsdWVDb21wb25lbnQgZXh0ZW5kcyBWYWx1ZUNvbXBvbmVudDx1bmtub3duPixcbiAgUHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBQbHVnaW5TZXR0aW5ncyxcbiAgVUlWYWx1ZSA9IFRWYWx1ZUNvbXBvbmVudCBleHRlbmRzIFZhbHVlQ29tcG9uZW50PGluZmVyIFA+ID8gUCA6IG5ldmVyLFxuICBQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdCA9IFBsdWdpbiBleHRlbmRzIFBsdWdpbkJhc2U8aW5mZXIgUD4gPyBQIDogbmV2ZXJcbj4oXG4gIHZhbHVlQ29tcG9uZW50OiBUVmFsdWVDb21wb25lbnQsXG4gIHBsdWdpbjogUGx1Z2luLFxuICBwcm9wZXJ0eTogUHJvcGVydHksXG4gIG9wdGlvbnM6IEJpbmRWYWx1ZUNvbXBvbmVudE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZSwgUHJvcGVydHk+XG4pOiBUVmFsdWVDb21wb25lbnQ7XG5cbi8qKlxuICogQmluZHMgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwcm9wZXJ0eSBpbiB0aGUgcGx1Z2luIHNldHRpbmdzIHdpdGggb3B0aW9uYWwgYXV0b21hdGljIHNhdmluZyBhbmQgdmFsdWUgY29udmVyc2lvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFBsdWdpbiAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gdGhhdCBleHRlbmRzIGBQbHVnaW5CYXNlYC5cbiAqIEB0eXBlUGFyYW0gVFZhbHVlQ29tcG9uZW50IC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIGNvbXBvbmVudCBleHRlbmRpbmcgYFZhbHVlQ29tcG9uZW50YC5cbiAqIEB0eXBlUGFyYW0gUHJvcGVydHkgLSBUaGUga2V5IG9mIHRoZSBwbHVnaW4gc2V0dGluZyB0aGF0IHRoZSBjb21wb25lbnQgaXMgYm91bmQgdG8uXG4gKiBAdHlwZVBhcmFtIFVJVmFsdWUgLSBUaGUgaW5mZXJyZWQgdHlwZSBiYXNlZCBvbiB0aGUgdmFsdWUgY29tcG9uZW50J3MgdHlwZS5cbiAqIEB0eXBlUGFyYW0gUGx1Z2luU2V0dGluZ3MgLSBUaGUgaW5mZXJyZWQgdHlwZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gcGx1Z2luIC0gVGhlIHBsdWdpbi5cbiAqIEBwYXJhbSB2YWx1ZUNvbXBvbmVudCAtIFRoZSBjb21wb25lbnQgdGhhdCB3aWxsIGRpc3BsYXkgYW5kIGludGVyYWN0IHdpdGggdGhlIHNldHRpbmcgdmFsdWUuXG4gKiBAcGFyYW0gcHJvcGVydHkgLSBUaGUgcHJvcGVydHkga2V5IGluIGBQbHVnaW5TZXR0aW5nc2AgdG8gYmluZCB0byB0aGUgVUkgY29tcG9uZW50LlxuICogQHBhcmFtIG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgYFZhbHVlQ29tcG9uZW50YCBpbnN0YW5jZSB0aGF0IHdhcyBib3VuZCB0byB0aGUgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaW5kVmFsdWVDb21wb25lbnQ8XG4gIFBsdWdpbiBleHRlbmRzIFBsdWdpbkJhc2U8b2JqZWN0PixcbiAgVFZhbHVlQ29tcG9uZW50IGV4dGVuZHMgVmFsdWVDb21wb25lbnQ8dW5rbm93bj4sXG4gIFByb3BlcnR5IGV4dGVuZHMga2V5b2YgUGx1Z2luU2V0dGluZ3MsXG4gIFVJVmFsdWUgPSBUVmFsdWVDb21wb25lbnQgZXh0ZW5kcyBWYWx1ZUNvbXBvbmVudDxpbmZlciBQPiA/IFAgOiBuZXZlcixcbiAgUGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3QgPSBQbHVnaW4gZXh0ZW5kcyBQbHVnaW5CYXNlPGluZmVyIFA+ID8gUCA6IG5ldmVyXG4+KFxuICB2YWx1ZUNvbXBvbmVudDogVFZhbHVlQ29tcG9uZW50LFxuICBwbHVnaW46IFBsdWdpbixcbiAgcHJvcGVydHk6IFByb3BlcnR5LFxuICBvcHRpb25zPzogQmluZFZhbHVlQ29tcG9uZW50T3B0aW9uczxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZT5cbik6IFRWYWx1ZUNvbXBvbmVudCB7XG4gIHR5cGUgUHJvcGVydHlUeXBlID0gUGx1Z2luU2V0dGluZ3NbUHJvcGVydHldO1xuICBjb25zdCBERUZBVUxUX09QVElPTlM6IEJpbmRWYWx1ZUNvbXBvbmVudE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZSwgUHJvcGVydHk+ID0ge1xuICAgIGF1dG9TYXZlOiB0cnVlLFxuICAgIHBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcjogKHZhbHVlKTogVUlWYWx1ZSA9PiB2YWx1ZSBhcyBVSVZhbHVlLFxuICAgIGNvbXBvbmVudFRvUGx1Z2luU2V0dGluZ3NWYWx1ZUNvbnZlcnRlcjogKHZhbHVlKTogUHJvcGVydHlUeXBlID0+IHZhbHVlIGFzIFByb3BlcnR5VHlwZVxuICB9O1xuXG4gIGNvbnN0IG9wdGlvbnNFeHQ6IEJpbmRWYWx1ZUNvbXBvbmVudE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZSwgUHJvcGVydHk+ID0geyAuLi5ERUZBVUxUX09QVElPTlMsIC4uLm9wdGlvbnMgfTtcbiAgY29uc3QgcGx1Z2luRXh0ID0gcGx1Z2luIGFzIHVua25vd24gYXMgUGx1Z2luQmFzZTxQbHVnaW5TZXR0aW5ncz47XG4gIGNvbnN0IHVpQ29tcG9uZW50RXh0ID0gdmFsdWVDb21wb25lbnQgYXMgVmFsdWVDb21wb25lbnQ8VUlWYWx1ZT47XG4gIGNvbnN0IHBsdWdpblNldHRpbmdzRm4gPSAoKTogUGx1Z2luU2V0dGluZ3MgPT4gb3B0aW9uc0V4dC5wbHVnaW5TZXR0aW5ncyA/PyBwbHVnaW5FeHQuc2V0dGluZ3NDb3B5O1xuICB1aUNvbXBvbmVudEV4dFxuICAgIC5zZXRWYWx1ZShvcHRpb25zRXh0LnBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcihwbHVnaW5TZXR0aW5nc0ZuKClbcHJvcGVydHldKSlcbiAgICAub25DaGFuZ2UoYXN5bmMgKHVpVmFsdWUpID0+IHtcbiAgICAgIGlmICghdmFsaWRhdGVDb21wb25lbnQodWlWYWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgcGx1Z2luU2V0dGluZ3MgPSBwbHVnaW5TZXR0aW5nc0ZuKCk7XG4gICAgICBwbHVnaW5TZXR0aW5nc1twcm9wZXJ0eV0gPSBvcHRpb25zRXh0LmNvbXBvbmVudFRvUGx1Z2luU2V0dGluZ3NWYWx1ZUNvbnZlcnRlcih1aVZhbHVlKTtcbiAgICAgIGlmIChvcHRpb25zRXh0LmF1dG9TYXZlKSB7XG4gICAgICAgIGF3YWl0IHBsdWdpbkV4dC5zYXZlU2V0dGluZ3MocGx1Z2luU2V0dGluZ3MpO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBvcHRpb25zRXh0Lm9uQ2hhbmdlZD8uKCk7XG4gICAgfSk7XG5cbiAgY29uc3QgdmFsaWRhdG9yRWxlbWVudCA9IGdldFZhbGlkYXRvckVsZW1lbnQodmFsdWVDb21wb25lbnQpO1xuICBpZiAodmFsaWRhdG9yRWxlbWVudCkge1xuICAgIHZhbGlkYXRvckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoKSA9PiB2YWxpZGF0ZUNvbXBvbmVudCgpKTtcbiAgICB2YWxpZGF0b3JFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoKSA9PiB2YWxpZGF0ZUNvbXBvbmVudCgpKTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZUNvbXBvbmVudDtcblxuICBmdW5jdGlvbiB2YWxpZGF0ZUNvbXBvbmVudCh1aVZhbHVlPzogVUlWYWx1ZSk6IGJvb2xlYW4ge1xuICAgIGlmICghb3B0aW9uc0V4dC52YWx1ZVZhbGlkYXRvcikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHVpVmFsdWUgPz89IHVpQ29tcG9uZW50RXh0LmdldFZhbHVlKCk7XG4gICAgY29uc3QgZXJyb3JNZXNzYWdlID0gb3B0aW9uc0V4dC52YWx1ZVZhbGlkYXRvcih1aVZhbHVlKTtcbiAgICBjb25zdCB2YWxpZGF0b3JFbGVtZW50ID0gZ2V0VmFsaWRhdG9yRWxlbWVudCh2YWx1ZUNvbXBvbmVudCk7XG4gICAgaWYgKHZhbGlkYXRvckVsZW1lbnQpIHtcbiAgICAgIHZhbGlkYXRvckVsZW1lbnQuc2V0Q3VzdG9tVmFsaWRpdHkoZXJyb3JNZXNzYWdlID8/ICcnKTtcbiAgICAgIHZhbGlkYXRvckVsZW1lbnQucmVwb3J0VmFsaWRpdHkoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gIWVycm9yTWVzc2FnZTtcbiAgfVxufVxuXG4vKipcbiAqIEdldHMgdGhlIHZhbGlkYXRvciBlbGVtZW50IGZyb20gYSB2YWx1ZSBjb21wb25lbnQgaWYgaXQgZXhpc3RzLlxuICpcbiAqIEBwYXJhbSB2YWx1ZUNvbXBvbmVudCAtIFRoZSB2YWx1ZSBjb21wb25lbnQgdG8gZ2V0IHRoZSB2YWxpZGF0b3IgZWxlbWVudCBmcm9tLlxuICogQHJldHVybnMgVGhlIHZhbGlkYXRvciBlbGVtZW50IGlmIGl0IGV4aXN0cywgb3IgYG51bGxgIGlmIGl0IGRvZXMgbm90LlxuICovXG5mdW5jdGlvbiBnZXRWYWxpZGF0b3JFbGVtZW50KHZhbHVlQ29tcG9uZW50OiBWYWx1ZUNvbXBvbmVudDx1bmtub3duPik6IFZhbGlkYXRvckVsZW1lbnQgfCBudWxsIHtcbiAgaWYgKHZhbHVlQ29tcG9uZW50IGluc3RhbmNlb2YgRHJvcGRvd25Db21wb25lbnQpIHtcbiAgICByZXR1cm4gdmFsdWVDb21wb25lbnQuc2VsZWN0RWw7XG4gIH1cblxuICBpZiAodmFsdWVDb21wb25lbnQgaW5zdGFuY2VvZiBTbGlkZXJDb21wb25lbnQpIHtcbiAgICByZXR1cm4gdmFsdWVDb21wb25lbnQuc2xpZGVyRWw7XG4gIH1cblxuICBpZiAodmFsdWVDb21wb25lbnQgaW5zdGFuY2VvZiBUZXh0QXJlYUNvbXBvbmVudCkge1xuICAgIHJldHVybiB2YWx1ZUNvbXBvbmVudC5pbnB1dEVsO1xuICB9XG5cbiAgaWYgKHZhbHVlQ29tcG9uZW50IGluc3RhbmNlb2YgVGV4dENvbXBvbmVudCkge1xuICAgIHJldHVybiB2YWx1ZUNvbXBvbmVudC5pbnB1dEVsO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHNCQUtPO0FBb0tBLFNBQVMsbUJBT2QsZ0JBQ0EsUUFDQSxVQUNBLFNBQ2lCO0FBRWpCLFFBQU0sa0JBQXdGO0FBQUEsSUFDNUYsVUFBVTtBQUFBLElBQ1YseUNBQXlDLENBQUMsVUFBbUI7QUFBQSxJQUM3RCx5Q0FBeUMsQ0FBQyxVQUF3QjtBQUFBLEVBQ3BFO0FBRUEsUUFBTSxhQUFtRixFQUFFLEdBQUcsaUJBQWlCLEdBQUcsUUFBUTtBQUMxSCxRQUFNLFlBQVk7QUFDbEIsUUFBTSxpQkFBaUI7QUFDdkIsUUFBTSxtQkFBbUIsTUFBc0IsV0FBVyxrQkFBa0IsVUFBVTtBQUN0RixpQkFDRyxTQUFTLFdBQVcsd0NBQXdDLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQ3pGLFNBQVMsT0FBTyxZQUFZO0FBQzNCLFFBQUksQ0FBQyxrQkFBa0IsT0FBTyxHQUFHO0FBQy9CO0FBQUEsSUFDRjtBQUNBLFVBQU0saUJBQWlCLGlCQUFpQjtBQUN4QyxtQkFBZSxRQUFRLElBQUksV0FBVyx3Q0FBd0MsT0FBTztBQUNyRixRQUFJLFdBQVcsVUFBVTtBQUN2QixZQUFNLFVBQVUsYUFBYSxjQUFjO0FBQUEsSUFDN0M7QUFFQSxVQUFNLFdBQVcsWUFBWTtBQUFBLEVBQy9CLENBQUM7QUFFSCxRQUFNLG1CQUFtQixvQkFBb0IsY0FBYztBQUMzRCxNQUFJLGtCQUFrQjtBQUNwQixxQkFBaUIsaUJBQWlCLFNBQVMsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRSxxQkFBaUIsaUJBQWlCLFFBQVEsTUFBTSxrQkFBa0IsQ0FBQztBQUFBLEVBQ3JFO0FBRUEsU0FBTztBQUVQLFdBQVMsa0JBQWtCLFNBQTRCO0FBQ3JELFFBQUksQ0FBQyxXQUFXLGdCQUFnQjtBQUM5QixhQUFPO0FBQUEsSUFDVDtBQUNBLGdCQUFZLGVBQWUsU0FBUztBQUNwQyxVQUFNLGVBQWUsV0FBVyxlQUFlLE9BQU87QUFDdEQsVUFBTUEsb0JBQW1CLG9CQUFvQixjQUFjO0FBQzNELFFBQUlBLG1CQUFrQjtBQUNwQixNQUFBQSxrQkFBaUIsa0JBQWtCLGdCQUFnQixFQUFFO0FBQ3JELE1BQUFBLGtCQUFpQixlQUFlO0FBQUEsSUFDbEM7QUFFQSxXQUFPLENBQUM7QUFBQSxFQUNWO0FBQ0Y7QUFRQSxTQUFTLG9CQUFvQixnQkFBa0U7QUFDN0YsTUFBSSwwQkFBMEIsbUNBQW1CO0FBQy9DLFdBQU8sZUFBZTtBQUFBLEVBQ3hCO0FBRUEsTUFBSSwwQkFBMEIsaUNBQWlCO0FBQzdDLFdBQU8sZUFBZTtBQUFBLEVBQ3hCO0FBRUEsTUFBSSwwQkFBMEIsbUNBQW1CO0FBQy9DLFdBQU8sZUFBZTtBQUFBLEVBQ3hCO0FBRUEsTUFBSSwwQkFBMEIsK0JBQWU7QUFDM0MsV0FBTyxlQUFlO0FBQUEsRUFDeEI7QUFFQSxTQUFPO0FBQ1Q7IiwKICAibmFtZXMiOiBbInZhbGlkYXRvckVsZW1lbnQiXQp9Cg==
117
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9WYWx1ZUNvbXBvbmVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHtcbiAgRHJvcGRvd25Db21wb25lbnQsXG4gIFNsaWRlckNvbXBvbmVudCxcbiAgVGV4dEFyZWFDb21wb25lbnQsXG4gIFRleHRDb21wb25lbnQsXG4gIFZhbHVlQ29tcG9uZW50XG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBLZXlzTWF0Y2hpbmcgfSBmcm9tICcuLi8uLi9AdHlwZXMudHMnO1xuaW1wb3J0IHR5cGUgeyBNYXliZVByb21pc2UgfSBmcm9tICcuLi8uLi9Bc3luYy50cyc7XG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRvckVsZW1lbnQgfSBmcm9tICcuLi8uLi9IVE1MRWxlbWVudC50cyc7XG5pbXBvcnQgeyBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXMgfSBmcm9tICcuLi8uLi9PYmplY3QudHMnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW5CYXNlIH0gZnJvbSAnLi9QbHVnaW5CYXNlLnRzJztcblxuLyoqXG4gKiBWYWx1ZUNvbXBvbmVudCB0aGF0IGNhbiBiZSB1c2VkIGFzIGFuIG9yaWdpbmFsIFZhbHVlQ29tcG9uZW50IHdpdGggZXh0ZW5kZWQgZnVuY3Rpb25hbGl0eS5cbiAqL1xudHlwZSBWYWx1ZUNvbXBvbmVudEV4VHlwZTxVSVZhbHVlLCBUVmFsdWVDb21wb25lbnQgZXh0ZW5kcyBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZzxVSVZhbHVlPj4gPSBUVmFsdWVDb21wb25lbnQgJiBWYWx1ZUNvbXBvbmVudEV4PFVJVmFsdWUsIFRWYWx1ZUNvbXBvbmVudD47XG5cbi8qKlxuICogVmFsdWVDb21wb25lbnQgd2l0aCBleHRlbmRlZCBmdW5jdGlvbmFsaXR5LlxuICovXG5jbGFzcyBWYWx1ZUNvbXBvbmVudEV4PFVJVmFsdWUsIFRWYWx1ZUNvbXBvbmVudCBleHRlbmRzIFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPFVJVmFsdWU+PiB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHZhbHVlQ29tcG9uZW50OiBUVmFsdWVDb21wb25lbnQpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBWYWx1ZUNvbXBvbmVudCB3aXRoIGV4dGVuZGVkIGZ1bmN0aW9uYWxpdHkuXG4gICAqL1xuICBwdWJsaWMgYXNFeHRlbmRlZCgpOiBWYWx1ZUNvbXBvbmVudEV4VHlwZTxVSVZhbHVlLCBUVmFsdWVDb21wb25lbnQ+IHtcbiAgICByZXR1cm4gYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzKHt9LCB0aGlzLnZhbHVlQ29tcG9uZW50LCB0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kcyB0aGUgVmFsdWVDb21wb25lbnQgdG8gYSBwcm9wZXJ0eSBpbiB0aGUgcGx1Z2luIHNldHRpbmdzLlxuICAgKlxuICAgKiBAdHlwZVBhcmFtIFBsdWdpblNldHRpbmdzIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyBvYmplY3QuXG4gICAqIEB0eXBlUGFyYW0gUHJvcGVydHkgLSBUaGUga2V5IG9mIHRoZSBwbHVnaW4gc2V0dGluZyB0aGF0IHRoZSBjb21wb25lbnQgaXMgYm91bmQgdG8uXG4gICAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luLlxuICAgKiBAcGFyYW0gcHJvcGVydHkgLSBUaGUgcHJvcGVydHkga2V5IGluIGBQbHVnaW5TZXR0aW5nc2AgdG8gYmluZCB0byB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAgICogQHJldHVybnMgVGhlIGBWYWx1ZUNvbXBvbmVudGAgaW5zdGFuY2UgdGhhdCB3YXMgYm91bmQgdG8gdGhlIHByb3BlcnR5LlxuICAgKi9cbiAgcHVibGljIGJpbmQ8XG4gICAgUGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3QsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS10eXBlLXBhcmFtZXRlcnNcbiAgICBQcm9wZXJ0eSBleHRlbmRzIEtleXNNYXRjaGluZzxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZT5cbiAgPihcbiAgICBwbHVnaW46IFBsdWdpbkJhc2U8UGx1Z2luU2V0dGluZ3M+LFxuICAgIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgICBvcHRpb25zPzogQmluZFZhbHVlQ29tcG9uZW50T3B0aW9uczxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZT5cbiAgKTogVmFsdWVDb21wb25lbnRFeFR5cGU8VUlWYWx1ZSwgVFZhbHVlQ29tcG9uZW50PjtcblxuICAvKipcbiAgICogQmluZHMgdGhlIFZhbHVlQ29tcG9uZW50IHRvIGEgcHJvcGVydHkgaW4gdGhlIHBsdWdpbiBzZXR0aW5ncy5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgZXh0ZW5kcyBgUGx1Z2luQmFzZWAuXG4gICAqIEB0eXBlUGFyYW0gUHJvcGVydHkgLSBUaGUga2V5IG9mIHRoZSBwbHVnaW4gc2V0dGluZyB0aGF0IHRoZSBjb21wb25lbnQgaXMgYm91bmQgdG8uXG4gICAqIEB0eXBlUGFyYW0gUGx1Z2luU2V0dGluZ3MgLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIG9iamVjdC5cbiAgICogQHBhcmFtIHBsdWdpbiAtIFRoZSBwbHVnaW4uXG4gICAqIEBwYXJhbSBwcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgaW4gYFBsdWdpblNldHRpbmdzYCB0byBiaW5kIHRvIHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zLlxuICAgKiBAcmV0dXJucyBUaGUgYFZhbHVlQ29tcG9uZW50YCBpbnN0YW5jZSB0aGF0IHdhcyBib3VuZCB0byB0aGUgcHJvcGVydHkuXG4gICAqL1xuICBwdWJsaWMgYmluZDxcbiAgICBQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdCxcbiAgICBQcm9wZXJ0eSBleHRlbmRzIGtleW9mIFBsdWdpblNldHRpbmdzXG4gID4oXG4gICAgcGx1Z2luOiBQbHVnaW5CYXNlPFBsdWdpblNldHRpbmdzPixcbiAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgb3B0aW9uczogQmluZFZhbHVlQ29tcG9uZW50T3B0aW9uc0V4dGVuZGVkPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlLCBQcm9wZXJ0eT5cbiAgKTogVmFsdWVDb21wb25lbnRFeFR5cGU8VUlWYWx1ZSwgVFZhbHVlQ29tcG9uZW50PjtcblxuICAvKipcbiAgICogQmluZHMgdGhlIFZhbHVlQ29tcG9uZW50IHRvIGEgcHJvcGVydHkgaW4gdGhlIHBsdWdpbiBzZXR0aW5ncy5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgZXh0ZW5kcyBgUGx1Z2luQmFzZWAuXG4gICAqIEB0eXBlUGFyYW0gUHJvcGVydHkgLSBUaGUga2V5IG9mIHRoZSBwbHVnaW4gc2V0dGluZyB0aGF0IHRoZSBjb21wb25lbnQgaXMgYm91bmQgdG8uXG4gICAqIEB0eXBlUGFyYW0gUGx1Z2luU2V0dGluZ3MgLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIG9iamVjdC5cbiAgICogQHBhcmFtIHBsdWdpbiAtIFRoZSBwbHVnaW4uXG4gICAqIEBwYXJhbSBwcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgaW4gYFBsdWdpblNldHRpbmdzYCB0byBiaW5kIHRvIHRoZSBVSSBjb21wb25lbnQuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zLlxuICAgKiBAcmV0dXJucyBUaGUgYFZhbHVlQ29tcG9uZW50YCBpbnN0YW5jZSB0aGF0IHdhcyBib3VuZCB0byB0aGUgcHJvcGVydHkuXG4gICAqL1xuICBwdWJsaWMgYmluZDxcbiAgICBQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdCxcbiAgICBQcm9wZXJ0eSBleHRlbmRzIGtleW9mIFBsdWdpblNldHRpbmdzXG4gID4oXG4gICAgcGx1Z2luOiBQbHVnaW5CYXNlPFBsdWdpblNldHRpbmdzPixcbiAgICBwcm9wZXJ0eTogUHJvcGVydHksXG4gICAgb3B0aW9ucz86IEJpbmRWYWx1ZUNvbXBvbmVudE9wdGlvbnM8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWU+XG4gICk6IFZhbHVlQ29tcG9uZW50RXhUeXBlPFVJVmFsdWUsIFRWYWx1ZUNvbXBvbmVudD4ge1xuICAgIHR5cGUgUHJvcGVydHlUeXBlID0gUGx1Z2luU2V0dGluZ3NbUHJvcGVydHldO1xuICAgIGNvbnN0IERFRkFVTFRfT1BUSU9OUzogQmluZFZhbHVlQ29tcG9uZW50T3B0aW9uc0V4dGVuZGVkPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlLCBQcm9wZXJ0eT4gPSB7XG4gICAgICBhdXRvU2F2ZTogdHJ1ZSxcbiAgICAgIHBsdWdpblNldHRpbmdzVG9Db21wb25lbnRWYWx1ZUNvbnZlcnRlcjogKHZhbHVlKTogVUlWYWx1ZSA9PiB2YWx1ZSBhcyBVSVZhbHVlLFxuICAgICAgY29tcG9uZW50VG9QbHVnaW5TZXR0aW5nc1ZhbHVlQ29udmVydGVyOiAodmFsdWUpOiBQcm9wZXJ0eVR5cGUgPT4gdmFsdWUgYXMgUHJvcGVydHlUeXBlXG4gICAgfTtcblxuICAgIGNvbnN0IG9wdGlvbnNFeHQ6IEJpbmRWYWx1ZUNvbXBvbmVudE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZSwgUHJvcGVydHk+ID0geyAuLi5ERUZBVUxUX09QVElPTlMsIC4uLm9wdGlvbnMgfTtcbiAgICBjb25zdCBwbHVnaW5FeHQgPSBwbHVnaW4gYXMgdW5rbm93biBhcyBQbHVnaW5CYXNlPFBsdWdpblNldHRpbmdzPjtcbiAgICBjb25zdCBwbHVnaW5TZXR0aW5nc0ZuID0gKCk6IFBsdWdpblNldHRpbmdzID0+IG9wdGlvbnNFeHQucGx1Z2luU2V0dGluZ3MgPz8gcGx1Z2luRXh0LnNldHRpbmdzQ29weTtcbiAgICB0aGlzLnZhbHVlQ29tcG9uZW50XG4gICAgICAuc2V0VmFsdWUob3B0aW9uc0V4dC5wbHVnaW5TZXR0aW5nc1RvQ29tcG9uZW50VmFsdWVDb252ZXJ0ZXIocGx1Z2luU2V0dGluZ3NGbigpW3Byb3BlcnR5XSkpXG4gICAgICAub25DaGFuZ2UoYXN5bmMgKHVpVmFsdWUpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlKG9wdGlvbnNFeHQudmFsdWVWYWxpZGF0b3IsIHVpVmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBsdWdpblNldHRpbmdzID0gcGx1Z2luU2V0dGluZ3NGbigpO1xuICAgICAgICBwbHVnaW5TZXR0aW5nc1twcm9wZXJ0eV0gPSBvcHRpb25zRXh0LmNvbXBvbmVudFRvUGx1Z2luU2V0dGluZ3NWYWx1ZUNvbnZlcnRlcih1aVZhbHVlKTtcbiAgICAgICAgaWYgKG9wdGlvbnNFeHQuYXV0b1NhdmUpIHtcbiAgICAgICAgICBhd2FpdCBwbHVnaW5FeHQuc2F2ZVNldHRpbmdzKHBsdWdpblNldHRpbmdzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IG9wdGlvbnNFeHQub25DaGFuZ2VkPy4oKTtcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgdmFsaWRhdG9yRWxlbWVudCA9IGdldFZhbGlkYXRvckVsZW1lbnQodGhpcy52YWx1ZUNvbXBvbmVudCk7XG4gICAgaWYgKHZhbGlkYXRvckVsZW1lbnQpIHtcbiAgICAgIHZhbGlkYXRvckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoKSA9PiB0aGlzLnZhbGlkYXRlKG9wdGlvbnNFeHQudmFsdWVWYWxpZGF0b3IpKTtcbiAgICAgIHZhbGlkYXRvckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHRoaXMudmFsaWRhdGUob3B0aW9uc0V4dC52YWx1ZVZhbGlkYXRvcikpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFzRXh0ZW5kZWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGUodmFsdWVWYWxpZGF0b3I6ICgodWlWYWx1ZTogVUlWYWx1ZSkgPT4gc3RyaW5nIHwgbnVsbCkgfCB1bmRlZmluZWQsIHVpVmFsdWU/OiBVSVZhbHVlKTogYm9vbGVhbiB7XG4gICAgaWYgKCF2YWx1ZVZhbGlkYXRvcikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHVpVmFsdWUgPz89IHRoaXMudmFsdWVDb21wb25lbnQuZ2V0VmFsdWUoKTtcbiAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSB2YWx1ZVZhbGlkYXRvcih1aVZhbHVlKTtcbiAgICBjb25zdCB2YWxpZGF0b3JFbGVtZW50ID0gZ2V0VmFsaWRhdG9yRWxlbWVudCh0aGlzLnZhbHVlQ29tcG9uZW50KTtcbiAgICBpZiAodmFsaWRhdG9yRWxlbWVudCkge1xuICAgICAgdmFsaWRhdG9yRWxlbWVudC5zZXRDdXN0b21WYWxpZGl0eShlcnJvck1lc3NhZ2UgPz8gJycpO1xuICAgICAgdmFsaWRhdG9yRWxlbWVudC5yZXBvcnRWYWxpZGl0eSgpO1xuICAgIH1cblxuICAgIHJldHVybiAhZXJyb3JNZXNzYWdlO1xuICB9XG59XG5cbi8qKlxuICogRXh0ZW5kcyBhIFZhbHVlQ29tcG9uZW50IHdpdGggYWRkaXRpb25hbCBmdW5jdGlvbmFsaXR5LlxuICpcbiAqIEB0eXBlUGFyYW0gVUlWYWx1ZSAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSB0aGUgY29tcG9uZW50IGRpc3BsYXlzLlxuICogQHR5cGVQYXJhbSBUVmFsdWVDb21wb25lbnQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgY29tcG9uZW50IGV4dGVuZGluZyBgVmFsdWVDb21wb25lbnRgLlxuICogQHBhcmFtIHZhbHVlQ29tcG9uZW50IC0gVGhlIHZhbHVlIGNvbXBvbmVudCB0byBleHRlbmQuXG4gKiBAcmV0dXJucyBUaGUgdmFsdWUgY29tcG9uZW50IHdpdGggZXh0ZW5kZWQgZnVuY3Rpb25hbGl0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuZDxVSVZhbHVlLCBUVmFsdWVDb21wb25lbnQgZXh0ZW5kcyBWYWx1ZUNvbXBvbmVudFdpdGhDaGFuZ2VUcmFja2luZzxVSVZhbHVlPj4odmFsdWVDb21wb25lbnQ6IFRWYWx1ZUNvbXBvbmVudCAmIFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPFVJVmFsdWU+KTogVmFsdWVDb21wb25lbnRFeFR5cGU8VUlWYWx1ZSwgVFZhbHVlQ29tcG9uZW50PiB7XG4gIHJldHVybiBuZXcgVmFsdWVDb21wb25lbnRFeDxVSVZhbHVlLCBUVmFsdWVDb21wb25lbnQ+KHZhbHVlQ29tcG9uZW50KS5hc0V4dGVuZGVkKCk7XG59XG5cbi8qKlxuICogQSBWYWx1ZUNvbXBvbmVudCB0aGF0IGNhbiB0cmFjayBjaGFuZ2VzLlxuICovXG5pbnRlcmZhY2UgVmFsdWVDb21wb25lbnRXaXRoQ2hhbmdlVHJhY2tpbmc8VD4gZXh0ZW5kcyBWYWx1ZUNvbXBvbmVudDxUPiB7XG4gIC8qKlxuICAgKiBTZXRzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSBjb21wb25lbnQgY2hhbmdlcy5cbiAgICpcbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gQSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50IGNoYW5nZXMuXG4gICAqL1xuICBvbkNoYW5nZShjYWxsYmFjazogKG5ld1ZhbHVlOiBUKSA9PiBQcm9taXNlPHZvaWQ+KTogdGhpcztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBiaW5kaW5nIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gKi9cbmludGVyZmFjZSBCaW5kVmFsdWVDb21wb25lbnRPcHRpb25zPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlPiB7XG4gIC8qKlxuICAgKiBJZiB0cnVlLCBzYXZlcyB0aGUgcGx1Z2luIHNldHRpbmdzIGF1dG9tYXRpY2FsbHkgYWZ0ZXIgdGhlIGNvbXBvbmVudCB2YWx1ZSBjaGFuZ2VzLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICovXG4gIGF1dG9TYXZlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHBsdWdpbiBzZXR0aW5ncyBvYmplY3QgdG8gYmluZCB0aGUgY29tcG9uZW50IHRvLiBEZWZhdWx0IGlzIHRoZSBwbHVnaW4ncyBjdXJyZW50IHNldHRpbmdzLlxuICAgKi9cbiAgcGx1Z2luU2V0dGluZ3M/OiBQbHVnaW5TZXR0aW5ncztcblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBVSSB2YWx1ZSBiZWZvcmUgc2V0dGluZyBpdCBvbiB0aGUgcGx1Z2luIHNldHRpbmdzLlxuICAgKiBAcGFyYW0gdWlWYWx1ZSAtIFRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBBbiBlcnJvciBtZXNzYWdlIGlmIHRoZSB2YWx1ZSBpcyBpbnZhbGlkLCBvciBgbnVsbGAgaWYgaXQgaXMgdmFsaWQuXG4gICAqL1xuICB2YWx1ZVZhbGlkYXRvcj86ICh1aVZhbHVlOiBVSVZhbHVlKSA9PiBzdHJpbmcgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBBIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSBjb21wb25lbnQgY2hhbmdlcy5cbiAgICovXG4gIG9uQ2hhbmdlZD86ICgpID0+IE1heWJlUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBFeHRlbmRlZCBvcHRpb25zIGZvciBiaW5kaW5nIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gKi9cbmludGVyZmFjZSBCaW5kVmFsdWVDb21wb25lbnRPcHRpb25zRXh0ZW5kZWQ8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWUsIFByb3BlcnR5IGV4dGVuZHMga2V5b2YgUGx1Z2luU2V0dGluZ3M+IGV4dGVuZHMgQmluZFZhbHVlQ29tcG9uZW50T3B0aW9uczxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZT4ge1xuICAvKipcbiAgICogQ29udmVydHMgdGhlIHBsdWdpbiBzZXR0aW5ncyB2YWx1ZSB0byB0aGUgdmFsdWUgdXNlZCBieSB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAcGFyYW0gcGx1Z2luU2V0dGluZ3NWYWx1ZSAtIFRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIHBsdWdpbiBzZXR0aW5ncy5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIHRvIHNldCBvbiB0aGUgVUkgY29tcG9uZW50LlxuICAgKi9cbiAgcGx1Z2luU2V0dGluZ3NUb0NvbXBvbmVudFZhbHVlQ29udmVydGVyOiAocGx1Z2luU2V0dGluZ3NWYWx1ZTogUGx1Z2luU2V0dGluZ3NbUHJvcGVydHldKSA9PiBVSVZhbHVlO1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgVUkgY29tcG9uZW50J3MgdmFsdWUgYmFjayB0byB0aGUgcGx1Z2luIHNldHRpbmdzIHZhbHVlLlxuICAgKiBAcGFyYW0gdWlWYWx1ZSAtIFRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgdG8gc2V0IG9uIHRoZSBwbHVnaW4gc2V0dGluZ3MuXG4gICAqL1xuICBjb21wb25lbnRUb1BsdWdpblNldHRpbmdzVmFsdWVDb252ZXJ0ZXI6ICh1aVZhbHVlOiBVSVZhbHVlKSA9PiBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eV07XG59XG5cbi8qKlxuICogR2V0cyB0aGUgdmFsaWRhdG9yIGVsZW1lbnQgZnJvbSBhIHZhbHVlIGNvbXBvbmVudCBpZiBpdCBleGlzdHMuXG4gKlxuICogQHBhcmFtIHZhbHVlQ29tcG9uZW50IC0gVGhlIHZhbHVlIGNvbXBvbmVudCB0byBnZXQgdGhlIHZhbGlkYXRvciBlbGVtZW50IGZyb20uXG4gKiBAcmV0dXJucyBUaGUgdmFsaWRhdG9yIGVsZW1lbnQgaWYgaXQgZXhpc3RzLCBvciBgbnVsbGAgaWYgaXQgZG9lcyBub3QuXG4gKi9cbmZ1bmN0aW9uIGdldFZhbGlkYXRvckVsZW1lbnQ8VUlWYWx1ZT4odmFsdWVDb21wb25lbnQ6IFZhbHVlQ29tcG9uZW50V2l0aENoYW5nZVRyYWNraW5nPFVJVmFsdWU+KTogVmFsaWRhdG9yRWxlbWVudCB8IG51bGwge1xuICBpZiAodmFsdWVDb21wb25lbnQgaW5zdGFuY2VvZiBEcm9wZG93bkNvbXBvbmVudCkge1xuICAgIHJldHVybiB2YWx1ZUNvbXBvbmVudC5zZWxlY3RFbDtcbiAgfVxuXG4gIGlmICh2YWx1ZUNvbXBvbmVudCBpbnN0YW5jZW9mIFNsaWRlckNvbXBvbmVudCkge1xuICAgIHJldHVybiB2YWx1ZUNvbXBvbmVudC5zbGlkZXJFbDtcbiAgfVxuXG4gIGlmICh2YWx1ZUNvbXBvbmVudCBpbnN0YW5jZW9mIFRleHRBcmVhQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIHZhbHVlQ29tcG9uZW50LmlucHV0RWw7XG4gIH1cblxuICBpZiAodmFsdWVDb21wb25lbnQgaW5zdGFuY2VvZiBUZXh0Q29tcG9uZW50KSB7XG4gICAgcmV0dXJuIHZhbHVlQ29tcG9uZW50LmlucHV0RWw7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsc0JBTU87QUFLUCxvQkFBa0Q7QUFXbEQsTUFBTSxpQkFBNkY7QUFBQSxFQUMxRixZQUFvQixnQkFBaUM7QUFBakM7QUFBQSxFQUMzQjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS08sYUFBNkQ7QUFDbEUsZUFBTyxpREFBa0MsQ0FBQyxHQUFHLEtBQUssZ0JBQWdCLElBQUk7QUFBQSxFQUN4RTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQXFETyxLQUlMLFFBQ0EsVUFDQSxTQUNnRDtBQUVoRCxVQUFNLGtCQUF3RjtBQUFBLE1BQzVGLFVBQVU7QUFBQSxNQUNWLHlDQUF5QyxDQUFDLFVBQW1CO0FBQUEsTUFDN0QseUNBQXlDLENBQUMsVUFBd0I7QUFBQSxJQUNwRTtBQUVBLFVBQU0sYUFBbUYsRUFBRSxHQUFHLGlCQUFpQixHQUFHLFFBQVE7QUFDMUgsVUFBTSxZQUFZO0FBQ2xCLFVBQU0sbUJBQW1CLE1BQXNCLFdBQVcsa0JBQWtCLFVBQVU7QUFDdEYsU0FBSyxlQUNGLFNBQVMsV0FBVyx3Q0FBd0MsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFDekYsU0FBUyxPQUFPLFlBQVk7QUFDM0IsVUFBSSxDQUFDLEtBQUssU0FBUyxXQUFXLGdCQUFnQixPQUFPLEdBQUc7QUFDdEQ7QUFBQSxNQUNGO0FBQ0EsWUFBTSxpQkFBaUIsaUJBQWlCO0FBQ3hDLHFCQUFlLFFBQVEsSUFBSSxXQUFXLHdDQUF3QyxPQUFPO0FBQ3JGLFVBQUksV0FBVyxVQUFVO0FBQ3ZCLGNBQU0sVUFBVSxhQUFhLGNBQWM7QUFBQSxNQUM3QztBQUVBLFlBQU0sV0FBVyxZQUFZO0FBQUEsSUFDL0IsQ0FBQztBQUVILFVBQU0sbUJBQW1CLG9CQUFvQixLQUFLLGNBQWM7QUFDaEUsUUFBSSxrQkFBa0I7QUFDcEIsdUJBQWlCLGlCQUFpQixTQUFTLE1BQU0sS0FBSyxTQUFTLFdBQVcsY0FBYyxDQUFDO0FBQ3pGLHVCQUFpQixpQkFBaUIsUUFBUSxNQUFNLEtBQUssU0FBUyxXQUFXLGNBQWMsQ0FBQztBQUFBLElBQzFGO0FBRUEsV0FBTyxLQUFLLFdBQVc7QUFBQSxFQUN6QjtBQUFBLEVBRVEsU0FBUyxnQkFBbUUsU0FBNEI7QUFDOUcsUUFBSSxDQUFDLGdCQUFnQjtBQUNuQixhQUFPO0FBQUEsSUFDVDtBQUNBLGdCQUFZLEtBQUssZUFBZSxTQUFTO0FBQ3pDLFVBQU0sZUFBZSxlQUFlLE9BQU87QUFDM0MsVUFBTSxtQkFBbUIsb0JBQW9CLEtBQUssY0FBYztBQUNoRSxRQUFJLGtCQUFrQjtBQUNwQix1QkFBaUIsa0JBQWtCLGdCQUFnQixFQUFFO0FBQ3JELHVCQUFpQixlQUFlO0FBQUEsSUFDbEM7QUFFQSxXQUFPLENBQUM7QUFBQSxFQUNWO0FBQ0Y7QUFVTyxTQUFTLE9BQW1GLGdCQUE2SDtBQUM5TixTQUFPLElBQUksaUJBQTJDLGNBQWMsRUFBRSxXQUFXO0FBQ25GO0FBa0VBLFNBQVMsb0JBQTZCLGdCQUFvRjtBQUN4SCxNQUFJLDBCQUEwQixtQ0FBbUI7QUFDL0MsV0FBTyxlQUFlO0FBQUEsRUFDeEI7QUFFQSxNQUFJLDBCQUEwQixpQ0FBaUI7QUFDN0MsV0FBTyxlQUFlO0FBQUEsRUFDeEI7QUFFQSxNQUFJLDBCQUEwQixtQ0FBbUI7QUFDL0MsV0FBTyxlQUFlO0FBQUEsRUFDeEI7QUFFQSxNQUFJLDBCQUEwQiwrQkFBZTtBQUMzQyxXQUFPLGVBQWU7QUFBQSxFQUN4QjtBQUVBLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFtdCn0K
@@ -1,26 +1,65 @@
1
+ import { ValueComponent } from 'obsidian';
1
2
  import type { KeysMatching } from '../../@types.ts';
2
3
  import type { MaybePromise } from '../../Async.ts';
3
4
  import type { PluginBase } from './PluginBase.ts';
4
5
  /**
5
- * A ValueComponent that can be bound to a plugin setting.
6
+ * ValueComponent that can be used as an original ValueComponent with extended functionality.
6
7
  */
7
- interface ValueComponent<UIValue> {
8
+ type ValueComponentExType<UIValue, TValueComponent extends ValueComponentWithChangeTracking<UIValue>> = TValueComponent & ValueComponentEx<UIValue, TValueComponent>;
9
+ /**
10
+ * ValueComponent with extended functionality.
11
+ */
12
+ declare class ValueComponentEx<UIValue, TValueComponent extends ValueComponentWithChangeTracking<UIValue>> {
13
+ private valueComponent;
14
+ constructor(valueComponent: TValueComponent);
15
+ /**
16
+ * Returns the ValueComponent with extended functionality.
17
+ */
18
+ asExtended(): ValueComponentExType<UIValue, TValueComponent>;
8
19
  /**
9
- * Gets the value of the component.
20
+ * Binds the ValueComponent to a property in the plugin settings.
10
21
  *
11
- * @returns The value of the component.
22
+ * @typeParam PluginSettings - The type of the plugin settings object.
23
+ * @typeParam Property - The key of the plugin setting that the component is bound to.
24
+ * @param plugin - The plugin.
25
+ * @param property - The property key in `PluginSettings` to bind to the UI component.
26
+ * @param options - Configuration options.
27
+ * @returns The `ValueComponent` instance that was bound to the property.
12
28
  */
13
- getValue(): UIValue;
29
+ bind<PluginSettings extends object, Property extends KeysMatching<PluginSettings, UIValue>>(plugin: PluginBase<PluginSettings>, property: Property, options?: BindValueComponentOptions<PluginSettings, UIValue>): ValueComponentExType<UIValue, TValueComponent>;
14
30
  /**
15
- * Sets the value of the component.
16
- * @param value - The value to set on the component.
31
+ * Binds the ValueComponent to a property in the plugin settings.
32
+ *
33
+ * @typeParam Plugin - The type of the plugin that extends `PluginBase`.
34
+ * @typeParam Property - The key of the plugin setting that the component is bound to.
35
+ * @typeParam PluginSettings - The type of the plugin settings object.
36
+ * @param plugin - The plugin.
37
+ * @param property - The property key in `PluginSettings` to bind to the UI component.
38
+ * @param options - Configuration options.
39
+ * @returns The `ValueComponent` instance that was bound to the property.
17
40
  */
18
- setValue(value: UIValue): this;
41
+ bind<PluginSettings extends object, Property extends keyof PluginSettings>(plugin: PluginBase<PluginSettings>, property: Property, options: BindValueComponentOptionsExtended<PluginSettings, UIValue, Property>): ValueComponentExType<UIValue, TValueComponent>;
42
+ private validate;
43
+ }
44
+ /**
45
+ * Extends a ValueComponent with additional functionality.
46
+ *
47
+ * @typeParam UIValue - The type of the value the component displays.
48
+ * @typeParam TValueComponent - The type of the value component extending `ValueComponent`.
49
+ * @param valueComponent - The value component to extend.
50
+ * @returns The value component with extended functionality.
51
+ */
52
+ export declare function extend<UIValue, TValueComponent extends ValueComponentWithChangeTracking<UIValue>>(valueComponent: TValueComponent & ValueComponentWithChangeTracking<UIValue>): ValueComponentExType<UIValue, TValueComponent>;
53
+ /**
54
+ * A ValueComponent that can track changes.
55
+ */
56
+ interface ValueComponentWithChangeTracking<T> extends ValueComponent<T> {
19
57
  /**
20
58
  * Sets a callback function to be called when the value of the component changes.
59
+ *
21
60
  * @param callback - A callback function that is called when the value of the component changes.
22
61
  */
23
- onChange(callback: (newValue: UIValue) => Promise<void>): this;
62
+ onChange(callback: (newValue: T) => Promise<void>): this;
24
63
  }
25
64
  /**
26
65
  * Options for binding a value component to a plugin setting.
@@ -62,36 +101,4 @@ interface BindValueComponentOptionsExtended<PluginSettings, UIValue, Property ex
62
101
  */
63
102
  componentToPluginSettingsValueConverter: (uiValue: UIValue) => PluginSettings[Property];
64
103
  }
65
- /**
66
- * Binds a value component to a property in the plugin settings with optional automatic saving and value conversion.
67
- *
68
- * @typeParam Plugin - The type of the plugin that extends `PluginBase`.
69
- * @typeParam TValueComponent - The type of the value component extending `ValueComponent`.
70
- * @typeParam Property - The key of the plugin setting that the component is bound to.
71
- * @typeParam UIValue - The inferred type based on the UI component's type.
72
- * @typeParam PluginSettings - The inferred type of the plugin settings object.
73
- *
74
- * @param plugin - The plugin.
75
- * @param valueComponent - The component that will display and interact with the setting value.
76
- * @param property - The property key in `PluginSettings` to bind to the UI component.
77
- * @param options - Configuration options.
78
- * @returns The `ValueComponent` instance that was bound to the property.
79
- */
80
- export declare function bindValueComponent<Plugin extends PluginBase<object>, TValueComponent extends ValueComponent<unknown>, Property extends KeysMatching<PluginSettings, UIValue>, UIValue = TValueComponent extends ValueComponent<infer P> ? P : never, PluginSettings extends object = Plugin extends PluginBase<infer P> ? P : never>(valueComponent: TValueComponent, plugin: Plugin, property: Property, options?: BindValueComponentOptions<PluginSettings, UIValue>): TValueComponent;
81
- /**
82
- * Binds a value component to a property in the plugin settings with optional automatic saving and value conversion.
83
- *
84
- * @typeParam Plugin - The type of the plugin that extends `PluginBase`.
85
- * @typeParam TValueComponent - The type of the value component extending `ValueComponent`.
86
- * @typeParam Property - The key of the plugin setting that the component is bound to.
87
- * @typeParam UIValue - The inferred type based on the value component's type.
88
- * @typeParam PluginSettings - The inferred type of the plugin settings object.
89
- *
90
- * @param plugin - The plugin.
91
- * @param valueComponent - The component that will display and interact with the setting value.
92
- * @param property - The property key in `PluginSettings` to bind to the UI component.
93
- * @param options - Configuration options.
94
- * @returns The `ValueComponent` instance that was bound to the property.
95
- */
96
- export declare function bindValueComponent<Plugin extends PluginBase<object>, TValueComponent extends ValueComponent<unknown>, Property extends keyof PluginSettings, UIValue = TValueComponent extends ValueComponent<infer P> ? P : never, PluginSettings extends object = Plugin extends PluginBase<infer P> ? P : never>(valueComponent: TValueComponent, plugin: Plugin, property: Property, options: BindValueComponentOptionsExtended<PluginSettings, UIValue, Property>): TValueComponent;
97
104
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "obsidian-dev-utils",
3
- "version": "4.2.0",
3
+ "version": "4.3.1",
4
4
  "description": "This is the collection of useful functions that you can use for your Obsidian plugin development",
5
5
  "main": "./dist/lib/index.cjs",
6
6
  "types": "./dist/lib/index.d.ts",