sonamu 0.11.0 → 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"migration-set.d.ts","sourceRoot":"","sources":["../../src/migration/migration-set.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAc/C,OAAO,EAOL,KAAK,wBAAwB,EAC9B,MAAM,gBAAgB,CAAC;AAGxB;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,wBAAwB,CA0LlF"}
1
+ {"version":3,"file":"migration-set.d.ts","sourceRoot":"","sources":["../../src/migration/migration-set.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAc/C,OAAO,EAOL,KAAK,wBAAwB,EAC9B,MAAM,gBAAgB,CAAC;AAOxB;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,wBAAwB,CAuMlF"}
@@ -23,11 +23,19 @@ function getMigrationSetFromEntity(entity) {
23
23
  return {};
24
24
  })(),
25
25
  ...isStringProp(prop) && prop.length !== void 0 && { length: prop.length },
26
- ...(isNumberProp(prop) || isNumericProp(prop)) && {
27
- precision: prop.precision,
28
- scale: prop.scale,
29
- numberType: isNumberProp(prop) ? prop.numberType ?? "numeric" : "numeric"
30
- },
26
+ ...(isNumberProp(prop) || isNumericProp(prop)) && (() => {
27
+ const numberType = isNumberProp(prop) ? prop.numberType ?? "numeric" : "numeric";
28
+ if (numberType === "numeric") return {
29
+ numberType,
30
+ precision: prop.precision ?? NUMERIC_DEFAULT_PRECISION,
31
+ scale: prop.scale ?? NUMERIC_DEFAULT_SCALE
32
+ };
33
+ return {
34
+ numberType,
35
+ precision: prop.precision,
36
+ scale: prop.scale
37
+ };
38
+ })(),
31
39
  ...isVectorProp(prop) && { dimensions: prop.dimensions },
32
40
  ...prop.generated && { generated: prop.generated }
33
41
  };
@@ -157,13 +165,16 @@ function resolveEntityPropTypeToMigrationColumnType(prop) {
157
165
  throw new Error(`Unknown entity prop type: ${prop.type}`);
158
166
  }
159
167
  }
168
+ var NUMERIC_DEFAULT_PRECISION, NUMERIC_DEFAULT_SCALE;
160
169
  var init_migration_set = __esmMin((() => {
161
170
  init_entity_manager();
162
171
  init_types();
163
172
  init_utils();
173
+ NUMERIC_DEFAULT_PRECISION = 8;
174
+ NUMERIC_DEFAULT_SCALE = 2;
164
175
  }));
165
176
  //#endregion
166
177
  init_migration_set();
167
178
  export { getMigrationSetFromEntity, init_migration_set };
168
179
 
169
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uLXNldC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbWlncmF0aW9uL21pZ3JhdGlvbi1zZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIjtcblxuaW1wb3J0IHsgdHlwZSBFbnRpdHkgfSBmcm9tIFwiLi4vZW50aXR5L2VudGl0eVwiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciB9IGZyb20gXCIuLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7XG4gIGlzQmVsb25nc1RvT25lUmVsYXRpb25Qcm9wLFxuICBpc0hhc01hbnlSZWxhdGlvblByb3AsXG4gIGlzTWFueVRvTWFueVJlbGF0aW9uUHJvcCxcbiAgaXNOdW1iZXJQcm9wLFxuICBpc051bWVyaWNQcm9wLFxuICBpc09uZVRvT25lUmVsYXRpb25Qcm9wLFxuICBpc1JlbGF0aW9uUHJvcCxcbiAgaXNTdHJpbmdQcm9wLFxuICBpc1ZlY3RvclByb3AsXG4gIGlzVmlydHVhbFByb3AsXG59IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHtcbiAgdHlwZSBFbnRpdHlQcm9wLFxuICB0eXBlIE1pZ3JhdGlvbkNvbHVtbixcbiAgdHlwZSBNaWdyYXRpb25Db2x1bW5UeXBlLFxuICB0eXBlIE1pZ3JhdGlvbkZvcmVpZ24sXG4gIHR5cGUgTWlncmF0aW9uSW5kZXgsXG4gIHR5cGUgTWlncmF0aW9uSm9pblRhYmxlLFxuICB0eXBlIE1pZ3JhdGlvblNldEFuZEpvaW5UYWJsZSxcbn0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBleGhhdXN0aXZlIH0gZnJvbSBcIi4uL3V0aWxzL3V0aWxzXCI7XG5cbi8qKlxuICogRW50aXR566W8IOydveyWtOyEnCBNaWdyYXRpb25TZXRBbmRKb2luVGFibGXsnYQg66eM65Ok7Ja07Ji164uI64ukLlxuICogQHBhcmFtIGVudGl0eSBFbnRpdHkg6rCd7LK0XG4gKiBAcmV0dXJucyBNaWdyYXRpb25TZXRBbmRKb2luVGFibGUg6rCd7LK0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNaWdyYXRpb25TZXRGcm9tRW50aXR5KGVudGl0eTogRW50aXR5KTogTWlncmF0aW9uU2V0QW5kSm9pblRhYmxlIHtcbiAgY29uc3QgbWlncmF0aW9uU2V0OiBNaWdyYXRpb25TZXRBbmRKb2luVGFibGUgPSBlbnRpdHkucHJvcHMucmVkdWNlKFxuICAgIChyLCBwcm9wKSA9PiB7XG4gICAgICAvLyB2aXJ0dWFsIO2VhOuTnCDsoJzsmbhcbiAgICAgIGlmIChpc1ZpcnR1YWxQcm9wKHByb3ApKSB7XG4gICAgICAgIHJldHVybiByO1xuICAgICAgfVxuICAgICAgLy8gSGFzTWFueSDsvIDsnbTsiqTripQg7JWE66y0IOyymOumrOuPhCDtlZjsp4Ag7JWK7J2MXG4gICAgICBpZiAoaXNIYXNNYW55UmVsYXRpb25Qcm9wKHByb3ApKSB7XG4gICAgICAgIHJldHVybiByO1xuICAgICAgfVxuXG4gICAgICAvLyDsnbzrsJgg7Lus65+8XG4gICAgICBpZiAoIWlzUmVsYXRpb25Qcm9wKHByb3ApKSB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHtcbiAgICAgICAgICBuYW1lOiBwcm9wLm5hbWUsXG4gICAgICAgICAgdHlwZTogcmVzb2x2ZUVudGl0eVByb3BUeXBlVG9NaWdyYXRpb25Db2x1bW5UeXBlKHByb3ApLFxuICAgICAgICAgIG51bGxhYmxlOiBwcm9wLm51bGxhYmxlID09PSB0cnVlLFxuICAgICAgICAgIC4uLigoKSA9PiB7XG4gICAgICAgICAgICBpZiAocHJvcC5kYkRlZmF1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGRlZmF1bHRUbzogcHJvcC5kYkRlZmF1bHQsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgfSkoKSxcbiAgICAgICAgICAvLyBTdHJpbmcg7YOA7J6F7JeQIGxlbmd0aCDsnojripQg6rK97JqwIOy2lOqwgFxuICAgICAgICAgIC4uLihpc1N0cmluZ1Byb3AocHJvcCkgJiZcbiAgICAgICAgICAgIHByb3AubGVuZ3RoICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICAgICAgICBsZW5ndGg6IHByb3AubGVuZ3RoLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgLy8gTnVtYmVyL051bWVyaWMg7YOA7J6F7J2YIOqyveyasCBwcmVjaXNpb24sIHNjYWxlIOy2lOqwgFxuICAgICAgICAgIC4uLigoaXNOdW1iZXJQcm9wKHByb3ApIHx8IGlzTnVtZXJpY1Byb3AocHJvcCkpICYmIHtcbiAgICAgICAgICAgIHByZWNpc2lvbjogcHJvcC5wcmVjaXNpb24sXG4gICAgICAgICAgICBzY2FsZTogcHJvcC5zY2FsZSxcbiAgICAgICAgICAgIG51bWJlclR5cGU6IGlzTnVtYmVyUHJvcChwcm9wKSA/IChwcm9wLm51bWJlclR5cGUgPz8gXCJudW1lcmljXCIpIDogXCJudW1lcmljXCIsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgLy8gVmVjdG9yIO2DgOyeheydmCDqsr3smrAgZGltZW5zaW9ucyDstpTqsIBcbiAgICAgICAgICAuLi4oaXNWZWN0b3JQcm9wKHByb3ApICYmIHtcbiAgICAgICAgICAgIGRpbWVuc2lvbnM6IHByb3AuZGltZW5zaW9ucyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAvLyBHZW5lcmF0ZWQgQ29sdW1uIOygleuztCDstpTqsIBcbiAgICAgICAgICAuLi4ocHJvcC5nZW5lcmF0ZWQgJiYge1xuICAgICAgICAgICAgZ2VuZXJhdGVkOiBwcm9wLmdlbmVyYXRlZCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfTtcblxuICAgICAgICByLmNvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNNYW55VG9NYW55UmVsYXRpb25Qcm9wKHByb3ApKSB7XG4gICAgICAgIC8vIE1hbnlUb01hbnkg7LyA7J207IqkXG4gICAgICAgIGNvbnN0IHJlbE1kID0gRW50aXR5TWFuYWdlci5nZXQocHJvcC53aXRoKTtcbiAgICAgICAgY29uc3QgdGFibGUxID0gZW50aXR5LnRhYmxlO1xuICAgICAgICBjb25zdCB0YWJsZTIgPSByZWxNZC50YWJsZTtcblxuICAgICAgICAvLyDqsIEg7JeU7Yuw7Yuw7J2YIFBLIO2DgOyehSDsoJXrs7Qg6rCA7KC47Jik6riwXG4gICAgICAgIGNvbnN0IHRoaXNQa1R5cGUgPSBlbnRpdHkuZ2V0UGtUeXBlKCk7XG4gICAgICAgIGNvbnN0IHRoaXNQa1Byb3AgPSBlbnRpdHkuZ2V0UGtQcm9wKCk7XG4gICAgICAgIGNvbnN0IHJlbFBrVHlwZSA9IHJlbE1kLmdldFBrVHlwZSgpO1xuICAgICAgICBjb25zdCByZWxQa1Byb3AgPSByZWxNZC5nZXRQa1Byb3AoKTtcblxuICAgICAgICBjb25zdCBqb2luID0ge1xuICAgICAgICAgIGZyb206IGAke2VudGl0eS50YWJsZX0uaWRgLFxuICAgICAgICAgIHRocm91Z2g6IHtcbiAgICAgICAgICAgIGZyb206IGAke3Byb3Auam9pblRhYmxlfS4ke2luZmxlY3Rpb24uc2luZ3VsYXJpemUodGFibGUxKX1faWRgLFxuICAgICAgICAgICAgdG86IGAke3Byb3Auam9pblRhYmxlfS4ke2luZmxlY3Rpb24uc2luZ3VsYXJpemUodGFibGUyKX1faWRgLFxuICAgICAgICAgICAgb25VcGRhdGU6IHByb3Aub25VcGRhdGUsXG4gICAgICAgICAgICBvbkRlbGV0ZTogcHJvcC5vbkRlbGV0ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRvOiBgJHtyZWxNZC50YWJsZX0uaWRgLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB0aHJvdWdoID0gam9pbi50aHJvdWdoO1xuICAgICAgICBjb25zdCBmaWVsZHMgPSBbdGhyb3VnaC5mcm9tLCB0aHJvdWdoLnRvXTtcbiAgICAgICAgci5qb2luVGFibGVzLnB1c2goe1xuICAgICAgICAgIHRhYmxlOiB0aHJvdWdoLmZyb20uc3BsaXQoXCIuXCIpWzBdLFxuICAgICAgICAgIGluZGV4ZXM6IGVudGl0eS5pbmRleGVzXG4gICAgICAgICAgICAuZmlsdGVyKChpbmRleCkgPT4gaW5kZXguY29sdW1ucy5maW5kKChjb2wpID0+IGNvbC5uYW1lLmluY2x1ZGVzKGAke3Byb3Auam9pblRhYmxlfS5gKSkpXG4gICAgICAgICAgICAubWFwKChpbmRleCkgPT4gKHtcbiAgICAgICAgICAgICAgLi4uaW5kZXgsXG4gICAgICAgICAgICAgIGNvbHVtbnM6IGluZGV4LmNvbHVtbnMubWFwKChjb2wpID0+ICh7XG4gICAgICAgICAgICAgICAgbmFtZTogY29sLm5hbWUucmVwbGFjZShgJHtwcm9wLmpvaW5UYWJsZX0uYCwgXCJcIiksXG4gICAgICAgICAgICAgICAgbnVsbHNGaXJzdDogY29sLm51bGxzRmlyc3QsXG4gICAgICAgICAgICAgICAgc29ydE9yZGVyOiBjb2wuc29ydE9yZGVyLFxuICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgY29sdW1uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiBcImlkXCIsXG4gICAgICAgICAgICAgIHR5cGU6IFwiaW50ZWdlclwiLFxuICAgICAgICAgICAgICBudWxsYWJsZTogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8g7ZiE7J6sIOyXlO2LsO2LsOydmCBGS1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiBgJHtpbmZsZWN0aW9uLnNpbmd1bGFyaXplKHRhYmxlMSl9X2lkYCxcbiAgICAgICAgICAgICAgdHlwZTogdGhpc1BrVHlwZSxcbiAgICAgICAgICAgICAgbnVsbGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAuLi4odGhpc1BrVHlwZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgICAgIHRoaXNQa1Byb3AudHlwZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgICAgIHRoaXNQa1Byb3AubGVuZ3RoICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICAgICAgICAgICAgbGVuZ3RoOiB0aGlzUGtQcm9wLmxlbmd0aCxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyDssLjsobAg7JeU7Yuw7Yuw7J2YIEZLXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6IGAke2luZmxlY3Rpb24uc2luZ3VsYXJpemUodGFibGUyKX1faWRgLFxuICAgICAgICAgICAgICB0eXBlOiByZWxQa1R5cGUsXG4gICAgICAgICAgICAgIG51bGxhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgLi4uKHJlbFBrVHlwZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgICAgIHJlbFBrUHJvcC50eXBlID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICAgICAgcmVsUGtQcm9wLmxlbmd0aCAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgICAgICAgICAgIGxlbmd0aDogcmVsUGtQcm9wLmxlbmd0aCxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBmb3JlaWduczogZmllbGRzLm1hcCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgIC8vIO2YhOyerCDtlYTrk5zqsIAg7Ja065akIO2FjOydtOu4lOyXkCDsho3tlZjripTsp4Ag7YyQ64uoXG4gICAgICAgICAgICBjb25zdCBjb2wgPSBmaWVsZC5zcGxpdChcIi5cIilbMV07XG4gICAgICAgICAgICBjb25zdCB0byA9ICgoKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChgJHtpbmZsZWN0aW9uLnNpbmd1bGFyaXplKGpvaW4udG8uc3BsaXQoXCIuXCIpWzBdKX1faWRgID09PSBjb2wpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gam9pbi50bztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gam9pbi5mcm9tO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSgpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgY29sdW1uczogW2NvbF0sXG4gICAgICAgICAgICAgIHRvLFxuICAgICAgICAgICAgICBvblVwZGF0ZTogdGhyb3VnaC5vblVwZGF0ZSxcbiAgICAgICAgICAgICAgb25EZWxldGU6IHRocm91Z2gub25EZWxldGUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBpc0JlbG9uZ3NUb09uZVJlbGF0aW9uUHJvcChwcm9wKSB8fFxuICAgICAgICAoaXNPbmVUb09uZVJlbGF0aW9uUHJvcChwcm9wKSAmJiBwcm9wLmhhc0pvaW5Db2x1bW4pXG4gICAgICApIHtcbiAgICAgICAgLy8gLU9uZVJlbGF0aW9uIOy8gOydtOyKpFxuICAgICAgICBjb25zdCByZWxFbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChwcm9wLndpdGgpO1xuICAgICAgICBjb25zdCBwa1R5cGUgPSByZWxFbnRpdHkuZ2V0UGtUeXBlKCk7XG4gICAgICAgIGNvbnN0IHBrUHJvcCA9IHJlbEVudGl0eS5nZXRQa1Byb3AoKTtcblxuICAgICAgICBjb25zdCBpZENvbHVtbk5hbWUgPSBgJHtwcm9wLm5hbWV9X2lkYDtcbiAgICAgICAgci5jb2x1bW5zLnB1c2goe1xuICAgICAgICAgIG5hbWU6IGlkQ29sdW1uTmFtZSxcbiAgICAgICAgICB0eXBlOiBwa1R5cGUsXG4gICAgICAgICAgbnVsbGFibGU6IHByb3AubnVsbGFibGUgPz8gZmFsc2UsXG4gICAgICAgICAgLy8gc3RyaW5nIEZL7J24IOqyveyasCBsZW5ndGjrj4Qg7KCE64usXG4gICAgICAgICAgLi4uKHBrVHlwZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgcGtQcm9wLnR5cGUgPT09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgICAgIHBrUHJvcC5sZW5ndGggIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgICAgICAgIGxlbmd0aDogcGtQcm9wLmxlbmd0aCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHByb3AudXNlQ29uc3RyYWludCA/PyB0cnVlKSB7XG4gICAgICAgICAgci5mb3JlaWducy5wdXNoKHtcbiAgICAgICAgICAgIGNvbHVtbnM6IFtpZENvbHVtbk5hbWVdLFxuICAgICAgICAgICAgdG86IGAke2luZmxlY3Rpb24udW5kZXJzY29yZShpbmZsZWN0aW9uLnBsdXJhbGl6ZShwcm9wLndpdGgpKS50b0xvd2VyQ2FzZSgpfS5pZGAsXG4gICAgICAgICAgICBvblVwZGF0ZTogcHJvcC5vblVwZGF0ZSA/PyBcIlJFU1RSSUNUXCIsXG4gICAgICAgICAgICBvbkRlbGV0ZTogcHJvcC5vbkRlbGV0ZSA/PyBcIlJFU1RSSUNUXCIsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHI7XG4gICAgfSxcbiAgICB7XG4gICAgICB0YWJsZTogZW50aXR5LnRhYmxlLFxuICAgICAgY29sdW1uczpcbiAgICAgICAgLyogU0FGRVRZOiBLbmV47JmAIFBvc3RncmVTUUwg7Iqk7YKk66eIIOyhsO2ajCDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBbXSBhcyBNaWdyYXRpb25Db2x1bW5bXSxcbiAgICAgIGluZGV4ZXM6XG4gICAgICAgIC8qIFNBRkVUWTogS25leOyZgCBQb3N0Z3JlU1FMIOyKpO2CpOuniCDsobDtmowg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gW10gYXMgTWlncmF0aW9uSW5kZXhbXSxcbiAgICAgIGZvcmVpZ25zOlxuICAgICAgICAvKiBTQUZFVFk6IEtuZXjsmYAgUG9zdGdyZVNRTCDsiqTtgqTrp4gg7KGw7ZqMIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIFtdIGFzIE1pZ3JhdGlvbkZvcmVpZ25bXSxcbiAgICAgIGpvaW5UYWJsZXM6XG4gICAgICAgIC8qIFNBRkVUWTogS25leOyZgCBQb3N0Z3JlU1FMIOyKpO2CpOuniCDsobDtmowg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gW10gYXMgTWlncmF0aW9uSm9pblRhYmxlW10sXG4gICAgfSxcbiAgKTtcblxuICAvLyBpbmRleGVzXG4gIG1pZ3JhdGlvblNldC5pbmRleGVzID0gZW50aXR5LmluZGV4ZXMuZmlsdGVyKChpbmRleCkgPT5cbiAgICBpbmRleC5jb2x1bW5zLmZpbmQoKGNvbCkgPT4gIWNvbC5uYW1lLmluY2x1ZGVzKFwiLlwiKSksXG4gICk7XG5cbiAgcmV0dXJuIG1pZ3JhdGlvblNldDtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZUVudGl0eVByb3BUeXBlVG9NaWdyYXRpb25Db2x1bW5UeXBlKHByb3A6IEVudGl0eVByb3ApOiBNaWdyYXRpb25Db2x1bW5UeXBlIHtcbiAgaWYgKHByb3AudHlwZSA9PT0gXCJyZWxhdGlvblwiIHx8IHByb3AudHlwZSA9PT0gXCJ2aXJ0dWFsXCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVzb2x2ZWQgY29sdW1uIHR5cGU6ICR7cHJvcC50eXBlfWApO1xuICB9XG5cbiAgc3dpdGNoIChwcm9wLnR5cGUpIHtcbiAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICByZXR1cm4gXCJzdHJpbmdcIjtcbiAgICBjYXNlIFwic3RyaW5nW11cIjpcbiAgICAgIHJldHVybiBcInN0cmluZ1tdXCI7XG4gICAgY2FzZSBcImVudW1cIjpcbiAgICAgIHJldHVybiBcInN0cmluZ1wiO1xuICAgIGNhc2UgXCJlbnVtW11cIjpcbiAgICAgIHJldHVybiBcInN0cmluZ1tdXCI7XG4gICAgY2FzZSBcImludGVnZXJcIjpcbiAgICAgIHJldHVybiBcImludGVnZXJcIjtcbiAgICBjYXNlIFwiaW50ZWdlcltdXCI6XG4gICAgICByZXR1cm4gXCJpbnRlZ2VyW11cIjtcbiAgICBjYXNlIFwiYmlnSW50ZWdlclwiOlxuICAgICAgcmV0dXJuIFwiYmlnSW50ZWdlclwiO1xuICAgIGNhc2UgXCJiaWdJbnRlZ2VyW11cIjpcbiAgICAgIHJldHVybiBcImJpZ0ludGVnZXJbXVwiO1xuICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgIHJldHVybiBcIm51bWJlck9yTnVtZXJpY1wiO1xuICAgIGNhc2UgXCJudW1iZXJbXVwiOlxuICAgICAgcmV0dXJuIFwibnVtYmVyT3JOdW1lcmljW11cIjtcbiAgICBjYXNlIFwibnVtZXJpY1wiOlxuICAgICAgcmV0dXJuIFwibnVtYmVyT3JOdW1lcmljXCI7XG4gICAgY2FzZSBcIm51bWVyaWNbXVwiOlxuICAgICAgcmV0dXJuIFwibnVtYmVyT3JOdW1lcmljW11cIjtcbiAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgcmV0dXJuIFwiYm9vbGVhblwiO1xuICAgIGNhc2UgXCJib29sZWFuW11cIjpcbiAgICAgIHJldHVybiBcImJvb2xlYW5bXVwiO1xuICAgIGNhc2UgXCJkYXRlXCI6XG4gICAgICByZXR1cm4gXCJkYXRlXCI7XG4gICAgY2FzZSBcImRhdGVbXVwiOlxuICAgICAgcmV0dXJuIFwiZGF0ZVtdXCI7XG4gICAgY2FzZSBcInV1aWRcIjpcbiAgICAgIHJldHVybiBcInV1aWRcIjtcbiAgICBjYXNlIFwidXVpZFtdXCI6XG4gICAgICByZXR1cm4gXCJ1dWlkW11cIjtcbiAgICBjYXNlIFwianNvblwiOlxuICAgICAgcmV0dXJuIFwianNvblwiO1xuICAgIGNhc2UgXCJzZWFyY2hUZXh0XCI6XG4gICAgICByZXR1cm4gXCJzdHJpbmdcIjtcbiAgICBjYXNlIFwidmVjdG9yXCI6XG4gICAgICByZXR1cm4gXCJ2ZWN0b3JcIjtcbiAgICBjYXNlIFwidmVjdG9yW11cIjpcbiAgICAgIHJldHVybiBcInZlY3RvcltdXCI7XG4gICAgY2FzZSBcInRzdmVjdG9yXCI6XG4gICAgICByZXR1cm4gXCJ0c3ZlY3RvclwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICBleGhhdXN0aXZlKHByb3ApO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVW5rbm93biBlbnRpdHkgcHJvcCB0eXBlOiAkey8qIFNBRkVUWTogS25leOyZgCBQb3N0Z3JlU1FMIOyKpO2CpOuniCDsobDtmowg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gKHByb3AgYXMgeyB0eXBlOiBzdHJpbmcgfSkudHlwZX1gLFxuICAgICAgKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQWdDQSxTQUFnQiwwQkFBMEIsUUFBMEM7Q0FDbEYsTUFBTSxlQUF5QyxPQUFPLE1BQU0sUUFDekQsR0FBRyxTQUFTO0VBRVgsSUFBSSxjQUFjLElBQUksR0FDcEIsT0FBTztFQUdULElBQUksc0JBQXNCLElBQUksR0FDNUIsT0FBTztFQUlULElBQUksQ0FBQyxlQUFlLElBQUksR0FBRztHQUN6QixNQUFNLFNBQVM7SUFDYixNQUFNLEtBQUs7SUFDWCxNQUFNLDJDQUEyQyxJQUFJO0lBQ3JELFVBQVUsS0FBSyxhQUFhO0lBQzVCLFVBQVU7S0FDUixJQUFJLEtBQUssY0FBYyxRQUNyQixPQUFPLEVBQ0wsV0FBVyxLQUFLLFVBQ2xCO0tBRUYsT0FBTyxDQUFDO0lBQ1YsRUFBQSxDQUFHO0lBRUgsR0FBSSxhQUFhLElBQUksS0FDbkIsS0FBSyxXQUFXLFVBQWEsRUFDM0IsUUFBUSxLQUFLLE9BQ2Y7SUFFRixJQUFLLGFBQWEsSUFBSSxLQUFLLGNBQWMsSUFBSSxNQUFNO0tBQ2pELFdBQVcsS0FBSztLQUNoQixPQUFPLEtBQUs7S0FDWixZQUFZLGFBQWEsSUFBSSxJQUFLLEtBQUssY0FBYyxZQUFhO0lBQ3BFO0lBRUEsR0FBSSxh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
180
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uLXNldC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbWlncmF0aW9uL21pZ3JhdGlvbi1zZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIjtcblxuaW1wb3J0IHsgdHlwZSBFbnRpdHkgfSBmcm9tIFwiLi4vZW50aXR5L2VudGl0eVwiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciB9IGZyb20gXCIuLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7XG4gIGlzQmVsb25nc1RvT25lUmVsYXRpb25Qcm9wLFxuICBpc0hhc01hbnlSZWxhdGlvblByb3AsXG4gIGlzTWFueVRvTWFueVJlbGF0aW9uUHJvcCxcbiAgaXNOdW1iZXJQcm9wLFxuICBpc051bWVyaWNQcm9wLFxuICBpc09uZVRvT25lUmVsYXRpb25Qcm9wLFxuICBpc1JlbGF0aW9uUHJvcCxcbiAgaXNTdHJpbmdQcm9wLFxuICBpc1ZlY3RvclByb3AsXG4gIGlzVmlydHVhbFByb3AsXG59IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHtcbiAgdHlwZSBFbnRpdHlQcm9wLFxuICB0eXBlIE1pZ3JhdGlvbkNvbHVtbixcbiAgdHlwZSBNaWdyYXRpb25Db2x1bW5UeXBlLFxuICB0eXBlIE1pZ3JhdGlvbkZvcmVpZ24sXG4gIHR5cGUgTWlncmF0aW9uSW5kZXgsXG4gIHR5cGUgTWlncmF0aW9uSm9pblRhYmxlLFxuICB0eXBlIE1pZ3JhdGlvblNldEFuZEpvaW5UYWJsZSxcbn0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBleGhhdXN0aXZlIH0gZnJvbSBcIi4uL3V0aWxzL3V0aWxzXCI7XG5cbi8vIG51bWVyaWMg7Lus65+87JeQ7IScIHByZWNpc2lvbi9zY2FsZeydhCDsg53rnrXtlojsnYQg65WMIOyLpOygnOuhnCDsg53shLHrkJjripQg6rCSKGtuZXggZGVjaW1hbOydmCDquLDrs7jqsJIp7J2064ukLlxuY29uc3QgTlVNRVJJQ19ERUZBVUxUX1BSRUNJU0lPTiA9IDg7XG5jb25zdCBOVU1FUklDX0RFRkFVTFRfU0NBTEUgPSAyO1xuXG4vKipcbiAqIEVudGl0eeulvCDsnb3slrTshJwgTWlncmF0aW9uU2V0QW5kSm9pblRhYmxl7J2EIOunjOuTpOyWtOyYteuLiOuLpC5cbiAqIEBwYXJhbSBlbnRpdHkgRW50aXR5IOqwneyytFxuICogQHJldHVybnMgTWlncmF0aW9uU2V0QW5kSm9pblRhYmxlIOqwneyytFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWlncmF0aW9uU2V0RnJvbUVudGl0eShlbnRpdHk6IEVudGl0eSk6IE1pZ3JhdGlvblNldEFuZEpvaW5UYWJsZSB7XG4gIGNvbnN0IG1pZ3JhdGlvblNldDogTWlncmF0aW9uU2V0QW5kSm9pblRhYmxlID0gZW50aXR5LnByb3BzLnJlZHVjZShcbiAgICAociwgcHJvcCkgPT4ge1xuICAgICAgLy8gdmlydHVhbCDtlYTrk5wg7KCc7Jm4XG4gICAgICBpZiAoaXNWaXJ0dWFsUHJvcChwcm9wKSkge1xuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH1cbiAgICAgIC8vIEhhc01hbnkg7LyA7J207Iqk64qUIOyVhOustCDsspjrpqzrj4Qg7ZWY7KeAIOyViuydjFxuICAgICAgaWYgKGlzSGFzTWFueVJlbGF0aW9uUHJvcChwcm9wKSkge1xuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH1cblxuICAgICAgLy8g7J2867CYIOy7rOufvFxuICAgICAgaWYgKCFpc1JlbGF0aW9uUHJvcChwcm9wKSkge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSB7XG4gICAgICAgICAgbmFtZTogcHJvcC5uYW1lLFxuICAgICAgICAgIHR5cGU6IHJlc29sdmVFbnRpdHlQcm9wVHlwZVRvTWlncmF0aW9uQ29sdW1uVHlwZShwcm9wKSxcbiAgICAgICAgICBudWxsYWJsZTogcHJvcC5udWxsYWJsZSA9PT0gdHJ1ZSxcbiAgICAgICAgICAuLi4oKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHByb3AuZGJEZWZhdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0VG86IHByb3AuZGJEZWZhdWx0LFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgIH0pKCksXG4gICAgICAgICAgLy8gU3RyaW5nIO2DgOyeheyXkCBsZW5ndGgg7J6I64qUIOqyveyasCDstpTqsIBcbiAgICAgICAgICAuLi4oaXNTdHJpbmdQcm9wKHByb3ApICYmXG4gICAgICAgICAgICBwcm9wLmxlbmd0aCAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgICAgICAgbGVuZ3RoOiBwcm9wLmxlbmd0aCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIC8vIE51bWJlci9OdW1lcmljIO2DgOyeheydmCDqsr3smrAgcHJlY2lzaW9uLCBzY2FsZSDstpTqsIBcbiAgICAgICAgICAuLi4oKGlzTnVtYmVyUHJvcChwcm9wKSB8fCBpc051bWVyaWNQcm9wKHByb3ApKSAmJlxuICAgICAgICAgICAgKCgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbnVtYmVyVHlwZSA9IGlzTnVtYmVyUHJvcChwcm9wKSA/IChwcm9wLm51bWJlclR5cGUgPz8gXCJudW1lcmljXCIpIDogXCJudW1lcmljXCI7XG5cbiAgICAgICAgICAgICAgLy8gbnVtZXJpY+yXkOyEnCBwcmVjaXNpb24vc2NhbGXsnYQg7IOd65617ZWY66m0IGtuZXggZGVjaW1hbOydmCDquLDrs7jqsJIoOCwgMinsnLzroZwg7Lus65+87J20XG4gICAgICAgICAgICAgIC8vIOunjOuTpOyWtOyngOuKlOuNsCwgRELsl5DshJzripQg6re4IOqwkuydtCDqt7jrjIDroZwg7J297Z6I66+A66GcIOyXlO2LsO2LsCDsqr3snYQgdW5kZWZpbmVk66GcIOuRkOuptFxuICAgICAgICAgICAgICAvLyDrp6Trsogg67aI7J287LmY66GcIOyeoe2ejOuLpC4g67mE6rWQIOyghOyXkCDqsJnsnYAg6riw67O46rCS7J2EIOyxhOybjCDsi6TsoJwg7Iqk7YKk66eI7JmAIOunnuy2mOuLpC5cbiAgICAgICAgICAgICAgaWYgKG51bWJlclR5cGUgPT09IFwibnVtZXJpY1wiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIG51bWJlclR5cGUsXG4gICAgICAgICAgICAgICAgICBwcmVjaXNpb246IHByb3AucHJlY2lzaW9uID8/IE5VTUVSSUNfREVGQVVMVF9QUkVDSVNJT04sXG4gICAgICAgICAgICAgICAgICBzY2FsZTogcHJvcC5zY2FsZSA/PyBOVU1FUklDX0RFRkFVTFRfU0NBTEUsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIHJlYWwvZG91YmxlIHByZWNpc2lvbuydgCBwcmVjaXNpb24vc2NhbGXsnYQg7JOw7KeAIOyViuuKlOuLpChEQiDrpqzrjZTrj4Qg67CY7ZmY7ZWY7KeAIOyViuydjCkuXG4gICAgICAgICAgICAgIHJldHVybiB7IG51bWJlclR5cGUsIHByZWNpc2lvbjogcHJvcC5wcmVjaXNpb24sIHNjYWxlOiBwcm9wLnNjYWxlIH07XG4gICAgICAgICAgICB9KSgpKSxcbiAgICAgICAgICAvLyBWZWN0b3Ig7YOA7J6F7J2YIOqyveyasCBkaW1lbnNpb25zIOy2lOqwgFxuICAgICAgICAgIC4uLihpc1ZlY3RvclByb3AocHJvcCkgJiYge1xuICAgICAgICAgICAgZGltZW5zaW9uczogcHJvcC5kaW1lbnNpb25zLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC8vIEdlbmVyYXRlZCBDb2x1bW4g7KCV67O0IOy2lOqwgFxuICAgICAgICAgIC4uLihwcm9wLmdlbmVyYXRlZCAmJiB7XG4gICAgICAgICAgICBnZW5lcmF0ZWQ6IHByb3AuZ2VuZXJhdGVkLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9O1xuXG4gICAgICAgIHIuY29sdW1ucy5wdXNoKGNvbHVtbik7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc01hbnlUb01hbnlSZWxhdGlvblByb3AocHJvcCkpIHtcbiAgICAgICAgLy8gTWFueVRvTWFueSDsvIDsnbTsiqRcbiAgICAgICAgY29uc3QgcmVsTWQgPSBFbnRpdHlNYW5hZ2VyLmdldChwcm9wLndpdGgpO1xuICAgICAgICBjb25zdCB0YWJsZTEgPSBlbnRpdHkudGFibGU7XG4gICAgICAgIGNvbnN0IHRhYmxlMiA9IHJlbE1kLnRhYmxlO1xuXG4gICAgICAgIC8vIOqwgSDsl5Tti7Dti7DsnZggUEsg7YOA7J6FIOygleuztCDqsIDsoLjsmKTquLBcbiAgICAgICAgY29uc3QgdGhpc1BrVHlwZSA9IGVudGl0eS5nZXRQa1R5cGUoKTtcbiAgICAgICAgY29uc3QgdGhpc1BrUHJvcCA9IGVudGl0eS5nZXRQa1Byb3AoKTtcbiAgICAgICAgY29uc3QgcmVsUGtUeXBlID0gcmVsTWQuZ2V0UGtUeXBlKCk7XG4gICAgICAgIGNvbnN0IHJlbFBrUHJvcCA9IHJlbE1kLmdldFBrUHJvcCgpO1xuXG4gICAgICAgIGNvbnN0IGpvaW4gPSB7XG4gICAgICAgICAgZnJvbTogYCR7ZW50aXR5LnRhYmxlfS5pZGAsXG4gICAgICAgICAgdGhyb3VnaDoge1xuICAgICAgICAgICAgZnJvbTogYCR7cHJvcC5qb2luVGFibGV9LiR7aW5mbGVjdGlvbi5zaW5ndWxhcml6ZSh0YWJsZTEpfV9pZGAsXG4gICAgICAgICAgICB0bzogYCR7cHJvcC5qb2luVGFibGV9LiR7aW5mbGVjdGlvbi5zaW5ndWxhcml6ZSh0YWJsZTIpfV9pZGAsXG4gICAgICAgICAgICBvblVwZGF0ZTogcHJvcC5vblVwZGF0ZSxcbiAgICAgICAgICAgIG9uRGVsZXRlOiBwcm9wLm9uRGVsZXRlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdG86IGAke3JlbE1kLnRhYmxlfS5pZGAsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHRocm91Z2ggPSBqb2luLnRocm91Z2g7XG4gICAgICAgIGNvbnN0IGZpZWxkcyA9IFt0aHJvdWdoLmZyb20sIHRocm91Z2gudG9dO1xuICAgICAgICByLmpvaW5UYWJsZXMucHVzaCh7XG4gICAgICAgICAgdGFibGU6IHRocm91Z2guZnJvbS5zcGxpdChcIi5cIilbMF0sXG4gICAgICAgICAgaW5kZXhlczogZW50aXR5LmluZGV4ZXNcbiAgICAgICAgICAgIC5maWx0ZXIoKGluZGV4KSA9PiBpbmRleC5jb2x1bW5zLmZpbmQoKGNvbCkgPT4gY29sLm5hbWUuaW5jbHVkZXMoYCR7cHJvcC5qb2luVGFibGV9LmApKSlcbiAgICAgICAgICAgIC5tYXAoKGluZGV4KSA9PiAoe1xuICAgICAgICAgICAgICAuLi5pbmRleCxcbiAgICAgICAgICAgICAgY29sdW1uczogaW5kZXguY29sdW1ucy5tYXAoKGNvbCkgPT4gKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBjb2wubmFtZS5yZXBsYWNlKGAke3Byb3Auam9pblRhYmxlfS5gLCBcIlwiKSxcbiAgICAgICAgICAgICAgICBudWxsc0ZpcnN0OiBjb2wubnVsbHNGaXJzdCxcbiAgICAgICAgICAgICAgICBzb3J0T3JkZXI6IGNvbC5zb3J0T3JkZXIsXG4gICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICBjb2x1bW5zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6IFwiaWRcIixcbiAgICAgICAgICAgICAgdHlwZTogXCJpbnRlZ2VyXCIsXG4gICAgICAgICAgICAgIG51bGxhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyDtmITsnqwg7JeU7Yuw7Yuw7J2YIEZLXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6IGAke2luZmxlY3Rpb24uc2luZ3VsYXJpemUodGFibGUxKX1faWRgLFxuICAgICAgICAgICAgICB0eXBlOiB0aGlzUGtUeXBlLFxuICAgICAgICAgICAgICBudWxsYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgIC4uLih0aGlzUGtUeXBlID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICAgICAgdGhpc1BrUHJvcC50eXBlID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICAgICAgdGhpc1BrUHJvcC5sZW5ndGggIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgICAgICAgICAgICBsZW5ndGg6IHRoaXNQa1Byb3AubGVuZ3RoLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIOywuOyhsCDsl5Tti7Dti7DsnZggRktcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogYCR7aW5mbGVjdGlvbi5zaW5ndWxhcml6ZSh0YWJsZTIpfV9pZGAsXG4gICAgICAgICAgICAgIHR5cGU6IHJlbFBrVHlwZSxcbiAgICAgICAgICAgICAgbnVsbGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAuLi4ocmVsUGtUeXBlID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICAgICAgcmVsUGtQcm9wLnR5cGUgPT09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgICAgICAgICByZWxQa1Byb3AubGVuZ3RoICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICAgICAgICAgICAgbGVuZ3RoOiByZWxQa1Byb3AubGVuZ3RoLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGZvcmVpZ25zOiBmaWVsZHMubWFwKChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgLy8g7ZiE7J6sIO2VhOuTnOqwgCDslrTrlqQg7YWM7J2067iU7JeQIOyGje2VmOuKlOyngCDtjJDri6hcbiAgICAgICAgICAgIGNvbnN0IGNvbCA9IGZpZWxkLnNwbGl0KFwiLlwiKVsxXTtcbiAgICAgICAgICAgIGNvbnN0IHRvID0gKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGAke2luZmxlY3Rpb24uc2luZ3VsYXJpemUoam9pbi50by5zcGxpdChcIi5cIilbMF0pfV9pZGAgPT09IGNvbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBqb2luLnRvO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBqb2luLmZyb207XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKCk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBjb2x1bW5zOiBbY29sXSxcbiAgICAgICAgICAgICAgdG8sXG4gICAgICAgICAgICAgIG9uVXBkYXRlOiB0aHJvdWdoLm9uVXBkYXRlLFxuICAgICAgICAgICAgICBvbkRlbGV0ZTogdGhyb3VnaC5vbkRlbGV0ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSksXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGlzQmVsb25nc1RvT25lUmVsYXRpb25Qcm9wKHByb3ApIHx8XG4gICAgICAgIChpc09uZVRvT25lUmVsYXRpb25Qcm9wKHByb3ApICYmIHByb3AuaGFzSm9pbkNvbHVtbilcbiAgICAgICkge1xuICAgICAgICAvLyAtT25lUmVsYXRpb24g7LyA7J207IqkXG4gICAgICAgIGNvbnN0IHJlbEVudGl0eSA9IEVudGl0eU1hbmFnZXIuZ2V0KHByb3Aud2l0aCk7XG4gICAgICAgIGNvbnN0IHBrVHlwZSA9IHJlbEVudGl0eS5nZXRQa1R5cGUoKTtcbiAgICAgICAgY29uc3QgcGtQcm9wID0gcmVsRW50aXR5LmdldFBrUHJvcCgpO1xuXG4gICAgICAgIGNvbnN0IGlkQ29sdW1uTmFtZSA9IGAke3Byb3AubmFtZX1faWRgO1xuICAgICAgICByLmNvbHVtbnMucHVzaCh7XG4gICAgICAgICAgbmFtZTogaWRDb2x1bW5OYW1lLFxuICAgICAgICAgIHR5cGU6IHBrVHlwZSxcbiAgICAgICAgICBudWxsYWJsZTogcHJvcC5udWxsYWJsZSA/PyBmYWxzZSxcbiAgICAgICAgICAvLyBzdHJpbmcgRkvsnbgg6rK97JqwIGxlbmd0aOuPhCDsoITri6xcbiAgICAgICAgICAuLi4ocGtUeXBlID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICBwa1Byb3AudHlwZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgcGtQcm9wLmxlbmd0aCAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgICAgICAgbGVuZ3RoOiBwa1Byb3AubGVuZ3RoLFxuICAgICAgICAgICAgfSksXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAocHJvcC51c2VDb25zdHJhaW50ID8/IHRydWUpIHtcbiAgICAgICAgICByLmZvcmVpZ25zLnB1c2goe1xuICAgICAgICAgICAgY29sdW1uczogW2lkQ29sdW1uTmFtZV0sXG4gICAgICAgICAgICB0bzogYCR7aW5mbGVjdGlvbi51bmRlcnNjb3JlKGluZmxlY3Rpb24ucGx1cmFsaXplKHByb3Aud2l0aCkpLnRvTG93ZXJDYXNlKCl9LmlkYCxcbiAgICAgICAgICAgIG9uVXBkYXRlOiBwcm9wLm9uVXBkYXRlID8/IFwiUkVTVFJJQ1RcIixcbiAgICAgICAgICAgIG9uRGVsZXRlOiBwcm9wLm9uRGVsZXRlID8/IFwiUkVTVFJJQ1RcIixcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcjtcbiAgICB9LFxuICAgIHtcbiAgICAgIHRhYmxlOiBlbnRpdHkudGFibGUsXG4gICAgICBjb2x1bW5zOlxuICAgICAgICAvKiBTQUZFVFk6IEtuZXjsmYAgUG9zdGdyZVNRTCDsiqTtgqTrp4gg7KGw7ZqMIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIFtdIGFzIE1pZ3JhdGlvbkNvbHVtbltdLFxuICAgICAgaW5kZXhlczpcbiAgICAgICAgLyogU0FGRVRZOiBLbmV47JmAIFBvc3RncmVTUUwg7Iqk7YKk66eIIOyhsO2ajCDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBbXSBhcyBNaWdyYXRpb25JbmRleFtdLFxuICAgICAgZm9yZWlnbnM6XG4gICAgICAgIC8qIFNBRkVUWTogS25leOyZgCBQb3N0Z3JlU1FMIOyKpO2CpOuniCDsobDtmowg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gW10gYXMgTWlncmF0aW9uRm9yZWlnbltdLFxuICAgICAgam9pblRhYmxlczpcbiAgICAgICAgLyogU0FGRVRZOiBLbmV47JmAIFBvc3RncmVTUUwg7Iqk7YKk66eIIOyhsO2ajCDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBbXSBhcyBNaWdyYXRpb25Kb2luVGFibGVbXSxcbiAgICB9LFxuICApO1xuXG4gIC8vIGluZGV4ZXNcbiAgbWlncmF0aW9uU2V0LmluZGV4ZXMgPSBlbnRpdHkuaW5kZXhlcy5maWx0ZXIoKGluZGV4KSA9PlxuICAgIGluZGV4LmNvbHVtbnMuZmluZCgoY29sKSA9PiAhY29sLm5hbWUuaW5jbHVkZXMoXCIuXCIpKSxcbiAgKTtcblxuICByZXR1cm4gbWlncmF0aW9uU2V0O1xufVxuXG5mdW5jdGlvbiByZXNvbHZlRW50aXR5UHJvcFR5cGVUb01pZ3JhdGlvbkNvbHVtblR5cGUocHJvcDogRW50aXR5UHJvcCk6IE1pZ3JhdGlvbkNvbHVtblR5cGUge1xuICBpZiAocHJvcC50eXBlID09PSBcInJlbGF0aW9uXCIgfHwgcHJvcC50eXBlID09PSBcInZpcnR1YWxcIikge1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5yZXNvbHZlZCBjb2x1bW4gdHlwZTogJHtwcm9wLnR5cGV9YCk7XG4gIH1cblxuICBzd2l0Y2ggKHByb3AudHlwZSkge1xuICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgIHJldHVybiBcInN0cmluZ1wiO1xuICAgIGNhc2UgXCJzdHJpbmdbXVwiOlxuICAgICAgcmV0dXJuIFwic3RyaW5nW11cIjtcbiAgICBjYXNlIFwiZW51bVwiOlxuICAgICAgcmV0dXJuIFwic3RyaW5nXCI7XG4gICAgY2FzZSBcImVudW1bXVwiOlxuICAgICAgcmV0dXJuIFwic3RyaW5nW11cIjtcbiAgICBjYXNlIFwiaW50ZWdlclwiOlxuICAgICAgcmV0dXJuIFwiaW50ZWdlclwiO1xuICAgIGNhc2UgXCJpbnRlZ2VyW11cIjpcbiAgICAgIHJldHVybiBcImludGVnZXJbXVwiO1xuICAgIGNhc2UgXCJiaWdJbnRlZ2VyXCI6XG4gICAgICByZXR1cm4gXCJiaWdJbnRlZ2VyXCI7XG4gICAgY2FzZSBcImJpZ0ludGVnZXJbXVwiOlxuICAgICAgcmV0dXJuIFwiYmlnSW50ZWdlcltdXCI7XG4gICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgcmV0dXJuIFwibnVtYmVyT3JOdW1lcmljXCI7XG4gICAgY2FzZSBcIm51bWJlcltdXCI6XG4gICAgICByZXR1cm4gXCJudW1iZXJPck51bWVyaWNbXVwiO1xuICAgIGNhc2UgXCJudW1lcmljXCI6XG4gICAgICByZXR1cm4gXCJudW1iZXJPck51bWVyaWNcIjtcbiAgICBjYXNlIFwibnVtZXJpY1tdXCI6XG4gICAgICByZXR1cm4gXCJudW1iZXJPck51bWVyaWNbXVwiO1xuICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICByZXR1cm4gXCJib29sZWFuXCI7XG4gICAgY2FzZSBcImJvb2xlYW5bXVwiOlxuICAgICAgcmV0dXJuIFwiYm9vbGVhbltdXCI7XG4gICAgY2FzZSBcImRhdGVcIjpcbiAgICAgIHJldHVybiBcImRhdGVcIjtcbiAgICBjYXNlIFwiZGF0ZVtdXCI6XG4gICAgICByZXR1cm4gXCJkYXRlW11cIjtcbiAgICBjYXNlIFwidXVpZFwiOlxuICAgICAgcmV0dXJuIFwidXVpZFwiO1xuICAgIGNhc2UgXCJ1dWlkW11cIjpcbiAgICAgIHJldHVybiBcInV1aWRbXVwiO1xuICAgIGNhc2UgXCJqc29uXCI6XG4gICAgICByZXR1cm4gXCJqc29uXCI7XG4gICAgY2FzZSBcInNlYXJjaFRleHRcIjpcbiAgICAgIHJldHVybiBcInN0cmluZ1wiO1xuICAgIGNhc2UgXCJ2ZWN0b3JcIjpcbiAgICAgIHJldHVybiBcInZlY3RvclwiO1xuICAgIGNhc2UgXCJ2ZWN0b3JbXVwiOlxuICAgICAgcmV0dXJuIFwidmVjdG9yW11cIjtcbiAgICBjYXNlIFwidHN2ZWN0b3JcIjpcbiAgICAgIHJldHVybiBcInRzdmVjdG9yXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIGV4aGF1c3RpdmUocHJvcCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBVbmtub3duIGVudGl0eSBwcm9wIHR5cGU6ICR7LyogU0FGRVRZOiBLbmV47JmAIFBvc3RncmVTUUwg7Iqk7YKk66eIIOyhsO2ajCDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyAocHJvcCBhcyB7IHR5cGU6IHN0cmluZyB9KS50eXBlfWAsXG4gICAgICApO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBb0NBLFNBQWdCLDBCQUEwQixRQUEwQztDQUNsRixNQUFNLGVBQXlDLE9BQU8sTUFBTSxRQUN6RCxHQUFHLFNBQVM7RUFFWCxJQUFJLGNBQWMsSUFBSSxHQUNwQixPQUFPO0VBR1QsSUFBSSxzQkFBc0IsSUFBSSxHQUM1QixPQUFPO0VBSVQsSUFBSSxDQUFDLGVBQWUsSUFBSSxHQUFHO0dBQ3pCLE1BQU0sU0FBUztJQUNiLE1BQU0sS0FBSztJQUNYLE1BQU0sMkNBQTJDLElBQUk7SUFDckQsVUFBVSxLQUFLLGFBQWE7SUFDNUIsVUFBVTtLQUNSLElBQUksS0FBSyxjQUFjLFFBQ3JCLE9BQU8sRUFDTCxXQUFXLEtBQUssVUFDbEI7S0FFRixPQUFPLENBQUM7SUFDVixFQUFBLENBQUc7SUFFSCxHQUFJLGFBQWEsSUFBSSxLQUNuQixLQUFLLFdBQVcsVUFBYSxFQUMzQixRQUFRLEtBQUssT0FDZjtJQUVGLElBQUssYUFBYSxJQUFJLEtBQUssY0FBYyxJQUFJLGFBQ3BDO0tBQ0wsTUFBTSxhQUFhLGFBQWEsSUFBSSxJQUFLLEtBQUssY0FBYyxZQUFhO0tBS3pFLElBQUksZUFBZSxXQUNqQixPQUFPO01BQ0w7TUFDQSxXQUFXLEtBQUssYUFBYTtNQUM3QixPQUFPLEtBQUssU0FBUztLQUN2QjtLQUlGLE9BQU87TUFBRTtNQUFZLFdBQVcsS0FBSztNQUFXLE9BQU8sS0FBSztLQUFNO0lBQ3BFLEVBQUEsQ0FBRztJQUVMLEdBQUksYUFBYSxJQUFJLEtBQUssRUFDeEIsWUFBWSxLQUFLLFdBQ25CO0lBRUEsR0FBSSxLQUFLLGFBQWEsRUFDcEIsV0FBVyxLQUFLLFVBQ2xCO0dBQ0Y7R0FFQSxFQUFFLFFBQVEsS0FBSyxNQUFNO0VBQ3ZCO0VBRUEsSUFBSSx5QkFBeUIsSUFBSSxHQUFHO0dBRWxDLE1BQU0sUUFBUSxjQUFjLElBQUksS0FBSyxJQUFJO0dBQ3pDLE1BQU0sU0FBUyxPQUFPO0dBQ3RCLE1BQU0sU0FBUyxNQUFNO0dBR3JCLE1BQU0sYUFBYSxPQUFPLFVBQVU7R0FDcEMsTUFBTSxhQUFhLE9BQU8sVUFBVTtHQUNwQyxNQUFNLFlBQVksTUFBTSxVQUFVO0dBQ2xDLE1BQU0sWUFBWSxNQUFNLFVBQVU7R0FFbEMsTUFBTSxPQUFPO0lBQ1gsTUFBTSxHQUFHLE9BQU8sTUFBTTtJQUN0QixTQUFTO0tBQ1AsTUFBTSxHQUFHLEtBQUssVUFBVSxHQUFHLFdBQVcsWUFBWSxNQUFNLEVBQUU7S0FDMUQsSUFBSSxHQUFHLEtBQUssVUFBVSxHQUFHLFdBQVcsWUFBWSxNQUFNLEVBQUU7S0FDeEQsVUFBVSxLQUFLO0tBQ2YsVUFBVSxLQUFLO0lBQ2pCO0lBQ0EsSUFBSSxHQUFHLE1BQU0sTUFBTTtHQUNyQjtHQUNBLE1BQU0sVUFBVSxLQUFLO0dBQ3JCLE1BQU0sU0FBUyxDQUFDLFFBQVEsTUFBTSxRQUFRLEVBQUU7R0FDeEMsRUFBRSxXQUFXLEtBQUs7SUFDaEIsT0FBTyxRQUFRLEtBQUssTUFBTSxHQUFHLENBQUMsQ0FBQztJQUMvQixTQUFTLE9BQU8sUUFDYixRQUFRLFVBQVUsTUFBTSxRQUFRLE1BQU0sUUFBUSxJQUFJLEtBQUssU0FBUyxHQUFHLEtBQUssVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ3ZGLEtBQUssV0FBVztLQUNmLEdBQUc7S0FDSCxTQUFTLE1BQU0sUUFBUSxLQUFLLFNBQVM7TUFDbkMsTUFBTSxJQUFJLEtBQUssUUFBUSxHQUFHLEtBQUssVUFBVSxJQUFJLEVBQUU7TUFDL0MsWUFBWSxJQUFJO01BQ2hCLFdBQVcsSUFBSTtLQUNqQixFQUFFO0lBQ0osRUFBRTtJQUNKLFNBQVM7S0FDUDtNQUNFLE1BQU07TUFDTixNQUFNO01BQ04sVUFBVTtLQUNaO0tBRUE7TUFDRSxNQUFNLEdBQUcsV0FBVyxZQUFZLE1BQU0sRUFBRTtNQUN4QyxNQUFNO01BQ04sVUFBVTtNQUNWLEdBQUksZUFBZSxZQUNqQixXQUFXLFNBQVMsWUFDcEIsV0FBVyxXQUFXLFVBQWEsRUFDakMsUUFBUSxXQUFXLE9BQ3JCO0tBQ0o7S0FFQTtNQUNFLE1BQU0sR0FBRyxXQUFXLFlBQVksTUFBTSxFQUFFO01BQ3hDLE1BQU07TUFDTixVQUFVO01BQ1YsR0FBSSxjQUFjLFlBQ2hCLFVBQVUsU0FBUyxZQUNuQixVQUFVLFdBQVcsVUFBYSxFQUNoQyxRQUFRLFVBQVUsT0FDcEI7S0FDSjtJQUNGO0lBQ0EsVUFBVSxPQUFPLEtBQUssVUFBVTtLQUU5QixNQUFNLE1BQU0sTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0tBQzdCLE1BQU0sWUFBWTtNQUNoQixJQUFJLEdBQUcsV0FBVyxZQUFZLEtBQUssR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxTQUFTLEtBQzVELE9BQU8sS0FBSztXQUVaLE9BQU8sS0FBSztLQUVoQixFQUFBLENBQUc7S0FDSCxPQUFPO01BQ0wsU0FBUyxDQUFDLEdBQUc7TUFDYjtNQUNBLFVBQVUsUUFBUTtNQUNsQixVQUFVLFFBQVE7S0FDcEI7SUFDRixDQUFDO0dBQ0gsQ0FBQztHQUNELE9BQU87RUFDVCxPQUFPLElBQ0wsMkJBQTJCLElBQUksS0FDOUIsdUJBQXVCLElBQUksS0FBSyxLQUFLLGVBQ3RDO0dBRUEsTUFBTSxZQUFZLGNBQWMsSUFBSSxLQUFLLElBQUk7R0FDN0MsTUFBTSxTQUFTLFVBQVUsVUFBVTtHQUNuQyxNQUFNLFNBQVMsVUFBVSxVQUFVO0dBRW5DLE1BQU0sZUFBZSxHQUFHLEtBQUssS0FBSztHQUNsQyxFQUFFLFFBQVEsS0FBSztJQUNiLE1BQU07SUFDTixNQUFNO0lBQ04sVUFBVSxLQUFLLFlBQVk7SUFFM0IsR0FBSSxXQUFXLFlBQ2IsT0FBTyxTQUFTLFlBQ2hCLE9BQU8sV0FBVyxVQUFhLEVBQzdCLFFBQVEsT0FBTyxPQUNqQjtHQUNKLENBQUM7R0FDRCxJQUFJLEtBQUssaUJBQWlCLE1BQ3hCLEVBQUUsU0FBUyxLQUFLO0lBQ2QsU0FBUyxDQUFDLFlBQVk7SUFDdEIsSUFBSSxHQUFHLFdBQVcsV0FBVyxXQUFXLFVBQVUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRTtJQUM1RSxVQUFVLEtBQUssWUFBWTtJQUMzQixVQUFVLEtBQUssWUFBWTtHQUM3QixDQUFDO0VBRUw7RUFFQSxPQUFPO0NBQ1QsR0FDQTtFQUNFLE9BQU8sT0FBTztFQUNkLFNBQzJELENBQUM7RUFDNUQsU0FDMkQsQ0FBQztFQUM1RCxVQUMyRCxDQUFDO0VBQzVELFlBQzJELENBQUM7Q0FDOUQsQ0FDRjtDQUdBLGFBQWEsVUFBVSxPQUFPLFFBQVEsUUFBUSxVQUM1QyxNQUFNLFFBQVEsTUFBTSxRQUFRLENBQUMsSUFBSSxLQUFLLFNBQVMsR0FBRyxDQUFDLENBQ3JEO0NBRUEsT0FBTztBQUNUO0FBRUEsU0FBUywyQ0FBMkMsTUFBdUM7Q0FDekYsSUFBSSxLQUFLLFNBQVMsY0FBYyxLQUFLLFNBQVMsV0FDNUMsTUFBTSxJQUFJLE1BQU0sMkJBQTJCLEtBQUssTUFBTTtDQUd4RCxRQUFRLEtBQUssTUFBYjtFQUNFLEtBQUssVUFDSCxPQUFPO0VBQ1QsS0FBSyxZQUNILE9BQU87RUFDVCxLQUFLLFFBQ0gsT0FBTztFQUNULEtBQUssVUFDSCxPQUFPO0VBQ1QsS0FBSyxXQUNILE9BQU87RUFDVCxLQUFLLGFBQ0gsT0FBTztFQUNULEtBQUssY0FDSCxPQUFPO0VBQ1QsS0FBSyxnQkFDSCxPQUFPO0VBQ1QsS0FBSyxVQUNILE9BQU87RUFDVCxLQUFLLFlBQ0gsT0FBTztFQUNULEtBQUssV0FDSCxPQUFPO0VBQ1QsS0FBSyxhQUNILE9BQU87RUFDVCxLQUFLLFdBQ0gsT0FBTztFQUNULEtBQUssYUFDSCxPQUFPO0VBQ1QsS0FBSyxRQUNILE9BQU87RUFDVCxLQUFLLFVBQ0gsT0FBTztFQUNULEtBQUssUUFDSCxPQUFPO0VBQ1QsS0FBSyxVQUNILE9BQU87RUFDVCxLQUFLLFFBQ0gsT0FBTztFQUNULEtBQUssY0FDSCxPQUFPO0VBQ1QsS0FBSyxVQUNILE9BQU87RUFDVCxLQUFLLFlBQ0gsT0FBTztFQUNULEtBQUssWUFDSCxPQUFPO0VBQ1Q7R0FDRSxXQUFXLElBQUk7R0FDZixNQUFNLElBQUksTUFDUiw2QkFBdUYsS0FBMEIsTUFDbkg7Q0FDSjtBQUNGOzs7cUJBcFN3RDtZQVlqQztZQVVvQjtDQUdyQyw0QkFBNEI7Q0FDNUIsd0JBQXdCIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sonamu",
3
- "version": "0.11.0",
3
+ "version": "0.11.1",
4
4
  "description": "Sonamu — TypeScript Fullstack API Framework",
5
5
  "keywords": [
6
6
  "framework",
@@ -25,6 +25,10 @@ import {
25
25
  } from "../types/types";
26
26
  import { exhaustive } from "../utils/utils";
27
27
 
28
+ // numeric 컬럼에서 precision/scale을 생략했을 때 실제로 생성되는 값(knex decimal의 기본값)이다.
29
+ const NUMERIC_DEFAULT_PRECISION = 8;
30
+ const NUMERIC_DEFAULT_SCALE = 2;
31
+
28
32
  /**
29
33
  * Entity를 읽어서 MigrationSetAndJoinTable을 만들어옵니다.
30
34
  * @param entity Entity 객체
@@ -62,11 +66,24 @@ export function getMigrationSetFromEntity(entity: Entity): MigrationSetAndJoinTa
62
66
  length: prop.length,
63
67
  }),
64
68
  // Number/Numeric 타입의 경우 precision, scale 추가
65
- ...((isNumberProp(prop) || isNumericProp(prop)) && {
66
- precision: prop.precision,
67
- scale: prop.scale,
68
- numberType: isNumberProp(prop) ? (prop.numberType ?? "numeric") : "numeric",
69
- }),
69
+ ...((isNumberProp(prop) || isNumericProp(prop)) &&
70
+ (() => {
71
+ const numberType = isNumberProp(prop) ? (prop.numberType ?? "numeric") : "numeric";
72
+
73
+ // numeric에서 precision/scale을 생략하면 knex decimal의 기본값(8, 2)으로 컬럼이
74
+ // 만들어지는데, DB에서는 그 값이 그대로 읽히므로 엔티티 쪽을 undefined로 두면
75
+ // 매번 불일치로 잡힌다. 비교 전에 같은 기본값을 채워 실제 스키마와 맞춘다.
76
+ if (numberType === "numeric") {
77
+ return {
78
+ numberType,
79
+ precision: prop.precision ?? NUMERIC_DEFAULT_PRECISION,
80
+ scale: prop.scale ?? NUMERIC_DEFAULT_SCALE,
81
+ };
82
+ }
83
+
84
+ // real/double precision은 precision/scale을 쓰지 않는다(DB 리더도 반환하지 않음).
85
+ return { numberType, precision: prop.precision, scale: prop.scale };
86
+ })()),
70
87
  // Vector 타입의 경우 dimensions 추가
71
88
  ...(isVectorProp(prop) && {
72
89
  dimensions: prop.dimensions,