@payloadcms/db-postgres 0.8.7 → 0.8.8
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/connect.d.ts.map +1 -1
- package/dist/connect.js +5 -52
- package/dist/count.d.ts.map +1 -1
- package/dist/count.js +3 -3
- package/dist/createMigration.d.ts.map +1 -1
- package/dist/createMigration.js +10 -4
- package/dist/find/findMany.d.ts.map +1 -1
- package/dist/find/findMany.js +3 -3
- package/dist/init.js +3 -2
- package/dist/migrate.js +3 -3
- package/dist/migrateDown.js +2 -2
- package/dist/migrateRefresh.js +2 -2
- package/dist/migrateReset.js +3 -3
- package/dist/migrateStatus.js +2 -2
- package/dist/queries/parseParams.d.ts.map +1 -1
- package/dist/queries/parseParams.js +3 -1
- package/dist/queries/sanitizeQueryValue.d.ts +2 -1
- package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
- package/dist/queries/sanitizeQueryValue.js +11 -2
- package/dist/schema/build.d.ts +10 -2
- package/dist/schema/build.d.ts.map +1 -1
- package/dist/schema/build.js +23 -6
- package/dist/schema/traverseFields.d.ts +6 -1
- package/dist/schema/traverseFields.d.ts.map +1 -1
- package/dist/schema/traverseFields.js +46 -17
- package/dist/transform/read/hasManyNumber.d.ts +2 -1
- package/dist/transform/read/hasManyNumber.d.ts.map +1 -1
- package/dist/transform/read/hasManyNumber.js +14 -4
- package/dist/transform/read/hasManyText.d.ts +2 -1
- package/dist/transform/read/hasManyText.d.ts.map +1 -1
- package/dist/transform/read/hasManyText.js +14 -4
- package/dist/transform/read/relationship.d.ts +2 -1
- package/dist/transform/read/relationship.d.ts.map +1 -1
- package/dist/transform/read/relationship.js +16 -7
- package/dist/transform/read/traverseFields.d.ts +5 -1
- package/dist/transform/read/traverseFields.d.ts.map +1 -1
- package/dist/transform/read/traverseFields.js +118 -85
- package/dist/transform/write/array.d.ts +6 -1
- package/dist/transform/write/array.d.ts.map +1 -1
- package/dist/transform/write/array.js +7 -3
- package/dist/transform/write/blocks.d.ts +6 -1
- package/dist/transform/write/blocks.d.ts.map +1 -1
- package/dist/transform/write/blocks.js +5 -3
- package/dist/transform/write/traverseFields.d.ts +6 -1
- package/dist/transform/write/traverseFields.d.ts.map +1 -1
- package/dist/transform/write/traverseFields.js +40 -15
- package/dist/types.d.ts +9 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/utilities/migrationTableExists.d.ts +2 -2
- package/dist/utilities/migrationTableExists.d.ts.map +1 -1
- package/dist/utilities/migrationTableExists.js +10 -6
- package/dist/utilities/pushDevSchema.d.ts +9 -0
- package/dist/utilities/pushDevSchema.d.ts.map +1 -0
- package/dist/utilities/pushDevSchema.js +59 -0
- package/dist/utilities/requireDrizzleKit.d.ts +14 -0
- package/dist/utilities/requireDrizzleKit.d.ts.map +1 -0
- package/dist/utilities/requireDrizzleKit.js +13 -0
- package/package.json +5 -5
@@ -8,20 +8,25 @@ Object.defineProperty(exports, "transformRelationship", {
|
|
8
8
|
return transformRelationship;
|
9
9
|
}
|
10
10
|
});
|
11
|
-
const transformRelationship = ({ field, locale, ref, relations })=>{
|
11
|
+
const transformRelationship = ({ field, locale, ref, relations, withinArrayOrBlockLocale })=>{
|
12
12
|
let result;
|
13
13
|
if (!('hasMany' in field) || field.hasMany === false) {
|
14
|
-
|
14
|
+
let relation = relations[0];
|
15
|
+
if (withinArrayOrBlockLocale) {
|
16
|
+
relation = relations.find((rel)=>rel.locale === withinArrayOrBlockLocale);
|
17
|
+
}
|
15
18
|
if (relation) {
|
16
19
|
// Handle hasOne Poly
|
17
20
|
if (Array.isArray(field.relationTo)) {
|
18
|
-
const matchedRelation = Object.entries(relation).find(([key, val])=>
|
21
|
+
const matchedRelation = Object.entries(relation).find(([key, val])=>{
|
22
|
+
return val !== null && ![
|
19
23
|
'id',
|
20
24
|
'locale',
|
21
25
|
'order',
|
22
26
|
'parent',
|
23
27
|
'path'
|
24
|
-
].includes(key)
|
28
|
+
].includes(key);
|
29
|
+
});
|
25
30
|
if (matchedRelation) {
|
26
31
|
const relationTo = matchedRelation[0].replace('ID', '');
|
27
32
|
result = {
|
@@ -38,10 +43,14 @@ const transformRelationship = ({ field, locale, ref, relations })=>{
|
|
38
43
|
} else {
|
39
44
|
const transformedRelations = [];
|
40
45
|
relations.forEach((relation)=>{
|
46
|
+
let matchedLocale = true;
|
47
|
+
if (withinArrayOrBlockLocale) {
|
48
|
+
matchedLocale = relation.locale === withinArrayOrBlockLocale;
|
49
|
+
}
|
41
50
|
// Handle hasMany
|
42
51
|
if (!Array.isArray(field.relationTo)) {
|
43
52
|
const relatedData = relation[`${field.relationTo}ID`];
|
44
|
-
if (relatedData) {
|
53
|
+
if (relatedData && matchedLocale) {
|
45
54
|
transformedRelations.push(relatedData);
|
46
55
|
}
|
47
56
|
} else {
|
@@ -52,7 +61,7 @@ const transformRelationship = ({ field, locale, ref, relations })=>{
|
|
52
61
|
'order',
|
53
62
|
'parent',
|
54
63
|
'path'
|
55
|
-
].includes(key));
|
64
|
+
].includes(key) && matchedLocale);
|
56
65
|
if (matchedRelation) {
|
57
66
|
const relationTo = matchedRelation[0].replace('ID', '');
|
58
67
|
transformedRelations.push({
|
@@ -71,4 +80,4 @@ const transformRelationship = ({ field, locale, ref, relations })=>{
|
|
71
80
|
}
|
72
81
|
};
|
73
82
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm0vcmVhZC9yZWxhdGlvbnNoaXAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmVsYXRpb25zaGlwRmllbGQsIFVwbG9hZEZpZWxkIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxudHlwZSBBcmdzID0ge1xuICBmaWVsZDogUmVsYXRpb25zaGlwRmllbGQgfCBVcGxvYWRGaWVsZFxuICBsb2NhbGU/OiBzdHJpbmdcbiAgcmVmOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICByZWxhdGlvbnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm0vcmVhZC9yZWxhdGlvbnNoaXAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmVsYXRpb25zaGlwRmllbGQsIFVwbG9hZEZpZWxkIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxudHlwZSBBcmdzID0ge1xuICBmaWVsZDogUmVsYXRpb25zaGlwRmllbGQgfCBVcGxvYWRGaWVsZFxuICBsb2NhbGU/OiBzdHJpbmdcbiAgcmVmOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICByZWxhdGlvbnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W11cbiAgd2l0aGluQXJyYXlPckJsb2NrTG9jYWxlPzogc3RyaW5nXG59XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1SZWxhdGlvbnNoaXAgPSAoe1xuICBmaWVsZCxcbiAgbG9jYWxlLFxuICByZWYsXG4gIHJlbGF0aW9ucyxcbiAgd2l0aGluQXJyYXlPckJsb2NrTG9jYWxlLFxufTogQXJncykgPT4ge1xuICBsZXQgcmVzdWx0OiB1bmtub3duXG5cbiAgaWYgKCEoJ2hhc01hbnknIGluIGZpZWxkKSB8fCBmaWVsZC5oYXNNYW55ID09PSBmYWxzZSkge1xuICAgIGxldCByZWxhdGlvbiA9IHJlbGF0aW9uc1swXVxuXG4gICAgaWYgKHdpdGhpbkFycmF5T3JCbG9ja0xvY2FsZSkge1xuICAgICAgcmVsYXRpb24gPSByZWxhdGlvbnMuZmluZCgocmVsKSA9PiByZWwubG9jYWxlID09PSB3aXRoaW5BcnJheU9yQmxvY2tMb2NhbGUpXG4gICAgfVxuXG4gICAgaWYgKHJlbGF0aW9uKSB7XG4gICAgICAvLyBIYW5kbGUgaGFzT25lIFBvbHlcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkLnJlbGF0aW9uVG8pKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoZWRSZWxhdGlvbiA9IE9iamVjdC5lbnRyaWVzKHJlbGF0aW9uKS5maW5kKChba2V5LCB2YWxdKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHZhbCAhPT0gbnVsbCAmJiAhWydpZCcsICdsb2NhbGUnLCAnb3JkZXInLCAncGFyZW50JywgJ3BhdGgnXS5pbmNsdWRlcyhrZXkpXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKG1hdGNoZWRSZWxhdGlvbikge1xuICAgICAgICAgIGNvbnN0IHJlbGF0aW9uVG8gPSBtYXRjaGVkUmVsYXRpb25bMF0ucmVwbGFjZSgnSUQnLCAnJylcblxuICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgIHJlbGF0aW9uVG8sXG4gICAgICAgICAgICB2YWx1ZTogbWF0Y2hlZFJlbGF0aW9uWzFdLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSGFuZGxlIGhhc09uZVxuICAgICAgICBjb25zdCByZWxhdGVkRGF0YSA9IHJlbGF0aW9uW2Ake2ZpZWxkLnJlbGF0aW9uVG99SURgXVxuICAgICAgICByZXN1bHQgPSByZWxhdGVkRGF0YVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCB0cmFuc2Zvcm1lZFJlbGF0aW9ucyA9IFtdXG5cbiAgICByZWxhdGlvbnMuZm9yRWFjaCgocmVsYXRpb24pID0+IHtcbiAgICAgIGxldCBtYXRjaGVkTG9jYWxlID0gdHJ1ZVxuXG4gICAgICBpZiAod2l0aGluQXJyYXlPckJsb2NrTG9jYWxlKSB7XG4gICAgICAgIG1hdGNoZWRMb2NhbGUgPSByZWxhdGlvbi5sb2NhbGUgPT09IHdpdGhpbkFycmF5T3JCbG9ja0xvY2FsZVxuICAgICAgfVxuXG4gICAgICAvLyBIYW5kbGUgaGFzTWFueVxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGZpZWxkLnJlbGF0aW9uVG8pKSB7XG4gICAgICAgIGNvbnN0IHJlbGF0ZWREYXRhID0gcmVsYXRpb25bYCR7ZmllbGQucmVsYXRpb25Ub31JRGBdXG5cbiAgICAgICAgaWYgKHJlbGF0ZWREYXRhICYmIG1hdGNoZWRMb2NhbGUpIHtcbiAgICAgICAgICB0cmFuc2Zvcm1lZFJlbGF0aW9ucy5wdXNoKHJlbGF0ZWREYXRhKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBIYW5kbGUgaGFzTWFueSBQb2x5XG4gICAgICAgIGNvbnN0IG1hdGNoZWRSZWxhdGlvbiA9IE9iamVjdC5lbnRyaWVzKHJlbGF0aW9uKS5maW5kKFxuICAgICAgICAgIChba2V5LCB2YWxdKSA9PlxuICAgICAgICAgICAgdmFsICE9PSBudWxsICYmXG4gICAgICAgICAgICAhWydpZCcsICdsb2NhbGUnLCAnb3JkZXInLCAncGFyZW50JywgJ3BhdGgnXS5pbmNsdWRlcyhrZXkpICYmXG4gICAgICAgICAgICBtYXRjaGVkTG9jYWxlLFxuICAgICAgICApXG5cbiAgICAgICAgaWYgKG1hdGNoZWRSZWxhdGlvbikge1xuICAgICAgICAgIGNvbnN0IHJlbGF0aW9uVG8gPSBtYXRjaGVkUmVsYXRpb25bMF0ucmVwbGFjZSgnSUQnLCAnJylcblxuICAgICAgICAgIHRyYW5zZm9ybWVkUmVsYXRpb25zLnB1c2goe1xuICAgICAgICAgICAgcmVsYXRpb25UbyxcbiAgICAgICAgICAgIHZhbHVlOiBtYXRjaGVkUmVsYXRpb25bMV0sXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG5cbiAgICByZXN1bHQgPSB0cmFuc2Zvcm1lZFJlbGF0aW9uc1xuICB9XG5cbiAgaWYgKGxvY2FsZSkge1xuICAgIHJlZltmaWVsZC5uYW1lXVtsb2NhbGVdID0gcmVzdWx0XG4gIH0gZWxzZSB7XG4gICAgcmVmW2ZpZWxkLm5hbWVdID0gcmVzdWx0XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJ0cmFuc2Zvcm1SZWxhdGlvbnNoaXAiLCJmaWVsZCIsImxvY2FsZSIsInJlZiIsInJlbGF0aW9ucyIsIndpdGhpbkFycmF5T3JCbG9ja0xvY2FsZSIsInJlc3VsdCIsImhhc01hbnkiLCJyZWxhdGlvbiIsImZpbmQiLCJyZWwiLCJBcnJheSIsImlzQXJyYXkiLCJyZWxhdGlvblRvIiwibWF0Y2hlZFJlbGF0aW9uIiwiT2JqZWN0IiwiZW50cmllcyIsImtleSIsInZhbCIsImluY2x1ZGVzIiwicmVwbGFjZSIsInZhbHVlIiwicmVsYXRlZERhdGEiLCJ0cmFuc2Zvcm1lZFJlbGF0aW9ucyIsImZvckVhY2giLCJtYXRjaGVkTG9jYWxlIiwicHVzaCIsIm5hbWUiXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IiwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQzs7OzsrQkFXdkJBOzs7ZUFBQUE7OztBQUFOLE1BQU1BLHdCQUF3QixDQUFDLEVBQ3BDQyxLQUFLLEVBQ0xDLE1BQU0sRUFDTkMsR0FBRyxFQUNIQyxTQUFTLEVBQ1RDLHdCQUF3QixFQUNuQjtJQUNMLElBQUlDO0lBRUosSUFBSSxDQUFFLENBQUEsYUFBYUwsS0FBSSxLQUFNQSxNQUFNTSxPQUFPLEtBQUssT0FBTztRQUNwRCxJQUFJQyxXQUFXSixTQUFTLENBQUMsRUFBRTtRQUUzQixJQUFJQywwQkFBMEI7WUFDNUJHLFdBQVdKLFVBQVVLLElBQUksQ0FBQyxDQUFDQyxNQUFRQSxJQUFJUixNQUFNLEtBQUtHO1FBQ3BEO1FBRUEsSUFBSUcsVUFBVTtZQUNaLHFCQUFxQjtZQUNyQixJQUFJRyxNQUFNQyxPQUFPLENBQUNYLE1BQU1ZLFVBQVUsR0FBRztnQkFDbkMsTUFBTUMsa0JBQWtCQyxPQUFPQyxPQUFPLENBQUNSLFVBQVVDLElBQUksQ0FBQyxDQUFDLENBQUNRLEtBQUtDLElBQUk7b0JBQy9ELE9BQU9BLFFBQVEsUUFBUSxDQUFDO3dCQUFDO3dCQUFNO3dCQUFVO3dCQUFTO3dCQUFVO3FCQUFPLENBQUNDLFFBQVEsQ0FBQ0Y7Z0JBQy9FO2dCQUVBLElBQUlILGlCQUFpQjtvQkFDbkIsTUFBTUQsYUFBYUMsZUFBZSxDQUFDLEVBQUUsQ0FBQ00sT0FBTyxDQUFDLE1BQU07b0JBRXBEZCxTQUFTO3dCQUNQTzt3QkFDQVEsT0FBT1AsZUFBZSxDQUFDLEVBQUU7b0JBQzNCO2dCQUNGO1lBQ0YsT0FBTztnQkFDTCxnQkFBZ0I7Z0JBQ2hCLE1BQU1RLGNBQWNkLFFBQVEsQ0FBQyxDQUFDLEVBQUVQLE1BQU1ZLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDckRQLFNBQVNnQjtZQUNYO1FBQ0Y7SUFDRixPQUFPO1FBQ0wsTUFBTUMsdUJBQXVCLEVBQUU7UUFFL0JuQixVQUFVb0IsT0FBTyxDQUFDLENBQUNoQjtZQUNqQixJQUFJaUIsZ0JBQWdCO1lBRXBCLElBQUlwQiwwQkFBMEI7Z0JBQzVCb0IsZ0JBQWdCakIsU0FBU04sTUFBTSxLQUFLRztZQUN0QztZQUVBLGlCQUFpQjtZQUNqQixJQUFJLENBQUNNLE1BQU1DLE9BQU8sQ0FBQ1gsTUFBTVksVUFBVSxHQUFHO2dCQUNwQyxNQUFNUyxjQUFjZCxRQUFRLENBQUMsQ0FBQyxFQUFFUCxNQUFNWSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBRXJELElBQUlTLGVBQWVHLGVBQWU7b0JBQ2hDRixxQkFBcUJHLElBQUksQ0FBQ0o7Z0JBQzVCO1lBQ0YsT0FBTztnQkFDTCxzQkFBc0I7Z0JBQ3RCLE1BQU1SLGtCQUFrQkMsT0FBT0MsT0FBTyxDQUFDUixVQUFVQyxJQUFJLENBQ25ELENBQUMsQ0FBQ1EsS0FBS0MsSUFBSSxHQUNUQSxRQUFRLFFBQ1IsQ0FBQzt3QkFBQzt3QkFBTTt3QkFBVTt3QkFBUzt3QkFBVTtxQkFBTyxDQUFDQyxRQUFRLENBQUNGLFFBQ3REUTtnQkFHSixJQUFJWCxpQkFBaUI7b0JBQ25CLE1BQU1ELGFBQWFDLGVBQWUsQ0FBQyxFQUFFLENBQUNNLE9BQU8sQ0FBQyxNQUFNO29CQUVwREcscUJBQXFCRyxJQUFJLENBQUM7d0JBQ3hCYjt3QkFDQVEsT0FBT1AsZUFBZSxDQUFDLEVBQUU7b0JBQzNCO2dCQUNGO1lBQ0Y7UUFDRjtRQUVBUixTQUFTaUI7SUFDWDtJQUVBLElBQUlyQixRQUFRO1FBQ1ZDLEdBQUcsQ0FBQ0YsTUFBTTBCLElBQUksQ0FBQyxDQUFDekIsT0FBTyxHQUFHSTtJQUM1QixPQUFPO1FBQ0xILEdBQUcsQ0FBQ0YsTUFBTTBCLElBQUksQ0FBQyxHQUFHckI7SUFDcEI7QUFDRiJ9
|
@@ -46,7 +46,11 @@ type TraverseFieldsArgs = {
|
|
46
46
|
* All hasMany text fields, as returned by Drizzle, keyed on an object by field path
|
47
47
|
*/
|
48
48
|
texts: Record<string, Record<string, unknown>[]>;
|
49
|
+
/**
|
50
|
+
* Set to a locale if this group of fields is within a localized array or block.
|
51
|
+
*/
|
52
|
+
withinArrayOrBlockLocale?: string;
|
49
53
|
};
|
50
|
-
export declare const traverseFields: <T extends Record<string, unknown>>({ blocks, config, dataRef, deletions, fieldPrefix, fields, numbers, path, relationships, table, texts, }: TraverseFieldsArgs) => T;
|
54
|
+
export declare const traverseFields: <T extends Record<string, unknown>>({ blocks, config, dataRef, deletions, fieldPrefix, fields, numbers, path, relationships, table, texts, withinArrayOrBlockLocale, }: TraverseFieldsArgs) => T;
|
51
55
|
export {};
|
52
56
|
//# sourceMappingURL=traverseFields.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/transform/read/traverseFields.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAItD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAMhE,KAAK,kBAAkB,GAAG;IACxB;;OAEG;IACH,MAAM,EAAE,SAAS,CAAA;IACjB;;OAEG;IACH,MAAM,EAAE,eAAe,CAAA;IACvB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC;;OAEG;IACH,SAAS,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAA;IACzB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAClD;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IACxD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;
|
1
|
+
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/transform/read/traverseFields.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAItD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAMhE,KAAK,kBAAkB,GAAG;IACxB;;OAEG;IACH,MAAM,EAAE,SAAS,CAAA;IACjB;;OAEG;IACH,MAAM,EAAE,eAAe,CAAA;IACvB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC;;OAEG;IACH,SAAS,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAA;IACzB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAClD;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IACxD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAChD;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAID,eAAO,MAAM,cAAc,0KAaxB,kBAAkB,MAygBpB,CAAA"}
|
@@ -12,7 +12,7 @@ const _types = require("payload/types");
|
|
12
12
|
const _hasManyNumber = require("./hasManyNumber");
|
13
13
|
const _hasManyText = require("./hasManyText");
|
14
14
|
const _relationship = require("./relationship");
|
15
|
-
const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, fields, numbers, path, relationships, table, texts })=>{
|
15
|
+
const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, fields, numbers, path, relationships, table, texts, withinArrayOrBlockLocale })=>{
|
16
16
|
const sanitizedPath = path ? `${path}.` : path;
|
17
17
|
const formatted = fields.reduce((result, field)=>{
|
18
18
|
if (field.type === 'tabs') {
|
@@ -30,7 +30,8 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
|
|
30
30
|
path,
|
31
31
|
relationships,
|
32
32
|
table,
|
33
|
-
texts
|
33
|
+
texts,
|
34
|
+
withinArrayOrBlockLocale
|
34
35
|
});
|
35
36
|
}
|
36
37
|
if (field.type === 'collapsible' || field.type === 'row' || field.type === 'tab' && !('name' in field)) {
|
@@ -45,7 +46,8 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
|
|
45
46
|
path,
|
46
47
|
relationships,
|
47
48
|
table,
|
48
|
-
texts
|
49
|
+
texts,
|
50
|
+
withinArrayOrBlockLocale
|
49
51
|
});
|
50
52
|
}
|
51
53
|
if ((0, _types.fieldAffectsData)(field)) {
|
@@ -78,7 +80,8 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
|
|
78
80
|
path: `${sanitizedPath}${field.name}.${row._order - 1}`,
|
79
81
|
relationships,
|
80
82
|
table: row,
|
81
|
-
texts
|
83
|
+
texts,
|
84
|
+
withinArrayOrBlockLocale: locale
|
82
85
|
});
|
83
86
|
if ('_order' in rowResult) {
|
84
87
|
delete rowResult._order;
|
@@ -88,7 +91,7 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
|
|
88
91
|
return arrayResult;
|
89
92
|
}, {});
|
90
93
|
} else {
|
91
|
-
result[field.name] = fieldData.
|
94
|
+
result[field.name] = fieldData.reduce((acc, row, i)=>{
|
92
95
|
if (row._uuid) {
|
93
96
|
row.id = row._uuid;
|
94
97
|
delete row._uuid;
|
@@ -96,30 +99,38 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
|
|
96
99
|
if ('_order' in row) {
|
97
100
|
delete row._order;
|
98
101
|
}
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
102
|
+
if (!withinArrayOrBlockLocale || withinArrayOrBlockLocale && withinArrayOrBlockLocale === row._locale) {
|
103
|
+
if (row._locale) {
|
104
|
+
delete row._locale;
|
105
|
+
}
|
106
|
+
acc.push(traverseFields({
|
107
|
+
blocks,
|
108
|
+
config,
|
109
|
+
dataRef: row,
|
110
|
+
deletions,
|
111
|
+
fieldPrefix: '',
|
112
|
+
fields: field.fields,
|
113
|
+
numbers,
|
114
|
+
path: `${sanitizedPath}${field.name}.${i}`,
|
115
|
+
relationships,
|
116
|
+
table: row,
|
117
|
+
texts,
|
118
|
+
withinArrayOrBlockLocale
|
119
|
+
}));
|
120
|
+
}
|
121
|
+
return acc;
|
122
|
+
}, []);
|
113
123
|
}
|
114
124
|
}
|
115
125
|
return result;
|
116
126
|
}
|
117
127
|
if (field.type === 'blocks') {
|
118
128
|
const blockFieldPath = `${sanitizedPath}${field.name}`;
|
119
|
-
|
129
|
+
const blocksByPath = blocks[blockFieldPath];
|
130
|
+
if (Array.isArray(blocksByPath)) {
|
120
131
|
if (field.localized) {
|
121
132
|
result[field.name] = {};
|
122
|
-
|
133
|
+
blocksByPath.forEach((row)=>{
|
123
134
|
if (row._uuid) {
|
124
135
|
row.id = row._uuid;
|
125
136
|
delete row._uuid;
|
@@ -145,7 +156,8 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
|
|
145
156
|
path: `${blockFieldPath}.${row._order - 1}`,
|
146
157
|
relationships,
|
147
158
|
table: row,
|
148
|
-
texts
|
159
|
+
texts,
|
160
|
+
withinArrayOrBlockLocale: locale
|
149
161
|
});
|
150
162
|
delete blockResult._order;
|
151
163
|
return blockResult;
|
@@ -154,7 +166,21 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
|
|
154
166
|
});
|
155
167
|
});
|
156
168
|
} else {
|
157
|
-
|
169
|
+
// Add locale-specific index to have a proper blockFieldPath for current locale
|
170
|
+
// because blocks can be in the same array for different locales!
|
171
|
+
if (withinArrayOrBlockLocale && config.localization) {
|
172
|
+
for (const locale of config.localization.localeCodes){
|
173
|
+
let localeIndex = 0;
|
174
|
+
for(let i = 0; i < blocksByPath.length; i++){
|
175
|
+
const row = blocksByPath[i];
|
176
|
+
if (row._locale === locale) {
|
177
|
+
row._index = localeIndex;
|
178
|
+
localeIndex++;
|
179
|
+
}
|
180
|
+
}
|
181
|
+
}
|
182
|
+
}
|
183
|
+
result[field.name] = blocksByPath.reduce((acc, row, i)=>{
|
158
184
|
delete row._order;
|
159
185
|
if (row._uuid) {
|
160
186
|
row.id = row._uuid;
|
@@ -162,22 +188,35 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
|
|
162
188
|
}
|
163
189
|
const block = field.blocks.find(({ slug })=>slug === row.blockType);
|
164
190
|
if (block) {
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
191
|
+
if (!withinArrayOrBlockLocale || withinArrayOrBlockLocale && withinArrayOrBlockLocale === row._locale) {
|
192
|
+
if (row._locale) {
|
193
|
+
delete row._locale;
|
194
|
+
}
|
195
|
+
if (typeof row._index === 'number') {
|
196
|
+
i = row._index;
|
197
|
+
delete row._index;
|
198
|
+
}
|
199
|
+
acc.push(traverseFields({
|
200
|
+
blocks,
|
201
|
+
config,
|
202
|
+
dataRef: row,
|
203
|
+
deletions,
|
204
|
+
fieldPrefix: '',
|
205
|
+
fields: block.fields,
|
206
|
+
numbers,
|
207
|
+
path: `${blockFieldPath}.${i}`,
|
208
|
+
relationships,
|
209
|
+
table: row,
|
210
|
+
texts,
|
211
|
+
withinArrayOrBlockLocale
|
212
|
+
}));
|
213
|
+
return acc;
|
214
|
+
}
|
215
|
+
} else {
|
216
|
+
acc.push({});
|
178
217
|
}
|
179
|
-
return
|
180
|
-
});
|
218
|
+
return acc;
|
219
|
+
}, []);
|
181
220
|
}
|
182
221
|
}
|
183
222
|
return result;
|
@@ -217,7 +256,8 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
|
|
217
256
|
(0, _relationship.transformRelationship)({
|
218
257
|
field,
|
219
258
|
ref: result,
|
220
|
-
relations: relationPathMatch
|
259
|
+
relations: relationPathMatch,
|
260
|
+
withinArrayOrBlockLocale
|
221
261
|
});
|
222
262
|
}
|
223
263
|
return result;
|
@@ -246,7 +286,8 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
|
|
246
286
|
(0, _hasManyText.transformHasManyText)({
|
247
287
|
field,
|
248
288
|
ref: result,
|
249
|
-
textRows: textPathMatch
|
289
|
+
textRows: textPathMatch,
|
290
|
+
withinArrayOrBlockLocale
|
250
291
|
});
|
251
292
|
}
|
252
293
|
return result;
|
@@ -275,7 +316,8 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
|
|
275
316
|
(0, _hasManyNumber.transformHasManyNumber)({
|
276
317
|
field,
|
277
318
|
numberRows: numberPathMatch,
|
278
|
-
ref: result
|
319
|
+
ref: result,
|
320
|
+
withinArrayOrBlockLocale
|
279
321
|
});
|
280
322
|
}
|
281
323
|
return result;
|
@@ -291,7 +333,11 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
|
|
291
333
|
return selectResult;
|
292
334
|
}, {});
|
293
335
|
} else {
|
294
|
-
|
336
|
+
let selectData = fieldData;
|
337
|
+
if (withinArrayOrBlockLocale) {
|
338
|
+
selectData = selectData.filter(({ locale })=>locale === withinArrayOrBlockLocale);
|
339
|
+
}
|
340
|
+
result[field.name] = selectData.map(({ value })=>value);
|
295
341
|
}
|
296
342
|
}
|
297
343
|
return result;
|
@@ -299,10 +345,18 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
|
|
299
345
|
const localizedFieldData = {};
|
300
346
|
const valuesToTransform = [];
|
301
347
|
if (field.localized && Array.isArray(table._locales)) {
|
348
|
+
if (!table._locales.length && config.localization) {
|
349
|
+
config.localization.localeCodes.forEach((_locale)=>table._locales.push({
|
350
|
+
_locale
|
351
|
+
}));
|
352
|
+
}
|
302
353
|
table._locales.forEach((localeRow)=>{
|
303
354
|
valuesToTransform.push({
|
304
355
|
ref: localizedFieldData,
|
305
|
-
table:
|
356
|
+
table: {
|
357
|
+
...table,
|
358
|
+
...localeRow
|
359
|
+
}
|
306
360
|
});
|
307
361
|
});
|
308
362
|
} else {
|
@@ -319,47 +373,26 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
|
|
319
373
|
case 'group':
|
320
374
|
{
|
321
375
|
const groupFieldPrefix = `${fieldPrefix || ''}${field.name}_`;
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
if ('_order' in ref) {
|
343
|
-
delete ref._order;
|
344
|
-
}
|
345
|
-
} else {
|
346
|
-
const groupData = {};
|
347
|
-
ref[field.name] = traverseFields({
|
348
|
-
blocks,
|
349
|
-
config,
|
350
|
-
dataRef: groupData,
|
351
|
-
deletions,
|
352
|
-
fieldPrefix: groupFieldPrefix,
|
353
|
-
fields: field.fields,
|
354
|
-
numbers,
|
355
|
-
path: `${sanitizedPath}${field.name}`,
|
356
|
-
relationships,
|
357
|
-
table,
|
358
|
-
texts
|
359
|
-
});
|
360
|
-
if ('_order' in ref) {
|
361
|
-
delete ref._order;
|
362
|
-
}
|
376
|
+
const groupData = {};
|
377
|
+
const locale = table._locale;
|
378
|
+
const refKey = field.localized && locale ? locale : field.name;
|
379
|
+
if (field.localized && locale) delete table._locale;
|
380
|
+
ref[refKey] = traverseFields({
|
381
|
+
blocks,
|
382
|
+
config,
|
383
|
+
dataRef: groupData,
|
384
|
+
deletions,
|
385
|
+
fieldPrefix: groupFieldPrefix,
|
386
|
+
fields: field.fields,
|
387
|
+
numbers,
|
388
|
+
path: `${sanitizedPath}${field.name}`,
|
389
|
+
relationships,
|
390
|
+
table,
|
391
|
+
texts,
|
392
|
+
withinArrayOrBlockLocale: locale || withinArrayOrBlockLocale
|
393
|
+
});
|
394
|
+
if ('_order' in ref) {
|
395
|
+
delete ref._order;
|
363
396
|
}
|
364
397
|
break;
|
365
398
|
}
|
@@ -426,4 +459,4 @@ const traverseFields = ({ blocks, config, dataRef, deletions, fieldPrefix, field
|
|
426
459
|
return formatted;
|
427
460
|
};
|
428
461
|
|
429
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm0vcmVhZC90cmF2ZXJzZUZpZWxkcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb25maWcgfSBmcm9tICdwYXlsb2FkL2NvbmZpZydcbmltcG9ydCB0eXBlIHsgRmllbGQsIFRhYkFzRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHR5cGUgeyBCbG9ja3NNYXAgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvY3JlYXRlQmxvY2tzTWFwJ1xuXG5pbXBvcnQgeyB0cmFuc2Zvcm1IYXNNYW55TnVtYmVyIH0gZnJvbSAnLi9oYXNNYW55TnVtYmVyJ1xuaW1wb3J0IHsgdHJhbnNmb3JtSGFzTWFueVRleHQgfSBmcm9tICcuL2hhc01hbnlUZXh0J1xuaW1wb3J0IHsgdHJhbnNmb3JtUmVsYXRpb25zaGlwIH0gZnJvbSAnLi9yZWxhdGlvbnNoaXAnXG5cbnR5cGUgVHJhdmVyc2VGaWVsZHNBcmdzID0ge1xuICAvKipcbiAgICogUHJlLWZvcm1hdHRlZCBibG9ja3MgbWFwXG4gICAqL1xuICBibG9ja3M6IEJsb2Nrc01hcFxuICAvKipcbiAgICogVGhlIGZ1bGwgUGF5bG9hZCBjb25maWdcbiAgICovXG4gIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnXG4gIC8qKlxuICAgKiBUaGUgZGF0YSByZWZlcmVuY2UgdG8gYmUgbXV0YXRlZCB3aXRoaW4gdGhpcyByZWN1cnNpdmUgZnVuY3Rpb25cbiAgICovXG4gIGRhdGFSZWY6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIC8qKlxuICAgKiBEYXRhIHRoYXQgbmVlZHMgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSByZXN1bHQgYWZ0ZXIgYWxsIGZpZWxkcyBoYXZlIHBvcHVsYXRlZFxuICAgKi9cbiAgZGVsZXRpb25zOiAoKCkgPT4gdm9pZClbXVxuICAvKipcbiAgICogQ29sdW1uIHByZWZpeCBjYW4gYmUgYnVpbHQgdXAgYnkgZ3JvdXAgYW5kIG5hbWVkIHRhYiBmaWVsZHNcbiAgICovXG4gIGZpZWxkUHJlZml4OiBzdHJpbmdcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIFBheWxvYWQgZmllbGRzIHRvIHRyYXZlcnNlXG4gICAqL1xuICBmaWVsZHM6IChGaWVsZCB8IFRhYkFzRmllbGQpW11cbiAgLyoqXG4gICAqIEFsbCBoYXNNYW55IG51bWJlciBmaWVsZHMsIGFzIHJldHVybmVkIGJ5IERyaXp6bGUsIGtleWVkIG9uIGFuIG9iamVjdCBieSBmaWVsZCBwYXRoXG4gICAqL1xuICBudW1iZXJzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdPlxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgZmllbGQgcGF0aCAoaW4gZG90IG5vdGF0aW9uKSwgdXNlZCB0byBtZXJnZSBpbiByZWxhdGlvbnNoaXBzXG4gICAqL1xuICBwYXRoOiBzdHJpbmdcbiAgLyoqXG4gICAqIEFsbCByZWxhdGVkIGRvY3VtZW50cywgYXMgcmV0dXJuZWQgYnkgRHJpenpsZSwga2V5ZWQgb24gYW4gb2JqZWN0IGJ5IGZpZWxkIHBhdGhcbiAgICovXG4gIHJlbGF0aW9uc2hpcHM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+XG4gIC8qKlxuICAgKiBEYXRhIHN0cnVjdHVyZSByZXByZXNlbnRpbmcgdGhlIG5lYXJlc3QgdGFibGUgZnJvbSBkYlxuICAgKi9cbiAgdGFibGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIC8qKlxuICAgKiBBbGwgaGFzTWFueSB0ZXh0IGZpZWxkcywgYXMgcmV0dXJuZWQgYnkgRHJpenpsZSwga2V5ZWQgb24gYW4gb2JqZWN0IGJ5IGZpZWxkIHBhdGhcbiAgICovXG4gIHRleHRzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdPlxufVxuXG4vLyBUcmF2ZXJzZSBmaWVsZHMgcmVjdXJzaXZlbHksIHRyYW5zZm9ybWluZyBkYXRhXG4vLyBmb3IgZWFjaCBmaWVsZCB0eXBlIGludG8gcmVxdWlyZWQgUGF5bG9hZCBzaGFwZVxuZXhwb3J0IGNvbnN0IHRyYXZlcnNlRmllbGRzID0gPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oe1xuICBibG9ja3MsXG4gIGNvbmZpZyxcbiAgZGF0YVJlZixcbiAgZGVsZXRpb25zLFxuICBmaWVsZFByZWZpeCxcbiAgZmllbGRzLFxuICBudW1iZXJzLFxuICBwYXRoLFxuICByZWxhdGlvbnNoaXBzLFxuICB0YWJsZSxcbiAgdGV4dHMsXG59OiBUcmF2ZXJzZUZpZWxkc0FyZ3MpOiBUID0+IHtcbiAgY29uc3Qgc2FuaXRpemVkUGF0aCA9IHBhdGggPyBgJHtwYXRofS5gIDogcGF0aFxuXG4gIGNvbnN0IGZvcm1hdHRlZCA9IGZpZWxkcy5yZWR1Y2UoKHJlc3VsdCwgZmllbGQpID0+IHtcbiAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3RhYnMnKSB7XG4gICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgIGJsb2NrcyxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBkYXRhUmVmLFxuICAgICAgICBkZWxldGlvbnMsXG4gICAgICAgIGZpZWxkUHJlZml4LFxuICAgICAgICBmaWVsZHM6IGZpZWxkLnRhYnMubWFwKCh0YWIpID0+ICh7IC4uLnRhYiwgdHlwZTogJ3RhYicgfSkpLFxuICAgICAgICBudW1iZXJzLFxuICAgICAgICBwYXRoLFxuICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICB0YWJsZSxcbiAgICAgICAgdGV4dHMsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGZpZWxkLnR5cGUgPT09ICdjb2xsYXBzaWJsZScgfHxcbiAgICAgIGZpZWxkLnR5cGUgPT09ICdyb3cnIHx8XG4gICAgICAoZmllbGQudHlwZSA9PT0gJ3RhYicgJiYgISgnbmFtZScgaW4gZmllbGQpKVxuICAgICkge1xuICAgICAgdHJhdmVyc2VGaWVsZHMoe1xuICAgICAgICBibG9ja3MsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgZGF0YVJlZixcbiAgICAgICAgZGVsZXRpb25zLFxuICAgICAgICBmaWVsZFByZWZpeCxcbiAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgIG51bWJlcnMsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgIHRhYmxlLFxuICAgICAgICB0ZXh0cyxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSB7XG4gICAgICBjb25zdCBmaWVsZE5hbWUgPSBgJHtmaWVsZFByZWZpeCB8fCAnJ30ke2ZpZWxkLm5hbWV9YFxuICAgICAgY29uc3QgZmllbGREYXRhID0gdGFibGVbZmllbGROYW1lXVxuXG4gICAgICBpZiAoZmllbGRQcmVmaXgpIHtcbiAgICAgICAgZGVsZXRpb25zLnB1c2goKCkgPT4gZGVsZXRlIHRhYmxlW2ZpZWxkTmFtZV0pXG4gICAgICB9XG5cbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkRGF0YSkpIHtcbiAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSBmaWVsZERhdGEucmVkdWNlKChhcnJheVJlc3VsdCwgcm93KSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2Ygcm93Ll9sb2NhbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFhcnJheVJlc3VsdFtyb3cuX2xvY2FsZV0pIGFycmF5UmVzdWx0W3Jvdy5fbG9jYWxlXSA9IFtdXG4gICAgICAgICAgICAgICAgY29uc3QgbG9jYWxlID0gcm93Ll9sb2NhbGVcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0ge31cbiAgICAgICAgICAgICAgICBkZWxldGUgcm93Ll9sb2NhbGVcbiAgICAgICAgICAgICAgICBpZiAocm93Ll91dWlkKSB7XG4gICAgICAgICAgICAgICAgICByb3cuaWQgPSByb3cuX3V1aWRcbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSByb3cuX3V1aWRcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCByb3dSZXN1bHQgPSB0cmF2ZXJzZUZpZWxkczxUPih7XG4gICAgICAgICAgICAgICAgICBibG9ja3MsXG4gICAgICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgICAgICBkYXRhUmVmOiBkYXRhLFxuICAgICAgICAgICAgICAgICAgZGVsZXRpb25zLFxuICAgICAgICAgICAgICAgICAgZmllbGRQcmVmaXg6ICcnLFxuICAgICAgICAgICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgICAgICAgICBudW1iZXJzLFxuICAgICAgICAgICAgICAgICAgcGF0aDogYCR7c2FuaXRpemVkUGF0aH0ke2ZpZWxkLm5hbWV9LiR7cm93Ll9vcmRlciAtIDF9YCxcbiAgICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgICAgICAgICB0YWJsZTogcm93LFxuICAgICAgICAgICAgICAgICAgdGV4dHMsXG4gICAgICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgICAgIGlmICgnX29yZGVyJyBpbiByb3dSZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSByb3dSZXN1bHQuX29yZGVyXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYXJyYXlSZXN1bHRbbG9jYWxlXS5wdXNoKHJvd1Jlc3VsdClcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBhcnJheVJlc3VsdFxuICAgICAgICAgICAgfSwge30pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXSA9IGZpZWxkRGF0YS5tYXAoKHJvdywgaSkgPT4ge1xuICAgICAgICAgICAgICBpZiAocm93Ll91dWlkKSB7XG4gICAgICAgICAgICAgICAgcm93LmlkID0gcm93Ll91dWlkXG4gICAgICAgICAgICAgICAgZGVsZXRlIHJvdy5fdXVpZFxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCdfb3JkZXInIGluIHJvdykge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSByb3cuX29yZGVyXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gdHJhdmVyc2VGaWVsZHM8VD4oe1xuICAgICAgICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgICAgZGF0YVJlZjogcm93LFxuICAgICAgICAgICAgICAgIGRlbGV0aW9ucyxcbiAgICAgICAgICAgICAgICBmaWVsZFByZWZpeDogJycsXG4gICAgICAgICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgICAgICAgbnVtYmVycyxcbiAgICAgICAgICAgICAgICBwYXRoOiBgJHtzYW5pdGl6ZWRQYXRofSR7ZmllbGQubmFtZX0uJHtpfWAsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgICAgICB0YWJsZTogcm93LFxuICAgICAgICAgICAgICAgIHRleHRzLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICB9XG5cbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAnYmxvY2tzJykge1xuICAgICAgICBjb25zdCBibG9ja0ZpZWxkUGF0aCA9IGAke3Nhbml0aXplZFBhdGh9JHtmaWVsZC5uYW1lfWBcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShibG9ja3NbYmxvY2tGaWVsZFBhdGhdKSkge1xuICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXSA9IHt9XG5cbiAgICAgICAgICAgIGJsb2Nrc1tibG9ja0ZpZWxkUGF0aF0uZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChyb3cuX3V1aWQpIHtcbiAgICAgICAgICAgICAgICByb3cuaWQgPSByb3cuX3V1aWRcbiAgICAgICAgICAgICAgICBkZWxldGUgcm93Ll91dWlkXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiByb3cuX2xvY2FsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdFtmaWVsZC5uYW1lXVtyb3cuX2xvY2FsZV0pIHJlc3VsdFtmaWVsZC5uYW1lXVtyb3cuX2xvY2FsZV0gPSBbXVxuICAgICAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXVtyb3cuX2xvY2FsZV0ucHVzaChyb3cpXG4gICAgICAgICAgICAgICAgZGVsZXRlIHJvdy5fbG9jYWxlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHJlc3VsdFtmaWVsZC5uYW1lXSkuZm9yRWFjaCgoW2xvY2FsZSwgbG9jYWxpemVkQmxvY2tzXSkgPT4ge1xuICAgICAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV1bbG9jYWxlXSA9IGxvY2FsaXplZEJsb2Nrcy5tYXAoKHJvdykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrID0gZmllbGQuYmxvY2tzLmZpbmQoKHsgc2x1ZyB9KSA9PiBzbHVnID09PSByb3cuYmxvY2tUeXBlKVxuXG4gICAgICAgICAgICAgICAgaWYgKGJsb2NrKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBibG9ja1Jlc3VsdCA9IHRyYXZlcnNlRmllbGRzPFQ+KHtcbiAgICAgICAgICAgICAgICAgICAgYmxvY2tzLFxuICAgICAgICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgICAgICAgIGRhdGFSZWY6IHJvdyxcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRpb25zLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZFByZWZpeDogJycsXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkczogYmxvY2suZmllbGRzLFxuICAgICAgICAgICAgICAgICAgICBudW1iZXJzLFxuICAgICAgICAgICAgICAgICAgICBwYXRoOiBgJHtibG9ja0ZpZWxkUGF0aH0uJHtyb3cuX29yZGVyIC0gMX1gLFxuICAgICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgICAgICAgICB0YWJsZTogcm93LFxuICAgICAgICAgICAgICAgICAgICB0ZXh0cyxcbiAgICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSBibG9ja1Jlc3VsdC5fb3JkZXJcbiAgICAgICAgICAgICAgICAgIHJldHVybiBibG9ja1Jlc3VsdFxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB7fVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gYmxvY2tzW2Jsb2NrRmllbGRQYXRoXS5tYXAoKHJvdywgaSkgPT4ge1xuICAgICAgICAgICAgICBkZWxldGUgcm93Ll9vcmRlclxuICAgICAgICAgICAgICBpZiAocm93Ll91dWlkKSB7XG4gICAgICAgICAgICAgICAgcm93LmlkID0gcm93Ll91dWlkXG4gICAgICAgICAgICAgICAgZGVsZXRlIHJvdy5fdXVpZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGJsb2NrID0gZmllbGQuYmxvY2tzLmZpbmQoKHsgc2x1ZyB9KSA9PiBzbHVnID09PSByb3cuYmxvY2tUeXBlKVxuXG4gICAgICAgICAgICAgIGlmIChibG9jaykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZUZpZWxkczxUPih7XG4gICAgICAgICAgICAgICAgICBibG9ja3MsXG4gICAgICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgICAgICBkYXRhUmVmOiByb3csXG4gICAgICAgICAgICAgICAgICBkZWxldGlvbnMsXG4gICAgICAgICAgICAgICAgICBmaWVsZFByZWZpeDogJycsXG4gICAgICAgICAgICAgICAgICBmaWVsZHM6IGJsb2NrLmZpZWxkcyxcbiAgICAgICAgICAgICAgICAgIG51bWJlcnMsXG4gICAgICAgICAgICAgICAgICBwYXRoOiBgJHtibG9ja0ZpZWxkUGF0aH0uJHtpfWAsXG4gICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgICAgICAgdGFibGU6IHJvdyxcbiAgICAgICAgICAgICAgICAgIHRleHRzLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4ge31cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuXG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3JlbGF0aW9uc2hpcCcgfHwgZmllbGQudHlwZSA9PT0gJ3VwbG9hZCcpIHtcbiAgICAgICAgY29uc3QgcmVsYXRpb25QYXRoTWF0Y2ggPSByZWxhdGlvbnNoaXBzW2Ake3Nhbml0aXplZFBhdGh9JHtmaWVsZC5uYW1lfWBdXG4gICAgICAgIGlmICghcmVsYXRpb25QYXRoTWF0Y2gpIHtcbiAgICAgICAgICBpZiAoJ2hhc01hbnknIGluIGZpZWxkICYmIGZpZWxkLmhhc01hbnkpIHtcbiAgICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgY29uZmlnLmxvY2FsaXphdGlvbiAmJiBjb25maWcubG9jYWxpemF0aW9uLmxvY2FsZXMpIHtcbiAgICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0ge1xuICAgICAgICAgICAgICAgIFtjb25maWcubG9jYWxpemF0aW9uLmRlZmF1bHRMb2NhbGVdOiBbXSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gW11cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0ge31cbiAgICAgICAgICBjb25zdCByZWxhdGlvbnNCeUxvY2FsZTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4gPSB7fVxuXG4gICAgICAgICAgcmVsYXRpb25QYXRoTWF0Y2guZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJvdy5sb2NhbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIGlmICghcmVsYXRpb25zQnlMb2NhbGVbcm93LmxvY2FsZV0pIHJlbGF0aW9uc0J5TG9jYWxlW3Jvdy5sb2NhbGVdID0gW11cbiAgICAgICAgICAgICAgcmVsYXRpb25zQnlMb2NhbGVbcm93LmxvY2FsZV0ucHVzaChyb3cpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcblxuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHJlbGF0aW9uc0J5TG9jYWxlKS5mb3JFYWNoKChbbG9jYWxlLCByZWxhdGlvbnNdKSA9PiB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1SZWxhdGlvbnNoaXAoe1xuICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgICByZWY6IHJlc3VsdCxcbiAgICAgICAgICAgICAgcmVsYXRpb25zLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRyYW5zZm9ybVJlbGF0aW9uc2hpcCh7XG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgIHJlZjogcmVzdWx0LFxuICAgICAgICAgICAgcmVsYXRpb25zOiByZWxhdGlvblBhdGhNYXRjaCxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuXG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3RleHQnICYmIGZpZWxkPy5oYXNNYW55KSB7XG4gICAgICAgIGNvbnN0IHRleHRQYXRoTWF0Y2ggPSB0ZXh0c1tgJHtzYW5pdGl6ZWRQYXRofSR7ZmllbGQubmFtZX1gXVxuICAgICAgICBpZiAoIXRleHRQYXRoTWF0Y2gpIHJldHVybiByZXN1bHRcblxuICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0ge31cbiAgICAgICAgICBjb25zdCB0ZXh0c0J5TG9jYWxlOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdPiA9IHt9XG5cbiAgICAgICAgICB0ZXh0UGF0aE1hdGNoLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByb3cubG9jYWxlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICBpZiAoIXRleHRzQnlMb2NhbGVbcm93LmxvY2FsZV0pIHRleHRzQnlMb2NhbGVbcm93LmxvY2FsZV0gPSBbXVxuICAgICAgICAgICAgICB0ZXh0c0J5TG9jYWxlW3Jvdy5sb2NhbGVdLnB1c2gocm93KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBPYmplY3QuZW50cmllcyh0ZXh0c0J5TG9jYWxlKS5mb3JFYWNoKChbbG9jYWxlLCB0ZXh0c10pID0+IHtcbiAgICAgICAgICAgIHRyYW5zZm9ybUhhc01hbnlUZXh0KHtcbiAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgcmVmOiByZXN1bHQsXG4gICAgICAgICAgICAgIHRleHRSb3dzOiB0ZXh0cyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0cmFuc2Zvcm1IYXNNYW55VGV4dCh7XG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgIHJlZjogcmVzdWx0LFxuICAgICAgICAgICAgdGV4dFJvd3M6IHRleHRQYXRoTWF0Y2gsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH1cblxuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdudW1iZXInICYmIGZpZWxkLmhhc01hbnkpIHtcbiAgICAgICAgY29uc3QgbnVtYmVyUGF0aE1hdGNoID0gbnVtYmVyc1tgJHtzYW5pdGl6ZWRQYXRofSR7ZmllbGQubmFtZX1gXVxuICAgICAgICBpZiAoIW51bWJlclBhdGhNYXRjaCkgcmV0dXJuIHJlc3VsdFxuXG4gICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSB7fVxuICAgICAgICAgIGNvbnN0IG51bWJlcnNCeUxvY2FsZTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4gPSB7fVxuXG4gICAgICAgICAgbnVtYmVyUGF0aE1hdGNoLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByb3cubG9jYWxlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICBpZiAoIW51bWJlcnNCeUxvY2FsZVtyb3cubG9jYWxlXSkgbnVtYmVyc0J5TG9jYWxlW3Jvdy5sb2NhbGVdID0gW11cbiAgICAgICAgICAgICAgbnVtYmVyc0J5TG9jYWxlW3Jvdy5sb2NhbGVdLnB1c2gocm93KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBPYmplY3QuZW50cmllcyhudW1iZXJzQnlMb2NhbGUpLmZvckVhY2goKFtsb2NhbGUsIG51bWJlcnNdKSA9PiB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1IYXNNYW55TnVtYmVyKHtcbiAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgbnVtYmVyUm93czogbnVtYmVycyxcbiAgICAgICAgICAgICAgcmVmOiByZXN1bHQsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdHJhbnNmb3JtSGFzTWFueU51bWJlcih7XG4gICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgIG51bWJlclJvd3M6IG51bWJlclBhdGhNYXRjaCxcbiAgICAgICAgICAgIHJlZjogcmVzdWx0LFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICB9XG5cbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAnc2VsZWN0JyAmJiBmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkRGF0YSkpIHtcbiAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSBmaWVsZERhdGEucmVkdWNlKChzZWxlY3RSZXN1bHQsIHJvdykgPT4ge1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIHJvdy5sb2NhbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFzZWxlY3RSZXN1bHRbcm93LmxvY2FsZV0pIHNlbGVjdFJlc3VsdFtyb3cubG9jYWxlXSA9IFtdXG4gICAgICAgICAgICAgICAgc2VsZWN0UmVzdWx0W3Jvdy5sb2NhbGVdLnB1c2gocm93LnZhbHVlKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdFJlc3VsdFxuICAgICAgICAgICAgfSwge30pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXSA9IGZpZWxkRGF0YS5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH1cblxuICAgICAgY29uc3QgbG9jYWxpemVkRmllbGREYXRhID0ge31cbiAgICAgIGNvbnN0IHZhbHVlc1RvVHJhbnNmb3JtOiB7XG4gICAgICAgIHJlZjogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgICAgdGFibGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICB9W10gPSBbXVxuXG4gICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIEFycmF5LmlzQXJyYXkodGFibGUuX2xvY2FsZXMpKSB7XG4gICAgICAgIHRhYmxlLl9sb2NhbGVzLmZvckVhY2goKGxvY2FsZVJvdykgPT4ge1xuICAgICAgICAgIHZhbHVlc1RvVHJhbnNmb3JtLnB1c2goeyByZWY6IGxvY2FsaXplZEZpZWxkRGF0YSwgdGFibGU6IGxvY2FsZVJvdyB9KVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWVzVG9UcmFuc2Zvcm0ucHVzaCh7IHJlZjogcmVzdWx0LCB0YWJsZSB9KVxuICAgICAgfVxuXG4gICAgICB2YWx1ZXNUb1RyYW5zZm9ybS5mb3JFYWNoKCh7IHJlZiwgdGFibGUgfSkgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZERhdGEgPSB0YWJsZVtgJHtmaWVsZFByZWZpeCB8fCAnJ30ke2ZpZWxkLm5hbWV9YF1cbiAgICAgICAgY29uc3QgbG9jYWxlID0gdGFibGU/Ll9sb2NhbGVcblxuICAgICAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcbiAgICAgICAgICBjYXNlICd0YWInOlxuICAgICAgICAgIGNhc2UgJ2dyb3VwJzoge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBGaWVsZFByZWZpeCA9IGAke2ZpZWxkUHJlZml4IHx8ICcnfSR7ZmllbGQubmFtZX1fYFxuXG4gICAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgbG9jYWxlID09PSAnc3RyaW5nJyAmJiAhcmVmW2xvY2FsZV0pIHtcbiAgICAgICAgICAgICAgICByZWZbbG9jYWxlXSA9IHt9XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRhYmxlLl9sb2NhbGVcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHJlZikuZm9yRWFjaCgoW2dyb3VwTG9jYWxlLCBncm91cExvY2FsZURhdGFdKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVmW2dyb3VwTG9jYWxlXSA9IHRyYXZlcnNlRmllbGRzPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pih7XG4gICAgICAgICAgICAgICAgICBibG9ja3MsXG4gICAgICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgICAgICBkYXRhUmVmOiBncm91cExvY2FsZURhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgICAgICAgICAgICBkZWxldGlvbnMsXG4gICAgICAgICAgICAgICAgICBmaWVsZFByZWZpeDogZ3JvdXBGaWVsZFByZWZpeCxcbiAgICAgICAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgICAgICAgbnVtYmVycyxcbiAgICAgICAgICAgICAgICAgIHBhdGg6IGAke3Nhbml0aXplZFBhdGh9JHtmaWVsZC5uYW1lfWAsXG4gICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgICAgICAgdGFibGUsXG4gICAgICAgICAgICAgICAgICB0ZXh0cyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBpZiAoJ19vcmRlcicgaW4gcmVmKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHJlZi5fb3JkZXJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgZ3JvdXBEYXRhID0ge31cblxuICAgICAgICAgICAgICByZWZbZmllbGQubmFtZV0gPSB0cmF2ZXJzZUZpZWxkczxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oe1xuICAgICAgICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgICAgZGF0YVJlZjogZ3JvdXBEYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgICAgICAgICAgIGRlbGV0aW9ucyxcbiAgICAgICAgICAgICAgICBmaWVsZFByZWZpeDogZ3JvdXBGaWVsZFByZWZpeCxcbiAgICAgICAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgICAgICBudW1iZXJzLFxuICAgICAgICAgICAgICAgIHBhdGg6IGAke3Nhbml0aXplZFBhdGh9JHtmaWVsZC5uYW1lfWAsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwcyxcbiAgICAgICAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICAgICAgICB0ZXh0cyxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgaWYgKCdfb3JkZXInIGluIHJlZikge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSByZWYuX29yZGVyXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICd0ZXh0Jzoge1xuICAgICAgICAgICAgbGV0IHZhbCA9IGZpZWxkRGF0YVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBmaWVsZERhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIHZhbCA9IFN0cmluZyhmaWVsZERhdGEpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgbG9jYWxlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICByZWZbbG9jYWxlXSA9IHZhbFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gdmFsXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAnbnVtYmVyJzoge1xuICAgICAgICAgICAgbGV0IHZhbCA9IGZpZWxkRGF0YVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBmaWVsZERhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIHZhbCA9IE51bWJlci5wYXJzZUZsb2F0KGZpZWxkRGF0YSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBsb2NhbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIHJlZltsb2NhbGVdID0gdmFsXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSB2YWxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdkYXRlJzoge1xuICAgICAgICAgICAgbGV0IHZhbCA9IGZpZWxkRGF0YVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGZpZWxkRGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgdmFsID0gbmV3IERhdGUoZmllbGREYXRhKS50b0lTT1N0cmluZygpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgbG9jYWxlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICByZWZbbG9jYWxlXSA9IHZhbFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gdmFsXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBsb2NhbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIHJlZltsb2NhbGVdID0gZmllbGREYXRhXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSBmaWVsZERhdGFcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIGlmIChPYmplY3Qua2V5cyhsb2NhbGl6ZWRGaWVsZERhdGEpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gbG9jYWxpemVkRmllbGREYXRhXG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH0sIGRhdGFSZWYpXG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodGFibGUuX2xvY2FsZXMpKSB7XG4gICAgZGVsZXRpb25zLnB1c2goKCkgPT4gZGVsZXRlIHRhYmxlLl9sb2NhbGVzKVxuICB9XG5cbiAgcmV0dXJuIGZvcm1hdHRlZCBhcyBUXG59XG4iXSwibmFtZXMiOlsidHJhdmVyc2VGaWVsZHMiLCJibG9ja3MiLCJjb25maWciLCJkYXRhUmVmIiwiZGVsZXRpb25zIiwiZmllbGRQcmVmaXgiLCJmaWVsZHMiLCJudW1iZXJzIiwicGF0aCIsInJlbGF0aW9uc2hpcHMiLCJ0YWJsZSIsInRleHRzIiwic2FuaXRpemVkUGF0aCIsImZvcm1hdHRlZCIsInJlZHVjZSIsInJlc3VsdCIsImZpZWxkIiwidHlwZSIsInRhYnMiLCJtYXAiLCJ0YWIiLCJmaWVsZEFmZmVjdHNEYXRhIiwiZmllbGROYW1lIiwibmFtZSIsImZpZWxkRGF0YSIsInB1c2giLCJBcnJheSIsImlzQXJyYXkiLCJsb2NhbGl6ZWQiLCJhcnJheVJlc3VsdCIsInJvdyIsIl9sb2NhbGUiLCJsb2NhbGUiLCJkYXRhIiwiX3V1aWQiLCJpZCIsInJvd1Jlc3VsdCIsIl9vcmRlciIsImkiLCJibG9ja0ZpZWxkUGF0aCIsImZvckVhY2giLCJPYmplY3QiLCJlbnRyaWVzIiwibG9jYWxpemVkQmxvY2tzIiwiYmxvY2siLCJmaW5kIiwic2x1ZyIsImJsb2NrVHlwZSIsImJsb2NrUmVzdWx0IiwicmVsYXRpb25QYXRoTWF0Y2giLCJoYXNNYW55IiwibG9jYWxpemF0aW9uIiwibG9jYWxlcyIsImRlZmF1bHRMb2NhbGUiLCJyZWxhdGlvbnNCeUxvY2FsZSIsInJlbGF0aW9ucyIsInRyYW5zZm9ybVJlbGF0aW9uc2hpcCIsInJlZiIsInRleHRQYXRoTWF0Y2giLCJ0ZXh0c0J5TG9jYWxlIiwidHJhbnNmb3JtSGFzTWFueVRleHQiLCJ0ZXh0Um93cyIsIm51bWJlclBhdGhNYXRjaCIsIm51bWJlcnNCeUxvY2FsZSIsInRyYW5zZm9ybUhhc01hbnlOdW1iZXIiLCJudW1iZXJSb3dzIiwic2VsZWN0UmVzdWx0IiwidmFsdWUiLCJsb2NhbGl6ZWRGaWVsZERhdGEiLCJ2YWx1ZXNUb1RyYW5zZm9ybSIsIl9sb2NhbGVzIiwibG9jYWxlUm93IiwiZ3JvdXBGaWVsZFByZWZpeCIsImdyb3VwTG9jYWxlIiwiZ3JvdXBMb2NhbGVEYXRhIiwiZ3JvdXBEYXRhIiwidmFsIiwiU3RyaW5nIiwiTnVtYmVyIiwicGFyc2VGbG9hdCIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsImtleXMiLCJsZW5ndGgiXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
462
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90cmFuc2Zvcm0vcmVhZC90cmF2ZXJzZUZpZWxkcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb25maWcgfSBmcm9tICdwYXlsb2FkL2NvbmZpZydcbmltcG9ydCB0eXBlIHsgRmllbGQsIFRhYkFzRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHR5cGUgeyBCbG9ja3NNYXAgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvY3JlYXRlQmxvY2tzTWFwJ1xuXG5pbXBvcnQgeyB0cmFuc2Zvcm1IYXNNYW55TnVtYmVyIH0gZnJvbSAnLi9oYXNNYW55TnVtYmVyJ1xuaW1wb3J0IHsgdHJhbnNmb3JtSGFzTWFueVRleHQgfSBmcm9tICcuL2hhc01hbnlUZXh0J1xuaW1wb3J0IHsgdHJhbnNmb3JtUmVsYXRpb25zaGlwIH0gZnJvbSAnLi9yZWxhdGlvbnNoaXAnXG5cbnR5cGUgVHJhdmVyc2VGaWVsZHNBcmdzID0ge1xuICAvKipcbiAgICogUHJlLWZvcm1hdHRlZCBibG9ja3MgbWFwXG4gICAqL1xuICBibG9ja3M6IEJsb2Nrc01hcFxuICAvKipcbiAgICogVGhlIGZ1bGwgUGF5bG9hZCBjb25maWdcbiAgICovXG4gIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnXG4gIC8qKlxuICAgKiBUaGUgZGF0YSByZWZlcmVuY2UgdG8gYmUgbXV0YXRlZCB3aXRoaW4gdGhpcyByZWN1cnNpdmUgZnVuY3Rpb25cbiAgICovXG4gIGRhdGFSZWY6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIC8qKlxuICAgKiBEYXRhIHRoYXQgbmVlZHMgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSByZXN1bHQgYWZ0ZXIgYWxsIGZpZWxkcyBoYXZlIHBvcHVsYXRlZFxuICAgKi9cbiAgZGVsZXRpb25zOiAoKCkgPT4gdm9pZClbXVxuICAvKipcbiAgICogQ29sdW1uIHByZWZpeCBjYW4gYmUgYnVpbHQgdXAgYnkgZ3JvdXAgYW5kIG5hbWVkIHRhYiBmaWVsZHNcbiAgICovXG4gIGZpZWxkUHJlZml4OiBzdHJpbmdcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIFBheWxvYWQgZmllbGRzIHRvIHRyYXZlcnNlXG4gICAqL1xuICBmaWVsZHM6IChGaWVsZCB8IFRhYkFzRmllbGQpW11cbiAgLyoqXG4gICAqIEFsbCBoYXNNYW55IG51bWJlciBmaWVsZHMsIGFzIHJldHVybmVkIGJ5IERyaXp6bGUsIGtleWVkIG9uIGFuIG9iamVjdCBieSBmaWVsZCBwYXRoXG4gICAqL1xuICBudW1iZXJzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdPlxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgZmllbGQgcGF0aCAoaW4gZG90IG5vdGF0aW9uKSwgdXNlZCB0byBtZXJnZSBpbiByZWxhdGlvbnNoaXBzXG4gICAqL1xuICBwYXRoOiBzdHJpbmdcbiAgLyoqXG4gICAqIEFsbCByZWxhdGVkIGRvY3VtZW50cywgYXMgcmV0dXJuZWQgYnkgRHJpenpsZSwga2V5ZWQgb24gYW4gb2JqZWN0IGJ5IGZpZWxkIHBhdGhcbiAgICovXG4gIHJlbGF0aW9uc2hpcHM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+XG4gIC8qKlxuICAgKiBEYXRhIHN0cnVjdHVyZSByZXByZXNlbnRpbmcgdGhlIG5lYXJlc3QgdGFibGUgZnJvbSBkYlxuICAgKi9cbiAgdGFibGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIC8qKlxuICAgKiBBbGwgaGFzTWFueSB0ZXh0IGZpZWxkcywgYXMgcmV0dXJuZWQgYnkgRHJpenpsZSwga2V5ZWQgb24gYW4gb2JqZWN0IGJ5IGZpZWxkIHBhdGhcbiAgICovXG4gIHRleHRzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdPlxuICAvKipcbiAgICogU2V0IHRvIGEgbG9jYWxlIGlmIHRoaXMgZ3JvdXAgb2YgZmllbGRzIGlzIHdpdGhpbiBhIGxvY2FsaXplZCBhcnJheSBvciBibG9jay5cbiAgICovXG4gIHdpdGhpbkFycmF5T3JCbG9ja0xvY2FsZT86IHN0cmluZ1xufVxuXG4vLyBUcmF2ZXJzZSBmaWVsZHMgcmVjdXJzaXZlbHksIHRyYW5zZm9ybWluZyBkYXRhXG4vLyBmb3IgZWFjaCBmaWVsZCB0eXBlIGludG8gcmVxdWlyZWQgUGF5bG9hZCBzaGFwZVxuZXhwb3J0IGNvbnN0IHRyYXZlcnNlRmllbGRzID0gPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oe1xuICBibG9ja3MsXG4gIGNvbmZpZyxcbiAgZGF0YVJlZixcbiAgZGVsZXRpb25zLFxuICBmaWVsZFByZWZpeCxcbiAgZmllbGRzLFxuICBudW1iZXJzLFxuICBwYXRoLFxuICByZWxhdGlvbnNoaXBzLFxuICB0YWJsZSxcbiAgdGV4dHMsXG4gIHdpdGhpbkFycmF5T3JCbG9ja0xvY2FsZSxcbn06IFRyYXZlcnNlRmllbGRzQXJncyk6IFQgPT4ge1xuICBjb25zdCBzYW5pdGl6ZWRQYXRoID0gcGF0aCA/IGAke3BhdGh9LmAgOiBwYXRoXG5cbiAgY29uc3QgZm9ybWF0dGVkID0gZmllbGRzLnJlZHVjZSgocmVzdWx0LCBmaWVsZCkgPT4ge1xuICAgIGlmIChmaWVsZC50eXBlID09PSAndGFicycpIHtcbiAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgYmxvY2tzLFxuICAgICAgICBjb25maWcsXG4gICAgICAgIGRhdGFSZWYsXG4gICAgICAgIGRlbGV0aW9ucyxcbiAgICAgICAgZmllbGRQcmVmaXgsXG4gICAgICAgIGZpZWxkczogZmllbGQudGFicy5tYXAoKHRhYikgPT4gKHsgLi4udGFiLCB0eXBlOiAndGFiJyB9KSksXG4gICAgICAgIG51bWJlcnMsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgIHRhYmxlLFxuICAgICAgICB0ZXh0cyxcbiAgICAgICAgd2l0aGluQXJyYXlPckJsb2NrTG9jYWxlLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBmaWVsZC50eXBlID09PSAnY29sbGFwc2libGUnIHx8XG4gICAgICBmaWVsZC50eXBlID09PSAncm93JyB8fFxuICAgICAgKGZpZWxkLnR5cGUgPT09ICd0YWInICYmICEoJ25hbWUnIGluIGZpZWxkKSlcbiAgICApIHtcbiAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgYmxvY2tzLFxuICAgICAgICBjb25maWcsXG4gICAgICAgIGRhdGFSZWYsXG4gICAgICAgIGRlbGV0aW9ucyxcbiAgICAgICAgZmllbGRQcmVmaXgsXG4gICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICBudW1iZXJzLFxuICAgICAgICBwYXRoLFxuICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICB0YWJsZSxcbiAgICAgICAgdGV4dHMsXG4gICAgICAgIHdpdGhpbkFycmF5T3JCbG9ja0xvY2FsZSxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpKSB7XG4gICAgICBjb25zdCBmaWVsZE5hbWUgPSBgJHtmaWVsZFByZWZpeCB8fCAnJ30ke2ZpZWxkLm5hbWV9YFxuICAgICAgY29uc3QgZmllbGREYXRhID0gdGFibGVbZmllbGROYW1lXVxuXG4gICAgICBpZiAoZmllbGRQcmVmaXgpIHtcbiAgICAgICAgZGVsZXRpb25zLnB1c2goKCkgPT4gZGVsZXRlIHRhYmxlW2ZpZWxkTmFtZV0pXG4gICAgICB9XG5cbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZpZWxkRGF0YSkpIHtcbiAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSBmaWVsZERhdGEucmVkdWNlKChhcnJheVJlc3VsdCwgcm93KSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2Ygcm93Ll9sb2NhbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFhcnJheVJlc3VsdFtyb3cuX2xvY2FsZV0pIGFycmF5UmVzdWx0W3Jvdy5fbG9jYWxlXSA9IFtdXG4gICAgICAgICAgICAgICAgY29uc3QgbG9jYWxlID0gcm93Ll9sb2NhbGVcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0ge31cbiAgICAgICAgICAgICAgICBkZWxldGUgcm93Ll9sb2NhbGVcbiAgICAgICAgICAgICAgICBpZiAocm93Ll91dWlkKSB7XG4gICAgICAgICAgICAgICAgICByb3cuaWQgPSByb3cuX3V1aWRcbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSByb3cuX3V1aWRcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCByb3dSZXN1bHQgPSB0cmF2ZXJzZUZpZWxkczxUPih7XG4gICAgICAgICAgICAgICAgICBibG9ja3MsXG4gICAgICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgICAgICBkYXRhUmVmOiBkYXRhLFxuICAgICAgICAgICAgICAgICAgZGVsZXRpb25zLFxuICAgICAgICAgICAgICAgICAgZmllbGRQcmVmaXg6ICcnLFxuICAgICAgICAgICAgICAgICAgZmllbGRzOiBmaWVsZC5maWVsZHMsXG4gICAgICAgICAgICAgICAgICBudW1iZXJzLFxuICAgICAgICAgICAgICAgICAgcGF0aDogYCR7c2FuaXRpemVkUGF0aH0ke2ZpZWxkLm5hbWV9LiR7cm93Ll9vcmRlciAtIDF9YCxcbiAgICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgICAgICAgICB0YWJsZTogcm93LFxuICAgICAgICAgICAgICAgICAgdGV4dHMsXG4gICAgICAgICAgICAgICAgICB3aXRoaW5BcnJheU9yQmxvY2tMb2NhbGU6IGxvY2FsZSxcbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgaWYgKCdfb3JkZXInIGluIHJvd1Jlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgZGVsZXRlIHJvd1Jlc3VsdC5fb3JkZXJcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBhcnJheVJlc3VsdFtsb2NhbGVdLnB1c2gocm93UmVzdWx0KVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIGFycmF5UmVzdWx0XG4gICAgICAgICAgICB9LCB7fSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gZmllbGREYXRhLnJlZHVjZSgoYWNjLCByb3csIGkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJvdy5fdXVpZCkge1xuICAgICAgICAgICAgICAgIHJvdy5pZCA9IHJvdy5fdXVpZFxuICAgICAgICAgICAgICAgIGRlbGV0ZSByb3cuX3V1aWRcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICgnX29yZGVyJyBpbiByb3cpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgcm93Ll9vcmRlclxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICF3aXRoaW5BcnJheU9yQmxvY2tMb2NhbGUgfHxcbiAgICAgICAgICAgICAgICAod2l0aGluQXJyYXlPckJsb2NrTG9jYWxlICYmIHdpdGhpbkFycmF5T3JCbG9ja0xvY2FsZSA9PT0gcm93Ll9sb2NhbGUpXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGlmIChyb3cuX2xvY2FsZSkge1xuICAgICAgICAgICAgICAgICAgZGVsZXRlIHJvdy5fbG9jYWxlXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYWNjLnB1c2goXG4gICAgICAgICAgICAgICAgICB0cmF2ZXJzZUZpZWxkczxUPih7XG4gICAgICAgICAgICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLFxuICAgICAgICAgICAgICAgICAgICBkYXRhUmVmOiByb3csXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRQcmVmaXg6ICcnLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZHM6IGZpZWxkLmZpZWxkcyxcbiAgICAgICAgICAgICAgICAgICAgbnVtYmVycyxcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogYCR7c2FuaXRpemVkUGF0aH0ke2ZpZWxkLm5hbWV9LiR7aX1gLFxuICAgICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgICAgICAgICB0YWJsZTogcm93LFxuICAgICAgICAgICAgICAgICAgICB0ZXh0cyxcbiAgICAgICAgICAgICAgICAgICAgd2l0aGluQXJyYXlPckJsb2NrTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIGFjY1xuICAgICAgICAgICAgfSwgW10pXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdibG9ja3MnKSB7XG4gICAgICAgIGNvbnN0IGJsb2NrRmllbGRQYXRoID0gYCR7c2FuaXRpemVkUGF0aH0ke2ZpZWxkLm5hbWV9YFxuICAgICAgICBjb25zdCBibG9ja3NCeVBhdGggPSBibG9ja3NbYmxvY2tGaWVsZFBhdGhdXG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYmxvY2tzQnlQYXRoKSkge1xuICAgICAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXSA9IHt9XG5cbiAgICAgICAgICAgIGJsb2Nrc0J5UGF0aC5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJvdy5fdXVpZCkge1xuICAgICAgICAgICAgICAgIHJvdy5pZCA9IHJvdy5fdXVpZFxuICAgICAgICAgICAgICAgIGRlbGV0ZSByb3cuX3V1aWRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAodHlwZW9mIHJvdy5fbG9jYWxlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlmICghcmVzdWx0W2ZpZWxkLm5hbWVdW3Jvdy5fbG9jYWxlXSkgcmVzdWx0W2ZpZWxkLm5hbWVdW3Jvdy5fbG9jYWxlXSA9IFtdXG4gICAgICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdW3Jvdy5fbG9jYWxlXS5wdXNoKHJvdylcbiAgICAgICAgICAgICAgICBkZWxldGUgcm93Ll9sb2NhbGVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMocmVzdWx0W2ZpZWxkLm5hbWVdKS5mb3JFYWNoKChbbG9jYWxlLCBsb2NhbGl6ZWRCbG9ja3NdKSA9PiB7XG4gICAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXVtsb2NhbGVdID0gbG9jYWxpemVkQmxvY2tzLm1hcCgocm93KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmxvY2sgPSBmaWVsZC5ibG9ja3MuZmluZCgoeyBzbHVnIH0pID0+IHNsdWcgPT09IHJvdy5ibG9ja1R5cGUpXG5cbiAgICAgICAgICAgICAgICBpZiAoYmxvY2spIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrUmVzdWx0ID0gdHJhdmVyc2VGaWVsZHM8VD4oe1xuICAgICAgICAgICAgICAgICAgICBibG9ja3MsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgZGF0YVJlZjogcm93LFxuICAgICAgICAgICAgICAgICAgICBkZWxldGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkUHJlZml4OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgZmllbGRzOiBibG9jay5maWVsZHMsXG4gICAgICAgICAgICAgICAgICAgIG51bWJlcnMsXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IGAke2Jsb2NrRmllbGRQYXRofS4ke3Jvdy5fb3JkZXIgLSAxfWAsXG4gICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcHMsXG4gICAgICAgICAgICAgICAgICAgIHRhYmxlOiByb3csXG4gICAgICAgICAgICAgICAgICAgIHRleHRzLFxuICAgICAgICAgICAgICAgICAgICB3aXRoaW5BcnJheU9yQmxvY2tMb2NhbGU6IGxvY2FsZSxcbiAgICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSBibG9ja1Jlc3VsdC5fb3JkZXJcbiAgICAgICAgICAgICAgICAgIHJldHVybiBibG9ja1Jlc3VsdFxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB7fVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQWRkIGxvY2FsZS1zcGVjaWZpYyBpbmRleCB0byBoYXZlIGEgcHJvcGVyIGJsb2NrRmllbGRQYXRoIGZvciBjdXJyZW50IGxvY2FsZVxuICAgICAgICAgICAgLy8gYmVjYXVzZSBibG9ja3MgY2FuIGJlIGluIHRoZSBzYW1lIGFycmF5IGZvciBkaWZmZXJlbnQgbG9jYWxlcyFcbiAgICAgICAgICAgIGlmICh3aXRoaW5BcnJheU9yQmxvY2tMb2NhbGUgJiYgY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IGxvY2FsZSBvZiBjb25maWcubG9jYWxpemF0aW9uLmxvY2FsZUNvZGVzKSB7XG4gICAgICAgICAgICAgICAgbGV0IGxvY2FsZUluZGV4ID0gMFxuXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBibG9ja3NCeVBhdGgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHJvdyA9IGJsb2Nrc0J5UGF0aFtpXVxuICAgICAgICAgICAgICAgICAgaWYgKHJvdy5fbG9jYWxlID09PSBsb2NhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcm93Ll9pbmRleCA9IGxvY2FsZUluZGV4XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsZUluZGV4KytcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gYmxvY2tzQnlQYXRoLnJlZHVjZSgoYWNjLCByb3csIGkpID0+IHtcbiAgICAgICAgICAgICAgZGVsZXRlIHJvdy5fb3JkZXJcbiAgICAgICAgICAgICAgaWYgKHJvdy5fdXVpZCkge1xuICAgICAgICAgICAgICAgIHJvdy5pZCA9IHJvdy5fdXVpZFxuICAgICAgICAgICAgICAgIGRlbGV0ZSByb3cuX3V1aWRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBibG9jayA9IGZpZWxkLmJsb2Nrcy5maW5kKCh7IHNsdWcgfSkgPT4gc2x1ZyA9PT0gcm93LmJsb2NrVHlwZSlcblxuICAgICAgICAgICAgICBpZiAoYmxvY2spIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAhd2l0aGluQXJyYXlPckJsb2NrTG9jYWxlIHx8XG4gICAgICAgICAgICAgICAgICAod2l0aGluQXJyYXlPckJsb2NrTG9jYWxlICYmIHdpdGhpbkFycmF5T3JCbG9ja0xvY2FsZSA9PT0gcm93Ll9sb2NhbGUpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBpZiAocm93Ll9sb2NhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJvdy5fbG9jYWxlXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJvdy5faW5kZXggPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIGkgPSByb3cuX2luZGV4XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByb3cuX2luZGV4XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGFjYy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzZUZpZWxkczxUPih7XG4gICAgICAgICAgICAgICAgICAgICAgYmxvY2tzLFxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhUmVmOiByb3csXG4gICAgICAgICAgICAgICAgICAgICAgZGVsZXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgIGZpZWxkUHJlZml4OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICBmaWVsZHM6IGJsb2NrLmZpZWxkcyxcbiAgICAgICAgICAgICAgICAgICAgICBudW1iZXJzLFxuICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IGAke2Jsb2NrRmllbGRQYXRofS4ke2l9YCxcbiAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgICAgICAgICAgIHRhYmxlOiByb3csXG4gICAgICAgICAgICAgICAgICAgICAgdGV4dHMsXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aGluQXJyYXlPckJsb2NrTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjY1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhY2MucHVzaCh7fSlcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBhY2NcbiAgICAgICAgICAgIH0sIFtdKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH1cblxuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdyZWxhdGlvbnNoaXAnIHx8IGZpZWxkLnR5cGUgPT09ICd1cGxvYWQnKSB7XG4gICAgICAgIGNvbnN0IHJlbGF0aW9uUGF0aE1hdGNoID0gcmVsYXRpb25zaGlwc1tgJHtzYW5pdGl6ZWRQYXRofSR7ZmllbGQubmFtZX1gXVxuICAgICAgICBpZiAoIXJlbGF0aW9uUGF0aE1hdGNoKSB7XG4gICAgICAgICAgaWYgKCdoYXNNYW55JyBpbiBmaWVsZCAmJiBmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIGNvbmZpZy5sb2NhbGl6YXRpb24gJiYgY29uZmlnLmxvY2FsaXphdGlvbi5sb2NhbGVzKSB7XG4gICAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXSA9IHtcbiAgICAgICAgICAgICAgICBbY29uZmlnLmxvY2FsaXphdGlvbi5kZWZhdWx0TG9jYWxlXTogW10sXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXSA9IFtdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXSA9IHt9XG4gICAgICAgICAgY29uc3QgcmVsYXRpb25zQnlMb2NhbGU6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+ID0ge31cblxuICAgICAgICAgIHJlbGF0aW9uUGF0aE1hdGNoLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByb3cubG9jYWxlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICBpZiAoIXJlbGF0aW9uc0J5TG9jYWxlW3Jvdy5sb2NhbGVdKSByZWxhdGlvbnNCeUxvY2FsZVtyb3cubG9jYWxlXSA9IFtdXG4gICAgICAgICAgICAgIHJlbGF0aW9uc0J5TG9jYWxlW3Jvdy5sb2NhbGVdLnB1c2gocm93KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBPYmplY3QuZW50cmllcyhyZWxhdGlvbnNCeUxvY2FsZSkuZm9yRWFjaCgoW2xvY2FsZSwgcmVsYXRpb25zXSkgPT4ge1xuICAgICAgICAgICAgdHJhbnNmb3JtUmVsYXRpb25zaGlwKHtcbiAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICAgICAgcmVmOiByZXN1bHQsXG4gICAgICAgICAgICAgIHJlbGF0aW9ucyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0cmFuc2Zvcm1SZWxhdGlvbnNoaXAoe1xuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICByZWY6IHJlc3VsdCxcbiAgICAgICAgICAgIHJlbGF0aW9uczogcmVsYXRpb25QYXRoTWF0Y2gsXG4gICAgICAgICAgICB3aXRoaW5BcnJheU9yQmxvY2tMb2NhbGUsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH1cblxuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICd0ZXh0JyAmJiBmaWVsZD8uaGFzTWFueSkge1xuICAgICAgICBjb25zdCB0ZXh0UGF0aE1hdGNoID0gdGV4dHNbYCR7c2FuaXRpemVkUGF0aH0ke2ZpZWxkLm5hbWV9YF1cbiAgICAgICAgaWYgKCF0ZXh0UGF0aE1hdGNoKSByZXR1cm4gcmVzdWx0XG5cbiAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICAgIHJlc3VsdFtmaWVsZC5uYW1lXSA9IHt9XG4gICAgICAgICAgY29uc3QgdGV4dHNCeUxvY2FsZTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXT4gPSB7fVxuXG4gICAgICAgICAgdGV4dFBhdGhNYXRjaC5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygcm93LmxvY2FsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgaWYgKCF0ZXh0c0J5TG9jYWxlW3Jvdy5sb2NhbGVdKSB0ZXh0c0J5TG9jYWxlW3Jvdy5sb2NhbGVdID0gW11cbiAgICAgICAgICAgICAgdGV4dHNCeUxvY2FsZVtyb3cubG9jYWxlXS5wdXNoKHJvdylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgT2JqZWN0LmVudHJpZXModGV4dHNCeUxvY2FsZSkuZm9yRWFjaCgoW2xvY2FsZSwgdGV4dHNdKSA9PiB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1IYXNNYW55VGV4dCh7XG4gICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgIHJlZjogcmVzdWx0LFxuICAgICAgICAgICAgICB0ZXh0Um93czogdGV4dHMsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdHJhbnNmb3JtSGFzTWFueVRleHQoe1xuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICByZWY6IHJlc3VsdCxcbiAgICAgICAgICAgIHRleHRSb3dzOiB0ZXh0UGF0aE1hdGNoLFxuICAgICAgICAgICAgd2l0aGluQXJyYXlPckJsb2NrTG9jYWxlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICB9XG5cbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAnbnVtYmVyJyAmJiBmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgIGNvbnN0IG51bWJlclBhdGhNYXRjaCA9IG51bWJlcnNbYCR7c2FuaXRpemVkUGF0aH0ke2ZpZWxkLm5hbWV9YF1cbiAgICAgICAgaWYgKCFudW1iZXJQYXRoTWF0Y2gpIHJldHVybiByZXN1bHRcblxuICAgICAgICBpZiAoZmllbGQubG9jYWxpemVkKSB7XG4gICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0ge31cbiAgICAgICAgICBjb25zdCBudW1iZXJzQnlMb2NhbGU6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+ID0ge31cblxuICAgICAgICAgIG51bWJlclBhdGhNYXRjaC5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygcm93LmxvY2FsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgaWYgKCFudW1iZXJzQnlMb2NhbGVbcm93LmxvY2FsZV0pIG51bWJlcnNCeUxvY2FsZVtyb3cubG9jYWxlXSA9IFtdXG4gICAgICAgICAgICAgIG51bWJlcnNCeUxvY2FsZVtyb3cubG9jYWxlXS5wdXNoKHJvdylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMobnVtYmVyc0J5TG9jYWxlKS5mb3JFYWNoKChbbG9jYWxlLCBudW1iZXJzXSkgPT4ge1xuICAgICAgICAgICAgdHJhbnNmb3JtSGFzTWFueU51bWJlcih7XG4gICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICBsb2NhbGUsXG4gICAgICAgICAgICAgIG51bWJlclJvd3M6IG51bWJlcnMsXG4gICAgICAgICAgICAgIHJlZjogcmVzdWx0LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRyYW5zZm9ybUhhc01hbnlOdW1iZXIoe1xuICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICBudW1iZXJSb3dzOiBudW1iZXJQYXRoTWF0Y2gsXG4gICAgICAgICAgICByZWY6IHJlc3VsdCxcbiAgICAgICAgICAgIHdpdGhpbkFycmF5T3JCbG9ja0xvY2FsZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfVxuXG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3NlbGVjdCcgJiYgZmllbGQuaGFzTWFueSkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZERhdGEpKSB7XG4gICAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCkge1xuICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gZmllbGREYXRhLnJlZHVjZSgoc2VsZWN0UmVzdWx0LCByb3cpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiByb3cubG9jYWxlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlmICghc2VsZWN0UmVzdWx0W3Jvdy5sb2NhbGVdKSBzZWxlY3RSZXN1bHRbcm93LmxvY2FsZV0gPSBbXVxuICAgICAgICAgICAgICAgIHNlbGVjdFJlc3VsdFtyb3cubG9jYWxlXS5wdXNoKHJvdy52YWx1ZSlcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBzZWxlY3RSZXN1bHRcbiAgICAgICAgICAgIH0sIHt9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgc2VsZWN0RGF0YSA9IGZpZWxkRGF0YVxuICAgICAgICAgICAgaWYgKHdpdGhpbkFycmF5T3JCbG9ja0xvY2FsZSkge1xuICAgICAgICAgICAgICBzZWxlY3REYXRhID0gc2VsZWN0RGF0YS5maWx0ZXIoKHsgbG9jYWxlIH0pID0+IGxvY2FsZSA9PT0gd2l0aGluQXJyYXlPckJsb2NrTG9jYWxlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gc2VsZWN0RGF0YS5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH1cblxuICAgICAgY29uc3QgbG9jYWxpemVkRmllbGREYXRhID0ge31cbiAgICAgIGNvbnN0IHZhbHVlc1RvVHJhbnNmb3JtOiB7XG4gICAgICAgIHJlZjogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgICAgdGFibGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICB9W10gPSBbXVxuXG4gICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIEFycmF5LmlzQXJyYXkodGFibGUuX2xvY2FsZXMpKSB7XG4gICAgICAgIGlmICghdGFibGUuX2xvY2FsZXMubGVuZ3RoICYmIGNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgICBjb25maWcubG9jYWxpemF0aW9uLmxvY2FsZUNvZGVzLmZvckVhY2goKF9sb2NhbGUpID0+XG4gICAgICAgICAgICAodGFibGUuX2xvY2FsZXMgYXMgdW5rbm93bltdKS5wdXNoKHsgX2xvY2FsZSB9KSxcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICB0YWJsZS5fbG9jYWxlcy5mb3JFYWNoKChsb2NhbGVSb3cpID0+IHtcbiAgICAgICAgICB2YWx1ZXNUb1RyYW5zZm9ybS5wdXNoKHtcbiAgICAgICAgICAgIHJlZjogbG9jYWxpemVkRmllbGREYXRhLFxuICAgICAgICAgICAgdGFibGU6IHtcbiAgICAgICAgICAgICAgLi4udGFibGUsXG4gICAgICAgICAgICAgIC4uLmxvY2FsZVJvdyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlc1RvVHJhbnNmb3JtLnB1c2goeyByZWY6IHJlc3VsdCwgdGFibGUgfSlcbiAgICAgIH1cblxuICAgICAgdmFsdWVzVG9UcmFuc2Zvcm0uZm9yRWFjaCgoeyByZWYsIHRhYmxlIH0pID0+IHtcbiAgICAgICAgY29uc3QgZmllbGREYXRhID0gdGFibGVbYCR7ZmllbGRQcmVmaXggfHwgJyd9JHtmaWVsZC5uYW1lfWBdXG4gICAgICAgIGNvbnN0IGxvY2FsZSA9IHRhYmxlPy5fbG9jYWxlXG5cbiAgICAgICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICAgICAgY2FzZSAndGFiJzpcbiAgICAgICAgICBjYXNlICdncm91cCc6IHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwRmllbGRQcmVmaXggPSBgJHtmaWVsZFByZWZpeCB8fCAnJ30ke2ZpZWxkLm5hbWV9X2BcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwRGF0YSA9IHt9XG4gICAgICAgICAgICBjb25zdCBsb2NhbGUgPSB0YWJsZS5fbG9jYWxlIGFzIHN0cmluZ1xuICAgICAgICAgICAgY29uc3QgcmVmS2V5ID0gZmllbGQubG9jYWxpemVkICYmIGxvY2FsZSA/IGxvY2FsZSA6IGZpZWxkLm5hbWVcblxuICAgICAgICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCAmJiBsb2NhbGUpIGRlbGV0ZSB0YWJsZS5fbG9jYWxlXG4gICAgICAgICAgICByZWZbcmVmS2V5XSA9IHRyYXZlcnNlRmllbGRzPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pih7XG4gICAgICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgICAgICAgY29uZmlnLFxuICAgICAgICAgICAgICBkYXRhUmVmOiBncm91cERhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICAgICAgICAgIGRlbGV0aW9ucyxcbiAgICAgICAgICAgICAgZmllbGRQcmVmaXg6IGdyb3VwRmllbGRQcmVmaXgsXG4gICAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzLFxuICAgICAgICAgICAgICBudW1iZXJzLFxuICAgICAgICAgICAgICBwYXRoOiBgJHtzYW5pdGl6ZWRQYXRofSR7ZmllbGQubmFtZX1gLFxuICAgICAgICAgICAgICByZWxhdGlvbnNoaXBzLFxuICAgICAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICAgICAgdGV4dHMsXG4gICAgICAgICAgICAgIHdpdGhpbkFycmF5T3JCbG9ja0xvY2FsZTogbG9jYWxlIHx8IHdpdGhpbkFycmF5T3JCbG9ja0xvY2FsZSxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGlmICgnX29yZGVyJyBpbiByZWYpIHtcbiAgICAgICAgICAgICAgZGVsZXRlIHJlZi5fb3JkZXJcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICd0ZXh0Jzoge1xuICAgICAgICAgICAgbGV0IHZhbCA9IGZpZWxkRGF0YVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBmaWVsZERhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIHZhbCA9IFN0cmluZyhmaWVsZERhdGEpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgbG9jYWxlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICByZWZbbG9jYWxlXSA9IHZhbFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gdmFsXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FzZSAnbnVtYmVyJzoge1xuICAgICAgICAgICAgbGV0IHZhbCA9IGZpZWxkRGF0YVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBmaWVsZERhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIHZhbCA9IE51bWJlci5wYXJzZUZsb2F0KGZpZWxkRGF0YSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBsb2NhbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIHJlZltsb2NhbGVdID0gdmFsXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSB2YWxcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlICdkYXRlJzoge1xuICAgICAgICAgICAgbGV0IHZhbCA9IGZpZWxkRGF0YVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGZpZWxkRGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgdmFsID0gbmV3IERhdGUoZmllbGREYXRhKS50b0lTT1N0cmluZygpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgbG9jYWxlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICByZWZbbG9jYWxlXSA9IHZhbFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gdmFsXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBsb2NhbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIHJlZltsb2NhbGVdID0gZmllbGREYXRhXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXN1bHRbZmllbGQubmFtZV0gPSBmaWVsZERhdGFcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIGlmIChPYmplY3Qua2V5cyhsb2NhbGl6ZWRGaWVsZERhdGEpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0W2ZpZWxkLm5hbWVdID0gbG9jYWxpemVkRmllbGREYXRhXG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH0sIGRhdGFSZWYpXG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodGFibGUuX2xvY2FsZXMpKSB7XG4gICAgZGVsZXRpb25zLnB1c2goKCkgPT4gZGVsZXRlIHRhYmxlLl9sb2NhbGVzKVxuICB9XG5cbiAgcmV0dXJuIGZvcm1hdHRlZCBhcyBUXG59XG4iXSwibmFtZXMiOlsidHJhdmVyc2VGaWVsZHMiLCJibG9ja3MiLCJjb25maWciLCJkYXRhUmVmIiwiZGVsZXRpb25zIiwiZmllbGRQcmVmaXgiLCJmaWVsZHMiLCJudW1iZXJzIiwicGF0aCIsInJlbGF0aW9uc2hpcHMiLCJ0YWJsZSIsInRleHRzIiwid2l0aGluQXJyYXlPckJsb2NrTG9jYWxlIiwic2FuaXRpemVkUGF0aCIsImZvcm1hdHRlZCIsInJlZHVjZSIsInJlc3VsdCIsImZpZWxkIiwidHlwZSIsInRhYnMiLCJtYXAiLCJ0YWIiLCJmaWVsZEFmZmVjdHNEYXRhIiwiZmllbGROYW1lIiwibmFtZSIsImZpZWxkRGF0YSIsInB1c2giLCJBcnJheSIsImlzQXJyYXkiLCJsb2NhbGl6ZWQiLCJhcnJheVJlc3VsdCIsInJvdyIsIl9sb2NhbGUiLCJsb2NhbGUiLCJkYXRhIiwiX3V1aWQiLCJpZCIsInJvd1Jlc3VsdCIsIl9vcmRlciIsImFjYyIsImkiLCJibG9ja0ZpZWxkUGF0aCIsImJsb2Nrc0J5UGF0aCIsImZvckVhY2giLCJPYmplY3QiLCJlbnRyaWVzIiwibG9jYWxpemVkQmxvY2tzIiwiYmxvY2siLCJmaW5kIiwic2x1ZyIsImJsb2NrVHlwZSIsImJsb2NrUmVzdWx0IiwibG9jYWxpemF0aW9uIiwibG9jYWxlQ29kZXMiLCJsb2NhbGVJbmRleCIsImxlbmd0aCIsIl9pbmRleCIsInJlbGF0aW9uUGF0aE1hdGNoIiwiaGFzTWFueSIsImxvY2FsZXMiLCJkZWZhdWx0TG9jYWxlIiwicmVsYXRpb25zQnlMb2NhbGUiLCJyZWxhdGlvbnMiLCJ0cmFuc2Zvcm1SZWxhdGlvbnNoaXAiLCJyZWYiLCJ0ZXh0UGF0aE1hdGNoIiwidGV4dHNCeUxvY2FsZSIsInRyYW5zZm9ybUhhc01hbnlUZXh0IiwidGV4dFJvd3MiLCJudW1iZXJQYXRoTWF0Y2giLCJudW1iZXJzQnlMb2NhbGUiLCJ0cmFuc2Zvcm1IYXNNYW55TnVtYmVyIiwibnVtYmVyUm93cyIsInNlbGVjdFJlc3VsdCIsInZhbHVlIiwic2VsZWN0RGF0YSIsImZpbHRlciIsImxvY2FsaXplZEZpZWxkRGF0YSIsInZhbHVlc1RvVHJhbnNmb3JtIiwiX2xvY2FsZXMiLCJsb2NhbGVSb3ciLCJncm91cEZpZWxkUHJlZml4IiwiZ3JvdXBEYXRhIiwicmVmS2V5IiwidmFsIiwiU3RyaW5nIiwiTnVtYmVyIiwicGFyc2VGbG9hdCIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsImtleXMiXSwicmFuZ2VNYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7Ozs7K0JBaUV2QkE7OztlQUFBQTs7O3VCQTdEb0I7K0JBSU07NkJBQ0Y7OEJBQ0M7QUF1RC9CLE1BQU1BLGlCQUFpQixDQUFvQyxFQUNoRUMsTUFBTSxFQUNOQyxNQUFNLEVBQ05DLE9BQU8sRUFDUEMsU0FBUyxFQUNUQyxXQUFXLEVBQ1hDLE1B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
|
@@ -20,7 +20,12 @@ type Args = {
|
|
20
20
|
[tableName: string]: Record<string, unknown>[];
|
21
21
|
};
|
22
22
|
texts: Record<string, unknown>[];
|
23
|
+
/**
|
24
|
+
* Set to a locale code if this set of fields is traversed within a
|
25
|
+
* localized array or block field
|
26
|
+
*/
|
27
|
+
withinArrayOrBlockLocale?: string;
|
23
28
|
};
|
24
|
-
export declare const transformArray: ({ adapter, arrayTableName, baseTableName, blocks, blocksToDelete, data, field, locale, numbers, path, relationships, relationshipsToDelete, selects, texts, }: Args) => ArrayRowToInsert[];
|
29
|
+
export declare const transformArray: ({ adapter, arrayTableName, baseTableName, blocks, blocksToDelete, data, field, locale, numbers, path, relationships, relationshipsToDelete, selects, texts, withinArrayOrBlockLocale, }: Args) => ArrayRowToInsert[];
|
25
30
|
export {};
|
26
31
|
//# sourceMappingURL=array.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../../src/transform/write/array.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAKvF,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE;QACN,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,CAAA;IACD,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,UAAU,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACxC,qBAAqB,EAAE,oBAAoB,EAAE,CAAA;IAC7C,OAAO,EAAE;QACP,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;KAC/C,CAAA;IACD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;
|
1
|
+
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../../src/transform/write/array.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAKvF,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE;QACN,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;KACxC,CAAA;IACD,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,UAAU,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACxC,qBAAqB,EAAE,oBAAoB,EAAE,CAAA;IAC7C,OAAO,EAAE;QACP,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;KAC/C,CAAA;IACD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAChC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,cAAc,4LAgBxB,IAAI,uBAkEN,CAAA"}
|