@esotericsoftware/spine-core 4.3.0 → 4.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -29,9 +29,10 @@
29
29
  import { AlphaTimeline, Animation, AttachmentTimeline, DeformTimeline, DrawOrderFolderTimeline, DrawOrderTimeline, EventTimeline, IkConstraintTimeline, InheritTimeline, PathConstraintMixTimeline, PathConstraintPositionTimeline, PathConstraintSpacingTimeline, PhysicsConstraintDampingTimeline, PhysicsConstraintGravityTimeline, PhysicsConstraintInertiaTimeline, PhysicsConstraintMassTimeline, PhysicsConstraintMixTimeline, PhysicsConstraintResetTimeline, PhysicsConstraintStrengthTimeline, PhysicsConstraintWindTimeline, RGB2Timeline, RGBA2Timeline, RGBATimeline, RGBTimeline, RotateTimeline, ScaleTimeline, ScaleXTimeline, ScaleYTimeline, SequenceTimeline, ShearTimeline, ShearXTimeline, ShearYTimeline, SliderMixTimeline, SliderTimeline, TransformConstraintTimeline, TranslateTimeline, TranslateXTimeline, TranslateYTimeline } from "./Animation.js";
30
30
  import { Sequence, SequenceMode } from "./attachments/Sequence.js";
31
31
  import { BoneData, Inherit } from "./BoneData.js";
32
+ import { ScaleYMode } from "./ConstraintData.js";
32
33
  import { Event } from "./Event.js";
33
34
  import { EventData } from "./EventData.js";
34
- import { IkConstraintData, ScaleYMode } from "./IkConstraintData.js";
35
+ import { IkConstraintData } from "./IkConstraintData.js";
35
36
  import { PathConstraintData, PositionMode, RotateMode, SpacingMode } from "./PathConstraintData.js";
36
37
  import { PhysicsConstraintData } from "./PhysicsConstraintData.js";
37
38
  import { SkeletonData } from "./SkeletonData.js";
@@ -295,6 +296,9 @@ export class SkeletonJson {
295
296
  data.y = getValue(constraintMap, "y", 0);
296
297
  data.rotate = getValue(constraintMap, "rotate", 0);
297
298
  data.scaleX = getValue(constraintMap, "scaleX", 0);
299
+ const scaleY = getValue(constraintMap, "scaleY", null);
300
+ if (scaleY != null)
301
+ data.scaleYMode = Utils.enumValue(ScaleYMode, scaleY);
298
302
  data.shearX = getValue(constraintMap, "shearX", 0);
299
303
  data.limit = getValue(constraintMap, "limit", 5000) * scale;
300
304
  data.step = 1 / getValue(constraintMap, "fps", 60);
@@ -1384,4 +1388,4 @@ function readCurve(curve, timeline, bezier, frame, value, time1, time2, value1,
1384
1388
  function getValue(map, property, defaultValue) {
1385
1389
  return map[property] !== undefined ? map[property] : defaultValue;
1386
1390
  }
1387
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25Kc29uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NrZWxldG9uSnNvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFFL0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQStELGNBQWMsRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLHlCQUF5QixFQUFFLDhCQUE4QixFQUFFLDZCQUE2QixFQUFFLGdDQUFnQyxFQUFFLGdDQUFnQyxFQUFFLGdDQUFnQyxFQUFFLDZCQUE2QixFQUFFLDRCQUE0QixFQUFFLDhCQUE4QixFQUFFLGlDQUFpQyxFQUFFLDZCQUE2QixFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFpQiwyQkFBMkIsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSTk1QixPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFB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Q0FBQztnQkFDN0QsSUFBSSxVQUFVO29CQUFFLE1BQU0sR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUMzRCxNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUMzRSxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDckQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDN0IsS0FBSyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQzVDLEtBQUssQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUM1QyxLQUFLLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNsRCxLQUFLLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM5QyxLQUFLLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM5QyxLQUFLLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM5QyxLQUFLLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM5QyxLQUFLLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPLEVBQUUs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QUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQ3pELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUV2RCxNQUFNLFFBQVEsR0FBVyxhQUFhLENBQUMsSUFBSSxDQUFDO3dCQUM1QyxJQUFJLFFBQVEsRUFBRSxDQUFDOzRCQUNkLElBQUksQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO2dDQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLFFBQVEsRUFBRSxDQUFDLENBQUM7NEJBQ3RFLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUM7NEJBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFDNUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7NEJBQzFELElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQzs0QkFDMUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQzs0QkFDL0MsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUM7NEJBQ2pFLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7d0JBQ3RELENBQUM7d0JBRUQsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ3BDLE1BQU07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VyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNyRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO29CQUMzQixJQUFJLEtBQUssRUFBRSxDQUFDO3dCQUNYLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQzdGLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQ25GLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQ25GLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQzdGLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQzdGLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQzlGLENBQUM7b0JBRUQs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LEVBQUUsTUFBYyxFQUFFLEtBQWEsRUFBRSxLQUFhLEVBQUUsS0FBYSxFQUFFLEtBQWEsRUFDM0ssTUFBYyxFQUFFLE1BQWMsRUFBRSxLQUFhO0lBQzdDLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3pCLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsT0FBTyxNQUFNLENBQUM7SUFDZixDQUFDO0lBQ0QsTUFBTSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQztJQUNyQixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckIsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDakMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN6QixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNqQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzRixPQUFPLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDbkIsQ0FBQztBQUVELGlGQUFpRjtBQUNqRixTQUFTLFFBQVEsQ0FBRSxHQUFRLEVBQUUsUUFBZ0IsRUFBRSxZQUFpQjtJQUMvRCxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO0FBQ25FLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBTcGluZSBSdW50aW1lcyBMaWNlbnNlIEFncmVlbWVudFxuICogTGFzdCB1cGRhdGVkIEFwcmlsIDUsIDIwMjUuIFJlcGxhY2VzIGFsbCBwcmlvciB2ZXJzaW9ucy5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyNSwgRXNvdGVyaWMgU29mdHdhcmUgTExDXG4gKlxuICogSW50ZWdyYXRpb24gb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3Igb3RoZXJ3aXNlIGNyZWF0aW5nXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxuICogY29uZGl0aW9ucyBvZiBTZWN0aW9uIDIgb2YgdGhlIFNwaW5lIEVkaXRvciBMaWNlbnNlIEFncmVlbWVudDpcbiAqIGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1lZGl0b3ItbGljZW5zZVxuICpcbiAqIE90aGVyd2lzZSwgaXQgaXMgcGVybWl0dGVkIHRvIGludGVncmF0ZSB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZVxuICogb3Igb3RoZXJ3aXNlIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyAoY29sbGVjdGl2ZWx5LFxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxuICogU3BpbmUgRWRpdG9yIGxpY2Vuc2UgYW5kIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9kdWN0cyBpbiBhbnkgZm9ybSBtdXN0XG4gKiBpbmNsdWRlIHRoaXMgbGljZW5zZSBhbmQgY29weXJpZ2h0IG5vdGljZS5cbiAqXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMgQVJFIFBST1ZJREVEIEJZIEVTT1RFUklDIFNPRlRXQVJFIExMQyBcIkFTIElTXCIgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgRVNPVEVSSUMgU09GVFdBUkUgTExDIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLFxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OLCBPUiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUykgSE9XRVZFUiBDQVVTRUQgQU5EXG4gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IEFscGhhVGltZWxpbmUsIEFuaW1hdGlvbiwgQXR0YWNobWVudFRpbWVsaW5lLCB0eXBlIEJvbmVUaW1lbGluZTIsIHR5cGUgQ3VydmVUaW1lbGluZSwgdHlwZSBDdXJ2ZVRpbWVsaW5lMSwgRGVmb3JtVGltZWxpbmUsIERyYXdPcmRlckZvbGRlclRpbWVsaW5lLCBEcmF3T3JkZXJUaW1lbGluZSwgRXZlbnRUaW1lbGluZSwgSWtDb25zdHJhaW50VGltZWxpbmUsIEluaGVyaXRUaW1lbGluZSwgUGF0aENvbnN0cmFpbnRNaXhUaW1lbGluZSwgUGF0aENvbnN0cmFpbnRQb3NpdGlvblRpbWVsaW5lLCBQYXRoQ29uc3RyYWludFNwYWNpbmdUaW1lbGluZSwgUGh5c2ljc0NvbnN0cmFpbnREYW1waW5nVGltZWxpbmUsIFBoeXNpY3NDb25zdHJhaW50R3Jhdml0eVRpbWVsaW5lLCBQaHlzaWNzQ29uc3RyYWludEluZXJ0aWFUaW1lbGluZSwgUGh5c2ljc0NvbnN0cmFpbnRNYXNzVGltZWxpbmUsIFBoeXNpY3NDb25zdHJhaW50TWl4VGltZWxpbmUsIFBoeXNpY3NDb25zdHJhaW50UmVzZXRUaW1lbGluZSwgUGh5c2ljc0NvbnN0cmFpbnRTdHJlbmd0aFRpbWVsaW5lLCBQaHlzaWNzQ29uc3RyYWludFdpbmRUaW1lbGluZSwgUkdCMlRpbWVsaW5lLCBSR0JBMlRpbWVsaW5lLCBSR0JBVGltZWxpbmUsIFJHQlRpbWVsaW5lLCBSb3RhdGVUaW1lbGluZSwgU2NhbGVUaW1lbGluZSwgU2NhbGVYVGltZWxpbmUsIFNjYWxlWVRpbWVsaW5lLCBTZXF1ZW5jZVRpbWVsaW5lLCBTaGVhclRpbWVsaW5lLCBTaGVhclhUaW1lbGluZSwgU2hlYXJZVGltZWxpbmUsIFNsaWRlck1peFRpbWVsaW5lLCBTbGlkZXJUaW1lbGluZSwgdHlwZSBUaW1lbGluZSwgVHJhbnNmb3JtQ29uc3RyYWludFRpbWVsaW5lLCBUcmFuc2xhdGVUaW1lbGluZSwgVHJhbnNsYXRlWFRpbWVsaW5lLCBUcmFuc2xhdGVZVGltZWxpbmUgfSBmcm9tIFwiLi9BbmltYXRpb24uanNcIjtcbmltcG9ydCB0eXBlIHsgQXR0YWNobWVudCwgVmVydGV4QXR0YWNobWVudCB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL0F0dGFjaG1lbnQuanNcIjtcbmltcG9ydCB0eXBlIHsgQXR0YWNobWVudExvYWRlciB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL0F0dGFjaG1lbnRMb2FkZXIuanNcIjtcbmltcG9ydCB0eXBlIHsgTWVzaEF0dGFjaG1lbnQgfSBmcm9tIFwiLi9hdHRhY2htZW50cy9NZXNoQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHsgU2VxdWVuY2UsIFNlcXVlbmNlTW9kZSB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL1NlcXVlbmNlLmpzXCI7XG5pbXBvcnQgeyBCb25lRGF0YSwgSW5oZXJpdCB9IGZyb20gXCIuL0JvbmVEYXRhLmpzXCI7XG5pbXBvcnQgeyBFdmVudCB9IGZyb20gXCIuL0V2ZW50LmpzXCI7XG5pbXBvcnQgeyBFdmVudERhdGEgfSBmcm9tIFwiLi9FdmVudERhdGEuanNcIjtcbmltcG9ydCB7IElrQ29uc3RyYWludERhdGEsIFNjYWxlWU1vZGUgfSBmcm9tIFwiLi9Ja0NvbnN0cmFpbnREYXRhLmpzXCI7XG5pbXBvcnQgeyBQYXRoQ29uc3RyYWludERhdGEsIFBvc2l0aW9uTW9kZSwgUm90YXRlTW9kZSwgU3BhY2luZ01vZGUgfSBmcm9tIFwiLi9QYXRoQ29uc3RyYWludERhdGEuanNcIjtcbmltcG9ydCB7IFBoeXNpY3NDb25zdHJhaW50RGF0YSB9IGZyb20gXCIuL1BoeXNpY3NDb25zdHJhaW50RGF0YS5qc1wiO1xuaW1wb3J0IHsgU2tlbGV0b25EYXRhIH0gZnJvbSBcIi4vU2tlbGV0b25EYXRhLmpzXCI7XG5pbXBvcnQgeyBTa2luIH0gZnJvbSBcIi4vU2tpbi5qc1wiO1xuaW1wb3J0IHsgU2xpZGVyRGF0YSB9IGZyb20gXCIuL1NsaWRlckRhdGEuanNcIjtcbmltcG9ydCB7IEJsZW5kTW9kZSwgU2xvdERhdGEgfSBmcm9tIFwiLi9TbG90RGF0YS5qc1wiO1xuaW1wb3J0IHsgdHlwZSBGcm9tUHJvcGVydHksIEZyb21Sb3RhdGUsIEZyb21TY2FsZVgsIEZyb21TY2FsZVksIEZyb21TaGVhclksIEZyb21YLCBGcm9tWSwgdHlwZSBUb1Byb3BlcnR5LCBUb1JvdGF0ZSwgVG9TY2FsZVgsIFRvU2NhbGVZLCBUb1NoZWFyWSwgVG9YLCBUb1ksIFRyYW5zZm9ybUNvbnN0cmFpbnREYXRhIH0gZnJvbSBcIi4vVHJhbnNmb3JtQ29uc3RyYWludERhdGEuanNcIjtcbmltcG9ydCB7IENvbG9yLCB0eXBlIE51bWJlckFycmF5TGlrZSwgVXRpbHMgfSBmcm9tIFwiLi9VdGlscy5qc1wiO1xuXG4vKiogTG9hZHMgc2tlbGV0b24gZGF0YSBpbiB0aGUgU3BpbmUgSlNPTiBmb3JtYXQuXG4gKlxuICogU2VlIFtTcGluZSBKU09OIGZvcm1hdF0oaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWpzb24tZm9ybWF0KSBhbmRcbiAqIFtKU09OIGFuZCBiaW5hcnkgZGF0YV0oaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWxvYWRpbmctc2tlbGV0b24tZGF0YSNKU09OLWFuZC1iaW5hcnktZGF0YSkgaW4gdGhlIFNwaW5lXG4gKiBSdW50aW1lcyBHdWlkZS4gKi9cbmV4cG9ydCBjbGFzcyBTa2VsZXRvbkpzb24ge1xuXHRhdHRhY2htZW50TG9hZGVyOiBBdHRhY2htZW50TG9hZGVyO1xuXG5cdC8qKiBTY2FsZXMgYm9uZSBwb3NpdGlvbnMsIGltYWdlIHNpemVzLCBhbmQgdHJhbnNsYXRpb25zIGFzIHRoZXkgYXJlIGxvYWRlZC4gVGhpcyBhbGxvd3MgZGlmZmVyZW50IHNpemUgaW1hZ2VzIHRvIGJlIHVzZWQgYXRcblx0ICogcnVudGltZSB0aGFuIHdlcmUgdXNlZCBpbiBTcGluZS5cblx0ICpcblx0ICogU2VlIFtTY2FsaW5nXShodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtbG9hZGluZy1za2VsZXRvbi1kYXRhI1NjYWxpbmcpIGluIHRoZSBTcGluZSBSdW50aW1lcyBHdWlkZS4gKi9cblx0c2NhbGUgPSAxO1xuXHRwcml2YXRlIHJlYWRvbmx5IGxpbmtlZE1lc2hlcyA9IFtdIGFzIExpbmtlZE1lc2hbXTtcblxuXHRjb25zdHJ1Y3RvciAoYXR0YWNobWVudExvYWRlcjogQXR0YWNobWVudExvYWRlcikge1xuXHRcdHRoaXMuYXR0YWNobWVudExvYWRlciA9IGF0dGFjaG1lbnRMb2FkZXI7XG5cdH1cblxuXHQvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IGl0IGlzIGFueSB1bnRpbCB3ZSBkZWZpbmUgYSBzY2hlbWFcblx0cmVhZFNrZWxldG9uRGF0YSAoanNvbjogc3RyaW5nIHwgYW55KTogU2tlbGV0b25EYXRhIHtcblx0XHRjb25zdCBzY2FsZSA9IHRoaXMuc2NhbGU7XG5cdFx0Y29uc3Qgc2tlbGV0b25EYXRhID0gbmV3IFNrZWxldG9uRGF0YSgpO1xuXHRcdGNvbnN0IHJvb3QgPSB0eXBlb2YgKGpzb24pID09PSBcInN0cmluZ1wiID8gSlNPTi5wYXJzZShqc29uKSA6IGpzb247XG5cblx0XHQvLyBTa2VsZXRvblxuXHRcdGNvbnN0IHNrZWxldG9uTWFwID0gcm9vdC5za2VsZXRvbjtcblx0XHRpZiAoc2tlbGV0b25NYXApIHtcblx0XHRcdHNrZWxldG9uRGF0YS5oYXNoID0gc2tlbGV0b25NYXAuaGFzaDtcblx0XHRcdHNrZWxldG9uRGF0YS52ZXJzaW9uID0gc2tlbGV0b25NYXAuc3BpbmU7XG5cdFx0XHRza2VsZXRvbkRhdGEueCA9IHNrZWxldG9uTWFwLng7XG5cdFx0XHRza2VsZXRvbkRhdGEueSA9IHNrZWxldG9uTWFwLnk7XG5cdFx0XHRza2VsZXRvbkRhdGEud2lkdGggPSBza2VsZXRvbk1hcC53aWR0aDtcblx0XHRcdHNrZWxldG9uRGF0YS5oZWlnaHQgPSBza2VsZXRvbk1hcC5oZWlnaHQ7XG5cdFx0XHRza2VsZXRvbkRhdGEucmVmZXJlbmNlU2NhbGUgPSBnZXRWYWx1ZShza2VsZXRvbk1hcCwgXCJyZWZlcmVuY2VTY2FsZVwiLCAxMDApICogc2NhbGU7XG5cdFx0XHRza2VsZXRvbkRhdGEuZnBzID0gc2tlbGV0b25NYXAuZnBzO1xuXHRcdFx0c2tlbGV0b25EYXRhLmltYWdlc1BhdGggPSBza2VsZXRvbk1hcC5pbWFnZXMgPz8gbnVsbDtcblx0XHRcdHNrZWxldG9uRGF0YS5hdWRpb1BhdGggPSBza2VsZXRvbk1hcC5hdWRpbyA/PyBudWxsO1xuXHRcdH1cblxuXHRcdC8vIEJvbmVzXG5cdFx0aWYgKHJvb3QuYm9uZXMpIHtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcm9vdC5ib25lcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRjb25zdCBib25lTWFwID0gcm9vdC5ib25lc1tpXTtcblxuXHRcdFx0XHRsZXQgcGFyZW50OiBCb25lRGF0YSB8IG51bGwgPSBudWxsO1xuXHRcdFx0XHRjb25zdCBwYXJlbnROYW1lOiBzdHJpbmcgPSBnZXRWYWx1ZShib25lTWFwLCBcInBhcmVudFwiLCBudWxsKTtcblx0XHRcdFx0aWYgKHBhcmVudE5hbWUpIHBhcmVudCA9IHNrZWxldG9uRGF0YS5maW5kQm9uZShwYXJlbnROYW1lKTtcblx0XHRcdFx0Y29uc3QgZGF0YSA9IG5ldyBCb25lRGF0YShza2VsZXRvbkRhdGEuYm9uZXMubGVuZ3RoLCBib25lTWFwLm5hbWUsIHBhcmVudCk7XG5cdFx0XHRcdGRhdGEubGVuZ3RoID0gZ2V0VmFsdWUoYm9uZU1hcCwgXCJsZW5ndGhcIiwgMCkgKiBzY2FsZTtcblx0XHRcdFx0Y29uc3Qgc2V0dXAgPSBkYXRhLnNldHVwUG9zZTtcblx0XHRcdFx0c2V0dXAueCA9IGdldFZhbHVlKGJvbmVNYXAsIFwieFwiLCAwKSAqIHNjYWxlO1xuXHRcdFx0XHRzZXR1cC55ID0gZ2V0VmFsdWUoYm9uZU1hcCwgXCJ5XCIsIDApICogc2NhbGU7XG5cdFx0XHRcdHNldHVwLnJvdGF0aW9uID0gZ2V0VmFsdWUoYm9uZU1hcCwgXCJyb3RhdGlvblwiLCAwKTtcblx0XHRcdFx0c2V0dXAuc2NhbGVYID0gZ2V0VmFsdWUoYm9uZU1hcCwgXCJzY2FsZVhcIiwgMSk7XG5cdFx0XHRcdHNldHVwLnNjYWxlWSA9IGdldFZhbHVlKGJvbmVNYXAsIFwic2NhbGVZXCIsIDEpO1xuXHRcdFx0XHRzZXR1cC5zaGVhclggPSBnZXRWYWx1ZShib25lTWFwLCBcInNoZWFyWFwiLCAwKTtcblx0XHRcdFx0c2V0dXAuc2hlYXJZID0gZ2V0VmFsdWUoYm9uZU1hcCwgXCJzaGVhcllcIiwgMCk7XG5cdFx0XHRcdHNldHVwLmluaGVyaXQgPSBVdGlscy5lbnVtVmFsdWUoSW5oZXJpdCwgZ2V0VmFsdWUoYm9uZU1hcCwgXCJpbmhlcml0XCIsIFwiTm9ybWFsXCIpKTtcblx0XHRcdFx0ZGF0YS5za2luUmVxdWlyZWQgPSBnZXRWYWx1ZShib25lTWFwLCBcInNraW5cIiwgZmFsc2UpO1xuXG5cdFx0XHRcdGNvbnN0IGNvbG9yID0gZ2V0VmFsdWUoYm9uZU1hcCwgXCJjb2xvclwiLCBudWxsKTtcblx0XHRcdFx0aWYgKGNvbG9yKSBkYXRhLmNvbG9yLnNldEZyb21TdHJpbmcoY29sb3IpO1xuXHRcdFx0XHRkYXRhLmljb24gPSBnZXRWYWx1ZShib25lTWFwLCBcImljb25cIiwgdW5kZWZpbmVkKTtcblx0XHRcdFx0ZGF0YS5pY29uU2l6ZSA9IGdldFZhbHVlKGJvbmVNYXAsIFwiaWNvblNpemVcIiwgMSk7XG5cdFx0XHRcdGRhdGEuaWNvblJvdGF0aW9uID0gZ2V0VmFsdWUoYm9uZU1hcCwgXCJpY29uUm90YXRpb25cIiwgMCk7XG5cblx0XHRcdFx0c2tlbGV0b25EYXRhLmJvbmVzLnB1c2goZGF0YSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gU2xvdHMuXG5cdFx0aWYgKHJvb3Quc2xvdHMpIHtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcm9vdC5zbG90cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRjb25zdCBzbG90TWFwID0gcm9vdC5zbG90c1tpXTtcblx0XHRcdFx0Y29uc3Qgc2xvdE5hbWUgPSBzbG90TWFwLm5hbWU7XG5cblx0XHRcdFx0Y29uc3QgYm9uZURhdGEgPSBza2VsZXRvbkRhdGEuZmluZEJvbmUoc2xvdE1hcC5ib25lKTtcblx0XHRcdFx0aWYgKCFib25lRGF0YSkgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIGJvbmUgJHtzbG90TWFwLmJvbmV9IGZvciBzbG90ICR7c2xvdE5hbWV9YCk7XG5cdFx0XHRcdGNvbnN0IGRhdGEgPSBuZXcgU2xvdERhdGEoc2tlbGV0b25EYXRhLnNsb3RzLmxlbmd0aCwgc2xvdE5hbWUsIGJvbmVEYXRhKTtcblxuXHRcdFx0XHRjb25zdCBjb2xvcjogc3RyaW5nID0gZ2V0VmFsdWUoc2xvdE1hcCwgXCJjb2xvclwiLCBudWxsKTtcblx0XHRcdFx0aWYgKGNvbG9yKSBkYXRhLnNldHVwUG9zZS5jb2xvci5zZXRGcm9tU3RyaW5nKGNvbG9yKTtcblxuXHRcdFx0XHRjb25zdCBkYXJrOiBzdHJpbmcgPSBnZXRWYWx1ZShzbG90TWFwLCBcImRhcmtcIiwgbnVsbCk7XG5cdFx0XHRcdGlmIChkYXJrKSBkYXRhLnNldHVwUG9zZS5kYXJrQ29sb3IgPSBDb2xvci5mcm9tU3RyaW5nKGRhcmspO1xuXG5cdFx0XHRcdGRhdGEuYXR0YWNobWVudE5hbWUgPSBnZXRWYWx1ZShzbG90TWFwLCBcImF0dGFjaG1lbnRcIiwgbnVsbCk7XG5cdFx0XHRcdGRhdGEuYmxlbmRNb2RlID0gVXRpbHMuZW51bVZhbHVlKEJsZW5kTW9kZSwgZ2V0VmFsdWUoc2xvdE1hcCwgXCJibGVuZFwiLCBcIm5vcm1hbFwiKSk7XG5cdFx0XHRcdGRhdGEudmlzaWJsZSA9IGdldFZhbHVlKHNsb3RNYXAsIFwidmlzaWJsZVwiLCB0cnVlKTtcblx0XHRcdFx0c2tlbGV0b25EYXRhLnNsb3RzLnB1c2goZGF0YSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ29uc3RyYWludHMuXG5cdFx0aWYgKHJvb3QuY29uc3RyYWludHMpIHtcblx0XHRcdGZvciAoY29uc3QgY29uc3RyYWludE1hcCBvZiByb290LmNvbnN0cmFpbnRzKSB7XG5cdFx0XHRcdGNvbnN0IG5hbWUgPSBjb25zdHJhaW50TWFwLm5hbWU7XG5cdFx0XHRcdGNvbnN0IHNraW5SZXF1aXJlZCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwic2tpblwiLCBmYWxzZSk7XG5cdFx0XHRcdHN3aXRjaCAoZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJ0eXBlXCIsIGZhbHNlKSkge1xuXHRcdFx0XHRcdGNhc2UgXCJpa1wiOiB7XG5cdFx0XHRcdFx0XHRjb25zdCBkYXRhID0gbmV3IElrQ29uc3RyYWludERhdGEobmFtZSk7XG5cdFx0XHRcdFx0XHRkYXRhLnNraW5SZXF1aXJlZCA9IHNraW5SZXF1aXJlZDtcblxuXHRcdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IGNvbnN0cmFpbnRNYXAuYm9uZXMubGVuZ3RoOyBpaSsrKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGJvbmUgPSBza2VsZXRvbkRhdGEuZmluZEJvbmUoY29uc3RyYWludE1hcC5ib25lc1tpaV0pO1xuXHRcdFx0XHRcdFx0XHRpZiAoIWJvbmUpIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBib25lICR7Y29uc3RyYWludE1hcC5ib25lc1tpaV19IGZvciBJSyBjb25zdHJhaW50ICR7bmFtZX0uYCk7XG5cdFx0XHRcdFx0XHRcdGRhdGEuYm9uZXMucHVzaChib25lKTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Y29uc3QgdGFyZ2V0TmFtZSA9IGNvbnN0cmFpbnRNYXAudGFyZ2V0O1xuXHRcdFx0XHRcdFx0Y29uc3QgdGFyZ2V0ID0gc2tlbGV0b25EYXRhLmZpbmRCb25lKHRhcmdldE5hbWUpO1xuXHRcdFx0XHRcdFx0aWYgKCF0YXJnZXQpIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCB0YXJnZXQgYm9uZSAke3RhcmdldE5hbWV9IGZvciBJSyBjb25zdHJhaW50ICR7bmFtZX0uYCk7XG5cdFx0XHRcdFx0XHRkYXRhLnRhcmdldCA9IHRhcmdldDtcblxuXHRcdFx0XHRcdFx0Y29uc3Qgc2NhbGVZID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJzY2FsZVlcIiwgbnVsbCk7XG5cdFx0XHRcdFx0XHRpZiAoc2NhbGVZICE9IG51bGwpIGRhdGEuc2NhbGVZTW9kZSA9IFV0aWxzLmVudW1WYWx1ZShTY2FsZVlNb2RlLCBzY2FsZVkpO1xuXG5cdFx0XHRcdFx0XHRjb25zdCBzZXR1cCA9IGRhdGEuc2V0dXBQb3NlO1xuXHRcdFx0XHRcdFx0c2V0dXAubWl4ID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJtaXhcIiwgMSk7XG5cdFx0XHRcdFx0XHRzZXR1cC5zb2Z0bmVzcyA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwic29mdG5lc3NcIiwgMCkgKiBzY2FsZTtcblx0XHRcdFx0XHRcdHNldHVwLmJlbmREaXJlY3Rpb24gPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcImJlbmRQb3NpdGl2ZVwiLCB0cnVlKSA/IDEgOiAtMTtcblx0XHRcdFx0XHRcdHNldHVwLmNvbXByZXNzID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJjb21wcmVzc1wiLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHRzZXR1cC5zdHJldGNoID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJzdHJldGNoXCIsIGZhbHNlKTtcblxuXHRcdFx0XHRcdFx0c2tlbGV0b25EYXRhLmNvbnN0cmFpbnRzLnB1c2goZGF0YSk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSBcInRyYW5zZm9ybVwiOiB7XG5cdFx0XHRcdFx0XHRjb25zdCBkYXRhID0gbmV3IFRyYW5zZm9ybUNvbnN0cmFpbnREYXRhKG5hbWUpO1xuXHRcdFx0XHRcdFx0ZGF0YS5za2luUmVxdWlyZWQgPSBza2luUmVxdWlyZWQ7XG5cblx0XHRcdFx0XHRcdGZvciAobGV0IGlpID0gMDsgaWkgPCBjb25zdHJhaW50TWFwLmJvbmVzLmxlbmd0aDsgaWkrKykge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBib25lTmFtZSA9IGNvbnN0cmFpbnRNYXAuYm9uZXNbaWldO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBib25lID0gc2tlbGV0b25EYXRhLmZpbmRCb25lKGJvbmVOYW1lKTtcblx0XHRcdFx0XHRcdFx0aWYgKCFib25lKSB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IGZpbmQgYm9uZSAke2JvbmVOYW1lfSBmb3IgdHJhbnNmb3JtIGNvbnN0cmFpbnQgJHtjb25zdHJhaW50TWFwLm5hbWV9LmApO1xuXHRcdFx0XHRcdFx0XHRkYXRhLmJvbmVzLnB1c2goYm9uZSk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGNvbnN0IHNvdXJjZU5hbWU6IHN0cmluZyA9IGNvbnN0cmFpbnRNYXAuc291cmNlO1xuXHRcdFx0XHRcdFx0Y29uc3Qgc291cmNlID0gc2tlbGV0b25EYXRhLmZpbmRCb25lKHNvdXJjZU5hbWUpO1xuXHRcdFx0XHRcdFx0aWYgKCFzb3VyY2UpIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBzb3VyY2UgYm9uZSAke3NvdXJjZU5hbWV9IGZvciB0cmFuc2Zvcm0gY29uc3RyYWludCAke2NvbnN0cmFpbnRNYXAubmFtZX0uYCk7XG5cdFx0XHRcdFx0XHRkYXRhLnNvdXJjZSA9IHNvdXJjZTtcblxuXHRcdFx0XHRcdFx0ZGF0YS5sb2NhbFNvdXJjZSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwibG9jYWxTb3VyY2VcIiwgZmFsc2UpO1xuXHRcdFx0XHRcdFx0ZGF0YS5sb2NhbFRhcmdldCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwibG9jYWxUYXJnZXRcIiwgZmFsc2UpO1xuXHRcdFx0XHRcdFx0ZGF0YS5hZGRpdGl2ZSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwiYWRkaXRpdmVcIiwgZmFsc2UpO1xuXHRcdFx0XHRcdFx0ZGF0YS5jbGFtcCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwiY2xhbXBcIiwgZmFsc2UpO1xuXG5cdFx0XHRcdFx0XHRsZXQgcm90YXRlID0gZmFsc2UsIHggPSBmYWxzZSwgeSA9IGZhbHNlLCBzY2FsZVggPSBmYWxzZSwgc2NhbGVZID0gZmFsc2UsIHNoZWFyWSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0Y29uc3QgZnJvbUVudHJpZXMgPSBPYmplY3QuZW50cmllcyhnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInByb3BlcnRpZXNcIiwge30pKSBhcyBbc3RyaW5nLCBvYmplY3RdW107XG5cdFx0XHRcdFx0XHRmb3IgKGNvbnN0IFtuYW1lLCBmcm9tRW50cnldIG9mIGZyb21FbnRyaWVzKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGZyb20gPSB0aGlzLmZyb21Qcm9wZXJ0eShuYW1lKTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgZnJvbVNjYWxlID0gdGhpcy5wcm9wZXJ0eVNjYWxlKG5hbWUsIHNjYWxlKTtcblx0XHRcdFx0XHRcdFx0ZnJvbS5vZmZzZXQgPSBnZXRWYWx1ZShmcm9tRW50cnksIFwib2Zmc2V0XCIsIDApICogZnJvbVNjYWxlO1xuXHRcdFx0XHRcdFx0XHRjb25zdCB0b0VudHJpZXMgPSBPYmplY3QuZW50cmllcyhnZXRWYWx1ZShmcm9tRW50cnksIFwidG9cIiwge30pKSBhcyBbc3RyaW5nLCBvYmplY3RdW107XG5cdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgW25hbWUsIHRvRW50cnldIG9mIHRvRW50cmllcykge1xuXHRcdFx0XHRcdFx0XHRcdGxldCB0b1NjYWxlID0gMTtcblx0XHRcdFx0XHRcdFx0XHRsZXQgdG86IFRvUHJvcGVydHk7XG5cdFx0XHRcdFx0XHRcdFx0c3dpdGNoIChuYW1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjYXNlIFwicm90YXRlXCI6IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cm90YXRlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dG8gPSBuZXcgVG9Sb3RhdGUoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRjYXNlIFwieFwiOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHggPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0byA9IG5ldyBUb1goKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dG9TY2FsZSA9IHNjYWxlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgXCJ5XCI6IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0eSA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRvID0gbmV3IFRvWSgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0b1NjYWxlID0gc2NhbGU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSBcInNjYWxlWFwiOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHNjYWxlWCA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRvID0gbmV3IFRvU2NhbGVYKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSBcInNjYWxlWVwiOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHNjYWxlWSA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRvID0gbmV3IFRvU2NhbGVZKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSBcInNoZWFyWVwiOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHNoZWFyWSA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRvID0gbmV3IFRvU2hlYXJZKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRyYW5zZm9ybSBjb25zdHJhaW50IHRvIHByb3BlcnR5OiAke25hbWV9YCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHRvLm9mZnNldCA9IGdldFZhbHVlKHRvRW50cnksIFwib2Zmc2V0XCIsIDApICogdG9TY2FsZTtcblx0XHRcdFx0XHRcdFx0XHR0by5tYXggPSBnZXRWYWx1ZSh0b0VudHJ5LCBcIm1heFwiLCAxKSAqIHRvU2NhbGU7XG5cdFx0XHRcdFx0XHRcdFx0dG8uc2NhbGUgPSBnZXRWYWx1ZSh0b0VudHJ5LCBcInNjYWxlXCIsIDEpICogdG9TY2FsZSAvIGZyb21TY2FsZTtcblx0XHRcdFx0XHRcdFx0XHRmcm9tLnRvLnB1c2godG8pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGlmIChmcm9tLnRvLmxlbmd0aCA+IDApIGRhdGEucHJvcGVydGllcy5wdXNoKGZyb20pO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRkYXRhLm9mZnNldHNbVHJhbnNmb3JtQ29uc3RyYWludERhdGEuUk9UQVRJT05dID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJyb3RhdGlvblwiLCAwKTtcblx0XHRcdFx0XHRcdGRhdGEub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5YXSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwieFwiLCAwKSAqIHNjYWxlO1xuXHRcdFx0XHRcdFx0ZGF0YS5vZmZzZXRzW1RyYW5zZm9ybUNvbnN0cmFpbnREYXRhLlldID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJ5XCIsIDApICogc2NhbGU7XG5cdFx0XHRcdFx0XHRkYXRhLm9mZnNldHNbVHJhbnNmb3JtQ29uc3RyYWludERhdGEuU0NBTEVYXSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwic2NhbGVYXCIsIDApO1xuXHRcdFx0XHRcdFx0ZGF0YS5vZmZzZXRzW1RyYW5zZm9ybUNvbnN0cmFpbnREYXRhLlNDQUxFWV0gPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInNjYWxlWVwiLCAwKTtcblx0XHRcdFx0XHRcdGRhdGEub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5TSEVBUlldID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJzaGVhcllcIiwgMCk7XG5cblx0XHRcdFx0XHRcdGNvbnN0IHNldHVwID0gZGF0YS5zZXR1cFBvc2U7XG5cdFx0XHRcdFx0XHRpZiAocm90YXRlKSBzZXR1cC5taXhSb3RhdGUgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcIm1peFJvdGF0ZVwiLCAxKTtcblx0XHRcdFx0XHRcdGlmICh4KSBzZXR1cC5taXhYID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJtaXhYXCIsIDEpO1xuXHRcdFx0XHRcdFx0aWYgKHkpIHNldHVwLm1peFkgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcIm1peFlcIiwgc2V0dXAubWl4WCk7XG5cdFx0XHRcdFx0XHRpZiAoc2NhbGVYKSBzZXR1cC5taXhTY2FsZVggPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcIm1peFNjYWxlWFwiLCAxKTtcblx0XHRcdFx0XHRcdGlmIChzY2FsZVkpIHNldHVwLm1peFNjYWxlWSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwibWl4U2NhbGVZXCIsIHNldHVwLm1peFNjYWxlWCk7XG5cdFx0XHRcdFx0XHRpZiAoc2hlYXJZKSBzZXR1cC5taXhTaGVhclkgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcIm1peFNoZWFyWVwiLCAxKTtcblxuXHRcdFx0XHRcdFx0c2tlbGV0b25EYXRhLmNvbnN0cmFpbnRzLnB1c2goZGF0YSk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSBcInBhdGhcIjoge1xuXHRcdFx0XHRcdFx0Y29uc3QgZGF0YSA9IG5ldyBQYXRoQ29uc3RyYWludERhdGEobmFtZSk7XG5cdFx0XHRcdFx0XHRkYXRhLnNraW5SZXF1aXJlZCA9IHNraW5SZXF1aXJlZDtcblxuXHRcdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IGNvbnN0cmFpbnRNYXAuYm9uZXMubGVuZ3RoOyBpaSsrKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGJvbmVOYW1lID0gY29uc3RyYWludE1hcC5ib25lc1tpaV07XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGJvbmUgPSBza2VsZXRvbkRhdGEuZmluZEJvbmUoYm9uZU5hbWUpO1xuXHRcdFx0XHRcdFx0XHRpZiAoIWJvbmUpIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBib25lICR7Ym9uZU5hbWV9IGZvciBwYXRoIGNvbnN0cmFpbnQgJHtjb25zdHJhaW50TWFwLm5hbWV9LmApO1xuXHRcdFx0XHRcdFx0XHRkYXRhLmJvbmVzLnB1c2goYm9uZSk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGNvbnN0IHNsb3ROYW1lOiBzdHJpbmcgPSBjb25zdHJhaW50TWFwLnNsb3Q7XG5cdFx0XHRcdFx0XHRjb25zdCBzbG90ID0gc2tlbGV0b25EYXRhLmZpbmRTbG90KHNsb3ROYW1lKTtcblx0XHRcdFx0XHRcdGlmICghc2xvdCkgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIHNsb3QgJHtzbG90TmFtZX0gZm9yIHBhdGggY29uc3RyYWludCAke2NvbnN0cmFpbnRNYXAubmFtZX0uYCk7XG5cdFx0XHRcdFx0XHRkYXRhLnNsb3QgPSBzbG90O1xuXG5cdFx0XHRcdFx0XHRkYXRhLnBvc2l0aW9uTW9kZSA9IFV0aWxzLmVudW1WYWx1ZShQb3NpdGlvbk1vZGUsIGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwicG9zaXRpb25Nb2RlXCIsIFwiUGVyY2VudFwiKSk7XG5cdFx0XHRcdFx0XHRkYXRhLnNwYWNpbmdNb2RlID0gVXRpbHMuZW51bVZhbHVlKFNwYWNpbmdNb2RlLCBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInNwYWNpbmdNb2RlXCIsIFwiTGVuZ3RoXCIpKTtcblx0XHRcdFx0XHRcdGRhdGEucm90YXRlTW9kZSA9IFV0aWxzLmVudW1WYWx1ZShSb3RhdGVNb2RlLCBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInJvdGF0ZU1vZGVcIiwgXCJUYW5nZW50XCIpKTtcblx0XHRcdFx0XHRcdGRhdGEub2Zmc2V0Um90YXRpb24gPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInJvdGF0aW9uXCIsIDApO1xuXHRcdFx0XHRcdFx0Y29uc3Qgc2V0dXAgPSBkYXRhLnNldHVwUG9zZTtcblx0XHRcdFx0XHRcdHNldHVwLnBvc2l0aW9uID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJwb3NpdGlvblwiLCAwKTtcblx0XHRcdFx0XHRcdGlmIChkYXRhLnBvc2l0aW9uTW9kZSA9PT0gUG9zaXRpb25Nb2RlLkZpeGVkKSBzZXR1cC5wb3NpdGlvbiAqPSBzY2FsZTtcblx0XHRcdFx0XHRcdHNldHVwLnNwYWNpbmcgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInNwYWNpbmdcIiwgMCk7XG5cdFx0XHRcdFx0XHRpZiAoZGF0YS5zcGFjaW5nTW9kZSA9PT0gU3BhY2luZ01vZGUuTGVuZ3RoIHx8IGRhdGEuc3BhY2luZ01vZGUgPT09IFNwYWNpbmdNb2RlLkZpeGVkKSBzZXR1cC5zcGFjaW5nICo9IHNjYWxlO1xuXHRcdFx0XHRcdFx0c2V0dXAubWl4Um90YXRlID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJtaXhSb3RhdGVcIiwgMSk7XG5cdFx0XHRcdFx0XHRzZXR1cC5taXhYID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJtaXhYXCIsIDEpO1xuXHRcdFx0XHRcdFx0c2V0dXAubWl4WSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwibWl4WVwiLCBzZXR1cC5taXhYKTtcblxuXHRcdFx0XHRcdFx0c2tlbGV0b25EYXRhLmNvbnN0cmFpbnRzLnB1c2goZGF0YSk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y2FzZSBcInBoeXNpY3NcIjoge1xuXHRcdFx0XHRcdFx0Y29uc3QgZGF0YSA9IG5ldyBQaHlzaWNzQ29uc3RyYWludERhdGEobmFtZSk7XG5cdFx0XHRcdFx0XHRkYXRhLnNraW5SZXF1aXJlZCA9IHNraW5SZXF1aXJlZDtcblxuXHRcdFx0XHRcdFx0Y29uc3QgYm9uZU5hbWU6IHN0cmluZyA9IGNvbnN0cmFpbnRNYXAuYm9uZTtcblx0XHRcdFx0XHRcdGNvbnN0IGJvbmUgPSBza2VsZXRvbkRhdGEuZmluZEJvbmUoYm9uZU5hbWUpO1xuXHRcdFx0XHRcdFx0aWYgKGJvbmUgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKGBQaHlzaWNzIGJvbmUgbm90IGZvdW5kOiAke2JvbmVOYW1lfWApO1xuXHRcdFx0XHRcdFx0ZGF0YS5ib25lID0gYm9uZTtcblxuXHRcdFx0XHRcdFx0ZGF0YS54ID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJ4XCIsIDApO1xuXHRcdFx0XHRcdFx0ZGF0YS55ID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJ5XCIsIDApO1xuXHRcdFx0XHRcdFx0ZGF0YS5yb3RhdGUgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInJvdGF0ZVwiLCAwKTtcblx0XHRcdFx0XHRcdGRhdGEuc2NhbGVYID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJzY2FsZVhcIiwgMCk7XG5cdFx0XHRcdFx0XHRkYXRhLnNoZWFyWCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwic2hlYXJYXCIsIDApO1xuXHRcdFx0XHRcdFx0ZGF0YS5saW1pdCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwibGltaXRcIiwgNTAwMCkgKiBzY2FsZTtcblx0XHRcdFx0XHRcdGRhdGEuc3RlcCA9IDEgLyBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcImZwc1wiLCA2MCk7XG5cdFx0XHRcdFx0XHRjb25zdCBzZXR1cCA9IGRhdGEuc2V0dXBQb3NlO1xuXHRcdFx0XHRcdFx0c2V0dXAuaW5lcnRpYSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwiaW5lcnRpYVwiLCAwLjUpO1xuXHRcdFx0XHRcdFx0c2V0dXAuc3RyZW5ndGggPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInN0cmVuZ3RoXCIsIDEwMCk7XG5cdFx0XHRcdFx0XHRzZXR1cC5kYW1waW5nID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJkYW1waW5nXCIsIDAuODUpO1xuXHRcdFx0XHRcdFx0c2V0dXAubWFzc0ludmVyc2UgPSAxIC8gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJtYXNzXCIsIDEpO1xuXHRcdFx0XHRcdFx0c2V0dXAud2luZCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwid2luZFwiLCAwKTtcblx0XHRcdFx0XHRcdHNldHVwLmdyYXZpdHkgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcImdyYXZpdHlcIiwgMCk7XG5cdFx0XHRcdFx0XHRzZXR1cC5taXggPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcIm1peFwiLCAxKTtcblx0XHRcdFx0XHRcdGRhdGEuaW5lcnRpYUdsb2JhbCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwiaW5lcnRpYUdsb2JhbFwiLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHRkYXRhLnN0cmVuZ3RoR2xvYmFsID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJzdHJlbmd0aEdsb2JhbFwiLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHRkYXRhLmRhbXBpbmdHbG9iYWwgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcImRhbXBpbmdHbG9iYWxcIiwgZmFsc2UpO1xuXHRcdFx0XHRcdFx0ZGF0YS5tYXNzR2xvYmFsID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJtYXNzR2xvYmFsXCIsIGZhbHNlKTtcblx0XHRcdFx0XHRcdGRhdGEud2luZEdsb2JhbCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwid2luZEdsb2JhbFwiLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHRkYXRhLmdyYXZpdHlHbG9iYWwgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcImdyYXZpdHlHbG9iYWxcIiwgZmFsc2UpO1xuXHRcdFx0XHRcdFx0ZGF0YS5taXhHbG9iYWwgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcIm1peEdsb2JhbFwiLCBmYWxzZSk7XG5cblx0XHRcdFx0XHRcdHNrZWxldG9uRGF0YS5jb25zdHJhaW50cy5wdXNoKGRhdGEpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgXCJzbGlkZXJcIjoge1xuXHRcdFx0XHRcdFx0Y29uc3QgZGF0YSA9IG5ldyBTbGlkZXJEYXRhKG5hbWUpO1xuXHRcdFx0XHRcdFx0ZGF0YS5za2luUmVxdWlyZWQgPSBza2luUmVxdWlyZWQ7XG5cblx0XHRcdFx0XHRcdGRhdGEuYWRkaXRpdmUgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcImFkZGl0aXZlXCIsIGZhbHNlKTtcblx0XHRcdFx0XHRcdGRhdGEubG9vcCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwibG9vcFwiLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHRkYXRhLnNldHVwUG9zZS50aW1lID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0ZGF0YS5zZXR1cFBvc2UubWl4ID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJtaXhcIiwgMSk7XG5cblx0XHRcdFx0XHRcdGNvbnN0IGJvbmVOYW1lOiBzdHJpbmcgPSBjb25zdHJhaW50TWFwLmJvbmU7XG5cdFx0XHRcdFx0XHRpZiAoYm9uZU5hbWUpIHtcblx0XHRcdFx0XHRcdFx0ZGF0YS5ib25lID0gc2tlbGV0b25EYXRhLmZpbmRCb25lKGJvbmVOYW1lKTtcblx0XHRcdFx0XHRcdFx0aWYgKCFkYXRhLmJvbmUpIHRocm93IG5ldyBFcnJvcihgU2xpZGVyIGJvbmUgbm90IGZvdW5kOiAke2JvbmVOYW1lfWApO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBwcm9wZXJ0eSA9IGNvbnN0cmFpbnRNYXAucHJvcGVydHk7XG5cdFx0XHRcdFx0XHRcdGRhdGEucHJvcGVydHkgPSB0aGlzLmZyb21Qcm9wZXJ0eShwcm9wZXJ0eSk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHByb3BlcnR5U2NhbGUgPSB0aGlzLnByb3BlcnR5U2NhbGUocHJvcGVydHksIHNjYWxlKTtcblx0XHRcdFx0XHRcdFx0ZGF0YS5wcm9wZXJ0eS5vZmZzZXQgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcImZyb21cIiwgMCkgKiBwcm9wZXJ0eVNjYWxlO1xuXHRcdFx0XHRcdFx0XHRkYXRhLm9mZnNldCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwidG9cIiwgMCk7XG5cdFx0XHRcdFx0XHRcdGRhdGEuc2NhbGUgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInNjYWxlXCIsIDEpIC8gcHJvcGVydHlTY2FsZTtcblx0XHRcdFx0XHRcdFx0ZGF0YS5sb2NhbCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwibG9jYWxcIiwgZmFsc2UpO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRza2VsZXRvbkRhdGEuY29uc3RyYWludHMucHVzaChkYXRhKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFNraW5zLlxuXHRcdGlmIChyb290LnNraW5zKSB7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHJvb3Quc2tpbnMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0Y29uc3Qgc2tpbk1hcCA9IHJvb3Quc2tpbnNbaV1cblx0XHRcdFx0Y29uc3Qgc2tpbiA9IG5ldyBTa2luKHNraW5NYXAubmFtZSk7XG5cblx0XHRcdFx0aWYgKHNraW5NYXAuYm9uZXMpIHtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgc2tpbk1hcC5ib25lcy5sZW5ndGg7IGlpKyspIHtcblx0XHRcdFx0XHRcdGNvbnN0IGJvbmVOYW1lID0gc2tpbk1hcC5ib25lc1tpaV07XG5cdFx0XHRcdFx0XHRjb25zdCBib25lID0gc2tlbGV0b25EYXRhLmZpbmRCb25lKGJvbmVOYW1lKTtcblx0XHRcdFx0XHRcdGlmICghYm9uZSkgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIGJvbmUgJHtib25lTmFtZX0gZm9yIHNraW4gJHtza2luTWFwLm5hbWV9LmApO1xuXHRcdFx0XHRcdFx0c2tpbi5ib25lcy5wdXNoKGJvbmUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChza2luTWFwLmlrKSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IHNraW5NYXAuaWsubGVuZ3RoOyBpaSsrKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBjb25zdHJhaW50TmFtZSA9IHNraW5NYXAuaWtbaWldO1xuXHRcdFx0XHRcdFx0Y29uc3QgY29uc3RyYWludCA9IHNrZWxldG9uRGF0YS5maW5kQ29uc3RyYWludChjb25zdHJhaW50TmFtZSwgSWtDb25zdHJhaW50RGF0YSk7XG5cdFx0XHRcdFx0XHRpZiAoIWNvbnN0cmFpbnQpIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBJSyBjb25zdHJhaW50ICR7Y29uc3RyYWludE5hbWV9IGZvciBza2luICR7c2tpbk1hcC5uYW1lfS5gKTtcblx0XHRcdFx0XHRcdHNraW4uY29uc3RyYWludHMucHVzaChjb25zdHJhaW50KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoc2tpbk1hcC50cmFuc2Zvcm0pIHtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgc2tpbk1hcC50cmFuc2Zvcm0ubGVuZ3RoOyBpaSsrKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBjb25zdHJhaW50TmFtZSA9IHNraW5NYXAudHJhbnNmb3JtW2lpXTtcblx0XHRcdFx0XHRcdGNvbnN0IGNvbnN0cmFpbnQgPSBza2VsZXRvbkRhdGEuZmluZENvbnN0cmFpbnQoY29uc3RyYWludE5hbWUsIFRyYW5zZm9ybUNvbnN0cmFpbnREYXRhKTtcblx0XHRcdFx0XHRcdGlmICghY29uc3RyYWludCkgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIHRyYW5zZm9ybSBjb25zdHJhaW50ICR7Y29uc3RyYWludE5hbWV9IGZvciBza2luICR7c2tpbk1hcC5uYW1lfS5gKTtcblx0XHRcdFx0XHRcdHNraW4uY29uc3RyYWludHMucHVzaChjb25zdHJhaW50KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoc2tpbk1hcC5wYXRoKSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IHNraW5NYXAucGF0aC5sZW5ndGg7IGlpKyspIHtcblx0XHRcdFx0XHRcdGNvbnN0IGNvbnN0cmFpbnROYW1lID0gc2tpbk1hcC5wYXRoW2lpXTtcblx0XHRcdFx0XHRcdGNvbnN0IGNvbnN0cmFpbnQgPSBza2VsZXRvbkRhdGEuZmluZENvbnN0cmFpbnQoY29uc3RyYWludE5hbWUsIFBhdGhDb25zdHJhaW50RGF0YSk7XG5cdFx0XHRcdFx0XHRpZiAoIWNvbnN0cmFpbnQpIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBwYXRoIGNvbnN0cmFpbnQgJHtjb25zdHJhaW50TmFtZX0gZm9yIHNraW4gJHtza2luTWFwLm5hbWV9LmApO1xuXHRcdFx0XHRcdFx0c2tpbi5jb25zdHJhaW50cy5wdXNoKGNvbnN0cmFpbnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChza2luTWFwLnBoeXNpY3MpIHtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgc2tpbk1hcC5waHlzaWNzLmxlbmd0aDsgaWkrKykge1xuXHRcdFx0XHRcdFx0Y29uc3QgY29uc3RyYWludE5hbWUgPSBza2luTWFwLnBoeXNpY3NbaWldO1xuXHRcdFx0XHRcdFx0Y29uc3QgY29uc3RyYWludCA9IHNrZWxldG9uRGF0YS5maW5kQ29uc3RyYWludChjb25zdHJhaW50TmFtZSwgUGh5c2ljc0NvbnN0cmFpbnREYXRhKTtcblx0XHRcdFx0XHRcdGlmICghY29uc3RyYWludCkgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIHBoeXNpY3MgY29uc3RyYWludCAke2NvbnN0cmFpbnROYW1lfSBmb3Igc2tpbiAke3NraW5NYXAubmFtZX0uYCk7XG5cdFx0XHRcdFx0XHRza2luLmNvbnN0cmFpbnRzLnB1c2goY29uc3RyYWludCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHNraW5NYXAuc2xpZGVyKSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IHNraW5NYXAuc2xpZGVyLmxlbmd0aDsgaWkrKykge1xuXHRcdFx0XHRcdFx0Y29uc3QgY29uc3RyYWludE5hbWUgPSBza2luTWFwLnNsaWRlcltpaV07XG5cdFx0XHRcdFx0XHRjb25zdCBjb25zdHJhaW50ID0gc2tlbGV0b25EYXRhLmZpbmRDb25zdHJhaW50KGNvbnN0cmFpbnROYW1lLCBTbGlkZXJEYXRhKTtcblx0XHRcdFx0XHRcdGlmICghY29uc3RyYWludCkgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIHNsaWRlciBjb25zdHJhaW50ICR7Y29uc3RyYWludE5hbWV9IGZvciBza2luICR7c2tpbk1hcC5uYW1lfS5gKTtcblx0XHRcdFx0XHRcdHNraW4uY29uc3RyYWludHMucHVzaChjb25zdHJhaW50KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRmb3IgKGNvbnN0IHNsb3ROYW1lIGluIHNraW5NYXAuYXR0YWNobWVudHMpIHtcblx0XHRcdFx0XHRjb25zdCBzbG90ID0gc2tlbGV0b25EYXRhLmZpbmRTbG90KHNsb3ROYW1lKTtcblx0XHRcdFx0XHRpZiAoIXNsb3QpIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBza2luIHNsb3QgJHtzbG90TmFtZX0gZm9yIHNraW4gJHtza2luTWFwLm5hbWV9LmApO1xuXHRcdFx0XHRcdGNvbnN0IHNsb3RNYXAgPSBza2luTWFwLmF0dGFjaG1lbnRzW3Nsb3ROYW1lXTtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IGVudHJ5TmFtZSBpbiBzbG90TWFwKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBhdHRhY2htZW50ID0gdGhpcy5yZWFkQXR0YWNobWVudChzbG90TWFwW2VudHJ5TmFtZV0sIHNraW4sIHNsb3QuaW5kZXgsIGVudHJ5TmFtZSwgc2tlbGV0b25EYXRhKTtcblx0XHRcdFx0XHRcdGlmIChhdHRhY2htZW50KSBza2luLnNldEF0dGFjaG1lbnQoc2xvdC5pbmRleCwgZW50cnlOYW1lLCBhdHRhY2htZW50KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0c2tlbGV0b25EYXRhLnNraW5zLnB1c2goc2tpbik7XG5cdFx0XHRcdGlmIChza2luLm5hbWUgPT09IFwiZGVmYXVsdFwiKSBza2VsZXRvbkRhdGEuZGVmYXVsdFNraW4gPSBza2luO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIExpbmtlZCBtZXNoZXMuXG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSB0aGlzLmxpbmtlZE1lc2hlcy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdGNvbnN0IGxpbmtlZE1lc2ggPSB0aGlzLmxpbmtlZE1lc2hlc1tpXTtcblx0XHRcdGNvbnN0IHNraW4gPSAhbGlua2VkTWVzaC5za2luID8gc2tlbGV0b25EYXRhLmRlZmF1bHRTa2luIDogc2tlbGV0b25EYXRhLmZpbmRTa2luKGxpbmtlZE1lc2guc2tpbik7XG5cdFx0XHRpZiAoIXNraW4pIHRocm93IG5ldyBFcnJvcihgU2tpbiBub3QgZm91bmQ6ICR7bGlua2VkTWVzaC5za2lufWApO1xuXHRcdFx0Y29uc3Qgc291cmNlID0gc2tpbi5nZXRBdHRhY2htZW50KGxpbmtlZE1lc2guc291cmNlSW5kZXgsIGxpbmtlZE1lc2guc291cmNlKTtcblx0XHRcdGlmICghc291cmNlKSB0aHJvdyBuZXcgRXJyb3IoYFNvdXJjZSBtZXNoIG5vdCBmb3VuZDogJHtsaW5rZWRNZXNoLnNvdXJjZX1gKTtcblx0XHRcdGxpbmtlZE1lc2gubWVzaC50aW1lbGluZUF0dGFjaG1lbnQgPSBsaW5rZWRNZXNoLmluaGVyaXRUaW1lbGluZXMgPyBzb3VyY2UgOiBsaW5rZWRNZXNoLm1lc2g7XG5cdFx0XHRsaW5rZWRNZXNoLm1lc2guc2V0U291cmNlTWVzaChzb3VyY2UgYXMgTWVzaEF0dGFjaG1lbnQpO1xuXHRcdFx0bGlua2VkTWVzaC5tZXNoLnVwZGF0ZVNlcXVlbmNlKCk7XG5cdFx0XHQvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vQ29uZnVzaW5nTGFiZWxzOiByZWZlcmVuY2UgcnVudGltZVxuXHRcdFx0b3V0ZXI6XG5cdFx0XHRpZiAobGlua2VkTWVzaC5pbmhlcml0VGltZWxpbmVzICYmIGxpbmtlZE1lc2guc2xvdEluZGV4ICE9PSBsaW5rZWRNZXNoLnNvdXJjZUluZGV4KSB7XG5cdFx0XHRcdGNvbnN0IHNsb3RzID0gc291cmNlLnRpbWVsaW5lU2xvdHM7XG5cdFx0XHRcdGZvciAoY29uc3QgZXhpc3Rpbmcgb2Ygc2xvdHMpXG5cdFx0XHRcdFx0aWYgKGV4aXN0aW5nID09PSBsaW5rZWRNZXNoLnNsb3RJbmRleCkgYnJlYWsgb3V0ZXI7XG5cdFx0XHRcdGNvbnN0IG5ld1Nsb3RzID0gWy4uLnNsb3RzXTtcblx0XHRcdFx0bmV3U2xvdHNbc2xvdHMubGVuZ3RoXSA9IGxpbmtlZE1lc2guc2xvdEluZGV4O1xuXHRcdFx0XHRzb3VyY2UudGltZWxpbmVTbG90cyA9IG5ld1Nsb3RzO1xuXHRcdFx0fVxuXHRcdH1cblx0XHR0aGlzLmxpbmtlZE1lc2hlcy5sZW5ndGggPSAwO1xuXG5cdFx0Ly8gRXZlbnRzLlxuXHRcdGlmIChyb290LmV2ZW50cykge1xuXHRcdFx0Zm9yIChjb25zdCBldmVudE5hbWUgaW4gcm9vdC5ldmVudHMpIHtcblx0XHRcdFx0Y29uc3QgZXZlbnRNYXAgPSByb290LmV2ZW50c1tldmVudE5hbWVdO1xuXHRcdFx0XHRjb25zdCBkYXRhID0gbmV3IEV2ZW50RGF0YShldmVudE5hbWUpO1xuXHRcdFx0XHRjb25zdCBzZXR1cCA9IGRhdGEuc2V0dXBQb3NlO1xuXHRcdFx0XHRzZXR1cC5pbnRWYWx1ZSA9IGdldFZhbHVlKGV2ZW50TWFwLCBcImludFwiLCAwKTtcblx0XHRcdFx0c2V0dXAuZmxvYXRWYWx1ZSA9IGdldFZhbHVlKGV2ZW50TWFwLCBcImZsb2F0XCIsIDApO1xuXHRcdFx0XHRzZXR1cC5zdHJpbmdWYWx1ZSA9IGdldFZhbHVlKGV2ZW50TWFwLCBcInN0cmluZ1wiLCBcIlwiKTtcblx0XHRcdFx0ZGF0YS5fYXVkaW9QYXRoID0gZ2V0VmFsdWUoZXZlbnRNYXAsIFwiYXVkaW9cIiwgbnVsbCk7XG5cdFx0XHRcdGlmIChkYXRhLmF1ZGlvUGF0aCkge1xuXHRcdFx0XHRcdHNldHVwLnZvbHVtZSA9IGdldFZhbHVlKGV2ZW50TWFwLCBcInZvbHVtZVwiLCBzZXR1cC52b2x1bWUpO1xuXHRcdFx0XHRcdHNldHVwLmJhbGFuY2UgPSBnZXRWYWx1ZShldmVudE1hcCwgXCJiYWxhbmNlXCIsIHNldHVwLmJhbGFuY2UpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHNrZWxldG9uRGF0YS5ldmVudHMucHVzaChkYXRhKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBBbmltYXRpb25zLlxuXHRcdGlmIChyb290LmFuaW1hdGlvbnMpIHtcblx0XHRcdGZvciAoY29uc3QgYW5pbWF0aW9uTmFtZSBpbiByb290LmFuaW1hdGlvbnMpIHtcblx0XHRcdFx0Y29uc3QgYW5pbWF0aW9uTWFwID0gcm9vdC5hbmltYXRpb25zW2FuaW1hdGlvbk5hbWVdO1xuXHRcdFx0XHR0aGlzLnJlYWRBbmltYXRpb24oYW5pbWF0aW9uTWFwLCBhbmltYXRpb25OYW1lLCBza2VsZXRvbkRhdGEpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFNsaWRlciBhbmltYXRpb25zLlxuXHRcdGlmIChyb290LmNvbnN0cmFpbnRzKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGFuaW1hdGlvbk5hbWUgaW4gcm9vdC5jb25zdHJhaW50cykge1xuXHRcdFx0XHRjb25zdCBhbmltYXRpb25NYXAgPSByb290LmNvbnN0cmFpbnRzW2FuaW1hdGlvbk5hbWVdO1xuXHRcdFx0XHRpZiAoYW5pbWF0aW9uTWFwLnR5cGUgPT09IFwic2xpZGVyXCIpIHtcblx0XHRcdFx0XHRjb25zdCBkYXRhID0gc2tlbGV0b25EYXRhLmZpbmRDb25zdHJhaW50KGFuaW1hdGlvbk1hcC5uYW1lLCBTbGlkZXJEYXRhKVxuXHRcdFx0XHRcdGNvbnN0IGFuaW1hdGlvbk5hbWUgPSBhbmltYXRpb25NYXAuYW5pbWF0aW9uO1xuXHRcdFx0XHRcdGNvbnN0IGFuaW1hdGlvbiA9IHNrZWxldG9uRGF0YS5maW5kQW5pbWF0aW9uKGFuaW1hdGlvbk5hbWUpO1xuXHRcdFx0XHRcdGlmICghYW5pbWF0aW9uKSB0aHJvdyBuZXcgRXJyb3IoYFNsaWRlciBhbmltYXRpb24gbm90IGZvdW5kOiAke2FuaW1hdGlvbk5hbWV9YCk7XG5cdFx0XHRcdFx0Ly8gYmlvbWUtaWdub3JlIGxpbnQvc3R5bGUvbm9Ob25OdWxsQXNzZXJ0aW9uOiByZWZlcmVuY2UgcnVudGltZVxuXHRcdFx0XHRcdGRhdGEhLmFuaW1hdGlvbiA9IGFuaW1hdGlvbjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBza2VsZXRvbkRhdGE7XG5cdH1cblxuXHRwcml2YXRlIGZyb21Qcm9wZXJ0eSAodHlwZTogc3RyaW5nKTogRnJvbVByb3BlcnR5IHtcblx0XHRsZXQgZnJvbTogRnJvbVByb3BlcnR5O1xuXHRcdHN3aXRjaCAodHlwZSkge1xuXHRcdFx0Y2FzZSBcInJvdGF0ZVwiOiBmcm9tID0gbmV3IEZyb21Sb3RhdGUoKTsgYnJlYWs7XG5cdFx0XHRjYXNlIFwieFwiOiBmcm9tID0gbmV3IEZyb21YKCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSBcInlcIjogZnJvbSA9IG5ldyBGcm9tWSgpOyBicmVhaztcblx0XHRcdGNhc2UgXCJzY2FsZVhcIjogZnJvbSA9IG5ldyBGcm9tU2NhbGVYKCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSBcInNjYWxlWVwiOiBmcm9tID0gbmV3IEZyb21TY2FsZVkoKTsgYnJlYWs7XG5cdFx0XHRjYXNlIFwic2hlYXJZXCI6IGZyb20gPSBuZXcgRnJvbVNoZWFyWSgpOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0cmFuc2Zvcm0gY29uc3RyYWludCBmcm9tIHByb3BlcnR5OiAke3R5cGV9YCk7XG5cdFx0fVxuXHRcdHJldHVybiBmcm9tO1xuXHR9XG5cblx0cHJpdmF0ZSBwcm9wZXJ0eVNjYWxlICh0eXBlOiBzdHJpbmcsIHNjYWxlOiBudW1iZXIpIHtcblx0XHRzd2l0Y2ggKHR5cGUpIHtcblx0XHRcdGNhc2UgXCJ4XCI6XG5cdFx0XHRjYXNlIFwieVwiOiByZXR1cm4gc2NhbGU7XG5cdFx0XHRkZWZhdWx0OiByZXR1cm4gMTtcblx0XHR9XG5cdH1cblxuXHQvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IGl0IGlzIGFueSB1bnRpbCB3ZSBkZWZpbmUgYSBzY2hlbWFcblx0cmVhZEF0dGFjaG1lbnQgKG1hcDogYW55LCBza2luOiBTa2luLCBzbG90SW5kZXg6IG51bWJlciwgcGxhY2Vob2xkZXI6IHN0cmluZywgc2tlbGV0b25EYXRhOiBTa2VsZXRvbkRhdGEpOiBBdHRhY2htZW50IHwgbnVsbCB7XG5cdFx0Y29uc3Qgc2NhbGUgPSB0aGlzLnNjYWxlO1xuXHRcdGNvbnN0IG5hbWUgPSBnZXRWYWx1ZShtYXAsIFwibmFtZVwiLCBwbGFjZWhvbGRlcik7XG5cblx0XHRzd2l0Y2ggKGdldFZhbHVlKG1hcCwgXCJ0eXBlXCIsIFwicmVnaW9uXCIpKSB7XG5cdFx0XHRjYXNlIFwicmVnaW9uXCI6IHtcblx0XHRcdFx0Y29uc3QgcGF0aCA9IGdldFZhbHVlKG1hcCwgXCJwYXRoXCIsIG5hbWUpO1xuXHRcdFx0XHRjb25zdCBzZXF1ZW5jZSA9IHRoaXMucmVhZFNlcXVlbmNlKGdldFZhbHVlKG1hcCwgXCJzZXF1ZW5jZVwiLCBudWxsKSk7XG5cdFx0XHRcdGNvbnN0IHJlZ2lvbiA9IHRoaXMuYXR0YWNobWVudExvYWRlci5uZXdSZWdpb25BdHRhY2htZW50KHNraW4sIHBsYWNlaG9sZGVyLCBuYW1lLCBwYXRoLCBzZXF1ZW5jZSk7XG5cdFx0XHRcdGlmICghcmVnaW9uKSByZXR1cm4gbnVsbDtcblx0XHRcdFx0cmVnaW9uLnBhdGggPSBwYXRoO1xuXHRcdFx0XHRyZWdpb24ueCA9IGdldFZhbHVlKG1hcCwgXCJ4XCIsIDApICogc2NhbGU7XG5cdFx0XHRcdHJlZ2lvbi55ID0gZ2V0VmFsdWUobWFwLCBcInlcIiwgMCkgKiBzY2FsZTtcblx0XHRcdFx0cmVnaW9uLnNjYWxlWCA9IGdldFZhbHVlKG1hcCwgXCJzY2FsZVhcIiwgMSk7XG5cdFx0XHRcdHJlZ2lvbi5zY2FsZVkgPSBnZXRWYWx1ZShtYXAsIFwic2NhbGVZXCIsIDEpO1xuXHRcdFx0XHRyZWdpb24ucm90YXRpb24gPSBnZXRWYWx1ZShtYXAsIFwicm90YXRpb25cIiwgMCk7XG5cdFx0XHRcdHJlZ2lvbi53aWR0aCA9IG1hcC53aWR0aCAqIHNjYWxlO1xuXHRcdFx0XHRyZWdpb24uaGVpZ2h0ID0gbWFwLmhlaWdodCAqIHNjYWxlO1xuXG5cdFx0XHRcdGNvbnN0IGNvbG9yOiBzdHJpbmcgPSBnZXRWYWx1ZShtYXAsIFwiY29sb3JcIiwgbnVsbCk7XG5cdFx0XHRcdGlmIChjb2xvcikgcmVnaW9uLmNvbG9yLnNldEZyb21TdHJpbmcoY29sb3IpO1xuXG5cdFx0XHRcdHJlZ2lvbi51cGRhdGVTZXF1ZW5jZSgpO1xuXHRcdFx0XHRyZXR1cm4gcmVnaW9uO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBcImJvdW5kaW5nYm94XCI6IHtcblx0XHRcdFx0Y29uc3QgYm94ID0gdGhpcy5hdHRhY2htZW50TG9hZGVyLm5ld0JvdW5kaW5nQm94QXR0YWNobWVudChza2luLCBwbGFjZWhvbGRlciwgbmFtZSk7XG5cdFx0XHRcdGlmICghYm94KSByZXR1cm4gbnVsbDtcblx0XHRcdFx0dGhpcy5yZWFkVmVydGljZXMobWFwLCBib3gsIG1hcC52ZXJ0ZXhDb3VudCA8PCAxKTtcblx0XHRcdFx0Y29uc3QgY29sb3I6IHN0cmluZyA9IGdldFZhbHVlKG1hcCwgXCJjb2xvclwiLCBudWxsKTtcblx0XHRcdFx0aWYgKGNvbG9yKSBib3guY29sb3Iuc2V0RnJvbVN0cmluZyhjb2xvcik7XG5cdFx0XHRcdHJldHVybiBib3g7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwibWVzaFwiOlxuXHRcdFx0Y2FzZSBcImxpbmtlZG1lc2hcIjoge1xuXHRcdFx0XHRjb25zdCBwYXRoID0gZ2V0VmFsdWUobWFwLCBcInBhdGhcIiwgbmFtZSk7XG5cdFx0XHRcdGNvbnN0IHNlcXVlbmNlID0gdGhpcy5yZWFkU2VxdWVuY2UoZ2V0VmFsdWUobWFwLCBcInNlcXVlbmNlXCIsIG51bGwpKTtcblx0XHRcdFx0Y29uc3QgbWVzaCA9IHRoaXMuYXR0YWNobWVudExvYWRlci5uZXdNZXNoQXR0YWNobWVudChza2luLCBwbGFjZWhvbGRlciwgbmFtZSwgcGF0aCwgc2VxdWVuY2UpO1xuXHRcdFx0XHRpZiAoIW1lc2gpIHJldHVybiBudWxsO1xuXHRcdFx0XHRtZXNoLnBhdGggPSBwYXRoO1xuXG5cdFx0XHRcdGNvbnN0IGNvbG9yID0gZ2V0VmFsdWUobWFwLCBcImNvbG9yXCIsIG51bGwpO1xuXHRcdFx0XHRpZiAoY29sb3IpIG1lc2guY29sb3Iuc2V0RnJvbVN0cmluZyhjb2xvcik7XG5cblx0XHRcdFx0bWVzaC53aWR0aCA9IGdldFZhbHVlKG1hcCwgXCJ3aWR0aFwiLCAwKSAqIHNjYWxlO1xuXHRcdFx0XHRtZXNoLmhlaWdodCA9IGdldFZhbHVlKG1hcCwgXCJoZWlnaHRcIiwgMCkgKiBzY2FsZTtcblxuXHRcdFx0XHRjb25zdCBzb3VyY2U6IHN0cmluZyA9IGdldFZhbHVlKG1hcCwgXCJzb3VyY2VcIiwgbnVsbCk7XG5cdFx0XHRcdGlmIChzb3VyY2UpIHtcblx0XHRcdFx0XHRsZXQgc291cmNlSW5kZXggPSBzbG90SW5kZXg7XG5cdFx0XHRcdFx0Y29uc3Qgc2xvdCA9IGdldFZhbHVlKG1hcCwgXCJzbG90XCIsIG51bGwpO1xuXHRcdFx0XHRcdGlmIChzbG90KSB7XG5cdFx0XHRcdFx0XHRjb25zdCBzb3VyY2VTbG90ID0gc2tlbGV0b25EYXRhLmZpbmRTbG90KHNsb3QpO1xuXHRcdFx0XHRcdFx0aWYgKCFzb3VyY2VTbG90KSB0aHJvdyBuZXcgRXJyb3IoYFNvdXJjZSBtZXNoIHNsb3Qgbm90IGZvdW5kOiAke3Nsb3R9YCk7XG5cdFx0XHRcdFx0XHRzb3VyY2VJbmRleCA9IHNvdXJjZVNsb3QuaW5kZXg7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMubGlua2VkTWVzaGVzLnB1c2gobmV3IExpbmtlZE1lc2gobWVzaCwgZ2V0VmFsdWUobWFwLCBcInNraW5cIiwgbnVsbCksIHNsb3RJbmRleCwgc291cmNlSW5kZXgsIHNvdXJjZSxcblx0XHRcdFx0XHRcdGdldFZhbHVlKG1hcCwgXCJ0aW1lbGluZXNcIiwgdHJ1ZSkpKTtcblx0XHRcdFx0XHRyZXR1cm4gbWVzaDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IHV2czogQXJyYXk8bnVtYmVyPiA9IG1hcC51dnM7XG5cdFx0XHRcdHRoaXMucmVhZFZlcnRpY2VzKG1hcCwgbWVzaCwgdXZzLmxlbmd0aCk7XG5cdFx0XHRcdG1lc2gudHJpYW5nbGVzID0gbWFwLnRyaWFuZ2xlcztcblx0XHRcdFx0bWVzaC5yZWdpb25VVnMgPSB1dnM7XG5cblx0XHRcdFx0bWVzaC5lZGdlcyA9IGdldFZhbHVlKG1hcCwgXCJlZGdlc1wiLCBudWxsKTtcblx0XHRcdFx0bWVzaC5odWxsTGVuZ3RoID0gZ2V0VmFsdWUobWFwLCBcImh1bGxcIiwgMCkgKiAyO1xuXHRcdFx0XHRtZXNoLnVwZGF0ZVNlcXVlbmNlKCk7XG5cdFx0XHRcdHJldHVybiBtZXNoO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBcInBhdGhcIjoge1xuXHRcdFx0XHRjb25zdCBwYXRoID0gdGhpcy5hdHRhY2htZW50TG9hZGVyLm5ld1BhdGhBdHRhY2htZW50KHNraW4sIHBsYWNlaG9sZGVyLCBuYW1lKTtcblx0XHRcdFx0aWYgKCFwYXRoKSByZXR1cm4gbnVsbDtcblx0XHRcdFx0cGF0aC5jbG9zZWQgPSBnZXRWYWx1ZShtYXAsIFwiY2xvc2VkXCIsIGZhbHNlKTtcblx0XHRcdFx0cGF0aC5jb25zdGFudFNwZWVkID0gZ2V0VmFsdWUobWFwLCBcImNvbnN0YW50U3BlZWRcIiwgdHJ1ZSk7XG5cblx0XHRcdFx0Y29uc3QgdmVydGV4Q291bnQgPSBtYXAudmVydGV4Q291bnQ7XG5cdFx0XHRcdHRoaXMucmVhZFZlcnRpY2VzKG1hcCwgcGF0aCwgdmVydGV4Q291bnQgPDwgMSk7XG5cblx0XHRcdFx0Y29uc3QgbGVuZ3RoczogQXJyYXk8bnVtYmVyPiA9IFV0aWxzLm5ld0FycmF5KHZlcnRleENvdW50IC8gMywgMCk7XG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbWFwLmxlbmd0aHMubGVuZ3RoOyBpKyspXG5cdFx0XHRcdFx0bGVuZ3Roc1tpXSA9IG1hcC5sZW5ndGhzW2ldICogc2NhbGU7XG5cdFx0XHRcdHBhdGgubGVuZ3RocyA9IGxlbmd0aHM7XG5cblx0XHRcdFx0Y29uc3QgY29sb3I6IHN0cmluZyA9IGdldFZhbHVlKG1hcCwgXCJjb2xvclwiLCBudWxsKTtcblx0XHRcdFx0aWYgKGNvbG9yKSBwYXRoLmNvbG9yLnNldEZyb21TdHJpbmcoY29sb3IpO1xuXHRcdFx0XHRyZXR1cm4gcGF0aDtcblx0XHRcdH1cblx0XHRcdGNhc2UgXCJwb2ludFwiOiB7XG5cdFx0XHRcdGNvbnN0IHBvaW50ID0gdGhpcy5hdHRhY2htZW50TG9hZGVyLm5ld1BvaW50QXR0YWNobWVudChza2luLCBwbGFjZWhvbGRlciwgbmFtZSk7XG5cdFx0XHRcdGlmICghcG9pbnQpIHJldHVybiBudWxsO1xuXHRcdFx0XHRwb2ludC54ID0gZ2V0VmFsdWUobWFwLCBcInhcIiwgMCkgKiBzY2FsZTtcblx0XHRcdFx0cG9pbnQueSA9IGdldFZhbHVlKG1hcCwgXCJ5XCIsIDApICogc2NhbGU7XG5cdFx0XHRcdHBvaW50LnJvdGF0aW9uID0gZ2V0VmFsdWUobWFwLCBcInJvdGF0aW9uXCIsIDApO1xuXG5cdFx0XHRcdGNvbnN0IGNvbG9yID0gZ2V0VmFsdWUobWFwLCBcImNvbG9yXCIsIG51bGwpO1xuXHRcdFx0XHRpZiAoY29sb3IpIHBvaW50LmNvbG9yLnNldEZyb21TdHJpbmcoY29sb3IpO1xuXHRcdFx0XHRyZXR1cm4gcG9pbnQ7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwiY2xpcHBpbmdcIjoge1xuXHRcdFx0XHRjb25zdCBjbGlwID0gdGhpcy5hdHRhY2htZW50TG9hZGVyLm5ld0NsaXBwaW5nQXR0YWNobWVudChza2luLCBwbGFjZWhvbGRlciwgbmFtZSk7XG5cdFx0XHRcdGlmICghY2xpcCkgcmV0dXJuIG51bGw7XG5cblx0XHRcdFx0Y29uc3QgZW5kID0gZ2V0VmFsdWUobWFwLCBcImVuZFwiLCBudWxsKTtcblx0XHRcdFx0aWYgKGVuZCkgY2xpcC5lbmRTbG90ID0gc2tlbGV0b25EYXRhLmZpbmRTbG90KGVuZCk7XG5cblx0XHRcdFx0Y2xpcC5jb252ZXggPSBnZXRWYWx1ZShtYXAsIFwiY29udmV4XCIsIGZhbHNlKTtcblx0XHRcdFx0Y2xpcC5pbnZlcnNlID0gZ2V0VmFsdWUobWFwLCBcImludmVyc2VcIiwgZmFsc2UpO1xuXG5cdFx0XHRcdGNvbnN0IHZlcnRleENvdW50ID0gbWFwLnZlcnRleENvdW50O1xuXHRcdFx0XHR0aGlzLnJlYWRWZXJ0aWNlcyhtYXAsIGNsaXAsIHZlcnRleENvdW50IDw8IDEpO1xuXG5cdFx0XHRcdGNvbnN0IGNvbG9yOiBzdHJpbmcgPSBnZXRWYWx1ZShtYXAsIFwiY29sb3JcIiwgbnVsbCk7XG5cdFx0XHRcdGlmIChjb2xvcikgY2xpcC5jb2xvci5zZXRGcm9tU3RyaW5nKGNvbG9yKTtcblx0XHRcdFx0cmV0dXJuIGNsaXA7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0cmVhZFNlcXVlbmNlIChtYXA6IG9iamVjdCkge1xuXHRcdGlmIChtYXAgPT0gbnVsbCkgcmV0dXJuIG5ldyBTZXF1ZW5jZSgxLCBmYWxzZSk7XG5cdFx0Y29uc3Qgc2VxdWVuY2UgPSBuZXcgU2VxdWVuY2UoZ2V0VmFsdWUobWFwLCBcImNvdW50XCIsIDApLCB0cnVlKTtcblx0XHRzZXF1ZW5jZS5zdGFydCA9IGdldFZhbHVlKG1hcCwgXCJzdGFydFwiLCAxKTtcblx0XHRzZXF1ZW5jZS5kaWdpdHMgPSBnZXRWYWx1ZShtYXAsIFwiZGlnaXRzXCIsIDApO1xuXHRcdHNlcXVlbmNlLnNldHVwSW5kZXggPSBnZXRWYWx1ZShtYXAsIFwic2V0dXBcIiwgMCk7XG5cdFx0cmV0dXJuIHNlcXVlbmNlO1xuXHR9XG5cblx0Ly8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiBpdCBpcyBhbnkgdW50aWwgd2UgZGVmaW5lIGEgc2NoZW1hXG5cdHJlYWRWZXJ0aWNlcyAobWFwOiBhbnksIGF0dGFjaG1lbnQ6IFZlcnRleEF0dGFjaG1lbnQsIHZlcnRpY2VzTGVuZ3RoOiBudW1iZXIpIHtcblx0XHRjb25zdCBzY2FsZSA9IHRoaXMuc2NhbGU7XG5cdFx0YXR0YWNobWVudC53b3JsZFZlcnRpY2VzTGVuZ3RoID0gdmVydGljZXNMZW5ndGg7XG5cdFx0Y29uc3QgdmVydGljZXM6IEFycmF5PG51bWJlcj4gPSBtYXAudmVydGljZXM7XG5cdFx0aWYgKHZlcnRpY2VzTGVuZ3RoID09PSB2ZXJ0aWNlcy5sZW5ndGgpIHtcblx0XHRcdGNvbnN0IHNjYWxlZFZlcnRpY2VzID0gVXRpbHMudG9GbG9hdEFycmF5KHZlcnRpY2VzKTtcblx0XHRcdGlmIChzY2FsZSAhPT0gMSkge1xuXHRcdFx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHZlcnRpY2VzLmxlbmd0aDsgaSA8IG47IGkrKylcblx0XHRcdFx0XHRzY2FsZWRWZXJ0aWNlc1tpXSAqPSBzY2FsZTtcblx0XHRcdH1cblx0XHRcdGF0dGFjaG1lbnQudmVydGljZXMgPSBzY2FsZWRWZXJ0aWNlcztcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3Qgd2VpZ2h0czogbnVtYmVyW10gPSBbXTtcblx0XHRjb25zdCBib25lczogbnVtYmVyW10gPSBbXTtcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHZlcnRpY2VzLmxlbmd0aDsgaSA8IG47KSB7XG5cdFx0XHRjb25zdCBib25lQ291bnQgPSB2ZXJ0aWNlc1tpKytdO1xuXHRcdFx0Ym9uZXMucHVzaChib25lQ291bnQpO1xuXHRcdFx0Zm9yIChsZXQgbm4gPSBpICsgYm9uZUNvdW50ICogNDsgaSA8IG5uOyBpICs9IDQpIHtcblx0XHRcdFx0Ym9uZXMucHVzaCh2ZXJ0aWNlc1tpXSk7XG5cdFx0XHRcdHdlaWdodHMucHVzaCh2ZXJ0aWNlc1tpICsgMV0gKiBzY2FsZSk7XG5cdFx0XHRcdHdlaWdodHMucHVzaCh2ZXJ0aWNlc1tpICsgMl0gKiBzY2FsZSk7XG5cdFx0XHRcdHdlaWdodHMucHVzaCh2ZXJ0aWNlc1tpICsgM10pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRhdHRhY2htZW50LmJvbmVzID0gYm9uZXM7XG5cdFx0YXR0YWNobWVudC52ZXJ0aWNlcyA9IFV0aWxzLnRvRmxvYXRBcnJheSh3ZWlnaHRzKTtcblx0fVxuXG5cdC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogaXQgaXMgYW55IHVudGlsZSB3ZSBkZWZpbmUgYSBzY2hlbWFcblx0cmVhZEFuaW1hdGlvbiAobWFwOiBhbnksIG5hbWU6IHN0cmluZywgc2tlbGV0b25EYXRhOiBTa2VsZXRvbkRhdGEpIHtcblx0XHRjb25zdCBzY2FsZSA9IHRoaXMuc2NhbGU7XG5cdFx0Y29uc3QgdGltZWxpbmVzOiBUaW1lbGluZVtdID0gW107XG5cblx0XHQvLyBTbG90IHRpbWVsaW5lcy5cblx0XHRpZiAobWFwLnNsb3RzKSB7XG5cdFx0XHRmb3IgKGNvbnN0IHNsb3ROYW1lIGluIG1hcC5zbG90cykge1xuXHRcdFx0XHRjb25zdCBzbG90TWFwID0gbWFwLnNsb3RzW3Nsb3ROYW1lXTtcblx0XHRcdFx0Y29uc3Qgc2xvdCA9IHNrZWxldG9uRGF0YS5maW5kU2xvdChzbG90TmFtZSk7XG5cdFx0XHRcdGlmICghc2xvdCkgdGhyb3cgbmV3IEVycm9yKGBTbG90IG5vdCBmb3VuZDogJHtzbG90TmFtZX1gKTtcblx0XHRcdFx0Y29uc3Qgc2xvdEluZGV4ID0gc2xvdC5pbmRleDtcblx0XHRcdFx0Zm9yIChjb25zdCB0aW1lbGluZU5hbWUgaW4gc2xvdE1hcCkge1xuXHRcdFx0XHRcdGNvbnN0IHRpbWVsaW5lTWFwID0gc2xvdE1hcFt0aW1lbGluZU5hbWVdO1xuXHRcdFx0XHRcdGlmICghdGltZWxpbmVNYXApIGNvbnRpbnVlO1xuXHRcdFx0XHRcdGNvbnN0IGZyYW1lcyA9IHRpbWVsaW5lTWFwLmxlbmd0aDtcblxuXHRcdFx0XHRcdHN3aXRjaCAodGltZWxpbmVOYW1lKSB7XG5cdFx0XHRcdFx0XHRjYXNlIFwiYXR0YWNobWVudFwiOiB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHRpbWVsaW5lID0gbmV3IEF0dGFjaG1lbnRUaW1lbGluZShmcmFtZXMsIHNsb3RJbmRleCk7XG5cdFx0XHRcdFx0XHRcdGZvciAobGV0IGZyYW1lID0gMDsgZnJhbWUgPCBmcmFtZXM7IGZyYW1lKyspIHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBrZXlNYXAgPSB0aW1lbGluZU1hcFtmcmFtZV07XG5cdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2V0RnJhbWUoZnJhbWUsIGdldFZhbHVlKGtleU1hcCwgXCJ0aW1lXCIsIDApLCBnZXRWYWx1ZShrZXlNYXAsIFwibmFtZVwiLCBudWxsKSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGNhc2UgXCJyZ2JhXCI6IHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgdGltZWxpbmUgPSBuZXcgUkdCQVRpbWVsaW5lKGZyYW1lcywgZnJhbWVzIDw8IDIsIHNsb3RJbmRleCk7XG5cdFx0XHRcdFx0XHRcdGxldCBrZXlNYXAgPSB0aW1lbGluZU1hcFswXTtcblx0XHRcdFx0XHRcdFx0bGV0IHRpbWUgPSBnZXRWYWx1ZShrZXlNYXAsIFwidGltZVwiLCAwKTtcblx0XHRcdFx0XHRcdFx0bGV0IGNvbG9yID0gQ29sb3IuZnJvbVN0cmluZyhrZXlNYXAuY29sb3IpO1xuXG5cdFx0XHRcdFx0XHRcdGZvciAobGV0IGZyYW1lID0gMCwgYmV6aWVyID0gMDsgOyBmcmFtZSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2V0RnJhbWUoZnJhbWUsIHRpbWUsIGNvbG9yLnIsIGNvbG9yLmcsIGNvbG9yLmIsIGNvbG9yLmEpO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IG5leHRNYXAgPSB0aW1lbGluZU1hcFtmcmFtZSArIDFdO1xuXHRcdFx0XHRcdFx0XHRcdGlmICghbmV4dE1hcCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2hyaW5rKGJlemllcik7XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgdGltZTIgPSBnZXRWYWx1ZShuZXh0TWFwLCBcInRpbWVcIiwgMCk7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgbmV3Q29sb3IgPSBDb2xvci5mcm9tU3RyaW5nKG5leHRNYXAuY29sb3IpO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGN1cnZlID0ga2V5TWFwLmN1cnZlO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChjdXJ2ZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMCwgdGltZSwgdGltZTIsIGNvbG9yLnIsIG5ld0NvbG9yLnIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMSwgdGltZSwgdGltZTIsIGNvbG9yLmcsIG5ld0NvbG9yLmcsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMiwgdGltZSwgdGltZTIsIGNvbG9yLmIsIG5ld0NvbG9yLmIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMywgdGltZSwgdGltZTIsIGNvbG9yLmEsIG5ld0NvbG9yLmEsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR0aW1lID0gdGltZTI7XG5cdFx0XHRcdFx0XHRcdFx0Y29sb3IgPSBuZXdDb2xvcjtcblx0XHRcdFx0XHRcdFx0XHRrZXlNYXAgPSBuZXh0TWFwO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGNhc2UgXCJyZ2JcIjoge1xuXHRcdFx0XHRcdFx0XHRjb25zdCB0aW1lbGluZSA9IG5ldyBSR0JUaW1lbGluZShmcmFtZXMsIGZyYW1lcyAqIDMsIHNsb3RJbmRleCk7XG5cdFx0XHRcdFx0XHRcdGxldCBrZXlNYXAgPSB0aW1lbGluZU1hcFswXTtcblx0XHRcdFx0XHRcdFx0bGV0IHRpbWUgPSBnZXRWYWx1ZShrZXlNYXAsIFwidGltZVwiLCAwKTtcblx0XHRcdFx0XHRcdFx0bGV0IGNvbG9yID0gQ29sb3IuZnJvbVN0cmluZyhrZXlNYXAuY29sb3IpO1xuXG5cdFx0XHRcdFx0XHRcdGZvciAobGV0IGZyYW1lID0gMCwgYmV6aWVyID0gMDsgOyBmcmFtZSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2V0RnJhbWUoZnJhbWUsIHRpbWUsIGNvbG9yLnIsIGNvbG9yLmcsIGNvbG9yLmIpO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IG5leHRNYXAgPSB0aW1lbGluZU1hcFtmcmFtZSArIDFdO1xuXHRcdFx0XHRcdFx0XHRcdGlmICghbmV4dE1hcCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2hyaW5rKGJlemllcik7XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgdGltZTIgPSBnZXRWYWx1ZShuZXh0TWFwLCBcInRpbWVcIiwgMCk7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgbmV3Q29sb3IgPSBDb2xvci5mcm9tU3RyaW5nKG5leHRNYXAuY29sb3IpO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGN1cnZlID0ga2V5TWFwLmN1cnZlO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChjdXJ2ZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMCwgdGltZSwgdGltZTIsIGNvbG9yLnIsIG5ld0NvbG9yLnIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMSwgdGltZSwgdGltZTIsIGNvbG9yLmcsIG5ld0NvbG9yLmcsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMiwgdGltZSwgdGltZTIsIGNvbG9yLmIsIG5ld0NvbG9yLmIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR0aW1lID0gdGltZTI7XG5cdFx0XHRcdFx0XHRcdFx0Y29sb3IgPSBuZXdDb2xvcjtcblx0XHRcdFx0XHRcdFx0XHRrZXlNYXAgPSBuZXh0TWFwO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGNhc2UgXCJhbHBoYVwiOiB7XG5cdFx0XHRcdFx0XHRcdHJlYWRUaW1lbGluZTEodGltZWxpbmVzLCB0aW1lbGluZU1hcCwgbmV3IEFscGhhVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMsIHNsb3RJbmRleCksIDAsIDEpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGNhc2UgXCJyZ2JhMlwiOiB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHRpbWVsaW5lID0gbmV3IFJHQkEyVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMgKiA3LCBzbG90SW5kZXgpO1xuXG5cdFx0XHRcdFx0XHRcdGxldCBrZXlNYXAgPSB0aW1lbGluZU1hcFswXTtcblx0XHRcdFx0XHRcdFx0bGV0IHRpbWUgPSBnZXRWYWx1ZShrZXlNYXAsIFwidGltZVwiLCAwKTtcblx0XHRcdFx0XHRcdFx0bGV0IGNvbG9yID0gQ29sb3IuZnJvbVN0cmluZyhrZXlNYXAubGlnaHQpO1xuXHRcdFx0XHRcdFx0XHRsZXQgY29sb3IyID0gQ29sb3IuZnJvbVN0cmluZyhrZXlNYXAuZGFyayk7XG5cblx0XHRcdFx0XHRcdFx0Zm9yIChsZXQgZnJhbWUgPSAwLCBiZXppZXIgPSAwOyA7IGZyYW1lKyspIHtcblx0XHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgY29sb3IuciwgY29sb3IuZywgY29sb3IuYiwgY29sb3IuYSwgY29sb3IyLnIsIGNvbG9yMi5nLCBjb2xvcjIuYik7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgbmV4dE1hcCA9IHRpbWVsaW5lTWFwW2ZyYW1lICsgMV07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCFuZXh0TWFwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zaHJpbmsoYmV6aWVyKTtcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRjb25zdCB0aW1lMiA9IGdldFZhbHVlKG5leHRNYXAsIFwidGltZVwiLCAwKTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBuZXdDb2xvciA9IENvbG9yLmZyb21TdHJpbmcobmV4dE1hcC5saWdodCk7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgbmV3Q29sb3IyID0gQ29sb3IuZnJvbVN0cmluZyhuZXh0TWFwLmRhcmspO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGN1cnZlID0ga2V5TWFwLmN1cnZlO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChjdXJ2ZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMCwgdGltZSwgdGltZTIsIGNvbG9yLnIsIG5ld0NvbG9yLnIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMSwgdGltZSwgdGltZTIsIGNvbG9yLmcsIG5ld0NvbG9yLmcsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMiwgdGltZSwgdGltZTIsIGNvbG9yLmIsIG5ld0NvbG9yLmIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMywgdGltZSwgdGltZTIsIGNvbG9yLmEsIG5ld0NvbG9yLmEsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgNCwgdGltZSwgdGltZTIsIGNvbG9yMi5yLCBuZXdDb2xvcjIuciwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCA1LCB0aW1lLCB0aW1lMiwgY29sb3IyLmcsIG5ld0NvbG9yMi5nLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDYsIHRpbWUsIHRpbWUyLCBjb2xvcjIuYiwgbmV3Q29sb3IyLmIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR0aW1lID0gdGltZTI7XG5cdFx0XHRcdFx0XHRcdFx0Y29sb3IgPSBuZXdDb2xvcjtcblx0XHRcdFx0XHRcdFx0XHRjb2xvcjIgPSBuZXdDb2xvcjI7XG5cdFx0XHRcdFx0XHRcdFx0a2V5TWFwID0gbmV4dE1hcDtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjYXNlIFwicmdiMlwiOiB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHRpbWVsaW5lID0gbmV3IFJHQjJUaW1lbGluZShmcmFtZXMsIGZyYW1lcyAqIDYsIHNsb3RJbmRleCk7XG5cblx0XHRcdFx0XHRcdFx0bGV0IGtleU1hcCA9IHRpbWVsaW5lTWFwWzBdO1xuXHRcdFx0XHRcdFx0XHRsZXQgdGltZSA9IGdldFZhbHVlKGtleU1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0XHRsZXQgY29sb3IgPSBDb2xvci5mcm9tU3RyaW5nKGtleU1hcC5saWdodCk7XG5cdFx0XHRcdFx0XHRcdGxldCBjb2xvcjIgPSBDb2xvci5mcm9tU3RyaW5nKGtleU1hcC5kYXJrKTtcblxuXHRcdFx0XHRcdFx0XHRmb3IgKGxldCBmcmFtZSA9IDAsIGJlemllciA9IDA7IDsgZnJhbWUrKykge1xuXHRcdFx0XHRcdFx0XHRcdHRpbWVsaW5lLnNldEZyYW1lKGZyYW1lLCB0aW1lLCBjb2xvci5yLCBjb2xvci5nLCBjb2xvci5iLCBjb2xvcjIuciwgY29sb3IyLmcsIGNvbG9yMi5iKTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBuZXh0TWFwID0gdGltZWxpbmVNYXBbZnJhbWUgKyAxXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIW5leHRNYXApIHtcblx0XHRcdFx0XHRcdFx0XHRcdHRpbWVsaW5lLnNocmluayhiZXppZXIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHRpbWUyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IG5ld0NvbG9yID0gQ29sb3IuZnJvbVN0cmluZyhuZXh0TWFwLmxpZ2h0KTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBuZXdDb2xvcjIgPSBDb2xvci5mcm9tU3RyaW5nKG5leHRNYXAuZGFyayk7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgY3VydmUgPSBrZXlNYXAuY3VydmU7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGN1cnZlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAwLCB0aW1lLCB0aW1lMiwgY29sb3IuciwgbmV3Q29sb3IuciwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAxLCB0aW1lLCB0aW1lMiwgY29sb3IuZywgbmV3Q29sb3IuZywgMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAyLCB0aW1lLCB0aW1lMiwgY29sb3IuYiwgbmV3Q29sb3IuYiwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAzLCB0aW1lLCB0aW1lMiwgY29sb3IyLnIsIG5ld0NvbG9yMi5yLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDQsIHRpbWUsIHRpbWUyLCBjb2xvcjIuZywgbmV3Q29sb3IyLmcsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgNSwgdGltZSwgdGltZTIsIGNvbG9yMi5iLCBuZXdDb2xvcjIuYiwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHRpbWUgPSB0aW1lMjtcblx0XHRcdFx0XHRcdFx0XHRjb2xvciA9IG5ld0NvbG9yO1xuXHRcdFx0XHRcdFx0XHRcdGNvbG9yMiA9IG5ld0NvbG9yMjtcblx0XHRcdFx0XHRcdFx0XHRrZXlNYXAgPSBuZXh0TWFwO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0aW1lbGluZSB0eXBlIGZvciBhIHNsb3Q6ICR7dGltZWxpbmVNYXAubmFtZX0gKCR7c2xvdE1hcC5uYW1lfSlgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBCb25lIHRpbWVsaW5lcy5cblx0XHRpZiAobWFwLmJvbmVzKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGJvbmVOYW1lIGluIG1hcC5ib25lcykge1xuXHRcdFx0XHRjb25zdCBib25lTWFwID0gbWFwLmJvbmVzW2JvbmVOYW1lXTtcblx0XHRcdFx0Y29uc3QgYm9uZSA9IHNrZWxldG9uRGF0YS5maW5kQm9uZShib25lTmFtZSk7XG5cdFx0XHRcdGlmICghYm9uZSkgdGhyb3cgbmV3IEVycm9yKGBCb25lIG5vdCBmb3VuZDogJHtib25lTmFtZX1gKTtcblx0XHRcdFx0Y29uc3QgYm9uZUluZGV4ID0gYm9uZS5pbmRleDtcblx0XHRcdFx0Zm9yIChjb25zdCB0aW1lbGluZU5hbWUgaW4gYm9uZU1hcCkge1xuXHRcdFx0XHRcdGNvbnN0IHRpbWVsaW5lTWFwID0gYm9uZU1hcFt0aW1lbGluZU5hbWVdO1xuXHRcdFx0XHRcdGNvbnN0IGZyYW1lcyA9IHRpbWVsaW5lTWFwLmxlbmd0aDtcblx0XHRcdFx0XHRpZiAoZnJhbWVzID09PSAwKSBjb250aW51ZTtcblxuXHRcdFx0XHRcdHN3aXRjaCAodGltZWxpbmVOYW1lKSB7XG5cdFx0XHRcdFx0XHRjYXNlIFwicm90YXRlXCI6IHJlYWRUaW1lbGluZTEodGltZWxpbmVzLCB0aW1lbGluZU1hcCwgbmV3IFJvdGF0ZVRpbWVsaW5lKGZyYW1lcywgZnJhbWVzLCBib25lSW5kZXgpLCAwLCAxKTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlIFwidHJhbnNsYXRlXCI6IHJlYWRUaW1lbGluZTIodGltZWxpbmVzLCB0aW1lbGluZU1hcCwgbmV3IFRyYW5zbGF0ZVRpbWVsaW5lKGZyYW1lcywgZnJhbWVzIDw8IDEsIGJvbmVJbmRleCksIFwieFwiLCBcInlcIiwgMCwgc2NhbGUpOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgXCJ0cmFuc2xhdGV4XCI6IHJlYWRUaW1lbGluZTEodGltZWxpbmVzLCB0aW1lbGluZU1hcCwgbmV3IFRyYW5zbGF0ZVhUaW1lbGluZShmcmFtZXMsIGZyYW1lcywgYm9uZUluZGV4KSwgMCwgc2NhbGUpOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgXCJ0cmFuc2xhdGV5XCI6IHJlYWRUaW1lbGluZTEodGltZWxpbmVzLCB0aW1lbGluZU1hcCwgbmV3IFRyYW5zbGF0ZVlUaW1lbGluZShmcmFtZXMsIGZyYW1lcywgYm9uZUluZGV4KSwgMCwgc2NhbGUpOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgXCJzY2FsZVwiOiByZWFkVGltZWxpbmUyKHRpbWVsaW5lcywgdGltZWxpbmVNYXAsIG5ldyBTY2FsZVRpbWVsaW5lKGZyYW1lcywgZnJhbWVzIDw8IDEsIGJvbmVJbmRleCksIFwieFwiLCBcInlcIiwgMSwgMSk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSBcInNjYWxleFwiOiByZWFkVGltZWxpbmUxKHRpbWVsaW5lcywgdGltZWxpbmVNYXAsIG5ldyBTY2FsZVhUaW1lbGluZShmcmFtZXMsIGZyYW1lcywgYm9uZUluZGV4KSwgMSwgMSk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSBcInNjYWxleVwiOiByZWFkVGltZWxpbmUxKHRpbWVsaW5lcywgdGltZWxpbmVNYXAsIG5ldyBTY2FsZVlUaW1lbGluZShmcmFtZXMsIGZyYW1lcywgYm9uZUluZGV4KSwgMSwgMSk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSBcInNoZWFyXCI6IHJlYWRUaW1lbGluZTIodGltZWxpbmVzLCB0aW1lbGluZU1hcCwgbmV3IFNoZWFyVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMgPDwgMSwgYm9uZUluZGV4KSwgXCJ4XCIsIFwieVwiLCAwLCAxKTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlIFwic2hlYXJ4XCI6IHJlYWRUaW1lbGluZTEodGltZWxpbmVzLCB0aW1lbGluZU1hcCwgbmV3IFNoZWFyWFRpbWVsaW5lKGZyYW1lcywgZnJhbWVzLCBib25lSW5kZXgpLCAwLCAxKTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlIFwic2hlYXJ5XCI6IHJlYWRUaW1lbGluZTEodGltZWxpbmVzLCB0aW1lbGluZU1hcCwgbmV3IFNoZWFyWVRpbWVsaW5lKGZyYW1lcywgZnJhbWVzLCBib25lSW5kZXgpLCAwLCAxKTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlIFwiaW5oZXJpdFwiOiB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHRpbWVsaW5lID0gbmV3IEluaGVyaXRUaW1lbGluZShmcmFtZXMsIGJvbmUuaW5kZXgpO1xuXHRcdFx0XHRcdFx0XHRmb3IgKGxldCBmcmFtZSA9IDA7IGZyYW1lIDwgdGltZWxpbmVNYXAubGVuZ3RoOyBmcmFtZSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgYUZyYW1lID0gdGltZWxpbmVNYXBbZnJhbWVdO1xuXHRcdFx0XHRcdFx0XHRcdHRpbWVsaW5lLnNldEZyYW1lKGZyYW1lLCBnZXRWYWx1ZShhRnJhbWUsIFwidGltZVwiLCAwKSwgVXRpbHMuZW51bVZhbHVlKEluaGVyaXQsIGdldFZhbHVlKGFGcmFtZSwgXCJpbmhlcml0XCIsIFwiTm9ybWFsXCIpKSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0aW1lbGluZSB0eXBlIGZvciBhIGJvbmU6ICR7dGltZWxpbmVNYXAubmFtZX0gKCR7Ym9uZU1hcC5uYW1lfSlgKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIElLIGNvbnN0cmFpbnQgdGltZWxpbmVzLlxuXHRcdGlmIChtYXAuaWspIHtcblx0XHRcdGZvciAoY29uc3QgY29uc3RyYWludE5hbWUgaW4gbWFwLmlrKSB7XG5cdFx0XHRcdGNvbnN0IGNvbnN0cmFpbnRNYXAgPSBtYXAuaWtbY29uc3RyYWludE5hbWVdO1xuXHRcdFx0XHRsZXQga2V5TWFwID0gY29uc3RyYWludE1hcFswXTtcblx0XHRcdFx0aWYgKCFrZXlNYXApIGNvbnRpbnVlO1xuXG5cdFx0XHRcdGNvbnN0IGNvbnN0cmFpbnQgPSBza2VsZXRvbkRhdGEuZmluZENvbnN0cmFpbnQoY29uc3RyYWludE5hbWUsIElrQ29uc3RyYWludERhdGEpO1xuXHRcdFx0XHRpZiAoIWNvbnN0cmFpbnQpIHRocm93IG5ldyBFcnJvcihgSUsgQ29uc3RyYWludCBub3QgZm91bmQ6ICR7Y29uc3RyYWludE5hbWV9YCk7XG5cdFx0XHRcdGNvbnN0IHRpbWVsaW5lID0gbmV3IElrQ29uc3RyYWludFRpbWVsaW5lKGNvbnN0cmFpbnRNYXAubGVuZ3RoLCBjb25zdHJhaW50TWFwLmxlbmd0aCA8PCAxLFxuXHRcdFx0XHRcdHNrZWxldG9uRGF0YS5jb25zdHJhaW50cy5pbmRleE9mKGNvbnN0cmFpbnQpKTtcblxuXHRcdFx0XHRsZXQgdGltZSA9IGdldFZhbHVlKGtleU1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRsZXQgbWl4ID0gZ2V0VmFsdWUoa2V5TWFwLCBcIm1peFwiLCAxKTtcblx0XHRcdFx0bGV0IHNvZnRuZXNzID0gZ2V0VmFsdWUoa2V5TWFwLCBcInNvZnRuZXNzXCIsIDApICogc2NhbGU7XG5cblx0XHRcdFx0Zm9yIChsZXQgZnJhbWUgPSAwLCBiZXppZXIgPSAwOyA7IGZyYW1lKyspIHtcblx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgbWl4LCBzb2Z0bmVzcywgZ2V0VmFsdWUoa2V5TWFwLCBcImJlbmRQb3NpdGl2ZVwiLCB0cnVlKSA/IDEgOiAtMSwgZ2V0VmFsdWUoa2V5TWFwLCBcImNvbXByZXNzXCIsIGZhbHNlKSwgZ2V0VmFsdWUoa2V5TWFwLCBcInN0cmV0Y2hcIiwgZmFsc2UpKTtcblx0XHRcdFx0XHRjb25zdCBuZXh0TWFwID0gY29uc3RyYWludE1hcFtmcmFtZSArIDFdO1xuXHRcdFx0XHRcdGlmICghbmV4dE1hcCkge1xuXHRcdFx0XHRcdFx0dGltZWxpbmUuc2hyaW5rKGJlemllcik7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRjb25zdCB0aW1lMiA9IGdldFZhbHVlKG5leHRNYXAsIFwidGltZVwiLCAwKTtcblx0XHRcdFx0XHRjb25zdCBtaXgyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJtaXhcIiwgMSk7XG5cdFx0XHRcdFx0Y29uc3Qgc29mdG5lc3MyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJzb2Z0bmVzc1wiLCAwKSAqIHNjYWxlO1xuXHRcdFx0XHRcdGNvbnN0IGN1cnZlID0ga2V5TWFwLmN1cnZlO1xuXHRcdFx0XHRcdGlmIChjdXJ2ZSkge1xuXHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMCwgdGltZSwgdGltZTIsIG1peCwgbWl4MiwgMSk7XG5cdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAxLCB0aW1lLCB0aW1lMiwgc29mdG5lc3MsIHNvZnRuZXNzMiwgc2NhbGUpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHRpbWUgPSB0aW1lMjtcblx0XHRcdFx0XHRtaXggPSBtaXgyO1xuXHRcdFx0XHRcdHNvZnRuZXNzID0gc29mdG5lc3MyO1xuXHRcdFx0XHRcdGtleU1hcCA9IG5leHRNYXA7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFRyYW5zZm9ybSBjb25zdHJhaW50IHRpbWVsaW5lcy5cblx0XHRpZiAobWFwLnRyYW5zZm9ybSkge1xuXHRcdFx0Zm9yIChjb25zdCBjb25zdHJhaW50TmFtZSBpbiBtYXAudHJhbnNmb3JtKSB7XG5cdFx0XHRcdGNvbnN0IHRpbWVsaW5lTWFwID0gbWFwLnRyYW5zZm9ybVtjb25zdHJhaW50TmFtZV07XG5cdFx0XHRcdGxldCBrZXlNYXAgPSB0aW1lbGluZU1hcFswXTtcblx0XHRcdFx0aWYgKCFrZXlNYXApIGNvbnRpbnVlO1xuXG5cdFx0XHRcdGNvbnN0IGNvbnN0cmFpbnQgPSBza2VsZXRvbkRhdGEuZmluZENvbnN0cmFpbnQoY29uc3RyYWludE5hbWUsIFRyYW5zZm9ybUNvbnN0cmFpbnREYXRhKTtcblx0XHRcdFx0aWYgKCFjb25zdHJhaW50KSB0aHJvdyBuZXcgRXJyb3IoYFRyYW5zZm9ybSBjb25zdHJhaW50IG5vdCBmb3VuZDogJHtjb25zdHJhaW50TmFtZX1gKTtcblx0XHRcdFx0Y29uc3QgdGltZWxpbmUgPSBuZXcgVHJhbnNmb3JtQ29uc3RyYWludFRpbWVsaW5lKHRpbWVsaW5lTWFwLmxlbmd0aCwgdGltZWxpbmVNYXAubGVuZ3RoICogNixcblx0XHRcdFx0XHRza2VsZXRvbkRhdGEuY29uc3RyYWludHMuaW5kZXhPZihjb25zdHJhaW50KSk7XG5cblx0XHRcdFx0bGV0IHRpbWUgPSBnZXRWYWx1ZShrZXlNYXAsIFwidGltZVwiLCAwKTtcblx0XHRcdFx0bGV0IG1peFJvdGF0ZSA9IGdldFZhbHVlKGtleU1hcCwgXCJtaXhSb3RhdGVcIiwgMSk7XG5cdFx0XHRcdGxldCBtaXhYID0gZ2V0VmFsdWUoa2V5TWFwLCBcIm1peFhcIiwgMSksIG1peFkgPSBnZXRWYWx1ZShrZXlNYXAsIFwibWl4WVwiLCBtaXhYKTtcblx0XHRcdFx0bGV0IG1peFNjYWxlWCA9IGdldFZhbHVlKGtleU1hcCwgXCJtaXhTY2FsZVhcIiwgMSksIG1peFNjYWxlWSA9IGdldFZhbHVlKGtleU1hcCwgXCJtaXhTY2FsZVlcIiwgMSk7XG5cdFx0XHRcdGNvbnN0IG1peFNoZWFyWSA9IGdldFZhbHVlKGtleU1hcCwgXCJtaXhTaGVhcllcIiwgMSk7XG5cblx0XHRcdFx0Zm9yIChsZXQgZnJhbWUgPSAwLCBiZXppZXIgPSAwOyA7IGZyYW1lKyspIHtcblx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgbWl4Um90YXRlLCBtaXhYLCBtaXhZLCBtaXhTY2FsZVgsIG1peFNjYWxlWSwgbWl4U2hlYXJZKTtcblx0XHRcdFx0XHRjb25zdCBuZXh0TWFwID0gdGltZWxpbmVNYXBbZnJhbWUgKyAxXTtcblx0XHRcdFx0XHRpZiAoIW5leHRNYXApIHtcblx0XHRcdFx0XHRcdHRpbWVsaW5lLnNocmluayhiZXppZXIpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Y29uc3QgdGltZTIgPSBnZXRWYWx1ZShuZXh0TWFwLCBcInRpbWVcIiwgMCk7XG5cdFx0XHRcdFx0Y29uc3QgbWl4Um90YXRlMiA9IGdldFZhbHVlKG5leHRNYXAsIFwibWl4Um90YXRlXCIsIDEpO1xuXHRcdFx0XHRcdGNvbnN0IG1peFgyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJtaXhYXCIsIDEpLCBtaXhZMiA9IGdldFZhbHVlKG5leHRNYXAsIFwibWl4WVwiLCBtaXhYMik7XG5cdFx0XHRcdFx0Y29uc3QgbWl4U2NhbGVYMiA9IGdldFZhbHVlKG5leHRNYXAsIFwibWl4U2NhbGVYXCIsIDEpLCBtaXhTY2FsZVkyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJtaXhTY2FsZVlcIiwgMSk7XG5cdFx0XHRcdFx0Y29uc3QgbWl4U2hlYXJZMiA9IGdldFZhbHVlKG5leHRNYXAsIFwibWl4U2hlYXJZXCIsIDEpO1xuXHRcdFx0XHRcdGNvbnN0IGN1cnZlID0ga2V5TWFwLmN1cnZlO1xuXHRcdFx0XHRcdGlmIChjdXJ2ZSkge1xuXHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMCwgdGltZSwgdGltZTIsIG1peFJvdGF0ZSwgbWl4Um90YXRlMiwgMSk7XG5cdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAxLCB0aW1lLCB0aW1lMiwgbWl4WCwgbWl4WDIsIDEpO1xuXHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMiwgdGltZSwgdGltZTIsIG1peFksIG1peFkyLCAxKTtcblx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDMsIHRpbWUsIHRpbWUyLCBtaXhTY2FsZVgsIG1peFNjYWxlWDIsIDEpO1xuXHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgNCwgdGltZSwgdGltZTIsIG1peFNjYWxlWSwgbWl4U2NhbGVZMiwgMSk7XG5cdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCA1LCB0aW1lLCB0aW1lMiwgbWl4U2hlYXJZLCBtaXhTaGVhclkyLCAxKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHR0aW1lID0gdGltZTI7XG5cdFx0XHRcdFx0bWl4Um90YXRlID0gbWl4Um90YXRlMjtcblx0XHRcdFx0XHRtaXhYID0gbWl4WDI7XG5cdFx0XHRcdFx0bWl4WSA9IG1peFkyO1xuXHRcdFx0XHRcdG1peFNjYWxlWCA9IG1peFNjYWxlWDI7XG5cdFx0XHRcdFx0bWl4U2NhbGVZID0gbWl4U2NhbGVZMjtcblx0XHRcdFx0XHRtaXhTY2FsZVggPSBtaXhTY2FsZVgyO1xuXHRcdFx0XHRcdGtleU1hcCA9IG5leHRNYXA7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFBhdGggY29uc3RyYWludCB0aW1lbGluZXMuXG5cdFx0aWYgKG1hcC5wYXRoKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGNvbnN0cmFpbnROYW1lIGluIG1hcC5wYXRoKSB7XG5cdFx0XHRcdGNvbnN0IGNvbnN0cmFpbnRNYXAgPSBtYXAucGF0aFtjb25zdHJhaW50TmFtZV07XG5cdFx0XHRcdGNvbnN0IGNvbnN0cmFpbnQgPSBza2VsZXRvbkRhdGEuZmluZENvbnN0cmFpbnQoY29uc3RyYWludE5hbWUsIFBhdGhDb25zdHJhaW50RGF0YSk7XG5cdFx0XHRcdGlmICghY29uc3RyYWludCkgdGhyb3cgbmV3IEVycm9yKGBQYXRoIGNvbnN0cmFpbnQgbm90IGZvdW5kOiAke2NvbnN0cmFpbnROYW1lfWApO1xuXHRcdFx0XHRjb25zdCBpbmRleCA9IHNrZWxldG9uRGF0YS5jb25zdHJhaW50cy5pbmRleE9mKGNvbnN0cmFpbnQpO1xuXHRcdFx0XHRmb3IgKGNvbnN0IHRpbWVsaW5lTmFtZSBpbiBjb25zdHJhaW50TWFwKSB7XG5cdFx0XHRcdFx0Y29uc3QgdGltZWxpbmVNYXAgPSBjb25zdHJhaW50TWFwW3RpbWVsaW5lTmFtZV07XG5cdFx0XHRcdFx0bGV0IGtleU1hcCA9IHRpbWVsaW5lTWFwWzBdO1xuXHRcdFx0XHRcdGlmICgha2V5TWFwKSBjb250aW51ZTtcblxuXHRcdFx0XHRcdGNvbnN0IGZyYW1lcyA9IHRpbWVsaW5lTWFwLmxlbmd0aDtcblx0XHRcdFx0XHRzd2l0Y2ggKHRpbWVsaW5lTmFtZSkge1xuXHRcdFx0XHRcdFx0Y2FzZSBcInBvc2l0aW9uXCI6IHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgdGltZWxpbmUgPSBuZXcgUGF0aENvbnN0cmFpbnRQb3NpdGlvblRpbWVsaW5lKGZyYW1lcywgZnJhbWVzLCBpbmRleCk7XG5cdFx0XHRcdFx0XHRcdHJlYWRUaW1lbGluZTEodGltZWxpbmVzLCB0aW1lbGluZU1hcCwgdGltZWxpbmUsIDAsIGNvbnN0cmFpbnQucG9zaXRpb25Nb2RlID09PSBQb3NpdGlvbk1vZGUuRml4ZWQgPyBzY2FsZSA6IDEpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGNhc2UgXCJzcGFjaW5nXCI6IHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgdGltZWxpbmUgPSBuZXcgUGF0aENvbnN0cmFpbnRTcGFjaW5nVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMsIGluZGV4KTtcblx0XHRcdFx0XHRcdFx0cmVhZFRpbWVsaW5lMSh0aW1lbGluZXMsIHRpbWVsaW5lTWFwLCB0aW1lbGluZSwgMCwgY29uc3RyYWludC5zcGFjaW5nTW9kZSA9PT0gU3BhY2luZ01vZGUuTGVuZ3RoIHx8IGNvbnN0cmFpbnQuc3BhY2luZ01vZGUgPT09IFNwYWNpbmdNb2RlLkZpeGVkID8gc2NhbGUgOiAxKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjYXNlIFwibWl4XCI6IHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgdGltZWxpbmUgPSBuZXcgUGF0aENvbnN0cmFpbnRNaXhUaW1lbGluZShmcmFtZXMsIGZyYW1lcyAqIDMsIGluZGV4KTtcblx0XHRcdFx0XHRcdFx0bGV0IHRpbWUgPSBnZXRWYWx1ZShrZXlNYXAsIFwidGltZVwiLCAwKTtcblx0XHRcdFx0XHRcdFx0bGV0IG1peFJvdGF0ZSA9IGdldFZhbHVlKGtleU1hcCwgXCJtaXhSb3RhdGVcIiwgMSk7XG5cdFx0XHRcdFx0XHRcdGxldCBtaXhYID0gZ2V0VmFsdWUoa2V5TWFwLCBcIm1peFhcIiwgMSk7XG5cdFx0XHRcdFx0XHRcdGxldCBtaXhZID0gZ2V0VmFsdWUoa2V5TWFwLCBcIm1peFlcIiwgbWl4WCk7XG5cdFx0XHRcdFx0XHRcdGZvciAobGV0IGZyYW1lID0gMCwgYmV6aWVyID0gMDsgOyBmcmFtZSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2V0RnJhbWUoZnJhbWUsIHRpbWUsIG1peFJvdGF0ZSwgbWl4WCwgbWl4WSk7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgbmV4dE1hcCA9IHRpbWVsaW5lTWFwW2ZyYW1lICsgMV07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCFuZXh0TWFwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zaHJpbmsoYmV6aWVyKTtcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRjb25zdCB0aW1lMiA9IGdldFZhbHVlKG5leHRNYXAsIFwidGltZVwiLCAwKTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBtaXhSb3RhdGUyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJtaXhSb3RhdGVcIiwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgbWl4WDIgPSBnZXRWYWx1ZShuZXh0TWFwLCBcIm1peFhcIiwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgbWl4WTIgPSBnZXRWYWx1ZShuZXh0TWFwLCBcIm1peFlcIiwgbWl4WDIpO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGN1cnZlID0ga2V5TWFwLmN1cnZlO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChjdXJ2ZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMCwgdGltZSwgdGltZTIsIG1peFJvdGF0ZSwgbWl4Um90YXRlMiwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAxLCB0aW1lLCB0aW1lMiwgbWl4WCwgbWl4WDIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMiwgdGltZSwgdGltZTIsIG1peFksIG1peFkyLCAxKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0dGltZSA9IHRpbWUyO1xuXHRcdFx0XHRcdFx0XHRcdG1peFJvdGF0ZSA9IG1peFJvdGF0ZTI7XG5cdFx0XHRcdFx0XHRcdFx0bWl4WCA9IG1peFgyO1xuXHRcdFx0XHRcdFx0XHRcdG1peFkgPSBtaXhZMjtcblx0XHRcdFx0XHRcdFx0XHRrZXlNYXAgPSBuZXh0TWFwO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gUGh5c2ljcyBjb25zdHJhaW50IHRpbWVsaW5lcy5cblx0XHRpZiAobWFwLnBoeXNpY3MpIHtcblx0XHRcdGZvciAoY29uc3QgY29uc3RyYWludE5hbWUgaW4gbWFwLnBoeXNpY3MpIHtcblx0XHRcdFx0Y29uc3QgY29uc3RyYWludE1hcCA9IG1hcC5waHlzaWNzW2NvbnN0cmFpbnROYW1lXTtcblx0XHRcdFx0bGV0IGluZGV4ID0gLTE7XG5cdFx0XHRcdGlmIChjb25zdHJhaW50TmFtZS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0Y29uc3QgY29uc3RyYWludCA9IHNrZWxldG9uRGF0YS5maW5kQ29uc3RyYWludChjb25zdHJhaW50TmFtZSwgUGh5c2ljc0NvbnN0cmFpbnREYXRhKTtcblx0XHRcdFx0XHRpZiAoIWNvbnN0cmFpbnQpIHRocm93IG5ldyBFcnJvcihgUGh5c2ljcyBjb25zdHJhaW50IG5vdCBmb3VuZDogJHtjb25zdHJhaW50TmFtZX1gKTtcblx0XHRcdFx0XHRpbmRleCA9IHNrZWxldG9uRGF0YS5jb25zdHJhaW50cy5pbmRleE9mKGNvbnN0cmFpbnQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZvciAoY29uc3QgdGltZWxpbmVOYW1lIGluIGNvbnN0cmFpbnRNYXApIHtcblx0XHRcdFx0XHRjb25zdCB0aW1lbGluZU1hcCA9IGNvbnN0cmFpbnRNYXBbdGltZWxpbmVOYW1lXTtcblx0XHRcdFx0XHRsZXQga2V5TWFwID0gdGltZWxpbmVNYXBbMF07XG5cdFx0XHRcdFx0aWYgKCFrZXlNYXApIGNvbnRpbnVlO1xuXG5cdFx0XHRcdFx0Y29uc3QgZnJhbWVzID0gdGltZWxpbmVNYXAubGVuZ3RoO1xuXHRcdFx0XHRcdGxldCB0aW1lbGluZTogQ3VydmVUaW1lbGluZTE7XG5cdFx0XHRcdFx0bGV0IGRlZmF1bHRWYWx1ZSA9IDA7XG5cdFx0XHRcdFx0aWYgKHRpbWVsaW5lTmFtZSA9PT0gXCJyZXNldFwiKSB7XG5cdFx0XHRcdFx0XHRjb25zdCByZXNldFRpbWVsaW5lID0gbmV3IFBoeXNpY3NDb25zdHJhaW50UmVzZXRUaW1lbGluZShmcmFtZXMsIGluZGV4KTtcblx0XHRcdFx0XHRcdGZvciAobGV0IGZyYW1lID0gMDsga2V5TWFwICE9IG51bGw7IGtleU1hcCA9IHRpbWVsaW5lTWFwW2ZyYW1lICsgMV0sIGZyYW1lKyspXG5cdFx0XHRcdFx0XHRcdHJlc2V0VGltZWxpbmUuc2V0RnJhbWUoZnJhbWUsIGdldFZhbHVlKGtleU1hcCwgXCJ0aW1lXCIsIDApKTtcblx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHJlc2V0VGltZWxpbmUpO1xuXHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHN3aXRjaCAodGltZWxpbmVOYW1lKSB7XG5cdFx0XHRcdFx0XHRjYXNlIFwiaW5lcnRpYVwiOiB0aW1lbGluZSA9IG5ldyBQaHlzaWNzQ29uc3RyYWludEluZXJ0aWFUaW1lbGluZShmcmFtZXMsIGZyYW1lcywgaW5kZXgpOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgXCJzdHJlbmd0aFwiOiB0aW1lbGluZSA9IG5ldyBQaHlzaWNzQ29uc3RyYWludFN0cmVuZ3RoVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMsIGluZGV4KTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlIFwiZGFtcGluZ1wiOiB0aW1lbGluZSA9IG5ldyBQaHlzaWNzQ29uc3RyYWludERhbXBpbmdUaW1lbGluZShmcmFtZXMsIGZyYW1lcywgaW5kZXgpOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgXCJtYXNzXCI6IHRpbWVsaW5lID0gbmV3IFBoeXNpY3NDb25zdHJhaW50TWFzc1RpbWVsaW5lKGZyYW1lcywgZnJhbWVzLCBpbmRleCk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSBcIndpbmRcIjogdGltZWxpbmUgPSBuZXcgUGh5c2ljc0NvbnN0cmFpbnRXaW5kVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMsIGluZGV4KTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlIFwiZ3Jhdml0eVwiOiB0aW1lbGluZSA9IG5ldyBQaHlzaWNzQ29uc3RyYWludEdyYXZpdHlUaW1lbGluZShmcmFtZXMsIGZyYW1lcywgaW5kZXgpOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgXCJtaXhcIjoge1xuXHRcdFx0XHRcdFx0XHRkZWZhdWx0VmFsdWUgPSAxO1xuXHRcdFx0XHRcdFx0XHR0aW1lbGluZSA9IG5ldyBQaHlzaWNzQ29uc3RyYWludE1peFRpbWVsaW5lKGZyYW1lcywgZnJhbWVzLCBpbmRleCk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZGVmYXVsdDogY29udGludWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJlYWRUaW1lbGluZTEodGltZWxpbmVzLCB0aW1lbGluZU1hcCwgdGltZWxpbmUsIGRlZmF1bHRWYWx1ZSwgMSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBTbGlkZXIgdGltZWxpbmVzLlxuXHRcdGlmIChtYXAuc2xpZGVyKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGNvbnN0cmFpbnROYW1lIGluIG1hcC5zbGlkZXIpIHtcblx0XHRcdFx0Y29uc3QgY29uc3RyYWludE1hcCA9IG1hcC5zbGlkZXJbY29uc3RyYWludE5hbWVdO1xuXHRcdFx0XHRjb25zdCBjb25zdHJhaW50ID0gc2tlbGV0b25EYXRhLmZpbmRDb25zdHJhaW50KGNvbnN0cmFpbnROYW1lLCBTbGlkZXJEYXRhKTtcblx0XHRcdFx0aWYgKCFjb25zdHJhaW50KSB0aHJvdyBuZXcgRXJyb3IoYFNsaWRlciBub3QgZm91bmQ6ICR7Y29uc3RyYWludE5hbWV9YCk7XG5cdFx0XHRcdGNvbnN0IGluZGV4ID0gc2tlbGV0b25EYXRhLmNvbnN0cmFpbnRzLmluZGV4T2YoY29uc3RyYWludCk7XG5cblx0XHRcdFx0Zm9yIChjb25zdCB0aW1lbGluZU5hbWUgaW4gY29uc3RyYWludE1hcCkge1xuXHRcdFx0XHRcdGNvbnN0IHRpbWVsaW5lTWFwID0gY29uc3RyYWludE1hcFt0aW1lbGluZU5hbWVdO1xuXHRcdFx0XHRcdGNvbnN0IGtleU1hcCA9IHRpbWVsaW5lTWFwWzBdO1xuXHRcdFx0XHRcdGlmICgha2V5TWFwKSBjb250aW51ZTtcblxuXHRcdFx0XHRcdGNvbnN0IGZyYW1lcyA9IHRpbWVsaW5lTWFwLmxlbmd0aDtcblx0XHRcdFx0XHRzd2l0Y2ggKHRpbWVsaW5lTmFtZSkge1xuXHRcdFx0XHRcdFx0Y2FzZSBcInRpbWVcIjogcmVhZFRpbWVsaW5lMSh0aW1lbGluZXMsIHRpbWVsaW5lTWFwLCBuZXcgU2xpZGVyVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMsIGluZGV4KSwgMSwgMSk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSBcIm1peFwiOiByZWFkVGltZWxpbmUxKHRpbWVsaW5lcywgdGltZWxpbmVNYXAsIG5ldyBTbGlkZXJNaXhUaW1lbGluZShmcmFtZXMsIGZyYW1lcywgaW5kZXgpLCAxLCAxKTsgYnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQXR0YWNobWVudCB0aW1lbGluZXMuXG5cdFx0aWYgKG1hcC5hdHRhY2htZW50cykge1xuXHRcdFx0Zm9yIChjb25zdCBhdHRhY2htZW50c05hbWUgaW4gbWFwLmF0dGFjaG1lbnRzKSB7XG5cdFx0XHRcdGNvbnN0IGF0dGFjaG1lbnRzTWFwID0gbWFwLmF0dGFjaG1lbnRzW2F0dGFjaG1lbnRzTmFtZV07XG5cdFx0XHRcdGNvbnN0IHNraW4gPSBza2VsZXRvbkRhdGEuZmluZFNraW4oYXR0YWNobWVudHNOYW1lKTtcblx0XHRcdFx0aWYgKCFza2luKSB0aHJvdyBuZXcgRXJyb3IoYFNraW4gbm90IGZvdW5kOiAke2F0dGFjaG1lbnRzTmFtZX1gKTtcblx0XHRcdFx0Zm9yIChjb25zdCBzbG90TWFwTmFtZSBpbiBhdHRhY2htZW50c01hcCkge1xuXHRcdFx0XHRcdGNvbnN0IHNsb3RNYXAgPSBhdHRhY2htZW50c01hcFtzbG90TWFwTmFtZV07XG5cdFx0XHRcdFx0Y29uc3Qgc2xvdCA9IHNrZWxldG9uRGF0YS5maW5kU2xvdChzbG90TWFwTmFtZSk7XG5cdFx0XHRcdFx0aWYgKCFzbG90KSB0aHJvdyBuZXcgRXJyb3IoYEF0dGFjaG1lbnQgc2xvdCBub3QgZm91bmQ6ICR7c2xvdE1hcE5hbWV9YCk7XG5cdFx0XHRcdFx0Y29uc3Qgc2xvdEluZGV4ID0gc2xvdC5pbmRleDtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IGF0dGFjaG1lbnRNYXBOYW1lIGluIHNsb3RNYXApIHtcblx0XHRcdFx0XHRcdGNvbnN0IGF0dGFjaG1lbnRNYXAgPSBzbG90TWFwW2F0dGFjaG1lbnRNYXBOYW1lXTtcblx0XHRcdFx0XHRcdGNvbnN0IGF0dGFjaG1lbnQgPSA8VmVydGV4QXR0YWNobWVudD5za2luLmdldEF0dGFjaG1lbnQoc2xvdEluZGV4LCBhdHRhY2htZW50TWFwTmFtZSk7XG5cdFx0XHRcdFx0XHRpZiAoIWF0dGFjaG1lbnQpIHRocm93IG5ldyBFcnJvcihgVGltZWxpbmUgYXR0YWNobWVudCBub3QgZm91bmQ6ICR7YXR0YWNobWVudE1hcE5hbWV9YCk7XG5cblx0XHRcdFx0XHRcdGZvciAoY29uc3QgdGltZWxpbmVNYXBOYW1lIGluIGF0dGFjaG1lbnRNYXApIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgdGltZWxpbmVNYXAgPSBhdHRhY2htZW50TWFwW3RpbWVsaW5lTWFwTmFtZV07XG5cdFx0XHRcdFx0XHRcdGxldCBrZXlNYXAgPSB0aW1lbGluZU1hcFswXTtcblx0XHRcdFx0XHRcdFx0aWYgKCFrZXlNYXApIGNvbnRpbnVlO1xuXG5cdFx0XHRcdFx0XHRcdGlmICh0aW1lbGluZU1hcE5hbWUgPT09IFwiZGVmb3JtXCIpIHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCB3ZWlnaHRlZCA9IGF0dGFjaG1lbnQuYm9uZXM7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgdmVydGljZXMgPSBhdHRhY2htZW50LnZlcnRpY2VzO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGRlZm9ybUxlbmd0aCA9IHdlaWdodGVkID8gdmVydGljZXMubGVuZ3RoIC8gMyAqIDIgOiB2ZXJ0aWNlcy5sZW5ndGg7XG5cblx0XHRcdFx0XHRcdFx0XHRjb25zdCB0aW1lbGluZSA9IG5ldyBEZWZvcm1UaW1lbGluZSh0aW1lbGluZU1hcC5sZW5ndGgsIHRpbWVsaW5lTWFwLmxlbmd0aCwgc2xvdEluZGV4LCBhdHRhY2htZW50KTtcblx0XHRcdFx0XHRcdFx0XHRsZXQgdGltZSA9IGdldFZhbHVlKGtleU1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0XHRcdGZvciAobGV0IGZyYW1lID0gMCwgYmV6aWVyID0gMDsgOyBmcmFtZSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRsZXQgZGVmb3JtOiBOdW1iZXJBcnJheUxpa2U7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zdCB2ZXJ0aWNlc1ZhbHVlOiBBcnJheTxudW1iZXI+ID0gZ2V0VmFsdWUoa2V5TWFwLCBcInZlcnRpY2VzXCIsIG51bGwpO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCF2ZXJ0aWNlc1ZhbHVlKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRkZWZvcm0gPSB3ZWlnaHRlZCA/IFV0aWxzLm5ld0Zsb2F0QXJyYXkoZGVmb3JtTGVuZ3RoKSA6IHZlcnRpY2VzO1xuXHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRlZm9ybSA9IFV0aWxzLm5ld0Zsb2F0QXJyYXkoZGVmb3JtTGVuZ3RoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3Qgc3RhcnQgPSA8bnVtYmVyPmdldFZhbHVlKGtleU1hcCwgXCJvZmZzZXRcIiwgMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFV0aWxzLmFycmF5Q29weSh2ZXJ0aWNlc1ZhbHVlLCAwLCBkZWZvcm0sIHN0YXJ0LCB2ZXJ0aWNlc1ZhbHVlLmxlbmd0aCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChzY2FsZSAhPT0gMSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAobGV0IGkgPSBzdGFydCwgbiA9IGkgKyB2ZXJ0aWNlc1ZhbHVlLmxlbmd0aDsgaSA8IG47IGkrKylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlZm9ybVtpXSAqPSBzY2FsZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXdlaWdodGVkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBkZWZvcm1MZW5ndGg7IGkrKylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlZm9ybVtpXSArPSB2ZXJ0aWNlc1tpXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgZGVmb3JtKTtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IG5leHRNYXAgPSB0aW1lbGluZU1hcFtmcmFtZSArIDFdO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFuZXh0TWFwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRpbWVsaW5lLnNocmluayhiZXppZXIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHRpbWUyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgY3VydmUgPSBrZXlNYXAuY3VydmU7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoY3VydmUpIGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDAsIHRpbWUsIHRpbWUyLCAwLCAxLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRcdHRpbWUgPSB0aW1lMjtcblx0XHRcdFx0XHRcdFx0XHRcdGtleU1hcCA9IG5leHRNYXA7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICh0aW1lbGluZU1hcE5hbWUgPT09IFwic2VxdWVuY2VcIikge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHRpbWVsaW5lID0gbmV3IFNlcXVlbmNlVGltZWxpbmUodGltZWxpbmVNYXAubGVuZ3RoLCBzbG90SW5kZXgsIGF0dGFjaG1lbnQgYXMgQXR0YWNobWVudCk7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IGxhc3REZWxheSA9IDA7XG5cdFx0XHRcdFx0XHRcdFx0Zm9yIChsZXQgZnJhbWUgPSAwOyBmcmFtZSA8IHRpbWVsaW5lTWFwLmxlbmd0aDsgZnJhbWUrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgZGVsYXkgPSBnZXRWYWx1ZShrZXlNYXAsIFwiZGVsYXlcIiwgbGFzdERlbGF5KTtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHRpbWUgPSBnZXRWYWx1ZShrZXlNYXAsIFwidGltZVwiLCAwKTtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IG1vZGUgPSBTZXF1ZW5jZU1vZGVbZ2V0VmFsdWUoa2V5TWFwLCBcIm1vZGVcIiwgXCJob2xkXCIpXSBhcyB1bmtub3duIGFzIG51bWJlcjtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IGluZGV4ID0gZ2V0VmFsdWUoa2V5TWFwLCBcImluZGV4XCIsIDApO1xuXHRcdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2V0RnJhbWUoZnJhbWUsIHRpbWUsIG1vZGUsIGluZGV4LCBkZWxheSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRsYXN0RGVsYXkgPSBkZWxheTtcblx0XHRcdFx0XHRcdFx0XHRcdGtleU1hcCA9IHRpbWVsaW5lTWFwW2ZyYW1lICsgMV07XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIERyYXcgb3JkZXIgdGltZWxpbmUuXG5cdFx0aWYgKG1hcC5kcmF3T3JkZXIpIHtcblx0XHRcdGNvbnN0IHRpbWVsaW5lID0gbmV3IERyYXdPcmRlclRpbWVsaW5lKG1hcC5kcmF3T3JkZXIubGVuZ3RoKTtcblx0XHRcdGNvbnN0IHNsb3RDb3VudCA9IHNrZWxldG9uRGF0YS5zbG90cy5sZW5ndGg7XG5cdFx0XHRsZXQgZnJhbWUgPSAwXG5cdFx0XHRmb3IgKGNvbnN0IGRyYXdPcmRlck1hcCBvZiAobWFwLmRyYXdPcmRlciBhcyBEcmF3T3JkZXJLZXlzVHlwZVtdKSkge1xuXHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSsrLCBnZXRWYWx1ZShkcmF3T3JkZXJNYXAsIFwidGltZVwiLCAwKSwgcmVhZERyYXdPcmRlcihza2VsZXRvbkRhdGEsIGRyYXdPcmRlck1hcCwgc2xvdENvdW50LCBudWxsKSk7XG5cdFx0XHR9XG5cdFx0XHR0aW1lbGluZXMucHVzaCh0aW1lbGluZSk7XG5cdFx0fVxuXG5cdFx0Ly8gRHJhdyBvcmRlciBmb2xkZXIgdGltZWxpbmVzLlxuXHRcdGlmIChtYXAuZHJhd09yZGVyRm9sZGVyKSB7XG5cdFx0XHRmb3IgKGNvbnN0IHRpbWVsaW5lTWFwIG9mIG1hcC5kcmF3T3JkZXJGb2xkZXIpIHtcblx0XHRcdFx0Y29uc3Qgc2xvdEVudHJpZXMgPSBnZXRWYWx1ZSh0aW1lbGluZU1hcCwgXCJzbG90c1wiLCBbXSkgYXMgc3RyaW5nW107XG5cdFx0XHRcdGNvbnN0IGZvbGRlclNsb3RzID0gbmV3IEFycmF5PG51bWJlcj4oc2xvdEVudHJpZXMubGVuZ3RoKTtcblx0XHRcdFx0bGV0IGlpID0gMDtcblx0XHRcdFx0Zm9yIChjb25zdCBzbG90RW50cnkgb2Ygc2xvdEVudHJpZXMpIHtcblx0XHRcdFx0XHRjb25zdCBzbG90ID0gc2tlbGV0b25EYXRhLmZpbmRTbG90KHNsb3RFbnRyeSk7XG5cdFx0XHRcdFx0aWYgKCFzbG90KSB0aHJvdyBuZXcgRXJyb3IoYERyYXcgb3JkZXIgZm9sZGVyIHNsb3Qgbm90IGZvdW5kOiAke3Nsb3RFbnRyeX1gKTtcblx0XHRcdFx0XHRmb2xkZXJTbG90c1tpaSsrXSA9IHNsb3QuaW5kZXg7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBkcmF3T3JkZXJGb2xkZXJFbnRyaWVzID0gZ2V0VmFsdWUodGltZWxpbmVNYXAsIFwia2V5c1wiLCBbXSkgYXMgRHJhd09yZGVyS2V5c1R5cGVbXTtcblx0XHRcdFx0Y29uc3QgdGltZWxpbmUgPSBuZXcgRHJhd09yZGVyRm9sZGVyVGltZWxpbmUoZHJhd09yZGVyRm9sZGVyRW50cmllcy5sZW5ndGgsIGZvbGRlclNsb3RzLCBza2VsZXRvbkRhdGEuc2xvdHMubGVuZ3RoKTtcblx0XHRcdFx0bGV0IGZyYW1lID0gMDtcblx0XHRcdFx0Zm9yIChjb25zdCBkcmF3T3JkZXJGb2xkZXJNYXAgb2YgZHJhd09yZGVyRm9sZGVyRW50cmllcykge1xuXHRcdFx0XHRcdHRpbWVsaW5lLnNldEZyYW1lKGZyYW1lKyssIGdldFZhbHVlKGRyYXdPcmRlckZvbGRlck1hcCwgXCJ0aW1lXCIsIDApLCByZWFkRHJhd09yZGVyKHNrZWxldG9uRGF0YSwgZHJhd09yZGVyRm9sZGVyTWFwLCBmb2xkZXJTbG90cy5sZW5ndGgsIGZvbGRlclNsb3RzKSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEV2ZW50IHRpbWVsaW5lLlxuXHRcdGlmIChtYXAuZXZlbnRzKSB7XG5cdFx0XHRjb25zdCB0aW1lbGluZSA9IG5ldyBFdmVudFRpbWVsaW5lKG1hcC5ldmVudHMubGVuZ3RoKTtcblx0XHRcdGxldCBmcmFtZSA9IDA7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG1hcC5ldmVudHMubGVuZ3RoOyBpKyssIGZyYW1lKyspIHtcblx0XHRcdFx0Y29uc3QgZXZlbnRNYXAgPSBtYXAuZXZlbnRzW2ldO1xuXHRcdFx0XHRjb25zdCBkYXRhID0gc2tlbGV0b25EYXRhLmZpbmRFdmVudChldmVudE1hcC5uYW1lKTtcblx0XHRcdFx0aWYgKCFkYXRhKSB0aHJvdyBuZXcgRXJyb3IoYEV2ZW50IG5vdCBmb3VuZDogJHtldmVudE1hcC5uYW1lfWApO1xuXHRcdFx0XHRjb25zdCBzZXR1cCA9IGRhdGEuc2V0dXBQb3NlO1xuXHRcdFx0XHRjb25zdCBldmVudCA9IG5ldyBFdmVudChVdGlscy50b1NpbmdsZVByZWNpc2lvbihnZXRWYWx1ZShldmVudE1hcCwgXCJ0aW1lXCIsIDApKSwgZGF0YSk7XG5cdFx0XHRcdGV2ZW50LmludFZhbHVlID0gZ2V0VmFsdWUoZXZlbnRNYXAsIFwiaW50XCIsIHNldHVwLmludFZhbHVlKTtcblx0XHRcdFx0ZXZlbnQuZmxvYXRWYWx1ZSA9IGdldFZhbHVlKGV2ZW50TWFwLCBcImZsb2F0XCIsIHNldHVwLmZsb2F0VmFsdWUpO1xuXHRcdFx0XHRldmVudC5zdHJpbmdWYWx1ZSA9IGdldFZhbHVlKGV2ZW50TWFwLCBcInN0cmluZ1wiLCBzZXR1cC5zdHJpbmdWYWx1ZSk7XG5cdFx0XHRcdGlmIChldmVudC5kYXRhLmF1ZGlvUGF0aCkge1xuXHRcdFx0XHRcdGV2ZW50LnZvbHVtZSA9IGdldFZhbHVlKGV2ZW50TWFwLCBcInZvbHVtZVwiLCBzZXR1cC52b2x1bWUpO1xuXHRcdFx0XHRcdGV2ZW50LmJhbGFuY2UgPSBnZXRWYWx1ZShldmVudE1hcCwgXCJiYWxhbmNlXCIsIHNldHVwLnZvbHVtZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGltZWxpbmUuc2V0RnJhbWUoZnJhbWUsIGV2ZW50KTtcblx0XHRcdH1cblx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHR9XG5cblx0XHRsZXQgZHVyYXRpb24gPSAwO1xuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gdGltZWxpbmVzLmxlbmd0aDsgaSA8IG47IGkrKylcblx0XHRcdGR1cmF0aW9uID0gTWF0aC5tYXgoZHVyYXRpb24sIHRpbWVsaW5lc1tpXS5nZXREdXJhdGlvbigpKTtcblxuXHRcdGNvbnN0IGFuaW1hdGlvbiA9IG5ldyBBbmltYXRpb24obmFtZSwgdGltZWxpbmVzLCBkdXJhdGlvbik7XG5cdFx0Y29uc3QgY29sb3IgPSBnZXRWYWx1ZShtYXAsIFwiY29sb3JcIiwgbnVsbCk7XG5cdFx0aWYgKGNvbG9yICE9PSBudWxsKSBhbmltYXRpb24uY29sb3Iuc2V0RnJvbVN0cmluZyhjb2xvcik7XG5cblx0XHRza2VsZXRvbkRhdGEuYW5pbWF0aW9ucy5wdXNoKGFuaW1hdGlvbik7XG5cdH1cbn1cblxuY2xhc3MgTGlua2VkTWVzaCB7XG5cdHNvdXJjZTogc3RyaW5nOyBza2luOiBzdHJpbmc7XG5cdHNsb3RJbmRleDogbnVtYmVyOyBzb3VyY2VJbmRleDogbnVtYmVyO1xuXHRtZXNoOiBNZXNoQXR0YWNobWVudDtcblx0aW5oZXJpdFRpbWVsaW5lczogYm9vbGVhbjtcblxuXHRjb25zdHJ1Y3RvciAobWVzaDogTWVzaEF0dGFjaG1lbnQsIHNraW46IHN0cmluZywgc2xvdEluZGV4OiBudW1iZXIsIHNvdXJjZUluZGV4OiBudW1iZXIsIHNvdXJjZTogc3RyaW5nLFxuXHRcdGluaGVyaXRUaW1lbGluZXM6IGJvb2xlYW4pIHtcblx0XHR0aGlzLm1lc2ggPSBtZXNoO1xuXHRcdHRoaXMuc2tpbiA9IHNraW47XG5cdFx0dGhpcy5zbG90SW5kZXggPSBzbG90SW5kZXg7XG5cdFx0dGhpcy5zb3VyY2VJbmRleCA9IHNvdXJjZUluZGV4O1xuXHRcdHRoaXMuc291cmNlID0gc291cmNlO1xuXHRcdHRoaXMuaW5oZXJpdFRpbWVsaW5lcyA9IGluaGVyaXRUaW1lbGluZXM7XG5cdH1cbn1cblxudHlwZSBDdXJ2ZVR5cGUgPSBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSB8IFwic3RlcHBlZFwiO1xudHlwZSBUaW1lbGluZTFLZXlzVHlwZSA9IHsgdmFsdWU6IG51bWJlciwgdGltZT86IG51bWJlciwgY3VydmU/OiBDdXJ2ZVR5cGUgfTtcbnR5cGUgVGltZWxpbmUyS2V5c1R5cGUgPSBUaW1lbGluZTFLZXlzVHlwZSAmIHsgeD86IG51bWJlciwgeT86IG51bWJlciB9O1xuXG5mdW5jdGlvbiByZWFkVGltZWxpbmUxICh0aW1lbGluZXM6IEFycmF5PFRpbWVsaW5lPiwga2V5czogVGltZWxpbmUxS2V5c1R5cGVbXSwgdGltZWxpbmU6IEN1cnZlVGltZWxpbmUxLCBkZWZhdWx0VmFsdWU6IG51bWJlciwgc2NhbGU6IG51bWJlcikge1xuXHRsZXQga2V5TWFwID0ga2V5c1swXTtcblx0bGV0IHRpbWUgPSBrZXlNYXAudGltZSA/PyAwO1xuXHRsZXQgdmFsdWUgPSAoa2V5TWFwLnZhbHVlID8/IGRlZmF1bHRWYWx1ZSkgKiBzY2FsZTtcblx0bGV0IGJlemllciA9IDA7XG5cblx0Zm9yIChsZXQgZnJhbWUgPSAwOyA7IGZyYW1lKyspIHtcblx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgdmFsdWUpO1xuXHRcdGNvbnN0IG5leHRNYXAgPSBrZXlzW2ZyYW1lICsgMV07XG5cdFx0aWYgKCFuZXh0TWFwKSB7XG5cdFx0XHR0aW1lbGluZS5zaHJpbmsoYmV6aWVyKTtcblx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgdGltZTIgPSBuZXh0TWFwLnRpbWUgPz8gMDtcblx0XHRjb25zdCB2YWx1ZTIgPSAobmV4dE1hcC52YWx1ZSA/PyBkZWZhdWx0VmFsdWUpICogc2NhbGU7XG5cdFx0aWYgKGtleU1hcC5jdXJ2ZSkgYmV6aWVyID0gcmVhZEN1cnZlKGtleU1hcC5jdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDAsIHRpbWUsIHRpbWUyLCB2YWx1ZSwgdmFsdWUyLCBzY2FsZSk7XG5cdFx0dGltZSA9IHRpbWUyO1xuXHRcdHZhbHVlID0gdmFsdWUyO1xuXHRcdGtleU1hcCA9IG5leHRNYXA7XG5cdH1cbn1cblxuZnVuY3Rpb24gcmVhZFRpbWVsaW5lMiAodGltZWxpbmVzOiBBcnJheTxUaW1lbGluZT4sIGtleXM6IFRpbWVsaW5lMktleXNUeXBlW10sIHRpbWVsaW5lOiBCb25lVGltZWxpbmUyLCBuYW1lMTogXCJ4XCIsIG5hbWUyOiBcInlcIiwgZGVmYXVsdFZhbHVlOiBudW1iZXIsIHNjYWxlOiBudW1iZXIpIHtcblx0bGV0IGtleU1hcCA9IGtleXNbMF07XG5cdGxldCB0aW1lID0ga2V5TWFwLnRpbWUgPz8gMDtcblx0bGV0IHZhbHVlMSA9IChrZXlNYXBbbmFtZTFdID8/IGRlZmF1bHRWYWx1ZSkgKiBzY2FsZTtcblx0bGV0IHZhbHVlMiA9IChrZXlNYXBbbmFtZTJdID8/IGRlZmF1bHRWYWx1ZSkgKiBzY2FsZTtcblx0bGV0IGJlemllciA9IDA7XG5cdGZvciAobGV0IGZyYW1lID0gMDsgOyBmcmFtZSsrKSB7XG5cdFx0dGltZWxpbmUuc2V0RnJhbWUoZnJhbWUsIHRpbWUsIHZhbHVlMSwgdmFsdWUyKTtcblx0XHRjb25zdCBuZXh0TWFwID0ga2V5c1tmcmFtZSArIDFdO1xuXHRcdGlmICghbmV4dE1hcCkge1xuXHRcdFx0dGltZWxpbmUuc2hyaW5rKGJlemllcik7XG5cdFx0XHR0aW1lbGluZXMucHVzaCh0aW1lbGluZSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHRpbWUyID0gbmV4dE1hcC50aW1lID8/IDA7XG5cdFx0Y29uc3QgbnZhbHVlMSA9IChuZXh0TWFwW25hbWUxXSA/PyBkZWZhdWx0VmFsdWUpICogc2NhbGU7XG5cdFx0Y29uc3QgbnZhbHVlMiA9IChuZXh0TWFwW25hbWUyXSA/PyBkZWZhdWx0VmFsdWUpICogc2NhbGU7XG5cdFx0Y29uc3QgY3VydmUgPSBrZXlNYXAuY3VydmU7XG5cdFx0aWYgKGN1cnZlKSB7XG5cdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAwLCB0aW1lLCB0aW1lMiwgdmFsdWUxLCBudmFsdWUxLCBzY2FsZSk7XG5cdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAxLCB0aW1lLCB0aW1lMiwgdmFsdWUyLCBudmFsdWUyLCBzY2FsZSk7XG5cdFx0fVxuXHRcdHRpbWUgPSB0aW1lMjtcblx0XHR2YWx1ZTEgPSBudmFsdWUxO1xuXHRcdHZhbHVlMiA9IG52YWx1ZTI7XG5cdFx0a2V5TWFwID0gbmV4dE1hcDtcblx0fVxufVxuXG50eXBlIERyYXdPcmRlcktleXNUeXBlID0geyBvZmZzZXRzPzogeyBzbG90OiBzdHJpbmcsIG9mZnNldDogbnVtYmVyIH1bXSB9O1xuXG4vKiogQHBhcmFtIGZvbGRlclNsb3RzIFNsb3QgbmFtZXMgYXJlIHJlc29sdmVkIHRvIHBvc2l0aW9ucyB3aXRoaW4gdGhpcyBhcnJheS4gSWYgbnVsbCwgc2xvdCBpbmRpY2VzIGFyZSB1c2VkIGFzIHBvc2l0aW9ucy4gKi9cbmZ1bmN0aW9uIHJlYWREcmF3T3JkZXIgKHNrZWxldG9uRGF0YTogU2tlbGV0b25EYXRhLCBrZXlzOiBEcmF3T3JkZXJLZXlzVHlwZSwgc2xvdENvdW50OiBudW1iZXIsIGZvbGRlclNsb3RzOiBudW1iZXJbXSB8IG51bGwpOiBudW1iZXJbXSB8IG51bGwge1xuXHRjb25zdCBjaGFuZ2VzID0ga2V5cy5vZmZzZXRzO1xuXHRpZiAoIWNoYW5nZXMpIHJldHVybiBudWxsOyAvLyBTZXR1cCBkcmF3IG9yZGVyLlxuXHRjb25zdCBkcmF3T3JkZXIgPSBuZXcgQXJyYXk8bnVtYmVyPihzbG90Q291bnQpLmZpbGwoLTEpO1xuXHRjb25zdCB1bmNoYW5nZWQgPSBuZXcgQXJyYXk8bnVtYmVyPihzbG90Q291bnQgLSBjaGFuZ2VzLmxlbmd0aCk7XG5cdGxldCBvcmlnaW5hbEluZGV4ID0gMCwgdW5jaGFuZ2VkSW5kZXggPSAwO1xuXHRmb3IgKGNvbnN0IG9mZnNldE1hcCBvZiBjaGFuZ2VzKSB7XG5cdFx0Y29uc3Qgc2xvdCA9IHNrZWxldG9uRGF0YS5maW5kU2xvdChvZmZzZXRNYXAuc2xvdCk7XG5cdFx0aWYgKHNsb3QgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKGBEcmF3IG9yZGVyIHNsb3Qgbm90IGZvdW5kOiAke29mZnNldE1hcC5zbG90fWApO1xuXHRcdGxldCBpbmRleCA9IDA7XG5cdFx0aWYgKCFmb2xkZXJTbG90cylcblx0XHRcdGluZGV4ID0gc2xvdC5pbmRleDtcblx0XHRlbHNlIHtcblx0XHRcdGluZGV4ID0gLTE7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHNsb3RDb3VudDsgaSsrKSB7XG5cdFx0XHRcdGlmIChmb2xkZXJTbG90c1tpXSA9PT0gc2xvdC5pbmRleCkge1xuXHRcdFx0XHRcdGluZGV4ID0gaTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKGluZGV4ID09PSAtMSkgdGhyb3cgbmV3IEVycm9yKGBTbG90IG5vdCBpbiBmb2xkZXI6ICR7b2Zmc2V0TWFwLnNsb3R9YCk7XG5cdFx0fVxuXHRcdC8vIENvbGxlY3QgdW5jaGFuZ2VkIGl0ZW1zLlxuXHRcdHdoaWxlIChvcmlnaW5hbEluZGV4ICE9PSBpbmRleClcblx0XHRcdHVuY2hhbmdlZFt1bmNoYW5nZWRJbmRleCsrXSA9IG9yaWdpbmFsSW5kZXgrKztcblx0XHQvLyBTZXQgY2hhbmdlZCBpdGVtcy5cblx0XHRkcmF3T3JkZXJbb3JpZ2luYWxJbmRleCArIG9mZnNldE1hcC5vZmZzZXRdID0gb3JpZ2luYWxJbmRleCsrO1xuXHR9XG5cdC8vIENvbGxlY3QgcmVtYWluaW5nIHVuY2hhbmdlZCBpdGVtcy5cblx0d2hpbGUgKG9yaWdpbmFsSW5kZXggPCBzbG90Q291bnQpXG5cdFx0dW5jaGFuZ2VkW3VuY2hhbmdlZEluZGV4KytdID0gb3JpZ2luYWxJbmRleCsrO1xuXHQvLyBGaWxsIGluIHVuY2hhbmdlZCBpdGVtcy5cblx0Zm9yIChsZXQgaSA9IHNsb3RDb3VudCAtIDE7IGkgPj0gMDsgaS0tKVxuXHRcdGlmIChkcmF3T3JkZXJbaV0gPT09IC0xKSBkcmF3T3JkZXJbaV0gPSB1bmNoYW5nZWRbLS11bmNoYW5nZWRJbmRleF07XG5cdHJldHVybiBkcmF3T3JkZXI7XG59XG5cbmZ1bmN0aW9uIHJlYWRDdXJ2ZSAoY3VydmU6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdIHwgXCJzdGVwcGVkXCIsIHRpbWVsaW5lOiBDdXJ2ZVRpbWVsaW5lLCBiZXppZXI6IG51bWJlciwgZnJhbWU6IG51bWJlciwgdmFsdWU6IG51bWJlciwgdGltZTE6IG51bWJlciwgdGltZTI6IG51bWJlcixcblx0dmFsdWUxOiBudW1iZXIsIHZhbHVlMjogbnVtYmVyLCBzY2FsZTogbnVtYmVyKSB7XG5cdGlmIChjdXJ2ZSA9PT0gXCJzdGVwcGVkXCIpIHtcblx0XHR0aW1lbGluZS5zZXRTdGVwcGVkKGZyYW1lKTtcblx0XHRyZXR1cm4gYmV6aWVyO1xuXHR9XG5cdGNvbnN0IGkgPSB2YWx1ZSA8PCAyO1xuXHRjb25zdCBjeDEgPSBjdXJ2ZVtpXTtcblx0Y29uc3QgY3kxID0gY3VydmVbaSArIDFdICogc2NhbGU7XG5cdGNvbnN0IGN4MiA9IGN1cnZlW2kgKyAyXTtcblx0Y29uc3QgY3kyID0gY3VydmVbaSArIDNdICogc2NhbGU7XG5cdHRpbWVsaW5lLnNldEJlemllcihiZXppZXIsIGZyYW1lLCB2YWx1ZSwgdGltZTEsIHZhbHVlMSwgY3gxLCBjeTEsIGN4MiwgY3kyLCB0aW1lMiwgdmFsdWUyKTtcblx0cmV0dXJuIGJlemllciArIDE7XG59XG5cbi8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogaXQgaXMgYW55IHVudGlsIHdlIGRlZmluZSBhIHNjaGVtYVxuZnVuY3Rpb24gZ2V0VmFsdWUgKG1hcDogYW55LCBwcm9wZXJ0eTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IGFueSkge1xuXHRyZXR1cm4gbWFwW3Byb3BlcnR5XSAhPT0gdW5kZWZpbmVkID8gbWFwW3Byb3BlcnR5XSA6IGRlZmF1bHRWYWx1ZTtcbn1cbiJdfQ==
1391
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25Kc29uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NrZWxldG9uSnNvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFFL0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQStELGNBQWMsRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLHlCQUF5QixFQUFFLDhCQUE4QixFQUFFLDZCQUE2QixFQUFFLGdDQUFnQyxFQUFFLGdDQUFnQyxFQUFFLGdDQUFnQyxFQUFFLDZCQUE2QixFQUFFLDRCQUE0QixFQUFFLDhCQUE4QixFQUFFLGlDQUFpQyxFQUFFLDZCQUE2QixFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFpQiwyQkFBMkIsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSTk1QixPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVB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QUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxVQUFVO29CQUFFLE1BQU0sR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUMzRCxNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUMzRSxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDckQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztnQkFDN0IsS0FBSyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQzVDLEtBQUssQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUM1QyxLQUFLLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNsRCxLQUFLLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM5QyxLQUFLLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM5QyxLQUFLLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM5QyxLQUFLLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM5QyxLQUFLLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxTQUFTLENB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LFlBQVksQ0FBQzt3QkFFakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQzt3QkFDM0QsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQzt3QkFDbkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQ3pELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUV2RCxNQUFNLFFBQVEsR0FBVyxhQUFhLENBQUMsSUFBSSxDQUFDO3dCQUM1QyxJQUFJLFFBQVEsRUFBRSxDQUFDOzRCQUNkLElBQUksQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO2dDQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLFFBQVEsRUFBRSxDQUFDLENBQUM7NEJBQ3RFLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUM7NEJBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQzs0QkFDNUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7NEJBQzFELElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQzs0QkFDMUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQzs0QkFDL0MsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFR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QUFpQjtJQUMvRCxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO0FBQ25FLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBTcGluZSBSdW50aW1lcyBMaWNlbnNlIEFncmVlbWVudFxuICogTGFzdCB1cGRhdGVkIEFwcmlsIDUsIDIwMjUuIFJlcGxhY2VzIGFsbCBwcmlvciB2ZXJzaW9ucy5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyNSwgRXNvdGVyaWMgU29mdHdhcmUgTExDXG4gKlxuICogSW50ZWdyYXRpb24gb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3Igb3RoZXJ3aXNlIGNyZWF0aW5nXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxuICogY29uZGl0aW9ucyBvZiBTZWN0aW9uIDIgb2YgdGhlIFNwaW5lIEVkaXRvciBMaWNlbnNlIEFncmVlbWVudDpcbiAqIGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1lZGl0b3ItbGljZW5zZVxuICpcbiAqIE90aGVyd2lzZSwgaXQgaXMgcGVybWl0dGVkIHRvIGludGVncmF0ZSB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZVxuICogb3Igb3RoZXJ3aXNlIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyAoY29sbGVjdGl2ZWx5LFxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxuICogU3BpbmUgRWRpdG9yIGxpY2Vuc2UgYW5kIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9kdWN0cyBpbiBhbnkgZm9ybSBtdXN0XG4gKiBpbmNsdWRlIHRoaXMgbGljZW5zZSBhbmQgY29weXJpZ2h0IG5vdGljZS5cbiAqXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMgQVJFIFBST1ZJREVEIEJZIEVTT1RFUklDIFNPRlRXQVJFIExMQyBcIkFTIElTXCIgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgRVNPVEVSSUMgU09GVFdBUkUgTExDIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLFxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OLCBPUiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUykgSE9XRVZFUiBDQVVTRUQgQU5EXG4gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IEFscGhhVGltZWxpbmUsIEFuaW1hdGlvbiwgQXR0YWNobWVudFRpbWVsaW5lLCB0eXBlIEJvbmVUaW1lbGluZTIsIHR5cGUgQ3VydmVUaW1lbGluZSwgdHlwZSBDdXJ2ZVRpbWVsaW5lMSwgRGVmb3JtVGltZWxpbmUsIERyYXdPcmRlckZvbGRlclRpbWVsaW5lLCBEcmF3T3JkZXJUaW1lbGluZSwgRXZlbnRUaW1lbGluZSwgSWtDb25zdHJhaW50VGltZWxpbmUsIEluaGVyaXRUaW1lbGluZSwgUGF0aENvbnN0cmFpbnRNaXhUaW1lbGluZSwgUGF0aENvbnN0cmFpbnRQb3NpdGlvblRpbWVsaW5lLCBQYXRoQ29uc3RyYWludFNwYWNpbmdUaW1lbGluZSwgUGh5c2ljc0NvbnN0cmFpbnREYW1waW5nVGltZWxpbmUsIFBoeXNpY3NDb25zdHJhaW50R3Jhdml0eVRpbWVsaW5lLCBQaHlzaWNzQ29uc3RyYWludEluZXJ0aWFUaW1lbGluZSwgUGh5c2ljc0NvbnN0cmFpbnRNYXNzVGltZWxpbmUsIFBoeXNpY3NDb25zdHJhaW50TWl4VGltZWxpbmUsIFBoeXNpY3NDb25zdHJhaW50UmVzZXRUaW1lbGluZSwgUGh5c2ljc0NvbnN0cmFpbnRTdHJlbmd0aFRpbWVsaW5lLCBQaHlzaWNzQ29uc3RyYWludFdpbmRUaW1lbGluZSwgUkdCMlRpbWVsaW5lLCBSR0JBMlRpbWVsaW5lLCBSR0JBVGltZWxpbmUsIFJHQlRpbWVsaW5lLCBSb3RhdGVUaW1lbGluZSwgU2NhbGVUaW1lbGluZSwgU2NhbGVYVGltZWxpbmUsIFNjYWxlWVRpbWVsaW5lLCBTZXF1ZW5jZVRpbWVsaW5lLCBTaGVhclRpbWVsaW5lLCBTaGVhclhUaW1lbGluZSwgU2hlYXJZVGltZWxpbmUsIFNsaWRlck1peFRpbWVsaW5lLCBTbGlkZXJUaW1lbGluZSwgdHlwZSBUaW1lbGluZSwgVHJhbnNmb3JtQ29uc3RyYWludFRpbWVsaW5lLCBUcmFuc2xhdGVUaW1lbGluZSwgVHJhbnNsYXRlWFRpbWVsaW5lLCBUcmFuc2xhdGVZVGltZWxpbmUgfSBmcm9tIFwiLi9BbmltYXRpb24uanNcIjtcbmltcG9ydCB0eXBlIHsgQXR0YWNobWVudCwgVmVydGV4QXR0YWNobWVudCB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL0F0dGFjaG1lbnQuanNcIjtcbmltcG9ydCB0eXBlIHsgQXR0YWNobWVudExvYWRlciB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL0F0dGFjaG1lbnRMb2FkZXIuanNcIjtcbmltcG9ydCB0eXBlIHsgTWVzaEF0dGFjaG1lbnQgfSBmcm9tIFwiLi9hdHRhY2htZW50cy9NZXNoQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHsgU2VxdWVuY2UsIFNlcXVlbmNlTW9kZSB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL1NlcXVlbmNlLmpzXCI7XG5pbXBvcnQgeyBCb25lRGF0YSwgSW5oZXJpdCB9IGZyb20gXCIuL0JvbmVEYXRhLmpzXCI7XG5pbXBvcnQgeyBTY2FsZVlNb2RlIH0gZnJvbSBcIi4vQ29uc3RyYWludERhdGEuanNcIjtcbmltcG9ydCB7IEV2ZW50IH0gZnJvbSBcIi4vRXZlbnQuanNcIjtcbmltcG9ydCB7IEV2ZW50RGF0YSB9IGZyb20gXCIuL0V2ZW50RGF0YS5qc1wiO1xuaW1wb3J0IHsgSWtDb25zdHJhaW50RGF0YSB9IGZyb20gXCIuL0lrQ29uc3RyYWludERhdGEuanNcIjtcbmltcG9ydCB7IFBhdGhDb25zdHJhaW50RGF0YSwgUG9zaXRpb25Nb2RlLCBSb3RhdGVNb2RlLCBTcGFjaW5nTW9kZSB9IGZyb20gXCIuL1BhdGhDb25zdHJhaW50RGF0YS5qc1wiO1xuaW1wb3J0IHsgUGh5c2ljc0NvbnN0cmFpbnREYXRhIH0gZnJvbSBcIi4vUGh5c2ljc0NvbnN0cmFpbnREYXRhLmpzXCI7XG5pbXBvcnQgeyBTa2VsZXRvbkRhdGEgfSBmcm9tIFwiLi9Ta2VsZXRvbkRhdGEuanNcIjtcbmltcG9ydCB7IFNraW4gfSBmcm9tIFwiLi9Ta2luLmpzXCI7XG5pbXBvcnQgeyBTbGlkZXJEYXRhIH0gZnJvbSBcIi4vU2xpZGVyRGF0YS5qc1wiO1xuaW1wb3J0IHsgQmxlbmRNb2RlLCBTbG90RGF0YSB9IGZyb20gXCIuL1Nsb3REYXRhLmpzXCI7XG5pbXBvcnQgeyB0eXBlIEZyb21Qcm9wZXJ0eSwgRnJvbVJvdGF0ZSwgRnJvbVNjYWxlWCwgRnJvbVNjYWxlWSwgRnJvbVNoZWFyWSwgRnJvbVgsIEZyb21ZLCB0eXBlIFRvUHJvcGVydHksIFRvUm90YXRlLCBUb1NjYWxlWCwgVG9TY2FsZVksIFRvU2hlYXJZLCBUb1gsIFRvWSwgVHJhbnNmb3JtQ29uc3RyYWludERhdGEgfSBmcm9tIFwiLi9UcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5qc1wiO1xuaW1wb3J0IHsgQ29sb3IsIHR5cGUgTnVtYmVyQXJyYXlMaWtlLCBVdGlscyB9IGZyb20gXCIuL1V0aWxzLmpzXCI7XG5cbi8qKiBMb2FkcyBza2VsZXRvbiBkYXRhIGluIHRoZSBTcGluZSBKU09OIGZvcm1hdC5cbiAqXG4gKiBTZWUgW1NwaW5lIEpTT04gZm9ybWF0XShodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtanNvbi1mb3JtYXQpIGFuZFxuICogW0pTT04gYW5kIGJpbmFyeSBkYXRhXShodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtbG9hZGluZy1za2VsZXRvbi1kYXRhI0pTT04tYW5kLWJpbmFyeS1kYXRhKSBpbiB0aGUgU3BpbmVcbiAqIFJ1bnRpbWVzIEd1aWRlLiAqL1xuZXhwb3J0IGNsYXNzIFNrZWxldG9uSnNvbiB7XG5cdGF0dGFjaG1lbnRMb2FkZXI6IEF0dGFjaG1lbnRMb2FkZXI7XG5cblx0LyoqIFNjYWxlcyBib25lIHBvc2l0aW9ucywgaW1hZ2Ugc2l6ZXMsIGFuZCB0cmFuc2xhdGlvbnMgYXMgdGhleSBhcmUgbG9hZGVkLiBUaGlzIGFsbG93cyBkaWZmZXJlbnQgc2l6ZSBpbWFnZXMgdG8gYmUgdXNlZCBhdFxuXHQgKiBydW50aW1lIHRoYW4gd2VyZSB1c2VkIGluIFNwaW5lLlxuXHQgKlxuXHQgKiBTZWUgW1NjYWxpbmddKGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1sb2FkaW5nLXNrZWxldG9uLWRhdGEjU2NhbGluZykgaW4gdGhlIFNwaW5lIFJ1bnRpbWVzIEd1aWRlLiAqL1xuXHRzY2FsZSA9IDE7XG5cdHByaXZhdGUgcmVhZG9ubHkgbGlua2VkTWVzaGVzID0gW10gYXMgTGlua2VkTWVzaFtdO1xuXG5cdGNvbnN0cnVjdG9yIChhdHRhY2htZW50TG9hZGVyOiBBdHRhY2htZW50TG9hZGVyKSB7XG5cdFx0dGhpcy5hdHRhY2htZW50TG9hZGVyID0gYXR0YWNobWVudExvYWRlcjtcblx0fVxuXG5cdC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogaXQgaXMgYW55IHVudGlsIHdlIGRlZmluZSBhIHNjaGVtYVxuXHRyZWFkU2tlbGV0b25EYXRhIChqc29uOiBzdHJpbmcgfCBhbnkpOiBTa2VsZXRvbkRhdGEge1xuXHRcdGNvbnN0IHNjYWxlID0gdGhpcy5zY2FsZTtcblx0XHRjb25zdCBza2VsZXRvbkRhdGEgPSBuZXcgU2tlbGV0b25EYXRhKCk7XG5cdFx0Y29uc3Qgcm9vdCA9IHR5cGVvZiAoanNvbikgPT09IFwic3RyaW5nXCIgPyBKU09OLnBhcnNlKGpzb24pIDoganNvbjtcblxuXHRcdC8vIFNrZWxldG9uXG5cdFx0Y29uc3Qgc2tlbGV0b25NYXAgPSByb290LnNrZWxldG9uO1xuXHRcdGlmIChza2VsZXRvbk1hcCkge1xuXHRcdFx0c2tlbGV0b25EYXRhLmhhc2ggPSBza2VsZXRvbk1hcC5oYXNoO1xuXHRcdFx0c2tlbGV0b25EYXRhLnZlcnNpb24gPSBza2VsZXRvbk1hcC5zcGluZTtcblx0XHRcdHNrZWxldG9uRGF0YS54ID0gc2tlbGV0b25NYXAueDtcblx0XHRcdHNrZWxldG9uRGF0YS55ID0gc2tlbGV0b25NYXAueTtcblx0XHRcdHNrZWxldG9uRGF0YS53aWR0aCA9IHNrZWxldG9uTWFwLndpZHRoO1xuXHRcdFx0c2tlbGV0b25EYXRhLmhlaWdodCA9IHNrZWxldG9uTWFwLmhlaWdodDtcblx0XHRcdHNrZWxldG9uRGF0YS5yZWZlcmVuY2VTY2FsZSA9IGdldFZhbHVlKHNrZWxldG9uTWFwLCBcInJlZmVyZW5jZVNjYWxlXCIsIDEwMCkgKiBzY2FsZTtcblx0XHRcdHNrZWxldG9uRGF0YS5mcHMgPSBza2VsZXRvbk1hcC5mcHM7XG5cdFx0XHRza2VsZXRvbkRhdGEuaW1hZ2VzUGF0aCA9IHNrZWxldG9uTWFwLmltYWdlcyA/PyBudWxsO1xuXHRcdFx0c2tlbGV0b25EYXRhLmF1ZGlvUGF0aCA9IHNrZWxldG9uTWFwLmF1ZGlvID8/IG51bGw7XG5cdFx0fVxuXG5cdFx0Ly8gQm9uZXNcblx0XHRpZiAocm9vdC5ib25lcykge1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCByb290LmJvbmVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IGJvbmVNYXAgPSByb290LmJvbmVzW2ldO1xuXG5cdFx0XHRcdGxldCBwYXJlbnQ6IEJvbmVEYXRhIHwgbnVsbCA9IG51bGw7XG5cdFx0XHRcdGNvbnN0IHBhcmVudE5hbWU6IHN0cmluZyA9IGdldFZhbHVlKGJvbmVNYXAsIFwicGFyZW50XCIsIG51bGwpO1xuXHRcdFx0XHRpZiAocGFyZW50TmFtZSkgcGFyZW50ID0gc2tlbGV0b25EYXRhLmZpbmRCb25lKHBhcmVudE5hbWUpO1xuXHRcdFx0XHRjb25zdCBkYXRhID0gbmV3IEJvbmVEYXRhKHNrZWxldG9uRGF0YS5ib25lcy5sZW5ndGgsIGJvbmVNYXAubmFtZSwgcGFyZW50KTtcblx0XHRcdFx0ZGF0YS5sZW5ndGggPSBnZXRWYWx1ZShib25lTWFwLCBcImxlbmd0aFwiLCAwKSAqIHNjYWxlO1xuXHRcdFx0XHRjb25zdCBzZXR1cCA9IGRhdGEuc2V0dXBQb3NlO1xuXHRcdFx0XHRzZXR1cC54ID0gZ2V0VmFsdWUoYm9uZU1hcCwgXCJ4XCIsIDApICogc2NhbGU7XG5cdFx0XHRcdHNldHVwLnkgPSBnZXRWYWx1ZShib25lTWFwLCBcInlcIiwgMCkgKiBzY2FsZTtcblx0XHRcdFx0c2V0dXAucm90YXRpb24gPSBnZXRWYWx1ZShib25lTWFwLCBcInJvdGF0aW9uXCIsIDApO1xuXHRcdFx0XHRzZXR1cC5zY2FsZVggPSBnZXRWYWx1ZShib25lTWFwLCBcInNjYWxlWFwiLCAxKTtcblx0XHRcdFx0c2V0dXAuc2NhbGVZID0gZ2V0VmFsdWUoYm9uZU1hcCwgXCJzY2FsZVlcIiwgMSk7XG5cdFx0XHRcdHNldHVwLnNoZWFyWCA9IGdldFZhbHVlKGJvbmVNYXAsIFwic2hlYXJYXCIsIDApO1xuXHRcdFx0XHRzZXR1cC5zaGVhclkgPSBnZXRWYWx1ZShib25lTWFwLCBcInNoZWFyWVwiLCAwKTtcblx0XHRcdFx0c2V0dXAuaW5oZXJpdCA9IFV0aWxzLmVudW1WYWx1ZShJbmhlcml0LCBnZXRWYWx1ZShib25lTWFwLCBcImluaGVyaXRcIiwgXCJOb3JtYWxcIikpO1xuXHRcdFx0XHRkYXRhLnNraW5SZXF1aXJlZCA9IGdldFZhbHVlKGJvbmVNYXAsIFwic2tpblwiLCBmYWxzZSk7XG5cblx0XHRcdFx0Y29uc3QgY29sb3IgPSBnZXRWYWx1ZShib25lTWFwLCBcImNvbG9yXCIsIG51bGwpO1xuXHRcdFx0XHRpZiAoY29sb3IpIGRhdGEuY29sb3Iuc2V0RnJvbVN0cmluZyhjb2xvcik7XG5cdFx0XHRcdGRhdGEuaWNvbiA9IGdldFZhbHVlKGJvbmVNYXAsIFwiaWNvblwiLCB1bmRlZmluZWQpO1xuXHRcdFx0XHRkYXRhLmljb25TaXplID0gZ2V0VmFsdWUoYm9uZU1hcCwgXCJpY29uU2l6ZVwiLCAxKTtcblx0XHRcdFx0ZGF0YS5pY29uUm90YXRpb24gPSBnZXRWYWx1ZShib25lTWFwLCBcImljb25Sb3RhdGlvblwiLCAwKTtcblxuXHRcdFx0XHRza2VsZXRvbkRhdGEuYm9uZXMucHVzaChkYXRhKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBTbG90cy5cblx0XHRpZiAocm9vdC5zbG90cykge1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCByb290LnNsb3RzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IHNsb3RNYXAgPSByb290LnNsb3RzW2ldO1xuXHRcdFx0XHRjb25zdCBzbG90TmFtZSA9IHNsb3RNYXAubmFtZTtcblxuXHRcdFx0XHRjb25zdCBib25lRGF0YSA9IHNrZWxldG9uRGF0YS5maW5kQm9uZShzbG90TWFwLmJvbmUpO1xuXHRcdFx0XHRpZiAoIWJvbmVEYXRhKSB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IGZpbmQgYm9uZSAke3Nsb3RNYXAuYm9uZX0gZm9yIHNsb3QgJHtzbG90TmFtZX1gKTtcblx0XHRcdFx0Y29uc3QgZGF0YSA9IG5ldyBTbG90RGF0YShza2VsZXRvbkRhdGEuc2xvdHMubGVuZ3RoLCBzbG90TmFtZSwgYm9uZURhdGEpO1xuXG5cdFx0XHRcdGNvbnN0IGNvbG9yOiBzdHJpbmcgPSBnZXRWYWx1ZShzbG90TWFwLCBcImNvbG9yXCIsIG51bGwpO1xuXHRcdFx0XHRpZiAoY29sb3IpIGRhdGEuc2V0dXBQb3NlLmNvbG9yLnNldEZyb21TdHJpbmcoY29sb3IpO1xuXG5cdFx0XHRcdGNvbnN0IGRhcms6IHN0cmluZyA9IGdldFZhbHVlKHNsb3RNYXAsIFwiZGFya1wiLCBudWxsKTtcblx0XHRcdFx0aWYgKGRhcmspIGRhdGEuc2V0dXBQb3NlLmRhcmtDb2xvciA9IENvbG9yLmZyb21TdHJpbmcoZGFyayk7XG5cblx0XHRcdFx0ZGF0YS5hdHRhY2htZW50TmFtZSA9IGdldFZhbHVlKHNsb3RNYXAsIFwiYXR0YWNobWVudFwiLCBudWxsKTtcblx0XHRcdFx0ZGF0YS5ibGVuZE1vZGUgPSBVdGlscy5lbnVtVmFsdWUoQmxlbmRNb2RlLCBnZXRWYWx1ZShzbG90TWFwLCBcImJsZW5kXCIsIFwibm9ybWFsXCIpKTtcblx0XHRcdFx0ZGF0YS52aXNpYmxlID0gZ2V0VmFsdWUoc2xvdE1hcCwgXCJ2aXNpYmxlXCIsIHRydWUpO1xuXHRcdFx0XHRza2VsZXRvbkRhdGEuc2xvdHMucHVzaChkYXRhKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDb25zdHJhaW50cy5cblx0XHRpZiAocm9vdC5jb25zdHJhaW50cykge1xuXHRcdFx0Zm9yIChjb25zdCBjb25zdHJhaW50TWFwIG9mIHJvb3QuY29uc3RyYWludHMpIHtcblx0XHRcdFx0Y29uc3QgbmFtZSA9IGNvbnN0cmFpbnRNYXAubmFtZTtcblx0XHRcdFx0Y29uc3Qgc2tpblJlcXVpcmVkID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJza2luXCIsIGZhbHNlKTtcblx0XHRcdFx0c3dpdGNoIChnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInR5cGVcIiwgZmFsc2UpKSB7XG5cdFx0XHRcdFx0Y2FzZSBcImlrXCI6IHtcblx0XHRcdFx0XHRcdGNvbnN0IGRhdGEgPSBuZXcgSWtDb25zdHJhaW50RGF0YShuYW1lKTtcblx0XHRcdFx0XHRcdGRhdGEuc2tpblJlcXVpcmVkID0gc2tpblJlcXVpcmVkO1xuXG5cdFx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgY29uc3RyYWludE1hcC5ib25lcy5sZW5ndGg7IGlpKyspIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgYm9uZSA9IHNrZWxldG9uRGF0YS5maW5kQm9uZShjb25zdHJhaW50TWFwLmJvbmVzW2lpXSk7XG5cdFx0XHRcdFx0XHRcdGlmICghYm9uZSkgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIGJvbmUgJHtjb25zdHJhaW50TWFwLmJvbmVzW2lpXX0gZm9yIElLIGNvbnN0cmFpbnQgJHtuYW1lfS5gKTtcblx0XHRcdFx0XHRcdFx0ZGF0YS5ib25lcy5wdXNoKGJvbmUpO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRjb25zdCB0YXJnZXROYW1lID0gY29uc3RyYWludE1hcC50YXJnZXQ7XG5cdFx0XHRcdFx0XHRjb25zdCB0YXJnZXQgPSBza2VsZXRvbkRhdGEuZmluZEJvbmUodGFyZ2V0TmFtZSk7XG5cdFx0XHRcdFx0XHRpZiAoIXRhcmdldCkgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIHRhcmdldCBib25lICR7dGFyZ2V0TmFtZX0gZm9yIElLIGNvbnN0cmFpbnQgJHtuYW1lfS5gKTtcblx0XHRcdFx0XHRcdGRhdGEudGFyZ2V0ID0gdGFyZ2V0O1xuXG5cdFx0XHRcdFx0XHRjb25zdCBzY2FsZVkgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInNjYWxlWVwiLCBudWxsKTtcblx0XHRcdFx0XHRcdGlmIChzY2FsZVkgIT0gbnVsbCkgZGF0YS5zY2FsZVlNb2RlID0gVXRpbHMuZW51bVZhbHVlKFNjYWxlWU1vZGUsIHNjYWxlWSk7XG5cblx0XHRcdFx0XHRcdGNvbnN0IHNldHVwID0gZGF0YS5zZXR1cFBvc2U7XG5cdFx0XHRcdFx0XHRzZXR1cC5taXggPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcIm1peFwiLCAxKTtcblx0XHRcdFx0XHRcdHNldHVwLnNvZnRuZXNzID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJzb2Z0bmVzc1wiLCAwKSAqIHNjYWxlO1xuXHRcdFx0XHRcdFx0c2V0dXAuYmVuZERpcmVjdGlvbiA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwiYmVuZFBvc2l0aXZlXCIsIHRydWUpID8gMSA6IC0xO1xuXHRcdFx0XHRcdFx0c2V0dXAuY29tcHJlc3MgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcImNvbXByZXNzXCIsIGZhbHNlKTtcblx0XHRcdFx0XHRcdHNldHVwLnN0cmV0Y2ggPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInN0cmV0Y2hcIiwgZmFsc2UpO1xuXG5cdFx0XHRcdFx0XHRza2VsZXRvbkRhdGEuY29uc3RyYWludHMucHVzaChkYXRhKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlIFwidHJhbnNmb3JtXCI6IHtcblx0XHRcdFx0XHRcdGNvbnN0IGRhdGEgPSBuZXcgVHJhbnNmb3JtQ29uc3RyYWludERhdGEobmFtZSk7XG5cdFx0XHRcdFx0XHRkYXRhLnNraW5SZXF1aXJlZCA9IHNraW5SZXF1aXJlZDtcblxuXHRcdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IGNvbnN0cmFpbnRNYXAuYm9uZXMubGVuZ3RoOyBpaSsrKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGJvbmVOYW1lID0gY29uc3RyYWludE1hcC5ib25lc1tpaV07XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGJvbmUgPSBza2VsZXRvbkRhdGEuZmluZEJvbmUoYm9uZU5hbWUpO1xuXHRcdFx0XHRcdFx0XHRpZiAoIWJvbmUpIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBib25lICR7Ym9uZU5hbWV9IGZvciB0cmFuc2Zvcm0gY29uc3RyYWludCAke2NvbnN0cmFpbnRNYXAubmFtZX0uYCk7XG5cdFx0XHRcdFx0XHRcdGRhdGEuYm9uZXMucHVzaChib25lKTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Y29uc3Qgc291cmNlTmFtZTogc3RyaW5nID0gY29uc3RyYWludE1hcC5zb3VyY2U7XG5cdFx0XHRcdFx0XHRjb25zdCBzb3VyY2UgPSBza2VsZXRvbkRhdGEuZmluZEJvbmUoc291cmNlTmFtZSk7XG5cdFx0XHRcdFx0XHRpZiAoIXNvdXJjZSkgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIHNvdXJjZSBib25lICR7c291cmNlTmFtZX0gZm9yIHRyYW5zZm9ybSBjb25zdHJhaW50ICR7Y29uc3RyYWludE1hcC5uYW1lfS5gKTtcblx0XHRcdFx0XHRcdGRhdGEuc291cmNlID0gc291cmNlO1xuXG5cdFx0XHRcdFx0XHRkYXRhLmxvY2FsU291cmNlID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJsb2NhbFNvdXJjZVwiLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHRkYXRhLmxvY2FsVGFyZ2V0ID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJsb2NhbFRhcmdldFwiLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHRkYXRhLmFkZGl0aXZlID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJhZGRpdGl2ZVwiLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHRkYXRhLmNsYW1wID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJjbGFtcFwiLCBmYWxzZSk7XG5cblx0XHRcdFx0XHRcdGxldCByb3RhdGUgPSBmYWxzZSwgeCA9IGZhbHNlLCB5ID0gZmFsc2UsIHNjYWxlWCA9IGZhbHNlLCBzY2FsZVkgPSBmYWxzZSwgc2hlYXJZID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRjb25zdCBmcm9tRW50cmllcyA9IE9iamVjdC5lbnRyaWVzKGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwicHJvcGVydGllc1wiLCB7fSkpIGFzIFtzdHJpbmcsIG9iamVjdF1bXTtcblx0XHRcdFx0XHRcdGZvciAoY29uc3QgW25hbWUsIGZyb21FbnRyeV0gb2YgZnJvbUVudHJpZXMpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgZnJvbSA9IHRoaXMuZnJvbVByb3BlcnR5KG5hbWUpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBmcm9tU2NhbGUgPSB0aGlzLnByb3BlcnR5U2NhbGUobmFtZSwgc2NhbGUpO1xuXHRcdFx0XHRcdFx0XHRmcm9tLm9mZnNldCA9IGdldFZhbHVlKGZyb21FbnRyeSwgXCJvZmZzZXRcIiwgMCkgKiBmcm9tU2NhbGU7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHRvRW50cmllcyA9IE9iamVjdC5lbnRyaWVzKGdldFZhbHVlKGZyb21FbnRyeSwgXCJ0b1wiLCB7fSkpIGFzIFtzdHJpbmcsIG9iamVjdF1bXTtcblx0XHRcdFx0XHRcdFx0Zm9yIChjb25zdCBbbmFtZSwgdG9FbnRyeV0gb2YgdG9FbnRyaWVzKSB7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IHRvU2NhbGUgPSAxO1xuXHRcdFx0XHRcdFx0XHRcdGxldCB0bzogVG9Qcm9wZXJ0eTtcblx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKG5hbWUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgXCJyb3RhdGVcIjoge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyb3RhdGUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0byA9IG5ldyBUb1JvdGF0ZSgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgXCJ4XCI6IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0eCA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRvID0gbmV3IFRvWCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0b1NjYWxlID0gc2NhbGU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSBcInlcIjoge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR5ID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dG8gPSBuZXcgVG9ZKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRvU2NhbGUgPSBzY2FsZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRjYXNlIFwic2NhbGVYXCI6IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0c2NhbGVYID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dG8gPSBuZXcgVG9TY2FsZVgoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRjYXNlIFwic2NhbGVZXCI6IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0c2NhbGVZID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dG8gPSBuZXcgVG9TY2FsZVkoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRjYXNlIFwic2hlYXJZXCI6IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0c2hlYXJZID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dG8gPSBuZXcgVG9TaGVhclkoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdHJhbnNmb3JtIGNvbnN0cmFpbnQgdG8gcHJvcGVydHk6ICR7bmFtZX1gKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0dG8ub2Zmc2V0ID0gZ2V0VmFsdWUodG9FbnRyeSwgXCJvZmZzZXRcIiwgMCkgKiB0b1NjYWxlO1xuXHRcdFx0XHRcdFx0XHRcdHRvLm1heCA9IGdldFZhbHVlKHRvRW50cnksIFwibWF4XCIsIDEpICogdG9TY2FsZTtcblx0XHRcdFx0XHRcdFx0XHR0by5zY2FsZSA9IGdldFZhbHVlKHRvRW50cnksIFwic2NhbGVcIiwgMSkgKiB0b1NjYWxlIC8gZnJvbVNjYWxlO1xuXHRcdFx0XHRcdFx0XHRcdGZyb20udG8ucHVzaCh0byk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKGZyb20udG8ubGVuZ3RoID4gMCkgZGF0YS5wcm9wZXJ0aWVzLnB1c2goZnJvbSk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGRhdGEub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5ST1RBVElPTl0gPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInJvdGF0aW9uXCIsIDApO1xuXHRcdFx0XHRcdFx0ZGF0YS5vZmZzZXRzW1RyYW5zZm9ybUNvbnN0cmFpbnREYXRhLlhdID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJ4XCIsIDApICogc2NhbGU7XG5cdFx0XHRcdFx0XHRkYXRhLm9mZnNldHNbVHJhbnNmb3JtQ29uc3RyYWludERhdGEuWV0gPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInlcIiwgMCkgKiBzY2FsZTtcblx0XHRcdFx0XHRcdGRhdGEub2Zmc2V0c1tUcmFuc2Zvcm1Db25zdHJhaW50RGF0YS5TQ0FMRVhdID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJzY2FsZVhcIiwgMCk7XG5cdFx0XHRcdFx0XHRkYXRhLm9mZnNldHNbVHJhbnNmb3JtQ29uc3RyYWludERhdGEuU0NBTEVZXSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwic2NhbGVZXCIsIDApO1xuXHRcdFx0XHRcdFx0ZGF0YS5vZmZzZXRzW1RyYW5zZm9ybUNvbnN0cmFpbnREYXRhLlNIRUFSWV0gPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInNoZWFyWVwiLCAwKTtcblxuXHRcdFx0XHRcdFx0Y29uc3Qgc2V0dXAgPSBkYXRhLnNldHVwUG9zZTtcblx0XHRcdFx0XHRcdGlmIChyb3RhdGUpIHNldHVwLm1peFJvdGF0ZSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwibWl4Um90YXRlXCIsIDEpO1xuXHRcdFx0XHRcdFx0aWYgKHgpIHNldHVwLm1peFggPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcIm1peFhcIiwgMSk7XG5cdFx0XHRcdFx0XHRpZiAoeSkgc2V0dXAubWl4WSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwibWl4WVwiLCBzZXR1cC5taXhYKTtcblx0XHRcdFx0XHRcdGlmIChzY2FsZVgpIHNldHVwLm1peFNjYWxlWCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwibWl4U2NhbGVYXCIsIDEpO1xuXHRcdFx0XHRcdFx0aWYgKHNjYWxlWSkgc2V0dXAubWl4U2NhbGVZID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJtaXhTY2FsZVlcIiwgc2V0dXAubWl4U2NhbGVYKTtcblx0XHRcdFx0XHRcdGlmIChzaGVhclkpIHNldHVwLm1peFNoZWFyWSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwibWl4U2hlYXJZXCIsIDEpO1xuXG5cdFx0XHRcdFx0XHRza2VsZXRvbkRhdGEuY29uc3RyYWludHMucHVzaChkYXRhKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlIFwicGF0aFwiOiB7XG5cdFx0XHRcdFx0XHRjb25zdCBkYXRhID0gbmV3IFBhdGhDb25zdHJhaW50RGF0YShuYW1lKTtcblx0XHRcdFx0XHRcdGRhdGEuc2tpblJlcXVpcmVkID0gc2tpblJlcXVpcmVkO1xuXG5cdFx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgY29uc3RyYWludE1hcC5ib25lcy5sZW5ndGg7IGlpKyspIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgYm9uZU5hbWUgPSBjb25zdHJhaW50TWFwLmJvbmVzW2lpXTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgYm9uZSA9IHNrZWxldG9uRGF0YS5maW5kQm9uZShib25lTmFtZSk7XG5cdFx0XHRcdFx0XHRcdGlmICghYm9uZSkgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIGJvbmUgJHtib25lTmFtZX0gZm9yIHBhdGggY29uc3RyYWludCAke2NvbnN0cmFpbnRNYXAubmFtZX0uYCk7XG5cdFx0XHRcdFx0XHRcdGRhdGEuYm9uZXMucHVzaChib25lKTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Y29uc3Qgc2xvdE5hbWU6IHN0cmluZyA9IGNvbnN0cmFpbnRNYXAuc2xvdDtcblx0XHRcdFx0XHRcdGNvbnN0IHNsb3QgPSBza2VsZXRvbkRhdGEuZmluZFNsb3Qoc2xvdE5hbWUpO1xuXHRcdFx0XHRcdFx0aWYgKCFzbG90KSB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IGZpbmQgc2xvdCAke3Nsb3ROYW1lfSBmb3IgcGF0aCBjb25zdHJhaW50ICR7Y29uc3RyYWludE1hcC5uYW1lfS5gKTtcblx0XHRcdFx0XHRcdGRhdGEuc2xvdCA9IHNsb3Q7XG5cblx0XHRcdFx0XHRcdGRhdGEucG9zaXRpb25Nb2RlID0gVXRpbHMuZW51bVZhbHVlKFBvc2l0aW9uTW9kZSwgZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJwb3NpdGlvbk1vZGVcIiwgXCJQZXJjZW50XCIpKTtcblx0XHRcdFx0XHRcdGRhdGEuc3BhY2luZ01vZGUgPSBVdGlscy5lbnVtVmFsdWUoU3BhY2luZ01vZGUsIGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwic3BhY2luZ01vZGVcIiwgXCJMZW5ndGhcIikpO1xuXHRcdFx0XHRcdFx0ZGF0YS5yb3RhdGVNb2RlID0gVXRpbHMuZW51bVZhbHVlKFJvdGF0ZU1vZGUsIGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwicm90YXRlTW9kZVwiLCBcIlRhbmdlbnRcIikpO1xuXHRcdFx0XHRcdFx0ZGF0YS5vZmZzZXRSb3RhdGlvbiA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwicm90YXRpb25cIiwgMCk7XG5cdFx0XHRcdFx0XHRjb25zdCBzZXR1cCA9IGRhdGEuc2V0dXBQb3NlO1xuXHRcdFx0XHRcdFx0c2V0dXAucG9zaXRpb24gPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInBvc2l0aW9uXCIsIDApO1xuXHRcdFx0XHRcdFx0aWYgKGRhdGEucG9zaXRpb25Nb2RlID09PSBQb3NpdGlvbk1vZGUuRml4ZWQpIHNldHVwLnBvc2l0aW9uICo9IHNjYWxlO1xuXHRcdFx0XHRcdFx0c2V0dXAuc3BhY2luZyA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwic3BhY2luZ1wiLCAwKTtcblx0XHRcdFx0XHRcdGlmIChkYXRhLnNwYWNpbmdNb2RlID09PSBTcGFjaW5nTW9kZS5MZW5ndGggfHwgZGF0YS5zcGFjaW5nTW9kZSA9PT0gU3BhY2luZ01vZGUuRml4ZWQpIHNldHVwLnNwYWNpbmcgKj0gc2NhbGU7XG5cdFx0XHRcdFx0XHRzZXR1cC5taXhSb3RhdGUgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcIm1peFJvdGF0ZVwiLCAxKTtcblx0XHRcdFx0XHRcdHNldHVwLm1peFggPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcIm1peFhcIiwgMSk7XG5cdFx0XHRcdFx0XHRzZXR1cC5taXhZID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJtaXhZXCIsIHNldHVwLm1peFgpO1xuXG5cdFx0XHRcdFx0XHRza2VsZXRvbkRhdGEuY29uc3RyYWludHMucHVzaChkYXRhKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjYXNlIFwicGh5c2ljc1wiOiB7XG5cdFx0XHRcdFx0XHRjb25zdCBkYXRhID0gbmV3IFBoeXNpY3NDb25zdHJhaW50RGF0YShuYW1lKTtcblx0XHRcdFx0XHRcdGRhdGEuc2tpblJlcXVpcmVkID0gc2tpblJlcXVpcmVkO1xuXG5cdFx0XHRcdFx0XHRjb25zdCBib25lTmFtZTogc3RyaW5nID0gY29uc3RyYWludE1hcC5ib25lO1xuXHRcdFx0XHRcdFx0Y29uc3QgYm9uZSA9IHNrZWxldG9uRGF0YS5maW5kQm9uZShib25lTmFtZSk7XG5cdFx0XHRcdFx0XHRpZiAoYm9uZSA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoYFBoeXNpY3MgYm9uZSBub3QgZm91bmQ6ICR7Ym9uZU5hbWV9YCk7XG5cdFx0XHRcdFx0XHRkYXRhLmJvbmUgPSBib25lO1xuXG5cdFx0XHRcdFx0XHRkYXRhLnggPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInhcIiwgMCk7XG5cdFx0XHRcdFx0XHRkYXRhLnkgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInlcIiwgMCk7XG5cdFx0XHRcdFx0XHRkYXRhLnJvdGF0ZSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwicm90YXRlXCIsIDApO1xuXHRcdFx0XHRcdFx0ZGF0YS5zY2FsZVggPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInNjYWxlWFwiLCAwKTtcblxuXHRcdFx0XHRcdFx0Y29uc3Qgc2NhbGVZID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJzY2FsZVlcIiwgbnVsbCk7XG5cdFx0XHRcdFx0XHRpZiAoc2NhbGVZICE9IG51bGwpIGRhdGEuc2NhbGVZTW9kZSA9IFV0aWxzLmVudW1WYWx1ZShTY2FsZVlNb2RlLCBzY2FsZVkpO1xuXG5cdFx0XHRcdFx0XHRkYXRhLnNoZWFyWCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwic2hlYXJYXCIsIDApO1xuXHRcdFx0XHRcdFx0ZGF0YS5saW1pdCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwibGltaXRcIiwgNTAwMCkgKiBzY2FsZTtcblx0XHRcdFx0XHRcdGRhdGEuc3RlcCA9IDEgLyBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcImZwc1wiLCA2MCk7XG5cdFx0XHRcdFx0XHRjb25zdCBzZXR1cCA9IGRhdGEuc2V0dXBQb3NlO1xuXHRcdFx0XHRcdFx0c2V0dXAuaW5lcnRpYSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwiaW5lcnRpYVwiLCAwLjUpO1xuXHRcdFx0XHRcdFx0c2V0dXAuc3RyZW5ndGggPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInN0cmVuZ3RoXCIsIDEwMCk7XG5cdFx0XHRcdFx0XHRzZXR1cC5kYW1waW5nID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJkYW1waW5nXCIsIDAuODUpO1xuXHRcdFx0XHRcdFx0c2V0dXAubWFzc0ludmVyc2UgPSAxIC8gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJtYXNzXCIsIDEpO1xuXHRcdFx0XHRcdFx0c2V0dXAud2luZCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwid2luZFwiLCAwKTtcblx0XHRcdFx0XHRcdHNldHVwLmdyYXZpdHkgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcImdyYXZpdHlcIiwgMCk7XG5cdFx0XHRcdFx0XHRzZXR1cC5taXggPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcIm1peFwiLCAxKTtcblx0XHRcdFx0XHRcdGRhdGEuaW5lcnRpYUdsb2JhbCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwiaW5lcnRpYUdsb2JhbFwiLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHRkYXRhLnN0cmVuZ3RoR2xvYmFsID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJzdHJlbmd0aEdsb2JhbFwiLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHRkYXRhLmRhbXBpbmdHbG9iYWwgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcImRhbXBpbmdHbG9iYWxcIiwgZmFsc2UpO1xuXHRcdFx0XHRcdFx0ZGF0YS5tYXNzR2xvYmFsID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJtYXNzR2xvYmFsXCIsIGZhbHNlKTtcblx0XHRcdFx0XHRcdGRhdGEud2luZEdsb2JhbCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwid2luZEdsb2JhbFwiLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHRkYXRhLmdyYXZpdHlHbG9iYWwgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcImdyYXZpdHlHbG9iYWxcIiwgZmFsc2UpO1xuXHRcdFx0XHRcdFx0ZGF0YS5taXhHbG9iYWwgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcIm1peEdsb2JhbFwiLCBmYWxzZSk7XG5cblx0XHRcdFx0XHRcdHNrZWxldG9uRGF0YS5jb25zdHJhaW50cy5wdXNoKGRhdGEpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNhc2UgXCJzbGlkZXJcIjoge1xuXHRcdFx0XHRcdFx0Y29uc3QgZGF0YSA9IG5ldyBTbGlkZXJEYXRhKG5hbWUpO1xuXHRcdFx0XHRcdFx0ZGF0YS5za2luUmVxdWlyZWQgPSBza2luUmVxdWlyZWQ7XG5cblx0XHRcdFx0XHRcdGRhdGEuYWRkaXRpdmUgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcImFkZGl0aXZlXCIsIGZhbHNlKTtcblx0XHRcdFx0XHRcdGRhdGEubG9vcCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwibG9vcFwiLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHRkYXRhLnNldHVwUG9zZS50aW1lID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0ZGF0YS5zZXR1cFBvc2UubWl4ID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJtaXhcIiwgMSk7XG5cblx0XHRcdFx0XHRcdGNvbnN0IGJvbmVOYW1lOiBzdHJpbmcgPSBjb25zdHJhaW50TWFwLmJvbmU7XG5cdFx0XHRcdFx0XHRpZiAoYm9uZU5hbWUpIHtcblx0XHRcdFx0XHRcdFx0ZGF0YS5ib25lID0gc2tlbGV0b25EYXRhLmZpbmRCb25lKGJvbmVOYW1lKTtcblx0XHRcdFx0XHRcdFx0aWYgKCFkYXRhLmJvbmUpIHRocm93IG5ldyBFcnJvcihgU2xpZGVyIGJvbmUgbm90IGZvdW5kOiAke2JvbmVOYW1lfWApO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBwcm9wZXJ0eSA9IGNvbnN0cmFpbnRNYXAucHJvcGVydHk7XG5cdFx0XHRcdFx0XHRcdGRhdGEucHJvcGVydHkgPSB0aGlzLmZyb21Qcm9wZXJ0eShwcm9wZXJ0eSk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHByb3BlcnR5U2NhbGUgPSB0aGlzLnByb3BlcnR5U2NhbGUocHJvcGVydHksIHNjYWxlKTtcblx0XHRcdFx0XHRcdFx0ZGF0YS5wcm9wZXJ0eS5vZmZzZXQgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcImZyb21cIiwgMCkgKiBwcm9wZXJ0eVNjYWxlO1xuXHRcdFx0XHRcdFx0XHRkYXRhLm9mZnNldCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwidG9cIiwgMCk7XG5cdFx0XHRcdFx0XHRcdGRhdGEuc2NhbGUgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInNjYWxlXCIsIDEpIC8gcHJvcGVydHlTY2FsZTtcblx0XHRcdFx0XHRcdFx0ZGF0YS5sb2NhbCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwibG9jYWxcIiwgZmFsc2UpO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRza2VsZXRvbkRhdGEuY29uc3RyYWludHMucHVzaChkYXRhKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFNraW5zLlxuXHRcdGlmIChyb290LnNraW5zKSB7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHJvb3Quc2tpbnMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0Y29uc3Qgc2tpbk1hcCA9IHJvb3Quc2tpbnNbaV1cblx0XHRcdFx0Y29uc3Qgc2tpbiA9IG5ldyBTa2luKHNraW5NYXAubmFtZSk7XG5cblx0XHRcdFx0aWYgKHNraW5NYXAuYm9uZXMpIHtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgc2tpbk1hcC5ib25lcy5sZW5ndGg7IGlpKyspIHtcblx0XHRcdFx0XHRcdGNvbnN0IGJvbmVOYW1lID0gc2tpbk1hcC5ib25lc1tpaV07XG5cdFx0XHRcdFx0XHRjb25zdCBib25lID0gc2tlbGV0b25EYXRhLmZpbmRCb25lKGJvbmVOYW1lKTtcblx0XHRcdFx0XHRcdGlmICghYm9uZSkgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIGJvbmUgJHtib25lTmFtZX0gZm9yIHNraW4gJHtza2luTWFwLm5hbWV9LmApO1xuXHRcdFx0XHRcdFx0c2tpbi5ib25lcy5wdXNoKGJvbmUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChza2luTWFwLmlrKSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IHNraW5NYXAuaWsubGVuZ3RoOyBpaSsrKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBjb25zdHJhaW50TmFtZSA9IHNraW5NYXAuaWtbaWldO1xuXHRcdFx0XHRcdFx0Y29uc3QgY29uc3RyYWludCA9IHNrZWxldG9uRGF0YS5maW5kQ29uc3RyYWludChjb25zdHJhaW50TmFtZSwgSWtDb25zdHJhaW50RGF0YSk7XG5cdFx0XHRcdFx0XHRpZiAoIWNvbnN0cmFpbnQpIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBJSyBjb25zdHJhaW50ICR7Y29uc3RyYWludE5hbWV9IGZvciBza2luICR7c2tpbk1hcC5uYW1lfS5gKTtcblx0XHRcdFx0XHRcdHNraW4uY29uc3RyYWludHMucHVzaChjb25zdHJhaW50KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoc2tpbk1hcC50cmFuc2Zvcm0pIHtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgc2tpbk1hcC50cmFuc2Zvcm0ubGVuZ3RoOyBpaSsrKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBjb25zdHJhaW50TmFtZSA9IHNraW5NYXAudHJhbnNmb3JtW2lpXTtcblx0XHRcdFx0XHRcdGNvbnN0IGNvbnN0cmFpbnQgPSBza2VsZXRvbkRhdGEuZmluZENvbnN0cmFpbnQoY29uc3RyYWludE5hbWUsIFRyYW5zZm9ybUNvbnN0cmFpbnREYXRhKTtcblx0XHRcdFx0XHRcdGlmICghY29uc3RyYWludCkgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIHRyYW5zZm9ybSBjb25zdHJhaW50ICR7Y29uc3RyYWludE5hbWV9IGZvciBza2luICR7c2tpbk1hcC5uYW1lfS5gKTtcblx0XHRcdFx0XHRcdHNraW4uY29uc3RyYWludHMucHVzaChjb25zdHJhaW50KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoc2tpbk1hcC5wYXRoKSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IHNraW5NYXAucGF0aC5sZW5ndGg7IGlpKyspIHtcblx0XHRcdFx0XHRcdGNvbnN0IGNvbnN0cmFpbnROYW1lID0gc2tpbk1hcC5wYXRoW2lpXTtcblx0XHRcdFx0XHRcdGNvbnN0IGNvbnN0cmFpbnQgPSBza2VsZXRvbkRhdGEuZmluZENvbnN0cmFpbnQoY29uc3RyYWludE5hbWUsIFBhdGhDb25zdHJhaW50RGF0YSk7XG5cdFx0XHRcdFx0XHRpZiAoIWNvbnN0cmFpbnQpIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBwYXRoIGNvbnN0cmFpbnQgJHtjb25zdHJhaW50TmFtZX0gZm9yIHNraW4gJHtza2luTWFwLm5hbWV9LmApO1xuXHRcdFx0XHRcdFx0c2tpbi5jb25zdHJhaW50cy5wdXNoKGNvbnN0cmFpbnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChza2luTWFwLnBoeXNpY3MpIHtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgc2tpbk1hcC5waHlzaWNzLmxlbmd0aDsgaWkrKykge1xuXHRcdFx0XHRcdFx0Y29uc3QgY29uc3RyYWludE5hbWUgPSBza2luTWFwLnBoeXNpY3NbaWldO1xuXHRcdFx0XHRcdFx0Y29uc3QgY29uc3RyYWludCA9IHNrZWxldG9uRGF0YS5maW5kQ29uc3RyYWludChjb25zdHJhaW50TmFtZSwgUGh5c2ljc0NvbnN0cmFpbnREYXRhKTtcblx0XHRcdFx0XHRcdGlmICghY29uc3RyYWludCkgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIHBoeXNpY3MgY29uc3RyYWludCAke2NvbnN0cmFpbnROYW1lfSBmb3Igc2tpbiAke3NraW5NYXAubmFtZX0uYCk7XG5cdFx0XHRcdFx0XHRza2luLmNvbnN0cmFpbnRzLnB1c2goY29uc3RyYWludCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHNraW5NYXAuc2xpZGVyKSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IHNraW5NYXAuc2xpZGVyLmxlbmd0aDsgaWkrKykge1xuXHRcdFx0XHRcdFx0Y29uc3QgY29uc3RyYWludE5hbWUgPSBza2luTWFwLnNsaWRlcltpaV07XG5cdFx0XHRcdFx0XHRjb25zdCBjb25zdHJhaW50ID0gc2tlbGV0b25EYXRhLmZpbmRDb25zdHJhaW50KGNvbnN0cmFpbnROYW1lLCBTbGlkZXJEYXRhKTtcblx0XHRcdFx0XHRcdGlmICghY29uc3RyYWludCkgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIHNsaWRlciBjb25zdHJhaW50ICR7Y29uc3RyYWludE5hbWV9IGZvciBza2luICR7c2tpbk1hcC5uYW1lfS5gKTtcblx0XHRcdFx0XHRcdHNraW4uY29uc3RyYWludHMucHVzaChjb25zdHJhaW50KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRmb3IgKGNvbnN0IHNsb3ROYW1lIGluIHNraW5NYXAuYXR0YWNobWVudHMpIHtcblx0XHRcdFx0XHRjb25zdCBzbG90ID0gc2tlbGV0b25EYXRhLmZpbmRTbG90KHNsb3ROYW1lKTtcblx0XHRcdFx0XHRpZiAoIXNsb3QpIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBza2luIHNsb3QgJHtzbG90TmFtZX0gZm9yIHNraW4gJHtza2luTWFwLm5hbWV9LmApO1xuXHRcdFx0XHRcdGNvbnN0IHNsb3RNYXAgPSBza2luTWFwLmF0dGFjaG1lbnRzW3Nsb3ROYW1lXTtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IGVudHJ5TmFtZSBpbiBzbG90TWFwKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBhdHRhY2htZW50ID0gdGhpcy5yZWFkQXR0YWNobWVudChzbG90TWFwW2VudHJ5TmFtZV0sIHNraW4sIHNsb3QuaW5kZXgsIGVudHJ5TmFtZSwgc2tlbGV0b25EYXRhKTtcblx0XHRcdFx0XHRcdGlmIChhdHRhY2htZW50KSBza2luLnNldEF0dGFjaG1lbnQoc2xvdC5pbmRleCwgZW50cnlOYW1lLCBhdHRhY2htZW50KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0c2tlbGV0b25EYXRhLnNraW5zLnB1c2goc2tpbik7XG5cdFx0XHRcdGlmIChza2luLm5hbWUgPT09IFwiZGVmYXVsdFwiKSBza2VsZXRvbkRhdGEuZGVmYXVsdFNraW4gPSBza2luO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIExpbmtlZCBtZXNoZXMuXG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSB0aGlzLmxpbmtlZE1lc2hlcy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdGNvbnN0IGxpbmtlZE1lc2ggPSB0aGlzLmxpbmtlZE1lc2hlc1tpXTtcblx0XHRcdGNvbnN0IHNraW4gPSAhbGlua2VkTWVzaC5za2luID8gc2tlbGV0b25EYXRhLmRlZmF1bHRTa2luIDogc2tlbGV0b25EYXRhLmZpbmRTa2luKGxpbmtlZE1lc2guc2tpbik7XG5cdFx0XHRpZiAoIXNraW4pIHRocm93IG5ldyBFcnJvcihgU2tpbiBub3QgZm91bmQ6ICR7bGlua2VkTWVzaC5za2lufWApO1xuXHRcdFx0Y29uc3Qgc291cmNlID0gc2tpbi5nZXRBdHRhY2htZW50KGxpbmtlZE1lc2guc291cmNlSW5kZXgsIGxpbmtlZE1lc2guc291cmNlKTtcblx0XHRcdGlmICghc291cmNlKSB0aHJvdyBuZXcgRXJyb3IoYFNvdXJjZSBtZXNoIG5vdCBmb3VuZDogJHtsaW5rZWRNZXNoLnNvdXJjZX1gKTtcblx0XHRcdGxpbmtlZE1lc2gubWVzaC50aW1lbGluZUF0dGFjaG1lbnQgPSBsaW5rZWRNZXNoLmluaGVyaXRUaW1lbGluZXMgPyBzb3VyY2UgOiBsaW5rZWRNZXNoLm1lc2g7XG5cdFx0XHRsaW5rZWRNZXNoLm1lc2guc2V0U291cmNlTWVzaChzb3VyY2UgYXMgTWVzaEF0dGFjaG1lbnQpO1xuXHRcdFx0bGlua2VkTWVzaC5tZXNoLnVwZGF0ZVNlcXVlbmNlKCk7XG5cdFx0XHQvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vQ29uZnVzaW5nTGFiZWxzOiByZWZlcmVuY2UgcnVudGltZVxuXHRcdFx0b3V0ZXI6XG5cdFx0XHRpZiAobGlua2VkTWVzaC5pbmhlcml0VGltZWxpbmVzICYmIGxpbmtlZE1lc2guc2xvdEluZGV4ICE9PSBsaW5rZWRNZXNoLnNvdXJjZUluZGV4KSB7XG5cdFx0XHRcdGNvbnN0IHNsb3RzID0gc291cmNlLnRpbWVsaW5lU2xvdHM7XG5cdFx0XHRcdGZvciAoY29uc3QgZXhpc3Rpbmcgb2Ygc2xvdHMpXG5cdFx0XHRcdFx0aWYgKGV4aXN0aW5nID09PSBsaW5rZWRNZXNoLnNsb3RJbmRleCkgYnJlYWsgb3V0ZXI7XG5cdFx0XHRcdGNvbnN0IG5ld1Nsb3RzID0gWy4uLnNsb3RzXTtcblx0XHRcdFx0bmV3U2xvdHNbc2xvdHMubGVuZ3RoXSA9IGxpbmtlZE1lc2guc2xvdEluZGV4O1xuXHRcdFx0XHRzb3VyY2UudGltZWxpbmVTbG90cyA9IG5ld1Nsb3RzO1xuXHRcdFx0fVxuXHRcdH1cblx0XHR0aGlzLmxpbmtlZE1lc2hlcy5sZW5ndGggPSAwO1xuXG5cdFx0Ly8gRXZlbnRzLlxuXHRcdGlmIChyb290LmV2ZW50cykge1xuXHRcdFx0Zm9yIChjb25zdCBldmVudE5hbWUgaW4gcm9vdC5ldmVudHMpIHtcblx0XHRcdFx0Y29uc3QgZXZlbnRNYXAgPSByb290LmV2ZW50c1tldmVudE5hbWVdO1xuXHRcdFx0XHRjb25zdCBkYXRhID0gbmV3IEV2ZW50RGF0YShldmVudE5hbWUpO1xuXHRcdFx0XHRjb25zdCBzZXR1cCA9IGRhdGEuc2V0dXBQb3NlO1xuXHRcdFx0XHRzZXR1cC5pbnRWYWx1ZSA9IGdldFZhbHVlKGV2ZW50TWFwLCBcImludFwiLCAwKTtcblx0XHRcdFx0c2V0dXAuZmxvYXRWYWx1ZSA9IGdldFZhbHVlKGV2ZW50TWFwLCBcImZsb2F0XCIsIDApO1xuXHRcdFx0XHRzZXR1cC5zdHJpbmdWYWx1ZSA9IGdldFZhbHVlKGV2ZW50TWFwLCBcInN0cmluZ1wiLCBcIlwiKTtcblx0XHRcdFx0ZGF0YS5fYXVkaW9QYXRoID0gZ2V0VmFsdWUoZXZlbnRNYXAsIFwiYXVkaW9cIiwgbnVsbCk7XG5cdFx0XHRcdGlmIChkYXRhLmF1ZGlvUGF0aCkge1xuXHRcdFx0XHRcdHNldHVwLnZvbHVtZSA9IGdldFZhbHVlKGV2ZW50TWFwLCBcInZvbHVtZVwiLCBzZXR1cC52b2x1bWUpO1xuXHRcdFx0XHRcdHNldHVwLmJhbGFuY2UgPSBnZXRWYWx1ZShldmVudE1hcCwgXCJiYWxhbmNlXCIsIHNldHVwLmJhbGFuY2UpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHNrZWxldG9uRGF0YS5ldmVudHMucHVzaChkYXRhKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBBbmltYXRpb25zLlxuXHRcdGlmIChyb290LmFuaW1hdGlvbnMpIHtcblx0XHRcdGZvciAoY29uc3QgYW5pbWF0aW9uTmFtZSBpbiByb290LmFuaW1hdGlvbnMpIHtcblx0XHRcdFx0Y29uc3QgYW5pbWF0aW9uTWFwID0gcm9vdC5hbmltYXRpb25zW2FuaW1hdGlvbk5hbWVdO1xuXHRcdFx0XHR0aGlzLnJlYWRBbmltYXRpb24oYW5pbWF0aW9uTWFwLCBhbmltYXRpb25OYW1lLCBza2VsZXRvbkRhdGEpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFNsaWRlciBhbmltYXRpb25zLlxuXHRcdGlmIChyb290LmNvbnN0cmFpbnRzKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGFuaW1hdGlvbk5hbWUgaW4gcm9vdC5jb25zdHJhaW50cykge1xuXHRcdFx0XHRjb25zdCBhbmltYXRpb25NYXAgPSByb290LmNvbnN0cmFpbnRzW2FuaW1hdGlvbk5hbWVdO1xuXHRcdFx0XHRpZiAoYW5pbWF0aW9uTWFwLnR5cGUgPT09IFwic2xpZGVyXCIpIHtcblx0XHRcdFx0XHRjb25zdCBkYXRhID0gc2tlbGV0b25EYXRhLmZpbmRDb25zdHJhaW50KGFuaW1hdGlvbk1hcC5uYW1lLCBTbGlkZXJEYXRhKVxuXHRcdFx0XHRcdGNvbnN0IGFuaW1hdGlvbk5hbWUgPSBhbmltYXRpb25NYXAuYW5pbWF0aW9uO1xuXHRcdFx0XHRcdGNvbnN0IGFuaW1hdGlvbiA9IHNrZWxldG9uRGF0YS5maW5kQW5pbWF0aW9uKGFuaW1hdGlvbk5hbWUpO1xuXHRcdFx0XHRcdGlmICghYW5pbWF0aW9uKSB0aHJvdyBuZXcgRXJyb3IoYFNsaWRlciBhbmltYXRpb24gbm90IGZvdW5kOiAke2FuaW1hdGlvbk5hbWV9YCk7XG5cdFx0XHRcdFx0Ly8gYmlvbWUtaWdub3JlIGxpbnQvc3R5bGUvbm9Ob25OdWxsQXNzZXJ0aW9uOiByZWZlcmVuY2UgcnVudGltZVxuXHRcdFx0XHRcdGRhdGEhLmFuaW1hdGlvbiA9IGFuaW1hdGlvbjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBza2VsZXRvbkRhdGE7XG5cdH1cblxuXHRwcml2YXRlIGZyb21Qcm9wZXJ0eSAodHlwZTogc3RyaW5nKTogRnJvbVByb3BlcnR5IHtcblx0XHRsZXQgZnJvbTogRnJvbVByb3BlcnR5O1xuXHRcdHN3aXRjaCAodHlwZSkge1xuXHRcdFx0Y2FzZSBcInJvdGF0ZVwiOiBmcm9tID0gbmV3IEZyb21Sb3RhdGUoKTsgYnJlYWs7XG5cdFx0XHRjYXNlIFwieFwiOiBmcm9tID0gbmV3IEZyb21YKCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSBcInlcIjogZnJvbSA9IG5ldyBGcm9tWSgpOyBicmVhaztcblx0XHRcdGNhc2UgXCJzY2FsZVhcIjogZnJvbSA9IG5ldyBGcm9tU2NhbGVYKCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSBcInNjYWxlWVwiOiBmcm9tID0gbmV3IEZyb21TY2FsZVkoKTsgYnJlYWs7XG5cdFx0XHRjYXNlIFwic2hlYXJZXCI6IGZyb20gPSBuZXcgRnJvbVNoZWFyWSgpOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0cmFuc2Zvcm0gY29uc3RyYWludCBmcm9tIHByb3BlcnR5OiAke3R5cGV9YCk7XG5cdFx0fVxuXHRcdHJldHVybiBmcm9tO1xuXHR9XG5cblx0cHJpdmF0ZSBwcm9wZXJ0eVNjYWxlICh0eXBlOiBzdHJpbmcsIHNjYWxlOiBudW1iZXIpIHtcblx0XHRzd2l0Y2ggKHR5cGUpIHtcblx0XHRcdGNhc2UgXCJ4XCI6XG5cdFx0XHRjYXNlIFwieVwiOiByZXR1cm4gc2NhbGU7XG5cdFx0XHRkZWZhdWx0OiByZXR1cm4gMTtcblx0XHR9XG5cdH1cblxuXHQvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IGl0IGlzIGFueSB1bnRpbCB3ZSBkZWZpbmUgYSBzY2hlbWFcblx0cmVhZEF0dGFjaG1lbnQgKG1hcDogYW55LCBza2luOiBTa2luLCBzbG90SW5kZXg6IG51bWJlciwgcGxhY2Vob2xkZXI6IHN0cmluZywgc2tlbGV0b25EYXRhOiBTa2VsZXRvbkRhdGEpOiBBdHRhY2htZW50IHwgbnVsbCB7XG5cdFx0Y29uc3Qgc2NhbGUgPSB0aGlzLnNjYWxlO1xuXHRcdGNvbnN0IG5hbWUgPSBnZXRWYWx1ZShtYXAsIFwibmFtZVwiLCBwbGFjZWhvbGRlcik7XG5cblx0XHRzd2l0Y2ggKGdldFZhbHVlKG1hcCwgXCJ0eXBlXCIsIFwicmVnaW9uXCIpKSB7XG5cdFx0XHRjYXNlIFwicmVnaW9uXCI6IHtcblx0XHRcdFx0Y29uc3QgcGF0aCA9IGdldFZhbHVlKG1hcCwgXCJwYXRoXCIsIG5hbWUpO1xuXHRcdFx0XHRjb25zdCBzZXF1ZW5jZSA9IHRoaXMucmVhZFNlcXVlbmNlKGdldFZhbHVlKG1hcCwgXCJzZXF1ZW5jZVwiLCBudWxsKSk7XG5cdFx0XHRcdGNvbnN0IHJlZ2lvbiA9IHRoaXMuYXR0YWNobWVudExvYWRlci5uZXdSZWdpb25BdHRhY2htZW50KHNraW4sIHBsYWNlaG9sZGVyLCBuYW1lLCBwYXRoLCBzZXF1ZW5jZSk7XG5cdFx0XHRcdGlmICghcmVnaW9uKSByZXR1cm4gbnVsbDtcblx0XHRcdFx0cmVnaW9uLnBhdGggPSBwYXRoO1xuXHRcdFx0XHRyZWdpb24ueCA9IGdldFZhbHVlKG1hcCwgXCJ4XCIsIDApICogc2NhbGU7XG5cdFx0XHRcdHJlZ2lvbi55ID0gZ2V0VmFsdWUobWFwLCBcInlcIiwgMCkgKiBzY2FsZTtcblx0XHRcdFx0cmVnaW9uLnNjYWxlWCA9IGdldFZhbHVlKG1hcCwgXCJzY2FsZVhcIiwgMSk7XG5cdFx0XHRcdHJlZ2lvbi5zY2FsZVkgPSBnZXRWYWx1ZShtYXAsIFwic2NhbGVZXCIsIDEpO1xuXHRcdFx0XHRyZWdpb24ucm90YXRpb24gPSBnZXRWYWx1ZShtYXAsIFwicm90YXRpb25cIiwgMCk7XG5cdFx0XHRcdHJlZ2lvbi53aWR0aCA9IG1hcC53aWR0aCAqIHNjYWxlO1xuXHRcdFx0XHRyZWdpb24uaGVpZ2h0ID0gbWFwLmhlaWdodCAqIHNjYWxlO1xuXG5cdFx0XHRcdGNvbnN0IGNvbG9yOiBzdHJpbmcgPSBnZXRWYWx1ZShtYXAsIFwiY29sb3JcIiwgbnVsbCk7XG5cdFx0XHRcdGlmIChjb2xvcikgcmVnaW9uLmNvbG9yLnNldEZyb21TdHJpbmcoY29sb3IpO1xuXG5cdFx0XHRcdHJlZ2lvbi51cGRhdGVTZXF1ZW5jZSgpO1xuXHRcdFx0XHRyZXR1cm4gcmVnaW9uO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBcImJvdW5kaW5nYm94XCI6IHtcblx0XHRcdFx0Y29uc3QgYm94ID0gdGhpcy5hdHRhY2htZW50TG9hZGVyLm5ld0JvdW5kaW5nQm94QXR0YWNobWVudChza2luLCBwbGFjZWhvbGRlciwgbmFtZSk7XG5cdFx0XHRcdGlmICghYm94KSByZXR1cm4gbnVsbDtcblx0XHRcdFx0dGhpcy5yZWFkVmVydGljZXMobWFwLCBib3gsIG1hcC52ZXJ0ZXhDb3VudCA8PCAxKTtcblx0XHRcdFx0Y29uc3QgY29sb3I6IHN0cmluZyA9IGdldFZhbHVlKG1hcCwgXCJjb2xvclwiLCBudWxsKTtcblx0XHRcdFx0aWYgKGNvbG9yKSBib3guY29sb3Iuc2V0RnJvbVN0cmluZyhjb2xvcik7XG5cdFx0XHRcdHJldHVybiBib3g7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwibWVzaFwiOlxuXHRcdFx0Y2FzZSBcImxpbmtlZG1lc2hcIjoge1xuXHRcdFx0XHRjb25zdCBwYXRoID0gZ2V0VmFsdWUobWFwLCBcInBhdGhcIiwgbmFtZSk7XG5cdFx0XHRcdGNvbnN0IHNlcXVlbmNlID0gdGhpcy5yZWFkU2VxdWVuY2UoZ2V0VmFsdWUobWFwLCBcInNlcXVlbmNlXCIsIG51bGwpKTtcblx0XHRcdFx0Y29uc3QgbWVzaCA9IHRoaXMuYXR0YWNobWVudExvYWRlci5uZXdNZXNoQXR0YWNobWVudChza2luLCBwbGFjZWhvbGRlciwgbmFtZSwgcGF0aCwgc2VxdWVuY2UpO1xuXHRcdFx0XHRpZiAoIW1lc2gpIHJldHVybiBudWxsO1xuXHRcdFx0XHRtZXNoLnBhdGggPSBwYXRoO1xuXG5cdFx0XHRcdGNvbnN0IGNvbG9yID0gZ2V0VmFsdWUobWFwLCBcImNvbG9yXCIsIG51bGwpO1xuXHRcdFx0XHRpZiAoY29sb3IpIG1lc2guY29sb3Iuc2V0RnJvbVN0cmluZyhjb2xvcik7XG5cblx0XHRcdFx0bWVzaC53aWR0aCA9IGdldFZhbHVlKG1hcCwgXCJ3aWR0aFwiLCAwKSAqIHNjYWxlO1xuXHRcdFx0XHRtZXNoLmhlaWdodCA9IGdldFZhbHVlKG1hcCwgXCJoZWlnaHRcIiwgMCkgKiBzY2FsZTtcblxuXHRcdFx0XHRjb25zdCBzb3VyY2U6IHN0cmluZyA9IGdldFZhbHVlKG1hcCwgXCJzb3VyY2VcIiwgbnVsbCk7XG5cdFx0XHRcdGlmIChzb3VyY2UpIHtcblx0XHRcdFx0XHRsZXQgc291cmNlSW5kZXggPSBzbG90SW5kZXg7XG5cdFx0XHRcdFx0Y29uc3Qgc2xvdCA9IGdldFZhbHVlKG1hcCwgXCJzbG90XCIsIG51bGwpO1xuXHRcdFx0XHRcdGlmIChzbG90KSB7XG5cdFx0XHRcdFx0XHRjb25zdCBzb3VyY2VTbG90ID0gc2tlbGV0b25EYXRhLmZpbmRTbG90KHNsb3QpO1xuXHRcdFx0XHRcdFx0aWYgKCFzb3VyY2VTbG90KSB0aHJvdyBuZXcgRXJyb3IoYFNvdXJjZSBtZXNoIHNsb3Qgbm90IGZvdW5kOiAke3Nsb3R9YCk7XG5cdFx0XHRcdFx0XHRzb3VyY2VJbmRleCA9IHNvdXJjZVNsb3QuaW5kZXg7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMubGlua2VkTWVzaGVzLnB1c2gobmV3IExpbmtlZE1lc2gobWVzaCwgZ2V0VmFsdWUobWFwLCBcInNraW5cIiwgbnVsbCksIHNsb3RJbmRleCwgc291cmNlSW5kZXgsIHNvdXJjZSxcblx0XHRcdFx0XHRcdGdldFZhbHVlKG1hcCwgXCJ0aW1lbGluZXNcIiwgdHJ1ZSkpKTtcblx0XHRcdFx0XHRyZXR1cm4gbWVzaDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IHV2czogQXJyYXk8bnVtYmVyPiA9IG1hcC51dnM7XG5cdFx0XHRcdHRoaXMucmVhZFZlcnRpY2VzKG1hcCwgbWVzaCwgdXZzLmxlbmd0aCk7XG5cdFx0XHRcdG1lc2gudHJpYW5nbGVzID0gbWFwLnRyaWFuZ2xlcztcblx0XHRcdFx0bWVzaC5yZWdpb25VVnMgPSB1dnM7XG5cblx0XHRcdFx0bWVzaC5lZGdlcyA9IGdldFZhbHVlKG1hcCwgXCJlZGdlc1wiLCBudWxsKTtcblx0XHRcdFx0bWVzaC5odWxsTGVuZ3RoID0gZ2V0VmFsdWUobWFwLCBcImh1bGxcIiwgMCkgKiAyO1xuXHRcdFx0XHRtZXNoLnVwZGF0ZVNlcXVlbmNlKCk7XG5cdFx0XHRcdHJldHVybiBtZXNoO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBcInBhdGhcIjoge1xuXHRcdFx0XHRjb25zdCBwYXRoID0gdGhpcy5hdHRhY2htZW50TG9hZGVyLm5ld1BhdGhBdHRhY2htZW50KHNraW4sIHBsYWNlaG9sZGVyLCBuYW1lKTtcblx0XHRcdFx0aWYgKCFwYXRoKSByZXR1cm4gbnVsbDtcblx0XHRcdFx0cGF0aC5jbG9zZWQgPSBnZXRWYWx1ZShtYXAsIFwiY2xvc2VkXCIsIGZhbHNlKTtcblx0XHRcdFx0cGF0aC5jb25zdGFudFNwZWVkID0gZ2V0VmFsdWUobWFwLCBcImNvbnN0YW50U3BlZWRcIiwgdHJ1ZSk7XG5cblx0XHRcdFx0Y29uc3QgdmVydGV4Q291bnQgPSBtYXAudmVydGV4Q291bnQ7XG5cdFx0XHRcdHRoaXMucmVhZFZlcnRpY2VzKG1hcCwgcGF0aCwgdmVydGV4Q291bnQgPDwgMSk7XG5cblx0XHRcdFx0Y29uc3QgbGVuZ3RoczogQXJyYXk8bnVtYmVyPiA9IFV0aWxzLm5ld0FycmF5KHZlcnRleENvdW50IC8gMywgMCk7XG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbWFwLmxlbmd0aHMubGVuZ3RoOyBpKyspXG5cdFx0XHRcdFx0bGVuZ3Roc1tpXSA9IG1hcC5sZW5ndGhzW2ldICogc2NhbGU7XG5cdFx0XHRcdHBhdGgubGVuZ3RocyA9IGxlbmd0aHM7XG5cblx0XHRcdFx0Y29uc3QgY29sb3I6IHN0cmluZyA9IGdldFZhbHVlKG1hcCwgXCJjb2xvclwiLCBudWxsKTtcblx0XHRcdFx0aWYgKGNvbG9yKSBwYXRoLmNvbG9yLnNldEZyb21TdHJpbmcoY29sb3IpO1xuXHRcdFx0XHRyZXR1cm4gcGF0aDtcblx0XHRcdH1cblx0XHRcdGNhc2UgXCJwb2ludFwiOiB7XG5cdFx0XHRcdGNvbnN0IHBvaW50ID0gdGhpcy5hdHRhY2htZW50TG9hZGVyLm5ld1BvaW50QXR0YWNobWVudChza2luLCBwbGFjZWhvbGRlciwgbmFtZSk7XG5cdFx0XHRcdGlmICghcG9pbnQpIHJldHVybiBudWxsO1xuXHRcdFx0XHRwb2ludC54ID0gZ2V0VmFsdWUobWFwLCBcInhcIiwgMCkgKiBzY2FsZTtcblx0XHRcdFx0cG9pbnQueSA9IGdldFZhbHVlKG1hcCwgXCJ5XCIsIDApICogc2NhbGU7XG5cdFx0XHRcdHBvaW50LnJvdGF0aW9uID0gZ2V0VmFsdWUobWFwLCBcInJvdGF0aW9uXCIsIDApO1xuXG5cdFx0XHRcdGNvbnN0IGNvbG9yID0gZ2V0VmFsdWUobWFwLCBcImNvbG9yXCIsIG51bGwpO1xuXHRcdFx0XHRpZiAoY29sb3IpIHBvaW50LmNvbG9yLnNldEZyb21TdHJpbmcoY29sb3IpO1xuXHRcdFx0XHRyZXR1cm4gcG9pbnQ7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwiY2xpcHBpbmdcIjoge1xuXHRcdFx0XHRjb25zdCBjbGlwID0gdGhpcy5hdHRhY2htZW50TG9hZGVyLm5ld0NsaXBwaW5nQXR0YWNobWVudChza2luLCBwbGFjZWhvbGRlciwgbmFtZSk7XG5cdFx0XHRcdGlmICghY2xpcCkgcmV0dXJuIG51bGw7XG5cblx0XHRcdFx0Y29uc3QgZW5kID0gZ2V0VmFsdWUobWFwLCBcImVuZFwiLCBudWxsKTtcblx0XHRcdFx0aWYgKGVuZCkgY2xpcC5lbmRTbG90ID0gc2tlbGV0b25EYXRhLmZpbmRTbG90KGVuZCk7XG5cblx0XHRcdFx0Y2xpcC5jb252ZXggPSBnZXRWYWx1ZShtYXAsIFwiY29udmV4XCIsIGZhbHNlKTtcblx0XHRcdFx0Y2xpcC5pbnZlcnNlID0gZ2V0VmFsdWUobWFwLCBcImludmVyc2VcIiwgZmFsc2UpO1xuXG5cdFx0XHRcdGNvbnN0IHZlcnRleENvdW50ID0gbWFwLnZlcnRleENvdW50O1xuXHRcdFx0XHR0aGlzLnJlYWRWZXJ0aWNlcyhtYXAsIGNsaXAsIHZlcnRleENvdW50IDw8IDEpO1xuXG5cdFx0XHRcdGNvbnN0IGNvbG9yOiBzdHJpbmcgPSBnZXRWYWx1ZShtYXAsIFwiY29sb3JcIiwgbnVsbCk7XG5cdFx0XHRcdGlmIChjb2xvcikgY2xpcC5jb2xvci5zZXRGcm9tU3RyaW5nKGNvbG9yKTtcblx0XHRcdFx0cmV0dXJuIGNsaXA7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0cmVhZFNlcXVlbmNlIChtYXA6IG9iamVjdCkge1xuXHRcdGlmIChtYXAgPT0gbnVsbCkgcmV0dXJuIG5ldyBTZXF1ZW5jZSgxLCBmYWxzZSk7XG5cdFx0Y29uc3Qgc2VxdWVuY2UgPSBuZXcgU2VxdWVuY2UoZ2V0VmFsdWUobWFwLCBcImNvdW50XCIsIDApLCB0cnVlKTtcblx0XHRzZXF1ZW5jZS5zdGFydCA9IGdldFZhbHVlKG1hcCwgXCJzdGFydFwiLCAxKTtcblx0XHRzZXF1ZW5jZS5kaWdpdHMgPSBnZXRWYWx1ZShtYXAsIFwiZGlnaXRzXCIsIDApO1xuXHRcdHNlcXVlbmNlLnNldHVwSW5kZXggPSBnZXRWYWx1ZShtYXAsIFwic2V0dXBcIiwgMCk7XG5cdFx0cmV0dXJuIHNlcXVlbmNlO1xuXHR9XG5cblx0Ly8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiBpdCBpcyBhbnkgdW50aWwgd2UgZGVmaW5lIGEgc2NoZW1hXG5cdHJlYWRWZXJ0aWNlcyAobWFwOiBhbnksIGF0dGFjaG1lbnQ6IFZlcnRleEF0dGFjaG1lbnQsIHZlcnRpY2VzTGVuZ3RoOiBudW1iZXIpIHtcblx0XHRjb25zdCBzY2FsZSA9IHRoaXMuc2NhbGU7XG5cdFx0YXR0YWNobWVudC53b3JsZFZlcnRpY2VzTGVuZ3RoID0gdmVydGljZXNMZW5ndGg7XG5cdFx0Y29uc3QgdmVydGljZXM6IEFycmF5PG51bWJlcj4gPSBtYXAudmVydGljZXM7XG5cdFx0aWYgKHZlcnRpY2VzTGVuZ3RoID09PSB2ZXJ0aWNlcy5sZW5ndGgpIHtcblx0XHRcdGNvbnN0IHNjYWxlZFZlcnRpY2VzID0gVXRpbHMudG9GbG9hdEFycmF5KHZlcnRpY2VzKTtcblx0XHRcdGlmIChzY2FsZSAhPT0gMSkge1xuXHRcdFx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHZlcnRpY2VzLmxlbmd0aDsgaSA8IG47IGkrKylcblx0XHRcdFx0XHRzY2FsZWRWZXJ0aWNlc1tpXSAqPSBzY2FsZTtcblx0XHRcdH1cblx0XHRcdGF0dGFjaG1lbnQudmVydGljZXMgPSBzY2FsZWRWZXJ0aWNlcztcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3Qgd2VpZ2h0czogbnVtYmVyW10gPSBbXTtcblx0XHRjb25zdCBib25lczogbnVtYmVyW10gPSBbXTtcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHZlcnRpY2VzLmxlbmd0aDsgaSA8IG47KSB7XG5cdFx0XHRjb25zdCBib25lQ291bnQgPSB2ZXJ0aWNlc1tpKytdO1xuXHRcdFx0Ym9uZXMucHVzaChib25lQ291bnQpO1xuXHRcdFx0Zm9yIChsZXQgbm4gPSBpICsgYm9uZUNvdW50ICogNDsgaSA8IG5uOyBpICs9IDQpIHtcblx0XHRcdFx0Ym9uZXMucHVzaCh2ZXJ0aWNlc1tpXSk7XG5cdFx0XHRcdHdlaWdodHMucHVzaCh2ZXJ0aWNlc1tpICsgMV0gKiBzY2FsZSk7XG5cdFx0XHRcdHdlaWdodHMucHVzaCh2ZXJ0aWNlc1tpICsgMl0gKiBzY2FsZSk7XG5cdFx0XHRcdHdlaWdodHMucHVzaCh2ZXJ0aWNlc1tpICsgM10pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRhdHRhY2htZW50LmJvbmVzID0gYm9uZXM7XG5cdFx0YXR0YWNobWVudC52ZXJ0aWNlcyA9IFV0aWxzLnRvRmxvYXRBcnJheSh3ZWlnaHRzKTtcblx0fVxuXG5cdC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogaXQgaXMgYW55IHVudGlsZSB3ZSBkZWZpbmUgYSBzY2hlbWFcblx0cmVhZEFuaW1hdGlvbiAobWFwOiBhbnksIG5hbWU6IHN0cmluZywgc2tlbGV0b25EYXRhOiBTa2VsZXRvbkRhdGEpIHtcblx0XHRjb25zdCBzY2FsZSA9IHRoaXMuc2NhbGU7XG5cdFx0Y29uc3QgdGltZWxpbmVzOiBUaW1lbGluZVtdID0gW107XG5cblx0XHQvLyBTbG90IHRpbWVsaW5lcy5cblx0XHRpZiAobWFwLnNsb3RzKSB7XG5cdFx0XHRmb3IgKGNvbnN0IHNsb3ROYW1lIGluIG1hcC5zbG90cykge1xuXHRcdFx0XHRjb25zdCBzbG90TWFwID0gbWFwLnNsb3RzW3Nsb3ROYW1lXTtcblx0XHRcdFx0Y29uc3Qgc2xvdCA9IHNrZWxldG9uRGF0YS5maW5kU2xvdChzbG90TmFtZSk7XG5cdFx0XHRcdGlmICghc2xvdCkgdGhyb3cgbmV3IEVycm9yKGBTbG90IG5vdCBmb3VuZDogJHtzbG90TmFtZX1gKTtcblx0XHRcdFx0Y29uc3Qgc2xvdEluZGV4ID0gc2xvdC5pbmRleDtcblx0XHRcdFx0Zm9yIChjb25zdCB0aW1lbGluZU5hbWUgaW4gc2xvdE1hcCkge1xuXHRcdFx0XHRcdGNvbnN0IHRpbWVsaW5lTWFwID0gc2xvdE1hcFt0aW1lbGluZU5hbWVdO1xuXHRcdFx0XHRcdGlmICghdGltZWxpbmVNYXApIGNvbnRpbnVlO1xuXHRcdFx0XHRcdGNvbnN0IGZyYW1lcyA9IHRpbWVsaW5lTWFwLmxlbmd0aDtcblxuXHRcdFx0XHRcdHN3aXRjaCAodGltZWxpbmVOYW1lKSB7XG5cdFx0XHRcdFx0XHRjYXNlIFwiYXR0YWNobWVudFwiOiB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHRpbWVsaW5lID0gbmV3IEF0dGFjaG1lbnRUaW1lbGluZShmcmFtZXMsIHNsb3RJbmRleCk7XG5cdFx0XHRcdFx0XHRcdGZvciAobGV0IGZyYW1lID0gMDsgZnJhbWUgPCBmcmFtZXM7IGZyYW1lKyspIHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBrZXlNYXAgPSB0aW1lbGluZU1hcFtmcmFtZV07XG5cdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2V0RnJhbWUoZnJhbWUsIGdldFZhbHVlKGtleU1hcCwgXCJ0aW1lXCIsIDApLCBnZXRWYWx1ZShrZXlNYXAsIFwibmFtZVwiLCBudWxsKSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGNhc2UgXCJyZ2JhXCI6IHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgdGltZWxpbmUgPSBuZXcgUkdCQVRpbWVsaW5lKGZyYW1lcywgZnJhbWVzIDw8IDIsIHNsb3RJbmRleCk7XG5cdFx0XHRcdFx0XHRcdGxldCBrZXlNYXAgPSB0aW1lbGluZU1hcFswXTtcblx0XHRcdFx0XHRcdFx0bGV0IHRpbWUgPSBnZXRWYWx1ZShrZXlNYXAsIFwidGltZVwiLCAwKTtcblx0XHRcdFx0XHRcdFx0bGV0IGNvbG9yID0gQ29sb3IuZnJvbVN0cmluZyhrZXlNYXAuY29sb3IpO1xuXG5cdFx0XHRcdFx0XHRcdGZvciAobGV0IGZyYW1lID0gMCwgYmV6aWVyID0gMDsgOyBmcmFtZSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2V0RnJhbWUoZnJhbWUsIHRpbWUsIGNvbG9yLnIsIGNvbG9yLmcsIGNvbG9yLmIsIGNvbG9yLmEpO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IG5leHRNYXAgPSB0aW1lbGluZU1hcFtmcmFtZSArIDFdO1xuXHRcdFx0XHRcdFx0XHRcdGlmICghbmV4dE1hcCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2hyaW5rKGJlemllcik7XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgdGltZTIgPSBnZXRWYWx1ZShuZXh0TWFwLCBcInRpbWVcIiwgMCk7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgbmV3Q29sb3IgPSBDb2xvci5mcm9tU3RyaW5nKG5leHRNYXAuY29sb3IpO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGN1cnZlID0ga2V5TWFwLmN1cnZlO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChjdXJ2ZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMCwgdGltZSwgdGltZTIsIGNvbG9yLnIsIG5ld0NvbG9yLnIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMSwgdGltZSwgdGltZTIsIGNvbG9yLmcsIG5ld0NvbG9yLmcsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMiwgdGltZSwgdGltZTIsIGNvbG9yLmIsIG5ld0NvbG9yLmIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMywgdGltZSwgdGltZTIsIGNvbG9yLmEsIG5ld0NvbG9yLmEsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR0aW1lID0gdGltZTI7XG5cdFx0XHRcdFx0XHRcdFx0Y29sb3IgPSBuZXdDb2xvcjtcblx0XHRcdFx0XHRcdFx0XHRrZXlNYXAgPSBuZXh0TWFwO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGNhc2UgXCJyZ2JcIjoge1xuXHRcdFx0XHRcdFx0XHRjb25zdCB0aW1lbGluZSA9IG5ldyBSR0JUaW1lbGluZShmcmFtZXMsIGZyYW1lcyAqIDMsIHNsb3RJbmRleCk7XG5cdFx0XHRcdFx0XHRcdGxldCBrZXlNYXAgPSB0aW1lbGluZU1hcFswXTtcblx0XHRcdFx0XHRcdFx0bGV0IHRpbWUgPSBnZXRWYWx1ZShrZXlNYXAsIFwidGltZVwiLCAwKTtcblx0XHRcdFx0XHRcdFx0bGV0IGNvbG9yID0gQ29sb3IuZnJvbVN0cmluZyhrZXlNYXAuY29sb3IpO1xuXG5cdFx0XHRcdFx0XHRcdGZvciAobGV0IGZyYW1lID0gMCwgYmV6aWVyID0gMDsgOyBmcmFtZSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2V0RnJhbWUoZnJhbWUsIHRpbWUsIGNvbG9yLnIsIGNvbG9yLmcsIGNvbG9yLmIpO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IG5leHRNYXAgPSB0aW1lbGluZU1hcFtmcmFtZSArIDFdO1xuXHRcdFx0XHRcdFx0XHRcdGlmICghbmV4dE1hcCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2hyaW5rKGJlemllcik7XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgdGltZTIgPSBnZXRWYWx1ZShuZXh0TWFwLCBcInRpbWVcIiwgMCk7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgbmV3Q29sb3IgPSBDb2xvci5mcm9tU3RyaW5nKG5leHRNYXAuY29sb3IpO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGN1cnZlID0ga2V5TWFwLmN1cnZlO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChjdXJ2ZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMCwgdGltZSwgdGltZTIsIGNvbG9yLnIsIG5ld0NvbG9yLnIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMSwgdGltZSwgdGltZTIsIGNvbG9yLmcsIG5ld0NvbG9yLmcsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMiwgdGltZSwgdGltZTIsIGNvbG9yLmIsIG5ld0NvbG9yLmIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR0aW1lID0gdGltZTI7XG5cdFx0XHRcdFx0XHRcdFx0Y29sb3IgPSBuZXdDb2xvcjtcblx0XHRcdFx0XHRcdFx0XHRrZXlNYXAgPSBuZXh0TWFwO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGNhc2UgXCJhbHBoYVwiOiB7XG5cdFx0XHRcdFx0XHRcdHJlYWRUaW1lbGluZTEodGltZWxpbmVzLCB0aW1lbGluZU1hcCwgbmV3IEFscGhhVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMsIHNsb3RJbmRleCksIDAsIDEpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGNhc2UgXCJyZ2JhMlwiOiB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHRpbWVsaW5lID0gbmV3IFJHQkEyVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMgKiA3LCBzbG90SW5kZXgpO1xuXG5cdFx0XHRcdFx0XHRcdGxldCBrZXlNYXAgPSB0aW1lbGluZU1hcFswXTtcblx0XHRcdFx0XHRcdFx0bGV0IHRpbWUgPSBnZXRWYWx1ZShrZXlNYXAsIFwidGltZVwiLCAwKTtcblx0XHRcdFx0XHRcdFx0bGV0IGNvbG9yID0gQ29sb3IuZnJvbVN0cmluZyhrZXlNYXAubGlnaHQpO1xuXHRcdFx0XHRcdFx0XHRsZXQgY29sb3IyID0gQ29sb3IuZnJvbVN0cmluZyhrZXlNYXAuZGFyayk7XG5cblx0XHRcdFx0XHRcdFx0Zm9yIChsZXQgZnJhbWUgPSAwLCBiZXppZXIgPSAwOyA7IGZyYW1lKyspIHtcblx0XHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgY29sb3IuciwgY29sb3IuZywgY29sb3IuYiwgY29sb3IuYSwgY29sb3IyLnIsIGNvbG9yMi5nLCBjb2xvcjIuYik7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgbmV4dE1hcCA9IHRpbWVsaW5lTWFwW2ZyYW1lICsgMV07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCFuZXh0TWFwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zaHJpbmsoYmV6aWVyKTtcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRjb25zdCB0aW1lMiA9IGdldFZhbHVlKG5leHRNYXAsIFwidGltZVwiLCAwKTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBuZXdDb2xvciA9IENvbG9yLmZyb21TdHJpbmcobmV4dE1hcC5saWdodCk7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgbmV3Q29sb3IyID0gQ29sb3IuZnJvbVN0cmluZyhuZXh0TWFwLmRhcmspO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGN1cnZlID0ga2V5TWFwLmN1cnZlO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChjdXJ2ZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMCwgdGltZSwgdGltZTIsIGNvbG9yLnIsIG5ld0NvbG9yLnIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMSwgdGltZSwgdGltZTIsIGNvbG9yLmcsIG5ld0NvbG9yLmcsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMiwgdGltZSwgdGltZTIsIGNvbG9yLmIsIG5ld0NvbG9yLmIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMywgdGltZSwgdGltZTIsIGNvbG9yLmEsIG5ld0NvbG9yLmEsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgNCwgdGltZSwgdGltZTIsIGNvbG9yMi5yLCBuZXdDb2xvcjIuciwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCA1LCB0aW1lLCB0aW1lMiwgY29sb3IyLmcsIG5ld0NvbG9yMi5nLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDYsIHRpbWUsIHRpbWUyLCBjb2xvcjIuYiwgbmV3Q29sb3IyLmIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR0aW1lID0gdGltZTI7XG5cdFx0XHRcdFx0XHRcdFx0Y29sb3IgPSBuZXdDb2xvcjtcblx0XHRcdFx0XHRcdFx0XHRjb2xvcjIgPSBuZXdDb2xvcjI7XG5cdFx0XHRcdFx0XHRcdFx0a2V5TWFwID0gbmV4dE1hcDtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjYXNlIFwicmdiMlwiOiB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHRpbWVsaW5lID0gbmV3IFJHQjJUaW1lbGluZShmcmFtZXMsIGZyYW1lcyAqIDYsIHNsb3RJbmRleCk7XG5cblx0XHRcdFx0XHRcdFx0bGV0IGtleU1hcCA9IHRpbWVsaW5lTWFwWzBdO1xuXHRcdFx0XHRcdFx0XHRsZXQgdGltZSA9IGdldFZhbHVlKGtleU1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0XHRsZXQgY29sb3IgPSBDb2xvci5mcm9tU3RyaW5nKGtleU1hcC5saWdodCk7XG5cdFx0XHRcdFx0XHRcdGxldCBjb2xvcjIgPSBDb2xvci5mcm9tU3RyaW5nKGtleU1hcC5kYXJrKTtcblxuXHRcdFx0XHRcdFx0XHRmb3IgKGxldCBmcmFtZSA9IDAsIGJlemllciA9IDA7IDsgZnJhbWUrKykge1xuXHRcdFx0XHRcdFx0XHRcdHRpbWVsaW5lLnNldEZyYW1lKGZyYW1lLCB0aW1lLCBjb2xvci5yLCBjb2xvci5nLCBjb2xvci5iLCBjb2xvcjIuciwgY29sb3IyLmcsIGNvbG9yMi5iKTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBuZXh0TWFwID0gdGltZWxpbmVNYXBbZnJhbWUgKyAxXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIW5leHRNYXApIHtcblx0XHRcdFx0XHRcdFx0XHRcdHRpbWVsaW5lLnNocmluayhiZXppZXIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHRpbWUyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IG5ld0NvbG9yID0gQ29sb3IuZnJvbVN0cmluZyhuZXh0TWFwLmxpZ2h0KTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBuZXdDb2xvcjIgPSBDb2xvci5mcm9tU3RyaW5nKG5leHRNYXAuZGFyayk7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgY3VydmUgPSBrZXlNYXAuY3VydmU7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGN1cnZlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAwLCB0aW1lLCB0aW1lMiwgY29sb3IuciwgbmV3Q29sb3IuciwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAxLCB0aW1lLCB0aW1lMiwgY29sb3IuZywgbmV3Q29sb3IuZywgMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAyLCB0aW1lLCB0aW1lMiwgY29sb3IuYiwgbmV3Q29sb3IuYiwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAzLCB0aW1lLCB0aW1lMiwgY29sb3IyLnIsIG5ld0NvbG9yMi5yLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDQsIHRpbWUsIHRpbWUyLCBjb2xvcjIuZywgbmV3Q29sb3IyLmcsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgNSwgdGltZSwgdGltZTIsIGNvbG9yMi5iLCBuZXdDb2xvcjIuYiwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHRpbWUgPSB0aW1lMjtcblx0XHRcdFx0XHRcdFx0XHRjb2xvciA9IG5ld0NvbG9yO1xuXHRcdFx0XHRcdFx0XHRcdGNvbG9yMiA9IG5ld0NvbG9yMjtcblx0XHRcdFx0XHRcdFx0XHRrZXlNYXAgPSBuZXh0TWFwO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0aW1lbGluZSB0eXBlIGZvciBhIHNsb3Q6ICR7dGltZWxpbmVNYXAubmFtZX0gKCR7c2xvdE1hcC5uYW1lfSlgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBCb25lIHRpbWVsaW5lcy5cblx0XHRpZiAobWFwLmJvbmVzKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGJvbmVOYW1lIGluIG1hcC5ib25lcykge1xuXHRcdFx0XHRjb25zdCBib25lTWFwID0gbWFwLmJvbmVzW2JvbmVOYW1lXTtcblx0XHRcdFx0Y29uc3QgYm9uZSA9IHNrZWxldG9uRGF0YS5maW5kQm9uZShib25lTmFtZSk7XG5cdFx0XHRcdGlmICghYm9uZSkgdGhyb3cgbmV3IEVycm9yKGBCb25lIG5vdCBmb3VuZDogJHtib25lTmFtZX1gKTtcblx0XHRcdFx0Y29uc3QgYm9uZUluZGV4ID0gYm9uZS5pbmRleDtcblx0XHRcdFx0Zm9yIChjb25zdCB0aW1lbGluZU5hbWUgaW4gYm9uZU1hcCkge1xuXHRcdFx0XHRcdGNvbnN0IHRpbWVsaW5lTWFwID0gYm9uZU1hcFt0aW1lbGluZU5hbWVdO1xuXHRcdFx0XHRcdGNvbnN0IGZyYW1lcyA9IHRpbWVsaW5lTWFwLmxlbmd0aDtcblx0XHRcdFx0XHRpZiAoZnJhbWVzID09PSAwKSBjb250aW51ZTtcblxuXHRcdFx0XHRcdHN3aXRjaCAodGltZWxpbmVOYW1lKSB7XG5cdFx0XHRcdFx0XHRjYXNlIFwicm90YXRlXCI6IHJlYWRUaW1lbGluZTEodGltZWxpbmVzLCB0aW1lbGluZU1hcCwgbmV3IFJvdGF0ZVRpbWVsaW5lKGZyYW1lcywgZnJhbWVzLCBib25lSW5kZXgpLCAwLCAxKTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlIFwidHJhbnNsYXRlXCI6IHJlYWRUaW1lbGluZTIodGltZWxpbmVzLCB0aW1lbGluZU1hcCwgbmV3IFRyYW5zbGF0ZVRpbWVsaW5lKGZyYW1lcywgZnJhbWVzIDw8IDEsIGJvbmVJbmRleCksIFwieFwiLCBcInlcIiwgMCwgc2NhbGUpOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgXCJ0cmFuc2xhdGV4XCI6IHJlYWRUaW1lbGluZTEodGltZWxpbmVzLCB0aW1lbGluZU1hcCwgbmV3IFRyYW5zbGF0ZVhUaW1lbGluZShmcmFtZXMsIGZyYW1lcywgYm9uZUluZGV4KSwgMCwgc2NhbGUpOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgXCJ0cmFuc2xhdGV5XCI6IHJlYWRUaW1lbGluZTEodGltZWxpbmVzLCB0aW1lbGluZU1hcCwgbmV3IFRyYW5zbGF0ZVlUaW1lbGluZShmcmFtZXMsIGZyYW1lcywgYm9uZUluZGV4KSwgMCwgc2NhbGUpOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgXCJzY2FsZVwiOiByZWFkVGltZWxpbmUyKHRpbWVsaW5lcywgdGltZWxpbmVNYXAsIG5ldyBTY2FsZVRpbWVsaW5lKGZyYW1lcywgZnJhbWVzIDw8IDEsIGJvbmVJbmRleCksIFwieFwiLCBcInlcIiwgMSwgMSk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSBcInNjYWxleFwiOiByZWFkVGltZWxpbmUxKHRpbWVsaW5lcywgdGltZWxpbmVNYXAsIG5ldyBTY2FsZVhUaW1lbGluZShmcmFtZXMsIGZyYW1lcywgYm9uZUluZGV4KSwgMSwgMSk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSBcInNjYWxleVwiOiByZWFkVGltZWxpbmUxKHRpbWVsaW5lcywgdGltZWxpbmVNYXAsIG5ldyBTY2FsZVlUaW1lbGluZShmcmFtZXMsIGZyYW1lcywgYm9uZUluZGV4KSwgMSwgMSk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSBcInNoZWFyXCI6IHJlYWRUaW1lbGluZTIodGltZWxpbmVzLCB0aW1lbGluZU1hcCwgbmV3IFNoZWFyVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMgPDwgMSwgYm9uZUluZGV4KSwgXCJ4XCIsIFwieVwiLCAwLCAxKTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlIFwic2hlYXJ4XCI6IHJlYWRUaW1lbGluZTEodGltZWxpbmVzLCB0aW1lbGluZU1hcCwgbmV3IFNoZWFyWFRpbWVsaW5lKGZyYW1lcywgZnJhbWVzLCBib25lSW5kZXgpLCAwLCAxKTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlIFwic2hlYXJ5XCI6IHJlYWRUaW1lbGluZTEodGltZWxpbmVzLCB0aW1lbGluZU1hcCwgbmV3IFNoZWFyWVRpbWVsaW5lKGZyYW1lcywgZnJhbWVzLCBib25lSW5kZXgpLCAwLCAxKTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlIFwiaW5oZXJpdFwiOiB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHRpbWVsaW5lID0gbmV3IEluaGVyaXRUaW1lbGluZShmcmFtZXMsIGJvbmUuaW5kZXgpO1xuXHRcdFx0XHRcdFx0XHRmb3IgKGxldCBmcmFtZSA9IDA7IGZyYW1lIDwgdGltZWxpbmVNYXAubGVuZ3RoOyBmcmFtZSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgYUZyYW1lID0gdGltZWxpbmVNYXBbZnJhbWVdO1xuXHRcdFx0XHRcdFx0XHRcdHRpbWVsaW5lLnNldEZyYW1lKGZyYW1lLCBnZXRWYWx1ZShhRnJhbWUsIFwidGltZVwiLCAwKSwgVXRpbHMuZW51bVZhbHVlKEluaGVyaXQsIGdldFZhbHVlKGFGcmFtZSwgXCJpbmhlcml0XCIsIFwiTm9ybWFsXCIpKSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0aW1lbGluZSB0eXBlIGZvciBhIGJvbmU6ICR7dGltZWxpbmVNYXAubmFtZX0gKCR7Ym9uZU1hcC5uYW1lfSlgKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIElLIGNvbnN0cmFpbnQgdGltZWxpbmVzLlxuXHRcdGlmIChtYXAuaWspIHtcblx0XHRcdGZvciAoY29uc3QgY29uc3RyYWludE5hbWUgaW4gbWFwLmlrKSB7XG5cdFx0XHRcdGNvbnN0IGNvbnN0cmFpbnRNYXAgPSBtYXAuaWtbY29uc3RyYWludE5hbWVdO1xuXHRcdFx0XHRsZXQga2V5TWFwID0gY29uc3RyYWludE1hcFswXTtcblx0XHRcdFx0aWYgKCFrZXlNYXApIGNvbnRpbnVlO1xuXG5cdFx0XHRcdGNvbnN0IGNvbnN0cmFpbnQgPSBza2VsZXRvbkRhdGEuZmluZENvbnN0cmFpbnQoY29uc3RyYWludE5hbWUsIElrQ29uc3RyYWludERhdGEpO1xuXHRcdFx0XHRpZiAoIWNvbnN0cmFpbnQpIHRocm93IG5ldyBFcnJvcihgSUsgQ29uc3RyYWludCBub3QgZm91bmQ6ICR7Y29uc3RyYWludE5hbWV9YCk7XG5cdFx0XHRcdGNvbnN0IHRpbWVsaW5lID0gbmV3IElrQ29uc3RyYWludFRpbWVsaW5lKGNvbnN0cmFpbnRNYXAubGVuZ3RoLCBjb25zdHJhaW50TWFwLmxlbmd0aCA8PCAxLFxuXHRcdFx0XHRcdHNrZWxldG9uRGF0YS5jb25zdHJhaW50cy5pbmRleE9mKGNvbnN0cmFpbnQpKTtcblxuXHRcdFx0XHRsZXQgdGltZSA9IGdldFZhbHVlKGtleU1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRsZXQgbWl4ID0gZ2V0VmFsdWUoa2V5TWFwLCBcIm1peFwiLCAxKTtcblx0XHRcdFx0bGV0IHNvZnRuZXNzID0gZ2V0VmFsdWUoa2V5TWFwLCBcInNvZnRuZXNzXCIsIDApICogc2NhbGU7XG5cblx0XHRcdFx0Zm9yIChsZXQgZnJhbWUgPSAwLCBiZXppZXIgPSAwOyA7IGZyYW1lKyspIHtcblx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgbWl4LCBzb2Z0bmVzcywgZ2V0VmFsdWUoa2V5TWFwLCBcImJlbmRQb3NpdGl2ZVwiLCB0cnVlKSA/IDEgOiAtMSwgZ2V0VmFsdWUoa2V5TWFwLCBcImNvbXByZXNzXCIsIGZhbHNlKSwgZ2V0VmFsdWUoa2V5TWFwLCBcInN0cmV0Y2hcIiwgZmFsc2UpKTtcblx0XHRcdFx0XHRjb25zdCBuZXh0TWFwID0gY29uc3RyYWludE1hcFtmcmFtZSArIDFdO1xuXHRcdFx0XHRcdGlmICghbmV4dE1hcCkge1xuXHRcdFx0XHRcdFx0dGltZWxpbmUuc2hyaW5rKGJlemllcik7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRjb25zdCB0aW1lMiA9IGdldFZhbHVlKG5leHRNYXAsIFwidGltZVwiLCAwKTtcblx0XHRcdFx0XHRjb25zdCBtaXgyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJtaXhcIiwgMSk7XG5cdFx0XHRcdFx0Y29uc3Qgc29mdG5lc3MyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJzb2Z0bmVzc1wiLCAwKSAqIHNjYWxlO1xuXHRcdFx0XHRcdGNvbnN0IGN1cnZlID0ga2V5TWFwLmN1cnZlO1xuXHRcdFx0XHRcdGlmIChjdXJ2ZSkge1xuXHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMCwgdGltZSwgdGltZTIsIG1peCwgbWl4MiwgMSk7XG5cdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAxLCB0aW1lLCB0aW1lMiwgc29mdG5lc3MsIHNvZnRuZXNzMiwgc2NhbGUpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHRpbWUgPSB0aW1lMjtcblx0XHRcdFx0XHRtaXggPSBtaXgyO1xuXHRcdFx0XHRcdHNvZnRuZXNzID0gc29mdG5lc3MyO1xuXHRcdFx0XHRcdGtleU1hcCA9IG5leHRNYXA7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFRyYW5zZm9ybSBjb25zdHJhaW50IHRpbWVsaW5lcy5cblx0XHRpZiAobWFwLnRyYW5zZm9ybSkge1xuXHRcdFx0Zm9yIChjb25zdCBjb25zdHJhaW50TmFtZSBpbiBtYXAudHJhbnNmb3JtKSB7XG5cdFx0XHRcdGNvbnN0IHRpbWVsaW5lTWFwID0gbWFwLnRyYW5zZm9ybVtjb25zdHJhaW50TmFtZV07XG5cdFx0XHRcdGxldCBrZXlNYXAgPSB0aW1lbGluZU1hcFswXTtcblx0XHRcdFx0aWYgKCFrZXlNYXApIGNvbnRpbnVlO1xuXG5cdFx0XHRcdGNvbnN0IGNvbnN0cmFpbnQgPSBza2VsZXRvbkRhdGEuZmluZENvbnN0cmFpbnQoY29uc3RyYWludE5hbWUsIFRyYW5zZm9ybUNvbnN0cmFpbnREYXRhKTtcblx0XHRcdFx0aWYgKCFjb25zdHJhaW50KSB0aHJvdyBuZXcgRXJyb3IoYFRyYW5zZm9ybSBjb25zdHJhaW50IG5vdCBmb3VuZDogJHtjb25zdHJhaW50TmFtZX1gKTtcblx0XHRcdFx0Y29uc3QgdGltZWxpbmUgPSBuZXcgVHJhbnNmb3JtQ29uc3RyYWludFRpbWVsaW5lKHRpbWVsaW5lTWFwLmxlbmd0aCwgdGltZWxpbmVNYXAubGVuZ3RoICogNixcblx0XHRcdFx0XHRza2VsZXRvbkRhdGEuY29uc3RyYWludHMuaW5kZXhPZihjb25zdHJhaW50KSk7XG5cblx0XHRcdFx0bGV0IHRpbWUgPSBnZXRWYWx1ZShrZXlNYXAsIFwidGltZVwiLCAwKTtcblx0XHRcdFx0bGV0IG1peFJvdGF0ZSA9IGdldFZhbHVlKGtleU1hcCwgXCJtaXhSb3RhdGVcIiwgMSk7XG5cdFx0XHRcdGxldCBtaXhYID0gZ2V0VmFsdWUoa2V5TWFwLCBcIm1peFhcIiwgMSksIG1peFkgPSBnZXRWYWx1ZShrZXlNYXAsIFwibWl4WVwiLCBtaXhYKTtcblx0XHRcdFx0bGV0IG1peFNjYWxlWCA9IGdldFZhbHVlKGtleU1hcCwgXCJtaXhTY2FsZVhcIiwgMSksIG1peFNjYWxlWSA9IGdldFZhbHVlKGtleU1hcCwgXCJtaXhTY2FsZVlcIiwgMSk7XG5cdFx0XHRcdGNvbnN0IG1peFNoZWFyWSA9IGdldFZhbHVlKGtleU1hcCwgXCJtaXhTaGVhcllcIiwgMSk7XG5cblx0XHRcdFx0Zm9yIChsZXQgZnJhbWUgPSAwLCBiZXppZXIgPSAwOyA7IGZyYW1lKyspIHtcblx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgbWl4Um90YXRlLCBtaXhYLCBtaXhZLCBtaXhTY2FsZVgsIG1peFNjYWxlWSwgbWl4U2hlYXJZKTtcblx0XHRcdFx0XHRjb25zdCBuZXh0TWFwID0gdGltZWxpbmVNYXBbZnJhbWUgKyAxXTtcblx0XHRcdFx0XHRpZiAoIW5leHRNYXApIHtcblx0XHRcdFx0XHRcdHRpbWVsaW5lLnNocmluayhiZXppZXIpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Y29uc3QgdGltZTIgPSBnZXRWYWx1ZShuZXh0TWFwLCBcInRpbWVcIiwgMCk7XG5cdFx0XHRcdFx0Y29uc3QgbWl4Um90YXRlMiA9IGdldFZhbHVlKG5leHRNYXAsIFwibWl4Um90YXRlXCIsIDEpO1xuXHRcdFx0XHRcdGNvbnN0IG1peFgyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJtaXhYXCIsIDEpLCBtaXhZMiA9IGdldFZhbHVlKG5leHRNYXAsIFwibWl4WVwiLCBtaXhYMik7XG5cdFx0XHRcdFx0Y29uc3QgbWl4U2NhbGVYMiA9IGdldFZhbHVlKG5leHRNYXAsIFwibWl4U2NhbGVYXCIsIDEpLCBtaXhTY2FsZVkyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJtaXhTY2FsZVlcIiwgMSk7XG5cdFx0XHRcdFx0Y29uc3QgbWl4U2hlYXJZMiA9IGdldFZhbHVlKG5leHRNYXAsIFwibWl4U2hlYXJZXCIsIDEpO1xuXHRcdFx0XHRcdGNvbnN0IGN1cnZlID0ga2V5TWFwLmN1cnZlO1xuXHRcdFx0XHRcdGlmIChjdXJ2ZSkge1xuXHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMCwgdGltZSwgdGltZTIsIG1peFJvdGF0ZSwgbWl4Um90YXRlMiwgMSk7XG5cdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAxLCB0aW1lLCB0aW1lMiwgbWl4WCwgbWl4WDIsIDEpO1xuXHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMiwgdGltZSwgdGltZTIsIG1peFksIG1peFkyLCAxKTtcblx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDMsIHRpbWUsIHRpbWUyLCBtaXhTY2FsZVgsIG1peFNjYWxlWDIsIDEpO1xuXHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgNCwgdGltZSwgdGltZTIsIG1peFNjYWxlWSwgbWl4U2NhbGVZMiwgMSk7XG5cdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCA1LCB0aW1lLCB0aW1lMiwgbWl4U2hlYXJZLCBtaXhTaGVhclkyLCAxKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHR0aW1lID0gdGltZTI7XG5cdFx0XHRcdFx0bWl4Um90YXRlID0gbWl4Um90YXRlMjtcblx0XHRcdFx0XHRtaXhYID0gbWl4WDI7XG5cdFx0XHRcdFx0bWl4WSA9IG1peFkyO1xuXHRcdFx0XHRcdG1peFNjYWxlWCA9IG1peFNjYWxlWDI7XG5cdFx0XHRcdFx0bWl4U2NhbGVZID0gbWl4U2NhbGVZMjtcblx0XHRcdFx0XHRtaXhTY2FsZVggPSBtaXhTY2FsZVgyO1xuXHRcdFx0XHRcdGtleU1hcCA9IG5leHRNYXA7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFBhdGggY29uc3RyYWludCB0aW1lbGluZXMuXG5cdFx0aWYgKG1hcC5wYXRoKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGNvbnN0cmFpbnROYW1lIGluIG1hcC5wYXRoKSB7XG5cdFx0XHRcdGNvbnN0IGNvbnN0cmFpbnRNYXAgPSBtYXAucGF0aFtjb25zdHJhaW50TmFtZV07XG5cdFx0XHRcdGNvbnN0IGNvbnN0cmFpbnQgPSBza2VsZXRvbkRhdGEuZmluZENvbnN0cmFpbnQoY29uc3RyYWludE5hbWUsIFBhdGhDb25zdHJhaW50RGF0YSk7XG5cdFx0XHRcdGlmICghY29uc3RyYWludCkgdGhyb3cgbmV3IEVycm9yKGBQYXRoIGNvbnN0cmFpbnQgbm90IGZvdW5kOiAke2NvbnN0cmFpbnROYW1lfWApO1xuXHRcdFx0XHRjb25zdCBpbmRleCA9IHNrZWxldG9uRGF0YS5jb25zdHJhaW50cy5pbmRleE9mKGNvbnN0cmFpbnQpO1xuXHRcdFx0XHRmb3IgKGNvbnN0IHRpbWVsaW5lTmFtZSBpbiBjb25zdHJhaW50TWFwKSB7XG5cdFx0XHRcdFx0Y29uc3QgdGltZWxpbmVNYXAgPSBjb25zdHJhaW50TWFwW3RpbWVsaW5lTmFtZV07XG5cdFx0XHRcdFx0bGV0IGtleU1hcCA9IHRpbWVsaW5lTWFwWzBdO1xuXHRcdFx0XHRcdGlmICgha2V5TWFwKSBjb250aW51ZTtcblxuXHRcdFx0XHRcdGNvbnN0IGZyYW1lcyA9IHRpbWVsaW5lTWFwLmxlbmd0aDtcblx0XHRcdFx0XHRzd2l0Y2ggKHRpbWVsaW5lTmFtZSkge1xuXHRcdFx0XHRcdFx0Y2FzZSBcInBvc2l0aW9uXCI6IHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgdGltZWxpbmUgPSBuZXcgUGF0aENvbnN0cmFpbnRQb3NpdGlvblRpbWVsaW5lKGZyYW1lcywgZnJhbWVzLCBpbmRleCk7XG5cdFx0XHRcdFx0XHRcdHJlYWRUaW1lbGluZTEodGltZWxpbmVzLCB0aW1lbGluZU1hcCwgdGltZWxpbmUsIDAsIGNvbnN0cmFpbnQucG9zaXRpb25Nb2RlID09PSBQb3NpdGlvbk1vZGUuRml4ZWQgPyBzY2FsZSA6IDEpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGNhc2UgXCJzcGFjaW5nXCI6IHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgdGltZWxpbmUgPSBuZXcgUGF0aENvbnN0cmFpbnRTcGFjaW5nVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMsIGluZGV4KTtcblx0XHRcdFx0XHRcdFx0cmVhZFRpbWVsaW5lMSh0aW1lbGluZXMsIHRpbWVsaW5lTWFwLCB0aW1lbGluZSwgMCwgY29uc3RyYWludC5zcGFjaW5nTW9kZSA9PT0gU3BhY2luZ01vZGUuTGVuZ3RoIHx8IGNvbnN0cmFpbnQuc3BhY2luZ01vZGUgPT09IFNwYWNpbmdNb2RlLkZpeGVkID8gc2NhbGUgOiAxKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRjYXNlIFwibWl4XCI6IHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgdGltZWxpbmUgPSBuZXcgUGF0aENvbnN0cmFpbnRNaXhUaW1lbGluZShmcmFtZXMsIGZyYW1lcyAqIDMsIGluZGV4KTtcblx0XHRcdFx0XHRcdFx0bGV0IHRpbWUgPSBnZXRWYWx1ZShrZXlNYXAsIFwidGltZVwiLCAwKTtcblx0XHRcdFx0XHRcdFx0bGV0IG1peFJvdGF0ZSA9IGdldFZhbHVlKGtleU1hcCwgXCJtaXhSb3RhdGVcIiwgMSk7XG5cdFx0XHRcdFx0XHRcdGxldCBtaXhYID0gZ2V0VmFsdWUoa2V5TWFwLCBcIm1peFhcIiwgMSk7XG5cdFx0XHRcdFx0XHRcdGxldCBtaXhZID0gZ2V0VmFsdWUoa2V5TWFwLCBcIm1peFlcIiwgbWl4WCk7XG5cdFx0XHRcdFx0XHRcdGZvciAobGV0IGZyYW1lID0gMCwgYmV6aWVyID0gMDsgOyBmcmFtZSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2V0RnJhbWUoZnJhbWUsIHRpbWUsIG1peFJvdGF0ZSwgbWl4WCwgbWl4WSk7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgbmV4dE1hcCA9IHRpbWVsaW5lTWFwW2ZyYW1lICsgMV07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCFuZXh0TWFwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zaHJpbmsoYmV6aWVyKTtcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRjb25zdCB0aW1lMiA9IGdldFZhbHVlKG5leHRNYXAsIFwidGltZVwiLCAwKTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBtaXhSb3RhdGUyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJtaXhSb3RhdGVcIiwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgbWl4WDIgPSBnZXRWYWx1ZShuZXh0TWFwLCBcIm1peFhcIiwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgbWl4WTIgPSBnZXRWYWx1ZShuZXh0TWFwLCBcIm1peFlcIiwgbWl4WDIpO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGN1cnZlID0ga2V5TWFwLmN1cnZlO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChjdXJ2ZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMCwgdGltZSwgdGltZTIsIG1peFJvdGF0ZSwgbWl4Um90YXRlMiwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAxLCB0aW1lLCB0aW1lMiwgbWl4WCwgbWl4WDIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMiwgdGltZSwgdGltZTIsIG1peFksIG1peFkyLCAxKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0dGltZSA9IHRpbWUyO1xuXHRcdFx0XHRcdFx0XHRcdG1peFJvdGF0ZSA9IG1peFJvdGF0ZTI7XG5cdFx0XHRcdFx0XHRcdFx0bWl4WCA9IG1peFgyO1xuXHRcdFx0XHRcdFx0XHRcdG1peFkgPSBtaXhZMjtcblx0XHRcdFx0XHRcdFx0XHRrZXlNYXAgPSBuZXh0TWFwO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gUGh5c2ljcyBjb25zdHJhaW50IHRpbWVsaW5lcy5cblx0XHRpZiAobWFwLnBoeXNpY3MpIHtcblx0XHRcdGZvciAoY29uc3QgY29uc3RyYWludE5hbWUgaW4gbWFwLnBoeXNpY3MpIHtcblx0XHRcdFx0Y29uc3QgY29uc3RyYWludE1hcCA9IG1hcC5waHlzaWNzW2NvbnN0cmFpbnROYW1lXTtcblx0XHRcdFx0bGV0IGluZGV4ID0gLTE7XG5cdFx0XHRcdGlmIChjb25zdHJhaW50TmFtZS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0Y29uc3QgY29uc3RyYWludCA9IHNrZWxldG9uRGF0YS5maW5kQ29uc3RyYWludChjb25zdHJhaW50TmFtZSwgUGh5c2ljc0NvbnN0cmFpbnREYXRhKTtcblx0XHRcdFx0XHRpZiAoIWNvbnN0cmFpbnQpIHRocm93IG5ldyBFcnJvcihgUGh5c2ljcyBjb25zdHJhaW50IG5vdCBmb3VuZDogJHtjb25zdHJhaW50TmFtZX1gKTtcblx0XHRcdFx0XHRpbmRleCA9IHNrZWxldG9uRGF0YS5jb25zdHJhaW50cy5pbmRleE9mKGNvbnN0cmFpbnQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZvciAoY29uc3QgdGltZWxpbmVOYW1lIGluIGNvbnN0cmFpbnRNYXApIHtcblx0XHRcdFx0XHRjb25zdCB0aW1lbGluZU1hcCA9IGNvbnN0cmFpbnRNYXBbdGltZWxpbmVOYW1lXTtcblx0XHRcdFx0XHRsZXQga2V5TWFwID0gdGltZWxpbmVNYXBbMF07XG5cdFx0XHRcdFx0aWYgKCFrZXlNYXApIGNvbnRpbnVlO1xuXG5cdFx0XHRcdFx0Y29uc3QgZnJhbWVzID0gdGltZWxpbmVNYXAubGVuZ3RoO1xuXHRcdFx0XHRcdGxldCB0aW1lbGluZTogQ3VydmVUaW1lbGluZTE7XG5cdFx0XHRcdFx0bGV0IGRlZmF1bHRWYWx1ZSA9IDA7XG5cdFx0XHRcdFx0aWYgKHRpbWVsaW5lTmFtZSA9PT0gXCJyZXNldFwiKSB7XG5cdFx0XHRcdFx0XHRjb25zdCByZXNldFRpbWVsaW5lID0gbmV3IFBoeXNpY3NDb25zdHJhaW50UmVzZXRUaW1lbGluZShmcmFtZXMsIGluZGV4KTtcblx0XHRcdFx0XHRcdGZvciAobGV0IGZyYW1lID0gMDsga2V5TWFwICE9IG51bGw7IGtleU1hcCA9IHRpbWVsaW5lTWFwW2ZyYW1lICsgMV0sIGZyYW1lKyspXG5cdFx0XHRcdFx0XHRcdHJlc2V0VGltZWxpbmUuc2V0RnJhbWUoZnJhbWUsIGdldFZhbHVlKGtleU1hcCwgXCJ0aW1lXCIsIDApKTtcblx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHJlc2V0VGltZWxpbmUpO1xuXHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHN3aXRjaCAodGltZWxpbmVOYW1lKSB7XG5cdFx0XHRcdFx0XHRjYXNlIFwiaW5lcnRpYVwiOiB0aW1lbGluZSA9IG5ldyBQaHlzaWNzQ29uc3RyYWludEluZXJ0aWFUaW1lbGluZShmcmFtZXMsIGZyYW1lcywgaW5kZXgpOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgXCJzdHJlbmd0aFwiOiB0aW1lbGluZSA9IG5ldyBQaHlzaWNzQ29uc3RyYWludFN0cmVuZ3RoVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMsIGluZGV4KTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlIFwiZGFtcGluZ1wiOiB0aW1lbGluZSA9IG5ldyBQaHlzaWNzQ29uc3RyYWludERhbXBpbmdUaW1lbGluZShmcmFtZXMsIGZyYW1lcywgaW5kZXgpOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgXCJtYXNzXCI6IHRpbWVsaW5lID0gbmV3IFBoeXNpY3NDb25zdHJhaW50TWFzc1RpbWVsaW5lKGZyYW1lcywgZnJhbWVzLCBpbmRleCk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSBcIndpbmRcIjogdGltZWxpbmUgPSBuZXcgUGh5c2ljc0NvbnN0cmFpbnRXaW5kVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMsIGluZGV4KTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlIFwiZ3Jhdml0eVwiOiB0aW1lbGluZSA9IG5ldyBQaHlzaWNzQ29uc3RyYWludEdyYXZpdHlUaW1lbGluZShmcmFtZXMsIGZyYW1lcywgaW5kZXgpOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgXCJtaXhcIjoge1xuXHRcdFx0XHRcdFx0XHRkZWZhdWx0VmFsdWUgPSAxO1xuXHRcdFx0XHRcdFx0XHR0aW1lbGluZSA9IG5ldyBQaHlzaWNzQ29uc3RyYWludE1peFRpbWVsaW5lKGZyYW1lcywgZnJhbWVzLCBpbmRleCk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZGVmYXVsdDogY29udGludWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJlYWRUaW1lbGluZTEodGltZWxpbmVzLCB0aW1lbGluZU1hcCwgdGltZWxpbmUsIGRlZmF1bHRWYWx1ZSwgMSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBTbGlkZXIgdGltZWxpbmVzLlxuXHRcdGlmIChtYXAuc2xpZGVyKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGNvbnN0cmFpbnROYW1lIGluIG1hcC5zbGlkZXIpIHtcblx0XHRcdFx0Y29uc3QgY29uc3RyYWludE1hcCA9IG1hcC5zbGlkZXJbY29uc3RyYWludE5hbWVdO1xuXHRcdFx0XHRjb25zdCBjb25zdHJhaW50ID0gc2tlbGV0b25EYXRhLmZpbmRDb25zdHJhaW50KGNvbnN0cmFpbnROYW1lLCBTbGlkZXJEYXRhKTtcblx0XHRcdFx0aWYgKCFjb25zdHJhaW50KSB0aHJvdyBuZXcgRXJyb3IoYFNsaWRlciBub3QgZm91bmQ6ICR7Y29uc3RyYWludE5hbWV9YCk7XG5cdFx0XHRcdGNvbnN0IGluZGV4ID0gc2tlbGV0b25EYXRhLmNvbnN0cmFpbnRzLmluZGV4T2YoY29uc3RyYWludCk7XG5cblx0XHRcdFx0Zm9yIChjb25zdCB0aW1lbGluZU5hbWUgaW4gY29uc3RyYWludE1hcCkge1xuXHRcdFx0XHRcdGNvbnN0IHRpbWVsaW5lTWFwID0gY29uc3RyYWludE1hcFt0aW1lbGluZU5hbWVdO1xuXHRcdFx0XHRcdGNvbnN0IGtleU1hcCA9IHRpbWVsaW5lTWFwWzBdO1xuXHRcdFx0XHRcdGlmICgha2V5TWFwKSBjb250aW51ZTtcblxuXHRcdFx0XHRcdGNvbnN0IGZyYW1lcyA9IHRpbWVsaW5lTWFwLmxlbmd0aDtcblx0XHRcdFx0XHRzd2l0Y2ggKHRpbWVsaW5lTmFtZSkge1xuXHRcdFx0XHRcdFx0Y2FzZSBcInRpbWVcIjogcmVhZFRpbWVsaW5lMSh0aW1lbGluZXMsIHRpbWVsaW5lTWFwLCBuZXcgU2xpZGVyVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMsIGluZGV4KSwgMSwgMSk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSBcIm1peFwiOiByZWFkVGltZWxpbmUxKHRpbWVsaW5lcywgdGltZWxpbmVNYXAsIG5ldyBTbGlkZXJNaXhUaW1lbGluZShmcmFtZXMsIGZyYW1lcywgaW5kZXgpLCAxLCAxKTsgYnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQXR0YWNobWVudCB0aW1lbGluZXMuXG5cdFx0aWYgKG1hcC5hdHRhY2htZW50cykge1xuXHRcdFx0Zm9yIChjb25zdCBhdHRhY2htZW50c05hbWUgaW4gbWFwLmF0dGFjaG1lbnRzKSB7XG5cdFx0XHRcdGNvbnN0IGF0dGFjaG1lbnRzTWFwID0gbWFwLmF0dGFjaG1lbnRzW2F0dGFjaG1lbnRzTmFtZV07XG5cdFx0XHRcdGNvbnN0IHNraW4gPSBza2VsZXRvbkRhdGEuZmluZFNraW4oYXR0YWNobWVudHNOYW1lKTtcblx0XHRcdFx0aWYgKCFza2luKSB0aHJvdyBuZXcgRXJyb3IoYFNraW4gbm90IGZvdW5kOiAke2F0dGFjaG1lbnRzTmFtZX1gKTtcblx0XHRcdFx0Zm9yIChjb25zdCBzbG90TWFwTmFtZSBpbiBhdHRhY2htZW50c01hcCkge1xuXHRcdFx0XHRcdGNvbnN0IHNsb3RNYXAgPSBhdHRhY2htZW50c01hcFtzbG90TWFwTmFtZV07XG5cdFx0XHRcdFx0Y29uc3Qgc2xvdCA9IHNrZWxldG9uRGF0YS5maW5kU2xvdChzbG90TWFwTmFtZSk7XG5cdFx0XHRcdFx0aWYgKCFzbG90KSB0aHJvdyBuZXcgRXJyb3IoYEF0dGFjaG1lbnQgc2xvdCBub3QgZm91bmQ6ICR7c2xvdE1hcE5hbWV9YCk7XG5cdFx0XHRcdFx0Y29uc3Qgc2xvdEluZGV4ID0gc2xvdC5pbmRleDtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IGF0dGFjaG1lbnRNYXBOYW1lIGluIHNsb3RNYXApIHtcblx0XHRcdFx0XHRcdGNvbnN0IGF0dGFjaG1lbnRNYXAgPSBzbG90TWFwW2F0dGFjaG1lbnRNYXBOYW1lXTtcblx0XHRcdFx0XHRcdGNvbnN0IGF0dGFjaG1lbnQgPSA8VmVydGV4QXR0YWNobWVudD5za2luLmdldEF0dGFjaG1lbnQoc2xvdEluZGV4LCBhdHRhY2htZW50TWFwTmFtZSk7XG5cdFx0XHRcdFx0XHRpZiAoIWF0dGFjaG1lbnQpIHRocm93IG5ldyBFcnJvcihgVGltZWxpbmUgYXR0YWNobWVudCBub3QgZm91bmQ6ICR7YXR0YWNobWVudE1hcE5hbWV9YCk7XG5cblx0XHRcdFx0XHRcdGZvciAoY29uc3QgdGltZWxpbmVNYXBOYW1lIGluIGF0dGFjaG1lbnRNYXApIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgdGltZWxpbmVNYXAgPSBhdHRhY2htZW50TWFwW3RpbWVsaW5lTWFwTmFtZV07XG5cdFx0XHRcdFx0XHRcdGxldCBrZXlNYXAgPSB0aW1lbGluZU1hcFswXTtcblx0XHRcdFx0XHRcdFx0aWYgKCFrZXlNYXApIGNvbnRpbnVlO1xuXG5cdFx0XHRcdFx0XHRcdGlmICh0aW1lbGluZU1hcE5hbWUgPT09IFwiZGVmb3JtXCIpIHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCB3ZWlnaHRlZCA9IGF0dGFjaG1lbnQuYm9uZXM7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgdmVydGljZXMgPSBhdHRhY2htZW50LnZlcnRpY2VzO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGRlZm9ybUxlbmd0aCA9IHdlaWdodGVkID8gdmVydGljZXMubGVuZ3RoIC8gMyAqIDIgOiB2ZXJ0aWNlcy5sZW5ndGg7XG5cblx0XHRcdFx0XHRcdFx0XHRjb25zdCB0aW1lbGluZSA9IG5ldyBEZWZvcm1UaW1lbGluZSh0aW1lbGluZU1hcC5sZW5ndGgsIHRpbWVsaW5lTWFwLmxlbmd0aCwgc2xvdEluZGV4LCBhdHRhY2htZW50KTtcblx0XHRcdFx0XHRcdFx0XHRsZXQgdGltZSA9IGdldFZhbHVlKGtleU1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0XHRcdGZvciAobGV0IGZyYW1lID0gMCwgYmV6aWVyID0gMDsgOyBmcmFtZSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRsZXQgZGVmb3JtOiBOdW1iZXJBcnJheUxpa2U7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zdCB2ZXJ0aWNlc1ZhbHVlOiBBcnJheTxudW1iZXI+ID0gZ2V0VmFsdWUoa2V5TWFwLCBcInZlcnRpY2VzXCIsIG51bGwpO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCF2ZXJ0aWNlc1ZhbHVlKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRkZWZvcm0gPSB3ZWlnaHRlZCA/IFV0aWxzLm5ld0Zsb2F0QXJyYXkoZGVmb3JtTGVuZ3RoKSA6IHZlcnRpY2VzO1xuXHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRlZm9ybSA9IFV0aWxzLm5ld0Zsb2F0QXJyYXkoZGVmb3JtTGVuZ3RoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3Qgc3RhcnQgPSA8bnVtYmVyPmdldFZhbHVlKGtleU1hcCwgXCJvZmZzZXRcIiwgMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFV0aWxzLmFycmF5Q29weSh2ZXJ0aWNlc1ZhbHVlLCAwLCBkZWZvcm0sIHN0YXJ0LCB2ZXJ0aWNlc1ZhbHVlLmxlbmd0aCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChzY2FsZSAhPT0gMSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAobGV0IGkgPSBzdGFydCwgbiA9IGkgKyB2ZXJ0aWNlc1ZhbHVlLmxlbmd0aDsgaSA8IG47IGkrKylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlZm9ybVtpXSAqPSBzY2FsZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXdlaWdodGVkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBkZWZvcm1MZW5ndGg7IGkrKylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlZm9ybVtpXSArPSB2ZXJ0aWNlc1tpXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgZGVmb3JtKTtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IG5leHRNYXAgPSB0aW1lbGluZU1hcFtmcmFtZSArIDFdO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFuZXh0TWFwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRpbWVsaW5lLnNocmluayhiZXppZXIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHRpbWUyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgY3VydmUgPSBrZXlNYXAuY3VydmU7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoY3VydmUpIGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDAsIHRpbWUsIHRpbWUyLCAwLCAxLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRcdHRpbWUgPSB0aW1lMjtcblx0XHRcdFx0XHRcdFx0XHRcdGtleU1hcCA9IG5leHRNYXA7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICh0aW1lbGluZU1hcE5hbWUgPT09IFwic2VxdWVuY2VcIikge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHRpbWVsaW5lID0gbmV3IFNlcXVlbmNlVGltZWxpbmUodGltZWxpbmVNYXAubGVuZ3RoLCBzbG90SW5kZXgsIGF0dGFjaG1lbnQgYXMgQXR0YWNobWVudCk7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IGxhc3REZWxheSA9IDA7XG5cdFx0XHRcdFx0XHRcdFx0Zm9yIChsZXQgZnJhbWUgPSAwOyBmcmFtZSA8IHRpbWVsaW5lTWFwLmxlbmd0aDsgZnJhbWUrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgZGVsYXkgPSBnZXRWYWx1ZShrZXlNYXAsIFwiZGVsYXlcIiwgbGFzdERlbGF5KTtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IHRpbWUgPSBnZXRWYWx1ZShrZXlNYXAsIFwidGltZVwiLCAwKTtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IG1vZGUgPSBTZXF1ZW5jZU1vZGVbZ2V0VmFsdWUoa2V5TWFwLCBcIm1vZGVcIiwgXCJob2xkXCIpXSBhcyB1bmtub3duIGFzIG51bWJlcjtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IGluZGV4ID0gZ2V0VmFsdWUoa2V5TWFwLCBcImluZGV4XCIsIDApO1xuXHRcdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2V0RnJhbWUoZnJhbWUsIHRpbWUsIG1vZGUsIGluZGV4LCBkZWxheSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRsYXN0RGVsYXkgPSBkZWxheTtcblx0XHRcdFx0XHRcdFx0XHRcdGtleU1hcCA9IHRpbWVsaW5lTWFwW2ZyYW1lICsgMV07XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIERyYXcgb3JkZXIgdGltZWxpbmUuXG5cdFx0aWYgKG1hcC5kcmF3T3JkZXIpIHtcblx0XHRcdGNvbnN0IHRpbWVsaW5lID0gbmV3IERyYXdPcmRlclRpbWVsaW5lKG1hcC5kcmF3T3JkZXIubGVuZ3RoKTtcblx0XHRcdGNvbnN0IHNsb3RDb3VudCA9IHNrZWxldG9uRGF0YS5zbG90cy5sZW5ndGg7XG5cdFx0XHRsZXQgZnJhbWUgPSAwXG5cdFx0XHRmb3IgKGNvbnN0IGRyYXdPcmRlck1hcCBvZiAobWFwLmRyYXdPcmRlciBhcyBEcmF3T3JkZXJLZXlzVHlwZVtdKSkge1xuXHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSsrLCBnZXRWYWx1ZShkcmF3T3JkZXJNYXAsIFwidGltZVwiLCAwKSwgcmVhZERyYXdPcmRlcihza2VsZXRvbkRhdGEsIGRyYXdPcmRlck1hcCwgc2xvdENvdW50LCBudWxsKSk7XG5cdFx0XHR9XG5cdFx0XHR0aW1lbGluZXMucHVzaCh0aW1lbGluZSk7XG5cdFx0fVxuXG5cdFx0Ly8gRHJhdyBvcmRlciBmb2xkZXIgdGltZWxpbmVzLlxuXHRcdGlmIChtYXAuZHJhd09yZGVyRm9sZGVyKSB7XG5cdFx0XHRmb3IgKGNvbnN0IHRpbWVsaW5lTWFwIG9mIG1hcC5kcmF3T3JkZXJGb2xkZXIpIHtcblx0XHRcdFx0Y29uc3Qgc2xvdEVudHJpZXMgPSBnZXRWYWx1ZSh0aW1lbGluZU1hcCwgXCJzbG90c1wiLCBbXSkgYXMgc3RyaW5nW107XG5cdFx0XHRcdGNvbnN0IGZvbGRlclNsb3RzID0gbmV3IEFycmF5PG51bWJlcj4oc2xvdEVudHJpZXMubGVuZ3RoKTtcblx0XHRcdFx0bGV0IGlpID0gMDtcblx0XHRcdFx0Zm9yIChjb25zdCBzbG90RW50cnkgb2Ygc2xvdEVudHJpZXMpIHtcblx0XHRcdFx0XHRjb25zdCBzbG90ID0gc2tlbGV0b25EYXRhLmZpbmRTbG90KHNsb3RFbnRyeSk7XG5cdFx0XHRcdFx0aWYgKCFzbG90KSB0aHJvdyBuZXcgRXJyb3IoYERyYXcgb3JkZXIgZm9sZGVyIHNsb3Qgbm90IGZvdW5kOiAke3Nsb3RFbnRyeX1gKTtcblx0XHRcdFx0XHRmb2xkZXJTbG90c1tpaSsrXSA9IHNsb3QuaW5kZXg7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBkcmF3T3JkZXJGb2xkZXJFbnRyaWVzID0gZ2V0VmFsdWUodGltZWxpbmVNYXAsIFwia2V5c1wiLCBbXSkgYXMgRHJhd09yZGVyS2V5c1R5cGVbXTtcblx0XHRcdFx0Y29uc3QgdGltZWxpbmUgPSBuZXcgRHJhd09yZGVyRm9sZGVyVGltZWxpbmUoZHJhd09yZGVyRm9sZGVyRW50cmllcy5sZW5ndGgsIGZvbGRlclNsb3RzLCBza2VsZXRvbkRhdGEuc2xvdHMubGVuZ3RoKTtcblx0XHRcdFx0bGV0IGZyYW1lID0gMDtcblx0XHRcdFx0Zm9yIChjb25zdCBkcmF3T3JkZXJGb2xkZXJNYXAgb2YgZHJhd09yZGVyRm9sZGVyRW50cmllcykge1xuXHRcdFx0XHRcdHRpbWVsaW5lLnNldEZyYW1lKGZyYW1lKyssIGdldFZhbHVlKGRyYXdPcmRlckZvbGRlck1hcCwgXCJ0aW1lXCIsIDApLCByZWFkRHJhd09yZGVyKHNrZWxldG9uRGF0YSwgZHJhd09yZGVyRm9sZGVyTWFwLCBmb2xkZXJTbG90cy5sZW5ndGgsIGZvbGRlclNsb3RzKSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEV2ZW50IHRpbWVsaW5lLlxuXHRcdGlmIChtYXAuZXZlbnRzKSB7XG5cdFx0XHRjb25zdCB0aW1lbGluZSA9IG5ldyBFdmVudFRpbWVsaW5lKG1hcC5ldmVudHMubGVuZ3RoKTtcblx0XHRcdGxldCBmcmFtZSA9IDA7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG1hcC5ldmVudHMubGVuZ3RoOyBpKyssIGZyYW1lKyspIHtcblx0XHRcdFx0Y29uc3QgZXZlbnRNYXAgPSBtYXAuZXZlbnRzW2ldO1xuXHRcdFx0XHRjb25zdCBkYXRhID0gc2tlbGV0b25EYXRhLmZpbmRFdmVudChldmVudE1hcC5uYW1lKTtcblx0XHRcdFx0aWYgKCFkYXRhKSB0aHJvdyBuZXcgRXJyb3IoYEV2ZW50IG5vdCBmb3VuZDogJHtldmVudE1hcC5uYW1lfWApO1xuXHRcdFx0XHRjb25zdCBzZXR1cCA9IGRhdGEuc2V0dXBQb3NlO1xuXHRcdFx0XHRjb25zdCBldmVudCA9IG5ldyBFdmVudChVdGlscy50b1NpbmdsZVByZWNpc2lvbihnZXRWYWx1ZShldmVudE1hcCwgXCJ0aW1lXCIsIDApKSwgZGF0YSk7XG5cdFx0XHRcdGV2ZW50LmludFZhbHVlID0gZ2V0VmFsdWUoZXZlbnRNYXAsIFwiaW50XCIsIHNldHVwLmludFZhbHVlKTtcblx0XHRcdFx0ZXZlbnQuZmxvYXRWYWx1ZSA9IGdldFZhbHVlKGV2ZW50TWFwLCBcImZsb2F0XCIsIHNldHVwLmZsb2F0VmFsdWUpO1xuXHRcdFx0XHRldmVudC5zdHJpbmdWYWx1ZSA9IGdldFZhbHVlKGV2ZW50TWFwLCBcInN0cmluZ1wiLCBzZXR1cC5zdHJpbmdWYWx1ZSk7XG5cdFx0XHRcdGlmIChldmVudC5kYXRhLmF1ZGlvUGF0aCkge1xuXHRcdFx0XHRcdGV2ZW50LnZvbHVtZSA9IGdldFZhbHVlKGV2ZW50TWFwLCBcInZvbHVtZVwiLCBzZXR1cC52b2x1bWUpO1xuXHRcdFx0XHRcdGV2ZW50LmJhbGFuY2UgPSBnZXRWYWx1ZShldmVudE1hcCwgXCJiYWxhbmNlXCIsIHNldHVwLnZvbHVtZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0dGltZWxpbmUuc2V0RnJhbWUoZnJhbWUsIGV2ZW50KTtcblx0XHRcdH1cblx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHR9XG5cblx0XHRsZXQgZHVyYXRpb24gPSAwO1xuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gdGltZWxpbmVzLmxlbmd0aDsgaSA8IG47IGkrKylcblx0XHRcdGR1cmF0aW9uID0gTWF0aC5tYXgoZHVyYXRpb24sIHRpbWVsaW5lc1tpXS5nZXREdXJhdGlvbigpKTtcblxuXHRcdGNvbnN0IGFuaW1hdGlvbiA9IG5ldyBBbmltYXRpb24obmFtZSwgdGltZWxpbmVzLCBkdXJhdGlvbik7XG5cdFx0Y29uc3QgY29sb3IgPSBnZXRWYWx1ZShtYXAsIFwiY29sb3JcIiwgbnVsbCk7XG5cdFx0aWYgKGNvbG9yICE9PSBudWxsKSBhbmltYXRpb24uY29sb3Iuc2V0RnJvbVN0cmluZyhjb2xvcik7XG5cblx0XHRza2VsZXRvbkRhdGEuYW5pbWF0aW9ucy5wdXNoKGFuaW1hdGlvbik7XG5cdH1cbn1cblxuY2xhc3MgTGlua2VkTWVzaCB7XG5cdHNvdXJjZTogc3RyaW5nOyBza2luOiBzdHJpbmc7XG5cdHNsb3RJbmRleDogbnVtYmVyOyBzb3VyY2VJbmRleDogbnVtYmVyO1xuXHRtZXNoOiBNZXNoQXR0YWNobWVudDtcblx0aW5oZXJpdFRpbWVsaW5lczogYm9vbGVhbjtcblxuXHRjb25zdHJ1Y3RvciAobWVzaDogTWVzaEF0dGFjaG1lbnQsIHNraW46IHN0cmluZywgc2xvdEluZGV4OiBudW1iZXIsIHNvdXJjZUluZGV4OiBudW1iZXIsIHNvdXJjZTogc3RyaW5nLFxuXHRcdGluaGVyaXRUaW1lbGluZXM6IGJvb2xlYW4pIHtcblx0XHR0aGlzLm1lc2ggPSBtZXNoO1xuXHRcdHRoaXMuc2tpbiA9IHNraW47XG5cdFx0dGhpcy5zbG90SW5kZXggPSBzbG90SW5kZXg7XG5cdFx0dGhpcy5zb3VyY2VJbmRleCA9IHNvdXJjZUluZGV4O1xuXHRcdHRoaXMuc291cmNlID0gc291cmNlO1xuXHRcdHRoaXMuaW5oZXJpdFRpbWVsaW5lcyA9IGluaGVyaXRUaW1lbGluZXM7XG5cdH1cbn1cblxudHlwZSBDdXJ2ZVR5cGUgPSBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSB8IFwic3RlcHBlZFwiO1xudHlwZSBUaW1lbGluZTFLZXlzVHlwZSA9IHsgdmFsdWU6IG51bWJlciwgdGltZT86IG51bWJlciwgY3VydmU/OiBDdXJ2ZVR5cGUgfTtcbnR5cGUgVGltZWxpbmUyS2V5c1R5cGUgPSBUaW1lbGluZTFLZXlzVHlwZSAmIHsgeD86IG51bWJlciwgeT86IG51bWJlciB9O1xuXG5mdW5jdGlvbiByZWFkVGltZWxpbmUxICh0aW1lbGluZXM6IEFycmF5PFRpbWVsaW5lPiwga2V5czogVGltZWxpbmUxS2V5c1R5cGVbXSwgdGltZWxpbmU6IEN1cnZlVGltZWxpbmUxLCBkZWZhdWx0VmFsdWU6IG51bWJlciwgc2NhbGU6IG51bWJlcikge1xuXHRsZXQga2V5TWFwID0ga2V5c1swXTtcblx0bGV0IHRpbWUgPSBrZXlNYXAudGltZSA/PyAwO1xuXHRsZXQgdmFsdWUgPSAoa2V5TWFwLnZhbHVlID8/IGRlZmF1bHRWYWx1ZSkgKiBzY2FsZTtcblx0bGV0IGJlemllciA9IDA7XG5cblx0Zm9yIChsZXQgZnJhbWUgPSAwOyA7IGZyYW1lKyspIHtcblx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgdmFsdWUpO1xuXHRcdGNvbnN0IG5leHRNYXAgPSBrZXlzW2ZyYW1lICsgMV07XG5cdFx0aWYgKCFuZXh0TWFwKSB7XG5cdFx0XHR0aW1lbGluZS5zaHJpbmsoYmV6aWVyKTtcblx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgdGltZTIgPSBuZXh0TWFwLnRpbWUgPz8gMDtcblx0XHRjb25zdCB2YWx1ZTIgPSAobmV4dE1hcC52YWx1ZSA/PyBkZWZhdWx0VmFsdWUpICogc2NhbGU7XG5cdFx0aWYgKGtleU1hcC5jdXJ2ZSkgYmV6aWVyID0gcmVhZEN1cnZlKGtleU1hcC5jdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDAsIHRpbWUsIHRpbWUyLCB2YWx1ZSwgdmFsdWUyLCBzY2FsZSk7XG5cdFx0dGltZSA9IHRpbWUyO1xuXHRcdHZhbHVlID0gdmFsdWUyO1xuXHRcdGtleU1hcCA9IG5leHRNYXA7XG5cdH1cbn1cblxuZnVuY3Rpb24gcmVhZFRpbWVsaW5lMiAodGltZWxpbmVzOiBBcnJheTxUaW1lbGluZT4sIGtleXM6IFRpbWVsaW5lMktleXNUeXBlW10sIHRpbWVsaW5lOiBCb25lVGltZWxpbmUyLCBuYW1lMTogXCJ4XCIsIG5hbWUyOiBcInlcIiwgZGVmYXVsdFZhbHVlOiBudW1iZXIsIHNjYWxlOiBudW1iZXIpIHtcblx0bGV0IGtleU1hcCA9IGtleXNbMF07XG5cdGxldCB0aW1lID0ga2V5TWFwLnRpbWUgPz8gMDtcblx0bGV0IHZhbHVlMSA9IChrZXlNYXBbbmFtZTFdID8/IGRlZmF1bHRWYWx1ZSkgKiBzY2FsZTtcblx0bGV0IHZhbHVlMiA9IChrZXlNYXBbbmFtZTJdID8/IGRlZmF1bHRWYWx1ZSkgKiBzY2FsZTtcblx0bGV0IGJlemllciA9IDA7XG5cdGZvciAobGV0IGZyYW1lID0gMDsgOyBmcmFtZSsrKSB7XG5cdFx0dGltZWxpbmUuc2V0RnJhbWUoZnJhbWUsIHRpbWUsIHZhbHVlMSwgdmFsdWUyKTtcblx0XHRjb25zdCBuZXh0TWFwID0ga2V5c1tmcmFtZSArIDFdO1xuXHRcdGlmICghbmV4dE1hcCkge1xuXHRcdFx0dGltZWxpbmUuc2hyaW5rKGJlemllcik7XG5cdFx0XHR0aW1lbGluZXMucHVzaCh0aW1lbGluZSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHRpbWUyID0gbmV4dE1hcC50aW1lID8/IDA7XG5cdFx0Y29uc3QgbnZhbHVlMSA9IChuZXh0TWFwW25hbWUxXSA/PyBkZWZhdWx0VmFsdWUpICogc2NhbGU7XG5cdFx0Y29uc3QgbnZhbHVlMiA9IChuZXh0TWFwW25hbWUyXSA/PyBkZWZhdWx0VmFsdWUpICogc2NhbGU7XG5cdFx0Y29uc3QgY3VydmUgPSBrZXlNYXAuY3VydmU7XG5cdFx0aWYgKGN1cnZlKSB7XG5cdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAwLCB0aW1lLCB0aW1lMiwgdmFsdWUxLCBudmFsdWUxLCBzY2FsZSk7XG5cdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAxLCB0aW1lLCB0aW1lMiwgdmFsdWUyLCBudmFsdWUyLCBzY2FsZSk7XG5cdFx0fVxuXHRcdHRpbWUgPSB0aW1lMjtcblx0XHR2YWx1ZTEgPSBudmFsdWUxO1xuXHRcdHZhbHVlMiA9IG52YWx1ZTI7XG5cdFx0a2V5TWFwID0gbmV4dE1hcDtcblx0fVxufVxuXG50eXBlIERyYXdPcmRlcktleXNUeXBlID0geyBvZmZzZXRzPzogeyBzbG90OiBzdHJpbmcsIG9mZnNldDogbnVtYmVyIH1bXSB9O1xuXG4vKiogQHBhcmFtIGZvbGRlclNsb3RzIFNsb3QgbmFtZXMgYXJlIHJlc29sdmVkIHRvIHBvc2l0aW9ucyB3aXRoaW4gdGhpcyBhcnJheS4gSWYgbnVsbCwgc2xvdCBpbmRpY2VzIGFyZSB1c2VkIGFzIHBvc2l0aW9ucy4gKi9cbmZ1bmN0aW9uIHJlYWREcmF3T3JkZXIgKHNrZWxldG9uRGF0YTogU2tlbGV0b25EYXRhLCBrZXlzOiBEcmF3T3JkZXJLZXlzVHlwZSwgc2xvdENvdW50OiBudW1iZXIsIGZvbGRlclNsb3RzOiBudW1iZXJbXSB8IG51bGwpOiBudW1iZXJbXSB8IG51bGwge1xuXHRjb25zdCBjaGFuZ2VzID0ga2V5cy5vZmZzZXRzO1xuXHRpZiAoIWNoYW5nZXMpIHJldHVybiBudWxsOyAvLyBTZXR1cCBkcmF3IG9yZGVyLlxuXHRjb25zdCBkcmF3T3JkZXIgPSBuZXcgQXJyYXk8bnVtYmVyPihzbG90Q291bnQpLmZpbGwoLTEpO1xuXHRjb25zdCB1bmNoYW5nZWQgPSBuZXcgQXJyYXk8bnVtYmVyPihzbG90Q291bnQgLSBjaGFuZ2VzLmxlbmd0aCk7XG5cdGxldCBvcmlnaW5hbEluZGV4ID0gMCwgdW5jaGFuZ2VkSW5kZXggPSAwO1xuXHRmb3IgKGNvbnN0IG9mZnNldE1hcCBvZiBjaGFuZ2VzKSB7XG5cdFx0Y29uc3Qgc2xvdCA9IHNrZWxldG9uRGF0YS5maW5kU2xvdChvZmZzZXRNYXAuc2xvdCk7XG5cdFx0aWYgKHNsb3QgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKGBEcmF3IG9yZGVyIHNsb3Qgbm90IGZvdW5kOiAke29mZnNldE1hcC5zbG90fWApO1xuXHRcdGxldCBpbmRleCA9IDA7XG5cdFx0aWYgKCFmb2xkZXJTbG90cylcblx0XHRcdGluZGV4ID0gc2xvdC5pbmRleDtcblx0XHRlbHNlIHtcblx0XHRcdGluZGV4ID0gLTE7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHNsb3RDb3VudDsgaSsrKSB7XG5cdFx0XHRcdGlmIChmb2xkZXJTbG90c1tpXSA9PT0gc2xvdC5pbmRleCkge1xuXHRcdFx0XHRcdGluZGV4ID0gaTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKGluZGV4ID09PSAtMSkgdGhyb3cgbmV3IEVycm9yKGBTbG90IG5vdCBpbiBmb2xkZXI6ICR7b2Zmc2V0TWFwLnNsb3R9YCk7XG5cdFx0fVxuXHRcdC8vIENvbGxlY3QgdW5jaGFuZ2VkIGl0ZW1zLlxuXHRcdHdoaWxlIChvcmlnaW5hbEluZGV4ICE9PSBpbmRleClcblx0XHRcdHVuY2hhbmdlZFt1bmNoYW5nZWRJbmRleCsrXSA9IG9yaWdpbmFsSW5kZXgrKztcblx0XHQvLyBTZXQgY2hhbmdlZCBpdGVtcy5cblx0XHRkcmF3T3JkZXJbb3JpZ2luYWxJbmRleCArIG9mZnNldE1hcC5vZmZzZXRdID0gb3JpZ2luYWxJbmRleCsrO1xuXHR9XG5cdC8vIENvbGxlY3QgcmVtYWluaW5nIHVuY2hhbmdlZCBpdGVtcy5cblx0d2hpbGUgKG9yaWdpbmFsSW5kZXggPCBzbG90Q291bnQpXG5cdFx0dW5jaGFuZ2VkW3VuY2hhbmdlZEluZGV4KytdID0gb3JpZ2luYWxJbmRleCsrO1xuXHQvLyBGaWxsIGluIHVuY2hhbmdlZCBpdGVtcy5cblx0Zm9yIChsZXQgaSA9IHNsb3RDb3VudCAtIDE7IGkgPj0gMDsgaS0tKVxuXHRcdGlmIChkcmF3T3JkZXJbaV0gPT09IC0xKSBkcmF3T3JkZXJbaV0gPSB1bmNoYW5nZWRbLS11bmNoYW5nZWRJbmRleF07XG5cdHJldHVybiBkcmF3T3JkZXI7XG59XG5cbmZ1bmN0aW9uIHJlYWRDdXJ2ZSAoY3VydmU6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdIHwgXCJzdGVwcGVkXCIsIHRpbWVsaW5lOiBDdXJ2ZVRpbWVsaW5lLCBiZXppZXI6IG51bWJlciwgZnJhbWU6IG51bWJlciwgdmFsdWU6IG51bWJlciwgdGltZTE6IG51bWJlciwgdGltZTI6IG51bWJlcixcblx0dmFsdWUxOiBudW1iZXIsIHZhbHVlMjogbnVtYmVyLCBzY2FsZTogbnVtYmVyKSB7XG5cdGlmIChjdXJ2ZSA9PT0gXCJzdGVwcGVkXCIpIHtcblx0XHR0aW1lbGluZS5zZXRTdGVwcGVkKGZyYW1lKTtcblx0XHRyZXR1cm4gYmV6aWVyO1xuXHR9XG5cdGNvbnN0IGkgPSB2YWx1ZSA8PCAyO1xuXHRjb25zdCBjeDEgPSBjdXJ2ZVtpXTtcblx0Y29uc3QgY3kxID0gY3VydmVbaSArIDFdICogc2NhbGU7XG5cdGNvbnN0IGN4MiA9IGN1cnZlW2kgKyAyXTtcblx0Y29uc3QgY3kyID0gY3VydmVbaSArIDNdICogc2NhbGU7XG5cdHRpbWVsaW5lLnNldEJlemllcihiZXppZXIsIGZyYW1lLCB2YWx1ZSwgdGltZTEsIHZhbHVlMSwgY3gxLCBjeTEsIGN4MiwgY3kyLCB0aW1lMiwgdmFsdWUyKTtcblx0cmV0dXJuIGJlemllciArIDE7XG59XG5cbi8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogaXQgaXMgYW55IHVudGlsIHdlIGRlZmluZSBhIHNjaGVtYVxuZnVuY3Rpb24gZ2V0VmFsdWUgKG1hcDogYW55LCBwcm9wZXJ0eTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IGFueSkge1xuXHRyZXR1cm4gbWFwW3Byb3BlcnR5XSAhPT0gdW5kZWZpbmVkID8gbWFwW3Byb3BlcnR5XSA6IGRlZmF1bHRWYWx1ZTtcbn1cbiJdfQ==