zek 17.3.92 → 17.3.118

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.
@@ -77,53 +77,74 @@ export class ArrayHelper {
77
77
  }
78
78
  static flatten(array, indent = 0) {
79
79
  let result = [];
80
- // If the input is an array of trees, we process each one
81
- if (Array.isArray(array)) {
82
- for (const item of array) {
83
- result = result.concat(this.flatten(item, indent));
80
+ if (!Array.isArray(array)) {
81
+ const flattenedItem = {
82
+ ...array, // shallow copy the current item
83
+ indent, // add the current indent level
84
+ count: Array.isArray(array.children) ? array.children.length : 0 // set count based on children
85
+ };
86
+ delete flattenedItem.children;
87
+ delete flattenedItem.childrenIds;
88
+ result.push(flattenedItem);
89
+ if (flattenedItem.count) {
90
+ result.push(...this.flatten(array.children, indent + 1)); // Use spread operator for efficiency
84
91
  }
92
+ return result;
85
93
  }
86
94
  else {
87
- // Add the current tree node to the result
88
- const item = Object.assign({}, array);
89
- item.indent = indent;
90
- item.count = Array.isArray(array.children)
91
- ? array.children.length
92
- : 0;
93
- delete item.children;
94
- delete item.childrenIds;
95
- result.push(item);
96
- // If there are children, recursively flatten them
97
- if (Array.isArray(array.children)) {
98
- for (const child of array.children) {
99
- result = result.concat(this.flatten(child, indent + 1));
100
- }
95
+ for (const item of array) {
96
+ result.push(...this.flatten(item, indent));
101
97
  }
102
98
  }
103
99
  return result;
104
100
  }
101
+ /**
102
+ * @deprecated use flattenDropDownList2
103
+ */
105
104
  static flattenDropDownList(tree, indent = 0) {
106
105
  let result = [];
107
106
  // If the input is an array of trees, we process each one
108
- if (Array.isArray(tree)) {
109
- for (const item of tree) {
110
- result = result.concat(this.flattenDropDownList(item, indent));
107
+ if (!Array.isArray(tree)) {
108
+ // Add the current tree node to the result
109
+ let item = {
110
+ key: tree.key,
111
+ value: ' '.repeat(indent) + tree.value,
112
+ indent: indent,
113
+ count: Array.isArray(tree.children) ? tree.children.length : 0
114
+ };
115
+ result.push(item);
116
+ // If there are children, recursively flatten them
117
+ if (Array.isArray(tree.children)) {
118
+ result.push(...this.flattenDropDownList(tree.children, indent + 1)); // Use spread operator for efficiency
111
119
  }
112
120
  }
113
121
  else {
122
+ for (const item of tree) {
123
+ result.push(...this.flattenDropDownList(item, indent));
124
+ }
125
+ }
126
+ return result;
127
+ }
128
+ static flattenTreeNodeDropDownList(tree, indent = 0) {
129
+ let result = [];
130
+ // If the input is an array of trees, we process each one
131
+ if (!Array.isArray(tree)) {
114
132
  // Add the current tree node to the result
115
133
  let item = {
116
- key: tree.key,
117
- value: ' '.repeat(indent) + tree.value,
134
+ id: tree.id,
135
+ name: ' '.repeat(indent) + tree.name,
118
136
  indent: indent,
119
137
  count: Array.isArray(tree.children) ? tree.children.length : 0
120
138
  };
121
139
  result.push(item);
122
140
  // If there are children, recursively flatten them
123
141
  if (Array.isArray(tree.children)) {
124
- for (const child of tree.children) {
125
- result = result.concat(this.flattenDropDownList(child, indent + 1));
126
- }
142
+ result.push(...this.flattenTreeNodeDropDownList(tree.children, indent + 1)); // Use spread operator for efficiency
143
+ }
144
+ }
145
+ else {
146
+ for (const item of tree) {
147
+ result.push(...this.flattenTreeNodeDropDownList(item, indent));
127
148
  }
128
149
  }
129
150
  return result;
@@ -148,5 +169,48 @@ export class ArrayHelper {
148
169
  static enumToKeyPairExArray(value) {
149
170
  return this.enumToKeyPairBaseArray(value);
150
171
  }
172
+ /**
173
+ * Method to create a tree from a flat array of nodes
174
+ * @param array
175
+ * @param safe if tue and some nodes not have parent thand adds as a root node. if false than thoose nodes skipped.
176
+ * @returns
177
+ */
178
+ static createTree(array, safe = true) {
179
+ const tree = [];
180
+ // Map to store nodes by their id for easy access
181
+ const map = {};
182
+ // Step 1: Loop over the array to build the nodes
183
+ for (const item of array) {
184
+ const node = {
185
+ id: item.id,
186
+ parentId: item.parentId ?? null,
187
+ name: item.name ?? null,
188
+ children: null
189
+ };
190
+ map[node.id] = node;
191
+ }
192
+ for (const item of array) {
193
+ const node = map[item.id];
194
+ // Step 2: Check if it's a root or child and assign to parent or tree
195
+ if (typeof node.parentId === 'undefined' || node.parentId === null) {
196
+ // Root node, add directly to the tree
197
+ tree.push(node);
198
+ }
199
+ else {
200
+ // Non-root node, find its parent and add to its children
201
+ let parentNode = map[node.parentId];
202
+ if (parentNode) {
203
+ if (!Array.isArray(parentNode.children))
204
+ parentNode.children = [];
205
+ parentNode.children.push(node);
206
+ }
207
+ else if (safe) {
208
+ //if save=true and parent node not exists, then we add as a root node
209
+ tree.push(node);
210
+ }
211
+ }
212
+ }
213
+ return tree;
214
+ }
151
215
  }
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvemVrL3NyYy9saWIvdXRpbHMvYXJyYXktaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNEQUFzRDtBQUN0RCwrQ0FBK0M7QUFNL0MsTUFBTSxPQUFPLFdBQVc7SUFDcEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFZLEVBQUUsS0FBYSxFQUFFLElBQVM7UUFDaEQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFHRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFZLEVBQUUsSUFBUztRQUNqQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyx1Q0FBdUM7WUFDckQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQywyQ0FBMkM7UUFDdkUsQ0FBQztJQUNMLENBQUM7SUFHRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFZLEVBQUUsSUFBUztRQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDVixPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEIsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ3BCLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixFQUFFLENBQUMsQ0FBQztZQUNSLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUdELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBWSxFQUFFLFNBQWlCLEVBQUUsT0FBZTtRQUV4RCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQSx5QkFBeUI7UUFDcEQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUEsd0JBQXdCO1FBQ3ZELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQVksRUFBRSxDQUFNO1FBQ2hDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDcEMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFBRSxPQUFPLElBQUksQ0FBQztRQUNwQyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUdELE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBVTtRQUNyQixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUNELGtDQUFrQztJQUNsQywyQkFBMkI7SUFDM0IsK0NBQStDO0lBQy9DLDhCQUE4QjtJQUM5QiwwQ0FBMEM7SUFDMUMsNkJBQTZCO0lBQzdCLFlBQVk7SUFDWixRQUFRO0lBQ1Isa0JBQWtCO0lBQ2xCLElBQUk7SUFFSixNQUFNLENBQUMsUUFBUSxDQUFDLEtBQVk7UUFDeEIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUM1QixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUE7UUFDakIsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUV2QixLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDMUMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7Z0JBQUUsU0FBUztZQUU5QixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLFdBQWdCLEVBQUUsR0FBVyxFQUFFLEtBQVk7UUFDMUQsSUFBSSxPQUFPLFdBQVcsS0FBSyxXQUFXLElBQUksV0FBVyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztZQUMxRyxPQUFPLEtBQUssQ0FBQztRQUVqQixPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFdBQVcsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFHRCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQVUsRUFBRSxTQUFpQixDQUFDO1FBQ3pDLElBQUksTUFBTSxHQUFVLEVBQUUsQ0FBQztRQUN2Qix5REFBeUQ7UUFDekQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDdkIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUN2RCxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDSiwwQ0FBMEM7WUFDMUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7Z0JBQ3RDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU07Z0JBQ3ZCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDUixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ3hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEIsa0RBQWtEO1lBQ2xELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDaEMsS0FBSyxNQUFNLEtBQUssSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2pDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM1RCxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLElBQW1CLEVBQUUsU0FBaUIsQ0FBQztRQUM5RCxJQUFJLE1BQU0sR0FBbUIsRUFBRSxDQUFDO1FBQ2hDLHlEQUF5RDtRQUN6RCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN0QixLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUN0QixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDbkUsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ0osMENBQTBDO1lBQzFDLElBQUksSUFBSSxHQUFHO2dCQUNQLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztnQkFDYixLQUFLLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSztnQkFDM0MsTUFBTSxFQUFFLE1BQU07Z0JBQ2QsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNqRCxDQUFDO1lBQ2xCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEIsa0RBQWtEO1lBQ2xELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2hDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hFLENBQUM7WUFFTCxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFJTyxNQUFNLENBQUMsc0JBQXNCLENBQW9DLEtBQVU7UUFDL0UsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUM5QixNQUFNLE1BQU0sR0FBUSxFQUFFLENBQUM7UUFDdkIsb0NBQW9DO1FBQ3BDLG1FQUFtRTtRQUNuRSxJQUFJO1FBQ0osS0FBSyxJQUFJLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN2QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckIsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFPLENBQUMsQ0FBQztRQUMxRCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7UUFDZCx3RkFBd0Y7SUFDNUYsQ0FBQztJQUNELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFVO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUEwQixLQUFLLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBQ0QsTUFBTSxDQUFDLG9CQUFvQixDQUFDLEtBQVU7UUFDbEMsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQTRCLEtBQUssQ0FBQyxDQUFDO0lBQ3pFLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vIGltcG9ydCB7IEtleVBhaXIgfSBmcm9tIFwiLi4vbW9kZWxzL2tleS1wYWlyLm1vZGVsXCI7XHJcbi8vIGltcG9ydCB7IFRyZWUgfSBmcm9tIFwiLi4vbW9kZWxzL3RyZWUubW9kZWxcIjtcclxuXHJcbmltcG9ydCB7IEtleVBhaXIsIEtleVBhaXJFeCwgVHJlZSB9IGZyb20gXCIuLi9tb2RlbHNcIjtcclxuaW1wb3J0IHsgSUZsYXR0ZW5UcmVlIH0gZnJvbSBcIi4uL21vZGVscy9mbGF0dGVuLXRyZWVcIjtcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgQXJyYXlIZWxwZXIge1xyXG4gICAgc3RhdGljIGluc2VydChhcnJheTogYW55W10sIGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkge1xyXG4gICAgICAgIGFycmF5LnNwbGljZShpbmRleCwgMCwgaXRlbSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlIGl0ZW0gZnJvbSBhcnJheVxyXG4gICAgICogQHBhcmFtIGFycmF5IFxyXG4gICAgICogQHBhcmFtIGl0ZW0gaXRlbSB0byByZW1vdmVcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHJlbW92ZShhcnJheTogYW55W10sIGl0ZW06IGFueSkge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gYXJyYXkuaW5kZXhPZihpdGVtKTtcclxuICAgICAgICBpZiAoaW5kZXggPiAtMSkgeyAvLyBvbmx5IHNwbGljZSBhcnJheSB3aGVuIGl0ZW0gaXMgZm91bmRcclxuICAgICAgICAgICAgYXJyYXkuc3BsaWNlKGluZGV4LCAxKTsgLy8gMm5kIHBhcmFtZXRlciBtZWFucyByZW1vdmUgb25lIGl0ZW0gb25seVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmUgYWxsIGl0ZW1zIGZyb20gYXJyYXlcclxuICAgICAqIEBwYXJhbSBhcnJheSBcclxuICAgICAqIEBwYXJhbSBpdGVtIGl0ZW0gdG8gcmVtb3ZlXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyByZW1vdmVBbGwoYXJyYXk6IGFueVtdLCBpdGVtOiBhbnkpIHtcclxuICAgICAgICB2YXIgaSA9IDA7XHJcbiAgICAgICAgd2hpbGUgKGkgPCBhcnJheS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgaWYgKGFycmF5W2ldID09PSBpdGVtKSB7XHJcbiAgICAgICAgICAgICAgICBhcnJheS5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICArK2k7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHN0YXRpYyBtb3ZlKGFycmF5OiBhbnlbXSwgZnJvbUluZGV4OiBudW1iZXIsIHRvSW5kZXg6IG51bWJlcikge1xyXG5cclxuICAgICAgICBjb25zdCBpdGVtID0gYXJyYXlbZnJvbUluZGV4XTtcclxuICAgICAgICBhcnJheS5zcGxpY2UoZnJvbUluZGV4LCAxKTsvL3JlbW92ZSBpdGVtIGZycm9tIGFycmF5XHJcbiAgICAgICAgYXJyYXkuc3BsaWNlKHRvSW5kZXgsIDAsIGl0ZW0pOy8vaW5zZXJ0IGl0ZW0gaW50byBhcnJheVxyXG4gICAgICAgIHJldHVybiBhcnJheTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgY29udGFpbnModmFsdWU6IGFueVtdLCB2OiBhbnkpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZVtpXSA9PT0gdikgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgc3RhdGljIGlzQXJyYXkodmFsdWU6IGFueSkge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwO1xyXG4gICAgfVxyXG4gICAgLy8gc3RhdGljIGRpc3RpbmN0KHZhbHVlOiBhbnlbXSkge1xyXG4gICAgLy8gICAgIHZhciBhcnI6IGFueVtdID0gW107XHJcbiAgICAvLyAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgLy8gICAgICAgICBsZXQgdmFsID0gdmFsdWVbaV07XHJcbiAgICAvLyAgICAgICAgIGlmICghdGhpcy5jb250YWlucyhhcnIsIHZhbCkpIHtcclxuICAgIC8vICAgICAgICAgICAgIGFyci5wdXNoKHZhbCk7XHJcbiAgICAvLyAgICAgICAgIH1cclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgcmV0dXJuIGFycjtcclxuICAgIC8vIH1cclxuXHJcbiAgICBzdGF0aWMgZGlzdGluY3QoYXJyYXk6IGFueVtdKSB7XHJcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdXHJcbiAgICAgICAgY29uc3Qgc2VlbiA9IG5ldyBTZXQoKTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGFycmF5W2luZGV4XTtcclxuICAgICAgICAgICAgaWYgKHNlZW4uaGFzKHZhbHVlKSkgY29udGludWU7XHJcblxyXG4gICAgICAgICAgICBzZWVuLmFkZCh2YWx1ZSk7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGZpbHRlckJ5S2V5KGZpbHRlclZhbHVlOiBhbnksIGtleTogc3RyaW5nLCBhcnJheTogYW55W10pIHtcclxuICAgICAgICBpZiAodHlwZW9mIGZpbHRlclZhbHVlID09PSAndW5kZWZpbmVkJyB8fCBmaWx0ZXJWYWx1ZSA9PSBudWxsIHx8ICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyAmJiBrZXkubGVuZ3RoID09PSAwKSlcclxuICAgICAgICAgICAgcmV0dXJuIGFycmF5O1xyXG5cclxuICAgICAgICByZXR1cm4gYXJyYXkuZmlsdGVyKHggPT4geCAhPT0gdW5kZWZpbmVkICYmIHggIT09IG51bGwgJiYgeFtrZXldID09PSBmaWx0ZXJWYWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHN0YXRpYyBmbGF0dGVuKGFycmF5OiBhbnksIGluZGVudDogbnVtYmVyID0gMCkge1xyXG4gICAgICAgIGxldCByZXN1bHQ6IGFueVtdID0gW107XHJcbiAgICAgICAgLy8gSWYgdGhlIGlucHV0IGlzIGFuIGFycmF5IG9mIHRyZWVzLCB3ZSBwcm9jZXNzIGVhY2ggb25lXHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYXJyYXkpKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBhcnJheSkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdCh0aGlzLmZsYXR0ZW4oaXRlbSwgaW5kZW50KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBBZGQgdGhlIGN1cnJlbnQgdHJlZSBub2RlIHRvIHRoZSByZXN1bHRcclxuICAgICAgICAgICAgY29uc3QgaXRlbSA9IE9iamVjdC5hc3NpZ24oe30sIGFycmF5KTtcclxuICAgICAgICAgICAgaXRlbS5pbmRlbnQgPSBpbmRlbnQ7XHJcbiAgICAgICAgICAgIGl0ZW0uY291bnQgPSBBcnJheS5pc0FycmF5KGFycmF5LmNoaWxkcmVuKVxyXG4gICAgICAgICAgICAgICAgPyBhcnJheS5jaGlsZHJlbi5sZW5ndGhcclxuICAgICAgICAgICAgICAgIDogMDtcclxuICAgICAgICAgICAgZGVsZXRlIGl0ZW0uY2hpbGRyZW47XHJcbiAgICAgICAgICAgIGRlbGV0ZSBpdGVtLmNoaWxkcmVuSWRzO1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIGNoaWxkcmVuLCByZWN1cnNpdmVseSBmbGF0dGVuIHRoZW1cclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYXJyYXkuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGFycmF5LmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdCh0aGlzLmZsYXR0ZW4oY2hpbGQsIGluZGVudCArIDEpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZmxhdHRlbkRyb3BEb3duTGlzdCh0cmVlOiBUcmVlIHwgVHJlZVtdLCBpbmRlbnQ6IG51bWJlciA9IDApIHtcclxuICAgICAgICBsZXQgcmVzdWx0OiBJRmxhdHRlblRyZWVbXSA9IFtdO1xyXG4gICAgICAgIC8vIElmIHRoZSBpbnB1dCBpcyBhbiBhcnJheSBvZiB0cmVlcywgd2UgcHJvY2VzcyBlYWNoIG9uZVxyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRyZWUpKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0cmVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KHRoaXMuZmxhdHRlbkRyb3BEb3duTGlzdChpdGVtLCBpbmRlbnQpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIEFkZCB0aGUgY3VycmVudCB0cmVlIG5vZGUgdG8gdGhlIHJlc3VsdFxyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHtcclxuICAgICAgICAgICAgICAgIGtleTogdHJlZS5rZXksXHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJyZlbXNwOycucmVwZWF0KGluZGVudCkgKyB0cmVlLnZhbHVlLFxyXG4gICAgICAgICAgICAgICAgaW5kZW50OiBpbmRlbnQsXHJcbiAgICAgICAgICAgICAgICBjb3VudDogQXJyYXkuaXNBcnJheSh0cmVlLmNoaWxkcmVuKSA/IHRyZWUuY2hpbGRyZW4ubGVuZ3RoIDogMFxyXG4gICAgICAgICAgICB9IGFzIElGbGF0dGVuVHJlZTtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBjaGlsZHJlbiwgcmVjdXJzaXZlbHkgZmxhdHRlbiB0aGVtXHJcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRyZWUuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRyZWUuY2hpbGRyZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KHRoaXMuZmxhdHRlbkRyb3BEb3duTGlzdChjaGlsZCwgaW5kZW50ICsgMSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIGVudW1Ub0tleVBhaXJCYXNlQXJyYXk8VCBleHRlbmRzIEtleVBhaXI8bnVtYmVyLCBzdHJpbmc+Pih2YWx1ZTogYW55KTogVFtdIHtcclxuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModmFsdWUpO1xyXG4gICAgICAgIGNvbnN0IHNsaWNlID0ga2V5cy5sZW5ndGggLyAyO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdDogVFtdID0gW107XHJcbiAgICAgICAgLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBzbGljZTsgaSsrKSB7XHJcbiAgICAgICAgLy8gICAgIHJlc3VsdC5wdXNoKHsga2V5OiAra2V5c1tpXSwgdmFsdWU6IGtleXNbaSArIHNsaWNlXSB9IGFzIFQpO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICBmb3IgKGxldCBpID0gc2xpY2U7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBrZXlzW2ldO1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaCh7IGtleTogKyB2YWx1ZVtuYW1lXSwgdmFsdWU6IG5hbWUgfSBhcyBUKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAvL3JldHVybiBBcnJheS5mcm9tKGtleXMuc2xpY2Uoa2V5cy5sZW5ndGggLyAyKSwgeCA9PiB7IGtleTp4LCB2YWx1ZTonYWFhJyB9IGFzIE9iamVjdCk7XHJcbiAgICB9XHJcbiAgICBzdGF0aWMgZW51bVRvS2V5UGFpckFycmF5KHZhbHVlOiBhbnkpOiBLZXlQYWlyPG51bWJlciwgc3RyaW5nPltdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5lbnVtVG9LZXlQYWlyQmFzZUFycmF5PEtleVBhaXI8bnVtYmVyLCBzdHJpbmc+Pih2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBzdGF0aWMgZW51bVRvS2V5UGFpckV4QXJyYXkodmFsdWU6IGFueSk6IEtleVBhaXJFeDxudW1iZXIsIHN0cmluZz5bXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZW51bVRvS2V5UGFpckJhc2VBcnJheTxLZXlQYWlyRXg8bnVtYmVyLCBzdHJpbmc+Pih2YWx1ZSk7XHJcbiAgICB9XHJcbn0iXX0=
216
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvemVrL3NyYy9saWIvdXRpbHMvYXJyYXktaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNEQUFzRDtBQUN0RCwrQ0FBK0M7QUFPL0MsTUFBTSxPQUFPLFdBQVc7SUFDcEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFZLEVBQUUsS0FBYSxFQUFFLElBQVM7UUFDaEQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFHRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFZLEVBQUUsSUFBUztRQUNqQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyx1Q0FBdUM7WUFDckQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQywyQ0FBMkM7UUFDdkUsQ0FBQztJQUNMLENBQUM7SUFHRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFZLEVBQUUsSUFBUztRQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDVixPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEIsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ3BCLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixFQUFFLENBQUMsQ0FBQztZQUNSLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUdELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBWSxF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Q3BCLENBQUM7aUJBQU0sQ0FBQztnQkFDSix5REFBeUQ7Z0JBQ3pELElBQUksVUFBVSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3BDLElBQUksVUFBVSxFQUFFLENBQUM7b0JBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQzt3QkFDbkMsVUFBVSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7b0JBQzdCLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNuQyxDQUFDO3FCQUFNLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ2QscUVBQXFFO29CQUNyRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwQixDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSBcIi4uL21vZGVscy9rZXktcGFpci5tb2RlbFwiO1xyXG4vLyBpbXBvcnQgeyBUcmVlIH0gZnJvbSBcIi4uL21vZGVscy90cmVlLm1vZGVsXCI7XHJcblxyXG5pbXBvcnQgeyBLZXlQYWlyLCBLZXlQYWlyRXgsIFRyZWUgfSBmcm9tIFwiLi4vbW9kZWxzXCI7XHJcbmltcG9ydCB7IElGbGF0dGVuVHJlZSwgSUZsYXR0ZW5UcmVlTm9kZSwgSU5vZGUsIElUcmVlTm9kZSB9IGZyb20gXCIuLi9tb2RlbHMvdHJlZVwiO1xyXG5cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgQXJyYXlIZWxwZXIge1xyXG4gICAgc3RhdGljIGluc2VydChhcnJheTogYW55W10sIGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkge1xyXG4gICAgICAgIGFycmF5LnNwbGljZShpbmRleCwgMCwgaXRlbSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlIGl0ZW0gZnJvbSBhcnJheVxyXG4gICAgICogQHBhcmFtIGFycmF5IFxyXG4gICAgICogQHBhcmFtIGl0ZW0gaXRlbSB0byByZW1vdmVcclxuICAgICAqL1xyXG4gICAgc3RhdGljIHJlbW92ZShhcnJheTogYW55W10sIGl0ZW06IGFueSkge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gYXJyYXkuaW5kZXhPZihpdGVtKTtcclxuICAgICAgICBpZiAoaW5kZXggPiAtMSkgeyAvLyBvbmx5IHNwbGljZSBhcnJheSB3aGVuIGl0ZW0gaXMgZm91bmRcclxuICAgICAgICAgICAgYXJyYXkuc3BsaWNlKGluZGV4LCAxKTsgLy8gMm5kIHBhcmFtZXRlciBtZWFucyByZW1vdmUgb25lIGl0ZW0gb25seVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmUgYWxsIGl0ZW1zIGZyb20gYXJyYXlcclxuICAgICAqIEBwYXJhbSBhcnJheSBcclxuICAgICAqIEBwYXJhbSBpdGVtIGl0ZW0gdG8gcmVtb3ZlXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyByZW1vdmVBbGwoYXJyYXk6IGFueVtdLCBpdGVtOiBhbnkpIHtcclxuICAgICAgICB2YXIgaSA9IDA7XHJcbiAgICAgICAgd2hpbGUgKGkgPCBhcnJheS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgaWYgKGFycmF5W2ldID09PSBpdGVtKSB7XHJcbiAgICAgICAgICAgICAgICBhcnJheS5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICArK2k7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHN0YXRpYyBtb3ZlKGFycmF5OiBhbnlbXSwgZnJvbUluZGV4OiBudW1iZXIsIHRvSW5kZXg6IG51bWJlcikge1xyXG5cclxuICAgICAgICBjb25zdCBpdGVtID0gYXJyYXlbZnJvbUluZGV4XTtcclxuICAgICAgICBhcnJheS5zcGxpY2UoZnJvbUluZGV4LCAxKTsvL3JlbW92ZSBpdGVtIGZycm9tIGFycmF5XHJcbiAgICAgICAgYXJyYXkuc3BsaWNlKHRvSW5kZXgsIDAsIGl0ZW0pOy8vaW5zZXJ0IGl0ZW0gaW50byBhcnJheVxyXG4gICAgICAgIHJldHVybiBhcnJheTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgY29udGFpbnModmFsdWU6IGFueVtdLCB2OiBhbnkpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZVtpXSA9PT0gdikgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgc3RhdGljIGlzQXJyYXkodmFsdWU6IGFueSkge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwO1xyXG4gICAgfVxyXG4gICAgLy8gc3RhdGljIGRpc3RpbmN0KHZhbHVlOiBhbnlbXSkge1xyXG4gICAgLy8gICAgIHZhciBhcnI6IGFueVtdID0gW107XHJcbiAgICAvLyAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgLy8gICAgICAgICBsZXQgdmFsID0gdmFsdWVbaV07XHJcbiAgICAvLyAgICAgICAgIGlmICghdGhpcy5jb250YWlucyhhcnIsIHZhbCkpIHtcclxuICAgIC8vICAgICAgICAgICAgIGFyci5wdXNoKHZhbCk7XHJcbiAgICAvLyAgICAgICAgIH1cclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgcmV0dXJuIGFycjtcclxuICAgIC8vIH1cclxuXHJcbiAgICBzdGF0aWMgZGlzdGluY3QoYXJyYXk6IGFueVtdKSB7XHJcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdXHJcbiAgICAgICAgY29uc3Qgc2VlbiA9IG5ldyBTZXQoKTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGFycmF5W2luZGV4XTtcclxuICAgICAgICAgICAgaWYgKHNlZW4uaGFzKHZhbHVlKSkgY29udGludWU7XHJcblxyXG4gICAgICAgICAgICBzZWVuLmFkZCh2YWx1ZSk7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGZpbHRlckJ5S2V5KGZpbHRlclZhbHVlOiBhbnksIGtleTogc3RyaW5nLCBhcnJheTogYW55W10pIHtcclxuICAgICAgICBpZiAodHlwZW9mIGZpbHRlclZhbHVlID09PSAndW5kZWZpbmVkJyB8fCBmaWx0ZXJWYWx1ZSA9PSBudWxsIHx8ICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyAmJiBrZXkubGVuZ3RoID09PSAwKSlcclxuICAgICAgICAgICAgcmV0dXJuIGFycmF5O1xyXG5cclxuICAgICAgICByZXR1cm4gYXJyYXkuZmlsdGVyKHggPT4geCAhPT0gdW5kZWZpbmVkICYmIHggIT09IG51bGwgJiYgeFtrZXldID09PSBmaWx0ZXJWYWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICBzdGF0aWMgZmxhdHRlbihhcnJheTogYW55LCBpbmRlbnQ6IG51bWJlciA9IDApIHtcclxuICAgICAgICBsZXQgcmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShhcnJheSkpIHtcclxuICAgICAgICAgICAgY29uc3QgZmxhdHRlbmVkSXRlbSA9IHtcclxuICAgICAgICAgICAgICAgIC4uLmFycmF5LCAvLyBzaGFsbG93IGNvcHkgdGhlIGN1cnJlbnQgaXRlbVxyXG4gICAgICAgICAgICAgICAgaW5kZW50LCAvLyBhZGQgdGhlIGN1cnJlbnQgaW5kZW50IGxldmVsXHJcbiAgICAgICAgICAgICAgICBjb3VudDogQXJyYXkuaXNBcnJheShhcnJheS5jaGlsZHJlbikgPyBhcnJheS5jaGlsZHJlbi5sZW5ndGggOiAwIC8vIHNldCBjb3VudCBiYXNlZCBvbiBjaGlsZHJlblxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgZGVsZXRlIGZsYXR0ZW5lZEl0ZW0uY2hpbGRyZW47XHJcbiAgICAgICAgICAgIGRlbGV0ZSBmbGF0dGVuZWRJdGVtLmNoaWxkcmVuSWRzO1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaChmbGF0dGVuZWRJdGVtKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChmbGF0dGVuZWRJdGVtLmNvdW50KSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCguLi50aGlzLmZsYXR0ZW4oYXJyYXkuY2hpbGRyZW4sIGluZGVudCArIDEpKTsgLy8gVXNlIHNwcmVhZCBvcGVyYXRvciBmb3IgZWZmaWNpZW5jeVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXJyYXkpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLnRoaXMuZmxhdHRlbihpdGVtLCBpbmRlbnQpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICogQGRlcHJlY2F0ZWQgdXNlIGZsYXR0ZW5Ecm9wRG93bkxpc3QyXHJcbiAgICAqL1xyXG4gICAgc3RhdGljIGZsYXR0ZW5Ecm9wRG93bkxpc3QodHJlZTogVHJlZSB8IFRyZWVbXSwgaW5kZW50OiBudW1iZXIgPSAwKSB7XHJcbiAgICAgICAgbGV0IHJlc3VsdDogSUZsYXR0ZW5UcmVlW10gPSBbXTtcclxuICAgICAgICAvLyBJZiB0aGUgaW5wdXQgaXMgYW4gYXJyYXkgb2YgdHJlZXMsIHdlIHByb2Nlc3MgZWFjaCBvbmVcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodHJlZSkpIHtcclxuICAgICAgICAgICAgLy8gQWRkIHRoZSBjdXJyZW50IHRyZWUgbm9kZSB0byB0aGUgcmVzdWx0XHJcbiAgICAgICAgICAgIGxldCBpdGVtOiBJRmxhdHRlblRyZWUgPSB7XHJcbiAgICAgICAgICAgICAgICBrZXk6IHRyZWUua2V5LFxyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcmZW1zcDsnLnJlcGVhdChpbmRlbnQpICsgdHJlZS52YWx1ZSxcclxuICAgICAgICAgICAgICAgIGluZGVudDogaW5kZW50LFxyXG4gICAgICAgICAgICAgICAgY291bnQ6IEFycmF5LmlzQXJyYXkodHJlZS5jaGlsZHJlbikgPyB0cmVlLmNoaWxkcmVuLmxlbmd0aCA6IDBcclxuICAgICAgICAgICAgfSBhcyBJRmxhdHRlblRyZWU7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgY2hpbGRyZW4sIHJlY3Vyc2l2ZWx5IGZsYXR0ZW4gdGhlbVxyXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0cmVlLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4udGhpcy5mbGF0dGVuRHJvcERvd25MaXN0KHRyZWUuY2hpbGRyZW4sIGluZGVudCArIDEpKTsgLy8gVXNlIHNwcmVhZCBvcGVyYXRvciBmb3IgZWZmaWNpZW5jeVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRyZWUpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKC4uLnRoaXMuZmxhdHRlbkRyb3BEb3duTGlzdChpdGVtLCBpbmRlbnQpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZmxhdHRlblRyZWVOb2RlRHJvcERvd25MaXN0KHRyZWU6IElUcmVlTm9kZSB8IElUcmVlTm9kZVtdLCBpbmRlbnQ6IG51bWJlciA9IDApIHtcclxuICAgICAgICBsZXQgcmVzdWx0OiBJRmxhdHRlblRyZWVOb2RlW10gPSBbXTtcclxuICAgICAgICAvLyBJZiB0aGUgaW5wdXQgaXMgYW4gYXJyYXkgb2YgdHJlZXMsIHdlIHByb2Nlc3MgZWFjaCBvbmVcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodHJlZSkpIHtcclxuICAgICAgICAgICAgLy8gQWRkIHRoZSBjdXJyZW50IHRyZWUgbm9kZSB0byB0aGUgcmVzdWx0XHJcbiAgICAgICAgICAgIGxldCBpdGVtOiBJRmxhdHRlblRyZWVOb2RlID0ge1xyXG4gICAgICAgICAgICAgICAgaWQ6IHRyZWUuaWQsXHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnJmVtc3A7Jy5yZXBlYXQoaW5kZW50KSArIHRyZWUubmFtZSxcclxuICAgICAgICAgICAgICAgIGluZGVudDogaW5kZW50LFxyXG4gICAgICAgICAgICAgICAgY291bnQ6IEFycmF5LmlzQXJyYXkodHJlZS5jaGlsZHJlbikgPyB0cmVlLmNoaWxkcmVuLmxlbmd0aCA6IDBcclxuICAgICAgICAgICAgfSBhcyBJRmxhdHRlblRyZWU7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgY2hpbGRyZW4sIHJlY3Vyc2l2ZWx5IGZsYXR0ZW4gdGhlbVxyXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0cmVlLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4udGhpcy5mbGF0dGVuVHJlZU5vZGVEcm9wRG93bkxpc3QodHJlZS5jaGlsZHJlbiwgaW5kZW50ICsgMSkpOyAvLyBVc2Ugc3ByZWFkIG9wZXJhdG9yIGZvciBlZmZpY2llbmN5XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdHJlZSkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4udGhpcy5mbGF0dGVuVHJlZU5vZGVEcm9wRG93bkxpc3QoaXRlbSwgaW5kZW50KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIGVudW1Ub0tleVBhaXJCYXNlQXJyYXk8VCBleHRlbmRzIEtleVBhaXI8bnVtYmVyLCBzdHJpbmc+Pih2YWx1ZTogYW55KTogVFtdIHtcclxuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModmFsdWUpO1xyXG4gICAgICAgIGNvbnN0IHNsaWNlID0ga2V5cy5sZW5ndGggLyAyO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdDogVFtdID0gW107XHJcbiAgICAgICAgLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBzbGljZTsgaSsrKSB7XHJcbiAgICAgICAgLy8gICAgIHJlc3VsdC5wdXNoKHsga2V5OiAra2V5c1tpXSwgdmFsdWU6IGtleXNbaSArIHNsaWNlXSB9IGFzIFQpO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICBmb3IgKGxldCBpID0gc2xpY2U7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBrZXlzW2ldO1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaCh7IGtleTogKyB2YWx1ZVtuYW1lXSwgdmFsdWU6IG5hbWUgfSBhcyBUKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAvL3JldHVybiBBcnJheS5mcm9tKGtleXMuc2xpY2Uoa2V5cy5sZW5ndGggLyAyKSwgeCA9PiB7IGtleTp4LCB2YWx1ZTonYWFhJyB9IGFzIE9iamVjdCk7XHJcbiAgICB9XHJcbiAgICBzdGF0aWMgZW51bVRvS2V5UGFpckFycmF5KHZhbHVlOiBhbnkpOiBLZXlQYWlyPG51bWJlciwgc3RyaW5nPltdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5lbnVtVG9LZXlQYWlyQmFzZUFycmF5PEtleVBhaXI8bnVtYmVyLCBzdHJpbmc+Pih2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBzdGF0aWMgZW51bVRvS2V5UGFpckV4QXJyYXkodmFsdWU6IGFueSk6IEtleVBhaXJFeDxudW1iZXIsIHN0cmluZz5bXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZW51bVRvS2V5UGFpckJhc2VBcnJheTxLZXlQYWlyRXg8bnVtYmVyLCBzdHJpbmc+Pih2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kIHRvIGNyZWF0ZSBhIHRyZWUgZnJvbSBhIGZsYXQgYXJyYXkgb2Ygbm9kZXNcclxuICAgICAqIEBwYXJhbSBhcnJheSBcclxuICAgICAqIEBwYXJhbSBzYWZlIGlmIHR1ZSBhbmQgc29tZSBub2RlcyBub3QgaGF2ZSBwYXJlbnQgdGhhbmQgYWRkcyBhcyBhIHJvb3Qgbm9kZS4gaWYgZmFsc2UgdGhhbiB0aG9vc2Ugbm9kZXMgc2tpcHBlZC5cclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgY3JlYXRlVHJlZShhcnJheTogSU5vZGVbXSwgc2FmZSA9IHRydWUpOiBJVHJlZU5vZGVbXSB7XHJcbiAgICAgICAgY29uc3QgdHJlZTogSVRyZWVOb2RlW10gPSBbXTtcclxuXHJcbiAgICAgICAgLy8gTWFwIHRvIHN0b3JlIG5vZGVzIGJ5IHRoZWlyIGlkIGZvciBlYXN5IGFjY2Vzc1xyXG4gICAgICAgIGNvbnN0IG1hcDogeyBba2V5OiBudW1iZXJdOiBJVHJlZU5vZGUgfSA9IHt9O1xyXG5cclxuICAgICAgICAvLyBTdGVwIDE6IExvb3Agb3ZlciB0aGUgYXJyYXkgdG8gYnVpbGQgdGhlIG5vZGVzXHJcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGFycmF5KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vZGU6IElUcmVlTm9kZSA9IHtcclxuICAgICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxyXG4gICAgICAgICAgICAgICAgcGFyZW50SWQ6IGl0ZW0ucGFyZW50SWQgPz8gbnVsbCxcclxuICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZSA/PyBudWxsLFxyXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IG51bGxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgbWFwW25vZGUuaWRdID0gbm9kZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBhcnJheSkge1xyXG4gICAgICAgICAgICBjb25zdCBub2RlID0gbWFwW2l0ZW0uaWRdO1xyXG5cclxuICAgICAgICAgICAgLy8gU3RlcCAyOiBDaGVjayBpZiBpdCdzIGEgcm9vdCBvciBjaGlsZCBhbmQgYXNzaWduIHRvIHBhcmVudCBvciB0cmVlXHJcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygbm9kZS5wYXJlbnRJZCA9PT0gJ3VuZGVmaW5lZCcgfHwgbm9kZS5wYXJlbnRJZCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgLy8gUm9vdCBub2RlLCBhZGQgZGlyZWN0bHkgdG8gdGhlIHRyZWVcclxuICAgICAgICAgICAgICAgIHRyZWUucHVzaChub2RlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIE5vbi1yb290IG5vZGUsIGZpbmQgaXRzIHBhcmVudCBhbmQgYWRkIHRvIGl0cyBjaGlsZHJlblxyXG4gICAgICAgICAgICAgICAgbGV0IHBhcmVudE5vZGUgPSBtYXBbbm9kZS5wYXJlbnRJZF07XHJcbiAgICAgICAgICAgICAgICBpZiAocGFyZW50Tm9kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShwYXJlbnROb2RlLmNoaWxkcmVuKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Tm9kZS5jaGlsZHJlbiA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudE5vZGUuY2hpbGRyZW4ucHVzaChub2RlKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2FmZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vaWYgc2F2ZT10cnVlIGFuZCBwYXJlbnQgbm9kZSBub3QgZXhpc3RzLCB0aGVuIHdlIGFkZCBhcyBhIHJvb3Qgbm9kZVxyXG4gICAgICAgICAgICAgICAgICAgIHRyZWUucHVzaChub2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRyZWU7XHJcbiAgICB9XHJcblxyXG59Il19
@@ -21,7 +21,8 @@ export * from './storage-helper';
21
21
  export * from './string-helper';
22
22
  export * from './thenBy';
23
23
  export * from './time-helper';
24
+ export * from './interval-helper';
24
25
  export * from './tmp-helper';
25
26
  export * from './url-helper';
26
27
  export * from './validation-helper';
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FycmF5LWhlbHBlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vYmFzZTY0LWhlbHBlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vYml0d2lzZS1oZWxwZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2Jvb3RzdHJhcC5oZWxwZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbnZlcnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Nzcy1oZWxwZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2RhdGUtaGVscGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9lcnJvci1oZWxwZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2V4Y2VsLWhlbHBlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vZmlsZS5oZWxwZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlci1oZWxwZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2hhbmRsZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2h0bWwtaGVscGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9qd3QtaGVscGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9tYXRoLWhlbHBlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vb2JqZWN0LWhlbHBlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vb3ZlcmxhcC1oZWxwZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL3BhZ2VyLWhlbHBlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vcmFuZG9tLWhlbHBlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3RvcmFnZS1oZWxwZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL3N0cmluZy1oZWxwZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL3RoZW5CeSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdGltZS1oZWxwZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL3RtcC1oZWxwZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL3VybC1oZWxwZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL3ZhbGlkYXRpb24taGVscGVyJzsiXX0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96ZWsvc3JjL2xpYi91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXJyYXktaGVscGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9iYXNlNjQtaGVscGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9iaXR3aXNlLWhlbHBlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vYm9vdHN0cmFwLmhlbHBlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29udmVydCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY3NzLWhlbHBlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGF0ZS1oZWxwZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2Vycm9yLWhlbHBlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXhjZWwtaGVscGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9maWxlLmhlbHBlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vZmlsdGVyLWhlbHBlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vaGFuZGxlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vaHRtbC1oZWxwZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2p3dC1oZWxwZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL21hdGgtaGVscGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9vYmplY3QtaGVscGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9vdmVybGFwLWhlbHBlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGFnZXItaGVscGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9yYW5kb20taGVscGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9zdG9yYWdlLWhlbHBlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3RyaW5nLWhlbHBlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vdGhlbkJ5JztcclxuZXhwb3J0ICogZnJvbSAnLi90aW1lLWhlbHBlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJ2YWwtaGVscGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi90bXAtaGVscGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi91cmwtaGVscGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi92YWxpZGF0aW9uLWhlbHBlcic7Il19
@@ -0,0 +1,32 @@
1
+ export class IntervalHelper {
2
+ static { this._timeouts = []; }
3
+ static create(callback, ms) {
4
+ const id = setInterval(() => {
5
+ callback();
6
+ }, ms);
7
+ const timeout = {
8
+ id: +id,
9
+ callback: callback.toString(),
10
+ interval: ms,
11
+ createdAt: new Date()
12
+ };
13
+ this._timeouts.push(timeout);
14
+ return timeout;
15
+ }
16
+ static clear(id) {
17
+ const index = this._timeouts.findIndex(x => x.id === id);
18
+ if (index !== -1) {
19
+ clearInterval(id);
20
+ this._timeouts.splice(index, 1);
21
+ return true;
22
+ }
23
+ return false;
24
+ }
25
+ static clearAll() {
26
+ for (const timeout of this._timeouts) {
27
+ this.clear(timeout.id);
28
+ }
29
+ this._timeouts = [];
30
+ }
31
+ }
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJ2YWwtaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvemVrL3NyYy9saWIvdXRpbHMvaW50ZXJ2YWwtaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE1BQU0sT0FBTyxjQUFjO2FBQ1YsY0FBUyxHQUFlLEVBQUUsQ0FBQztJQUUxQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQWtCLEVBQUUsRUFBVTtRQUMxQyxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO1lBQzFCLFFBQVEsRUFBRSxDQUFDO1FBQ2IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRVAsTUFBTSxPQUFPLEdBQUc7WUFDZCxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ1AsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUU7WUFDN0IsUUFBUSxFQUFFLEVBQUU7WUFDWixTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUU7U0FDVixDQUFDO1FBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBVTtRQUNyQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDekQsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNqQixhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRO1FBQ2IsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuZXhwb3J0IGludGVyZmFjZSBJVGltZW91dCB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBjYWxsYmFjazogc3RyaW5nO1xyXG4gIGludGVydmFsOiBudW1iZXI7XHJcbiAgY3JlYXRlZEF0OiBEYXRlO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgSW50ZXJ2YWxIZWxwZXIge1xyXG4gIHByaXZhdGUgc3RhdGljIF90aW1lb3V0czogSVRpbWVvdXRbXSA9IFtdO1xyXG5cclxuICBzdGF0aWMgY3JlYXRlKGNhbGxiYWNrOiBGdW5jdGlvbiwgbXM6IG51bWJlcikge1xyXG4gICAgY29uc3QgaWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICB9LCBtcyk7XHJcblxyXG4gICAgY29uc3QgdGltZW91dCA9IHtcclxuICAgICAgaWQ6ICtpZCxcclxuICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrLnRvU3RyaW5nKCksXHJcbiAgICAgIGludGVydmFsOiBtcyxcclxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpXHJcbiAgICB9IGFzIElUaW1lb3V0O1xyXG4gICAgdGhpcy5fdGltZW91dHMucHVzaCh0aW1lb3V0KTtcclxuICAgIHJldHVybiB0aW1lb3V0O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNsZWFyKGlkOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fdGltZW91dHMuZmluZEluZGV4KHggPT4geC5pZCA9PT0gaWQpO1xyXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gICAgICBjbGVhckludGVydmFsKGlkKTtcclxuICAgICAgdGhpcy5fdGltZW91dHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY2xlYXJBbGwoKSB7XHJcbiAgICBmb3IgKGNvbnN0IHRpbWVvdXQgb2YgdGhpcy5fdGltZW91dHMpIHtcclxuICAgICAgdGhpcy5jbGVhcih0aW1lb3V0LmlkKTtcclxuICAgIH1cclxuICAgIHRoaXMuX3RpbWVvdXRzID0gW107XHJcbiAgfVxyXG59Il19
@@ -2,10 +2,11 @@
2
2
  * Public API Surface of zek
3
3
  */
4
4
  export * from "./lib/components";
5
+ export * from "./lib/directives";
5
6
  export * from "./lib/models";
6
7
  export * from "./lib/modules";
7
8
  export * from "./lib/services";
8
9
  export * from "./lib/utils";
9
10
  export * from "./lib/tokens";
10
11
  export * from "./lib/zek.module";
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3play9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGFBQWEsQ0FBQztBQUU1QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHpla1xyXG4gKi9cclxuXHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnRzXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9tb2RlbHNcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL21vZHVsZXNcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL3NlcnZpY2VzXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi91dGlsc1wiO1xyXG5cclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL3Rva2Vuc1wiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvemVrLm1vZHVsZVwiOyJdfQ==
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3play9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsYUFBYSxDQUFDO0FBRTVCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgemVrXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHNcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2RpcmVjdGl2ZXNcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL21vZGVsc1wiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvbW9kdWxlc1wiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvc2VydmljZXNcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL3V0aWxzXCI7XHJcblxyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvdG9rZW5zXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi96ZWsubW9kdWxlXCI7Il19