@payloadcms/db-postgres 0.5.2 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. package/dist/connect.d.ts.map +1 -1
  2. package/dist/connect.js +48 -8
  3. package/dist/find/traverseFields.js +2 -2
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +8 -2
  6. package/dist/init.d.ts.map +1 -1
  7. package/dist/init.js +12 -7
  8. package/dist/migrate.js +2 -2
  9. package/dist/migrateFresh.d.ts.map +1 -1
  10. package/dist/migrateFresh.js +3 -3
  11. package/dist/queries/buildQuery.d.ts +2 -1
  12. package/dist/queries/buildQuery.d.ts.map +1 -1
  13. package/dist/queries/buildQuery.js +3 -2
  14. package/dist/queries/getTableColumnFromPath.d.ts +9 -4
  15. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
  16. package/dist/queries/getTableColumnFromPath.js +40 -13
  17. package/dist/queries/parseParams.d.ts.map +1 -1
  18. package/dist/queries/parseParams.js +6 -8
  19. package/dist/queries/sanitizeQueryValue.d.ts +3 -1
  20. package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
  21. package/dist/queries/sanitizeQueryValue.js +5 -3
  22. package/dist/schema/build.d.ts.map +1 -1
  23. package/dist/schema/build.js +13 -15
  24. package/dist/schema/parentIDColumnMap.d.ts +3 -6
  25. package/dist/schema/parentIDColumnMap.d.ts.map +1 -1
  26. package/dist/schema/parentIDColumnMap.js +2 -1
  27. package/dist/schema/setColumnID.d.ts +11 -0
  28. package/dist/schema/setColumnID.d.ts.map +1 -0
  29. package/dist/schema/setColumnID.js +34 -0
  30. package/dist/schema/traverseFields.d.ts.map +1 -1
  31. package/dist/schema/traverseFields.js +2 -1
  32. package/dist/types.d.ts +11 -2
  33. package/dist/types.d.ts.map +1 -1
  34. package/dist/upsertRow/insertArrays.d.ts.map +1 -1
  35. package/dist/upsertRow/insertArrays.js +19 -5
  36. package/dist/utilities/createMigrationTable.d.ts +2 -2
  37. package/dist/utilities/createMigrationTable.d.ts.map +1 -1
  38. package/dist/utilities/createMigrationTable.js +5 -4
  39. package/package.json +3 -3
  40. package/dist/schema/getConfigIDType.d.ts +0 -3
  41. package/dist/schema/getConfigIDType.d.ts.map +0 -1
  42. package/dist/schema/getConfigIDType.js +0 -25
@@ -20,7 +20,7 @@ function _interop_require_default(obj) {
20
20
  default: obj
21
21
  };
22
22
  }
23
- const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPrefix = '', constraintPath: incomingConstraintPath, constraints = [], fields, joinAliases, joins, locale: incomingLocale, pathSegments: incomingSegments, rootTableName: incomingRootTableName, selectFields, tableName, tableNameSuffix = '' })=>{
23
+ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPrefix = '', constraintPath: incomingConstraintPath, constraints = [], fields, joinAliases, joins, locale: incomingLocale, pathSegments: incomingSegments, rootTableName: incomingRootTableName, selectFields, tableName, tableNameSuffix = '', value })=>{
24
24
  const fieldPath = incomingSegments[0];
25
25
  let locale = incomingLocale;
26
26
  const rootTableName = incomingRootTableName || tableName;
@@ -34,7 +34,7 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
34
34
  constraints,
35
35
  field: {
36
36
  name: 'id',
37
- type: 'number'
37
+ type: adapter.idType === 'uuid' ? 'text' : 'number'
38
38
  },
39
39
  table: adapter.tables[newTableName]
40
40
  };
@@ -73,7 +73,8 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
73
73
  rootTableName,
74
74
  selectFields,
75
75
  tableName: newTableName,
76
- tableNameSuffix
76
+ tableNameSuffix,
77
+ value
77
78
  });
78
79
  }
79
80
  case 'tab':
@@ -94,7 +95,8 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
94
95
  rootTableName,
95
96
  selectFields,
96
97
  tableName: newTableName,
97
- tableNameSuffix: `${tableNameSuffix}${(0, _tosnakecase.default)(field.name)}_`
98
+ tableNameSuffix: `${tableNameSuffix}${(0, _tosnakecase.default)(field.name)}_`,
99
+ value
98
100
  });
99
101
  }
100
102
  return getTableColumnFromPath({
@@ -112,7 +114,8 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
112
114
  rootTableName,
113
115
  selectFields,
114
116
  tableName: newTableName,
115
- tableNameSuffix
117
+ tableNameSuffix,
118
+ value
116
119
  });
117
120
  }
118
121
  case 'group':
@@ -143,7 +146,8 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
143
146
  rootTableName,
144
147
  selectFields,
145
148
  tableName: newTableName,
146
- tableNameSuffix: `${tableNameSuffix}${(0, _tosnakecase.default)(field.name)}_`
149
+ tableNameSuffix: `${tableNameSuffix}${(0, _tosnakecase.default)(field.name)}_`,
150
+ value
147
151
  });
148
152
  }
149
153
  case 'array':
@@ -174,13 +178,37 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
174
178
  pathSegments: pathSegments.slice(1),
175
179
  rootTableName,
176
180
  selectFields,
177
- tableName: newTableName
181
+ tableName: newTableName,
182
+ value
178
183
  });
179
184
  }
180
185
  case 'blocks':
181
186
  {
182
187
  let blockTableColumn;
183
188
  let newTableName;
189
+ // handle blockType queries
190
+ if (pathSegments[1] === 'blockType') {
191
+ // find the block config using the value
192
+ const blockTypes = Array.isArray(value) ? value : [
193
+ value
194
+ ];
195
+ blockTypes.forEach((blockType)=>{
196
+ const block = field.blocks.find((block)=>block.slug === blockType);
197
+ newTableName = `${tableName}_blocks_${(0, _tosnakecase.default)(block.slug)}`;
198
+ joins[newTableName] = (0, _drizzleorm.eq)(adapter.tables[tableName].id, adapter.tables[newTableName]._parentID);
199
+ constraints.push({
200
+ columnName: '_path',
201
+ table: adapter.tables[newTableName],
202
+ value: pathSegments[0]
203
+ });
204
+ });
205
+ return {
206
+ constraints,
207
+ field,
208
+ getNotNullColumnByValue: ()=>'id',
209
+ table: adapter.tables[tableName]
210
+ };
211
+ }
184
212
  const hasBlockField = field.blocks.some((block)=>{
185
213
  newTableName = `${tableName}_blocks_${(0, _tosnakecase.default)(block.slug)}`;
186
214
  constraintPath = `${constraintPath}${field.name}.%.`;
@@ -200,7 +228,8 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
200
228
  pathSegments: pathSegments.slice(1),
201
229
  rootTableName,
202
230
  selectFields: blockSelectFields,
203
- tableName: newTableName
231
+ tableName: newTableName,
232
+ value
204
233
  });
205
234
  } catch (error) {
206
235
  // this is fine, not every block will have the field
@@ -238,9 +267,6 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
238
267
  table: blockTableColumn.table
239
268
  };
240
269
  }
241
- if (pathSegments[1] === 'blockType') {
242
- throw new _errors.APIError('Querying on blockType is not supported');
243
- }
244
270
  break;
245
271
  }
246
272
  case 'relationship':
@@ -312,7 +338,8 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
312
338
  pathSegments: pathSegments.slice(1),
313
339
  rootTableName: newTableName,
314
340
  selectFields,
315
- tableName: newTableName
341
+ tableName: newTableName,
342
+ value
316
343
  });
317
344
  }
318
345
  default:
@@ -349,4 +376,4 @@ const getTableColumnFromPath = ({ adapter, aliasTable, collectionPath, columnPre
349
376
  throw new _errors.APIError(`Cannot find field for path at ${fieldPath}`);
350
377
  };
351
378
 
352
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL2dldFRhYmxlQ29sdW1uRnJvbVBhdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgU1FMIH0gZnJvbSAnZHJpenpsZS1vcm0nXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBGaWVsZEFmZmVjdGluZ0RhdGEsIFRhYkFzRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBhbmQsIGVxLCBsaWtlLCBzcWwgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7IGFsaWFzIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB7IEFQSUVycm9yIH0gZnJvbSAncGF5bG9hZC9lcnJvcnMnXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAncGF5bG9hZC90eXBlcydcbmltcG9ydCB7IGZsYXR0ZW5Ub3BMZXZlbEZpZWxkcyB9IGZyb20gJ3BheWxvYWQvdXRpbGl0aWVzJ1xuaW1wb3J0IHRvU25ha2VDYXNlIGZyb20gJ3RvLXNuYWtlLWNhc2UnXG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCdcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1uLCBHZW5lcmljVGFibGUsIFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBCdWlsZFF1ZXJ5Sm9pbkFsaWFzZXMsIEJ1aWxkUXVlcnlKb2lucyB9IGZyb20gJy4vYnVpbGRRdWVyeSdcblxudHlwZSBDb25zdHJhaW50ID0ge1xuICBjb2x1bW5OYW1lOiBzdHJpbmdcbiAgdGFibGU6IEdlbmVyaWNUYWJsZVxuICB2YWx1ZTogdW5rbm93blxufVxuXG50eXBlIFRhYmxlQ29sdW1uID0ge1xuICBjb2x1bW5OYW1lPzogc3RyaW5nXG4gIGNvbnN0cmFpbnRzOiBDb25zdHJhaW50W11cbiAgZmllbGQ6IEZpZWxkQWZmZWN0aW5nRGF0YVxuICBnZXROb3ROdWxsQ29sdW1uQnlWYWx1ZT86ICh2YWw6IHVua25vd24pID0+IHN0cmluZ1xuICBwYXRoU2VnbWVudHM/OiBzdHJpbmdbXVxuICByYXdDb2x1bW4/OiBTUUxcbiAgdGFibGU6IEdlbmVyaWNUYWJsZVxufVxuXG50eXBlIEFyZ3MgPSB7XG4gIGFkYXB0ZXI6IFBvc3RncmVzQWRhcHRlclxuICBhbGlhc1RhYmxlPzogR2VuZXJpY1RhYmxlXG4gIGNvbGxlY3Rpb25QYXRoOiBzdHJpbmdcbiAgY29sdW1uUHJlZml4Pzogc3RyaW5nXG4gIGNvbnN0cmFpbnRQYXRoPzogc3RyaW5nXG4gIGNvbnN0cmFpbnRzPzogQ29uc3RyYWludFtdXG4gIGZpZWxkczogKEZpZWxkIHwgVGFiQXNGaWVsZClbXVxuICBqb2luQWxpYXNlczogQnVpbGRRdWVyeUpvaW5BbGlhc2VzXG4gIGpvaW5zOiBCdWlsZFF1ZXJ5Sm9pbnNcbiAgbG9jYWxlPzogc3RyaW5nXG4gIHBhdGhTZWdtZW50czogc3RyaW5nW11cbiAgcm9vdFRhYmxlTmFtZT86IHN0cmluZ1xuICBzZWxlY3RGaWVsZHM6IFJlY29yZDxzdHJpbmcsIEdlbmVyaWNDb2x1bW4+XG4gIHRhYmxlTmFtZTogc3RyaW5nXG4gIC8qKlxuICAgKiBJZiBjcmVhdGluZyBhIG5ldyB0YWJsZSBuYW1lIGZvciBhcnJheXMgYW5kIGJsb2NrcywgdGhpcyBzdWZmaXggc2hvdWxkIGJlIGFwcGVuZGVkIHRvIHRoZSB0YWJsZSBuYW1lXG4gICAqL1xuICB0YWJsZU5hbWVTdWZmaXg/OiBzdHJpbmdcbn1cbi8qKlxuICogVHJhbnNmb3JtcyBwYXRoIHRvIHRhYmxlIGFuZCBjb2x1bW4gbmFtZVxuICogQWRkcyB0YWJsZXMgdG8gYGpvaW5gXG4gKiBAcmV0dXJucyBUYWJsZUNvbHVtblxuICovXG5leHBvcnQgY29uc3QgZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCA9ICh7XG4gIGFkYXB0ZXIsXG4gIGFsaWFzVGFibGUsXG4gIGNvbGxlY3Rpb25QYXRoLFxuICBjb2x1bW5QcmVmaXggPSAnJyxcbiAgY29uc3RyYWludFBhdGg6IGluY29taW5nQ29uc3RyYWludFBhdGgsXG4gIGNvbnN0cmFpbnRzID0gW10sXG4gIGZpZWxkcyxcbiAgam9pbkFsaWFzZXMsXG4gIGpvaW5zLFxuICBsb2NhbGU6IGluY29taW5nTG9jYWxlLFxuICBwYXRoU2VnbWVudHM6IGluY29taW5nU2VnbWVudHMsXG4gIHJvb3RUYWJsZU5hbWU6IGluY29taW5nUm9vdFRhYmxlTmFtZSxcbiAgc2VsZWN0RmllbGRzLFxuICB0YWJsZU5hbWUsXG4gIHRhYmxlTmFtZVN1ZmZpeCA9ICcnLFxufTogQXJncyk6IFRhYmxlQ29sdW1uID0+IHtcbiAgY29uc3QgZmllbGRQYXRoID0gaW5jb21pbmdTZWdtZW50c1swXVxuICBsZXQgbG9jYWxlID0gaW5jb21pbmdMb2NhbGVcbiAgY29uc3Qgcm9vdFRhYmxlTmFtZSA9IGluY29taW5nUm9vdFRhYmxlTmFtZSB8fCB0YWJsZU5hbWVcbiAgbGV0IGNvbnN0cmFpbnRQYXRoID0gaW5jb21pbmdDb25zdHJhaW50UGF0aCB8fCAnJ1xuXG4gIGNvbnN0IGZpZWxkID0gZmxhdHRlblRvcExldmVsRmllbGRzKGZpZWxkcyBhcyBGaWVsZFtdKS5maW5kKFxuICAgIChmaWVsZFRvRmluZCkgPT4gZmllbGRBZmZlY3RzRGF0YShmaWVsZFRvRmluZCkgJiYgZmllbGRUb0ZpbmQubmFtZSA9PT0gZmllbGRQYXRoLFxuICApIGFzIEZpZWxkIHwgVGFiQXNGaWVsZFxuICBsZXQgbmV3VGFibGVOYW1lID0gdGFibGVOYW1lXG5cbiAgaWYgKCFmaWVsZCAmJiBmaWVsZFBhdGggPT09ICdpZCcpIHtcbiAgICBzZWxlY3RGaWVsZHMuaWQgPSBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLmlkXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbHVtbk5hbWU6ICdpZCcsXG4gICAgICBjb25zdHJhaW50cyxcbiAgICAgIGZpZWxkOiB7XG4gICAgICAgIG5hbWU6ICdpZCcsXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgfSxcbiAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgIH1cbiAgfVxuXG4gIGlmIChmaWVsZCkge1xuICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IFsuLi5pbmNvbWluZ1NlZ21lbnRzXVxuXG4gICAgLy8gSWYgbmV4dCBzZWdtZW50IGlzIGEgbG9jYWxlLFxuICAgIC8vIHdlIG5lZWQgdG8gdGFrZSBpdCBvdXQgYW5kIHVzZSBpdCBhcyB0aGUgbG9jYWxlIGZyb20gdGhpcyBwb2ludCBvblxuICAgIGlmICgnbG9jYWxpemVkJyBpbiBmaWVsZCAmJiBmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgIGNvbnN0IG1hdGNoZWRMb2NhbGUgPSBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbi5sb2NhbGVDb2Rlcy5maW5kKFxuICAgICAgICAobG9jYWxlKSA9PiBsb2NhbGUgPT09IHBhdGhTZWdtZW50c1sxXSxcbiAgICAgIClcblxuICAgICAgaWYgKG1hdGNoZWRMb2NhbGUpIHtcbiAgICAgICAgbG9jYWxlID0gbWF0Y2hlZExvY2FsZVxuICAgICAgICBwYXRoU2VnbWVudHMuc3BsaWNlKDEsIDEpXG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICBjYXNlICd0YWJzJzoge1xuICAgICAgICByZXR1cm4gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBhbGlhc1RhYmxlLFxuICAgICAgICAgIGNvbGxlY3Rpb25QYXRoLFxuICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICBjb25zdHJhaW50UGF0aCxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLnRhYnMubWFwKCh0YWIpID0+ICh7XG4gICAgICAgICAgICAuLi50YWIsXG4gICAgICAgICAgICB0eXBlOiAndGFiJyxcbiAgICAgICAgICB9KSksXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgIHRhYmxlTmFtZVN1ZmZpeCxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3RhYic6IHtcbiAgICAgICAgaWYgKHRhYkhhc05hbWUoZmllbGQpKSB7XG4gICAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgIGFsaWFzVGFibGUsXG4gICAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICAgIGNvbHVtblByZWZpeDogYCR7Y29sdW1uUHJlZml4fSR7ZmllbGQubmFtZX1fYCxcbiAgICAgICAgICAgIGNvbnN0cmFpbnRQYXRoOiBgJHtjb25zdHJhaW50UGF0aH0ke2ZpZWxkLm5hbWV9LmAsXG4gICAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgICBqb2lucyxcbiAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICAgIHNlbGVjdEZpZWxkcyxcbiAgICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgICAgdGFibGVOYW1lU3VmZml4OiBgJHt0YWJsZU5hbWVTdWZmaXh9JHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1fYCxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRUYWJsZUNvbHVtbkZyb21QYXRoKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGFsaWFzVGFibGUsXG4gICAgICAgICAgY29sbGVjdGlvblBhdGgsXG4gICAgICAgICAgY29sdW1uUHJlZml4LFxuICAgICAgICAgIGNvbnN0cmFpbnRQYXRoLFxuICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIGpvaW5BbGlhc2VzLFxuICAgICAgICAgIGpvaW5zLFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBwYXRoU2VnbWVudHM6IHBhdGhTZWdtZW50cy5zbGljZSgxKSxcbiAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgIHNlbGVjdEZpZWxkcyxcbiAgICAgICAgICB0YWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICB0YWJsZU5hbWVTdWZmaXgsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2dyb3VwJzoge1xuICAgICAgICBpZiAobG9jYWxlICYmIGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgIG5ld1RhYmxlTmFtZSA9IGAke3RhYmxlTmFtZX1fbG9jYWxlc2BcblxuICAgICAgICAgIGpvaW5zW3RhYmxlTmFtZV0gPSBlcShcbiAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsXG4gICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9wYXJlbnRJRCxcbiAgICAgICAgICApXG4gICAgICAgICAgaWYgKGxvY2FsZSAhPT0gJ2FsbCcpIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnX2xvY2FsZScsXG4gICAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYWxpYXNUYWJsZSxcbiAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICBjb2x1bW5QcmVmaXg6IGAke2NvbHVtblByZWZpeH0ke2ZpZWxkLm5hbWV9X2AsXG4gICAgICAgICAgY29uc3RyYWludFBhdGg6IGAke2NvbnN0cmFpbnRQYXRofSR7ZmllbGQubmFtZX0uYCxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICBqb2lucyxcbiAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICBzZWxlY3RGaWVsZHMsXG4gICAgICAgICAgdGFibGVOYW1lOiBuZXdUYWJsZU5hbWUsXG4gICAgICAgICAgdGFibGVOYW1lU3VmZml4OiBgJHt0YWJsZU5hbWVTdWZmaXh9JHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1fYCxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY2FzZSAnYXJyYXknOiB7XG4gICAgICAgIG5ld1RhYmxlTmFtZSA9IGAke3RhYmxlTmFtZX1fJHt0YWJsZU5hbWVTdWZmaXh9JHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1gXG4gICAgICAgIGNvbnN0cmFpbnRQYXRoID0gYCR7Y29uc3RyYWludFBhdGh9JHtmaWVsZC5uYW1lfS4lLmBcbiAgICAgICAgaWYgKGxvY2FsZSAmJiBmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICBqb2luc1tuZXdUYWJsZU5hbWVdID0gYW5kKFxuICAgICAgICAgICAgZXEoYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXS5pZCwgYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXS5fcGFyZW50SUQpLFxuICAgICAgICAgICAgZXEoYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXS5fbG9jYWxlLCBsb2NhbGUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBpZiAobG9jYWxlICE9PSAnYWxsJykge1xuICAgICAgICAgICAgY29uc3RyYWludHMucHVzaCh7XG4gICAgICAgICAgICAgIGNvbHVtbk5hbWU6ICdfbG9jYWxlJyxcbiAgICAgICAgICAgICAgdGFibGU6IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0sXG4gICAgICAgICAgICAgIHZhbHVlOiBsb2NhbGUsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBqb2luc1tuZXdUYWJsZU5hbWVdID0gZXEoXG4gICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkLFxuICAgICAgICAgICAgYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXS5fcGFyZW50SUQsXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRUYWJsZUNvbHVtbkZyb21QYXRoKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGNvbGxlY3Rpb25QYXRoLFxuICAgICAgICAgIGNvbnN0cmFpbnRQYXRoLFxuICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIGpvaW5BbGlhc2VzLFxuICAgICAgICAgIGpvaW5zLFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBwYXRoU2VnbWVudHM6IHBhdGhTZWdtZW50cy5zbGljZSgxKSxcbiAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgIHNlbGVjdEZpZWxkcyxcbiAgICAgICAgICB0YWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY2FzZSAnYmxvY2tzJzoge1xuICAgICAgICBsZXQgYmxvY2tUYWJsZUNvbHVtbjogVGFibGVDb2x1bW5cbiAgICAgICAgbGV0IG5ld1RhYmxlTmFtZTogc3RyaW5nXG4gICAgICAgIGNvbnN0IGhhc0Jsb2NrRmllbGQgPSBmaWVsZC5ibG9ja3Muc29tZSgoYmxvY2spID0+IHtcbiAgICAgICAgICBuZXdUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X2Jsb2Nrc18ke3RvU25ha2VDYXNlKGJsb2NrLnNsdWcpfWBcbiAgICAgICAgICBjb25zdHJhaW50UGF0aCA9IGAke2NvbnN0cmFpbnRQYXRofSR7ZmllbGQubmFtZX0uJS5gXG4gICAgICAgICAgbGV0IHJlc3VsdFxuICAgICAgICAgIGNvbnN0IGJsb2NrQ29uc3RyYWludHMgPSBbXVxuICAgICAgICAgIGNvbnN0IGJsb2NrU2VsZWN0RmllbGRzID0ge31cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzdWx0ID0gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICAgIGNvbGxlY3Rpb25QYXRoLFxuICAgICAgICAgICAgICBjb25zdHJhaW50UGF0aCxcbiAgICAgICAgICAgICAgY29uc3RyYWludHM6IGJsb2NrQ29uc3RyYWludHMsXG4gICAgICAgICAgICAgIGZpZWxkczogYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICAgICAgam9pbnMsXG4gICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgICAgIHNlbGVjdEZpZWxkczogYmxvY2tTZWxlY3RGaWVsZHMsXG4gICAgICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgLy8gdGhpcyBpcyBmaW5lLCBub3QgZXZlcnkgYmxvY2sgd2lsbCBoYXZlIHRoZSBmaWVsZFxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIGJsb2NrVGFibGVDb2x1bW4gPSByZXN1bHRcbiAgICAgICAgICBjb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzLmNvbmNhdChibG9ja0NvbnN0cmFpbnRzKVxuICAgICAgICAgIHNlbGVjdEZpZWxkcyA9IHsgLi4uc2VsZWN0RmllbGRzLCAuLi5ibG9ja1NlbGVjdEZpZWxkcyB9XG4gICAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGFuZChcbiAgICAgICAgICAgICAgZXEoYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXS5pZCwgYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXS5fcGFyZW50SUQpLFxuICAgICAgICAgICAgICBlcShhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9sb2NhbGUsIGxvY2FsZSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIGNvbHVtbk5hbWU6ICdfbG9jYWxlJyxcbiAgICAgICAgICAgICAgICB0YWJsZTogYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbG9jYWxlLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBqb2luc1tuZXdUYWJsZU5hbWVdID0gZXEoXG4gICAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsXG4gICAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElELFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9KVxuICAgICAgICBpZiAoaGFzQmxvY2tGaWVsZCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb2x1bW5OYW1lOiBibG9ja1RhYmxlQ29sdW1uLmNvbHVtbk5hbWUsXG4gICAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICAgIGZpZWxkOiBibG9ja1RhYmxlQ29sdW1uLmZpZWxkLFxuICAgICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgICByYXdDb2x1bW46IGJsb2NrVGFibGVDb2x1bW4ucmF3Q29sdW1uLFxuICAgICAgICAgICAgdGFibGU6IGJsb2NrVGFibGVDb2x1bW4udGFibGUsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChwYXRoU2VnbWVudHNbMV0gPT09ICdibG9ja1R5cGUnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEFQSUVycm9yKCdRdWVyeWluZyBvbiBibG9ja1R5cGUgaXMgbm90IHN1cHBvcnRlZCcpXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY2FzZSAncmVsYXRpb25zaGlwJzpcbiAgICAgIGNhc2UgJ3VwbG9hZCc6IHtcbiAgICAgICAgbGV0IHJlbGF0aW9uc2hpcEZpZWxkc1xuICAgICAgICBjb25zdCByZWxhdGlvblRhYmxlTmFtZSA9IGAke3Jvb3RUYWJsZU5hbWV9X3JlbHNgXG4gICAgICAgIGNvbnN0IG5ld0NvbGxlY3Rpb25QYXRoID0gcGF0aFNlZ21lbnRzLnNsaWNlKDEpLmpvaW4oJy4nKVxuICAgICAgICBjb25zdCBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlTmFtZSA9IHV1aWQoKVxuICAgICAgICBjb25zdCBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlID0gYWxpYXMoXG4gICAgICAgICAgYWRhcHRlci50YWJsZXNbcmVsYXRpb25UYWJsZU5hbWVdLFxuICAgICAgICAgIGFsaWFzUmVsYXRpb25zaGlwVGFibGVOYW1lLFxuICAgICAgICApXG5cbiAgICAgICAgLy8gSm9pbiBpbiB0aGUgcmVsYXRpb25zaGlwcyB0YWJsZVxuICAgICAgICBqb2luQWxpYXNlcy5wdXNoKHtcbiAgICAgICAgICBjb25kaXRpb246IGFuZChcbiAgICAgICAgICAgIGVxKChhbGlhc1RhYmxlIHx8IGFkYXB0ZXIudGFibGVzW3Jvb3RUYWJsZU5hbWVdKS5pZCwgYWxpYXNSZWxhdGlvbnNoaXBUYWJsZS5wYXJlbnQpLFxuICAgICAgICAgICAgbGlrZShhbGlhc1JlbGF0aW9uc2hpcFRhYmxlLnBhdGgsIGAke2NvbnN0cmFpbnRQYXRofSR7ZmllbGQubmFtZX1gKSxcbiAgICAgICAgICApLFxuICAgICAgICAgIHRhYmxlOiBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlLFxuICAgICAgICB9KVxuXG4gICAgICAgIHNlbGVjdEZpZWxkc1tgJHtyZWxhdGlvblRhYmxlTmFtZX0ucGF0aGBdID0gYWxpYXNSZWxhdGlvbnNoaXBUYWJsZS5wYXRoXG5cbiAgICAgICAgbGV0IG5ld0FsaWFzVGFibGVcblxuICAgICAgICBpZiAodHlwZW9mIGZpZWxkLnJlbGF0aW9uVG8gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgbmV3VGFibGVOYW1lID0gYCR7dG9TbmFrZUNhc2UoZmllbGQucmVsYXRpb25Ubyl9YFxuICAgICAgICAgIC8vIHBhcmVudCB0byByZWxhdGlvbnNoaXAgam9pbiB0YWJsZVxuICAgICAgICAgIHJlbGF0aW9uc2hpcEZpZWxkcyA9IGFkYXB0ZXIucGF5bG9hZC5jb2xsZWN0aW9uc1tmaWVsZC5yZWxhdGlvblRvXS5jb25maWcuZmllbGRzXG5cbiAgICAgICAgICBuZXdBbGlhc1RhYmxlID0gYWxpYXMoYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSwgdG9TbmFrZUNhc2UodXVpZCgpKSlcblxuICAgICAgICAgIGpvaW5BbGlhc2VzLnB1c2goe1xuICAgICAgICAgICAgY29uZGl0aW9uOiBlcShuZXdBbGlhc1RhYmxlLmlkLCBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlW2Ake2ZpZWxkLnJlbGF0aW9uVG99SURgXSksXG4gICAgICAgICAgICB0YWJsZTogbmV3QWxpYXNUYWJsZSxcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgaWYgKG5ld0NvbGxlY3Rpb25QYXRoID09PSAnJyB8fCBuZXdDb2xsZWN0aW9uUGF0aCA9PT0gJ2lkJykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgY29sdW1uTmFtZTogYCR7ZmllbGQucmVsYXRpb25Ub31JRGAsXG4gICAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgdGFibGU6IGFsaWFzUmVsYXRpb25zaGlwVGFibGUsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG5ld0NvbGxlY3Rpb25QYXRoID09PSAndmFsdWUnKSB7XG4gICAgICAgICAgY29uc3QgdGFibGVDb2x1bW5zTmFtZXMgPSBmaWVsZC5yZWxhdGlvblRvLm1hcChcbiAgICAgICAgICAgIChyZWxhdGlvblRvKSA9PiBgXCIke2FsaWFzUmVsYXRpb25zaGlwVGFibGVOYW1lfVwiLlwiJHt0b1NuYWtlQ2FzZShyZWxhdGlvblRvKX1faWRcImAsXG4gICAgICAgICAgKVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgcmF3Q29sdW1uOiBzcWwucmF3KGBDT0FMRVNDRSgke3RhYmxlQ29sdW1uc05hbWVzLmpvaW4oJywgJyl9KWApLFxuICAgICAgICAgICAgdGFibGU6IGFsaWFzUmVsYXRpb25zaGlwVGFibGUsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG5ld0NvbGxlY3Rpb25QYXRoID09PSAncmVsYXRpb25UbycpIHtcbiAgICAgICAgICBjb25zdCByZWxhdGlvblRvID0gQXJyYXkuaXNBcnJheShmaWVsZC5yZWxhdGlvblRvKSA/IGZpZWxkLnJlbGF0aW9uVG8gOiBbZmllbGQucmVsYXRpb25Ub11cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgZ2V0Tm90TnVsbENvbHVtbkJ5VmFsdWU6ICh2YWwpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbWF0Y2hlZFJlbGF0aW9uID0gcmVsYXRpb25Uby5maW5kKChyZWxhdGlvbikgPT4gcmVsYXRpb24gPT09IHZhbClcbiAgICAgICAgICAgICAgaWYgKG1hdGNoZWRSZWxhdGlvbikgcmV0dXJuIGAke21hdGNoZWRSZWxhdGlvbn1JRGBcbiAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRhYmxlOiBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQVBJRXJyb3IoJ05vdCBzdXBwb3J0ZWQnKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYWxpYXNUYWJsZTogbmV3QWxpYXNUYWJsZSxcbiAgICAgICAgICBjb2xsZWN0aW9uUGF0aDogbmV3Q29sbGVjdGlvblBhdGgsXG4gICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgZmllbGRzOiByZWxhdGlvbnNoaXBGaWVsZHMsXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICBzZWxlY3RGaWVsZHMsXG4gICAgICAgICAgdGFibGVOYW1lOiBuZXdUYWJsZU5hbWUsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSB7XG4gICAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgICAgLy8gSWYgbG9jYWxpemVkLCB3ZSBnbyB0byBsb2NhbGl6ZWQgdGFibGUgYW5kIHNldCBhbGlhc1RhYmxlIHRvIHVuZGVmaW5lZFxuICAgICAgICAgICAgLy8gc28gaXQgaXMgbm90IHBpY2tlZCB1cCBiZWxvdyB0byBiZSB1c2VkIGFzIHRhcmdldFRhYmxlXG4gICAgICAgICAgICBuZXdUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X2xvY2FsZXNgXG5cbiAgICAgICAgICAgIGNvbnN0IHBhcmVudFRhYmxlID0gYWxpYXNUYWJsZSB8fCBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdXG5cbiAgICAgICAgICAgIGpvaW5zW25ld1RhYmxlTmFtZV0gPSBlcShwYXJlbnRUYWJsZS5pZCwgYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXS5fcGFyZW50SUQpXG5cbiAgICAgICAgICAgIGFsaWFzVGFibGUgPSB1bmRlZmluZWRcblxuICAgICAgICAgICAgaWYgKGxvY2FsZSAhPT0gJ2FsbCcpIHtcbiAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaCh7XG4gICAgICAgICAgICAgICAgY29sdW1uTmFtZTogJ19sb2NhbGUnLFxuICAgICAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBsb2NhbGUsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgdGFyZ2V0VGFibGUgPSBhbGlhc1RhYmxlIHx8IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV1cblxuICAgICAgICAgIHNlbGVjdEZpZWxkc1tgJHtuZXdUYWJsZU5hbWV9LiR7Y29sdW1uUHJlZml4fSR7ZmllbGQubmFtZX1gXSA9XG4gICAgICAgICAgICB0YXJnZXRUYWJsZVtgJHtjb2x1bW5QcmVmaXh9JHtmaWVsZC5uYW1lfWBdXG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29sdW1uTmFtZTogYCR7Y29sdW1uUHJlZml4fSR7ZmllbGQubmFtZX1gLFxuICAgICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgIHBhdGhTZWdtZW50cyxcbiAgICAgICAgICAgIHRhYmxlOiB0YXJnZXRUYWJsZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgQVBJRXJyb3IoYENhbm5vdCBmaW5kIGZpZWxkIGZvciBwYXRoIGF0ICR7ZmllbGRQYXRofWApXG59XG4iXSwibmFtZXMiOlsiZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCIsImFkYXB0ZXIiLCJhbGlhc1RhYmxlIiwiY29sbGVjdGlvblBhdGgiLCJjb2x1bW5QcmVmaXgiLCJjb25zdHJhaW50UGF0aCIsImluY29taW5nQ29uc3RyYWludFBhdGgiLCJjb25zdHJhaW50cyIsImZpZWxkcyIsImpvaW5BbGlhc2VzIiwiam9pbnMiLCJsb2NhbGUiLCJpbmNvbWluZ0xvY2FsZSIsInBhdGhTZWdtZW50cyIsImluY29taW5nU2VnbWVudHMiLCJyb290VGFibGVOYW1lIiwiaW5jb21pbmdSb290VGFibGVOYW1lIiwic2VsZWN0RmllbGRzIiwidGFibGVOYW1lIiwidGFibGVOYW1lU3VmZml4IiwiZmllbGRQYXRoIiwiZmllbGQiLCJmbGF0dGVuVG9wTGV2ZWxGaWVsZHMiLCJmaW5kIiwiZmllbGRUb0ZpbmQiLCJmaWVsZEFmZmVjdHNEYXRhIiwibmFtZSIsIm5ld1RhYmxlTmFtZSIsImlkIiwidGFibGVzIiwiY29sdW1uTmFtZSIsInR5cGUiLCJ0YWJsZSIsImxvY2FsaXplZCIsInBheWxvYWQiLCJjb25maWciLCJsb2NhbGl6YXRpb24iLCJtYXRjaGVkTG9jYWxlIiwibG9jYWxlQ29kZXMiLCJzcGxpY2UiLCJ0YWJzIiwibWFwIiwidGFiIiwic2xpY2UiLCJ0YWJIYXNOYW1lIiwidG9TbmFrZUNhc2UiLCJlcSIsIl9wYXJlbnRJRCIsInB1c2giLCJ2YWx1ZSIsImFuZCIsIl9sb2NhbGUiLCJibG9ja1RhYmxlQ29sdW1uIiwiaGFzQmxvY2tGaWVsZCIsImJsb2NrcyIsInNvbWUiLCJibG9jayIsInNsdWciLCJyZXN1bHQiLCJibG9ja0NvbnN0cmFpbnRzIiwiYmxvY2tTZWxlY3RGaWVsZHMiLCJlcnJvciIsImNvbmNhdCIsInJhd0NvbHVtbiIsIkFQSUVycm9yIiwicmVsYXRpb25zaGlwRmllbGRzIiwicmVsYXRpb25UYWJsZU5hbWUiLCJuZXdDb2xsZWN0aW9uUGF0aCIsImpvaW4iLCJhbGlhc1JlbGF0aW9uc2hpcFRhYmxlTmFtZSIsInV1aWQiLCJhbGlhc1JlbGF0aW9uc2hpcFRhYmxlIiwiYWxpYXMiLCJjb25kaXRpb24iLCJwYXJlbnQiLCJsaWtlIiwicGF0aCIsIm5ld0FsaWFzVGFibGUiLCJyZWxhdGlvblRvIiwiY29sbGVjdGlvbnMiLCJ0YWJsZUNvbHVtbnNOYW1lcyIsInNxbCIsInJhdyIsIkFycmF5IiwiaXNBcnJheSIsImdldE5vdE51bGxDb2x1bW5CeVZhbHVlIiwidmFsIiwibWF0Y2hlZFJlbGF0aW9uIiwicmVsYXRpb24iLCJ1bmRlZmluZWQiLCJwYXJlbnRUYWJsZSIsInRhcmdldFRhYmxlIl0sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7Ozs7K0JBd0R2QkE7OztlQUFBQTs7OzRCQXBEc0I7d0JBQ2I7d0JBQ0c7dUJBQ29COzJCQUNQO29FQUNkO3NCQUNHOzs7Ozs7QUE4Q3BCLE1BQU1BLHlCQUF5QixDQUFDLEVBQ3JDQyxPQUFPLEVBQ1BDLFVBQVUsRUFDVkMsY0FBYyxFQUNkQyxlQUFlLEVBQUUsRUFDakJDLGdCQUFnQkMsc0JBQXNCLEVBQ3RDQyxjQUFjLEVBQUUsRUFDaEJDLE1BQU0sRUFDTkMsV0FBVyxFQUNYQyxLQUFLLEVBQ0xDLFFBQVFDLGNBQWMsRUFDdEJDLGNBQWNDLGdCQUFnQixFQUM5QkMsZUFBZUMscUJBQXFCLEVBQ3BDQyxZQUFZLEVBQ1pDLFNBQVMsRUFDVEMsa0JBQWtCLEVBQUUsRUFDZjtJQUNMLE1BQU1DLFlBQVlOLGdCQUFnQixDQUFDLEVBQUU7SUFDckMsSUFBSUgsU0FBU0M7SUFDYixNQUFNRyxnQkFBZ0JDLHlCQUF5QkU7SUFDL0MsSUFBSWIsaUJBQWlCQywwQkFBMEI7SUFFL0MsTUFBTWUsUUFBUUMsSUFBQUEsZ0NBQXFCLEVBQUNkLFFBQW1CZSxJQUFJLENBQ3pELENBQUNDLGNBQWdCQyxJQUFBQSx1QkFBZ0IsRUFBQ0QsZ0JBQWdCQSxZQUFZRSxJQUFJLEtBQUtOO0lBRXpFLElBQUlPLGVBQWVUO0lBRW5CLElBQUksQ0FBQ0csU0FBU0QsY0FBYyxNQUFNO1FBQ2hDSCxhQUFhVyxFQUFFLEdBQUczQixRQUFRNEIsTUFBTSxDQUFDRixhQUFhLENBQUNDLEVBQUU7UUFDakQsT0FBTztZQUNMRSxZQUFZO1lBQ1p2QjtZQUNBYyxP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
379
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL2dldFRhYmxlQ29sdW1uRnJvbVBhdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgU1FMIH0gZnJvbSAnZHJpenpsZS1vcm0nXG5pbXBvcnQgdHlwZSB7IFBnVGFibGVXaXRoQ29sdW1ucyB9IGZyb20gJ2RyaXp6bGUtb3JtL3BnLWNvcmUnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBGaWVsZEFmZmVjdGluZ0RhdGEsIE51bWJlckZpZWxkLCBUYWJBc0ZpZWxkLCBUZXh0RmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBhbmQsIGVxLCBsaWtlLCBzcWwgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7IGFsaWFzIH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSdcbmltcG9ydCB7IEFQSUVycm9yIH0gZnJvbSAncGF5bG9hZC9lcnJvcnMnXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhLCB0YWJIYXNOYW1lIH0gZnJvbSAncGF5bG9hZC90eXBlcydcbmltcG9ydCB7IGZsYXR0ZW5Ub3BMZXZlbEZpZWxkcyB9IGZyb20gJ3BheWxvYWQvdXRpbGl0aWVzJ1xuaW1wb3J0IHRvU25ha2VDYXNlIGZyb20gJ3RvLXNuYWtlLWNhc2UnXG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCdcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1uLCBHZW5lcmljVGFibGUsIFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBCdWlsZFF1ZXJ5Sm9pbkFsaWFzZXMsIEJ1aWxkUXVlcnlKb2lucyB9IGZyb20gJy4vYnVpbGRRdWVyeSdcblxudHlwZSBDb25zdHJhaW50ID0ge1xuICBjb2x1bW5OYW1lOiBzdHJpbmdcbiAgdGFibGU6IEdlbmVyaWNUYWJsZSB8IFBnVGFibGVXaXRoQ29sdW1uczxhbnk+XG4gIHZhbHVlOiB1bmtub3duXG59XG5cbnR5cGUgVGFibGVDb2x1bW4gPSB7XG4gIGNvbHVtbk5hbWU/OiBzdHJpbmdcbiAgY29uc3RyYWludHM6IENvbnN0cmFpbnRbXVxuICBmaWVsZDogRmllbGRBZmZlY3RpbmdEYXRhXG4gIGdldE5vdE51bGxDb2x1bW5CeVZhbHVlPzogKHZhbDogdW5rbm93bikgPT4gc3RyaW5nXG4gIHBhdGhTZWdtZW50cz86IHN0cmluZ1tdXG4gIHJhd0NvbHVtbj86IFNRTFxuICB0YWJsZTogR2VuZXJpY1RhYmxlIHwgUGdUYWJsZVdpdGhDb2x1bW5zPGFueT5cbn1cblxudHlwZSBBcmdzID0ge1xuICBhZGFwdGVyOiBQb3N0Z3Jlc0FkYXB0ZXJcbiAgYWxpYXNUYWJsZT86IEdlbmVyaWNUYWJsZSB8IFBnVGFibGVXaXRoQ29sdW1uczxhbnk+XG4gIGNvbGxlY3Rpb25QYXRoOiBzdHJpbmdcbiAgY29sdW1uUHJlZml4Pzogc3RyaW5nXG4gIGNvbnN0cmFpbnRQYXRoPzogc3RyaW5nXG4gIGNvbnN0cmFpbnRzPzogQ29uc3RyYWludFtdXG4gIGZpZWxkczogKEZpZWxkIHwgVGFiQXNGaWVsZClbXVxuICBqb2luQWxpYXNlczogQnVpbGRRdWVyeUpvaW5BbGlhc2VzXG4gIGpvaW5zOiBCdWlsZFF1ZXJ5Sm9pbnNcbiAgbG9jYWxlPzogc3RyaW5nXG4gIHBhdGhTZWdtZW50czogc3RyaW5nW11cbiAgcm9vdFRhYmxlTmFtZT86IHN0cmluZ1xuICBzZWxlY3RGaWVsZHM6IFJlY29yZDxzdHJpbmcsIEdlbmVyaWNDb2x1bW4+XG4gIHRhYmxlTmFtZTogc3RyaW5nXG4gIC8qKlxuICAgKiBJZiBjcmVhdGluZyBhIG5ldyB0YWJsZSBuYW1lIGZvciBhcnJheXMgYW5kIGJsb2NrcywgdGhpcyBzdWZmaXggc2hvdWxkIGJlIGFwcGVuZGVkIHRvIHRoZSB0YWJsZSBuYW1lXG4gICAqL1xuICB0YWJsZU5hbWVTdWZmaXg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSByYXcgdmFsdWUgb2YgdGhlIHF1ZXJ5IGJlZm9yZSBzYW5pdGl6YXRpb25cbiAgICovXG4gIHZhbHVlOiB1bmtub3duXG59XG4vKipcbiAqIFRyYW5zZm9ybXMgcGF0aCB0byB0YWJsZSBhbmQgY29sdW1uIG5hbWVcbiAqIEFkZHMgdGFibGVzIHRvIGBqb2luYFxuICogQHJldHVybnMgVGFibGVDb2x1bW5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldFRhYmxlQ29sdW1uRnJvbVBhdGggPSAoe1xuICBhZGFwdGVyLFxuICBhbGlhc1RhYmxlLFxuICBjb2xsZWN0aW9uUGF0aCxcbiAgY29sdW1uUHJlZml4ID0gJycsXG4gIGNvbnN0cmFpbnRQYXRoOiBpbmNvbWluZ0NvbnN0cmFpbnRQYXRoLFxuICBjb25zdHJhaW50cyA9IFtdLFxuICBmaWVsZHMsXG4gIGpvaW5BbGlhc2VzLFxuICBqb2lucyxcbiAgbG9jYWxlOiBpbmNvbWluZ0xvY2FsZSxcbiAgcGF0aFNlZ21lbnRzOiBpbmNvbWluZ1NlZ21lbnRzLFxuICByb290VGFibGVOYW1lOiBpbmNvbWluZ1Jvb3RUYWJsZU5hbWUsXG4gIHNlbGVjdEZpZWxkcyxcbiAgdGFibGVOYW1lLFxuICB0YWJsZU5hbWVTdWZmaXggPSAnJyxcbiAgdmFsdWUsXG59OiBBcmdzKTogVGFibGVDb2x1bW4gPT4ge1xuICBjb25zdCBmaWVsZFBhdGggPSBpbmNvbWluZ1NlZ21lbnRzWzBdXG4gIGxldCBsb2NhbGUgPSBpbmNvbWluZ0xvY2FsZVxuICBjb25zdCByb290VGFibGVOYW1lID0gaW5jb21pbmdSb290VGFibGVOYW1lIHx8IHRhYmxlTmFtZVxuICBsZXQgY29uc3RyYWludFBhdGggPSBpbmNvbWluZ0NvbnN0cmFpbnRQYXRoIHx8ICcnXG5cbiAgY29uc3QgZmllbGQgPSBmbGF0dGVuVG9wTGV2ZWxGaWVsZHMoZmllbGRzIGFzIEZpZWxkW10pLmZpbmQoXG4gICAgKGZpZWxkVG9GaW5kKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkVG9GaW5kKSAmJiBmaWVsZFRvRmluZC5uYW1lID09PSBmaWVsZFBhdGgsXG4gICkgYXMgRmllbGQgfCBUYWJBc0ZpZWxkXG4gIGxldCBuZXdUYWJsZU5hbWUgPSB0YWJsZU5hbWVcblxuICBpZiAoIWZpZWxkICYmIGZpZWxkUGF0aCA9PT0gJ2lkJykge1xuICAgIHNlbGVjdEZpZWxkcy5pZCA9IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uaWRcbiAgICByZXR1cm4ge1xuICAgICAgY29sdW1uTmFtZTogJ2lkJyxcbiAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgZmllbGQ6IHtcbiAgICAgICAgbmFtZTogJ2lkJyxcbiAgICAgICAgdHlwZTogYWRhcHRlci5pZFR5cGUgPT09ICd1dWlkJyA/ICd0ZXh0JyA6ICdudW1iZXInLFxuICAgICAgfSBhcyBUZXh0RmllbGQgfCBOdW1iZXJGaWVsZCxcbiAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLFxuICAgIH1cbiAgfVxuXG4gIGlmIChmaWVsZCkge1xuICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IFsuLi5pbmNvbWluZ1NlZ21lbnRzXVxuXG4gICAgLy8gSWYgbmV4dCBzZWdtZW50IGlzIGEgbG9jYWxlLFxuICAgIC8vIHdlIG5lZWQgdG8gdGFrZSBpdCBvdXQgYW5kIHVzZSBpdCBhcyB0aGUgbG9jYWxlIGZyb20gdGhpcyBwb2ludCBvblxuICAgIGlmICgnbG9jYWxpemVkJyBpbiBmaWVsZCAmJiBmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgIGNvbnN0IG1hdGNoZWRMb2NhbGUgPSBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbi5sb2NhbGVDb2Rlcy5maW5kKFxuICAgICAgICAobG9jYWxlKSA9PiBsb2NhbGUgPT09IHBhdGhTZWdtZW50c1sxXSxcbiAgICAgIClcblxuICAgICAgaWYgKG1hdGNoZWRMb2NhbGUpIHtcbiAgICAgICAgbG9jYWxlID0gbWF0Y2hlZExvY2FsZVxuICAgICAgICBwYXRoU2VnbWVudHMuc3BsaWNlKDEsIDEpXG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICBjYXNlICd0YWJzJzoge1xuICAgICAgICByZXR1cm4gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBhbGlhc1RhYmxlLFxuICAgICAgICAgIGNvbGxlY3Rpb25QYXRoLFxuICAgICAgICAgIGNvbHVtblByZWZpeCxcbiAgICAgICAgICBjb25zdHJhaW50UGF0aCxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBmaWVsZHM6IGZpZWxkLnRhYnMubWFwKCh0YWIpID0+ICh7XG4gICAgICAgICAgICAuLi50YWIsXG4gICAgICAgICAgICB0eXBlOiAndGFiJyxcbiAgICAgICAgICB9KSksXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgIHRhYmxlTmFtZVN1ZmZpeCxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3RhYic6IHtcbiAgICAgICAgaWYgKHRhYkhhc05hbWUoZmllbGQpKSB7XG4gICAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgIGFsaWFzVGFibGUsXG4gICAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICAgIGNvbHVtblByZWZpeDogYCR7Y29sdW1uUHJlZml4fSR7ZmllbGQubmFtZX1fYCxcbiAgICAgICAgICAgIGNvbnN0cmFpbnRQYXRoOiBgJHtjb25zdHJhaW50UGF0aH0ke2ZpZWxkLm5hbWV9LmAsXG4gICAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgICBqb2lucyxcbiAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgICAgcm9vdFRhYmxlTmFtZSxcbiAgICAgICAgICAgIHNlbGVjdEZpZWxkcyxcbiAgICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgICAgdGFibGVOYW1lU3VmZml4OiBgJHt0YWJsZU5hbWVTdWZmaXh9JHt0b1NuYWtlQ2FzZShmaWVsZC5uYW1lKX1fYCxcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgYWxpYXNUYWJsZSxcbiAgICAgICAgICBjb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICBjb2x1bW5QcmVmaXgsXG4gICAgICAgICAgY29uc3RyYWludFBhdGgsXG4gICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgIHRhYmxlTmFtZVN1ZmZpeCxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY2FzZSAnZ3JvdXAnOiB7XG4gICAgICAgIGlmIChsb2NhbGUgJiYgZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgbmV3VGFibGVOYW1lID0gYCR7dGFibGVOYW1lfV9sb2NhbGVzYFxuXG4gICAgICAgICAgam9pbnNbdGFibGVOYW1lXSA9IGVxKFxuICAgICAgICAgICAgYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXS5pZCxcbiAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElELFxuICAgICAgICAgIClcbiAgICAgICAgICBpZiAobG9jYWxlICE9PSAnYWxsJykge1xuICAgICAgICAgICAgY29uc3RyYWludHMucHVzaCh7XG4gICAgICAgICAgICAgIGNvbHVtbk5hbWU6ICdfbG9jYWxlJyxcbiAgICAgICAgICAgICAgdGFibGU6IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0sXG4gICAgICAgICAgICAgIHZhbHVlOiBsb2NhbGUsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBhbGlhc1RhYmxlLFxuICAgICAgICAgIGNvbGxlY3Rpb25QYXRoLFxuICAgICAgICAgIGNvbHVtblByZWZpeDogYCR7Y29sdW1uUHJlZml4fSR7ZmllbGQubmFtZX1fYCxcbiAgICAgICAgICBjb25zdHJhaW50UGF0aDogYCR7Y29uc3RyYWludFBhdGh9JHtmaWVsZC5uYW1lfS5gLFxuICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgIGpvaW5BbGlhc2VzLFxuICAgICAgICAgIGpvaW5zLFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBwYXRoU2VnbWVudHM6IHBhdGhTZWdtZW50cy5zbGljZSgxKSxcbiAgICAgICAgICByb290VGFibGVOYW1lLFxuICAgICAgICAgIHNlbGVjdEZpZWxkcyxcbiAgICAgICAgICB0YWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICB0YWJsZU5hbWVTdWZmaXg6IGAke3RhYmxlTmFtZVN1ZmZpeH0ke3RvU25ha2VDYXNlKGZpZWxkLm5hbWUpfV9gLFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjYXNlICdhcnJheSc6IHtcbiAgICAgICAgbmV3VGFibGVOYW1lID0gYCR7dGFibGVOYW1lfV8ke3RhYmxlTmFtZVN1ZmZpeH0ke3RvU25ha2VDYXNlKGZpZWxkLm5hbWUpfWBcbiAgICAgICAgY29uc3RyYWludFBhdGggPSBgJHtjb25zdHJhaW50UGF0aH0ke2ZpZWxkLm5hbWV9LiUuYFxuICAgICAgICBpZiAobG9jYWxlICYmIGZpZWxkLmxvY2FsaXplZCAmJiBhZGFwdGVyLnBheWxvYWQuY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgIGpvaW5zW25ld1RhYmxlTmFtZV0gPSBhbmQoXG4gICAgICAgICAgICBlcShhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkLCBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9wYXJlbnRJRCksXG4gICAgICAgICAgICBlcShhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9sb2NhbGUsIGxvY2FsZSksXG4gICAgICAgICAgKVxuICAgICAgICAgIGlmIChsb2NhbGUgIT09ICdhbGwnKSB7XG4gICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgY29sdW1uTmFtZTogJ19sb2NhbGUnLFxuICAgICAgICAgICAgICB0YWJsZTogYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXSxcbiAgICAgICAgICAgICAgdmFsdWU6IGxvY2FsZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGpvaW5zW25ld1RhYmxlTmFtZV0gPSBlcShcbiAgICAgICAgICAgIGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsXG4gICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9wYXJlbnRJRCxcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgY29sbGVjdGlvblBhdGgsXG4gICAgICAgICAgY29uc3RyYWludFBhdGgsXG4gICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgam9pbkFsaWFzZXMsXG4gICAgICAgICAgam9pbnMsXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjYXNlICdibG9ja3MnOiB7XG4gICAgICAgIGxldCBibG9ja1RhYmxlQ29sdW1uOiBUYWJsZUNvbHVtblxuICAgICAgICBsZXQgbmV3VGFibGVOYW1lOiBzdHJpbmdcblxuICAgICAgICAvLyBoYW5kbGUgYmxvY2tUeXBlIHF1ZXJpZXNcbiAgICAgICAgaWYgKHBhdGhTZWdtZW50c1sxXSA9PT0gJ2Jsb2NrVHlwZScpIHtcbiAgICAgICAgICAvLyBmaW5kIHRoZSBibG9jayBjb25maWcgdXNpbmcgdGhlIHZhbHVlXG4gICAgICAgICAgY29uc3QgYmxvY2tUeXBlcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdXG4gICAgICAgICAgYmxvY2tUeXBlcy5mb3JFYWNoKChibG9ja1R5cGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrID0gZmllbGQuYmxvY2tzLmZpbmQoKGJsb2NrKSA9PiBibG9jay5zbHVnID09PSBibG9ja1R5cGUpXG4gICAgICAgICAgICBuZXdUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X2Jsb2Nrc18ke3RvU25ha2VDYXNlKGJsb2NrLnNsdWcpfWBcbiAgICAgICAgICAgIGpvaW5zW25ld1RhYmxlTmFtZV0gPSBlcShcbiAgICAgICAgICAgICAgYWRhcHRlci50YWJsZXNbdGFibGVOYW1lXS5pZCxcbiAgICAgICAgICAgICAgYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXS5fcGFyZW50SUQsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgY29sdW1uTmFtZTogJ19wYXRoJyxcbiAgICAgICAgICAgICAgdGFibGU6IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0sXG4gICAgICAgICAgICAgIHZhbHVlOiBwYXRoU2VnbWVudHNbMF0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICBnZXROb3ROdWxsQ29sdW1uQnlWYWx1ZTogKCkgPT4gJ2lkJyxcbiAgICAgICAgICAgIHRhYmxlOiBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGhhc0Jsb2NrRmllbGQgPSBmaWVsZC5ibG9ja3Muc29tZSgoYmxvY2spID0+IHtcbiAgICAgICAgICBuZXdUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9X2Jsb2Nrc18ke3RvU25ha2VDYXNlKGJsb2NrLnNsdWcpfWBcbiAgICAgICAgICBjb25zdHJhaW50UGF0aCA9IGAke2NvbnN0cmFpbnRQYXRofSR7ZmllbGQubmFtZX0uJS5gXG4gICAgICAgICAgbGV0IHJlc3VsdFxuICAgICAgICAgIGNvbnN0IGJsb2NrQ29uc3RyYWludHMgPSBbXVxuICAgICAgICAgIGNvbnN0IGJsb2NrU2VsZWN0RmllbGRzID0ge31cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzdWx0ID0gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICAgIGNvbGxlY3Rpb25QYXRoLFxuICAgICAgICAgICAgICBjb25zdHJhaW50UGF0aCxcbiAgICAgICAgICAgICAgY29uc3RyYWludHM6IGJsb2NrQ29uc3RyYWludHMsXG4gICAgICAgICAgICAgIGZpZWxkczogYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICAgICAgam9pbnMsXG4gICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgICAgIHJvb3RUYWJsZU5hbWUsXG4gICAgICAgICAgICAgIHNlbGVjdEZpZWxkczogYmxvY2tTZWxlY3RGaWVsZHMsXG4gICAgICAgICAgICAgIHRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgZmluZSwgbm90IGV2ZXJ5IGJsb2NrIHdpbGwgaGF2ZSB0aGUgZmllbGRcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgICBibG9ja1RhYmxlQ29sdW1uID0gcmVzdWx0XG4gICAgICAgICAgY29uc3RyYWludHMgPSBjb25zdHJhaW50cy5jb25jYXQoYmxvY2tDb25zdHJhaW50cylcbiAgICAgICAgICBzZWxlY3RGaWVsZHMgPSB7IC4uLnNlbGVjdEZpZWxkcywgLi4uYmxvY2tTZWxlY3RGaWVsZHMgfVxuICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgYWRhcHRlci5wYXlsb2FkLmNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICAgIGpvaW5zW25ld1RhYmxlTmFtZV0gPSBhbmQoXG4gICAgICAgICAgICAgIGVxKGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0uaWQsIGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0uX3BhcmVudElEKSxcbiAgICAgICAgICAgICAgZXEoYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXS5fbG9jYWxlLCBsb2NhbGUpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnX2xvY2FsZScsXG4gICAgICAgICAgICAgICAgdGFibGU6IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IGxvY2FsZSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGVxKFxuICAgICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdLmlkLFxuICAgICAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9wYXJlbnRJRCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGhhc0Jsb2NrRmllbGQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29sdW1uTmFtZTogYmxvY2tUYWJsZUNvbHVtbi5jb2x1bW5OYW1lLFxuICAgICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgICBmaWVsZDogYmxvY2tUYWJsZUNvbHVtbi5maWVsZCxcbiAgICAgICAgICAgIHBhdGhTZWdtZW50czogcGF0aFNlZ21lbnRzLnNsaWNlKDEpLFxuICAgICAgICAgICAgcmF3Q29sdW1uOiBibG9ja1RhYmxlQ29sdW1uLnJhd0NvbHVtbixcbiAgICAgICAgICAgIHRhYmxlOiBibG9ja1RhYmxlQ29sdW1uLnRhYmxlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjYXNlICdyZWxhdGlvbnNoaXAnOlxuICAgICAgY2FzZSAndXBsb2FkJzoge1xuICAgICAgICBsZXQgcmVsYXRpb25zaGlwRmllbGRzXG4gICAgICAgIGNvbnN0IHJlbGF0aW9uVGFibGVOYW1lID0gYCR7cm9vdFRhYmxlTmFtZX1fcmVsc2BcbiAgICAgICAgY29uc3QgbmV3Q29sbGVjdGlvblBhdGggPSBwYXRoU2VnbWVudHMuc2xpY2UoMSkuam9pbignLicpXG4gICAgICAgIGNvbnN0IGFsaWFzUmVsYXRpb25zaGlwVGFibGVOYW1lID0gdXVpZCgpXG4gICAgICAgIGNvbnN0IGFsaWFzUmVsYXRpb25zaGlwVGFibGUgPSBhbGlhcyhcbiAgICAgICAgICBhZGFwdGVyLnRhYmxlc1tyZWxhdGlvblRhYmxlTmFtZV0sXG4gICAgICAgICAgYWxpYXNSZWxhdGlvbnNoaXBUYWJsZU5hbWUsXG4gICAgICAgIClcblxuICAgICAgICAvLyBKb2luIGluIHRoZSByZWxhdGlvbnNoaXBzIHRhYmxlXG4gICAgICAgIGpvaW5BbGlhc2VzLnB1c2goe1xuICAgICAgICAgIGNvbmRpdGlvbjogYW5kKFxuICAgICAgICAgICAgZXEoKGFsaWFzVGFibGUgfHwgYWRhcHRlci50YWJsZXNbcm9vdFRhYmxlTmFtZV0pLmlkLCBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlLnBhcmVudCksXG4gICAgICAgICAgICBsaWtlKGFsaWFzUmVsYXRpb25zaGlwVGFibGUucGF0aCwgYCR7Y29uc3RyYWludFBhdGh9JHtmaWVsZC5uYW1lfWApLFxuICAgICAgICAgICksXG4gICAgICAgICAgdGFibGU6IGFsaWFzUmVsYXRpb25zaGlwVGFibGUsXG4gICAgICAgIH0pXG5cbiAgICAgICAgc2VsZWN0RmllbGRzW2Ake3JlbGF0aW9uVGFibGVOYW1lfS5wYXRoYF0gPSBhbGlhc1JlbGF0aW9uc2hpcFRhYmxlLnBhdGhcblxuICAgICAgICBsZXQgbmV3QWxpYXNUYWJsZVxuXG4gICAgICAgIGlmICh0eXBlb2YgZmllbGQucmVsYXRpb25UbyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBuZXdUYWJsZU5hbWUgPSBgJHt0b1NuYWtlQ2FzZShmaWVsZC5yZWxhdGlvblRvKX1gXG4gICAgICAgICAgLy8gcGFyZW50IHRvIHJlbGF0aW9uc2hpcCBqb2luIHRhYmxlXG4gICAgICAgICAgcmVsYXRpb25zaGlwRmllbGRzID0gYWRhcHRlci5wYXlsb2FkLmNvbGxlY3Rpb25zW2ZpZWxkLnJlbGF0aW9uVG9dLmNvbmZpZy5maWVsZHNcblxuICAgICAgICAgIG5ld0FsaWFzVGFibGUgPSBhbGlhcyhhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLCB0b1NuYWtlQ2FzZSh1dWlkKCkpKVxuXG4gICAgICAgICAgam9pbkFsaWFzZXMucHVzaCh7XG4gICAgICAgICAgICBjb25kaXRpb246IGVxKG5ld0FsaWFzVGFibGUuaWQsIGFsaWFzUmVsYXRpb25zaGlwVGFibGVbYCR7ZmllbGQucmVsYXRpb25Ub31JRGBdKSxcbiAgICAgICAgICAgIHRhYmxlOiBuZXdBbGlhc1RhYmxlLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBpZiAobmV3Q29sbGVjdGlvblBhdGggPT09ICcnIHx8IG5ld0NvbGxlY3Rpb25QYXRoID09PSAnaWQnKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBjb2x1bW5OYW1lOiBgJHtmaWVsZC5yZWxhdGlvblRvfUlEYCxcbiAgICAgICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICB0YWJsZTogYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobmV3Q29sbGVjdGlvblBhdGggPT09ICd2YWx1ZScpIHtcbiAgICAgICAgICBjb25zdCB0YWJsZUNvbHVtbnNOYW1lcyA9IGZpZWxkLnJlbGF0aW9uVG8ubWFwKFxuICAgICAgICAgICAgKHJlbGF0aW9uVG8pID0+IGBcIiR7YWxpYXNSZWxhdGlvbnNoaXBUYWJsZU5hbWV9XCIuXCIke3RvU25ha2VDYXNlKHJlbGF0aW9uVG8pfV9pZFwiYCxcbiAgICAgICAgICApXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICByYXdDb2x1bW46IHNxbC5yYXcoYENPQUxFU0NFKCR7dGFibGVDb2x1bW5zTmFtZXMuam9pbignLCAnKX0pYCksXG4gICAgICAgICAgICB0YWJsZTogYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSxcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobmV3Q29sbGVjdGlvblBhdGggPT09ICdyZWxhdGlvblRvJykge1xuICAgICAgICAgIGNvbnN0IHJlbGF0aW9uVG8gPSBBcnJheS5pc0FycmF5KGZpZWxkLnJlbGF0aW9uVG8pID8gZmllbGQucmVsYXRpb25UbyA6IFtmaWVsZC5yZWxhdGlvblRvXVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICBnZXROb3ROdWxsQ29sdW1uQnlWYWx1ZTogKHZhbCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBtYXRjaGVkUmVsYXRpb24gPSByZWxhdGlvblRvLmZpbmQoKHJlbGF0aW9uKSA9PiByZWxhdGlvbiA9PT0gdmFsKVxuICAgICAgICAgICAgICBpZiAobWF0Y2hlZFJlbGF0aW9uKSByZXR1cm4gYCR7bWF0Y2hlZFJlbGF0aW9ufUlEYFxuICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGFibGU6IGFsaWFzUmVsYXRpb25zaGlwVGFibGUsXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBBUElFcnJvcignTm90IHN1cHBvcnRlZCcpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCh7XG4gICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICBhbGlhc1RhYmxlOiBuZXdBbGlhc1RhYmxlLFxuICAgICAgICAgIGNvbGxlY3Rpb25QYXRoOiBuZXdDb2xsZWN0aW9uUGF0aCxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBmaWVsZHM6IHJlbGF0aW9uc2hpcEZpZWxkcyxcbiAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICBqb2lucyxcbiAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgcGF0aFNlZ21lbnRzOiBwYXRoU2VnbWVudHMuc2xpY2UoMSksXG4gICAgICAgICAgcm9vdFRhYmxlTmFtZTogbmV3VGFibGVOYW1lLFxuICAgICAgICAgIHNlbGVjdEZpZWxkcyxcbiAgICAgICAgICB0YWJsZU5hbWU6IG5ld1RhYmxlTmFtZSxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBpZiAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkpIHtcbiAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIGFkYXB0ZXIucGF5bG9hZC5jb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgICAgICAvLyBJZiBsb2NhbGl6ZWQsIHdlIGdvIHRvIGxvY2FsaXplZCB0YWJsZSBhbmQgc2V0IGFsaWFzVGFibGUgdG8gdW5kZWZpbmVkXG4gICAgICAgICAgICAvLyBzbyBpdCBpcyBub3QgcGlja2VkIHVwIGJlbG93IHRvIGJlIHVzZWQgYXMgdGFyZ2V0VGFibGVcbiAgICAgICAgICAgIG5ld1RhYmxlTmFtZSA9IGAke3RhYmxlTmFtZX1fbG9jYWxlc2BcblxuICAgICAgICAgICAgY29uc3QgcGFyZW50VGFibGUgPSBhbGlhc1RhYmxlIHx8IGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV1cblxuICAgICAgICAgICAgam9pbnNbbmV3VGFibGVOYW1lXSA9IGVxKHBhcmVudFRhYmxlLmlkLCBhZGFwdGVyLnRhYmxlc1tuZXdUYWJsZU5hbWVdLl9wYXJlbnRJRClcblxuICAgICAgICAgICAgYWxpYXNUYWJsZSA9IHVuZGVmaW5lZFxuXG4gICAgICAgICAgICBpZiAobG9jYWxlICE9PSAnYWxsJykge1xuICAgICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICBjb2x1bW5OYW1lOiAnX2xvY2FsZScsXG4gICAgICAgICAgICAgICAgdGFibGU6IGFkYXB0ZXIudGFibGVzW25ld1RhYmxlTmFtZV0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IGxvY2FsZSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB0YXJnZXRUYWJsZSA9IGFsaWFzVGFibGUgfHwgYWRhcHRlci50YWJsZXNbbmV3VGFibGVOYW1lXVxuXG4gICAgICAgICAgc2VsZWN0RmllbGRzW2Ake25ld1RhYmxlTmFtZX0uJHtjb2x1bW5QcmVmaXh9JHtmaWVsZC5uYW1lfWBdID1cbiAgICAgICAgICAgIHRhcmdldFRhYmxlW2Ake2NvbHVtblByZWZpeH0ke2ZpZWxkLm5hbWV9YF1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb2x1bW5OYW1lOiBgJHtjb2x1bW5QcmVmaXh9JHtmaWVsZC5uYW1lfWAsXG4gICAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgcGF0aFNlZ21lbnRzLFxuICAgICAgICAgICAgdGFibGU6IHRhcmdldFRhYmxlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRocm93IG5ldyBBUElFcnJvcihgQ2Fubm90IGZpbmQgZmllbGQgZm9yIHBhdGggYXQgJHtmaWVsZFBhdGh9YClcbn1cbiJdLCJuYW1lcyI6WyJnZXRUYWJsZUNvbHVtbkZyb21QYXRoIiwiYWRhcHRlciIsImFsaWFzVGFibGUiLCJjb2xsZWN0aW9uUGF0aCIsImNvbHVtblByZWZpeCIsImNvbnN0cmFpbnRQYXRoIiwiaW5jb21pbmdDb25zdHJhaW50UGF0aCIsImNvbnN0cmFpbnRzIiwiZmllbGRzIiwiam9pbkFsaWFzZXMiLCJqb2lucyIsImxvY2FsZSIsImluY29taW5nTG9jYWxlIiwicGF0aFNlZ21lbnRzIiwiaW5jb21pbmdTZWdtZW50cyIsInJvb3RUYWJsZU5hbWUiLCJpbmNvbWluZ1Jvb3RUYWJsZU5hbWUiLCJzZWxlY3RGaWVsZHMiLCJ0YWJsZU5hbWUiLCJ0YWJsZU5hbWVTdWZmaXgiLCJ2YWx1ZSIsImZpZWxkUGF0aCIsImZpZWxkIiwiZmxhdHRlblRvcExldmVsRmllbGRzIiwiZmluZCIsImZpZWxkVG9GaW5kIiwiZmllbGRBZmZlY3RzRGF0YSIsIm5hbWUiLCJuZXdUYWJsZU5hbWUiLCJpZCIsInRhYmxlcyIsImNvbHVtbk5hbWUiLCJ0eXBlIiwiaWRUeXBlIiwidGFibGUiLCJsb2NhbGl6ZWQiLCJwYXlsb2FkIiwiY29uZmlnIiwibG9jYWxpemF0aW9uIiwibWF0Y2hlZExvY2FsZSIsImxvY2FsZUNvZGVzIiwic3BsaWNlIiwidGFicyIsIm1hcCIsInRhYiIsInNsaWNlIiwidGFiSGFzTmFtZSIsInRvU25ha2VDYXNlIiwiZXEiLCJfcGFyZW50SUQiLCJwdXNoIiwiYW5kIiwiX2xvY2FsZSIsImJsb2NrVGFibGVDb2x1bW4iLCJibG9ja1R5cGVzIiwiQXJyYXkiLCJpc0FycmF5IiwiZm9yRWFjaCIsImJsb2NrVHlwZSIsImJsb2NrIiwiYmxvY2tzIiwic2x1ZyIsImdldE5vdE51bGxDb2x1bW5CeVZhbHVlIiwiaGFzQmxvY2tGaWVsZCIsInNvbWUiLCJyZXN1bHQiLCJibG9ja0NvbnN0cmFpbnRzIiwiYmxvY2tTZWxlY3RGaWVsZHMiLCJlcnJvciIsImNvbmNhdCIsInJhd0NvbHVtbiIsInJlbGF0aW9uc2hpcEZpZWxkcyIsInJlbGF0aW9uVGFibGVOYW1lIiwibmV3Q29sbGVjdGlvblBhdGgiLCJqb2luIiwiYWxpYXNSZWxhdGlvbnNoaXBUYWJsZU5hbWUiLCJ1dWlkIiwiYWxpYXNSZWxhdGlvbnNoaXBUYWJsZSIsImFsaWFzIiwiY29uZGl0aW9uIiwicGFyZW50IiwibGlrZSIsInBhdGgiLCJuZXdBbGlhc1RhYmxlIiwicmVsYXRpb25UbyIsImNvbGxlY3Rpb25zIiwidGFibGVDb2x1bW5zTmFtZXMiLCJzcWwiLCJyYXciLCJ2YWwiLCJtYXRjaGVkUmVsYXRpb24iLCJyZWxhdGlvbiIsInVuZGVmaW5lZCIsIkFQSUVycm9yIiwicGFyZW50VGFibGUiLCJ0YXJnZXRUYWJsZSJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQTZEdkJBOzs7ZUFBQUE7Ozs0QkF4RHNCO3dCQUNiO3dCQUNHO3VCQUNvQjsyQkFDUDtvRUFDZDtzQkFDRzs7Ozs7O0FBa0RwQixNQUFNQSx5QkFBeUIsQ0FBQyxFQUNyQ0MsT0FBTyxFQUNQQyxVQUFVLEVBQ1ZDLGNBQWMsRUFDZEMsZUFBZSxFQUFFLEVBQ2pCQyxnQkFBZ0JDLHNCQUFzQixFQUN0Q0MsY0FBYyxFQUFFLEVBQ2hCQyxNQUFNLEVBQ05DLFdBQVcsRUFDWEMsS0FBSyxFQUNMQyxRQUFRQyxjQUFjLEVBQ3RCQyxjQUFjQyxnQkFBZ0IsRUFDOUJDLGVBQWVDLHFC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
@@ -1 +1 @@
1
- {"version":3,"file":"parseParams.d.ts","sourceRoot":"","sources":["../../src/queries/parseParams.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,EAAE,KAAK,EAAY,KAAK,EAAE,MAAM,eAAe,CAAA;AAM3D,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAS1E,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,WAAW,EAAE,qBAAqB,CAAA;IAClC,KAAK,EAAE,eAAe,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,wBAAsB,WAAW,CAAC,EAChC,OAAO,EACP,MAAM,EACN,WAAW,EACX,KAAK,EACL,MAAM,EACN,YAAY,EACZ,SAAS,EACT,KAAK,GACN,EAAE,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CA2MrB"}
1
+ {"version":3,"file":"parseParams.d.ts","sourceRoot":"","sources":["../../src/queries/parseParams.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,EAAE,KAAK,EAAY,KAAK,EAAE,MAAM,eAAe,CAAA;AAM3D,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAS1E,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,WAAW,EAAE,qBAAqB,CAAA;IAClC,KAAK,EAAE,eAAe,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,wBAAsB,WAAW,CAAC,EAChC,OAAO,EACP,MAAM,EACN,WAAW,EACX,KAAK,EACL,MAAM,EACN,YAAY,EACZ,SAAS,EACT,KAAK,GACN,EAAE,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAwMrB"}
@@ -43,11 +43,7 @@ async function parseParams({ adapter, fields, joinAliases, joins, locale, select
43
43
  where: condition
44
44
  });
45
45
  if (builtConditions.length > 0) {
46
- if (result) {
47
- result = _operatorMap.operatorMap[conditionOperator](result, ...builtConditions);
48
- } else {
49
- result = _operatorMap.operatorMap[conditionOperator](...builtConditions);
50
- }
46
+ result = _operatorMap.operatorMap[conditionOperator](...builtConditions);
51
47
  }
52
48
  } else {
53
49
  // It's a path - and there can be multiple comparisons on a single path.
@@ -57,6 +53,7 @@ async function parseParams({ adapter, fields, joinAliases, joins, locale, select
57
53
  if (typeof pathOperators === 'object') {
58
54
  for (const operator of Object.keys(pathOperators)){
59
55
  if (_types.validOperators.includes(operator)) {
56
+ const val = where[relationOrPath][operator];
60
57
  const { columnName, constraints: queryConstraints, field, getNotNullColumnByValue, pathSegments, rawColumn, table } = (0, _getTableColumnFromPath.getTableColumnFromPath)({
61
58
  adapter,
62
59
  collectionPath: relationOrPath,
@@ -66,9 +63,9 @@ async function parseParams({ adapter, fields, joinAliases, joins, locale, select
66
63
  locale,
67
64
  pathSegments: relationOrPath.replace(/__/g, '.').split('.'),
68
65
  selectFields,
69
- tableName
66
+ tableName,
67
+ value: val
70
68
  });
71
- const val = where[relationOrPath][operator];
72
69
  queryConstraints.forEach(({ columnName: col, table: constraintTable, value })=>{
73
70
  if (typeof value === 'string' && value.indexOf('%') > -1) {
74
71
  constraints.push(_operatorMap.operatorMap.like(constraintTable[col], value));
@@ -142,6 +139,7 @@ async function parseParams({ adapter, fields, joinAliases, joins, locale, select
142
139
  break;
143
140
  }
144
141
  const sanitizedQueryValue = (0, _sanitizeQueryValue.sanitizeQueryValue)({
142
+ adapter,
145
143
  field,
146
144
  operator,
147
145
  relationOrPath,
@@ -191,4 +189,4 @@ async function parseParams({ adapter, fields, joinAliases, joins, locale, select
191
189
  return result;
192
190
  }
193
191
 
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL3BhcnNlUGFyYW1zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWF3YWl0LWluLWxvb3AgKi9cbmltcG9ydCB0eXBlIHsgU1FMIH0gZnJvbSAnZHJpenpsZS1vcm0nXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBPcGVyYXRvciwgV2hlcmUgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBhbmQsIGlsaWtlLCBpc05vdE51bGwsIGlzTnVsbCwgbmUsIG5vdEluQXJyYXksIG9yLCBzcWwgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7IFF1ZXJ5RXJyb3IgfSBmcm9tICdwYXlsb2FkL2Vycm9ycydcbmltcG9ydCB7IHZhbGlkT3BlcmF0b3JzIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1uLCBQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB0eXBlIHsgQnVpbGRRdWVyeUpvaW5BbGlhc2VzLCBCdWlsZFF1ZXJ5Sm9pbnMgfSBmcm9tICcuL2J1aWxkUXVlcnknXG5cbmltcG9ydCB7IGJ1aWxkQW5kT3JDb25kaXRpb25zIH0gZnJvbSAnLi9idWlsZEFuZE9yQ29uZGl0aW9ucydcbmltcG9ydCB7IGNyZWF0ZUpTT05RdWVyeSB9IGZyb20gJy4vY3JlYXRlSlNPTlF1ZXJ5J1xuaW1wb3J0IHsgY29udmVydFBhdGhUb0pTT05UcmF2ZXJzYWwgfSBmcm9tICcuL2NyZWF0ZUpTT05RdWVyeS9jb252ZXJ0UGF0aFRvSlNPTlRyYXZlcnNhbCdcbmltcG9ydCB7IGdldFRhYmxlQ29sdW1uRnJvbVBhdGggfSBmcm9tICcuL2dldFRhYmxlQ29sdW1uRnJvbVBhdGgnXG5pbXBvcnQgeyBvcGVyYXRvck1hcCB9IGZyb20gJy4vb3BlcmF0b3JNYXAnXG5pbXBvcnQgeyBzYW5pdGl6ZVF1ZXJ5VmFsdWUgfSBmcm9tICcuL3Nhbml0aXplUXVlcnlWYWx1ZSdcblxudHlwZSBBcmdzID0ge1xuICBhZGFwdGVyOiBQb3N0Z3Jlc0FkYXB0ZXJcbiAgZmllbGRzOiBGaWVsZFtdXG4gIGpvaW5BbGlhc2VzOiBCdWlsZFF1ZXJ5Sm9pbkFsaWFzZXNcbiAgam9pbnM6IEJ1aWxkUXVlcnlKb2luc1xuICBsb2NhbGU6IHN0cmluZ1xuICBzZWxlY3RGaWVsZHM6IFJlY29yZDxzdHJpbmcsIEdlbmVyaWNDb2x1bW4+XG4gIHRhYmxlTmFtZTogc3RyaW5nXG4gIHdoZXJlOiBXaGVyZVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFyc2VQYXJhbXMoe1xuICBhZGFwdGVyLFxuICBmaWVsZHMsXG4gIGpvaW5BbGlhc2VzLFxuICBqb2lucyxcbiAgbG9jYWxlLFxuICBzZWxlY3RGaWVsZHMsXG4gIHRhYmxlTmFtZSxcbiAgd2hlcmUsXG59OiBBcmdzKTogUHJvbWlzZTxTUUw+IHtcbiAgbGV0IHJlc3VsdDogU1FMXG4gIGNvbnN0IGNvbnN0cmFpbnRzOiBTUUxbXSA9IFtdXG5cbiAgaWYgKHR5cGVvZiB3aGVyZSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMod2hlcmUpLmxlbmd0aCA+IDApIHtcbiAgICAvLyBXZSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGUgd2hlcmVLZXkgaXMgYW4gQU5ELCBPUiwgb3IgYSBzY2hlbWEgcGF0aFxuICAgIGZvciAoY29uc3QgcmVsYXRpb25PclBhdGggb2YgT2JqZWN0LmtleXMod2hlcmUpKSB7XG4gICAgICBpZiAocmVsYXRpb25PclBhdGgpIHtcbiAgICAgICAgY29uc3QgY29uZGl0aW9uID0gd2hlcmVbcmVsYXRpb25PclBhdGhdXG4gICAgICAgIGxldCBjb25kaXRpb25PcGVyYXRvcjogJ2FuZCcgfCAnb3InXG4gICAgICAgIGlmIChyZWxhdGlvbk9yUGF0aC50b0xvd2VyQ2FzZSgpID09PSAnYW5kJykge1xuICAgICAgICAgIGNvbmRpdGlvbk9wZXJhdG9yID0gJ2FuZCdcbiAgICAgICAgfSBlbHNlIGlmIChyZWxhdGlvbk9yUGF0aC50b0xvd2VyQ2FzZSgpID09PSAnb3InKSB7XG4gICAgICAgICAgY29uZGl0aW9uT3BlcmF0b3IgPSAnb3InXG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29uZGl0aW9uKSkge1xuICAgICAgICAgIGNvbnN0IGJ1aWx0Q29uZGl0aW9ucyA9IGF3YWl0IGJ1aWxkQW5kT3JDb25kaXRpb25zKHtcbiAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICBmaWVsZHMsXG4gICAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICAgIGpvaW5zLFxuICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgICAgdGFibGVOYW1lLFxuICAgICAgICAgICAgd2hlcmU6IGNvbmRpdGlvbixcbiAgICAgICAgICB9KVxuICAgICAgICAgIGlmIChidWlsdENvbmRpdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgICByZXN1bHQgPSBvcGVyYXRvck1hcFtjb25kaXRpb25PcGVyYXRvcl0ocmVzdWx0LCAuLi5idWlsdENvbmRpdGlvbnMpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXN1bHQgPSBvcGVyYXRvck1hcFtjb25kaXRpb25PcGVyYXRvcl0oLi4uYnVpbHRDb25kaXRpb25zKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBJdCdzIGEgcGF0aCAtIGFuZCB0aGVyZSBjYW4gYmUgbXVsdGlwbGUgY29tcGFyaXNvbnMgb24gYSBzaW5nbGUgcGF0aC5cbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZSAtIHRpdGxlIGxpa2UgJ3Rlc3QnIGFuZCB0aXRsZSBub3QgZXF1YWwgdG8gJ3Rlc3RlcidcbiAgICAgICAgICAvLyBTbyB3ZSBuZWVkIHRvIGxvb3Agb24ga2V5cyBhZ2FpbiBoZXJlIHRvIGhhbmRsZSBlYWNoIG9wZXJhdG9yIGluZGVwZW5kZW50bHlcbiAgICAgICAgICBjb25zdCBwYXRoT3BlcmF0b3JzID0gd2hlcmVbcmVsYXRpb25PclBhdGhdXG4gICAgICAgICAgaWYgKHR5cGVvZiBwYXRoT3BlcmF0b3JzID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBvcGVyYXRvciBvZiBPYmplY3Qua2V5cyhwYXRoT3BlcmF0b3JzKSkge1xuICAgICAgICAgICAgICBpZiAodmFsaWRPcGVyYXRvcnMuaW5jbHVkZXMob3BlcmF0b3IgYXMgT3BlcmF0b3IpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgY29sdW1uTmFtZSxcbiAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzOiBxdWVyeUNvbnN0cmFpbnRzLFxuICAgICAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgICAgICBnZXROb3ROdWxsQ29sdW1uQnlWYWx1ZSxcbiAgICAgICAgICAgICAgICAgIHBhdGhTZWdtZW50cyxcbiAgICAgICAgICAgICAgICAgIHJhd0NvbHVtbixcbiAgICAgICAgICAgICAgICAgIHRhYmxlLFxuICAgICAgICAgICAgICAgIH0gPSBnZXRUYWJsZUNvbHVtbkZyb21QYXRoKHtcbiAgICAgICAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uUGF0aDogcmVsYXRpb25PclBhdGgsXG4gICAgICAgICAgICAgICAgICBmaWVsZHMsXG4gICAgICAgICAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICAgICAgICAgIGpvaW5zLFxuICAgICAgICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgICAgICAgcGF0aFNlZ21lbnRzOiByZWxhdGlvbk9yUGF0aC5yZXBsYWNlKC9fXy9nLCAnLicpLnNwbGl0KCcuJyksXG4gICAgICAgICAgICAgICAgICBzZWxlY3RGaWVsZHMsXG4gICAgICAgICAgICAgICAgICB0YWJsZU5hbWUsXG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIGNvbnN0IHZhbCA9IHdoZXJlW3JlbGF0aW9uT3JQYXRoXVtvcGVyYXRvcl1cblxuICAgICAgICAgICAgICAgIHF1ZXJ5Q29uc3RyYWludHMuZm9yRWFjaCgoeyBjb2x1bW5OYW1lOiBjb2wsIHRhYmxlOiBjb25zdHJhaW50VGFibGUsIHZhbHVlIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmluZGV4T2YoJyUnKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2gob3BlcmF0b3JNYXAubGlrZShjb25zdHJhaW50VGFibGVbY29sXSwgdmFsdWUpKVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChvcGVyYXRvck1hcC5lcXVhbHMoY29uc3RyYWludFRhYmxlW2NvbF0sIHZhbHVlKSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgWydqc29uJywgJ3JpY2hUZXh0J10uaW5jbHVkZXMoZmllbGQudHlwZSkgJiZcbiAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkocGF0aFNlZ21lbnRzKSAmJlxuICAgICAgICAgICAgICAgICAgcGF0aFNlZ21lbnRzLmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHNlZ21lbnRzID0gcGF0aFNlZ21lbnRzLnNsaWNlKDEpXG4gICAgICAgICAgICAgICAgICBzZWdtZW50cy51bnNoaWZ0KHRhYmxlW2NvbHVtbk5hbWVdLm5hbWUpXG5cbiAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC50eXBlID09PSAncmljaFRleHQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGpzb25RdWVyeSA9IGNyZWF0ZUpTT05RdWVyeSh7XG4gICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgcGF0aFNlZ21lbnRzOiBzZWdtZW50cyxcbiAgICAgICAgICAgICAgICAgICAgICB0cmVhdEFzQXJyYXk6IFsnY2hpbGRyZW4nXSxcbiAgICAgICAgICAgICAgICAgICAgICB0cmVhdFJvb3RBc0FycmF5OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWwsXG4gICAgICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChzcWwucmF3KGpzb25RdWVyeSkpXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGpzb25RdWVyeSA9IGNvbnZlcnRQYXRoVG9KU09OVHJhdmVyc2FsKHBhdGhTZWdtZW50cylcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG9wZXJhdG9yS2V5cyA9IHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbnM6IHsgb3BlcmF0b3I6ICdpbGlrZScsIHdpbGRjYXJkOiAnJScgfSxcbiAgICAgICAgICAgICAgICAgICAgZXF1YWxzOiB7IG9wZXJhdG9yOiAnPScsIHdpbGRjYXJkOiAnJyB9LFxuICAgICAgICAgICAgICAgICAgICBleGlzdHM6IHsgb3BlcmF0b3I6IHZhbCA9PT0gdHJ1ZSA/ICdpcyBub3QgbnVsbCcgOiAnaXMgbnVsbCcgfSxcbiAgICAgICAgICAgICAgICAgICAgbGlrZTogeyBvcGVyYXRvcjogJ2xpa2UnLCB3aWxkY2FyZDogJyUnIH0sXG4gICAgICAgICAgICAgICAgICAgIG5vdF9lcXVhbHM6IHsgb3BlcmF0b3I6ICc8PicsIHdpbGRjYXJkOiAnJyB9LFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gYCcke29wZXJhdG9yS2V5c1tvcGVyYXRvcl0ud2lsZGNhcmR9JHt2YWx9JHtvcGVyYXRvcktleXNbb3BlcmF0b3JdLndpbGRjYXJkfSdgXG5cbiAgICAgICAgICAgICAgICAgIGlmIChvcGVyYXRvciA9PT0gJ2V4aXN0cycpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSAnJ1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBzcWwucmF3KFxuICAgICAgICAgICAgICAgICAgICAgIGAke3RhYmxlW2NvbHVtbk5hbWVdLm5hbWV9JHtqc29uUXVlcnl9ICR7b3BlcmF0b3JLZXlzW29wZXJhdG9yXS5vcGVyYXRvcn0gJHtmb3JtYXR0ZWRWYWx1ZX1gLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChnZXROb3ROdWxsQ29sdW1uQnlWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1uTmFtZSA9IGdldE5vdE51bGxDb2x1bW5CeVZhbHVlKHZhbClcbiAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW5OYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goaXNOb3ROdWxsKHRhYmxlW2NvbHVtbk5hbWVdKSlcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKFt7IHBhdGg6IHJlbGF0aW9uT3JQYXRoIH1dKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAob3BlcmF0b3IgPT09ICdsaWtlJykge1xuICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgYW5kKC4uLnZhbC5zcGxpdCgnICcpLm1hcCgod29yZCkgPT4gaWxpa2UodGFibGVbY29sdW1uTmFtZV0sIGAlJHt3b3JkfSVgKSkpLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzYW5pdGl6ZWRRdWVyeVZhbHVlID0gc2FuaXRpemVRdWVyeVZhbHVlKHtcbiAgICAgICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICAgICAgb3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgICByZWxhdGlvbk9yUGF0aCxcbiAgICAgICAgICAgICAgICAgIHZhbCxcbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgaWYgKHNhbml0aXplZFF1ZXJ5VmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgeyBvcGVyYXRvcjogcXVlcnlPcGVyYXRvciwgdmFsdWU6IHF1ZXJ5VmFsdWUgfSA9IHNhbml0aXplZFF1ZXJ5VmFsdWVcblxuICAgICAgICAgICAgICAgIGlmIChxdWVyeU9wZXJhdG9yID09PSAnbm90X2VxdWFscycgJiYgcXVlcnlWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgb3IoXG4gICAgICAgICAgICAgICAgICAgICAgaXNOdWxsKHJhd0NvbHVtbiB8fCB0YWJsZVtjb2x1bW5OYW1lXSksXG4gICAgICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuICAgICAgICAgICAgICAgICAgICAgIG5lPGFueT4ocmF3Q29sdW1uIHx8IHRhYmxlW2NvbHVtbk5hbWVdLCBxdWVyeVZhbHVlKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgKGZpZWxkLnR5cGUgPT09ICdyZWxhdGlvbnNoaXAnIHx8IGZpZWxkLnR5cGUgPT09ICd1cGxvYWQnKSAmJlxuICAgICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShxdWVyeVZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgPT09ICdub3RfaW4nXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBzcWxgJHtub3RJbkFycmF5KHRhYmxlW2NvbHVtbk5hbWVdLCBxdWVyeVZhbHVlKX0gT1JcbiAgICAgICAgICAgICAgICAgICAgJHt0YWJsZVtjb2x1bW5OYW1lXX1cbiAgICAgICAgICAgICAgICAgICAgSVNcbiAgICAgICAgICAgICAgICAgICAgTlVMTGAsXG4gICAgICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKG9wZXJhdG9yID09PSAnZXF1YWxzJyAmJiBxdWVyeVZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKGlzTnVsbChyYXdDb2x1bW4gfHwgdGFibGVbY29sdW1uTmFtZV0pKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAob3BlcmF0b3IgPT09ICdub3RfZXF1YWxzJyAmJiBxdWVyeVZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKGlzTm90TnVsbChyYXdDb2x1bW4gfHwgdGFibGVbY29sdW1uTmFtZV0pKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKFxuICAgICAgICAgICAgICAgICAgb3BlcmF0b3JNYXBbcXVlcnlPcGVyYXRvcl0ocmF3Q29sdW1uIHx8IHRhYmxlW2NvbHVtbk5hbWVdLCBxdWVyeVZhbHVlKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGNvbnN0cmFpbnRzLmxlbmd0aCA+IDApIHtcbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICByZXN1bHQgPSBhbmQocmVzdWx0LCAuLi5jb25zdHJhaW50cylcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gYW5kKC4uLmNvbnN0cmFpbnRzKVxuICAgIH1cbiAgfVxuICBpZiAoY29uc3RyYWludHMubGVuZ3RoID09PSAxICYmICFyZXN1bHQpIHtcbiAgICA7W3Jlc3VsdF0gPSBjb25zdHJhaW50c1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuIl0sIm5hbWVzIjpbInBhcnNlUGFyYW1zIiwiYWRhcHRlciIsImZpZWxkcyIsImpvaW5BbGlhc2VzIiwiam9pbnMiLCJsb2NhbGUiLCJzZWxlY3RGaWVsZHMiLCJ0YWJsZU5hbWUiLCJ3aGVyZSIsInJlc3VsdCIsImNvbnN0cmFpbnRzIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsInJlbGF0aW9uT3JQYXRoIiwiY29uZGl0aW9uIiwiY29uZGl0aW9uT3BlcmF0b3IiLCJ0b0xvd2VyQ2FzZSIsIkFycmF5IiwiaXNBcnJheSIsImJ1aWx0Q29uZGl0aW9ucyIsImJ1aWxkQW5kT3JDb25kaXRpb25zIiwib3BlcmF0b3JNYXAiLCJwYXRoT3BlcmF0b3JzIiwib3BlcmF0b3IiLCJ2YWxpZE9wZXJhdG9ycyIsImluY2x1ZGVzIiwiY29sdW1uTmFtZSIsInF1ZXJ5Q29uc3RyYWludHMiLCJmaWVsZCIsImdldE5vdE51bGxDb2x1bW5CeVZhbHVlIiwicGF0aFNlZ21lbnRzIiwicmF3Q29sdW1uIiwidGFibGUiLCJnZXRUYWJsZUNvbHVtbkZyb21QYXRoIiwiY29sbGVjdGlvblBhdGgiLCJyZXBsYWNlIiwic3BsaXQiLCJ2YWwiLCJmb3JFYWNoIiwiY29sIiwiY29uc3RyYWludFRhYmxlIiwidmFsdWUiLCJpbmRleE9mIiwicHVzaCIsImxpa2UiLCJlcXVhbHMiLCJ0eXBlIiwic2VnbWVudHMiLCJzbGljZSIsInVuc2hpZnQiLCJuYW1lIiwianNvblF1ZXJ5IiwiY3JlYXRlSlNPTlF1ZXJ5IiwidHJlYXRBc0FycmF5IiwidHJlYXRSb290QXNBcnJheSIsInNxbCIsInJhdyIsImNvbnZlcnRQYXRoVG9KU09OVHJhdmVyc2FsIiwib3BlcmF0b3JLZXlzIiwiY29udGFpbnMiLCJ3aWxkY2FyZCIsImV4aXN0cyIsIm5vdF9lcXVhbHMiLCJmb3JtYXR0ZWRWYWx1ZSIsImlzTm90TnVsbCIsIlF1ZXJ5RXJyb3IiLCJwYXRoIiwiYW5kIiwibWFwIiwid29yZCIsImlsaWtlIiwic2FuaXRpemVkUXVlcnlWYWx1ZSIsInNhbml0aXplUXVlcnlWYWx1ZSIsInF1ZXJ5T3BlcmF0b3IiLCJxdWVyeVZhbHVlIiwib3IiLCJpc051bGwiLCJuZSIsIm5vdEluQXJyYXkiXSwibWFwcGluZ3MiOiJBQUFBLG1DQUFtQzs7OzsrQkE2QmJBOzs7ZUFBQUE7Ozs0QkF6QmlEO3dCQUM1Qzt1QkFDSTtzQ0FLTTtpQ0FDTDs0Q0FDVzt3Q0FDSjs2QkFDWDtvQ0FDTztBQWE1QixlQUFlQSxZQUFZLEVBQ2hDQyxPQUFPLEVBQ1BDLE1BQU0sRUFDTkMsV0FBVyxFQUNYQyxL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
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL3BhcnNlUGFyYW1zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWF3YWl0LWluLWxvb3AgKi9cbmltcG9ydCB0eXBlIHsgU1FMIH0gZnJvbSAnZHJpenpsZS1vcm0nXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBPcGVyYXRvciwgV2hlcmUgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBhbmQsIGlsaWtlLCBpc05vdE51bGwsIGlzTnVsbCwgbmUsIG5vdEluQXJyYXksIG9yLCBzcWwgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7IFF1ZXJ5RXJyb3IgfSBmcm9tICdwYXlsb2FkL2Vycm9ycydcbmltcG9ydCB7IHZhbGlkT3BlcmF0b3JzIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1uLCBQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB0eXBlIHsgQnVpbGRRdWVyeUpvaW5BbGlhc2VzLCBCdWlsZFF1ZXJ5Sm9pbnMgfSBmcm9tICcuL2J1aWxkUXVlcnknXG5cbmltcG9ydCB7IGJ1aWxkQW5kT3JDb25kaXRpb25zIH0gZnJvbSAnLi9idWlsZEFuZE9yQ29uZGl0aW9ucydcbmltcG9ydCB7IGNyZWF0ZUpTT05RdWVyeSB9IGZyb20gJy4vY3JlYXRlSlNPTlF1ZXJ5J1xuaW1wb3J0IHsgY29udmVydFBhdGhUb0pTT05UcmF2ZXJzYWwgfSBmcm9tICcuL2NyZWF0ZUpTT05RdWVyeS9jb252ZXJ0UGF0aFRvSlNPTlRyYXZlcnNhbCdcbmltcG9ydCB7IGdldFRhYmxlQ29sdW1uRnJvbVBhdGggfSBmcm9tICcuL2dldFRhYmxlQ29sdW1uRnJvbVBhdGgnXG5pbXBvcnQgeyBvcGVyYXRvck1hcCB9IGZyb20gJy4vb3BlcmF0b3JNYXAnXG5pbXBvcnQgeyBzYW5pdGl6ZVF1ZXJ5VmFsdWUgfSBmcm9tICcuL3Nhbml0aXplUXVlcnlWYWx1ZSdcblxudHlwZSBBcmdzID0ge1xuICBhZGFwdGVyOiBQb3N0Z3Jlc0FkYXB0ZXJcbiAgZmllbGRzOiBGaWVsZFtdXG4gIGpvaW5BbGlhc2VzOiBCdWlsZFF1ZXJ5Sm9pbkFsaWFzZXNcbiAgam9pbnM6IEJ1aWxkUXVlcnlKb2luc1xuICBsb2NhbGU6IHN0cmluZ1xuICBzZWxlY3RGaWVsZHM6IFJlY29yZDxzdHJpbmcsIEdlbmVyaWNDb2x1bW4+XG4gIHRhYmxlTmFtZTogc3RyaW5nXG4gIHdoZXJlOiBXaGVyZVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFyc2VQYXJhbXMoe1xuICBhZGFwdGVyLFxuICBmaWVsZHMsXG4gIGpvaW5BbGlhc2VzLFxuICBqb2lucyxcbiAgbG9jYWxlLFxuICBzZWxlY3RGaWVsZHMsXG4gIHRhYmxlTmFtZSxcbiAgd2hlcmUsXG59OiBBcmdzKTogUHJvbWlzZTxTUUw+IHtcbiAgbGV0IHJlc3VsdDogU1FMXG4gIGNvbnN0IGNvbnN0cmFpbnRzOiBTUUxbXSA9IFtdXG5cbiAgaWYgKHR5cGVvZiB3aGVyZSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMod2hlcmUpLmxlbmd0aCA+IDApIHtcbiAgICAvLyBXZSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGUgd2hlcmVLZXkgaXMgYW4gQU5ELCBPUiwgb3IgYSBzY2hlbWEgcGF0aFxuICAgIGZvciAoY29uc3QgcmVsYXRpb25PclBhdGggb2YgT2JqZWN0LmtleXMod2hlcmUpKSB7XG4gICAgICBpZiAocmVsYXRpb25PclBhdGgpIHtcbiAgICAgICAgY29uc3QgY29uZGl0aW9uID0gd2hlcmVbcmVsYXRpb25PclBhdGhdXG4gICAgICAgIGxldCBjb25kaXRpb25PcGVyYXRvcjogJ2FuZCcgfCAnb3InXG4gICAgICAgIGlmIChyZWxhdGlvbk9yUGF0aC50b0xvd2VyQ2FzZSgpID09PSAnYW5kJykge1xuICAgICAgICAgIGNvbmRpdGlvbk9wZXJhdG9yID0gJ2FuZCdcbiAgICAgICAgfSBlbHNlIGlmIChyZWxhdGlvbk9yUGF0aC50b0xvd2VyQ2FzZSgpID09PSAnb3InKSB7XG4gICAgICAgICAgY29uZGl0aW9uT3BlcmF0b3IgPSAnb3InXG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29uZGl0aW9uKSkge1xuICAgICAgICAgIGNvbnN0IGJ1aWx0Q29uZGl0aW9ucyA9IGF3YWl0IGJ1aWxkQW5kT3JDb25kaXRpb25zKHtcbiAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICBmaWVsZHMsXG4gICAgICAgICAgICBqb2luQWxpYXNlcyxcbiAgICAgICAgICAgIGpvaW5zLFxuICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgc2VsZWN0RmllbGRzLFxuICAgICAgICAgICAgdGFibGVOYW1lLFxuICAgICAgICAgICAgd2hlcmU6IGNvbmRpdGlvbixcbiAgICAgICAgICB9KVxuICAgICAgICAgIGlmIChidWlsdENvbmRpdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gb3BlcmF0b3JNYXBbY29uZGl0aW9uT3BlcmF0b3JdKC4uLmJ1aWx0Q29uZGl0aW9ucylcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gSXQncyBhIHBhdGggLSBhbmQgdGhlcmUgY2FuIGJlIG11bHRpcGxlIGNvbXBhcmlzb25zIG9uIGEgc2luZ2xlIHBhdGguXG4gICAgICAgICAgLy8gRm9yIGV4YW1wbGUgLSB0aXRsZSBsaWtlICd0ZXN0JyBhbmQgdGl0bGUgbm90IGVxdWFsIHRvICd0ZXN0ZXInXG4gICAgICAgICAgLy8gU28gd2UgbmVlZCB0byBsb29wIG9uIGtleXMgYWdhaW4gaGVyZSB0byBoYW5kbGUgZWFjaCBvcGVyYXRvciBpbmRlcGVuZGVudGx5XG4gICAgICAgICAgY29uc3QgcGF0aE9wZXJhdG9ycyA9IHdoZXJlW3JlbGF0aW9uT3JQYXRoXVxuICAgICAgICAgIGlmICh0eXBlb2YgcGF0aE9wZXJhdG9ycyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgb3BlcmF0b3Igb2YgT2JqZWN0LmtleXMocGF0aE9wZXJhdG9ycykpIHtcbiAgICAgICAgICAgICAgaWYgKHZhbGlkT3BlcmF0b3JzLmluY2x1ZGVzKG9wZXJhdG9yIGFzIE9wZXJhdG9yKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbCA9IHdoZXJlW3JlbGF0aW9uT3JQYXRoXVtvcGVyYXRvcl1cbiAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICBjb2x1bW5OYW1lLFxuICAgICAgICAgICAgICAgICAgY29uc3RyYWludHM6IHF1ZXJ5Q29uc3RyYWludHMsXG4gICAgICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgICAgIGdldE5vdE51bGxDb2x1bW5CeVZhbHVlLFxuICAgICAgICAgICAgICAgICAgcGF0aFNlZ21lbnRzLFxuICAgICAgICAgICAgICAgICAgcmF3Q29sdW1uLFxuICAgICAgICAgICAgICAgICAgdGFibGUsXG4gICAgICAgICAgICAgICAgfSA9IGdldFRhYmxlQ29sdW1uRnJvbVBhdGgoe1xuICAgICAgICAgICAgICAgICAgYWRhcHRlcixcbiAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25QYXRoOiByZWxhdGlvbk9yUGF0aCxcbiAgICAgICAgICAgICAgICAgIGZpZWxkcyxcbiAgICAgICAgICAgICAgICAgIGpvaW5BbGlhc2VzLFxuICAgICAgICAgICAgICAgICAgam9pbnMsXG4gICAgICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgICAgICBwYXRoU2VnbWVudHM6IHJlbGF0aW9uT3JQYXRoLnJlcGxhY2UoL19fL2csICcuJykuc3BsaXQoJy4nKSxcbiAgICAgICAgICAgICAgICAgIHNlbGVjdEZpZWxkcyxcbiAgICAgICAgICAgICAgICAgIHRhYmxlTmFtZSxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWwsXG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIHF1ZXJ5Q29uc3RyYWludHMuZm9yRWFjaCgoeyBjb2x1bW5OYW1lOiBjb2wsIHRhYmxlOiBjb25zdHJhaW50VGFibGUsIHZhbHVlIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmluZGV4T2YoJyUnKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2gob3BlcmF0b3JNYXAubGlrZShjb25zdHJhaW50VGFibGVbY29sXSwgdmFsdWUpKVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChvcGVyYXRvck1hcC5lcXVhbHMoY29uc3RyYWludFRhYmxlW2NvbF0sIHZhbHVlKSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgWydqc29uJywgJ3JpY2hUZXh0J10uaW5jbHVkZXMoZmllbGQudHlwZSkgJiZcbiAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkocGF0aFNlZ21lbnRzKSAmJlxuICAgICAgICAgICAgICAgICAgcGF0aFNlZ21lbnRzLmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHNlZ21lbnRzID0gcGF0aFNlZ21lbnRzLnNsaWNlKDEpXG4gICAgICAgICAgICAgICAgICBzZWdtZW50cy51bnNoaWZ0KHRhYmxlW2NvbHVtbk5hbWVdLm5hbWUpXG5cbiAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC50eXBlID09PSAncmljaFRleHQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGpzb25RdWVyeSA9IGNyZWF0ZUpTT05RdWVyeSh7XG4gICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgcGF0aFNlZ21lbnRzOiBzZWdtZW50cyxcbiAgICAgICAgICAgICAgICAgICAgICB0cmVhdEFzQXJyYXk6IFsnY2hpbGRyZW4nXSxcbiAgICAgICAgICAgICAgICAgICAgICB0cmVhdFJvb3RBc0FycmF5OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWwsXG4gICAgICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChzcWwucmF3KGpzb25RdWVyeSkpXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGpzb25RdWVyeSA9IGNvbnZlcnRQYXRoVG9KU09OVHJhdmVyc2FsKHBhdGhTZWdtZW50cylcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG9wZXJhdG9yS2V5cyA9IHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbnM6IHsgb3BlcmF0b3I6ICdpbGlrZScsIHdpbGRjYXJkOiAnJScgfSxcbiAgICAgICAgICAgICAgICAgICAgZXF1YWxzOiB7IG9wZXJhdG9yOiAnPScsIHdpbGRjYXJkOiAnJyB9LFxuICAgICAgICAgICAgICAgICAgICBleGlzdHM6IHsgb3BlcmF0b3I6IHZhbCA9PT0gdHJ1ZSA/ICdpcyBub3QgbnVsbCcgOiAnaXMgbnVsbCcgfSxcbiAgICAgICAgICAgICAgICAgICAgbGlrZTogeyBvcGVyYXRvcjogJ2xpa2UnLCB3aWxkY2FyZDogJyUnIH0sXG4gICAgICAgICAgICAgICAgICAgIG5vdF9lcXVhbHM6IHsgb3BlcmF0b3I6ICc8PicsIHdpbGRjYXJkOiAnJyB9LFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gYCcke29wZXJhdG9yS2V5c1tvcGVyYXRvcl0ud2lsZGNhcmR9JHt2YWx9JHtvcGVyYXRvcktleXNbb3BlcmF0b3JdLndpbGRjYXJkfSdgXG5cbiAgICAgICAgICAgICAgICAgIGlmIChvcGVyYXRvciA9PT0gJ2V4aXN0cycpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSAnJ1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBjb25zdHJhaW50cy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBzcWwucmF3KFxuICAgICAgICAgICAgICAgICAgICAgIGAke3RhYmxlW2NvbHVtbk5hbWVdLm5hbWV9JHtqc29uUXVlcnl9ICR7b3BlcmF0b3JLZXlzW29wZXJhdG9yXS5vcGVyYXRvcn0gJHtmb3JtYXR0ZWRWYWx1ZX1gLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChnZXROb3ROdWxsQ29sdW1uQnlWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1uTmFtZSA9IGdldE5vdE51bGxDb2x1bW5CeVZhbHVlKHZhbClcbiAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW5OYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goaXNOb3ROdWxsKHRhYmxlW2NvbHVtbk5hbWVdKSlcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKFt7IHBhdGg6IHJlbGF0aW9uT3JQYXRoIH1dKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAob3BlcmF0b3IgPT09ICdsaWtlJykge1xuICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgYW5kKC4uLnZhbC5zcGxpdCgnICcpLm1hcCgod29yZCkgPT4gaWxpa2UodGFibGVbY29sdW1uTmFtZV0sIGAlJHt3b3JkfSVgKSkpLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzYW5pdGl6ZWRRdWVyeVZhbHVlID0gc2FuaXRpemVRdWVyeVZhbHVlKHtcbiAgICAgICAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgICAgIG9wZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgcmVsYXRpb25PclBhdGgsXG4gICAgICAgICAgICAgICAgICB2YWwsXG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIGlmIChzYW5pdGl6ZWRRdWVyeVZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHsgb3BlcmF0b3I6IHF1ZXJ5T3BlcmF0b3IsIHZhbHVlOiBxdWVyeVZhbHVlIH0gPSBzYW5pdGl6ZWRRdWVyeVZhbHVlXG5cbiAgICAgICAgICAgICAgICBpZiAocXVlcnlPcGVyYXRvciA9PT0gJ25vdF9lcXVhbHMnICYmIHF1ZXJ5VmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIG9yKFxuICAgICAgICAgICAgICAgICAgICAgIGlzTnVsbChyYXdDb2x1bW4gfHwgdGFibGVbY29sdW1uTmFtZV0pLFxuICAgICAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbiAgICAgICAgICAgICAgICAgICAgICBuZTxhbnk+KHJhd0NvbHVtbiB8fCB0YWJsZVtjb2x1bW5OYW1lXSwgcXVlcnlWYWx1ZSksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgIChmaWVsZC50eXBlID09PSAncmVsYXRpb25zaGlwJyB8fCBmaWVsZC50eXBlID09PSAndXBsb2FkJykgJiZcbiAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkocXVlcnlWYWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgIG9wZXJhdG9yID09PSAnbm90X2luJ1xuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgc3FsYCR7bm90SW5BcnJheSh0YWJsZVtjb2x1bW5OYW1lXSwgcXVlcnlWYWx1ZSl9IE9SXG4gICAgICAgICAgICAgICAgICAgICR7dGFibGVbY29sdW1uTmFtZV19XG4gICAgICAgICAgICAgICAgICAgIElTXG4gICAgICAgICAgICAgICAgICAgIE5VTExgLFxuICAgICAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChvcGVyYXRvciA9PT0gJ2VxdWFscycgJiYgcXVlcnlWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChpc051bGwocmF3Q29sdW1uIHx8IHRhYmxlW2NvbHVtbk5hbWVdKSlcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKG9wZXJhdG9yID09PSAnbm90X2VxdWFscycgJiYgcXVlcnlWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChpc05vdE51bGwocmF3Q29sdW1uIHx8IHRhYmxlW2NvbHVtbk5hbWVdKSlcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3RyYWludHMucHVzaChcbiAgICAgICAgICAgICAgICAgIG9wZXJhdG9yTWFwW3F1ZXJ5T3BlcmF0b3JdKHJhd0NvbHVtbiB8fCB0YWJsZVtjb2x1bW5OYW1lXSwgcXVlcnlWYWx1ZSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChjb25zdHJhaW50cy5sZW5ndGggPiAwKSB7XG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgcmVzdWx0ID0gYW5kKHJlc3VsdCwgLi4uY29uc3RyYWludHMpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IGFuZCguLi5jb25zdHJhaW50cylcbiAgICB9XG4gIH1cbiAgaWYgKGNvbnN0cmFpbnRzLmxlbmd0aCA9PT0gMSAmJiAhcmVzdWx0KSB7XG4gICAgO1tyZXN1bHRdID0gY29uc3RyYWludHNcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cbiJdLCJuYW1lcyI6WyJwYXJzZVBhcmFtcyIsImFkYXB0ZXIiLCJmaWVsZHMiLCJqb2luQWxpYXNlcyIsImpvaW5zIiwibG9jYWxlIiwic2VsZWN0RmllbGRzIiwidGFibGVOYW1lIiwid2hlcmUiLCJyZXN1bHQiLCJjb25zdHJhaW50cyIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJyZWxhdGlvbk9yUGF0aCIsImNvbmRpdGlvbiIsImNvbmRpdGlvbk9wZXJhdG9yIiwidG9Mb3dlckNhc2UiLCJBcnJheSIsImlzQXJyYXkiLCJidWlsdENvbmRpdGlvbnMiLCJidWlsZEFuZE9yQ29uZGl0aW9ucyIsIm9wZXJhdG9yTWFwIiwicGF0aE9wZXJhdG9ycyIsIm9wZXJhdG9yIiwidmFsaWRPcGVyYXRvcnMiLCJpbmNsdWRlcyIsInZhbCIsImNvbHVtbk5hbWUiLCJxdWVyeUNvbnN0cmFpbnRzIiwiZmllbGQiLCJnZXROb3ROdWxsQ29sdW1uQnlWYWx1ZSIsInBhdGhTZWdtZW50cyIsInJhd0NvbHVtbiIsInRhYmxlIiwiZ2V0VGFibGVDb2x1bW5Gcm9tUGF0aCIsImNvbGxlY3Rpb25QYXRoIiwicmVwbGFjZSIsInNwbGl0IiwidmFsdWUiLCJmb3JFYWNoIiwiY29sIiwiY29uc3RyYWludFRhYmxlIiwiaW5kZXhPZiIsInB1c2giLCJsaWtlIiwiZXF1YWxzIiwidHlwZSIsInNlZ21lbnRzIiwic2xpY2UiLCJ1bnNoaWZ0IiwibmFtZSIsImpzb25RdWVyeSIsImNyZWF0ZUpTT05RdWVyeSIsInRyZWF0QXNBcnJheSIsInRyZWF0Um9vdEFzQXJyYXkiLCJzcWwiLCJyYXciLCJjb252ZXJ0UGF0aFRvSlNPTlRyYXZlcnNhbCIsIm9wZXJhdG9yS2V5cyIsImNvbnRhaW5zIiwid2lsZGNhcmQiLCJleGlzdHMiLCJub3RfZXF1YWxzIiwiZm9ybWF0dGVkVmFsdWUiLCJpc05vdE51bGwiLCJRdWVyeUVycm9yIiwicGF0aCIsImFuZCIsIm1hcCIsIndvcmQiLCJpbGlrZSIsInNhbml0aXplZFF1ZXJ5VmFsdWUiLCJzYW5pdGl6ZVF1ZXJ5VmFsdWUiLCJxdWVyeU9wZXJhdG9yIiwicXVlcnlWYWx1ZSIsIm9yIiwiaXNOdWxsIiwibmUiLCJub3RJbkFycmF5Il0sIm1hcHBpbmdzIjoiQUFBQSxtQ0FBbUM7Ozs7K0JBNkJiQTs7O2VBQUFBOzs7NEJBekJpRDt3QkFDNUM7dUJBQ0k7c0NBS007aUNBQ0w7NENBQ1c7d0NBQ0o7NkJBQ1g7b0NBQ087QUFhNUIsZUFBZUEsWUFBWSxFQUNoQ0MsT0FBTyxFQUNQQyxNQUFNLEVBQ05DLFdBQVcsRUFDWEMsS0FBSyxFQUNMQyxNQUFNLEVBQ05DLFlBQVksRUFDWkMsU0FBUyxFQUNUQyxLQUFLLEVBQ0E7SUFDTCxJQUFJQztJQUNKLE1BQU1DLGNBQXFCLEVBQUU7SUFFN0Is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
@@ -1,11 +1,13 @@
1
1
  import { type Field, type TabAsField } from 'payload/types';
2
+ import type { PostgresAdapter } from '../types';
2
3
  type SanitizeQueryValueArgs = {
4
+ adapter: PostgresAdapter;
3
5
  field: Field | TabAsField;
4
6
  operator: string;
5
7
  relationOrPath: string;
6
8
  val: any;
7
9
  };
8
- export declare const sanitizeQueryValue: ({ field, operator: operatorArg, relationOrPath, val, }: SanitizeQueryValueArgs) => {
10
+ export declare const sanitizeQueryValue: ({ adapter, field, operator: operatorArg, relationOrPath, val, }: SanitizeQueryValueArgs) => {
9
11
  operator: string;
10
12
  value: unknown;
11
13
  };
@@ -1 +1 @@
1
- {"version":3,"file":"sanitizeQueryValue.d.ts","sourceRoot":"","sources":["../../src/queries/sanitizeQueryValue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,UAAU,EAAoB,MAAM,eAAe,CAAA;AAG7E,KAAK,sBAAsB,GAAG;IAC5B,KAAK,EAAE,KAAK,GAAG,UAAU,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;IACtB,GAAG,EAAE,GAAG,CAAA;CACT,CAAA;AAED,eAAO,MAAM,kBAAkB,2DAK5B,sBAAsB;cAAe,MAAM;WAAS,OAAO;CAmF7D,CAAA"}
1
+ {"version":3,"file":"sanitizeQueryValue.d.ts","sourceRoot":"","sources":["../../src/queries/sanitizeQueryValue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,UAAU,EAAoB,MAAM,eAAe,CAAA;AAG7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE/C,KAAK,sBAAsB,GAAG;IAC5B,OAAO,EAAE,eAAe,CAAA;IACxB,KAAK,EAAE,KAAK,GAAG,UAAU,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;IACtB,GAAG,EAAE,GAAG,CAAA;CACT,CAAA;AAED,eAAO,MAAM,kBAAkB,oEAM5B,sBAAsB;cAAe,MAAM;WAAS,OAAO;CAqF7D,CAAA"}
@@ -11,7 +11,7 @@ Object.defineProperty(exports, "sanitizeQueryValue", {
11
11
  const _errors = require("payload/errors");
12
12
  const _types = require("payload/types");
13
13
  const _utilities = require("payload/utilities");
14
- const sanitizeQueryValue = ({ field, operator: operatorArg, relationOrPath, val })=>{
14
+ const sanitizeQueryValue = ({ adapter, field, operator: operatorArg, relationOrPath, val })=>{
15
15
  let operator = operatorArg;
16
16
  let formattedValue = val;
17
17
  if (!(0, _types.fieldAffectsData)(field)) return {
@@ -21,8 +21,10 @@ const sanitizeQueryValue = ({ field, operator: operatorArg, relationOrPath, val
21
21
  if ((field.type === 'relationship' || field.type === 'upload') && !relationOrPath.endsWith('relationTo') && Array.isArray(formattedValue)) {
22
22
  const allPossibleIDTypes = [];
23
23
  formattedValue.forEach((val)=>{
24
- if (typeof val === 'string') {
24
+ if (adapter.idType !== 'uuid' && typeof val === 'string') {
25
25
  allPossibleIDTypes.push(val, parseInt(val));
26
+ } else if (typeof val === 'string') {
27
+ allPossibleIDTypes.push(val);
26
28
  } else {
27
29
  allPossibleIDTypes.push(val, String(val));
28
30
  }
@@ -92,4 +94,4 @@ const sanitizeQueryValue = ({ field, operator: operatorArg, relationOrPath, val
92
94
  };
93
95
  };
94
96
 
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL3Nhbml0aXplUXVlcnlWYWx1ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUElFcnJvciB9IGZyb20gJ3BheWxvYWQvZXJyb3JzJ1xuaW1wb3J0IHsgdHlwZSBGaWVsZCwgdHlwZSBUYWJBc0ZpZWxkLCBmaWVsZEFmZmVjdHNEYXRhIH0gZnJvbSAncGF5bG9hZC90eXBlcydcbmltcG9ydCB7IGNyZWF0ZUFycmF5RnJvbUNvbW1hRGVsaW5lYXRlZCB9IGZyb20gJ3BheWxvYWQvdXRpbGl0aWVzJ1xuXG50eXBlIFNhbml0aXplUXVlcnlWYWx1ZUFyZ3MgPSB7XG4gIGZpZWxkOiBGaWVsZCB8IFRhYkFzRmllbGRcbiAgb3BlcmF0b3I6IHN0cmluZ1xuICByZWxhdGlvbk9yUGF0aDogc3RyaW5nXG4gIHZhbDogYW55XG59XG5cbmV4cG9ydCBjb25zdCBzYW5pdGl6ZVF1ZXJ5VmFsdWUgPSAoe1xuICBmaWVsZCxcbiAgb3BlcmF0b3I6IG9wZXJhdG9yQXJnLFxuICByZWxhdGlvbk9yUGF0aCxcbiAgdmFsLFxufTogU2FuaXRpemVRdWVyeVZhbHVlQXJncyk6IHsgb3BlcmF0b3I6IHN0cmluZzsgdmFsdWU6IHVua25vd24gfSA9PiB7XG4gIGxldCBvcGVyYXRvciA9IG9wZXJhdG9yQXJnXG4gIGxldCBmb3JtYXR0ZWRWYWx1ZSA9IHZhbFxuXG4gIGlmICghZmllbGRBZmZlY3RzRGF0YShmaWVsZCkpIHJldHVybiB7IG9wZXJhdG9yLCB2YWx1ZTogZm9ybWF0dGVkVmFsdWUgfVxuXG4gIGlmIChcbiAgICAoZmllbGQudHlwZSA9PT0gJ3JlbGF0aW9uc2hpcCcgfHwgZmllbGQudHlwZSA9PT0gJ3VwbG9hZCcpICYmXG4gICAgIXJlbGF0aW9uT3JQYXRoLmVuZHNXaXRoKCdyZWxhdGlvblRvJykgJiZcbiAgICBBcnJheS5pc0FycmF5KGZvcm1hdHRlZFZhbHVlKVxuICApIHtcbiAgICBjb25zdCBhbGxQb3NzaWJsZUlEVHlwZXM6IChudW1iZXIgfCBzdHJpbmcpW10gPSBbXVxuICAgIGZvcm1hdHRlZFZhbHVlLmZvckVhY2goKHZhbCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGFsbFBvc3NpYmxlSURUeXBlcy5wdXNoKHZhbCwgcGFyc2VJbnQodmFsKSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFsbFBvc3NpYmxlSURUeXBlcy5wdXNoKHZhbCwgU3RyaW5nKHZhbCkpXG4gICAgICB9XG4gICAgfSlcbiAgICBmb3JtYXR0ZWRWYWx1ZSA9IGFsbFBvc3NpYmxlSURUeXBlc1xuICB9XG5cbiAgLy8gQ2FzdCBpbmNvbWluZyB2YWx1ZXMgYXMgcHJvcGVyIHNlYXJjaGFibGUgdHlwZXNcbiAgaWYgKGZpZWxkLnR5cGUgPT09ICdjaGVja2JveCcgJiYgdHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAodmFsLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJykgZm9ybWF0dGVkVmFsdWUgPSB0cnVlXG4gICAgaWYgKHZhbC50b0xvd2VyQ2FzZSgpID09PSAnZmFsc2UnKSBmb3JtYXR0ZWRWYWx1ZSA9IGZhbHNlXG4gIH1cblxuICBpZiAoWydhbGwnLCAnaW4nLCAnbm90X2luJ10uaW5jbHVkZXMob3BlcmF0b3IpKSB7XG4gICAgaWYgKHR5cGVvZiBmb3JtYXR0ZWRWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGZvcm1hdHRlZFZhbHVlID0gY3JlYXRlQXJyYXlGcm9tQ29tbWFEZWxpbmVhdGVkKGZvcm1hdHRlZFZhbHVlKVxuXG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgZm9ybWF0dGVkVmFsdWUgPSBmb3JtYXR0ZWRWYWx1ZS5tYXAoKGFycmF5VmFsKSA9PiBwYXJzZUZsb2F0KGFycmF5VmFsKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZm9ybWF0dGVkVmFsdWUpIHx8IGZvcm1hdHRlZFZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gIH1cblxuICBpZiAoZmllbGQudHlwZSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGZvcm1hdHRlZFZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIGZvcm1hdHRlZFZhbHVlID0gTnVtYmVyKHZhbClcbiAgfVxuXG4gIGlmIChmaWVsZC50eXBlID09PSAnZGF0ZScpIHtcbiAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGZvcm1hdHRlZFZhbHVlID0gbmV3IERhdGUodmFsKVxuICAgICAgaWYgKE51bWJlci5pc05hTihEYXRlLnBhcnNlKGZvcm1hdHRlZFZhbHVlKSkpIHtcbiAgICAgICAgcmV0dXJuIHsgb3BlcmF0b3IsIHZhbHVlOiB1bmRlZmluZWQgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgICAgZm9ybWF0dGVkVmFsdWUgPSBuZXcgRGF0ZSh2YWwpXG4gICAgfVxuICB9XG5cbiAgaWYgKFsncmVsYXRpb25zaGlwJywgJ3VwbG9hZCddLmluY2x1ZGVzKGZpZWxkLnR5cGUpKSB7XG4gICAgaWYgKHZhbCA9PT0gJ251bGwnKSB7XG4gICAgICBmb3JtYXR0ZWRWYWx1ZSA9IG51bGxcbiAgICB9XG4gIH1cblxuICBpZiAob3BlcmF0b3IgPT09ICduZWFyJyB8fCBvcGVyYXRvciA9PT0gJ3dpdGhpbicgfHwgb3BlcmF0b3IgPT09ICdpbnRlcnNlY3RzJykge1xuICAgIHRocm93IG5ldyBBUElFcnJvcihcbiAgICAgIGBRdWVyeWluZyB3aXRoICcke29wZXJhdG9yfScgaXMgbm90IHN1cHBvcnRlZCB3aXRoIHRoZSBwb3N0Z3JlcyBkYXRhYmFzZSBhZGFwdGVyLmAsXG4gICAgKVxuICB9XG5cbiAgaWYgKG9wZXJhdG9yID09PSAnY29udGFpbnMnKSB7XG4gICAgZm9ybWF0dGVkVmFsdWUgPSBgJSR7Zm9ybWF0dGVkVmFsdWV9JWBcbiAgfVxuXG4gIGlmIChvcGVyYXRvciA9PT0gJ2V4aXN0cycpIHtcbiAgICBmb3JtYXR0ZWRWYWx1ZSA9IGZvcm1hdHRlZFZhbHVlID09PSAndHJ1ZScgfHwgZm9ybWF0dGVkVmFsdWUgPT09IHRydWVcbiAgICBpZiAoZm9ybWF0dGVkVmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICBvcGVyYXRvciA9ICdpc051bGwnXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHsgb3BlcmF0b3IsIHZhbHVlOiBmb3JtYXR0ZWRWYWx1ZSB9XG59XG4iXSwibmFtZXMiOlsic2FuaXRpemVRdWVyeVZhbHVlIiwiZmllbGQiLCJvcGVyYXRvciIsIm9wZXJhdG9yQXJnIiwicmVsYXRpb25PclBhdGgiLCJ2YWwiLCJmb3JtYXR0ZWRWYWx1ZSIsImZpZWxkQWZmZWN0c0RhdGEiLCJ2YWx1ZSIsInR5cGUiLCJlbmRzV2l0aCIsIkFycmF5IiwiaXNBcnJheSIsImFsbFBvc3NpYmxlSURUeXBlcyIsImZvckVhY2giLCJwdXNoIiwicGFyc2VJbnQiLCJTdHJpbmciLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiY3JlYXRlQXJyYXlGcm9tQ29tbWFEZWxpbmVhdGVkIiwibWFwIiwiYXJyYXlWYWwiLCJwYXJzZUZsb2F0IiwibGVuZ3RoIiwiTnVtYmVyIiwiRGF0ZSIsImlzTmFOIiwicGFyc2UiLCJ1bmRlZmluZWQiLCJBUElFcnJvciJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFXYUE7OztlQUFBQTs7O3dCQVhZO3VCQUNxQzsyQkFDZjtBQVN4QyxNQUFNQSxxQkFBcUIsQ0FBQyxFQUNqQ0MsS0FBSyxFQUNMQyxVQUFVQyxXQUFXLEVBQ3JCQyxjQUFjLEVBQ2RDLEdBQUcsRUFDb0I7SUFDdkIsSUFBSUgsV0FBV0M7SUFDZixJQUFJRyxpQkFBaUJEO0lBRXJCLElBQUksQ0FBQ0UsSUFBQUEsdUJBQWdCLEVBQUNOLFFBQVEsT0FBTztRQUFFQztRQUFVTSxPQUFPRjtJQUFlO0lBRXZFLElBQ0UsQUFBQ0wsQ0FBQUEsTUFBTVEsSUFBSSxLQUFLLGtCQUFrQlIsTUFBTVEsSUFBSSxLQUFLLFFBQU8sS0FDeEQsQ0FBQ0wsZUFBZU0sUUFBUSxDQUFDLGlCQUN6QkMsTUFBTUMsT0FBTyxDQUFDTixpQkFDZDtRQUNBLE1BQU1PLHFCQUEwQyxFQUFFO1FBQ2xEUCxlQUFlUSxPQUFPLENBQUMsQ0FBQ1Q7WUFDdEIsSUFBSSxPQUFPQSxRQUFRLFVBQVU7Z0JBQzNCUSxtQkFBbUJFLElBQUksQ0FBQ1YsS0FBS1csU0FBU1g7WUFDeEMsT0FBTztnQkFDTFEsbUJBQW1CRSxJQUFJLENBQUNWLEtBQUtZLE9BQU9aO1lBQ3RDO1FBQ0Y7UUFDQUMsaUJBQWlCTztJQUNuQjtJQUVBLGtEQUFrRDtJQUNsRCxJQUFJWixNQUFNUSxJQUFJLEtBQUssY0FBYyxPQUFPSixRQUFRLFVBQVU7UUFDeEQsSUFBSUEsSUFBSWEsV0FBVyxPQUFPLFFBQVFaLGlCQUFpQjtRQUNuRCxJQUFJRCxJQUFJYSxXQUFXLE9BQU8sU0FBU1osaUJBQWlCO0lBQ3REO0lBRUEsSUFBSTtRQUFDO1FBQU87UUFBTTtLQUFTLENBQUNhLFFBQVEsQ0FBQ2pCLFdBQVc7UUFDOUMsSUFBSSxPQUFPSSxtQkFBbUIsVUFBVTtZQUN0Q0EsaUJBQWlCYyxJQUFBQSx5Q0FBOEIsRUFBQ2Q7WUFFaEQsSUFBSUwsTUFBTVEsSUFBSSxLQUFLLFVBQVU7Z0JBQzNCSCxpQkFBaUJBLGVBQWVlLEdBQUcsQ0FBQyxDQUFDQyxXQUFhQyxXQUFXRDtZQUMvRDtRQUNGO1FBRUEsSUFBSSxDQUFDWCxNQUFNQyxPQUFPLENBQUNOLG1CQUFtQkEsZUFBZWtCLE1BQU0sS0FBSyxHQUFHO1lBQ2pFLE9BQU87UUFDVDtJQUNGO0lBRUEsSUFBSXZCLE1BQU1RLElBQUksS0FBSyxZQUFZLE9BQU9ILG1CQUFtQixVQUFVO1FBQ2pFQSxpQkFBaUJtQixPQUFPcEI7SUFDMUI7SUFFQSxJQUFJSixNQUFNUSxJQUFJLEtBQUssUUFBUTtRQUN6QixJQUFJLE9BQU9KLFFBQVEsVUFBVTtZQUMzQkMsaUJBQWlCLElBQUlvQixLQUFLckI7WUFDMUIsSUFBSW9CLE9BQU9FLEtBQUssQ0FBQ0QsS0FBS0UsS0FBSyxDQUFDdEIsa0JBQWtCO2dCQUM1QyxPQUFPO29CQUFFSjtvQkFBVU0sT0FBT3FCO2dCQUFVO1lBQ3RDO1FBQ0Y7UUFFQSxJQUFJLE9BQU94QixRQUFRLFVBQVU7WUFDM0JDLGlCQUFpQixJQUFJb0IsS0FBS3JCO1FBQzVCO0lBQ0Y7SUFFQSxJQUFJO1FBQUM7UUFBZ0I7S0FBUyxDQUFDYyxRQUFRLENBQUNsQixNQUFNUSxJQUFJLEdBQUc7UUFDbkQsSUFBSUosUUFBUSxRQUFRO1lBQ2xCQyxpQkFBaUI7UUFDbkI7SUFDRjtJQUVBLElBQUlKLGFBQWEsVUFBVUEsYUFBYSxZQUFZQSxhQUFhLGNBQWM7UUFDN0UsTUFBTSxJQUFJNEIsZ0JBQVEsQ0FDaEIsQ0FBQyxlQUFlLEVBQUU1QixTQUFTLHNEQUFzRCxDQUFDO0lBRXRGO0lBRUEsSUFBSUEsYUFBYSxZQUFZO1FBQzNCSSxpQkFBaUIsQ0FBQyxDQUFDLEVBQUVBLGVBQWUsQ0FBQyxDQUFDO0lBQ3hDO0lBRUEsSUFBSUosYUFBYSxVQUFVO1FBQ3pCSSxpQkFBaUJBLG1CQUFtQixVQUFVQSxtQkFBbUI7UUFDakUsSUFBSUEsbUJBQW1CLE9BQU87WUFDNUJKLFdBQVc7UUFDYjtJQUNGO0lBRUEsT0FBTztRQUFFQTtRQUFVTSxPQUFPRjtJQUFlO0FBQzNDIn0=
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL3Nhbml0aXplUXVlcnlWYWx1ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUElFcnJvciB9IGZyb20gJ3BheWxvYWQvZXJyb3JzJ1xuaW1wb3J0IHsgdHlwZSBGaWVsZCwgdHlwZSBUYWJBc0ZpZWxkLCBmaWVsZEFmZmVjdHNEYXRhIH0gZnJvbSAncGF5bG9hZC90eXBlcydcbmltcG9ydCB7IGNyZWF0ZUFycmF5RnJvbUNvbW1hRGVsaW5lYXRlZCB9IGZyb20gJ3BheWxvYWQvdXRpbGl0aWVzJ1xuXG5pbXBvcnQgdHlwZSB7IFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4uL3R5cGVzJ1xuXG50eXBlIFNhbml0aXplUXVlcnlWYWx1ZUFyZ3MgPSB7XG4gIGFkYXB0ZXI6IFBvc3RncmVzQWRhcHRlclxuICBmaWVsZDogRmllbGQgfCBUYWJBc0ZpZWxkXG4gIG9wZXJhdG9yOiBzdHJpbmdcbiAgcmVsYXRpb25PclBhdGg6IHN0cmluZ1xuICB2YWw6IGFueVxufVxuXG5leHBvcnQgY29uc3Qgc2FuaXRpemVRdWVyeVZhbHVlID0gKHtcbiAgYWRhcHRlcixcbiAgZmllbGQsXG4gIG9wZXJhdG9yOiBvcGVyYXRvckFyZyxcbiAgcmVsYXRpb25PclBhdGgsXG4gIHZhbCxcbn06IFNhbml0aXplUXVlcnlWYWx1ZUFyZ3MpOiB7IG9wZXJhdG9yOiBzdHJpbmc7IHZhbHVlOiB1bmtub3duIH0gPT4ge1xuICBsZXQgb3BlcmF0b3IgPSBvcGVyYXRvckFyZ1xuICBsZXQgZm9ybWF0dGVkVmFsdWUgPSB2YWxcblxuICBpZiAoIWZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSByZXR1cm4geyBvcGVyYXRvciwgdmFsdWU6IGZvcm1hdHRlZFZhbHVlIH1cblxuICBpZiAoXG4gICAgKGZpZWxkLnR5cGUgPT09ICdyZWxhdGlvbnNoaXAnIHx8IGZpZWxkLnR5cGUgPT09ICd1cGxvYWQnKSAmJlxuICAgICFyZWxhdGlvbk9yUGF0aC5lbmRzV2l0aCgncmVsYXRpb25UbycpICYmXG4gICAgQXJyYXkuaXNBcnJheShmb3JtYXR0ZWRWYWx1ZSlcbiAgKSB7XG4gICAgY29uc3QgYWxsUG9zc2libGVJRFR5cGVzOiAobnVtYmVyIHwgc3RyaW5nKVtdID0gW11cbiAgICBmb3JtYXR0ZWRWYWx1ZS5mb3JFYWNoKCh2YWwpID0+IHtcbiAgICAgIGlmIChhZGFwdGVyLmlkVHlwZSAhPT0gJ3V1aWQnICYmIHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGFsbFBvc3NpYmxlSURUeXBlcy5wdXNoKHZhbCwgcGFyc2VJbnQodmFsKSlcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgYWxsUG9zc2libGVJRFR5cGVzLnB1c2godmFsKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWxsUG9zc2libGVJRFR5cGVzLnB1c2godmFsLCBTdHJpbmcodmFsKSlcbiAgICAgIH1cbiAgICB9KVxuICAgIGZvcm1hdHRlZFZhbHVlID0gYWxsUG9zc2libGVJRFR5cGVzXG4gIH1cblxuICAvLyBDYXN0IGluY29taW5nIHZhbHVlcyBhcyBwcm9wZXIgc2VhcmNoYWJsZSB0eXBlc1xuICBpZiAoZmllbGQudHlwZSA9PT0gJ2NoZWNrYm94JyAmJiB0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgIGlmICh2YWwudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnKSBmb3JtYXR0ZWRWYWx1ZSA9IHRydWVcbiAgICBpZiAodmFsLnRvTG93ZXJDYXNlKCkgPT09ICdmYWxzZScpIGZvcm1hdHRlZFZhbHVlID0gZmFsc2VcbiAgfVxuXG4gIGlmIChbJ2FsbCcsICdpbicsICdub3RfaW4nXS5pbmNsdWRlcyhvcGVyYXRvcikpIHtcbiAgICBpZiAodHlwZW9mIGZvcm1hdHRlZFZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgZm9ybWF0dGVkVmFsdWUgPSBjcmVhdGVBcnJheUZyb21Db21tYURlbGluZWF0ZWQoZm9ybWF0dGVkVmFsdWUpXG5cbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgICBmb3JtYXR0ZWRWYWx1ZSA9IGZvcm1hdHRlZFZhbHVlLm1hcCgoYXJyYXlWYWwpID0+IHBhcnNlRmxvYXQoYXJyYXlWYWwpKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghQXJyYXkuaXNBcnJheShmb3JtYXR0ZWRWYWx1ZSkgfHwgZm9ybWF0dGVkVmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgfVxuXG4gIGlmIChmaWVsZC50eXBlID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgZm9ybWF0dGVkVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgZm9ybWF0dGVkVmFsdWUgPSBOdW1iZXIodmFsKVxuICB9XG5cbiAgaWYgKGZpZWxkLnR5cGUgPT09ICdkYXRlJykge1xuICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgICAgZm9ybWF0dGVkVmFsdWUgPSBuZXcgRGF0ZSh2YWwpXG4gICAgICBpZiAoTnVtYmVyLmlzTmFOKERhdGUucGFyc2UoZm9ybWF0dGVkVmFsdWUpKSkge1xuICAgICAgICByZXR1cm4geyBvcGVyYXRvciwgdmFsdWU6IHVuZGVmaW5lZCB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICBmb3JtYXR0ZWRWYWx1ZSA9IG5ldyBEYXRlKHZhbClcbiAgICB9XG4gIH1cblxuICBpZiAoWydyZWxhdGlvbnNoaXAnLCAndXBsb2FkJ10uaW5jbHVkZXMoZmllbGQudHlwZSkpIHtcbiAgICBpZiAodmFsID09PSAnbnVsbCcpIHtcbiAgICAgIGZvcm1hdHRlZFZhbHVlID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIGlmIChvcGVyYXRvciA9PT0gJ25lYXInIHx8IG9wZXJhdG9yID09PSAnd2l0aGluJyB8fCBvcGVyYXRvciA9PT0gJ2ludGVyc2VjdHMnKSB7XG4gICAgdGhyb3cgbmV3IEFQSUVycm9yKFxuICAgICAgYFF1ZXJ5aW5nIHdpdGggJyR7b3BlcmF0b3J9JyBpcyBub3Qgc3VwcG9ydGVkIHdpdGggdGhlIHBvc3RncmVzIGRhdGFiYXNlIGFkYXB0ZXIuYCxcbiAgICApXG4gIH1cblxuICBpZiAob3BlcmF0b3IgPT09ICdjb250YWlucycpIHtcbiAgICBmb3JtYXR0ZWRWYWx1ZSA9IGAlJHtmb3JtYXR0ZWRWYWx1ZX0lYFxuICB9XG5cbiAgaWYgKG9wZXJhdG9yID09PSAnZXhpc3RzJykge1xuICAgIGZvcm1hdHRlZFZhbHVlID0gZm9ybWF0dGVkVmFsdWUgPT09ICd0cnVlJyB8fCBmb3JtYXR0ZWRWYWx1ZSA9PT0gdHJ1ZVxuICAgIGlmIChmb3JtYXR0ZWRWYWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgIG9wZXJhdG9yID0gJ2lzTnVsbCdcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBvcGVyYXRvciwgdmFsdWU6IGZvcm1hdHRlZFZhbHVlIH1cbn1cbiJdLCJuYW1lcyI6WyJzYW5pdGl6ZVF1ZXJ5VmFsdWUiLCJhZGFwdGVyIiwiZmllbGQiLCJvcGVyYXRvciIsIm9wZXJhdG9yQXJnIiwicmVsYXRpb25PclBhdGgiLCJ2YWwiLCJmb3JtYXR0ZWRWYWx1ZSIsImZpZWxkQWZmZWN0c0RhdGEiLCJ2YWx1ZSIsInR5cGUiLCJlbmRzV2l0aCIsIkFycmF5IiwiaXNBcnJheSIsImFsbFBvc3NpYmxlSURUeXBlcyIsImZvckVhY2giLCJpZFR5cGUiLCJwdXNoIiwicGFyc2VJbnQiLCJTdHJpbmciLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiY3JlYXRlQXJyYXlGcm9tQ29tbWFEZWxpbmVhdGVkIiwibWFwIiwiYXJyYXlWYWwiLCJwYXJzZUZsb2F0IiwibGVuZ3RoIiwiTnVtYmVyIiwiRGF0ZSIsImlzTmFOIiwicGFyc2UiLCJ1bmRlZmluZWQiLCJBUElFcnJvciJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFjYUE7OztlQUFBQTs7O3dCQWRZO3VCQUNxQzsyQkFD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
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/schema/build.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AACjG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAgB1C,OAAO,KAAK,EAAE,cAAc,EAAgB,eAAe,EAAE,MAAM,UAAU,CAAA;AAM7E,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,GAAG,uBAAuB,CAAC,CAAA;IAClG,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,cAAc,EAAE,OAAO,CAAA;IACvB,aAAa,EAAE,OAAO,CAAA;IACtB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAA;IACrC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAA;IACnC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACtC,CAAA;AAED,eAAO,MAAM,UAAU,8PAgBpB,IAAI,KAAG,MAkUT,CAAA"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/schema/build.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EAEf,uBAAuB,EACxB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAO1C,OAAO,KAAK,EAAE,cAAc,EAAwB,eAAe,EAAE,MAAM,UAAU,CAAA;AAMrF,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,GAAG,uBAAuB,CAAC,CAAA;IAClG,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,cAAc,EAAE,OAAO,CAAA;IACvB,aAAa,EAAE,OAAO,CAAA;IACtB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAA;IACrC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAA;IACnC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACtC,CAAA;AAED,eAAO,MAAM,UAAU,8PAgBpB,IAAI,KAAG,MA+TT,CAAA"}