payload 3.0.0-alpha.2 → 3.0.0-alpha.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin.js +40 -1
- package/components.d.ts +14 -0
- package/components.js +71 -0
- package/dist/admin/forms/Form.d.ts +22 -0
- package/dist/admin/forms/Form.d.ts.map +1 -1
- package/dist/admin/types.d.ts +2 -1
- package/dist/admin/types.d.ts.map +1 -1
- package/dist/admin/views/types.d.ts +41 -0
- package/dist/admin/views/types.d.ts.map +1 -0
- package/dist/admin/views/types.js +6 -0
- package/dist/bin/index.js +2 -35
- package/dist/collections/config/types.d.ts +5 -5
- package/dist/collections/config/types.d.ts.map +1 -1
- package/dist/config/createClientConfig.d.ts.map +1 -1
- package/dist/config/createClientConfig.js +9 -1
- package/dist/config/load.d.ts +1 -3
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +3 -17
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +7 -1
- package/dist/config/types.d.ts +12 -21
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +1 -1
- package/dist/database/migrations/readMigrationFiles.d.ts.map +1 -1
- package/dist/database/migrations/readMigrationFiles.js +3 -2
- package/dist/database/types.d.ts +5 -2
- package/dist/database/types.d.ts.map +1 -1
- package/dist/exports/components/utilities.d.ts +0 -1
- package/dist/express/middleware/errorHandler.d.ts +0 -1
- package/dist/express/middleware/index.d.ts +0 -1
- package/dist/fields/validations.spec.js +21 -11
- package/dist/globals/config/build.d.ts +0 -1
- package/dist/globals/config/types.d.ts +5 -5
- package/dist/globals/config/types.d.ts.map +1 -1
- package/dist/globals/graphql/resolvers/docAccess.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/uploads/cropImage.d.ts +3 -7
- package/dist/uploads/cropImage.d.ts.map +1 -1
- package/dist/uploads/cropImage.js +3 -9
- package/dist/uploads/generateFileData.d.ts.map +1 -1
- package/dist/uploads/generateFileData.js +10 -8
- package/dist/uploads/imageResizer.d.ts +3 -1
- package/dist/uploads/imageResizer.d.ts.map +1 -1
- package/dist/uploads/imageResizer.js +3 -4
- package/dist/uploads/types.d.ts +7 -1
- package/dist/uploads/types.d.ts.map +1 -1
- package/dist/utilities/logger.d.ts.map +1 -1
- package/dist/utilities/logger.js +11 -6
- package/dist/utilities/pinoPretty.d.ts +1 -0
- package/dist/utilities/pinoPretty.d.ts.map +1 -0
- package/dist/utilities/pinoPretty.js +3 -0
- package/graphql.d.ts +3 -0
- package/graphql.js +27 -0
- package/package.json +17 -5
|
@@ -8,7 +8,13 @@ let options = {
|
|
|
8
8
|
data: undefined,
|
|
9
9
|
operation: 'create',
|
|
10
10
|
siblingData: undefined,
|
|
11
|
-
|
|
11
|
+
req: {
|
|
12
|
+
t,
|
|
13
|
+
context: {},
|
|
14
|
+
payload: {
|
|
15
|
+
config: {}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
12
18
|
};
|
|
13
19
|
describe('Field Validations', ()=>{
|
|
14
20
|
describe('text', ()=>{
|
|
@@ -295,15 +301,19 @@ describe('Field Validations', ()=>{
|
|
|
295
301
|
};
|
|
296
302
|
const relationshipOptions = {
|
|
297
303
|
...options,
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
304
|
+
req: {
|
|
305
|
+
...options.req,
|
|
306
|
+
payload: {
|
|
307
|
+
...options.req.payload,
|
|
308
|
+
config: {
|
|
309
|
+
collections: [
|
|
310
|
+
relationCollection
|
|
311
|
+
]
|
|
312
|
+
},
|
|
313
|
+
collections: {
|
|
314
|
+
relation: {
|
|
315
|
+
config: relationCollection
|
|
316
|
+
}
|
|
307
317
|
}
|
|
308
318
|
}
|
|
309
319
|
},
|
|
@@ -645,4 +655,4 @@ describe('Field Validations', ()=>{
|
|
|
645
655
|
});
|
|
646
656
|
});
|
|
647
657
|
|
|
648
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvdmFsaWRhdGlvbnMuc3BlYy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFZhbGlkYXRlT3B0aW9ucyB9IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBudW1iZXIsIHBhc3N3b3JkLCBwb2ludCwgcmVsYXRpb25zaGlwLCBzZWxlY3QsIHRleHQsIHRleHRhcmVhIH0gZnJvbSAnLi92YWxpZGF0aW9ucydcblxuY29uc3QgdCA9IGplc3QuZm4oKHN0cmluZykgPT4gc3RyaW5nKVxuXG5sZXQgb3B0aW9uczogVmFsaWRhdGVPcHRpb25zPGFueSwgYW55LCBhbnk+ID0ge1xuICBkYXRhOiB1bmRlZmluZWQsXG4gIG9wZXJhdGlvbjogJ2NyZWF0ZScsXG4gIHNpYmxpbmdEYXRhOiB1bmRlZmluZWQsXG4gIHQsXG59XG5cbmRlc2NyaWJlKCdGaWVsZCBWYWxpZGF0aW9ucycsICgpID0+IHtcbiAgZGVzY3JpYmUoJ3RleHQnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9ICd0ZXN0J1xuICAgICAgY29uc3QgcmVzdWx0ID0gdGV4dCh2YWwsIG9wdGlvbnMpXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHNob3cgcmVxdWlyZWQgbWVzc2FnZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IHVuZGVmaW5lZFxuICAgICAgY29uc3QgcmVzdWx0ID0gdGV4dCh2YWwsIHsgLi4ub3B0aW9ucywgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgdW5kZWZpbmVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gdW5kZWZpbmVkXG4gICAgICBjb25zdCByZXN1bHQgPSB0ZXh0KHZhbCwgb3B0aW9ucylcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgbWF4TGVuZ3RoJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gJ3Rvb2xvbmcnXG4gICAgICBjb25zdCByZXN1bHQgPSB0ZXh0KHZhbCwgeyAuLi5vcHRpb25zLCBtYXhMZW5ndGg6IDUgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBtaW5MZW5ndGgnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAnc2hvcnQnXG4gICAgICBjb25zdCByZXN1bHQgPSB0ZXh0KHZhbCwgeyAuLi5vcHRpb25zLCBtaW5MZW5ndGg6IDEwIH0pXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCd2YWxpZGF0aW9uOmxvbmdlclRoYW5NaW4nKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBtYXhMZW5ndGggd2l0aCBubyB2YWx1ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IHVuZGVmaW5lZFxuICAgICAgY29uc3QgcmVzdWx0ID0gdGV4dCh2YWwsIHsgLi4ub3B0aW9ucywgbWF4TGVuZ3RoOiA1IH0pXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIG1pbkxlbmd0aCB3aXRoIG5vIHZhbHVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gdW5kZWZpbmVkXG4gICAgICBjb25zdCByZXN1bHQgPSB0ZXh0KHZhbCwgeyAuLi5vcHRpb25zLCBtaW5MZW5ndGg6IDEwIH0pXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGFuIGFycmF5IG9mIHRleHRzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gWyd0ZXN0J11cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRleHQodmFsLCB7IC4uLm9wdGlvbnMsIGhhc01hbnk6IHRydWUgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgaGFuZGxlIHJlcXVpcmVkIGFycmF5IG9mIHRleHRzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gWyd0ZXN0J11cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRleHQodmFsLCB7IC4uLm9wdGlvbnMsIGhhc01hbnk6IHRydWUsIHJlcXVpcmVkOiB0cnVlIH0pXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpXG4gICAgfSlcbiAgfSlcblxuICBkZXNjcmliZSgndGV4dGFyZWEnLCAoKSA9PiB7XG4gICAgb3B0aW9ucyA9IHsgLi4ub3B0aW9ucywgZmllbGQ6IHsgbmFtZTogJ3Rlc3QnLCB0eXBlOiAndGV4dGFyZWEnIH0gfVxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAndGVzdCdcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRleHRhcmVhKHZhbCwgb3B0aW9ucylcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgc2hvdyByZXF1aXJlZCBtZXNzYWdlJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gdW5kZWZpbmVkXG4gICAgICBjb25zdCByZXN1bHQgPSB0ZXh0YXJlYSh2YWwsIHsgLi4ub3B0aW9ucywgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICAgIH0pXG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSB1bmRlZmluZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSB1bmRlZmluZWRcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRleHRhcmVhKHZhbCwgb3B0aW9ucylcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgbWF4TGVuZ3RoJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gJ3Rvb2xvbmcnXG4gICAgICBjb25zdCByZXN1bHQgPSB0ZXh0YXJlYSh2YWwsIHsgLi4ub3B0aW9ucywgbWF4TGVuZ3RoOiA1IH0pXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCd2YWxpZGF0aW9uOnNob3J0ZXJUaGFuTWF4JylcbiAgICB9KVxuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBtaW5MZW5ndGgnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAnc2hvcnQnXG4gICAgICBjb25zdCByZXN1bHQgPSB0ZXh0YXJlYSh2YWwsIHsgLi4ub3B0aW9ucywgbWluTGVuZ3RoOiAxMCB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgndmFsaWRhdGlvbjpsb25nZXJUaGFuTWluJylcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgbWF4TGVuZ3RoIHdpdGggbm8gdmFsdWUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSB1bmRlZmluZWRcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRleHRhcmVhKHZhbCwgeyAuLi5vcHRpb25zLCBtYXhMZW5ndGg6IDUgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgbWluTGVuZ3RoIHdpdGggbm8gdmFsdWUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSB1bmRlZmluZWRcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRleHRhcmVhKHZhbCwgeyAuLi5vcHRpb25zLCBtaW5MZW5ndGg6IDEwIH0pXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpXG4gICAgfSlcbiAgfSlcblxuICBkZXNjcmliZSgncGFzc3dvcmQnLCAoKSA9PiB7XG4gICAgY29uc3QgcGFzc3dvcmRPcHRpb25zID0ge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG5hbWU6ICd0ZXN0JyxcbiAgICAgIHR5cGU6ICdwYXNzd29yZCcsXG4gICAgfVxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAndGVzdCdcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBhc3N3b3JkKHZhbCwgcGFzc3dvcmRPcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBzaG93IHJlcXVpcmVkIG1lc3NhZ2UnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSB1bmRlZmluZWRcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBhc3N3b3JkKHZhbCwgeyAuLi5wYXNzd29yZE9wdGlvbnMsIHJlcXVpcmVkOiB0cnVlIH0pXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCd2YWxpZGF0aW9uOnJlcXVpcmVkJylcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgaGFuZGxlIHVuZGVmaW5lZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IHVuZGVmaW5lZFxuICAgICAgY29uc3QgcmVzdWx0ID0gcGFzc3dvcmQodmFsLCBwYXNzd29yZE9wdGlvbnMpXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIG1heExlbmd0aCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9ICd0b29sb25nJ1xuICAgICAgY29uc3QgcmVzdWx0ID0gcGFzc3dvcmQodmFsLCB7IC4uLnBhc3N3b3JkT3B0aW9ucywgbWF4TGVuZ3RoOiA1IH0pXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCd2YWxpZGF0aW9uOnNob3J0ZXJUaGFuTWF4JylcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgbWluTGVuZ3RoJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gJ3Nob3J0J1xuICAgICAgY29uc3QgcmVzdWx0ID0gcGFzc3dvcmQodmFsLCB7IC4uLnBhc3N3b3JkT3B0aW9ucywgbWluTGVuZ3RoOiAxMCB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgndmFsaWRhdGlvbjpsb25nZXJUaGFuTWluJylcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgbWF4TGVuZ3RoIHdpdGggbm8gdmFsdWUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSB1bmRlZmluZWRcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBhc3N3b3JkKHZhbCwgeyAuLi5wYXNzd29yZE9wdGlvbnMsIG1heExlbmd0aDogNSB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBtaW5MZW5ndGggd2l0aCBubyB2YWx1ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IHVuZGVmaW5lZFxuICAgICAgY29uc3QgcmVzdWx0ID0gcGFzc3dvcmQodmFsLCB7IC4uLnBhc3N3b3JkT3B0aW9ucywgbWluTGVuZ3RoOiAxMCB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKVxuICAgIH0pXG4gIH0pXG5cbiAgZGVzY3JpYmUoJ3BvaW50JywgKCkgPT4ge1xuICAgIGNvbnN0IHBvaW50T3B0aW9ucyA9IHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBuYW1lOiAncG9pbnQnLFxuICAgICAgdHlwZTogJ3BvaW50JyxcbiAgICB9XG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBudW1iZXJzJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gWycwLjEnLCAnMC4yJ11cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBvaW50KHZhbCwgcG9pbnRPcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBzdHJpbmdzIHRoYXQgY291bGQgYmUgbnVtYmVycycsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IFsnMC4xJywgJzAuMiddXG4gICAgICBjb25zdCByZXN1bHQgPSBwb2ludCh2YWwsIHBvaW50T3B0aW9ucylcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgc2hvdyByZXF1aXJlZCBtZXNzYWdlIHdoZW4gdW5kZWZpbmVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gdW5kZWZpbmVkXG4gICAgICBjb25zdCByZXN1bHQgPSBwb2ludCh2YWwsIHsgLi4ucG9pbnRPcHRpb25zLCByZXF1aXJlZDogdHJ1ZSB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkubm90LnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgc2hvdyByZXF1aXJlZCBtZXNzYWdlIHdoZW4gYXJyYXknLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBbXVxuICAgICAgY29uc3QgcmVzdWx0ID0gcG9pbnQodmFsLCB7IC4uLnBvaW50T3B0aW9ucywgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLm5vdC50b0JlKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHNob3cgcmVxdWlyZWQgbWVzc2FnZSB3aGVuIGFycmF5IG9mIHVuZGVmaW5lZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IFt1bmRlZmluZWQsIHVuZGVmaW5lZF1cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBvaW50KHZhbCwgeyAuLi5wb2ludE9wdGlvbnMsIHJlcXVpcmVkOiB0cnVlIH0pXG4gICAgICBleHBlY3QocmVzdWx0KS5ub3QudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgdW5kZWZpbmVkIG5vdCByZXF1aXJlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IHVuZGVmaW5lZFxuICAgICAgY29uc3QgcmVzdWx0ID0gcGFzc3dvcmQodmFsLCBwb2ludE9wdGlvbnMpXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBlbXB0eSBhcnJheSBub3QgcmVxdWlyZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBbXVxuICAgICAgY29uc3QgcmVzdWx0ID0gcG9pbnQodmFsLCBwb2ludE9wdGlvbnMpXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBhcnJheSBvZiB1bmRlZmluZWQgbm90IHJlcXVpcmVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gW3VuZGVmaW5lZCwgdW5kZWZpbmVkXVxuICAgICAgY29uc3QgcmVzdWx0ID0gcG9pbnQodmFsLCBwb2ludE9wdGlvbnMpXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHByZXZlbnQgdGV4dCBpbnB1dCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IFsnYmFkJywgJ2lucHV0J11cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBvaW50KHZhbCwgcG9pbnRPcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkubm90LnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgcHJldmVudCBtaXNzaW5nIHZhbHVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gWzAuMV1cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBvaW50KHZhbCwgcG9pbnRPcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkubm90LnRvQmUodHJ1ZSlcbiAgICB9KVxuICB9KVxuXG4gIGRlc2NyaWJlKCdyZWxhdGlvbnNoaXAnLCAoKSA9PiB7XG4gICAgY29uc3QgcmVsYXRpb25Db2xsZWN0aW9uID0ge1xuICAgICAgZmllbGRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAnaWQnLFxuICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBzbHVnOiAncmVsYXRpb24nLFxuICAgIH1cblxuICAgIGNvbnN0IHJlbGF0aW9uc2hpcE9wdGlvbnMgPSB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIGNvbGxlY3Rpb25zOiBbcmVsYXRpb25Db2xsZWN0aW9uXSxcbiAgICAgIH0sXG4gICAgICBwYXlsb2FkOiB7XG4gICAgICAgIGNvbGxlY3Rpb25zOiB7XG4gICAgICAgICAgcmVsYXRpb246IHtcbiAgICAgICAgICAgIGNvbmZpZzogcmVsYXRpb25Db2xsZWN0aW9uLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgcmVsYXRpb25UbzogJ3JlbGF0aW9uJyxcbiAgICB9XG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgcmVxdWlyZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSB1bmRlZmluZWRcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlbGF0aW9uc2hpcCh2YWwsIHsgLi4ucmVsYXRpb25zaGlwT3B0aW9ucywgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLm5vdC50b0JlKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIGhhbmRsZSByZXF1aXJlZCB3aXRoIGhhc01hbnknLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBbXVxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVsYXRpb25zaGlwKHZhbCwge1xuICAgICAgICAuLi5yZWxhdGlvbnNoaXBPcHRpb25zLFxuICAgICAgICBoYXNNYW55OiB0cnVlLFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIH0pXG4gICAgICBleHBlY3QocmVzdWx0KS5ub3QudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBlbmZvcmNlIGhhc01hbnkgbWluJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgbWluT3B0aW9ucyA9IHtcbiAgICAgICAgLi4ucmVsYXRpb25zaGlwT3B0aW9ucyxcbiAgICAgICAgaGFzTWFueTogdHJ1ZSxcbiAgICAgICAgbWluUm93czogMixcbiAgICAgIH1cblxuICAgICAgY29uc3QgdmFsID0gWydhJ11cblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVsYXRpb25zaGlwKHZhbCwgbWluT3B0aW9ucylcbiAgICAgIGV4cGVjdChyZXN1bHQpLm5vdC50b0JlKHRydWUpXG5cbiAgICAgIGNvbnN0IGFsbG93ZWQgPSBhd2FpdCByZWxhdGlvbnNoaXAoWydhJywgJ2InXSwgbWluT3B0aW9ucylcbiAgICAgIGV4cGVjdChhbGxvd2VkKS50b1N0cmljdEVxdWFsKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIGVuZm9yY2UgaGFzTWFueSBtYXgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBtYXhPcHRpb25zID0ge1xuICAgICAgICAuLi5yZWxhdGlvbnNoaXBPcHRpb25zLFxuICAgICAgICBoYXNNYW55OiB0cnVlLFxuICAgICAgICBtYXhSb3dzOiAyLFxuICAgICAgfVxuICAgICAgbGV0IHZhbCA9IFsnYScsICdiJywgJ2MnXVxuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZWxhdGlvbnNoaXAodmFsLCBtYXhPcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkubm90LnRvQmUodHJ1ZSlcblxuICAgICAgdmFsID0gWydhJ11cbiAgICAgIGNvbnN0IGFsbG93ZWQgPSBhd2FpdCByZWxhdGlvbnNoaXAodmFsLCBtYXhPcHRpb25zKVxuICAgICAgZXhwZWN0KGFsbG93ZWQpLnRvU3RyaWN0RXF1YWwodHJ1ZSlcbiAgICB9KVxuICB9KVxuXG4gIGRlc2NyaWJlKCdzZWxlY3QnLCAoKSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0T3B0aW9ucyA9IHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBvcHRpb25zOiBbJ29uZScsICd0d28nLCAndGhyZWUnXSxcbiAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgIH1cbiAgICBjb25zdCBvcHRpb25zUmVxdWlyZWQgPSB7XG4gICAgICAuLi5zZWxlY3RPcHRpb25zLFxuICAgICAgb3B0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6ICdPbmUnLFxuICAgICAgICAgIHZhbHVlOiAnb25lJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiAndHdvJyxcbiAgICAgICAgICB2YWx1ZTogJ3R3bycsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ3RocmVlJyxcbiAgICAgICAgICB2YWx1ZTogJ3RocmVlJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9XG4gICAgY29uc3Qgb3B0aW9uc1dpdGhFbXB0eVN0cmluZyA9IHtcbiAgICAgIC4uLnNlbGVjdE9wdGlvbnMsXG4gICAgICBvcHRpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ05vbmUnLFxuICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiAnT3B0aW9uJyxcbiAgICAgICAgICB2YWx1ZTogJ29wdGlvbicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH1cbiAgICBpdCgnc2hvdWxkIGFsbG93IHZhbGlkIGlucHV0JywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gJ29uZSdcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNlbGVjdCh2YWwsIHNlbGVjdE9wdGlvbnMpXG4gICAgICBleHBlY3QocmVzdWx0KS50b1N0cmljdEVxdWFsKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHByZXZlbnQgaW52YWxpZCBpbnB1dCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9ICdiYWQnXG4gICAgICBjb25zdCByZXN1bHQgPSBzZWxlY3QodmFsLCBzZWxlY3RPcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkubm90LnRvU3RyaWN0RXF1YWwodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgYWxsb3cgbnVsbCBpbnB1dCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IG51bGxcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNlbGVjdCh2YWwsIHNlbGVjdE9wdGlvbnMpXG4gICAgICBleHBlY3QocmVzdWx0KS50b1N0cmljdEVxdWFsKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIGFsbG93IHVuZGVmaW5lZCBpbnB1dCcsICgpID0+IHtcbiAgICAgIGxldCB2YWxcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNlbGVjdCh2YWwsIHNlbGVjdE9wdGlvbnMpXG4gICAgICBleHBlY3QocmVzdWx0KS50b1N0cmljdEVxdWFsKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHByZXZlbnQgZW1wdHkgc3RyaW5nIGlucHV0JywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gJydcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNlbGVjdCh2YWwsIHNlbGVjdE9wdGlvbnMpXG4gICAgICBleHBlY3QocmVzdWx0KS5ub3QudG9TdHJpY3RFcXVhbCh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBwcmV2ZW50IHVuZGVmaW5lZCBpbnB1dCB3aXRoIHJlcXVpcmVkJywgKCkgPT4ge1xuICAgICAgbGV0IHZhbFxuICAgICAgY29uc3QgcmVzdWx0ID0gc2VsZWN0KHZhbCwgb3B0aW9uc1JlcXVpcmVkKVxuICAgICAgZXhwZWN0KHJlc3VsdCkubm90LnRvU3RyaWN0RXF1YWwodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgcHJldmVudCBlbXB0eSBzdHJpbmcgaW5wdXQgd2l0aCByZXF1aXJlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNlbGVjdCgnJywgb3B0aW9uc1JlcXVpcmVkKVxuICAgICAgZXhwZWN0KHJlc3VsdCkubm90LnRvU3RyaWN0RXF1YWwodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgcHJldmVudCB1bmRlZmluZWQgaW5wdXQgd2l0aCByZXF1aXJlZCBhbmQgaGFzTWFueScsICgpID0+IHtcbiAgICAgIGxldCB2YWxcbiAgICAgIG9wdGlvbnMuaGFzTWFueSA9IHRydWVcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNlbGVjdCh2YWwsIG9wdGlvbnNSZXF1aXJlZClcbiAgICAgIGV4cGVjdChyZXN1bHQpLm5vdC50b1N0cmljdEVxdWFsKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHByZXZlbnQgZW1wdHkgYXJyYXkgaW5wdXQgd2l0aCByZXF1aXJlZCBhbmQgaGFzTWFueScsICgpID0+IHtcbiAgICAgIG9wdGlvbnNSZXF1aXJlZC5oYXNNYW55ID0gdHJ1ZVxuICAgICAgY29uc3QgcmVzdWx0ID0gc2VsZWN0KFtdLCBvcHRpb25zUmVxdWlyZWQpXG4gICAgICBleHBlY3QocmVzdWx0KS5ub3QudG9TdHJpY3RFcXVhbCh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBwcmV2ZW50IGVtcHR5IHN0cmluZyBhcnJheSBpbnB1dCB3aXRoIHJlcXVpcmVkIGFuZCBoYXNNYW55JywgKCkgPT4ge1xuICAgICAgb3B0aW9ucy5oYXNNYW55ID0gdHJ1ZVxuICAgICAgY29uc3QgcmVzdWx0ID0gc2VsZWN0KFsnJ10sIG9wdGlvbnNSZXF1aXJlZClcbiAgICAgIGV4cGVjdChyZXN1bHQpLm5vdC50b1N0cmljdEVxdWFsKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHByZXZlbnQgbnVsbCBpbnB1dCB3aXRoIHJlcXVpcmVkIGFuZCBoYXNNYW55JywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gbnVsbFxuICAgICAgb3B0aW9ucy5oYXNNYW55ID0gdHJ1ZVxuICAgICAgY29uc3QgcmVzdWx0ID0gc2VsZWN0KHZhbCwgb3B0aW9uc1JlcXVpcmVkKVxuICAgICAgZXhwZWN0KHJlc3VsdCkubm90LnRvU3RyaWN0RXF1YWwodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgYWxsb3cgdmFsaWQgaW5wdXQgd2l0aCBvcHRpb24gb2JqZWN0cycsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9ICdvbmUnXG4gICAgICBvcHRpb25zLmhhc01hbnkgPSBmYWxzZVxuICAgICAgY29uc3QgcmVzdWx0ID0gc2VsZWN0KHZhbCwgb3B0aW9uc1JlcXVpcmVkKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9TdHJpY3RFcXVhbCh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBwcmV2ZW50IGludmFsaWQgaW5wdXQgd2l0aCBvcHRpb24gb2JqZWN0cycsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9ICdiYWQnXG4gICAgICBvcHRpb25zLmhhc01hbnkgPSBmYWxzZVxuICAgICAgY29uc3QgcmVzdWx0ID0gc2VsZWN0KHZhbCwgb3B0aW9uc1JlcXVpcmVkKVxuICAgICAgZXhwZWN0KHJlc3VsdCkubm90LnRvU3RyaWN0RXF1YWwodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgYWxsb3cgZW1wdHkgc3RyaW5nIGlucHV0IHdpdGggb3B0aW9uIG9iamVjdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9ICcnXG4gICAgICBjb25zdCByZXN1bHQgPSBzZWxlY3QodmFsLCBvcHRpb25zV2l0aEVtcHR5U3RyaW5nKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9TdHJpY3RFcXVhbCh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBhbGxvdyBlbXB0eSBzdHJpbmcgaW5wdXQgd2l0aCBvcHRpb24gb2JqZWN0IGFuZCByZXF1aXJlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9ICcnXG4gICAgICBvcHRpb25zV2l0aEVtcHR5U3RyaW5nLnJlcXVpcmVkID0gdHJ1ZVxuICAgICAgY29uc3QgcmVzdWx0ID0gc2VsZWN0KHZhbCwgb3B0aW9uc1dpdGhFbXB0eVN0cmluZylcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvU3RyaWN0RXF1YWwodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgYWxsb3cgdmFsaWQgaW5wdXQgd2l0aCBoYXNNYW55JywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gWydvbmUnLCAndHdvJ11cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNlbGVjdCh2YWwsIHNlbGVjdE9wdGlvbnMpXG4gICAgICBleHBlY3QocmVzdWx0KS50b1N0cmljdEVxdWFsKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHByZXZlbnQgaW52YWxpZCBpbnB1dCB3aXRoIGhhc01hbnknLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBbJ29uZScsICdiYWQnXVxuICAgICAgY29uc3QgcmVzdWx0ID0gc2VsZWN0KHZhbCwgc2VsZWN0T3B0aW9ucylcbiAgICAgIGV4cGVjdChyZXN1bHQpLm5vdC50b1N0cmljdEVxdWFsKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIGFsbG93IHZhbGlkIGlucHV0IHdpdGggaGFzTWFueSBvcHRpb24gb2JqZWN0cycsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IFsnb25lJywgJ3RocmVlJ11cbiAgICAgIG9wdGlvbnNSZXF1aXJlZC5oYXNNYW55ID0gdHJ1ZVxuICAgICAgY29uc3QgcmVzdWx0ID0gc2VsZWN0KHZhbCwgb3B0aW9uc1JlcXVpcmVkKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9TdHJpY3RFcXVhbCh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBwcmV2ZW50IGludmFsaWQgaW5wdXQgd2l0aCBoYXNNYW55IG9wdGlvbiBvYmplY3RzJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gWyd0aHJlZScsICdiYWQnXVxuICAgICAgb3B0aW9uc1JlcXVpcmVkLmhhc01hbnkgPSB0cnVlXG4gICAgICBjb25zdCByZXN1bHQgPSBzZWxlY3QodmFsLCBvcHRpb25zUmVxdWlyZWQpXG4gICAgICBleHBlY3QocmVzdWx0KS5ub3QudG9TdHJpY3RFcXVhbCh0cnVlKVxuICAgIH0pXG4gIH0pXG4gIGRlc2NyaWJlKCdudW1iZXInLCAoKSA9PiB7XG4gICAgY29uc3QgbnVtYmVyT3B0aW9ucyA9IHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBuYW1lOiAndGVzdCcsXG4gICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICB9XG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IDFcbiAgICAgIGNvbnN0IHJlc3VsdCA9IG51bWJlcih2YWwsIG51bWJlck9wdGlvbnMpXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIDAnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAwXG4gICAgICBjb25zdCByZXN1bHQgPSBudW1iZXIodmFsLCB7IC4uLm51bWJlck9wdGlvbnMsIHJlcXVpcmVkOiB0cnVlIH0pXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIDInLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAxLjVcbiAgICAgIGNvbnN0IHJlc3VsdCA9IG51bWJlcih2YWwsIG51bWJlck9wdGlvbnMpXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHNob3cgaW52YWxpZCBudW1iZXIgbWVzc2FnZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9ICd0ZXN0J1xuICAgICAgY29uc3QgcmVzdWx0ID0gbnVtYmVyKHZhbCwgeyAuLi5udW1iZXJPcHRpb25zIH0pXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCd2YWxpZGF0aW9uOmVudGVyTnVtYmVyJylcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGVtcHR5IHZhbHVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gJydcbiAgICAgIGNvbnN0IHJlc3VsdCA9IG51bWJlcih2YWwsIHsgLi4ubnVtYmVyT3B0aW9ucyB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgcmVxdWlyZWQgdmFsdWUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAnJ1xuICAgICAgY29uc3QgcmVzdWx0ID0gbnVtYmVyKHZhbCwgeyAuLi5udW1iZXJPcHRpb25zLCByZXF1aXJlZDogdHJ1ZSB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIG1pblZhbHVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gMi40XG4gICAgICBjb25zdCByZXN1bHQgPSBudW1iZXIodmFsLCB7IC4uLm51bWJlck9wdGlvbnMsIG1pbjogMi41IH0pXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCd2YWxpZGF0aW9uOmxlc3NUaGFuTWluJylcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgbWF4VmFsdWUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAxLjI1XG4gICAgICBjb25zdCByZXN1bHQgPSBudW1iZXIodmFsLCB7IC4uLm51bWJlck9wdGlvbnMsIG1heDogMSB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgndmFsaWRhdGlvbjpncmVhdGVyVGhhbk1heCcpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGFuIGFycmF5IG9mIG51bWJlcnMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBbMS4yNSwgMi41XVxuICAgICAgY29uc3QgcmVzdWx0ID0gbnVtYmVyKHZhbCwgeyAuLi5udW1iZXJPcHRpb25zLCBoYXNNYW55OiB0cnVlIH0pXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGFuIGFycmF5IG9mIG51bWJlcnMgdXNpbmcgbWluJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gWzEuMjUsIDIuNV1cbiAgICAgIGNvbnN0IHJlc3VsdCA9IG51bWJlcih2YWwsIHsgLi4ubnVtYmVyT3B0aW9ucywgaGFzTWFueTogdHJ1ZSwgbWluOiAzIH0pXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCd2YWxpZGF0aW9uOmxlc3NUaGFuTWluJylcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYW4gYXJyYXkgb2YgbnVtYmVycyB1c2luZyBtYXgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBbMS4yNSwgMi41XVxuICAgICAgY29uc3QgcmVzdWx0ID0gbnVtYmVyKHZhbCwgeyAuLi5udW1iZXJPcHRpb25zLCBoYXNNYW55OiB0cnVlLCBtYXg6IDEgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ3ZhbGlkYXRpb246Z3JlYXRlclRoYW5NYXgnKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBhbiBhcnJheSBvZiBudW1iZXJzIHVzaW5nIG1pblJvd3MnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBbMS4yNSwgMi41XVxuICAgICAgY29uc3QgcmVzdWx0ID0gbnVtYmVyKHZhbCwgeyAuLi5udW1iZXJPcHRpb25zLCBoYXNNYW55OiB0cnVlLCBtaW5Sb3dzOiA0IH0pXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCd2YWxpZGF0aW9uOnJlcXVpcmVzQXRMZWFzdCcpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGFuIGFycmF5IG9mIG51bWJlcnMgdXNpbmcgbWF4Um93cycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IFsxLjI1LCAyLjUsIDMuNV1cbiAgICAgIGNvbnN0IHJlc3VsdCA9IG51bWJlcih2YWwsIHsgLi4ubnVtYmVyT3B0aW9ucywgaGFzTWFueTogdHJ1ZSwgbWF4Um93czogMiB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgndmFsaWRhdGlvbjpyZXF1aXJlc05vTW9yZVRoYW4nKVxuICAgIH0pXG4gIH0pXG59KVxuIl0sIm5hbWVzIjpbInQiLCJqZXN0IiwiZm4iLCJzdHJpbmciLCJvcHRpb25zIiwiZGF0YSIsInVuZGVmaW5lZCIsIm9wZXJhdGlvbiIsInNpYmxpbmdEYXRhIiwiZGVzY3JpYmUiLCJpdCIsInZhbCIsInJlc3VsdCIsInRleHQiLCJleHBlY3QiLCJ0b0JlIiwicmVxdWlyZWQiLCJtYXhMZW5ndGgiLCJtaW5MZW5ndGgiLCJoYXNNYW55IiwiZmllbGQiLCJuYW1lIiwidHlwZSIsInRleHRhcmVhIiwicGFzc3dvcmRPcHRpb25zIiwicGFzc3dvcmQiLCJwb2ludE9wdGlvbnMiLCJwb2ludCIsIm5vdCIsInJlbGF0aW9uQ29sbGVjdGlvbiIsImZpZWxkcyIsInNsdWciLCJyZWxhdGlvbnNoaXBPcHRpb25zIiwiY29uZmlnIiwiY29sbGVjdGlvbnMiLCJwYXlsb2FkIiwicmVsYXRpb24iLCJyZWxhdGlvblRvIiwicmVsYXRpb25zaGlwIiwibWluT3B0aW9ucyIsIm1pblJvd3MiLCJhbGxvd2VkIiwidG9TdHJpY3RFcXVhbCIsIm1heE9wdGlvbnMiLCJtYXhSb3dzIiwic2VsZWN0T3B0aW9ucyIsIm9wdGlvbnNSZXF1aXJlZCIsImxhYmVsIiwidmFsdWUiLCJvcHRpb25zV2l0aEVtcHR5U3RyaW5nIiwic2VsZWN0IiwibnVtYmVyT3B0aW9ucyIsIm51bWJlciIsIm1pbiIsIm1heCJdLCJtYXBwaW5ncyI6Ijs7Ozs2QkFFOEU7QUFFOUUsTUFBTUEsSUFBSUMsS0FBS0MsRUFBRSxDQUFDLENBQUNDLFNBQVdBO0FBRTlCLElBQUlDLFVBQTBDO0lBQzVDQyxNQUFNQztJQUNOQyxXQUFXO0lBQ1hDLGFBQWFGO0lBQ2JOO0FBQ0Y7QUFFQVMsU0FBUyxxQkFBcUI7SUFDNUJBLFNBQVMsUUFBUTtR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
|
|
658
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvdmFsaWRhdGlvbnMuc3BlYy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFZhbGlkYXRlT3B0aW9ucyB9IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuXG5pbXBvcnQgeyBudW1iZXIsIHBhc3N3b3JkLCBwb2ludCwgcmVsYXRpb25zaGlwLCBzZWxlY3QsIHRleHQsIHRleHRhcmVhIH0gZnJvbSAnLi92YWxpZGF0aW9ucydcblxuY29uc3QgdCA9IGplc3QuZm4oKHN0cmluZykgPT4gc3RyaW5nKVxuXG5sZXQgb3B0aW9uczogVmFsaWRhdGVPcHRpb25zPGFueSwgYW55PiA9IHtcbiAgZGF0YTogdW5kZWZpbmVkLFxuICBvcGVyYXRpb246ICdjcmVhdGUnLFxuICBzaWJsaW5nRGF0YTogdW5kZWZpbmVkLFxuICByZXE6IHtcbiAgICB0LFxuICAgIGNvbnRleHQ6IHt9LFxuICAgIHBheWxvYWQ6IHtcbiAgICAgIGNvbmZpZzoge30sXG4gICAgfSxcbiAgfSxcbn1cblxuZGVzY3JpYmUoJ0ZpZWxkIFZhbGlkYXRpb25zJywgKCkgPT4ge1xuICBkZXNjcmliZSgndGV4dCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gJ3Rlc3QnXG4gICAgICBjb25zdCByZXN1bHQgPSB0ZXh0KHZhbCwgb3B0aW9ucylcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgc2hvdyByZXF1aXJlZCBtZXNzYWdlJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gdW5kZWZpbmVkXG4gICAgICBjb25zdCByZXN1bHQgPSB0ZXh0KHZhbCwgeyAuLi5vcHRpb25zLCByZXF1aXJlZDogdHJ1ZSB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIGhhbmRsZSB1bmRlZmluZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSB1bmRlZmluZWRcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRleHQodmFsLCBvcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBtYXhMZW5ndGgnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAndG9vbG9uZydcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRleHQodmFsLCB7IC4uLm9wdGlvbnMsIG1heExlbmd0aDogNSB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgndmFsaWRhdGlvbjpzaG9ydGVyVGhhbk1heCcpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIG1pbkxlbmd0aCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9ICdzaG9ydCdcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRleHQodmFsLCB7IC4uLm9wdGlvbnMsIG1pbkxlbmd0aDogMTAgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ3ZhbGlkYXRpb246bG9uZ2VyVGhhbk1pbicpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIG1heExlbmd0aCB3aXRoIG5vIHZhbHVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gdW5kZWZpbmVkXG4gICAgICBjb25zdCByZXN1bHQgPSB0ZXh0KHZhbCwgeyAuLi5vcHRpb25zLCBtYXhMZW5ndGg6IDUgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgbWluTGVuZ3RoIHdpdGggbm8gdmFsdWUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSB1bmRlZmluZWRcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRleHQodmFsLCB7IC4uLm9wdGlvbnMsIG1pbkxlbmd0aDogMTAgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYW4gYXJyYXkgb2YgdGV4dHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBbJ3Rlc3QnXVxuICAgICAgY29uc3QgcmVzdWx0ID0gdGV4dCh2YWwsIHsgLi4ub3B0aW9ucywgaGFzTWFueTogdHJ1ZSB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgcmVxdWlyZWQgYXJyYXkgb2YgdGV4dHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBbJ3Rlc3QnXVxuICAgICAgY29uc3QgcmVzdWx0ID0gdGV4dCh2YWwsIHsgLi4ub3B0aW9ucywgaGFzTWFueTogdHJ1ZSwgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSlcbiAgICB9KVxuICB9KVxuXG4gIGRlc2NyaWJlKCd0ZXh0YXJlYScsICgpID0+IHtcbiAgICBvcHRpb25zID0geyAuLi5vcHRpb25zLCBmaWVsZDogeyBuYW1lOiAndGVzdCcsIHR5cGU6ICd0ZXh0YXJlYScgfSB9XG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9ICd0ZXN0J1xuICAgICAgY29uc3QgcmVzdWx0ID0gdGV4dGFyZWEodmFsLCBvcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBzaG93IHJlcXVpcmVkIG1lc3NhZ2UnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSB1bmRlZmluZWRcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRleHRhcmVhKHZhbCwgeyAuLi5vcHRpb25zLCByZXF1aXJlZDogdHJ1ZSB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgndmFsaWRhdGlvbjpyZXF1aXJlZCcpXG4gICAgfSlcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIHVuZGVmaW5lZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IHVuZGVmaW5lZFxuICAgICAgY29uc3QgcmVzdWx0ID0gdGV4dGFyZWEodmFsLCBvcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBtYXhMZW5ndGgnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAndG9vbG9uZydcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRleHRhcmVhKHZhbCwgeyAuLi5vcHRpb25zLCBtYXhMZW5ndGg6IDUgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnKVxuICAgIH0pXG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIG1pbkxlbmd0aCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9ICdzaG9ydCdcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRleHRhcmVhKHZhbCwgeyAuLi5vcHRpb25zLCBtaW5MZW5ndGg6IDEwIH0pXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCd2YWxpZGF0aW9uOmxvbmdlclRoYW5NaW4nKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBtYXhMZW5ndGggd2l0aCBubyB2YWx1ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IHVuZGVmaW5lZFxuICAgICAgY29uc3QgcmVzdWx0ID0gdGV4dGFyZWEodmFsLCB7IC4uLm9wdGlvbnMsIG1heExlbmd0aDogNSB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBtaW5MZW5ndGggd2l0aCBubyB2YWx1ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IHVuZGVmaW5lZFxuICAgICAgY29uc3QgcmVzdWx0ID0gdGV4dGFyZWEodmFsLCB7IC4uLm9wdGlvbnMsIG1pbkxlbmd0aDogMTAgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSlcbiAgICB9KVxuICB9KVxuXG4gIGRlc2NyaWJlKCdwYXNzd29yZCcsICgpID0+IHtcbiAgICBjb25zdCBwYXNzd29yZE9wdGlvbnMgPSB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgbmFtZTogJ3Rlc3QnLFxuICAgICAgdHlwZTogJ3Bhc3N3b3JkJyxcbiAgICB9XG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9ICd0ZXN0J1xuICAgICAgY29uc3QgcmVzdWx0ID0gcGFzc3dvcmQodmFsLCBwYXNzd29yZE9wdGlvbnMpXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHNob3cgcmVxdWlyZWQgbWVzc2FnZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IHVuZGVmaW5lZFxuICAgICAgY29uc3QgcmVzdWx0ID0gcGFzc3dvcmQodmFsLCB7IC4uLnBhc3N3b3JkT3B0aW9ucywgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgdW5kZWZpbmVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gdW5kZWZpbmVkXG4gICAgICBjb25zdCByZXN1bHQgPSBwYXNzd29yZCh2YWwsIHBhc3N3b3JkT3B0aW9ucylcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgbWF4TGVuZ3RoJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gJ3Rvb2xvbmcnXG4gICAgICBjb25zdCByZXN1bHQgPSBwYXNzd29yZCh2YWwsIHsgLi4ucGFzc3dvcmRPcHRpb25zLCBtYXhMZW5ndGg6IDUgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ3ZhbGlkYXRpb246c2hvcnRlclRoYW5NYXgnKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBtaW5MZW5ndGgnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAnc2hvcnQnXG4gICAgICBjb25zdCByZXN1bHQgPSBwYXNzd29yZCh2YWwsIHsgLi4ucGFzc3dvcmRPcHRpb25zLCBtaW5MZW5ndGg6IDEwIH0pXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCd2YWxpZGF0aW9uOmxvbmdlclRoYW5NaW4nKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBtYXhMZW5ndGggd2l0aCBubyB2YWx1ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IHVuZGVmaW5lZFxuICAgICAgY29uc3QgcmVzdWx0ID0gcGFzc3dvcmQodmFsLCB7IC4uLnBhc3N3b3JkT3B0aW9ucywgbWF4TGVuZ3RoOiA1IH0pXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIG1pbkxlbmd0aCB3aXRoIG5vIHZhbHVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gdW5kZWZpbmVkXG4gICAgICBjb25zdCByZXN1bHQgPSBwYXNzd29yZCh2YWwsIHsgLi4ucGFzc3dvcmRPcHRpb25zLCBtaW5MZW5ndGg6IDEwIH0pXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpXG4gICAgfSlcbiAgfSlcblxuICBkZXNjcmliZSgncG9pbnQnLCAoKSA9PiB7XG4gICAgY29uc3QgcG9pbnRPcHRpb25zID0ge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG5hbWU6ICdwb2ludCcsXG4gICAgICB0eXBlOiAncG9pbnQnLFxuICAgIH1cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIG51bWJlcnMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBbJzAuMScsICcwLjInXVxuICAgICAgY29uc3QgcmVzdWx0ID0gcG9pbnQodmFsLCBwb2ludE9wdGlvbnMpXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHN0cmluZ3MgdGhhdCBjb3VsZCBiZSBudW1iZXJzJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gWycwLjEnLCAnMC4yJ11cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBvaW50KHZhbCwgcG9pbnRPcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBzaG93IHJlcXVpcmVkIG1lc3NhZ2Ugd2hlbiB1bmRlZmluZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSB1bmRlZmluZWRcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBvaW50KHZhbCwgeyAuLi5wb2ludE9wdGlvbnMsIHJlcXVpcmVkOiB0cnVlIH0pXG4gICAgICBleHBlY3QocmVzdWx0KS5ub3QudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBzaG93IHJlcXVpcmVkIG1lc3NhZ2Ugd2hlbiBhcnJheScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IFtdXG4gICAgICBjb25zdCByZXN1bHQgPSBwb2ludCh2YWwsIHsgLi4ucG9pbnRPcHRpb25zLCByZXF1aXJlZDogdHJ1ZSB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkubm90LnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgc2hvdyByZXF1aXJlZCBtZXNzYWdlIHdoZW4gYXJyYXkgb2YgdW5kZWZpbmVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gW3VuZGVmaW5lZCwgdW5kZWZpbmVkXVxuICAgICAgY29uc3QgcmVzdWx0ID0gcG9pbnQodmFsLCB7IC4uLnBvaW50T3B0aW9ucywgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLm5vdC50b0JlKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIGhhbmRsZSB1bmRlZmluZWQgbm90IHJlcXVpcmVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gdW5kZWZpbmVkXG4gICAgICBjb25zdCByZXN1bHQgPSBwYXNzd29yZCh2YWwsIHBvaW50T3B0aW9ucylcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGVtcHR5IGFycmF5IG5vdCByZXF1aXJlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IFtdXG4gICAgICBjb25zdCByZXN1bHQgPSBwb2ludCh2YWwsIHBvaW50T3B0aW9ucylcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGFycmF5IG9mIHVuZGVmaW5lZCBub3QgcmVxdWlyZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBbdW5kZWZpbmVkLCB1bmRlZmluZWRdXG4gICAgICBjb25zdCByZXN1bHQgPSBwb2ludCh2YWwsIHBvaW50T3B0aW9ucylcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgcHJldmVudCB0ZXh0IGlucHV0JywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gWydiYWQnLCAnaW5wdXQnXVxuICAgICAgY29uc3QgcmVzdWx0ID0gcG9pbnQodmFsLCBwb2ludE9wdGlvbnMpXG4gICAgICBleHBlY3QocmVzdWx0KS5ub3QudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBwcmV2ZW50IG1pc3NpbmcgdmFsdWUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBbMC4xXVxuICAgICAgY29uc3QgcmVzdWx0ID0gcG9pbnQodmFsLCBwb2ludE9wdGlvbnMpXG4gICAgICBleHBlY3QocmVzdWx0KS5ub3QudG9CZSh0cnVlKVxuICAgIH0pXG4gIH0pXG5cbiAgZGVzY3JpYmUoJ3JlbGF0aW9uc2hpcCcsICgpID0+IHtcbiAgICBjb25zdCByZWxhdGlvbkNvbGxlY3Rpb24gPSB7XG4gICAgICBmaWVsZHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdpZCcsXG4gICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHNsdWc6ICdyZWxhdGlvbicsXG4gICAgfVxuXG4gICAgY29uc3QgcmVsYXRpb25zaGlwT3B0aW9ucyA9IHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICByZXE6IHtcbiAgICAgICAgLi4ub3B0aW9ucy5yZXEsXG4gICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAuLi5vcHRpb25zLnJlcS5wYXlsb2FkLFxuICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgY29sbGVjdGlvbnM6IFtyZWxhdGlvbkNvbGxlY3Rpb25dLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY29sbGVjdGlvbnM6IHtcbiAgICAgICAgICAgIHJlbGF0aW9uOiB7XG4gICAgICAgICAgICAgIGNvbmZpZzogcmVsYXRpb25Db2xsZWN0aW9uLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHJlbGF0aW9uVG86ICdyZWxhdGlvbicsXG4gICAgfVxuICAgIGl0KCdzaG91bGQgaGFuZGxlIHJlcXVpcmVkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gdW5kZWZpbmVkXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZWxhdGlvbnNoaXAodmFsLCB7IC4uLnJlbGF0aW9uc2hpcE9wdGlvbnMsIHJlcXVpcmVkOiB0cnVlIH0pXG4gICAgICBleHBlY3QocmVzdWx0KS5ub3QudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgcmVxdWlyZWQgd2l0aCBoYXNNYW55JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gW11cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlbGF0aW9uc2hpcCh2YWwsIHtcbiAgICAgICAgLi4ucmVsYXRpb25zaGlwT3B0aW9ucyxcbiAgICAgICAgaGFzTWFueTogdHJ1ZSxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkubm90LnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgZW5mb3JjZSBoYXNNYW55IG1pbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG1pbk9wdGlvbnMgPSB7XG4gICAgICAgIC4uLnJlbGF0aW9uc2hpcE9wdGlvbnMsXG4gICAgICAgIGhhc01hbnk6IHRydWUsXG4gICAgICAgIG1pblJvd3M6IDIsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHZhbCA9IFsnYSddXG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlbGF0aW9uc2hpcCh2YWwsIG1pbk9wdGlvbnMpXG4gICAgICBleHBlY3QocmVzdWx0KS5ub3QudG9CZSh0cnVlKVxuXG4gICAgICBjb25zdCBhbGxvd2VkID0gYXdhaXQgcmVsYXRpb25zaGlwKFsnYScsICdiJ10sIG1pbk9wdGlvbnMpXG4gICAgICBleHBlY3QoYWxsb3dlZCkudG9TdHJpY3RFcXVhbCh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBlbmZvcmNlIGhhc01hbnkgbWF4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgbWF4T3B0aW9ucyA9IHtcbiAgICAgICAgLi4ucmVsYXRpb25zaGlwT3B0aW9ucyxcbiAgICAgICAgaGFzTWFueTogdHJ1ZSxcbiAgICAgICAgbWF4Um93czogMixcbiAgICAgIH1cbiAgICAgIGxldCB2YWwgPSBbJ2EnLCAnYicsICdjJ11cblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVsYXRpb25zaGlwKHZhbCwgbWF4T3B0aW9ucylcbiAgICAgIGV4cGVjdChyZXN1bHQpLm5vdC50b0JlKHRydWUpXG5cbiAgICAgIHZhbCA9IFsnYSddXG4gICAgICBjb25zdCBhbGxvd2VkID0gYXdhaXQgcmVsYXRpb25zaGlwKHZhbCwgbWF4T3B0aW9ucylcbiAgICAgIGV4cGVjdChhbGxvd2VkKS50b1N0cmljdEVxdWFsKHRydWUpXG4gICAgfSlcbiAgfSlcblxuICBkZXNjcmliZSgnc2VsZWN0JywgKCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdE9wdGlvbnMgPSB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgb3B0aW9uczogWydvbmUnLCAndHdvJywgJ3RocmVlJ10sXG4gICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICB9XG4gICAgY29uc3Qgb3B0aW9uc1JlcXVpcmVkID0ge1xuICAgICAgLi4uc2VsZWN0T3B0aW9ucyxcbiAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiAnT25lJyxcbiAgICAgICAgICB2YWx1ZTogJ29uZScsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ3R3bycsXG4gICAgICAgICAgdmFsdWU6ICd0d28nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6ICd0aHJlZScsXG4gICAgICAgICAgdmFsdWU6ICd0aHJlZScsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgfVxuICAgIGNvbnN0IG9wdGlvbnNXaXRoRW1wdHlTdHJpbmcgPSB7XG4gICAgICAuLi5zZWxlY3RPcHRpb25zLFxuICAgICAgb3B0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6ICdOb25lJyxcbiAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ09wdGlvbicsXG4gICAgICAgICAgdmFsdWU6ICdvcHRpb24nLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9XG4gICAgaXQoJ3Nob3VsZCBhbGxvdyB2YWxpZCBpbnB1dCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9ICdvbmUnXG4gICAgICBjb25zdCByZXN1bHQgPSBzZWxlY3QodmFsLCBzZWxlY3RPcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9TdHJpY3RFcXVhbCh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBwcmV2ZW50IGludmFsaWQgaW5wdXQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAnYmFkJ1xuICAgICAgY29uc3QgcmVzdWx0ID0gc2VsZWN0KHZhbCwgc2VsZWN0T3B0aW9ucylcbiAgICAgIGV4cGVjdChyZXN1bHQpLm5vdC50b1N0cmljdEVxdWFsKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIGFsbG93IG51bGwgaW5wdXQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBudWxsXG4gICAgICBjb25zdCByZXN1bHQgPSBzZWxlY3QodmFsLCBzZWxlY3RPcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9TdHJpY3RFcXVhbCh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBhbGxvdyB1bmRlZmluZWQgaW5wdXQnLCAoKSA9PiB7XG4gICAgICBsZXQgdmFsXG4gICAgICBjb25zdCByZXN1bHQgPSBzZWxlY3QodmFsLCBzZWxlY3RPcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9TdHJpY3RFcXVhbCh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBwcmV2ZW50IGVtcHR5IHN0cmluZyBpbnB1dCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9ICcnXG4gICAgICBjb25zdCByZXN1bHQgPSBzZWxlY3QodmFsLCBzZWxlY3RPcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkubm90LnRvU3RyaWN0RXF1YWwodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgcHJldmVudCB1bmRlZmluZWQgaW5wdXQgd2l0aCByZXF1aXJlZCcsICgpID0+IHtcbiAgICAgIGxldCB2YWxcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNlbGVjdCh2YWwsIG9wdGlvbnNSZXF1aXJlZClcbiAgICAgIGV4cGVjdChyZXN1bHQpLm5vdC50b1N0cmljdEVxdWFsKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHByZXZlbnQgZW1wdHkgc3RyaW5nIGlucHV0IHdpdGggcmVxdWlyZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBzZWxlY3QoJycsIG9wdGlvbnNSZXF1aXJlZClcbiAgICAgIGV4cGVjdChyZXN1bHQpLm5vdC50b1N0cmljdEVxdWFsKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHByZXZlbnQgdW5kZWZpbmVkIGlucHV0IHdpdGggcmVxdWlyZWQgYW5kIGhhc01hbnknLCAoKSA9PiB7XG4gICAgICBsZXQgdmFsXG4gICAgICBvcHRpb25zLmhhc01hbnkgPSB0cnVlXG4gICAgICBjb25zdCByZXN1bHQgPSBzZWxlY3QodmFsLCBvcHRpb25zUmVxdWlyZWQpXG4gICAgICBleHBlY3QocmVzdWx0KS5ub3QudG9TdHJpY3RFcXVhbCh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBwcmV2ZW50IGVtcHR5IGFycmF5IGlucHV0IHdpdGggcmVxdWlyZWQgYW5kIGhhc01hbnknLCAoKSA9PiB7XG4gICAgICBvcHRpb25zUmVxdWlyZWQuaGFzTWFueSA9IHRydWVcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNlbGVjdChbXSwgb3B0aW9uc1JlcXVpcmVkKVxuICAgICAgZXhwZWN0KHJlc3VsdCkubm90LnRvU3RyaWN0RXF1YWwodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgcHJldmVudCBlbXB0eSBzdHJpbmcgYXJyYXkgaW5wdXQgd2l0aCByZXF1aXJlZCBhbmQgaGFzTWFueScsICgpID0+IHtcbiAgICAgIG9wdGlvbnMuaGFzTWFueSA9IHRydWVcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNlbGVjdChbJyddLCBvcHRpb25zUmVxdWlyZWQpXG4gICAgICBleHBlY3QocmVzdWx0KS5ub3QudG9TdHJpY3RFcXVhbCh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBwcmV2ZW50IG51bGwgaW5wdXQgd2l0aCByZXF1aXJlZCBhbmQgaGFzTWFueScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IG51bGxcbiAgICAgIG9wdGlvbnMuaGFzTWFueSA9IHRydWVcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNlbGVjdCh2YWwsIG9wdGlvbnNSZXF1aXJlZClcbiAgICAgIGV4cGVjdChyZXN1bHQpLm5vdC50b1N0cmljdEVxdWFsKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIGFsbG93IHZhbGlkIGlucHV0IHdpdGggb3B0aW9uIG9iamVjdHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAnb25lJ1xuICAgICAgb3B0aW9ucy5oYXNNYW55ID0gZmFsc2VcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNlbGVjdCh2YWwsIG9wdGlvbnNSZXF1aXJlZClcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvU3RyaWN0RXF1YWwodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgcHJldmVudCBpbnZhbGlkIGlucHV0IHdpdGggb3B0aW9uIG9iamVjdHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAnYmFkJ1xuICAgICAgb3B0aW9ucy5oYXNNYW55ID0gZmFsc2VcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNlbGVjdCh2YWwsIG9wdGlvbnNSZXF1aXJlZClcbiAgICAgIGV4cGVjdChyZXN1bHQpLm5vdC50b1N0cmljdEVxdWFsKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIGFsbG93IGVtcHR5IHN0cmluZyBpbnB1dCB3aXRoIG9wdGlvbiBvYmplY3QnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAnJ1xuICAgICAgY29uc3QgcmVzdWx0ID0gc2VsZWN0KHZhbCwgb3B0aW9uc1dpdGhFbXB0eVN0cmluZylcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvU3RyaWN0RXF1YWwodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgYWxsb3cgZW1wdHkgc3RyaW5nIGlucHV0IHdpdGggb3B0aW9uIG9iamVjdCBhbmQgcmVxdWlyZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAnJ1xuICAgICAgb3B0aW9uc1dpdGhFbXB0eVN0cmluZy5yZXF1aXJlZCA9IHRydWVcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNlbGVjdCh2YWwsIG9wdGlvbnNXaXRoRW1wdHlTdHJpbmcpXG4gICAgICBleHBlY3QocmVzdWx0KS50b1N0cmljdEVxdWFsKHRydWUpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIGFsbG93IHZhbGlkIGlucHV0IHdpdGggaGFzTWFueScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IFsnb25lJywgJ3R3byddXG4gICAgICBjb25zdCByZXN1bHQgPSBzZWxlY3QodmFsLCBzZWxlY3RPcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9TdHJpY3RFcXVhbCh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBwcmV2ZW50IGludmFsaWQgaW5wdXQgd2l0aCBoYXNNYW55JywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gWydvbmUnLCAnYmFkJ11cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNlbGVjdCh2YWwsIHNlbGVjdE9wdGlvbnMpXG4gICAgICBleHBlY3QocmVzdWx0KS5ub3QudG9TdHJpY3RFcXVhbCh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBhbGxvdyB2YWxpZCBpbnB1dCB3aXRoIGhhc01hbnkgb3B0aW9uIG9iamVjdHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBbJ29uZScsICd0aHJlZSddXG4gICAgICBvcHRpb25zUmVxdWlyZWQuaGFzTWFueSA9IHRydWVcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNlbGVjdCh2YWwsIG9wdGlvbnNSZXF1aXJlZClcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvU3RyaWN0RXF1YWwodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgcHJldmVudCBpbnZhbGlkIGlucHV0IHdpdGggaGFzTWFueSBvcHRpb24gb2JqZWN0cycsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IFsndGhyZWUnLCAnYmFkJ11cbiAgICAgIG9wdGlvbnNSZXF1aXJlZC5oYXNNYW55ID0gdHJ1ZVxuICAgICAgY29uc3QgcmVzdWx0ID0gc2VsZWN0KHZhbCwgb3B0aW9uc1JlcXVpcmVkKVxuICAgICAgZXhwZWN0KHJlc3VsdCkubm90LnRvU3RyaWN0RXF1YWwodHJ1ZSlcbiAgICB9KVxuICB9KVxuICBkZXNjcmliZSgnbnVtYmVyJywgKCkgPT4ge1xuICAgIGNvbnN0IG51bWJlck9wdGlvbnMgPSB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgbmFtZTogJ3Rlc3QnLFxuICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgfVxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAxXG4gICAgICBjb25zdCByZXN1bHQgPSBudW1iZXIodmFsLCBudW1iZXJPcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSAwJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gMFxuICAgICAgY29uc3QgcmVzdWx0ID0gbnVtYmVyKHZhbCwgeyAuLi5udW1iZXJPcHRpb25zLCByZXF1aXJlZDogdHJ1ZSB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSAyJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gMS41XG4gICAgICBjb25zdCByZXN1bHQgPSBudW1iZXIodmFsLCBudW1iZXJPcHRpb25zKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCBzaG93IGludmFsaWQgbnVtYmVyIG1lc3NhZ2UnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSAndGVzdCdcbiAgICAgIGNvbnN0IHJlc3VsdCA9IG51bWJlcih2YWwsIHsgLi4ubnVtYmVyT3B0aW9ucyB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgndmFsaWRhdGlvbjplbnRlck51bWJlcicpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBlbXB0eSB2YWx1ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9ICcnXG4gICAgICBjb25zdCByZXN1bHQgPSBudW1iZXIodmFsLCB7IC4uLm51bWJlck9wdGlvbnMgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSlcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgaGFuZGxlIHJlcXVpcmVkIHZhbHVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gJydcbiAgICAgIGNvbnN0IHJlc3VsdCA9IG51bWJlcih2YWwsIHsgLi4ubnVtYmVyT3B0aW9ucywgcmVxdWlyZWQ6IHRydWUgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBtaW5WYWx1ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IDIuNFxuICAgICAgY29uc3QgcmVzdWx0ID0gbnVtYmVyKHZhbCwgeyAuLi5udW1iZXJPcHRpb25zLCBtaW46IDIuNSB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgndmFsaWRhdGlvbjpsZXNzVGhhbk1pbicpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIG1heFZhbHVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gMS4yNVxuICAgICAgY29uc3QgcmVzdWx0ID0gbnVtYmVyKHZhbCwgeyAuLi5udW1iZXJPcHRpb25zLCBtYXg6IDEgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ3ZhbGlkYXRpb246Z3JlYXRlclRoYW5NYXgnKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBhbiBhcnJheSBvZiBudW1iZXJzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gWzEuMjUsIDIuNV1cbiAgICAgIGNvbnN0IHJlc3VsdCA9IG51bWJlcih2YWwsIHsgLi4ubnVtYmVyT3B0aW9ucywgaGFzTWFueTogdHJ1ZSB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBhbiBhcnJheSBvZiBudW1iZXJzIHVzaW5nIG1pbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9IFsxLjI1LCAyLjVdXG4gICAgICBjb25zdCByZXN1bHQgPSBudW1iZXIodmFsLCB7IC4uLm51bWJlck9wdGlvbnMsIGhhc01hbnk6IHRydWUsIG1pbjogMyB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgndmFsaWRhdGlvbjpsZXNzVGhhbk1pbicpXG4gICAgfSlcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGFuIGFycmF5IG9mIG51bWJlcnMgdXNpbmcgbWF4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gWzEuMjUsIDIuNV1cbiAgICAgIGNvbnN0IHJlc3VsdCA9IG51bWJlcih2YWwsIHsgLi4ubnVtYmVyT3B0aW9ucywgaGFzTWFueTogdHJ1ZSwgbWF4OiAxIH0pXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCd2YWxpZGF0aW9uOmdyZWF0ZXJUaGFuTWF4JylcbiAgICB9KVxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgYW4gYXJyYXkgb2YgbnVtYmVycyB1c2luZyBtaW5Sb3dzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gWzEuMjUsIDIuNV1cbiAgICAgIGNvbnN0IHJlc3VsdCA9IG51bWJlcih2YWwsIHsgLi4ubnVtYmVyT3B0aW9ucywgaGFzTWFueTogdHJ1ZSwgbWluUm93czogNCB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgndmFsaWRhdGlvbjpyZXF1aXJlc0F0TGVhc3QnKVxuICAgIH0pXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBhbiBhcnJheSBvZiBudW1iZXJzIHVzaW5nIG1heFJvd3MnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBbMS4yNSwgMi41LCAzLjVdXG4gICAgICBjb25zdCByZXN1bHQgPSBudW1iZXIodmFsLCB7IC4uLm51bWJlck9wdGlvbnMsIGhhc01hbnk6IHRydWUsIG1heFJvd3M6IDIgfSlcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ3ZhbGlkYXRpb246cmVxdWlyZXNOb01vcmVUaGFuJylcbiAgICB9KVxuICB9KVxufSlcbiJdLCJuYW1lcyI6WyJ0IiwiamVzdCIsImZuIiwic3RyaW5nIiwib3B0aW9ucyIsImRhdGEiLCJ1bmRlZmluZWQiLCJvcGVyYXRpb24iLCJzaWJsaW5nRGF0YSIsInJlcSIsImNvbnRleHQiLCJwYXlsb2FkIiwiY29uZmlnIiwiZGVzY3JpYmUiLCJpdCIsInZhbCIsInJlc3VsdCIsInRleHQiLCJleHBlY3QiLCJ0b0JlIiwicmVxdWlyZWQiLCJtYXhMZW5ndGgiLCJtaW5MZW5ndGgiLCJoYXNNYW55IiwiZmllbGQiLCJuYW1lIiwidHlwZSIsInRleHRhcmVhIiwicGFzc3dvcmRPcHRpb25zIiwicGFzc3dvcmQiLCJwb2ludE9wdGlvbnMiLCJwb2ludCIsIm5vdCIsInJlbGF0aW9uQ29sbGVjdGlvbiIsImZpZWxkcyIsInNsdWciLCJyZWxhdGlvbnNoaXBPcHRpb25zIiwiY29sbGVjdGlvbnMiLCJyZWxhdGlvbiIsInJlbGF0aW9uVG8iLCJyZWxhdGlvbnNoaXAiLCJtaW5PcHRpb25zIiwibWluUm93cyIsImFsbG93ZWQiLCJ0b1N0cmljdEVxdWFsIiwibWF4T3B0aW9ucyIsIm1heFJvd3MiLCJzZWxlY3RPcHRpb25zIiwib3B0aW9uc1JlcXVpcmVkIiwibGFiZWwiLCJ2YWx1ZSIsIm9wdGlvbnNXaXRoRW1wdHlTdHJpbmciLCJzZWxlY3QiLCJudW1iZXJP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
|
|
@@ -2,7 +2,7 @@ import type { GraphQLNonNull, GraphQLObjectType } from 'graphql';
|
|
|
2
2
|
import type { DeepRequired } from 'ts-essentials';
|
|
3
3
|
import type { CustomPreviewButtonProps, CustomPublishButtonProps, CustomSaveButtonProps, CustomSaveDraftButtonProps } from '../../admin/types';
|
|
4
4
|
import type { User } from '../../auth/types';
|
|
5
|
-
import type { Access,
|
|
5
|
+
import type { Access, EditViewComponent, EditViewConfig, Endpoint, EntityDescription, GeneratePreviewURL, LivePreviewConfig } from '../../config/types';
|
|
6
6
|
import type { Field } from '../../fields/config/types';
|
|
7
7
|
import type { PayloadRequest, RequestContext } from '../../types';
|
|
8
8
|
import type { Where } from '../../types';
|
|
@@ -94,11 +94,11 @@ export type GlobalAdminOptions = {
|
|
|
94
94
|
* + `Version` - `/admin/globals/:id/versions/:version`
|
|
95
95
|
* + `CustomView` - `/admin/globals/:id/:path`
|
|
96
96
|
*/
|
|
97
|
-
API?:
|
|
97
|
+
API?: EditViewComponent | Partial<EditViewConfig>;
|
|
98
98
|
Default?: EditViewComponent | Partial<EditViewConfig>;
|
|
99
|
-
LivePreview?:
|
|
100
|
-
Version?:
|
|
101
|
-
Versions?:
|
|
99
|
+
LivePreview?: EditViewComponent | Partial<EditViewConfig>;
|
|
100
|
+
Version?: EditViewComponent | Partial<EditViewConfig>;
|
|
101
|
+
Versions?: EditViewComponent | Partial<EditViewConfig>;
|
|
102
102
|
} | {
|
|
103
103
|
[name: string]: EditViewConfig;
|
|
104
104
|
}) | EditViewComponent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/globals/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEjD,OAAO,KAAK,EACV,wBAAwB,EACxB,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC3B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,KAAK,EACV,MAAM,EACN,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/globals/config/types.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,cAAc,CAAA;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAI5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAC1C,OAAO,KAAK,EAAE,MAAM,IAAI,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AACtF,OAAO,KAAK,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,wCAAwC,CAAA;AAC9F,OAAO,KAAK,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAC5E,OAAO,KAAK,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAC5F,OAAO,KAAK,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9E,OAAO,KAAK,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AACxF,OAAO,KAAK,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,KAAK,EAAE,MAAM,IAAI,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AACpF,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAC7F,OAAO,KAAK,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,uCAAuC,CAAA;AACrF,OAAO,KAAK,EACV,WAAW,IAAI,iBAAiB,EAChC,WAAW,IAAI,iBAAiB,EAEjC,MAAM,uCAAuC,CAAA;AAC9C,OAAO,KAAK,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,qCAAqC,CAAA;AACjF,OAAO,KAAK,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,yCAAyC,CAAA;AACzF,OAAO,KAAK,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,gDAAgD,CAAA;AACvG,OAAO,KAAK,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,6CAA6C,CAAA;AACjG,OAAO,KAAK,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,+CAA+C,CAAA;AACrG,OAAO,KAAK,EACV,WAAW,IAAI,iBAAiB,EAChC,WAAW,IAAI,iBAAiB,EAEjC,MAAM,uCAAuC,CAAA;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChF,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,KAAK,EAAE,UAAU,IAAI,gBAAgB,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACrF,OAAO,KAAK,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AACtF,OAAO,KAAK,EAAE,OAAO,IAAI,4BAA4B,EAAE,MAAM,4CAA4C,CAAA;AACzG,OAAO,KAAK,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,yCAAyC,CAAA;AACnG,OAAO,KAAK,EAAE,OAAO,IAAI,2BAA2B,EAAE,MAAM,2CAA2C,CAAA;AACvG,OAAO,KAAK,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AACvF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -24,6 +24,7 @@ const _crypto1 = require("./auth/crypto");
|
|
|
24
24
|
const _apiKey = require("./auth/strategies/apiKey");
|
|
25
25
|
const _jwt = require("./auth/strategies/jwt");
|
|
26
26
|
const _local = /*#__PURE__*/ _interop_require_default(require("./collections/operations/local"));
|
|
27
|
+
const _validate = /*#__PURE__*/ _interop_require_default(require("./config/validate"));
|
|
27
28
|
const _build = /*#__PURE__*/ _interop_require_default(require("./email/build"));
|
|
28
29
|
const _defaults = require("./email/defaults");
|
|
29
30
|
const _sendEmail = /*#__PURE__*/ _interop_require_default(require("./email/sendEmail"));
|
|
@@ -168,6 +169,9 @@ class BasePayload {
|
|
|
168
169
|
async init(options) {
|
|
169
170
|
this.logger = (0, _logger.default)('payload', options.loggerOptions, options.loggerDestination);
|
|
170
171
|
this.config = await options.config;
|
|
172
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
173
|
+
await (0, _validate.default)(this.config, this.logger);
|
|
174
|
+
}
|
|
171
175
|
if (!this.config.secret) {
|
|
172
176
|
throw new Error('Error: missing secret key. A secret key is needed to secure Payload.');
|
|
173
177
|
}
|
|
@@ -188,7 +192,7 @@ class BasePayload {
|
|
|
188
192
|
await this.db.init(this);
|
|
189
193
|
}
|
|
190
194
|
if (!options.disableDBConnect && this.db.connect) {
|
|
191
|
-
await this.db.connect(
|
|
195
|
+
await this.db.connect();
|
|
192
196
|
}
|
|
193
197
|
this.logger.info('Starting Payload...');
|
|
194
198
|
// Configure email service
|
|
@@ -267,4 +271,4 @@ const getPayload = async (options)=>{
|
|
|
267
271
|
return cached.payload;
|
|
268
272
|
};
|
|
269
273
|
|
|
270
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEV4ZWN1dGlvblJlc3VsdCwgR3JhcGhRTFNjaGVtYSwgVmFsaWRhdGlvblJ1bGUgfSBmcm9tICdncmFwaHFsJ1xuaW1wb3J0IHR5cGUgeyBPcGVyYXRpb25BcmdzLCBSZXF1ZXN0IGFzIGdyYXBoUUxSZXF1ZXN0IH0gZnJvbSAnZ3JhcGhxbC1odHRwJ1xuaW1wb3J0IHR5cGUgeyBTZW5kTWFpbE9wdGlvbnMgfSBmcm9tICdub2RlbWFpbGVyJ1xuaW1wb3J0IHR5cGUgcGlubyBmcm9tICdwaW5vJ1xuXG5pbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0bydcblxuaW1wb3J0IHR5cGUgeyBBdXRoU3RyYXRlZ3kgfSBmcm9tICcuL2F1dGgnXG5pbXBvcnQgdHlwZSB7IFJlc3VsdCBhcyBGb3Jnb3RQYXNzd29yZFJlc3VsdCB9IGZyb20gJy4vYXV0aC9vcGVyYXRpb25zL2ZvcmdvdFBhc3N3b3JkJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIEZvcmdvdFBhc3N3b3JkT3B0aW9ucyB9IGZyb20gJy4vYXV0aC9vcGVyYXRpb25zL2xvY2FsL2ZvcmdvdFBhc3N3b3JkJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIExvZ2luT3B0aW9ucyB9IGZyb20gJy4vYXV0aC9vcGVyYXRpb25zL2xvY2FsL2xvZ2luJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIFJlc2V0UGFzc3dvcmRPcHRpb25zIH0gZnJvbSAnLi9hdXRoL29wZXJhdGlvbnMvbG9jYWwvcmVzZXRQYXNzd29yZCdcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBVbmxvY2tPcHRpb25zIH0gZnJvbSAnLi9hdXRoL29wZXJhdGlvbnMvbG9jYWwvdW5sb2NrJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIFZlcmlmeUVtYWlsT3B0aW9ucyB9IGZyb20gJy4vYXV0aC9vcGVyYXRpb25zL2xvY2FsL3ZlcmlmeUVtYWlsJ1xuaW1wb3J0IHR5cGUgeyBSZXN1bHQgYXMgTG9naW5SZXN1bHQgfSBmcm9tICcuL2F1dGgvb3BlcmF0aW9ucy9sb2dpbidcbmltcG9ydCB0eXBlIHsgUmVzdWx0IGFzIFJlc2V0UGFzc3dvcmRSZXN1bHQgfSBmcm9tICcuL2F1dGgvb3BlcmF0aW9ucy9yZXNldFBhc3N3b3JkJ1xuaW1wb3J0IHR5cGUgeyBCdWxrT3BlcmF0aW9uUmVzdWx0LCBDb2xsZWN0aW9uLCBUeXBlV2l0aElEIH0gZnJvbSAnLi9jb2xsZWN0aW9ucy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgQ3JlYXRlT3B0aW9ucyB9IGZyb20gJy4vY29sbGVjdGlvbnMvb3BlcmF0aW9ucy9sb2NhbC9jcmVhdGUnXG5pbXBvcnQgdHlwZSB7XG4gIEJ5SURPcHRpb25zIGFzIERlbGV0ZUJ5SURPcHRpb25zLFxuICBNYW55T3B0aW9ucyBhcyBEZWxldGVNYW55T3B0aW9ucyxcbiAgT3B0aW9ucyBhcyBEZWxldGVPcHRpb25zLFxufSBmcm9tICcuL2NvbGxlY3Rpb25zL29wZXJhdGlvbnMvbG9jYWwvZGVsZXRlJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIEZpbmRPcHRpb25zIH0gZnJvbSAnLi9jb2xsZWN0aW9ucy9vcGVyYXRpb25zL2xvY2FsL2ZpbmQnXG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgRmluZEJ5SURPcHRpb25zIH0gZnJvbSAnLi9jb2xsZWN0aW9ucy9vcGVyYXRpb25zL2xvY2FsL2ZpbmRCeUlEJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIEZpbmRWZXJzaW9uQnlJRE9wdGlvbnMgfSBmcm9tICcuL2NvbGxlY3Rpb25zL29wZXJhdGlvbnMvbG9jYWwvZmluZFZlcnNpb25CeUlEJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIEZpbmRWZXJzaW9uc09wdGlvbnMgfSBmcm9tICcuL2NvbGxlY3Rpb25zL29wZXJhdGlvbnMvbG9jYWwvZmluZFZlcnNpb25zJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIFJlc3RvcmVWZXJzaW9uT3B0aW9ucyB9IGZyb20gJy4vY29sbGVjdGlvbnMvb3BlcmF0aW9ucy9sb2NhbC9yZXN0b3JlVmVyc2lvbidcbmltcG9ydCB0eXBlIHtcbiAgQnlJRE9wdGlvbnMgYXMgVXBkYXRlQnlJRE9wdGlvbnMsXG4gIE1hbnlPcHRpb25zIGFzIFVwZGF0ZU1hbnlPcHRpb25zLFxuICBPcHRpb25zIGFzIFVwZGF0ZU9wdGlvbnMsXG59IGZyb20gJy4vY29sbGVjdGlvbnMvb3BlcmF0aW9ucy9sb2NhbC91cGRhdGUnXG5pbXBvcnQgdHlwZSB7IEVtYWlsT3B0aW9ucywgSW5pdE9wdGlvbnMsIFNhbml0aXplZENvbmZpZyB9IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBCYXNlRGF0YWJhc2VBZGFwdGVyLCBQYWdpbmF0ZWREb2NzIH0gZnJvbSAnLi9kYXRhYmFzZS90eXBlcydcbmltcG9ydCB0eXBlIHsgQnVpbGRFbWFpbFJlc3VsdCB9IGZyb20gJy4vZW1haWwvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFR5cGVXaXRoSUQgYXMgR2xvYmFsVHlwZVdpdGhJRCwgR2xvYmFscyB9IGZyb20gJy4vZ2xvYmFscy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgRmluZEdsb2JhbE9wdGlvbnMgfSBmcm9tICcuL2dsb2JhbHMvb3BlcmF0aW9ucy9sb2NhbC9maW5kT25lJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIEZpbmRHbG9iYWxWZXJzaW9uQnlJRE9wdGlvbnMgfSBmcm9tICcuL2dsb2JhbHMvb3BlcmF0aW9ucy9sb2NhbC9maW5kVmVyc2lvbkJ5SUQnXG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgRmluZEdsb2JhbFZlcnNpb25zT3B0aW9ucyB9IGZyb20gJy4vZ2xvYmFscy9vcGVyYXRpb25zL2xvY2FsL2ZpbmRWZXJzaW9ucydcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBSZXN0b3JlR2xvYmFsVmVyc2lvbk9wdGlvbnMgfSBmcm9tICcuL2dsb2JhbHMvb3BlcmF0aW9ucy9sb2NhbC9yZXN0b3JlVmVyc2lvbidcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBVcGRhdGVHbG9iYWxPcHRpb25zIH0gZnJvbSAnLi9nbG9iYWxzL29wZXJhdGlvbnMvbG9jYWwvdXBkYXRlJ1xuaW1wb3J0IHR5cGUgeyBUeXBlV2l0aFZlcnNpb24gfSBmcm9tICcuL3ZlcnNpb25zL3R5cGVzJ1xuXG5pbXBvcnQgeyBkZWNyeXB0LCBlbmNyeXB0IH0gZnJvbSAnLi9hdXRoL2NyeXB0bydcbmltcG9ydCB7IEFQSUtleUF1dGhlbnRpY2F0aW9uIH0gZnJvbSAnLi9hdXRoL3N0cmF0ZWdpZXMvYXBpS2V5J1xuaW1wb3J0IHsgSldUQXV0aGVudGljYXRpb24gfSBmcm9tICcuL2F1dGgvc3RyYXRlZ2llcy9qd3QnXG5pbXBvcnQgbG9jYWxPcGVyYXRpb25zIGZyb20gJy4vY29sbGVjdGlvbnMvb3BlcmF0aW9ucy9sb2NhbCdcbmltcG9ydCBidWlsZEVtYWlsIGZyb20gJy4vZW1haWwvYnVpbGQnXG5pbXBvcnQgeyBkZWZhdWx0cyBhcyBlbWFpbERlZmF1bHRzIH0gZnJvbSAnLi9lbWFpbC9kZWZhdWx0cydcbmltcG9ydCBzZW5kRW1haWwgZnJvbSAnLi9lbWFpbC9zZW5kRW1haWwnXG5pbXBvcnQgbG9jYWxHbG9iYWxPcGVyYXRpb25zIGZyb20gJy4vZ2xvYmFscy9vcGVyYXRpb25zL2xvY2FsJ1xuaW1wb3J0IExvZ2dlciBmcm9tICcuL3V0aWxpdGllcy9sb2dnZXInXG5pbXBvcnQgeyBzZXJ2ZXJJbml0IGFzIHNlcnZlckluaXRUZWxlbWV0cnkgfSBmcm9tICcuL3V0aWxpdGllcy90ZWxlbWV0cnkvZXZlbnRzL3NlcnZlckluaXQnXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFBheWxvYWRcbiAqL1xuZXhwb3J0IGNsYXNzIEJhc2VQYXlsb2FkPFRHZW5lcmF0ZWRUeXBlcyBleHRlbmRzIEdlbmVyYXRlZFR5cGVzPiB7XG4gIGF1dGhTdHJhdGVnaWVzOiBBdXRoU3RyYXRlZ3lbXVxuXG4gIGNvbGxlY3Rpb25zOiB7XG4gICAgW3NsdWc6IG51bWJlciB8IHN0cmluZyB8IHN5bWJvbF06IENvbGxlY3Rpb25cbiAgfSA9IHt9XG5cbiAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWdcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFBlcmZvcm1zIGNyZWF0ZSBvcGVyYXRpb25cbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHJldHVybnMgY3JlYXRlZCBkb2N1bWVudFxuICAgKi9cbiAgY3JlYXRlID0gYXN5bmMgPFQgZXh0ZW5kcyBrZXlvZiBUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ10+KFxuICAgIG9wdGlvbnM6IENyZWF0ZU9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8VEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddW1RdPiA9PiB7XG4gICAgY29uc3QgeyBjcmVhdGUgfSA9IGxvY2FsT3BlcmF0aW9uc1xuICAgIHJldHVybiBjcmVhdGU8VD4odGhpcywgb3B0aW9ucylcbiAgfVxuXG4gIGRiOiBCYXNlRGF0YWJhc2VBZGFwdGVyXG5cbiAgZGVjcnlwdCA9IGRlY3J5cHRcblxuICBlbWFpbDogQnVpbGRFbWFpbFJlc3VsdFxuXG4gIGVtYWlsT3B0aW9uczogRW1haWxPcHRpb25zXG5cbiAgZW5jcnlwdCA9IGVuY3J5cHRcblxuICAvLyBUT0RPOiByZS1pbXBsZW1lbnQgb3IgcmVtb3ZlP1xuICAvLyBlcnJvckhhbmRsZXI6IEVycm9ySGFuZGxlclxuXG4gIGV4dGVuc2lvbnM6IChhcmdzOiB7XG4gICAgYXJnczogT3BlcmF0aW9uQXJnczxhbnk+XG4gICAgcmVxOiBncmFwaFFMUmVxdWVzdDx1bmtub3duLCB1bmtub3duPlxuICAgIHJlc3VsdDogRXhlY3V0aW9uUmVzdWx0XG4gIH0pID0+IFByb21pc2U8YW55PlxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRmluZCBkb2N1bWVudHMgd2l0aCBjcml0ZXJpYVxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKiBAcmV0dXJucyBkb2N1bWVudHMgc2F0aXNmeWluZyBxdWVyeVxuICAgKi9cbiAgZmluZCA9IGFzeW5jIDxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddPihcbiAgICBvcHRpb25zOiBGaW5kT3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxQYWdpbmF0ZWREb2NzPFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXVtUXT4+ID0+IHtcbiAgICBjb25zdCB7IGZpbmQgfSA9IGxvY2FsT3BlcmF0aW9uc1xuICAgIHJldHVybiBmaW5kPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICBmaW5kQnlJRCA9IGFzeW5jIDxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddPihcbiAgICBvcHRpb25zOiBGaW5kQnlJRE9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8VEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddW1RdPiA9PiB7XG4gICAgY29uc3QgeyBmaW5kQnlJRCB9ID0gbG9jYWxPcGVyYXRpb25zXG4gICAgcmV0dXJuIGZpbmRCeUlEPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICBmaW5kR2xvYmFsID0gYXN5bmMgPFQgZXh0ZW5kcyBrZXlvZiBUR2VuZXJhdGVkVHlwZXNbJ2dsb2JhbHMnXT4oXG4gICAgb3B0aW9uczogRmluZEdsb2JhbE9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8VEdlbmVyYXRlZFR5cGVzWydnbG9iYWxzJ11bVF0+ID0+IHtcbiAgICBjb25zdCB7IGZpbmRPbmUgfSA9IGxvY2FsR2xvYmFsT3BlcmF0aW9uc1xuICAgIHJldHVybiBmaW5kT25lPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEZpbmQgZ2xvYmFsIHZlcnNpb24gYnkgSURcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHJldHVybnMgZ2xvYmFsIHZlcnNpb24gd2l0aCBzcGVjaWZpZWQgSURcbiAgICovXG4gIGZpbmRHbG9iYWxWZXJzaW9uQnlJRCA9IGFzeW5jIDxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydnbG9iYWxzJ10+KFxuICAgIG9wdGlvbnM6IEZpbmRHbG9iYWxWZXJzaW9uQnlJRE9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8VHlwZVdpdGhWZXJzaW9uPFRHZW5lcmF0ZWRUeXBlc1snZ2xvYmFscyddW1RdPj4gPT4ge1xuICAgIGNvbnN0IHsgZmluZFZlcnNpb25CeUlEIH0gPSBsb2NhbEdsb2JhbE9wZXJhdGlvbnNcbiAgICByZXR1cm4gZmluZFZlcnNpb25CeUlEPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEZpbmQgZ2xvYmFsIHZlcnNpb25zIHdpdGggY3JpdGVyaWFcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHJldHVybnMgdmVyc2lvbnMgc2F0aXNmeWluZyBxdWVyeVxuICAgKi9cbiAgZmluZEdsb2JhbFZlcnNpb25zID0gYXN5bmMgPFQgZXh0ZW5kcyBrZXlvZiBUR2VuZXJhdGVkVHlwZXNbJ2dsb2JhbHMnXT4oXG4gICAgb3B0aW9uczogRmluZEdsb2JhbFZlcnNpb25zT3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxQYWdpbmF0ZWREb2NzPFR5cGVXaXRoVmVyc2lvbjxUR2VuZXJhdGVkVHlwZXNbJ2dsb2JhbHMnXVtUXT4+PiA9PiB7XG4gICAgY29uc3QgeyBmaW5kVmVyc2lvbnMgfSA9IGxvY2FsR2xvYmFsT3BlcmF0aW9uc1xuICAgIHJldHVybiBmaW5kVmVyc2lvbnM8VD4odGhpcywgb3B0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRmluZCB2ZXJzaW9uIGJ5IElEXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqIEByZXR1cm5zIHZlcnNpb24gd2l0aCBzcGVjaWZpZWQgSURcbiAgICovXG4gIGZpbmRWZXJzaW9uQnlJRCA9IGFzeW5jIDxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddPihcbiAgICBvcHRpb25zOiBGaW5kVmVyc2lvbkJ5SURPcHRpb25zPFQ+LFxuICApOiBQcm9taXNlPFR5cGVXaXRoVmVyc2lvbjxUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVF0+PiA9PiB7XG4gICAgY29uc3QgeyBmaW5kVmVyc2lvbkJ5SUQgfSA9IGxvY2FsT3BlcmF0aW9uc1xuICAgIHJldHVybiBmaW5kVmVyc2lvbkJ5SUQ8VD4odGhpcywgb3B0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRmluZCB2ZXJzaW9ucyB3aXRoIGNyaXRlcmlhXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqIEByZXR1cm5zIHZlcnNpb25zIHNhdGlzZnlpbmcgcXVlcnlcbiAgICovXG4gIGZpbmRWZXJzaW9ucyA9IGFzeW5jIDxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddPihcbiAgICBvcHRpb25zOiBGaW5kVmVyc2lvbnNPcHRpb25zPFQ+LFxuICApOiBQcm9taXNlPFBhZ2luYXRlZERvY3M8VHlwZVdpdGhWZXJzaW9uPFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXVtUXT4+PiA9PiB7XG4gICAgY29uc3QgeyBmaW5kVmVyc2lvbnMgfSA9IGxvY2FsT3BlcmF0aW9uc1xuICAgIHJldHVybiBmaW5kVmVyc2lvbnM8VD4odGhpcywgb3B0aW9ucylcbiAgfVxuXG4gIGZvcmdvdFBhc3N3b3JkID0gYXN5bmMgPFQgZXh0ZW5kcyBrZXlvZiBUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ10+KFxuICAgIG9wdGlvbnM6IEZvcmdvdFBhc3N3b3JkT3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxGb3Jnb3RQYXNzd29yZFJlc3VsdD4gPT4ge1xuICAgIGNvbnN0IHsgZm9yZ290UGFzc3dvcmQgfSA9IGxvY2FsT3BlcmF0aW9ucy5hdXRoXG4gICAgcmV0dXJuIGZvcmdvdFBhc3N3b3JkPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICBnZXRBUElVUkwgPSAoKTogc3RyaW5nID0+IGAke3RoaXMuY29uZmlnLnNlcnZlclVSTH0ke3RoaXMuY29uZmlnLnJvdXRlcy5hcGl9YFxuXG4gIGdldEFkbWluVVJMID0gKCk6IHN0cmluZyA9PiBgJHt0aGlzLmNvbmZpZy5zZXJ2ZXJVUkx9JHt0aGlzLmNvbmZpZy5yb3V0ZXMuYWRtaW59YFxuXG4gIGdsb2JhbHM6IEdsb2JhbHNcblxuICBsb2dnZXI6IHBpbm8uTG9nZ2VyXG5cbiAgbG9naW4gPSBhc3luYyA8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gICAgb3B0aW9uczogTG9naW5PcHRpb25zPFQ+LFxuICApOiBQcm9taXNlPExvZ2luUmVzdWx0ICYgeyB1c2VyOiBUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVF0gfT4gPT4ge1xuICAgIGNvbnN0IHsgbG9naW4gfSA9IGxvY2FsT3BlcmF0aW9ucy5hdXRoXG4gICAgcmV0dXJuIGxvZ2luPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEZpbmQgZG9jdW1lbnQgYnkgSURcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHJldHVybnMgZG9jdW1lbnQgd2l0aCBzcGVjaWZpZWQgSURcbiAgICovXG5cbiAgcmVzZXRQYXNzd29yZCA9IGFzeW5jIDxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddPihcbiAgICBvcHRpb25zOiBSZXNldFBhc3N3b3JkT3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxSZXNldFBhc3N3b3JkUmVzdWx0PiA9PiB7XG4gICAgY29uc3QgeyByZXNldFBhc3N3b3JkIH0gPSBsb2NhbE9wZXJhdGlvbnMuYXV0aFxuICAgIHJldHVybiByZXNldFBhc3N3b3JkPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlc3RvcmUgZ2xvYmFsIHZlcnNpb24gYnkgSURcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHJldHVybnMgdmVyc2lvbiB3aXRoIHNwZWNpZmllZCBJRFxuICAgKi9cbiAgcmVzdG9yZUdsb2JhbFZlcnNpb24gPSBhc3luYyA8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snZ2xvYmFscyddPihcbiAgICBvcHRpb25zOiBSZXN0b3JlR2xvYmFsVmVyc2lvbk9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8VEdlbmVyYXRlZFR5cGVzWydnbG9iYWxzJ11bVF0+ID0+IHtcbiAgICBjb25zdCB7IHJlc3RvcmVWZXJzaW9uIH0gPSBsb2NhbEdsb2JhbE9wZXJhdGlvbnNcbiAgICByZXR1cm4gcmVzdG9yZVZlcnNpb248VD4odGhpcywgb3B0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVzdG9yZSB2ZXJzaW9uIGJ5IElEXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqIEByZXR1cm5zIHZlcnNpb24gd2l0aCBzcGVjaWZpZWQgSURcbiAgICovXG4gIHJlc3RvcmVWZXJzaW9uID0gYXN5bmMgPFQgZXh0ZW5kcyBrZXlvZiBUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ10+KFxuICAgIG9wdGlvbnM6IFJlc3RvcmVWZXJzaW9uT3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVF0+ID0+IHtcbiAgICBjb25zdCB7IHJlc3RvcmVWZXJzaW9uIH0gPSBsb2NhbE9wZXJhdGlvbnNcbiAgICByZXR1cm4gcmVzdG9yZVZlcnNpb248VD4odGhpcywgb3B0aW9ucylcbiAgfVxuXG4gIHNjaGVtYTogR3JhcGhRTFNjaGVtYVxuXG4gIHNlY3JldDogc3RyaW5nXG5cbiAgc2VuZEVtYWlsOiAobWVzc2FnZTogU2VuZE1haWxPcHRpb25zKSA9PiBQcm9taXNlPHVua25vd24+XG5cbiAgdHlwZXM6IHtcbiAgICBhcnJheVR5cGVzOiBhbnlcbiAgICBibG9ja0lucHV0VHlwZXM6IGFueVxuICAgIGJsb2NrVHlwZXM6IGFueVxuICAgIGZhbGxiYWNrTG9jYWxlSW5wdXRUeXBlPzogYW55XG4gICAgZ3JvdXBUeXBlczogYW55XG4gICAgbG9jYWxlSW5wdXRUeXBlPzogYW55XG4gICAgdGFiVHlwZXM6IGFueVxuICB9XG5cbiAgdW5sb2NrID0gYXN5bmMgPFQgZXh0ZW5kcyBrZXlvZiBUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ10+KFxuICAgIG9wdGlvbnM6IFVubG9ja09wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgIGNvbnN0IHsgdW5sb2NrIH0gPSBsb2NhbE9wZXJhdGlvbnMuYXV0aFxuICAgIHJldHVybiB1bmxvY2sodGhpcywgb3B0aW9ucylcbiAgfVxuXG4gIHVwZGF0ZUdsb2JhbCA9IGFzeW5jIDxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydnbG9iYWxzJ10+KFxuICAgIG9wdGlvbnM6IFVwZGF0ZUdsb2JhbE9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8VEdlbmVyYXRlZFR5cGVzWydnbG9iYWxzJ11bVF0+ID0+IHtcbiAgICBjb25zdCB7IHVwZGF0ZSB9ID0gbG9jYWxHbG9iYWxPcGVyYXRpb25zXG4gICAgcmV0dXJuIHVwZGF0ZTxUPih0aGlzLCBvcHRpb25zKVxuICB9XG5cbiAgdmFsaWRhdGlvblJ1bGVzOiAoYXJnczogT3BlcmF0aW9uQXJnczxhbnk+KSA9PiBWYWxpZGF0aW9uUnVsZVtdXG5cbiAgdmVyaWZ5RW1haWwgPSBhc3luYyA8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gICAgb3B0aW9uczogVmVyaWZ5RW1haWxPcHRpb25zPFQ+LFxuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICBjb25zdCB7IHZlcmlmeUVtYWlsIH0gPSBsb2NhbE9wZXJhdGlvbnMuYXV0aFxuICAgIHJldHVybiB2ZXJpZnlFbWFpbCh0aGlzLCBvcHRpb25zKVxuICB9XG5cbiAgdmVyc2lvbnM6IHtcbiAgICBbc2x1Zzogc3RyaW5nXTogYW55IC8vIFRPRE86IFR5cGUgdGhpc1xuICB9ID0ge31cblxuICBkZWxldGU8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gICAgb3B0aW9uczogRGVsZXRlT3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxCdWxrT3BlcmF0aW9uUmVzdWx0PFQ+IHwgVEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddW1RdPiB7XG4gICAgY29uc3QgeyBkZWxldGVMb2NhbCB9ID0gbG9jYWxPcGVyYXRpb25zXG4gICAgcmV0dXJuIGRlbGV0ZUxvY2FsPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIGRlbGV0ZSBvbmUgb3IgbW9yZSBkb2N1bWVudHNcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHJldHVybnMgVXBkYXRlZCBkb2N1bWVudChzKVxuICAgKi9cbiAgZGVsZXRlPFQgZXh0ZW5kcyBrZXlvZiBUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ10+KFxuICAgIG9wdGlvbnM6IERlbGV0ZUJ5SURPcHRpb25zPFQ+LFxuICApOiBQcm9taXNlPFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXVtUXT5cblxuICBkZWxldGU8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gICAgb3B0aW9uczogRGVsZXRlTWFueU9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8QnVsa09wZXJhdGlvblJlc3VsdDxUPj5cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemVzIFBheWxvYWRcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICovXG4gIC8vIEB0cy1leHBlY3QtZXJyb3IgLy8gVE9ETzogVHlwZVNjcmlwdCBoYWxsdWNpbmF0aW5nIGFnYWluLiBmaXggbGF0ZXJcbiAgYXN5bmMgaW5pdChvcHRpb25zOiBJbml0T3B0aW9ucyk6IFByb21pc2U8UGF5bG9hZD4ge1xuICAgIHRoaXMubG9nZ2VyID0gTG9nZ2VyKCdwYXlsb2FkJywgb3B0aW9ucy5sb2dnZXJPcHRpb25zLCBvcHRpb25zLmxvZ2dlckRlc3RpbmF0aW9uKVxuXG4gICAgdGhpcy5jb25maWcgPSBhd2FpdCBvcHRpb25zLmNvbmZpZ1xuXG4gICAgaWYgKCF0aGlzLmNvbmZpZy5zZWNyZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3I6IG1pc3Npbmcgc2VjcmV0IGtleS4gQSBzZWNyZXQga2V5IGlzIG5lZWRlZCB0byBzZWN1cmUgUGF5bG9hZC4nKVxuICAgIH1cblxuICAgIHRoaXMuc2VjcmV0ID0gY3J5cHRvLmNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZSh0aGlzLmNvbmZpZy5zZWNyZXQpLmRpZ2VzdCgnaGV4Jykuc2xpY2UoMCwgMzIpXG5cbiAgICB0aGlzLmdsb2JhbHMgPSB7XG4gICAgICBjb25maWc6IHRoaXMuY29uZmlnLmdsb2JhbHMsXG4gICAgfVxuICAgIHRoaXMuY29uZmlnLmNvbGxlY3Rpb25zLmZvckVhY2goKGNvbGxlY3Rpb24pID0+IHtcbiAgICAgIHRoaXMuY29sbGVjdGlvbnNbY29sbGVjdGlvbi5zbHVnXSA9IHtcbiAgICAgICAgY29uZmlnOiBjb2xsZWN0aW9uLFxuICAgICAgfVxuICAgIH0pXG5cbiAgICB0aGlzLmRiID0gdGhpcy5jb25maWcuZGIuaW5pdCh7IHBheWxvYWQ6IHRoaXMgfSlcbiAgICB0aGlzLmRiLnBheWxvYWQgPSB0aGlzXG5cbiAgICBpZiAodGhpcy5kYj8uaW5pdCkge1xuICAgICAgYXdhaXQgdGhpcy5kYi5pbml0KHRoaXMpXG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zLmRpc2FibGVEQkNvbm5lY3QgJiYgdGhpcy5kYi5jb25uZWN0KSB7XG4gICAgICBhd2FpdCB0aGlzLmRiLmNvbm5lY3QodGhpcylcbiAgICB9XG5cbiAgICB0aGlzLmxvZ2dlci5pbmZvKCdTdGFydGluZyBQYXlsb2FkLi4uJylcblxuICAgIC8vIENvbmZpZ3VyZSBlbWFpbCBzZXJ2aWNlXG4gICAgY29uc3QgZW1haWxPcHRpb25zID0gb3B0aW9ucy5lbWFpbCA/IHsgLi4ub3B0aW9ucy5lbWFpbCB9IDogdGhpcy5jb25maWcuZW1haWxcbiAgICBpZiAob3B0aW9ucy5lbWFpbCAmJiB0aGlzLmNvbmZpZy5lbWFpbCkge1xuICAgICAgdGhpcy5sb2dnZXIud2FybihcbiAgICAgICAgJ0VtYWlsIG9wdGlvbnMgcHJvdmlkZWQgaW4gYm90aCBpbml0IG9wdGlvbnMgYW5kIGNvbmZpZy4gVXNpbmcgaW5pdCBvcHRpb25zLicsXG4gICAgICApXG4gICAgfVxuXG4gICAgdGhpcy5lbWFpbE9wdGlvbnMgPSBlbWFpbE9wdGlvbnMgPz8gZW1haWxEZWZhdWx0c1xuICAgIHRoaXMuZW1haWwgPSBidWlsZEVtYWlsKHRoaXMuZW1haWxPcHRpb25zLCB0aGlzLmxvZ2dlcilcbiAgICB0aGlzLnNlbmRFbWFpbCA9IHNlbmRFbWFpbC5iaW5kKHRoaXMpXG5cbiAgICBzZXJ2ZXJJbml0VGVsZW1ldHJ5KHRoaXMpXG5cbiAgICAvLyAxLiBsb29wIG92ZXIgY29sbGVjdGlvbnMsIGlmIGNvbGxlY3Rpb24gaGFzIGF1dGggc3RyYXRlZ3ksIGluaXRpYWxpemUgYW5kIHB1c2ggdG8gYXJyYXlcbiAgICBsZXQgand0U3RyYXRlZ3lFbmFibGVkID0gZmFsc2VcbiAgICB0aGlzLmF1dGhTdHJhdGVnaWVzID0gdGhpcy5jb25maWcuY29sbGVjdGlvbnMucmVkdWNlKChhdXRoU3RyYXRlZ2llcywgY29sbGVjdGlvbikgPT4ge1xuICAgICAgaWYgKGNvbGxlY3Rpb24/LmF1dGgpIHtcbiAgICAgICAgaWYgKGNvbGxlY3Rpb24uYXV0aC5zdHJhdGVnaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBhdXRoU3RyYXRlZ2llcy5wdXNoKC4uLmNvbGxlY3Rpb24uYXV0aC5zdHJhdGVnaWVzKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMi4gaWYgYXBpIGtleSBlbmFibGVkLCBwdXNoIGFwaSBrZXkgc3RyYXRlZ3kgaW50byB0aGUgYXJyYXlcbiAgICAgICAgaWYgKGNvbGxlY3Rpb24uYXV0aD8udXNlQVBJS2V5KSB7XG4gICAgICAgICAgYXV0aFN0cmF0ZWdpZXMucHVzaCh7XG4gICAgICAgICAgICBuYW1lOiBgJHtjb2xsZWN0aW9uLnNsdWd9LWFwaS1rZXlgLFxuICAgICAgICAgICAgYXV0aGVudGljYXRlOiBBUElLZXlBdXRoZW50aWNhdGlvbihjb2xsZWN0aW9uKSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMy4gaWYgbG9jYWxTdHJhdGVneSBmbGFnIGlzIHRydWVcbiAgICAgICAgaWYgKCFjb2xsZWN0aW9uLmF1dGguZGlzYWJsZUxvY2FsU3RyYXRlZ3kgJiYgIWp3dFN0cmF0ZWd5RW5hYmxlZCkge1xuICAgICAgICAgIGp3dFN0cmF0ZWd5RW5hYmxlZCA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gYXV0aFN0cmF0ZWdpZXNcbiAgICB9LCBbXSBhcyBBdXRoU3RyYXRlZ3lbXSlcblxuICAgIC8vIDQuIGlmIGVuYWJsZWQsIHB1c2ggand0IHN0cmF0ZWd5IGludG8gYXV0aFN0cmF0ZWdpZXMgbGFzdFxuICAgIGlmIChqd3RTdHJhdGVneUVuYWJsZWQpIHtcbiAgICAgIHRoaXMuYXV0aFN0cmF0ZWdpZXMucHVzaCh7XG4gICAgICAgIG5hbWU6ICdsb2NhbC1qd3QnLFxuICAgICAgICBhdXRoZW50aWNhdGU6IEpXVEF1dGhlbnRpY2F0aW9uLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAoIW9wdGlvbnMuZGlzYWJsZU9uSW5pdCkge1xuICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLm9uSW5pdCA9PT0gJ2Z1bmN0aW9uJykgYXdhaXQgb3B0aW9ucy5vbkluaXQodGhpcylcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25maWcub25Jbml0ID09PSAnZnVuY3Rpb24nKSBhd2FpdCB0aGlzLmNvbmZpZy5vbkluaXQodGhpcylcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgdXBkYXRlPFQgZXh0ZW5kcyBrZXlvZiBUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ10+KFxuICAgIG9wdGlvbnM6IFVwZGF0ZU1hbnlPcHRpb25zPFQ+LFxuICApOiBQcm9taXNlPEJ1bGtPcGVyYXRpb25SZXN1bHQ8VD4+XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgb25lIG9yIG1vcmUgZG9jdW1lbnRzXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqIEByZXR1cm5zIFVwZGF0ZWQgZG9jdW1lbnQocylcbiAgICovXG4gIHVwZGF0ZTxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddPihcbiAgICBvcHRpb25zOiBVcGRhdGVCeUlET3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVF0+XG5cbiAgdXBkYXRlPFQgZXh0ZW5kcyBrZXlvZiBUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ10+KFxuICAgIG9wdGlvbnM6IFVwZGF0ZU9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8QnVsa09wZXJhdGlvblJlc3VsdDxUPiB8IFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXVtUXT4ge1xuICAgIGNvbnN0IHsgdXBkYXRlIH0gPSBsb2NhbE9wZXJhdGlvbnNcbiAgICByZXR1cm4gdXBkYXRlPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cbn1cblxuY29uc3QgaW5pdGlhbGl6ZWQgPSBuZXcgQmFzZVBheWxvYWQoKVxuXG5leHBvcnQgZGVmYXVsdCBpbml0aWFsaXplZFxuXG5sZXQgY2FjaGVkID0gZ2xvYmFsLl9wYXlsb2FkXG5cbmlmICghY2FjaGVkKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tdWx0aS1hc3NpZ25cbiAgY2FjaGVkID0gZ2xvYmFsLl9wYXlsb2FkID0geyBwYXlsb2FkOiBudWxsLCBwcm9taXNlOiBudWxsIH1cbn1cblxuZXhwb3J0IGNvbnN0IGdldFBheWxvYWQgPSBhc3luYyAob3B0aW9ucz86IEluaXRPcHRpb25zKTogUHJvbWlzZTxCYXNlUGF5bG9hZDxHZW5lcmF0ZWRUeXBlcz4+ID0+IHtcbiAgaWYgKGNhY2hlZC5wYXlsb2FkKSB7XG4gICAgcmV0dXJuIGNhY2hlZC5wYXlsb2FkXG4gIH1cblxuICBpZiAoIWNhY2hlZC5wcm9taXNlKSB7XG4gICAgY2FjaGVkLnByb21pc2UgPSBuZXcgQmFzZVBheWxvYWQ8R2VuZXJhdGVkVHlwZXM+KCkuaW5pdChvcHRpb25zKVxuICB9XG5cbiAgdHJ5IHtcbiAgICBjYWNoZWQucGF5bG9hZCA9IGF3YWl0IGNhY2hlZC5wcm9taXNlXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjYWNoZWQucHJvbWlzZSA9IG51bGxcbiAgICB0aHJvdyBlXG4gIH1cblxuICByZXR1cm4gY2FjaGVkLnBheWxvYWRcbn1cblxudHlwZSBHZW5lcmF0ZWRUeXBlcyA9IHtcbiAgY29sbGVjdGlvbnM6IHtcbiAgICBbc2x1ZzogbnVtYmVyIHwgc3RyaW5nIHwgc3ltYm9sXTogVHlwZVdpdGhJRCAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIH1cbiAgZ2xvYmFsczoge1xuICAgIFtzbHVnOiBudW1iZXIgfCBzdHJpbmcgfCBzeW1ib2xdOiBHbG9iYWxUeXBlV2l0aElEICYgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgfVxufVxuXG50eXBlIFBheWxvYWQgPSBCYXNlUGF5bG9hZDxHZW5lcmF0ZWRUeXBlcz5cblxuaW50ZXJmYWNlIFJlcXVlc3RDb250ZXh0IHtcbiAgW2tleTogc3RyaW5nXTogdW5rbm93blxufVxuXG4vLyB0eXBlIERhdGFiYXNlQWRhcHRlciA9IEJhc2VEYXRhYmFzZUFkYXB0ZXJcblxuZXhwb3J0IHR5cGUgeyBHZW5lcmF0ZWRUeXBlcywgUGF5bG9hZCwgUmVxdWVzdENvbnRleHQgfVxuIl0sIm5hbWVzIjpbIkJhc2VQYXlsb2FkIiwiZ2V0UGF5bG9hZCIsImF1dGhTdHJhdGVnaWVzIiwiY29sbGVjdGlvbnMiLCJjb25maWciLCJjcmVhdGUiLCJvcHRpb25zIiwibG9jYWxPcGVyYXRpb25zIiwiZGIiLCJkZWNyeXB0IiwiZW1haWwiLCJlbWFpbE9wdGlvbnMiLCJlbmNyeXB0IiwiZXh0ZW5zaW9ucyIsImZpbmQiLCJmaW5kQnlJRCIsImZpbmRHbG9iYWwiLCJmaW5kT25lIiwibG9jYWxHbG9iYWxPcGVyYXRpb25zIiwiZmluZEdsb2JhbFZlcnNpb25CeUlEIiwiZmluZFZlcnNpb25CeUlEIiwiZmluZEdsb2JhbFZlcnNpb25zIiwiZmluZFZlcnNpb25zIiwiZm9yZ290UGFzc3dvcmQiLCJhdXRoIiwiZ2V0QVBJVVJMIiwic2VydmVyVVJMIiwicm91dGVzIiwiYXBpIiwiZ2V0QWRtaW5VUkwiLCJhZG1pbiIsImdsb2JhbHMiLCJsb2dnZXIiLCJsb2dpbiIsInJlc2V0UGFzc3dvcmQiLCJyZXN0b3JlR2xvYmFsVmVyc2lvbiIsInJlc3RvcmVWZXJzaW9uIiwic2NoZW1hIiwic2VjcmV0Iiwic2VuZEVtYWlsIiwidHlwZXMiLCJ1bmxvY2siLCJ1cGRhdGVHbG9iYWwiLCJ1cGRhdGUiLCJ2YWxpZGF0aW9uUnVsZXMiLCJ2ZXJpZnlFbWFpbCIsInZlcnNpb25zIiwiZGVsZXRlIiwiZGVsZXRlTG9jYWwiLCJpbml0IiwiTG9nZ2VyIiwibG9nZ2VyT3B0aW9ucyIsImxvZ2dlckRlc3RpbmF0aW9uIiwiRXJyb3IiLCJjcnlwdG8iLCJjcmVhdGVIYXNoIiwiZGlnZXN0Iiwic2xpY2UiLCJmb3JFYWNoIiwiY29sbGVjdGlvbiIsInNsdWciLCJwYXlsb2FkIiwiZGlzYWJsZURCQ29ubmVjdCIsImNvbm5lY3QiLCJpbmZvIiwid2FybiIsImVtYWlsRGVmYXVsdHMiLCJidWlsZEVtYWlsIiwiYmluZCIsInNlcnZlckluaXRUZWxlbWV0cnkiLCJqd3RTdHJhdGVneUVuYWJsZWQiLCJyZWR1Y2UiLCJzdHJhdGVnaWVzIiwibGVuZ3RoIiwicHVzaCIsInVzZUFQSUtleSIsIm5hbWUiLCJhdXRoZW50aWNhdGUiLCJBUElLZXlBdXRoZW50aWNhdGlvbiIsImRpc2FibGVMb2NhbFN0cmF0ZWd5IiwiSldUQXV0aGVudGljYXRpb24iLCJkaXNhYmxlT25Jbml0Iiwib25Jbml0IiwiaW5pdGlhbGl6ZWQiLCJjYWNoZWQiLCJnbG9iYWwiLCJfcGF5bG9hZCIsInByb21pc2UiLCJlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQTBEYUEsV0FBVztlQUFYQTs7SUFnV2IsT0FBMEI7ZUFBMUI7O0lBU2FDLFVBQVU7ZUFBVkE7OzsrREE5Wk07eUJBdUNjO3dCQUNJO3FCQUNIOzhEQUNOOzhEQUNMOzBCQUNtQjtrRUFDcEI7K0RBQ1k7K0RBQ2Y7NEJBQytCOzs7Ozs7QUFLM0MsTUFBTUQ7SUFDWEUsZUFBOEI7SUFFOUJDLGNBRUksQ0FBQyxFQUFDO0lBRU5DLE9BQXVCO0lBRXZCOzs7O0dBSUMsR0FDREMsU0FBUyxPQUNQQztRQUVBLE1BQU0sRUFBRUQsTUFBTSxFQUFFLEdBQUdFLGNBQWU7UUFDbEMsT0FBT0YsT0FBVSxJQUFJLEVBQUVDO0lBQ3pCLEVBQUM7SUFFREUsR0FBdUI7SUFFdkJDLFVBQVVBLGdCQUFPLENBQUE7SUFFakJDLE1BQXVCO0lBRXZCQyxhQUEwQjtJQUUxQkMsVUFBVUEsZ0JBQU8sQ0FBQTtJQUVqQixnQ0FBZ0M7SUFDaEMsNkJBQTZCO0lBRTdCQyxXQUlrQjtJQUVsQjs7OztHQUlDLEdBQ0RDLE9BQU8sT0FDTFI7UUFFQSxNQUFNLEVBQUVRLElBQUksRUFBRSxHQUFHUCxjQUFlO1FBQ2hDLE9BQU9PLEtBQVEsSUFBSSxFQUFFUjtJQUN2QixFQUFDO0lBRURTLFdBQVcsT0FDVFQ7UUFFQSxNQUFNLEVBQUVTLFFBQVEsRUFBRSxHQUFHUixjQUFlO1FBQ3BDLE9BQU9RLFNBQVksSUFBSSxFQUFFVDtJ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
|
|
274
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEV4ZWN1dGlvblJlc3VsdCwgR3JhcGhRTFNjaGVtYSwgVmFsaWRhdGlvblJ1bGUgfSBmcm9tICdncmFwaHFsJ1xuaW1wb3J0IHR5cGUgeyBPcGVyYXRpb25BcmdzLCBSZXF1ZXN0IGFzIGdyYXBoUUxSZXF1ZXN0IH0gZnJvbSAnZ3JhcGhxbC1odHRwJ1xuaW1wb3J0IHR5cGUgeyBTZW5kTWFpbE9wdGlvbnMgfSBmcm9tICdub2RlbWFpbGVyJ1xuaW1wb3J0IHR5cGUgcGlubyBmcm9tICdwaW5vJ1xuXG5pbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0bydcblxuaW1wb3J0IHR5cGUgeyBBdXRoU3RyYXRlZ3kgfSBmcm9tICcuL2F1dGgnXG5pbXBvcnQgdHlwZSB7IFJlc3VsdCBhcyBGb3Jnb3RQYXNzd29yZFJlc3VsdCB9IGZyb20gJy4vYXV0aC9vcGVyYXRpb25zL2ZvcmdvdFBhc3N3b3JkJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIEZvcmdvdFBhc3N3b3JkT3B0aW9ucyB9IGZyb20gJy4vYXV0aC9vcGVyYXRpb25zL2xvY2FsL2ZvcmdvdFBhc3N3b3JkJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIExvZ2luT3B0aW9ucyB9IGZyb20gJy4vYXV0aC9vcGVyYXRpb25zL2xvY2FsL2xvZ2luJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIFJlc2V0UGFzc3dvcmRPcHRpb25zIH0gZnJvbSAnLi9hdXRoL29wZXJhdGlvbnMvbG9jYWwvcmVzZXRQYXNzd29yZCdcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBVbmxvY2tPcHRpb25zIH0gZnJvbSAnLi9hdXRoL29wZXJhdGlvbnMvbG9jYWwvdW5sb2NrJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIFZlcmlmeUVtYWlsT3B0aW9ucyB9IGZyb20gJy4vYXV0aC9vcGVyYXRpb25zL2xvY2FsL3ZlcmlmeUVtYWlsJ1xuaW1wb3J0IHR5cGUgeyBSZXN1bHQgYXMgTG9naW5SZXN1bHQgfSBmcm9tICcuL2F1dGgvb3BlcmF0aW9ucy9sb2dpbidcbmltcG9ydCB0eXBlIHsgUmVzdWx0IGFzIFJlc2V0UGFzc3dvcmRSZXN1bHQgfSBmcm9tICcuL2F1dGgvb3BlcmF0aW9ucy9yZXNldFBhc3N3b3JkJ1xuaW1wb3J0IHR5cGUgeyBCdWxrT3BlcmF0aW9uUmVzdWx0LCBDb2xsZWN0aW9uLCBUeXBlV2l0aElEIH0gZnJvbSAnLi9jb2xsZWN0aW9ucy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgQ3JlYXRlT3B0aW9ucyB9IGZyb20gJy4vY29sbGVjdGlvbnMvb3BlcmF0aW9ucy9sb2NhbC9jcmVhdGUnXG5pbXBvcnQgdHlwZSB7XG4gIEJ5SURPcHRpb25zIGFzIERlbGV0ZUJ5SURPcHRpb25zLFxuICBNYW55T3B0aW9ucyBhcyBEZWxldGVNYW55T3B0aW9ucyxcbiAgT3B0aW9ucyBhcyBEZWxldGVPcHRpb25zLFxufSBmcm9tICcuL2NvbGxlY3Rpb25zL29wZXJhdGlvbnMvbG9jYWwvZGVsZXRlJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIEZpbmRPcHRpb25zIH0gZnJvbSAnLi9jb2xsZWN0aW9ucy9vcGVyYXRpb25zL2xvY2FsL2ZpbmQnXG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgRmluZEJ5SURPcHRpb25zIH0gZnJvbSAnLi9jb2xsZWN0aW9ucy9vcGVyYXRpb25zL2xvY2FsL2ZpbmRCeUlEJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIEZpbmRWZXJzaW9uQnlJRE9wdGlvbnMgfSBmcm9tICcuL2NvbGxlY3Rpb25zL29wZXJhdGlvbnMvbG9jYWwvZmluZFZlcnNpb25CeUlEJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIEZpbmRWZXJzaW9uc09wdGlvbnMgfSBmcm9tICcuL2NvbGxlY3Rpb25zL29wZXJhdGlvbnMvbG9jYWwvZmluZFZlcnNpb25zJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIFJlc3RvcmVWZXJzaW9uT3B0aW9ucyB9IGZyb20gJy4vY29sbGVjdGlvbnMvb3BlcmF0aW9ucy9sb2NhbC9yZXN0b3JlVmVyc2lvbidcbmltcG9ydCB0eXBlIHtcbiAgQnlJRE9wdGlvbnMgYXMgVXBkYXRlQnlJRE9wdGlvbnMsXG4gIE1hbnlPcHRpb25zIGFzIFVwZGF0ZU1hbnlPcHRpb25zLFxuICBPcHRpb25zIGFzIFVwZGF0ZU9wdGlvbnMsXG59IGZyb20gJy4vY29sbGVjdGlvbnMvb3BlcmF0aW9ucy9sb2NhbC91cGRhdGUnXG5pbXBvcnQgdHlwZSB7IEVtYWlsT3B0aW9ucywgSW5pdE9wdGlvbnMsIFNhbml0aXplZENvbmZpZyB9IGZyb20gJy4vY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBCYXNlRGF0YWJhc2VBZGFwdGVyLCBQYWdpbmF0ZWREb2NzIH0gZnJvbSAnLi9kYXRhYmFzZS90eXBlcydcbmltcG9ydCB0eXBlIHsgQnVpbGRFbWFpbFJlc3VsdCB9IGZyb20gJy4vZW1haWwvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFR5cGVXaXRoSUQgYXMgR2xvYmFsVHlwZVdpdGhJRCwgR2xvYmFscyB9IGZyb20gJy4vZ2xvYmFscy9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgRmluZEdsb2JhbE9wdGlvbnMgfSBmcm9tICcuL2dsb2JhbHMvb3BlcmF0aW9ucy9sb2NhbC9maW5kT25lJ1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIEZpbmRHbG9iYWxWZXJzaW9uQnlJRE9wdGlvbnMgfSBmcm9tICcuL2dsb2JhbHMvb3BlcmF0aW9ucy9sb2NhbC9maW5kVmVyc2lvbkJ5SUQnXG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgRmluZEdsb2JhbFZlcnNpb25zT3B0aW9ucyB9IGZyb20gJy4vZ2xvYmFscy9vcGVyYXRpb25zL2xvY2FsL2ZpbmRWZXJzaW9ucydcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBSZXN0b3JlR2xvYmFsVmVyc2lvbk9wdGlvbnMgfSBmcm9tICcuL2dsb2JhbHMvb3BlcmF0aW9ucy9sb2NhbC9yZXN0b3JlVmVyc2lvbidcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBVcGRhdGVHbG9iYWxPcHRpb25zIH0gZnJvbSAnLi9nbG9iYWxzL29wZXJhdGlvbnMvbG9jYWwvdXBkYXRlJ1xuaW1wb3J0IHR5cGUgeyBUeXBlV2l0aFZlcnNpb24gfSBmcm9tICcuL3ZlcnNpb25zL3R5cGVzJ1xuXG5pbXBvcnQgeyBkZWNyeXB0LCBlbmNyeXB0IH0gZnJvbSAnLi9hdXRoL2NyeXB0bydcbmltcG9ydCB7IEFQSUtleUF1dGhlbnRpY2F0aW9uIH0gZnJvbSAnLi9hdXRoL3N0cmF0ZWdpZXMvYXBpS2V5J1xuaW1wb3J0IHsgSldUQXV0aGVudGljYXRpb24gfSBmcm9tICcuL2F1dGgvc3RyYXRlZ2llcy9qd3QnXG5pbXBvcnQgbG9jYWxPcGVyYXRpb25zIGZyb20gJy4vY29sbGVjdGlvbnMvb3BlcmF0aW9ucy9sb2NhbCdcbmltcG9ydCB2YWxpZGF0ZSBmcm9tICcuL2NvbmZpZy92YWxpZGF0ZSdcbmltcG9ydCBidWlsZEVtYWlsIGZyb20gJy4vZW1haWwvYnVpbGQnXG5pbXBvcnQgeyBkZWZhdWx0cyBhcyBlbWFpbERlZmF1bHRzIH0gZnJvbSAnLi9lbWFpbC9kZWZhdWx0cydcbmltcG9ydCBzZW5kRW1haWwgZnJvbSAnLi9lbWFpbC9zZW5kRW1haWwnXG5pbXBvcnQgbG9jYWxHbG9iYWxPcGVyYXRpb25zIGZyb20gJy4vZ2xvYmFscy9vcGVyYXRpb25zL2xvY2FsJ1xuaW1wb3J0IExvZ2dlciBmcm9tICcuL3V0aWxpdGllcy9sb2dnZXInXG5pbXBvcnQgeyBzZXJ2ZXJJbml0IGFzIHNlcnZlckluaXRUZWxlbWV0cnkgfSBmcm9tICcuL3V0aWxpdGllcy90ZWxlbWV0cnkvZXZlbnRzL3NlcnZlckluaXQnXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFBheWxvYWRcbiAqL1xuZXhwb3J0IGNsYXNzIEJhc2VQYXlsb2FkPFRHZW5lcmF0ZWRUeXBlcyBleHRlbmRzIEdlbmVyYXRlZFR5cGVzPiB7XG4gIGF1dGhTdHJhdGVnaWVzOiBBdXRoU3RyYXRlZ3lbXVxuXG4gIGNvbGxlY3Rpb25zOiB7XG4gICAgW3NsdWc6IG51bWJlciB8IHN0cmluZyB8IHN5bWJvbF06IENvbGxlY3Rpb25cbiAgfSA9IHt9XG5cbiAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWdcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFBlcmZvcm1zIGNyZWF0ZSBvcGVyYXRpb25cbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHJldHVybnMgY3JlYXRlZCBkb2N1bWVudFxuICAgKi9cbiAgY3JlYXRlID0gYXN5bmMgPFQgZXh0ZW5kcyBrZXlvZiBUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ10+KFxuICAgIG9wdGlvbnM6IENyZWF0ZU9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8VEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddW1RdPiA9PiB7XG4gICAgY29uc3QgeyBjcmVhdGUgfSA9IGxvY2FsT3BlcmF0aW9uc1xuICAgIHJldHVybiBjcmVhdGU8VD4odGhpcywgb3B0aW9ucylcbiAgfVxuXG4gIGRiOiBCYXNlRGF0YWJhc2VBZGFwdGVyXG5cbiAgZGVjcnlwdCA9IGRlY3J5cHRcblxuICBlbWFpbDogQnVpbGRFbWFpbFJlc3VsdFxuXG4gIGVtYWlsT3B0aW9uczogRW1haWxPcHRpb25zXG5cbiAgZW5jcnlwdCA9IGVuY3J5cHRcblxuICAvLyBUT0RPOiByZS1pbXBsZW1lbnQgb3IgcmVtb3ZlP1xuICAvLyBlcnJvckhhbmRsZXI6IEVycm9ySGFuZGxlclxuXG4gIGV4dGVuc2lvbnM6IChhcmdzOiB7XG4gICAgYXJnczogT3BlcmF0aW9uQXJnczxhbnk+XG4gICAgcmVxOiBncmFwaFFMUmVxdWVzdDx1bmtub3duLCB1bmtub3duPlxuICAgIHJlc3VsdDogRXhlY3V0aW9uUmVzdWx0XG4gIH0pID0+IFByb21pc2U8YW55PlxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRmluZCBkb2N1bWVudHMgd2l0aCBjcml0ZXJpYVxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKiBAcmV0dXJucyBkb2N1bWVudHMgc2F0aXNmeWluZyBxdWVyeVxuICAgKi9cbiAgZmluZCA9IGFzeW5jIDxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddPihcbiAgICBvcHRpb25zOiBGaW5kT3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxQYWdpbmF0ZWREb2NzPFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXVtUXT4+ID0+IHtcbiAgICBjb25zdCB7IGZpbmQgfSA9IGxvY2FsT3BlcmF0aW9uc1xuICAgIHJldHVybiBmaW5kPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICBmaW5kQnlJRCA9IGFzeW5jIDxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddPihcbiAgICBvcHRpb25zOiBGaW5kQnlJRE9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8VEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddW1RdPiA9PiB7XG4gICAgY29uc3QgeyBmaW5kQnlJRCB9ID0gbG9jYWxPcGVyYXRpb25zXG4gICAgcmV0dXJuIGZpbmRCeUlEPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICBmaW5kR2xvYmFsID0gYXN5bmMgPFQgZXh0ZW5kcyBrZXlvZiBUR2VuZXJhdGVkVHlwZXNbJ2dsb2JhbHMnXT4oXG4gICAgb3B0aW9uczogRmluZEdsb2JhbE9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8VEdlbmVyYXRlZFR5cGVzWydnbG9iYWxzJ11bVF0+ID0+IHtcbiAgICBjb25zdCB7IGZpbmRPbmUgfSA9IGxvY2FsR2xvYmFsT3BlcmF0aW9uc1xuICAgIHJldHVybiBmaW5kT25lPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEZpbmQgZ2xvYmFsIHZlcnNpb24gYnkgSURcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHJldHVybnMgZ2xvYmFsIHZlcnNpb24gd2l0aCBzcGVjaWZpZWQgSURcbiAgICovXG4gIGZpbmRHbG9iYWxWZXJzaW9uQnlJRCA9IGFzeW5jIDxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydnbG9iYWxzJ10+KFxuICAgIG9wdGlvbnM6IEZpbmRHbG9iYWxWZXJzaW9uQnlJRE9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8VHlwZVdpdGhWZXJzaW9uPFRHZW5lcmF0ZWRUeXBlc1snZ2xvYmFscyddW1RdPj4gPT4ge1xuICAgIGNvbnN0IHsgZmluZFZlcnNpb25CeUlEIH0gPSBsb2NhbEdsb2JhbE9wZXJhdGlvbnNcbiAgICByZXR1cm4gZmluZFZlcnNpb25CeUlEPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEZpbmQgZ2xvYmFsIHZlcnNpb25zIHdpdGggY3JpdGVyaWFcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHJldHVybnMgdmVyc2lvbnMgc2F0aXNmeWluZyBxdWVyeVxuICAgKi9cbiAgZmluZEdsb2JhbFZlcnNpb25zID0gYXN5bmMgPFQgZXh0ZW5kcyBrZXlvZiBUR2VuZXJhdGVkVHlwZXNbJ2dsb2JhbHMnXT4oXG4gICAgb3B0aW9uczogRmluZEdsb2JhbFZlcnNpb25zT3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxQYWdpbmF0ZWREb2NzPFR5cGVXaXRoVmVyc2lvbjxUR2VuZXJhdGVkVHlwZXNbJ2dsb2JhbHMnXVtUXT4+PiA9PiB7XG4gICAgY29uc3QgeyBmaW5kVmVyc2lvbnMgfSA9IGxvY2FsR2xvYmFsT3BlcmF0aW9uc1xuICAgIHJldHVybiBmaW5kVmVyc2lvbnM8VD4odGhpcywgb3B0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRmluZCB2ZXJzaW9uIGJ5IElEXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqIEByZXR1cm5zIHZlcnNpb24gd2l0aCBzcGVjaWZpZWQgSURcbiAgICovXG4gIGZpbmRWZXJzaW9uQnlJRCA9IGFzeW5jIDxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddPihcbiAgICBvcHRpb25zOiBGaW5kVmVyc2lvbkJ5SURPcHRpb25zPFQ+LFxuICApOiBQcm9taXNlPFR5cGVXaXRoVmVyc2lvbjxUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVF0+PiA9PiB7XG4gICAgY29uc3QgeyBmaW5kVmVyc2lvbkJ5SUQgfSA9IGxvY2FsT3BlcmF0aW9uc1xuICAgIHJldHVybiBmaW5kVmVyc2lvbkJ5SUQ8VD4odGhpcywgb3B0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRmluZCB2ZXJzaW9ucyB3aXRoIGNyaXRlcmlhXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqIEByZXR1cm5zIHZlcnNpb25zIHNhdGlzZnlpbmcgcXVlcnlcbiAgICovXG4gIGZpbmRWZXJzaW9ucyA9IGFzeW5jIDxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddPihcbiAgICBvcHRpb25zOiBGaW5kVmVyc2lvbnNPcHRpb25zPFQ+LFxuICApOiBQcm9taXNlPFBhZ2luYXRlZERvY3M8VHlwZVdpdGhWZXJzaW9uPFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXVtUXT4+PiA9PiB7XG4gICAgY29uc3QgeyBmaW5kVmVyc2lvbnMgfSA9IGxvY2FsT3BlcmF0aW9uc1xuICAgIHJldHVybiBmaW5kVmVyc2lvbnM8VD4odGhpcywgb3B0aW9ucylcbiAgfVxuXG4gIGZvcmdvdFBhc3N3b3JkID0gYXN5bmMgPFQgZXh0ZW5kcyBrZXlvZiBUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ10+KFxuICAgIG9wdGlvbnM6IEZvcmdvdFBhc3N3b3JkT3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxGb3Jnb3RQYXNzd29yZFJlc3VsdD4gPT4ge1xuICAgIGNvbnN0IHsgZm9yZ290UGFzc3dvcmQgfSA9IGxvY2FsT3BlcmF0aW9ucy5hdXRoXG4gICAgcmV0dXJuIGZvcmdvdFBhc3N3b3JkPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICBnZXRBUElVUkwgPSAoKTogc3RyaW5nID0+IGAke3RoaXMuY29uZmlnLnNlcnZlclVSTH0ke3RoaXMuY29uZmlnLnJvdXRlcy5hcGl9YFxuXG4gIGdldEFkbWluVVJMID0gKCk6IHN0cmluZyA9PiBgJHt0aGlzLmNvbmZpZy5zZXJ2ZXJVUkx9JHt0aGlzLmNvbmZpZy5yb3V0ZXMuYWRtaW59YFxuXG4gIGdsb2JhbHM6IEdsb2JhbHNcblxuICBsb2dnZXI6IHBpbm8uTG9nZ2VyXG5cbiAgbG9naW4gPSBhc3luYyA8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gICAgb3B0aW9uczogTG9naW5PcHRpb25zPFQ+LFxuICApOiBQcm9taXNlPExvZ2luUmVzdWx0ICYgeyB1c2VyOiBUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVF0gfT4gPT4ge1xuICAgIGNvbnN0IHsgbG9naW4gfSA9IGxvY2FsT3BlcmF0aW9ucy5hdXRoXG4gICAgcmV0dXJuIGxvZ2luPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEZpbmQgZG9jdW1lbnQgYnkgSURcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHJldHVybnMgZG9jdW1lbnQgd2l0aCBzcGVjaWZpZWQgSURcbiAgICovXG5cbiAgcmVzZXRQYXNzd29yZCA9IGFzeW5jIDxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddPihcbiAgICBvcHRpb25zOiBSZXNldFBhc3N3b3JkT3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxSZXNldFBhc3N3b3JkUmVzdWx0PiA9PiB7XG4gICAgY29uc3QgeyByZXNldFBhc3N3b3JkIH0gPSBsb2NhbE9wZXJhdGlvbnMuYXV0aFxuICAgIHJldHVybiByZXNldFBhc3N3b3JkPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlc3RvcmUgZ2xvYmFsIHZlcnNpb24gYnkgSURcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHJldHVybnMgdmVyc2lvbiB3aXRoIHNwZWNpZmllZCBJRFxuICAgKi9cbiAgcmVzdG9yZUdsb2JhbFZlcnNpb24gPSBhc3luYyA8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snZ2xvYmFscyddPihcbiAgICBvcHRpb25zOiBSZXN0b3JlR2xvYmFsVmVyc2lvbk9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8VEdlbmVyYXRlZFR5cGVzWydnbG9iYWxzJ11bVF0+ID0+IHtcbiAgICBjb25zdCB7IHJlc3RvcmVWZXJzaW9uIH0gPSBsb2NhbEdsb2JhbE9wZXJhdGlvbnNcbiAgICByZXR1cm4gcmVzdG9yZVZlcnNpb248VD4odGhpcywgb3B0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVzdG9yZSB2ZXJzaW9uIGJ5IElEXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqIEByZXR1cm5zIHZlcnNpb24gd2l0aCBzcGVjaWZpZWQgSURcbiAgICovXG4gIHJlc3RvcmVWZXJzaW9uID0gYXN5bmMgPFQgZXh0ZW5kcyBrZXlvZiBUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ10+KFxuICAgIG9wdGlvbnM6IFJlc3RvcmVWZXJzaW9uT3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVF0+ID0+IHtcbiAgICBjb25zdCB7IHJlc3RvcmVWZXJzaW9uIH0gPSBsb2NhbE9wZXJhdGlvbnNcbiAgICByZXR1cm4gcmVzdG9yZVZlcnNpb248VD4odGhpcywgb3B0aW9ucylcbiAgfVxuXG4gIHNjaGVtYTogR3JhcGhRTFNjaGVtYVxuXG4gIHNlY3JldDogc3RyaW5nXG5cbiAgc2VuZEVtYWlsOiAobWVzc2FnZTogU2VuZE1haWxPcHRpb25zKSA9PiBQcm9taXNlPHVua25vd24+XG5cbiAgdHlwZXM6IHtcbiAgICBhcnJheVR5cGVzOiBhbnlcbiAgICBibG9ja0lucHV0VHlwZXM6IGFueVxuICAgIGJsb2NrVHlwZXM6IGFueVxuICAgIGZhbGxiYWNrTG9jYWxlSW5wdXRUeXBlPzogYW55XG4gICAgZ3JvdXBUeXBlczogYW55XG4gICAgbG9jYWxlSW5wdXRUeXBlPzogYW55XG4gICAgdGFiVHlwZXM6IGFueVxuICB9XG5cbiAgdW5sb2NrID0gYXN5bmMgPFQgZXh0ZW5kcyBrZXlvZiBUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ10+KFxuICAgIG9wdGlvbnM6IFVubG9ja09wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgIGNvbnN0IHsgdW5sb2NrIH0gPSBsb2NhbE9wZXJhdGlvbnMuYXV0aFxuICAgIHJldHVybiB1bmxvY2sodGhpcywgb3B0aW9ucylcbiAgfVxuXG4gIHVwZGF0ZUdsb2JhbCA9IGFzeW5jIDxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydnbG9iYWxzJ10+KFxuICAgIG9wdGlvbnM6IFVwZGF0ZUdsb2JhbE9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8VEdlbmVyYXRlZFR5cGVzWydnbG9iYWxzJ11bVF0+ID0+IHtcbiAgICBjb25zdCB7IHVwZGF0ZSB9ID0gbG9jYWxHbG9iYWxPcGVyYXRpb25zXG4gICAgcmV0dXJuIHVwZGF0ZTxUPih0aGlzLCBvcHRpb25zKVxuICB9XG5cbiAgdmFsaWRhdGlvblJ1bGVzOiAoYXJnczogT3BlcmF0aW9uQXJnczxhbnk+KSA9PiBWYWxpZGF0aW9uUnVsZVtdXG5cbiAgdmVyaWZ5RW1haWwgPSBhc3luYyA8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gICAgb3B0aW9uczogVmVyaWZ5RW1haWxPcHRpb25zPFQ+LFxuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICBjb25zdCB7IHZlcmlmeUVtYWlsIH0gPSBsb2NhbE9wZXJhdGlvbnMuYXV0aFxuICAgIHJldHVybiB2ZXJpZnlFbWFpbCh0aGlzLCBvcHRpb25zKVxuICB9XG5cbiAgdmVyc2lvbnM6IHtcbiAgICBbc2x1Zzogc3RyaW5nXTogYW55IC8vIFRPRE86IFR5cGUgdGhpc1xuICB9ID0ge31cblxuICBkZWxldGU8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gICAgb3B0aW9uczogRGVsZXRlT3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxCdWxrT3BlcmF0aW9uUmVzdWx0PFQ+IHwgVEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddW1RdPiB7XG4gICAgY29uc3QgeyBkZWxldGVMb2NhbCB9ID0gbG9jYWxPcGVyYXRpb25zXG4gICAgcmV0dXJuIGRlbGV0ZUxvY2FsPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIGRlbGV0ZSBvbmUgb3IgbW9yZSBkb2N1bWVudHNcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHJldHVybnMgVXBkYXRlZCBkb2N1bWVudChzKVxuICAgKi9cbiAgZGVsZXRlPFQgZXh0ZW5kcyBrZXlvZiBUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ10+KFxuICAgIG9wdGlvbnM6IERlbGV0ZUJ5SURPcHRpb25zPFQ+LFxuICApOiBQcm9taXNlPFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXVtUXT5cblxuICBkZWxldGU8VCBleHRlbmRzIGtleW9mIFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXT4oXG4gICAgb3B0aW9uczogRGVsZXRlTWFueU9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8QnVsa09wZXJhdGlvblJlc3VsdDxUPj5cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEluaXRpYWxpemVzIFBheWxvYWRcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICovXG4gIC8vIEB0cy1leHBlY3QtZXJyb3IgLy8gVE9ETzogVHlwZVNjcmlwdCBoYWxsdWNpbmF0aW5nIGFnYWluLiBmaXggbGF0ZXJcbiAgYXN5bmMgaW5pdChvcHRpb25zOiBJbml0T3B0aW9ucyk6IFByb21pc2U8UGF5bG9hZD4ge1xuICAgIHRoaXMubG9nZ2VyID0gTG9nZ2VyKCdwYXlsb2FkJywgb3B0aW9ucy5sb2dnZXJPcHRpb25zLCBvcHRpb25zLmxvZ2dlckRlc3RpbmF0aW9uKVxuXG4gICAgdGhpcy5jb25maWcgPSBhd2FpdCBvcHRpb25zLmNvbmZpZ1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGF3YWl0IHZhbGlkYXRlKHRoaXMuY29uZmlnLCB0aGlzLmxvZ2dlcilcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY29uZmlnLnNlY3JldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvcjogbWlzc2luZyBzZWNyZXQga2V5LiBBIHNlY3JldCBrZXkgaXMgbmVlZGVkIHRvIHNlY3VyZSBQYXlsb2FkLicpXG4gICAgfVxuXG4gICAgdGhpcy5zZWNyZXQgPSBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHRoaXMuY29uZmlnLnNlY3JldCkuZGlnZXN0KCdoZXgnKS5zbGljZSgwLCAzMilcblxuICAgIHRoaXMuZ2xvYmFscyA9IHtcbiAgICAgIGNvbmZpZzogdGhpcy5jb25maWcuZ2xvYmFscyxcbiAgICB9XG5cbiAgICB0aGlzLmNvbmZpZy5jb2xsZWN0aW9ucy5mb3JFYWNoKChjb2xsZWN0aW9uKSA9PiB7XG4gICAgICB0aGlzLmNvbGxlY3Rpb25zW2NvbGxlY3Rpb24uc2x1Z10gPSB7XG4gICAgICAgIGNvbmZpZzogY29sbGVjdGlvbixcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgdGhpcy5kYiA9IHRoaXMuY29uZmlnLmRiLmluaXQoeyBwYXlsb2FkOiB0aGlzIH0pXG4gICAgdGhpcy5kYi5wYXlsb2FkID0gdGhpc1xuXG4gICAgaWYgKHRoaXMuZGI/LmluaXQpIHtcbiAgICAgIGF3YWl0IHRoaXMuZGIuaW5pdCh0aGlzKVxuICAgIH1cblxuICAgIGlmICghb3B0aW9ucy5kaXNhYmxlREJDb25uZWN0ICYmIHRoaXMuZGIuY29ubmVjdCkge1xuICAgICAgYXdhaXQgdGhpcy5kYi5jb25uZWN0KClcbiAgICB9XG5cbiAgICB0aGlzLmxvZ2dlci5pbmZvKCdTdGFydGluZyBQYXlsb2FkLi4uJylcblxuICAgIC8vIENvbmZpZ3VyZSBlbWFpbCBzZXJ2aWNlXG4gICAgY29uc3QgZW1haWxPcHRpb25zID0gb3B0aW9ucy5lbWFpbCA/IHsgLi4ub3B0aW9ucy5lbWFpbCB9IDogdGhpcy5jb25maWcuZW1haWxcbiAgICBpZiAob3B0aW9ucy5lbWFpbCAmJiB0aGlzLmNvbmZpZy5lbWFpbCkge1xuICAgICAgdGhpcy5sb2dnZXIud2FybihcbiAgICAgICAgJ0VtYWlsIG9wdGlvbnMgcHJvdmlkZWQgaW4gYm90aCBpbml0IG9wdGlvbnMgYW5kIGNvbmZpZy4gVXNpbmcgaW5pdCBvcHRpb25zLicsXG4gICAgICApXG4gICAgfVxuXG4gICAgdGhpcy5lbWFpbE9wdGlvbnMgPSBlbWFpbE9wdGlvbnMgPz8gZW1haWxEZWZhdWx0c1xuICAgIHRoaXMuZW1haWwgPSBidWlsZEVtYWlsKHRoaXMuZW1haWxPcHRpb25zLCB0aGlzLmxvZ2dlcilcbiAgICB0aGlzLnNlbmRFbWFpbCA9IHNlbmRFbWFpbC5iaW5kKHRoaXMpXG5cbiAgICBzZXJ2ZXJJbml0VGVsZW1ldHJ5KHRoaXMpXG5cbiAgICAvLyAxLiBsb29wIG92ZXIgY29sbGVjdGlvbnMsIGlmIGNvbGxlY3Rpb24gaGFzIGF1dGggc3RyYXRlZ3ksIGluaXRpYWxpemUgYW5kIHB1c2ggdG8gYXJyYXlcbiAgICBsZXQgand0U3RyYXRlZ3lFbmFibGVkID0gZmFsc2VcbiAgICB0aGlzLmF1dGhTdHJhdGVnaWVzID0gdGhpcy5jb25maWcuY29sbGVjdGlvbnMucmVkdWNlKChhdXRoU3RyYXRlZ2llcywgY29sbGVjdGlvbikgPT4ge1xuICAgICAgaWYgKGNvbGxlY3Rpb24/LmF1dGgpIHtcbiAgICAgICAgaWYgKGNvbGxlY3Rpb24uYXV0aC5zdHJhdGVnaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBhdXRoU3RyYXRlZ2llcy5wdXNoKC4uLmNvbGxlY3Rpb24uYXV0aC5zdHJhdGVnaWVzKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMi4gaWYgYXBpIGtleSBlbmFibGVkLCBwdXNoIGFwaSBrZXkgc3RyYXRlZ3kgaW50byB0aGUgYXJyYXlcbiAgICAgICAgaWYgKGNvbGxlY3Rpb24uYXV0aD8udXNlQVBJS2V5KSB7XG4gICAgICAgICAgYXV0aFN0cmF0ZWdpZXMucHVzaCh7XG4gICAgICAgICAgICBuYW1lOiBgJHtjb2xsZWN0aW9uLnNsdWd9LWFwaS1rZXlgLFxuICAgICAgICAgICAgYXV0aGVudGljYXRlOiBBUElLZXlBdXRoZW50aWNhdGlvbihjb2xsZWN0aW9uKSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMy4gaWYgbG9jYWxTdHJhdGVneSBmbGFnIGlzIHRydWVcbiAgICAgICAgaWYgKCFjb2xsZWN0aW9uLmF1dGguZGlzYWJsZUxvY2FsU3RyYXRlZ3kgJiYgIWp3dFN0cmF0ZWd5RW5hYmxlZCkge1xuICAgICAgICAgIGp3dFN0cmF0ZWd5RW5hYmxlZCA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gYXV0aFN0cmF0ZWdpZXNcbiAgICB9LCBbXSBhcyBBdXRoU3RyYXRlZ3lbXSlcblxuICAgIC8vIDQuIGlmIGVuYWJsZWQsIHB1c2ggand0IHN0cmF0ZWd5IGludG8gYXV0aFN0cmF0ZWdpZXMgbGFzdFxuICAgIGlmIChqd3RTdHJhdGVneUVuYWJsZWQpIHtcbiAgICAgIHRoaXMuYXV0aFN0cmF0ZWdpZXMucHVzaCh7XG4gICAgICAgIG5hbWU6ICdsb2NhbC1qd3QnLFxuICAgICAgICBhdXRoZW50aWNhdGU6IEpXVEF1dGhlbnRpY2F0aW9uLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAoIW9wdGlvbnMuZGlzYWJsZU9uSW5pdCkge1xuICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLm9uSW5pdCA9PT0gJ2Z1bmN0aW9uJykgYXdhaXQgb3B0aW9ucy5vbkluaXQodGhpcylcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25maWcub25Jbml0ID09PSAnZnVuY3Rpb24nKSBhd2FpdCB0aGlzLmNvbmZpZy5vbkluaXQodGhpcylcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgdXBkYXRlPFQgZXh0ZW5kcyBrZXlvZiBUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ10+KFxuICAgIG9wdGlvbnM6IFVwZGF0ZU1hbnlPcHRpb25zPFQ+LFxuICApOiBQcm9taXNlPEJ1bGtPcGVyYXRpb25SZXN1bHQ8VD4+XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgb25lIG9yIG1vcmUgZG9jdW1lbnRzXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqIEByZXR1cm5zIFVwZGF0ZWQgZG9jdW1lbnQocylcbiAgICovXG4gIHVwZGF0ZTxUIGV4dGVuZHMga2V5b2YgVEdlbmVyYXRlZFR5cGVzWydjb2xsZWN0aW9ucyddPihcbiAgICBvcHRpb25zOiBVcGRhdGVCeUlET3B0aW9uczxUPixcbiAgKTogUHJvbWlzZTxUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ11bVF0+XG5cbiAgdXBkYXRlPFQgZXh0ZW5kcyBrZXlvZiBUR2VuZXJhdGVkVHlwZXNbJ2NvbGxlY3Rpb25zJ10+KFxuICAgIG9wdGlvbnM6IFVwZGF0ZU9wdGlvbnM8VD4sXG4gICk6IFByb21pc2U8QnVsa09wZXJhdGlvblJlc3VsdDxUPiB8IFRHZW5lcmF0ZWRUeXBlc1snY29sbGVjdGlvbnMnXVtUXT4ge1xuICAgIGNvbnN0IHsgdXBkYXRlIH0gPSBsb2NhbE9wZXJhdGlvbnNcbiAgICByZXR1cm4gdXBkYXRlPFQ+KHRoaXMsIG9wdGlvbnMpXG4gIH1cbn1cblxuY29uc3QgaW5pdGlhbGl6ZWQgPSBuZXcgQmFzZVBheWxvYWQoKVxuXG5leHBvcnQgZGVmYXVsdCBpbml0aWFsaXplZFxuXG5sZXQgY2FjaGVkID0gZ2xvYmFsLl9wYXlsb2FkXG5cbmlmICghY2FjaGVkKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tdWx0aS1hc3NpZ25cbiAgY2FjaGVkID0gZ2xvYmFsLl9wYXlsb2FkID0geyBwYXlsb2FkOiBudWxsLCBwcm9taXNlOiBudWxsIH1cbn1cblxuZXhwb3J0IGNvbnN0IGdldFBheWxvYWQgPSBhc3luYyAob3B0aW9ucz86IEluaXRPcHRpb25zKTogUHJvbWlzZTxCYXNlUGF5bG9hZDxHZW5lcmF0ZWRUeXBlcz4+ID0+IHtcbiAgaWYgKGNhY2hlZC5wYXlsb2FkKSB7XG4gICAgcmV0dXJuIGNhY2hlZC5wYXlsb2FkXG4gIH1cblxuICBpZiAoIWNhY2hlZC5wcm9taXNlKSB7XG4gICAgY2FjaGVkLnByb21pc2UgPSBuZXcgQmFzZVBheWxvYWQ8R2VuZXJhdGVkVHlwZXM+KCkuaW5pdChvcHRpb25zKVxuICB9XG5cbiAgdHJ5IHtcbiAgICBjYWNoZWQucGF5bG9hZCA9IGF3YWl0IGNhY2hlZC5wcm9taXNlXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjYWNoZWQucHJvbWlzZSA9IG51bGxcbiAgICB0aHJvdyBlXG4gIH1cblxuICByZXR1cm4gY2FjaGVkLnBheWxvYWRcbn1cblxudHlwZSBHZW5lcmF0ZWRUeXBlcyA9IHtcbiAgY29sbGVjdGlvbnM6IHtcbiAgICBbc2x1ZzogbnVtYmVyIHwgc3RyaW5nIHwgc3ltYm9sXTogVHlwZVdpdGhJRCAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIH1cbiAgZ2xvYmFsczoge1xuICAgIFtzbHVnOiBudW1iZXIgfCBzdHJpbmcgfCBzeW1ib2xdOiBHbG9iYWxUeXBlV2l0aElEICYgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgfVxufVxuXG50eXBlIFBheWxvYWQgPSBCYXNlUGF5bG9hZDxHZW5lcmF0ZWRUeXBlcz5cblxuaW50ZXJmYWNlIFJlcXVlc3RDb250ZXh0IHtcbiAgW2tleTogc3RyaW5nXTogdW5rbm93blxufVxuXG4vLyB0eXBlIERhdGFiYXNlQWRhcHRlciA9IEJhc2VEYXRhYmFzZUFkYXB0ZXJcblxuZXhwb3J0IHR5cGUgeyBHZW5lcmF0ZWRUeXBlcywgUGF5bG9hZCwgUmVxdWVzdENvbnRleHQgfVxuIl0sIm5hbWVzIjpbIkJhc2VQYXlsb2FkIiwiZ2V0UGF5bG9hZCIsImF1dGhTdHJhdGVnaWVzIiwiY29sbGVjdGlvbnMiLCJjb25maWciLCJjcmVhdGUiLCJvcHRpb25zIiwibG9jYWxPcGVyYXRpb25zIiwiZGIiLCJkZWNyeXB0IiwiZW1haWwiLCJlbWFpbE9wdGlvbnMiLCJlbmNyeXB0IiwiZXh0ZW5zaW9ucyIsImZpbmQiLCJmaW5kQnlJRCIsImZpbmRHbG9iYWwiLCJmaW5kT25lIiwibG9jYWxHbG9iYWxPcGVyYXRpb25zIiwiZmluZEdsb2JhbFZlcnNpb25CeUlEIiwiZmluZFZlcnNpb25CeUlEIiwiZmluZEdsb2JhbFZlcnNpb25zIiwiZmluZFZlcnNpb25zIiwiZm9yZ290UGFzc3dvcmQiLCJhdXRoIiwiZ2V0QVBJVVJMIiwic2VydmVyVVJMIiwicm91dGVzIiwiYXBpIiwiZ2V0QWRtaW5VUkwiLCJhZG1pbiIsImdsb2JhbHMiLCJsb2dnZXIiLCJsb2dpbiIsInJlc2V0UGFzc3dvcmQiLCJyZXN0b3JlR2xvYmFsVmVyc2lvbiIsInJlc3RvcmVWZXJzaW9uIiwic2NoZW1hIiwic2VjcmV0Iiwic2VuZEVtYWlsIiwidHlwZXMiLCJ1bmxvY2siLCJ1cGRhdGVHbG9iYWwiLCJ1cGRhdGUiLCJ2YWxpZGF0aW9uUnVsZXMiLCJ2ZXJpZnlFbWFpbCIsInZlcnNpb25zIiwiZGVsZXRlIiwiZGVsZXRlTG9jYWwiLCJpbml0IiwiTG9nZ2VyIiwibG9nZ2VyT3B0aW9ucyIsImxvZ2dlckRlc3RpbmF0aW9uIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwidmFsaWRhdGUiLCJFcnJvciIsImNyeXB0byIsImNyZWF0ZUhhc2giLCJkaWdlc3QiLCJzbGljZSIsImZvckVhY2giLCJjb2xsZWN0aW9uIiwic2x1ZyIsInBheWxvYWQiLCJkaXNhYmxlREJDb25uZWN0IiwiY29ubmVjdCIsImluZm8iLCJ3YXJuIiwiZW1haWxEZWZhdWx0cyIsImJ1aWxkRW1haWwiLCJiaW5kIiwic2VydmVySW5pdFRlbGVtZXRyeSIsImp3dFN0cmF0ZWd5RW5hYmxlZCIsInJlZHVjZSIsInN0cmF0ZWdpZXMiLCJsZW5ndGgiLCJwdXNoIiwidXNlQVBJS2V5IiwibmFtZSIsImF1dGhlbnRpY2F0ZSIsIkFQSUtleUF1dGhlbnRpY2F0aW9uIiwiZGlzYWJsZUxvY2FsU3RyYXRlZ3kiLCJKV1RBdXRoZW50aWNhdGlvbiIsImRpc2FibGVPbkluaXQiLCJvbkluaXQiLCJpbml0aWFsaXplZCIsImNhY2hlZCIsImdsb2JhbCIsIl9wYXlsb2FkIiwicHJvbWlzZSIsImUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBMkRhQSxXQUFXO2VBQVhBOztJQXFXYixPQUEwQjtlQUExQjs7SUFTYUMsVUFBVTtlQUFWQTs7OytEQXBhTTt5QkF1Q2M7d0JBQ0k7cUJBQ0g7OERBQ047aUVBQ1A7OERBQ0U7MEJBQ21CO2tFQUNwQjsrREFDWTsrREFDZjs0QkFDK0I7Ozs7OztBQUszQyxNQUFNRDtJQUNYRSxlQUE4QjtJQUU5QkMsY0FFSSxDQUFDLEVBQUM7SUFFTkMsT0FBdUI7SUFFdkI7Ozs7R0FJQyxHQUNEQyxTQUFTLE9BQ1BDO1FBRUEsTUFBTSxFQUFFRCxNQUFNLEVBQUUsR0FBR0UsY0FBZTtRQUNsQyxPQUFPRixPQUFVLElBQUksRUFBRUM7SUFDekIsRUFBQztJQUVERSxHQUF1QjtJQUV2QkMsVUFBVUEsZ0JBQU8sQ0FBQTtJQUVqQkMsTUFBdUI7SUFFdkJDLGFBQTBCO0lBRTFCQyxVQUFVQSxnQkFBTyxDQUFBO0lBRWpCLGdDQUFnQztJQUNoQyw2QkFBNkI7SUFFN0JDLFdBSWtC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
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import sharp from 'sharp';
|
|
3
1
|
export declare const percentToPixel: (value: any, dimension: any) => number;
|
|
4
|
-
export default function cropImage({ cropData, dimensions, file }: {
|
|
2
|
+
export default function cropImage({ cropData, dimensions, file, sharp }: {
|
|
5
3
|
cropData: any;
|
|
6
4
|
dimensions: any;
|
|
7
5
|
file: any;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
info: sharp.OutputInfo;
|
|
11
|
-
}>;
|
|
6
|
+
sharp: any;
|
|
7
|
+
}): Promise<any>;
|
|
12
8
|
//# sourceMappingURL=cropImage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cropImage.d.ts","sourceRoot":"","sources":["../../src/uploads/cropImage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cropImage.d.ts","sourceRoot":"","sources":["../../src/uploads/cropImage.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,wCAE1B,CAAA;AAED,wBAA8B,SAAS,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE;;;;;CAAA,gBAoB5E"}
|
|
@@ -16,16 +16,10 @@ _export(exports, {
|
|
|
16
16
|
return percentToPixel;
|
|
17
17
|
}
|
|
18
18
|
});
|
|
19
|
-
const _sharp = /*#__PURE__*/ _interop_require_default(require("sharp"));
|
|
20
|
-
function _interop_require_default(obj) {
|
|
21
|
-
return obj && obj.__esModule ? obj : {
|
|
22
|
-
default: obj
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
19
|
const percentToPixel = (value, dimension)=>{
|
|
26
20
|
return Math.floor(parseFloat(value) / 100 * dimension);
|
|
27
21
|
};
|
|
28
|
-
async function cropImage({ cropData, dimensions, file }) {
|
|
22
|
+
async function cropImage({ cropData, dimensions, file, sharp }) {
|
|
29
23
|
try {
|
|
30
24
|
const { height, width, x, y } = cropData;
|
|
31
25
|
const formattedCropData = {
|
|
@@ -34,7 +28,7 @@ async function cropImage({ cropData, dimensions, file }) {
|
|
|
34
28
|
top: percentToPixel(y, dimensions.height),
|
|
35
29
|
width: percentToPixel(width, dimensions.width)
|
|
36
30
|
};
|
|
37
|
-
const cropped = (
|
|
31
|
+
const cropped = sharp(file.tempFilePath || file.data).extract(formattedCropData);
|
|
38
32
|
return await cropped.toBuffer({
|
|
39
33
|
resolveWithObject: true
|
|
40
34
|
});
|
|
@@ -44,4 +38,4 @@ async function cropImage({ cropData, dimensions, file }) {
|
|
|
44
38
|
}
|
|
45
39
|
}
|
|
46
40
|
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2Nyb3BJbWFnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgcGVyY2VudFRvUGl4ZWwgPSAodmFsdWUsIGRpbWVuc2lvbikgPT4ge1xuICByZXR1cm4gTWF0aC5mbG9vcigocGFyc2VGbG9hdCh2YWx1ZSkgLyAxMDApICogZGltZW5zaW9uKVxufVxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBjcm9wSW1hZ2UoeyBjcm9wRGF0YSwgZGltZW5zaW9ucywgZmlsZSwgc2hhcnAgfSkge1xuICB0cnkge1xuICAgIGNvbnN0IHsgaGVpZ2h0LCB3aWR0aCwgeCwgeSB9ID0gY3JvcERhdGFcblxuICAgIGNvbnN0IGZvcm1hdHRlZENyb3BEYXRhID0ge1xuICAgICAgaGVpZ2h0OiBwZXJjZW50VG9QaXhlbChoZWlnaHQsIGRpbWVuc2lvbnMuaGVpZ2h0KSxcbiAgICAgIGxlZnQ6IHBlcmNlbnRUb1BpeGVsKHgsIGRpbWVuc2lvbnMud2lkdGgpLFxuICAgICAgdG9wOiBwZXJjZW50VG9QaXhlbCh5LCBkaW1lbnNpb25zLmhlaWdodCksXG4gICAgICB3aWR0aDogcGVyY2VudFRvUGl4ZWwod2lkdGgsIGRpbWVuc2lvbnMud2lkdGgpLFxuICAgIH1cblxuICAgIGNvbnN0IGNyb3BwZWQgPSBzaGFycChmaWxlLnRlbXBGaWxlUGF0aCB8fCBmaWxlLmRhdGEpLmV4dHJhY3QoZm9ybWF0dGVkQ3JvcERhdGEpXG5cbiAgICByZXR1cm4gYXdhaXQgY3JvcHBlZC50b0J1ZmZlcih7XG4gICAgICByZXNvbHZlV2l0aE9iamVjdDogdHJ1ZSxcbiAgICB9KVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIGNyb3BwaW5nIGltYWdlOmAsIGVycm9yKVxuICAgIHRocm93IGVycm9yXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJjcm9wSW1hZ2UiLCJwZXJjZW50VG9QaXhlbCIsInZhbHVlIiwiZGltZW5zaW9uIiwiTWF0aCIsImZsb29yIiwicGFyc2VGbG9hdCIsImNyb3BEYXRhIiwiZGltZW5zaW9ucyIsImZpbGUiLCJzaGFycCIsImhlaWdodCIsIndpZHRoIiwieCIsInkiLCJmb3JtYXR0ZWRDcm9wRGF0YSIsImxlZnQiLCJ0b3AiLCJjcm9wcGVkIiwidGVtcEZpbGVQYXRoIiwiZGF0YSIsImV4dHJhY3QiLCJ0b0J1ZmZlciIsInJlc29sdmVXaXRoT2JqZWN0IiwiZXJyb3IiLCJjb25zb2xlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQUlBLE9Bb0JDO2VBcEI2QkE7O0lBSmpCQyxjQUFjO2VBQWRBOzs7QUFBTixNQUFNQSxpQkFBaUIsQ0FBQ0MsT0FBT0M7SUFDcEMsT0FBT0MsS0FBS0MsS0FBSyxDQUFDLEFBQUNDLFdBQVdKLFNBQVMsTUFBT0M7QUFDaEQ7QUFFZSxlQUFlSCxVQUFVLEVBQUVPLFFBQVEsRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUVDLEtBQUssRUFBRTtJQUMzRSxJQUFJO1FBQ0YsTUFBTSxFQUFFQyxNQUFNLEVBQUVDLEtBQUssRUFBRUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUUsR0FBR1A7UUFFaEMsTUFBTVEsb0JBQW9CO1lBQ3hCSixRQUFRVixlQUFlVSxRQUFRSCxXQUFXRyxNQUFNO1lBQ2hESyxNQUFNZixlQUFlWSxHQUFHTCxXQUFXSSxLQUFLO1lBQ3hDSyxLQUFLaEIsZUFBZWEsR0FBR04sV0FBV0csTUFBTTtZQUN4Q0MsT0FBT1gsZUFBZVcsT0FBT0osV0FBV0ksS0FBSztRQUMvQztRQUVBLE1BQU1NLFVBQVVSLE1BQU1ELEtBQUtVLFlBQVksSUFBSVYsS0FBS1csSUFBSSxFQUFFQyxPQUFPLENBQUNOO1FBRTlELE9BQU8sTUFBTUcsUUFBUUksUUFBUSxDQUFDO1lBQzVCQyxtQkFBbUI7UUFDckI7SUFDRixFQUFFLE9BQU9DLE9BQU87UUFDZEMsUUFBUUQsS0FBSyxDQUFDLENBQUMscUJBQXFCLENBQUMsRUFBRUE7UUFDdkMsTUFBTUE7SUFDUjtBQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateFileData.d.ts","sourceRoot":"","sources":["../../src/uploads/generateFileData.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generateFileData.d.ts","sourceRoot":"","sources":["../../src/uploads/generateFileData.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,KAAK,EAAY,UAAU,EAAmB,MAAM,SAAS,CAAA;AAYpE,KAAK,IAAI,CAAC,CAAC,IAAI;IACb,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,CAAC,CAAA;IACP,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,GAAG,EAAE,cAAc,CAAA;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B,CAAA;AAED,KAAK,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC;IACvB,IAAI,EAAE,CAAC,CAAA;IACP,KAAK,EAAE,UAAU,EAAE,CAAA;CACpB,CAAC,CAAA;AAEF,eAAO,MAAM,gBAAgB,iIAkO5B,CAAA"}
|