@rudderstack/integrations-lib 0.2.14 → 0.2.16

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.
@@ -2138,5 +2138,24 @@ describe('misc', () => {
2138
2138
  expect(result).toBe('{"key1":"value1","key2":["value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2","value2"],"key3":{"nestedKey":"nestedValue"}}');
2139
2139
  });
2140
2140
  });
2141
+ describe('uuidv5', () => {
2142
+ it('should generate the same UUID for the same input', () => {
2143
+ const input = 'test-value';
2144
+ const uuid1 = (0, misc_1.uuidv5)(input);
2145
+ const uuid2 = (0, misc_1.uuidv5)(input);
2146
+ expect(uuid1).toBe(uuid2);
2147
+ });
2148
+ it('should generate different UUIDs for different inputs', () => {
2149
+ const uuid1 = (0, misc_1.uuidv5)('first-value');
2150
+ const uuid2 = (0, misc_1.uuidv5)('second-value');
2151
+ expect(uuid1).not.toBe(uuid2);
2152
+ });
2153
+ it('should return a valid UUID v5', () => {
2154
+ expect((0, misc_1.uuidv5)('valid-test')).toBe('49843169-ee91-53d4-82ae-02dd676c92ae');
2155
+ });
2156
+ it('should handle empty string inputs', () => {
2157
+ expect((0, misc_1.uuidv5)('')).toBe('1c7fcf13-74af-5595-8ee9-d72be6c1ac42');
2158
+ });
2159
+ });
2141
2160
  });
2142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzYy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL21pc2MudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLHNDQUFpRDtBQUNqRCxpQ0FpQ2dCO0FBRWhCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0lBQ3BCLFFBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO1FBQ3pCLHFGQUFxRjtRQUNyRixFQUFFLENBQUMsa0VBQWtFLEVBQUUsR0FBRyxFQUFFO1lBQzFFLE1BQU0sQ0FBQyxJQUFBLGdCQUFTLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxzRkFBc0Y7UUFDdEYsRUFBRSxDQUFDLG1FQUFtRSxFQUFFLEdBQUcsRUFBRTtZQUMzRSxNQUFNLENBQUMsSUFBQSxnQkFBUyxFQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO1FBRUgscUZBQXFGO1FBQ3JGLEVBQUUsQ0FBQyxrRUFBa0UsRUFBRSxHQUFHLEVBQUU7WUFDMUUsTUFBTSxDQUFDLElBQUEsZ0JBQVMsRUFBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztRQUVILDhFQUE4RTtRQUM5RSxFQUFFLENBQUMsMkRBQTJELEVBQUUsR0FBRyxFQUFFO1lBQ25FLE1BQU0sQ0FBQyxJQUFBLGdCQUFTLEVBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7UUFFSCwrRUFBK0U7UUFDL0UsRUFBRSxDQUFDLDREQUE0RCxFQUFFLEdBQUcsRUFBRTtZQUNwRSxNQUFNLENBQUMsSUFBQSxnQkFBUyxFQUFDLElBQUksQ0FB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RUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUMzQyxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUM5QyxNQUFNLE1BQU0sR0FBRyxJQUFBLDRCQUFxQixFQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7UUFFSCxxR0FBcUc7UUFDckcsRUFBRSxDQUFDLG9GQUFvRixFQUFFLEdBQUcsRUFBRTtZQUM1RixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUM5QyxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNqRCxNQUFNLE1BQU0sR0FBRyxJQUFBLDRCQUFxQixFQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7UUFFSCxvR0FBb0c7UUFDcEcsRUFBRSxDQUFDLG1GQUFtRixFQUFFLEdBQUcsRUFBRTtZQUMzRixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUMxQyxNQUFNLFFBQVEs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QUcsRUFBRTtZQUN4SSxNQUFNLEtBQUssR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzNGLE1BQU0sTUFBTSxHQUFHLElBQUEsaUJBQVUsRUFBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDcEUsQ0FBQyxDQUFDLENBQUM7UUFFSCwySUFBMkk7UUFDM0ksRUFBRSxDQUFDLDBIQUEwSCxFQUFFLEdBQUcsRUFBRTtZQUNsSSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMxRCxNQUFNLE1BQU0sR0FBRyxJQUFBLGlCQUFVLEVBQUMsS0FBSyxDQUFDLENBQUM7WUFDakMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEUsQ0FBQyxDQUFDLENBQUM7UUFFSCwySUFBMkk7UUFDM0ksRUFBRSxDQUFDLDBIQUEwSCxFQUFFLEdBQUcsRUFBRTtZQUNsSSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDakQsTUFBTSxNQUFNLEdBQUcs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MlIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1ldGFkYXRhIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgSW5zdHJ1bWVudGF0aW9uRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMnO1xuaW1wb3J0IHtcbiAgYmFzZTY0Q29udmVydG9yLFxuICBmbGF0dGVuTWFwLFxuICBnZXRFdmVudFRpbWUsXG4gIGdldFR5cGUsXG4gIGlzQmxhbmssXG4gIGlzRGVmaW5lZCxcbiAgaXNEZWZpbmVkQW5kTm90TnVsbCxcbiAgaXNEZWZpbmVkQW5kTm90TnVsbEFuZE5vdEVtcHR5LFxuICBpc05vdEVtcHR5LFxuICBpc05vdE51bGwsXG4gIGlzUHJpbWl0aXZlLFxuICBpc1ZhbGlkVXJsLFxuICByZW1vdmVOdWxsVmFsdWVzLFxuICByZW1vdmVVbmRlZmluZWRBbmROdWxsQW5kRW1wdHlWYWx1ZXMsXG4gIHJlbW92ZVVuZGVmaW5lZEFuZE51bGxWYWx1ZXMsXG4gIHJlbW92ZVVuZGVmaW5lZFZhbHVlcyxcbiAgc3RyaXBUcmFpbGluZ1NsYXNoLFxuICBpc09iamVjdCxcbiAgaXNFbXB0eSxcbiAgaXNFbXB0eU9iamVjdCxcbiAgaXNEZWZpbmVkTm90TnVsbE5vdEVtcHR5LFxuICByZW1vdmVVbmRlZmluZWROdWxsRW1wdHlFeGNsQm9vbEludCxcbiAgZ2V0SGFzaEZyb21BcnJheSxcbiAgZ2V0SGFzaEZyb21BcnJheVdpdGhEdXBsaWNhdGUsXG4gIGZsYXR0ZW5Kc29uLFxuICBnZXRWYWx1ZUZyb21Qcm9wZXJ0aWVzT3JUcmFpdHMsXG4gIGdldE9mZnNldEluU2VjLFxuICBmb3JtYXRUaW1lU3RhbXAsXG4gIGhhc2hUb1NoYTI1NixcbiAgZ2VuZXJhdGVVVUlELFxuICBnZXRFcnJvclJlc3BFdmVudHMsXG4gIGNvbnZlcnRUb1N0cmluZyxcbn0gZnJvbSAnLi9taXNjJztcblxuZGVzY3JpYmUoJ21pc2MnLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCdpc0RlZmluZWQnLCAoKSA9PiB7XG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gYSBkZWZpbmVkIHZhbHVlIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBhIGRlZmluZWQgdmFsdWUgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzRGVmaW5lZCg1KSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSB3aGVuIGEgbm9uLW51bGwgdmFsdWUgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGEgbm9uLW51bGwgdmFsdWUgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzRGVmaW5lZCgnaGVsbG8nKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSB3aGVuIGFuIGVtcHR5IHN0cmluZyBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gYW4gZW1wdHkgc3RyaW5nIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCcsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc0RlZmluZWQoJycpKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gYSBudW1iZXIgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGEgbnVtYmVyIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCcsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc0RlZmluZWQoMTApKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gYSBib29sZWFuIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBhIGJvb2xlYW4gaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzRGVmaW5lZCh0cnVlKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgZmFsc2Ugd2hlbiBhbiB1bmRlZmluZWQgdmFsdWUgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiBhbiB1bmRlZmluZWQgdmFsdWUgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzRGVmaW5lZCh1bmRlZmluZWQpKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSB3aGVuIG51bGwgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIG51bGwgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzRGVmaW5lZChudWxsKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSB3aGVuIGFuIGVtcHR5IG9iamVjdCBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gYW4gZW1wdHkgb2JqZWN0IGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCcsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc0RlZmluZWQoe30pKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gYW4gZW1wdHkgYXJyYXkgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGFuIGVtcHR5IGFycmF5IGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCcsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc0RlZmluZWQoW10pKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gTmFOIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBOYU4gaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzRGVmaW5lZChOYU4pKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gYSBmdW5jdGlvbiBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gYSBmdW5jdGlvbiBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNEZWZpbmVkKCgpID0+IHt9KSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSB3aGVuIGEgc3ltYm9sIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBhIHN5bWJvbCBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNEZWZpbmVkKFN5bWJvbCgpKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRvIHZlcmlmeSB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUgd2hlbiBhbiBlbXB0eSBNYXAgb2JqZWN0IGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBhbiBlbXB0eSBNYXAgb2JqZWN0IGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG1hcCA9IG5ldyBNYXAoKTtcbiAgICAgIGV4cGVjdChpc0RlZmluZWQobWFwKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRoZSBvYmplY3RpdmUgb2YgdGhpcyB0ZXN0IGlzIHRvIHZlcmlmeSB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUgd2hlbiBhbiBlbXB0eSBTZXQgb2JqZWN0IGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudC5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gYW4gZW1wdHkgU2V0IG9iamVjdCBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzZXRPYmogPSBuZXcgU2V0KCk7XG4gICAgICBleHBlY3QoaXNEZWZpbmVkKHNldE9iaikpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUaGUgb2JqZWN0aXZlIG9mIHRoaXMgdGVzdCBpcyB0byB2ZXJpZnkgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gYW4gZW1wdHkgV2Vha01hcCBvYmplY3QgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50LlxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBhbiBlbXB0eSBXZWFrTWFwIG9iamVjdCBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBlbXB0eVdlYWtNYXAgPSBuZXcgV2Vha01hcCgpO1xuICAgICAgZXhwZWN0KGlzRGVmaW5lZChlbXB0eVdlYWtNYXApKS50b0JlKHRydWUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnaXNOb3RFbXB0eScsICgpID0+IHtcbiAgICAvLyBUZXN0cyB0aGF0IGlzTm90RW1wdHkgcmV0dXJucyB0cnVlIGZvciBub24tZW1wdHkgYXJyYXlzXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIHRoZSBpbnB1dCBpcyBhIG5vbi1lbXB0eSBhcnJheScsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzTm90RW1wdHkoWzEsIDIsIDNdKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzTm90RW1wdHkgcmV0dXJucyBmYWxzZSBmb3IgZW1wdHkgYXJyYXlzXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiB0aGUgaW5wdXQgaXMgYW4gZW1wdHkgYXJyYXknLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc05vdEVtcHR5KFtdKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc05vdEVtcHR5IHJldHVybnMgdHJ1ZSBmb3Igbm9uLWVtcHR5IG9iamVjdHNcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gdGhlIGlucHV0IGlzIGEgbm9uLWVtcHR5IG9iamVjdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzTm90RW1wdHkoeyBrZXk6ICd2YWx1ZScgfSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc05vdEVtcHR5IHJldHVybnMgZmFsc2UgZm9yIGVtcHR5IG9iamVjdHNcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHRoZSBpbnB1dCBpcyBhbiBlbXB0eSBvYmplY3QnLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc05vdEVtcHR5KHt9KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc05vdEVtcHR5IHJldHVybnMgdHJ1ZSBmb3Igbm9uLWVtcHR5IHN0cmluZ3NcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gdGhlIGlucHV0IGlzIGEgbm9uLWVtcHR5IHN0cmluZycsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzTm90RW1wdHkoJ2hlbGxvJyk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc05vdEVtcHR5IHJldHVybnMgZmFsc2UgZm9yIGVtcHR5IHN0cmluZ3NcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHRoZSBpbnB1dCBpcyBhbiBlbXB0eSBzdHJpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc05vdEVtcHR5KCcnKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc05vdEVtcHR5IHJldHVybnMgZmFsc2UgZm9yIG5vbi16ZXJvIG51bWJlcnNcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHRoZSBpbnB1dCBpcyBhIG5vbi16ZXJvIG51bWJlcicsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzTm90RW1wdHkoNDIpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzTm90RW1wdHkgcmV0dXJucyBmYWxzZSBmb3IgemVyb1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdGhlIGlucHV0IGlzIHplcm8nLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc05vdEVtcHR5KDApO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzTm90RW1wdHkgcmV0dXJucyBmYWxzZSBmb3IgbnVsbFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdGhlIGlucHV0IGlzIG51bGwnLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc05vdEVtcHR5KG51bGwpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzTm90RW1wdHkgcmV0dXJucyBmYWxzZSBmb3IgdW5kZWZpbmVkXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiB0aGUgaW5wdXQgaXMgdW5kZWZpbmVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNOb3RFbXB0eSh1bmRlZmluZWQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzTm90RW1wdHkgcmV0dXJucyBmYWxzZSBmb3IgTmFOXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiB0aGUgaW5wdXQgaXMgTmFOJywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNOb3RFbXB0eShOYU4pO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzTm90RW1wdHkgcmV0dXJucyBmYWxzZSBmb3IgZmFsc2UgYm9vbGVhblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdGhlIGlucHV0IGlzIGZhbHNlJywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNOb3RFbXB0eShmYWxzZSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNOb3RFbXB0eSByZXR1cm5zIGZhbHNlIGZvciB0cnVlIGJvb2xlYW5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHRoZSBpbnB1dCBpcyBhIHRydWUgYm9vbGVhbicsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzTm90RW1wdHkodHJ1ZSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKGZhbHNlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2lzTm90TnVsbCcsICgpID0+IHtcbiAgICAvLyBUZXN0cyB0aGF0IGlzTm90TnVsbCByZXR1cm5zIHRydWUgd2hlbiBhIG5vbi1udWxsIHZhbHVlIGlzIHBhc3NlZFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBhIG5vbi1udWxsIHZhbHVlIGlzIHBhc3NlZCcsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc05vdE51bGwoJ3Rlc3QnKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNOb3ROdWxsIHJldHVybnMgdHJ1ZSB3aGVuIGEgdHJ1dGh5IHZhbHVlIGlzIHBhc3NlZFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBhIHRydXRoeSB2YWx1ZSBpcyBwYXNzZWQnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNOb3ROdWxsKHRydWUpKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc05vdE51bGwgcmV0dXJucyB0cnVlIHdoZW4gYW4gZW1wdHkgc3RyaW5nIGlzIHBhc3NlZFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBhbiBlbXB0eSBzdHJpbmcgaXMgcGFzc2VkJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzTm90TnVsbCgnJykpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzTm90TnVsbCByZXR1cm5zIHRydWUgd2hlbiBhIG51bWJlciBpcyBwYXNzZWRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gYSBudW1iZXIgaXMgcGFzc2VkJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzTm90TnVsbCgxMjMpKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc05vdE51bGwgcmV0dXJucyB0cnVlIHdoZW4gYSBib29sZWFuIHZhbHVlIGlzIHBhc3NlZFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBhIGJvb2xlYW4gdmFsdWUgaXMgcGFzc2VkJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzTm90TnVsbCh0cnVlKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNOb3ROdWxsIHJldHVybnMgZmFsc2Ugd2hlbiBudWxsIGlzIHBhc3NlZFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gbnVsbCBpcyBwYXNzZWQnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNOb3ROdWxsKG51bGwpKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNOb3ROdWxsIHJldHVybnMgZmFsc2Ugd2hlbiB1bmRlZmluZWQgaXMgcGFzc2VkXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiB1bmRlZmluZWQgaXMgcGFzc2VkJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzTm90TnVsbCh1bmRlZmluZWQpKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNOb3ROdWxsIHJldHVybnMgdHJ1ZSB3aGVuIGFuIGVtcHR5IG9iamVjdCBpcyBwYXNzZWRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gYW4gZW1wdHkgb2JqZWN0IGlzIHBhc3NlZCcsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc05vdE51bGwoe30pKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc05vdE51bGwgcmV0dXJucyB0cnVlIHdoZW4gYW4gZW1wdHkgYXJyYXkgaXMgcGFzc2VkXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGFuIGVtcHR5IGFycmF5IGlzIHBhc3NlZCcsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc05vdE51bGwoW10pKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc05vdE51bGwgcmV0dXJucyB0cnVlIHdoZW4gYSBmdW5jdGlvbiBpcyBwYXNzZWRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gYSBmdW5jdGlvbiBpcyBwYXNzZWQnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNOb3ROdWxsKCgpID0+IHt9KSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNOb3ROdWxsIHJldHVybnMgdHJ1ZSB3aGVuIE5hTiBpcyBwYXNzZWRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gTmFOIGlzIHBhc3NlZCcsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc05vdE51bGwoTmFOKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNOb3ROdWxsIHJldHVybnMgdHJ1ZSB3aGVuIGEgc3ltYm9sIGlzIHBhc3NlZFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBhIHN5bWJvbCBpcyBwYXNzZWQnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNOb3ROdWxsKFN5bWJvbCgpKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNOb3ROdWxsIHJldHVybnMgdHJ1ZSB3aGVuIGEgZnVuY3Rpb24gaXMgcGFzc2VkXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGEgZnVuY3Rpb24gaXMgcGFzc2VkJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzTm90TnVsbCgoKSA9PiB7fSkpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzTm90TnVsbCByZXR1cm5zIHRydWUgd2hlbiBOYU4gaXMgcGFzc2VkXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIE5hTiBpcyBwYXNzZWQnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNOb3ROdWxsKE5hTikpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzTm90TnVsbCByZXR1cm5zIHRydWUgd2hlbiBhIHN5bWJvbCBpcyBwYXNzZWRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gYSBzeW1ib2wgaXMgcGFzc2VkJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc3ltYm9sID0gU3ltYm9sKCk7XG4gICAgICBleHBlY3QoaXNOb3ROdWxsKHN5bWJvbCkpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdpc0RlZmluZWRBbmROb3ROdWxsJywgKCkgPT4ge1xuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSB3aGVuIGEgZGVmaW5lZCBhbmQgbm90IG51bGwgdmFsdWUgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGEgZGVmaW5lZCBhbmQgbm90IG51bGwgdmFsdWUgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNEZWZpbmVkQW5kTm90TnVsbCgndGVzdCcpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSB3aGVuIGEgc3RyaW5nIHZhbHVlIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBhIHN0cmluZyB2YWx1ZSBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc0RlZmluZWRBbmROb3ROdWxsKCd0ZXN0Jyk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gYSBudW1iZXIgdmFsdWUgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGEgbnVtYmVyIHZhbHVlIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzRGVmaW5lZEFuZE5vdE51bGwoMTIzKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUgd2hlbiBhIGJvb2xlYW4gdmFsdWUgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGEgYm9vbGVhbiB2YWx1ZSBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc0RlZmluZWRBbmROb3ROdWxsKHRydWUpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSB3aGVuIGFuIG9iamVjdCB2YWx1ZSBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gYW4gb2JqZWN0IHZhbHVlIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzRGVmaW5lZEFuZE5vdE51bGwoeyBrZXk6ICd2YWx1ZScgfSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gYW4gYXJyYXkgdmFsdWUgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGFuIGFycmF5IHZhbHVlIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzRGVmaW5lZEFuZE5vdE51bGwoWzEsIDIsIDNdKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUgd2hlbiBhbiBlbXB0eSBzdHJpbmcgdmFsdWUgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGFuIGVtcHR5IHN0cmluZyB2YWx1ZSBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc0RlZmluZWRBbmROb3ROdWxsKCcnKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUgd2hlbiBhbiBlbXB0eSBhcnJheSB2YWx1ZSBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gYW4gZW1wdHkgYXJyYXkgdmFsdWUgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNEZWZpbmVkQW5kTm90TnVsbChbXSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gYW4gZW1wdHkgb2JqZWN0IHZhbHVlIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBhbiBlbXB0eSBvYmplY3QgdmFsdWUgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNEZWZpbmVkQW5kTm90TnVsbCh7fSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBmYWxzZSB3aGVuIHVuZGVmaW5lZCBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHVuZGVmaW5lZCBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc0RlZmluZWRBbmROb3ROdWxsKHVuZGVmaW5lZCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgZmFsc2Ugd2hlbiBudWxsIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gbnVsbCBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc0RlZmluZWRBbmROb3ROdWxsKG51bGwpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUgd2hlbiBOYU4gaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIE5hTiBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc0RlZmluZWRBbmROb3ROdWxsKE5hTik7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnaXNEZWZpbmVkQW5kTm90TnVsbEFuZE5vdEVtcHR5JywgKCkgPT4ge1xuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSB3aGVuIHBhc3NlZCBhIG5vbi1lbXB0eSBzdHJpbmdcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gcGFzc2VkIGEgbm9uLWVtcHR5IHN0cmluZycsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc0RlZmluZWRBbmROb3ROdWxsQW5kTm90RW1wdHkoJ2hlbGxvJykpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUgd2hlbiBwYXNzZWQgYSBub24tZW1wdHkgb2JqZWN0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIHBhc3NlZCBhIG5vbi1lbXB0eSBvYmplY3QnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNEZWZpbmVkQW5kTm90TnVsbEFuZE5vdEVtcHR5KHsgbmFtZTogJ0pvaG4nLCBhZ2U6IDI1IH0pKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gcGFzc2VkIGEgbm9uLWVtcHR5IGFycmF5XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIHBhc3NlZCBhIG5vbi1lbXB0eSBhcnJheScsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc0RlZmluZWRBbmROb3ROdWxsQW5kTm90RW1wdHkoWzEsIDIsIDNdKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgZmFsc2Ugd2hlbiBwYXNzZWQgYSBib29sZWFuIHZhbHVlXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiBwYXNzZWQgYSBib29sZWFuIHZhbHVlJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzRGVmaW5lZEFuZE5vdE51bGxBbmROb3RFbXB0eSh0cnVlKSkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGZhbHNlIHdoZW4gcGFzc2VkIGEgbnVtYmVyIHZhbHVlXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiBwYXNzZWQgYSBudW1iZXIgdmFsdWUnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNEZWZpbmVkQW5kTm90TnVsbEFuZE5vdEVtcHR5KDQyKSkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGZhbHNlIHdoZW4gcGFzc2VkIGFuIGVtcHR5IHN0cmluZ1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gcGFzc2VkIGFuIGVtcHR5IHN0cmluZycsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc0RlZmluZWRBbmROb3ROdWxsQW5kTm90RW1wdHkoJycpKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgZmFsc2Ugd2hlbiBwYXNzZWQgYW4gZW1wdHkgb2JqZWN0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiBwYXNzZWQgYW4gZW1wdHkgb2JqZWN0JywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzRGVmaW5lZEFuZE5vdE51bGxBbmROb3RFbXB0eSh7fSkpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBmYWxzZSB3aGVuIHBhc3NlZCBhbiBlbXB0eSBhcnJheVxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gcGFzc2VkIGFuIGVtcHR5IGFycmF5JywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzRGVmaW5lZEFuZE5vdE51bGxBbmROb3RFbXB0eShbXSkpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBmYWxzZSB3aGVuIHBhc3NlZCBudWxsXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiBwYXNzZWQgbnVsbCcsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc0RlZmluZWRBbmROb3ROdWxsQW5kTm90RW1wdHkobnVsbCkpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBmYWxzZSB3aGVuIHBhc3NlZCB1bmRlZmluZWRcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHBhc3NlZCB1bmRlZmluZWQnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNEZWZpbmVkQW5kTm90TnVsbEFuZE5vdEVtcHR5KHVuZGVmaW5lZCkpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gcGFzc2VkIGEgc3RyaW5nIHdpdGggb25seSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnNcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gcGFzc2VkIGEgc3RyaW5nIHdpdGggb25seSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNEZWZpbmVkQW5kTm90TnVsbEFuZE5vdEVtcHR5KCcgICAnKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSB3aGVuIHBhc3NlZCBhbiBvYmplY3Qgd2l0aCBvbmx5IG51bGwgb3IgdW5kZWZpbmVkIHZhbHVlc1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBwYXNzZWQgYW4gb2JqZWN0IHdpdGggb25seSBudWxsIG9yIHVuZGVmaW5lZCB2YWx1ZXMnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNEZWZpbmVkQW5kTm90TnVsbEFuZE5vdEVtcHR5KHsgcHJvcDE6IG51bGwsIHByb3AyOiB1bmRlZmluZWQgfSkpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdpc0JsYW5rJywgKCkgPT4ge1xuICAgIC8vIFRlc3RzIHRoYXQgaXNCbGFuayByZXR1cm5zIHRydWUgZm9yIGFuIGVtcHR5IHN0cmluZ1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiB2YWx1ZSBpcyBhbiBlbXB0eSBzdHJpbmcnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNCbGFuaygnJykpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzQmxhbmsgcmV0dXJucyB0cnVlIGZvciBhbiBlbXB0eSBhcnJheVxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiB2YWx1ZSBpcyBhbiBlbXB0eSBhcnJheScsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc0JsYW5rKFtdKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNCbGFuayByZXR1cm5zIGZhbHNlIGZvciBhbiBlbXB0eSBvYmplY3RcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gdmFsdWUgaXMgYW4gZW1wdHkgb2JqZWN0JywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzQmxhbmsoe30pKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNCbGFuayByZXR1cm5zIGZhbHNlIGZvciBhIG5vbi1lbXB0eSBzdHJpbmdcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHZhbHVlIGlzIGEgbm9uLWVtcHR5IHN0cmluZycsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc0JsYW5rKCdoZWxsbycpKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNCbGFuayByZXR1cm5zIGZhbHNlIGZvciBhIG5vbi1lbXB0eSBhcnJheVxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdmFsdWUgaXMgYSBub24tZW1wdHkgYXJyYXknLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNCbGFuayhbMSwgMiwgM10pKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNCbGFuayByZXR1cm5zIGZhbHNlIGZvciBhIG5vbi1lbXB0eSBvYmplY3RcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHZhbHVlIGlzIGEgbm9uLWVtcHR5IG9iamVjdCcsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc0JsYW5rKHsga2V5OiAndmFsdWUnIH0pKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNCbGFuayByZXR1cm5zIHRydWUgZm9yIGEgbnVsbCB2YWx1ZVxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiB2YWx1ZSBpcyBudWxsJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzQmxhbmsobnVsbCkpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzQmxhbmsgcmV0dXJucyB0cnVlIGZvciBhbiB1bmRlZmluZWQgdmFsdWVcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gdmFsdWUgaXMgdW5kZWZpbmVkJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzQmxhbmsodW5kZWZpbmVkKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNCbGFuayByZXR1cm5zIGZhbHNlIGZvciBhIGJvb2xlYW4gdmFsdWVcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHZhbHVlIGlzIGEgYm9vbGVhbicsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc0JsYW5rKHRydWUpKS50b0JlKGZhbHNlKTtcbiAgICAgIGV4cGVjdChpc0JsYW5rKGZhbHNlKSkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzQmxhbmsgcmV0dXJucyBmYWxzZSBmb3IgYSBudW1iZXIgdmFsdWVcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHZhbHVlIGlzIGEgbnVtYmVyJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzQmxhbmsoMTIzKSkudG9CZShmYWxzZSk7XG4gICAgICBleHBlY3QoaXNCbGFuaygwKSkudG9CZShmYWxzZSk7XG4gICAgICBleHBlY3QoaXNCbGFuaygtMSkpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc0JsYW5rIHJldHVybnMgZmFsc2UgZm9yIGEgd2hpdGVzcGFjZSBzdHJpbmdcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHZhbHVlIGlzIGEgd2hpdGVzcGFjZSBzdHJpbmcnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNCbGFuaygnICAgJykpLnRvQmUoZmFsc2UpO1xuICAgICAgZXhwZWN0KGlzQmxhbmsoJ1xcdCcpKS50b0JlKGZhbHNlKTtcbiAgICAgIGV4cGVjdChpc0JsYW5rKCdcXG4nKSkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzQmxhbmsgcmV0dXJucyBmYWxzZSBmb3IgTmFOIHZhbHVlXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIHZhbHVlIGlzIE5hTicsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc0JsYW5rKE5hTikpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncmVtb3ZlVW5kZWZpbmVkVmFsdWVzJywgKCkgPT4ge1xuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIHNhbWUgb2JqZWN0IGlmIGl0IGlzIG5vdCBhbiBvYmplY3RcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgc2FtZSBvYmplY3Qgd2hlbiB0aGUgaW5wdXQgaXMgbm90IGFuIG9iamVjdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gMTIzO1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVtb3ZlVW5kZWZpbmVkVmFsdWVzKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoaW5wdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhbiBvYmplY3Qgd2l0aG91dCB1bmRlZmluZWQgdmFsdWVzIGlmIGFsbCB2YWx1ZXMgYXJlIGRlZmluZWRcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhbiBvYmplY3Qgd2l0aG91dCB1bmRlZmluZWQgdmFsdWVzIHdoZW4gYWxsIHZhbHVlcyBhcmUgZGVmaW5lZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0geyBhOiAxLCBiOiAnaGVsbG8nLCBjOiB0cnVlIH07XG4gICAgICBjb25zdCByZXN1bHQgPSByZW1vdmVVbmRlZmluZWRWYWx1ZXMoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGFuIG9iamVjdCB3aXRob3V0IHVuZGVmaW5lZCB2YWx1ZXMgaWYgc29tZSB2YWx1ZXMgYXJlIGRlZmluZWRcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhbiBvYmplY3Qgd2l0aG91dCB1bmRlZmluZWQgdmFsdWVzIHdoZW4gc29tZSB2YWx1ZXMgYXJlIGRlZmluZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IHsgYTogMSwgYjogdW5kZWZpbmVkLCBjOiB0cnVlIH07XG4gICAgICBjb25zdCBleHBlY3RlZCA9IHsgYTogMSwgYzogdHJ1ZSB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVtb3ZlVW5kZWZpbmVkVmFsdWVzKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhbiBlbXB0eSBvYmplY3QgaWYgdGhlIGlucHV0IGlzIGFuIGVtcHR5IG9iamVjdFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIGVtcHR5IG9iamVjdCB3aGVuIHRoZSBpbnB1dCBpcyBhbiBlbXB0eSBvYmplY3QnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IHt9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVtb3ZlVW5kZWZpbmVkVmFsdWVzKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe30pO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBudWxsIGlmIHRoZSBpbnB1dCBpcyBudWxsXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gbnVsbCB3aGVuIHRoZSBpbnB1dCBpcyBudWxsJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSBudWxsO1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVtb3ZlVW5kZWZpbmVkVmFsdWVzKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmVOdWxsKCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHVuZGVmaW5lZCBpZiB0aGUgaW5wdXQgaXMgdW5kZWZpbmVkXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdW5kZWZpbmVkIHdoZW4gdGhlIGlucHV0IGlzIHVuZGVmaW5lZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gdW5kZWZpbmVkO1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVtb3ZlVW5kZWZpbmVkVmFsdWVzKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmVVbmRlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0IHdpdGhvdXQgdW5kZWZpbmVkIHZhbHVlcyBpZiBzb21lIG5lc3RlZCB2YWx1ZXMgYXJlIHVuZGVmaW5lZFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIG9iamVjdCB3aXRob3V0IHVuZGVmaW5lZCB2YWx1ZXMgd2hlbiBzb21lIG5lc3RlZCB2YWx1ZXMgYXJlIHVuZGVmaW5lZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0geyBhOiB7IGI6IDEsIGM6IHVuZGVmaW5lZCB9LCBkOiAyIH07XG4gICAgICBjb25zdCBleHBlY3RlZCA9IHsgYTogeyBiOiAxIH0sIGQ6IDIgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlbW92ZVVuZGVmaW5lZFZhbHVlcyhpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0IHdpdGhvdXQgdW5kZWZpbmVkIHZhbHVlcyBpZiBzb21lIG5lc3RlZCB2YWx1ZXMgYXJlIG51bGxcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhbiBvYmplY3Qgd2l0aG91dCB1bmRlZmluZWQgdmFsdWVzIHdoZW4gc29tZSBuZXN0ZWQgdmFsdWVzIGFyZSBudWxsJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSB7IGE6IHsgYjogMSwgYzogbnVsbCB9LCBkOiAyIH07XG4gICAgICBjb25zdCBleHBlY3RlZCA9IHsgYTogeyBiOiAxLCBjOiBudWxsIH0sIGQ6IDIgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlbW92ZVVuZGVmaW5lZFZhbHVlcyhpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0IHdpdGhvdXQgdW5kZWZpbmVkIHZhbHVlcyBpZiBzb21lIG5lc3RlZCB2YWx1ZXMgYXJlIGVtcHR5IHN0cmluZ3NcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhbiBvYmplY3Qgd2l0aG91dCB1bmRlZmluZWQgdmFsdWVzIHdoZW4gc29tZSBuZXN0ZWQgdmFsdWVzIGFyZSBlbXB0eSBzdHJpbmdzJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSB7IGE6IHsgYjogMSwgYzogJycgfSwgZDogMiB9O1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSB7IGE6IHsgYjogMSwgYzogJycgfSwgZDogMiB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVtb3ZlVW5kZWZpbmVkVmFsdWVzKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhbiBvYmplY3Qgd2l0aG91dCB1bmRlZmluZWQgdmFsdWVzIGlmIHNvbWUgbmVzdGVkIHZhbHVlcyBhcmUgZmFsc2VcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhbiBvYmplY3Qgd2l0aG91dCB1bmRlZmluZWQgdmFsdWVzIHdoZW4gc29tZSBuZXN0ZWQgdmFsdWVzIGFyZSBmYWxzZScsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0geyBhOiB7IGI6IDEsIGM6IGZhbHNlIH0sIGQ6IDIgfTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkID0geyBhOiB7IGI6IDEsIGM6IGZhbHNlIH0sIGQ6IDIgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlbW92ZVVuZGVmaW5lZFZhbHVlcyhpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0IHdpdGhvdXQgdW5kZWZpbmVkIHZhbHVlcyBpZiBzb21lIG5lc3RlZCB2YWx1ZXMgYXJlIHplcm9cbiAgICBpdCgnc2hvdWxkIHJldHVybiBhbiBvYmplY3Qgd2l0aG91dCB1bmRlZmluZWQgdmFsdWVzIHdoZW4gc29tZSBuZXN0ZWQgdmFsdWVzIGFyZSB6ZXJvJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSB7IGE6IHsgYjogMSwgYzogMCB9LCBkOiAyIH07XG4gICAgICBjb25zdCBleHBlY3RlZCA9IHsgYTogeyBiOiAxLCBjOiAwIH0sIGQ6IDIgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlbW92ZVVuZGVmaW5lZFZhbHVlcyhpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0IHdpdGhvdXQgdW5kZWZpbmVkIHZhbHVlcyBpZiBzb21lIG5lc3RlZCB2YWx1ZXMgYXJlIE5hTlxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIG9iamVjdCB3aXRob3V0IHVuZGVmaW5lZCB2YWx1ZXMgd2hlbiBzb21lIG5lc3RlZCB2YWx1ZXMgYXJlIE5hTicsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0geyBhOiB7IGI6IDEsIGM6IE5hTiB9LCBkOiAyIH07XG4gICAgICBjb25zdCBleHBlY3RlZCA9IHsgYTogeyBiOiAxLCBjOiBOYU4gfSwgZDogMiB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVtb3ZlVW5kZWZpbmVkVmFsdWVzKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncmVtb3ZlTnVsbFZhbHVlcycsICgpID0+IHtcbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiBjb3JyZWN0bHkgaGFuZGxlcyBhbiBlbXB0eSBvYmplY3QgYXMgaW5wdXRcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhbiBlbXB0eSBvYmplY3Qgd2hlbiBpbnB1dCBpcyBhbiBlbXB0eSBvYmplY3QnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IHt9O1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSB7fTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlbW92ZU51bGxWYWx1ZXMoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiBjb3JyZWN0bHkgaGFuZGxlcyBhbiBvYmplY3Qgd2l0aCBubyBudWxsIHZhbHVlc1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBzYW1lIG9iamVjdCB3aGVuIGlucHV0IGhhcyBubyBudWxsIHZhbHVlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0geyBhOiAxLCBiOiAnaGVsbG8nLCBjOiBbMSwgMiwgM10gfTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkID0geyBhOiAxLCBiOiAnaGVsbG8nLCBjOiBbMSwgMiwgM10gfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlbW92ZU51bGxWYWx1ZXMoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiBjb3JyZWN0bHkgaGFuZGxlcyBudWxsIGFzIGlucHV0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gbnVsbCB3aGVuIGlucHV0IGlzIG51bGwnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IG51bGw7XG4gICAgICBjb25zdCBleHBlY3RlZCA9IG51bGw7XG4gICAgICBjb25zdCByZXN1bHQgPSByZW1vdmVOdWxsVmFsdWVzKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gY29ycmVjdGx5IGhhbmRsZXMgdW5kZWZpbmVkIGFzIGlucHV0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdW5kZWZpbmVkIHdoZW4gaW5wdXQgaXMgdW5kZWZpbmVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBleHBlY3RlZCA9IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlbW92ZU51bGxWYWx1ZXMoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiBjb3JyZWN0bHkgaGFuZGxlcyBhIHN0cmluZyBhcyBpbnB1dFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHN0cmluZyB3aGVuIGlucHV0IGlzIGEgc3RyaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSAnaGVsbG8nO1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSAnaGVsbG8nO1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVtb3ZlTnVsbFZhbHVlcyhpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseSBoYW5kbGVzIGEgbnVtYmVyIGFzIGlucHV0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIHNhbWUgbnVtYmVyIHdoZW4gaW5wdXQgaXMgYSBudW1iZXInLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IDEyMztcbiAgICAgIGNvbnN0IGV4cGVjdGVkID0gMTIzO1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVtb3ZlTnVsbFZhbHVlcyhpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseSBoYW5kbGVzIGFuIGFycmF5IGFzIGlucHV0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIHNhbWUgYXJyYXkgd2hlbiBpbnB1dCBpcyBhbiBhcnJheScsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gWzEsIDIsIDNdO1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSB7ICcwJzogMSwgJzEnOiAyLCAnMic6IDMgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlbW92ZU51bGxWYWx1ZXMoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiBjb3JyZWN0bHkgaGFuZGxlcyBhbiBvYmplY3Qgd2l0aCBvbmx5IG51bGwgdmFsdWVzXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gZW1wdHkgb2JqZWN0IHdoZW4gaW5wdXQgaGFzIG9ubHkgbnVsbCB2YWx1ZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IHsgYTogbnVsbCwgYjogbnVsbCwgYzogbnVsbCB9O1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSB7fTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlbW92ZU51bGxWYWx1ZXMoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiBjb3JyZWN0bHkgaGFuZGxlcyBhbiBvYmplY3Qgd2l0aCBuZXN0ZWQgbnVsbCB2YWx1ZXNcbiAgICBpdCgnc2hvdWxkIHJlbW92ZSBuZXN0ZWQgbnVsbCB2YWx1ZXMgZnJvbSB0aGUgb2JqZWN0JywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSB7IGE6IHsgYjogbnVsbCB9LCBjOiB7IGQ6IHsgZTogbnVsbCB9IH0gfTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkID0geyBhOiB7fSwgYzogeyBkOiB7fSB9IH07XG4gICAgICBjb25zdCByZXN1bHQgPSByZW1vdmVOdWxsVmFsdWVzKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLm5vdC50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseSBoYW5kbGVzIGFuIG9iamVjdCB3aXRoIG5lc3RlZCBub24tbnVsbCB2YWx1ZXNcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgc2FtZSBvYmplY3Qgd2hlbiBpbnB1dCBoYXMgbmVzdGVkIG5vbi1udWxsIHZhbHVlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0geyBhOiB7IGI6IDEgfSwgYzogeyBkOiB7IGU6ICdoZWxsbycgfSB9IH07XG4gICAgICBjb25zdCBleHBlY3RlZCA9IHsgYTogeyBiOiAxIH0sIGM6IHsgZDogeyBlOiAnaGVsbG8nIH0gfSB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVtb3ZlTnVsbFZhbHVlcyhpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseSBoYW5kbGVzIGFuIG9iamVjdCB3aXRoIG1peGVkIG5lc3RlZCBudWxsIGFuZCBub24tbnVsbCB2YWx1ZXNcbiAgICBpdCgnc2hvdWxkIHJlbW92ZSBuZXN0ZWQgbnVsbCB2YWx1ZXMgYW5kIGtlZXAgbm9uLW51bGwgdmFsdWVzIGluIHRoZSBvYmplY3QnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IHsgYTogeyBiOiBudWxsLCBjOiAxIH0sIGQ6IHsgZTogbnVsbCwgZjogJ2hlbGxvJyB9IH07XG4gICAgICBjb25zdCBleHBlY3RlZCA9IHsgYTogeyBjOiAxIH0sIGQ6IHsgZjogJ2hlbGxvJyB9IH07XG4gICAgICBjb25zdCByZXN1bHQgPSByZW1vdmVOdWxsVmFsdWVzKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLm5vdC50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseSBoYW5kbGVzIGFuIG9iamVjdCB3aXRoIG51bGwgdmFsdWVzIGFuZCBmYWxzeSBub24tbnVsbCB2YWx1ZXNcbiAgICBpdCgnc2hvdWxkIHJlbW92ZSBudWxsIHZhbHVlcyBhbmQga2VlcCBmYWxzeSBub24tbnVsbCB2YWx1ZXMgaW4gdGhlIG9iamVjdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0geyBhOiBudWxsLCBiOiBmYWxzZSwgYzogMCwgZDogJycgfTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkID0geyBiOiBmYWxzZSwgYzogMCwgZDogJycgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlbW92ZU51bGxWYWx1ZXMoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZW1vdmVVbmRlZmluZWRBbmROdWxsVmFsdWVzJywgKCkgPT4ge1xuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIHNhbWUgb2JqZWN0IHdoZW4gcGFzc2VkIGFuIG9iamVjdCB3aXRoIGRlZmluZWQgYW5kIG5vdCBudWxsIHZhbHVlc1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBzYW1lIG9iamVjdCB3aGVuIHBhc3NlZCBhbiBvYmplY3Qgd2l0aCBkZWZpbmVkIGFuZCBub3QgbnVsbCB2YWx1ZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvYmogPSB7IGE6IDEsIGI6ICd0ZXN0JywgYzogdHJ1ZSB9O1xuICAgICAgZXhwZWN0KHJlbW92ZVVuZGVmaW5lZEFuZE51bGxWYWx1ZXMob2JqKSkudG9FcXVhbChvYmopO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgb2JqZWN0IHdpdGhvdXQgbnVsbCB2YWx1ZXMgd2hlbiBwYXNzZWQgYW4gb2JqZWN0IHdpdGggZGVmaW5lZCBhbmQgbnVsbCB2YWx1ZXNcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgb2JqZWN0IHdpdGhvdXQgbnVsbCB2YWx1ZXMgd2hlbiBwYXNzZWQgYW4gb2JqZWN0IHdpdGggZGVmaW5lZCBhbmQgbnVsbCB2YWx1ZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvYmogPSB7IGE6IDEsIGI6IG51bGwsIGM6ICd0ZXN0JywgZDogbnVsbCB9O1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSB7IGE6IDEsIGM6ICd0ZXN0JyB9O1xuICAgICAgZXhwZWN0KHJlbW92ZVVuZGVmaW5lZEFuZE51bGxWYWx1ZXMob2JqKSkudG9FcXVhbChleHBlY3RlZCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGFuIGVtcHR5IG9iamVjdCB3aGVuIHBhc3NlZCBhbiBlbXB0eSBvYmplY3RcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhbiBlbXB0eSBvYmplY3Qgd2hlbiBwYXNzZWQgYW4gZW1wdHkgb2JqZWN0JywgKCkgPT4ge1xuICAgICAgY29uc3Qgb2JqID0ge307XG4gICAgICBleHBlY3QocmVtb3ZlVW5kZWZpbmVkQW5kTnVsbFZhbHVlcyhvYmopKS50b0VxdWFsKHt9KTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIG9iamVjdCB3aXRob3V0IHVuZGVmaW5lZCBhbmQgbnVsbCB2YWx1ZXMgd2hlbiBwYXNzZWQgYW4gb2JqZWN0IHdpdGggdW5kZWZpbmVkIGFuZCBudWxsIHZhbHVlc1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBvYmplY3Qgd2l0aG91dCB1bmRlZmluZWQgYW5kIG51bGwgdmFsdWVzIHdoZW4gcGFzc2VkIGFuIG9iamVjdCB3aXRoIHVuZGVmaW5lZCBhbmQgbnVsbCB2YWx1ZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvYmogPSB7IGE6IDEsIGI6IHVuZGVmaW5lZCwgYzogJ3Rlc3QnLCBkOiBudWxsIH07XG4gICAgICBjb25zdCBleHBlY3RlZCA9IHsgYTogMSwgYzogJ3Rlc3QnIH07XG4gICAgICBleHBlY3QocmVtb3ZlVW5kZWZpbmVkQW5kTnVsbFZhbHVlcyhvYmopKS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIHNhbWUgdmFsdWUgd2hlbiBwYXNzZWQgYSBub24tb2JqZWN0IHZhbHVlXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUgd2hlbiBwYXNzZWQgYSBub24tb2JqZWN0IHZhbHVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSAxMjM7XG4gICAgICBleHBlY3QocmVtb3ZlVW5kZWZpbmVkQW5kTnVsbFZhbHVlcyh2YWx1ZSkpLnRvRXF1YWwodmFsdWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgc2FtZSBvYmplY3Qgd2l0aCBuZXN0ZWQgZGVmaW5lZCBhbmQgbm90IG51bGwgdmFsdWVzIHdoZW4gcGFzc2VkIGFuIG9iamVjdCB3aXRoIG5lc3RlZCBwcm9wZXJ0aWVzIGNvbnRhaW5pbmcgZGVmaW5lZCBhbmQgbm90IG51bGwgdmFsdWVzXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIHNhbWUgb2JqZWN0IHdpdGggbmVzdGVkIGRlZmluZWQgYW5kIG5vdCBudWxsIHZhbHVlcyB3aGVuIHBhc3NlZCBhbiBvYmplY3Qgd2l0aCBuZXN0ZWQgcHJvcGVydGllcyBjb250YWluaW5nIGRlZmluZWQgYW5kIG5vdCBudWxsIHZhbHVlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IG9iaiA9IHsgYTogMSwgYjogeyBjOiAndGVzdCcsIGQ6IHRydWUgfSwgZTogJ3Rlc3QnIH07XG4gICAgICBleHBlY3QocmVtb3ZlVW5kZWZpbmVkQW5kTnVsbFZhbHVlcyhvYmopKS50b0VxdWFsKG9iaik7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBzYW1lIG9iamVjdCB3aXRoIHByb3BlcnRpZXMgY29udGFpbmluZyBkZWZpbmVkIGFuZCBub3QgbnVsbCB2YWx1ZXMgd2hlbiBwYXNzZWQgYW4gb2JqZWN0IHdpdGggcHJvcGVydGllcyBjb250YWluaW5nIGRlZmluZWQgYW5kIG5vdCBudWxsIHZhbHVlc1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBzYW1lIG9iamVjdCB3aXRoIHByb3BlcnRpZXMgY29udGFpbmluZyBkZWZpbmVkIGFuZCBub3QgbnVsbCB2YWx1ZXMgd2hlbiBwYXNzZWQgYW4gb2JqZWN0IHdpdGggcHJvcGVydGllcyBjb250YWluaW5nIGRlZmluZWQgYW5kIG5vdCBudWxsIHZhbHVlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IG9iaiA9IHsgYTogMSwgYjogJ3Rlc3QnLCBjOiB0cnVlIH07XG4gICAgICBleHBlY3QocmVtb3ZlVW5kZWZpbmVkQW5kTnVsbFZhbHVlcyhvYmopKS50b0VxdWFsKG9iaik7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBvYmplY3Qgd2l0aG91dCBudWxsIHZhbHVlcyB3aGVuIHBhc3NlZCBhbiBvYmplY3Qgd2l0aCBwcm9wZXJ0aWVzIGNvbnRhaW5pbmcgZGVmaW5lZCBhbmQgbnVsbCB2YWx1ZXNcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgb2JqZWN0IHdpdGhvdXQgbnVsbCB2YWx1ZXMgd2hlbiBwYXNzZWQgYW4gb2JqZWN0IHdpdGggcHJvcGVydGllcyBjb250YWluaW5nIGRlZmluZWQgYW5kIG51bGwgdmFsdWVzJywgKCkgPT4ge1xuICAgICAgY29uc3Qgb2JqID0geyBhOiAxLCBiOiBudWxsLCBjOiAndGVzdCcsIGQ6IG51bGwgfTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkID0geyBhOiAxLCBjOiAndGVzdCcgfTtcbiAgICAgIGV4cGVjdChyZW1vdmVVbmRlZmluZWRBbmROdWxsVmFsdWVzKG9iaikpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncmVtb3ZlVW5kZWZpbmVkQW5kTnVsbEFuZEVtcHR5VmFsdWVzJywgKCkgPT4ge1xuICAgIC8vIFRPRE86IE5FRUQgVE8gRklYIFRISVMgVEVTVFNcbiAgICAvLyAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBzYW1lIG9iamVjdCB3aGVuIGFsbCB2YWx1ZXMgYXJlIGRlZmluZWQsIG5vdCBudWxsLCBhbmQgbm90IGVtcHR5XG4gICAgLy8gaXQoJ3Nob3VsZCByZXR1cm4gdGhlIHNhbWUgb2JqZWN0IHdoZW4gYWxsIHZhbHVlcyBhcmUgZGVmaW5lZCwgbm90IG51bGwsIGFuZCBub3QgZW1wdHknLCAoKSA9PiB7XG4gICAgLy8gICBjb25zdCBvYmogPSB7XG4gICAgLy8gICAgIHByb3AxOiAndmFsdWUxJyxcbiAgICAvLyAgICAgcHJvcDI6IDEyMyxcbiAgICAvLyAgICAgcHJvcDM6IFsxLCAyLCAzXSxcbiAgICAvLyAgICAgcHJvcDQ6IHsgbmVzdGVkUHJvcDogJ25lc3RlZFZhbHVlJyB9LFxuICAgIC8vICAgfTtcbiAgICAvLyAgIGV4cGVjdChyZW1vdmVVbmRlZmluZWRBbmROdWxsQW5kRW1wdHlWYWx1ZXMob2JqKSkudG9FcXVhbChvYmopO1xuICAgIC8vIH0pO1xuXG4gICAgLy8gLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgc2FtZSBvYmplY3Qgd2hlbiBhbGwgdmFsdWVzIGFyZSBkZWZpbmVkIGFuZCBub3QgbnVsbFxuICAgIC8vIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBzYW1lIG9iamVjdCB3aGVuIGFsbCB2YWx1ZXMgYXJlIGRlZmluZWQgYW5kIG5vdCBudWxsJywgKCkgPT4ge1xuICAgIC8vICAgY29uc3Qgb2JqID0ge1xuICAgIC8vICAgICBwcm9wMTogJ3ZhbHVlMScsXG4gICAgLy8gICAgIHByb3AyOiAxMjMsXG4gICAgLy8gICAgIHByb3AzOiBbMSwgMiwgM10sXG4gICAgLy8gICAgIHByb3A0OiB7IG5lc3RlZFByb3A6ICduZXN0ZWRWYWx1ZScgfSxcbiAgICAvLyAgIH07XG4gICAgLy8gICBleHBlY3QocmVtb3ZlVW5kZWZpbmVkQW5kTnVsbEFuZEVtcHR5VmFsdWVzKG9iaikpLnRvRXF1YWwob2JqKTtcbiAgICAvLyB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYW4gZW1wdHkgb2JqZWN0IHdoZW4gdGhlIGlucHV0IGlzIGFuIGVtcHR5IG9iamVjdFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIGVtcHR5IG9iamVjdCB3aGVuIHRoZSBpbnB1dCBpcyBhbiBlbXB0eSBvYmplY3QnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvYmogPSB7fTtcbiAgICAgIGV4cGVjdChyZW1vdmVVbmRlZmluZWRBbmROdWxsQW5kRW1wdHlWYWx1ZXMob2JqKSkudG9FcXVhbCh7fSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIG51bGwgd2hlbiB0aGUgaW5wdXQgaXMgbnVsbFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIG51bGwgd2hlbiB0aGUgaW5wdXQgaXMgbnVsbCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG9iaiA9IG51bGw7XG4gICAgICBleHBlY3QocmVtb3ZlVW5kZWZpbmVkQW5kTnVsbEFuZEVtcHR5VmFsdWVzKG9iaikpLnRvQmVOdWxsKCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHVuZGVmaW5lZCB3aGVuIHRoZSBpbnB1dCBpcyB1bmRlZmluZWRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB1bmRlZmluZWQgd2hlbiB0aGUgaW5wdXQgaXMgdW5kZWZpbmVkJywgKCkgPT4ge1xuICAgICAgY29uc3Qgb2JqID0gdW5kZWZpbmVkO1xuICAgICAgZXhwZWN0KHJlbW92ZVVuZGVmaW5lZEFuZE51bGxBbmRFbXB0eVZhbHVlcyhvYmopKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGFuIGVtcHR5IG9iamVjdCB3aGVuIHRoZSBpbnB1dCBvYmplY3QgaGFzIG9ubHkgZW1wdHkgdmFsdWVzXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gZW1wdHkgb2JqZWN0IHdoZW4gdGhlIGlucHV0IG9iamVjdCBoYXMgb25seSBlbXB0eSB2YWx1ZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvYmogPSB7XG4gICAgICAgIHByb3AxOiAnJyxcbiAgICAgICAgcHJvcDI6ICcgICAgJyxcbiAgICAgICAgcHJvcDM6IFtdLFxuICAgICAgICBwcm9wNDoge30sXG4gICAgICB9O1xuICAgICAgZXhwZWN0KHJlbW92ZVVuZGVmaW5lZEFuZE51bGxBbmRFbXB0eVZhbHVlcyhvYmopKS50b0VxdWFsKHsgcHJvcDI6ICcgICAgJyB9KTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYSBuZXcgb2JqZWN0IGFuZCBkb2VzIG5vdCBtb2RpZnkgdGhlIG9yaWdpbmFsIG9iamVjdFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgbmV3IG9iamVjdCBhbmQgbm90IG1vZGlmeSB0aGUgb3JpZ2luYWwgb2JqZWN0JywgKCkgPT4ge1xuICAgICAgY29uc3Qgb2JqID0ge1xuICAgICAgICBwcm9wMTogJ3ZhbHVlMScsXG4gICAgICAgIHByb3AyOiBudWxsLFxuICAgICAgICBwcm9wMzogJycsXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVtb3ZlVW5kZWZpbmVkQW5kTnVsbEFuZEVtcHR5VmFsdWVzKG9iaik7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHsgcHJvcDE6ICd2YWx1ZTEnIH0pO1xuICAgICAgZXhwZWN0KHJlc3VsdCkubm90LnRvQmUob2JqKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2ZsYXR0ZW5NYXAnLCAoKSA9PiB7XG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgaW5wdXQgaWYgaXQgaXMgbm90IGFuIGFycmF5IG9yIG9iamVjdFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBpbnB1dCB3aGVuIGl0IGlzIG5vdCBhbiBhcnJheSBvciBvYmplY3QnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IDU7XG4gICAgICBjb25zdCByZXN1bHQgPSBmbGF0dGVuTWFwKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoaW5wdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhIGZsYXR0ZW5lZCBhcnJheSBpZiB0aGUgaW5wdXQgaXMgYW4gYXJyYXlcbiAgICAvLyBPbmx5IDEgbGV2ZWwgb2YgZmxhdHRlbmluZyBpcyBwZXJmb3JtZWRcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhIGZsYXR0ZW5lZCBhcnJheSB3aGVuIHRoZSBpbnB1dCBpcyBhbiBhcnJheScsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gWzEsIFsyLCAzXSwgWzQsIFs1LCA2XV1dO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZmxhdHRlbk1hcChpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFsxLCAyLCAzLCA0LCBbNSwgNl1dKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYSBmbGF0dGVuZWQgYXJyYXkgaWYgdGhlIGlucHV0IGlzIGFuIG9iamVjdCB3aXRoIGFycmF5IHZhbHVlc1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgZmxhdHRlbmVkIGFycmF5IHdoZW4gdGhlIGlucHV0IGlzIGFuIG9iamVjdCB3aXRoIGFycmF5IHZhbHVlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0geyBhOiBbMSwgMl0sIGI6IFszLCA0XSB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZmxhdHRlbk1hcChpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFsxLCAyLCAzLCA0XSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGFuIGVtcHR5IGFycmF5IGlmIHRoZSBpbnB1dCBpcyBhbiBlbXB0eSBhcnJheVxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIGVtcHR5IGFycmF5IHdoZW4gdGhlIGlucHV0IGlzIGFuIGVtcHR5IGFycmF5JywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSBbXTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZsYXR0ZW5NYXAoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChbXSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGFuIGVtcHR5IGNvbGxlY3Rpb24gaWYgdGhlIGlucHV0IGlzIGFuIGVtcHR5IG9iamVjdFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIGVtcHR5IGNvbGxlY3Rpb24gd2hlbiB0aGUgaW5wdXQgaXMgYW4gZW1wdHkgb2JqZWN0JywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSB7fTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZsYXR0ZW5NYXAoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChbXSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGFuIGFycmF5IHdpdGggbnVsbCB2YWx1ZSBpZiB0aGUgaW5wdXQgaXMgYW4gYXJyYXkgd2l0aCBudWxsIHZhbHVlXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gYXJyYXkgd2l0aCBudWxsIHZhbHVlIHdoZW4gdGhlIGlucHV0IGlzIGFuIGFycmF5IHdpdGggbnVsbCB2YWx1ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gW251bGxdO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZmxhdHRlbk1hcChpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFtudWxsXSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGFuIG9iamVjdCB3aXRoIG51bGwgdmFsdWUgaWYgdGhlIGlucHV0IGlzIGFuIG9iamVjdCB3aXRoIG51bGwgdmFsdWVcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhbiBvYmplY3Qgd2l0aCBudWxsIHZhbHVlIHdoZW4gdGhlIGlucHV0IGlzIGFuIG9iamVjdCB3aXRoIG51bGwgdmFsdWUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IHsgYTogbnVsbCB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZmxhdHRlbk1hcChpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFtudWxsXSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGFuIGFycmF5IHdpdGggdW5kZWZpbmVkIHZhbHVlIGlmIHRoZSBpbnB1dCBpcyBhbiBhcnJheSB3aXRoIHVuZGVmaW5lZCB2YWx1ZVxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIGFycmF5IHdpdGggdW5kZWZpbmVkIHZhbHVlIHdoZW4gdGhlIGlucHV0IGlzIGFuIGFycmF5IHdpdGggdW5kZWZpbmVkIHZhbHVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSBbdW5kZWZpbmVkXTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZsYXR0ZW5NYXAoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChbdW5kZWZpbmVkXSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGFuIG9iamVjdCB3aXRoIHVuZGVmaW5lZCB2YWx1ZSBpZiB0aGUgaW5wdXQgaXMgYW4gb2JqZWN0IHdpdGggdW5kZWZpbmVkIHZhbHVlXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYSBjb2xsZWN0aW9uIHdpdGggdW5kZWZpbmVkIHZhbHVlIHdoZW4gdGhlIGlucHV0IGlzIGFuIG9iamVjdCB3aXRoIHVuZGVmaW5lZCB2YWx1ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0geyBhOiB1bmRlZmluZWQgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZsYXR0ZW5NYXAoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChbdW5kZWZpbmVkXSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGFuIGFycmF5IHdpdGggTmFOIHZhbHVlIGlmIHRoZSBpbnB1dCBpcyBhbiBhcnJheSB3aXRoIE5hTiB2YWx1ZVxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIGFycmF5IHdpdGggTmFOIHZhbHVlIHdoZW4gdGhlIGlucHV0IGlzIGFuIGFycmF5IHdpdGggTmFOIHZhbHVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSBbTmFOXTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZsYXR0ZW5NYXAoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChbTmFOXSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGFuIG9iamVjdCB3aXRoIE5hTiB2YWx1ZSBpZiB0aGUgaW5wdXQgaXMgYW4gb2JqZWN0IHdpdGggTmFOIHZhbHVlXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYSBjb2xsZWN0aW9uIHdpdGggTmFOIHZhbHVlIHdoZW4gdGhlIGlucHV0IGlzIGFuIG9iamVjdCB3aXRoIE5hTiB2YWx1ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0geyBhOiBOYU4gfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZsYXR0ZW5NYXAoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChbTmFOXSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGFuIGFycmF5IHdpdGggZW1wdHkgc3RyaW5nIHZhbHVlIGlmIHRoZSBpbnB1dCBpcyBhbiBhcnJheSB3aXRoIGVtcHR5IHN0cmluZyB2YWx1ZVxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIGFycmF5IHdpdGggZW1wdHkgc3RyaW5nIHZhbHVlIHdoZW4gdGhlIGlucHV0IGlzIGFuIGFycmF5IHdpdGggZW1wdHkgc3RyaW5nIHZhbHVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSBbJyddO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZmxhdHRlbk1hcChpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFsnJ10pO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhIGZsYXR0ZW5lZCBhcnJheSB3aXRoIHZhbHVlcyBvZiBkaWZmZXJlbnQgdHlwZXMgaWYgdGhlIGlucHV0IGlzIGFuIGFycmF5IHdpdGggdmFsdWVzIG9mIGRpZmZlcmVudCB0eXBlc1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgZmxhdHRlbmVkIGFycmF5IHdpdGggdmFsdWVzIG9mIGRpZmZlcmVudCB0eXBlcyB3aGVuIHRoZSBpbnB1dCBpcyBhbiBhcnJheSB3aXRoIHZhbHVlcyBvZiBkaWZmZXJlbnQgdHlwZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IFsxLCAndHdvJywgdHJ1ZSwgeyBuYW1lOiAnSm9obicgfV07XG4gICAgICBjb25zdCByZXN1bHQgPSBmbGF0dGVuTWFwKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoWzEsICd0d28nLCB0cnVlLCB7IG5hbWU6ICdKb2huJyB9XSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgZmxhdHRlbmVkIGNvbGxlY3Rpb24gd2l0aCB2YWx1ZXMgb2YgZGlmZmVyZW50IHR5cGVzIGlmIHRoZSBpbnB1dCBpcyBhbiBvYmplY3Qgd2l0aCB2YWx1ZXMgb2YgZGlmZmVyZW50IHR5cGVzXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYSBmbGF0dGVuZWQgY29sbGVjdGlvbiB3aXRoIHZhbHVlcyBvZiBkaWZmZXJlbnQgdHlwZXMgd2hlbiB0aGUgaW5wdXQgaXMgYW4gb2JqZWN0IHdpdGggdmFsdWVzIG9mIGRpZmZlcmVudCB0eXBlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0geyBuYW1lOiAnSm9obicsIGFnZTogMjUsIGlzU3R1ZGVudDogdHJ1ZSwgaG9iYmllczogWydyZWFkaW5nJywgJ3BhaW50aW5nJ10gfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZsYXR0ZW5NYXAoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChbJ0pvaG4nLCAyNSwgdHJ1ZSwgJ3JlYWRpbmcnLCAncGFpbnRpbmcnXSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgZmxhdHRlbmVkIGFycmF5IHdpdGggbmVzdGVkIGFycmF5cyBhbmQgb2JqZWN0cyBpZiB0aGUgaW5wdXQgaXMgYW4gYXJyYXkgd2l0aCBuZXN0ZWQgYXJyYXlzIGFuZCBvYmplY3RzXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYSBmbGF0dGVuZWQgYXJyYXkgd2l0aCBuZXN0ZWQgYXJyYXlzIGFuZCBvYmplY3RzIHdoZW4gdGhlIGlucHV0IGlzIGFuIGFycmF5IHdpdGggbmVzdGVkIGFycmF5cyBhbmQgb2JqZWN0cycsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gWzEsIFsyLCBbMywgNF1dLCB7IG5hbWU6ICdKb2huJywgYWdlOiAyNSB9XTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZsYXR0ZW5NYXAoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChbMSwgMiwgWzMsIDRdLCB7IG5hbWU6ICdKb2huJywgYWdlOiAyNSB9XSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgZmxhdHRlbmVkIGFycmF5IHdpdGggdmFsdWVzIG9mIGRpZmZlcmVudCB0eXBlcyBpZiB0aGUgaW5wdXQgaXMgYW4gYXJyYXkgd2l0aCB2YWx1ZXMgb2YgZGlmZmVyZW50IHR5cGVzXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYSBmbGF0dGVuZWQgYXJyYXkgd2l0aCB2YWx1ZXMgb2YgZGlmZmVyZW50IHR5cGVzIHdoZW4gdGhlIGlucHV0IGlzIGFuIGFycmF5IHdpdGggdmFsdWVzIG9mIGRpZmZlcmVudCB0eXBlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gWzEsICd0d28nLCB0cnVlLCB7IG5hbWU6ICdKb2huJyB9XTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZsYXR0ZW5NYXAoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChbMSwgJ3R3bycsIHRydWUsIHsgbmFtZTogJ0pvaG4nIH1dKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYSBmbGF0dGVuZWQgY29sbGVjdGlvbiB3aXRoIHZhbHVlcyBvZiBkaWZmZXJlbnQgdHlwZXMgaWYgdGhlIGlucHV0IGlzIGFuIG9iamVjdCB3aXRoIHZhbHVlcyBvZiBkaWZmZXJlbnQgdHlwZXNcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhIGZsYXR0ZW5lZCBjb2xsZWN0aW9uIHdpdGggdmFsdWVzIG9mIGRpZmZlcmVudCB0eXBlcyB3aGVuIHRoZSBpbnB1dCBpcyBhbiBvYmplY3Qgd2l0aCB2YWx1ZXMgb2YgZGlmZmVyZW50IHR5cGVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSB7IG5hbWU6ICdKb2huJywgYWdlOiAyNSwgaXNTdHVkZW50OiB0cnVlLCBob2JiaWVzOiBbJ3JlYWRpbmcnLCAncGFpbnRpbmcnXSB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZmxhdHRlbk1hcChpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFsnSm9obicsIDI1LCB0cnVlLCAncmVhZGluZycsICdwYWludGluZyddKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYSBmbGF0dGVuZWQgYXJyYXkgd2l0aCBuZXN0ZWQgYXJyYXlzIGFuZCBvYmplY3RzIGlmIHRoZSBpbnB1dCBpcyBhbiBhcnJheSB3aXRoIG5lc3RlZCBhcnJheXMgYW5kIG9iamVjdHNcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhIGZsYXR0ZW5lZCBhcnJheSB3aXRoIG5lc3RlZCBhcnJheXMgYW5kIG9iamVjdHMgd2hlbiB0aGUgaW5wdXQgaXMgYW4gYXJyYXkgd2l0aCBuZXN0ZWQgYXJyYXlzIGFuZCBvYmplY3RzJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSBbMSwgWzIsIFszLCA0XV0sIHsgbmFtZTogJ0pvaG4nLCBhZ2U6IDI1IH1dO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZmxhdHRlbk1hcChpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFsxLCAyLCBbMywgNF0sIHsgbmFtZTogJ0pvaG4nLCBhZ2U6IDI1IH1dKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldEV2ZW50VGltZScsICgpID0+IHtcbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgRGF0ZSBvYmplY3Qgd2hlbiB0aGUgbWVzc2FnZSBoYXMgYSB0aW1lc3RhbXAgcHJvcGVydHlcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhIERhdGUgb2JqZWN0IHdoZW4gdGhlIG1lc3NhZ2UgaGFzIGEgdGltZXN0YW1wIHByb3BlcnR5JywgKCkgPT4ge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IHtcbiAgICAgICAgdGltZXN0YW1wOiAnMjAyMi0wMS0wMVQwMDowMDowMFonLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEV2ZW50VGltZShtZXNzYWdlIGFzIGFueSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlSW5zdGFuY2VPZihEYXRlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYSBEYXRlIG9iamVjdCB3aGVuIHRoZSBtZXNzYWdlIGhhcyBhbiBvcmlnaW5hbFRpbWVzdGFtcCBwcm9wZXJ0eVxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgRGF0ZSBvYmplY3Qgd2hlbiB0aGUgbWVzc2FnZSBoYXMgYW4gb3JpZ2luYWxUaW1lc3RhbXAgcHJvcGVydHknLCAoKSA9PiB7XG4gICAgICBjb25zdCBtZXNzYWdlID0ge1xuICAgICAgICBvcmlnaW5hbFRpbWVzdGFtcDogJzIwMjItMDEtMDFUMDA6MDA6MDBaJyxcbiAgICAgIH07XG4gICAgICBjb25zdCByZXN1bHQgPSBnZXRFdmVudFRpbWUobWVzc2FnZSBhcyBhbnkpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZUluc3RhbmNlT2YoRGF0ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiB0aHJvd3MgYW4gSW5zdHJ1bWVudGF0aW9uRXJyb3Igd2hlbiB0aGUgbWVzc2FnZSBoYXMgbmVpdGhlciBhIHRpbWVzdGFtcCBub3IgYW4gb3JpZ2luYWxUaW1lc3RhbXAgcHJvcGVydHlcbiAgICBpdCgnc2hvdWxkIHRocm93IGFuIEluc3RydW1lbnRhdGlvbkVycm9yIHdoZW4gdGhlIG1lc3NhZ2UgaGFzIG5laXRoZXIgYSB0aW1lc3RhbXAgbm9yIGFuIG9yaWdpbmFsVGltZXN0YW1wIHByb3BlcnR5JywgKCkgPT4ge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IHt9O1xuICAgICAgZXhwZWN0KCgpID0+IGdldEV2ZW50VGltZShtZXNzYWdlIGFzIGFueSkpLnRvVGhyb3coSW5zdHJ1bWVudGF0aW9uRXJyb3IpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhbiBpbnZhbGlkIERhdGUgb2JqZWN0IHdoZW4gdGhlIG1lc3NhZ2UgaGFzIGFuIGludmFsaWQgdGltZXN0YW1wIHByb3BlcnR5XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gaW52YWxpZCBEYXRlIG9iamVjdCB3aGVuIHRoZSBtZXNzYWdlIGhhcyBhbiBpbnZhbGlkIHRpbWVzdGFtcCBwcm9wZXJ0eScsICgpID0+IHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSB7XG4gICAgICAgIHRpbWVzdGFtcDogJ2ludmFsaWQnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGV2ZW50VGltZSA9IGdldEV2ZW50VGltZShtZXNzYWdlIGFzIGFueSk7XG4gICAgICBleHBlY3QoZXZlbnRUaW1lKS50b0JlSW5zdGFuY2VPZihEYXRlKTtcbiAgICAgIGV4cGVjdChldmVudFRpbWUudG9TdHJpbmcoKSkudG9CZSgnSW52YWxpZCBEYXRlJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdiYXNlNjRDb252ZXJ0b3InLCAoKSA9PiB7XG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gY29ycmVjdGx5IGhhbmRsZXMgYW4gZW1wdHkgc3RyaW5nIGlucHV0IGFuZCByZXR1cm5zIGFuIGVtcHR5IGJhc2U2NCBzdHJpbmdcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhbiBlbXB0eSBiYXNlNjQgc3RyaW5nIHdoZW4gdGhlIGlucHV0IGlzIGFuIGVtcHR5IHN0cmluZycsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gJyc7XG4gICAgICBjb25zdCBleHBlY3RlZE91dHB1dCA9ICcnO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYmFzZTY0Q29udmVydG9yKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRPdXRwdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gY29ycmVjdGx5IGhhbmRsZXMgYSBzdHJpbmcgaW5wdXQgd2l0aCBub24tQVNDSUkgY2hhcmFjdGVycyBhbmQgY29udmVydHMgaXQgdG8gYmFzZTY0IGZvcm1hdFxuICAgIGl0KCdzaG91bGQgY29udmVydCBhIHN0cmluZyB3aXRoIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIHRvIGJhc2U2NCBmb3JtYXQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9ICfjgZPjgpPjgavjgaHjga8nO1xuICAgICAgY29uc3QgZXhwZWN0ZWRPdXRwdXQgPSAnNDRHVDQ0S1Q0NEdyNDRHaDQ0R3YnO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYmFzZTY0Q29udmVydG9yKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRPdXRwdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gY29ycmVjdGx5IGhhbmRsZXMgYSBzdHJpbmcgaW5wdXQgd2l0aCBzcGVjaWFsIGNoYXJhY3RlcnMgYW5kIGNvbnZlcnRzIGl0IHRvIGJhc2U2NCBmb3JtYXRcbiAgICBpdCgnc2hvdWxkIGNvbnZlcnQgYSBzdHJpbmcgd2l0aCBzcGVjaWFsIGNoYXJhY3RlcnMgdG8gYmFzZTY0IGZvcm1hdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gJyFAIyQlXiYqKCknO1xuICAgICAgY29uc3QgZXhwZWN0ZWRPdXRwdXQgPSAnSVVBakpDVmVKaW9vS1E9PSc7XG4gICAgICBjb25zdCByZXN1bHQgPSBiYXNlNjRDb252ZXJ0b3IoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZE91dHB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiBjb3JyZWN0bHkgaGFuZGxlcyBhIHN0cmluZyBpbnB1dCB3aXRoIHdoaXRlc3BhY2UgY2hhcmFjdGVycyBhbmQgY29udmVydHMgaXQgdG8gYmFzZTY0IGZvcm1hdFxuICAgIGl0KCdzaG91bGQgY29udmVydCBhIHN0cmluZyB3aXRoIHdoaXRlc3BhY2UgY2hhcmFjdGVycyB0byBiYXNlNjQgZm9ybWF0JywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSAnICAgSGVsbG8gV29ybGQgICAnO1xuICAgICAgY29uc3QgZXhwZWN0ZWRPdXRwdXQgPSAnSUNBZ1NHVnNiRzhnVjI5eWJHUWdJQ0E9JztcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGJhc2U2NENvbnZlcnRvcihpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkT3V0cHV0KTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseSBoYW5kbGVzIGEgc3RyaW5nIGlucHV0IHdpdGggbGluZSBicmVha3MgYW5kIGNvbnZlcnRzIGl0IHRvIGJhc2U2NCBmb3JtYXRcbiAgICBpdCgnc2hvdWxkIGNvbnZlcnQgYSBzdHJpbmcgd2l0aCBsaW5lIGJyZWFrcyB0byBiYXNlNjQgZm9ybWF0JywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSAnSGVsbG9cXG5Xb3JsZCc7XG4gICAgICBjb25zdCBleHBlY3RlZE91dHB1dCA9ICdTR1ZzYkc4S1YyOXliR1E9JztcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGJhc2U2NENvbnZlcnRvcihpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkT3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2lzVmFsaWRVcmwnLCAoKSA9PiB7XG4gICAgLy8gVGVzdHMgdGhhdCBhIHZhbGlkIFVSTCBzdHJpbmcgcmV0dXJucyBhIFVSTCBvYmplY3RcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhIFVSTCBvYmplY3Qgd2hlbiBnaXZlbiBhIHZhbGlkIFVSTCBzdHJpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCB1cmwgPSAnaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20nO1xuICAgICAgZXhwZWN0KGlzVmFsaWRVcmwodXJsKSkudG9CZUluc3RhbmNlT2YoVVJMKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgYSB2YWxpZCBVUkwgb2JqZWN0IHJldHVybnMgdGhlIHNhbWUgVVJMIG9iamVjdFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBzYW1lIFVSTCBvYmplY3Qgd2hlbiBnaXZlbiBhIHZhbGlkIFVSTCBvYmplY3QnLCAoKSA9PiB7XG4gICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKCdodHRwczovL3d3dy5leGFtcGxlLmNvbScpO1xuICAgICAgZXhwZWN0KGlzVmFsaWRVcmwodXJsKT8udG9KU09OKCkpLnRvQmUodXJsLnRvSlNPTigpKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgYSBVUkwgd2l0aCBxdWVyeSBwYXJhbWV0ZXJzIHJldHVybnMgYSBVUkwgb2JqZWN0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYSBVUkwgb2JqZWN0IHdoZW4gZ2l2ZW4gYSBVUkwgd2l0aCBxdWVyeSBwYXJhbWV0ZXJzJywgKCkgPT4ge1xuICAgICAgY29uc3QgdXJsID0gJ2h0dHBzOi8vd3d3LmV4YW1wbGUuY29tP3BhcmFtMT12YWx1ZTEmcGFyYW0yPXZhbHVlMic7XG4gICAgICBleHBlY3QoaXNWYWxpZFVybCh1cmwpKS50b0JlSW5zdGFuY2VPZihVUkwpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBhIFVSTCB3aXRoIGEgaGFzaCByZXR1cm5zIGEgVVJMIG9iamVjdFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgVVJMIG9iamVjdCB3aGVuIGdpdmVuIGEgVVJMIHdpdGggYSBoYXNoJywgKCkgPT4ge1xuICAgICAgY29uc3QgdXJsID0gJ2h0dHBzOi8vd3d3LmV4YW1wbGUuY29tI3NlY3Rpb24xJztcbiAgICAgIGV4cGVjdChpc1ZhbGlkVXJsKHVybCkpLnRvQmVJbnN0YW5jZU9mKFVSTCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGEgVVJMIHdpdGggYSBwb3J0IHJldHVybnMgYSBVUkwgb2JqZWN0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYSBVUkwgb2JqZWN0IHdoZW4gZ2l2ZW4gYSBVUkwgd2l0aCBhIHBvcnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB1cmwgPSAnaHR0cHM6Ly93d3cuZXhhbXBsZS5jb206ODA4MCc7XG4gICAgICBleHBlY3QoaXNWYWxpZFVybCh1cmwpKS50b0JlSW5zdGFuY2VPZihVUkwpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBhIFVSTCB3aXRoIGEgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIHJldHVybnMgYSBVUkwgb2JqZWN0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYSBVUkwgb2JqZWN0IHdoZW4gZ2l2ZW4gYSBVUkwgd2l0aCBhIHVzZXJuYW1lIGFuZCBwYXNzd29yZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHVybCA9ICdodHRwczovL3VzZXJuYW1lOnBhc3N3b3JkQGV4YW1wbGUuY29tJztcbiAgICAgIGV4cGVjdChpc1ZhbGlkVXJsKHVybCkpLnRvQmVJbnN0YW5jZU9mKFVSTCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGFuIGVtcHR5IHN0cmluZyByZXR1cm5zIG51bGxcbiAgICBpdCgnc2hvdWxkIHJldHVybiBudWxsIHdoZW4gZ2l2ZW4gYW4gZW1wdHkgc3RyaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgdXJsID0gJyc7XG4gICAgICBleHBlY3QoaXNWYWxpZFVybCh1cmwpKS50b0JlTnVsbCgpO1xuICAgIH0pO1xuXG4gICAgLy8gVGhlIHRlc3Qgb2JqZWN0aXZlIGlzIHRvIHZlcmlmeSB0aGF0IHRoZSBmdW5jdGlvbiAnaXNWYWxpZFVybCcgcmV0dXJucyBudWxsIHdoZW4gZ2l2ZW4gYW4gaW52YWxpZCBVUkwgc3RyaW5nLlxuICAgIGl0KCdzaG91bGQgcmV0dXJuIG51bGwgd2hlbiBnaXZlbiBhbiBpbnZhbGlkIFVSTCBzdHJpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCB1cmwgPSAnaW52YWxpZC11cmwnO1xuICAgICAgZXhwZWN0KGlzVmFsaWRVcmwodXJsKSkudG9CZU51bGwoKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgYW4gVVJMIHdpdGggYSBkaWZmZXJlbnQgcHJvdG9jb2wgcmV0dXJucyB2YWxpZCBvYmplY3RcbiAgICBpdCgnc2hvdWxkIHJldHVybiBVUkwgb2JqZWN0IHdoZW4gZ2l2ZW4gYSBVUkwgd2l0aCBhIGRpZmZlcmVudCBwcm90b2NvbCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHVybCA9ICdmdHA6Ly93d3cuZXhhbXBsZS5jb20nO1xuICAgICAgZXhwZWN0KGlzVmFsaWRVcmwodXJsKSkudG9CZUluc3RhbmNlT2YoVVJMKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgYW4gaW52YWxpZCBVUkwgd2l0aCBhbiBpbnZhbGlkIHBvcnQgcmV0dXJucyBudWxsXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gbnVsbCB3aGVuIGdpdmVuIGEgVVJMIHdpdGggYW4gaW52YWxpZCBwb3J0JywgKCkgPT4ge1xuICAgICAgY29uc3QgdXJsID0gJ2h0dHBzOi8vd3d3LmV4YW1wbGUuY29tOmFiYyc7XG4gICAgICBleHBlY3QoaXNWYWxpZFVybCh1cmwpKS50b0JlTnVsbCgpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBhIFVSTCB3aXRoIGludmFsaWQgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIHJldHVybnMgb2JqZWN0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gb2JqZWN0IHdoZW4gZ2l2ZW4gYSBVUkwgd2l0aCB1c2VybmFtZSBhbmQgcGFzc3dvcmQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB1cmwgPSAnaHR0cHM6Ly91c2VybmFtZTpwYXNzd29yZEBleGFtcGxlLmNvbSc7XG4gICAgICBleHBlY3QoaXNWYWxpZFVybCh1cmwpKS50b0JlSW5zdGFuY2VPZihVUkwpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBhIFVSTCB3aXRoIGEgc3ViZG9tYWluIHJldHVybnMgVVJMIG9iamVjdFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIG51bGwgd2hlbiBnaXZlbiBhIFVSTCB3aXRoIGFuIGludmFsaWQgc3ViZG9tYWluJywgKCkgPT4ge1xuICAgICAgY29uc3QgdXJsID0gJ2h0dHBzOi8vaW52YWxpZC5leGFtcGxlLmNvbSc7XG4gICAgICBleHBlY3QoaXNWYWxpZFVybCh1cmwpKS50b0JlSW5zdGFuY2VPZihVUkwpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBhIHZhbGlkIFVSTCBzdHJpbmcgd2l0aCBhIHBhdGggcmV0dXJucyBhIFVSTCBvYmplY3RcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhIFVSTCBvYmplY3Qgd2hlbiBnaXZlbiBhIHZhbGlkIFVSTCBzdHJpbmcgd2l0aCBhIHBhdGgnLCAoKSA9PiB7XG4gICAgICBjb25zdCB1cmwgPSAnaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vcGF0aCc7XG4gICAgICBleHBlY3QoaXNWYWxpZFVybCh1cmwpKS50b0JlSW5zdGFuY2VPZihVUkwpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBhIHZhbGlkIFVSTCBzdHJpbmcgd2l0aCBhIHN1YmRvbWFpbiByZXR1cm5zIGEgVVJMIG9iamVjdFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgVVJMIG9iamVjdCB3aGVuIGdpdmVuIGEgdmFsaWQgVVJMIHN0cmluZyB3aXRoIGEgc3ViZG9tYWluJywgKCkgPT4ge1xuICAgICAgY29uc3QgdXJsID0gJ2h0dHBzOi8vc3ViZG9tYWluLmV4YW1wbGUuY29tJztcbiAgICAgIGV4cGVjdChpc1ZhbGlkVXJsKHVybCkpLnRvQmVJbnN0YW5jZU9mKFVSTCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGEgdmFsaWQgVVJMIHN0cmluZyByZXR1cm5zIGEgVVJMIG9iamVjdFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgVVJMIG9iamVjdCB3aGVuIGdpdmVuIGEgdmFsaWQgVVJMIHN0cmluZycsICgpID0+IHtcbiAgICAgIGNvbnN0IHVybCA9ICdodHRwczovL3d3dy5leGFtcGxlLmNvbSc7XG4gICAgICBleHBlY3QoaXNWYWxpZFVybCh1cmwpKS50b0JlSW5zdGFuY2VPZihVUkwpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBhIHZhbGlkIFVSTCBzdHJpbmcgcmV0dXJucyBhIFVSTCBvYmplY3RcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhIFVSTCBvYmplY3Qgd2hlbiBnaXZlbiBhIHZhbGlkIFVSTCBzdHJpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCB1cmwgPSAnaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20nO1xuICAgICAgZXhwZWN0KGlzVmFsaWRVcmwodXJsKSkudG9CZUluc3RhbmNlT2YoVVJMKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3N0cmlwVHJhaWxpbmdTbGFzaCcsICgpID0+IHtcbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBzYW1lIHN0cmluZyBpZiBpdCBkb2VzIG5vdCBlbmQgd2l0aCAnLydcbiAgICBpdChcInNob3VsZCByZXR1cm4gdGhlIHNhbWUgc3RyaW5nIHdoZW4gaXQgZG9lcyBub3QgZW5kIHdpdGggJy8nXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gJ2V4YW1wbGUnO1xuICAgICAgY29uc3QgcmVzdWx0ID0gc3RyaXBUcmFpbGluZ1NsYXNoKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoaW5wdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmVtb3ZlcyB0aGUgdHJhaWxpbmcgJy8nIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIGl0XG4gICAgaXQoXCJzaG91bGQgcmVtb3ZlIHRoZSB0cmFpbGluZyAnLycgaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggaXRcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSAnZXhhbXBsZS8nO1xuICAgICAgY29uc3QgcmVzdWx0ID0gc3RyaXBUcmFpbGluZ1NsYXNoKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ2V4YW1wbGUnKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJlbW92ZXMgb25seSBvbmUgdHJhaWxpbmcgJy8nIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIG11bHRpcGxlXG4gICAgaXQoXCJzaG91bGQgcmVtb3ZlIG9ubHkgb25lIHRyYWlsaW5nICcvJyBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCBtdWx0aXBsZVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9ICdleGFtcGxlLy8nO1xuICAgICAgY29uc3QgcmVzdWx0ID0gc3RyaXBUcmFpbGluZ1NsYXNoKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ2V4YW1wbGUvJyk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBpZiB0aGUgaW5wdXQgaXMgYW4gZW1wdHkgc3RyaW5nXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nIGlmIHRoZSBpbnB1dCBpcyBhbiBlbXB0eSBzdHJpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9ICcnO1xuICAgICAgY29uc3QgcmVzdWx0ID0gc3RyaXBUcmFpbGluZ1NsYXNoKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJycpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBlbXB0eSBzdHJpbmcgaWYgaXQgY29udGFpbnMgb25seSAnLydcbiAgICBpdChcInNob3VsZCByZXR1cm4gZW1wdHkgc3RyaW5nIHdoZW4gaXQgY29udGFpbnMgb25seSAnLydcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSAnJztcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHN0cmlwVHJhaWxpbmdTbGFzaChpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIHNhbWUgc3RyaW5nIGlmIGl0IGRvZXMgbm90IGVuZCB3aXRoICcvJ1xuICAgIGl0KFwic2hvdWxkIHJldHVybiB0aGUgc2FtZSBzdHJpbmcgd2hlbiBpdCBkb2VzIG5vdCBlbmQgd2l0aCAnLydcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSAnZXhhbXBsZSc7XG4gICAgICBjb25zdCByZXN1bHQgPSBzdHJpcFRyYWlsaW5nU2xhc2goaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZShpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZW1vdmVzIHRoZSB0cmFpbGluZyBzbGFzaCBmcm9tIGEgc3RyaW5nIGlmIGl0IGV4aXN0c1xuICAgIGl0KCdzaG91bGQgcmVtb3ZlIHRoZSB0cmFpbGluZyBzbGFzaCB3aGVuIGl0IGV4aXN0cycsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gJ2V4YW1wbGUvJztcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHN0cmlwVHJhaWxpbmdTbGFzaChpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCdleGFtcGxlJyk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZW1vdmVzIHRoZSB0cmFpbGluZyBzbGFzaCBmcm9tIGEgc3RyaW5nIGlmIGl0IGV4aXN0c1xuICAgIGl0KCdzaG91bGQgcmVtb3ZlIHRoZSB0cmFpbGluZyBzbGFzaCB3aGVuIGl0IGV4aXN0cycsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gJ2V4YW1wbGUvJztcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHN0cmlwVHJhaWxpbmdTbGFzaChpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCdleGFtcGxlJyk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZW1vdmVzIHRyYWlsaW5nIHNsYXNoZXMgZnJvbSBhIHN0cmluZ1xuICAgIGl0KCdzaG91bGQgcmVtb3ZlIHRyYWlsaW5nIHNsYXNoZXMgd2hlbiB0aGV5IGV4aXN0JywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSAnZXhhbXBsZS8nO1xuICAgICAgY29uc3QgcmVzdWx0ID0gc3RyaXBUcmFpbGluZ1NsYXNoKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ2V4YW1wbGUnKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJlbW92ZXMgdGhlIHRyYWlsaW5nIHNsYXNoIGZyb20gYSBzdHJpbmcgaWYgaXQgZXhpc3RzXG4gICAgaXQoJ3Nob3VsZCByZW1vdmUgdGhlIHRyYWlsaW5nIHNsYXNoIHdoZW4gaXQgZXhpc3RzJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSAnZXhhbXBsZS8nO1xuICAgICAgY29uc3QgcmVzdWx0ID0gc3RyaXBUcmFpbGluZ1NsYXNoKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ2V4YW1wbGUnKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJlbW92ZXMgdGhlIHRyYWlsaW5nIHNsYXNoIGZyb20gYSBzdHJpbmcgaWYgaXQgZW5kcyB3aXRoICcvJ1xuICAgIGl0KFwic2hvdWxkIHJlbW92ZSB0aGUgdHJhaWxpbmcgc2xhc2ggd2hlbiB0aGUgc3RyaW5nIGVuZHMgd2l0aCAnLydcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSAnZXhhbXBsZS8nO1xuICAgICAgY29uc3QgcmVzdWx0ID0gc3RyaXBUcmFpbGluZ1NsYXNoKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ2V4YW1wbGUnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2lzUHJpbWl0aXZlJywgKCkgPT4ge1xuICAgIC8vIFRlc3RzIHRoYXQgaXNQcmltaXRpdmUgcmV0dXJucyB0cnVlIGZvciBhIHByaW1pdGl2ZSBzdHJpbmdcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gdGhlIGFyZ3VtZW50IGlzIGEgcHJpbWl0aXZlIHN0cmluZycsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzUHJpbWl0aXZlKCdoZWxsbycpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNQcmltaXRpdmUgcmV0dXJucyB0cnVlIGZvciBhIHByaW1pdGl2ZSBudW1iZXJcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gdGhlIGFyZ3VtZW50IGlzIGEgcHJpbWl0aXZlIG51bWJlcicsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzUHJpbWl0aXZlKDEyMyk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc1ByaW1pdGl2ZSByZXR1cm5zIHRydWUgZm9yIGEgcHJpbWl0aXZlIGJvb2xlYW5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gdGhlIGFyZ3VtZW50IGlzIGEgcHJpbWl0aXZlIGJvb2xlYW4nLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc1ByaW1pdGl2ZSh0cnVlKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzUHJpbWl0aXZlIHJldHVybnMgdHJ1ZSBmb3IgbnVsbFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiB0aGUgYXJndW1lbnQgaXMgbnVsbCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzUHJpbWl0aXZlKG51bGwpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNQcmltaXRpdmUgcmV0dXJucyB0cnVlIGZvciB1bmRlZmluZWRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gdGhlIGFyZ3VtZW50IGlzIHVuZGVmaW5lZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzUHJpbWl0aXZlKHVuZGVmaW5lZCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc1ByaW1pdGl2ZSByZXR1cm5zIGZhbHNlIGZvciBhbiBpbnN0YW5jZSBvZiBhIG5vbi1wcmltaXRpdmUgd3JhcHBlciBjbGFzcyAoRGF0ZSlcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHRoZSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBhIG5vbi1wcmltaXRpdmUgd3JhcHBlciBjbGFzcyAoRGF0ZSknLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc1ByaW1pdGl2ZShuZXcgRGF0ZSgpKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc1ByaW1pdGl2ZSByZXR1cm5zIGZhbHNlIGZvciBhbiBpbnN0YW5jZSBvZiBhIGN1c3RvbSBjbGFzc1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIGEgY3VzdG9tIGNsYXNzJywgKCkgPT4ge1xuICAgICAgY2xhc3MgQ3VzdG9tQ2xhc3Mge31cbiAgICAgIGNvbnN0IGFyZyA9IG5ldyBDdXN0b21DbGFzcygpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNQcmltaXRpdmUoYXJnKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc1ByaW1pdGl2ZSByZXR1cm5zIGZhbHNlIGZvciBhIGZ1bmN0aW9uIHdpdGggcHJvcGVydGllc1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdGhlIGFyZ3VtZW50IGlzIGEgZnVuY3Rpb24gd2l0aCBwcm9wZXJ0aWVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgZnVuYyA9ICgpID0+IHt9O1xuICAgICAgZnVuYy5wcm9wZXJ0eSA9ICd2YWx1ZSc7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc1ByaW1pdGl2ZShmdW5jKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc1ByaW1pdGl2ZSByZXR1cm5zIHRydWUgZm9yIGEgc3ltYm9sXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIHRoZSBhcmd1bWVudCBpcyBhIHN5bWJvbCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzUHJpbWl0aXZlKFN5bWJvbCgndGVzdCcpKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXRUeXBlJywgKCkgPT4ge1xuICAgIC8vIFRlc3RzIHRoYXQgZ2V0VHlwZSByZXR1cm5zIHRoZSBjb3JyZWN0IHR5cGUgZm9yIHN0cmluZyBpbnB1dFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHN0cmluZyB3aGVuIHRoZSBpbnB1dCBpcyBhIHN0cmluZycsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gJ2hlbGxvJztcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldFR5cGUoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgnc3RyaW5nJyk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGdldFR5cGUgcmV0dXJucyB0aGUgY29ycmVjdCB0eXBlIGZvciBudW1iZXIgaW5wdXRcbiAgICBpdCgnc2hvdWxkIHJldHVybiBudW1iZXIgd2hlbiB0aGUgaW5wdXQgaXMgYSBudW1iZXInLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IDQyO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0VHlwZShpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCdudW1iZXInKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgZ2V0VHlwZSByZXR1cm5zIHRoZSBjb3JyZWN0IHR5cGUgZm9yIGJvb2xlYW4gaW5wdXRcbiAgICBpdCgnc2hvdWxkIHJldHVybiBib29sZWFuIHdoZW4gdGhlIGlucHV0IGlzIGEgYm9vbGVhbiB2YWx1ZScsICgpID0+IHtcbiAgICAgIGV4cGVjdChnZXRUeXBlKHRydWUpKS50b0JlKCdib29sZWFuJyk7XG4gICAgICBleHBlY3QoZ2V0VHlwZShmYWxzZSkpLnRvQmUoJ2Jvb2xlYW4nKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgZ2V0VHlwZSByZXR1cm5zICdOVUxMJyB3aGVuIHRoZSBpbnB1dCBpcyBudWxsXG4gICAgaXQoXCJzaG91bGQgcmV0dXJuICdOVUxMJyB3aGVuIHRoZSBpbnB1dCBpcyBudWxsXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gbnVsbDtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldFR5cGUoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgnTlVMTCcpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBnZXRUeXBlIHJldHVybnMgJ29iamVjdCcgd2hlbiB0aGUgaW5wdXQgaXMgYW4gZW1wdHkgb2JqZWN0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gb2JqZWN0IHdoZW4gdGhlIGlucHV0IGlzIGFuIGVtcHR5IG9iamVjdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0ge307XG4gICAgICBjb25zdCByZXN1bHQgPSBnZXRUeXBlKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ29iamVjdCcpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBnZXRUeXBlIHJldHVybnMgdGhlIGNvcnJlY3QgdHlwZSBmb3IgZnVuY3Rpb24gaW5wdXRcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmdW5jdGlvbiB3aGVuIHRoZSBpbnB1dCBpcyBhIGZ1bmN0aW9uJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSAoKSA9PiB7fTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldFR5cGUoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgnZnVuY3Rpb24nKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgZ2V0VHlwZSByZXR1cm5zIHRoZSBjb3JyZWN0IHR5cGUgZm9yIGJpZ2ludCBpbnB1dFxuICAgIGl0KFwic2hvdWxkIHJldHVybiAnYmlnaW50JyB3aGVuIHRoZSBpbnB1dCBpcyBhIGJpZ2ludFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IEJpZ0ludCgxMCk7XG4gICAgICBjb25zdCByZXN1bHQgPSBnZXRUeXBlKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ2JpZ2ludCcpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBnZXRUeXBlIHJldHVybnMgJ3N5bWJvbCcgd2hlbiB0aGUgaW5wdXQgaXMgYSBzeW1ib2xcbiAgICBpdChcInNob3VsZCByZXR1cm4gJ3N5bWJvbCcgd2hlbiB0aGUgaW5wdXQgaXMgYSBzeW1ib2xcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSBTeW1ib2woJ3Rlc3QnKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldFR5cGUoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgnc3ltYm9sJyk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGdldFR5cGUgcmV0dXJucyAndW5kZWZpbmVkJyB3aGVuIHRoZSBpbnB1dCBpcyB1bmRlZmluZWRcbiAgICBpdChcInNob3VsZCByZXR1cm4gJ05VTEwnIHdoZW4gdGhlIGlucHV0IGlzIHVuZGVmaW5lZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldFR5cGUoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgnTlVMTCcpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBnZXRUeXBlIHJldHVybnMgdGhlIGNvcnJlY3QgdHlwZSBmb3IgYXJyb3cgZnVuY3Rpb24gaW5wdXRcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmdW5jdGlvbiB3aGVuIHRoZSBpbnB1dCBpcyBhbiBhcnJvdyBmdW5jdGlvbicsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gKCkgPT4ge307XG4gICAgICBjb25zdCByZXN1bHQgPSBnZXRUeXBlKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ2Z1bmN0aW9uJyk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGdldFR5cGUgcmV0dXJucyAnb2JqZWN0JyB3aGVuIHRoZSBpbnB1dCBpcyBhbiBvYmplY3Qgd2l0aCBwcm9wZXJ0aWVzXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gb2JqZWN0IHdoZW4gdGhlIGlucHV0IGlzIGFuIG9iamVjdCB3aXRoIHByb3BlcnRpZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IHsgbmFtZTogJ0pvaG4nLCBhZ2U6IDMwIH07XG4gICAgICBjb25zdCByZXN1bHQgPSBnZXRUeXBlKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ29iamVjdCcpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBnZXRUeXBlIG9iamVjdCB0aGUgY29ycmVjdCB0eXBlIGZvciBjbGFzcyBpbnB1dFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIG9iamVjdCB3aGVuIHRoZSBpbnB1dCBpcyBhIGNsYXNzJywgKCkgPT4ge1xuICAgICAgY2xhc3MgTXlDbGFzcyB7fVxuICAgICAgY29uc3QgaW5wdXQgPSBuZXcgTXlDbGFzcygpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0VHlwZShpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCdvYmplY3QnKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgZ2V0VHlwZSByZXR1cm5zICdmdW5jdGlvbicgd2hlbiB0aGUgaW5wdXQgaXMgYSBnZW5lcmF0b3IgZnVuY3Rpb25cbiAgICBpdCgnc2hvdWxkIHJldHVybiBmdW5jdGlvbiB3aGVuIHRoZSBpbnB1dCBpcyBhIGdlbmVyYXRvciBmdW5jdGlvbicsICgpID0+IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICAgIGNvbnN0IGlucHV0ID0gZnVuY3Rpb24qICgpIHt9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0VHlwZShpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCdmdW5jdGlvbicpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBnZXRUeXBlIHJldHVybnMgJ2Z1bmN0aW9uJyB3aGVuIHRoZSBpbnB1dCBpcyBhbiBhc3luYyBmdW5jdGlvblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZ1bmN0aW9uIHdoZW4gdGhlIGlucHV0IGlzIGFuIGFzeW5jIGZ1bmN0aW9uJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSBhc3luYyAoKSA9PiB7fTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldFR5cGUoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgnZnVuY3Rpb24nKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2lzT2JqZWN0JywgKCkgPT4ge1xuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBmb3IgYW4gb2JqZWN0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIHZhbHVlIGlzIGFuIG9iamVjdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0ge307XG4gICAgICBleHBlY3QoaXNPYmplY3QodmFsdWUpKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIGZvciBhIGZ1bmN0aW9uXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIHZhbHVlIGlzIGEgZnVuY3Rpb24nLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9ICgpID0+IHt9O1xuICAgICAgZXhwZWN0KGlzT2JqZWN0KHZhbHVlKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgZmFsc2UgZm9yIG51bGxcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHZhbHVlIGlzIG51bGwnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IG51bGw7XG4gICAgICBleHBlY3QoaXNPYmplY3QodmFsdWUpKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgZmFsc2UgZm9yIHVuZGVmaW5lZFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdmFsdWUgaXMgdW5kZWZpbmVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICBleHBlY3QoaXNPYmplY3QodmFsdWUpKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgZmFsc2UgZm9yIGFuIGFycmF5XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiB2YWx1ZSBpcyBhbiBhcnJheScsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gW107XG4gICAgICBleHBlY3QoaXNPYmplY3QodmFsdWUpKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgZmFsc2UgZm9yIGEgc3RyaW5nXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiB2YWx1ZSBpcyBhIHN0cmluZycsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gJ3Rlc3QnO1xuICAgICAgZXhwZWN0KGlzT2JqZWN0KHZhbHVlKSkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGZhbHNlIGZvciBhIG51bWJlclxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdmFsdWUgaXMgYSBudW1iZXInLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IDEyMztcbiAgICAgIGV4cGVjdChpc09iamVjdCh2YWx1ZSkpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBmYWxzZSBmb3IgYSBib29sZWFuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiB2YWx1ZSBpcyBhIGJvb2xlYW4nLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRydWU7XG4gICAgICBleHBlY3QoaXNPYmplY3QodmFsdWUpKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgZmFsc2UgZm9yIGEgc3ltYm9sXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiB2YWx1ZSBpcyBhIHN5bWJvbCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gU3ltYm9sKCk7XG4gICAgICBleHBlY3QoaXNPYmplY3QodmFsdWUpKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgZmFsc2Ugd2hlbiB0aGUgdmFsdWUgaXMgTmFOXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiB2YWx1ZSBpcyBOYU4nLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IE5hTjtcbiAgICAgIGV4cGVjdChpc09iamVjdCh2YWx1ZSkpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnaXNFbXB0eScsICgpID0+IHtcbiAgICAvLyBUZXN0cyB0aGF0IGlzRW1wdHkgcmV0dXJucyB0cnVlIGZvciBhbiBlbXB0eSBzdHJpbmdcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gaW5wdXQgaXMgYW4gZW1wdHkgc3RyaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSAnJztcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzRW1wdHkoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNFbXB0eSByZXR1cm5zIHRydWUgZm9yIGFuIGVtcHR5IGFycmF5XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGlucHV0IGlzIGFuIGVtcHR5IGFycmF5JywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSBbXTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzRW1wdHkoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNFbXB0eSByZXR1cm5zIGZhbHNlIGZvciBhbiBlbXB0eSBvYmplY3RcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIGlucHV0IGlzIGFuIGVtcHR5IG9iamVjdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0ge307XG4gICAgICBjb25zdCByZXN1bHQgPSBpc0VtcHR5KGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc0VtcHR5IHJldHVybnMgZmFsc2UgZm9yIGEgbm9uLWVtcHR5IHN0cmluZ1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gaW5wdXQgaXMgYSBub24tZW1wdHkgc3RyaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSAnaGVsbG8nO1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNFbXB0eShpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNFbXB0eSByZXR1cm5zIGZhbHNlIGZvciBhIG5vbi1lbXB0eSBhcnJheVxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gaW5wdXQgaXMgYSBub24tZW1wdHkgYXJyYXknLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IFsxLCAyLCAzXTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzRW1wdHkoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzRW1wdHkgcmV0dXJucyBmYWxzZSBmb3IgYSBub24tZW1wdHkgb2JqZWN0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiBpbnB1dCBpcyBhIG5vbi1lbXB0eSBvYmplY3QnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IHsga2V5OiAndmFsdWUnIH07XG4gICAgICBjb25zdCByZXN1bHQgPSBpc0VtcHR5KGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc0VtcHR5IHJldHVybnMgdHJ1ZSBmb3IgbnVsbCBpbnB1dFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBpbnB1dCBpcyBudWxsJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSBudWxsO1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNFbXB0eShpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGhlIHRlc3Qgb2JqZWN0aXZlIGlzIHRvIHZlcmlmeSB0aGF0IHRoZSBmdW5jdGlvbiAnaXNFbXB0eScgcmV0dXJucyB0cnVlIHdoZW4gdGhlIGlucHV0IGlzIHVuZGVmaW5lZC5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gaW5wdXQgaXMgdW5kZWZpbmVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSB1bmRlZmluZWQ7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc0VtcHR5KGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzRW1wdHkgcmV0dXJucyBmYWxzZSBmb3IgTmFOIGlucHV0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiBpbnB1dCBpcyBOYU4nLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IE5hTjtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzRW1wdHkoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0IHRoYXQgdGhlIGZ1bmN0aW9uICdpc0VtcHR5JyByZXR1cm5zIHRydWUgd2hlbiB0aGUgaW5wdXQgaXMgYSB3aGl0ZXNwYWNlIHN0cmluZ1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBpbnB1dCBpcyBhIHdoaXRlc3BhY2Ugc3RyaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSAnICAgJztcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzRW1wdHkoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2lzRW1wdHlPYmplY3QnLCAoKSA9PiB7XG4gICAgLy8gVGVzdHMgdGhhdCBpc0VtcHR5T2JqZWN0IHJldHVybnMgdHJ1ZSBmb3IgYW4gZW1wdHkgb2JqZWN0IHt9XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSBmb3IgYW4gZW1wdHkgb2JqZWN0JywgKCkgPT4ge1xuICAgICAgY29uc3Qgb2JqID0ge307XG4gICAgICBleHBlY3QoaXNFbXB0eU9iamVjdChvYmopKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc0VtcHR5T2JqZWN0IHJldHVybnMgZmFsc2UgZm9yIGEgbm9uLWVtcHR5IG9iamVjdCB7YTogJzEnfVxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIGZvciBhIG5vbi1lbXB0eSBvYmplY3QnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvYmogPSB7IGE6ICcxJyB9O1xuICAgICAgZXhwZWN0KGlzRW1wdHlPYmplY3Qob2JqKSkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzRW1wdHlPYmplY3QgcmV0dXJucyB0cnVlIGZvciBhbiBlbXB0eSBhcnJheSBbXVxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgZm9yIGFuIGVtcHR5IGFycmF5JywgKCkgPT4ge1xuICAgICAgY29uc3QgYXJyID0gW107XG4gICAgICBleHBlY3QoaXNFbXB0eU9iamVjdChhcnIpKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc0VtcHR5T2JqZWN0IHJldHVybnMgZmFsc2UgZm9yIGEgbm9uLWVtcHR5IGFycmF5IFsxLCAyLCAzXVxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIGZvciBhIG5vbi1lbXB0eSBhcnJheScsICgpID0+IHtcbiAgICAgIGNvbnN0IGFyciA9IFsxLCAyLCAzXTtcbiAgICAgIGV4cGVjdChpc0VtcHR5T2JqZWN0KGFycikpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc0VtcHR5T2JqZWN0IHJldHVybnMgdHJ1ZSBmb3IgYW4gZW1wdHkgc3RyaW5nICcnXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSBmb3IgYW4gZW1wdHkgc3RyaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3Qgb2JqID0gJyc7XG4gICAgICBleHBlY3QoaXNFbXB0eU9iamVjdChvYmopKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc0VtcHR5T2JqZWN0IHJldHVybnMgZmFsc2UgZm9yIGEgbm9uLWVtcHR5IHN0cmluZyAnaGVsbG8nXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2UgZm9yIGEgbm9uLWVtcHR5IHN0cmluZycsICgpID0+IHtcbiAgICAgIGNvbnN0IG9iaiA9ICdoZWxsbyc7XG4gICAgICBleHBlY3QoaXNFbXB0eU9iamVjdChvYmopKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNFbXB0eU9iamVjdCByZXR1cm5zIHRydWUgZm9yIG51bWJlclxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgZm9yIG51bWJlcicsICgpID0+IHtcbiAgICAgIGNvbnN0IG9iaiA9IDI7XG4gICAgICBleHBlY3QoaXNFbXB0eU9iamVjdChvYmopKS50b0JlKHRydWUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnaXNEZWZpbmVkTm90TnVsbE5vdEVtcHR5JywgKCkgPT4ge1xuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSB3aGVuIGEgbm9uLWVtcHR5IHN0cmluZyBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gYSBub24tZW1wdHkgc3RyaW5nIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzRGVmaW5lZE5vdE51bGxOb3RFbXB0eSgndGVzdCcpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSB3aGVuIGEgbm9uLWVtcHR5IG9iamVjdCBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gYSBub24tZW1wdHkgb2JqZWN0IGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzRGVmaW5lZE5vdE51bGxOb3RFbXB0eSh7IGtleTogJ3ZhbHVlJyB9KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUgd2hlbiBhIG5vbi1lbXB0eSBhcnJheSBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gYSBub24tZW1wdHkgYXJyYXkgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNEZWZpbmVkTm90TnVsbE5vdEVtcHR5KFsxLCAyLCAzXSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gYSBub24temVybyBudW1iZXIgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGEgbm9uLXplcm8gbnVtYmVyIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzRGVmaW5lZE5vdE51bGxOb3RFbXB0eSgxMjMpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSB3aGVuIGEgYm9vbGVhbiB2YWx1ZSBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gYSBib29sZWFuIHZhbHVlIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzRGVmaW5lZE5vdE51bGxOb3RFbXB0eSh0cnVlKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGZhbHNlIHdoZW4gYW4gZW1wdHkgc3RyaW5nIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gYW4gZW1wdHkgc3RyaW5nIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzRGVmaW5lZE5vdE51bGxOb3RFbXB0eSgnJyk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSB3aGVuIGZhbHNlIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBmYWxzZSBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc0RlZmluZWROb3ROdWxsTm90RW1wdHkoZmFsc2UpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSB3aGVuIDAgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIDAgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNEZWZpbmVkTm90TnVsbE5vdEVtcHR5KDApO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgZmFsc2Ugd2hlbiBOYU4gaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiBOYU4gaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNEZWZpbmVkTm90TnVsbE5vdEVtcHR5KE5hTik7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgZmFsc2Ugd2hlbiB1bmRlZmluZWQgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiB1bmRlZmluZWQgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNEZWZpbmVkTm90TnVsbE5vdEVtcHR5KHVuZGVmaW5lZCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgZmFsc2Ugd2hlbiBudWxsIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gbnVsbCBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc0RlZmluZWROb3ROdWxsTm90RW1wdHkobnVsbCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgZmFsc2Ugd2hlbiBhbiBlbXB0eSBhcnJheSBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIGFuIGVtcHR5IGFycmF5IGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzRGVmaW5lZE5vdE51bGxOb3RFbXB0eShbXSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgZmFsc2Ugd2hlbiBhbiBlbXB0eSBvYmplY3QgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiBhbiBlbXB0eSBvYmplY3QgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNEZWZpbmVkTm90TnVsbE5vdEVtcHR5KHt9KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncmVtb3ZlVW5kZWZpbmVkTnVsbEVtcHR5RXhjbEJvb2xJbnQnLCAoKSA9PiB7XG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgc2FtZSBvYmplY3QgaWYgaXQgZG9lcyBub3QgY29udGFpbiB1bmRlZmluZWQsIG51bGwsIGVtcHR5LCBib29sZWFuLCBvciBpbnRlZ2VyIHZhbHVlc1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBzYW1lIG9iamVjdCB3aGVuIGl0IGRvZXMgbm90IGNvbnRhaW4gdW5kZWZpbmVkLCBudWxsLCBlbXB0eSwgYm9vbGVhbiwgb3IgaW50ZWdlciB2YWx1ZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvYmogPSB7IGE6IDEsIGI6ICd0ZXN0JywgYzogeyBkOiAnbmVzdGVkJyB9IH07XG4gICAgICBleHBlY3QocmVtb3ZlVW5kZWZpbmVkTnVsbEVtcHR5RXhjbEJvb2xJbnQob2JqKSkudG9FcXVhbChvYmopO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmVtb3ZlcyB1bmRlZmluZWQsIG51bGwsIGVtcHR5LCBib29sZWFuLCBvciBpbnRlZ2VyIHZhbHVlcyBmcm9tIHRoZSBvYmplY3QgYW5kIHJldHVybnMgdGhlIGNsZWFuZWQgb2JqZWN0XG4gICAgaXQoJ3Nob3VsZCByZW1vdmUgdW5kZWZpbmVkLCBudWxsLCBlbXB0eSwgYm9vbGVhbiwgb3IgaW50ZWdlciB2YWx1ZXMgZnJvbSB0aGUgb2JqZWN0IGFuZCByZXR1cm4gdGhlIGNsZWFuZWQgb2JqZWN0JywgKCkgPT4ge1xuICAgICAgY29uc3Qgb2JqID0geyBhOiAxLCBiOiB1bmRlZmluZWQsIGM6IG51bGwsIGQ6ICcnLCBlOiB7fSwgZjogdHJ1ZSwgZzogMCB9O1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSB7IGE6IDEsIGY6IHRydWUsIGc6IDAgfTtcbiAgICAgIGV4cGVjdChyZW1vdmVVbmRlZmluZWROdWxsRW1wdHlFeGNsQm9vbEludChvYmopKS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdW5kZWZpbmVkIGlmIHRoZSBpbnB1dCBpcyB1bmRlZmluZWRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB1bmRlZmluZWQgd2hlbiB0aGUgaW5wdXQgaXMgdW5kZWZpbmVkJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHJlbW92ZVVuZGVmaW5lZE51bGxFbXB0eUV4Y2xCb29sSW50KHVuZGVmaW5lZCkpLnRvQmVVbmRlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgbnVsbCBpZiB0aGUgaW5wdXQgaXMgbnVsbFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIG51bGwgd2hlbiB0aGUgaW5wdXQgaXMgbnVsbCcsICgpID0+IHtcbiAgICAgIGV4cGVjdChyZW1vdmVVbmRlZmluZWROdWxsRW1wdHlFeGNsQm9vbEludChudWxsKSkudG9CZU51bGwoKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYW4gZW1wdHkgb2JqZWN0IGlmIHRoZSBpbnB1dCBpcyBhbiBlbXB0eSBvYmplY3RcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhbiBlbXB0eSBvYmplY3Qgd2hlbiB0aGUgaW5wdXQgaXMgYW4gZW1wdHkgb2JqZWN0JywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHJlbW92ZVVuZGVmaW5lZE51bGxFbXB0eUV4Y2xCb29sSW50KHt9KSkudG9FcXVhbCh7fSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGFuIGVtcHR5IG9iamVjdCBpZiB0aGUgaW5wdXQgY29udGFpbnMgb25seSB1bmRlZmluZWQsIG51bGwsIGVtcHR5LCBib29sZWFuLCBvciBpbnRlZ2VyIHZhbHVlc1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgdmFsaWQgb2JqZWN0IHdoZW4gdGhlIGlucHV0IGNvbnRhaW5zIG9ubHkgdW5kZWZpbmVkLCBudWxsLCBlbXB0eSwgYm9vbGVhbiBvciBpbnRlZ2VyIHZhbHVlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IG9iaiA9IHsgYTogdW5kZWZpbmVkLCBiOiBudWxsLCBjOiAnJywgZDoge30sIGU6IHRydWUsIGY6IDAgfTtcbiAgICAgIGV4cGVjdChyZW1vdmVVbmRlZmluZWROdWxsRW1wdHlFeGNsQm9vbEludChvYmopKS50b0VxdWFsKHsgZTogdHJ1ZSwgZjogMCB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldEhhc2hGcm9tQXJyYXknLCAoKSA9PiB7XG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhbiBlbXB0eSBvYmplY3Qgd2hlbiBnaXZlbiBhbiBlbXB0eSBhcnJheVxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIGVtcHR5IG9iamVjdCB3aGVuIGdpdmVuIGFuIGVtcHR5IGFycmF5JywgKCkgPT4ge1xuICAgICAgY29uc3QgYXJyYXlzID0gW107XG4gICAgICBjb25zdCByZXN1bHQgPSBnZXRIYXNoRnJvbUFycmF5KGFycmF5cyk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHt9KTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYSBoYXNoTWFwIHdpdGggY29ycmVjdCBrZXktdmFsdWUgcGFpcnMgd2hlbiBnaXZlbiBhbiBhcnJheSBvZiBvYmplY3RzIHdpdGggJ2Zyb20nIGFuZCAndG8nIHByb3BlcnRpZXNcbiAgICBpdChcInNob3VsZCByZXR1cm4gYSBoYXNoTWFwIHdpdGggY29ycmVjdCBrZXktdmFsdWUgcGFpcnMgd2hlbiBnaXZlbiBhbiBhcnJheSBvZiBvYmplY3RzIHdpdGggJ2Zyb20nIGFuZCAndG8nIHByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXJyYXlzID0gW1xuICAgICAgICB7IGZyb206ICdBJywgdG86ICcxJyB9LFxuICAgICAgICB7IGZyb206ICdCJywgdG86ICcyJyB9LFxuICAgICAgICB7IGZyb206ICdDJywgdG86ICczJyB9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEhhc2hGcm9tQXJyYXkoYXJyYXlzKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoeyBhOiAnMScsIGI6ICcyJywgYzogJzMnIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhbiBlbXB0eSBvYmplY3Qgd2hlbiBnaXZlbiBhbiBhcnJheSBvZiBvYmplY3RzIHdpdGggZW1wdHkgJ2Zyb20nIHByb3BlcnR5XG4gICAgaXQoXCJzaG91bGQgcmV0dXJuIGFuIGVtcHR5IG9iamVjdCB3aGVuIGdpdmVuIGFuIGFycmF5IG9mIG9iamVjdHMgd2l0aCBlbXB0eSAnZnJvbScgcHJvcGVydHlcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXJyYXlzID0gW1xuICAgICAgICB7IGZyb206ICcnLCB0bzogJzEnIH0sXG4gICAgICAgIHsgZnJvbTogJycsIHRvOiAnMicgfSxcbiAgICAgICAgeyBmcm9tOiAnJywgdG86ICczJyB9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEhhc2hGcm9tQXJyYXkoYXJyYXlzKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe30pO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhIGhhc2hNYXAgd2l0aCBvbmx5IHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGEgJ2Zyb20nIHByb3BlcnR5IHdoZW4gZ2l2ZW4gYW4gYXJyYXkgd2l0aCBkdXBsaWNhdGUgJ2Zyb20nIHByb3BlcnRpZXNcbiAgICBpdChcInNob3VsZCByZXR1cm4gYSBoYXNoTWFwIHdpdGggb25seSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBhICdmcm9tJyBwcm9wZXJ0eSB3aGVuIGdpdmVuIGFuIGFycmF5IHdpdGggZHVwbGljYXRlICdmcm9tJyBwcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFycmF5cyA9IFtcbiAgICAgICAgeyBmcm9tOiAnQScsIHRvOiAnMScgfSxcbiAgICAgICAgeyBmcm9tOiAnQicsIHRvOiAnMicgfSxcbiAgICAgICAgeyBmcm9tOiAnQScsIHRvOiAnMycgfSxcbiAgICAgIF07XG4gICAgICBjb25zdCByZXN1bHQgPSBnZXRIYXNoRnJvbUFycmF5KGFycmF5cyk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHsgYTogJzMnLCBiOiAnMicgfSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgaGFzaE1hcCB3aXRoIG9ubHkgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBhICdmcm9tJyBwcm9wZXJ0eSB3aGVuIGdpdmVuIGFuIGFycmF5IHdpdGggZHVwbGljYXRlICdmcm9tJyBwcm9wZXJ0aWVzIGFuZCBkaWZmZXJlbnQgJ3RvJyB2YWx1ZXNcbiAgICBpdChcInNob3VsZCByZXR1cm4gYSBoYXNoTWFwIHdpdGggb25seSB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIGEgJ2Zyb20nIHByb3BlcnR5IHdoZW4gZ2l2ZW4gYW4gYXJyYXkgd2l0aCBkdXBsaWNhdGUgJ2Zyb20nIHByb3BlcnRpZXMgYW5kIGRpZmZlcmVudCAndG8nIHZhbHVlc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhcnJheXMgPSBbXG4gICAgICAgIHsgZnJvbTogJ0EnLCB0bzogJzEnIH0sXG4gICAgICAgIHsgZnJvbTogJ0InLCB0bzogJzInIH0sXG4gICAgICAgIHsgZnJvbTogJ0EnLCB0bzogJzMnIH0sXG4gICAgICBdO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0SGFzaEZyb21BcnJheShhcnJheXMpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7IGE6ICczJywgYjogJzInIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhIGhhc2hNYXAgd2l0aCBjb3JyZWN0IGtleS12YWx1ZSBwYWlycyB3aGVuIGdpdmVuIGFuIGFycmF5IG9mIG9iamVjdHMgd2l0aCBub24tc3RyaW5nICdmcm9tJyBhbmQgJ3RvJyBwcm9wZXJ0aWVzXG4gICAgaXQoXCJzaG91bGQgcmV0dXJuIGEgaGFzaE1hcCB3aXRoIGNvcnJlY3Qga2V5LXZhbHVlIHBhaXJzIHdoZW4gZ2l2ZW4gYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIG5vbi1zdHJpbmcgJ2Zyb20nIGFuZCAndG8nIHByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXJyYXlzID0gW1xuICAgICAgICB7IGZyb206IDEsIHRvOiB0cnVlIH0sXG4gICAgICAgIHsgZnJvbTogbnVsbCwgdG86IHVuZGVmaW5lZCB9LFxuICAgICAgICB7IGZyb206IFsxLCAyLCAzXSwgdG86IHsgYTogJ0EnLCBiOiAnQicgfSB9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEhhc2hGcm9tQXJyYXkoYXJyYXlzKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoeyAnMSc6IHRydWUsIG51bGw6IHVuZGVmaW5lZCwgJzEsMiwzJzogeyBhOiAnQScsIGI6ICdCJyB9IH0pO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gY29udmVydHMgdGhlICdmcm9tJyBwcm9wZXJ0eSB0byBsb3dlcmNhc2UgaW4gdGhlIGhhc2hNYXAgd2hlbiB0aGUgaXNMb3dlckNhc2UgcGFyYW1ldGVyIGlzIHRydWVcbiAgICBpdCgnc2hvdWxkIGNvbnZlcnQgXCJmcm9tXCIgcHJvcGVydHkgdG8gbG93ZXJjYXNlIGluIGhhc2hNYXAgd2hlbiBpc0xvd2VyQ2FzZSBpcyB0cnVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgYXJyYXlzID0gW1xuICAgICAgICB7IGZyb206ICdWQUxVRTEnLCB0bzogJ1ZhbHVlMScgfSxcbiAgICAgICAgeyBmcm9tOiAnVkFMVUUyJywgdG86ICdWYWx1ZTInIH0sXG4gICAgICAgIHsgZnJvbTogJ1ZBTFVFMycsIHRvOiAnVmFsdWUzJyB9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkID0ge1xuICAgICAgICB2YWx1ZTE6ICdWYWx1ZTEnLFxuICAgICAgICB2YWx1ZTI6ICdWYWx1ZTInLFxuICAgICAgICB2YWx1ZTM6ICdWYWx1ZTMnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEhhc2hGcm9tQXJyYXkoYXJyYXlzLCAnZnJvbScsICd0bycsIHRydWUpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXRIYXNoRnJvbUFycmF5V2l0aER1cGxpY2F0ZScsICgpID0+IHtcbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiBjb3JyZWN0bHkgZ2VuZXJhdGVzIGEgaGFzaE1hcCBmcm9tIGEgdmFsaWQgYXJyYXkgb2Ygb2JqZWN0cyB3aXRoICdmcm9tJyBhbmQgJ3RvJyBrZXlzXG4gICAgaXQoXCJzaG91bGQgY29ycmVjdGx5IGdlbmVyYXRlIGEgaGFzaE1hcCBmcm9tIGEgdmFsaWQgYXJyYXkgb2Ygb2JqZWN0cyB3aXRoICdmcm9tJyBhbmQgJ3RvJyBrZXlzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFycmF5cyA9IFtcbiAgICAgICAgeyBmcm9tOiAncHJvcDEnLCB0bzogJ3ZhbDEnIH0sXG4gICAgICAgIHsgZnJvbTogJ3Byb3AxJywgdG86ICd2YWwyJyB9LFxuICAgICAgICB7IGZyb206ICdwcm9wMicsIHRvOiAndmFsMicgfSxcbiAgICAgIF07XG4gICAgICBjb25zdCBleHBlY3RlZEhhc2hNYXAgPSB7XG4gICAgICAgIHByb3AxOiBuZXcgU2V0KFsndmFsMScsICd2YWwyJ10pLFxuICAgICAgICBwcm9wMjogbmV3IFNldChbJ3ZhbDInXSksXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0SGFzaEZyb21BcnJheVdpdGhEdXBsaWNhdGUoYXJyYXlzKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRIYXNoTWFwKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseSBnZW5lcmF0ZXMgYSBoYXNoTWFwIGZyb20gYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIG9ubHkgb25lIG9iamVjdFxuICAgIGl0KCdzaG91bGQgY29ycmVjdGx5IGdlbmVyYXRlIGEgaGFzaE1hcCBmcm9tIGFuIGFycmF5IG9mIG9iamVjdHMgd2l0aCBvbmx5IG9uZSBvYmplY3QnLCAoKSA9PiB7XG4gICAgICBjb25zdCBhcnJheXMgPSBbeyBmcm9tOiAncHJvcDEnLCB0bzogJ3ZhbDEnIH1dO1xuICAgICAgY29uc3QgZXhwZWN0ZWRIYXNoTWFwID0geyBwcm9wMTogbmV3IFNldChbJ3ZhbDEnXSkgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEhhc2hGcm9tQXJyYXlXaXRoRHVwbGljYXRlKGFycmF5cyk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkSGFzaE1hcCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiBjb3JyZWN0bHkgZ2VuZXJhdGVzIGEgaGFzaE1hcCBmcm9tIGFuIGFycmF5IG9mIG9iamVjdHMgd2l0aCB1bmlxdWUgJ2Zyb20nIGtleXNcbiAgICBpdChcInNob3VsZCBjb3JyZWN0bHkgZ2VuZXJhdGUgYSBoYXNoTWFwIGZyb20gYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIHVuaXF1ZSAnZnJvbScga2V5c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhcnJheXMgPSBbXG4gICAgICAgIHsgZnJvbTogJ3Byb3AxJywgdG86ICd2YWwxJyB9LFxuICAgICAgICB7IGZyb206ICdwcm9wMicsIHRvOiAndmFsMicgfSxcbiAgICAgICAgeyBmcm9tOiAncHJvcDMnLCB0bzogJ3ZhbDMnIH0sXG4gICAgICBdO1xuICAgICAgY29uc3QgZXhwZWN0ZWRIYXNoTWFwID0ge1xuICAgICAgICBwcm9wMTogbmV3IFNldChbJ3ZhbDEnXSksXG4gICAgICAgIHByb3AyOiBuZXcgU2V0KFsndmFsMiddKSxcbiAgICAgICAgcHJvcDM6IG5ldyBTZXQoWyd2YWwzJ10pLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEhhc2hGcm9tQXJyYXlXaXRoRHVwbGljYXRlKGFycmF5cyk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkSGFzaE1hcCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiBjb3JyZWN0bHkgZ2VuZXJhdGVzIGEgaGFzaE1hcCBmcm9tIGFuIGFycmF5IG9mIG9iamVjdHMgd2l0aCB1bmlxdWUgJ3RvJyBrZXlzXG4gICAgaXQoXCJzaG91bGQgY29ycmVjdGx5IGdlbmVyYXRlIGEgaGFzaE1hcCBmcm9tIGFuIGFycmF5IG9mIG9iamVjdHMgd2l0aCB1bmlxdWUgJ3RvJyBrZXlzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFycmF5cyA9IFtcbiAgICAgICAgeyBmcm9tOiAncHJvcDEnLCB0bzogJ3ZhbDEnIH0sXG4gICAgICAgIHsgZnJvbTogJ3Byb3AyJywgdG86ICd2YWwyJyB9LFxuICAgICAgICB7IGZyb206ICdwcm9wMycsIHRvOiAndmFsMycgfSxcbiAgICAgIF07XG4gICAgICBjb25zdCBleHBlY3RlZEhhc2hNYXAgPSB7XG4gICAgICAgIHByb3AxOiBuZXcgU2V0KFsndmFsMSddKSxcbiAgICAgICAgcHJvcDI6IG5ldyBTZXQoWyd2YWwyJ10pLFxuICAgICAgICBwcm9wMzogbmV3IFNldChbJ3ZhbDMnXSksXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0SGFzaEZyb21BcnJheVdpdGhEdXBsaWNhdGUoYXJyYXlzKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRIYXNoTWFwKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYW4gZW1wdHkgaGFzaE1hcCB3aGVuIGdpdmVuIGFuIGVtcHR5IGFycmF5XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gZW1wdHkgaGFzaE1hcCB3aGVuIGdpdmVuIGFuIGVtcHR5IGFycmF5JywgKCkgPT4ge1xuICAgICAgY29uc3QgYXJyYXlzID0gW107XG4gICAgICBjb25zdCBleHBlY3RlZEhhc2hNYXAgPSB7fTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEhhc2hGcm9tQXJyYXlXaXRoRHVwbGljYXRlKGFycmF5cyk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkSGFzaE1hcCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiBjb3JyZWN0bHkgaGFuZGxlcyBhbiBhcnJheSBvZiBvYmplY3RzIHdpdGggZW1wdHkgJ2Zyb20nIGtleXNcbiAgICBpdChcInNob3VsZCBjb3JyZWN0bHkgaGFuZGxlIGFuIGFycmF5IG9mIG9iamVjdHMgd2l0aCBlbXB0eSAnZnJvbScga2V5c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhcnJheXMgPSBbXG4gICAgICAgIHsgZnJvbTogJycsIHRvOiAndmFsMScgfSxcbiAgICAgICAgeyBmcm9tOiAnJywgdG86ICd2YWwyJyB9LFxuICAgICAgICB7IGZyb206ICcnLCB0bzogJ3ZhbDMnIH0sXG4gICAgICBdO1xuICAgICAgY29uc3QgZXhwZWN0ZWRIYXNoTWFwID0ge307XG4gICAgICBjb25zdCByZXN1bHQgPSBnZXRIYXNoRnJvbUFycmF5V2l0aER1cGxpY2F0ZShhcnJheXMpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZEhhc2hNYXApO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gY29ycmVjdGx5IGhhbmRsZXMgYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIGVtcHR5ICd0bycga2V5c1xuICAgIGl0KFwic2hvdWxkIHJldHVybiBhbiBlbXB0eSBoYXNoTWFwIHdoZW4gdGhlICd0bycga2V5IGlzIGVtcHR5IGluIGFsbCBvYmplY3RzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFycmF5cyA9IFtcbiAgICAgICAgeyBmcm9tOiAncHJvcDEnLCB0bzogJycgfSxcbiAgICAgICAgeyBmcm9tOiAncHJvcDInLCB0bzogJycgfSxcbiAgICAgICAgeyBmcm9tOiAncHJvcDMnLCB0bzogJycgfSxcbiAgICAgIF07XG4gICAgICBjb25zdCBleHBlY3RlZEhhc2hNYXAgPSB7IHByb3AxOiBuZXcgU2V0KFsnJ10pLCBwcm9wMjogbmV3IFNldChbJyddKSwgcHJvcDM6IG5ldyBTZXQoWycnXSkgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEhhc2hGcm9tQXJyYXlXaXRoRHVwbGljYXRlKGFycmF5cyk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkSGFzaE1hcCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiBjb3JyZWN0bHkgZ2VuZXJhdGVzIGEgaGFzaE1hcCBmcm9tIGEgdmFsaWQgYXJyYXkgb2Ygb2JqZWN0cyB3aXRoICdmcm9tJyBhbmQgJ3RvJyBrZXlzIHdoZW4gaXNMb3dlckNhc2UgaXMgc2V0IHRvIGZhbHNlXG4gICAgaXQoXCJzaG91bGQgY29ycmVjdGx5IGdlbmVyYXRlIGEgaGFzaE1hcCBmcm9tIGEgdmFsaWQgYXJyYXkgb2Ygb2JqZWN0cyB3aXRoICdmcm9tJyBhbmQgJ3RvJyBrZXlzIHdoZW4gaXNMb3dlckNhc2UgaXMgc2V0IHRvIGZhbHNlXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFycmF5cyA9IFtcbiAgICAgICAgeyBmcm9tOiAncHJvcDEnLCB0bzogJ3ZhbDEnIH0sXG4gICAgICAgIHsgZnJvbTogJ3Byb3AxJywgdG86ICd2YWwyJyB9LFxuICAgICAgICB7IGZyb206ICdwcm9wMicsIHRvOiAndmFsMicgfSxcbiAgICAgIF07XG4gICAgICBjb25zdCBleHBlY3RlZEhhc2hNYXAgPSB7XG4gICAgICAgIHByb3AxOiBuZXcgU2V0KFsndmFsMScsICd2YWwyJ10pLFxuICAgICAgICBwcm9wMjogbmV3IFNldChbJ3ZhbDInXSksXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0SGFzaEZyb21BcnJheVdpdGhEdXBsaWNhdGUoYXJyYXlzLCAnZnJvbScsICd0bycsIGZhbHNlKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRIYXNoTWFwKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseSBnZW5lcmF0ZXMgYSBoYXNoTWFwIGZyb20gYSB2YWxpZCBhcnJheSBvZiBvYmplY3RzIHdpdGggY3VzdG9tIGZyb21LZXkgYW5kIHRvS2V5IHZhbHVlc1xuICAgIGl0KCdzaG91bGQgY29ycmVjdGx5IGdlbmVyYXRlIGEgaGFzaE1hcCBmcm9tIGEgdmFsaWQgYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIGN1c3RvbSBmcm9tS2V5IGFuZCB0b0tleSB2YWx1ZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBhcnJheXMgPSBbXG4gICAgICAgIHsgZnJvbTogJ3Byb3AxJywgdG86ICd2YWwxJyB9LFxuICAgICAgICB7IGZyb206ICdwcm9wMScsIHRvOiAndmFsMicgfSxcbiAgICAgICAgeyBmcm9tOiAncHJvcDInLCB0bzogJ3ZhbDInIH0sXG4gICAgICBdO1xuICAgICAgY29uc3QgZXhwZWN0ZWRIYXNoTWFwID0ge1xuICAgICAgICBwcm9wMTogbmV3IFNldChbJ3ZhbDEnLCAndmFsMiddKSxcbiAgICAgICAgcHJvcDI6IG5ldyBTZXQoWyd2YWwyJ10pLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEhhc2hGcm9tQXJyYXlXaXRoRHVwbGljYXRlKGFycmF5cywgJ2Zyb20nLCAndG8nKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRIYXNoTWFwKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseSBnZW5lcmF0ZXMgYSBoYXNoTWFwIGZyb20gYSB2YWxpZCBhcnJheSBvZiBvYmplY3RzIHdpdGggJ2Zyb20nIGFuZCAndG8nIGtleXMgd2hlbiBpc0xvd2VyQ2FzZSBpcyBzZXQgdG8gdHJ1ZVxuICAgIGl0KFwic2hvdWxkIGNvcnJlY3RseSBnZW5lcmF0ZSBhIGhhc2hNYXAgZnJvbSBhIHZhbGlkIGFycmF5IG9mIG9iamVjdHMgd2l0aCAnZnJvbScgYW5kICd0bycga2V5cyB3aGVuIGlzTG93ZXJDYXNlIGlzIHNldCB0byB0cnVlXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFycmF5cyA9IFtcbiAgICAgICAgeyBmcm9tOiAncHJvcDEnLCB0bzogJ3ZhbDEnIH0sXG4gICAgICAgIHsgZnJvbTogJ3Byb3AxJywgdG86ICd2YWwyJyB9LFxuICAgICAgICB7IGZyb206ICdwcm9wMicsIHRvOiAndmFsMicgfSxcbiAgICAgIF07XG4gICAgICBjb25zdCBleHBlY3RlZEhhc2hNYXAgPSB7XG4gICAgICAgIHByb3AxOiBuZXcgU2V0KFsndmFsMScsICd2YWwyJ10pLFxuICAgICAgICBwcm9wMjogbmV3IFNldChbJ3ZhbDInXSksXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0SGFzaEZyb21BcnJheVdpdGhEdXBsaWNhdGUoYXJyYXlzLCAnZnJvbScsICd0bycsIHRydWUpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZEhhc2hNYXApO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gY29ycmVjdGx5IGdlbmVyYXRlcyBhIGhhc2hNYXAgZnJvbSBhIHZhbGlkIGFycmF5IG9mIG9iamVjdHMgd2l0aCAnZnJvbScgYW5kICd0bycga2V5c1xuICAgIGl0KFwic2hvdWxkIGNvcnJlY3RseSBnZW5lcmF0ZSBhIGhhc2hNYXAgZnJvbSBhIHZhbGlkIGFycmF5IG9mIG9iamVjdHMgd2l0aCAnZnJvbScgYW5kICd0bycga2V5c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhcnJheXMgPSBbXG4gICAgICAgIHsgZnJvbTogJ3Byb3AxJywgdG86ICd2YWwxJyB9LFxuICAgICAgICB7IGZyb206ICdwcm9wMScsIHRvOiAndmFsMicgfSxcbiAgICAgICAgeyBmcm9tOiAncHJvcDInLCB0bzogJ3ZhbDInIH0sXG4gICAgICBdO1xuICAgICAgY29uc3QgZXhwZWN0ZWRIYXNoTWFwID0ge1xuICAgICAgICBwcm9wMTogbmV3IFNldChbJ3ZhbDEnLCAndmFsMiddKSxcbiAgICAgICAgcHJvcDI6IG5ldyBTZXQoWyd2YWwyJ10pLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEhhc2hGcm9tQXJyYXlXaXRoRHVwbGljYXRlKGFycmF5cyk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkSGFzaE1hcCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXRWYWx1ZUZyb21Qcm9wZXJ0aWVzT3JUcmFpdHMnLCAoKSA9PiB7XG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGtleSBmcm9tIHByb3BlcnRpZXMgaWYgaXQgZXhpc3RzLlxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUga2V5IGZyb20gcHJvcGVydGllcyB3aGVuIGl0IGV4aXN0cycsICgpID0+IHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSB7XG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBrZXk6ICd2YWx1ZScsXG4gICAgICAgIH0sXG4gICAgICAgIHRyYWl0czoge30sXG4gICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICB0cmFpdHM6IHt9LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGtleSA9ICdrZXknO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0VmFsdWVGcm9tUHJvcGVydGllc09yVHJhaXRzKHsgbWVzc2FnZSwga2V5IH0pO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgndmFsdWUnKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBrZXkgZnJvbSB0cmFpdHMgaWYgaXQgZXhpc3RzLlxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUga2V5IGZyb20gdHJhaXRzIHdoZW4gaXQgZXhpc3RzJywgKCkgPT4ge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IHtcbiAgICAgICAgcHJvcGVydGllczoge30sXG4gICAgICAgIHRyYWl0czoge1xuICAgICAgICAgIGtleTogJ3ZhbHVlJyxcbiAgICAgICAgfSxcbiAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgIHRyYWl0czoge30sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgY29uc3Qga2V5ID0gJ2tleSc7XG4gICAgICBjb25zdCByZXN1bHQgPSBnZXRWYWx1ZUZyb21Qcm9wZXJ0aWVzT3JUcmFpdHMoeyBtZXNzYWdlLCBrZXkgfSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCd2YWx1ZScpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGtleSBmcm9tIGNvbnRleHQudHJhaXRzIGlmIGl0IGV4aXN0cy5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGtleSBmcm9tIGNvbnRleHQudHJhaXRzIHdoZW4gaXQgZXhpc3RzJywgKCkgPT4ge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IHtcbiAgICAgICAgcHJvcGVydGllczoge30sXG4gICAgICAgIHRyYWl0czoge30sXG4gICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICB0cmFpdHM6IHtcbiAgICAgICAgICAgIGtleTogJ3ZhbHVlJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGtleSA9ICdrZXknO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0VmFsdWVGcm9tUHJvcGVydGllc09yVHJhaXRzKHsgbWVzc2FnZSwga2V5IH0pO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgndmFsdWUnKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgbnVsbCBpZiB0aGUgbWVzc2FnZSBpcyBudWxsLlxuICAgIGl0KCdzaG91bGQgcmV0dXJuIG51bGwgd2hlbiB0aGUgbWVzc2FnZSBpcyBudWxsJywgKCkgPT4ge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IG51bGw7XG4gICAgICBjb25zdCBrZXkgPSAna2V5JztcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldFZhbHVlRnJvbVByb3BlcnRpZXNPclRyYWl0cyh7IG1lc3NhZ2UsIGtleSB9KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmVOdWxsKCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIG51bGwgaWYgdGhlIGtleSBpcyBudWxsLlxuICAgIGl0KCdzaG91bGQgcmV0dXJuIG51bGwgd2hlbiB0aGUga2V5IGlzIG51bGwnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtZXNzYWdlID0ge1xuICAgICAgICBwcm9wZXJ0aWVzOiB7fSxcbiAgICAgICAgdHJhaXRzOiB7fSxcbiAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgIHRyYWl0czoge30sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgY29uc3Qga2V5ID0gbnVsbDtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldFZhbHVlRnJvbVByb3BlcnRpZXNPclRyYWl0cyh7IG1lc3NhZ2UsIGtleSB9KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmVOdWxsKCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIG51bGwgaWYgdGhlIGtleSBkb2VzIG5vdCBleGlzdCBpbiBhbnkgb2YgdGhlIGtleVNldHMuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gbnVsbCB3aGVuIHRoZSBrZXkgZG9lcyBub3QgZXhpc3QgaW4gYW55IG9mIHRoZSBrZXlTZXRzJywgKCkgPT4ge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IHtcbiAgICAgICAgcHJvcGVydGllczoge30sXG4gICAgICAgIHRyYWl0czoge30sXG4gICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICB0cmFpdHM6IHt9LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGtleSA9ICdub25leGlzdGVudEtleSc7XG4gICAgICBjb25zdCByZXN1bHQgPSBnZXRWYWx1ZUZyb21Qcm9wZXJ0aWVzT3JUcmFpdHMoeyBtZXNzYWdlLCBrZXkgfSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlTnVsbCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZmxhdHRlbkpzb24nLCAoKSA9PiB7XG4gICAgLy8gVGVzdHMgdGhhdCBmbGF0dGVuSnNvbiBmdW5jdGlvbiBjb3JyZWN0bHkgZmxhdHRlbnMgYSBzaW1wbGUgSlNPTiBvYmplY3Qgd2l0aCBubyBuZXN0ZWQgb2JqZWN0cyBvciBhcnJheXMuXG4gICAgaXQoJ3Nob3VsZCBjb3JyZWN0bHkgZmxhdHRlbiBhIHNpbXBsZSBKU09OIG9iamVjdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB7IG5hbWU6ICdKb2huJywgYWdlOiAzMCwgY2l0eTogJ05ldyBZb3JrJyB9O1xuICAgICAgY29uc3QgZXhwZWN0ZWRSZXN1bHQgPSB7IG5hbWU6ICdKb2huJywgYWdlOiAzMCwgY2l0eTogJ05ldyBZb3JrJyB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZmxhdHRlbkpzb24oZGF0YSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkUmVzdWx0KTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgZmxhdHRlbkpzb24gZnVuY3Rpb24gY29ycmVjdGx5IGZsYXR0ZW5zIGEgSlNPTiBvYmplY3Qgd2l0aCBuZXN0ZWQgb2JqZWN0cyBhbmQgYXJyYXlzLlxuICAgIGl0KCdzaG91bGQgY29ycmVjdGx5IGZsYXR0ZW4gYSBKU09OIG9iamVjdCB3aXRoIG5lc3RlZCBvYmplY3RzIGFuZCBhcnJheXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICBuYW1lOiAnSm9obicsXG4gICAgICAgIGFnZTogMzAsXG4gICAgICAgIGFkZHJlc3M6IHtcbiAgICAgICAgICBzdHJlZXQ6ICcxMjMgTWFpbiBTdCcsXG4gICAgICAgICAgY2l0eTogJ05ldyBZb3JrJyxcbiAgICAgICAgICBjb3VudHJ5OiAnVVNBJyxcbiAgICAgICAgfSxcbiAgICAgICAgaG9iYmllczogWydyZWFkaW5nJywgJ3BhaW50aW5nJ10sXG4gICAgICB9O1xuICAgICAgY29uc3QgZXhwZWN0ZWRSZXN1bHQgPSB7XG4gICAgICAgIG5hbWU6ICdKb2huJyxcbiAgICAgICAgYWdlOiAzMCxcbiAgICAgICAgJ2FkZHJlc3Muc3RyZWV0JzogJzEyMyBNYWluIFN0JyxcbiAgICAgICAgJ2FkZHJlc3MuY2l0eSc6ICdOZXcgWW9yaycsXG4gICAgICAgICdhZGRyZXNzLmNvdW50cnknOiAnVVNBJyxcbiAgICAgICAgJ2hvYmJpZXNbMF0nOiAncmVhZGluZycsXG4gICAgICAgICdob2JiaWVzWzFdJzogJ3BhaW50aW5nJyxcbiAgICAgIH07XG4gICAgICBjb25zdCByZXN1bHQgPSBmbGF0dGVuSnNvbihkYXRhKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRSZXN1bHQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBmbGF0dGVuSnNvbiBmdW5jdGlvbiBjb3JyZWN0bHkgZmxhdHRlbnMgYSBKU09OIG9iamVjdCB3aXRoIG51bGwgYW5kIHVuZGVmaW5lZCB2YWx1ZXMuXG4gICAgaXQoJ3Nob3VsZCBjb3JyZWN0bHkgZmxhdHRlbiBhIEpTT04gb2JqZWN0IHdpdGggbnVsbCBhbmQgdW5kZWZpbmVkIHZhbHVlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB7IG5hbWU6IG51bGwsIGFnZTogdW5kZWZpbmVkLCBjaXR5OiAnTmV3IFlvcmsnIH07XG4gICAgICBjb25zdCBleHBlY3RlZFJlc3VsdCA9IHsgbmFtZTogbnVsbCwgYWdlOiB1bmRlZmluZWQsIGNpdHk6ICdOZXcgWW9yaycgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZsYXR0ZW5Kc29uKGRhdGEpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZFJlc3VsdCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGZsYXR0ZW5Kc29uIGZ1bmN0aW9uIGNvcnJlY3RseSBmbGF0dGVucyBhIEpTT04gb2JqZWN0IHdpdGggZW1wdHkgYXJyYXlzIGFuZCBvYmplY3RzLlxuICAgIGl0KCdzaG91bGQgY29ycmVjdGx5IGZsYXR0ZW4gYSBKU09OIG9iamVjdCB3aXRoIGVtcHR5IGFycmF5cyBhbmQgb2JqZWN0cycsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB7IG5hbWU6IFtdLCBhZ2U6IHt9LCBjaXR5OiAnTmV3IFlvcmsnIH07XG4gICAgICBjb25zdCBleHBlY3RlZFJlc3VsdCA9IHsgbmFtZTogW10sIGFnZToge30sIGNpdHk6ICdOZXcgWW9yaycgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZsYXR0ZW5Kc29uKGRhdGEpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZFJlc3VsdCk7XG4gICAgfSk7XG5cbiAgICAvLyAvLyBOZWVkIHRvIGZpeCB0aGlzIHRlc3RcbiAgICAvLyAvLyBUZXN0cyB0aGF0IGZsYXR0ZW5Kc29uIGZ1bmN0aW9uIGhhbmRsZXMgY2lyY3VsYXIgcmVmZXJlbmNlcyBpbiBhIEpTT04gb2JqZWN0IGNvcnJlY3RseS5cbiAgICAvLyBpdCgnc2hvdWxkIGhhbmRsZSBjaXJjdWxhciByZWZlcmVuY2VzIGluIGEgSlNPTiBvYmplY3QgY29ycmVjdGx5JywgKCkgPT4ge1xuICAgIC8vICAgY29uc3QgZGF0YSA9IHsgbmFtZTogJ0pvaG4nLCBhZ2U6IDMwIH07XG4gICAgLy8gICBkYXRhWydzZWxmJ10gPSBkYXRhO1xuICAgIC8vICAgY29uc3QgZXhwZWN0ZWRSZXN1bHQgPSB7IG5hbWU6ICdKb2huJywgYWdlOiAzMCwgc2VsZjogJ1tDaXJjdWxhcl0nIH07XG4gICAgLy8gICBjb25zdCByZXN1bHQgPSBmbGF0dGVuSnNvbihkYXRhKTtcbiAgICAvLyAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRSZXN1bHQpO1xuICAgIC8vIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBmbGF0dGVuSnNvbiBmdW5jdGlvbiBjb3JyZWN0bHkgZmxhdHRlbnMgYSBKU09OIG9iamVjdCB3aXRoIGtleXMgY29udGFpbmluZyBzcGVjaWFsIGNoYXJhY3RlcnMuXG4gICAgaXQoJ3Nob3VsZCBjb3JyZWN0bHkgZmxhdHRlbiBhIEpTT04gb2JqZWN0IHdpdGgga2V5cyBjb250YWluaW5nIHNwZWNpYWwgY2hhcmFjdGVycycsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB7ICduYW1lLmZpcnN0JzogJ0pvaG4nLCAnbmFtZS5sYXN0JzogJ0RvZScsICdhZ2VAJzogMzAgfTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkUmVzdWx0ID0geyAnbmFtZS5maXJzdCc6ICdKb2huJywgJ25hbWUubGFzdCc6ICdEb2UnLCAnYWdlQCc6IDMwIH07XG4gICAgICBjb25zdCByZXN1bHQgPSBmbGF0dGVuSnNvbihkYXRhKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRSZXN1bHQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdCB0aGF0IHRoZSBmbGF0dGVuSnNvbiBmdW5jdGlvbiBjb3JyZWN0bHkgZmxhdHRlbnMgYSBKU09OIG9iamVjdCB3aXRoIG5vbi1zdHJpbmcga2V5cy5cbiAgICBpdCgnc2hvdWxkIGNvcnJlY3RseSBmbGF0dGVuIGEgSlNPTiBvYmplY3Qgd2l0aCBub24tc3RyaW5nIGtleXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0geyAxOiAnb25lJywgMjogJ3R3bycsIDM6ICd0aHJlZScgfTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkUmVzdWx0ID0geyAnMSc6ICdvbmUnLCAnMic6ICd0d28nLCAnMyc6ICd0aHJlZScgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZsYXR0ZW5Kc29uKGRhdGEpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZFJlc3VsdCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGZsYXR0ZW5Kc29uIGZ1bmN0aW9uIGNvcnJlY3RseSBmbGF0dGVucyBhIEpTT04gb2JqZWN0IHdpdGgga2V5cyBjb250YWluaW5nIHRoZSBzZXBhcmF0b3IgY2hhcmFjdGVyLlxuICAgIGl0KCdzaG91bGQgY29ycmVjdGx5IGZsYXR0ZW4gYSBKU09OIG9iamVjdCB3aXRoIGtleXMgY29udGFpbmluZyB0aGUgc2VwYXJhdG9yIGNoYXJhY3RlcicsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB7ICduYW1lLmZpcnN0JzogJ0pvaG4nLCAnbmFtZS5sYXN0JzogJ0RvZScsIGFnZTogMzAsIGNpdHk6ICdOZXcgWW9yaycgfTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkUmVzdWx0ID0ge1xuICAgICAgICAnbmFtZS5maXJzdCc6ICdKb2huJyxcbiAgICAgICAgJ25hbWUubGFzdCc6ICdEb2UnLFxuICAgICAgICBhZ2U6IDMwLFxuICAgICAgICBjaXR5OiAnTmV3IFlvcmsnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZsYXR0ZW5Kc29uKGRhdGEpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZFJlc3VsdCk7XG4gICAgfSk7XG5cbiAgICAvLyBUaGUgdGVzdCBvYmplY3RpdmUgaXMgdG8gdmVyaWZ5IHRoYXQgdGhlIGZsYXR0ZW5Kc29uIGZ1bmN0aW9uIGNvcnJlY3RseSBmbGF0dGVucyBhIEpTT04gb2JqZWN0IHdpdGgga2V5cyB0aGF0IGFyZSByZXNlcnZlZCB3b3Jkcy5cbiAgICBpdCgnc2hvdWxkIGNvcnJlY3RseSBmbGF0dGVuIGEgSlNPTiBvYmplY3Qgd2l0aCByZXNlcnZlZCB3b3JkIGtleXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0geyBjbGFzczogJ01hdGgnLCBmdW5jdGlvbjogJ2FkZCcsIHJldHVybjogJ3Jlc3VsdCcgfTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkUmVzdWx0ID0geyBjbGFzczogJ01hdGgnLCBmdW5jdGlvbjogJ2FkZCcsIHJldHVybjogJ3Jlc3VsdCcgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZsYXR0ZW5Kc29uKGRhdGEpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZFJlc3VsdCk7XG4gICAgfSk7XG5cbiAgICAvLyBUaGUgdGVzdCBvYmplY3RpdmUgaXMgdG8gdmVyaWZ5IHRoYXQgdGhlICdmbGF0dGVuSnNvbicgZnVuY3Rpb24gY29ycmVjdGx5IGZsYXR0ZW5zIGEgSlNPTiBvYmplY3Qgd2l0aCBkZWVwbHkgbmVzdGVkIG9iamVjdHMgYW5kIGFycmF5cy5cbiAgICBpdCgnc2hvdWxkIGNvcnJlY3RseSBmbGF0dGVuIGEgSlNPTiBvYmplY3Qgd2l0aCBkZWVwbHkgbmVzdGVkIG9iamVjdHMgYW5kIGFycmF5cycsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgIG5hbWU6ICdKb2huJyxcbiAgICAgICAgYWdlOiAzMCxcbiAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgIHN0cmVldDogJzEyMyBNYWluIFN0JyxcbiAgICAgICAgICBjaXR5OiAnTmV3IFlvcmsnLFxuICAgICAgICAgIHN0YXRlOiAnTlknLFxuICAgICAgICAgIHppcDogJzEwMDAxJyxcbiAgICAgICAgfSxcbiAgICAgICAgaG9iYmllczogWydyZWFkaW5nJywgJ3BhaW50aW5nJywgJ2Nvb2tpbmcnXSxcbiAgICAgICAgZnJpZW5kczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdKYW5lJyxcbiAgICAgICAgICAgIGFnZTogMjgsXG4gICAgICAgICAgICBhZGRyZXNzOiB7XG4gICAgICAgICAgICAgIHN0cmVldDogJzQ1NiBFbG0gU3QnLFxuICAgICAgICAgICAgICBjaXR5OiAnTG9zIEFuZ2VsZXMnLFxuICAgICAgICAgICAgICBzdGF0ZTogJ0NBJyxcbiAgICAgICAgICAgICAgemlwOiAnOTAwMDEnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhvYmJpZXM6IFsnaGlraW5nJywgJ3Bob3RvZ3JhcGh5J10sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnTWlrZScsXG4gICAgICAgICAgICBhZ2U6IDMyLFxuICAgICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgICBzdHJlZXQ6ICc3ODkgT2FrIFN0JyxcbiAgICAgICAgICAgICAgY2l0eTogJ0NoaWNhZ28nLFxuICAgICAgICAgICAgICBzdGF0ZTogJ0lMJyxcbiAgICAgICAgICAgICAgemlwOiAnNjAwMDcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhvYmJpZXM6IFsncnVubmluZycsICdnYW1pbmcnXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkUmVzdWx0ID0ge1xuICAgICAgICBuYW1lOiAnSm9obicsXG4gICAgICAgIGFnZTogMzAsXG4gICAgICAgICdhZGRyZXNzLnN0cmVldCc6ICcxMjMgTWFpbiBTdCcsXG4gICAgICAgICdhZGRyZXNzLmNpdHknOiAnTmV3IFlvcmsnLFxuICAgICAgICAnYWRkcmVzcy5zdGF0ZSc6ICdOWScsXG4gICAgICAgICdhZGRyZXNzLnppcCc6ICcxMDAwMScsXG4gICAgICAgICdob2JiaWVzWzBdJzogJ3JlYWRpbmcnLFxuICAgICAgICAnaG9iYmllc1sxXSc6ICdwYWludGluZycsXG4gICAgICAgICdob2JiaWVzWzJdJzogJ2Nvb2tpbmcnLFxuICAgICAgICAnZnJpZW5kc1swXS5uYW1lJzogJ0phbmUnLFxuICAgICAgICAnZnJpZW5kc1swXS5hZ2UnOiAyOCxcbiAgICAgICAgJ2ZyaWVuZHNbMF0uYWRkcmVzcy5zdHJlZXQnOiAnNDU2IEVsbSBTdCcsXG4gICAgICAgICdmcmllbmRzWzBdLmFkZHJlc3MuY2l0eSc6ICdMb3MgQW5nZWxlcycsXG4gICAgICAgICdmcmllbmRzWzBdLmFkZHJlc3Muc3RhdGUnOiAnQ0EnLFxuICAgICAgICAnZnJpZW5kc1swXS5hZGRyZXNzLnppcCc6ICc5MDAwMScsXG4gICAgICAgICdmcmllbmRzWzBdLmhvYmJpZXNbMF0nOiAnaGlraW5nJyxcbiAgICAgICAgJ2ZyaWVuZHNbMF0uaG9iYmllc1sxXSc6ICdwaG90b2dyYXBoeScsXG4gICAgICAgICdmcmllbmRzWzFdLm5hbWUnOiAnTWlrZScsXG4gICAgICAgICdmcmllbmRzWzFdLmFnZSc6IDMyLFxuICAgICAgICAnZnJpZW5kc1sxXS5hZGRyZXNzLnN0cmVldCc6ICc3ODkgT2FrIFN0JyxcbiAgICAgICAgJ2ZyaWVuZHNbMV0uYWRkcmVzcy5jaXR5JzogJ0NoaWNhZ28nLFxuICAgICAgICAnZnJpZW5kc1sxXS5hZGRyZXNzLnN0YXRlJzogJ0lMJyxcbiAgICAgICAgJ2ZyaWVuZHNbMV0uYWRkcmVzcy56aXAnOiAnNjAwMDcnLFxuICAgICAgICAnZnJpZW5kc1sxXS5ob2JiaWVzWzBdJzogJ3J1bm5pbmcnLFxuICAgICAgICAnZnJpZW5kc1sxXS5ob2JiaWVzWzFdJzogJ2dhbWluZycsXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZmxhdHRlbkpzb24oZGF0YSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkUmVzdWx0KTtcbiAgICB9KTtcblxuICAgIC8vIFRoZSB0ZXN0IG9iamVjdGl2ZSBpcyB0byB2ZXJpZnkgdGhhdCB0aGUgJ2ZsYXR0ZW5Kc29uJyBmdW5jdGlvbiBjb3JyZWN0bHkgZmxhdHRlbnMgYSBKU09OIG9iamVjdCB3aXRoIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGluIGtleXMgYW5kIHZhbHVlcy5cbiAgICBpdCgnc2hvdWxkIGNvcnJlY3RseSBmbGF0dGVuIGEgSlNPTiBvYmplY3Qgd2l0aCBub24tQVNDSUkgY2hhcmFjdGVycyBpbiBrZXlzIGFuZCB2YWx1ZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICBuYW1lOiAnSm9obicsXG4gICAgICAgIGFnZTogMzAsXG4gICAgICAgIGNpdHk6ICdOZXcgWW9yaycsXG4gICAgICAgIGFkZHJlc3M6IHsgc3RyZWV0OiAnMTIzIE1haW4gU3QnLCBjaXR5OiAnU2FuIEZyYW5jaXNjbycgfSxcbiAgICAgIH07XG4gICAgICBjb25zdCBleHBlY3RlZFJlc3VsdCA9IHtcbiAgICAgICAgbmFtZTogJ0pvaG4nLFxuICAgICAgICBhZ2U6IDMwLFxuICAgICAgICBjaXR5OiAnTmV3IFlvcmsnLFxuICAgICAgICAnYWRkcmVzcy5zdHJlZXQnOiAnMTIzIE1haW4gU3QnLFxuICAgICAgICAnYWRkcmVzcy5jaXR5JzogJ1NhbiBGcmFuY2lzY28nLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZsYXR0ZW5Kc29uKGRhdGEpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZFJlc3VsdCk7XG4gICAgfSk7XG5cbiAgICAvLyBUaGUgdGVzdCBvYmplY3RpdmUgaXMgdG8gdmVyaWZ5IHRoYXQgdGhlIGZsYXR0ZW5Kc29uIGZ1bmN0aW9uIGNvcnJlY3RseSBmbGF0dGVucyBhIEpTT04gb2JqZWN0IHdpdGggZGVlcGx5IG5lc3RlZCBhcnJheXMgYW5kIG9iamVjdHMsIGluY2x1ZGluZyBudWxsIGFuZCB1bmRlZmluZWQgdmFsdWVzLlxuICAgIGl0KCdzaG91bGQgY29ycmVjdGx5IGZsYXR0ZW4gYSBKU09OIG9iamVjdCB3aXRoIGRlZXBseSBuZXN0ZWQgYXJyYXlzIGFuZCBvYmplY3RzIHdpdGggbnVsbCBhbmQgdW5kZWZpbmVkIHZhbHVlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgIG5hbWU6ICdKb2huJyxcbiAgICAgICAgYWdlOiAzMCxcbiAgICAgICAgY2l0eTogJ05ldyBZb3JrJyxcbiAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgIHN0cmVldDogJzEyMyBNYWluIFN0JyxcbiAgICAgICAgICB6aXA6IDEyMzQ1LFxuICAgICAgICAgIGNvdW50cnk6ICdVU0EnLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiB7XG4gICAgICAgICAgICBsYXRpdHVkZTogNDAuNzEyOCxcbiAgICAgICAgICAgIGxvbmdpdHVkZTogLTc0LjAwNixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBob2JiaWVzOiBbJ3JlYWRpbmcnLCAncGFpbnRpbmcnLCAnc3dpbW1pbmcnXSxcbiAgICAgICAgZnJpZW5kczogW1xuICAgICAgICAgIHsgbmFtZTogJ0phbmUnLCBhZ2U6IDI4IH0sXG4gICAgICAgICAgeyBuYW1lOiAnTWlrZScsIGFnZTogMzIgfSxcbiAgICAgICAgICB7IG5hbWU6ICdTYXJhaCcsIGFnZTogMjcgfSxcbiAgICAgICAgXSxcbiAgICAgICAgcGV0OiBudWxsLFxuICAgICAgICBmYXZvcml0ZUNvbG9yOiB1bmRlZmluZWQsXG4gICAgICB9O1xuICAgICAgY29uc3QgZXhwZWN0ZWRSZXN1bHQgPSB7XG4gICAgICAgIG5hbWU6ICdKb2huJyxcbiAgICAgICAgYWdlOiAzMCxcbiAgICAgICAgY2l0eTogJ05ldyBZb3JrJyxcbiAgICAgICAgJ2FkZHJlc3Muc3RyZWV0JzogJzEyMyBNYWluIFN0JyxcbiAgICAgICAgJ2FkZHJlc3MuemlwJzogMTIzNDUsXG4gICAgICAgICdhZGRyZXNzLmNvdW50cnknOiAnVVNBJyxcbiAgICAgICAgJ2FkZHJlc3MuY29vcmRpbmF0ZXMubGF0aXR1ZGUnOiA0MC43MTI4LFxuICAgICAgICAnYWRkcmVzcy5jb29yZGluYXRlcy5sb25naXR1ZGUnOiAtNzQuMDA2LFxuICAgICAgICAnaG9iYmllc1swXSc6ICdyZWFkaW5nJyxcbiAgICAgICAgJ2hvYmJpZXNbMV0nOiAncGFpbnRpbmcnLFxuICAgICAgICAnaG9iYmllc1syXSc6ICdzd2ltbWluZycsXG4gICAgICAgICdmcmllbmRzWzBdLm5hbWUnOiAnSmFuZScsXG4gICAgICAgICdmcmllbmRzWzBdLmFnZSc6IDI4LFxuICAgICAgICAnZnJpZW5kc1sxXS5uYW1lJzogJ01pa2UnLFxuICAgICAgICAnZnJpZW5kc1sxXS5hZ2UnOiAzMixcbiAgICAgICAgJ2ZyaWVuZHNbMl0ubmFtZSc6ICdTYXJhaCcsXG4gICAgICAgICdmcmllbmRzWzJdLmFnZSc6IDI3LFxuICAgICAgICBwZXQ6IG51bGwsXG4gICAgICAgIGZhdm9yaXRlQ29sb3I6IHVuZGVmaW5lZCxcbiAgICAgIH07XG4gICAgICBjb25zdCByZXN1bHQgPSBmbGF0dGVuSnNvbihkYXRhKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRSZXN1bHQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBmbGF0dGVuSnNvbiBmdW5jdGlvbiBjb3JyZWN0bHkgZmxhdHRlbnMgYSBKU09OIG9iamVjdCB3aXRoIGFycmF5cyBjb250YWluaW5nIG9iamVjdHMgd2l0aCBkaWZmZXJlbnQgbmVzdGluZyBsZXZlbHMuXG4gICAgaXQoJ3Nob3VsZCBjb3JyZWN0bHkgZmxhdHRlbiBhIEpTT04gb2JqZWN0IHdpdGggYXJyYXlzIGNvbnRhaW5pbmcgb2JqZWN0cyB3aXRoIGRpZmZlcmVudCBuZXN0aW5nIGxldmVscycsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgIG5hbWU6ICdKb2huJyxcbiAgICAgICAgYWdlOiAzMCxcbiAgICAgICAgY2l0eTogJ05ldyBZb3JrJyxcbiAgICAgICAgaG9iYmllczogW1xuICAgICAgICAgIHsgbmFtZTogJ1JlYWRpbmcnLCB0eXBlOiAnSW5kb29yJyB9LFxuICAgICAgICAgIHsgbmFtZTogJ1J1bm5pbmcnLCB0eXBlOiAnT3V0ZG9vcicgfSxcbiAgICAgICAgICB7IG5hbWU6ICdDb29raW5nJywgdHlwZTogJ0luZG9vcicgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZnJpZW5kczogW1xuICAgICAgICAgIHsgbmFtZTogJ0FsaWNlJywgYWdlOiAyOCB9LFxuICAgICAgICAgIHsgbmFtZTogJ0JvYicsIGFnZTogMzIgfSxcbiAgICAgICAgICB7IG5hbWU6ICdDaGFybGllJywgYWdlOiAyNyB9LFxuICAgICAgICBdLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkUmVzdWx0ID0ge1xuICAgICAgICBuYW1lOiAnSm9obicsXG4gICAgICAgIGFnZTogMzAsXG4gICAgICAgIGNpdHk6ICdOZXcgWW9yaycsXG4gICAgICAgICdob2JiaWVzWzBdLm5hbWUnOiAnUmVhZGluZycsXG4gICAgICAgICdob2JiaWVzWzBdLnR5cGUnOiAnSW5kb29yJyxcbiAgICAgICAgJ2hvYmJpZXNbMV0ubmFtZSc6ICdSdW5uaW5nJyxcbiAgICAgICAgJ2hvYmJpZXNbMV0udHlwZSc6ICdPdXRkb29yJyxcbiAgICAgICAgJ2hvYmJpZXNbMl0ubmFtZSc6ICdDb29raW5nJyxcbiAgICAgICAgJ2hvYmJpZXNbMl0udHlwZSc6ICdJbmRvb3InLFxuICAgICAgICAnZnJpZW5kc1swXS5uYW1lJzogJ0FsaWNlJyxcbiAgICAgICAgJ2ZyaWVuZHNbMF0uYWdlJzogMjgsXG4gICAgICAgICdmcmllbmRzWzFdLm5hbWUnOiAnQm9iJyxcbiAgICAgICAgJ2ZyaWVuZHNbMV0uYWdlJzogMzIsXG4gICAgICAgICdmcmllbmRzWzJdLm5hbWUnOiAnQ2hhcmxpZScsXG4gICAgICAgICdmcmllbmRzWzJdLmFnZSc6IDI3LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZsYXR0ZW5Kc29uKGRhdGEpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZFJlc3VsdCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXRPZmZzZXRJblNlYycsICgpID0+IHtcbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBvZmZzZXQgdmFsdWUgaW4gc2Vjb25kcyBmb3IgYSB2YWxpZCB0aW1lem9uZSBzdHJpbmdcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgb2Zmc2V0IHZhbHVlIGluIHNlY29uZHMgZm9yIGEgdmFsaWQgdGltZXpvbmUgc3RyaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3Qgb2Zmc2V0ID0gZ2V0T2Zmc2V0SW5TZWMoJ0FzaWEvS29sa2F0YScpO1xuICAgICAgZXhwZWN0KG9mZnNldCkudG9CZSgxOTgwMCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIDAgZm9yIHRoZSB0aW1lem9uZSBzdHJpbmcgJ1VUQydcbiAgICBpdCgnc2hvdWxkIHJldHVybiAwIGZvciB0aGUgdGltZXpvbmUgc3RyaW5nIFwiVVRDXCInLCAoKSA9PiB7XG4gICAgICBjb25zdCBvZmZzZXQgPSBnZXRPZmZzZXRJblNlYygnVVRDJyk7XG4gICAgICBleHBlY3Qob2Zmc2V0KS50b0JlKDApO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyAwIGZvciB0aGUgdGltZXpvbmUgc3RyaW5nICdFdGMvVVRDJ1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIDAgZm9yIHRoZSB0aW1lem9uZSBzdHJpbmcgXCJFdGMvVVRDXCInLCAoKSA9PiB7XG4gICAgICBjb25zdCBvZmZzZXQgPSBnZXRPZmZzZXRJblNlYygnRXRjL1VUQycpO1xuICAgICAgZXhwZWN0KG9mZnNldCkudG9CZSgwKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdW5kZWZpbmVkIGZvciBhbiBpbnZhbGlkIHRpbWV6b25lIHN0cmluZ1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCBmb3IgYW4gaW52YWxpZCB0aW1lem9uZSBzdHJpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvZmZzZXQgPSBnZXRPZmZzZXRJblNlYygnSW52YWxpZC9UaW1lem9uZScpO1xuICAgICAgZXhwZWN0KG9mZnNldCkudG9CZVVuZGVmaW5lZCgpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgdW5kZWZpbmVkIG9mZnNldCB2YWx1ZSBmb3IgdGhlIHRpbWV6b25lIHN0cmluZyAnKzA1OjMwJyBpbnZhbGlkIHRpbWV6b25lIHN0cmluZ1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSB1bmRlZmluZWQgb2Zmc2V0IHZhbHVlIGZvciB0aGUgdGltZXpvbmUgc3RyaW5nIFwiKzA1OjMwXCInLCAoKSA9PiB7XG4gICAgICBjb25zdCBvZmZzZXQgPSBnZXRPZmZzZXRJblNlYygnKzA1OjMwJyk7XG4gICAgICBleHBlY3Qob2Zmc2V0KS50b0JlKHVuZGVmaW5lZCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBjb3JyZWN0IG9mZnNldCB2YWx1ZSBmb3IgdGhlIHRpbWV6b25lIHN0cmluZyAnQW1lcmljYS9OZXdfWW9yaydcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgY29ycmVjdCBvZmZzZXQgdmFsdWUgZm9yIHRoZSB0aW1lem9uZSBzdHJpbmcgXCJBbWVyaWNhL05ld19Zb3JrXCInLCAoKSA9PiB7XG4gICAgICBjb25zdCBvZmZzZXQgPSBnZXRPZmZzZXRJblNlYygnQXNpYS9DYWxjdXR0YScpO1xuICAgICAgZXhwZWN0KG9mZnNldCkudG9CZSgxOTgwMCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdmb3JtYXRUaW1lU3RhbXAnLCAoKSA9PiB7XG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgdGltZXN0YW1wIGluIG1pbGxpc2Vjb25kcyB3aGVuIG5vIGZvcm1hdCBpcyBwcm92aWRlZC5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgdGltZXN0YW1wIGluIG1pbGxpc2Vjb25kcyB3aGVuIG5vIGZvcm1hdCBpcyBwcm92aWRlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGVTdHIgPSAnMjAyMi0wMS0wMVQwMDowMDowMC4wMDBaJztcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZvcm1hdFRpbWVTdGFtcChkYXRlU3RyKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoMTY0MDk5NTIwMDAwMCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSB0aW1lc3RhbXAgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgbW9tZW50IGZvcm1hdCB3aGVuIGZvcm1hdCBpcyBwcm92aWRlZC5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgdGltZXN0YW1wIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIG1vbWVudCBmb3JtYXQgd2hlbiBmb3JtYXQgaXMgcHJvdmlkZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRlU3RyID0gJzIwMjItMDEtMDFUMDA6MDA6MDAuMDAwWic7XG4gICAgICBjb25zdCBmb3JtYXQgPSAnWVlZWS1NTS1ERCc7XG4gICAgICBjb25zdCByZXN1bHQgPSBmb3JtYXRUaW1lU3RhbXAoZGF0ZVN0ciwgZm9ybWF0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJzIwMjItMDEtMDEnKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHRocm93cyBhbiBlcnJvciB3aGVuIGFuIGludmFsaWQgZGF0ZSBzdHJpbmcgaXMgcHJvdmlkZWQuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBhbiBlcnJvciB3aGVuIGFuIGludmFsaWQgZGF0ZSBzdHJpbmcgaXMgcHJvdmlkZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRlU3RyID0gJ2ludmFsaWQtZGF0ZSc7XG4gICAgICBleHBlY3QoZm9ybWF0VGltZVN0YW1wKGRhdGVTdHIpKS50b0JlTmFOKCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIE5hTiB3aGVuIGFuIGludmFsaWQgZGF0ZSBzdHJpbmcgaXMgcHJvdmlkZWQgYW5kIG5vIGZvcm1hdCBpcyBwcm92aWRlZC5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBOYU4gd2hlbiBhbiBpbnZhbGlkIGRhdGUgc3RyaW5nIGlzIHByb3ZpZGVkIGFuZCBubyBmb3JtYXQgaXMgcHJvdmlkZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRlU3RyID0gJ2ludmFsaWQtZGF0ZSc7XG4gICAgICBjb25zdCByZXN1bHQgPSBmb3JtYXRUaW1lU3RhbXAoZGF0ZVN0cik7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlTmFOKCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIE5hTiB3aGVuIGFuIGVtcHR5IHN0cmluZyBpcyBwcm92aWRlZCBhcyB0aGUgZGF0ZSBzdHJpbmcgYW5kIG5vIGZvcm1hdCBpcyBwcm92aWRlZC5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBOYU4gd2hlbiBhbiBlbXB0eSBzdHJpbmcgaXMgcHJvdmlkZWQgYXMgdGhlIGRhdGUgc3RyaW5nIGFuZCBubyBmb3JtYXQgaXMgcHJvdmlkZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRlU3RyID0gJyc7XG4gICAgICBjb25zdCByZXN1bHQgPSBmb3JtYXRUaW1lU3RhbXAoZGF0ZVN0cik7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlTmFOKCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIE5hTiB3aGVuIGFuIGludmFsaWQgZm9ybWF0IGlzIHByb3ZpZGVkLlxuICAgIGl0KCdzaG91bGQgcmV0dXJuIE5hTiB3aGVuIGFuIGludmFsaWQgZm9ybWF0IGlzIHByb3ZpZGVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0ZVN0ciA9ICcyMDIyLTAxLTAxVDAwOjAwOjAwLjAwMFonO1xuICAgICAgY29uc3QgZm9ybWF0ID0gJ2ludmFsaWRGb3JtYXQnO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZm9ybWF0VGltZVN0YW1wKGRhdGVTdHIsIGZvcm1hdCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKCdpbnZhbTEvMS8yMDIyaTZGb3IwYW10Jyk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSB0aW1lc3RhbXAgaW4gbWlsbGlzZWNvbmRzIHdoZW4gYSB2YWxpZCB0aW1lc3RhbXAgc3RyaW5nIGlzIHByb3ZpZGVkIGluc3RlYWQgb2YgYSBkYXRlIHN0cmluZy5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgdGltZXN0YW1wIGluIG1pbGxpc2Vjb25kcyB3aGVuIGEgdmFsaWQgdGltZXN0YW1wIHN0cmluZyBpcyBwcm92aWRlZCBpbnN0ZWFkIG9mIGEgZGF0ZSBzdHJpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRlU3RyID0gJzIwMjItMDEtMDFUMDA6MDA6MDAuMDAwWic7XG4gICAgICBjb25zdCByZXN1bHQgPSBmb3JtYXRUaW1lU3RhbXAoZGF0ZVN0cik7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKDE2NDA5OTUyMDAwMDApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnaGFzaFRvU2hhMjU2JywgKCkgPT4ge1xuICAgIC8vIFRlc3RzIHRoYXQgaGFzaFRvU2hhMjU2IHJldHVybnMgdGhlIFNIQTI1NiBoYXNoIG9mIGEgc3RyaW5nIGlucHV0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIFNIQTI1NiBoYXNoIG9mIGEgc3RyaW5nIGlucHV0JywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSAndGVzdCBzdHJpbmcnO1xuICAgICAgY29uc3QgZXhwZWN0ZWRPdXRwdXQgPSAnZDU1NzljNDZkZmNjN2YxODIwNzAxM2U2NWI0NGU0Y2I0ZTJjMjI5OGY0YWM0NTdiYThmODI3NDNmMzFlOTMwYic7XG4gICAgICBjb25zdCBvdXRwdXQgPSBoYXNoVG9TaGEyNTYoaW5wdXQpO1xuICAgICAgZXhwZWN0KG91dHB1dCkudG9CZShleHBlY3RlZE91dHB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGhhc2hUb1NoYTI1NiByZXR1cm5zIHRoZSBTSEEyNTYgaGFzaCBvZiBhIEJ1ZmZlciBpbnB1dFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBTSEEyNTYgaGFzaCBvZiBhIEJ1ZmZlciBpbnB1dCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gQnVmZmVyLmZyb20oJ3Rlc3QgYnVmZmVyJyk7XG4gICAgICBjb25zdCBleHBlY3RlZE91dHB1dCA9ICc1MjVlZjVmN2JhZjU2NTI4YjQ4NzcwOTIyZTk4ZTgwMDMxMGQzNjg1NjgxZDM0ZWU1OTI5MDJhYTI1MjQ1OGIzJztcbiAgICAgIGNvbnN0IG91dHB1dCA9IGhhc2hUb1NoYTI1NihpbnB1dCk7XG4gICAgICBleHBlY3Qob3V0cHV0KS50b0JlKGV4cGVjdGVkT3V0cHV0KTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaGFzaFRvU2hhMjU2IHJldHVybnMgdGhlIFNIQTI1NiBoYXNoIG9mIGFuIGVtcHR5IG51bWJlciBhcnJheSBpbnB1dFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBTSEEyNTYgaGFzaCBvZiBhbiBlbXB0eSBudW1iZXIgYXJyYXkgaW5wdXQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dDogbnVtYmVyW10gPSBbXTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkT3V0cHV0ID0gJ2UzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUnO1xuICAgICAgY29uc3Qgb3V0cHV0ID0gaGFzaFRvU2hhMjU2KGlucHV0KTtcbiAgICAgIGV4cGVjdChvdXRwdXQpLnRvQmUoZXhwZWN0ZWRPdXRwdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBoYXNoVG9TaGEyNTYgcmV0dXJucyB0aGUgU0hBMjU2IGhhc2ggb2YgYW4gZW1wdHkgQnVmZmVyIGlucHV0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIFNIQTI1NiBoYXNoIG9mIGFuIGVtcHR5IEJ1ZmZlciBpbnB1dCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gQnVmZmVyLmZyb20oW10pO1xuICAgICAgY29uc3QgZXhwZWN0ZWRPdXRwdXQgPSAnZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSc7XG4gICAgICBjb25zdCBvdXRwdXQgPSBoYXNoVG9TaGEyNTYoaW5wdXQpO1xuICAgICAgZXhwZWN0KG91dHB1dCkudG9CZShleHBlY3RlZE91dHB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGhhc2hUb1NoYTI1NiByZXR1cm5zIHRoZSBTSEEyNTYgaGFzaCBvZiBhbiBlbXB0eSBzdHJpbmcgaW5wdXRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgU0hBMjU2IGhhc2ggb2YgYW4gZW1wdHkgc3RyaW5nIGlucHV0JywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSAnJztcbiAgICAgIGNvbnN0IGV4cGVjdGVkT3V0cHV0ID0gJ2UzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUnO1xuICAgICAgY29uc3Qgb3V0cHV0ID0gaGFzaFRvU2hhMjU2KGlucHV0KTtcbiAgICAgIGV4cGVjdChvdXRwdXQpLnRvQmUoZXhwZWN0ZWRPdXRwdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBoYXNoVG9TaGEyNTYgcmV0dXJucyB0aGUgU0hBMjU2IGhhc2ggb2YgYSBudW1iZXIgYXJyYXkgaW5wdXRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgU0hBMjU2IGhhc2ggb2YgYSBudW1iZXIgYXJyYXkgaW5wdXQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IFsxLCAyLCAzLCA0LCA1XTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkT3V0cHV0ID0gJzc0ZjgxZmUxNjdkOTliNGNiNDFkNmQwY2NkYTgyMjc4Y2FlZTlmM2UyZjI1ZDVlNWEzOTM2ZmYzZGNlYzYwZDAnO1xuICAgICAgY29uc3Qgb3V0cHV0ID0gaGFzaFRvU2hhMjU2KGlucHV0KTtcbiAgICAgIGV4cGVjdChvdXRwdXQpLnRvQmUoZXhwZWN0ZWRPdXRwdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBoYXNoVG9TaGEyNTYgcmV0dXJucyB0aGUgU0hBMjU2IGhhc2ggb2YgYSBub24tQVNDSUkgc3RyaW5nIGlucHV0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIFNIQTI1NiBoYXNoIG9mIGEgbm9uLUFTQ0lJIHN0cmluZyBpbnB1dCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gJ+S9oOWlveS4lueVjCc7XG4gICAgICBjb25zdCBleHBlY3RlZE91dHB1dCA9ICc1MDhkNjlkYzIxYmY1ZDJmODA0MDE0YjE2ODg5NTNhMTJkNWRmZGU3MWJlNmNkOTU0MTc3OTgwZDVkMTc0MWJiJztcbiAgICAgIGNvbnN0IG91dHB1dCA9IGhhc2hUb1NoYTI1NihpbnB1dCk7XG4gICAgICBleHBlY3Qob3V0cHV0KS50b0JlKGV4cGVjdGVkT3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dlbmVyYXRlVVVJRCcsICgpID0+IHtcbiAgICAvLyBUZXN0cyB0aGF0IGdlbmVyYXRlVVVJRCBmdW5jdGlvbiByZXR1cm5zIGEgVVVJRCBzdHJpbmdcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhIFVVSUQgc3RyaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgdXVpZCA9IGdlbmVyYXRlVVVJRCgpO1xuICAgICAgZXhwZWN0KHR5cGVvZiB1dWlkKS50b0JlKCdzdHJpbmcnKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgZ2VuZXJhdGVVVUlEIGZ1bmN0aW9uIGdlbmVyYXRlcyBhIHVuaXF1ZSBVVUlEIGVhY2ggdGltZSBpdCBpcyBjYWxsZWRcbiAgICBpdCgnc2hvdWxkIGdlbmVyYXRlIGEgdW5pcXVlIFVVSUQgZWFjaCB0aW1lIGl0IGlzIGNhbGxlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHV1aWQxID0gZ2VuZXJhdGVVVUlEKCk7XG4gICAgICBjb25zdCB1dWlkMiA9IGdlbmVyYXRlVVVJRCgpO1xuICAgICAgZXhwZWN0KHV1aWQxKS5ub3QudG9CZSh1dWlkMik7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGdlbmVyYXRlVVVJRCBmdW5jdGlvbiByZXR1cm5zIGEgVVVJRCBzdHJpbmcgd2l0aCBsZW5ndGggMzZcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhIFVVSUQgc3RyaW5nIHdpdGggbGVuZ3RoIDM2JywgKCkgPT4ge1xuICAgICAgY29uc3QgdXVpZCA9IGdlbmVyYXRlVVVJRCgpO1xuICAgICAgZXhwZWN0KHV1aWQubGVuZ3RoKS50b0JlKDM2KTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgZ2VuZXJhdGVVVUlEIGZ1bmN0aW9uIHJldHVybnMgYSBVVUlEIHN0cmluZyB3aXRoIDQgZGFzaGVzXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYSBVVUlEIHN0cmluZyB3aXRoIDQgZGFzaGVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgdXVpZCA9IGdlbmVyYXRlVVVJRCgpO1xuICAgICAgY29uc3QgZGFzaENvdW50ID0gKHV1aWQubWF0Y2goLy0vZykgfHwgW10pLmxlbmd0aDtcbiAgICAgIGV4cGVjdChkYXNoQ291bnQpLnRvQmUoNCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXRFcnJvclJlc3BFdmVudHMgLS0gbWV0YWRhdGEgdGVzdHMnLCAoKSA9PiB7XG4gICAgY29uc3QgbWV0YWRhdGExID0ge1xuICAgICAgc291cmNlSWQ6ICdzMycsXG4gICAgICB3b3Jrc3BhY2VJZDogJ3dzcDEnLFxuICAgICAgZGVzdGluYXRpb25JZDogJ2QxJyxcbiAgICAgIGpvYlJ1bklkOiAnMTIzJyxcbiAgICAgIGpvYklkOiAxLFxuICAgIH0gYXMgTWV0YWRhdGE7XG4gICAgY29uc3QgbWV0YWRhdGEyID0ge1xuICAgICAgc291cmNlSWQ6ICdzMicsXG4gICAgICB3b3Jrc3BhY2VJZDogJ3dzcDEnLFxuICAgICAgZGVzdGluYXRpb25JZDogJ2QyJyxcbiAgICAgIGpvYlJ1bklkOiAnMTIyJyxcbiAgICAgIGpvYklkOiA0LFxuICAgIH0gYXMgTWV0YWRhdGE7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gcHJvcGVyIG9iamVjdCwgd2hlbiB3ZSBzZW5kIHByb3BlciBtZXRhZGF0YSBzdHJ1Y3R1cmUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvdXQgPSBnZXRFcnJvclJlc3BFdmVudHMoW21ldGFkYXRhMSwgbWV0YWRhdGEyXSwgNDAwLCAnZXJyLTEnLCB7fSwgZmFsc2UpO1xuICAgICAgZXhwZWN0KEFycmF5LmlzQXJyYXkob3V0Lm1ldGFkYXRhKSkudG9CZSh0cnVlKTtcbiAgICAgIGV4cGVjdChvdXQubWV0YWRhdGE/Lmxlbmd0aCkudG9CZSgyKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHJldHVybiBwcm9wZXIgb2JqZWN0LCB3aGVuIHdlIHNlbmQgbWV0YWRhdGEgYXMgb2JqZWN0JywgKCkgPT4ge1xuICAgICAgY29uc3Qgb3V0ID0gZ2V0RXJyb3JSZXNwRXZlbnRzKFttZXRhZGF0YTJdLCA0MDAsICdlcnItMScsIHt9LCBmYWxzZSk7XG4gICAgICBleHBlY3QoQXJyYXkuaXNBcnJheShvdXQubWV0YWRhdGEpKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KG91dC5tZXRhZGF0YT8ubGVuZ3RoKS50b0JlKDEpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHByb3BlciBvYmplY3QobWV0YWRhdGEgZW1wdHkgYXJyYXkpLCB3aGVuIHdlIHNlbmQgbWV0YWRhdGEgYXMgbnVsbCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG91dCA9IGdldEVycm9yUmVzcEV2ZW50cyhbXSwgNDAwLCAnZXJyLTEnLCB7fSwgZmFsc2UpO1xuICAgICAgZXhwZWN0KEFycmF5LmlzQXJyYXkob3V0Lm1ldGFkYXRhKSkudG9CZSh0cnVlKTtcbiAgICAgIGV4cGVjdChvdXQubWV0YWRhdGE/Lmxlbmd0aCkudG9CZSgwKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3RvU3RyaW5nJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHN0cmluZyB3aGVuIGlucHV0IGlzIGEgc3RyaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSAndGVzdCBzdHJpbmcnO1xuICAgICAgY29uc3QgcmVzdWx0ID0gY29udmVydFRvU3RyaW5nKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoaW5wdXQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gXCJudWxsXCIgd2hlbiBpbnB1dCBpcyBudWxsJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSBudWxsO1xuICAgICAgY29uc3QgcmVzdWx0ID0gY29udmVydFRvU3RyaW5nKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ251bGwnKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHJldHVybiBKU09OIHN0cmluZyB3aGVuIGlucHV0IGlzIGEgY3VzdG9tIG9iamVjdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0geyBrZXk6ICd2YWx1ZScsIGFub3RoZXJLZXk6IDEyMyB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gY29udmVydFRvU3RyaW5nKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoSlNPTi5zdHJpbmdpZnkoaW5wdXQpKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIHdoZW4gaW5wdXQgaGFzIGNpcmN1bGFyIHJlZmVyZW5jZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBjaXJjdWxhck9iajogYW55ID0ge307XG4gICAgICBjaXJjdWxhck9iai5zZWxmID0gY2lyY3VsYXJPYmo7XG4gICAgICBleHBlY3QoKCkgPT4gY29udmVydFRvU3RyaW5nKGNpcmN1bGFyT2JqKSkudG9UaHJvdyhUeXBlRXJyb3IpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjb252ZXJ0IGJvb2xlYW4gdHJ1ZSB0byBKU09OIHN0cmluZycsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGNvbnZlcnRUb1N0cmluZyhpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCd0cnVlJyk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBjb252ZXJ0IGFycmF5IHRvIEpTT04gc3RyaW5nIHdoZW4gaW5wdXQgaXMgYW4gYXJyYXknLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IFsxLCAyLCAzXTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGNvbnZlcnRUb1N0cmluZyhpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKEpTT04uc3RyaW5naWZ5KGlucHV0KSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBjb252ZXJ0IGEgbnVtYmVyIHRvIGEgSlNPTiBzdHJpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IDEyMztcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGNvbnZlcnRUb1N0cmluZyhpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCcxMjMnKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGNvcnJlY3RseSBoYW5kbGUgc3RyaW5ncyB3aXRoIHNwZWNpYWwgY2hhcmFjdGVycycsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gJ3NwZWNpYWwhQCMkJV4mKigpXyt7fTpcIjw+Pyc7XG4gICAgICBjb25zdCByZXN1bHQgPSBjb252ZXJ0VG9TdHJpbmcoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZShpbnB1dCk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBjb3JyZWN0bHkgY29udmVydCBsYXJnZSBkYXRhIHN0cnVjdHVyZXMgdG8gc3RyaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgbGFyZ2VPYmplY3QgPSB7XG4gICAgICAgIGtleTE6ICd2YWx1ZTEnLFxuICAgICAgICBrZXkyOiBBcnJheSgxMDAwKS5maWxsKCd2YWx1ZTInKSxcbiAgICAgICAga2V5MzogeyBuZXN0ZWRLZXk6ICduZXN0ZWRWYWx1ZScgfSxcbiAgICAgIH07XG4gICAgICBjb25zdCByZXN1bHQgPSBjb252ZXJ0VG9TdHJpbmcobGFyZ2VPYmplY3QpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZShcbiAgICAgICAgJ3tcImtleTFcIjpcInZhbHVlMVwiLFwia2V5MlwiOltcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiXSxcImtleTNcIjp7XCJuZXN0ZWRLZXlcIjpcIm5lc3RlZFZhbHVlXCJ9fScsXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
2161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzYy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL21pc2MudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLHNDQUFpRDtBQUNqRCxpQ0FrQ2dCO0FBRWhCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0lBQ3BCLFFBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO1FBQ3pCLHFGQUFxRjtRQUNyRixFQUFFLENBQUMsa0VBQWtFLEVBQUUsR0FBRyxFQUFFO1lBQzFFLE1BQU0sQ0FBQyxJQUFBLGdCQUFTLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxzRkFBc0Y7UUFDdEYsRUFBRSxDQUFDLG1FQUFtRSxFQUFFLEdBQUcsRUFBRTtZQUMzRSxNQUFNLENBQUMsSUFBQSxnQkFBUyxFQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO1FBRUgscUZBQXFGO1FBQ3JGLEVBQUUsQ0FBQyxrRUFBa0UsRUFBRSxHQUFHLEVBQUU7WUFDMUUsTUFBTSxDQUFDLElBQUEsZ0JBQVMsRUFBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztRQUVILDhFQUE4RTtRQUM5RSxFQUFFLENBQUMsMkRBQTJELEVBQUUsR0FBRyxFQUFFO1lBQ25FLE1BQU0sQ0FBQyxJQUFBLGdCQUFTLEVBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7UUFFSCwrRUFBK0U7UUFDL0UsRUFBRSxDQUFDLDREQUE0RCxFQUFFLEdBQUcsRUFBRTtZQUNwRSxNQUFNLENBQUMsSUFBQSxnQkFBUyxFQUFDLElBQUksQ0FB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RUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUMzQyxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUM5QyxNQUFNLE1BQU0sR0FBRyxJQUFBLDRCQUFxQixFQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7UUFFSCxxR0FBcUc7UUFDckcsRUFBRSxDQUFDLG9GQUFvRixFQUFFLEdBQUcsRUFBRTtZQUM1RixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUM5QyxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNqRCxNQUFNLE1BQU0sR0FBRyxJQUFBLDRCQUFxQixFQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7UUFFSCxvR0FBb0c7UUFDcEcsRUFBRSxDQUFDLG1GQUFtRixFQUFFLEdBQUcsRUFBRTtZQUMzRixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUMxQyxNQUFNLFFBQVEs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QUcsRUFBRTtZQUN4SSxNQUFNLEtBQUssR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzNGLE1BQU0sTUFBTSxHQUFHLElBQUEsaUJBQVUsRUFBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDcEUsQ0FBQyxDQUFDLENBQUM7UUFFSCwySUFBMkk7UUFDM0ksRUFBRSxDQUFDLDBIQUEwSCxFQUFFLEdBQUcsRUFBRTtZQUNsSSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMxRCxNQUFNLE1BQU0sR0FBRyxJQUFBLGlCQUFVLEVBQUMsS0FBSyxDQUFDLENBQUM7WUFDakMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEUsQ0FBQyxDQUFDLENBQUM7UUFFSCwySUFBMkk7UUFDM0ksRUFBRSxDQUFDLDBIQUEwSCxFQUFFLEdBQUcsRUFBRTtZQUNsSSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDakQsTUFBTSxNQUFNLEdBQUcs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dGFkYXRhIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgSW5zdHJ1bWVudGF0aW9uRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMnO1xuaW1wb3J0IHtcbiAgYmFzZTY0Q29udmVydG9yLFxuICBmbGF0dGVuTWFwLFxuICBnZXRFdmVudFRpbWUsXG4gIGdldFR5cGUsXG4gIGlzQmxhbmssXG4gIGlzRGVmaW5lZCxcbiAgaXNEZWZpbmVkQW5kTm90TnVsbCxcbiAgaXNEZWZpbmVkQW5kTm90TnVsbEFuZE5vdEVtcHR5LFxuICBpc05vdEVtcHR5LFxuICBpc05vdE51bGwsXG4gIGlzUHJpbWl0aXZlLFxuICBpc1ZhbGlkVXJsLFxuICByZW1vdmVOdWxsVmFsdWVzLFxuICByZW1vdmVVbmRlZmluZWRBbmROdWxsQW5kRW1wdHlWYWx1ZXMsXG4gIHJlbW92ZVVuZGVmaW5lZEFuZE51bGxWYWx1ZXMsXG4gIHJlbW92ZVVuZGVmaW5lZFZhbHVlcyxcbiAgc3RyaXBUcmFpbGluZ1NsYXNoLFxuICBpc09iamVjdCxcbiAgaXNFbXB0eSxcbiAgaXNFbXB0eU9iamVjdCxcbiAgaXNEZWZpbmVkTm90TnVsbE5vdEVtcHR5LFxuICByZW1vdmVVbmRlZmluZWROdWxsRW1wdHlFeGNsQm9vbEludCxcbiAgZ2V0SGFzaEZyb21BcnJheSxcbiAgZ2V0SGFzaEZyb21BcnJheVdpdGhEdXBsaWNhdGUsXG4gIGZsYXR0ZW5Kc29uLFxuICBnZXRWYWx1ZUZyb21Qcm9wZXJ0aWVzT3JUcmFpdHMsXG4gIGdldE9mZnNldEluU2VjLFxuICBmb3JtYXRUaW1lU3RhbXAsXG4gIGhhc2hUb1NoYTI1NixcbiAgZ2VuZXJhdGVVVUlELFxuICBnZXRFcnJvclJlc3BFdmVudHMsXG4gIGNvbnZlcnRUb1N0cmluZyxcbiAgdXVpZHY1LFxufSBmcm9tICcuL21pc2MnO1xuXG5kZXNjcmliZSgnbWlzYycsICgpID0+IHtcbiAgZGVzY3JpYmUoJ2lzRGVmaW5lZCcsICgpID0+IHtcbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUgd2hlbiBhIGRlZmluZWQgdmFsdWUgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGEgZGVmaW5lZCB2YWx1ZSBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNEZWZpbmVkKDUpKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gYSBub24tbnVsbCB2YWx1ZSBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gYSBub24tbnVsbCB2YWx1ZSBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNEZWZpbmVkKCdoZWxsbycpKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gYW4gZW1wdHkgc3RyaW5nIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBhbiBlbXB0eSBzdHJpbmcgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzRGVmaW5lZCgnJykpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUgd2hlbiBhIG51bWJlciBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gYSBudW1iZXIgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzRGVmaW5lZCgxMCkpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUgd2hlbiBhIGJvb2xlYW4gaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGEgYm9vbGVhbiBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNEZWZpbmVkKHRydWUpKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBmYWxzZSB3aGVuIGFuIHVuZGVmaW5lZCB2YWx1ZSBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIGFuIHVuZGVmaW5lZCB2YWx1ZSBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNEZWZpbmVkKHVuZGVmaW5lZCkpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gbnVsbCBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gbnVsbCBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNEZWZpbmVkKG51bGwpKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gYW4gZW1wdHkgb2JqZWN0IGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBhbiBlbXB0eSBvYmplY3QgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzRGVmaW5lZCh7fSkpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUgd2hlbiBhbiBlbXB0eSBhcnJheSBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gYW4gZW1wdHkgYXJyYXkgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzRGVmaW5lZChbXSkpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUgd2hlbiBOYU4gaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIE5hTiBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNEZWZpbmVkKE5hTikpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUgd2hlbiBhIGZ1bmN0aW9uIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBhIGZ1bmN0aW9uIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCcsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc0RlZmluZWQoKCkgPT4ge30pKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gYSBzeW1ib2wgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGEgc3ltYm9sIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCcsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc0RlZmluZWQoU3ltYm9sKCkpKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVG8gdmVyaWZ5IHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSB3aGVuIGFuIGVtcHR5IE1hcCBvYmplY3QgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGFuIGVtcHR5IE1hcCBvYmplY3QgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgbWFwID0gbmV3IE1hcCgpO1xuICAgICAgZXhwZWN0KGlzRGVmaW5lZChtYXApKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGhlIG9iamVjdGl2ZSBvZiB0aGlzIHRlc3QgaXMgdG8gdmVyaWZ5IHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSB3aGVuIGFuIGVtcHR5IFNldCBvYmplY3QgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50LlxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBhbiBlbXB0eSBTZXQgb2JqZWN0IGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHNldE9iaiA9IG5ldyBTZXQoKTtcbiAgICAgIGV4cGVjdChpc0RlZmluZWQoc2V0T2JqKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRoZSBvYmplY3RpdmUgb2YgdGhpcyB0ZXN0IGlzIHRvIHZlcmlmeSB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUgd2hlbiBhbiBlbXB0eSBXZWFrTWFwIG9iamVjdCBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGFuIGVtcHR5IFdlYWtNYXAgb2JqZWN0IGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGVtcHR5V2Vha01hcCA9IG5ldyBXZWFrTWFwKCk7XG4gICAgICBleHBlY3QoaXNEZWZpbmVkKGVtcHR5V2Vha01hcCkpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdpc05vdEVtcHR5JywgKCkgPT4ge1xuICAgIC8vIFRlc3RzIHRoYXQgaXNOb3RFbXB0eSByZXR1cm5zIHRydWUgZm9yIG5vbi1lbXB0eSBhcnJheXNcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gdGhlIGlucHV0IGlzIGEgbm9uLWVtcHR5IGFycmF5JywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNOb3RFbXB0eShbMSwgMiwgM10pO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNOb3RFbXB0eSByZXR1cm5zIGZhbHNlIGZvciBlbXB0eSBhcnJheXNcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHRoZSBpbnB1dCBpcyBhbiBlbXB0eSBhcnJheScsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzTm90RW1wdHkoW10pO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzTm90RW1wdHkgcmV0dXJucyB0cnVlIGZvciBub24tZW1wdHkgb2JqZWN0c1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiB0aGUgaW5wdXQgaXMgYSBub24tZW1wdHkgb2JqZWN0JywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNOb3RFbXB0eSh7IGtleTogJ3ZhbHVlJyB9KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzTm90RW1wdHkgcmV0dXJucyBmYWxzZSBmb3IgZW1wdHkgb2JqZWN0c1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdGhlIGlucHV0IGlzIGFuIGVtcHR5IG9iamVjdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzTm90RW1wdHkoe30pO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzTm90RW1wdHkgcmV0dXJucyB0cnVlIGZvciBub24tZW1wdHkgc3RyaW5nc1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiB0aGUgaW5wdXQgaXMgYSBub24tZW1wdHkgc3RyaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNOb3RFbXB0eSgnaGVsbG8nKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzTm90RW1wdHkgcmV0dXJucyBmYWxzZSBmb3IgZW1wdHkgc3RyaW5nc1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdGhlIGlucHV0IGlzIGFuIGVtcHR5IHN0cmluZycsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzTm90RW1wdHkoJycpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzTm90RW1wdHkgcmV0dXJucyBmYWxzZSBmb3Igbm9uLXplcm8gbnVtYmVyc1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdGhlIGlucHV0IGlzIGEgbm9uLXplcm8gbnVtYmVyJywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNOb3RFbXB0eSg0Mik7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNOb3RFbXB0eSByZXR1cm5zIGZhbHNlIGZvciB6ZXJvXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiB0aGUgaW5wdXQgaXMgemVybycsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzTm90RW1wdHkoMCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNOb3RFbXB0eSByZXR1cm5zIGZhbHNlIGZvciBudWxsXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiB0aGUgaW5wdXQgaXMgbnVsbCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzTm90RW1wdHkobnVsbCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNOb3RFbXB0eSByZXR1cm5zIGZhbHNlIGZvciB1bmRlZmluZWRcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHRoZSBpbnB1dCBpcyB1bmRlZmluZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc05vdEVtcHR5KHVuZGVmaW5lZCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNOb3RFbXB0eSByZXR1cm5zIGZhbHNlIGZvciBOYU5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHRoZSBpbnB1dCBpcyBOYU4nLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc05vdEVtcHR5KE5hTik7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNOb3RFbXB0eSByZXR1cm5zIGZhbHNlIGZvciBmYWxzZSBib29sZWFuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiB0aGUgaW5wdXQgaXMgZmFsc2UnLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc05vdEVtcHR5KGZhbHNlKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc05vdEVtcHR5IHJldHVybnMgZmFsc2UgZm9yIHRydWUgYm9vbGVhblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdGhlIGlucHV0IGlzIGEgdHJ1ZSBib29sZWFuJywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNOb3RFbXB0eSh0cnVlKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnaXNOb3ROdWxsJywgKCkgPT4ge1xuICAgIC8vIFRlc3RzIHRoYXQgaXNOb3ROdWxsIHJldHVybnMgdHJ1ZSB3aGVuIGEgbm9uLW51bGwgdmFsdWUgaXMgcGFzc2VkXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGEgbm9uLW51bGwgdmFsdWUgaXMgcGFzc2VkJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzTm90TnVsbCgndGVzdCcpKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc05vdE51bGwgcmV0dXJucyB0cnVlIHdoZW4gYSB0cnV0aHkgdmFsdWUgaXMgcGFzc2VkXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGEgdHJ1dGh5IHZhbHVlIGlzIHBhc3NlZCcsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc05vdE51bGwodHJ1ZSkpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzTm90TnVsbCByZXR1cm5zIHRydWUgd2hlbiBhbiBlbXB0eSBzdHJpbmcgaXMgcGFzc2VkXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGFuIGVtcHR5IHN0cmluZyBpcyBwYXNzZWQnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNOb3ROdWxsKCcnKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNOb3ROdWxsIHJldHVybnMgdHJ1ZSB3aGVuIGEgbnVtYmVyIGlzIHBhc3NlZFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBhIG51bWJlciBpcyBwYXNzZWQnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNOb3ROdWxsKDEyMykpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzTm90TnVsbCByZXR1cm5zIHRydWUgd2hlbiBhIGJvb2xlYW4gdmFsdWUgaXMgcGFzc2VkXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGEgYm9vbGVhbiB2YWx1ZSBpcyBwYXNzZWQnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNOb3ROdWxsKHRydWUpKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc05vdE51bGwgcmV0dXJucyBmYWxzZSB3aGVuIG51bGwgaXMgcGFzc2VkXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiBudWxsIGlzIHBhc3NlZCcsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc05vdE51bGwobnVsbCkpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc05vdE51bGwgcmV0dXJucyBmYWxzZSB3aGVuIHVuZGVmaW5lZCBpcyBwYXNzZWRcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHVuZGVmaW5lZCBpcyBwYXNzZWQnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNOb3ROdWxsKHVuZGVmaW5lZCkpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc05vdE51bGwgcmV0dXJucyB0cnVlIHdoZW4gYW4gZW1wdHkgb2JqZWN0IGlzIHBhc3NlZFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBhbiBlbXB0eSBvYmplY3QgaXMgcGFzc2VkJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzTm90TnVsbCh7fSkpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzTm90TnVsbCByZXR1cm5zIHRydWUgd2hlbiBhbiBlbXB0eSBhcnJheSBpcyBwYXNzZWRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gYW4gZW1wdHkgYXJyYXkgaXMgcGFzc2VkJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzTm90TnVsbChbXSkpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzTm90TnVsbCByZXR1cm5zIHRydWUgd2hlbiBhIGZ1bmN0aW9uIGlzIHBhc3NlZFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBhIGZ1bmN0aW9uIGlzIHBhc3NlZCcsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc05vdE51bGwoKCkgPT4ge30pKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc05vdE51bGwgcmV0dXJucyB0cnVlIHdoZW4gTmFOIGlzIHBhc3NlZFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBOYU4gaXMgcGFzc2VkJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzTm90TnVsbChOYU4pKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc05vdE51bGwgcmV0dXJucyB0cnVlIHdoZW4gYSBzeW1ib2wgaXMgcGFzc2VkXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGEgc3ltYm9sIGlzIHBhc3NlZCcsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc05vdE51bGwoU3ltYm9sKCkpKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc05vdE51bGwgcmV0dXJucyB0cnVlIHdoZW4gYSBmdW5jdGlvbiBpcyBwYXNzZWRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gYSBmdW5jdGlvbiBpcyBwYXNzZWQnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNOb3ROdWxsKCgpID0+IHt9KSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNOb3ROdWxsIHJldHVybnMgdHJ1ZSB3aGVuIE5hTiBpcyBwYXNzZWRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gTmFOIGlzIHBhc3NlZCcsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc05vdE51bGwoTmFOKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNOb3ROdWxsIHJldHVybnMgdHJ1ZSB3aGVuIGEgc3ltYm9sIGlzIHBhc3NlZFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBhIHN5bWJvbCBpcyBwYXNzZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzeW1ib2wgPSBTeW1ib2woKTtcbiAgICAgIGV4cGVjdChpc05vdE51bGwoc3ltYm9sKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2lzRGVmaW5lZEFuZE5vdE51bGwnLCAoKSA9PiB7XG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gYSBkZWZpbmVkIGFuZCBub3QgbnVsbCB2YWx1ZSBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gYSBkZWZpbmVkIGFuZCBub3QgbnVsbCB2YWx1ZSBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc0RlZmluZWRBbmROb3ROdWxsKCd0ZXN0Jyk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gYSBzdHJpbmcgdmFsdWUgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGEgc3RyaW5nIHZhbHVlIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzRGVmaW5lZEFuZE5vdE51bGwoJ3Rlc3QnKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUgd2hlbiBhIG51bWJlciB2YWx1ZSBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gYSBudW1iZXIgdmFsdWUgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNEZWZpbmVkQW5kTm90TnVsbCgxMjMpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSB3aGVuIGEgYm9vbGVhbiB2YWx1ZSBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gYSBib29sZWFuIHZhbHVlIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzRGVmaW5lZEFuZE5vdE51bGwodHJ1ZSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gYW4gb2JqZWN0IHZhbHVlIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBhbiBvYmplY3QgdmFsdWUgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNEZWZpbmVkQW5kTm90TnVsbCh7IGtleTogJ3ZhbHVlJyB9KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUgd2hlbiBhbiBhcnJheSB2YWx1ZSBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gYW4gYXJyYXkgdmFsdWUgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNEZWZpbmVkQW5kTm90TnVsbChbMSwgMiwgM10pO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSB3aGVuIGFuIGVtcHR5IHN0cmluZyB2YWx1ZSBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gYW4gZW1wdHkgc3RyaW5nIHZhbHVlIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzRGVmaW5lZEFuZE5vdE51bGwoJycpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSB3aGVuIGFuIGVtcHR5IGFycmF5IHZhbHVlIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBhbiBlbXB0eSBhcnJheSB2YWx1ZSBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc0RlZmluZWRBbmROb3ROdWxsKFtdKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUgd2hlbiBhbiBlbXB0eSBvYmplY3QgdmFsdWUgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGFuIGVtcHR5IG9iamVjdCB2YWx1ZSBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc0RlZmluZWRBbmROb3ROdWxsKHt9KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGZhbHNlIHdoZW4gdW5kZWZpbmVkIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdW5kZWZpbmVkIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzRGVmaW5lZEFuZE5vdE51bGwodW5kZWZpbmVkKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBmYWxzZSB3aGVuIG51bGwgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiBudWxsIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzRGVmaW5lZEFuZE5vdE51bGwobnVsbCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSB3aGVuIE5hTiBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gTmFOIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzRGVmaW5lZEFuZE5vdE51bGwoTmFOKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdpc0RlZmluZWRBbmROb3ROdWxsQW5kTm90RW1wdHknLCAoKSA9PiB7XG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gcGFzc2VkIGEgbm9uLWVtcHR5IHN0cmluZ1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBwYXNzZWQgYSBub24tZW1wdHkgc3RyaW5nJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzRGVmaW5lZEFuZE5vdE51bGxBbmROb3RFbXB0eSgnaGVsbG8nKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSB3aGVuIHBhc3NlZCBhIG5vbi1lbXB0eSBvYmplY3RcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gcGFzc2VkIGEgbm9uLWVtcHR5IG9iamVjdCcsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc0RlZmluZWRBbmROb3ROdWxsQW5kTm90RW1wdHkoeyBuYW1lOiAnSm9obicsIGFnZTogMjUgfSkpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUgd2hlbiBwYXNzZWQgYSBub24tZW1wdHkgYXJyYXlcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gcGFzc2VkIGEgbm9uLWVtcHR5IGFycmF5JywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzRGVmaW5lZEFuZE5vdE51bGxBbmROb3RFbXB0eShbMSwgMiwgM10pKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBmYWxzZSB3aGVuIHBhc3NlZCBhIGJvb2xlYW4gdmFsdWVcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHBhc3NlZCBhIGJvb2xlYW4gdmFsdWUnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNEZWZpbmVkQW5kTm90TnVsbEFuZE5vdEVtcHR5KHRydWUpKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgZmFsc2Ugd2hlbiBwYXNzZWQgYSBudW1iZXIgdmFsdWVcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHBhc3NlZCBhIG51bWJlciB2YWx1ZScsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc0RlZmluZWRBbmROb3ROdWxsQW5kTm90RW1wdHkoNDIpKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgZmFsc2Ugd2hlbiBwYXNzZWQgYW4gZW1wdHkgc3RyaW5nXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiBwYXNzZWQgYW4gZW1wdHkgc3RyaW5nJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzRGVmaW5lZEFuZE5vdE51bGxBbmROb3RFbXB0eSgnJykpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBmYWxzZSB3aGVuIHBhc3NlZCBhbiBlbXB0eSBvYmplY3RcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHBhc3NlZCBhbiBlbXB0eSBvYmplY3QnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNEZWZpbmVkQW5kTm90TnVsbEFuZE5vdEVtcHR5KHt9KSkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGZhbHNlIHdoZW4gcGFzc2VkIGFuIGVtcHR5IGFycmF5XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiBwYXNzZWQgYW4gZW1wdHkgYXJyYXknLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNEZWZpbmVkQW5kTm90TnVsbEFuZE5vdEVtcHR5KFtdKSkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGZhbHNlIHdoZW4gcGFzc2VkIG51bGxcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHBhc3NlZCBudWxsJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzRGVmaW5lZEFuZE5vdE51bGxBbmROb3RFbXB0eShudWxsKSkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGZhbHNlIHdoZW4gcGFzc2VkIHVuZGVmaW5lZFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gcGFzc2VkIHVuZGVmaW5lZCcsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc0RlZmluZWRBbmROb3ROdWxsQW5kTm90RW1wdHkodW5kZWZpbmVkKSkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUgd2hlbiBwYXNzZWQgYSBzdHJpbmcgd2l0aCBvbmx5IHdoaXRlc3BhY2UgY2hhcmFjdGVyc1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBwYXNzZWQgYSBzdHJpbmcgd2l0aCBvbmx5IHdoaXRlc3BhY2UgY2hhcmFjdGVycycsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc0RlZmluZWRBbmROb3ROdWxsQW5kTm90RW1wdHkoJyAgICcpKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gcGFzc2VkIGFuIG9iamVjdCB3aXRoIG9ubHkgbnVsbCBvciB1bmRlZmluZWQgdmFsdWVzXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIHBhc3NlZCBhbiBvYmplY3Qgd2l0aCBvbmx5IG51bGwgb3IgdW5kZWZpbmVkIHZhbHVlcycsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc0RlZmluZWRBbmROb3ROdWxsQW5kTm90RW1wdHkoeyBwcm9wMTogbnVsbCwgcHJvcDI6IHVuZGVmaW5lZCB9KSkudG9CZSh0cnVlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2lzQmxhbmsnLCAoKSA9PiB7XG4gICAgLy8gVGVzdHMgdGhhdCBpc0JsYW5rIHJldHVybnMgdHJ1ZSBmb3IgYW4gZW1wdHkgc3RyaW5nXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIHZhbHVlIGlzIGFuIGVtcHR5IHN0cmluZycsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc0JsYW5rKCcnKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNCbGFuayByZXR1cm5zIHRydWUgZm9yIGFuIGVtcHR5IGFycmF5XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIHZhbHVlIGlzIGFuIGVtcHR5IGFycmF5JywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzQmxhbmsoW10pKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc0JsYW5rIHJldHVybnMgZmFsc2UgZm9yIGFuIGVtcHR5IG9iamVjdFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiB2YWx1ZSBpcyBhbiBlbXB0eSBvYmplY3QnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNCbGFuayh7fSkpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc0JsYW5rIHJldHVybnMgZmFsc2UgZm9yIGEgbm9uLWVtcHR5IHN0cmluZ1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdmFsdWUgaXMgYSBub24tZW1wdHkgc3RyaW5nJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzQmxhbmsoJ2hlbGxvJykpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc0JsYW5rIHJldHVybnMgZmFsc2UgZm9yIGEgbm9uLWVtcHR5IGFycmF5XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiB2YWx1ZSBpcyBhIG5vbi1lbXB0eSBhcnJheScsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc0JsYW5rKFsxLCAyLCAzXSkpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc0JsYW5rIHJldHVybnMgZmFsc2UgZm9yIGEgbm9uLWVtcHR5IG9iamVjdFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdmFsdWUgaXMgYSBub24tZW1wdHkgb2JqZWN0JywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzQmxhbmsoeyBrZXk6ICd2YWx1ZScgfSkpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc0JsYW5rIHJldHVybnMgdHJ1ZSBmb3IgYSBudWxsIHZhbHVlXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIHZhbHVlIGlzIG51bGwnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNCbGFuayhudWxsKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNCbGFuayByZXR1cm5zIHRydWUgZm9yIGFuIHVuZGVmaW5lZCB2YWx1ZVxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiB2YWx1ZSBpcyB1bmRlZmluZWQnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNCbGFuayh1bmRlZmluZWQpKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc0JsYW5rIHJldHVybnMgZmFsc2UgZm9yIGEgYm9vbGVhbiB2YWx1ZVxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdmFsdWUgaXMgYSBib29sZWFuJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzQmxhbmsodHJ1ZSkpLnRvQmUoZmFsc2UpO1xuICAgICAgZXhwZWN0KGlzQmxhbmsoZmFsc2UpKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNCbGFuayByZXR1cm5zIGZhbHNlIGZvciBhIG51bWJlciB2YWx1ZVxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdmFsdWUgaXMgYSBudW1iZXInLCAoKSA9PiB7XG4gICAgICBleHBlY3QoaXNCbGFuaygxMjMpKS50b0JlKGZhbHNlKTtcbiAgICAgIGV4cGVjdChpc0JsYW5rKDApKS50b0JlKGZhbHNlKTtcbiAgICAgIGV4cGVjdChpc0JsYW5rKC0xKSkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzQmxhbmsgcmV0dXJucyBmYWxzZSBmb3IgYSB3aGl0ZXNwYWNlIHN0cmluZ1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdmFsdWUgaXMgYSB3aGl0ZXNwYWNlIHN0cmluZycsICgpID0+IHtcbiAgICAgIGV4cGVjdChpc0JsYW5rKCcgICAnKSkudG9CZShmYWxzZSk7XG4gICAgICBleHBlY3QoaXNCbGFuaygnXFx0JykpLnRvQmUoZmFsc2UpO1xuICAgICAgZXhwZWN0KGlzQmxhbmsoJ1xcbicpKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNCbGFuayByZXR1cm5zIGZhbHNlIGZvciBOYU4gdmFsdWVcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gdmFsdWUgaXMgTmFOJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGlzQmxhbmsoTmFOKSkudG9CZShmYWxzZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZW1vdmVVbmRlZmluZWRWYWx1ZXMnLCAoKSA9PiB7XG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgc2FtZSBvYmplY3QgaWYgaXQgaXMgbm90IGFuIG9iamVjdFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBzYW1lIG9iamVjdCB3aGVuIHRoZSBpbnB1dCBpcyBub3QgYW4gb2JqZWN0JywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSAxMjM7XG4gICAgICBjb25zdCByZXN1bHQgPSByZW1vdmVVbmRlZmluZWRWYWx1ZXMoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZShpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGFuIG9iamVjdCB3aXRob3V0IHVuZGVmaW5lZCB2YWx1ZXMgaWYgYWxsIHZhbHVlcyBhcmUgZGVmaW5lZFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIG9iamVjdCB3aXRob3V0IHVuZGVmaW5lZCB2YWx1ZXMgd2hlbiBhbGwgdmFsdWVzIGFyZSBkZWZpbmVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSB7IGE6IDEsIGI6ICdoZWxsbycsIGM6IHRydWUgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlbW92ZVVuZGVmaW5lZFZhbHVlcyhpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0IHdpdGhvdXQgdW5kZWZpbmVkIHZhbHVlcyBpZiBzb21lIHZhbHVlcyBhcmUgZGVmaW5lZFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIG9iamVjdCB3aXRob3V0IHVuZGVmaW5lZCB2YWx1ZXMgd2hlbiBzb21lIHZhbHVlcyBhcmUgZGVmaW5lZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0geyBhOiAxLCBiOiB1bmRlZmluZWQsIGM6IHRydWUgfTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkID0geyBhOiAxLCBjOiB0cnVlIH07XG4gICAgICBjb25zdCByZXN1bHQgPSByZW1vdmVVbmRlZmluZWRWYWx1ZXMoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGFuIGVtcHR5IG9iamVjdCBpZiB0aGUgaW5wdXQgaXMgYW4gZW1wdHkgb2JqZWN0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gZW1wdHkgb2JqZWN0IHdoZW4gdGhlIGlucHV0IGlzIGFuIGVtcHR5IG9iamVjdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0ge307XG4gICAgICBjb25zdCByZXN1bHQgPSByZW1vdmVVbmRlZmluZWRWYWx1ZXMoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7fSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIG51bGwgaWYgdGhlIGlucHV0IGlzIG51bGxcbiAgICBpdCgnc2hvdWxkIHJldHVybiBudWxsIHdoZW4gdGhlIGlucHV0IGlzIG51bGwnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IG51bGw7XG4gICAgICBjb25zdCByZXN1bHQgPSByZW1vdmVVbmRlZmluZWRWYWx1ZXMoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZU51bGwoKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdW5kZWZpbmVkIGlmIHRoZSBpbnB1dCBpcyB1bmRlZmluZWRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB1bmRlZmluZWQgd2hlbiB0aGUgaW5wdXQgaXMgdW5kZWZpbmVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSB1bmRlZmluZWQ7XG4gICAgICBjb25zdCByZXN1bHQgPSByZW1vdmVVbmRlZmluZWRWYWx1ZXMoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZVVuZGVmaW5lZCgpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhbiBvYmplY3Qgd2l0aG91dCB1bmRlZmluZWQgdmFsdWVzIGlmIHNvbWUgbmVzdGVkIHZhbHVlcyBhcmUgdW5kZWZpbmVkXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gb2JqZWN0IHdpdGhvdXQgdW5kZWZpbmVkIHZhbHVlcyB3aGVuIHNvbWUgbmVzdGVkIHZhbHVlcyBhcmUgdW5kZWZpbmVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSB7IGE6IHsgYjogMSwgYzogdW5kZWZpbmVkIH0sIGQ6IDIgfTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkID0geyBhOiB7IGI6IDEgfSwgZDogMiB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVtb3ZlVW5kZWZpbmVkVmFsdWVzKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhbiBvYmplY3Qgd2l0aG91dCB1bmRlZmluZWQgdmFsdWVzIGlmIHNvbWUgbmVzdGVkIHZhbHVlcyBhcmUgbnVsbFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIG9iamVjdCB3aXRob3V0IHVuZGVmaW5lZCB2YWx1ZXMgd2hlbiBzb21lIG5lc3RlZCB2YWx1ZXMgYXJlIG51bGwnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IHsgYTogeyBiOiAxLCBjOiBudWxsIH0sIGQ6IDIgfTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkID0geyBhOiB7IGI6IDEsIGM6IG51bGwgfSwgZDogMiB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVtb3ZlVW5kZWZpbmVkVmFsdWVzKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhbiBvYmplY3Qgd2l0aG91dCB1bmRlZmluZWQgdmFsdWVzIGlmIHNvbWUgbmVzdGVkIHZhbHVlcyBhcmUgZW1wdHkgc3RyaW5nc1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIG9iamVjdCB3aXRob3V0IHVuZGVmaW5lZCB2YWx1ZXMgd2hlbiBzb21lIG5lc3RlZCB2YWx1ZXMgYXJlIGVtcHR5IHN0cmluZ3MnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IHsgYTogeyBiOiAxLCBjOiAnJyB9LCBkOiAyIH07XG4gICAgICBjb25zdCBleHBlY3RlZCA9IHsgYTogeyBiOiAxLCBjOiAnJyB9LCBkOiAyIH07XG4gICAgICBjb25zdCByZXN1bHQgPSByZW1vdmVVbmRlZmluZWRWYWx1ZXMoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGFuIG9iamVjdCB3aXRob3V0IHVuZGVmaW5lZCB2YWx1ZXMgaWYgc29tZSBuZXN0ZWQgdmFsdWVzIGFyZSBmYWxzZVxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIG9iamVjdCB3aXRob3V0IHVuZGVmaW5lZCB2YWx1ZXMgd2hlbiBzb21lIG5lc3RlZCB2YWx1ZXMgYXJlIGZhbHNlJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSB7IGE6IHsgYjogMSwgYzogZmFsc2UgfSwgZDogMiB9O1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSB7IGE6IHsgYjogMSwgYzogZmFsc2UgfSwgZDogMiB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVtb3ZlVW5kZWZpbmVkVmFsdWVzKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhbiBvYmplY3Qgd2l0aG91dCB1bmRlZmluZWQgdmFsdWVzIGlmIHNvbWUgbmVzdGVkIHZhbHVlcyBhcmUgemVyb1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIG9iamVjdCB3aXRob3V0IHVuZGVmaW5lZCB2YWx1ZXMgd2hlbiBzb21lIG5lc3RlZCB2YWx1ZXMgYXJlIHplcm8nLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IHsgYTogeyBiOiAxLCBjOiAwIH0sIGQ6IDIgfTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkID0geyBhOiB7IGI6IDEsIGM6IDAgfSwgZDogMiB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVtb3ZlVW5kZWZpbmVkVmFsdWVzKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhbiBvYmplY3Qgd2l0aG91dCB1bmRlZmluZWQgdmFsdWVzIGlmIHNvbWUgbmVzdGVkIHZhbHVlcyBhcmUgTmFOXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gb2JqZWN0IHdpdGhvdXQgdW5kZWZpbmVkIHZhbHVlcyB3aGVuIHNvbWUgbmVzdGVkIHZhbHVlcyBhcmUgTmFOJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSB7IGE6IHsgYjogMSwgYzogTmFOIH0sIGQ6IDIgfTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkID0geyBhOiB7IGI6IDEsIGM6IE5hTiB9LCBkOiAyIH07XG4gICAgICBjb25zdCByZXN1bHQgPSByZW1vdmVVbmRlZmluZWRWYWx1ZXMoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZW1vdmVOdWxsVmFsdWVzJywgKCkgPT4ge1xuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseSBoYW5kbGVzIGFuIGVtcHR5IG9iamVjdCBhcyBpbnB1dFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIGVtcHR5IG9iamVjdCB3aGVuIGlucHV0IGlzIGFuIGVtcHR5IG9iamVjdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0ge307XG4gICAgICBjb25zdCBleHBlY3RlZCA9IHt9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVtb3ZlTnVsbFZhbHVlcyhpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseSBoYW5kbGVzIGFuIG9iamVjdCB3aXRoIG5vIG51bGwgdmFsdWVzXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIHNhbWUgb2JqZWN0IHdoZW4gaW5wdXQgaGFzIG5vIG51bGwgdmFsdWVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSB7IGE6IDEsIGI6ICdoZWxsbycsIGM6IFsxLCAyLCAzXSB9O1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSB7IGE6IDEsIGI6ICdoZWxsbycsIGM6IFsxLCAyLCAzXSB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVtb3ZlTnVsbFZhbHVlcyhpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseSBoYW5kbGVzIG51bGwgYXMgaW5wdXRcbiAgICBpdCgnc2hvdWxkIHJldHVybiBudWxsIHdoZW4gaW5wdXQgaXMgbnVsbCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gbnVsbDtcbiAgICAgIGNvbnN0IGV4cGVjdGVkID0gbnVsbDtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlbW92ZU51bGxWYWx1ZXMoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiBjb3JyZWN0bHkgaGFuZGxlcyB1bmRlZmluZWQgYXMgaW5wdXRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB1bmRlZmluZWQgd2hlbiBpbnB1dCBpcyB1bmRlZmluZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGV4cGVjdGVkID0gdW5kZWZpbmVkO1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVtb3ZlTnVsbFZhbHVlcyhpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseSBoYW5kbGVzIGEgc3RyaW5nIGFzIGlucHV0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIHNhbWUgc3RyaW5nIHdoZW4gaW5wdXQgaXMgYSBzdHJpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9ICdoZWxsbyc7XG4gICAgICBjb25zdCBleHBlY3RlZCA9ICdoZWxsbyc7XG4gICAgICBjb25zdCByZXN1bHQgPSByZW1vdmVOdWxsVmFsdWVzKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gY29ycmVjdGx5IGhhbmRsZXMgYSBudW1iZXIgYXMgaW5wdXRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgc2FtZSBudW1iZXIgd2hlbiBpbnB1dCBpcyBhIG51bWJlcicsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gMTIzO1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSAxMjM7XG4gICAgICBjb25zdCByZXN1bHQgPSByZW1vdmVOdWxsVmFsdWVzKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gY29ycmVjdGx5IGhhbmRsZXMgYW4gYXJyYXkgYXMgaW5wdXRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgc2FtZSBhcnJheSB3aGVuIGlucHV0IGlzIGFuIGFycmF5JywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSBbMSwgMiwgM107XG4gICAgICBjb25zdCBleHBlY3RlZCA9IHsgJzAnOiAxLCAnMSc6IDIsICcyJzogMyB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVtb3ZlTnVsbFZhbHVlcyhpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseSBoYW5kbGVzIGFuIG9iamVjdCB3aXRoIG9ubHkgbnVsbCB2YWx1ZXNcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhbiBlbXB0eSBvYmplY3Qgd2hlbiBpbnB1dCBoYXMgb25seSBudWxsIHZhbHVlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0geyBhOiBudWxsLCBiOiBudWxsLCBjOiBudWxsIH07XG4gICAgICBjb25zdCBleHBlY3RlZCA9IHt9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVtb3ZlTnVsbFZhbHVlcyhpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseSBoYW5kbGVzIGFuIG9iamVjdCB3aXRoIG5lc3RlZCBudWxsIHZhbHVlc1xuICAgIGl0KCdzaG91bGQgcmVtb3ZlIG5lc3RlZCBudWxsIHZhbHVlcyBmcm9tIHRoZSBvYmplY3QnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IHsgYTogeyBiOiBudWxsIH0sIGM6IHsgZDogeyBlOiBudWxsIH0gfSB9O1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSB7IGE6IHt9LCBjOiB7IGQ6IHt9IH0gfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlbW92ZU51bGxWYWx1ZXMoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkubm90LnRvRXF1YWwoZXhwZWN0ZWQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gY29ycmVjdGx5IGhhbmRsZXMgYW4gb2JqZWN0IHdpdGggbmVzdGVkIG5vbi1udWxsIHZhbHVlc1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBzYW1lIG9iamVjdCB3aGVuIGlucHV0IGhhcyBuZXN0ZWQgbm9uLW51bGwgdmFsdWVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSB7IGE6IHsgYjogMSB9LCBjOiB7IGQ6IHsgZTogJ2hlbGxvJyB9IH0gfTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkID0geyBhOiB7IGI6IDEgfSwgYzogeyBkOiB7IGU6ICdoZWxsbycgfSB9IH07XG4gICAgICBjb25zdCByZXN1bHQgPSByZW1vdmVOdWxsVmFsdWVzKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gY29ycmVjdGx5IGhhbmRsZXMgYW4gb2JqZWN0IHdpdGggbWl4ZWQgbmVzdGVkIG51bGwgYW5kIG5vbi1udWxsIHZhbHVlc1xuICAgIGl0KCdzaG91bGQgcmVtb3ZlIG5lc3RlZCBudWxsIHZhbHVlcyBhbmQga2VlcCBub24tbnVsbCB2YWx1ZXMgaW4gdGhlIG9iamVjdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0geyBhOiB7IGI6IG51bGwsIGM6IDEgfSwgZDogeyBlOiBudWxsLCBmOiAnaGVsbG8nIH0gfTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkID0geyBhOiB7IGM6IDEgfSwgZDogeyBmOiAnaGVsbG8nIH0gfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHJlbW92ZU51bGxWYWx1ZXMoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkubm90LnRvRXF1YWwoZXhwZWN0ZWQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gY29ycmVjdGx5IGhhbmRsZXMgYW4gb2JqZWN0IHdpdGggbnVsbCB2YWx1ZXMgYW5kIGZhbHN5IG5vbi1udWxsIHZhbHVlc1xuICAgIGl0KCdzaG91bGQgcmVtb3ZlIG51bGwgdmFsdWVzIGFuZCBrZWVwIGZhbHN5IG5vbi1udWxsIHZhbHVlcyBpbiB0aGUgb2JqZWN0JywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSB7IGE6IG51bGwsIGI6IGZhbHNlLCBjOiAwLCBkOiAnJyB9O1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSB7IGI6IGZhbHNlLCBjOiAwLCBkOiAnJyB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVtb3ZlTnVsbFZhbHVlcyhpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3JlbW92ZVVuZGVmaW5lZEFuZE51bGxWYWx1ZXMnLCAoKSA9PiB7XG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgc2FtZSBvYmplY3Qgd2hlbiBwYXNzZWQgYW4gb2JqZWN0IHdpdGggZGVmaW5lZCBhbmQgbm90IG51bGwgdmFsdWVzXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIHNhbWUgb2JqZWN0IHdoZW4gcGFzc2VkIGFuIG9iamVjdCB3aXRoIGRlZmluZWQgYW5kIG5vdCBudWxsIHZhbHVlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IG9iaiA9IHsgYTogMSwgYjogJ3Rlc3QnLCBjOiB0cnVlIH07XG4gICAgICBleHBlY3QocmVtb3ZlVW5kZWZpbmVkQW5kTnVsbFZhbHVlcyhvYmopKS50b0VxdWFsKG9iaik7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBvYmplY3Qgd2l0aG91dCBudWxsIHZhbHVlcyB3aGVuIHBhc3NlZCBhbiBvYmplY3Qgd2l0aCBkZWZpbmVkIGFuZCBudWxsIHZhbHVlc1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBvYmplY3Qgd2l0aG91dCBudWxsIHZhbHVlcyB3aGVuIHBhc3NlZCBhbiBvYmplY3Qgd2l0aCBkZWZpbmVkIGFuZCBudWxsIHZhbHVlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IG9iaiA9IHsgYTogMSwgYjogbnVsbCwgYzogJ3Rlc3QnLCBkOiBudWxsIH07XG4gICAgICBjb25zdCBleHBlY3RlZCA9IHsgYTogMSwgYzogJ3Rlc3QnIH07XG4gICAgICBleHBlY3QocmVtb3ZlVW5kZWZpbmVkQW5kTnVsbFZhbHVlcyhvYmopKS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYW4gZW1wdHkgb2JqZWN0IHdoZW4gcGFzc2VkIGFuIGVtcHR5IG9iamVjdFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIGVtcHR5IG9iamVjdCB3aGVuIHBhc3NlZCBhbiBlbXB0eSBvYmplY3QnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvYmogPSB7fTtcbiAgICAgIGV4cGVjdChyZW1vdmVVbmRlZmluZWRBbmROdWxsVmFsdWVzKG9iaikpLnRvRXF1YWwoe30pO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgb2JqZWN0IHdpdGhvdXQgdW5kZWZpbmVkIGFuZCBudWxsIHZhbHVlcyB3aGVuIHBhc3NlZCBhbiBvYmplY3Qgd2l0aCB1bmRlZmluZWQgYW5kIG51bGwgdmFsdWVzXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIG9iamVjdCB3aXRob3V0IHVuZGVmaW5lZCBhbmQgbnVsbCB2YWx1ZXMgd2hlbiBwYXNzZWQgYW4gb2JqZWN0IHdpdGggdW5kZWZpbmVkIGFuZCBudWxsIHZhbHVlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IG9iaiA9IHsgYTogMSwgYjogdW5kZWZpbmVkLCBjOiAndGVzdCcsIGQ6IG51bGwgfTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkID0geyBhOiAxLCBjOiAndGVzdCcgfTtcbiAgICAgIGV4cGVjdChyZW1vdmVVbmRlZmluZWRBbmROdWxsVmFsdWVzKG9iaikpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgc2FtZSB2YWx1ZSB3aGVuIHBhc3NlZCBhIG5vbi1vYmplY3QgdmFsdWVcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1ZSB3aGVuIHBhc3NlZCBhIG5vbi1vYmplY3QgdmFsdWUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IDEyMztcbiAgICAgIGV4cGVjdChyZW1vdmVVbmRlZmluZWRBbmROdWxsVmFsdWVzKHZhbHVlKSkudG9FcXVhbCh2YWx1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBzYW1lIG9iamVjdCB3aXRoIG5lc3RlZCBkZWZpbmVkIGFuZCBub3QgbnVsbCB2YWx1ZXMgd2hlbiBwYXNzZWQgYW4gb2JqZWN0IHdpdGggbmVzdGVkIHByb3BlcnRpZXMgY29udGFpbmluZyBkZWZpbmVkIGFuZCBub3QgbnVsbCB2YWx1ZXNcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgc2FtZSBvYmplY3Qgd2l0aCBuZXN0ZWQgZGVmaW5lZCBhbmQgbm90IG51bGwgdmFsdWVzIHdoZW4gcGFzc2VkIGFuIG9iamVjdCB3aXRoIG5lc3RlZCBwcm9wZXJ0aWVzIGNvbnRhaW5pbmcgZGVmaW5lZCBhbmQgbm90IG51bGwgdmFsdWVzJywgKCkgPT4ge1xuICAgICAgY29uc3Qgb2JqID0geyBhOiAxLCBiOiB7IGM6ICd0ZXN0JywgZDogdHJ1ZSB9LCBlOiAndGVzdCcgfTtcbiAgICAgIGV4cGVjdChyZW1vdmVVbmRlZmluZWRBbmROdWxsVmFsdWVzKG9iaikpLnRvRXF1YWwob2JqKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIHNhbWUgb2JqZWN0IHdpdGggcHJvcGVydGllcyBjb250YWluaW5nIGRlZmluZWQgYW5kIG5vdCBudWxsIHZhbHVlcyB3aGVuIHBhc3NlZCBhbiBvYmplY3Qgd2l0aCBwcm9wZXJ0aWVzIGNvbnRhaW5pbmcgZGVmaW5lZCBhbmQgbm90IG51bGwgdmFsdWVzXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIHNhbWUgb2JqZWN0IHdpdGggcHJvcGVydGllcyBjb250YWluaW5nIGRlZmluZWQgYW5kIG5vdCBudWxsIHZhbHVlcyB3aGVuIHBhc3NlZCBhbiBvYmplY3Qgd2l0aCBwcm9wZXJ0aWVzIGNvbnRhaW5pbmcgZGVmaW5lZCBhbmQgbm90IG51bGwgdmFsdWVzJywgKCkgPT4ge1xuICAgICAgY29uc3Qgb2JqID0geyBhOiAxLCBiOiAndGVzdCcsIGM6IHRydWUgfTtcbiAgICAgIGV4cGVjdChyZW1vdmVVbmRlZmluZWRBbmROdWxsVmFsdWVzKG9iaikpLnRvRXF1YWwob2JqKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIG9iamVjdCB3aXRob3V0IG51bGwgdmFsdWVzIHdoZW4gcGFzc2VkIGFuIG9iamVjdCB3aXRoIHByb3BlcnRpZXMgY29udGFpbmluZyBkZWZpbmVkIGFuZCBudWxsIHZhbHVlc1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBvYmplY3Qgd2l0aG91dCBudWxsIHZhbHVlcyB3aGVuIHBhc3NlZCBhbiBvYmplY3Qgd2l0aCBwcm9wZXJ0aWVzIGNvbnRhaW5pbmcgZGVmaW5lZCBhbmQgbnVsbCB2YWx1ZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvYmogPSB7IGE6IDEsIGI6IG51bGwsIGM6ICd0ZXN0JywgZDogbnVsbCB9O1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSB7IGE6IDEsIGM6ICd0ZXN0JyB9O1xuICAgICAgZXhwZWN0KHJlbW92ZVVuZGVmaW5lZEFuZE51bGxWYWx1ZXMob2JqKSkudG9FcXVhbChleHBlY3RlZCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZW1vdmVVbmRlZmluZWRBbmROdWxsQW5kRW1wdHlWYWx1ZXMnLCAoKSA9PiB7XG4gICAgLy8gVE9ETzogTkVFRCBUTyBGSVggVEhJUyBURVNUU1xuICAgIC8vIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIHNhbWUgb2JqZWN0IHdoZW4gYWxsIHZhbHVlcyBhcmUgZGVmaW5lZCwgbm90IG51bGwsIGFuZCBub3QgZW1wdHlcbiAgICAvLyBpdCgnc2hvdWxkIHJldHVybiB0aGUgc2FtZSBvYmplY3Qgd2hlbiBhbGwgdmFsdWVzIGFyZSBkZWZpbmVkLCBub3QgbnVsbCwgYW5kIG5vdCBlbXB0eScsICgpID0+IHtcbiAgICAvLyAgIGNvbnN0IG9iaiA9IHtcbiAgICAvLyAgICAgcHJvcDE6ICd2YWx1ZTEnLFxuICAgIC8vICAgICBwcm9wMjogMTIzLFxuICAgIC8vICAgICBwcm9wMzogWzEsIDIsIDNdLFxuICAgIC8vICAgICBwcm9wNDogeyBuZXN0ZWRQcm9wOiAnbmVzdGVkVmFsdWUnIH0sXG4gICAgLy8gICB9O1xuICAgIC8vICAgZXhwZWN0KHJlbW92ZVVuZGVmaW5lZEFuZE51bGxBbmRFbXB0eVZhbHVlcyhvYmopKS50b0VxdWFsKG9iaik7XG4gICAgLy8gfSk7XG5cbiAgICAvLyAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBzYW1lIG9iamVjdCB3aGVuIGFsbCB2YWx1ZXMgYXJlIGRlZmluZWQgYW5kIG5vdCBudWxsXG4gICAgLy8gaXQoJ3Nob3VsZCByZXR1cm4gdGhlIHNhbWUgb2JqZWN0IHdoZW4gYWxsIHZhbHVlcyBhcmUgZGVmaW5lZCBhbmQgbm90IG51bGwnLCAoKSA9PiB7XG4gICAgLy8gICBjb25zdCBvYmogPSB7XG4gICAgLy8gICAgIHByb3AxOiAndmFsdWUxJyxcbiAgICAvLyAgICAgcHJvcDI6IDEyMyxcbiAgICAvLyAgICAgcHJvcDM6IFsxLCAyLCAzXSxcbiAgICAvLyAgICAgcHJvcDQ6IHsgbmVzdGVkUHJvcDogJ25lc3RlZFZhbHVlJyB9LFxuICAgIC8vICAgfTtcbiAgICAvLyAgIGV4cGVjdChyZW1vdmVVbmRlZmluZWRBbmROdWxsQW5kRW1wdHlWYWx1ZXMob2JqKSkudG9FcXVhbChvYmopO1xuICAgIC8vIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhbiBlbXB0eSBvYmplY3Qgd2hlbiB0aGUgaW5wdXQgaXMgYW4gZW1wdHkgb2JqZWN0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gZW1wdHkgb2JqZWN0IHdoZW4gdGhlIGlucHV0IGlzIGFuIGVtcHR5IG9iamVjdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG9iaiA9IHt9O1xuICAgICAgZXhwZWN0KHJlbW92ZVVuZGVmaW5lZEFuZE51bGxBbmRFbXB0eVZhbHVlcyhvYmopKS50b0VxdWFsKHt9KTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgbnVsbCB3aGVuIHRoZSBpbnB1dCBpcyBudWxsXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gbnVsbCB3aGVuIHRoZSBpbnB1dCBpcyBudWxsJywgKCkgPT4ge1xuICAgICAgY29uc3Qgb2JqID0gbnVsbDtcbiAgICAgIGV4cGVjdChyZW1vdmVVbmRlZmluZWRBbmROdWxsQW5kRW1wdHlWYWx1ZXMob2JqKSkudG9CZU51bGwoKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdW5kZWZpbmVkIHdoZW4gdGhlIGlucHV0IGlzIHVuZGVmaW5lZFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCB3aGVuIHRoZSBpbnB1dCBpcyB1bmRlZmluZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvYmogPSB1bmRlZmluZWQ7XG4gICAgICBleHBlY3QocmVtb3ZlVW5kZWZpbmVkQW5kTnVsbEFuZEVtcHR5VmFsdWVzKG9iaikpLnRvQmVVbmRlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYW4gZW1wdHkgb2JqZWN0IHdoZW4gdGhlIGlucHV0IG9iamVjdCBoYXMgb25seSBlbXB0eSB2YWx1ZXNcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhbiBlbXB0eSBvYmplY3Qgd2hlbiB0aGUgaW5wdXQgb2JqZWN0IGhhcyBvbmx5IGVtcHR5IHZhbHVlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IG9iaiA9IHtcbiAgICAgICAgcHJvcDE6ICcnLFxuICAgICAgICBwcm9wMjogJyAgICAnLFxuICAgICAgICBwcm9wMzogW10sXG4gICAgICAgIHByb3A0OiB7fSxcbiAgICAgIH07XG4gICAgICBleHBlY3QocmVtb3ZlVW5kZWZpbmVkQW5kTnVsbEFuZEVtcHR5VmFsdWVzKG9iaikpLnRvRXF1YWwoeyBwcm9wMjogJyAgICAnIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhIG5ldyBvYmplY3QgYW5kIGRvZXMgbm90IG1vZGlmeSB0aGUgb3JpZ2luYWwgb2JqZWN0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYSBuZXcgb2JqZWN0IGFuZCBub3QgbW9kaWZ5IHRoZSBvcmlnaW5hbCBvYmplY3QnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvYmogPSB7XG4gICAgICAgIHByb3AxOiAndmFsdWUxJyxcbiAgICAgICAgcHJvcDI6IG51bGwsXG4gICAgICAgIHByb3AzOiAnJyxcbiAgICAgIH07XG4gICAgICBjb25zdCByZXN1bHQgPSByZW1vdmVVbmRlZmluZWRBbmROdWxsQW5kRW1wdHlWYWx1ZXMob2JqKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoeyBwcm9wMTogJ3ZhbHVlMScgfSk7XG4gICAgICBleHBlY3QocmVzdWx0KS5ub3QudG9CZShvYmopO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZmxhdHRlbk1hcCcsICgpID0+IHtcbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBpbnB1dCBpZiBpdCBpcyBub3QgYW4gYXJyYXkgb3Igb2JqZWN0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIGlucHV0IHdoZW4gaXQgaXMgbm90IGFuIGFycmF5IG9yIG9iamVjdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gNTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZsYXR0ZW5NYXAoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZShpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgZmxhdHRlbmVkIGFycmF5IGlmIHRoZSBpbnB1dCBpcyBhbiBhcnJheVxuICAgIC8vIE9ubHkgMSBsZXZlbCBvZiBmbGF0dGVuaW5nIGlzIHBlcmZvcm1lZFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgZmxhdHRlbmVkIGFycmF5IHdoZW4gdGhlIGlucHV0IGlzIGFuIGFycmF5JywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSBbMSwgWzIsIDNdLCBbNCwgWzUsIDZdXV07XG4gICAgICBjb25zdCByZXN1bHQgPSBmbGF0dGVuTWFwKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoWzEsIDIsIDMsIDQsIFs1LCA2XV0pO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhIGZsYXR0ZW5lZCBhcnJheSBpZiB0aGUgaW5wdXQgaXMgYW4gb2JqZWN0IHdpdGggYXJyYXkgdmFsdWVzXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYSBmbGF0dGVuZWQgYXJyYXkgd2hlbiB0aGUgaW5wdXQgaXMgYW4gb2JqZWN0IHdpdGggYXJyYXkgdmFsdWVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSB7IGE6IFsxLCAyXSwgYjogWzMsIDRdIH07XG4gICAgICBjb25zdCByZXN1bHQgPSBmbGF0dGVuTWFwKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoWzEsIDIsIDMsIDRdKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYW4gZW1wdHkgYXJyYXkgaWYgdGhlIGlucHV0IGlzIGFuIGVtcHR5IGFycmF5XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gZW1wdHkgYXJyYXkgd2hlbiB0aGUgaW5wdXQgaXMgYW4gZW1wdHkgYXJyYXknLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IFtdO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZmxhdHRlbk1hcChpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFtdKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYW4gZW1wdHkgY29sbGVjdGlvbiBpZiB0aGUgaW5wdXQgaXMgYW4gZW1wdHkgb2JqZWN0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gZW1wdHkgY29sbGVjdGlvbiB3aGVuIHRoZSBpbnB1dCBpcyBhbiBlbXB0eSBvYmplY3QnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IHt9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZmxhdHRlbk1hcChpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFtdKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYW4gYXJyYXkgd2l0aCBudWxsIHZhbHVlIGlmIHRoZSBpbnB1dCBpcyBhbiBhcnJheSB3aXRoIG51bGwgdmFsdWVcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhbiBhcnJheSB3aXRoIG51bGwgdmFsdWUgd2hlbiB0aGUgaW5wdXQgaXMgYW4gYXJyYXkgd2l0aCBudWxsIHZhbHVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSBbbnVsbF07XG4gICAgICBjb25zdCByZXN1bHQgPSBmbGF0dGVuTWFwKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoW251bGxdKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0IHdpdGggbnVsbCB2YWx1ZSBpZiB0aGUgaW5wdXQgaXMgYW4gb2JqZWN0IHdpdGggbnVsbCB2YWx1ZVxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIG9iamVjdCB3aXRoIG51bGwgdmFsdWUgd2hlbiB0aGUgaW5wdXQgaXMgYW4gb2JqZWN0IHdpdGggbnVsbCB2YWx1ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0geyBhOiBudWxsIH07XG4gICAgICBjb25zdCByZXN1bHQgPSBmbGF0dGVuTWFwKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoW251bGxdKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYW4gYXJyYXkgd2l0aCB1bmRlZmluZWQgdmFsdWUgaWYgdGhlIGlucHV0IGlzIGFuIGFycmF5IHdpdGggdW5kZWZpbmVkIHZhbHVlXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gYXJyYXkgd2l0aCB1bmRlZmluZWQgdmFsdWUgd2hlbiB0aGUgaW5wdXQgaXMgYW4gYXJyYXkgd2l0aCB1bmRlZmluZWQgdmFsdWUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IFt1bmRlZmluZWRdO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZmxhdHRlbk1hcChpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFt1bmRlZmluZWRdKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0IHdpdGggdW5kZWZpbmVkIHZhbHVlIGlmIHRoZSBpbnB1dCBpcyBhbiBvYmplY3Qgd2l0aCB1bmRlZmluZWQgdmFsdWVcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhIGNvbGxlY3Rpb24gd2l0aCB1bmRlZmluZWQgdmFsdWUgd2hlbiB0aGUgaW5wdXQgaXMgYW4gb2JqZWN0IHdpdGggdW5kZWZpbmVkIHZhbHVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSB7IGE6IHVuZGVmaW5lZCB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZmxhdHRlbk1hcChpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFt1bmRlZmluZWRdKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYW4gYXJyYXkgd2l0aCBOYU4gdmFsdWUgaWYgdGhlIGlucHV0IGlzIGFuIGFycmF5IHdpdGggTmFOIHZhbHVlXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gYXJyYXkgd2l0aCBOYU4gdmFsdWUgd2hlbiB0aGUgaW5wdXQgaXMgYW4gYXJyYXkgd2l0aCBOYU4gdmFsdWUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IFtOYU5dO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZmxhdHRlbk1hcChpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFtOYU5dKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0IHdpdGggTmFOIHZhbHVlIGlmIHRoZSBpbnB1dCBpcyBhbiBvYmplY3Qgd2l0aCBOYU4gdmFsdWVcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhIGNvbGxlY3Rpb24gd2l0aCBOYU4gdmFsdWUgd2hlbiB0aGUgaW5wdXQgaXMgYW4gb2JqZWN0IHdpdGggTmFOIHZhbHVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSB7IGE6IE5hTiB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZmxhdHRlbk1hcChpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFtOYU5dKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYW4gYXJyYXkgd2l0aCBlbXB0eSBzdHJpbmcgdmFsdWUgaWYgdGhlIGlucHV0IGlzIGFuIGFycmF5IHdpdGggZW1wdHkgc3RyaW5nIHZhbHVlXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gYXJyYXkgd2l0aCBlbXB0eSBzdHJpbmcgdmFsdWUgd2hlbiB0aGUgaW5wdXQgaXMgYW4gYXJyYXkgd2l0aCBlbXB0eSBzdHJpbmcgdmFsdWUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IFsnJ107XG4gICAgICBjb25zdCByZXN1bHQgPSBmbGF0dGVuTWFwKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoWycnXSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgZmxhdHRlbmVkIGFycmF5IHdpdGggdmFsdWVzIG9mIGRpZmZlcmVudCB0eXBlcyBpZiB0aGUgaW5wdXQgaXMgYW4gYXJyYXkgd2l0aCB2YWx1ZXMgb2YgZGlmZmVyZW50IHR5cGVzXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYSBmbGF0dGVuZWQgYXJyYXkgd2l0aCB2YWx1ZXMgb2YgZGlmZmVyZW50IHR5cGVzIHdoZW4gdGhlIGlucHV0IGlzIGFuIGFycmF5IHdpdGggdmFsdWVzIG9mIGRpZmZlcmVudCB0eXBlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gWzEsICd0d28nLCB0cnVlLCB7IG5hbWU6ICdKb2huJyB9XTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZsYXR0ZW5NYXAoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChbMSwgJ3R3bycsIHRydWUsIHsgbmFtZTogJ0pvaG4nIH1dKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYSBmbGF0dGVuZWQgY29sbGVjdGlvbiB3aXRoIHZhbHVlcyBvZiBkaWZmZXJlbnQgdHlwZXMgaWYgdGhlIGlucHV0IGlzIGFuIG9iamVjdCB3aXRoIHZhbHVlcyBvZiBkaWZmZXJlbnQgdHlwZXNcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhIGZsYXR0ZW5lZCBjb2xsZWN0aW9uIHdpdGggdmFsdWVzIG9mIGRpZmZlcmVudCB0eXBlcyB3aGVuIHRoZSBpbnB1dCBpcyBhbiBvYmplY3Qgd2l0aCB2YWx1ZXMgb2YgZGlmZmVyZW50IHR5cGVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSB7IG5hbWU6ICdKb2huJywgYWdlOiAyNSwgaXNTdHVkZW50OiB0cnVlLCBob2JiaWVzOiBbJ3JlYWRpbmcnLCAncGFpbnRpbmcnXSB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZmxhdHRlbk1hcChpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFsnSm9obicsIDI1LCB0cnVlLCAncmVhZGluZycsICdwYWludGluZyddKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYSBmbGF0dGVuZWQgYXJyYXkgd2l0aCBuZXN0ZWQgYXJyYXlzIGFuZCBvYmplY3RzIGlmIHRoZSBpbnB1dCBpcyBhbiBhcnJheSB3aXRoIG5lc3RlZCBhcnJheXMgYW5kIG9iamVjdHNcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhIGZsYXR0ZW5lZCBhcnJheSB3aXRoIG5lc3RlZCBhcnJheXMgYW5kIG9iamVjdHMgd2hlbiB0aGUgaW5wdXQgaXMgYW4gYXJyYXkgd2l0aCBuZXN0ZWQgYXJyYXlzIGFuZCBvYmplY3RzJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSBbMSwgWzIsIFszLCA0XV0sIHsgbmFtZTogJ0pvaG4nLCBhZ2U6IDI1IH1dO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZmxhdHRlbk1hcChpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFsxLCAyLCBbMywgNF0sIHsgbmFtZTogJ0pvaG4nLCBhZ2U6IDI1IH1dKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYSBmbGF0dGVuZWQgYXJyYXkgd2l0aCB2YWx1ZXMgb2YgZGlmZmVyZW50IHR5cGVzIGlmIHRoZSBpbnB1dCBpcyBhbiBhcnJheSB3aXRoIHZhbHVlcyBvZiBkaWZmZXJlbnQgdHlwZXNcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhIGZsYXR0ZW5lZCBhcnJheSB3aXRoIHZhbHVlcyBvZiBkaWZmZXJlbnQgdHlwZXMgd2hlbiB0aGUgaW5wdXQgaXMgYW4gYXJyYXkgd2l0aCB2YWx1ZXMgb2YgZGlmZmVyZW50IHR5cGVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSBbMSwgJ3R3bycsIHRydWUsIHsgbmFtZTogJ0pvaG4nIH1dO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZmxhdHRlbk1hcChpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFsxLCAndHdvJywgdHJ1ZSwgeyBuYW1lOiAnSm9obicgfV0pO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhIGZsYXR0ZW5lZCBjb2xsZWN0aW9uIHdpdGggdmFsdWVzIG9mIGRpZmZlcmVudCB0eXBlcyBpZiB0aGUgaW5wdXQgaXMgYW4gb2JqZWN0IHdpdGggdmFsdWVzIG9mIGRpZmZlcmVudCB0eXBlc1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgZmxhdHRlbmVkIGNvbGxlY3Rpb24gd2l0aCB2YWx1ZXMgb2YgZGlmZmVyZW50IHR5cGVzIHdoZW4gdGhlIGlucHV0IGlzIGFuIG9iamVjdCB3aXRoIHZhbHVlcyBvZiBkaWZmZXJlbnQgdHlwZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IHsgbmFtZTogJ0pvaG4nLCBhZ2U6IDI1LCBpc1N0dWRlbnQ6IHRydWUsIGhvYmJpZXM6IFsncmVhZGluZycsICdwYWludGluZyddIH07XG4gICAgICBjb25zdCByZXN1bHQgPSBmbGF0dGVuTWFwKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoWydKb2huJywgMjUsIHRydWUsICdyZWFkaW5nJywgJ3BhaW50aW5nJ10pO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhIGZsYXR0ZW5lZCBhcnJheSB3aXRoIG5lc3RlZCBhcnJheXMgYW5kIG9iamVjdHMgaWYgdGhlIGlucHV0IGlzIGFuIGFycmF5IHdpdGggbmVzdGVkIGFycmF5cyBhbmQgb2JqZWN0c1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgZmxhdHRlbmVkIGFycmF5IHdpdGggbmVzdGVkIGFycmF5cyBhbmQgb2JqZWN0cyB3aGVuIHRoZSBpbnB1dCBpcyBhbiBhcnJheSB3aXRoIG5lc3RlZCBhcnJheXMgYW5kIG9iamVjdHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IFsxLCBbMiwgWzMsIDRdXSwgeyBuYW1lOiAnSm9obicsIGFnZTogMjUgfV07XG4gICAgICBjb25zdCByZXN1bHQgPSBmbGF0dGVuTWFwKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoWzEsIDIsIFszLCA0XSwgeyBuYW1lOiAnSm9obicsIGFnZTogMjUgfV0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZ2V0RXZlbnRUaW1lJywgKCkgPT4ge1xuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYSBEYXRlIG9iamVjdCB3aGVuIHRoZSBtZXNzYWdlIGhhcyBhIHRpbWVzdGFtcCBwcm9wZXJ0eVxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgRGF0ZSBvYmplY3Qgd2hlbiB0aGUgbWVzc2FnZSBoYXMgYSB0aW1lc3RhbXAgcHJvcGVydHknLCAoKSA9PiB7XG4gICAgICBjb25zdCBtZXNzYWdlID0ge1xuICAgICAgICB0aW1lc3RhbXA6ICcyMDIyLTAxLTAxVDAwOjAwOjAwWicsXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0RXZlbnRUaW1lKG1lc3NhZ2UgYXMgYW55KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmVJbnN0YW5jZU9mKERhdGUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhIERhdGUgb2JqZWN0IHdoZW4gdGhlIG1lc3NhZ2UgaGFzIGFuIG9yaWdpbmFsVGltZXN0YW1wIHByb3BlcnR5XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYSBEYXRlIG9iamVjdCB3aGVuIHRoZSBtZXNzYWdlIGhhcyBhbiBvcmlnaW5hbFRpbWVzdGFtcCBwcm9wZXJ0eScsICgpID0+IHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSB7XG4gICAgICAgIG9yaWdpbmFsVGltZXN0YW1wOiAnMjAyMi0wMS0wMVQwMDowMDowMFonLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEV2ZW50VGltZShtZXNzYWdlIGFzIGFueSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlSW5zdGFuY2VPZihEYXRlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHRocm93cyBhbiBJbnN0cnVtZW50YXRpb25FcnJvciB3aGVuIHRoZSBtZXNzYWdlIGhhcyBuZWl0aGVyIGEgdGltZXN0YW1wIG5vciBhbiBvcmlnaW5hbFRpbWVzdGFtcCBwcm9wZXJ0eVxuICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gSW5zdHJ1bWVudGF0aW9uRXJyb3Igd2hlbiB0aGUgbWVzc2FnZSBoYXMgbmVpdGhlciBhIHRpbWVzdGFtcCBub3IgYW4gb3JpZ2luYWxUaW1lc3RhbXAgcHJvcGVydHknLCAoKSA9PiB7XG4gICAgICBjb25zdCBtZXNzYWdlID0ge307XG4gICAgICBleHBlY3QoKCkgPT4gZ2V0RXZlbnRUaW1lKG1lc3NhZ2UgYXMgYW55KSkudG9UaHJvdyhJbnN0cnVtZW50YXRpb25FcnJvcik7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGFuIGludmFsaWQgRGF0ZSBvYmplY3Qgd2hlbiB0aGUgbWVzc2FnZSBoYXMgYW4gaW52YWxpZCB0aW1lc3RhbXAgcHJvcGVydHlcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhbiBpbnZhbGlkIERhdGUgb2JqZWN0IHdoZW4gdGhlIG1lc3NhZ2UgaGFzIGFuIGludmFsaWQgdGltZXN0YW1wIHByb3BlcnR5JywgKCkgPT4ge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IHtcbiAgICAgICAgdGltZXN0YW1wOiAnaW52YWxpZCcsXG4gICAgICB9O1xuICAgICAgY29uc3QgZXZlbnRUaW1lID0gZ2V0RXZlbnRUaW1lKG1lc3NhZ2UgYXMgYW55KTtcbiAgICAgIGV4cGVjdChldmVudFRpbWUpLnRvQmVJbnN0YW5jZU9mKERhdGUpO1xuICAgICAgZXhwZWN0KGV2ZW50VGltZS50b1N0cmluZygpKS50b0JlKCdJbnZhbGlkIERhdGUnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2Jhc2U2NENvbnZlcnRvcicsICgpID0+IHtcbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiBjb3JyZWN0bHkgaGFuZGxlcyBhbiBlbXB0eSBzdHJpbmcgaW5wdXQgYW5kIHJldHVybnMgYW4gZW1wdHkgYmFzZTY0IHN0cmluZ1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIGVtcHR5IGJhc2U2NCBzdHJpbmcgd2hlbiB0aGUgaW5wdXQgaXMgYW4gZW1wdHkgc3RyaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSAnJztcbiAgICAgIGNvbnN0IGV4cGVjdGVkT3V0cHV0ID0gJyc7XG4gICAgICBjb25zdCByZXN1bHQgPSBiYXNlNjRDb252ZXJ0b3IoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZE91dHB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiBjb3JyZWN0bHkgaGFuZGxlcyBhIHN0cmluZyBpbnB1dCB3aXRoIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGFuZCBjb252ZXJ0cyBpdCB0byBiYXNlNjQgZm9ybWF0XG4gICAgaXQoJ3Nob3VsZCBjb252ZXJ0IGEgc3RyaW5nIHdpdGggbm9uLUFTQ0lJIGNoYXJhY3RlcnMgdG8gYmFzZTY0IGZvcm1hdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gJ+OBk+OCk+OBq+OBoeOBryc7XG4gICAgICBjb25zdCBleHBlY3RlZE91dHB1dCA9ICc0NEdUNDRLVDQ0R3I0NEdoNDRHdic7XG4gICAgICBjb25zdCByZXN1bHQgPSBiYXNlNjRDb252ZXJ0b3IoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZE91dHB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiBjb3JyZWN0bHkgaGFuZGxlcyBhIHN0cmluZyBpbnB1dCB3aXRoIHNwZWNpYWwgY2hhcmFjdGVycyBhbmQgY29udmVydHMgaXQgdG8gYmFzZTY0IGZvcm1hdFxuICAgIGl0KCdzaG91bGQgY29udmVydCBhIHN0cmluZyB3aXRoIHNwZWNpYWwgY2hhcmFjdGVycyB0byBiYXNlNjQgZm9ybWF0JywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSAnIUAjJCVeJiooKSc7XG4gICAgICBjb25zdCBleHBlY3RlZE91dHB1dCA9ICdJVUFqSkNWZUppb29LUT09JztcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGJhc2U2NENvbnZlcnRvcihpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkT3V0cHV0KTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseSBoYW5kbGVzIGEgc3RyaW5nIGlucHV0IHdpdGggd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGFuZCBjb252ZXJ0cyBpdCB0byBiYXNlNjQgZm9ybWF0XG4gICAgaXQoJ3Nob3VsZCBjb252ZXJ0IGEgc3RyaW5nIHdpdGggd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIHRvIGJhc2U2NCBmb3JtYXQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9ICcgICBIZWxsbyBXb3JsZCAgICc7XG4gICAgICBjb25zdCBleHBlY3RlZE91dHB1dCA9ICdJQ0FnU0dWc2JHOGdWMjl5YkdRZ0lDQT0nO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYmFzZTY0Q29udmVydG9yKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRPdXRwdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gY29ycmVjdGx5IGhhbmRsZXMgYSBzdHJpbmcgaW5wdXQgd2l0aCBsaW5lIGJyZWFrcyBhbmQgY29udmVydHMgaXQgdG8gYmFzZTY0IGZvcm1hdFxuICAgIGl0KCdzaG91bGQgY29udmVydCBhIHN0cmluZyB3aXRoIGxpbmUgYnJlYWtzIHRvIGJhc2U2NCBmb3JtYXQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9ICdIZWxsb1xcbldvcmxkJztcbiAgICAgIGNvbnN0IGV4cGVjdGVkT3V0cHV0ID0gJ1NHVnNiRzhLVjI5eWJHUT0nO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYmFzZTY0Q29udmVydG9yKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRPdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnaXNWYWxpZFVybCcsICgpID0+IHtcbiAgICAvLyBUZXN0cyB0aGF0IGEgdmFsaWQgVVJMIHN0cmluZyByZXR1cm5zIGEgVVJMIG9iamVjdFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgVVJMIG9iamVjdCB3aGVuIGdpdmVuIGEgdmFsaWQgVVJMIHN0cmluZycsICgpID0+IHtcbiAgICAgIGNvbnN0IHVybCA9ICdodHRwczovL3d3dy5leGFtcGxlLmNvbSc7XG4gICAgICBleHBlY3QoaXNWYWxpZFVybCh1cmwpKS50b0JlSW5zdGFuY2VPZihVUkwpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBhIHZhbGlkIFVSTCBvYmplY3QgcmV0dXJucyB0aGUgc2FtZSBVUkwgb2JqZWN0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIHNhbWUgVVJMIG9iamVjdCB3aGVuIGdpdmVuIGEgdmFsaWQgVVJMIG9iamVjdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwoJ2h0dHBzOi8vd3d3LmV4YW1wbGUuY29tJyk7XG4gICAgICBleHBlY3QoaXNWYWxpZFVybCh1cmwpPy50b0pTT04oKSkudG9CZSh1cmwudG9KU09OKCkpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBhIFVSTCB3aXRoIHF1ZXJ5IHBhcmFtZXRlcnMgcmV0dXJucyBhIFVSTCBvYmplY3RcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhIFVSTCBvYmplY3Qgd2hlbiBnaXZlbiBhIFVSTCB3aXRoIHF1ZXJ5IHBhcmFtZXRlcnMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB1cmwgPSAnaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20/cGFyYW0xPXZhbHVlMSZwYXJhbTI9dmFsdWUyJztcbiAgICAgIGV4cGVjdChpc1ZhbGlkVXJsKHVybCkpLnRvQmVJbnN0YW5jZU9mKFVSTCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGEgVVJMIHdpdGggYSBoYXNoIHJldHVybnMgYSBVUkwgb2JqZWN0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYSBVUkwgb2JqZWN0IHdoZW4gZ2l2ZW4gYSBVUkwgd2l0aCBhIGhhc2gnLCAoKSA9PiB7XG4gICAgICBjb25zdCB1cmwgPSAnaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20jc2VjdGlvbjEnO1xuICAgICAgZXhwZWN0KGlzVmFsaWRVcmwodXJsKSkudG9CZUluc3RhbmNlT2YoVVJMKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgYSBVUkwgd2l0aCBhIHBvcnQgcmV0dXJucyBhIFVSTCBvYmplY3RcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhIFVSTCBvYmplY3Qgd2hlbiBnaXZlbiBhIFVSTCB3aXRoIGEgcG9ydCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHVybCA9ICdodHRwczovL3d3dy5leGFtcGxlLmNvbTo4MDgwJztcbiAgICAgIGV4cGVjdChpc1ZhbGlkVXJsKHVybCkpLnRvQmVJbnN0YW5jZU9mKFVSTCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGEgVVJMIHdpdGggYSB1c2VybmFtZSBhbmQgcGFzc3dvcmQgcmV0dXJucyBhIFVSTCBvYmplY3RcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhIFVSTCBvYmplY3Qgd2hlbiBnaXZlbiBhIFVSTCB3aXRoIGEgdXNlcm5hbWUgYW5kIHBhc3N3b3JkJywgKCkgPT4ge1xuICAgICAgY29uc3QgdXJsID0gJ2h0dHBzOi8vdXNlcm5hbWU6cGFzc3dvcmRAZXhhbXBsZS5jb20nO1xuICAgICAgZXhwZWN0KGlzVmFsaWRVcmwodXJsKSkudG9CZUluc3RhbmNlT2YoVVJMKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgYW4gZW1wdHkgc3RyaW5nIHJldHVybnMgbnVsbFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIG51bGwgd2hlbiBnaXZlbiBhbiBlbXB0eSBzdHJpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCB1cmwgPSAnJztcbiAgICAgIGV4cGVjdChpc1ZhbGlkVXJsKHVybCkpLnRvQmVOdWxsKCk7XG4gICAgfSk7XG5cbiAgICAvLyBUaGUgdGVzdCBvYmplY3RpdmUgaXMgdG8gdmVyaWZ5IHRoYXQgdGhlIGZ1bmN0aW9uICdpc1ZhbGlkVXJsJyByZXR1cm5zIG51bGwgd2hlbiBnaXZlbiBhbiBpbnZhbGlkIFVSTCBzdHJpbmcuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gbnVsbCB3aGVuIGdpdmVuIGFuIGludmFsaWQgVVJMIHN0cmluZycsICgpID0+IHtcbiAgICAgIGNvbnN0IHVybCA9ICdpbnZhbGlkLXVybCc7XG4gICAgICBleHBlY3QoaXNWYWxpZFVybCh1cmwpKS50b0JlTnVsbCgpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBhbiBVUkwgd2l0aCBhIGRpZmZlcmVudCBwcm90b2NvbCByZXR1cm5zIHZhbGlkIG9iamVjdFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIFVSTCBvYmplY3Qgd2hlbiBnaXZlbiBhIFVSTCB3aXRoIGEgZGlmZmVyZW50IHByb3RvY29sJywgKCkgPT4ge1xuICAgICAgY29uc3QgdXJsID0gJ2Z0cDovL3d3dy5leGFtcGxlLmNvbSc7XG4gICAgICBleHBlY3QoaXNWYWxpZFVybCh1cmwpKS50b0JlSW5zdGFuY2VPZihVUkwpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBhbiBpbnZhbGlkIFVSTCB3aXRoIGFuIGludmFsaWQgcG9ydCByZXR1cm5zIG51bGxcbiAgICBpdCgnc2hvdWxkIHJldHVybiBudWxsIHdoZW4gZ2l2ZW4gYSBVUkwgd2l0aCBhbiBpbnZhbGlkIHBvcnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB1cmwgPSAnaHR0cHM6Ly93d3cuZXhhbXBsZS5jb206YWJjJztcbiAgICAgIGV4cGVjdChpc1ZhbGlkVXJsKHVybCkpLnRvQmVOdWxsKCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGEgVVJMIHdpdGggaW52YWxpZCB1c2VybmFtZSBhbmQgcGFzc3dvcmQgcmV0dXJucyBvYmplY3RcbiAgICBpdCgnc2hvdWxkIHJldHVybiBvYmplY3Qgd2hlbiBnaXZlbiBhIFVSTCB3aXRoIHVzZXJuYW1lIGFuZCBwYXNzd29yZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHVybCA9ICdodHRwczovL3VzZXJuYW1lOnBhc3N3b3JkQGV4YW1wbGUuY29tJztcbiAgICAgIGV4cGVjdChpc1ZhbGlkVXJsKHVybCkpLnRvQmVJbnN0YW5jZU9mKFVSTCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGEgVVJMIHdpdGggYSBzdWJkb21haW4gcmV0dXJucyBVUkwgb2JqZWN0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gbnVsbCB3aGVuIGdpdmVuIGEgVVJMIHdpdGggYW4gaW52YWxpZCBzdWJkb21haW4nLCAoKSA9PiB7XG4gICAgICBjb25zdCB1cmwgPSAnaHR0cHM6Ly9pbnZhbGlkLmV4YW1wbGUuY29tJztcbiAgICAgIGV4cGVjdChpc1ZhbGlkVXJsKHVybCkpLnRvQmVJbnN0YW5jZU9mKFVSTCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGEgdmFsaWQgVVJMIHN0cmluZyB3aXRoIGEgcGF0aCByZXR1cm5zIGEgVVJMIG9iamVjdFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgVVJMIG9iamVjdCB3aGVuIGdpdmVuIGEgdmFsaWQgVVJMIHN0cmluZyB3aXRoIGEgcGF0aCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHVybCA9ICdodHRwczovL3d3dy5leGFtcGxlLmNvbS9wYXRoJztcbiAgICAgIGV4cGVjdChpc1ZhbGlkVXJsKHVybCkpLnRvQmVJbnN0YW5jZU9mKFVSTCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGEgdmFsaWQgVVJMIHN0cmluZyB3aXRoIGEgc3ViZG9tYWluIHJldHVybnMgYSBVUkwgb2JqZWN0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYSBVUkwgb2JqZWN0IHdoZW4gZ2l2ZW4gYSB2YWxpZCBVUkwgc3RyaW5nIHdpdGggYSBzdWJkb21haW4nLCAoKSA9PiB7XG4gICAgICBjb25zdCB1cmwgPSAnaHR0cHM6Ly9zdWJkb21haW4uZXhhbXBsZS5jb20nO1xuICAgICAgZXhwZWN0KGlzVmFsaWRVcmwodXJsKSkudG9CZUluc3RhbmNlT2YoVVJMKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgYSB2YWxpZCBVUkwgc3RyaW5nIHJldHVybnMgYSBVUkwgb2JqZWN0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYSBVUkwgb2JqZWN0IHdoZW4gZ2l2ZW4gYSB2YWxpZCBVUkwgc3RyaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgdXJsID0gJ2h0dHBzOi8vd3d3LmV4YW1wbGUuY29tJztcbiAgICAgIGV4cGVjdChpc1ZhbGlkVXJsKHVybCkpLnRvQmVJbnN0YW5jZU9mKFVSTCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGEgdmFsaWQgVVJMIHN0cmluZyByZXR1cm5zIGEgVVJMIG9iamVjdFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgVVJMIG9iamVjdCB3aGVuIGdpdmVuIGEgdmFsaWQgVVJMIHN0cmluZycsICgpID0+IHtcbiAgICAgIGNvbnN0IHVybCA9ICdodHRwczovL3d3dy5leGFtcGxlLmNvbSc7XG4gICAgICBleHBlY3QoaXNWYWxpZFVybCh1cmwpKS50b0JlSW5zdGFuY2VPZihVUkwpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc3RyaXBUcmFpbGluZ1NsYXNoJywgKCkgPT4ge1xuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIHNhbWUgc3RyaW5nIGlmIGl0IGRvZXMgbm90IGVuZCB3aXRoICcvJ1xuICAgIGl0KFwic2hvdWxkIHJldHVybiB0aGUgc2FtZSBzdHJpbmcgd2hlbiBpdCBkb2VzIG5vdCBlbmQgd2l0aCAnLydcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSAnZXhhbXBsZSc7XG4gICAgICBjb25zdCByZXN1bHQgPSBzdHJpcFRyYWlsaW5nU2xhc2goaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZShpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZW1vdmVzIHRoZSB0cmFpbGluZyAnLycgaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggaXRcbiAgICBpdChcInNob3VsZCByZW1vdmUgdGhlIHRyYWlsaW5nICcvJyBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCBpdFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9ICdleGFtcGxlLyc7XG4gICAgICBjb25zdCByZXN1bHQgPSBzdHJpcFRyYWlsaW5nU2xhc2goaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgnZXhhbXBsZScpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmVtb3ZlcyBvbmx5IG9uZSB0cmFpbGluZyAnLycgaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggbXVsdGlwbGVcbiAgICBpdChcInNob3VsZCByZW1vdmUgb25seSBvbmUgdHJhaWxpbmcgJy8nIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIG11bHRpcGxlXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gJ2V4YW1wbGUvLyc7XG4gICAgICBjb25zdCByZXN1bHQgPSBzdHJpcFRyYWlsaW5nU2xhc2goaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgnZXhhbXBsZS8nKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nIGlmIHRoZSBpbnB1dCBpcyBhbiBlbXB0eSBzdHJpbmdcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIGlucHV0IGlzIGFuIGVtcHR5IHN0cmluZycsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gJyc7XG4gICAgICBjb25zdCByZXN1bHQgPSBzdHJpcFRyYWlsaW5nU2xhc2goaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgnJyk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGVtcHR5IHN0cmluZyBpZiBpdCBjb250YWlucyBvbmx5ICcvJ1xuICAgIGl0KFwic2hvdWxkIHJldHVybiBlbXB0eSBzdHJpbmcgd2hlbiBpdCBjb250YWlucyBvbmx5ICcvJ1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9ICcnO1xuICAgICAgY29uc3QgcmVzdWx0ID0gc3RyaXBUcmFpbGluZ1NsYXNoKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoaW5wdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgc2FtZSBzdHJpbmcgaWYgaXQgZG9lcyBub3QgZW5kIHdpdGggJy8nXG4gICAgaXQoXCJzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHN0cmluZyB3aGVuIGl0IGRvZXMgbm90IGVuZCB3aXRoICcvJ1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9ICdleGFtcGxlJztcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHN0cmlwVHJhaWxpbmdTbGFzaChpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJlbW92ZXMgdGhlIHRyYWlsaW5nIHNsYXNoIGZyb20gYSBzdHJpbmcgaWYgaXQgZXhpc3RzXG4gICAgaXQoJ3Nob3VsZCByZW1vdmUgdGhlIHRyYWlsaW5nIHNsYXNoIHdoZW4gaXQgZXhpc3RzJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSAnZXhhbXBsZS8nO1xuICAgICAgY29uc3QgcmVzdWx0ID0gc3RyaXBUcmFpbGluZ1NsYXNoKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ2V4YW1wbGUnKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJlbW92ZXMgdGhlIHRyYWlsaW5nIHNsYXNoIGZyb20gYSBzdHJpbmcgaWYgaXQgZXhpc3RzXG4gICAgaXQoJ3Nob3VsZCByZW1vdmUgdGhlIHRyYWlsaW5nIHNsYXNoIHdoZW4gaXQgZXhpc3RzJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSAnZXhhbXBsZS8nO1xuICAgICAgY29uc3QgcmVzdWx0ID0gc3RyaXBUcmFpbGluZ1NsYXNoKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ2V4YW1wbGUnKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJlbW92ZXMgdHJhaWxpbmcgc2xhc2hlcyBmcm9tIGEgc3RyaW5nXG4gICAgaXQoJ3Nob3VsZCByZW1vdmUgdHJhaWxpbmcgc2xhc2hlcyB3aGVuIHRoZXkgZXhpc3QnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9ICdleGFtcGxlLyc7XG4gICAgICBjb25zdCByZXN1bHQgPSBzdHJpcFRyYWlsaW5nU2xhc2goaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgnZXhhbXBsZScpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmVtb3ZlcyB0aGUgdHJhaWxpbmcgc2xhc2ggZnJvbSBhIHN0cmluZyBpZiBpdCBleGlzdHNcbiAgICBpdCgnc2hvdWxkIHJlbW92ZSB0aGUgdHJhaWxpbmcgc2xhc2ggd2hlbiBpdCBleGlzdHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9ICdleGFtcGxlLyc7XG4gICAgICBjb25zdCByZXN1bHQgPSBzdHJpcFRyYWlsaW5nU2xhc2goaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgnZXhhbXBsZScpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmVtb3ZlcyB0aGUgdHJhaWxpbmcgc2xhc2ggZnJvbSBhIHN0cmluZyBpZiBpdCBlbmRzIHdpdGggJy8nXG4gICAgaXQoXCJzaG91bGQgcmVtb3ZlIHRoZSB0cmFpbGluZyBzbGFzaCB3aGVuIHRoZSBzdHJpbmcgZW5kcyB3aXRoICcvJ1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9ICdleGFtcGxlLyc7XG4gICAgICBjb25zdCByZXN1bHQgPSBzdHJpcFRyYWlsaW5nU2xhc2goaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgnZXhhbXBsZScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnaXNQcmltaXRpdmUnLCAoKSA9PiB7XG4gICAgLy8gVGVzdHMgdGhhdCBpc1ByaW1pdGl2ZSByZXR1cm5zIHRydWUgZm9yIGEgcHJpbWl0aXZlIHN0cmluZ1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiB0aGUgYXJndW1lbnQgaXMgYSBwcmltaXRpdmUgc3RyaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNQcmltaXRpdmUoJ2hlbGxvJyk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc1ByaW1pdGl2ZSByZXR1cm5zIHRydWUgZm9yIGEgcHJpbWl0aXZlIG51bWJlclxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiB0aGUgYXJndW1lbnQgaXMgYSBwcmltaXRpdmUgbnVtYmVyJywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNQcmltaXRpdmUoMTIzKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzUHJpbWl0aXZlIHJldHVybnMgdHJ1ZSBmb3IgYSBwcmltaXRpdmUgYm9vbGVhblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiB0aGUgYXJndW1lbnQgaXMgYSBwcmltaXRpdmUgYm9vbGVhbicsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzUHJpbWl0aXZlKHRydWUpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNQcmltaXRpdmUgcmV0dXJucyB0cnVlIGZvciBudWxsXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIHRoZSBhcmd1bWVudCBpcyBudWxsJywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNQcmltaXRpdmUobnVsbCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc1ByaW1pdGl2ZSByZXR1cm5zIHRydWUgZm9yIHVuZGVmaW5lZFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiB0aGUgYXJndW1lbnQgaXMgdW5kZWZpbmVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNQcmltaXRpdmUodW5kZWZpbmVkKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzUHJpbWl0aXZlIHJldHVybnMgZmFsc2UgZm9yIGFuIGluc3RhbmNlIG9mIGEgbm9uLXByaW1pdGl2ZSB3cmFwcGVyIGNsYXNzIChEYXRlKVxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdGhlIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIGEgbm9uLXByaW1pdGl2ZSB3cmFwcGVyIGNsYXNzIChEYXRlKScsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzUHJpbWl0aXZlKG5ldyBEYXRlKCkpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzUHJpbWl0aXZlIHJldHVybnMgZmFsc2UgZm9yIGFuIGluc3RhbmNlIG9mIGEgY3VzdG9tIGNsYXNzXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgYSBjdXN0b20gY2xhc3MnLCAoKSA9PiB7XG4gICAgICBjbGFzcyBDdXN0b21DbGFzcyB7fVxuICAgICAgY29uc3QgYXJnID0gbmV3IEN1c3RvbUNsYXNzKCk7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc1ByaW1pdGl2ZShhcmcpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzUHJpbWl0aXZlIHJldHVybnMgZmFsc2UgZm9yIGEgZnVuY3Rpb24gd2l0aCBwcm9wZXJ0aWVzXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiB0aGUgYXJndW1lbnQgaXMgYSBmdW5jdGlvbiB3aXRoIHByb3BlcnRpZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBmdW5jID0gKCkgPT4ge307XG4gICAgICBmdW5jLnByb3BlcnR5ID0gJ3ZhbHVlJztcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzUHJpbWl0aXZlKGZ1bmMpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzUHJpbWl0aXZlIHJldHVybnMgdHJ1ZSBmb3IgYSBzeW1ib2xcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gdGhlIGFyZ3VtZW50IGlzIGEgc3ltYm9sJywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNQcmltaXRpdmUoU3ltYm9sKCd0ZXN0JykpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldFR5cGUnLCAoKSA9PiB7XG4gICAgLy8gVGVzdHMgdGhhdCBnZXRUeXBlIHJldHVybnMgdGhlIGNvcnJlY3QgdHlwZSBmb3Igc3RyaW5nIGlucHV0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gc3RyaW5nIHdoZW4gdGhlIGlucHV0IGlzIGEgc3RyaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSAnaGVsbG8nO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0VHlwZShpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCdzdHJpbmcnKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgZ2V0VHlwZSByZXR1cm5zIHRoZSBjb3JyZWN0IHR5cGUgZm9yIG51bWJlciBpbnB1dFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIG51bWJlciB3aGVuIHRoZSBpbnB1dCBpcyBhIG51bWJlcicsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gNDI7XG4gICAgICBjb25zdCByZXN1bHQgPSBnZXRUeXBlKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ251bWJlcicpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBnZXRUeXBlIHJldHVybnMgdGhlIGNvcnJlY3QgdHlwZSBmb3IgYm9vbGVhbiBpbnB1dFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGJvb2xlYW4gd2hlbiB0aGUgaW5wdXQgaXMgYSBib29sZWFuIHZhbHVlJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KGdldFR5cGUodHJ1ZSkpLnRvQmUoJ2Jvb2xlYW4nKTtcbiAgICAgIGV4cGVjdChnZXRUeXBlKGZhbHNlKSkudG9CZSgnYm9vbGVhbicpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBnZXRUeXBlIHJldHVybnMgJ05VTEwnIHdoZW4gdGhlIGlucHV0IGlzIG51bGxcbiAgICBpdChcInNob3VsZCByZXR1cm4gJ05VTEwnIHdoZW4gdGhlIGlucHV0IGlzIG51bGxcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSBudWxsO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0VHlwZShpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCdOVUxMJyk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGdldFR5cGUgcmV0dXJucyAnb2JqZWN0JyB3aGVuIHRoZSBpbnB1dCBpcyBhbiBlbXB0eSBvYmplY3RcbiAgICBpdCgnc2hvdWxkIHJldHVybiBvYmplY3Qgd2hlbiB0aGUgaW5wdXQgaXMgYW4gZW1wdHkgb2JqZWN0JywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSB7fTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldFR5cGUoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgnb2JqZWN0Jyk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGdldFR5cGUgcmV0dXJucyB0aGUgY29ycmVjdCB0eXBlIGZvciBmdW5jdGlvbiBpbnB1dFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZ1bmN0aW9uIHdoZW4gdGhlIGlucHV0IGlzIGEgZnVuY3Rpb24nLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9ICgpID0+IHt9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0VHlwZShpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCdmdW5jdGlvbicpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBnZXRUeXBlIHJldHVybnMgdGhlIGNvcnJlY3QgdHlwZSBmb3IgYmlnaW50IGlucHV0XG4gICAgaXQoXCJzaG91bGQgcmV0dXJuICdiaWdpbnQnIHdoZW4gdGhlIGlucHV0IGlzIGEgYmlnaW50XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gQmlnSW50KDEwKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldFR5cGUoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgnYmlnaW50Jyk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGdldFR5cGUgcmV0dXJucyAnc3ltYm9sJyB3aGVuIHRoZSBpbnB1dCBpcyBhIHN5bWJvbFxuICAgIGl0KFwic2hvdWxkIHJldHVybiAnc3ltYm9sJyB3aGVuIHRoZSBpbnB1dCBpcyBhIHN5bWJvbFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IFN5bWJvbCgndGVzdCcpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0VHlwZShpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCdzeW1ib2wnKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgZ2V0VHlwZSByZXR1cm5zICd1bmRlZmluZWQnIHdoZW4gdGhlIGlucHV0IGlzIHVuZGVmaW5lZFxuICAgIGl0KFwic2hvdWxkIHJldHVybiAnTlVMTCcgd2hlbiB0aGUgaW5wdXQgaXMgdW5kZWZpbmVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gdW5kZWZpbmVkO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0VHlwZShpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCdOVUxMJyk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGdldFR5cGUgcmV0dXJucyB0aGUgY29ycmVjdCB0eXBlIGZvciBhcnJvdyBmdW5jdGlvbiBpbnB1dFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZ1bmN0aW9uIHdoZW4gdGhlIGlucHV0IGlzIGFuIGFycm93IGZ1bmN0aW9uJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSAoKSA9PiB7fTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldFR5cGUoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgnZnVuY3Rpb24nKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgZ2V0VHlwZSByZXR1cm5zICdvYmplY3QnIHdoZW4gdGhlIGlucHV0IGlzIGFuIG9iamVjdCB3aXRoIHByb3BlcnRpZXNcbiAgICBpdCgnc2hvdWxkIHJldHVybiBvYmplY3Qgd2hlbiB0aGUgaW5wdXQgaXMgYW4gb2JqZWN0IHdpdGggcHJvcGVydGllcycsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0geyBuYW1lOiAnSm9obicsIGFnZTogMzAgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldFR5cGUoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgnb2JqZWN0Jyk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGdldFR5cGUgb2JqZWN0IHRoZSBjb3JyZWN0IHR5cGUgZm9yIGNsYXNzIGlucHV0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gb2JqZWN0IHdoZW4gdGhlIGlucHV0IGlzIGEgY2xhc3MnLCAoKSA9PiB7XG4gICAgICBjbGFzcyBNeUNsYXNzIHt9XG4gICAgICBjb25zdCBpbnB1dCA9IG5ldyBNeUNsYXNzKCk7XG4gICAgICBjb25zdCByZXN1bHQgPSBnZXRUeXBlKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ29iamVjdCcpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBnZXRUeXBlIHJldHVybnMgJ2Z1bmN0aW9uJyB3aGVuIHRoZSBpbnB1dCBpcyBhIGdlbmVyYXRvciBmdW5jdGlvblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZ1bmN0aW9uIHdoZW4gdGhlIGlucHV0IGlzIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uJywgKCkgPT4ge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgICAgY29uc3QgaW5wdXQgPSBmdW5jdGlvbiogKCkge307XG4gICAgICBjb25zdCByZXN1bHQgPSBnZXRUeXBlKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ2Z1bmN0aW9uJyk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGdldFR5cGUgcmV0dXJucyAnZnVuY3Rpb24nIHdoZW4gdGhlIGlucHV0IGlzIGFuIGFzeW5jIGZ1bmN0aW9uXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZnVuY3Rpb24gd2hlbiB0aGUgaW5wdXQgaXMgYW4gYXN5bmMgZnVuY3Rpb24nLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IGFzeW5jICgpID0+IHt9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0VHlwZShpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCdmdW5jdGlvbicpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnaXNPYmplY3QnLCAoKSA9PiB7XG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIGZvciBhbiBvYmplY3RcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gdmFsdWUgaXMgYW4gb2JqZWN0JywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSB7fTtcbiAgICAgIGV4cGVjdChpc09iamVjdCh2YWx1ZSkpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUgZm9yIGEgZnVuY3Rpb25cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gdmFsdWUgaXMgYSBmdW5jdGlvbicsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gKCkgPT4ge307XG4gICAgICBleHBlY3QoaXNPYmplY3QodmFsdWUpKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBmYWxzZSBmb3IgbnVsbFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdmFsdWUgaXMgbnVsbCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gbnVsbDtcbiAgICAgIGV4cGVjdChpc09iamVjdCh2YWx1ZSkpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBmYWxzZSBmb3IgdW5kZWZpbmVkXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiB2YWx1ZSBpcyB1bmRlZmluZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgIGV4cGVjdChpc09iamVjdCh2YWx1ZSkpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBmYWxzZSBmb3IgYW4gYXJyYXlcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHZhbHVlIGlzIGFuIGFycmF5JywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBbXTtcbiAgICAgIGV4cGVjdChpc09iamVjdCh2YWx1ZSkpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBmYWxzZSBmb3IgYSBzdHJpbmdcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHZhbHVlIGlzIGEgc3RyaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSAndGVzdCc7XG4gICAgICBleHBlY3QoaXNPYmplY3QodmFsdWUpKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgZmFsc2UgZm9yIGEgbnVtYmVyXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiB2YWx1ZSBpcyBhIG51bWJlcicsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gMTIzO1xuICAgICAgZXhwZWN0KGlzT2JqZWN0KHZhbHVlKSkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGZhbHNlIGZvciBhIGJvb2xlYW5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHZhbHVlIGlzIGEgYm9vbGVhbicsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdHJ1ZTtcbiAgICAgIGV4cGVjdChpc09iamVjdCh2YWx1ZSkpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBmYWxzZSBmb3IgYSBzeW1ib2xcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHZhbHVlIGlzIGEgc3ltYm9sJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBTeW1ib2woKTtcbiAgICAgIGV4cGVjdChpc09iamVjdCh2YWx1ZSkpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBmYWxzZSB3aGVuIHRoZSB2YWx1ZSBpcyBOYU5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHZhbHVlIGlzIE5hTicsICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gTmFOO1xuICAgICAgZXhwZWN0KGlzT2JqZWN0KHZhbHVlKSkudG9CZShmYWxzZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdpc0VtcHR5JywgKCkgPT4ge1xuICAgIC8vIFRlc3RzIHRoYXQgaXNFbXB0eSByZXR1cm5zIHRydWUgZm9yIGFuIGVtcHR5IHN0cmluZ1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBpbnB1dCBpcyBhbiBlbXB0eSBzdHJpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9ICcnO1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNFbXB0eShpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc0VtcHR5IHJldHVybnMgdHJ1ZSBmb3IgYW4gZW1wdHkgYXJyYXlcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gaW5wdXQgaXMgYW4gZW1wdHkgYXJyYXknLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IFtdO1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNFbXB0eShpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc0VtcHR5IHJldHVybnMgZmFsc2UgZm9yIGFuIGVtcHR5IG9iamVjdFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gaW5wdXQgaXMgYW4gZW1wdHkgb2JqZWN0JywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSB7fTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzRW1wdHkoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzRW1wdHkgcmV0dXJucyBmYWxzZSBmb3IgYSBub24tZW1wdHkgc3RyaW5nXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiBpbnB1dCBpcyBhIG5vbi1lbXB0eSBzdHJpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9ICdoZWxsbyc7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc0VtcHR5KGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc0VtcHR5IHJldHVybnMgZmFsc2UgZm9yIGEgbm9uLWVtcHR5IGFycmF5XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiBpbnB1dCBpcyBhIG5vbi1lbXB0eSBhcnJheScsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gWzEsIDIsIDNdO1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNFbXB0eShpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNFbXB0eSByZXR1cm5zIGZhbHNlIGZvciBhIG5vbi1lbXB0eSBvYmplY3RcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIGlucHV0IGlzIGEgbm9uLWVtcHR5IG9iamVjdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0geyBrZXk6ICd2YWx1ZScgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzRW1wdHkoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzRW1wdHkgcmV0dXJucyB0cnVlIGZvciBudWxsIGlucHV0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGlucHV0IGlzIG51bGwnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IG51bGw7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc0VtcHR5KGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUaGUgdGVzdCBvYmplY3RpdmUgaXMgdG8gdmVyaWZ5IHRoYXQgdGhlIGZ1bmN0aW9uICdpc0VtcHR5JyByZXR1cm5zIHRydWUgd2hlbiB0aGUgaW5wdXQgaXMgdW5kZWZpbmVkLlxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBpbnB1dCBpcyB1bmRlZmluZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzRW1wdHkoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNFbXB0eSByZXR1cm5zIGZhbHNlIGZvciBOYU4gaW5wdXRcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIGlucHV0IGlzIE5hTicsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gTmFOO1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNFbXB0eShpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3QgdGhhdCB0aGUgZnVuY3Rpb24gJ2lzRW1wdHknIHJldHVybnMgdHJ1ZSB3aGVuIHRoZSBpbnB1dCBpcyBhIHdoaXRlc3BhY2Ugc3RyaW5nXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGlucHV0IGlzIGEgd2hpdGVzcGFjZSBzdHJpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9ICcgICAnO1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNFbXB0eShpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnaXNFbXB0eU9iamVjdCcsICgpID0+IHtcbiAgICAvLyBUZXN0cyB0aGF0IGlzRW1wdHlPYmplY3QgcmV0dXJucyB0cnVlIGZvciBhbiBlbXB0eSBvYmplY3Qge31cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIGZvciBhbiBlbXB0eSBvYmplY3QnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvYmogPSB7fTtcbiAgICAgIGV4cGVjdChpc0VtcHR5T2JqZWN0KG9iaikpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzRW1wdHlPYmplY3QgcmV0dXJucyBmYWxzZSBmb3IgYSBub24tZW1wdHkgb2JqZWN0IHthOiAnMSd9XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2UgZm9yIGEgbm9uLWVtcHR5IG9iamVjdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG9iaiA9IHsgYTogJzEnIH07XG4gICAgICBleHBlY3QoaXNFbXB0eU9iamVjdChvYmopKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaXNFbXB0eU9iamVjdCByZXR1cm5zIHRydWUgZm9yIGFuIGVtcHR5IGFycmF5IFtdXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSBmb3IgYW4gZW1wdHkgYXJyYXknLCAoKSA9PiB7XG4gICAgICBjb25zdCBhcnIgPSBbXTtcbiAgICAgIGV4cGVjdChpc0VtcHR5T2JqZWN0KGFycikpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzRW1wdHlPYmplY3QgcmV0dXJucyBmYWxzZSBmb3IgYSBub24tZW1wdHkgYXJyYXkgWzEsIDIsIDNdXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2UgZm9yIGEgbm9uLWVtcHR5IGFycmF5JywgKCkgPT4ge1xuICAgICAgY29uc3QgYXJyID0gWzEsIDIsIDNdO1xuICAgICAgZXhwZWN0KGlzRW1wdHlPYmplY3QoYXJyKSkudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzRW1wdHlPYmplY3QgcmV0dXJucyB0cnVlIGZvciBhbiBlbXB0eSBzdHJpbmcgJydcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIGZvciBhbiBlbXB0eSBzdHJpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvYmogPSAnJztcbiAgICAgIGV4cGVjdChpc0VtcHR5T2JqZWN0KG9iaikpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGlzRW1wdHlPYmplY3QgcmV0dXJucyBmYWxzZSBmb3IgYSBub24tZW1wdHkgc3RyaW5nICdoZWxsbydcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSBmb3IgYSBub24tZW1wdHkgc3RyaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3Qgb2JqID0gJ2hlbGxvJztcbiAgICAgIGV4cGVjdChpc0VtcHR5T2JqZWN0KG9iaikpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBpc0VtcHR5T2JqZWN0IHJldHVybnMgdHJ1ZSBmb3IgbnVtYmVyXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSBmb3IgbnVtYmVyJywgKCkgPT4ge1xuICAgICAgY29uc3Qgb2JqID0gMjtcbiAgICAgIGV4cGVjdChpc0VtcHR5T2JqZWN0KG9iaikpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdpc0RlZmluZWROb3ROdWxsTm90RW1wdHknLCAoKSA9PiB7XG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gYSBub24tZW1wdHkgc3RyaW5nIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBhIG5vbi1lbXB0eSBzdHJpbmcgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNEZWZpbmVkTm90TnVsbE5vdEVtcHR5KCd0ZXN0Jyk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gYSBub24tZW1wdHkgb2JqZWN0IGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBhIG5vbi1lbXB0eSBvYmplY3QgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNEZWZpbmVkTm90TnVsbE5vdEVtcHR5KHsga2V5OiAndmFsdWUnIH0pO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSB3aGVuIGEgbm9uLWVtcHR5IGFycmF5IGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBhIG5vbi1lbXB0eSBhcnJheSBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc0RlZmluZWROb3ROdWxsTm90RW1wdHkoWzEsIDIsIDNdKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUgd2hlbiBhIG5vbi16ZXJvIG51bWJlciBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gYSBub24temVybyBudW1iZXIgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNEZWZpbmVkTm90TnVsbE5vdEVtcHR5KDEyMyk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gYSBib29sZWFuIHZhbHVlIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgd2hlbiBhIGJvb2xlYW4gdmFsdWUgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNEZWZpbmVkTm90TnVsbE5vdEVtcHR5KHRydWUpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgZmFsc2Ugd2hlbiBhbiBlbXB0eSBzdHJpbmcgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiBhbiBlbXB0eSBzdHJpbmcgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNEZWZpbmVkTm90TnVsbE5vdEVtcHR5KCcnKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gZmFsc2UgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdHJ1ZSB3aGVuIGZhbHNlIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzRGVmaW5lZE5vdE51bGxOb3RFbXB0eShmYWxzZSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlIHdoZW4gMCBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIHdoZW4gMCBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc0RlZmluZWROb3ROdWxsTm90RW1wdHkoMCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBmYWxzZSB3aGVuIE5hTiBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIE5hTiBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc0RlZmluZWROb3ROdWxsTm90RW1wdHkoTmFOKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBmYWxzZSB3aGVuIHVuZGVmaW5lZCBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIHVuZGVmaW5lZCBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc0RlZmluZWROb3ROdWxsTm90RW1wdHkodW5kZWZpbmVkKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBmYWxzZSB3aGVuIG51bGwgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiBudWxsIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGlzRGVmaW5lZE5vdE51bGxOb3RFbXB0eShudWxsKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBmYWxzZSB3aGVuIGFuIGVtcHR5IGFycmF5IGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gYW4gZW1wdHkgYXJyYXkgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaXNEZWZpbmVkTm90TnVsbE5vdEVtcHR5KFtdKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBmYWxzZSB3aGVuIGFuIGVtcHR5IG9iamVjdCBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnRcbiAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSB3aGVuIGFuIGVtcHR5IG9iamVjdCBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpc0RlZmluZWROb3ROdWxsTm90RW1wdHkoe30pO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZShmYWxzZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZW1vdmVVbmRlZmluZWROdWxsRW1wdHlFeGNsQm9vbEludCcsICgpID0+IHtcbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBzYW1lIG9iamVjdCBpZiBpdCBkb2VzIG5vdCBjb250YWluIHVuZGVmaW5lZCwgbnVsbCwgZW1wdHksIGJvb2xlYW4sIG9yIGludGVnZXIgdmFsdWVzXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIHNhbWUgb2JqZWN0IHdoZW4gaXQgZG9lcyBub3QgY29udGFpbiB1bmRlZmluZWQsIG51bGwsIGVtcHR5LCBib29sZWFuLCBvciBpbnRlZ2VyIHZhbHVlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IG9iaiA9IHsgYTogMSwgYjogJ3Rlc3QnLCBjOiB7IGQ6ICduZXN0ZWQnIH0gfTtcbiAgICAgIGV4cGVjdChyZW1vdmVVbmRlZmluZWROdWxsRW1wdHlFeGNsQm9vbEludChvYmopKS50b0VxdWFsKG9iaik7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZW1vdmVzIHVuZGVmaW5lZCwgbnVsbCwgZW1wdHksIGJvb2xlYW4sIG9yIGludGVnZXIgdmFsdWVzIGZyb20gdGhlIG9iamVjdCBhbmQgcmV0dXJucyB0aGUgY2xlYW5lZCBvYmplY3RcbiAgICBpdCgnc2hvdWxkIHJlbW92ZSB1bmRlZmluZWQsIG51bGwsIGVtcHR5LCBib29sZWFuLCBvciBpbnRlZ2VyIHZhbHVlcyBmcm9tIHRoZSBvYmplY3QgYW5kIHJldHVybiB0aGUgY2xlYW5lZCBvYmplY3QnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvYmogPSB7IGE6IDEsIGI6IHVuZGVmaW5lZCwgYzogbnVsbCwgZDogJycsIGU6IHt9LCBmOiB0cnVlLCBnOiAwIH07XG4gICAgICBjb25zdCBleHBlY3RlZCA9IHsgYTogMSwgZjogdHJ1ZSwgZzogMCB9O1xuICAgICAgZXhwZWN0KHJlbW92ZVVuZGVmaW5lZE51bGxFbXB0eUV4Y2xCb29sSW50KG9iaikpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB1bmRlZmluZWQgaWYgdGhlIGlucHV0IGlzIHVuZGVmaW5lZFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCB3aGVuIHRoZSBpbnB1dCBpcyB1bmRlZmluZWQnLCAoKSA9PiB7XG4gICAgICBleHBlY3QocmVtb3ZlVW5kZWZpbmVkTnVsbEVtcHR5RXhjbEJvb2xJbnQodW5kZWZpbmVkKSkudG9CZVVuZGVmaW5lZCgpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBudWxsIGlmIHRoZSBpbnB1dCBpcyBudWxsXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gbnVsbCB3aGVuIHRoZSBpbnB1dCBpcyBudWxsJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHJlbW92ZVVuZGVmaW5lZE51bGxFbXB0eUV4Y2xCb29sSW50KG51bGwpKS50b0JlTnVsbCgpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhbiBlbXB0eSBvYmplY3QgaWYgdGhlIGlucHV0IGlzIGFuIGVtcHR5IG9iamVjdFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIGVtcHR5IG9iamVjdCB3aGVuIHRoZSBpbnB1dCBpcyBhbiBlbXB0eSBvYmplY3QnLCAoKSA9PiB7XG4gICAgICBleHBlY3QocmVtb3ZlVW5kZWZpbmVkTnVsbEVtcHR5RXhjbEJvb2xJbnQoe30pKS50b0VxdWFsKHt9KTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYW4gZW1wdHkgb2JqZWN0IGlmIHRoZSBpbnB1dCBjb250YWlucyBvbmx5IHVuZGVmaW5lZCwgbnVsbCwgZW1wdHksIGJvb2xlYW4sIG9yIGludGVnZXIgdmFsdWVzXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYSB2YWxpZCBvYmplY3Qgd2hlbiB0aGUgaW5wdXQgY29udGFpbnMgb25seSB1bmRlZmluZWQsIG51bGwsIGVtcHR5LCBib29sZWFuIG9yIGludGVnZXIgdmFsdWVzJywgKCkgPT4ge1xuICAgICAgY29uc3Qgb2JqID0geyBhOiB1bmRlZmluZWQsIGI6IG51bGwsIGM6ICcnLCBkOiB7fSwgZTogdHJ1ZSwgZjogMCB9O1xuICAgICAgZXhwZWN0KHJlbW92ZVVuZGVmaW5lZE51bGxFbXB0eUV4Y2xCb29sSW50KG9iaikpLnRvRXF1YWwoeyBlOiB0cnVlLCBmOiAwIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZ2V0SGFzaEZyb21BcnJheScsICgpID0+IHtcbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGFuIGVtcHR5IG9iamVjdCB3aGVuIGdpdmVuIGFuIGVtcHR5IGFycmF5XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gZW1wdHkgb2JqZWN0IHdoZW4gZ2l2ZW4gYW4gZW1wdHkgYXJyYXknLCAoKSA9PiB7XG4gICAgICBjb25zdCBhcnJheXMgPSBbXTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEhhc2hGcm9tQXJyYXkoYXJyYXlzKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe30pO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhIGhhc2hNYXAgd2l0aCBjb3JyZWN0IGtleS12YWx1ZSBwYWlycyB3aGVuIGdpdmVuIGFuIGFycmF5IG9mIG9iamVjdHMgd2l0aCAnZnJvbScgYW5kICd0bycgcHJvcGVydGllc1xuICAgIGl0KFwic2hvdWxkIHJldHVybiBhIGhhc2hNYXAgd2l0aCBjb3JyZWN0IGtleS12YWx1ZSBwYWlycyB3aGVuIGdpdmVuIGFuIGFycmF5IG9mIG9iamVjdHMgd2l0aCAnZnJvbScgYW5kICd0bycgcHJvcGVydGllc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhcnJheXMgPSBbXG4gICAgICAgIHsgZnJvbTogJ0EnLCB0bzogJzEnIH0sXG4gICAgICAgIHsgZnJvbTogJ0InLCB0bzogJzInIH0sXG4gICAgICAgIHsgZnJvbTogJ0MnLCB0bzogJzMnIH0sXG4gICAgICBdO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0SGFzaEZyb21BcnJheShhcnJheXMpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7IGE6ICcxJywgYjogJzInLCBjOiAnMycgfSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGFuIGVtcHR5IG9iamVjdCB3aGVuIGdpdmVuIGFuIGFycmF5IG9mIG9iamVjdHMgd2l0aCBlbXB0eSAnZnJvbScgcHJvcGVydHlcbiAgICBpdChcInNob3VsZCByZXR1cm4gYW4gZW1wdHkgb2JqZWN0IHdoZW4gZ2l2ZW4gYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIGVtcHR5ICdmcm9tJyBwcm9wZXJ0eVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhcnJheXMgPSBbXG4gICAgICAgIHsgZnJvbTogJycsIHRvOiAnMScgfSxcbiAgICAgICAgeyBmcm9tOiAnJywgdG86ICcyJyB9LFxuICAgICAgICB7IGZyb206ICcnLCB0bzogJzMnIH0sXG4gICAgICBdO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0SGFzaEZyb21BcnJheShhcnJheXMpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7fSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgaGFzaE1hcCB3aXRoIG9ubHkgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYSAnZnJvbScgcHJvcGVydHkgd2hlbiBnaXZlbiBhbiBhcnJheSB3aXRoIGR1cGxpY2F0ZSAnZnJvbScgcHJvcGVydGllc1xuICAgIGl0KFwic2hvdWxkIHJldHVybiBhIGhhc2hNYXAgd2l0aCBvbmx5IHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGEgJ2Zyb20nIHByb3BlcnR5IHdoZW4gZ2l2ZW4gYW4gYXJyYXkgd2l0aCBkdXBsaWNhdGUgJ2Zyb20nIHByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXJyYXlzID0gW1xuICAgICAgICB7IGZyb206ICdBJywgdG86ICcxJyB9LFxuICAgICAgICB7IGZyb206ICdCJywgdG86ICcyJyB9LFxuICAgICAgICB7IGZyb206ICdBJywgdG86ICczJyB9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEhhc2hGcm9tQXJyYXkoYXJyYXlzKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoeyBhOiAnMycsIGI6ICcyJyB9KTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgYSBoYXNoTWFwIHdpdGggb25seSB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIGEgJ2Zyb20nIHByb3BlcnR5IHdoZW4gZ2l2ZW4gYW4gYXJyYXkgd2l0aCBkdXBsaWNhdGUgJ2Zyb20nIHByb3BlcnRpZXMgYW5kIGRpZmZlcmVudCAndG8nIHZhbHVlc1xuICAgIGl0KFwic2hvdWxkIHJldHVybiBhIGhhc2hNYXAgd2l0aCBvbmx5IHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgYSAnZnJvbScgcHJvcGVydHkgd2hlbiBnaXZlbiBhbiBhcnJheSB3aXRoIGR1cGxpY2F0ZSAnZnJvbScgcHJvcGVydGllcyBhbmQgZGlmZmVyZW50ICd0bycgdmFsdWVzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFycmF5cyA9IFtcbiAgICAgICAgeyBmcm9tOiAnQScsIHRvOiAnMScgfSxcbiAgICAgICAgeyBmcm9tOiAnQicsIHRvOiAnMicgfSxcbiAgICAgICAgeyBmcm9tOiAnQScsIHRvOiAnMycgfSxcbiAgICAgIF07XG4gICAgICBjb25zdCByZXN1bHQgPSBnZXRIYXNoRnJvbUFycmF5KGFycmF5cyk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHsgYTogJzMnLCBiOiAnMicgfSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgaGFzaE1hcCB3aXRoIGNvcnJlY3Qga2V5LXZhbHVlIHBhaXJzIHdoZW4gZ2l2ZW4gYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIG5vbi1zdHJpbmcgJ2Zyb20nIGFuZCAndG8nIHByb3BlcnRpZXNcbiAgICBpdChcInNob3VsZCByZXR1cm4gYSBoYXNoTWFwIHdpdGggY29ycmVjdCBrZXktdmFsdWUgcGFpcnMgd2hlbiBnaXZlbiBhbiBhcnJheSBvZiBvYmplY3RzIHdpdGggbm9uLXN0cmluZyAnZnJvbScgYW5kICd0bycgcHJvcGVydGllc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBhcnJheXMgPSBbXG4gICAgICAgIHsgZnJvbTogMSwgdG86IHRydWUgfSxcbiAgICAgICAgeyBmcm9tOiBudWxsLCB0bzogdW5kZWZpbmVkIH0sXG4gICAgICAgIHsgZnJvbTogWzEsIDIsIDNdLCB0bzogeyBhOiAnQScsIGI6ICdCJyB9IH0sXG4gICAgICBdO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0SGFzaEZyb21BcnJheShhcnJheXMpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7ICcxJzogdHJ1ZSwgbnVsbDogdW5kZWZpbmVkLCAnMSwyLDMnOiB7IGE6ICdBJywgYjogJ0InIH0gfSk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiBjb252ZXJ0cyB0aGUgJ2Zyb20nIHByb3BlcnR5IHRvIGxvd2VyY2FzZSBpbiB0aGUgaGFzaE1hcCB3aGVuIHRoZSBpc0xvd2VyQ2FzZSBwYXJhbWV0ZXIgaXMgdHJ1ZVxuICAgIGl0KCdzaG91bGQgY29udmVydCBcImZyb21cIiBwcm9wZXJ0eSB0byBsb3dlcmNhc2UgaW4gaGFzaE1hcCB3aGVuIGlzTG93ZXJDYXNlIGlzIHRydWUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBhcnJheXMgPSBbXG4gICAgICAgIHsgZnJvbTogJ1ZBTFVFMScsIHRvOiAnVmFsdWUxJyB9LFxuICAgICAgICB7IGZyb206ICdWQUxVRTInLCB0bzogJ1ZhbHVlMicgfSxcbiAgICAgICAgeyBmcm9tOiAnVkFMVUUzJywgdG86ICdWYWx1ZTMnIH0sXG4gICAgICBdO1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSB7XG4gICAgICAgIHZhbHVlMTogJ1ZhbHVlMScsXG4gICAgICAgIHZhbHVlMjogJ1ZhbHVlMicsXG4gICAgICAgIHZhbHVlMzogJ1ZhbHVlMycsXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0SGFzaEZyb21BcnJheShhcnJheXMsICdmcm9tJywgJ3RvJywgdHJ1ZSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldEhhc2hGcm9tQXJyYXlXaXRoRHVwbGljYXRlJywgKCkgPT4ge1xuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseSBnZW5lcmF0ZXMgYSBoYXNoTWFwIGZyb20gYSB2YWxpZCBhcnJheSBvZiBvYmplY3RzIHdpdGggJ2Zyb20nIGFuZCAndG8nIGtleXNcbiAgICBpdChcInNob3VsZCBjb3JyZWN0bHkgZ2VuZXJhdGUgYSBoYXNoTWFwIGZyb20gYSB2YWxpZCBhcnJheSBvZiBvYmplY3RzIHdpdGggJ2Zyb20nIGFuZCAndG8nIGtleXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXJyYXlzID0gW1xuICAgICAgICB7IGZyb206ICdwcm9wMScsIHRvOiAndmFsMScgfSxcbiAgICAgICAgeyBmcm9tOiAncHJvcDEnLCB0bzogJ3ZhbDInIH0sXG4gICAgICAgIHsgZnJvbTogJ3Byb3AyJywgdG86ICd2YWwyJyB9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkSGFzaE1hcCA9IHtcbiAgICAgICAgcHJvcDE6IG5ldyBTZXQoWyd2YWwxJywgJ3ZhbDInXSksXG4gICAgICAgIHByb3AyOiBuZXcgU2V0KFsndmFsMiddKSxcbiAgICAgIH07XG4gICAgICBjb25zdCByZXN1bHQgPSBnZXRIYXNoRnJvbUFycmF5V2l0aER1cGxpY2F0ZShhcnJheXMpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZEhhc2hNYXApO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gY29ycmVjdGx5IGdlbmVyYXRlcyBhIGhhc2hNYXAgZnJvbSBhbiBhcnJheSBvZiBvYmplY3RzIHdpdGggb25seSBvbmUgb2JqZWN0XG4gICAgaXQoJ3Nob3VsZCBjb3JyZWN0bHkgZ2VuZXJhdGUgYSBoYXNoTWFwIGZyb20gYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIG9ubHkgb25lIG9iamVjdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGFycmF5cyA9IFt7IGZyb206ICdwcm9wMScsIHRvOiAndmFsMScgfV07XG4gICAgICBjb25zdCBleHBlY3RlZEhhc2hNYXAgPSB7IHByb3AxOiBuZXcgU2V0KFsndmFsMSddKSB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0SGFzaEZyb21BcnJheVdpdGhEdXBsaWNhdGUoYXJyYXlzKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRIYXNoTWFwKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseSBnZW5lcmF0ZXMgYSBoYXNoTWFwIGZyb20gYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIHVuaXF1ZSAnZnJvbScga2V5c1xuICAgIGl0KFwic2hvdWxkIGNvcnJlY3RseSBnZW5lcmF0ZSBhIGhhc2hNYXAgZnJvbSBhbiBhcnJheSBvZiBvYmplY3RzIHdpdGggdW5pcXVlICdmcm9tJyBrZXlzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFycmF5cyA9IFtcbiAgICAgICAgeyBmcm9tOiAncHJvcDEnLCB0bzogJ3ZhbDEnIH0sXG4gICAgICAgIHsgZnJvbTogJ3Byb3AyJywgdG86ICd2YWwyJyB9LFxuICAgICAgICB7IGZyb206ICdwcm9wMycsIHRvOiAndmFsMycgfSxcbiAgICAgIF07XG4gICAgICBjb25zdCBleHBlY3RlZEhhc2hNYXAgPSB7XG4gICAgICAgIHByb3AxOiBuZXcgU2V0KFsndmFsMSddKSxcbiAgICAgICAgcHJvcDI6IG5ldyBTZXQoWyd2YWwyJ10pLFxuICAgICAgICBwcm9wMzogbmV3IFNldChbJ3ZhbDMnXSksXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0SGFzaEZyb21BcnJheVdpdGhEdXBsaWNhdGUoYXJyYXlzKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRIYXNoTWFwKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseSBnZW5lcmF0ZXMgYSBoYXNoTWFwIGZyb20gYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIHVuaXF1ZSAndG8nIGtleXNcbiAgICBpdChcInNob3VsZCBjb3JyZWN0bHkgZ2VuZXJhdGUgYSBoYXNoTWFwIGZyb20gYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIHVuaXF1ZSAndG8nIGtleXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXJyYXlzID0gW1xuICAgICAgICB7IGZyb206ICdwcm9wMScsIHRvOiAndmFsMScgfSxcbiAgICAgICAgeyBmcm9tOiAncHJvcDInLCB0bzogJ3ZhbDInIH0sXG4gICAgICAgIHsgZnJvbTogJ3Byb3AzJywgdG86ICd2YWwzJyB9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkSGFzaE1hcCA9IHtcbiAgICAgICAgcHJvcDE6IG5ldyBTZXQoWyd2YWwxJ10pLFxuICAgICAgICBwcm9wMjogbmV3IFNldChbJ3ZhbDInXSksXG4gICAgICAgIHByb3AzOiBuZXcgU2V0KFsndmFsMyddKSxcbiAgICAgIH07XG4gICAgICBjb25zdCByZXN1bHQgPSBnZXRIYXNoRnJvbUFycmF5V2l0aER1cGxpY2F0ZShhcnJheXMpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZEhhc2hNYXApO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBhbiBlbXB0eSBoYXNoTWFwIHdoZW4gZ2l2ZW4gYW4gZW1wdHkgYXJyYXlcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhbiBlbXB0eSBoYXNoTWFwIHdoZW4gZ2l2ZW4gYW4gZW1wdHkgYXJyYXknLCAoKSA9PiB7XG4gICAgICBjb25zdCBhcnJheXMgPSBbXTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkSGFzaE1hcCA9IHt9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0SGFzaEZyb21BcnJheVdpdGhEdXBsaWNhdGUoYXJyYXlzKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRIYXNoTWFwKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseSBoYW5kbGVzIGFuIGFycmF5IG9mIG9iamVjdHMgd2l0aCBlbXB0eSAnZnJvbScga2V5c1xuICAgIGl0KFwic2hvdWxkIGNvcnJlY3RseSBoYW5kbGUgYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIGVtcHR5ICdmcm9tJyBrZXlzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFycmF5cyA9IFtcbiAgICAgICAgeyBmcm9tOiAnJywgdG86ICd2YWwxJyB9LFxuICAgICAgICB7IGZyb206ICcnLCB0bzogJ3ZhbDInIH0sXG4gICAgICAgIHsgZnJvbTogJycsIHRvOiAndmFsMycgfSxcbiAgICAgIF07XG4gICAgICBjb25zdCBleHBlY3RlZEhhc2hNYXAgPSB7fTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEhhc2hGcm9tQXJyYXlXaXRoRHVwbGljYXRlKGFycmF5cyk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkSGFzaE1hcCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiBjb3JyZWN0bHkgaGFuZGxlcyBhbiBhcnJheSBvZiBvYmplY3RzIHdpdGggZW1wdHkgJ3RvJyBrZXlzXG4gICAgaXQoXCJzaG91bGQgcmV0dXJuIGFuIGVtcHR5IGhhc2hNYXAgd2hlbiB0aGUgJ3RvJyBrZXkgaXMgZW1wdHkgaW4gYWxsIG9iamVjdHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXJyYXlzID0gW1xuICAgICAgICB7IGZyb206ICdwcm9wMScsIHRvOiAnJyB9LFxuICAgICAgICB7IGZyb206ICdwcm9wMicsIHRvOiAnJyB9LFxuICAgICAgICB7IGZyb206ICdwcm9wMycsIHRvOiAnJyB9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkSGFzaE1hcCA9IHsgcHJvcDE6IG5ldyBTZXQoWycnXSksIHByb3AyOiBuZXcgU2V0KFsnJ10pLCBwcm9wMzogbmV3IFNldChbJyddKSB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0SGFzaEZyb21BcnJheVdpdGhEdXBsaWNhdGUoYXJyYXlzKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRIYXNoTWFwKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseSBnZW5lcmF0ZXMgYSBoYXNoTWFwIGZyb20gYSB2YWxpZCBhcnJheSBvZiBvYmplY3RzIHdpdGggJ2Zyb20nIGFuZCAndG8nIGtleXMgd2hlbiBpc0xvd2VyQ2FzZSBpcyBzZXQgdG8gZmFsc2VcbiAgICBpdChcInNob3VsZCBjb3JyZWN0bHkgZ2VuZXJhdGUgYSBoYXNoTWFwIGZyb20gYSB2YWxpZCBhcnJheSBvZiBvYmplY3RzIHdpdGggJ2Zyb20nIGFuZCAndG8nIGtleXMgd2hlbiBpc0xvd2VyQ2FzZSBpcyBzZXQgdG8gZmFsc2VcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXJyYXlzID0gW1xuICAgICAgICB7IGZyb206ICdwcm9wMScsIHRvOiAndmFsMScgfSxcbiAgICAgICAgeyBmcm9tOiAncHJvcDEnLCB0bzogJ3ZhbDInIH0sXG4gICAgICAgIHsgZnJvbTogJ3Byb3AyJywgdG86ICd2YWwyJyB9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkSGFzaE1hcCA9IHtcbiAgICAgICAgcHJvcDE6IG5ldyBTZXQoWyd2YWwxJywgJ3ZhbDInXSksXG4gICAgICAgIHByb3AyOiBuZXcgU2V0KFsndmFsMiddKSxcbiAgICAgIH07XG4gICAgICBjb25zdCByZXN1bHQgPSBnZXRIYXNoRnJvbUFycmF5V2l0aER1cGxpY2F0ZShhcnJheXMsICdmcm9tJywgJ3RvJywgZmFsc2UpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZEhhc2hNYXApO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gY29ycmVjdGx5IGdlbmVyYXRlcyBhIGhhc2hNYXAgZnJvbSBhIHZhbGlkIGFycmF5IG9mIG9iamVjdHMgd2l0aCBjdXN0b20gZnJvbUtleSBhbmQgdG9LZXkgdmFsdWVzXG4gICAgaXQoJ3Nob3VsZCBjb3JyZWN0bHkgZ2VuZXJhdGUgYSBoYXNoTWFwIGZyb20gYSB2YWxpZCBhcnJheSBvZiBvYmplY3RzIHdpdGggY3VzdG9tIGZyb21LZXkgYW5kIHRvS2V5IHZhbHVlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IGFycmF5cyA9IFtcbiAgICAgICAgeyBmcm9tOiAncHJvcDEnLCB0bzogJ3ZhbDEnIH0sXG4gICAgICAgIHsgZnJvbTogJ3Byb3AxJywgdG86ICd2YWwyJyB9LFxuICAgICAgICB7IGZyb206ICdwcm9wMicsIHRvOiAndmFsMicgfSxcbiAgICAgIF07XG4gICAgICBjb25zdCBleHBlY3RlZEhhc2hNYXAgPSB7XG4gICAgICAgIHByb3AxOiBuZXcgU2V0KFsndmFsMScsICd2YWwyJ10pLFxuICAgICAgICBwcm9wMjogbmV3IFNldChbJ3ZhbDInXSksXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0SGFzaEZyb21BcnJheVdpdGhEdXBsaWNhdGUoYXJyYXlzLCAnZnJvbScsICd0bycpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZEhhc2hNYXApO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gY29ycmVjdGx5IGdlbmVyYXRlcyBhIGhhc2hNYXAgZnJvbSBhIHZhbGlkIGFycmF5IG9mIG9iamVjdHMgd2l0aCAnZnJvbScgYW5kICd0bycga2V5cyB3aGVuIGlzTG93ZXJDYXNlIGlzIHNldCB0byB0cnVlXG4gICAgaXQoXCJzaG91bGQgY29ycmVjdGx5IGdlbmVyYXRlIGEgaGFzaE1hcCBmcm9tIGEgdmFsaWQgYXJyYXkgb2Ygb2JqZWN0cyB3aXRoICdmcm9tJyBhbmQgJ3RvJyBrZXlzIHdoZW4gaXNMb3dlckNhc2UgaXMgc2V0IHRvIHRydWVcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgYXJyYXlzID0gW1xuICAgICAgICB7IGZyb206ICdwcm9wMScsIHRvOiAndmFsMScgfSxcbiAgICAgICAgeyBmcm9tOiAncHJvcDEnLCB0bzogJ3ZhbDInIH0sXG4gICAgICAgIHsgZnJvbTogJ3Byb3AyJywgdG86ICd2YWwyJyB9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkSGFzaE1hcCA9IHtcbiAgICAgICAgcHJvcDE6IG5ldyBTZXQoWyd2YWwxJywgJ3ZhbDInXSksXG4gICAgICAgIHByb3AyOiBuZXcgU2V0KFsndmFsMiddKSxcbiAgICAgIH07XG4gICAgICBjb25zdCByZXN1bHQgPSBnZXRIYXNoRnJvbUFycmF5V2l0aER1cGxpY2F0ZShhcnJheXMsICdmcm9tJywgJ3RvJywgdHJ1ZSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkSGFzaE1hcCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiBjb3JyZWN0bHkgZ2VuZXJhdGVzIGEgaGFzaE1hcCBmcm9tIGEgdmFsaWQgYXJyYXkgb2Ygb2JqZWN0cyB3aXRoICdmcm9tJyBhbmQgJ3RvJyBrZXlzXG4gICAgaXQoXCJzaG91bGQgY29ycmVjdGx5IGdlbmVyYXRlIGEgaGFzaE1hcCBmcm9tIGEgdmFsaWQgYXJyYXkgb2Ygb2JqZWN0cyB3aXRoICdmcm9tJyBhbmQgJ3RvJyBrZXlzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGFycmF5cyA9IFtcbiAgICAgICAgeyBmcm9tOiAncHJvcDEnLCB0bzogJ3ZhbDEnIH0sXG4gICAgICAgIHsgZnJvbTogJ3Byb3AxJywgdG86ICd2YWwyJyB9LFxuICAgICAgICB7IGZyb206ICdwcm9wMicsIHRvOiAndmFsMicgfSxcbiAgICAgIF07XG4gICAgICBjb25zdCBleHBlY3RlZEhhc2hNYXAgPSB7XG4gICAgICAgIHByb3AxOiBuZXcgU2V0KFsndmFsMScsICd2YWwyJ10pLFxuICAgICAgICBwcm9wMjogbmV3IFNldChbJ3ZhbDInXSksXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0SGFzaEZyb21BcnJheVdpdGhEdXBsaWNhdGUoYXJyYXlzKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRIYXNoTWFwKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldFZhbHVlRnJvbVByb3BlcnRpZXNPclRyYWl0cycsICgpID0+IHtcbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUga2V5IGZyb20gcHJvcGVydGllcyBpZiBpdCBleGlzdHMuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBrZXkgZnJvbSBwcm9wZXJ0aWVzIHdoZW4gaXQgZXhpc3RzJywgKCkgPT4ge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IHtcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGtleTogJ3ZhbHVlJyxcbiAgICAgICAgfSxcbiAgICAgICAgdHJhaXRzOiB7fSxcbiAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgIHRyYWl0czoge30sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgY29uc3Qga2V5ID0gJ2tleSc7XG4gICAgICBjb25zdCByZXN1bHQgPSBnZXRWYWx1ZUZyb21Qcm9wZXJ0aWVzT3JUcmFpdHMoeyBtZXNzYWdlLCBrZXkgfSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCd2YWx1ZScpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGtleSBmcm9tIHRyYWl0cyBpZiBpdCBleGlzdHMuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBrZXkgZnJvbSB0cmFpdHMgd2hlbiBpdCBleGlzdHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtZXNzYWdlID0ge1xuICAgICAgICBwcm9wZXJ0aWVzOiB7fSxcbiAgICAgICAgdHJhaXRzOiB7XG4gICAgICAgICAga2V5OiAndmFsdWUnLFxuICAgICAgICB9LFxuICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgdHJhaXRzOiB7fSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBjb25zdCBrZXkgPSAna2V5JztcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldFZhbHVlRnJvbVByb3BlcnRpZXNPclRyYWl0cyh7IG1lc3NhZ2UsIGtleSB9KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ3ZhbHVlJyk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUga2V5IGZyb20gY29udGV4dC50cmFpdHMgaWYgaXQgZXhpc3RzLlxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUga2V5IGZyb20gY29udGV4dC50cmFpdHMgd2hlbiBpdCBleGlzdHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtZXNzYWdlID0ge1xuICAgICAgICBwcm9wZXJ0aWVzOiB7fSxcbiAgICAgICAgdHJhaXRzOiB7fSxcbiAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgIHRyYWl0czoge1xuICAgICAgICAgICAga2V5OiAndmFsdWUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgY29uc3Qga2V5ID0gJ2tleSc7XG4gICAgICBjb25zdCByZXN1bHQgPSBnZXRWYWx1ZUZyb21Qcm9wZXJ0aWVzT3JUcmFpdHMoeyBtZXNzYWdlLCBrZXkgfSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKCd2YWx1ZScpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyBudWxsIGlmIHRoZSBtZXNzYWdlIGlzIG51bGwuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gbnVsbCB3aGVuIHRoZSBtZXNzYWdlIGlzIG51bGwnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gbnVsbDtcbiAgICAgIGNvbnN0IGtleSA9ICdrZXknO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0VmFsdWVGcm9tUHJvcGVydGllc09yVHJhaXRzKHsgbWVzc2FnZSwga2V5IH0pO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZU51bGwoKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgbnVsbCBpZiB0aGUga2V5IGlzIG51bGwuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gbnVsbCB3aGVuIHRoZSBrZXkgaXMgbnVsbCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSB7XG4gICAgICAgIHByb3BlcnRpZXM6IHt9LFxuICAgICAgICB0cmFpdHM6IHt9LFxuICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgdHJhaXRzOiB7fSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBjb25zdCBrZXkgPSBudWxsO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0VmFsdWVGcm9tUHJvcGVydGllc09yVHJhaXRzKHsgbWVzc2FnZSwga2V5IH0pO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZU51bGwoKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgbnVsbCBpZiB0aGUga2V5IGRvZXMgbm90IGV4aXN0IGluIGFueSBvZiB0aGUga2V5U2V0cy5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBudWxsIHdoZW4gdGhlIGtleSBkb2VzIG5vdCBleGlzdCBpbiBhbnkgb2YgdGhlIGtleVNldHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtZXNzYWdlID0ge1xuICAgICAgICBwcm9wZXJ0aWVzOiB7fSxcbiAgICAgICAgdHJhaXRzOiB7fSxcbiAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgIHRyYWl0czoge30sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgY29uc3Qga2V5ID0gJ25vbmV4aXN0ZW50S2V5JztcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldFZhbHVlRnJvbVByb3BlcnRpZXNPclRyYWl0cyh7IG1lc3NhZ2UsIGtleSB9KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmVOdWxsKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdmbGF0dGVuSnNvbicsICgpID0+IHtcbiAgICAvLyBUZXN0cyB0aGF0IGZsYXR0ZW5Kc29uIGZ1bmN0aW9uIGNvcnJlY3RseSBmbGF0dGVucyBhIHNpbXBsZSBKU09OIG9iamVjdCB3aXRoIG5vIG5lc3RlZCBvYmplY3RzIG9yIGFycmF5cy5cbiAgICBpdCgnc2hvdWxkIGNvcnJlY3RseSBmbGF0dGVuIGEgc2ltcGxlIEpTT04gb2JqZWN0JywgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHsgbmFtZTogJ0pvaG4nLCBhZ2U6IDMwLCBjaXR5OiAnTmV3IFlvcmsnIH07XG4gICAgICBjb25zdCBleHBlY3RlZFJlc3VsdCA9IHsgbmFtZTogJ0pvaG4nLCBhZ2U6IDMwLCBjaXR5OiAnTmV3IFlvcmsnIH07XG4gICAgICBjb25zdCByZXN1bHQgPSBmbGF0dGVuSnNvbihkYXRhKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRSZXN1bHQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBmbGF0dGVuSnNvbiBmdW5jdGlvbiBjb3JyZWN0bHkgZmxhdHRlbnMgYSBKU09OIG9iamVjdCB3aXRoIG5lc3RlZCBvYmplY3RzIGFuZCBhcnJheXMuXG4gICAgaXQoJ3Nob3VsZCBjb3JyZWN0bHkgZmxhdHRlbiBhIEpTT04gb2JqZWN0IHdpdGggbmVzdGVkIG9iamVjdHMgYW5kIGFycmF5cycsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgIG5hbWU6ICdKb2huJyxcbiAgICAgICAgYWdlOiAzMCxcbiAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgIHN0cmVldDogJzEyMyBNYWluIFN0JyxcbiAgICAgICAgICBjaXR5OiAnTmV3IFlvcmsnLFxuICAgICAgICAgIGNvdW50cnk6ICdVU0EnLFxuICAgICAgICB9LFxuICAgICAgICBob2JiaWVzOiBbJ3JlYWRpbmcnLCAncGFpbnRpbmcnXSxcbiAgICAgIH07XG4gICAgICBjb25zdCBleHBlY3RlZFJlc3VsdCA9IHtcbiAgICAgICAgbmFtZTogJ0pvaG4nLFxuICAgICAgICBhZ2U6IDMwLFxuICAgICAgICAnYWRkcmVzcy5zdHJlZXQnOiAnMTIzIE1haW4gU3QnLFxuICAgICAgICAnYWRkcmVzcy5jaXR5JzogJ05ldyBZb3JrJyxcbiAgICAgICAgJ2FkZHJlc3MuY291bnRyeSc6ICdVU0EnLFxuICAgICAgICAnaG9iYmllc1swXSc6ICdyZWFkaW5nJyxcbiAgICAgICAgJ2hvYmJpZXNbMV0nOiAncGFpbnRpbmcnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZsYXR0ZW5Kc29uKGRhdGEpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZFJlc3VsdCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGZsYXR0ZW5Kc29uIGZ1bmN0aW9uIGNvcnJlY3RseSBmbGF0dGVucyBhIEpTT04gb2JqZWN0IHdpdGggbnVsbCBhbmQgdW5kZWZpbmVkIHZhbHVlcy5cbiAgICBpdCgnc2hvdWxkIGNvcnJlY3RseSBmbGF0dGVuIGEgSlNPTiBvYmplY3Qgd2l0aCBudWxsIGFuZCB1bmRlZmluZWQgdmFsdWVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHsgbmFtZTogbnVsbCwgYWdlOiB1bmRlZmluZWQsIGNpdHk6ICdOZXcgWW9yaycgfTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkUmVzdWx0ID0geyBuYW1lOiBudWxsLCBhZ2U6IHVuZGVmaW5lZCwgY2l0eTogJ05ldyBZb3JrJyB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZmxhdHRlbkpzb24oZGF0YSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkUmVzdWx0KTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgZmxhdHRlbkpzb24gZnVuY3Rpb24gY29ycmVjdGx5IGZsYXR0ZW5zIGEgSlNPTiBvYmplY3Qgd2l0aCBlbXB0eSBhcnJheXMgYW5kIG9iamVjdHMuXG4gICAgaXQoJ3Nob3VsZCBjb3JyZWN0bHkgZmxhdHRlbiBhIEpTT04gb2JqZWN0IHdpdGggZW1wdHkgYXJyYXlzIGFuZCBvYmplY3RzJywgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHsgbmFtZTogW10sIGFnZToge30sIGNpdHk6ICdOZXcgWW9yaycgfTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkUmVzdWx0ID0geyBuYW1lOiBbXSwgYWdlOiB7fSwgY2l0eTogJ05ldyBZb3JrJyB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZmxhdHRlbkpzb24oZGF0YSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkUmVzdWx0KTtcbiAgICB9KTtcblxuICAgIC8vIC8vIE5lZWQgdG8gZml4IHRoaXMgdGVzdFxuICAgIC8vIC8vIFRlc3RzIHRoYXQgZmxhdHRlbkpzb24gZnVuY3Rpb24gaGFuZGxlcyBjaXJjdWxhciByZWZlcmVuY2VzIGluIGEgSlNPTiBvYmplY3QgY29ycmVjdGx5LlxuICAgIC8vIGl0KCdzaG91bGQgaGFuZGxlIGNpcmN1bGFyIHJlZmVyZW5jZXMgaW4gYSBKU09OIG9iamVjdCBjb3JyZWN0bHknLCAoKSA9PiB7XG4gICAgLy8gICBjb25zdCBkYXRhID0geyBuYW1lOiAnSm9obicsIGFnZTogMzAgfTtcbiAgICAvLyAgIGRhdGFbJ3NlbGYnXSA9IGRhdGE7XG4gICAgLy8gICBjb25zdCBleHBlY3RlZFJlc3VsdCA9IHsgbmFtZTogJ0pvaG4nLCBhZ2U6IDMwLCBzZWxmOiAnW0NpcmN1bGFyXScgfTtcbiAgICAvLyAgIGNvbnN0IHJlc3VsdCA9IGZsYXR0ZW5Kc29uKGRhdGEpO1xuICAgIC8vICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZFJlc3VsdCk7XG4gICAgLy8gfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGZsYXR0ZW5Kc29uIGZ1bmN0aW9uIGNvcnJlY3RseSBmbGF0dGVucyBhIEpTT04gb2JqZWN0IHdpdGgga2V5cyBjb250YWluaW5nIHNwZWNpYWwgY2hhcmFjdGVycy5cbiAgICBpdCgnc2hvdWxkIGNvcnJlY3RseSBmbGF0dGVuIGEgSlNPTiBvYmplY3Qgd2l0aCBrZXlzIGNvbnRhaW5pbmcgc3BlY2lhbCBjaGFyYWN0ZXJzJywgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHsgJ25hbWUuZmlyc3QnOiAnSm9obicsICduYW1lLmxhc3QnOiAnRG9lJywgJ2FnZUAnOiAzMCB9O1xuICAgICAgY29uc3QgZXhwZWN0ZWRSZXN1bHQgPSB7ICduYW1lLmZpcnN0JzogJ0pvaG4nLCAnbmFtZS5sYXN0JzogJ0RvZScsICdhZ2VAJzogMzAgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZsYXR0ZW5Kc29uKGRhdGEpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZFJlc3VsdCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0IHRoYXQgdGhlIGZsYXR0ZW5Kc29uIGZ1bmN0aW9uIGNvcnJlY3RseSBmbGF0dGVucyBhIEpTT04gb2JqZWN0IHdpdGggbm9uLXN0cmluZyBrZXlzLlxuICAgIGl0KCdzaG91bGQgY29ycmVjdGx5IGZsYXR0ZW4gYSBKU09OIG9iamVjdCB3aXRoIG5vbi1zdHJpbmcga2V5cycsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB7IDE6ICdvbmUnLCAyOiAndHdvJywgMzogJ3RocmVlJyB9O1xuICAgICAgY29uc3QgZXhwZWN0ZWRSZXN1bHQgPSB7ICcxJzogJ29uZScsICcyJzogJ3R3bycsICczJzogJ3RocmVlJyB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZmxhdHRlbkpzb24oZGF0YSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkUmVzdWx0KTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgZmxhdHRlbkpzb24gZnVuY3Rpb24gY29ycmVjdGx5IGZsYXR0ZW5zIGEgSlNPTiBvYmplY3Qgd2l0aCBrZXlzIGNvbnRhaW5pbmcgdGhlIHNlcGFyYXRvciBjaGFyYWN0ZXIuXG4gICAgaXQoJ3Nob3VsZCBjb3JyZWN0bHkgZmxhdHRlbiBhIEpTT04gb2JqZWN0IHdpdGgga2V5cyBjb250YWluaW5nIHRoZSBzZXBhcmF0b3IgY2hhcmFjdGVyJywgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHsgJ25hbWUuZmlyc3QnOiAnSm9obicsICduYW1lLmxhc3QnOiAnRG9lJywgYWdlOiAzMCwgY2l0eTogJ05ldyBZb3JrJyB9O1xuICAgICAgY29uc3QgZXhwZWN0ZWRSZXN1bHQgPSB7XG4gICAgICAgICduYW1lLmZpcnN0JzogJ0pvaG4nLFxuICAgICAgICAnbmFtZS5sYXN0JzogJ0RvZScsXG4gICAgICAgIGFnZTogMzAsXG4gICAgICAgIGNpdHk6ICdOZXcgWW9yaycsXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZmxhdHRlbkpzb24oZGF0YSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkUmVzdWx0KTtcbiAgICB9KTtcblxuICAgIC8vIFRoZSB0ZXN0IG9iamVjdGl2ZSBpcyB0byB2ZXJpZnkgdGhhdCB0aGUgZmxhdHRlbkpzb24gZnVuY3Rpb24gY29ycmVjdGx5IGZsYXR0ZW5zIGEgSlNPTiBvYmplY3Qgd2l0aCBrZXlzIHRoYXQgYXJlIHJlc2VydmVkIHdvcmRzLlxuICAgIGl0KCdzaG91bGQgY29ycmVjdGx5IGZsYXR0ZW4gYSBKU09OIG9iamVjdCB3aXRoIHJlc2VydmVkIHdvcmQga2V5cycsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB7IGNsYXNzOiAnTWF0aCcsIGZ1bmN0aW9uOiAnYWRkJywgcmV0dXJuOiAncmVzdWx0JyB9O1xuICAgICAgY29uc3QgZXhwZWN0ZWRSZXN1bHQgPSB7IGNsYXNzOiAnTWF0aCcsIGZ1bmN0aW9uOiAnYWRkJywgcmV0dXJuOiAncmVzdWx0JyB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZmxhdHRlbkpzb24oZGF0YSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkUmVzdWx0KTtcbiAgICB9KTtcblxuICAgIC8vIFRoZSB0ZXN0IG9iamVjdGl2ZSBpcyB0byB2ZXJpZnkgdGhhdCB0aGUgJ2ZsYXR0ZW5Kc29uJyBmdW5jdGlvbiBjb3JyZWN0bHkgZmxhdHRlbnMgYSBKU09OIG9iamVjdCB3aXRoIGRlZXBseSBuZXN0ZWQgb2JqZWN0cyBhbmQgYXJyYXlzLlxuICAgIGl0KCdzaG91bGQgY29ycmVjdGx5IGZsYXR0ZW4gYSBKU09OIG9iamVjdCB3aXRoIGRlZXBseSBuZXN0ZWQgb2JqZWN0cyBhbmQgYXJyYXlzJywgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgbmFtZTogJ0pvaG4nLFxuICAgICAgICBhZ2U6IDMwLFxuICAgICAgICBhZGRyZXNzOiB7XG4gICAgICAgICAgc3RyZWV0OiAnMTIzIE1haW4gU3QnLFxuICAgICAgICAgIGNpdHk6ICdOZXcgWW9yaycsXG4gICAgICAgICAgc3RhdGU6ICdOWScsXG4gICAgICAgICAgemlwOiAnMTAwMDEnLFxuICAgICAgICB9LFxuICAgICAgICBob2JiaWVzOiBbJ3JlYWRpbmcnLCAncGFpbnRpbmcnLCAnY29va2luZyddLFxuICAgICAgICBmcmllbmRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0phbmUnLFxuICAgICAgICAgICAgYWdlOiAyOCxcbiAgICAgICAgICAgIGFkZHJlc3M6IHtcbiAgICAgICAgICAgICAgc3RyZWV0OiAnNDU2IEVsbSBTdCcsXG4gICAgICAgICAgICAgIGNpdHk6ICdMb3MgQW5nZWxlcycsXG4gICAgICAgICAgICAgIHN0YXRlOiAnQ0EnLFxuICAgICAgICAgICAgICB6aXA6ICc5MDAwMScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaG9iYmllczogWydoaWtpbmcnLCAncGhvdG9ncmFwaHknXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdNaWtlJyxcbiAgICAgICAgICAgIGFnZTogMzIsXG4gICAgICAgICAgICBhZGRyZXNzOiB7XG4gICAgICAgICAgICAgIHN0cmVldDogJzc4OSBPYWsgU3QnLFxuICAgICAgICAgICAgICBjaXR5OiAnQ2hpY2FnbycsXG4gICAgICAgICAgICAgIHN0YXRlOiAnSUwnLFxuICAgICAgICAgICAgICB6aXA6ICc2MDAwNycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaG9iYmllczogWydydW5uaW5nJywgJ2dhbWluZyddLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgICAgY29uc3QgZXhwZWN0ZWRSZXN1bHQgPSB7XG4gICAgICAgIG5hbWU6ICdKb2huJyxcbiAgICAgICAgYWdlOiAzMCxcbiAgICAgICAgJ2FkZHJlc3Muc3RyZWV0JzogJzEyMyBNYWluIFN0JyxcbiAgICAgICAgJ2FkZHJlc3MuY2l0eSc6ICdOZXcgWW9yaycsXG4gICAgICAgICdhZGRyZXNzLnN0YXRlJzogJ05ZJyxcbiAgICAgICAgJ2FkZHJlc3MuemlwJzogJzEwMDAxJyxcbiAgICAgICAgJ2hvYmJpZXNbMF0nOiAncmVhZGluZycsXG4gICAgICAgICdob2JiaWVzWzFdJzogJ3BhaW50aW5nJyxcbiAgICAgICAgJ2hvYmJpZXNbMl0nOiAnY29va2luZycsXG4gICAgICAgICdmcmllbmRzWzBdLm5hbWUnOiAnSmFuZScsXG4gICAgICAgICdmcmllbmRzWzBdLmFnZSc6IDI4LFxuICAgICAgICAnZnJpZW5kc1swXS5hZGRyZXNzLnN0cmVldCc6ICc0NTYgRWxtIFN0JyxcbiAgICAgICAgJ2ZyaWVuZHNbMF0uYWRkcmVzcy5jaXR5JzogJ0xvcyBBbmdlbGVzJyxcbiAgICAgICAgJ2ZyaWVuZHNbMF0uYWRkcmVzcy5zdGF0ZSc6ICdDQScsXG4gICAgICAgICdmcmllbmRzWzBdLmFkZHJlc3MuemlwJzogJzkwMDAxJyxcbiAgICAgICAgJ2ZyaWVuZHNbMF0uaG9iYmllc1swXSc6ICdoaWtpbmcnLFxuICAgICAgICAnZnJpZW5kc1swXS5ob2JiaWVzWzFdJzogJ3Bob3RvZ3JhcGh5JyxcbiAgICAgICAgJ2ZyaWVuZHNbMV0ubmFtZSc6ICdNaWtlJyxcbiAgICAgICAgJ2ZyaWVuZHNbMV0uYWdlJzogMzIsXG4gICAgICAgICdmcmllbmRzWzFdLmFkZHJlc3Muc3RyZWV0JzogJzc4OSBPYWsgU3QnLFxuICAgICAgICAnZnJpZW5kc1sxXS5hZGRyZXNzLmNpdHknOiAnQ2hpY2FnbycsXG4gICAgICAgICdmcmllbmRzWzFdLmFkZHJlc3Muc3RhdGUnOiAnSUwnLFxuICAgICAgICAnZnJpZW5kc1sxXS5hZGRyZXNzLnppcCc6ICc2MDAwNycsXG4gICAgICAgICdmcmllbmRzWzFdLmhvYmJpZXNbMF0nOiAncnVubmluZycsXG4gICAgICAgICdmcmllbmRzWzFdLmhvYmJpZXNbMV0nOiAnZ2FtaW5nJyxcbiAgICAgIH07XG4gICAgICBjb25zdCByZXN1bHQgPSBmbGF0dGVuSnNvbihkYXRhKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRSZXN1bHQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGhlIHRlc3Qgb2JqZWN0aXZlIGlzIHRvIHZlcmlmeSB0aGF0IHRoZSAnZmxhdHRlbkpzb24nIGZ1bmN0aW9uIGNvcnJlY3RseSBmbGF0dGVucyBhIEpTT04gb2JqZWN0IHdpdGggbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW4ga2V5cyBhbmQgdmFsdWVzLlxuICAgIGl0KCdzaG91bGQgY29ycmVjdGx5IGZsYXR0ZW4gYSBKU09OIG9iamVjdCB3aXRoIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGluIGtleXMgYW5kIHZhbHVlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgIG5hbWU6ICdKb2huJyxcbiAgICAgICAgYWdlOiAzMCxcbiAgICAgICAgY2l0eTogJ05ldyBZb3JrJyxcbiAgICAgICAgYWRkcmVzczogeyBzdHJlZXQ6ICcxMjMgTWFpbiBTdCcsIGNpdHk6ICdTYW4gRnJhbmNpc2NvJyB9LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkUmVzdWx0ID0ge1xuICAgICAgICBuYW1lOiAnSm9obicsXG4gICAgICAgIGFnZTogMzAsXG4gICAgICAgIGNpdHk6ICdOZXcgWW9yaycsXG4gICAgICAgICdhZGRyZXNzLnN0cmVldCc6ICcxMjMgTWFpbiBTdCcsXG4gICAgICAgICdhZGRyZXNzLmNpdHknOiAnU2FuIEZyYW5jaXNjbycsXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZmxhdHRlbkpzb24oZGF0YSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkUmVzdWx0KTtcbiAgICB9KTtcblxuICAgIC8vIFRoZSB0ZXN0IG9iamVjdGl2ZSBpcyB0byB2ZXJpZnkgdGhhdCB0aGUgZmxhdHRlbkpzb24gZnVuY3Rpb24gY29ycmVjdGx5IGZsYXR0ZW5zIGEgSlNPTiBvYmplY3Qgd2l0aCBkZWVwbHkgbmVzdGVkIGFycmF5cyBhbmQgb2JqZWN0cywgaW5jbHVkaW5nIG51bGwgYW5kIHVuZGVmaW5lZCB2YWx1ZXMuXG4gICAgaXQoJ3Nob3VsZCBjb3JyZWN0bHkgZmxhdHRlbiBhIEpTT04gb2JqZWN0IHdpdGggZGVlcGx5IG5lc3RlZCBhcnJheXMgYW5kIG9iamVjdHMgd2l0aCBudWxsIGFuZCB1bmRlZmluZWQgdmFsdWVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgbmFtZTogJ0pvaG4nLFxuICAgICAgICBhZ2U6IDMwLFxuICAgICAgICBjaXR5OiAnTmV3IFlvcmsnLFxuICAgICAgICBhZGRyZXNzOiB7XG4gICAgICAgICAgc3RyZWV0OiAnMTIzIE1haW4gU3QnLFxuICAgICAgICAgIHppcDogMTIzNDUsXG4gICAgICAgICAgY291bnRyeTogJ1VTQScsXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IHtcbiAgICAgICAgICAgIGxhdGl0dWRlOiA0MC43MTI4LFxuICAgICAgICAgICAgbG9uZ2l0dWRlOiAtNzQuMDA2LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGhvYmJpZXM6IFsncmVhZGluZycsICdwYWludGluZycsICdzd2ltbWluZyddLFxuICAgICAgICBmcmllbmRzOiBbXG4gICAgICAgICAgeyBuYW1lOiAnSmFuZScsIGFnZTogMjggfSxcbiAgICAgICAgICB7IG5hbWU6ICdNaWtlJywgYWdlOiAzMiB9LFxuICAgICAgICAgIHsgbmFtZTogJ1NhcmFoJywgYWdlOiAyNyB9LFxuICAgICAgICBdLFxuICAgICAgICBwZXQ6IG51bGwsXG4gICAgICAgIGZhdm9yaXRlQ29sb3I6IHVuZGVmaW5lZCxcbiAgICAgIH07XG4gICAgICBjb25zdCBleHBlY3RlZFJlc3VsdCA9IHtcbiAgICAgICAgbmFtZTogJ0pvaG4nLFxuICAgICAgICBhZ2U6IDMwLFxuICAgICAgICBjaXR5OiAnTmV3IFlvcmsnLFxuICAgICAgICAnYWRkcmVzcy5zdHJlZXQnOiAnMTIzIE1haW4gU3QnLFxuICAgICAgICAnYWRkcmVzcy56aXAnOiAxMjM0NSxcbiAgICAgICAgJ2FkZHJlc3MuY291bnRyeSc6ICdVU0EnLFxuICAgICAgICAnYWRkcmVzcy5jb29yZGluYXRlcy5sYXRpdHVkZSc6IDQwLjcxMjgsXG4gICAgICAgICdhZGRyZXNzLmNvb3JkaW5hdGVzLmxvbmdpdHVkZSc6IC03NC4wMDYsXG4gICAgICAgICdob2JiaWVzWzBdJzogJ3JlYWRpbmcnLFxuICAgICAgICAnaG9iYmllc1sxXSc6ICdwYWludGluZycsXG4gICAgICAgICdob2JiaWVzWzJdJzogJ3N3aW1taW5nJyxcbiAgICAgICAgJ2ZyaWVuZHNbMF0ubmFtZSc6ICdKYW5lJyxcbiAgICAgICAgJ2ZyaWVuZHNbMF0uYWdlJzogMjgsXG4gICAgICAgICdmcmllbmRzWzFdLm5hbWUnOiAnTWlrZScsXG4gICAgICAgICdmcmllbmRzWzFdLmFnZSc6IDMyLFxuICAgICAgICAnZnJpZW5kc1syXS5uYW1lJzogJ1NhcmFoJyxcbiAgICAgICAgJ2ZyaWVuZHNbMl0uYWdlJzogMjcsXG4gICAgICAgIHBldDogbnVsbCxcbiAgICAgICAgZmF2b3JpdGVDb2xvcjogdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZsYXR0ZW5Kc29uKGRhdGEpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZFJlc3VsdCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGZsYXR0ZW5Kc29uIGZ1bmN0aW9uIGNvcnJlY3RseSBmbGF0dGVucyBhIEpTT04gb2JqZWN0IHdpdGggYXJyYXlzIGNvbnRhaW5pbmcgb2JqZWN0cyB3aXRoIGRpZmZlcmVudCBuZXN0aW5nIGxldmVscy5cbiAgICBpdCgnc2hvdWxkIGNvcnJlY3RseSBmbGF0dGVuIGEgSlNPTiBvYmplY3Qgd2l0aCBhcnJheXMgY29udGFpbmluZyBvYmplY3RzIHdpdGggZGlmZmVyZW50IG5lc3RpbmcgbGV2ZWxzJywgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgbmFtZTogJ0pvaG4nLFxuICAgICAgICBhZ2U6IDMwLFxuICAgICAgICBjaXR5OiAnTmV3IFlvcmsnLFxuICAgICAgICBob2JiaWVzOiBbXG4gICAgICAgICAgeyBuYW1lOiAnUmVhZGluZycsIHR5cGU6ICdJbmRvb3InIH0sXG4gICAgICAgICAgeyBuYW1lOiAnUnVubmluZycsIHR5cGU6ICdPdXRkb29yJyB9LFxuICAgICAgICAgIHsgbmFtZTogJ0Nvb2tpbmcnLCB0eXBlOiAnSW5kb29yJyB9LFxuICAgICAgICBdLFxuICAgICAgICBmcmllbmRzOiBbXG4gICAgICAgICAgeyBuYW1lOiAnQWxpY2UnLCBhZ2U6IDI4IH0sXG4gICAgICAgICAgeyBuYW1lOiAnQm9iJywgYWdlOiAzMiB9LFxuICAgICAgICAgIHsgbmFtZTogJ0NoYXJsaWUnLCBhZ2U6IDI3IH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgICAgY29uc3QgZXhwZWN0ZWRSZXN1bHQgPSB7XG4gICAgICAgIG5hbWU6ICdKb2huJyxcbiAgICAgICAgYWdlOiAzMCxcbiAgICAgICAgY2l0eTogJ05ldyBZb3JrJyxcbiAgICAgICAgJ2hvYmJpZXNbMF0ubmFtZSc6ICdSZWFkaW5nJyxcbiAgICAgICAgJ2hvYmJpZXNbMF0udHlwZSc6ICdJbmRvb3InLFxuICAgICAgICAnaG9iYmllc1sxXS5uYW1lJzogJ1J1bm5pbmcnLFxuICAgICAgICAnaG9iYmllc1sxXS50eXBlJzogJ091dGRvb3InLFxuICAgICAgICAnaG9iYmllc1syXS5uYW1lJzogJ0Nvb2tpbmcnLFxuICAgICAgICAnaG9iYmllc1syXS50eXBlJzogJ0luZG9vcicsXG4gICAgICAgICdmcmllbmRzWzBdLm5hbWUnOiAnQWxpY2UnLFxuICAgICAgICAnZnJpZW5kc1swXS5hZ2UnOiAyOCxcbiAgICAgICAgJ2ZyaWVuZHNbMV0ubmFtZSc6ICdCb2InLFxuICAgICAgICAnZnJpZW5kc1sxXS5hZ2UnOiAzMixcbiAgICAgICAgJ2ZyaWVuZHNbMl0ubmFtZSc6ICdDaGFybGllJyxcbiAgICAgICAgJ2ZyaWVuZHNbMl0uYWdlJzogMjcsXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gZmxhdHRlbkpzb24oZGF0YSk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkUmVzdWx0KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldE9mZnNldEluU2VjJywgKCkgPT4ge1xuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIG9mZnNldCB2YWx1ZSBpbiBzZWNvbmRzIGZvciBhIHZhbGlkIHRpbWV6b25lIHN0cmluZ1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBvZmZzZXQgdmFsdWUgaW4gc2Vjb25kcyBmb3IgYSB2YWxpZCB0aW1lem9uZSBzdHJpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvZmZzZXQgPSBnZXRPZmZzZXRJblNlYygnQXNpYS9Lb2xrYXRhJyk7XG4gICAgICBleHBlY3Qob2Zmc2V0KS50b0JlKDE5ODAwKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgMCBmb3IgdGhlIHRpbWV6b25lIHN0cmluZyAnVVRDJ1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIDAgZm9yIHRoZSB0aW1lem9uZSBzdHJpbmcgXCJVVENcIicsICgpID0+IHtcbiAgICAgIGNvbnN0IG9mZnNldCA9IGdldE9mZnNldEluU2VjKCdVVEMnKTtcbiAgICAgIGV4cGVjdChvZmZzZXQpLnRvQmUoMCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIDAgZm9yIHRoZSB0aW1lem9uZSBzdHJpbmcgJ0V0Yy9VVEMnXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gMCBmb3IgdGhlIHRpbWV6b25lIHN0cmluZyBcIkV0Yy9VVENcIicsICgpID0+IHtcbiAgICAgIGNvbnN0IG9mZnNldCA9IGdldE9mZnNldEluU2VjKCdFdGMvVVRDJyk7XG4gICAgICBleHBlY3Qob2Zmc2V0KS50b0JlKDApO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gcmV0dXJucyB1bmRlZmluZWQgZm9yIGFuIGludmFsaWQgdGltZXpvbmUgc3RyaW5nXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdW5kZWZpbmVkIGZvciBhbiBpbnZhbGlkIHRpbWV6b25lIHN0cmluZycsICgpID0+IHtcbiAgICAgIGNvbnN0IG9mZnNldCA9IGdldE9mZnNldEluU2VjKCdJbnZhbGlkL1RpbWV6b25lJyk7XG4gICAgICBleHBlY3Qob2Zmc2V0KS50b0JlVW5kZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSB1bmRlZmluZWQgb2Zmc2V0IHZhbHVlIGZvciB0aGUgdGltZXpvbmUgc3RyaW5nICcrMDU6MzAnIGludmFsaWQgdGltZXpvbmUgc3RyaW5nXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIHVuZGVmaW5lZCBvZmZzZXQgdmFsdWUgZm9yIHRoZSB0aW1lem9uZSBzdHJpbmcgXCIrMDU6MzBcIicsICgpID0+IHtcbiAgICAgIGNvbnN0IG9mZnNldCA9IGdldE9mZnNldEluU2VjKCcrMDU6MzAnKTtcbiAgICAgIGV4cGVjdChvZmZzZXQpLnRvQmUodW5kZWZpbmVkKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIGNvcnJlY3Qgb2Zmc2V0IHZhbHVlIGZvciB0aGUgdGltZXpvbmUgc3RyaW5nICdBbWVyaWNhL05ld19Zb3JrJ1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBjb3JyZWN0IG9mZnNldCB2YWx1ZSBmb3IgdGhlIHRpbWV6b25lIHN0cmluZyBcIkFtZXJpY2EvTmV3X1lvcmtcIicsICgpID0+IHtcbiAgICAgIGNvbnN0IG9mZnNldCA9IGdldE9mZnNldEluU2VjKCdBc2lhL0NhbGN1dHRhJyk7XG4gICAgICBleHBlY3Qob2Zmc2V0KS50b0JlKDE5ODAwKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2Zvcm1hdFRpbWVTdGFtcCcsICgpID0+IHtcbiAgICAvLyBUZXN0cyB0aGF0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSB0aW1lc3RhbXAgaW4gbWlsbGlzZWNvbmRzIHdoZW4gbm8gZm9ybWF0IGlzIHByb3ZpZGVkLlxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSB0aW1lc3RhbXAgaW4gbWlsbGlzZWNvbmRzIHdoZW4gbm8gZm9ybWF0IGlzIHByb3ZpZGVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0ZVN0ciA9ICcyMDIyLTAxLTAxVDAwOjAwOjAwLjAwMFonO1xuICAgICAgY29uc3QgcmVzdWx0ID0gZm9ybWF0VGltZVN0YW1wKGRhdGVTdHIpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgxNjQwOTk1MjAwMDAwKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRpbWVzdGFtcCBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBtb21lbnQgZm9ybWF0IHdoZW4gZm9ybWF0IGlzIHByb3ZpZGVkLlxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSB0aW1lc3RhbXAgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgbW9tZW50IGZvcm1hdCB3aGVuIGZvcm1hdCBpcyBwcm92aWRlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGVTdHIgPSAnMjAyMi0wMS0wMVQwMDowMDowMC4wMDBaJztcbiAgICAgIGNvbnN0IGZvcm1hdCA9ICdZWVlZLU1NLUREJztcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZvcm1hdFRpbWVTdGFtcChkYXRlU3RyLCBmb3JtYXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgnMjAyMi0wMS0wMScpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCB0aGUgZnVuY3Rpb24gdGhyb3dzIGFuIGVycm9yIHdoZW4gYW4gaW52YWxpZCBkYXRlIHN0cmluZyBpcyBwcm92aWRlZC5cbiAgICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIHdoZW4gYW4gaW52YWxpZCBkYXRlIHN0cmluZyBpcyBwcm92aWRlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGVTdHIgPSAnaW52YWxpZC1kYXRlJztcbiAgICAgIGV4cGVjdChmb3JtYXRUaW1lU3RhbXAoZGF0ZVN0cikpLnRvQmVOYU4oKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgTmFOIHdoZW4gYW4gaW52YWxpZCBkYXRlIHN0cmluZyBpcyBwcm92aWRlZCBhbmQgbm8gZm9ybWF0IGlzIHByb3ZpZGVkLlxuICAgIGl0KCdzaG91bGQgcmV0dXJuIE5hTiB3aGVuIGFuIGludmFsaWQgZGF0ZSBzdHJpbmcgaXMgcHJvdmlkZWQgYW5kIG5vIGZvcm1hdCBpcyBwcm92aWRlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGVTdHIgPSAnaW52YWxpZC1kYXRlJztcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZvcm1hdFRpbWVTdGFtcChkYXRlU3RyKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmVOYU4oKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgTmFOIHdoZW4gYW4gZW1wdHkgc3RyaW5nIGlzIHByb3ZpZGVkIGFzIHRoZSBkYXRlIHN0cmluZyBhbmQgbm8gZm9ybWF0IGlzIHByb3ZpZGVkLlxuICAgIGl0KCdzaG91bGQgcmV0dXJuIE5hTiB3aGVuIGFuIGVtcHR5IHN0cmluZyBpcyBwcm92aWRlZCBhcyB0aGUgZGF0ZSBzdHJpbmcgYW5kIG5vIGZvcm1hdCBpcyBwcm92aWRlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGVTdHIgPSAnJztcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZvcm1hdFRpbWVTdGFtcChkYXRlU3RyKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmVOYU4oKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgTmFOIHdoZW4gYW4gaW52YWxpZCBmb3JtYXQgaXMgcHJvdmlkZWQuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gTmFOIHdoZW4gYW4gaW52YWxpZCBmb3JtYXQgaXMgcHJvdmlkZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRlU3RyID0gJzIwMjItMDEtMDFUMDA6MDA6MDAuMDAwWic7XG4gICAgICBjb25zdCBmb3JtYXQgPSAnaW52YWxpZEZvcm1hdCc7XG4gICAgICBjb25zdCByZXN1bHQgPSBmb3JtYXRUaW1lU3RhbXAoZGF0ZVN0ciwgZm9ybWF0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoJ2ludmFtMS8xLzIwMjJpNkZvcjBhbXQnKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRpbWVzdGFtcCBpbiBtaWxsaXNlY29uZHMgd2hlbiBhIHZhbGlkIHRpbWVzdGFtcCBzdHJpbmcgaXMgcHJvdmlkZWQgaW5zdGVhZCBvZiBhIGRhdGUgc3RyaW5nLlxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSB0aW1lc3RhbXAgaW4gbWlsbGlzZWNvbmRzIHdoZW4gYSB2YWxpZCB0aW1lc3RhbXAgc3RyaW5nIGlzIHByb3ZpZGVkIGluc3RlYWQgb2YgYSBkYXRlIHN0cmluZycsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGVTdHIgPSAnMjAyMi0wMS0wMVQwMDowMDowMC4wMDBaJztcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGZvcm1hdFRpbWVTdGFtcChkYXRlU3RyKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoMTY0MDk5NTIwMDAwMCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdoYXNoVG9TaGEyNTYnLCAoKSA9PiB7XG4gICAgLy8gVGVzdHMgdGhhdCBoYXNoVG9TaGEyNTYgcmV0dXJucyB0aGUgU0hBMjU2IGhhc2ggb2YgYSBzdHJpbmcgaW5wdXRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgU0hBMjU2IGhhc2ggb2YgYSBzdHJpbmcgaW5wdXQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9ICd0ZXN0IHN0cmluZyc7XG4gICAgICBjb25zdCBleHBlY3RlZE91dHB1dCA9ICdkNTU3OWM0NmRmY2M3ZjE4MjA3MDEzZTY1YjQ0ZTRjYjRlMmMyMjk4ZjRhYzQ1N2JhOGY4Mjc0M2YzMWU5MzBiJztcbiAgICAgIGNvbnN0IG91dHB1dCA9IGhhc2hUb1NoYTI1NihpbnB1dCk7XG4gICAgICBleHBlY3Qob3V0cHV0KS50b0JlKGV4cGVjdGVkT3V0cHV0KTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaGFzaFRvU2hhMjU2IHJldHVybnMgdGhlIFNIQTI1NiBoYXNoIG9mIGEgQnVmZmVyIGlucHV0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIFNIQTI1NiBoYXNoIG9mIGEgQnVmZmVyIGlucHV0JywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSBCdWZmZXIuZnJvbSgndGVzdCBidWZmZXInKTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkT3V0cHV0ID0gJzUyNWVmNWY3YmFmNTY1MjhiNDg3NzA5MjJlOThlODAwMzEwZDM2ODU2ODFkMzRlZTU5MjkwMmFhMjUyNDU4YjMnO1xuICAgICAgY29uc3Qgb3V0cHV0ID0gaGFzaFRvU2hhMjU2KGlucHV0KTtcbiAgICAgIGV4cGVjdChvdXRwdXQpLnRvQmUoZXhwZWN0ZWRPdXRwdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBoYXNoVG9TaGEyNTYgcmV0dXJucyB0aGUgU0hBMjU2IGhhc2ggb2YgYW4gZW1wdHkgbnVtYmVyIGFycmF5IGlucHV0XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIFNIQTI1NiBoYXNoIG9mIGFuIGVtcHR5IG51bWJlciBhcnJheSBpbnB1dCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0OiBudW1iZXJbXSA9IFtdO1xuICAgICAgY29uc3QgZXhwZWN0ZWRPdXRwdXQgPSAnZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSc7XG4gICAgICBjb25zdCBvdXRwdXQgPSBoYXNoVG9TaGEyNTYoaW5wdXQpO1xuICAgICAgZXhwZWN0KG91dHB1dCkudG9CZShleHBlY3RlZE91dHB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGhhc2hUb1NoYTI1NiByZXR1cm5zIHRoZSBTSEEyNTYgaGFzaCBvZiBhbiBlbXB0eSBCdWZmZXIgaW5wdXRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgU0hBMjU2IGhhc2ggb2YgYW4gZW1wdHkgQnVmZmVyIGlucHV0JywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSBCdWZmZXIuZnJvbShbXSk7XG4gICAgICBjb25zdCBleHBlY3RlZE91dHB1dCA9ICdlM2IwYzQ0Mjk4ZmMxYzE0OWFmYmY0Yzg5OTZmYjkyNDI3YWU0MWU0NjQ5YjkzNGNhNDk1OTkxYjc4NTJiODU1JztcbiAgICAgIGNvbnN0IG91dHB1dCA9IGhhc2hUb1NoYTI1NihpbnB1dCk7XG4gICAgICBleHBlY3Qob3V0cHV0KS50b0JlKGV4cGVjdGVkT3V0cHV0KTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgaGFzaFRvU2hhMjU2IHJldHVybnMgdGhlIFNIQTI1NiBoYXNoIG9mIGFuIGVtcHR5IHN0cmluZyBpbnB1dFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBTSEEyNTYgaGFzaCBvZiBhbiBlbXB0eSBzdHJpbmcgaW5wdXQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9ICcnO1xuICAgICAgY29uc3QgZXhwZWN0ZWRPdXRwdXQgPSAnZTNiMGM0NDI5OGZjMWMxNDlhZmJmNGM4OTk2ZmI5MjQyN2FlNDFlNDY0OWI5MzRjYTQ5NTk5MWI3ODUyYjg1NSc7XG4gICAgICBjb25zdCBvdXRwdXQgPSBoYXNoVG9TaGEyNTYoaW5wdXQpO1xuICAgICAgZXhwZWN0KG91dHB1dCkudG9CZShleHBlY3RlZE91dHB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGhhc2hUb1NoYTI1NiByZXR1cm5zIHRoZSBTSEEyNTYgaGFzaCBvZiBhIG51bWJlciBhcnJheSBpbnB1dFxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBTSEEyNTYgaGFzaCBvZiBhIG51bWJlciBhcnJheSBpbnB1dCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gWzEsIDIsIDMsIDQsIDVdO1xuICAgICAgY29uc3QgZXhwZWN0ZWRPdXRwdXQgPSAnNzRmODFmZTE2N2Q5OWI0Y2I0MWQ2ZDBjY2RhODIyNzhjYWVlOWYzZTJmMjVkNWU1YTM5MzZmZjNkY2VjNjBkMCc7XG4gICAgICBjb25zdCBvdXRwdXQgPSBoYXNoVG9TaGEyNTYoaW5wdXQpO1xuICAgICAgZXhwZWN0KG91dHB1dCkudG9CZShleHBlY3RlZE91dHB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBUZXN0cyB0aGF0IGhhc2hUb1NoYTI1NiByZXR1cm5zIHRoZSBTSEEyNTYgaGFzaCBvZiBhIG5vbi1BU0NJSSBzdHJpbmcgaW5wdXRcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgU0hBMjU2IGhhc2ggb2YgYSBub24tQVNDSUkgc3RyaW5nIGlucHV0JywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSAn5L2g5aW95LiW55WMJztcbiAgICAgIGNvbnN0IGV4cGVjdGVkT3V0cHV0ID0gJzUwOGQ2OWRjMjFiZjVkMmY4MDQwMTRiMTY4ODk1M2ExMmQ1ZGZkZTcxYmU2Y2Q5NTQxNzc5ODBkNWQxNzQxYmInO1xuICAgICAgY29uc3Qgb3V0cHV0ID0gaGFzaFRvU2hhMjU2KGlucHV0KTtcbiAgICAgIGV4cGVjdChvdXRwdXQpLnRvQmUoZXhwZWN0ZWRPdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZ2VuZXJhdGVVVUlEJywgKCkgPT4ge1xuICAgIC8vIFRlc3RzIHRoYXQgZ2VuZXJhdGVVVUlEIGZ1bmN0aW9uIHJldHVybnMgYSBVVUlEIHN0cmluZ1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgVVVJRCBzdHJpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCB1dWlkID0gZ2VuZXJhdGVVVUlEKCk7XG4gICAgICBleHBlY3QodHlwZW9mIHV1aWQpLnRvQmUoJ3N0cmluZycpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBnZW5lcmF0ZVVVSUQgZnVuY3Rpb24gZ2VuZXJhdGVzIGEgdW5pcXVlIFVVSUQgZWFjaCB0aW1lIGl0IGlzIGNhbGxlZFxuICAgIGl0KCdzaG91bGQgZ2VuZXJhdGUgYSB1bmlxdWUgVVVJRCBlYWNoIHRpbWUgaXQgaXMgY2FsbGVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgdXVpZDEgPSBnZW5lcmF0ZVVVSUQoKTtcbiAgICAgIGNvbnN0IHV1aWQyID0gZ2VuZXJhdGVVVUlEKCk7XG4gICAgICBleHBlY3QodXVpZDEpLm5vdC50b0JlKHV1aWQyKTtcbiAgICB9KTtcblxuICAgIC8vIFRlc3RzIHRoYXQgZ2VuZXJhdGVVVUlEIGZ1bmN0aW9uIHJldHVybnMgYSBVVUlEIHN0cmluZyB3aXRoIGxlbmd0aCAzNlxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgVVVJRCBzdHJpbmcgd2l0aCBsZW5ndGggMzYnLCAoKSA9PiB7XG4gICAgICBjb25zdCB1dWlkID0gZ2VuZXJhdGVVVUlEKCk7XG4gICAgICBleHBlY3QodXVpZC5sZW5ndGgpLnRvQmUoMzYpO1xuICAgIH0pO1xuXG4gICAgLy8gVGVzdHMgdGhhdCBnZW5lcmF0ZVVVSUQgZnVuY3Rpb24gcmV0dXJucyBhIFVVSUQgc3RyaW5nIHdpdGggNCBkYXNoZXNcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhIFVVSUQgc3RyaW5nIHdpdGggNCBkYXNoZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB1dWlkID0gZ2VuZXJhdGVVVUlEKCk7XG4gICAgICBjb25zdCBkYXNoQ291bnQgPSAodXVpZC5tYXRjaCgvLS9nKSB8fCBbXSkubGVuZ3RoO1xuICAgICAgZXhwZWN0KGRhc2hDb3VudCkudG9CZSg0KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldEVycm9yUmVzcEV2ZW50cyAtLSBtZXRhZGF0YSB0ZXN0cycsICgpID0+IHtcbiAgICBjb25zdCBtZXRhZGF0YTEgPSB7XG4gICAgICBzb3VyY2VJZDogJ3MzJyxcbiAgICAgIHdvcmtzcGFjZUlkOiAnd3NwMScsXG4gICAgICBkZXN0aW5hdGlvbklkOiAnZDEnLFxuICAgICAgam9iUnVuSWQ6ICcxMjMnLFxuICAgICAgam9iSWQ6IDEsXG4gICAgfSBhcyBNZXRhZGF0YTtcbiAgICBjb25zdCBtZXRhZGF0YTIgPSB7XG4gICAgICBzb3VyY2VJZDogJ3MyJyxcbiAgICAgIHdvcmtzcGFjZUlkOiAnd3NwMScsXG4gICAgICBkZXN0aW5hdGlvbklkOiAnZDInLFxuICAgICAgam9iUnVuSWQ6ICcxMjInLFxuICAgICAgam9iSWQ6IDQsXG4gICAgfSBhcyBNZXRhZGF0YTtcbiAgICBpdCgnc2hvdWxkIHJldHVybiBwcm9wZXIgb2JqZWN0LCB3aGVuIHdlIHNlbmQgcHJvcGVyIG1ldGFkYXRhIHN0cnVjdHVyZScsICgpID0+IHtcbiAgICAgIGNvbnN0IG91dCA9IGdldEVycm9yUmVzcEV2ZW50cyhbbWV0YWRhdGExLCBtZXRhZGF0YTJdLCA0MDAsICdlcnItMScsIHt9LCBmYWxzZSk7XG4gICAgICBleHBlY3QoQXJyYXkuaXNBcnJheShvdXQubWV0YWRhdGEpKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KG91dC5tZXRhZGF0YT8ubGVuZ3RoKS50b0JlKDIpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHByb3BlciBvYmplY3QsIHdoZW4gd2Ugc2VuZCBtZXRhZGF0YSBhcyBvYmplY3QnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvdXQgPSBnZXRFcnJvclJlc3BFdmVudHMoW21ldGFkYXRhMl0sIDQwMCwgJ2Vyci0xJywge30sIGZhbHNlKTtcbiAgICAgIGV4cGVjdChBcnJheS5pc0FycmF5KG91dC5tZXRhZGF0YSkpLnRvQmUodHJ1ZSk7XG4gICAgICBleHBlY3Qob3V0Lm1ldGFkYXRhPy5sZW5ndGgpLnRvQmUoMSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gcHJvcGVyIG9iamVjdChtZXRhZGF0YSBlbXB0eSBhcnJheSksIHdoZW4gd2Ugc2VuZCBtZXRhZGF0YSBhcyBudWxsJywgKCkgPT4ge1xuICAgICAgY29uc3Qgb3V0ID0gZ2V0RXJyb3JSZXNwRXZlbnRzKFtdLCA0MDAsICdlcnItMScsIHt9LCBmYWxzZSk7XG4gICAgICBleHBlY3QoQXJyYXkuaXNBcnJheShvdXQubWV0YWRhdGEpKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KG91dC5tZXRhZGF0YT8ubGVuZ3RoKS50b0JlKDApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndG9TdHJpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIHNhbWUgc3RyaW5nIHdoZW4gaW5wdXQgaXMgYSBzdHJpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9ICd0ZXN0IHN0cmluZyc7XG4gICAgICBjb25zdCByZXN1bHQgPSBjb252ZXJ0VG9TdHJpbmcoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZShpbnB1dCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBcIm51bGxcIiB3aGVuIGlucHV0IGlzIG51bGwnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dCA9IG51bGw7XG4gICAgICBjb25zdCByZXN1bHQgPSBjb252ZXJ0VG9TdHJpbmcoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSgnbnVsbCcpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIEpTT04gc3RyaW5nIHdoZW4gaW5wdXQgaXMgYSBjdXN0b20gb2JqZWN0JywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSB7IGtleTogJ3ZhbHVlJywgYW5vdGhlcktleTogMTIzIH07XG4gICAgICBjb25zdCByZXN1bHQgPSBjb252ZXJ0VG9TdHJpbmcoaW5wdXQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZShKU09OLnN0cmluZ2lmeShpbnB1dCkpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3Igd2hlbiBpbnB1dCBoYXMgY2lyY3VsYXIgcmVmZXJlbmNlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IGNpcmN1bGFyT2JqOiBhbnkgPSB7fTtcbiAgICAgIGNpcmN1bGFyT2JqLnNlbGYgPSBjaXJjdWxhck9iajtcbiAgICAgIGV4cGVjdCgoKSA9PiBjb252ZXJ0VG9TdHJpbmcoY2lyY3VsYXJPYmopKS50b1Rocm93KFR5cGVFcnJvcik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNvbnZlcnQgYm9vbGVhbiB0cnVlIHRvIEpTT04gc3RyaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSB0cnVlO1xuICAgICAgY29uc3QgcmVzdWx0ID0gY29udmVydFRvU3RyaW5nKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJ3RydWUnKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGNvbnZlcnQgYXJyYXkgdG8gSlNPTiBzdHJpbmcgd2hlbiBpbnB1dCBpcyBhbiBhcnJheScsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gWzEsIDIsIDNdO1xuICAgICAgY29uc3QgcmVzdWx0ID0gY29udmVydFRvU3RyaW5nKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoSlNPTi5zdHJpbmdpZnkoaW5wdXQpKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGNvbnZlcnQgYSBudW1iZXIgdG8gYSBKU09OIHN0cmluZycsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gMTIzO1xuICAgICAgY29uc3QgcmVzdWx0ID0gY29udmVydFRvU3RyaW5nKGlucHV0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUoJzEyMycpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgY29ycmVjdGx5IGhhbmRsZSBzdHJpbmdzIHdpdGggc3BlY2lhbCBjaGFyYWN0ZXJzJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXQgPSAnc3BlY2lhbCFAIyQlXiYqKClfK3t9OlwiPD4/JztcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGNvbnZlcnRUb1N0cmluZyhpbnB1dCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKGlucHV0KTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGNvcnJlY3RseSBjb252ZXJ0IGxhcmdlIGRhdGEgc3RydWN0dXJlcyB0byBzdHJpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCBsYXJnZU9iamVjdCA9IHtcbiAgICAgICAga2V5MTogJ3ZhbHVlMScsXG4gICAgICAgIGtleTI6IEFycmF5KDEwMDApLmZpbGwoJ3ZhbHVlMicpLFxuICAgICAgICBrZXkzOiB7IG5lc3RlZEtleTogJ25lc3RlZFZhbHVlJyB9LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGNvbnZlcnRUb1N0cmluZyhsYXJnZU9iamVjdCk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlKFxuICAgICAgICAne1wia2V5MVwiOlwidmFsdWUxXCIsXCJrZXkyXCI6W1widmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCIsXCJ2YWx1ZTJcIixcInZhbHVlMlwiLFwidmFsdWUyXCJdLFwia2V5M1wiOntcIm5lc3RlZEtleVwiOlwibmVzdGVkVmFsdWVcIn19JyxcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd1dWlkdjUnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSB0aGUgc2FtZSBVVUlEIGZvciB0aGUgc2FtZSBpbnB1dCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0ID0gJ3Rlc3QtdmFsdWUnO1xuICAgICAgY29uc3QgdXVpZDEgPSB1dWlkdjUoaW5wdXQpO1xuICAgICAgY29uc3QgdXVpZDIgPSB1dWlkdjUoaW5wdXQpO1xuXG4gICAgICBleHBlY3QodXVpZDEpLnRvQmUodXVpZDIpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBnZW5lcmF0ZSBkaWZmZXJlbnQgVVVJRHMgZm9yIGRpZmZlcmVudCBpbnB1dHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB1dWlkMSA9IHV1aWR2NSgnZmlyc3QtdmFsdWUnKTtcbiAgICAgIGNvbnN0IHV1aWQyID0gdXVpZHY1KCdzZWNvbmQtdmFsdWUnKTtcbiAgICAgIGV4cGVjdCh1dWlkMSkubm90LnRvQmUodXVpZDIpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gYSB2YWxpZCBVVUlEIHY1JywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHV1aWR2NSgndmFsaWQtdGVzdCcpKS50b0JlKCc0OTg0MzE2OS1lZTkxLTUzZDQtODJhZS0wMmRkNjc2YzkyYWUnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIGVtcHR5IHN0cmluZyBpbnB1dHMnLCAoKSA9PiB7XG4gICAgICBleHBlY3QodXVpZHY1KCcnKSkudG9CZSgnMWM3ZmNmMTMtNzRhZi01NTk1LThlZTktZDcyYmU2YzFhYzQyJyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=