@rudderstack/integrations-lib 0.2.1 → 0.2.4

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.
Files changed (65) hide show
  1. package/build/constants.js +1 -1
  2. package/build/errors/aborted_error.d.ts +1 -1
  3. package/build/errors/aborted_error.d.ts.map +1 -1
  4. package/build/errors/aborted_error.js +1 -1
  5. package/build/errors/base.d.ts.map +1 -1
  6. package/build/errors/base.js +2 -2
  7. package/build/errors/configuration_auth_error.d.ts +2 -2
  8. package/build/errors/configuration_auth_error.d.ts.map +1 -1
  9. package/build/errors/configuration_auth_error.js +3 -3
  10. package/build/errors/configuration_error.d.ts +1 -1
  11. package/build/errors/configuration_error.js +1 -1
  12. package/build/errors/instrumentation_error.d.ts +1 -1
  13. package/build/errors/instrumentation_error.js +1 -1
  14. package/build/errors/invalid_auth_token_error.d.ts +1 -1
  15. package/build/errors/invalid_auth_token_error.d.ts.map +1 -1
  16. package/build/errors/invalid_auth_token_error.js +1 -1
  17. package/build/errors/network_error.d.ts +1 -1
  18. package/build/errors/network_error.d.ts.map +1 -1
  19. package/build/errors/network_error.js +2 -2
  20. package/build/errors/oauth_secret_error.d.ts +1 -1
  21. package/build/errors/oauth_secret_error.js +1 -1
  22. package/build/errors/platform_error.d.ts +1 -1
  23. package/build/errors/platform_error.js +1 -1
  24. package/build/errors/redis_error.d.ts +1 -1
  25. package/build/errors/redis_error.js +1 -1
  26. package/build/errors/retryable_error.d.ts +1 -1
  27. package/build/errors/retryable_error.d.ts.map +1 -1
  28. package/build/errors/retryable_error.js +1 -1
  29. package/build/errors/throttled_error.d.ts +1 -1
  30. package/build/errors/throttled_error.js +1 -1
  31. package/build/errors/unauthorized_error.d.ts +1 -1
  32. package/build/errors/unauthorized_error.d.ts.map +1 -1
  33. package/build/errors/unauthorized_error.js +1 -1
  34. package/build/errors/unhandled_status_code_error.d.ts +1 -1
  35. package/build/errors/unhandled_status_code_error.js +1 -1
  36. package/build/errors/unsupported_event_error.d.ts +1 -1
  37. package/build/errors/unsupported_event_error.js +1 -1
  38. package/build/logger.js +1 -1
  39. package/build/network/clients/axios_client.d.ts.map +1 -1
  40. package/build/network/clients/axios_client.js +9 -7
  41. package/build/network/clients/axios_client.test.js +12 -24
  42. package/build/network/clients/types.d.ts.map +1 -1
  43. package/build/network/clients/types.js +1 -1
  44. package/build/network/factory.d.ts +1 -1
  45. package/build/network/factory.d.ts.map +1 -1
  46. package/build/network/factory.js +1 -1
  47. package/build/network/factory.test.js +3 -2
  48. package/build/network/index.d.ts.map +1 -1
  49. package/build/network/index.js +1 -1
  50. package/build/structured-logger.js +1 -1
  51. package/build/tags.js +43 -43
  52. package/build/types.d.ts.map +1 -1
  53. package/build/types.js +4 -10
  54. package/build/utils/json.d.ts.map +1 -1
  55. package/build/utils/json.js +5 -2
  56. package/build/utils/json.test.js +1 -1
  57. package/build/utils/misc.d.ts +8 -1
  58. package/build/utils/misc.d.ts.map +1 -1
  59. package/build/utils/misc.js +16 -10
  60. package/build/utils/misc.test.js +33 -1
  61. package/build/utils/sem.d.ts.map +1 -1
  62. package/build/utils/sem.js +1 -1
  63. package/mock/index.d.ts.map +1 -1
  64. package/mock/index.js +1 -1
  65. package/package.json +22 -6
package/build/tags.js CHANGED
@@ -2,59 +2,59 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.METADATA = exports.ERROR_TYPES = exports.ERROR_CATEGORIES = exports.FEATURES = exports.IMPLEMENTATIONS = exports.MODULES = exports.TAG_NAMES = void 0;
4
4
  exports.TAG_NAMES = {
5
- MODULE: "module",
6
- IMPLEMENTATION: "implementation",
7
- FEATURE: "feature",
8
- ERROR_CATEGORY: "errorCategory",
9
- ERROR_TYPE: "errorType",
10
- META: "meta",
11
- DEST_TYPE: "destType",
12
- SRC_TYPE: "srcType",
13
- CLUSTER: "cluster",
14
- NAMESPACE: "namespace",
15
- CUSTOMER: "customer",
16
- DESTINATION_ID: "destinationId",
17
- WORKSPACE_ID: "workspaceId",
18
- SOURCE_ID: "sourceId",
5
+ MODULE: 'module',
6
+ IMPLEMENTATION: 'implementation',
7
+ FEATURE: 'feature',
8
+ ERROR_CATEGORY: 'errorCategory',
9
+ ERROR_TYPE: 'errorType',
10
+ META: 'meta',
11
+ DEST_TYPE: 'destType',
12
+ SRC_TYPE: 'srcType',
13
+ CLUSTER: 'cluster',
14
+ NAMESPACE: 'namespace',
15
+ CUSTOMER: 'customer',
16
+ DESTINATION_ID: 'destinationId',
17
+ WORKSPACE_ID: 'workspaceId',
18
+ SOURCE_ID: 'sourceId',
19
19
  };
20
20
  exports.MODULES = {
21
- SOURCE: "source",
22
- DESTINATION: "destination",
23
- MISCELLANEOUS: "miscellaneous",
21
+ SOURCE: 'source',
22
+ DESTINATION: 'destination',
23
+ MISCELLANEOUS: 'miscellaneous',
24
24
  };
25
25
  exports.IMPLEMENTATIONS = {
26
- NATIVE: "native",
27
- CDK_V1: "cdkV1",
28
- CDK_V2: "cdkV2",
26
+ NATIVE: 'native',
27
+ CDK_V1: 'cdkV1',
28
+ CDK_V2: 'cdkV2',
29
29
  };
30
30
  exports.FEATURES = {
31
- PROCESSOR: "processor",
32
- ROUTER: "router",
33
- BATCH: "batch",
34
- DATA_DELIVERY: "dataDelivery",
35
- USER_DELETION: "userDeletion",
31
+ PROCESSOR: 'processor',
32
+ ROUTER: 'router',
33
+ BATCH: 'batch',
34
+ DATA_DELIVERY: 'dataDelivery',
35
+ USER_DELETION: 'userDeletion',
36
36
  };
37
37
  exports.ERROR_CATEGORIES = {
38
- DATA_VALIDATION: "dataValidation",
39
- NETWORK: "network",
40
- PLATFORM: "platform",
41
- TRANSFORMATION: "transformation",
38
+ DATA_VALIDATION: 'dataValidation',
39
+ NETWORK: 'network',
40
+ PLATFORM: 'platform',
41
+ TRANSFORMATION: 'transformation',
42
42
  };
43
43
  exports.ERROR_TYPES = {
44
- INSTRUMENTATION: "instrumentation",
45
- CONFIGURATION: "configuration",
46
- THROTTLED: "throttled",
47
- RETRYABLE: "retryable",
48
- ABORTED: "aborted",
49
- OAUTH_SECRET: "oAuthSecret",
50
- UNSUPPORTED: "unsupported",
51
- REDIS: "redis",
52
- AUTH: "accessTokenExpired"
44
+ INSTRUMENTATION: 'instrumentation',
45
+ CONFIGURATION: 'configuration',
46
+ THROTTLED: 'throttled',
47
+ RETRYABLE: 'retryable',
48
+ ABORTED: 'aborted',
49
+ OAUTH_SECRET: 'oAuthSecret',
50
+ UNSUPPORTED: 'unsupported',
51
+ REDIS: 'redis',
52
+ AUTH: 'accessTokenExpired',
53
53
  };
54
54
  exports.METADATA = {
55
- INVALID_AUTH_TOKEN: "invalidAuthToken",
56
- UNHANDLED_STATUS_CODE: "unhandledStatusCode",
57
- INSTRUMENTATION: "instrumentation",
58
- UNAUTHORIZED: "unauthorized",
55
+ INVALID_AUTH_TOKEN: 'invalidAuthToken',
56
+ UNHANDLED_STATUS_CODE: 'unhandledStatusCode',
57
+ INSTRUMENTATION: 'instrumentation',
58
+ UNAUTHORIZED: 'unauthorized',
59
59
  };
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90YWdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFhLFFBQUEsU0FBUyxHQUFHO0lBQ3ZCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLGNBQWMsRUFBRSxnQkFBZ0I7SUFDaEMsT0FBTyxFQUFFLFNBQVM7SUFDbEIsY0FBYyxFQUFFLGVBQWU7SUFDL0IsVUFBVSxFQUFFLFdBQVc7SUFDdkIsSUFBSSxFQUFFLE1BQU07SUFDWixTQUFTLEVBQUUsVUFBVTtJQUNyQixRQUFRLEVBQUUsU0FBUztJQUNuQixPQUFPLEVBQUUsU0FBUztJQUNsQixTQUFTLEVBQUUsV0FBVztJQUN0QixRQUFRLEVBQUUsVUFBVTtJQUNwQixjQUFjLEVBQUUsZUFBZTtJQUMvQixZQUFZLEVBQUUsYUFBYTtJQUMzQixTQUFTLEVBQUUsVUFBVTtDQUN0QixDQUFDO0FBRVcsUUFBQSxPQUFPLEdBQUc7SUFDckIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsYUFBYSxFQUFFLGVBQWU7Q0FDL0IsQ0FBQztBQUVXLFFBQUEsZUFBZSxHQUFHO0lBQzdCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxPQUFPO0lBQ2YsTUFBTSxFQUFFLE9BQU87Q0FDaEIsQ0FBQztBQUVXLFFBQUEsUUFBUSxHQUFHO0lBQ3RCLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEtBQUssRUFBRSxPQUFPO0lBQ2QsYUFBYSxFQUFFLGNBQWM7SUFDN0IsYUFBYSxFQUFFLGNBQWM7Q0FDOUIsQ0FBQztBQUVXLFFBQUEsZ0JBQWdCLEdBQUc7SUFDOUIsZUFBZSxFQUFFLGdCQUFnQjtJQUNqQyxPQUFPLEVBQUUsU0FBUztJQUNsQixRQUFRLEVBQUUsVUFBVTtJQUNwQixjQUFjLEVBQUUsZ0JBQWdCO0NBQ2pDLENBQUM7QUFFVyxRQUFBLFdBQVcsR0FBRztJQUN6QixlQUFlLEVBQUUsaUJBQWlCO0lBQ2xDLGFBQWEsRUFBRSxlQUFlO0lBQzlCLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFlBQVksRUFBRSxhQUFhO0lBQzNCLFdBQVcsRUFBRSxhQUFhO0lBQzFCLEtBQUssRUFBRSxPQUFPO0lBQ2QsSUFBSSxFQUFFLG9CQUFvQjtDQUMzQixDQUFDO0FBRVcsUUFBQSxRQUFRLEdBQUc7SUFDdEIsa0JBQWtCLEVBQUUsa0JBQWtCO0lBQ3RDLHFCQUFxQixFQUFFLHFCQUFxQjtJQUM1QyxlQUFlLEVBQUUsaUJBQWlCO0lBQ2xDLFlBQVksRUFBRSxjQUFjO0NBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgVEFHX05BTUVTID0ge1xuICBNT0RVTEU6IFwibW9kdWxlXCIsXG4gIElNUExFTUVOVEFUSU9OOiBcImltcGxlbWVudGF0aW9uXCIsXG4gIEZFQVRVUkU6IFwiZmVhdHVyZVwiLFxuICBFUlJPUl9DQVRFR09SWTogXCJlcnJvckNhdGVnb3J5XCIsXG4gIEVSUk9SX1RZUEU6IFwiZXJyb3JUeXBlXCIsXG4gIE1FVEE6IFwibWV0YVwiLFxuICBERVNUX1RZUEU6IFwiZGVzdFR5cGVcIixcbiAgU1JDX1RZUEU6IFwic3JjVHlwZVwiLFxuICBDTFVTVEVSOiBcImNsdXN0ZXJcIixcbiAgTkFNRVNQQUNFOiBcIm5hbWVzcGFjZVwiLFxuICBDVVNUT01FUjogXCJjdXN0b21lclwiLFxuICBERVNUSU5BVElPTl9JRDogXCJkZXN0aW5hdGlvbklkXCIsXG4gIFdPUktTUEFDRV9JRDogXCJ3b3Jrc3BhY2VJZFwiLFxuICBTT1VSQ0VfSUQ6IFwic291cmNlSWRcIixcbn07XG5cbmV4cG9ydCBjb25zdCBNT0RVTEVTID0ge1xuICBTT1VSQ0U6IFwic291cmNlXCIsXG4gIERFU1RJTkFUSU9OOiBcImRlc3RpbmF0aW9uXCIsXG4gIE1JU0NFTExBTkVPVVM6IFwibWlzY2VsbGFuZW91c1wiLFxufTtcblxuZXhwb3J0IGNvbnN0IElNUExFTUVOVEFUSU9OUyA9IHtcbiAgTkFUSVZFOiBcIm5hdGl2ZVwiLFxuICBDREtfVjE6IFwiY2RrVjFcIixcbiAgQ0RLX1YyOiBcImNka1YyXCIsXG59O1xuXG5leHBvcnQgY29uc3QgRkVBVFVSRVMgPSB7XG4gIFBST0NFU1NPUjogXCJwcm9jZXNzb3JcIixcbiAgUk9VVEVSOiBcInJvdXRlclwiLFxuICBCQVRDSDogXCJiYXRjaFwiLFxuICBEQVRBX0RFTElWRVJZOiBcImRhdGFEZWxpdmVyeVwiLFxuICBVU0VSX0RFTEVUSU9OOiBcInVzZXJEZWxldGlvblwiLFxufTtcblxuZXhwb3J0IGNvbnN0IEVSUk9SX0NBVEVHT1JJRVMgPSB7XG4gIERBVEFfVkFMSURBVElPTjogXCJkYXRhVmFsaWRhdGlvblwiLFxuICBORVRXT1JLOiBcIm5ldHdvcmtcIixcbiAgUExBVEZPUk06IFwicGxhdGZvcm1cIixcbiAgVFJBTlNGT1JNQVRJT046IFwidHJhbnNmb3JtYXRpb25cIixcbn07XG5cbmV4cG9ydCBjb25zdCBFUlJPUl9UWVBFUyA9IHtcbiAgSU5TVFJVTUVOVEFUSU9OOiBcImluc3RydW1lbnRhdGlvblwiLFxuICBDT05GSUdVUkFUSU9OOiBcImNvbmZpZ3VyYXRpb25cIixcbiAgVEhST1RUTEVEOiBcInRocm90dGxlZFwiLFxuICBSRVRSWUFCTEU6IFwicmV0cnlhYmxlXCIsXG4gIEFCT1JURUQ6IFwiYWJvcnRlZFwiLFxuICBPQVVUSF9TRUNSRVQ6IFwib0F1dGhTZWNyZXRcIixcbiAgVU5TVVBQT1JURUQ6IFwidW5zdXBwb3J0ZWRcIixcbiAgUkVESVM6IFwicmVkaXNcIixcbiAgQVVUSDogXCJhY2Nlc3NUb2tlbkV4cGlyZWRcIlxufTtcblxuZXhwb3J0IGNvbnN0IE1FVEFEQVRBID0ge1xuICBJTlZBTElEX0FVVEhfVE9LRU46IFwiaW52YWxpZEF1dGhUb2tlblwiLFxuICBVTkhBTkRMRURfU1RBVFVTX0NPREU6IFwidW5oYW5kbGVkU3RhdHVzQ29kZVwiLFxuICBJTlNUUlVNRU5UQVRJT046IFwiaW5zdHJ1bWVudGF0aW9uXCIsXG4gIFVOQVVUSE9SSVpFRDogXCJ1bmF1dGhvcml6ZWRcIixcbn07XG4iXX0=
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90YWdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFhLFFBQUEsU0FBUyxHQUFHO0lBQ3ZCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLGNBQWMsRUFBRSxnQkFBZ0I7SUFDaEMsT0FBTyxFQUFFLFNBQVM7SUFDbEIsY0FBYyxFQUFFLGVBQWU7SUFDL0IsVUFBVSxFQUFFLFdBQVc7SUFDdkIsSUFBSSxFQUFFLE1BQU07SUFDWixTQUFTLEVBQUUsVUFBVTtJQUNyQixRQUFRLEVBQUUsU0FBUztJQUNuQixPQUFPLEVBQUUsU0FBUztJQUNsQixTQUFTLEVBQUUsV0FBVztJQUN0QixRQUFRLEVBQUUsVUFBVTtJQUNwQixjQUFjLEVBQUUsZUFBZTtJQUMvQixZQUFZLEVBQUUsYUFBYTtJQUMzQixTQUFTLEVBQUUsVUFBVTtDQUN0QixDQUFDO0FBRVcsUUFBQSxPQUFPLEdBQUc7SUFDckIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsYUFBYSxFQUFFLGVBQWU7Q0FDL0IsQ0FBQztBQUVXLFFBQUEsZUFBZSxHQUFHO0lBQzdCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxPQUFPO0lBQ2YsTUFBTSxFQUFFLE9BQU87Q0FDaEIsQ0FBQztBQUVXLFFBQUEsUUFBUSxHQUFHO0lBQ3RCLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEtBQUssRUFBRSxPQUFPO0lBQ2QsYUFBYSxFQUFFLGNBQWM7SUFDN0IsYUFBYSxFQUFFLGNBQWM7Q0FDOUIsQ0FBQztBQUVXLFFBQUEsZ0JBQWdCLEdBQUc7SUFDOUIsZUFBZSxFQUFFLGdCQUFnQjtJQUNqQyxPQUFPLEVBQUUsU0FBUztJQUNsQixRQUFRLEVBQUUsVUFBVTtJQUNwQixjQUFjLEVBQUUsZ0JBQWdCO0NBQ2pDLENBQUM7QUFFVyxRQUFBLFdBQVcsR0FBRztJQUN6QixlQUFlLEVBQUUsaUJBQWlCO0lBQ2xDLGFBQWEsRUFBRSxlQUFlO0lBQzlCLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFlBQVksRUFBRSxhQUFhO0lBQzNCLFdBQVcsRUFBRSxhQUFhO0lBQzFCLEtBQUssRUFBRSxPQUFPO0lBQ2QsSUFBSSxFQUFFLG9CQUFvQjtDQUMzQixDQUFDO0FBRVcsUUFBQSxRQUFRLEdBQUc7SUFDdEIsa0JBQWtCLEVBQUUsa0JBQWtCO0lBQ3RDLHFCQUFxQixFQUFFLHFCQUFxQjtJQUM1QyxlQUFlLEVBQUUsaUJBQWlCO0lBQ2xDLFlBQVksRUFBRSxjQUFjO0NBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgVEFHX05BTUVTID0ge1xuICBNT0RVTEU6ICdtb2R1bGUnLFxuICBJTVBMRU1FTlRBVElPTjogJ2ltcGxlbWVudGF0aW9uJyxcbiAgRkVBVFVSRTogJ2ZlYXR1cmUnLFxuICBFUlJPUl9DQVRFR09SWTogJ2Vycm9yQ2F0ZWdvcnknLFxuICBFUlJPUl9UWVBFOiAnZXJyb3JUeXBlJyxcbiAgTUVUQTogJ21ldGEnLFxuICBERVNUX1RZUEU6ICdkZXN0VHlwZScsXG4gIFNSQ19UWVBFOiAnc3JjVHlwZScsXG4gIENMVVNURVI6ICdjbHVzdGVyJyxcbiAgTkFNRVNQQUNFOiAnbmFtZXNwYWNlJyxcbiAgQ1VTVE9NRVI6ICdjdXN0b21lcicsXG4gIERFU1RJTkFUSU9OX0lEOiAnZGVzdGluYXRpb25JZCcsXG4gIFdPUktTUEFDRV9JRDogJ3dvcmtzcGFjZUlkJyxcbiAgU09VUkNFX0lEOiAnc291cmNlSWQnLFxufTtcblxuZXhwb3J0IGNvbnN0IE1PRFVMRVMgPSB7XG4gIFNPVVJDRTogJ3NvdXJjZScsXG4gIERFU1RJTkFUSU9OOiAnZGVzdGluYXRpb24nLFxuICBNSVNDRUxMQU5FT1VTOiAnbWlzY2VsbGFuZW91cycsXG59O1xuXG5leHBvcnQgY29uc3QgSU1QTEVNRU5UQVRJT05TID0ge1xuICBOQVRJVkU6ICduYXRpdmUnLFxuICBDREtfVjE6ICdjZGtWMScsXG4gIENES19WMjogJ2Nka1YyJyxcbn07XG5cbmV4cG9ydCBjb25zdCBGRUFUVVJFUyA9IHtcbiAgUFJPQ0VTU09SOiAncHJvY2Vzc29yJyxcbiAgUk9VVEVSOiAncm91dGVyJyxcbiAgQkFUQ0g6ICdiYXRjaCcsXG4gIERBVEFfREVMSVZFUlk6ICdkYXRhRGVsaXZlcnknLFxuICBVU0VSX0RFTEVUSU9OOiAndXNlckRlbGV0aW9uJyxcbn07XG5cbmV4cG9ydCBjb25zdCBFUlJPUl9DQVRFR09SSUVTID0ge1xuICBEQVRBX1ZBTElEQVRJT046ICdkYXRhVmFsaWRhdGlvbicsXG4gIE5FVFdPUks6ICduZXR3b3JrJyxcbiAgUExBVEZPUk06ICdwbGF0Zm9ybScsXG4gIFRSQU5TRk9STUFUSU9OOiAndHJhbnNmb3JtYXRpb24nLFxufTtcblxuZXhwb3J0IGNvbnN0IEVSUk9SX1RZUEVTID0ge1xuICBJTlNUUlVNRU5UQVRJT046ICdpbnN0cnVtZW50YXRpb24nLFxuICBDT05GSUdVUkFUSU9OOiAnY29uZmlndXJhdGlvbicsXG4gIFRIUk9UVExFRDogJ3Rocm90dGxlZCcsXG4gIFJFVFJZQUJMRTogJ3JldHJ5YWJsZScsXG4gIEFCT1JURUQ6ICdhYm9ydGVkJyxcbiAgT0FVVEhfU0VDUkVUOiAnb0F1dGhTZWNyZXQnLFxuICBVTlNVUFBPUlRFRDogJ3Vuc3VwcG9ydGVkJyxcbiAgUkVESVM6ICdyZWRpcycsXG4gIEFVVEg6ICdhY2Nlc3NUb2tlbkV4cGlyZWQnLFxufTtcblxuZXhwb3J0IGNvbnN0IE1FVEFEQVRBID0ge1xuICBJTlZBTElEX0FVVEhfVE9LRU46ICdpbnZhbGlkQXV0aFRva2VuJyxcbiAgVU5IQU5ETEVEX1NUQVRVU19DT0RFOiAndW5oYW5kbGVkU3RhdHVzQ29kZScsXG4gIElOU1RSVU1FTlRBVElPTjogJ2luc3RydW1lbnRhdGlvbicsXG4gIFVOQVVUSE9SSVpFRDogJ3VuYXV0aG9yaXplZCcsXG59O1xuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/build/types.js CHANGED
@@ -14,21 +14,15 @@ var MessageType;
14
14
  MessageType["ALIAS"] = "alias";
15
15
  MessageType["AUDIENCE_LIST"] = "audiencelist";
16
16
  })(MessageType || (exports.MessageType = MessageType = {}));
17
- const isBatch = (plugin) => {
18
- return plugin.type === 'batch';
19
- };
17
+ const isBatch = (plugin) => plugin.type === 'batch';
20
18
  exports.isBatch = isBatch;
21
- const isMultiplex = (plugin) => {
22
- return plugin.type === 'multiplex';
23
- };
19
+ const isMultiplex = (plugin) => plugin.type === 'multiplex';
24
20
  exports.isMultiplex = isMultiplex;
25
- const isProcess = (plugin) => {
26
- return plugin.type === 'process';
27
- };
21
+ const isProcess = (plugin) => plugin.type === 'process';
28
22
  exports.isProcess = isProcess;
29
23
  var WorkflowType;
30
24
  (function (WorkflowType) {
31
25
  WorkflowType["STREAM"] = "stream";
32
26
  WorkflowType["RETL"] = "retl";
33
27
  })(WorkflowType || (exports.WorkflowType = WorkflowType = {}));
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxJQUFZLFdBUVg7QUFSRCxXQUFZLFdBQVc7SUFDckIsb0NBQXFCLENBQUE7SUFDckIsOEJBQWUsQ0FBQTtJQUNmLDRCQUFhLENBQUE7SUFDYixnQ0FBaUIsQ0FBQTtJQUNqQiw4QkFBZSxDQUFBO0lBQ2YsOEJBQWUsQ0FBQTtJQUNmLDZDQUE4QixDQUFBO0FBQ2hDLENBQUMsRUFSVyxXQUFXLDJCQUFYLFdBQVcsUUFRdEI7QUF5T00sTUFBTSxPQUFPLEdBQUcsQ0FBQyxNQUFjLEVBQW1CLEVBQUU7SUFDekQsT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQztBQUNqQyxDQUFDLENBQUM7QUFGVyxRQUFBLE9BQU8sV0FFbEI7QUFFSyxNQUFNLFdBQVcsR0FBRyxDQUFDLE1BQWMsRUFBc0IsRUFBRTtJQUNoRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDO0FBQ3JDLENBQUMsQ0FBQztBQUZXLFFBQUEsV0FBVyxlQUV0QjtBQUVLLE1BQU0sU0FBUyxHQUFHLENBQUMsTUFBYyxFQUFxQixFQUFFO0lBQzdELE9BQU8sTUFBTSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUM7QUFDbkMsQ0FBQyxDQUFDO0FBRlcsUUFBQSxTQUFTLGFBRXBCO0FBNkNGLElBQVksWUFHWDtBQUhELFdBQVksWUFBWTtJQUN0QixpQ0FBaUIsQ0FBQTtJQUNqQiw2QkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUhXLFlBQVksNEJBQVosWUFBWSxRQUd2QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogZGVjbGFyZSB0eXBlcyBvZiBldmVudHMgZm9yIHJ1ZGRlcnN0YWNrXG4gKi9cbmV4cG9ydCBlbnVtIE1lc3NhZ2VUeXBlIHtcbiAgSURFTlRJRlkgPSAnaWRlbnRpZnknLFxuICBUUkFDSyA9ICd0cmFjaycsXG4gIFBBR0UgPSAncGFnZScsXG4gIFNDUkVFTiA9ICdzY3JlZW4nLFxuICBHUk9VUCA9ICdncm91cCcsXG4gIEFMSUFTID0gJ2FsaWFzJyxcbiAgQVVESUVOQ0VfTElTVCA9ICdhdWRpZW5jZWxpc3QnLFxufVxuXG50eXBlIEV4Y2x1c2l2ZVByb3BlcnRpZXM8VCwgVT4gPSBUIGV4dGVuZHMgdW5kZWZpbmVkID8gVSA6IFUgZXh0ZW5kcyB1bmRlZmluZWQgPyBUIDogbmV2ZXI7XG5cbmV4cG9ydCB0eXBlIEV4dGVybmFsSWQgPSB7XG4gIGlkZW50aWZpZXJUeXBlPzogc3RyaW5nO1xuICBpZDogdW5rbm93bjtcbiAgdHlwZTogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBkZWZpbmUgdGhlIGNvbnRleHQgb2YgdGhlIGV2ZW50XG4gKiBAc2VlIGh0dHBzOi8vd3d3LnJ1ZGRlcnN0YWNrLmNvbS9kb2NzL2V2ZW50LXNwZWMvc3RhbmRhcmQtZXZlbnRzL2NvbW1vbi1maWVsZHMvI2NvbnRleHR1YWwtZmllbGRzXG4gKi9cbnR5cGUgQ29udGV4dCA9IHtcbiAgYXBwOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHZlcnNpb246IHN0cmluZztcbiAgICBidWlsZDogc3RyaW5nO1xuICAgIG5hbWVzcGFjZTogc3RyaW5nO1xuICB9O1xuICBjYW1wYWlnbjoge1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgc291cmNlPzogc3RyaW5nO1xuICAgIG1lZGl1bT86IHN0cmluZztcbiAgICB0ZXJtPzogc3RyaW5nO1xuICAgIGNvbnRlbnQ/OiBzdHJpbmc7XG4gIH07XG4gIGRldmljZToge1xuICAgIGlkPzogc3RyaW5nO1xuICAgIG1hbnVmYWN0dXJlcj86IHN0cmluZztcbiAgICBtb2RlbD86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHR5cGU/OiBzdHJpbmc7XG4gICAgdmVyc2lvbj86IHN0cmluZztcbiAgICB0b2tlbj86IHN0cmluZztcbiAgICBhZHZlcnRpc2luZ0lkPzogc3RyaW5nO1xuICAgIGFkVHJhY2tpbmdFbmFibGVkPzogYm9vbGVhbjtcbiAgICBhdHRUcmFja2luZ1N0YXR1cz86IHN0cmluZztcbiAgfTtcbiAgbGlicmFyeToge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB2ZXJzaW9uOiBzdHJpbmc7XG4gIH07XG4gIGxvY2FsZTogc3RyaW5nO1xuICBuZXR3b3JrOiB7XG4gICAgYmx1ZXRvb3RoPzogc3RyaW5nO1xuICAgIGNhcnJpZXI/OiBzdHJpbmc7XG4gICAgY2VsbHVsYXI/OiBzdHJpbmc7XG4gICAgd2lmaT86IHN0cmluZztcbiAgfTtcbiAgb3M6IHtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHZlcnNpb24/OiBzdHJpbmc7XG4gIH07XG4gIHNjcmVlbjoge1xuICAgIGRlbnNpdHk6IG51bWJlcjtcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIGhlaWdodDogbnVtYmVyO1xuICAgIGlubmVyV2lkdGg/OiBudW1iZXI7XG4gICAgaW5uZXJIZWlnaHQ/OiBudW1iZXI7XG4gIH07XG4gIHRpbWV6b25lPzogc3RyaW5nO1xuICB0cmFpdHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgdXNlckFnZW50Pzogc3RyaW5nO1xuICBpcD86IHN0cmluZztcbiAgbWFwcGVkVG9EZXN0aW5hdGlvbj86IGJvb2xlYW47XG4gIHBhZ2U6IHtcbiAgICBwYXRoPzogc3RyaW5nO1xuICAgIHJlZmVycmVyPzogc3RyaW5nO1xuICAgIHJlZmVycmluZ19kb21haW4/OiBzdHJpbmc7XG4gICAgaW5pdGlhbF9yZWZlcnJlcj86IHN0cmluZztcbiAgICBpbml0aWFsX3JlZmVycmluZ19kb21haW4/OiBzdHJpbmc7XG4gICAgc2VhcmNoPzogc3RyaW5nO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHVybD86IHN0cmluZztcbiAgfTtcbiAgbG9jYXRpb24/OiB7XG4gICAgY2l0eT86IHN0cmluZztcbiAgICBjb3VudHJ5Pzogc3RyaW5nO1xuICAgIGxhdGl0dWRlPzogbnVtYmVyO1xuICAgIGxvbmdpdHVkZT86IG51bWJlcjtcbiAgICB0aW1lem9uZT86IHN0cmluZztcbiAgICBnZW9Tb3VyY2U/OiBzdHJpbmc7XG4gIH07XG4gIGV4dGVybmFsSWQ/OiBFeHRlcm5hbElkW107XG59O1xuXG4vKipcbiAqIGEgbG9vc2UgZGVmaW5pdGlvbiBvZiBydWRkZXJzdGFjayBldmVudCB3aXRob3V0IGNvbnNpZGVyaW5nXG4gKiB0aGUgZXhjbHVzaXZpdHkgb2YgdXNlcklkIGFuZCBhbm9ueW1vdXNJZFxuICovXG50eXBlIExvb3NlUnVkZGVyU3RhY2tFdmVudCA9IHtcbiAgY2hhbm5lbDogc3RyaW5nO1xuICBjb250ZXh0OiBDb250ZXh0O1xuICB0eXBlOiBNZXNzYWdlVHlwZTtcbiAgb3JpZ2luYWxUaW1lc3RhbXA6IHN0cmluZztcbiAgc2VudEF0OiBzdHJpbmc7XG4gIHRyYWl0cz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBldmVudD86IHN0cmluZztcbiAgaW50ZWdyYXRpb25zPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIG1lc3NhZ2VJZD86IHN0cmluZztcbiAgcHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICByZWNlaXZlZEF0Pzogc3RyaW5nO1xuICB0aW1lc3RhbXA/OiBzdHJpbmc7XG4gIHVzZXJJZD86IHN0cmluZztcbiAgYW5vbnltb3VzSWQ/OiBzdHJpbmc7XG4gIHJlcXVlc3RfaXA/OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIGEgc3RyaWN0IGRlZmluaXRpb24gb2YgcnVkZGVyc3RhY2sgZXZlbnRcbiAqIEBzZWUgaHR0cHM6Ly93d3cucnVkZGVyc3RhY2suY29tL2RvY3MvZXZlbnQtc3BlYy9zdGFuZGFyZC1ldmVudHMvY29tbW9uLWZpZWxkcy8jY29udGV4dHVhbC1maWVsZHNcbiAqL1xuZXhwb3J0IHR5cGUgUnVkZGVyU3RhY2tFdmVudCA9IExvb3NlUnVkZGVyU3RhY2tFdmVudCAmIHtcbiAgYW5vbnltb3VzSWQ/OiBFeGNsdXNpdmVQcm9wZXJ0aWVzPExvb3NlUnVkZGVyU3RhY2tFdmVudFsnYW5vbnltb3VzSWQnXSwgdW5kZWZpbmVkPjtcbiAgdXNlcklkPzogRXhjbHVzaXZlUHJvcGVydGllczxMb29zZVJ1ZGRlclN0YWNrRXZlbnRbJ3VzZXJJZCddLCB1bmRlZmluZWQ+O1xufTtcblxuZXhwb3J0IHR5cGUgUnVkZGVyU3RhY2tFdmVudFBheWxvYWQgPSB7IG1lc3NhZ2U6IFJ1ZGRlclN0YWNrRXZlbnQgfTtcblxuLyoqXG4gKiBkZWZpbmUgbWV0YWRhdGEgb2YgdGhlIGV2ZW50IHVzZWQgYnkgcnMtc2VydmVyXG4gKi9cbmV4cG9ydCB0eXBlIE1ldGFkYXRhID0ge1xuICBzb3VyY2VJZDogc3RyaW5nO1xuICB3b3Jrc3BhY2VJZDogc3RyaW5nO1xuICBuYW1lc3BhY2U6IHN0cmluZztcbiAgaW5zdGFuY2VJZDogc3RyaW5nO1xuICBzb3VyY2VUeXBlOiBzdHJpbmc7XG4gIHNvdXJjZUNhdGVnb3J5OiBzdHJpbmc7XG4gIHRyYWNraW5nUGxhbklkOiBzdHJpbmc7XG4gIHRyYWNraW5nUGxhblZlcnNpb246IG51bWJlcjtcbiAgc291cmNlVHBDb25maWc6IE9iamVjdDtcbiAgbWVyZ2VkVHBDb25maWc6IE9iamVjdDtcbiAgZGVzdGluYXRpb25JZDogc3RyaW5nO1xuICBqb2JSdW5JZDogc3RyaW5nO1xuICBqb2JJZDogbnVtYmVyO1xuICBzb3VyY2VCYXRjaElkOiBzdHJpbmc7XG4gIHNvdXJjZUpvYklkOiBzdHJpbmc7XG4gIHNvdXJjZUpvYlJ1bklkOiBzdHJpbmc7XG4gIHNvdXJjZVRhc2tJZDogc3RyaW5nO1xuICBzb3VyY2VUYXNrUnVuSWQ6IHN0cmluZztcbiAgcmVjb3JkSWQ6IE9iamVjdDtcbiAgZGVzdGluYXRpb25UeXBlOiBzdHJpbmc7XG4gIG1lc3NhZ2VJZDogc3RyaW5nO1xuICBvYXV0aEFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIG1lc3NhZ2VJZHM6IHN0cmluZ1tdO1xuICBydWRkZXJJZDogc3RyaW5nO1xuICByZWNlaXZlZEF0OiBzdHJpbmc7XG4gIGV2ZW50TmFtZTogc3RyaW5nO1xuICBldmVudFR5cGU6IHN0cmluZztcbiAgc291cmNlRGVmaW5pdGlvbklkOiBzdHJpbmc7XG4gIGRlc3RpbmF0aW9uRGVmaW5pdGlvbklkOiBzdHJpbmc7XG4gIHRyYW5zZm9ybWF0aW9uSWQ6IHN0cmluZztcbn07XG5cbi8qKlxuICogZGVmaW5lIHRoZSB0cmFuc2Zvcm1hdGlvbiB2ZXJzaW9uXG4gKi9cbnR5cGUgVXNlclRyYW5zZm9ybWF0aW9uVmVyc2lvbiA9IHtcbiAgVmVyc2lvbklEOiBzdHJpbmc7XG4gIElEOiBzdHJpbmc7XG4gIENvbmZpZzogT2JqZWN0O1xufTtcblxuLyoqXG4gKiBkZWZpbmUgdGhlIGRlc3RpbmF0aW9uIGRlZmluaXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgRGVzdGluYXRpb25EZWZpbml0aW9uID0ge1xuICBJRDogc3RyaW5nO1xuICBOYW1lOiBzdHJpbmc7XG4gIERpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIENvbmZpZzogT2JqZWN0O1xufTtcblxuLyoqXG4gKiBkZWZpbmUgdGhlIGRlc3RpbmF0aW9uIG9iamVjdFxuICovXG5leHBvcnQgdHlwZSBEZXN0aW5hdGlvbiA9IHtcbiAgSUQ6IHN0cmluZztcbiAgTmFtZTogc3RyaW5nO1xuICBEZXN0aW5hdGlvbkRlZmluaXRpb246IERlc3RpbmF0aW9uRGVmaW5pdGlvbjtcbiAgQ29uZmlnOiBPYmplY3Q7XG4gIEVuYWJsZWQ6IGJvb2xlYW47XG4gIFdvcmtzcGFjZUlEOiBzdHJpbmc7XG4gIFRyYW5zZm9ybWF0aW9ucz86IFVzZXJUcmFuc2Zvcm1hdGlvblZlcnNpb25bXTtcbiAgUmV2aXNpb25JRD86IHN0cmluZztcbiAgSXNQcm9jZXNzb3JFbmFibGVkOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgUGF5bG9hZCA9IGFueTtcbmV4cG9ydCB0eXBlIE91dHB1dCA9IGFueTtcblxuLy8gQWxsIHBsdWdpbiByZWxhdGVkIHR5cGVzIHN0YXJ0IGhlcmVcblxuZXhwb3J0IHR5cGUgUGx1Z2luVHlwZSA9ICdwcm9jZXNzJyB8ICdiYXRjaCcgfCAnbXVsdGlwbGV4JztcbmV4cG9ydCB0eXBlIFBsdWdpbkltcGxlbWVudGF0aW9uID0gJ2pzJyB8ICd0ZW1wbGF0ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luIHtcbiAgdHlwZTogUGx1Z2luVHlwZTtcbiAgaW1wbGVudGF0aW9uOiBQbHVnaW5JbXBsZW1lbnRhdGlvbjtcbiAgYXBwbHkoXG4gICAgZXZlbnQ6IFBheWxvYWQgfCBQYXlsb2FkW10sXG4gICAgZGVzdGluYXRpb246IERlc3RpbmF0aW9uLFxuICAgIHN0YXRlOiB7IHN0b3JlOiBNYXA8c3RyaW5nLCBhbnk+OyBza2lwTmV4dDogYm9vbGVhbjsgZXhpdDogYm9vbGVhbiB9LFxuICApOiBPdXRwdXQgfCBPdXRwdXRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNdWxpcGxleCBleHRlbmRzIFBsdWdpbiB7XG4gIGFwcGx5KFxuICAgIGV2ZW50OiBQYXlsb2FkLFxuICAgIGRlc3RpbmF0aW9uOiBEZXN0aW5hdGlvbixcbiAgICBzdGF0ZTogeyBzdG9yZTogTWFwPHN0cmluZywgYW55Pjsgc2tpcE5leHQ6IGJvb2xlYW47IGV4aXQ6IGJvb2xlYW4gfSxcbiAgKTogT3V0cHV0W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmF0Y2ggZXh0ZW5kcyBQbHVnaW4ge1xuICBhcHBseShcbiAgICBldmVudDogUGF5bG9hZFtdLFxuICAgIGRlc3RpbmF0aW9uOiBEZXN0aW5hdGlvbixcbiAgICBzdGF0ZTogeyBzdG9yZTogTWFwPHN0cmluZywgYW55Pjsgc2tpcE5leHQ6IGJvb2xlYW47IGV4aXQ6IGJvb2xlYW4gfSxcbiAgKTogT3V0cHV0W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2VzcyBleHRlbmRzIFBsdWdpbiB7XG4gIGFwcGx5KFxuICAgIGV2ZW50OiBQYXlsb2FkLFxuICAgIGRlc3RpbmF0aW9uOiBEZXN0aW5hdGlvbixcbiAgICBzdGF0ZTogeyBzdG9yZTogTWFwPHN0cmluZywgYW55Pjsgc2tpcE5leHQ6IGJvb2xlYW47IGV4aXQ6IGJvb2xlYW4gfSxcbiAgKTogT3V0cHV0O1xufVxuXG5leHBvcnQgY29uc3QgaXNCYXRjaCA9IChwbHVnaW46IFBsdWdpbik6IHBsdWdpbiBpcyBCYXRjaCA9PiB7XG4gIHJldHVybiBwbHVnaW4udHlwZSA9PT0gJ2JhdGNoJztcbn07XG5cbmV4cG9ydCBjb25zdCBpc011bHRpcGxleCA9IChwbHVnaW46IFBsdWdpbik6IHBsdWdpbiBpcyBNdWxpcGxleCA9PiB7XG4gIHJldHVybiBwbHVnaW4udHlwZSA9PT0gJ211bHRpcGxleCc7XG59O1xuXG5leHBvcnQgY29uc3QgaXNQcm9jZXNzID0gKHBsdWdpbjogUGx1Z2luKTogcGx1Z2luIGlzIFByb2Nlc3MgPT4ge1xuICByZXR1cm4gcGx1Z2luLnR5cGUgPT09ICdwcm9jZXNzJztcbn07XG5cbmV4cG9ydCB0eXBlIERlbGl2ZXJ5UmVzcG9uc2UgPSB7XG4gIHN0YXR1c0NvZGU6IG51bWJlcjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBkZXN0aW5hdGlvblJlc3BvbnNlOiBPYmplY3Q7XG4gIHN0YXRUYWdzOiBPYmplY3Q7XG4gIGF1dGhFcnJvckNhdGVnb3J5Pzogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIFJlZ3VsYXRpb25SZXNwb25zZSA9IHtcbiAgc3RhdHVzQ29kZTogbnVtYmVyO1xuICBlcnJvcj86IHN0cmluZztcbiAgc3RhdHVzPzogc3RyaW5nO1xuICBhdXRoRXJyb3JDYXRlZ29yeT86IHN0cmluZztcbiAgc3RhdFRhZ3M6IE9iamVjdDtcbn07XG5cbi8vIEFsbCBwbHVnaW4gcmVsYXRlZCB0eXBlcyBlbmQgaGVyZVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVncmF0aW9uIHtcbiAgZ2V0TmFtZSgpOiBzdHJpbmc7XG4gIGV4ZWN1dGUoXG4gICAgaW5wdXRzRGF0YTogeyBldmVudDogUnVkZGVyU3RhY2tFdmVudFBheWxvYWRbXTsgbWV0YWRhdGE6IE1ldGFkYXRhW10gfVtdLFxuICAgIGRlc3RpbmF0aW9uOiBEZXN0aW5hdGlvbixcbiAgKTogUHJvbWlzZTx7XG4gICAgcmVzdWx0Q29udGV4dDoge1xuICAgICAgcGF5bG9hZDogUGF5bG9hZFtdO1xuICAgICAgbWV0YWRhdGE6IE1ldGFkYXRhW107XG4gICAgfVtdO1xuICAgIGVycm9yUmVzdWx0czoge1xuICAgICAgZXJyb3I6IGFueTtcbiAgICAgIG1ldGFkYXRhOiBNZXRhZGF0YVtdO1xuICAgIH1bXTtcbiAgfT47XG59XG5cbmV4cG9ydCB0eXBlIEludGVncmF0aW9uQ29uZmlnID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHNhdmVSZXNwb25zZTogYm9vbGVhbjtcbiAgZXZlbnRPcmRlcmluZzogYm9vbGVhbjtcbiAgcGx1Z2luczogc3RyaW5nW107XG59O1xuXG5leHBvcnQgdHlwZSBKU09OVmFsdWUgPSBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgeyBbeDogc3RyaW5nXTogSlNPTlZhbHVlIH0gfCBBcnJheTxKU09OVmFsdWU+O1xuXG5leHBvcnQgZW51bSBXb3JrZmxvd1R5cGUge1xuICBTVFJFQU0gPSAnc3RyZWFtJyxcbiAgUkVUTCA9ICdyZXRsJyxcbn1cblxuZXhwb3J0IHR5cGUgTG9nZ2FibGVFeHRyYURhdGEgPSB7XG4gIGRlc3RpbmF0aW9uSWQ6IHN0cmluZztcbiAgd29ya3NwYWNlSWQ6IHN0cmluZztcbiAgbW9kdWxlOiBzdHJpbmc7XG4gIGltcGxlbWVudGF0aW9uOiBzdHJpbmc7XG4gIHNvdXJjZUlkOiBzdHJpbmc7XG4gIGRlc3RpbmF0aW9uVHlwZTogc3RyaW5nO1xufVxuIl19
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxJQUFZLFdBUVg7QUFSRCxXQUFZLFdBQVc7SUFDckIsb0NBQXFCLENBQUE7SUFDckIsOEJBQWUsQ0FBQTtJQUNmLDRCQUFhLENBQUE7SUFDYixnQ0FBaUIsQ0FBQTtJQUNqQiw4QkFBZSxDQUFBO0lBQ2YsOEJBQWUsQ0FBQTtJQUNmLDZDQUE4QixDQUFBO0FBQ2hDLENBQUMsRUFSVyxXQUFXLDJCQUFYLFdBQVcsUUFRdEI7QUF5T00sTUFBTSxPQUFPLEdBQUcsQ0FBQyxNQUFjLEVBQW1CLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQztBQUF2RSxRQUFBLE9BQU8sV0FBZ0U7QUFFN0UsTUFBTSxXQUFXLEdBQUcsQ0FBQyxNQUFjLEVBQXNCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQztBQUFsRixRQUFBLFdBQVcsZUFBdUU7QUFFeEYsTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUFjLEVBQXFCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQztBQUE3RSxRQUFBLFNBQVMsYUFBb0U7QUE2QzFGLElBQVksWUFHWDtBQUhELFdBQVksWUFBWTtJQUN0QixpQ0FBaUIsQ0FBQTtJQUNqQiw2QkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUhXLFlBQVksNEJBQVosWUFBWSxRQUd2QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogZGVjbGFyZSB0eXBlcyBvZiBldmVudHMgZm9yIHJ1ZGRlcnN0YWNrXG4gKi9cbmV4cG9ydCBlbnVtIE1lc3NhZ2VUeXBlIHtcbiAgSURFTlRJRlkgPSAnaWRlbnRpZnknLFxuICBUUkFDSyA9ICd0cmFjaycsXG4gIFBBR0UgPSAncGFnZScsXG4gIFNDUkVFTiA9ICdzY3JlZW4nLFxuICBHUk9VUCA9ICdncm91cCcsXG4gIEFMSUFTID0gJ2FsaWFzJyxcbiAgQVVESUVOQ0VfTElTVCA9ICdhdWRpZW5jZWxpc3QnLFxufVxuXG50eXBlIEV4Y2x1c2l2ZVByb3BlcnRpZXM8VCwgVT4gPSBUIGV4dGVuZHMgdW5kZWZpbmVkID8gVSA6IFUgZXh0ZW5kcyB1bmRlZmluZWQgPyBUIDogbmV2ZXI7XG5cbmV4cG9ydCB0eXBlIEV4dGVybmFsSWQgPSB7XG4gIGlkZW50aWZpZXJUeXBlPzogc3RyaW5nO1xuICBpZDogdW5rbm93bjtcbiAgdHlwZTogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBkZWZpbmUgdGhlIGNvbnRleHQgb2YgdGhlIGV2ZW50XG4gKiBAc2VlIGh0dHBzOi8vd3d3LnJ1ZGRlcnN0YWNrLmNvbS9kb2NzL2V2ZW50LXNwZWMvc3RhbmRhcmQtZXZlbnRzL2NvbW1vbi1maWVsZHMvI2NvbnRleHR1YWwtZmllbGRzXG4gKi9cbnR5cGUgQ29udGV4dCA9IHtcbiAgYXBwOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHZlcnNpb246IHN0cmluZztcbiAgICBidWlsZDogc3RyaW5nO1xuICAgIG5hbWVzcGFjZTogc3RyaW5nO1xuICB9O1xuICBjYW1wYWlnbjoge1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgc291cmNlPzogc3RyaW5nO1xuICAgIG1lZGl1bT86IHN0cmluZztcbiAgICB0ZXJtPzogc3RyaW5nO1xuICAgIGNvbnRlbnQ/OiBzdHJpbmc7XG4gIH07XG4gIGRldmljZToge1xuICAgIGlkPzogc3RyaW5nO1xuICAgIG1hbnVmYWN0dXJlcj86IHN0cmluZztcbiAgICBtb2RlbD86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHR5cGU/OiBzdHJpbmc7XG4gICAgdmVyc2lvbj86IHN0cmluZztcbiAgICB0b2tlbj86IHN0cmluZztcbiAgICBhZHZlcnRpc2luZ0lkPzogc3RyaW5nO1xuICAgIGFkVHJhY2tpbmdFbmFibGVkPzogYm9vbGVhbjtcbiAgICBhdHRUcmFja2luZ1N0YXR1cz86IHN0cmluZztcbiAgfTtcbiAgbGlicmFyeToge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB2ZXJzaW9uOiBzdHJpbmc7XG4gIH07XG4gIGxvY2FsZTogc3RyaW5nO1xuICBuZXR3b3JrOiB7XG4gICAgYmx1ZXRvb3RoPzogc3RyaW5nO1xuICAgIGNhcnJpZXI/OiBzdHJpbmc7XG4gICAgY2VsbHVsYXI/OiBzdHJpbmc7XG4gICAgd2lmaT86IHN0cmluZztcbiAgfTtcbiAgb3M6IHtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHZlcnNpb24/OiBzdHJpbmc7XG4gIH07XG4gIHNjcmVlbjoge1xuICAgIGRlbnNpdHk6IG51bWJlcjtcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIGhlaWdodDogbnVtYmVyO1xuICAgIGlubmVyV2lkdGg/OiBudW1iZXI7XG4gICAgaW5uZXJIZWlnaHQ/OiBudW1iZXI7XG4gIH07XG4gIHRpbWV6b25lPzogc3RyaW5nO1xuICB0cmFpdHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgdXNlckFnZW50Pzogc3RyaW5nO1xuICBpcD86IHN0cmluZztcbiAgbWFwcGVkVG9EZXN0aW5hdGlvbj86IGJvb2xlYW47XG4gIHBhZ2U6IHtcbiAgICBwYXRoPzogc3RyaW5nO1xuICAgIHJlZmVycmVyPzogc3RyaW5nO1xuICAgIHJlZmVycmluZ19kb21haW4/OiBzdHJpbmc7XG4gICAgaW5pdGlhbF9yZWZlcnJlcj86IHN0cmluZztcbiAgICBpbml0aWFsX3JlZmVycmluZ19kb21haW4/OiBzdHJpbmc7XG4gICAgc2VhcmNoPzogc3RyaW5nO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHVybD86IHN0cmluZztcbiAgfTtcbiAgbG9jYXRpb24/OiB7XG4gICAgY2l0eT86IHN0cmluZztcbiAgICBjb3VudHJ5Pzogc3RyaW5nO1xuICAgIGxhdGl0dWRlPzogbnVtYmVyO1xuICAgIGxvbmdpdHVkZT86IG51bWJlcjtcbiAgICB0aW1lem9uZT86IHN0cmluZztcbiAgICBnZW9Tb3VyY2U/OiBzdHJpbmc7XG4gIH07XG4gIGV4dGVybmFsSWQ/OiBFeHRlcm5hbElkW107XG59O1xuXG4vKipcbiAqIGEgbG9vc2UgZGVmaW5pdGlvbiBvZiBydWRkZXJzdGFjayBldmVudCB3aXRob3V0IGNvbnNpZGVyaW5nXG4gKiB0aGUgZXhjbHVzaXZpdHkgb2YgdXNlcklkIGFuZCBhbm9ueW1vdXNJZFxuICovXG50eXBlIExvb3NlUnVkZGVyU3RhY2tFdmVudCA9IHtcbiAgY2hhbm5lbDogc3RyaW5nO1xuICBjb250ZXh0OiBDb250ZXh0O1xuICB0eXBlOiBNZXNzYWdlVHlwZTtcbiAgb3JpZ2luYWxUaW1lc3RhbXA6IHN0cmluZztcbiAgc2VudEF0OiBzdHJpbmc7XG4gIHRyYWl0cz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBldmVudD86IHN0cmluZztcbiAgaW50ZWdyYXRpb25zPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIG1lc3NhZ2VJZD86IHN0cmluZztcbiAgcHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICByZWNlaXZlZEF0Pzogc3RyaW5nO1xuICB0aW1lc3RhbXA/OiBzdHJpbmc7XG4gIHVzZXJJZD86IHN0cmluZztcbiAgYW5vbnltb3VzSWQ/OiBzdHJpbmc7XG4gIHJlcXVlc3RfaXA/OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIGEgc3RyaWN0IGRlZmluaXRpb24gb2YgcnVkZGVyc3RhY2sgZXZlbnRcbiAqIEBzZWUgaHR0cHM6Ly93d3cucnVkZGVyc3RhY2suY29tL2RvY3MvZXZlbnQtc3BlYy9zdGFuZGFyZC1ldmVudHMvY29tbW9uLWZpZWxkcy8jY29udGV4dHVhbC1maWVsZHNcbiAqL1xuZXhwb3J0IHR5cGUgUnVkZGVyU3RhY2tFdmVudCA9IExvb3NlUnVkZGVyU3RhY2tFdmVudCAmIHtcbiAgYW5vbnltb3VzSWQ/OiBFeGNsdXNpdmVQcm9wZXJ0aWVzPExvb3NlUnVkZGVyU3RhY2tFdmVudFsnYW5vbnltb3VzSWQnXSwgdW5kZWZpbmVkPjtcbiAgdXNlcklkPzogRXhjbHVzaXZlUHJvcGVydGllczxMb29zZVJ1ZGRlclN0YWNrRXZlbnRbJ3VzZXJJZCddLCB1bmRlZmluZWQ+O1xufTtcblxuZXhwb3J0IHR5cGUgUnVkZGVyU3RhY2tFdmVudFBheWxvYWQgPSB7IG1lc3NhZ2U6IFJ1ZGRlclN0YWNrRXZlbnQgfTtcblxuLyoqXG4gKiBkZWZpbmUgbWV0YWRhdGEgb2YgdGhlIGV2ZW50IHVzZWQgYnkgcnMtc2VydmVyXG4gKi9cbmV4cG9ydCB0eXBlIE1ldGFkYXRhID0ge1xuICBzb3VyY2VJZDogc3RyaW5nO1xuICB3b3Jrc3BhY2VJZDogc3RyaW5nO1xuICBuYW1lc3BhY2U6IHN0cmluZztcbiAgaW5zdGFuY2VJZDogc3RyaW5nO1xuICBzb3VyY2VUeXBlOiBzdHJpbmc7XG4gIHNvdXJjZUNhdGVnb3J5OiBzdHJpbmc7XG4gIHRyYWNraW5nUGxhbklkOiBzdHJpbmc7XG4gIHRyYWNraW5nUGxhblZlcnNpb246IG51bWJlcjtcbiAgc291cmNlVHBDb25maWc6IE9iamVjdDtcbiAgbWVyZ2VkVHBDb25maWc6IE9iamVjdDtcbiAgZGVzdGluYXRpb25JZDogc3RyaW5nO1xuICBqb2JSdW5JZDogc3RyaW5nO1xuICBqb2JJZDogbnVtYmVyO1xuICBzb3VyY2VCYXRjaElkOiBzdHJpbmc7XG4gIHNvdXJjZUpvYklkOiBzdHJpbmc7XG4gIHNvdXJjZUpvYlJ1bklkOiBzdHJpbmc7XG4gIHNvdXJjZVRhc2tJZDogc3RyaW5nO1xuICBzb3VyY2VUYXNrUnVuSWQ6IHN0cmluZztcbiAgcmVjb3JkSWQ6IE9iamVjdDtcbiAgZGVzdGluYXRpb25UeXBlOiBzdHJpbmc7XG4gIG1lc3NhZ2VJZDogc3RyaW5nO1xuICBvYXV0aEFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIG1lc3NhZ2VJZHM6IHN0cmluZ1tdO1xuICBydWRkZXJJZDogc3RyaW5nO1xuICByZWNlaXZlZEF0OiBzdHJpbmc7XG4gIGV2ZW50TmFtZTogc3RyaW5nO1xuICBldmVudFR5cGU6IHN0cmluZztcbiAgc291cmNlRGVmaW5pdGlvbklkOiBzdHJpbmc7XG4gIGRlc3RpbmF0aW9uRGVmaW5pdGlvbklkOiBzdHJpbmc7XG4gIHRyYW5zZm9ybWF0aW9uSWQ6IHN0cmluZztcbn07XG5cbi8qKlxuICogZGVmaW5lIHRoZSB0cmFuc2Zvcm1hdGlvbiB2ZXJzaW9uXG4gKi9cbnR5cGUgVXNlclRyYW5zZm9ybWF0aW9uVmVyc2lvbiA9IHtcbiAgVmVyc2lvbklEOiBzdHJpbmc7XG4gIElEOiBzdHJpbmc7XG4gIENvbmZpZzogT2JqZWN0O1xufTtcblxuLyoqXG4gKiBkZWZpbmUgdGhlIGRlc3RpbmF0aW9uIGRlZmluaXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgRGVzdGluYXRpb25EZWZpbml0aW9uID0ge1xuICBJRDogc3RyaW5nO1xuICBOYW1lOiBzdHJpbmc7XG4gIERpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIENvbmZpZzogT2JqZWN0O1xufTtcblxuLyoqXG4gKiBkZWZpbmUgdGhlIGRlc3RpbmF0aW9uIG9iamVjdFxuICovXG5leHBvcnQgdHlwZSBEZXN0aW5hdGlvbiA9IHtcbiAgSUQ6IHN0cmluZztcbiAgTmFtZTogc3RyaW5nO1xuICBEZXN0aW5hdGlvbkRlZmluaXRpb246IERlc3RpbmF0aW9uRGVmaW5pdGlvbjtcbiAgQ29uZmlnOiBPYmplY3Q7XG4gIEVuYWJsZWQ6IGJvb2xlYW47XG4gIFdvcmtzcGFjZUlEOiBzdHJpbmc7XG4gIFRyYW5zZm9ybWF0aW9ucz86IFVzZXJUcmFuc2Zvcm1hdGlvblZlcnNpb25bXTtcbiAgUmV2aXNpb25JRD86IHN0cmluZztcbiAgSXNQcm9jZXNzb3JFbmFibGVkOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgUGF5bG9hZCA9IGFueTtcbmV4cG9ydCB0eXBlIE91dHB1dCA9IGFueTtcblxuLy8gQWxsIHBsdWdpbiByZWxhdGVkIHR5cGVzIHN0YXJ0IGhlcmVcblxuZXhwb3J0IHR5cGUgUGx1Z2luVHlwZSA9ICdwcm9jZXNzJyB8ICdiYXRjaCcgfCAnbXVsdGlwbGV4JztcbmV4cG9ydCB0eXBlIFBsdWdpbkltcGxlbWVudGF0aW9uID0gJ2pzJyB8ICd0ZW1wbGF0ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luIHtcbiAgdHlwZTogUGx1Z2luVHlwZTtcbiAgaW1wbGVudGF0aW9uOiBQbHVnaW5JbXBsZW1lbnRhdGlvbjtcbiAgYXBwbHkoXG4gICAgZXZlbnQ6IFBheWxvYWQgfCBQYXlsb2FkW10sXG4gICAgZGVzdGluYXRpb246IERlc3RpbmF0aW9uLFxuICAgIHN0YXRlOiB7IHN0b3JlOiBNYXA8c3RyaW5nLCBhbnk+OyBza2lwTmV4dDogYm9vbGVhbjsgZXhpdDogYm9vbGVhbiB9LFxuICApOiBPdXRwdXQgfCBPdXRwdXRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNdWxpcGxleCBleHRlbmRzIFBsdWdpbiB7XG4gIGFwcGx5KFxuICAgIGV2ZW50OiBQYXlsb2FkLFxuICAgIGRlc3RpbmF0aW9uOiBEZXN0aW5hdGlvbixcbiAgICBzdGF0ZTogeyBzdG9yZTogTWFwPHN0cmluZywgYW55Pjsgc2tpcE5leHQ6IGJvb2xlYW47IGV4aXQ6IGJvb2xlYW4gfSxcbiAgKTogT3V0cHV0W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmF0Y2ggZXh0ZW5kcyBQbHVnaW4ge1xuICBhcHBseShcbiAgICBldmVudDogUGF5bG9hZFtdLFxuICAgIGRlc3RpbmF0aW9uOiBEZXN0aW5hdGlvbixcbiAgICBzdGF0ZTogeyBzdG9yZTogTWFwPHN0cmluZywgYW55Pjsgc2tpcE5leHQ6IGJvb2xlYW47IGV4aXQ6IGJvb2xlYW4gfSxcbiAgKTogT3V0cHV0W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2VzcyBleHRlbmRzIFBsdWdpbiB7XG4gIGFwcGx5KFxuICAgIGV2ZW50OiBQYXlsb2FkLFxuICAgIGRlc3RpbmF0aW9uOiBEZXN0aW5hdGlvbixcbiAgICBzdGF0ZTogeyBzdG9yZTogTWFwPHN0cmluZywgYW55Pjsgc2tpcE5leHQ6IGJvb2xlYW47IGV4aXQ6IGJvb2xlYW4gfSxcbiAgKTogT3V0cHV0O1xufVxuXG5leHBvcnQgY29uc3QgaXNCYXRjaCA9IChwbHVnaW46IFBsdWdpbik6IHBsdWdpbiBpcyBCYXRjaCA9PiBwbHVnaW4udHlwZSA9PT0gJ2JhdGNoJztcblxuZXhwb3J0IGNvbnN0IGlzTXVsdGlwbGV4ID0gKHBsdWdpbjogUGx1Z2luKTogcGx1Z2luIGlzIE11bGlwbGV4ID0+IHBsdWdpbi50eXBlID09PSAnbXVsdGlwbGV4JztcblxuZXhwb3J0IGNvbnN0IGlzUHJvY2VzcyA9IChwbHVnaW46IFBsdWdpbik6IHBsdWdpbiBpcyBQcm9jZXNzID0+IHBsdWdpbi50eXBlID09PSAncHJvY2Vzcyc7XG5cbmV4cG9ydCB0eXBlIERlbGl2ZXJ5UmVzcG9uc2UgPSB7XG4gIHN0YXR1c0NvZGU6IG51bWJlcjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBkZXN0aW5hdGlvblJlc3BvbnNlOiBPYmplY3Q7XG4gIHN0YXRUYWdzOiBPYmplY3Q7XG4gIGF1dGhFcnJvckNhdGVnb3J5Pzogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIFJlZ3VsYXRpb25SZXNwb25zZSA9IHtcbiAgc3RhdHVzQ29kZTogbnVtYmVyO1xuICBlcnJvcj86IHN0cmluZztcbiAgc3RhdHVzPzogc3RyaW5nO1xuICBhdXRoRXJyb3JDYXRlZ29yeT86IHN0cmluZztcbiAgc3RhdFRhZ3M6IE9iamVjdDtcbn07XG5cbi8vIEFsbCBwbHVnaW4gcmVsYXRlZCB0eXBlcyBlbmQgaGVyZVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVncmF0aW9uIHtcbiAgZ2V0TmFtZSgpOiBzdHJpbmc7XG4gIGV4ZWN1dGUoXG4gICAgaW5wdXRzRGF0YTogeyBldmVudDogUnVkZGVyU3RhY2tFdmVudFBheWxvYWRbXTsgbWV0YWRhdGE6IE1ldGFkYXRhW10gfVtdLFxuICAgIGRlc3RpbmF0aW9uOiBEZXN0aW5hdGlvbixcbiAgKTogUHJvbWlzZTx7XG4gICAgcmVzdWx0Q29udGV4dDoge1xuICAgICAgcGF5bG9hZDogUGF5bG9hZFtdO1xuICAgICAgbWV0YWRhdGE6IE1ldGFkYXRhW107XG4gICAgfVtdO1xuICAgIGVycm9yUmVzdWx0czoge1xuICAgICAgZXJyb3I6IGFueTtcbiAgICAgIG1ldGFkYXRhOiBNZXRhZGF0YVtdO1xuICAgIH1bXTtcbiAgfT47XG59XG5cbmV4cG9ydCB0eXBlIEludGVncmF0aW9uQ29uZmlnID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHNhdmVSZXNwb25zZTogYm9vbGVhbjtcbiAgZXZlbnRPcmRlcmluZzogYm9vbGVhbjtcbiAgcGx1Z2luczogc3RyaW5nW107XG59O1xuXG5leHBvcnQgdHlwZSBKU09OVmFsdWUgPSBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgeyBbeDogc3RyaW5nXTogSlNPTlZhbHVlIH0gfCBBcnJheTxKU09OVmFsdWU+O1xuXG5leHBvcnQgZW51bSBXb3JrZmxvd1R5cGUge1xuICBTVFJFQU0gPSAnc3RyZWFtJyxcbiAgUkVUTCA9ICdyZXRsJyxcbn1cblxuZXhwb3J0IHR5cGUgTG9nZ2FibGVFeHRyYURhdGEgPSB7XG4gIGRlc3RpbmF0aW9uSWQ6IHN0cmluZztcbiAgd29ya3NwYWNlSWQ6IHN0cmluZztcbiAgbW9kdWxlOiBzdHJpbmc7XG4gIGltcGxlbWVudGF0aW9uOiBzdHJpbmc7XG4gIHNvdXJjZUlkOiBzdHJpbmc7XG4gIGRlc3RpbmF0aW9uVHlwZTogc3RyaW5nO1xufTtcbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/utils/json.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAyC5C,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,eAAe,CAA0B;IAExD;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IA4DxC,OAAO,CAAC,MAAM,CAAC,cAAc;IAiE7B,OAAO,CAAC,MAAM,CAAC,YAAY;IAgH3B,OAAO,CAAC,MAAM,CAAC,cAAc;IAqB7B,OAAO,CAAC,MAAM,CAAC,sBAAsB;IA8GrC,OAAO,CAAC,MAAM,CAAC,cAAc;IAM7B,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA6DhC;;;;;;;;OAQG;WACW,mBAAmB,CAC/B,OAAO,EAAE,gBAAgB,EACzB,UAAU,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,GAChD,GAAG;IA0CN;;;;;;;;OAQG;WACW,wBAAwB,CAAC,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,GAAG,GAAG;IAQzF;;;;;;;;OAQG;WACW,gBAAgB,CAC5B,OAAO,EAAE,gBAAgB,EACzB,WAAW,EAAE,GAAG,EAAE,EAClB,eAAe,GAAE,MAAW,GAC3B,GAAG;WA4DQ,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;CAGhD"}
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/utils/json.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAoC5C,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,eAAe,CAA0B;IAExD;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IA8DxC,OAAO,CAAC,MAAM,CAAC,cAAc;IAiE7B,OAAO,CAAC,MAAM,CAAC,YAAY;IAgH3B,OAAO,CAAC,MAAM,CAAC,cAAc;IAsB7B,OAAO,CAAC,MAAM,CAAC,sBAAsB;IA8GrC,OAAO,CAAC,MAAM,CAAC,cAAc;IAM7B,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA6DhC;;;;;;;;OAQG;WACW,mBAAmB,CAC/B,OAAO,EAAE,gBAAgB,EACzB,UAAU,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,GAChD,GAAG;IA0CN;;;;;;;;OAQG;WACW,wBAAwB,CAAC,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,GAAG,GAAG;IAQzF;;;;;;;;OAQG;WACW,gBAAgB,CAC5B,OAAO,EAAE,gBAAgB,EACzB,WAAW,EAAE,GAAG,EAAE,EAClB,eAAe,GAAE,MAAW,GAC3B,GAAG;WA4DQ,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;CAGhD"}
@@ -31,12 +31,12 @@ const handlebars_1 = __importDefault(require("handlebars"));
31
31
  const get_value_1 = __importDefault(require("get-value"));
32
32
  const set_value_1 = __importDefault(require("set-value"));
33
33
  const lodash_1 = require("lodash");
34
+ const moment_timezone_1 = __importDefault(require("moment-timezone"));
34
35
  const logger = __importStar(require("../logger"));
35
36
  const platform_error_1 = require("../errors/platform_error");
36
37
  const sem_1 = require("./sem");
37
38
  const instrumentation_error_1 = require("../errors/instrumentation_error");
38
39
  const misc_1 = require("./misc");
39
- const moment_timezone_1 = __importDefault(require("moment-timezone"));
40
40
  const transformation_error_1 = require("../errors/transformation_error");
41
41
  const constants_1 = require("../constants");
42
42
  class JsonUtils {
@@ -72,6 +72,7 @@ class JsonUtils {
72
72
  switch (operation) {
73
73
  case 'multiplication':
74
74
  result = 1;
75
+ // eslint-disable-next-line no-restricted-syntax
75
76
  for (const v of argValues) {
76
77
  if ((0, lodash_1.isNumber)(v)) {
77
78
  result *= v;
@@ -85,6 +86,7 @@ class JsonUtils {
85
86
  return result;
86
87
  case 'addition':
87
88
  result = 0;
89
+ // eslint-disable-next-line no-restricted-syntax
88
90
  for (const v of argValues) {
89
91
  if ((0, lodash_1.isNumber)(v)) {
90
92
  result += v;
@@ -246,6 +248,7 @@ class JsonUtils {
246
248
  if (typeof value === 'object') {
247
249
  // exclude the fields from the formattedVal
248
250
  excludes.forEach((key) => {
251
+ // eslint-disable-next-line no-param-reassign
249
252
  delete formattedVal[key];
250
253
  });
251
254
  }
@@ -504,4 +507,4 @@ class JsonUtils {
504
507
  }
505
508
  exports.JsonUtils = JsonUtils;
506
509
  JsonUtils.MESSAGE_MAPPING = constants_1.GENERIC_MAPPING_CONFIG;
507
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9qc29uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNERBQW9DO0FBRXBDLDBEQUE0QjtBQUM1QiwwREFBNEI7QUFDNUIsbUNBQXlEO0FBR3pELGtEQUFvQztBQUNwQyw2REFBeUQ7QUFDekQsK0JBQXFDO0FBQ3JDLDJFQUF1RTtBQUN2RSxpQ0FPZ0I7QUFDaEIsc0VBQXFDO0FBQ3JDLHlFQUFxRTtBQUNyRSw0Q0FBc0Q7QUFxQnRELE1BQWEsU0FBUztJQUdwQjs7Ozs7OztPQU9HO0lBQ0ssTUFBTSxDQUFDLHlCQUF5QixDQUFDLEVBQ3ZDLE9BQU8sRUFDUCxlQUFlLEdBSWhCO1FBQ0MsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxlQUFlLENBQUM7UUFFNUMseUNBQXlDO1FBQ3pDLG9DQUFvQztRQUNwQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDakMsTUFBTSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxHQUFHLENBQUM7WUFDdkMsTUFBTSxHQUFHLEdBQUcsSUFBQSxtQkFBRyxFQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNyQyxJQUFJLEdBQUcsSUFBSSxHQUFHLEtBQUssS0FBSyxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUU7Z0JBQ3JDLE9BQU8sR0FBRyxDQUFDO2FBQ1o7WUFDRCxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztRQUVILDJEQUEyRDtRQUMzRCxnREFBZ0Q7UUFDaEQsdUNBQXVDO1FBQ3ZDLE1BQU0sWUFBWSxHQUFHLElBQUEsY0FBSyxFQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFBLGNBQUssRUFBQyxDQUFDLENBQUMsQ0FB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Q0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLE9BQU8sQ0FBQztTQUNoQjtRQUVELHNCQUFzQjtRQUN0QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQWM7UUFDcEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7O0FBaGxCSCw4QkFpbEJDO0FBaGxCZ0IseUJBQWUsR0FBRyxrQ0FBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBIYW5kbGViYXJzIGZyb20gJ2hhbmRsZWJhcnMnO1xuaW1wb3J0IHsgUnVkZGVyU3RhY2tFdmVudCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCBnZXQgZnJvbSAnZ2V0LXZhbHVlJztcbmltcG9ydCBzZXQgZnJvbSAnc2V0LXZhbHVlJztcbmltcG9ydCB7IGV2ZXJ5LCBpc0VtcHR5LCBpc05pbCwgaXNOdW1iZXIgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBQbGF0Zm9ybUVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL3BsYXRmb3JtX2Vycm9yJztcbmltcG9ydCB7IFNlbWFudGljVXRpbCB9IGZyb20gJy4vc2VtJztcbmltcG9ydCB7IEluc3RydW1lbnRhdGlvbkVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL2luc3RydW1lbnRhdGlvbl9lcnJvcic7XG5pbXBvcnQge1xuICBmbGF0dGVuSnNvbixcbiAgZm9ybWF0VGltZVN0YW1wLFxuICBnZXRPZmZzZXRJblNlYyxcbiAgaGFzaFRvU2hhMjU2LFxuICBpc0RlZmluZWRBbmROb3ROdWxsLFxuICBpc1ZhbGlkVXJsLFxufSBmcm9tICcuL21pc2MnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQtdGltZXpvbmUnO1xuaW1wb3J0IHsgVHJhbnNmb3JtYXRpb25FcnJvciB9IGZyb20gJy4uL2Vycm9ycy90cmFuc2Zvcm1hdGlvbl9lcnJvcic7XG5pbXBvcnQgeyBHRU5FUklDX01BUFBJTkdfQ09ORklHIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbnR5cGUgT3BlcmF0aW9uID0ge1xuICBvcGVyYXRpb246IHN0cmluZztcbiAgYXJnczogeyBzb3VyY2VLZXlzOiBzdHJpbmdbXTsgZGVmYXVsdFZhbD86IGFueSB9W107XG59O1xudHlwZSBNYXBwaW5nTWV0YWRhdGEgPSB7XG4gIHR5cGU/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgdHlwZUZvcm1hdD86IHN0cmluZztcbiAgdGVtcGxhdGU/OiBzdHJpbmc7XG4gIGRlZmF1bHRWYWx1ZT86IHVua25vd247XG4gIGV4Y2x1ZGVzPzogc3RyaW5nW107XG4gIG11bHRpa2V5TWFwPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9O1xuICBzdHJpY3RNdWx0aU1hcD86IHsgc291cmNlVmFsOiBzdHJpbmdbXTsgZGVzdFZhbDogc3RyaW5nIH1bXTtcbiAgdmFsaWRhdGVUaW1lc3RhbXA/OiB7XG4gICAgYWxsb3dlZEZ1dHVyZVRpbWVEaWZmZXJlbmNlOiBudW1iZXI7XG4gICAgYWxsb3dlZEZ1dHVyZVRpbWVVbml0OiBzdHJpbmc7XG4gICAgYWxsb3dlZFBhc3RUaW1lRGlmZmVyZW5jZTogbnVtYmVyO1xuICAgIGFsbG93ZWRQYXN0VGltZVVuaXQ6IHN0cmluZztcbiAgfTtcbiAgYWxsb3dlZEtleUNoZWNrPzogeyB0eXBlOiBzdHJpbmc7IHNvdXJjZVZhbDogc3RyaW5nW10gfVtdO1xufVxuZXhwb3J0IGNsYXNzIEpzb25VdGlscyB7XG4gIHByaXZhdGUgc3RhdGljIE1FU1NBR0VfTUFQUElORyA9IEdFTkVSSUNfTUFQUElOR19DT05GSUc7XG5cbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uOiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGhhbmRsZSB0aGUgc291cmNlIGtleXMgb3BlcmF0aW9uXG4gICAqIEBwYXJhbSBtZXNzYWdlIC0gdGhlIG1lc3NhZ2Ugb2JqZWN0XG4gICAqIEByZXR1cm5zXHR7YW55fVx0LSByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgc291cmNlIGtleVxuICAgKiBcdFx0XHRcdFx0XHRpZiB0aGUgc291cmNlIGtleSBpcyBub3QgcHJlc2VudCBpbiB0aGUgbWVzc2FnZVxuICAgKiBcdFx0XHRcdFx0XHRyZXR1cm5zIG51bGxcbiAgICpcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGhhbmRsZVNvdXJjZUtleXNPcGVyYXRpb24oe1xuICAgIG1lc3NhZ2UsXG4gICAgb3BlcmF0aW9uT2JqZWN0LFxuICB9OiB7XG4gICAgbWVzc2FnZTogUnVkZGVyU3RhY2tFdmVudDtcbiAgICBvcGVyYXRpb25PYmplY3Q6IE9wZXJhdGlvbjtcbiAgfSk6IGFueSB7XG4gICAgY29uc3QgeyBvcGVyYXRpb24sIGFyZ3MgfSA9IG9wZXJhdGlvbk9iamVjdDtcblxuICAgIC8vIHBvcHVsYXRlIHRoZSB2YWx1ZXMgZnJvbSB0aGUgYXJndW1lbnRzXG4gICAgLy8gaW4gdGhlIHNhbWUgb3JkZXIgaXQgaXMgcG9wdWxhdGVkXG4gICAgY29uc3QgYXJnVmFsdWVzID0gYXJncy5tYXAoKGFyZykgPT4ge1xuICAgICAgY29uc3QgeyBzb3VyY2VLZXlzLCBkZWZhdWx0VmFsIH0gPSBhcmc7XG4gICAgICBjb25zdCB2YWwgPSBnZXQobWVzc2FnZSwgc291cmNlS2V5cyk7XG4gICAgICBpZiAodmFsIHx8IHZhbCA9PT0gZmFsc2UgfHwgdmFsID09PSAwKSB7XG4gICAgICAgIHJldHVybiB2YWw7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGVmYXVsdFZhbDtcbiAgICB9KTtcblxuICAgIC8vIHF1aWNrIHNhbml0eSBjaGVjayBmb3IgdGhlIHVuZGVmaW5lZCB2YWx1ZXMgaW4gdGhlIGxpc3QuXG4gICAgLy8gaWYgdGhlcmUgaXMgYW55IHVuZGVmaW5lZCB2YWx1ZXMsIHJldHVybiBudWxsXG4gICAgLy8gd2l0aG91dCBnb2luZyBmdXJ0aGVyIGZvciBvcGVyYXRpb25zXG4gICAgY29uc3QgaXNBbGxEZWZpbmVkID0gZXZlcnkoYXJnVmFsdWVzLCAodikgPT4gIWlzTmlsKHYpKTtcbiAgICBpZiAoIWlzQWxsRGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gc3RhcnQgaGFuZGxpbmcgb3BlcmF0aW9uc1xuICAgIGxldCByZXN1bHQ6IG51bWJlcjtcbiAgICBzd2l0Y2ggKG9wZXJhdGlvbikge1xuICAgICAgY2FzZSAnbXVsdGlwbGljYXRpb24nOlxuICAgICAgICByZXN1bHQgPSAxO1xuICAgICAgICBmb3IgKGNvbnN0IHYgb2YgYXJnVmFsdWVzKSB7XG4gICAgICAgICAgaWYgKGlzTnVtYmVyKHYpKSB7XG4gICAgICAgICAgICByZXN1bHQgKj0gdjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgYSBub24gbnVtYmVyIGFyZ3VtZW50IHNpbXBseSByZXR1cm4gbnVsbFxuICAgICAgICAgICAgLy8gbm9uIG51bWJlcnMgY2FuJ3QgYmUgb3BlcmF0ZWQgYXJpdGhtYXRpY2FsbHlcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgY2FzZSAnYWRkaXRpb24nOlxuICAgICAgICByZXN1bHQgPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IHYgb2YgYXJnVmFsdWVzKSB7XG4gICAgICAgICAgaWYgKGlzTnVtYmVyKHYpKSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gdjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgYSBub24gbnVtYmVyIGFyZ3VtZW50IHNpbXBseSByZXR1cm4gbnVsbFxuICAgICAgICAgICAgLy8gbm9uIG51bWJlcnMgY2FuJ3QgYmUgb3BlcmF0ZWQgYXJpdGhtYXRpY2FsbHlcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY2hlY2tUaW1lc3RhbXAoXG4gICAgdmFsaWRhdGVUaW1lc3RhbXA6IHtcbiAgICAgIGFsbG93ZWRGdXR1cmVUaW1lRGlmZmVyZW5jZTogbnVtYmVyO1xuICAgICAgYWxsb3dlZEZ1dHVyZVRpbWVVbml0OiBzdHJpbmc7XG4gICAgICBhbGxvd2VkUGFzdFRpbWVEaWZmZXJlbmNlOiBudW1iZXI7XG4gICAgICBhbGxvd2VkUGFzdFRpbWVVbml0OiBzdHJpbmc7XG4gICAgfSxcbiAgICBmb3JtYXR0ZWRWYWw6IG51bWJlcixcbiAgKSB7XG4gICAgY29uc3Qge1xuICAgICAgYWxsb3dlZFBhc3RUaW1lRGlmZmVyZW5jZSxcbiAgICAgIGFsbG93ZWRQYXN0VGltZVVuaXQsIC8vIHNlY29uZHMsIG1pbnV0ZXMsIGhvdXJzXG4gICAgICBhbGxvd2VkRnV0dXJlVGltZURpZmZlcmVuY2UsXG4gICAgICBhbGxvd2VkRnV0dXJlVGltZVVuaXQsIC8vIHNlY29uZHMsIG1pbnV0ZXMsIGhvdXJzXG4gICAgfSA9IHZhbGlkYXRlVGltZXN0YW1wO1xuXG4gICAgbGV0IHBhc3RUaW1lRGlmZmVyZW5jZTtcbiAgICBsZXQgZnV0dXJlVGltZURpZmZlcmVuY2U7XG5cbiAgICBjb25zdCBjdXJyZW50VGltZSA9IG1vbWVudC51bml4KE51bWJlcihtb21lbnQoKS5mb3JtYXQoJ1gnKSkpO1xuICAgIGNvbnN0IHRpbWUgPSBtb21lbnQudW5peChOdW1iZXIobW9tZW50KGZvcm1hdHRlZFZhbCkuZm9ybWF0KCdYJykpKTtcblxuICAgIHN3aXRjaCAoYWxsb3dlZFBhc3RUaW1lVW5pdCkge1xuICAgICAgY2FzZSAnc2Vjb25kcyc6XG4gICAgICAgIHBhc3RUaW1lRGlmZmVyZW5jZSA9IE1hdGguY2VpbChtb21lbnQuZHVyYXRpb24oY3VycmVudFRpbWUuZGlmZih0aW1lKSkuYXNTZWNvbmRzKCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ21pbnV0ZXMnOlxuICAgICAgICBwYXN0VGltZURpZmZlcmVuY2UgPSBNYXRoLmNlaWwobW9tZW50LmR1cmF0aW9uKGN1cnJlbnRUaW1lLmRpZmYodGltZSkpLmFzTWludXRlcygpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdob3Vycyc6XG4gICAgICAgIHBhc3RUaW1lRGlmZmVyZW5jZSA9IE1hdGguY2VpbChtb21lbnQuZHVyYXRpb24oY3VycmVudFRpbWUuZGlmZih0aW1lKSkuYXNIb3VycygpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAocGFzdFRpbWVEaWZmZXJlbmNlID4gYWxsb3dlZFBhc3RUaW1lRGlmZmVyZW5jZSkge1xuICAgICAgdGhyb3cgbmV3IEluc3RydW1lbnRhdGlvbkVycm9yKFxuICAgICAgICBgQWxsb3dlZCB0aW1lc3RhbXAgaXMgWyR7YWxsb3dlZFBhc3RUaW1lRGlmZmVyZW5jZX0gJHthbGxvd2VkUGFzdFRpbWVVbml0fV0gaW50byB0aGUgcGFzdGAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChwYXN0VGltZURpZmZlcmVuY2UgPD0gMCkge1xuICAgICAgc3dpdGNoIChhbGxvd2VkRnV0dXJlVGltZVVuaXQpIHtcbiAgICAgICAgY2FzZSAnc2Vjb25kcyc6XG4gICAgICAgICAgZnV0dXJlVGltZURpZmZlcmVuY2UgPSBNYXRoLmNlaWwobW9tZW50LmR1cmF0aW9uKHRpbWUuZGlmZihjdXJyZW50VGltZSkpLmFzU2Vjb25kcygpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbWludXRlcyc6XG4gICAgICAgICAgZnV0dXJlVGltZURpZmZlcmVuY2UgPSBNYXRoLmNlaWwobW9tZW50LmR1cmF0aW9uKHRpbWUuZGlmZihjdXJyZW50VGltZSkpLmFzTWludXRlcygpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnaG91cnMnOlxuICAgICAgICAgIGZ1dHVyZVRpbWVEaWZmZXJlbmNlID0gTWF0aC5jZWlsKG1vbWVudC5kdXJhdGlvbih0aW1lLmRpZmYoY3VycmVudFRpbWUpKS5hc0hvdXJzKCkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoZnV0dXJlVGltZURpZmZlcmVuY2UgPiBhbGxvd2VkRnV0dXJlVGltZURpZmZlcmVuY2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IEluc3RydW1lbnRhdGlvbkVycm9yKFxuICAgICAgICAgIGBBbGxvd2VkIHRpbWVzdGFtcCBpcyBbJHthbGxvd2VkRnV0dXJlVGltZURpZmZlcmVuY2V9ICR7YWxsb3dlZEZ1dHVyZVRpbWVVbml0fV0gaW50byB0aGUgZnV0dXJlYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBmb3JtYXRWYWx1ZXMoXG4gICAgZm9ybWF0dGVkVmFsOiB1bmtub3duLFxuICAgIGZvcm1hdHRpbmdUeXBlOiBzdHJpbmcsXG4gICAgdHlwZUZvcm1hdD86IHN0cmluZyxcbiAgICBpbnRlZ3JhdGlvbnNPYmo/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuICApIHtcbiAgICBsZXQgY3VyRm9ybWF0dGVkVmFsID0gZm9ybWF0dGVkVmFsO1xuXG4gICAgY29uc3QgZm9ybWF0dGluZ0Z1bmN0aW9ucyA9IHtcbiAgICAgIHRpbWVzdGFtcDogKCkgPT4ge1xuICAgICAgICBjdXJGb3JtYXR0ZWRWYWwgPSBmb3JtYXRUaW1lU3RhbXAoU3RyaW5nKGZvcm1hdHRlZFZhbCksIHR5cGVGb3JtYXQpO1xuICAgICAgfSxcbiAgICAgIHNlY29uZFRpbWVzdGFtcDogKCkgPT4ge1xuICAgICAgICBpZiAoIW1vbWVudChTdHJpbmcoZm9ybWF0dGVkVmFsKSwgJ3gnLCB0cnVlKS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICBjdXJGb3JtYXR0ZWRWYWwgPSBNYXRoLmZsb29yKFxuICAgICAgICAgICAgKGZvcm1hdFRpbWVTdGFtcChTdHJpbmcoZm9ybWF0dGVkVmFsKSwgdHlwZUZvcm1hdCkgYXMgbnVtYmVyKSAvIDEwMDAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG1pY3JvU2Vjb25kVGltZXN0YW1wOiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHRlbXBfdmFsID0gbW9tZW50LnVuaXgoTnVtYmVyKG1vbWVudChTdHJpbmcoZm9ybWF0dGVkVmFsKSkuZm9ybWF0KCdYJykpKTtcbiAgICAgICAgY3VyRm9ybWF0dGVkVmFsID0gdGVtcF92YWwudG9EYXRlKCkuZ2V0VGltZSgpICogMTAwMCArIHRlbXBfdmFsLnRvRGF0ZSgpLmdldE1pbGxpc2Vjb25kcygpO1xuICAgICAgfSxcbiAgICAgIGZsYXRKc29uOiAoKSA9PiB7XG4gICAgICAgIGN1ckZvcm1hdHRlZFZhbCA9IGZsYXR0ZW5Kc29uKGZvcm1hdHRlZFZhbCk7XG4gICAgICB9LFxuICAgICAgZW5jb2RlVVJJQ29tcG9uZW50OiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHRfdmFsOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuID0gZm9ybWF0dGVkVmFsIGFzIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW47XG4gICAgICAgIGN1ckZvcm1hdHRlZFZhbCA9IGVuY29kZVVSSUNvbXBvbmVudCh0X3ZhbCk7XG4gICAgICB9LFxuICAgICAganNvblN0cmluZ2lmeTogKCkgPT4ge1xuICAgICAgICBjdXJGb3JtYXR0ZWRWYWwgPSBKU09OLnN0cmluZ2lmeShmb3JtYXR0ZWRWYWwpO1xuICAgICAgfSxcbiAgICAgIGpzb25TdHJpbmdpZnlPbkZsYXR0ZW46ICgpID0+IHtcbiAgICAgICAgY3VyRm9ybWF0dGVkVmFsID0gSlNPTi5zdHJpbmdpZnkoZmxhdHRlbkpzb24oZm9ybWF0dGVkVmFsKSk7XG4gICAgICB9LFxuICAgICAgZG9iSW5NTUREOiAoKSA9PiB7XG4gICAgICAgIGN1ckZvcm1hdHRlZFZhbCA9IFN0cmluZyhmb3JtYXR0ZWRWYWwpLnNsaWNlKDUpO1xuICAgICAgICBjdXJGb3JtYXR0ZWRWYWwgPSBTdHJpbmcoY3VyRm9ybWF0dGVkVmFsKS5yZXBsYWNlKCctJywgJy8nKTtcbiAgICAgIH0sXG4gICAgICBqc29uU3RyaW5naWZ5T25PYmplY3Q6ICgpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBmb3JtYXR0ZWRWYWwgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgY3VyRm9ybWF0dGVkVmFsID0gSlNPTi5zdHJpbmdpZnkoZm9ybWF0dGVkVmFsKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG51bWJlckZvclJldmVudWU6ICgpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICh0eXBlb2YgZm9ybWF0dGVkVmFsID09PSAnc3RyaW5nJyB8fCBmb3JtYXR0ZWRWYWwgaW5zdGFuY2VvZiBTdHJpbmcpICYmXG4gICAgICAgICAgZm9ybWF0dGVkVmFsLmNoYXJBdCgwKSA9PT0gJyQnXG4gICAgICAgICkge1xuICAgICAgICAgIGN1ckZvcm1hdHRlZFZhbCA9IGZvcm1hdHRlZFZhbC5zdWJzdHJpbmcoMSk7XG4gICAgICAgIH1cbiAgICAgICAgY3VyRm9ybWF0dGVkVmFsID0gTnVtYmVyLnBhcnNlRmxvYXQoTnVtYmVyKGN1ckZvcm1hdHRlZFZhbCB8fCAwKS50b0ZpeGVkKDIpKTtcbiAgICAgICAgaWYgKE51bWJlci5pc05hTihjdXJGb3JtYXR0ZWRWYWwpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEluc3RydW1lbnRhdGlvbkVycm9yKCdSZXZlbnVlIGlzIG5vdCBpbiB0aGUgY29ycmVjdCBmb3JtYXQnKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHRvU3RyaW5nOiAoKSA9PiB7XG4gICAgICAgIGN1ckZvcm1hdHRlZFZhbCA9IFN0cmluZyhmb3JtYXR0ZWRWYWwpO1xuICAgICAgfSxcbiAgICAgIHRvTnVtYmVyOiAoKSA9PiB7XG4gICAgICAgIGN1ckZvcm1hdHRlZFZhbCA9IE51bWJlcihmb3JtYXR0ZWRWYWwpO1xuICAgICAgfSxcbiAgICAgIHRvRmxvYXQ6ICgpID0+IHtcbiAgICAgICAgY3VyRm9ybWF0dGVkVmFsID0gcGFyc2VGbG9hdChTdHJpbmcoZm9ybWF0dGVkVmFsKSk7XG4gICAgICB9LFxuICAgICAgdG9JbnQ6ICgpID0+IHtcbiAgICAgICAgY3VyRm9ybWF0dGVkVmFsID0gcGFyc2VJbnQoU3RyaW5nKGZvcm1hdHRlZFZhbCksIDEwKTtcbiAgICAgIH0sXG4gICAgICB0b0xvd2VyOiAoKSA9PiB7XG4gICAgICAgIGN1ckZvcm1hdHRlZFZhbCA9IFN0cmluZyhmb3JtYXR0ZWRWYWwpLnRvTG93ZXJDYXNlKCk7XG4gICAgICB9LFxuICAgICAgaGFzaFRvU2hhMjU2OiAoKSA9PiB7XG4gICAgICAgIGN1ckZvcm1hdHRlZFZhbCA9IGludGVncmF0aW9uc09iaj8uaGFzaGVkXG4gICAgICAgICAgPyBTdHJpbmcoZm9ybWF0dGVkVmFsKVxuICAgICAgICAgIDogaGFzaFRvU2hhMjU2KFN0cmluZyhmb3JtYXR0ZWRWYWwpKTtcbiAgICAgIH0sXG4gICAgICBnZXRPZmZzZXRJblNlYzogKCkgPT4ge1xuICAgICAgICBjdXJGb3JtYXR0ZWRWYWwgPSBnZXRPZmZzZXRJblNlYyhTdHJpbmcoZm9ybWF0dGVkVmFsKSk7XG4gICAgICB9LFxuICAgICAgZG9tYWluVXJsOiAoKSA9PiB7XG4gICAgICAgIGN1ckZvcm1hdHRlZFZhbCA9IFN0cmluZyhmb3JtYXR0ZWRWYWwpLnJlcGxhY2UoJ2h0dHBzOi8vJywgJycpLnJlcGxhY2UoJ2h0dHA6Ly8nLCAnJyk7XG4gICAgICB9LFxuICAgICAgZG9tYWluVXJsVjI6ICgpID0+IHtcbiAgICAgICAgY29uc3QgdXJsID0gaXNWYWxpZFVybChmb3JtYXR0ZWRWYWwgYXMgc3RyaW5nIHwgVVJMKTtcbiAgICAgICAgaWYgKCF1cmwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgSW5zdHJ1bWVudGF0aW9uRXJyb3IoYEludmFsaWQgVVJMOiAke2Zvcm1hdHRlZFZhbH1gKTtcbiAgICAgICAgfVxuICAgICAgICBjdXJGb3JtYXR0ZWRWYWwgPSB1cmwuaG9zdG5hbWUucmVwbGFjZSgnd3d3LicsICcnKTtcbiAgICAgIH0sXG4gICAgICBJc0Jvb2xlYW46ICgpID0+IHtcbiAgICAgICAgY3VyRm9ybWF0dGVkVmFsID0gdHJ1ZTtcbiAgICAgICAgaWYgKCEodHlwZW9mIGZvcm1hdHRlZFZhbCA9PT0gJ2Jvb2xlYW4nKSkge1xuICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnQm9vbGVhbiB2YWx1ZSBtaXNzaW5nLCBzbyBkcm9wcGluZyBpdCcpO1xuICAgICAgICAgIGN1ckZvcm1hdHRlZFZhbCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdHJpbTogKCkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGZvcm1hdHRlZFZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBjdXJGb3JtYXR0ZWRWYWwgPSBmb3JtYXR0ZWRWYWwudHJpbSgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH07XG5cbiAgICBpZiAoZm9ybWF0dGluZ1R5cGUgaW4gZm9ybWF0dGluZ0Z1bmN0aW9ucykge1xuICAgICAgY29uc3QgZm9ybWF0dGluZ0Z1bmN0aW9uID0gZm9ybWF0dGluZ0Z1bmN0aW9uc1tmb3JtYXR0aW5nVHlwZV07XG4gICAgICBmb3JtYXR0aW5nRnVuY3Rpb24oKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3VyRm9ybWF0dGVkVmFsO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaGFuZGxlRXhjbHVkZXMoXG4gICAgdmFsdWU6IHVua25vd24sXG4gICAgZXhjbHVkZXM6IHN0cmluZ1tdLFxuICAgIGZvcm1hdHRlZFZhbDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbiAgKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIC8vIGV4Y2x1ZGUgdGhlIGZpZWxkcyBmcm9tIHRoZSBmb3JtYXR0ZWRWYWxcbiAgICAgIGV4Y2x1ZGVzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBkZWxldGUgZm9ybWF0dGVkVmFsW2tleV07XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nZ2VyLndhcm4oXCJleGNsdWRlcyBkb2Vzbid0IHdvcmsgd2l0aCBub24tb2JqZWN0IGRhdGEgdHlwZS4gSWdub3JpbmcgZXhjbHVkZXNcIik7XG4gICAgfVxuICB9XG5cbiAgLy8gZm9ybWF0IHRoZSB2YWx1ZSBhcyBwZXIgdGhlIG1ldGFkYXRhIHZhbHVlc1xuICAvLyBFeHBlY3RlZCBtZXRhZGF0YSBrZXlzIGFyZTogKGFjY29yZGluZyB0byBwcmVjZWRlbmNlKVxuICAvLyAtIC0gdHlwZSwgdHlwZUZvcm1hdDogZXhwZWN0ZWQgZGF0YSB0eXBlIGFuZCBpdHMgZm9ybWF0XG4gIC8vIC0gLSB0ZW1wbGF0ZSA6IG5lZWQgdG8gaGF2ZSBhIGhhbmRsZWJhciBleHByZXNzaW9uIHt7dmFsdWV9fVxuICAvLyAtIC0gZXhjbHVkZXMgOiBmaWVsZHMgeW91IHdhbnQgdG8gc3RyaXAgb2YgZnJvbSB0aGUgZmluYWwgdmFsdWUgKHdvcmtzIG9ubHkgZm9yIG9iamVjdClcbiAgLy8gLSAtIC0gLSBleDogXCJhbm9ueW1vdXNJZFwiLCBcInVzZXJJZFwiIGZyb20gdHJhaXRzXG4gIHByaXZhdGUgc3RhdGljIGhhbmRsZU1ldGFkYXRhRm9yVmFsdWUoXG4gICAgdmFsdWU6IHVua25vd24sXG4gICAgbWV0YWRhdGE6IE1hcHBpbmdNZXRhZGF0YSxcbiAgICBkZXN0S2V5OiBzdHJpbmcsXG4gICAgaW50ZWdyYXRpb25zT2JqOiB1bmtub3duLFxuICApIHtcbiAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLy8gZ2V0IGluZm9ybWF0aW9uIGZyb20gbWV0YWRhdGFcbiAgICBjb25zdCB7XG4gICAgICB0eXBlLFxuICAgICAgdHlwZUZvcm1hdCxcbiAgICAgIHRlbXBsYXRlLFxuICAgICAgZGVmYXVsdFZhbHVlLFxuICAgICAgZXhjbHVkZXMsXG4gICAgICBtdWx0aWtleU1hcCxcbiAgICAgIHN0cmljdE11bHRpTWFwLFxuICAgICAgdmFsaWRhdGVUaW1lc3RhbXAsXG4gICAgICBhbGxvd2VkS2V5Q2hlY2ssXG4gICAgfSA9IG1ldGFkYXRhO1xuXG4gICAgLy8gaWYgdmFsdWUgaXMgbnVsbCBhbmQgZGVmYXVsdFZhbHVlIGlzIHN1cHBsaWVkIC0gdXNlIHRoYXRcbiAgICBpZiAoIWlzRGVmaW5lZEFuZE5vdE51bGwodmFsdWUpKSB7XG4gICAgICByZXR1cm4gZGVmYXVsdFZhbHVlIHx8IHZhbHVlO1xuICAgIH1cbiAgICAvLyB3ZSd2ZSBnb3QgYSBjb3JyZWN0IHZhbHVlLiBzdGFydCBwcm9jZXNzaW5nXG4gICAgbGV0IGZvcm1hdHRlZFZhbCA9IHZhbHVlO1xuXG4gICAgLyoqXG4gICAgICogdmFsaWRhdGUgYWxsb3dlZCB0aW1lIGRpZmZlcmVuY2VcbiAgICAgKi9cbiAgICBpZiAodmFsaWRhdGVUaW1lc3RhbXApIHtcbiAgICAgIGZvcm1hdHRlZFZhbCA9IE51bWJlcihmb3JtYXR0ZWRWYWwpO1xuICAgICAgaWYgKE51bWJlci5pc05hTihmb3JtYXR0ZWRWYWwpKSB7XG4gICAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1hdGlvbkVycm9yKCdUaW1lc3RhbXAgaXMgbm90IGEgbnVtYmVyLCBjYW5ub3QgdmFsaWRhdGUnKTtcbiAgICAgIH1cbiAgICAgIEpzb25VdGlscy5jaGVja1RpbWVzdGFtcCh2YWxpZGF0ZVRpbWVzdGFtcCwgZm9ybWF0dGVkVmFsIGFzIG51bWJlcik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHR5cGUpKSB7XG4gICAgICAgIHR5cGUuZm9yRWFjaCgoZWFjaFR5cGUpID0+IHtcbiAgICAgICAgICBmb3JtYXR0ZWRWYWwgPSBKc29uVXRpbHMuZm9ybWF0VmFsdWVzKFxuICAgICAgICAgICAgZm9ybWF0dGVkVmFsLFxuICAgICAgICAgICAgZWFjaFR5cGUsXG4gICAgICAgICAgICB0eXBlRm9ybWF0LFxuICAgICAgICAgICAgaW50ZWdyYXRpb25zT2JqIGFzIHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9LFxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9ybWF0dGVkVmFsID0gSnNvblV0aWxzLmZvcm1hdFZhbHVlcyhcbiAgICAgICAgICBmb3JtYXR0ZWRWYWwsXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICB0eXBlRm9ybWF0LFxuICAgICAgICAgIGludGVncmF0aW9uc09iaiBhcyB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBoYW5kbGUgdGVtcGxhdGVcbiAgICBpZiAodGVtcGxhdGUpIHtcbiAgICAgIGZvcm1hdHRlZFZhbCA9IEpzb25VdGlscy5oYW5kbGVUZW1wbGF0ZSh0ZW1wbGF0ZSwgdmFsdWUgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICAvLyBoYW5kbGUgZXhjbHVkZXNcbiAgICBpZiAoZXhjbHVkZXMpIHtcbiAgICAgIEpzb25VdGlscy5oYW5kbGVFeGNsdWRlcyh2YWx1ZSwgZXhjbHVkZXMsIGZvcm1hdHRlZFZhbCBhcyB7IFtrZXk6IHN0cmluZ106IGFueSB9KTtcbiAgICB9XG5cbiAgICAvLyBoYW5kbGUgbXVsdGlrZXlNYXBcbiAgICBpZiAobXVsdGlrZXlNYXAgfHwgc3RyaWN0TXVsdGlNYXApIHtcbiAgICAgIGZvcm1hdHRlZFZhbCA9IEpzb25VdGlscy5oYW5kbGVNdWx0aWtleU1hcChcbiAgICAgICAgbXVsdGlrZXlNYXAsXG4gICAgICAgIHN0cmljdE11bHRpTWFwLFxuICAgICAgICBmb3JtYXR0ZWRWYWwsXG4gICAgICAgIGRlc3RLZXksXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChhbGxvd2VkS2V5Q2hlY2spIHtcbiAgICAgIGxldCBmb3VuZFZhbCA9IGZhbHNlO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYWxsb3dlZEtleUNoZWNrKSkge1xuICAgICAgICBhbGxvd2VkS2V5Q2hlY2suc29tZSgoa2V5KSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChrZXkudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAndG9Mb3dlckNhc2UnOlxuICAgICAgICAgICAgICBmb3JtYXR0ZWRWYWwgPSBTdHJpbmcoZm9ybWF0dGVkVmFsKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3RvVXBwZXJDYXNlJzpcbiAgICAgICAgICAgICAgZm9ybWF0dGVkVmFsID0gU3RyaW5nKGZvcm1hdHRlZFZhbCkudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGtleS5zb3VyY2VWYWwuaW5jbHVkZXMoZm9ybWF0dGVkVmFsIGFzIGFueSkpIHtcbiAgICAgICAgICAgIGZvdW5kVmFsID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCFmb3VuZFZhbCkge1xuICAgICAgICBmb3JtYXR0ZWRWYWwgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1hdHRlZFZhbDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGhhbmRsZVRlbXBsYXRlKHRlbXBsYXRlOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBoVGVtcGxhdGUgPSBIYW5kbGViYXJzLmNvbXBpbGUodGVtcGxhdGUudHJpbSgpKTtcbiAgICBjb25zdCBmb3JtYXR0ZWRWYWwgPSBoVGVtcGxhdGUoeyB2YWx1ZSB9KS50cmltKCk7XG4gICAgcmV0dXJuIGZvcm1hdHRlZFZhbDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGhhbmRsZU11bHRpa2V5TWFwKFxuICAgIG11bHRpa2V5TWFwOlxuICAgICAgfCB7XG4gICAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nW107XG4gICAgICAgIH1cbiAgICAgIHwgdW5kZWZpbmVkLFxuICAgIHN0cmljdE11bHRpTWFwOlxuICAgICAgfCB7XG4gICAgICAgICAgc291cmNlVmFsOiBzdHJpbmdbXTtcbiAgICAgICAgICBkZXN0VmFsOiBzdHJpbmc7XG4gICAgICAgIH1bXVxuICAgICAgfCB1bmRlZmluZWQsXG4gICAgZm9ybWF0dGVkVmFsOiB1bmtub3duLFxuICAgIGRlc3RLZXk6IHN0cmluZyxcbiAgKSB7XG4gICAgLy8gc291cmNlVmFsIGlzIGV4cGVjdGVkIHRvIGJlIGFuIGFycmF5XG4gICAgLy8gaWYgdmFsdWUgaXMgcHJlc2VudCBpbiBzb3VyY2VWYWwsIHJldHVybnMgdGhlIGRlc3RWYWxcbiAgICAvLyBlbHNlIHJldHVybnMgdGhlIG9yaWdpbmFsIHZhbHVlXG4gICAgLy8gRXhwZWN0ZWQgbXVsdGlrZXlNYXAgdmFsdWU6XG4gICAgLy8gXCJtdWx0aWtleU1hcFwiOiBbXG4gICAgLy8gICB7XG4gICAgLy8gICAgIFwic291cmNlVmFsXCI6IFtcIm1cIiwgXCJNXCIsIFwiTWFsZVwiLCBcIm1hbGVcIl0sXG4gICAgLy8gICAgIFwiZGVzdFZhbFwiOiBcIk1cIlxuICAgIC8vICAgfSxcbiAgICAvLyAgIHtcbiAgICAvLyAgICAgXCJzb3VyY2VWYWxcIjogW1wiZlwiLCBcIkZcIiwgXCJGZW1hbGVcIiwgXCJmZW1hbGVcIl0sXG4gICAgLy8gICAgIFwiZGVzdFZhbFwiOiBcIkZcIlxuICAgIC8vICAgfVxuICAgIC8vIF1cbiAgICBsZXQgY3VyRm9ybWF0dGVkVmFsID0gZm9ybWF0dGVkVmFsO1xuICAgIGNvbnN0IGZpbmFsS2V5TWFwID0gbXVsdGlrZXlNYXAgfHwgc3RyaWN0TXVsdGlNYXA7XG4gICAgbGV0IGZvdW5kVmFsID0gZmFsc2U7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZmluYWxLZXlNYXApKSB7XG4gICAgICBmaW5hbEtleU1hcC5zb21lKChtYXApID0+IHtcbiAgICAgICAgaWYgKCFtYXAuc291cmNlVmFsIHx8ICFpc0RlZmluZWRBbmROb3ROdWxsKG1hcC5kZXN0VmFsKSB8fCAhQXJyYXkuaXNBcnJheShtYXAuc291cmNlVmFsKSkge1xuICAgICAgICAgIGxvZ2dlci53YXJuKCdtdWx0aWtleU1hcCBza2lwcGVkOiBzb3VyY2VWYWwgYW5kIGRlc3RWYWwgbXVzdCBiZSBvZiB2YWxpZCB0eXBlJyk7XG4gICAgICAgICAgZm91bmRWYWwgPSB0cnVlO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1hcC5zb3VyY2VWYWwuaW5jbHVkZXMoU3RyaW5nKGZvcm1hdHRlZFZhbCkpKSB7XG4gICAgICAgICAgY3VyRm9ybWF0dGVkVmFsID0gbWFwLmRlc3RWYWw7XG4gICAgICAgICAgZm91bmRWYWwgPSB0cnVlO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZ2dlci53YXJuKCdtdWx0aWtleU1hcCBza2lwcGVkOiBtdWx0aWtleU1hcCBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gICAgfVxuICAgIGlmICghZm91bmRWYWwpIHtcbiAgICAgIGlmIChzdHJpY3RNdWx0aU1hcCkge1xuICAgICAgICB0aHJvdyBuZXcgSW5zdHJ1bWVudGF0aW9uRXJyb3IoYEludmFsaWQgZW50cnkgZm9yIGtleSAke2Rlc3RLZXl9YCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdXJGb3JtYXR0ZWRWYWwgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjdXJGb3JtYXR0ZWRWYWw7XG4gIH1cblxuICAvKipcbiAgICogRGVzY3JpcHRpb246IFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gZ2V0IHRoZSB2YWx1ZSBmcm9tIHRoZSBtZXNzYWdlXG4gICAqIFx0XHRcdFx0XHRcdCAgYmFzZWQgb24gdGhlIHNvdXJjZSBrZXlzXG4gICAqIEBwYXJhbSBtZXNzYWdlIC0gdGhlIG1lc3NhZ2Ugb2JqZWN0XG4gICAqIEBwYXJhbSBzb3VyY2VLZXlzIC0gdGhlIHNvdXJjZSBrZXlzIHRvIGJlIHVzZWQgdG8gZ2V0IHRoZSB2YWx1ZSBmcm9tIHRoZSBtZXNzYWdlXG4gICAqIEByZXR1cm5zICB7YW55fSAtIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBzb3VyY2Uga2V5XG4gICAqICAgICAgICAgICAgIGlmIHRoZSBzb3VyY2Uga2V5IGlzIG5vdCBwcmVzZW50IGluIHRoZSBtZXNzYWdlXG4gICAqICAgICAgICAgICAgcmV0dXJucyBudWxsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldFZhbHVlRnJvbU1lc3NhZ2UoXG4gICAgbWVzc2FnZTogUnVkZGVyU3RhY2tFdmVudCxcbiAgICBzb3VyY2VLZXlzOiAoc3RyaW5nIHwgb2JqZWN0KVtdIHwgc3RyaW5nIHwgb2JqZWN0LFxuICApOiBhbnkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNvdXJjZUtleXMpICYmIHNvdXJjZUtleXMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHNvdXJjZUtleXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKCdMaXN0IHdpdGggc2luZ2xlIGVsZW1lbnQgaXMgbm90IGlkZWFsLiBVc2UgaXQgYXMgc3RyaW5nIGluc3RlYWQnKTtcbiAgICAgIH1cbiAgICAgIC8vIGdvdCB0aGUgcG9zc2libGUgc291cmNlS2V5c1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG4gICAgICBmb3IgKGNvbnN0IHNvdXJjZUtleSBvZiBzb3VyY2VLZXlzKSB7XG4gICAgICAgIGxldCB2YWw6IG51bWJlciB8IHN0cmluZyB8IGJvb2xlYW4gfCBBcnJheTxhbnk+IHwgT2JqZWN0IHwgbnVsbDtcbiAgICAgICAgLy8gaWYgdGhlIHNvdXJjZUtleSBpcyBhbiBvYmplY3Qgd2UgZXhwZWN0IGl0IHRvIGJlIGEgb3BlcmF0aW9uXG4gICAgICAgIGlmICh0eXBlb2Ygc291cmNlS2V5ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIHZhbCA9IEpzb25VdGlscy5oYW5kbGVTb3VyY2VLZXlzT3BlcmF0aW9uKHtcbiAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICBvcGVyYXRpb25PYmplY3Q6IHNvdXJjZUtleSBhcyBPcGVyYXRpb24sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFsID0gZ2V0KG1lc3NhZ2UsIHNvdXJjZUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbCB8fCB2YWwgPT09IGZhbHNlIHx8IHZhbCA9PT0gMCkge1xuICAgICAgICAgIC8vIHJldHVybiBvbmx5IGlmIHRoZSB2YWx1ZSBpcyB2YWxpZC5cbiAgICAgICAgICAvLyBlbHNlIGxvb2sgZm9yIG5leHQgcG9zc2libGUgc291cmNlIGluIHByZWNlZGVuY2VcbiAgICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygc291cmNlS2V5cyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIC8vIGdvdCBhIHNpbmdsZSBrZXlcbiAgICAgIC8vIC0gd2UgZG9uJ3QgbmVlZCB0byBpdGVyYXRlIG92ZXIgYSBsb29wIGZvciBhIHNpbmdsZSBwb3NzaWJsZSB2YWx1ZVxuICAgICAgcmV0dXJuIGdldChtZXNzYWdlLCBzb3VyY2VLZXlzKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBzb3VyY2VLZXlzID09PSAnb2JqZWN0Jykge1xuICAgICAgLy8gaWYgdGhlIHNvdXJjZUtleSBpcyBhbiBvYmplY3Qgd2UgZXhwZWN0IGl0IHRvIGJlIGEgb3BlcmF0aW9uXG4gICAgICByZXR1cm4gSnNvblV0aWxzLmhhbmRsZVNvdXJjZUtleXNPcGVyYXRpb24oe1xuICAgICAgICBtZXNzYWdlLFxuICAgICAgICBvcGVyYXRpb25PYmplY3Q6IHNvdXJjZUtleXMgYXMgeyBvcGVyYXRpb246IHN0cmluZzsgYXJnczogYW55W10gfSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB3cm9uZyBzb3VyY2VLZXkgdHlwZS4gYWJvcnRcbiAgICAgIC8vIERFVkVMT1BFUiBFUlJPUlxuICAgICAgdGhyb3cgbmV3IFBsYXRmb3JtRXJyb3IoJ1dyb25nIHNvdXJjZUtleSB0eXBlIG9yIGJsYW5rIHNvdXJjZUtleSBhcnJheScpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbjogVGhpcyBtZXRob2QgaXMgdXNlZCB0byBnZXQgdGhlIHZhbHVlIGZyb20gdGhlIG1lc3NhZ2VcbiAgICogICAgICAgICAgICAgICBiYXNlZCBvbiB0aGUgc291cmNlIGtleVxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIHRoZSBtZXNzYWdlIG9iamVjdFxuICAgKiBAcGFyYW0gc291cmNlS2V5IC0gdGhlIHNvdXJjZSBrZXkgdG8gYmUgdXNlZCB0byBnZXQgdGhlIHZhbHVlIGZyb20gdGhlIG1lc3NhZ2VcbiAgICogQHJldHVybnMgIHthbnl9IC0gcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIHNvdXJjZSBrZXlcbiAgICogICAgICAgICAgICBpZiB0aGUgc291cmNlIGtleSBpcyBub3QgcHJlc2VudCBpbiB0aGUgbWVzc2FnZVxuICAgKiAgICAgICAgICAgcmV0dXJucyBudWxsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldEZpZWxkVmFsdWVGcm9tTWVzc2FnZShtZXNzYWdlOiBSdWRkZXJTdGFja0V2ZW50LCBzb3VyY2VLZXk6IHN0cmluZyk6IGFueSB7XG4gICAgY29uc3Qgc291cmNlS2V5TWFwID0gSnNvblV0aWxzLk1FU1NBR0VfTUFQUElOR1tzb3VyY2VLZXldO1xuICAgIGlmIChzb3VyY2VLZXlNYXApIHtcbiAgICAgIHJldHVybiBKc29uVXRpbHMuZ2V0VmFsdWVGcm9tTWVzc2FnZShtZXNzYWdlLCBzb3VyY2VLZXlNYXApO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbjogVGhpcyBtZXRob2QgaXMgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIHBheWxvYWQgYmFzZWQgb24gdGhlIG1hcHBpbmdKc29uXG4gICAqIEBwYXJhbSBtZXNzYWdlIC0gdGhlIG1lc3NhZ2Ugb2JqZWN0XG4gICAqIEBwYXJhbSBtYXBwaW5nSnNvbiAtIHRoZSBtYXBwaW5nSnNvbiB0byBiZSB1c2VkIHRvIGNvbnN0cnVjdCB0aGUgcGF5bG9hZFxuICAgKiBAcGFyYW0gZGVzdGluYXRpb25OYW1lIC0gdGhlIGRlc3RpbmF0aW9uIG5hbWUgdG8gYmUgdXNlZCB0byBnZXQgdGhlIG1hcHBpbmdKc29uXG4gICAqIEByZXR1cm5zICB7YW55fSAtIHJldHVybnMgdGhlIHBheWxvYWQgY29uc3RydWN0ZWQgYmFzZWQgb24gdGhlIG1hcHBpbmdKc29uXG4gICAqICAgICAgICAgICBpZiB0aGUgbWFwcGluZ0pzb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIG1lc3NhZ2Ugb3IgYmxhbmtcbiAgICogICAgICAgICAgIHJldHVybnMgbnVsbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjb25zdHJ1Y3RQYXlsb2FkKFxuICAgIG1lc3NhZ2U6IFJ1ZGRlclN0YWNrRXZlbnQsXG4gICAgbWFwcGluZ0pzb246IGFueVtdLFxuICAgIGRlc3RpbmF0aW9uTmFtZTogc3RyaW5nID0gJycsXG4gICk6IGFueSB7XG4gICAgLy8gTWFwcGluZyBKU09OIHNob3VsZCBiZSBhbiBhcnJheVxuICAgIGlmIChBcnJheS5pc0FycmF5KG1hcHBpbmdKc29uKSAmJiBtYXBwaW5nSnNvbi5sZW5ndGggPiAwKSB7XG4gICAgICAvLyAtIGNvbnN0cnVjdCBhIGJsYW5rIHBheWxvYWQgYW5kIHJldHVybiBhdCB0aGUgZW5kXG4gICAgICAvLyAtIGlmIHlvdSB0byBuZWVkIG1lcmdlIG11bHRpcGxlIGNvbnN0cnVjdFBheWxvYWQgZG8gaXQgb24gdGhlIHRyYW5zZm9ybWVyIGNvZGVcbiAgICAgIC8vIC0gLSB3aWxsIGdpdmUgYSBjbGVhbmVyIGFwcHJvYWNoXG4gICAgICAvLyAtIC0geW91IGRvbid0IG5lZWQgdG8gaXRlcmF0ZSBvdmVyIG11bHRpcGxlIGxvb3BzIHRvIGNvbnN0cnVjdCBhIHBheWxvYWQgZm9yIGEgc2luZ2xlIGV2ZW50XG4gICAgICBjb25zdCBwYXlsb2FkID0ge307XG5cbiAgICAgIG1hcHBpbmdKc29uLmZvckVhY2goKG1hcHBpbmcpID0+IHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHNvdXJjZUtleXMsXG4gICAgICAgICAgZGVzdEtleSxcbiAgICAgICAgICByZXF1aXJlZCxcbiAgICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgICBzb3VyY2VGcm9tR2VuZXJpY01hcCxcbiAgICAgICAgfToge1xuICAgICAgICAgIHNvdXJjZUtleXM6IChzdHJpbmcgfCBvYmplY3QpW10gfCBzdHJpbmcgfCBvYmplY3Q7XG4gICAgICAgICAgZGVzdEtleTogc3RyaW5nO1xuICAgICAgICAgIHJlcXVpcmVkOiBib29sZWFuO1xuICAgICAgICAgIG1ldGFkYXRhOiBNYXBwaW5nTWV0YWRhdGE7XG4gICAgICAgICAgc291cmNlRnJvbUdlbmVyaWNNYXA6IGJvb2xlYW47XG4gICAgICAgIH0gPSBtYXBwaW5nO1xuICAgICAgICAvLyBnZXQgdGhlIHZhbHVlIGZyb20gZXZlbnQsIHBhc3Mgc291cmNlRnJvbUdlbmVyaWNNYXAgaW4gdGhlIG1hcHBpbmcgdG8gZm9yY2UgdGhpcyB0byB0YWtlIHRoZVxuICAgICAgICAvLyBzb3VyY2VrZXlzIGZyb20gR2VuZXJpY0ZpZWxkTWFwcGluZywgZWxzZSB0YWtlIHRoZSBzb3VyY2VLZXlzIGZyb20gc3BlY2lmaWMgZGVzdGluYXRpb24gbWFwcGluZyBzb3VyY2VLZXlzXG4gICAgICAgIGNvbnN0IGludGVncmF0aW9uc09iaiA9IGlzRW1wdHkoZGVzdGluYXRpb25OYW1lKVxuICAgICAgICAgID8gU2VtYW50aWNVdGlsLmdldEludGVncmF0aW9uc09iaihtZXNzYWdlLCBkZXN0aW5hdGlvbk5hbWUpXG4gICAgICAgICAgOiBudWxsO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IEpzb25VdGlscy5oYW5kbGVNZXRhZGF0YUZvclZhbHVlKFxuICAgICAgICAgIHNvdXJjZUZyb21HZW5lcmljTWFwXG4gICAgICAgICAgICA/IHRoaXMuZ2V0RmllbGRWYWx1ZUZyb21NZXNzYWdlKG1lc3NhZ2UsIHNvdXJjZUtleXMgYXMgc3RyaW5nKVxuICAgICAgICAgICAgOiB0aGlzLmdldFZhbHVlRnJvbU1lc3NhZ2UobWVzc2FnZSwgc291cmNlS2V5cyksXG4gICAgICAgICAgbWV0YWRhdGEsXG4gICAgICAgICAgZGVzdEtleSxcbiAgICAgICAgICBpbnRlZ3JhdGlvbnNPYmosXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHZhbHVlIHx8IHZhbHVlID09PSAwIHx8IHZhbHVlID09PSBmYWxzZSkge1xuICAgICAgICAgIGlmIChkZXN0S2V5KSB7XG4gICAgICAgICAgICAvLyBzZXQgdGhlIHZhbHVlIG9ubHkgaWYgY29ycmVjdFxuICAgICAgICAgICAgc2V0KHBheWxvYWQsIGRlc3RLZXksIHZhbHVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gdG8gc2V0IHRvIHJvb3QgYW5kIGZsYXR0ZW4gbGF0ZXJcbiAgICAgICAgICAgIHBheWxvYWRbJyddID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHJlcXVpcmVkKSB7XG4gICAgICAgICAgLy8gdGhyb3cgZXJyb3IgaWYgcmVxaXJlZCB2YWx1ZSBpcyBtaXNzaW5nXG4gICAgICAgICAgdGhyb3cgbmV3IEluc3RydW1lbnRhdGlvbkVycm9yKFxuICAgICAgICAgICAgYE1pc3NpbmcgcmVxdWlyZWQgdmFsdWUgZnJvbSAke0pTT04uc3RyaW5naWZ5KHNvdXJjZUtleXMpfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH1cblxuICAgIC8vIGludmFsaWQgbWFwcGluZ0pzb25cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc3RyaW5naWZ5KHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICB9XG59XG4iXX0=
510
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9qc29uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNERBQW9DO0FBQ3BDLDBEQUE0QjtBQUM1QiwwREFBNEI7QUFDNUIsbUNBQXlEO0FBQ3pELHNFQUFxQztBQUVyQyxrREFBb0M7QUFDcEMsNkRBQXlEO0FBQ3pELCtCQUFxQztBQUNyQywyRUFBdUU7QUFDdkUsaUNBT2dCO0FBQ2hCLHlFQUFxRTtBQUNyRSw0Q0FBc0Q7QUFzQnRELE1BQWEsU0FBUztJQUdwQjs7Ozs7OztPQU9HO0lBQ0ssTUFBTSxDQUFDLHlCQUF5QixDQUFDLEVBQ3ZDLE9BQU8sRUFDUCxlQUFlLEdBSWhCO1FBQ0MsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxlQUFlLENBQUM7UUFFNUMseUNBQXlDO1FBQ3pDLG9DQUFvQztRQUNwQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDakMsTUFBTSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxHQUFHLENBQUM7WUFDdkMsTUFBTSxHQUFHLEdBQUcsSUFBQSxtQkFBRyxFQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNyQyxJQUFJLEdBQUcsSUFBSSxHQUFHLEtBQUssS0FBSyxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUU7Z0JBQ3JDLE9BQU8sR0FBRyxDQUFDO2FBQ1o7WUFDRCxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztRQUVILDJEQUEyRDtRQUMzRCxnREFBZ0Q7UUFDaEQsdUNBQXVDO1FBQ3ZDLE1BQU0sWUFBWSxHQUFHLElBQUEsY0FBSyxFQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFBLGNBQUssRUFBQyxDQUFDLENBQUMsQ0FB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QVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUM1RCxDQUFDO2lCQUNIO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLE9BQU8sQ0FBQztTQUNoQjtRQUVELHNCQUFzQjtRQUN0QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQWM7UUFDcEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7O0FBbmxCSCw4QkFvbEJDO0FBbmxCZ0IseUJBQWUsR0FBRyxrQ0FBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBIYW5kbGViYXJzIGZyb20gJ2hhbmRsZWJhcnMnO1xuaW1wb3J0IGdldCBmcm9tICdnZXQtdmFsdWUnO1xuaW1wb3J0IHNldCBmcm9tICdzZXQtdmFsdWUnO1xuaW1wb3J0IHsgZXZlcnksIGlzRW1wdHksIGlzTmlsLCBpc051bWJlciB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC10aW1lem9uZSc7XG5pbXBvcnQgeyBSdWRkZXJTdGFja0V2ZW50IH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0ICogYXMgbG9nZ2VyIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBQbGF0Zm9ybUVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL3BsYXRmb3JtX2Vycm9yJztcbmltcG9ydCB7IFNlbWFudGljVXRpbCB9IGZyb20gJy4vc2VtJztcbmltcG9ydCB7IEluc3RydW1lbnRhdGlvbkVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL2luc3RydW1lbnRhdGlvbl9lcnJvcic7XG5pbXBvcnQge1xuICBmbGF0dGVuSnNvbixcbiAgZm9ybWF0VGltZVN0YW1wLFxuICBnZXRPZmZzZXRJblNlYyxcbiAgaGFzaFRvU2hhMjU2LFxuICBpc0RlZmluZWRBbmROb3ROdWxsLFxuICBpc1ZhbGlkVXJsLFxufSBmcm9tICcuL21pc2MnO1xuaW1wb3J0IHsgVHJhbnNmb3JtYXRpb25FcnJvciB9IGZyb20gJy4uL2Vycm9ycy90cmFuc2Zvcm1hdGlvbl9lcnJvcic7XG5pbXBvcnQgeyBHRU5FUklDX01BUFBJTkdfQ09ORklHIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxudHlwZSBPcGVyYXRpb24gPSB7XG4gIG9wZXJhdGlvbjogc3RyaW5nO1xuICBhcmdzOiB7IHNvdXJjZUtleXM6IHN0cmluZ1tdOyBkZWZhdWx0VmFsPzogYW55IH1bXTtcbn07XG50eXBlIE1hcHBpbmdNZXRhZGF0YSA9IHtcbiAgdHlwZT86IHN0cmluZyB8IHN0cmluZ1tdO1xuICB0eXBlRm9ybWF0Pzogc3RyaW5nO1xuICB0ZW1wbGF0ZT86IHN0cmluZztcbiAgZGVmYXVsdFZhbHVlPzogdW5rbm93bjtcbiAgZXhjbHVkZXM/OiBzdHJpbmdbXTtcbiAgbXVsdGlrZXlNYXA/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH07XG4gIHN0cmljdE11bHRpTWFwPzogeyBzb3VyY2VWYWw6IHN0cmluZ1tdOyBkZXN0VmFsOiBzdHJpbmcgfVtdO1xuICB2YWxpZGF0ZVRpbWVzdGFtcD86IHtcbiAgICBhbGxvd2VkRnV0dXJlVGltZURpZmZlcmVuY2U6IG51bWJlcjtcbiAgICBhbGxvd2VkRnV0dXJlVGltZVVuaXQ6IHN0cmluZztcbiAgICBhbGxvd2VkUGFzdFRpbWVEaWZmZXJlbmNlOiBudW1iZXI7XG4gICAgYWxsb3dlZFBhc3RUaW1lVW5pdDogc3RyaW5nO1xuICB9O1xuICBhbGxvd2VkS2V5Q2hlY2s/OiB7IHR5cGU6IHN0cmluZzsgc291cmNlVmFsOiBzdHJpbmdbXSB9W107XG59O1xuZXhwb3J0IGNsYXNzIEpzb25VdGlscyB7XG4gIHByaXZhdGUgc3RhdGljIE1FU1NBR0VfTUFQUElORyA9IEdFTkVSSUNfTUFQUElOR19DT05GSUc7XG5cbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uOiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGhhbmRsZSB0aGUgc291cmNlIGtleXMgb3BlcmF0aW9uXG4gICAqIEBwYXJhbSBtZXNzYWdlIC0gdGhlIG1lc3NhZ2Ugb2JqZWN0XG4gICAqIEByZXR1cm5zXHR7YW55fVx0LSByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgc291cmNlIGtleVxuICAgKiBcdFx0XHRcdFx0XHRpZiB0aGUgc291cmNlIGtleSBpcyBub3QgcHJlc2VudCBpbiB0aGUgbWVzc2FnZVxuICAgKiBcdFx0XHRcdFx0XHRyZXR1cm5zIG51bGxcbiAgICpcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGhhbmRsZVNvdXJjZUtleXNPcGVyYXRpb24oe1xuICAgIG1lc3NhZ2UsXG4gICAgb3BlcmF0aW9uT2JqZWN0LFxuICB9OiB7XG4gICAgbWVzc2FnZTogUnVkZGVyU3RhY2tFdmVudDtcbiAgICBvcGVyYXRpb25PYmplY3Q6IE9wZXJhdGlvbjtcbiAgfSk6IGFueSB7XG4gICAgY29uc3QgeyBvcGVyYXRpb24sIGFyZ3MgfSA9IG9wZXJhdGlvbk9iamVjdDtcblxuICAgIC8vIHBvcHVsYXRlIHRoZSB2YWx1ZXMgZnJvbSB0aGUgYXJndW1lbnRzXG4gICAgLy8gaW4gdGhlIHNhbWUgb3JkZXIgaXQgaXMgcG9wdWxhdGVkXG4gICAgY29uc3QgYXJnVmFsdWVzID0gYXJncy5tYXAoKGFyZykgPT4ge1xuICAgICAgY29uc3QgeyBzb3VyY2VLZXlzLCBkZWZhdWx0VmFsIH0gPSBhcmc7XG4gICAgICBjb25zdCB2YWwgPSBnZXQobWVzc2FnZSwgc291cmNlS2V5cyk7XG4gICAgICBpZiAodmFsIHx8IHZhbCA9PT0gZmFsc2UgfHwgdmFsID09PSAwKSB7XG4gICAgICAgIHJldHVybiB2YWw7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGVmYXVsdFZhbDtcbiAgICB9KTtcblxuICAgIC8vIHF1aWNrIHNhbml0eSBjaGVjayBmb3IgdGhlIHVuZGVmaW5lZCB2YWx1ZXMgaW4gdGhlIGxpc3QuXG4gICAgLy8gaWYgdGhlcmUgaXMgYW55IHVuZGVmaW5lZCB2YWx1ZXMsIHJldHVybiBudWxsXG4gICAgLy8gd2l0aG91dCBnb2luZyBmdXJ0aGVyIGZvciBvcGVyYXRpb25zXG4gICAgY29uc3QgaXNBbGxEZWZpbmVkID0gZXZlcnkoYXJnVmFsdWVzLCAodikgPT4gIWlzTmlsKHYpKTtcbiAgICBpZiAoIWlzQWxsRGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gc3RhcnQgaGFuZGxpbmcgb3BlcmF0aW9uc1xuICAgIGxldCByZXN1bHQ6IG51bWJlcjtcbiAgICBzd2l0Y2ggKG9wZXJhdGlvbikge1xuICAgICAgY2FzZSAnbXVsdGlwbGljYXRpb24nOlxuICAgICAgICByZXN1bHQgPSAxO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgICAgICAgZm9yIChjb25zdCB2IG9mIGFyZ1ZhbHVlcykge1xuICAgICAgICAgIGlmIChpc051bWJlcih2KSkge1xuICAgICAgICAgICAgcmVzdWx0ICo9IHY7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGlmIHRoZXJlIGlzIGEgbm9uIG51bWJlciBhcmd1bWVudCBzaW1wbHkgcmV0dXJuIG51bGxcbiAgICAgICAgICAgIC8vIG5vbiBudW1iZXJzIGNhbid0IGJlIG9wZXJhdGVkIGFyaXRobWF0aWNhbGx5XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIGNhc2UgJ2FkZGl0aW9uJzpcbiAgICAgICAgcmVzdWx0ID0gMDtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG4gICAgICAgIGZvciAoY29uc3QgdiBvZiBhcmdWYWx1ZXMpIHtcbiAgICAgICAgICBpZiAoaXNOdW1iZXIodikpIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSB2O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBpZiB0aGVyZSBpcyBhIG5vbiBudW1iZXIgYXJndW1lbnQgc2ltcGx5IHJldHVybiBudWxsXG4gICAgICAgICAgICAvLyBub24gbnVtYmVycyBjYW4ndCBiZSBvcGVyYXRlZCBhcml0aG1hdGljYWxseVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjaGVja1RpbWVzdGFtcChcbiAgICB2YWxpZGF0ZVRpbWVzdGFtcDoge1xuICAgICAgYWxsb3dlZEZ1dHVyZVRpbWVEaWZmZXJlbmNlOiBudW1iZXI7XG4gICAgICBhbGxvd2VkRnV0dXJlVGltZVVuaXQ6IHN0cmluZztcbiAgICAgIGFsbG93ZWRQYXN0VGltZURpZmZlcmVuY2U6IG51bWJlcjtcbiAgICAgIGFsbG93ZWRQYXN0VGltZVVuaXQ6IHN0cmluZztcbiAgICB9LFxuICAgIGZvcm1hdHRlZFZhbDogbnVtYmVyLFxuICApIHtcbiAgICBjb25zdCB7XG4gICAgICBhbGxvd2VkUGFzdFRpbWVEaWZmZXJlbmNlLFxuICAgICAgYWxsb3dlZFBhc3RUaW1lVW5pdCwgLy8gc2Vjb25kcywgbWludXRlcywgaG91cnNcbiAgICAgIGFsbG93ZWRGdXR1cmVUaW1lRGlmZmVyZW5jZSxcbiAgICAgIGFsbG93ZWRGdXR1cmVUaW1lVW5pdCwgLy8gc2Vjb25kcywgbWludXRlcywgaG91cnNcbiAgICB9ID0gdmFsaWRhdGVUaW1lc3RhbXA7XG5cbiAgICBsZXQgcGFzdFRpbWVEaWZmZXJlbmNlO1xuICAgIGxldCBmdXR1cmVUaW1lRGlmZmVyZW5jZTtcblxuICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbW9tZW50LnVuaXgoTnVtYmVyKG1vbWVudCgpLmZvcm1hdCgnWCcpKSk7XG4gICAgY29uc3QgdGltZSA9IG1vbWVudC51bml4KE51bWJlcihtb21lbnQoZm9ybWF0dGVkVmFsKS5mb3JtYXQoJ1gnKSkpO1xuXG4gICAgc3dpdGNoIChhbGxvd2VkUGFzdFRpbWVVbml0KSB7XG4gICAgICBjYXNlICdzZWNvbmRzJzpcbiAgICAgICAgcGFzdFRpbWVEaWZmZXJlbmNlID0gTWF0aC5jZWlsKG1vbWVudC5kdXJhdGlvbihjdXJyZW50VGltZS5kaWZmKHRpbWUpKS5hc1NlY29uZHMoKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbWludXRlcyc6XG4gICAgICAgIHBhc3RUaW1lRGlmZmVyZW5jZSA9IE1hdGguY2VpbChtb21lbnQuZHVyYXRpb24oY3VycmVudFRpbWUuZGlmZih0aW1lKSkuYXNNaW51dGVzKCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2hvdXJzJzpcbiAgICAgICAgcGFzdFRpbWVEaWZmZXJlbmNlID0gTWF0aC5jZWlsKG1vbWVudC5kdXJhdGlvbihjdXJyZW50VGltZS5kaWZmKHRpbWUpKS5hc0hvdXJzKCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChwYXN0VGltZURpZmZlcmVuY2UgPiBhbGxvd2VkUGFzdFRpbWVEaWZmZXJlbmNlKSB7XG4gICAgICB0aHJvdyBuZXcgSW5zdHJ1bWVudGF0aW9uRXJyb3IoXG4gICAgICAgIGBBbGxvd2VkIHRpbWVzdGFtcCBpcyBbJHthbGxvd2VkUGFzdFRpbWVEaWZmZXJlbmNlfSAke2FsbG93ZWRQYXN0VGltZVVuaXR9XSBpbnRvIHRoZSBwYXN0YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHBhc3RUaW1lRGlmZmVyZW5jZSA8PSAwKSB7XG4gICAgICBzd2l0Y2ggKGFsbG93ZWRGdXR1cmVUaW1lVW5pdCkge1xuICAgICAgICBjYXNlICdzZWNvbmRzJzpcbiAgICAgICAgICBmdXR1cmVUaW1lRGlmZmVyZW5jZSA9IE1hdGguY2VpbChtb21lbnQuZHVyYXRpb24odGltZS5kaWZmKGN1cnJlbnRUaW1lKSkuYXNTZWNvbmRzKCkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdtaW51dGVzJzpcbiAgICAgICAgICBmdXR1cmVUaW1lRGlmZmVyZW5jZSA9IE1hdGguY2VpbChtb21lbnQuZHVyYXRpb24odGltZS5kaWZmKGN1cnJlbnRUaW1lKSkuYXNNaW51dGVzKCkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdob3Vycyc6XG4gICAgICAgICAgZnV0dXJlVGltZURpZmZlcmVuY2UgPSBNYXRoLmNlaWwobW9tZW50LmR1cmF0aW9uKHRpbWUuZGlmZihjdXJyZW50VGltZSkpLmFzSG91cnMoKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChmdXR1cmVUaW1lRGlmZmVyZW5jZSA+IGFsbG93ZWRGdXR1cmVUaW1lRGlmZmVyZW5jZSkge1xuICAgICAgICB0aHJvdyBuZXcgSW5zdHJ1bWVudGF0aW9uRXJyb3IoXG4gICAgICAgICAgYEFsbG93ZWQgdGltZXN0YW1wIGlzIFske2FsbG93ZWRGdXR1cmVUaW1lRGlmZmVyZW5jZX0gJHthbGxvd2VkRnV0dXJlVGltZVVuaXR9XSBpbnRvIHRoZSBmdXR1cmVgLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGZvcm1hdFZhbHVlcyhcbiAgICBmb3JtYXR0ZWRWYWw6IHVua25vd24sXG4gICAgZm9ybWF0dGluZ1R5cGU6IHN0cmluZyxcbiAgICB0eXBlRm9ybWF0Pzogc3RyaW5nLFxuICAgIGludGVncmF0aW9uc09iaj86IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4gICkge1xuICAgIGxldCBjdXJGb3JtYXR0ZWRWYWwgPSBmb3JtYXR0ZWRWYWw7XG5cbiAgICBjb25zdCBmb3JtYXR0aW5nRnVuY3Rpb25zID0ge1xuICAgICAgdGltZXN0YW1wOiAoKSA9PiB7XG4gICAgICAgIGN1ckZvcm1hdHRlZFZhbCA9IGZvcm1hdFRpbWVTdGFtcChTdHJpbmcoZm9ybWF0dGVkVmFsKSwgdHlwZUZvcm1hdCk7XG4gICAgICB9LFxuICAgICAgc2Vjb25kVGltZXN0YW1wOiAoKSA9PiB7XG4gICAgICAgIGlmICghbW9tZW50KFN0cmluZyhmb3JtYXR0ZWRWYWwpLCAneCcsIHRydWUpLmlzVmFsaWQoKSkge1xuICAgICAgICAgIGN1ckZvcm1hdHRlZFZhbCA9IE1hdGguZmxvb3IoXG4gICAgICAgICAgICAoZm9ybWF0VGltZVN0YW1wKFN0cmluZyhmb3JtYXR0ZWRWYWwpLCB0eXBlRm9ybWF0KSBhcyBudW1iZXIpIC8gMTAwMCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgbWljcm9TZWNvbmRUaW1lc3RhbXA6ICgpID0+IHtcbiAgICAgICAgY29uc3QgdGVtcF92YWwgPSBtb21lbnQudW5peChOdW1iZXIobW9tZW50KFN0cmluZyhmb3JtYXR0ZWRWYWwpKS5mb3JtYXQoJ1gnKSkpO1xuICAgICAgICBjdXJGb3JtYXR0ZWRWYWwgPSB0ZW1wX3ZhbC50b0RhdGUoKS5nZXRUaW1lKCkgKiAxMDAwICsgdGVtcF92YWwudG9EYXRlKCkuZ2V0TWlsbGlzZWNvbmRzKCk7XG4gICAgICB9LFxuICAgICAgZmxhdEpzb246ICgpID0+IHtcbiAgICAgICAgY3VyRm9ybWF0dGVkVmFsID0gZmxhdHRlbkpzb24oZm9ybWF0dGVkVmFsKTtcbiAgICAgIH0sXG4gICAgICBlbmNvZGVVUklDb21wb25lbnQ6ICgpID0+IHtcbiAgICAgICAgY29uc3QgdF92YWw6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gPSBmb3JtYXR0ZWRWYWwgYXMgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbjtcbiAgICAgICAgY3VyRm9ybWF0dGVkVmFsID0gZW5jb2RlVVJJQ29tcG9uZW50KHRfdmFsKTtcbiAgICAgIH0sXG4gICAgICBqc29uU3RyaW5naWZ5OiAoKSA9PiB7XG4gICAgICAgIGN1ckZvcm1hdHRlZFZhbCA9IEpTT04uc3RyaW5naWZ5KGZvcm1hdHRlZFZhbCk7XG4gICAgICB9LFxuICAgICAganNvblN0cmluZ2lmeU9uRmxhdHRlbjogKCkgPT4ge1xuICAgICAgICBjdXJGb3JtYXR0ZWRWYWwgPSBKU09OLnN0cmluZ2lmeShmbGF0dGVuSnNvbihmb3JtYXR0ZWRWYWwpKTtcbiAgICAgIH0sXG4gICAgICBkb2JJbk1NREQ6ICgpID0+IHtcbiAgICAgICAgY3VyRm9ybWF0dGVkVmFsID0gU3RyaW5nKGZvcm1hdHRlZFZhbCkuc2xpY2UoNSk7XG4gICAgICAgIGN1ckZvcm1hdHRlZFZhbCA9IFN0cmluZyhjdXJGb3JtYXR0ZWRWYWwpLnJlcGxhY2UoJy0nLCAnLycpO1xuICAgICAgfSxcbiAgICAgIGpzb25TdHJpbmdpZnlPbk9iamVjdDogKCkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGZvcm1hdHRlZFZhbCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBjdXJGb3JtYXR0ZWRWYWwgPSBKU09OLnN0cmluZ2lmeShmb3JtYXR0ZWRWYWwpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgbnVtYmVyRm9yUmV2ZW51ZTogKCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKHR5cGVvZiBmb3JtYXR0ZWRWYWwgPT09ICdzdHJpbmcnIHx8IGZvcm1hdHRlZFZhbCBpbnN0YW5jZW9mIFN0cmluZykgJiZcbiAgICAgICAgICBmb3JtYXR0ZWRWYWwuY2hhckF0KDApID09PSAnJCdcbiAgICAgICAgKSB7XG4gICAgICAgICAgY3VyRm9ybWF0dGVkVmFsID0gZm9ybWF0dGVkVmFsLnN1YnN0cmluZygxKTtcbiAgICAgICAgfVxuICAgICAgICBjdXJGb3JtYXR0ZWRWYWwgPSBOdW1iZXIucGFyc2VGbG9hdChOdW1iZXIoY3VyRm9ybWF0dGVkVmFsIHx8IDApLnRvRml4ZWQoMikpO1xuICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKGN1ckZvcm1hdHRlZFZhbCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgSW5zdHJ1bWVudGF0aW9uRXJyb3IoJ1JldmVudWUgaXMgbm90IGluIHRoZSBjb3JyZWN0IGZvcm1hdCcpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdG9TdHJpbmc6ICgpID0+IHtcbiAgICAgICAgY3VyRm9ybWF0dGVkVmFsID0gU3RyaW5nKGZvcm1hdHRlZFZhbCk7XG4gICAgICB9LFxuICAgICAgdG9OdW1iZXI6ICgpID0+IHtcbiAgICAgICAgY3VyRm9ybWF0dGVkVmFsID0gTnVtYmVyKGZvcm1hdHRlZFZhbCk7XG4gICAgICB9LFxuICAgICAgdG9GbG9hdDogKCkgPT4ge1xuICAgICAgICBjdXJGb3JtYXR0ZWRWYWwgPSBwYXJzZUZsb2F0KFN0cmluZyhmb3JtYXR0ZWRWYWwpKTtcbiAgICAgIH0sXG4gICAgICB0b0ludDogKCkgPT4ge1xuICAgICAgICBjdXJGb3JtYXR0ZWRWYWwgPSBwYXJzZUludChTdHJpbmcoZm9ybWF0dGVkVmFsKSwgMTApO1xuICAgICAgfSxcbiAgICAgIHRvTG93ZXI6ICgpID0+IHtcbiAgICAgICAgY3VyRm9ybWF0dGVkVmFsID0gU3RyaW5nKGZvcm1hdHRlZFZhbCkudG9Mb3dlckNhc2UoKTtcbiAgICAgIH0sXG4gICAgICBoYXNoVG9TaGEyNTY6ICgpID0+IHtcbiAgICAgICAgY3VyRm9ybWF0dGVkVmFsID0gaW50ZWdyYXRpb25zT2JqPy5oYXNoZWRcbiAgICAgICAgICA/IFN0cmluZyhmb3JtYXR0ZWRWYWwpXG4gICAgICAgICAgOiBoYXNoVG9TaGEyNTYoU3RyaW5nKGZvcm1hdHRlZFZhbCkpO1xuICAgICAgfSxcbiAgICAgIGdldE9mZnNldEluU2VjOiAoKSA9PiB7XG4gICAgICAgIGN1ckZvcm1hdHRlZFZhbCA9IGdldE9mZnNldEluU2VjKFN0cmluZyhmb3JtYXR0ZWRWYWwpKTtcbiAgICAgIH0sXG4gICAgICBkb21haW5Vcmw6ICgpID0+IHtcbiAgICAgICAgY3VyRm9ybWF0dGVkVmFsID0gU3RyaW5nKGZvcm1hdHRlZFZhbCkucmVwbGFjZSgnaHR0cHM6Ly8nLCAnJykucmVwbGFjZSgnaHR0cDovLycsICcnKTtcbiAgICAgIH0sXG4gICAgICBkb21haW5VcmxWMjogKCkgPT4ge1xuICAgICAgICBjb25zdCB1cmwgPSBpc1ZhbGlkVXJsKGZvcm1hdHRlZFZhbCBhcyBzdHJpbmcgfCBVUkwpO1xuICAgICAgICBpZiAoIXVybCkge1xuICAgICAgICAgIHRocm93IG5ldyBJbnN0cnVtZW50YXRpb25FcnJvcihgSW52YWxpZCBVUkw6ICR7Zm9ybWF0dGVkVmFsfWApO1xuICAgICAgICB9XG4gICAgICAgIGN1ckZvcm1hdHRlZFZhbCA9IHVybC5ob3N0bmFtZS5yZXBsYWNlKCd3d3cuJywgJycpO1xuICAgICAgfSxcbiAgICAgIElzQm9vbGVhbjogKCkgPT4ge1xuICAgICAgICBjdXJGb3JtYXR0ZWRWYWwgPSB0cnVlO1xuICAgICAgICBpZiAoISh0eXBlb2YgZm9ybWF0dGVkVmFsID09PSAnYm9vbGVhbicpKSB7XG4gICAgICAgICAgbG9nZ2VyLmRlYnVnKCdCb29sZWFuIHZhbHVlIG1pc3NpbmcsIHNvIGRyb3BwaW5nIGl0Jyk7XG4gICAgICAgICAgY3VyRm9ybWF0dGVkVmFsID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB0cmltOiAoKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgZm9ybWF0dGVkVmFsID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGN1ckZvcm1hdHRlZFZhbCA9IGZvcm1hdHRlZFZhbC50cmltKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGlmIChmb3JtYXR0aW5nVHlwZSBpbiBmb3JtYXR0aW5nRnVuY3Rpb25zKSB7XG4gICAgICBjb25zdCBmb3JtYXR0aW5nRnVuY3Rpb24gPSBmb3JtYXR0aW5nRnVuY3Rpb25zW2Zvcm1hdHRpbmdUeXBlXTtcbiAgICAgIGZvcm1hdHRpbmdGdW5jdGlvbigpO1xuICAgIH1cblxuICAgIHJldHVybiBjdXJGb3JtYXR0ZWRWYWw7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBoYW5kbGVFeGNsdWRlcyhcbiAgICB2YWx1ZTogdW5rbm93bixcbiAgICBleGNsdWRlczogc3RyaW5nW10sXG4gICAgZm9ybWF0dGVkVmFsOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuICApIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgLy8gZXhjbHVkZSB0aGUgZmllbGRzIGZyb20gdGhlIGZvcm1hdHRlZFZhbFxuICAgICAgZXhjbHVkZXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICBkZWxldGUgZm9ybWF0dGVkVmFsW2tleV07XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nZ2VyLndhcm4oXCJleGNsdWRlcyBkb2Vzbid0IHdvcmsgd2l0aCBub24tb2JqZWN0IGRhdGEgdHlwZS4gSWdub3JpbmcgZXhjbHVkZXNcIik7XG4gICAgfVxuICB9XG5cbiAgLy8gZm9ybWF0IHRoZSB2YWx1ZSBhcyBwZXIgdGhlIG1ldGFkYXRhIHZhbHVlc1xuICAvLyBFeHBlY3RlZCBtZXRhZGF0YSBrZXlzIGFyZTogKGFjY29yZGluZyB0byBwcmVjZWRlbmNlKVxuICAvLyAtIC0gdHlwZSwgdHlwZUZvcm1hdDogZXhwZWN0ZWQgZGF0YSB0eXBlIGFuZCBpdHMgZm9ybWF0XG4gIC8vIC0gLSB0ZW1wbGF0ZSA6IG5lZWQgdG8gaGF2ZSBhIGhhbmRsZWJhciBleHByZXNzaW9uIHt7dmFsdWV9fVxuICAvLyAtIC0gZXhjbHVkZXMgOiBmaWVsZHMgeW91IHdhbnQgdG8gc3RyaXAgb2YgZnJvbSB0aGUgZmluYWwgdmFsdWUgKHdvcmtzIG9ubHkgZm9yIG9iamVjdClcbiAgLy8gLSAtIC0gLSBleDogXCJhbm9ueW1vdXNJZFwiLCBcInVzZXJJZFwiIGZyb20gdHJhaXRzXG4gIHByaXZhdGUgc3RhdGljIGhhbmRsZU1ldGFkYXRhRm9yVmFsdWUoXG4gICAgdmFsdWU6IHVua25vd24sXG4gICAgbWV0YWRhdGE6IE1hcHBpbmdNZXRhZGF0YSxcbiAgICBkZXN0S2V5OiBzdHJpbmcsXG4gICAgaW50ZWdyYXRpb25zT2JqOiB1bmtub3duLFxuICApIHtcbiAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLy8gZ2V0IGluZm9ybWF0aW9uIGZyb20gbWV0YWRhdGFcbiAgICBjb25zdCB7XG4gICAgICB0eXBlLFxuICAgICAgdHlwZUZvcm1hdCxcbiAgICAgIHRlbXBsYXRlLFxuICAgICAgZGVmYXVsdFZhbHVlLFxuICAgICAgZXhjbHVkZXMsXG4gICAgICBtdWx0aWtleU1hcCxcbiAgICAgIHN0cmljdE11bHRpTWFwLFxuICAgICAgdmFsaWRhdGVUaW1lc3RhbXAsXG4gICAgICBhbGxvd2VkS2V5Q2hlY2ssXG4gICAgfSA9IG1ldGFkYXRhO1xuXG4gICAgLy8gaWYgdmFsdWUgaXMgbnVsbCBhbmQgZGVmYXVsdFZhbHVlIGlzIHN1cHBsaWVkIC0gdXNlIHRoYXRcbiAgICBpZiAoIWlzRGVmaW5lZEFuZE5vdE51bGwodmFsdWUpKSB7XG4gICAgICByZXR1cm4gZGVmYXVsdFZhbHVlIHx8IHZhbHVlO1xuICAgIH1cbiAgICAvLyB3ZSd2ZSBnb3QgYSBjb3JyZWN0IHZhbHVlLiBzdGFydCBwcm9jZXNzaW5nXG4gICAgbGV0IGZvcm1hdHRlZFZhbCA9IHZhbHVlO1xuXG4gICAgLyoqXG4gICAgICogdmFsaWRhdGUgYWxsb3dlZCB0aW1lIGRpZmZlcmVuY2VcbiAgICAgKi9cbiAgICBpZiAodmFsaWRhdGVUaW1lc3RhbXApIHtcbiAgICAgIGZvcm1hdHRlZFZhbCA9IE51bWJlcihmb3JtYXR0ZWRWYWwpO1xuICAgICAgaWYgKE51bWJlci5pc05hTihmb3JtYXR0ZWRWYWwpKSB7XG4gICAgICAgIHRocm93IG5ldyBUcmFuc2Zvcm1hdGlvbkVycm9yKCdUaW1lc3RhbXAgaXMgbm90IGEgbnVtYmVyLCBjYW5ub3QgdmFsaWRhdGUnKTtcbiAgICAgIH1cbiAgICAgIEpzb25VdGlscy5jaGVja1RpbWVzdGFtcCh2YWxpZGF0ZVRpbWVzdGFtcCwgZm9ybWF0dGVkVmFsIGFzIG51bWJlcik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGUpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHR5cGUpKSB7XG4gICAgICAgIHR5cGUuZm9yRWFjaCgoZWFjaFR5cGUpID0+IHtcbiAgICAgICAgICBmb3JtYXR0ZWRWYWwgPSBKc29uVXRpbHMuZm9ybWF0VmFsdWVzKFxuICAgICAgICAgICAgZm9ybWF0dGVkVmFsLFxuICAgICAgICAgICAgZWFjaFR5cGUsXG4gICAgICAgICAgICB0eXBlRm9ybWF0LFxuICAgICAgICAgICAgaW50ZWdyYXRpb25zT2JqIGFzIHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9LFxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9ybWF0dGVkVmFsID0gSnNvblV0aWxzLmZvcm1hdFZhbHVlcyhcbiAgICAgICAgICBmb3JtYXR0ZWRWYWwsXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICB0eXBlRm9ybWF0LFxuICAgICAgICAgIGludGVncmF0aW9uc09iaiBhcyB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBoYW5kbGUgdGVtcGxhdGVcbiAgICBpZiAodGVtcGxhdGUpIHtcbiAgICAgIGZvcm1hdHRlZFZhbCA9IEpzb25VdGlscy5oYW5kbGVUZW1wbGF0ZSh0ZW1wbGF0ZSwgdmFsdWUgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICAvLyBoYW5kbGUgZXhjbHVkZXNcbiAgICBpZiAoZXhjbHVkZXMpIHtcbiAgICAgIEpzb25VdGlscy5oYW5kbGVFeGNsdWRlcyh2YWx1ZSwgZXhjbHVkZXMsIGZvcm1hdHRlZFZhbCBhcyB7IFtrZXk6IHN0cmluZ106IGFueSB9KTtcbiAgICB9XG5cbiAgICAvLyBoYW5kbGUgbXVsdGlrZXlNYXBcbiAgICBpZiAobXVsdGlrZXlNYXAgfHwgc3RyaWN0TXVsdGlNYXApIHtcbiAgICAgIGZvcm1hdHRlZFZhbCA9IEpzb25VdGlscy5oYW5kbGVNdWx0aWtleU1hcChcbiAgICAgICAgbXVsdGlrZXlNYXAsXG4gICAgICAgIHN0cmljdE11bHRpTWFwLFxuICAgICAgICBmb3JtYXR0ZWRWYWwsXG4gICAgICAgIGRlc3RLZXksXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChhbGxvd2VkS2V5Q2hlY2spIHtcbiAgICAgIGxldCBmb3VuZFZhbCA9IGZhbHNlO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYWxsb3dlZEtleUNoZWNrKSkge1xuICAgICAgICBhbGxvd2VkS2V5Q2hlY2suc29tZSgoa2V5KSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChrZXkudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAndG9Mb3dlckNhc2UnOlxuICAgICAgICAgICAgICBmb3JtYXR0ZWRWYWwgPSBTdHJpbmcoZm9ybWF0dGVkVmFsKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3RvVXBwZXJDYXNlJzpcbiAgICAgICAgICAgICAgZm9ybWF0dGVkVmFsID0gU3RyaW5nKGZvcm1hdHRlZFZhbCkudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGtleS5zb3VyY2VWYWwuaW5jbHVkZXMoZm9ybWF0dGVkVmFsIGFzIGFueSkpIHtcbiAgICAgICAgICAgIGZvdW5kVmFsID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCFmb3VuZFZhbCkge1xuICAgICAgICBmb3JtYXR0ZWRWYWwgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1hdHRlZFZhbDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGhhbmRsZVRlbXBsYXRlKHRlbXBsYXRlOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBoVGVtcGxhdGUgPSBIYW5kbGViYXJzLmNvbXBpbGUodGVtcGxhdGUudHJpbSgpKTtcbiAgICBjb25zdCBmb3JtYXR0ZWRWYWwgPSBoVGVtcGxhdGUoeyB2YWx1ZSB9KS50cmltKCk7XG4gICAgcmV0dXJuIGZvcm1hdHRlZFZhbDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGhhbmRsZU11bHRpa2V5TWFwKFxuICAgIG11bHRpa2V5TWFwOlxuICAgICAgfCB7XG4gICAgICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nW107XG4gICAgICAgIH1cbiAgICAgIHwgdW5kZWZpbmVkLFxuICAgIHN0cmljdE11bHRpTWFwOlxuICAgICAgfCB7XG4gICAgICAgICAgc291cmNlVmFsOiBzdHJpbmdbXTtcbiAgICAgICAgICBkZXN0VmFsOiBzdHJpbmc7XG4gICAgICAgIH1bXVxuICAgICAgfCB1bmRlZmluZWQsXG4gICAgZm9ybWF0dGVkVmFsOiB1bmtub3duLFxuICAgIGRlc3RLZXk6IHN0cmluZyxcbiAgKSB7XG4gICAgLy8gc291cmNlVmFsIGlzIGV4cGVjdGVkIHRvIGJlIGFuIGFycmF5XG4gICAgLy8gaWYgdmFsdWUgaXMgcHJlc2VudCBpbiBzb3VyY2VWYWwsIHJldHVybnMgdGhlIGRlc3RWYWxcbiAgICAvLyBlbHNlIHJldHVybnMgdGhlIG9yaWdpbmFsIHZhbHVlXG4gICAgLy8gRXhwZWN0ZWQgbXVsdGlrZXlNYXAgdmFsdWU6XG4gICAgLy8gXCJtdWx0aWtleU1hcFwiOiBbXG4gICAgLy8gICB7XG4gICAgLy8gICAgIFwic291cmNlVmFsXCI6IFtcIm1cIiwgXCJNXCIsIFwiTWFsZVwiLCBcIm1hbGVcIl0sXG4gICAgLy8gICAgIFwiZGVzdFZhbFwiOiBcIk1cIlxuICAgIC8vICAgfSxcbiAgICAvLyAgIHtcbiAgICAvLyAgICAgXCJzb3VyY2VWYWxcIjogW1wiZlwiLCBcIkZcIiwgXCJGZW1hbGVcIiwgXCJmZW1hbGVcIl0sXG4gICAgLy8gICAgIFwiZGVzdFZhbFwiOiBcIkZcIlxuICAgIC8vICAgfVxuICAgIC8vIF1cbiAgICBsZXQgY3VyRm9ybWF0dGVkVmFsID0gZm9ybWF0dGVkVmFsO1xuICAgIGNvbnN0IGZpbmFsS2V5TWFwID0gbXVsdGlrZXlNYXAgfHwgc3RyaWN0TXVsdGlNYXA7XG4gICAgbGV0IGZvdW5kVmFsID0gZmFsc2U7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZmluYWxLZXlNYXApKSB7XG4gICAgICBmaW5hbEtleU1hcC5zb21lKChtYXApID0+IHtcbiAgICAgICAgaWYgKCFtYXAuc291cmNlVmFsIHx8ICFpc0RlZmluZWRBbmROb3ROdWxsKG1hcC5kZXN0VmFsKSB8fCAhQXJyYXkuaXNBcnJheShtYXAuc291cmNlVmFsKSkge1xuICAgICAgICAgIGxvZ2dlci53YXJuKCdtdWx0aWtleU1hcCBza2lwcGVkOiBzb3VyY2VWYWwgYW5kIGRlc3RWYWwgbXVzdCBiZSBvZiB2YWxpZCB0eXBlJyk7XG4gICAgICAgICAgZm91bmRWYWwgPSB0cnVlO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1hcC5zb3VyY2VWYWwuaW5jbHVkZXMoU3RyaW5nKGZvcm1hdHRlZFZhbCkpKSB7XG4gICAgICAgICAgY3VyRm9ybWF0dGVkVmFsID0gbWFwLmRlc3RWYWw7XG4gICAgICAgICAgZm91bmRWYWwgPSB0cnVlO1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZ2dlci53YXJuKCdtdWx0aWtleU1hcCBza2lwcGVkOiBtdWx0aWtleU1hcCBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gICAgfVxuICAgIGlmICghZm91bmRWYWwpIHtcbiAgICAgIGlmIChzdHJpY3RNdWx0aU1hcCkge1xuICAgICAgICB0aHJvdyBuZXcgSW5zdHJ1bWVudGF0aW9uRXJyb3IoYEludmFsaWQgZW50cnkgZm9yIGtleSAke2Rlc3RLZXl9YCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdXJGb3JtYXR0ZWRWYWwgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjdXJGb3JtYXR0ZWRWYWw7XG4gIH1cblxuICAvKipcbiAgICogRGVzY3JpcHRpb246IFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gZ2V0IHRoZSB2YWx1ZSBmcm9tIHRoZSBtZXNzYWdlXG4gICAqIFx0XHRcdFx0XHRcdCAgYmFzZWQgb24gdGhlIHNvdXJjZSBrZXlzXG4gICAqIEBwYXJhbSBtZXNzYWdlIC0gdGhlIG1lc3NhZ2Ugb2JqZWN0XG4gICAqIEBwYXJhbSBzb3VyY2VLZXlzIC0gdGhlIHNvdXJjZSBrZXlzIHRvIGJlIHVzZWQgdG8gZ2V0IHRoZSB2YWx1ZSBmcm9tIHRoZSBtZXNzYWdlXG4gICAqIEByZXR1cm5zICB7YW55fSAtIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBzb3VyY2Uga2V5XG4gICAqICAgICAgICAgICAgIGlmIHRoZSBzb3VyY2Uga2V5IGlzIG5vdCBwcmVzZW50IGluIHRoZSBtZXNzYWdlXG4gICAqICAgICAgICAgICAgcmV0dXJucyBudWxsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldFZhbHVlRnJvbU1lc3NhZ2UoXG4gICAgbWVzc2FnZTogUnVkZGVyU3RhY2tFdmVudCxcbiAgICBzb3VyY2VLZXlzOiAoc3RyaW5nIHwgb2JqZWN0KVtdIHwgc3RyaW5nIHwgb2JqZWN0LFxuICApOiBhbnkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNvdXJjZUtleXMpICYmIHNvdXJjZUtleXMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHNvdXJjZUtleXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKCdMaXN0IHdpdGggc2luZ2xlIGVsZW1lbnQgaXMgbm90IGlkZWFsLiBVc2UgaXQgYXMgc3RyaW5nIGluc3RlYWQnKTtcbiAgICAgIH1cbiAgICAgIC8vIGdvdCB0aGUgcG9zc2libGUgc291cmNlS2V5c1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG4gICAgICBmb3IgKGNvbnN0IHNvdXJjZUtleSBvZiBzb3VyY2VLZXlzKSB7XG4gICAgICAgIGxldCB2YWw6IG51bWJlciB8IHN0cmluZyB8IGJvb2xlYW4gfCBBcnJheTxhbnk+IHwgT2JqZWN0IHwgbnVsbDtcbiAgICAgICAgLy8gaWYgdGhlIHNvdXJjZUtleSBpcyBhbiBvYmplY3Qgd2UgZXhwZWN0IGl0IHRvIGJlIGEgb3BlcmF0aW9uXG4gICAgICAgIGlmICh0eXBlb2Ygc291cmNlS2V5ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIHZhbCA9IEpzb25VdGlscy5oYW5kbGVTb3VyY2VLZXlzT3BlcmF0aW9uKHtcbiAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICBvcGVyYXRpb25PYmplY3Q6IHNvdXJjZUtleSBhcyBPcGVyYXRpb24sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFsID0gZ2V0KG1lc3NhZ2UsIHNvdXJjZUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbCB8fCB2YWwgPT09IGZhbHNlIHx8IHZhbCA9PT0gMCkge1xuICAgICAgICAgIC8vIHJldHVybiBvbmx5IGlmIHRoZSB2YWx1ZSBpcyB2YWxpZC5cbiAgICAgICAgICAvLyBlbHNlIGxvb2sgZm9yIG5leHQgcG9zc2libGUgc291cmNlIGluIHByZWNlZGVuY2VcbiAgICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygc291cmNlS2V5cyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIC8vIGdvdCBhIHNpbmdsZSBrZXlcbiAgICAgIC8vIC0gd2UgZG9uJ3QgbmVlZCB0byBpdGVyYXRlIG92ZXIgYSBsb29wIGZvciBhIHNpbmdsZSBwb3NzaWJsZSB2YWx1ZVxuICAgICAgcmV0dXJuIGdldChtZXNzYWdlLCBzb3VyY2VLZXlzKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBzb3VyY2VLZXlzID09PSAnb2JqZWN0Jykge1xuICAgICAgLy8gaWYgdGhlIHNvdXJjZUtleSBpcyBhbiBvYmplY3Qgd2UgZXhwZWN0IGl0IHRvIGJlIGEgb3BlcmF0aW9uXG4gICAgICByZXR1cm4gSnNvblV0aWxzLmhhbmRsZVNvdXJjZUtleXNPcGVyYXRpb24oe1xuICAgICAgICBtZXNzYWdlLFxuICAgICAgICBvcGVyYXRpb25PYmplY3Q6IHNvdXJjZUtleXMgYXMgeyBvcGVyYXRpb246IHN0cmluZzsgYXJnczogYW55W10gfSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB3cm9uZyBzb3VyY2VLZXkgdHlwZS4gYWJvcnRcbiAgICAgIC8vIERFVkVMT1BFUiBFUlJPUlxuICAgICAgdGhyb3cgbmV3IFBsYXRmb3JtRXJyb3IoJ1dyb25nIHNvdXJjZUtleSB0eXBlIG9yIGJsYW5rIHNvdXJjZUtleSBhcnJheScpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbjogVGhpcyBtZXRob2QgaXMgdXNlZCB0byBnZXQgdGhlIHZhbHVlIGZyb20gdGhlIG1lc3NhZ2VcbiAgICogICAgICAgICAgICAgICBiYXNlZCBvbiB0aGUgc291cmNlIGtleVxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIHRoZSBtZXNzYWdlIG9iamVjdFxuICAgKiBAcGFyYW0gc291cmNlS2V5IC0gdGhlIHNvdXJjZSBrZXkgdG8gYmUgdXNlZCB0byBnZXQgdGhlIHZhbHVlIGZyb20gdGhlIG1lc3NhZ2VcbiAgICogQHJldHVybnMgIHthbnl9IC0gcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIHNvdXJjZSBrZXlcbiAgICogICAgICAgICAgICBpZiB0aGUgc291cmNlIGtleSBpcyBub3QgcHJlc2VudCBpbiB0aGUgbWVzc2FnZVxuICAgKiAgICAgICAgICAgcmV0dXJucyBudWxsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldEZpZWxkVmFsdWVGcm9tTWVzc2FnZShtZXNzYWdlOiBSdWRkZXJTdGFja0V2ZW50LCBzb3VyY2VLZXk6IHN0cmluZyk6IGFueSB7XG4gICAgY29uc3Qgc291cmNlS2V5TWFwID0gSnNvblV0aWxzLk1FU1NBR0VfTUFQUElOR1tzb3VyY2VLZXldO1xuICAgIGlmIChzb3VyY2VLZXlNYXApIHtcbiAgICAgIHJldHVybiBKc29uVXRpbHMuZ2V0VmFsdWVGcm9tTWVzc2FnZShtZXNzYWdlLCBzb3VyY2VLZXlNYXApO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbjogVGhpcyBtZXRob2QgaXMgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIHBheWxvYWQgYmFzZWQgb24gdGhlIG1hcHBpbmdKc29uXG4gICAqIEBwYXJhbSBtZXNzYWdlIC0gdGhlIG1lc3NhZ2Ugb2JqZWN0XG4gICAqIEBwYXJhbSBtYXBwaW5nSnNvbiAtIHRoZSBtYXBwaW5nSnNvbiB0byBiZSB1c2VkIHRvIGNvbnN0cnVjdCB0aGUgcGF5bG9hZFxuICAgKiBAcGFyYW0gZGVzdGluYXRpb25OYW1lIC0gdGhlIGRlc3RpbmF0aW9uIG5hbWUgdG8gYmUgdXNlZCB0byBnZXQgdGhlIG1hcHBpbmdKc29uXG4gICAqIEByZXR1cm5zICB7YW55fSAtIHJldHVybnMgdGhlIHBheWxvYWQgY29uc3RydWN0ZWQgYmFzZWQgb24gdGhlIG1hcHBpbmdKc29uXG4gICAqICAgICAgICAgICBpZiB0aGUgbWFwcGluZ0pzb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIG1lc3NhZ2Ugb3IgYmxhbmtcbiAgICogICAgICAgICAgIHJldHVybnMgbnVsbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjb25zdHJ1Y3RQYXlsb2FkKFxuICAgIG1lc3NhZ2U6IFJ1ZGRlclN0YWNrRXZlbnQsXG4gICAgbWFwcGluZ0pzb246IGFueVtdLFxuICAgIGRlc3RpbmF0aW9uTmFtZTogc3RyaW5nID0gJycsXG4gICk6IGFueSB7XG4gICAgLy8gTWFwcGluZyBKU09OIHNob3VsZCBiZSBhbiBhcnJheVxuICAgIGlmIChBcnJheS5pc0FycmF5KG1hcHBpbmdKc29uKSAmJiBtYXBwaW5nSnNvbi5sZW5ndGggPiAwKSB7XG4gICAgICAvLyAtIGNvbnN0cnVjdCBhIGJsYW5rIHBheWxvYWQgYW5kIHJldHVybiBhdCB0aGUgZW5kXG4gICAgICAvLyAtIGlmIHlvdSB0byBuZWVkIG1lcmdlIG11bHRpcGxlIGNvbnN0cnVjdFBheWxvYWQgZG8gaXQgb24gdGhlIHRyYW5zZm9ybWVyIGNvZGVcbiAgICAgIC8vIC0gLSB3aWxsIGdpdmUgYSBjbGVhbmVyIGFwcHJvYWNoXG4gICAgICAvLyAtIC0geW91IGRvbid0IG5lZWQgdG8gaXRlcmF0ZSBvdmVyIG11bHRpcGxlIGxvb3BzIHRvIGNvbnN0cnVjdCBhIHBheWxvYWQgZm9yIGEgc2luZ2xlIGV2ZW50XG4gICAgICBjb25zdCBwYXlsb2FkID0ge307XG5cbiAgICAgIG1hcHBpbmdKc29uLmZvckVhY2goKG1hcHBpbmcpID0+IHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHNvdXJjZUtleXMsXG4gICAgICAgICAgZGVzdEtleSxcbiAgICAgICAgICByZXF1aXJlZCxcbiAgICAgICAgICBtZXRhZGF0YSxcbiAgICAgICAgICBzb3VyY2VGcm9tR2VuZXJpY01hcCxcbiAgICAgICAgfToge1xuICAgICAgICAgIHNvdXJjZUtleXM6IChzdHJpbmcgfCBvYmplY3QpW10gfCBzdHJpbmcgfCBvYmplY3Q7XG4gICAgICAgICAgZGVzdEtleTogc3RyaW5nO1xuICAgICAgICAgIHJlcXVpcmVkOiBib29sZWFuO1xuICAgICAgICAgIG1ldGFkYXRhOiBNYXBwaW5nTWV0YWRhdGE7XG4gICAgICAgICAgc291cmNlRnJvbUdlbmVyaWNNYXA6IGJvb2xlYW47XG4gICAgICAgIH0gPSBtYXBwaW5nO1xuICAgICAgICAvLyBnZXQgdGhlIHZhbHVlIGZyb20gZXZlbnQsIHBhc3Mgc291cmNlRnJvbUdlbmVyaWNNYXAgaW4gdGhlIG1hcHBpbmcgdG8gZm9yY2UgdGhpcyB0byB0YWtlIHRoZVxuICAgICAgICAvLyBzb3VyY2VrZXlzIGZyb20gR2VuZXJpY0ZpZWxkTWFwcGluZywgZWxzZSB0YWtlIHRoZSBzb3VyY2VLZXlzIGZyb20gc3BlY2lmaWMgZGVzdGluYXRpb24gbWFwcGluZyBzb3VyY2VLZXlzXG4gICAgICAgIGNvbnN0IGludGVncmF0aW9uc09iaiA9IGlzRW1wdHkoZGVzdGluYXRpb25OYW1lKVxuICAgICAgICAgID8gU2VtYW50aWNVdGlsLmdldEludGVncmF0aW9uc09iaihtZXNzYWdlLCBkZXN0aW5hdGlvbk5hbWUpXG4gICAgICAgICAgOiBudWxsO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IEpzb25VdGlscy5oYW5kbGVNZXRhZGF0YUZvclZhbHVlKFxuICAgICAgICAgIHNvdXJjZUZyb21HZW5lcmljTWFwXG4gICAgICAgICAgICA/IHRoaXMuZ2V0RmllbGRWYWx1ZUZyb21NZXNzYWdlKG1lc3NhZ2UsIHNvdXJjZUtleXMgYXMgc3RyaW5nKVxuICAgICAgICAgICAgOiB0aGlzLmdldFZhbHVlRnJvbU1lc3NhZ2UobWVzc2FnZSwgc291cmNlS2V5cyksXG4gICAgICAgICAgbWV0YWRhdGEsXG4gICAgICAgICAgZGVzdEtleSxcbiAgICAgICAgICBpbnRlZ3JhdGlvbnNPYmosXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHZhbHVlIHx8IHZhbHVlID09PSAwIHx8IHZhbHVlID09PSBmYWxzZSkge1xuICAgICAgICAgIGlmIChkZXN0S2V5KSB7XG4gICAgICAgICAgICAvLyBzZXQgdGhlIHZhbHVlIG9ubHkgaWYgY29ycmVjdFxuICAgICAgICAgICAgc2V0KHBheWxvYWQsIGRlc3RLZXksIHZhbHVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gdG8gc2V0IHRvIHJvb3QgYW5kIGZsYXR0ZW4gbGF0ZXJcbiAgICAgICAgICAgIHBheWxvYWRbJyddID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHJlcXVpcmVkKSB7XG4gICAgICAgICAgLy8gdGhyb3cgZXJyb3IgaWYgcmVxaXJlZCB2YWx1ZSBpcyBtaXNzaW5nXG4gICAgICAgICAgdGhyb3cgbmV3IEluc3RydW1lbnRhdGlvbkVycm9yKFxuICAgICAgICAgICAgYE1pc3NpbmcgcmVxdWlyZWQgdmFsdWUgZnJvbSAke0pTT04uc3RyaW5naWZ5KHNvdXJjZUtleXMpfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH1cblxuICAgIC8vIGludmFsaWQgbWFwcGluZ0pzb25cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc3RyaW5naWZ5KHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICB9XG59XG4iXX0=