@esotericsoftware/spine-core 4.2.81 → 4.2.83

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/LICENSE +12 -12
  2. package/dist/Animation.d.ts +6 -6
  3. package/dist/Animation.js +7 -7
  4. package/dist/AnimationState.d.ts +6 -6
  5. package/dist/AnimationState.js +7 -7
  6. package/dist/AnimationStateData.d.ts +6 -6
  7. package/dist/AnimationStateData.js +7 -7
  8. package/dist/AssetManagerBase.d.ts +18 -6
  9. package/dist/AssetManagerBase.js +189 -75
  10. package/dist/AtlasAttachmentLoader.d.ts +6 -6
  11. package/dist/AtlasAttachmentLoader.js +7 -7
  12. package/dist/Bone.d.ts +6 -6
  13. package/dist/Bone.js +7 -7
  14. package/dist/BoneData.d.ts +6 -6
  15. package/dist/BoneData.js +7 -7
  16. package/dist/ConstraintData.d.ts +6 -6
  17. package/dist/ConstraintData.js +7 -7
  18. package/dist/Event.d.ts +6 -6
  19. package/dist/Event.js +7 -7
  20. package/dist/EventData.d.ts +6 -6
  21. package/dist/EventData.js +7 -7
  22. package/dist/IkConstraint.d.ts +6 -6
  23. package/dist/IkConstraint.js +7 -7
  24. package/dist/IkConstraintData.d.ts +6 -6
  25. package/dist/IkConstraintData.js +7 -7
  26. package/dist/PathConstraint.d.ts +6 -6
  27. package/dist/PathConstraint.js +7 -7
  28. package/dist/PathConstraintData.d.ts +6 -6
  29. package/dist/PathConstraintData.js +7 -7
  30. package/dist/PhysicsConstraint.d.ts +6 -6
  31. package/dist/PhysicsConstraint.js +7 -7
  32. package/dist/PhysicsConstraintData.d.ts +6 -6
  33. package/dist/PhysicsConstraintData.js +7 -7
  34. package/dist/Skeleton.d.ts +6 -6
  35. package/dist/Skeleton.js +7 -7
  36. package/dist/SkeletonBinary.d.ts +6 -6
  37. package/dist/SkeletonBinary.js +7 -7
  38. package/dist/SkeletonBounds.d.ts +6 -6
  39. package/dist/SkeletonBounds.js +7 -7
  40. package/dist/SkeletonClipping.d.ts +6 -6
  41. package/dist/SkeletonClipping.js +7 -7
  42. package/dist/SkeletonData.d.ts +6 -6
  43. package/dist/SkeletonData.js +7 -7
  44. package/dist/SkeletonJson.d.ts +6 -6
  45. package/dist/SkeletonJson.js +7 -7
  46. package/dist/Skin.d.ts +6 -6
  47. package/dist/Skin.js +7 -7
  48. package/dist/Slot.d.ts +6 -6
  49. package/dist/Slot.js +7 -7
  50. package/dist/SlotData.d.ts +6 -6
  51. package/dist/SlotData.js +7 -7
  52. package/dist/Texture.d.ts +6 -6
  53. package/dist/Texture.js +7 -7
  54. package/dist/TextureAtlas.d.ts +6 -6
  55. package/dist/TextureAtlas.js +7 -7
  56. package/dist/TransformConstraint.d.ts +6 -6
  57. package/dist/TransformConstraint.js +7 -7
  58. package/dist/TransformConstraintData.d.ts +6 -6
  59. package/dist/TransformConstraintData.js +7 -7
  60. package/dist/Triangulator.d.ts +6 -6
  61. package/dist/Triangulator.js +7 -7
  62. package/dist/Updatable.d.ts +6 -6
  63. package/dist/Updatable.js +7 -7
  64. package/dist/Utils.d.ts +7 -7
  65. package/dist/Utils.js +9 -9
  66. package/dist/attachments/Attachment.d.ts +6 -6
  67. package/dist/attachments/Attachment.js +7 -7
  68. package/dist/attachments/AttachmentLoader.d.ts +6 -6
  69. package/dist/attachments/AttachmentLoader.js +7 -7
  70. package/dist/attachments/BoundingBoxAttachment.d.ts +6 -6
  71. package/dist/attachments/BoundingBoxAttachment.js +7 -7
  72. package/dist/attachments/ClippingAttachment.d.ts +6 -6
  73. package/dist/attachments/ClippingAttachment.js +7 -7
  74. package/dist/attachments/HasTextureRegion.d.ts +6 -6
  75. package/dist/attachments/HasTextureRegion.js +7 -7
  76. package/dist/attachments/MeshAttachment.d.ts +6 -6
  77. package/dist/attachments/MeshAttachment.js +7 -7
  78. package/dist/attachments/PathAttachment.d.ts +6 -6
  79. package/dist/attachments/PathAttachment.js +7 -7
  80. package/dist/attachments/PointAttachment.d.ts +6 -6
  81. package/dist/attachments/PointAttachment.js +7 -7
  82. package/dist/attachments/RegionAttachment.d.ts +6 -6
  83. package/dist/attachments/RegionAttachment.js +7 -7
  84. package/dist/attachments/Sequence.d.ts +6 -6
  85. package/dist/attachments/Sequence.js +7 -7
  86. package/dist/esm/spine-core.min.mjs +2 -2
  87. package/dist/esm/spine-core.mjs +829 -1233
  88. package/dist/esm/spine-core.mjs.map +3 -3
  89. package/dist/iife/spine-core.js +832 -1234
  90. package/dist/iife/spine-core.js.map +3 -3
  91. package/dist/iife/spine-core.min.js +2 -2
  92. package/dist/polyfills.d.ts +6 -6
  93. package/dist/polyfills.js +7 -7
  94. package/package.json +1 -1
@@ -1,16 +1,16 @@
1
1
  /******************************************************************************
2
2
  * Spine Runtimes License Agreement
3
- * Last updated July 28, 2023. Replaces all prior versions.
3
+ * Last updated April 5, 2025. Replaces all prior versions.
4
4
  *
5
- * Copyright (c) 2013-2023, Esoteric Software LLC
5
+ * Copyright (c) 2013-2025, Esoteric Software LLC
6
6
  *
7
7
  * Integration of the Spine Runtimes into software or otherwise creating
8
8
  * derivative works of the Spine Runtimes is permitted under the terms and
9
9
  * conditions of Section 2 of the Spine Editor License Agreement:
10
10
  * http://esotericsoftware.com/spine-editor-license
11
11
  *
12
- * Otherwise, it is permitted to integrate the Spine Runtimes into software or
13
- * otherwise create derivative works of the Spine Runtimes (collectively,
12
+ * Otherwise, it is permitted to integrate the Spine Runtimes into software
13
+ * or otherwise create derivative works of the Spine Runtimes (collectively,
14
14
  * "Products"), provided that each user of the Products must obtain their own
15
15
  * Spine Editor license and redistribution of the Products in any form must
16
16
  * include this license and copyright notice.
@@ -23,8 +23,8 @@
23
23
  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
24
24
  * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
25
25
  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE
27
- * SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27
+ * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
28
  *****************************************************************************/
29
29
  import { Animation, InheritTimeline, AttachmentTimeline, RGBATimeline, RGBTimeline, AlphaTimeline, RGBA2Timeline, RGB2Timeline, RotateTimeline, TranslateTimeline, TranslateXTimeline, TranslateYTimeline, ScaleTimeline, ScaleXTimeline, ScaleYTimeline, ShearTimeline, ShearXTimeline, ShearYTimeline, IkConstraintTimeline, TransformConstraintTimeline, PathConstraintPositionTimeline, PathConstraintSpacingTimeline, PathConstraintMixTimeline, DeformTimeline, DrawOrderTimeline, EventTimeline, PhysicsConstraintResetTimeline, PhysicsConstraintInertiaTimeline, PhysicsConstraintStrengthTimeline, PhysicsConstraintDampingTimeline, PhysicsConstraintMassTimeline, PhysicsConstraintWindTimeline, PhysicsConstraintGravityTimeline, PhysicsConstraintMixTimeline } from "./Animation.js";
30
30
  import { BoneData, Inherit } from "./BoneData.js";
@@ -1133,4 +1133,4 @@ function readCurve(curve, timeline, bezier, frame, value, time1, time2, value1,
1133
1133
  function getValue(map, property, defaultValue) {
1134
1134
  return map[property] !== undefined ? map[property] : defaultValue;
1135
1135
  }
1136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25Kc29uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NrZWxldG9uSnNvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFFL0UsT0FBTyxFQUFFLFNBQVMsRUFBWSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsMkJBQTJCLEVBQUUsOEJBQThCLEVBQUUsNkJBQTZCLEVBQUUseUJBQXlCLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBaUQsOEJBQThCLEVBQUUsZ0NBQWdDLEVBQUUsaUNBQWlDLEVBQUUsZ0NBQWdDLEVBQUUsNkJBQTZCLEVBQUUsNkJBQTZCLEVBQUUsZ0NBQWdDLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUk3ekIsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDakMsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQW1CLE1BQU0sWUFBWSxDQUFDO0FBQzNELE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbkU7Ozs7cUJBSXFCO0FBQ3JCLE1BQU0sT0FBTyxZQUFZO0lBQ3hCLGdCQUFnQixDQUFtQjtJQUVuQzs7O3FIQUdpSDtJQUNqSCxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ0YsWUFBWSxHQUFHLElBQUksS0FBSyxFQUFjLENBQUM7SUFFL0MsWUFBYSxnQkFBa0M7UUFDOUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0lBQzFDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBRSxJQUFrQjtRQUNuQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3ZCLElBQUksWUFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdEMsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRWhFLFdBQVc7UUFDWCxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ2hDLElBQUksV0FBVyxFQUFFLENBQUM7WUFDakIsWUFBWSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ3JDLFlBQVksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUN6QyxZQUFZLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDL0IsWUFBWSxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQy9CLFlBQVksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUN2QyxZQUFZLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7WUFDekMsWUFBWSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUNuRixZQUFZLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUM7WUFDbkMsWUFBWSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQztZQUNyRCxZQUFZLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDO1FBQ3BELENBQUM7UUFFRCxRQUFRO1FBQ1IsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzVDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRTVCLElBQUksTUFBTSxHQUFvQixJQUFJLENBQUM7Z0JBQ25DLElBQUksVUFBVSxHQUFXLFFBQVEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUMzRCxJQUFJLFVBQVU7b0JBQUUsTUFBTSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzNELElBQUksSUFBSSxHQUFHLElBQUksUUFBUSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ3pFLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUNyRCxJQUFJLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDM0MsSUFBSSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDaEYsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFFckQsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzdDLElBQUksS0FBSztvQkFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFM0MsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDL0IsQ0FBQztRQUNGLENBQUM7UUFFRCxTQUFTO1FBQ1QsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzVDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVCLElBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBRTVCLElBQUksUUFBUSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNuRCxJQUFJLENBQUMsUUFBUTtvQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixPQUFPLENBQUMsSUFBSSxhQUFhLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQzFGLElBQUksSUFBSSxHQUFHLElBQUksUUFBUSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFFdkUsSUFBSSxLQUFLLEdBQVcsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3JELElBQUksS0FBSztvQkFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFM0MsSUFBSSxJQUFJLEdBQVcsUUFBUSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ25ELElBQUksSUFBSTtvQkFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRWxELElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzVELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDbEYsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDbEQsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDL0IsQ0FBQztRQUNGLENBQUM7UUFFRCxpQkFBaUI7UUFDakIsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDYixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDekMsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxJQUFJLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBRTNELEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO29CQUN4RCxJQUFJLElBQUksR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDMUQsSUFBSSxDQUFDLElBQUk7d0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsc0JBQXNCLGFBQWEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO29CQUNySCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkIsQ0FBQztnQkFFRCxJQUFJLE1BQU0sR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFBQSxDQUFDO2dCQUMxRCxJQUFJLENBQUMsTUFBTTtvQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixhQUFhLENBQUMsTUFBTSxzQkFBc0IsYUFBYSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7Z0JBQzNILElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO2dCQUVyQixJQUFJLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDL0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDM0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDekQsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFFekQsWUFBWSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkMsQ0FBQztRQUNGLENBQUM7UUFFRCx5QkFBeUI7UUFDekIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ2hELElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksSUFBSSxHQUFHLElBQUksdUJBQXVCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMzRCxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNqRCxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUUzRCxLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztvQkFDeEQsSUFBSSxRQUFRLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDdkMsSUFBSSxJQUFJLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDM0MsSUFBSSxDQUFDLElBQUk7d0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsUUFBUSw2QkFBNkIsYUFBYSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7b0JBQzdHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN2QixDQUFDO2dCQUVELElBQUksVUFBVSxHQUFXLGFBQWEsQ0FBQyxNQUFNLENBQUM7Z0JBQzlDLElBQUksTUFBTSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxNQUFNO29CQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLFVBQVUsNkJBQTZCLGFBQWEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO2dCQUN4SCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztnQkFFckIsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDckQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDM0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQ3ZELElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUN2RCxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUV6RCxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMvQyxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDekQsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3RFLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBRXpELFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUMsQ0FBQztRQUNGLENBQUM7UUFFRCxvQkFBb0I7UUFDcEIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDM0MsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDakMsSUFBSSxJQUFJLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBRTNELEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO29CQUN4RCxJQUFJLFFBQVEsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUN2QyxJQUFJLElBQUksR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUMzQyxJQUFJLENBQUMsSUFBSTt3QkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixRQUFRLHdCQUF3QixhQUFhLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztvQkFDeEcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZCLENBQUM7Z0JBRUQsSUFBSSxVQUFVLEdBQVcsYUFBYSxDQUFDLE1BQU0sQ0FBQztnQkFDOUMsSUFBSSxNQUFNLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLE1BQU07b0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsVUFBVSx3QkFBd0IsYUFBYSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7Z0JBQ25ILElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO2dCQUVyQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxhQUFhLEVBQUUsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RHLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDbEcsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUNoRyxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM3RCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN2RCxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksWUFBWSxDQUFDLEtBQUs7b0JBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7Z0JBQ3BFLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JELElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksV0FBVyxDQUFDLEtBQUs7b0JBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUM7Z0JBQzNHLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUV2RCxZQUFZLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QyxDQUFDO1FBQ0YsQ0FBQztRQUVELHVCQUF1QjtRQUN2QixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDOUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNELElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBRTNELE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUM7Z0JBQ3BDLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzdDLElBQUksSUFBSSxJQUFJLElBQUk7b0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsR0FBRyxRQUFRLENBQUMsQ0FBQztnQkFDekUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBRWpCLElBQUksQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUM1RCxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDckQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDekQsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDckQsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzFELElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3JFLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDdkUsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDckUsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDL0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDL0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDckUsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFFN0QsWUFBWSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QyxDQUFDO1FBQ0YsQ0FBQztRQUVELFNBQVM7UUFDVCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFDM0IsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUVsQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDbkIsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7d0JBQ2xELElBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQ2pDLElBQUksSUFBSSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQzNDLElBQUksQ0FBQyxJQUFJOzRCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLFFBQVEsYUFBYSxPQUFPLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQzt3QkFDdkYsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3ZCLENBQUM7Z0JBQ0YsQ0FBQztnQkFFRCxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDaEIsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7d0JBQy9DLElBQUksY0FBYyxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQ3BDLElBQUksVUFBVSxHQUFHLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQzt3QkFDL0QsSUFBSSxDQUFDLFVBQVU7NEJBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsY0FBYyxhQUFhLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO3dCQUM1RyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDbkMsQ0FBQztnQkFDRixDQUFDO2dCQUVELElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUN2QixLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQzt3QkFDdEQsSUFBSSxjQUFjLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDM0MsSUFBSSxVQUFVLEdBQUcsWUFBWSxDQUFDLHVCQUF1QixDQUFDLGNBQWMsQ0FBQyxDQUFDO3dCQUN0RSxJQUFJLENBQUMsVUFBVTs0QkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxjQUFjLGFBQWEsT0FBTyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7d0JBQ25ILElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUNuQyxDQUFDO2dCQUNGLENBQUM7Z0JBRUQsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ2xCLEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO3dCQUNqRCxJQUFJLGNBQWMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUN0QyxJQUFJLFVBQVUsR0FBRyxZQUFZLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7d0JBQ2pFLElBQUksQ0FBQyxVQUFVOzRCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLGNBQWMsYUFBYSxPQUFPLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQzt3QkFDOUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ25DLENBQUM7Z0JBQ0YsQ0FBQztnQkFFRCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDckIsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7d0JBQ3BELElBQUksY0FBYyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQ3pDLElBQUksVUFBVSxHQUFHLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsQ0FBQzt3QkFDcEUsSUFBSSxDQUFDLFVBQVU7NEJBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsY0FBYyxhQUFhLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO3dCQUNqSCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDbkMsQ0FBQztnQkFDRixDQUFDO2dCQUVELEtBQUssSUFBSSxRQUFRLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUMxQyxJQUFJLElBQUksR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUMzQyxJQUFJLENBQUMsSUFBSTt3QkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixRQUFRLGFBQWEsT0FBTyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7b0JBQ3ZGLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQzVDLEtBQUssSUFBSSxTQUFTLElBQUksT0FBTyxFQUFFLENBQUM7d0JBQy9CLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQzt3QkFDcEcsSUFBSSxVQUFVOzRCQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7b0JBQ3ZFLENBQUM7Z0JBQ0YsQ0FBQztnQkFDRCxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDOUIsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLFNBQVM7b0JBQUUsWUFBWSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDN0QsQ0FBQztRQUNGLENBQUM7UUFFRCxpQkFBaUI7UUFDakIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMxRCxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEcsSUFBSSxDQUFDLElBQUk7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDakUsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN6RSxJQUFJLENBQUMsTUFBTTtnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUM1RSxVQUFVLENBQUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFtQixNQUFNLENBQUMsQ0FBQyxDQUFtQixVQUFVLENBQUMsSUFBSSxDQUFDO1lBQy9ILFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFpQixNQUFNLENBQUMsQ0FBQztZQUN0RCxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUk7Z0JBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRTdCLFVBQVU7UUFDVixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQixLQUFLLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxJQUFJLEdBQUcsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ25ELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUM5QyxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNqRCxDQUFDO2dCQUNELFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hDLENBQUM7UUFDRixDQUFDO1FBRUQsY0FBYztRQUNkLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLEtBQUssSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUMzQyxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNsRCxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDL0QsQ0FBQztRQUNGLENBQUM7UUFFRCxPQUFPLFlBQVksQ0FBQztJQUNyQixDQUFDO0lBRUQsY0FBYyxDQUFFLEdBQVEsRUFBRSxJQUFVLEVBQUUsU0FBaUIsRUFBRSxJQUFZLEVBQUUsWUFBMEI7UUFDaEcsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN2QixJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFbkMsUUFBUSxRQUFRLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3pDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDZixJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDdkMsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNsRSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ25GLElBQUksQ0FBQyxNQUFNO29CQUFFLE9BQU8sSUFBSSxDQUFDO2dCQUN6QixNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFDbkIsTUFBTSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQ3pDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUN6QyxNQUFNLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxNQUFNLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxNQUFNLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMvQyxNQUFNLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO2dCQUNqQyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2dCQUNuQyxNQUFNLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztnQkFFM0IsSUFBSSxLQUFLLEdBQVcsUUFBUSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ2pELElBQUksS0FBSztvQkFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFN0MsSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLElBQUk7b0JBQUUsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNqRCxPQUFPLE1BQU0sQ0FBQztZQUNmLENBQUM7WUFDRCxLQUFLLGFBQWEsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3JFLElBQUksQ0FBQyxHQUFHO29CQUFFLE9BQU8sSUFBSSxDQUFDO2dCQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxLQUFLLEdBQVcsUUFBUSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ2pELElBQUksS0FBSztvQkFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUMsT0FBTyxHQUFHLENBQUM7WUFDWixDQUFDO1lBQ0QsS0FBSyxNQUFNLENBQUM7WUFDWixLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUM7Z0JBQ25CLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ2xFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDL0UsSUFBSSxDQUFDLElBQUk7b0JBQUUsT0FBTyxJQUFJLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUVqQixJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDekMsSUFBSSxLQUFLO29CQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUUzQyxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDL0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO2dCQUV6QixJQUFJLE1BQU0sR0FBVyxRQUFRLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDbkQsSUFBSSxNQUFNLEVBQUUsQ0FBQztvQkFDWixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQVUsUUFBUSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3ZJLE9BQU8sSUFBSSxDQUFDO2dCQUNiLENBQUM7Z0JBRUQsSUFBSSxHQUFHLEdBQWtCLEdBQUcsQ0FBQyxHQUFHLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7Z0JBQ3JCLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJO29CQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFFN0MsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQy9DLE9BQU8sSUFBSSxDQUFDO1lBQ2IsQ0FBQztZQUNELEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDYixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUMvRCxJQUFJLENBQUMsSUFBSTtvQkFBRSxPQUFPLElBQUksQ0FBQztnQkFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFFMUQsSUFBSSxXQUFXLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFdBQVcsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFFL0MsSUFBSSxPQUFPLEdBQWtCLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDaEUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTtvQkFDMUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztnQkFFdkIsSUFBSSxLQUFLLEdBQVcsUUFBUSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ2pELElBQUksS0FBSztvQkFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0MsT0FBTyxJQUFJLENBQUM7WUFDYixDQUFDO1lBQ0QsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNkLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ2pFLElBQUksQ0FBQyxLQUFLO29CQUFFLE9BQU8sSUFBSSxDQUFDO2dCQUN4QixLQUFLLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDeEMsS0FBSyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQ3hDLEtBQUssQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBRTlDLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLEtBQUs7b0JBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVDLE9BQU8sS0FBSyxDQUFDO1lBQ2QsQ0FBQztZQUNELEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDakIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDbkUsSUFBSSxDQUFDLElBQUk7b0JBQUUsT0FBTyxJQUFJLENBQUM7Z0JBRXZCLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLEdBQUc7b0JBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUVuRCxJQUFJLFdBQVcsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDO2dCQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsV0FBVyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUUvQyxJQUFJLEtBQUssR0FBVyxRQUFRLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDakQsSUFBSSxLQUFLO29CQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLElBQUksQ0FBQztZQUNiLENBQUM7UUFDRixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQsWUFBWSxDQUFFLEdBQVE7UUFDckIsSUFBSSxHQUFHLElBQUksSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQzdCLElBQUksUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQsUUFBUSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzQyxRQUFRLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzdDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEQsT0FBTyxRQUFRLENBQUM7SUFDakIsQ0FBQztJQUVELFlBQVksQ0FBRSxHQUFRLEVBQUUsVUFBNEIsRUFBRSxjQUFzQjtRQUMzRSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3ZCLFVBQVUsQ0FBQyxtQkFBbUIsR0FBRyxjQUFjLENBQUM7UUFDaEQsSUFBSSxRQUFRLEdBQWtCLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDM0MsSUFBSSxjQUFjLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3ZDLElBQUksY0FBYyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbEQsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ2hCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO29CQUM5QyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDO1lBQzdCLENBQUM7WUFDRCxVQUFVLENBQUMsUUFBUSxHQUFHLGNBQWMsQ0FBQztZQUNyQyxPQUFPO1FBQ1IsQ0FBQztRQUNELElBQUksT0FBTyxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFDbEMsSUFBSSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUNoQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7WUFDN0MsSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDOUIsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN0QixLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNqRCxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7Z0JBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztnQkFDdEMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0IsQ0FBQztRQUNGLENBQUM7UUFDRCxVQUFVLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUN6QixVQUFVLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELGFBQWEsQ0FBRSxHQUFRLEVBQUUsSUFBWSxFQUFFLFlBQTBCO1FBQ2hFLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdkIsSUFBSSxTQUFTLEdBQUcsSUFBSSxLQUFLLEVBQVksQ0FBQztRQUV0QyxrQkFBa0I7UUFDbEIsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZixLQUFLLElBQUksUUFBUSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDaEMsSUFBSSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDbEMsSUFBSSxJQUFJLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDM0MsSUFBSSxDQUFDLElBQUk7b0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsR0FBRyxRQUFRLENBQUMsQ0FBQztnQkFDMUQsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDM0IsS0FBSyxJQUFJLFlBQVksSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDbEMsSUFBSSxXQUFXLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUN4QyxJQUFJLENBQUMsV0FBVzt3QkFBRSxTQUFTO29CQUMzQixJQUFJLE1BQU0sR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO29CQUNoQyxJQUFJLFlBQVksSUFBSSxZQUFZLEVBQUUsQ0FBQzt3QkFDbEMsSUFBSSxRQUFRLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7d0JBQ3pELEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQzs0QkFDN0MsSUFBSSxNQUFNLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUNoQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUN2RixDQUFDO3dCQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBRTFCLENBQUM7eUJBQU0sSUFBSSxZQUFZLElBQUksTUFBTSxFQUFFLENBQUM7d0JBQ25DLElBQUksUUFBUSxHQUFHLElBQUksWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO3dCQUNoRSxJQUFJLE1BQU0sR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQzVCLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUN2QyxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFFM0MsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsR0FBSSxLQUFLLEVBQUUsRUFBRSxDQUFDOzRCQUMzQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUNuRSxJQUFJLE9BQU8sR0FBRyxXQUFXLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDOzRCQUNyQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0NBQ2QsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQ0FDeEIsTUFBTTs0QkFDUCxDQUFDOzRCQUNELElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDOzRCQUN6QyxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQzs0QkFDL0MsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQzs0QkFDekIsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQ0FDWCxNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0NBQzNGLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQ0FDM0YsTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dDQUMzRixNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7NEJBQzVGLENBQUM7NEJBQ0QsSUFBSSxHQUFHLEtBQUssQ0FBQzs0QkFDYixLQUFLLEdBQUcsUUFBUSxDQUFDOzRCQUNqQixNQUFNLEdBQUcsT0FBTyxDQUFDO3dCQUNsQixDQUFDO3dCQUVELFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBRTFCLENBQUM7eUJBQU0sSUFBSSxZQUFZLElBQUksS0FBSyxFQUFFLENBQUM7d0JBQ2xDLElBQUksUUFBUSxHQUFHLElBQUksV0FBVyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO3dCQUM5RCxJQUFJLE1BQU0sR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQzVCLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUN2QyxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFFM0MsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsR0FBSSxLQUFLLEVBQUUsRUFBRSxDQUFDOzRCQUMzQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDMUQsSUFBSSxPQUFPLEdBQUcsV0FBVyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQzs0QkFDckMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dDQUNkLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7Z0NBQ3hCLE1BQU07NEJBQ1AsQ0FBQzs0QkFDRCxJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQzs0QkFDekMsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQy9DLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7NEJBQ3pCLElBQUksS0FBSyxFQUFFLENBQUM7Z0NBQ1gsTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dDQUMzRixNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0NBQzNGLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzs0QkFDNUYsQ0FBQzs0QkFDRCxJQUFJLEdBQUcsS0FBSyxDQUFDOzRCQUNiLEtBQUssR0FBRyxRQUFRLENBQUM7NEJBQ2pCLE1BQU0sR0FBRyxPQUFPLENBQUM7d0JBQ2xCLENBQUM7d0JBRUQsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFFMUIsQ0FBQzt5QkFBTSxJQUFJLFlBQVksSUFBSSxPQUFPLEVBQUUsQ0FBQzt3QkFDcEMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2hHLENBQUM7eUJBQU0sSUFBSSxZQUFZLElBQUksT0FBTyxFQUFFLENBQUM7d0JBQ3BDLElBQUksUUFBUSxHQUFHLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO3dCQUVoRSxJQUFJLE1BQU0sR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQzVCLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUN2QyxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDM0MsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBRTNDLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLEdBQUksS0FBSyxFQUFFLEVBQUUsQ0FBQzs0QkFDM0MsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDakcsSUFBSSxPQUFPLEdBQUcsV0FBVyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQzs0QkFDckMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dDQUNkLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7Z0NBQ3hCLE1BQU07NEJBQ1AsQ0FBQzs0QkFDRCxJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQzs0QkFDekMsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQy9DLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDOzRCQUMvQyxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDOzRCQUN6QixJQUFJLEtBQUssRUFBRSxDQUFDO2dDQUNYLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQ0FDM0YsTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dDQUMzRixNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0NBQzNGLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQ0FDM0YsTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dDQUM3RixNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0NBQzdGLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzs0QkFDOUYsQ0FBQzs0QkFDRCxJQUFJLEdBQUcsS0FBSyxDQUFDOzRCQUNiLEtBQUssR0FBRyxRQUFRLENBQUM7NEJBQ2pCLE1BQU0sR0FBRyxTQUFTLENBQUM7NEJBQ25CLE1BQU0sR0FBRyxPQUFPLENBQUM7d0JBQ2xCLENBQUM7d0JBRUQsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFFMUIsQ0FBQzt5QkFBTSxJQUFJLFlBQVksSUFBSSxNQUFNLEVBQUUsQ0FBQzt3QkFDbkMsSUFBSSxRQUFRLEdBQUcsSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7d0JBRS9ELElBQUksTUFBTSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDNUIsSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQ3ZDLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUMzQyxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFFM0MsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLENBQUMsR0FBSSxLQUFLLEVBQUUsRUFBRSxDQUFDOzRCQUMzQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDeEYsSUFBSSxPQUFPLEdBQUcsV0FBVyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQzs0QkFDckMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dDQUNkLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7Z0NBQ3hCLE1BQU07NEJBQ1AsQ0FBQzs0QkFDRCxJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQzs0QkFDekMsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQy9DLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDOzRCQUMvQyxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDOzRCQUN6QixJQUFJLEtBQUssRUFBRSxDQUFDO2dDQUNYLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQ0FDM0YsTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dDQUMzRixNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0NBQzNGLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQ0FDN0YsTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dDQUM3RixNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7NEJBQzlGLENBQUM7NEJBQ0QsSUFBSSxHQUFHLEtBQUssQ0FBQzs0QkFDYixLQUFLLEdBQUcsUUFBUSxDQUFDOzRCQUNqQixNQUFNLEdBQUcsU0FBUyxDQUFD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d0JBQzdELFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzVELENBQUM7eUJBQU0sSUFBSSxZQUFZLEtBQUssUUFBUSxFQUFFLENBQUM7d0JBQ3RDLElBQUksUUFBUSxHQUFHLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7d0JBQzdELFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzVELENBQUM7eUJBQU0sSUFBSSxZQUFZLEtBQUssT0FBTyxFQUFFLENBQUM7d0JBQ3JDLElBQUksUUFBUSxHQUFHLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO3dCQUNqRSxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3RFLENBQUM7eUJBQU0sSUFBSSxZQUFZLEtBQUssUUFBUSxFQUFFLENBQUM7d0JBQ3RDLElBQUksUUFBUSxHQUFHLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7d0JBQzdELFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzVELENBQUM7eUJBQU0sSUFBSSxZQUFZLEtBQUssUUFBUSxFQUFFLENBQUM7d0JBQ3RDLElBQUksUUFBUSxHQUFHLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7d0JBQzdELFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcs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RUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDN0YsTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDbkYsTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDbkYsTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDN0YsTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDN0YsTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDOUYsQ0FBQztvQkFFRCxJQUFJLEdBQUcsS0FBSyxDQUFDO29CQUNiLFNBQVMsR0FBRyxVQUFVLENBQUM7b0JBQ3ZCLElBQUksR0FBRyxLQUFLLENBQUM7b0JBQ2IsSUFBSSxHQUFHLEtBQUssQ0FBQztvQkFDYixTQUFTLEdBQUcsVUFBVSxDQUFDO29CQUN2QixTQUFTLEdBQUcsVUFBVSxDQUFDO29CQUN2QixTQUFTLEdBQUcsVUFB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QUMsQ0FBQztJQUNuQixJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkIsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDL0IsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2QixJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUMvQixRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzRixPQUFPLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDbkIsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFFLEdBQVEsRUFBRSxRQUFnQixFQUFFLFlBQWlCO0lBQy9ELE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7QUFDbkUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgSnVseSAyOCwgMjAyMy4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDIzLCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yXG4gKiBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhFXG4gKiBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgQW5pbWF0aW9uLCBUaW1lbGluZSwgSW5oZXJpdFRpbWVsaW5lLCBBdHRhY2htZW50VGltZWxpbmUsIFJHQkFUaW1lbGluZSwgUkdCVGltZWxpbmUsIEFscGhhVGltZWxpbmUsIFJHQkEyVGltZWxpbmUsIFJHQjJUaW1lbGluZSwgUm90YXRlVGltZWxpbmUsIFRyYW5zbGF0ZVRpbWVsaW5lLCBUcmFuc2xhdGVYVGltZWxpbmUsIFRyYW5zbGF0ZVlUaW1lbGluZSwgU2NhbGVUaW1lbGluZSwgU2NhbGVYVGltZWxpbmUsIFNjYWxlWVRpbWVsaW5lLCBTaGVhclRpbWVsaW5lLCBTaGVhclhUaW1lbGluZSwgU2hlYXJZVGltZWxpbmUsIElrQ29uc3RyYWludFRpbWVsaW5lLCBUcmFuc2Zvcm1Db25zdHJhaW50VGltZWxpbmUsIFBhdGhDb25zdHJhaW50UG9zaXRpb25UaW1lbGluZSwgUGF0aENvbnN0cmFpbnRTcGFjaW5nVGltZWxpbmUsIFBhdGhDb25zdHJhaW50TWl4VGltZWxpbmUsIERlZm9ybVRpbWVsaW5lLCBEcmF3T3JkZXJUaW1lbGluZSwgRXZlbnRUaW1lbGluZSwgQ3VydmVUaW1lbGluZTEsIEN1cnZlVGltZWxpbmUyLCBDdXJ2ZVRpbWVsaW5lLCBQaHlzaWNzQ29uc3RyYWludFJlc2V0VGltZWxpbmUsIFBoeXNpY3NDb25zdHJhaW50SW5lcnRpYVRpbWVsaW5lLCBQaHlzaWNzQ29uc3RyYWludFN0cmVuZ3RoVGltZWxpbmUsIFBoeXNpY3NDb25zdHJhaW50RGFtcGluZ1RpbWVsaW5lLCBQaHlzaWNzQ29uc3RyYWludE1hc3NUaW1lbGluZSwgUGh5c2ljc0NvbnN0cmFpbnRXaW5kVGltZWxpbmUsIFBoeXNpY3NDb25zdHJhaW50R3Jhdml0eVRpbWVsaW5lLCBQaHlzaWNzQ29uc3RyYWludE1peFRpbWVsaW5lIH0gZnJvbSBcIi4vQW5pbWF0aW9uLmpzXCI7XG5pbXBvcnQgeyBWZXJ0ZXhBdHRhY2htZW50LCBBdHRhY2htZW50IH0gZnJvbSBcIi4vYXR0YWNobWVudHMvQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHsgQXR0YWNobWVudExvYWRlciB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL0F0dGFjaG1lbnRMb2FkZXIuanNcIjtcbmltcG9ydCB7IE1lc2hBdHRhY2htZW50IH0gZnJvbSBcIi4vYXR0YWNobWVudHMvTWVzaEF0dGFjaG1lbnQuanNcIjtcbmltcG9ydCB7IEJvbmVEYXRhLCBJbmhlcml0IH0gZnJvbSBcIi4vQm9uZURhdGEuanNcIjtcbmltcG9ydCB7IEV2ZW50RGF0YSB9IGZyb20gXCIuL0V2ZW50RGF0YS5qc1wiO1xuaW1wb3J0IHsgRXZlbnQgfSBmcm9tIFwiLi9FdmVudC5qc1wiO1xuaW1wb3J0IHsgSWtDb25zdHJhaW50RGF0YSB9IGZyb20gXCIuL0lrQ29uc3RyYWludERhdGEuanNcIjtcbmltcG9ydCB7IFBhdGhDb25zdHJhaW50RGF0YSwgUG9zaXRpb25Nb2RlLCBTcGFjaW5nTW9kZSwgUm90YXRlTW9kZSB9IGZyb20gXCIuL1BhdGhDb25zdHJhaW50RGF0YS5qc1wiO1xuaW1wb3J0IHsgU2tlbGV0b25EYXRhIH0gZnJvbSBcIi4vU2tlbGV0b25EYXRhLmpzXCI7XG5pbXBvcnQgeyBTa2luIH0gZnJvbSBcIi4vU2tpbi5qc1wiO1xuaW1wb3J0IHsgU2xvdERhdGEsIEJsZW5kTW9kZSB9IGZyb20gXCIuL1Nsb3REYXRhLmpzXCI7XG5pbXBvcnQgeyBUcmFuc2Zvcm1Db25zdHJhaW50RGF0YSB9IGZyb20gXCIuL1RyYW5zZm9ybUNvbnN0cmFpbnREYXRhLmpzXCI7XG5pbXBvcnQgeyBVdGlscywgQ29sb3IsIE51bWJlckFycmF5TGlrZSB9IGZyb20gXCIuL1V0aWxzLmpzXCI7XG5pbXBvcnQgeyBTZXF1ZW5jZSwgU2VxdWVuY2VNb2RlIH0gZnJvbSBcIi4vYXR0YWNobWVudHMvU2VxdWVuY2UuanNcIjtcbmltcG9ydCB7IFNlcXVlbmNlVGltZWxpbmUgfSBmcm9tIFwiLi9BbmltYXRpb24uanNcIjtcbmltcG9ydCB7IEhhc1RleHR1cmVSZWdpb24gfSBmcm9tIFwiLi9hdHRhY2htZW50cy9IYXNUZXh0dXJlUmVnaW9uLmpzXCI7XG5pbXBvcnQgeyBQaHlzaWNzQ29uc3RyYWludERhdGEgfSBmcm9tIFwiLi9QaHlzaWNzQ29uc3RyYWludERhdGEuanNcIjtcblxuLyoqIExvYWRzIHNrZWxldG9uIGRhdGEgaW4gdGhlIFNwaW5lIEpTT04gZm9ybWF0LlxuICpcbiAqIFNlZSBbU3BpbmUgSlNPTiBmb3JtYXRdKGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1qc29uLWZvcm1hdCkgYW5kXG4gKiBbSlNPTiBhbmQgYmluYXJ5IGRhdGFdKGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1sb2FkaW5nLXNrZWxldG9uLWRhdGEjSlNPTi1hbmQtYmluYXJ5LWRhdGEpIGluIHRoZSBTcGluZVxuICogUnVudGltZXMgR3VpZGUuICovXG5leHBvcnQgY2xhc3MgU2tlbGV0b25Kc29uIHtcblx0YXR0YWNobWVudExvYWRlcjogQXR0YWNobWVudExvYWRlcjtcblxuXHQvKiogU2NhbGVzIGJvbmUgcG9zaXRpb25zLCBpbWFnZSBzaXplcywgYW5kIHRyYW5zbGF0aW9ucyBhcyB0aGV5IGFyZSBsb2FkZWQuIFRoaXMgYWxsb3dzIGRpZmZlcmVudCBzaXplIGltYWdlcyB0byBiZSB1c2VkIGF0XG5cdCAqIHJ1bnRpbWUgdGhhbiB3ZXJlIHVzZWQgaW4gU3BpbmUuXG5cdCAqXG5cdCAqIFNlZSBbU2NhbGluZ10oaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWxvYWRpbmctc2tlbGV0b24tZGF0YSNTY2FsaW5nKSBpbiB0aGUgU3BpbmUgUnVudGltZXMgR3VpZGUuICovXG5cdHNjYWxlID0gMTtcblx0cHJpdmF0ZSBsaW5rZWRNZXNoZXMgPSBuZXcgQXJyYXk8TGlua2VkTWVzaD4oKTtcblxuXHRjb25zdHJ1Y3RvciAoYXR0YWNobWVudExvYWRlcjogQXR0YWNobWVudExvYWRlcikge1xuXHRcdHRoaXMuYXR0YWNobWVudExvYWRlciA9IGF0dGFjaG1lbnRMb2FkZXI7XG5cdH1cblxuXHRyZWFkU2tlbGV0b25EYXRhIChqc29uOiBzdHJpbmcgfCBhbnkpOiBTa2VsZXRvbkRhdGEge1xuXHRcdGxldCBzY2FsZSA9IHRoaXMuc2NhbGU7XG5cdFx0bGV0IHNrZWxldG9uRGF0YSA9IG5ldyBTa2VsZXRvbkRhdGEoKTtcblx0XHRsZXQgcm9vdCA9IHR5cGVvZiAoanNvbikgPT09IFwic3RyaW5nXCIgPyBKU09OLnBhcnNlKGpzb24pIDoganNvbjtcblxuXHRcdC8vIFNrZWxldG9uXG5cdFx0bGV0IHNrZWxldG9uTWFwID0gcm9vdC5za2VsZXRvbjtcblx0XHRpZiAoc2tlbGV0b25NYXApIHtcblx0XHRcdHNrZWxldG9uRGF0YS5oYXNoID0gc2tlbGV0b25NYXAuaGFzaDtcblx0XHRcdHNrZWxldG9uRGF0YS52ZXJzaW9uID0gc2tlbGV0b25NYXAuc3BpbmU7XG5cdFx0XHRza2VsZXRvbkRhdGEueCA9IHNrZWxldG9uTWFwLng7XG5cdFx0XHRza2VsZXRvbkRhdGEueSA9IHNrZWxldG9uTWFwLnk7XG5cdFx0XHRza2VsZXRvbkRhdGEud2lkdGggPSBza2VsZXRvbk1hcC53aWR0aDtcblx0XHRcdHNrZWxldG9uRGF0YS5oZWlnaHQgPSBza2VsZXRvbk1hcC5oZWlnaHQ7XG5cdFx0XHRza2VsZXRvbkRhdGEucmVmZXJlbmNlU2NhbGUgPSBnZXRWYWx1ZShza2VsZXRvbk1hcCwgXCJyZWZlcmVuY2VTY2FsZVwiLCAxMDApICogc2NhbGU7XG5cdFx0XHRza2VsZXRvbkRhdGEuZnBzID0gc2tlbGV0b25NYXAuZnBzO1xuXHRcdFx0c2tlbGV0b25EYXRhLmltYWdlc1BhdGggPSBza2VsZXRvbk1hcC5pbWFnZXMgPz8gbnVsbDtcblx0XHRcdHNrZWxldG9uRGF0YS5hdWRpb1BhdGggPSBza2VsZXRvbk1hcC5hdWRpbyA/PyBudWxsO1xuXHRcdH1cblxuXHRcdC8vIEJvbmVzXG5cdFx0aWYgKHJvb3QuYm9uZXMpIHtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcm9vdC5ib25lcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRsZXQgYm9uZU1hcCA9IHJvb3QuYm9uZXNbaV07XG5cblx0XHRcdFx0bGV0IHBhcmVudDogQm9uZURhdGEgfCBudWxsID0gbnVsbDtcblx0XHRcdFx0bGV0IHBhcmVudE5hbWU6IHN0cmluZyA9IGdldFZhbHVlKGJvbmVNYXAsIFwicGFyZW50XCIsIG51bGwpO1xuXHRcdFx0XHRpZiAocGFyZW50TmFtZSkgcGFyZW50ID0gc2tlbGV0b25EYXRhLmZpbmRCb25lKHBhcmVudE5hbWUpO1xuXHRcdFx0XHRsZXQgZGF0YSA9IG5ldyBCb25lRGF0YShza2VsZXRvbkRhdGEuYm9uZXMubGVuZ3RoLCBib25lTWFwLm5hbWUsIHBhcmVudCk7XG5cdFx0XHRcdGRhdGEubGVuZ3RoID0gZ2V0VmFsdWUoYm9uZU1hcCwgXCJsZW5ndGhcIiwgMCkgKiBzY2FsZTtcblx0XHRcdFx0ZGF0YS54ID0gZ2V0VmFsdWUoYm9uZU1hcCwgXCJ4XCIsIDApICogc2NhbGU7XG5cdFx0XHRcdGRhdGEueSA9IGdldFZhbHVlKGJvbmVNYXAsIFwieVwiLCAwKSAqIHNjYWxlO1xuXHRcdFx0XHRkYXRhLnJvdGF0aW9uID0gZ2V0VmFsdWUoYm9uZU1hcCwgXCJyb3RhdGlvblwiLCAwKTtcblx0XHRcdFx0ZGF0YS5zY2FsZVggPSBnZXRWYWx1ZShib25lTWFwLCBcInNjYWxlWFwiLCAxKTtcblx0XHRcdFx0ZGF0YS5zY2FsZVkgPSBnZXRWYWx1ZShib25lTWFwLCBcInNjYWxlWVwiLCAxKTtcblx0XHRcdFx0ZGF0YS5zaGVhclggPSBnZXRWYWx1ZShib25lTWFwLCBcInNoZWFyWFwiLCAwKTtcblx0XHRcdFx0ZGF0YS5zaGVhclkgPSBnZXRWYWx1ZShib25lTWFwLCBcInNoZWFyWVwiLCAwKTtcblx0XHRcdFx0ZGF0YS5pbmhlcml0ID0gVXRpbHMuZW51bVZhbHVlKEluaGVyaXQsIGdldFZhbHVlKGJvbmVNYXAsIFwiaW5oZXJpdFwiLCBcIk5vcm1hbFwiKSk7XG5cdFx0XHRcdGRhdGEuc2tpblJlcXVpcmVkID0gZ2V0VmFsdWUoYm9uZU1hcCwgXCJza2luXCIsIGZhbHNlKTtcblxuXHRcdFx0XHRsZXQgY29sb3IgPSBnZXRWYWx1ZShib25lTWFwLCBcImNvbG9yXCIsIG51bGwpO1xuXHRcdFx0XHRpZiAoY29sb3IpIGRhdGEuY29sb3Iuc2V0RnJvbVN0cmluZyhjb2xvcik7XG5cblx0XHRcdFx0c2tlbGV0b25EYXRhLmJvbmVzLnB1c2goZGF0YSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gU2xvdHMuXG5cdFx0aWYgKHJvb3Quc2xvdHMpIHtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcm9vdC5zbG90cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRsZXQgc2xvdE1hcCA9IHJvb3Quc2xvdHNbaV07XG5cdFx0XHRcdGxldCBzbG90TmFtZSA9IHNsb3RNYXAubmFtZTtcblxuXHRcdFx0XHRsZXQgYm9uZURhdGEgPSBza2VsZXRvbkRhdGEuZmluZEJvbmUoc2xvdE1hcC5ib25lKTtcblx0XHRcdFx0aWYgKCFib25lRGF0YSkgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIGJvbmUgJHtzbG90TWFwLmJvbmV9IGZvciBzbG90ICR7c2xvdE5hbWV9YCk7XG5cdFx0XHRcdGxldCBkYXRhID0gbmV3IFNsb3REYXRhKHNrZWxldG9uRGF0YS5zbG90cy5sZW5ndGgsIHNsb3ROYW1lLCBib25lRGF0YSk7XG5cblx0XHRcdFx0bGV0IGNvbG9yOiBzdHJpbmcgPSBnZXRWYWx1ZShzbG90TWFwLCBcImNvbG9yXCIsIG51bGwpO1xuXHRcdFx0XHRpZiAoY29sb3IpIGRhdGEuY29sb3Iuc2V0RnJvbVN0cmluZyhjb2xvcik7XG5cblx0XHRcdFx0bGV0IGRhcms6IHN0cmluZyA9IGdldFZhbHVlKHNsb3RNYXAsIFwiZGFya1wiLCBudWxsKTtcblx0XHRcdFx0aWYgKGRhcmspIGRhdGEuZGFya0NvbG9yID0gQ29sb3IuZnJvbVN0cmluZyhkYXJrKTtcblxuXHRcdFx0XHRkYXRhLmF0dGFjaG1lbnROYW1lID0gZ2V0VmFsdWUoc2xvdE1hcCwgXCJhdHRhY2htZW50XCIsIG51bGwpO1xuXHRcdFx0XHRkYXRhLmJsZW5kTW9kZSA9IFV0aWxzLmVudW1WYWx1ZShCbGVuZE1vZGUsIGdldFZhbHVlKHNsb3RNYXAsIFwiYmxlbmRcIiwgXCJub3JtYWxcIikpO1xuXHRcdFx0XHRkYXRhLnZpc2libGUgPSBnZXRWYWx1ZShzbG90TWFwLCBcInZpc2libGVcIiwgdHJ1ZSk7XG5cdFx0XHRcdHNrZWxldG9uRGF0YS5zbG90cy5wdXNoKGRhdGEpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIElLIGNvbnN0cmFpbnRzXG5cdFx0aWYgKHJvb3QuaWspIHtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcm9vdC5pay5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRsZXQgY29uc3RyYWludE1hcCA9IHJvb3QuaWtbaV07XG5cdFx0XHRcdGxldCBkYXRhID0gbmV3IElrQ29uc3RyYWludERhdGEoY29uc3RyYWludE1hcC5uYW1lKTtcblx0XHRcdFx0ZGF0YS5vcmRlciA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwib3JkZXJcIiwgMCk7XG5cdFx0XHRcdGRhdGEuc2tpblJlcXVpcmVkID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJza2luXCIsIGZhbHNlKTtcblxuXHRcdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgY29uc3RyYWludE1hcC5ib25lcy5sZW5ndGg7IGlpKyspIHtcblx0XHRcdFx0XHRsZXQgYm9uZSA9IHNrZWxldG9uRGF0YS5maW5kQm9uZShjb25zdHJhaW50TWFwLmJvbmVzW2lpXSk7XG5cdFx0XHRcdFx0aWYgKCFib25lKSB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IGZpbmQgYm9uZSAke2NvbnN0cmFpbnRNYXAuYm9uZXNbaWldfSBmb3IgSUsgY29uc3RyYWludCAke2NvbnN0cmFpbnRNYXAubmFtZX0uYCk7XG5cdFx0XHRcdFx0ZGF0YS5ib25lcy5wdXNoKGJvbmUpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0bGV0IHRhcmdldCA9IHNrZWxldG9uRGF0YS5maW5kQm9uZShjb25zdHJhaW50TWFwLnRhcmdldCk7O1xuXHRcdFx0XHRpZiAoIXRhcmdldCkgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIHRhcmdldCBib25lICR7Y29uc3RyYWludE1hcC50YXJnZXR9IGZvciBJSyBjb25zdHJhaW50ICR7Y29uc3RyYWludE1hcC5uYW1lfS5gKTtcblx0XHRcdFx0ZGF0YS50YXJnZXQgPSB0YXJnZXQ7XG5cblx0XHRcdFx0ZGF0YS5taXggPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcIm1peFwiLCAxKTtcblx0XHRcdFx0ZGF0YS5zb2Z0bmVzcyA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwic29mdG5lc3NcIiwgMCkgKiBzY2FsZTtcblx0XHRcdFx0ZGF0YS5iZW5kRGlyZWN0aW9uID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJiZW5kUG9zaXRpdmVcIiwgdHJ1ZSkgPyAxIDogLTE7XG5cdFx0XHRcdGRhdGEuY29tcHJlc3MgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcImNvbXByZXNzXCIsIGZhbHNlKTtcblx0XHRcdFx0ZGF0YS5zdHJldGNoID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJzdHJldGNoXCIsIGZhbHNlKTtcblx0XHRcdFx0ZGF0YS51bmlmb3JtID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJ1bmlmb3JtXCIsIGZhbHNlKTtcblxuXHRcdFx0XHRza2VsZXRvbkRhdGEuaWtDb25zdHJhaW50cy5wdXNoKGRhdGEpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFRyYW5zZm9ybSBjb25zdHJhaW50cy5cblx0XHRpZiAocm9vdC50cmFuc2Zvcm0pIHtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcm9vdC50cmFuc2Zvcm0ubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0bGV0IGNvbnN0cmFpbnRNYXAgPSByb290LnRyYW5zZm9ybVtpXTtcblx0XHRcdFx0bGV0IGRhdGEgPSBuZXcgVHJhbnNmb3JtQ29uc3RyYWludERhdGEoY29uc3RyYWludE1hcC5uYW1lKTtcblx0XHRcdFx0ZGF0YS5vcmRlciA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwib3JkZXJcIiwgMCk7XG5cdFx0XHRcdGRhdGEuc2tpblJlcXVpcmVkID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJza2luXCIsIGZhbHNlKTtcblxuXHRcdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgY29uc3RyYWludE1hcC5ib25lcy5sZW5ndGg7IGlpKyspIHtcblx0XHRcdFx0XHRsZXQgYm9uZU5hbWUgPSBjb25zdHJhaW50TWFwLmJvbmVzW2lpXTtcblx0XHRcdFx0XHRsZXQgYm9uZSA9IHNrZWxldG9uRGF0YS5maW5kQm9uZShib25lTmFtZSk7XG5cdFx0XHRcdFx0aWYgKCFib25lKSB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IGZpbmQgYm9uZSAke2JvbmVOYW1lfSBmb3IgdHJhbnNmb3JtIGNvbnN0cmFpbnQgJHtjb25zdHJhaW50TWFwLm5hbWV9LmApO1xuXHRcdFx0XHRcdGRhdGEuYm9uZXMucHVzaChib25lKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGxldCB0YXJnZXROYW1lOiBzdHJpbmcgPSBjb25zdHJhaW50TWFwLnRhcmdldDtcblx0XHRcdFx0bGV0IHRhcmdldCA9IHNrZWxldG9uRGF0YS5maW5kQm9uZSh0YXJnZXROYW1lKTtcblx0XHRcdFx0aWYgKCF0YXJnZXQpIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCB0YXJnZXQgYm9uZSAke3RhcmdldE5hbWV9IGZvciB0cmFuc2Zvcm0gY29uc3RyYWludCAke2NvbnN0cmFpbnRNYXAubmFtZX0uYCk7XG5cdFx0XHRcdGRhdGEudGFyZ2V0ID0gdGFyZ2V0O1xuXG5cdFx0XHRcdGRhdGEubG9jYWwgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcImxvY2FsXCIsIGZhbHNlKTtcblx0XHRcdFx0ZGF0YS5yZWxhdGl2ZSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwicmVsYXRpdmVcIiwgZmFsc2UpO1xuXHRcdFx0XHRkYXRhLm9mZnNldFJvdGF0aW9uID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJyb3RhdGlvblwiLCAwKTtcblx0XHRcdFx0ZGF0YS5vZmZzZXRYID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJ4XCIsIDApICogc2NhbGU7XG5cdFx0XHRcdGRhdGEub2Zmc2V0WSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwieVwiLCAwKSAqIHNjYWxlO1xuXHRcdFx0XHRkYXRhLm9mZnNldFNjYWxlWCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwic2NhbGVYXCIsIDApO1xuXHRcdFx0XHRkYXRhLm9mZnNldFNjYWxlWSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwic2NhbGVZXCIsIDApO1xuXHRcdFx0XHRkYXRhLm9mZnNldFNoZWFyWSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwic2hlYXJZXCIsIDApO1xuXG5cdFx0XHRcdGRhdGEubWl4Um90YXRlID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJtaXhSb3RhdGVcIiwgMSk7XG5cdFx0XHRcdGRhdGEubWl4WCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwibWl4WFwiLCAxKTtcblx0XHRcdFx0ZGF0YS5taXhZID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJtaXhZXCIsIGRhdGEubWl4WCk7XG5cdFx0XHRcdGRhdGEubWl4U2NhbGVYID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJtaXhTY2FsZVhcIiwgMSk7XG5cdFx0XHRcdGRhdGEubWl4U2NhbGVZID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJtaXhTY2FsZVlcIiwgZGF0YS5taXhTY2FsZVgpO1xuXHRcdFx0XHRkYXRhLm1peFNoZWFyWSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwibWl4U2hlYXJZXCIsIDEpO1xuXG5cdFx0XHRcdHNrZWxldG9uRGF0YS50cmFuc2Zvcm1Db25zdHJhaW50cy5wdXNoKGRhdGEpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFBhdGggY29uc3RyYWludHMuXG5cdFx0aWYgKHJvb3QucGF0aCkge1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCByb290LnBhdGgubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0bGV0IGNvbnN0cmFpbnRNYXAgPSByb290LnBhdGhbaV07XG5cdFx0XHRcdGxldCBkYXRhID0gbmV3IFBhdGhDb25zdHJhaW50RGF0YShjb25zdHJhaW50TWFwLm5hbWUpO1xuXHRcdFx0XHRkYXRhLm9yZGVyID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJvcmRlclwiLCAwKTtcblx0XHRcdFx0ZGF0YS5za2luUmVxdWlyZWQgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInNraW5cIiwgZmFsc2UpO1xuXG5cdFx0XHRcdGZvciAobGV0IGlpID0gMDsgaWkgPCBjb25zdHJhaW50TWFwLmJvbmVzLmxlbmd0aDsgaWkrKykge1xuXHRcdFx0XHRcdGxldCBib25lTmFtZSA9IGNvbnN0cmFpbnRNYXAuYm9uZXNbaWldO1xuXHRcdFx0XHRcdGxldCBib25lID0gc2tlbGV0b25EYXRhLmZpbmRCb25lKGJvbmVOYW1lKTtcblx0XHRcdFx0XHRpZiAoIWJvbmUpIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBib25lICR7Ym9uZU5hbWV9IGZvciBwYXRoIGNvbnN0cmFpbnQgJHtjb25zdHJhaW50TWFwLm5hbWV9LmApO1xuXHRcdFx0XHRcdGRhdGEuYm9uZXMucHVzaChib25lKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGxldCB0YXJnZXROYW1lOiBzdHJpbmcgPSBjb25zdHJhaW50TWFwLnRhcmdldDtcblx0XHRcdFx0bGV0IHRhcmdldCA9IHNrZWxldG9uRGF0YS5maW5kU2xvdCh0YXJnZXROYW1lKTtcblx0XHRcdFx0aWYgKCF0YXJnZXQpIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCB0YXJnZXQgc2xvdCAke3RhcmdldE5hbWV9IGZvciBwYXRoIGNvbnN0cmFpbnQgJHtjb25zdHJhaW50TWFwLm5hbWV9LmApO1xuXHRcdFx0XHRkYXRhLnRhcmdldCA9IHRhcmdldDtcblxuXHRcdFx0XHRkYXRhLnBvc2l0aW9uTW9kZSA9IFV0aWxzLmVudW1WYWx1ZShQb3NpdGlvbk1vZGUsIGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwicG9zaXRpb25Nb2RlXCIsIFwiUGVyY2VudFwiKSk7XG5cdFx0XHRcdGRhdGEuc3BhY2luZ01vZGUgPSBVdGlscy5lbnVtVmFsdWUoU3BhY2luZ01vZGUsIGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwic3BhY2luZ01vZGVcIiwgXCJMZW5ndGhcIikpO1xuXHRcdFx0XHRkYXRhLnJvdGF0ZU1vZGUgPSBVdGlscy5lbnVtVmFsdWUoUm90YXRlTW9kZSwgZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJyb3RhdGVNb2RlXCIsIFwiVGFuZ2VudFwiKSk7XG5cdFx0XHRcdGRhdGEub2Zmc2V0Um90YXRpb24gPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInJvdGF0aW9uXCIsIDApO1xuXHRcdFx0XHRkYXRhLnBvc2l0aW9uID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJwb3NpdGlvblwiLCAwKTtcblx0XHRcdFx0aWYgKGRhdGEucG9zaXRpb25Nb2RlID09IFBvc2l0aW9uTW9kZS5GaXhlZCkgZGF0YS5wb3NpdGlvbiAqPSBzY2FsZTtcblx0XHRcdFx0ZGF0YS5zcGFjaW5nID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJzcGFjaW5nXCIsIDApO1xuXHRcdFx0XHRpZiAoZGF0YS5zcGFjaW5nTW9kZSA9PSBTcGFjaW5nTW9kZS5MZW5ndGggfHwgZGF0YS5zcGFjaW5nTW9kZSA9PSBTcGFjaW5nTW9kZS5GaXhlZCkgZGF0YS5zcGFjaW5nICo9IHNjYWxlO1xuXHRcdFx0XHRkYXRhLm1peFJvdGF0ZSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwibWl4Um90YXRlXCIsIDEpO1xuXHRcdFx0XHRkYXRhLm1peFggPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcIm1peFhcIiwgMSk7XG5cdFx0XHRcdGRhdGEubWl4WSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwibWl4WVwiLCBkYXRhLm1peFgpO1xuXG5cdFx0XHRcdHNrZWxldG9uRGF0YS5wYXRoQ29uc3RyYWludHMucHVzaChkYXRhKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBQaHlzaWNzIGNvbnN0cmFpbnRzLlxuXHRcdGlmIChyb290LnBoeXNpY3MpIHtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcm9vdC5waHlzaWNzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IGNvbnN0cmFpbnRNYXAgPSByb290LnBoeXNpY3NbaV07XG5cdFx0XHRcdGNvbnN0IGRhdGEgPSBuZXcgUGh5c2ljc0NvbnN0cmFpbnREYXRhKGNvbnN0cmFpbnRNYXAubmFtZSk7XG5cdFx0XHRcdGRhdGEub3JkZXIgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcIm9yZGVyXCIsIDApO1xuXHRcdFx0XHRkYXRhLnNraW5SZXF1aXJlZCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwic2tpblwiLCBmYWxzZSk7XG5cblx0XHRcdFx0Y29uc3QgYm9uZU5hbWUgPSBjb25zdHJhaW50TWFwLmJvbmU7XG5cdFx0XHRcdGNvbnN0IGJvbmUgPSBza2VsZXRvbkRhdGEuZmluZEJvbmUoYm9uZU5hbWUpO1xuXHRcdFx0XHRpZiAoYm9uZSA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJQaHlzaWNzIGJvbmUgbm90IGZvdW5kOiBcIiArIGJvbmVOYW1lKTtcblx0XHRcdFx0ZGF0YS5ib25lID0gYm9uZTtcblxuXHRcdFx0XHRkYXRhLnggPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInhcIiwgMCk7XG5cdFx0XHRcdGRhdGEueSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwieVwiLCAwKTtcblx0XHRcdFx0ZGF0YS5yb3RhdGUgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInJvdGF0ZVwiLCAwKTtcblx0XHRcdFx0ZGF0YS5zY2FsZVggPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInNjYWxlWFwiLCAwKTtcblx0XHRcdFx0ZGF0YS5zaGVhclggPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInNoZWFyWFwiLCAwKTtcblx0XHRcdFx0ZGF0YS5saW1pdCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwibGltaXRcIiwgNTAwMCkgKiBzY2FsZTtcblx0XHRcdFx0ZGF0YS5zdGVwID0gMSAvIGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwiZnBzXCIsIDYwKTtcblx0XHRcdFx0ZGF0YS5pbmVydGlhID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJpbmVydGlhXCIsIDEpO1xuXHRcdFx0XHRkYXRhLnN0cmVuZ3RoID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJzdHJlbmd0aFwiLCAxMDApO1xuXHRcdFx0XHRkYXRhLmRhbXBpbmcgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcImRhbXBpbmdcIiwgMSk7XG5cdFx0XHRcdGRhdGEubWFzc0ludmVyc2UgPSAxIC8gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJtYXNzXCIsIDEpO1xuXHRcdFx0XHRkYXRhLndpbmQgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcIndpbmRcIiwgMCk7XG5cdFx0XHRcdGRhdGEuZ3Jhdml0eSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwiZ3Jhdml0eVwiLCAwKTtcblx0XHRcdFx0ZGF0YS5taXggPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcIm1peFwiLCAxKTtcblx0XHRcdFx0ZGF0YS5pbmVydGlhR2xvYmFsID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJpbmVydGlhR2xvYmFsXCIsIGZhbHNlKTtcblx0XHRcdFx0ZGF0YS5zdHJlbmd0aEdsb2JhbCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwic3RyZW5ndGhHbG9iYWxcIiwgZmFsc2UpO1xuXHRcdFx0XHRkYXRhLmRhbXBpbmdHbG9iYWwgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcImRhbXBpbmdHbG9iYWxcIiwgZmFsc2UpO1xuXHRcdFx0XHRkYXRhLm1hc3NHbG9iYWwgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcIm1hc3NHbG9iYWxcIiwgZmFsc2UpO1xuXHRcdFx0XHRkYXRhLndpbmRHbG9iYWwgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcIndpbmRHbG9iYWxcIiwgZmFsc2UpO1xuXHRcdFx0XHRkYXRhLmdyYXZpdHlHbG9iYWwgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcImdyYXZpdHlHbG9iYWxcIiwgZmFsc2UpO1xuXHRcdFx0XHRkYXRhLm1peEdsb2JhbCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwibWl4R2xvYmFsXCIsIGZhbHNlKTtcblxuXHRcdFx0XHRza2VsZXRvbkRhdGEucGh5c2ljc0NvbnN0cmFpbnRzLnB1c2goZGF0YSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gU2tpbnMuXG5cdFx0aWYgKHJvb3Quc2tpbnMpIHtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcm9vdC5za2lucy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRsZXQgc2tpbk1hcCA9IHJvb3Quc2tpbnNbaV1cblx0XHRcdFx0bGV0IHNraW4gPSBuZXcgU2tpbihza2luTWFwLm5hbWUpO1xuXG5cdFx0XHRcdGlmIChza2luTWFwLmJvbmVzKSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IHNraW5NYXAuYm9uZXMubGVuZ3RoOyBpaSsrKSB7XG5cdFx0XHRcdFx0XHRsZXQgYm9uZU5hbWUgPSBza2luTWFwLmJvbmVzW2lpXTtcblx0XHRcdFx0XHRcdGxldCBib25lID0gc2tlbGV0b25EYXRhLmZpbmRCb25lKGJvbmVOYW1lKTtcblx0XHRcdFx0XHRcdGlmICghYm9uZSkgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIGJvbmUgJHtib25lTmFtZX0gZm9yIHNraW4gJHtza2luTWFwLm5hbWV9LmApO1xuXHRcdFx0XHRcdFx0c2tpbi5ib25lcy5wdXNoKGJvbmUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChza2luTWFwLmlrKSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IHNraW5NYXAuaWsubGVuZ3RoOyBpaSsrKSB7XG5cdFx0XHRcdFx0XHRsZXQgY29uc3RyYWludE5hbWUgPSBza2luTWFwLmlrW2lpXTtcblx0XHRcdFx0XHRcdGxldCBjb25zdHJhaW50ID0gc2tlbGV0b25EYXRhLmZpbmRJa0NvbnN0cmFpbnQoY29uc3RyYWludE5hbWUpO1xuXHRcdFx0XHRcdFx0aWYgKCFjb25zdHJhaW50KSB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IGZpbmQgSUsgY29uc3RyYWludCAke2NvbnN0cmFpbnROYW1lfSBmb3Igc2tpbiAke3NraW5NYXAubmFtZX0uYCk7XG5cdFx0XHRcdFx0XHRza2luLmNvbnN0cmFpbnRzLnB1c2goY29uc3RyYWludCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHNraW5NYXAudHJhbnNmb3JtKSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IHNraW5NYXAudHJhbnNmb3JtLmxlbmd0aDsgaWkrKykge1xuXHRcdFx0XHRcdFx0bGV0IGNvbnN0cmFpbnROYW1lID0gc2tpbk1hcC50cmFuc2Zvcm1baWldO1xuXHRcdFx0XHRcdFx0bGV0IGNvbnN0cmFpbnQgPSBza2VsZXRvbkRhdGEuZmluZFRyYW5zZm9ybUNvbnN0cmFpbnQoY29uc3RyYWludE5hbWUpO1xuXHRcdFx0XHRcdFx0aWYgKCFjb25zdHJhaW50KSB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IGZpbmQgdHJhbnNmb3JtIGNvbnN0cmFpbnQgJHtjb25zdHJhaW50TmFtZX0gZm9yIHNraW4gJHtza2luTWFwLm5hbWV9LmApO1xuXHRcdFx0XHRcdFx0c2tpbi5jb25zdHJhaW50cy5wdXNoKGNvbnN0cmFpbnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChza2luTWFwLnBhdGgpIHtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgc2tpbk1hcC5wYXRoLmxlbmd0aDsgaWkrKykge1xuXHRcdFx0XHRcdFx0bGV0IGNvbnN0cmFpbnROYW1lID0gc2tpbk1hcC5wYXRoW2lpXTtcblx0XHRcdFx0XHRcdGxldCBjb25zdHJhaW50ID0gc2tlbGV0b25EYXRhLmZpbmRQYXRoQ29uc3RyYWludChjb25zdHJhaW50TmFtZSk7XG5cdFx0XHRcdFx0XHRpZiAoIWNvbnN0cmFpbnQpIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBwYXRoIGNvbnN0cmFpbnQgJHtjb25zdHJhaW50TmFtZX0gZm9yIHNraW4gJHtza2luTWFwLm5hbWV9LmApO1xuXHRcdFx0XHRcdFx0c2tpbi5jb25zdHJhaW50cy5wdXNoKGNvbnN0cmFpbnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChza2luTWFwLnBoeXNpY3MpIHtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgc2tpbk1hcC5waHlzaWNzLmxlbmd0aDsgaWkrKykge1xuXHRcdFx0XHRcdFx0bGV0IGNvbnN0cmFpbnROYW1lID0gc2tpbk1hcC5waHlzaWNzW2lpXTtcblx0XHRcdFx0XHRcdGxldCBjb25zdHJhaW50ID0gc2tlbGV0b25EYXRhLmZpbmRQaHlzaWNzQ29uc3RyYWludChjb25zdHJhaW50TmFtZSk7XG5cdFx0XHRcdFx0XHRpZiAoIWNvbnN0cmFpbnQpIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBwaHlzaWNzIGNvbnN0cmFpbnQgJHtjb25zdHJhaW50TmFtZX0gZm9yIHNraW4gJHtza2luTWFwLm5hbWV9LmApO1xuXHRcdFx0XHRcdFx0c2tpbi5jb25zdHJhaW50cy5wdXNoKGNvbnN0cmFpbnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGZvciAobGV0IHNsb3ROYW1lIGluIHNraW5NYXAuYXR0YWNobWVudHMpIHtcblx0XHRcdFx0XHRsZXQgc2xvdCA9IHNrZWxldG9uRGF0YS5maW5kU2xvdChzbG90TmFtZSk7XG5cdFx0XHRcdFx0aWYgKCFzbG90KSB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IGZpbmQgc2xvdCAke3Nsb3ROYW1lfSBmb3Igc2tpbiAke3NraW5NYXAubmFtZX0uYCk7XG5cdFx0XHRcdFx0bGV0IHNsb3RNYXAgPSBza2luTWFwLmF0dGFjaG1lbnRzW3Nsb3ROYW1lXTtcblx0XHRcdFx0XHRmb3IgKGxldCBlbnRyeU5hbWUgaW4gc2xvdE1hcCkge1xuXHRcdFx0XHRcdFx0bGV0IGF0dGFjaG1lbnQgPSB0aGlzLnJlYWRBdHRhY2htZW50KHNsb3RNYXBbZW50cnlOYW1lXSwgc2tpbiwgc2xvdC5pbmRleCwgZW50cnlOYW1lLCBza2VsZXRvbkRhdGEpO1xuXHRcdFx0XHRcdFx0aWYgKGF0dGFjaG1lbnQpIHNraW4uc2V0QXR0YWNobWVudChzbG90LmluZGV4LCBlbnRyeU5hbWUsIGF0dGFjaG1lbnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRza2VsZXRvbkRhdGEuc2tpbnMucHVzaChza2luKTtcblx0XHRcdFx0aWYgKHNraW4ubmFtZSA9PSBcImRlZmF1bHRcIikgc2tlbGV0b25EYXRhLmRlZmF1bHRTa2luID0gc2tpbjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBMaW5rZWQgbWVzaGVzLlxuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gdGhpcy5saW5rZWRNZXNoZXMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRsZXQgbGlua2VkTWVzaCA9IHRoaXMubGlua2VkTWVzaGVzW2ldO1xuXHRcdFx0bGV0IHNraW4gPSAhbGlua2VkTWVzaC5za2luID8gc2tlbGV0b25EYXRhLmRlZmF1bHRTa2luIDogc2tlbGV0b25EYXRhLmZpbmRTa2luKGxpbmtlZE1lc2guc2tpbik7XG5cdFx0XHRpZiAoIXNraW4pIHRocm93IG5ldyBFcnJvcihgU2tpbiBub3QgZm91bmQ6ICR7bGlua2VkTWVzaC5za2lufWApO1xuXHRcdFx0bGV0IHBhcmVudCA9IHNraW4uZ2V0QXR0YWNobWVudChsaW5rZWRNZXNoLnNsb3RJbmRleCwgbGlua2VkTWVzaC5wYXJlbnQpO1xuXHRcdFx0aWYgKCFwYXJlbnQpIHRocm93IG5ldyBFcnJvcihgUGFyZW50IG1lc2ggbm90IGZvdW5kOiAke2xpbmtlZE1lc2gucGFyZW50fWApO1xuXHRcdFx0bGlua2VkTWVzaC5tZXNoLnRpbWVsaW5lQXR0YWNobWVudCA9IGxpbmtlZE1lc2guaW5oZXJpdFRpbWVsaW5lID8gPFZlcnRleEF0dGFjaG1lbnQ+cGFyZW50IDogPFZlcnRleEF0dGFjaG1lbnQ+bGlua2VkTWVzaC5tZXNoO1xuXHRcdFx0bGlua2VkTWVzaC5tZXNoLnNldFBhcmVudE1lc2goPE1lc2hBdHRhY2htZW50PnBhcmVudCk7XG5cdFx0XHRpZiAobGlua2VkTWVzaC5tZXNoLnJlZ2lvbiAhPSBudWxsKSBsaW5rZWRNZXNoLm1lc2gudXBkYXRlUmVnaW9uKCk7XG5cdFx0fVxuXHRcdHRoaXMubGlua2VkTWVzaGVzLmxlbmd0aCA9IDA7XG5cblx0XHQvLyBFdmVudHMuXG5cdFx0aWYgKHJvb3QuZXZlbnRzKSB7XG5cdFx0XHRmb3IgKGxldCBldmVudE5hbWUgaW4gcm9vdC5ldmVudHMpIHtcblx0XHRcdFx0bGV0IGV2ZW50TWFwID0gcm9vdC5ldmVudHNbZXZlbnROYW1lXTtcblx0XHRcdFx0bGV0IGRhdGEgPSBuZXcgRXZlbnREYXRhKGV2ZW50TmFtZSk7XG5cdFx0XHRcdGRhdGEuaW50VmFsdWUgPSBnZXRWYWx1ZShldmVudE1hcCwgXCJpbnRcIiwgMCk7XG5cdFx0XHRcdGRhdGEuZmxvYXRWYWx1ZSA9IGdldFZhbHVlKGV2ZW50TWFwLCBcImZsb2F0XCIsIDApO1xuXHRcdFx0XHRkYXRhLnN0cmluZ1ZhbHVlID0gZ2V0VmFsdWUoZXZlbnRNYXAsIFwic3RyaW5nXCIsIFwiXCIpO1xuXHRcdFx0XHRkYXRhLmF1ZGlvUGF0aCA9IGdldFZhbHVlKGV2ZW50TWFwLCBcImF1ZGlvXCIsIG51bGwpO1xuXHRcdFx0XHRpZiAoZGF0YS5hdWRpb1BhdGgpIHtcblx0XHRcdFx0XHRkYXRhLnZvbHVtZSA9IGdldFZhbHVlKGV2ZW50TWFwLCBcInZvbHVtZVwiLCAxKTtcblx0XHRcdFx0XHRkYXRhLmJhbGFuY2UgPSBnZXRWYWx1ZShldmVudE1hcCwgXCJiYWxhbmNlXCIsIDApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHNrZWxldG9uRGF0YS5ldmVudHMucHVzaChkYXRhKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBBbmltYXRpb25zLlxuXHRcdGlmIChyb290LmFuaW1hdGlvbnMpIHtcblx0XHRcdGZvciAobGV0IGFuaW1hdGlvbk5hbWUgaW4gcm9vdC5hbmltYXRpb25zKSB7XG5cdFx0XHRcdGxldCBhbmltYXRpb25NYXAgPSByb290LmFuaW1hdGlvbnNbYW5pbWF0aW9uTmFtZV07XG5cdFx0XHRcdHRoaXMucmVhZEFuaW1hdGlvbihhbmltYXRpb25NYXAsIGFuaW1hdGlvbk5hbWUsIHNrZWxldG9uRGF0YSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHNrZWxldG9uRGF0YTtcblx0fVxuXG5cdHJlYWRBdHRhY2htZW50IChtYXA6IGFueSwgc2tpbjogU2tpbiwgc2xvdEluZGV4OiBudW1iZXIsIG5hbWU6IHN0cmluZywgc2tlbGV0b25EYXRhOiBTa2VsZXRvbkRhdGEpOiBBdHRhY2htZW50IHwgbnVsbCB7XG5cdFx0bGV0IHNjYWxlID0gdGhpcy5zY2FsZTtcblx0XHRuYW1lID0gZ2V0VmFsdWUobWFwLCBcIm5hbWVcIiwgbmFtZSk7XG5cblx0XHRzd2l0Y2ggKGdldFZhbHVlKG1hcCwgXCJ0eXBlXCIsIFwicmVnaW9uXCIpKSB7XG5cdFx0XHRjYXNlIFwicmVnaW9uXCI6IHtcblx0XHRcdFx0bGV0IHBhdGggPSBnZXRWYWx1ZShtYXAsIFwicGF0aFwiLCBuYW1lKTtcblx0XHRcdFx0bGV0IHNlcXVlbmNlID0gdGhpcy5yZWFkU2VxdWVuY2UoZ2V0VmFsdWUobWFwLCBcInNlcXVlbmNlXCIsIG51bGwpKTtcblx0XHRcdFx0bGV0IHJlZ2lvbiA9IHRoaXMuYXR0YWNobWVudExvYWRlci5uZXdSZWdpb25BdHRhY2htZW50KHNraW4sIG5hbWUsIHBhdGgsIHNlcXVlbmNlKTtcblx0XHRcdFx0aWYgKCFyZWdpb24pIHJldHVybiBudWxsO1xuXHRcdFx0XHRyZWdpb24ucGF0aCA9IHBhdGg7XG5cdFx0XHRcdHJlZ2lvbi54ID0gZ2V0VmFsdWUobWFwLCBcInhcIiwgMCkgKiBzY2FsZTtcblx0XHRcdFx0cmVnaW9uLnkgPSBnZXRWYWx1ZShtYXAsIFwieVwiLCAwKSAqIHNjYWxlO1xuXHRcdFx0XHRyZWdpb24uc2NhbGVYID0gZ2V0VmFsdWUobWFwLCBcInNjYWxlWFwiLCAxKTtcblx0XHRcdFx0cmVnaW9uLnNjYWxlWSA9IGdldFZhbHVlKG1hcCwgXCJzY2FsZVlcIiwgMSk7XG5cdFx0XHRcdHJlZ2lvbi5yb3RhdGlvbiA9IGdldFZhbHVlKG1hcCwgXCJyb3RhdGlvblwiLCAwKTtcblx0XHRcdFx0cmVnaW9uLndpZHRoID0gbWFwLndpZHRoICogc2NhbGU7XG5cdFx0XHRcdHJlZ2lvbi5oZWlnaHQgPSBtYXAuaGVpZ2h0ICogc2NhbGU7XG5cdFx0XHRcdHJlZ2lvbi5zZXF1ZW5jZSA9IHNlcXVlbmNlO1xuXG5cdFx0XHRcdGxldCBjb2xvcjogc3RyaW5nID0gZ2V0VmFsdWUobWFwLCBcImNvbG9yXCIsIG51bGwpO1xuXHRcdFx0XHRpZiAoY29sb3IpIHJlZ2lvbi5jb2xvci5zZXRGcm9tU3RyaW5nKGNvbG9yKTtcblxuXHRcdFx0XHRpZiAocmVnaW9uLnJlZ2lvbiAhPSBudWxsKSByZWdpb24udXBkYXRlUmVnaW9uKCk7XG5cdFx0XHRcdHJldHVybiByZWdpb247XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwiYm91bmRpbmdib3hcIjoge1xuXHRcdFx0XHRsZXQgYm94ID0gdGhpcy5hdHRhY2htZW50TG9hZGVyLm5ld0JvdW5kaW5nQm94QXR0YWNobWVudChza2luLCBuYW1lKTtcblx0XHRcdFx0aWYgKCFib3gpIHJldHVybiBudWxsO1xuXHRcdFx0XHR0aGlzLnJlYWRWZXJ0aWNlcyhtYXAsIGJveCwgbWFwLnZlcnRleENvdW50IDw8IDEpO1xuXHRcdFx0XHRsZXQgY29sb3I6IHN0cmluZyA9IGdldFZhbHVlKG1hcCwgXCJjb2xvclwiLCBudWxsKTtcblx0XHRcdFx0aWYgKGNvbG9yKSBib3guY29sb3Iuc2V0RnJvbVN0cmluZyhjb2xvcik7XG5cdFx0XHRcdHJldHVybiBib3g7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwibWVzaFwiOlxuXHRcdFx0Y2FzZSBcImxpbmtlZG1lc2hcIjoge1xuXHRcdFx0XHRsZXQgcGF0aCA9IGdldFZhbHVlKG1hcCwgXCJwYXRoXCIsIG5hbWUpO1xuXHRcdFx0XHRsZXQgc2VxdWVuY2UgPSB0aGlzLnJlYWRTZXF1ZW5jZShnZXRWYWx1ZShtYXAsIFwic2VxdWVuY2VcIiwgbnVsbCkpO1xuXHRcdFx0XHRsZXQgbWVzaCA9IHRoaXMuYXR0YWNobWVudExvYWRlci5uZXdNZXNoQXR0YWNobWVudChza2luLCBuYW1lLCBwYXRoLCBzZXF1ZW5jZSk7XG5cdFx0XHRcdGlmICghbWVzaCkgcmV0dXJuIG51bGw7XG5cdFx0XHRcdG1lc2gucGF0aCA9IHBhdGg7XG5cblx0XHRcdFx0bGV0IGNvbG9yID0gZ2V0VmFsdWUobWFwLCBcImNvbG9yXCIsIG51bGwpO1xuXHRcdFx0XHRpZiAoY29sb3IpIG1lc2guY29sb3Iuc2V0RnJvbVN0cmluZyhjb2xvcik7XG5cblx0XHRcdFx0bWVzaC53aWR0aCA9IGdldFZhbHVlKG1hcCwgXCJ3aWR0aFwiLCAwKSAqIHNjYWxlO1xuXHRcdFx0XHRtZXNoLmhlaWdodCA9IGdldFZhbHVlKG1hcCwgXCJoZWlnaHRcIiwgMCkgKiBzY2FsZTtcblx0XHRcdFx0bWVzaC5zZXF1ZW5jZSA9IHNlcXVlbmNlO1xuXG5cdFx0XHRcdGxldCBwYXJlbnQ6IHN0cmluZyA9IGdldFZhbHVlKG1hcCwgXCJwYXJlbnRcIiwgbnVsbCk7XG5cdFx0XHRcdGlmIChwYXJlbnQpIHtcblx0XHRcdFx0XHR0aGlzLmxpbmtlZE1lc2hlcy5wdXNoKG5ldyBMaW5rZWRNZXNoKG1lc2gsIDxzdHJpbmc+Z2V0VmFsdWUobWFwLCBcInNraW5cIiwgbnVsbCksIHNsb3RJbmRleCwgcGFyZW50LCBnZXRWYWx1ZShtYXAsIFwidGltZWxpbmVzXCIsIHRydWUpKSk7XG5cdFx0XHRcdFx0cmV0dXJuIG1lc2g7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRsZXQgdXZzOiBBcnJheTxudW1iZXI+ID0gbWFwLnV2cztcblx0XHRcdFx0dGhpcy5yZWFkVmVydGljZXMobWFwLCBtZXNoLCB1dnMubGVuZ3RoKTtcblx0XHRcdFx0bWVzaC50cmlhbmdsZXMgPSBtYXAudHJpYW5nbGVzO1xuXHRcdFx0XHRtZXNoLnJlZ2lvblVWcyA9IHV2cztcblx0XHRcdFx0aWYgKG1lc2gucmVnaW9uICE9IG51bGwpIG1lc2gudXBkYXRlUmVnaW9uKCk7XG5cblx0XHRcdFx0bWVzaC5lZGdlcyA9IGdldFZhbHVlKG1hcCwgXCJlZGdlc1wiLCBudWxsKTtcblx0XHRcdFx0bWVzaC5odWxsTGVuZ3RoID0gZ2V0VmFsdWUobWFwLCBcImh1bGxcIiwgMCkgKiAyO1xuXHRcdFx0XHRyZXR1cm4gbWVzaDtcblx0XHRcdH1cblx0XHRcdGNhc2UgXCJwYXRoXCI6IHtcblx0XHRcdFx0bGV0IHBhdGggPSB0aGlzLmF0dGFjaG1lbnRMb2FkZXIubmV3UGF0aEF0dGFjaG1lbnQoc2tpbiwgbmFtZSk7XG5cdFx0XHRcdGlmICghcGF0aCkgcmV0dXJuIG51bGw7XG5cdFx0XHRcdHBhdGguY2xvc2VkID0gZ2V0VmFsdWUobWFwLCBcImNsb3NlZFwiLCBmYWxzZSk7XG5cdFx0XHRcdHBhdGguY29uc3RhbnRTcGVlZCA9IGdldFZhbHVlKG1hcCwgXCJjb25zdGFudFNwZWVkXCIsIHRydWUpO1xuXG5cdFx0XHRcdGxldCB2ZXJ0ZXhDb3VudCA9IG1hcC52ZXJ0ZXhDb3VudDtcblx0XHRcdFx0dGhpcy5yZWFkVmVydGljZXMobWFwLCBwYXRoLCB2ZXJ0ZXhDb3VudCA8PCAxKTtcblxuXHRcdFx0XHRsZXQgbGVuZ3RoczogQXJyYXk8bnVtYmVyPiA9IFV0aWxzLm5ld0FycmF5KHZlcnRleENvdW50IC8gMywgMCk7XG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbWFwLmxlbmd0aHMubGVuZ3RoOyBpKyspXG5cdFx0XHRcdFx0bGVuZ3Roc1tpXSA9IG1hcC5sZW5ndGhzW2ldICogc2NhbGU7XG5cdFx0XHRcdHBhdGgubGVuZ3RocyA9IGxlbmd0aHM7XG5cblx0XHRcdFx0bGV0IGNvbG9yOiBzdHJpbmcgPSBnZXRWYWx1ZShtYXAsIFwiY29sb3JcIiwgbnVsbCk7XG5cdFx0XHRcdGlmIChjb2xvcikgcGF0aC5jb2xvci5zZXRGcm9tU3RyaW5nKGNvbG9yKTtcblx0XHRcdFx0cmV0dXJuIHBhdGg7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwicG9pbnRcIjoge1xuXHRcdFx0XHRsZXQgcG9pbnQgPSB0aGlzLmF0dGFjaG1lbnRMb2FkZXIubmV3UG9pbnRBdHRhY2htZW50KHNraW4sIG5hbWUpO1xuXHRcdFx0XHRpZiAoIXBvaW50KSByZXR1cm4gbnVsbDtcblx0XHRcdFx0cG9pbnQueCA9IGdldFZhbHVlKG1hcCwgXCJ4XCIsIDApICogc2NhbGU7XG5cdFx0XHRcdHBvaW50LnkgPSBnZXRWYWx1ZShtYXAsIFwieVwiLCAwKSAqIHNjYWxlO1xuXHRcdFx0XHRwb2ludC5yb3RhdGlvbiA9IGdldFZhbHVlKG1hcCwgXCJyb3RhdGlvblwiLCAwKTtcblxuXHRcdFx0XHRsZXQgY29sb3IgPSBnZXRWYWx1ZShtYXAsIFwiY29sb3JcIiwgbnVsbCk7XG5cdFx0XHRcdGlmIChjb2xvcikgcG9pbnQuY29sb3Iuc2V0RnJvbVN0cmluZyhjb2xvcik7XG5cdFx0XHRcdHJldHVybiBwb2ludDtcblx0XHRcdH1cblx0XHRcdGNhc2UgXCJjbGlwcGluZ1wiOiB7XG5cdFx0XHRcdGxldCBjbGlwID0gdGhpcy5hdHRhY2htZW50TG9hZGVyLm5ld0NsaXBwaW5nQXR0YWNobWVudChza2luLCBuYW1lKTtcblx0XHRcdFx0aWYgKCFjbGlwKSByZXR1cm4gbnVsbDtcblxuXHRcdFx0XHRsZXQgZW5kID0gZ2V0VmFsdWUobWFwLCBcImVuZFwiLCBudWxsKTtcblx0XHRcdFx0aWYgKGVuZCkgY2xpcC5lbmRTbG90ID0gc2tlbGV0b25EYXRhLmZpbmRTbG90KGVuZCk7XG5cblx0XHRcdFx0bGV0IHZlcnRleENvdW50ID0gbWFwLnZlcnRleENvdW50O1xuXHRcdFx0XHR0aGlzLnJlYWRWZXJ0aWNlcyhtYXAsIGNsaXAsIHZlcnRleENvdW50IDw8IDEpO1xuXG5cdFx0XHRcdGxldCBjb2xvcjogc3RyaW5nID0gZ2V0VmFsdWUobWFwLCBcImNvbG9yXCIsIG51bGwpO1xuXHRcdFx0XHRpZiAoY29sb3IpIGNsaXAuY29sb3Iuc2V0RnJvbVN0cmluZyhjb2xvcik7XG5cdFx0XHRcdHJldHVybiBjbGlwO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdHJlYWRTZXF1ZW5jZSAobWFwOiBhbnkpIHtcblx0XHRpZiAobWFwID09IG51bGwpIHJldHVybiBudWxsO1xuXHRcdGxldCBzZXF1ZW5jZSA9IG5ldyBTZXF1ZW5jZShnZXRWYWx1ZShtYXAsIFwiY291bnRcIiwgMCkpO1xuXHRcdHNlcXVlbmNlLnN0YXJ0ID0gZ2V0VmFsdWUobWFwLCBcInN0YXJ0XCIsIDEpO1xuXHRcdHNlcXVlbmNlLmRpZ2l0cyA9IGdldFZhbHVlKG1hcCwgXCJkaWdpdHNcIiwgMCk7XG5cdFx0c2VxdWVuY2Uuc2V0dXBJbmRleCA9IGdldFZhbHVlKG1hcCwgXCJzZXR1cFwiLCAwKTtcblx0XHRyZXR1cm4gc2VxdWVuY2U7XG5cdH1cblxuXHRyZWFkVmVydGljZXMgKG1hcDogYW55LCBhdHRhY2htZW50OiBWZXJ0ZXhBdHRhY2htZW50LCB2ZXJ0aWNlc0xlbmd0aDogbnVtYmVyKSB7XG5cdFx0bGV0IHNjYWxlID0gdGhpcy5zY2FsZTtcblx0XHRhdHRhY2htZW50LndvcmxkVmVydGljZXNMZW5ndGggPSB2ZXJ0aWNlc0xlbmd0aDtcblx0XHRsZXQgdmVydGljZXM6IEFycmF5PG51bWJlcj4gPSBtYXAudmVydGljZXM7XG5cdFx0aWYgKHZlcnRpY2VzTGVuZ3RoID09IHZlcnRpY2VzLmxlbmd0aCkge1xuXHRcdFx0bGV0IHNjYWxlZFZlcnRpY2VzID0gVXRpbHMudG9GbG9hdEFycmF5KHZlcnRpY2VzKTtcblx0XHRcdGlmIChzY2FsZSAhPSAxKSB7XG5cdFx0XHRcdGZvciAobGV0IGkgPSAwLCBuID0gdmVydGljZXMubGVuZ3RoOyBpIDwgbjsgaSsrKVxuXHRcdFx0XHRcdHNjYWxlZFZlcnRpY2VzW2ldICo9IHNjYWxlO1xuXHRcdFx0fVxuXHRcdFx0YXR0YWNobWVudC52ZXJ0aWNlcyA9IHNjYWxlZFZlcnRpY2VzO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRsZXQgd2VpZ2h0cyA9IG5ldyBBcnJheTxudW1iZXI+KCk7XG5cdFx0bGV0IGJvbmVzID0gbmV3IEFycmF5PG51bWJlcj4oKTtcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHZlcnRpY2VzLmxlbmd0aDsgaSA8IG47KSB7XG5cdFx0XHRsZXQgYm9uZUNvdW50ID0gdmVydGljZXNbaSsrXTtcblx0XHRcdGJvbmVzLnB1c2goYm9uZUNvdW50KTtcblx0XHRcdGZvciAobGV0IG5uID0gaSArIGJvbmVDb3VudCAqIDQ7IGkgPCBubjsgaSArPSA0KSB7XG5cdFx0XHRcdGJvbmVzLnB1c2godmVydGljZXNbaV0pO1xuXHRcdFx0XHR3ZWlnaHRzLnB1c2godmVydGljZXNbaSArIDFdICogc2NhbGUpO1xuXHRcdFx0XHR3ZWlnaHRzLnB1c2godmVydGljZXNbaSArIDJdICogc2NhbGUpO1xuXHRcdFx0XHR3ZWlnaHRzLnB1c2godmVydGljZXNbaSArIDNdKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0YXR0YWNobWVudC5ib25lcyA9IGJvbmVzO1xuXHRcdGF0dGFjaG1lbnQudmVydGljZXMgPSBVdGlscy50b0Zsb2F0QXJyYXkod2VpZ2h0cyk7XG5cdH1cblxuXHRyZWFkQW5pbWF0aW9uIChtYXA6IGFueSwgbmFtZTogc3RyaW5nLCBza2VsZXRvbkRhdGE6IFNrZWxldG9uRGF0YSkge1xuXHRcdGxldCBzY2FsZSA9IHRoaXMuc2NhbGU7XG5cdFx0bGV0IHRpbWVsaW5lcyA9IG5ldyBBcnJheTxUaW1lbGluZT4oKTtcblxuXHRcdC8vIFNsb3QgdGltZWxpbmVzLlxuXHRcdGlmIChtYXAuc2xvdHMpIHtcblx0XHRcdGZvciAobGV0IHNsb3ROYW1lIGluIG1hcC5zbG90cykge1xuXHRcdFx0XHRsZXQgc2xvdE1hcCA9IG1hcC5zbG90c1tzbG90TmFtZV07XG5cdFx0XHRcdGxldCBzbG90ID0gc2tlbGV0b25EYXRhLmZpbmRTbG90KHNsb3ROYW1lKTtcblx0XHRcdFx0aWYgKCFzbG90KSB0aHJvdyBuZXcgRXJyb3IoXCJTbG90IG5vdCBmb3VuZDogXCIgKyBzbG90TmFtZSk7XG5cdFx0XHRcdGxldCBzbG90SW5kZXggPSBzbG90LmluZGV4O1xuXHRcdFx0XHRmb3IgKGxldCB0aW1lbGluZU5hbWUgaW4gc2xvdE1hcCkge1xuXHRcdFx0XHRcdGxldCB0aW1lbGluZU1hcCA9IHNsb3RNYXBbdGltZWxpbmVOYW1lXTtcblx0XHRcdFx0XHRpZiAoIXRpbWVsaW5lTWFwKSBjb250aW51ZTtcblx0XHRcdFx0XHRsZXQgZnJhbWVzID0gdGltZWxpbmVNYXAubGVuZ3RoO1xuXHRcdFx0XHRcdGlmICh0aW1lbGluZU5hbWUgPT0gXCJhdHRhY2htZW50XCIpIHtcblx0XHRcdFx0XHRcdGxldCB0aW1lbGluZSA9IG5ldyBBdHRhY2htZW50VGltZWxpbmUoZnJhbWVzLCBzbG90SW5kZXgpO1xuXHRcdFx0XHRcdFx0Zm9yIChsZXQgZnJhbWUgPSAwOyBmcmFtZSA8IGZyYW1lczsgZnJhbWUrKykge1xuXHRcdFx0XHRcdFx0XHRsZXQga2V5TWFwID0gdGltZWxpbmVNYXBbZnJhbWVdO1xuXHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgZ2V0VmFsdWUoa2V5TWFwLCBcInRpbWVcIiwgMCksIGdldFZhbHVlKGtleU1hcCwgXCJuYW1lXCIsIG51bGwpKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblxuXHRcdFx0XHRcdH0gZWxzZSBpZiAodGltZWxpbmVOYW1lID09IFwicmdiYVwiKSB7XG5cdFx0XHRcdFx0XHRsZXQgdGltZWxpbmUgPSBuZXcgUkdCQVRpbWVsaW5lKGZyYW1lcywgZnJhbWVzIDw8IDIsIHNsb3RJbmRleCk7XG5cdFx0XHRcdFx0XHRsZXQga2V5TWFwID0gdGltZWxpbmVNYXBbMF07XG5cdFx0XHRcdFx0XHRsZXQgdGltZSA9IGdldFZhbHVlKGtleU1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0bGV0IGNvbG9yID0gQ29sb3IuZnJvbVN0cmluZyhrZXlNYXAuY29sb3IpO1xuXG5cdFx0XHRcdFx0XHRmb3IgKGxldCBmcmFtZSA9IDAsIGJlemllciA9IDA7IDsgZnJhbWUrKykge1xuXHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgY29sb3IuciwgY29sb3IuZywgY29sb3IuYiwgY29sb3IuYSk7XG5cdFx0XHRcdFx0XHRcdGxldCBuZXh0TWFwID0gdGltZWxpbmVNYXBbZnJhbWUgKyAxXTtcblx0XHRcdFx0XHRcdFx0aWYgKCFuZXh0TWFwKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2hyaW5rKGJlemllcik7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0bGV0IHRpbWUyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0XHRsZXQgbmV3Q29sb3IgPSBDb2xvci5mcm9tU3RyaW5nKG5leHRNYXAuY29sb3IpO1xuXHRcdFx0XHRcdFx0XHRsZXQgY3VydmUgPSBrZXlNYXAuY3VydmU7XG5cdFx0XHRcdFx0XHRcdGlmIChjdXJ2ZSkge1xuXHRcdFx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDAsIHRpbWUsIHRpbWUyLCBjb2xvci5yLCBuZXdDb2xvci5yLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAxLCB0aW1lLCB0aW1lMiwgY29sb3IuZywgbmV3Q29sb3IuZywgMSk7XG5cdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMiwgdGltZSwgdGltZTIsIGNvbG9yLmIsIG5ld0NvbG9yLmIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDMsIHRpbWUsIHRpbWUyLCBjb2xvci5hLCBuZXdDb2xvci5hLCAxKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR0aW1lID0gdGltZTI7XG5cdFx0XHRcdFx0XHRcdGNvbG9yID0gbmV3Q29sb3I7XG5cdFx0XHRcdFx0XHRcdGtleU1hcCA9IG5leHRNYXA7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblxuXHRcdFx0XHRcdH0gZWxzZSBpZiAodGltZWxpbmVOYW1lID09IFwicmdiXCIpIHtcblx0XHRcdFx0XHRcdGxldCB0aW1lbGluZSA9IG5ldyBSR0JUaW1lbGluZShmcmFtZXMsIGZyYW1lcyAqIDMsIHNsb3RJbmRleCk7XG5cdFx0XHRcdFx0XHRsZXQga2V5TWFwID0gdGltZWxpbmVNYXBbMF07XG5cdFx0XHRcdFx0XHRsZXQgdGltZSA9IGdldFZhbHVlKGtleU1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0bGV0IGNvbG9yID0gQ29sb3IuZnJvbVN0cmluZyhrZXlNYXAuY29sb3IpO1xuXG5cdFx0XHRcdFx0XHRmb3IgKGxldCBmcmFtZSA9IDAsIGJlemllciA9IDA7IDsgZnJhbWUrKykge1xuXHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgY29sb3IuciwgY29sb3IuZywgY29sb3IuYik7XG5cdFx0XHRcdFx0XHRcdGxldCBuZXh0TWFwID0gdGltZWxpbmVNYXBbZnJhbWUgKyAxXTtcblx0XHRcdFx0XHRcdFx0aWYgKCFuZXh0TWFwKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2hyaW5rKGJlemllcik7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0bGV0IHRpbWUyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0XHRsZXQgbmV3Q29sb3IgPSBDb2xvci5mcm9tU3RyaW5nKG5leHRNYXAuY29sb3IpO1xuXHRcdFx0XHRcdFx0XHRsZXQgY3VydmUgPSBrZXlNYXAuY3VydmU7XG5cdFx0XHRcdFx0XHRcdGlmIChjdXJ2ZSkge1xuXHRcdFx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDAsIHRpbWUsIHRpbWUyLCBjb2xvci5yLCBuZXdDb2xvci5yLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAxLCB0aW1lLCB0aW1lMiwgY29sb3IuZywgbmV3Q29sb3IuZywgMSk7XG5cdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMiwgdGltZSwgdGltZTIsIGNvbG9yLmIsIG5ld0NvbG9yLmIsIDEpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHRpbWUgPSB0aW1lMjtcblx0XHRcdFx0XHRcdFx0Y29sb3IgPSBuZXdDb2xvcjtcblx0XHRcdFx0XHRcdFx0a2V5TWFwID0gbmV4dE1hcDtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXG5cdFx0XHRcdFx0fSBlbHNlIGlmICh0aW1lbGluZU5hbWUgPT0gXCJhbHBoYVwiKSB7XG5cdFx0XHRcdFx0XHR0aW1lbGluZXMucHVzaChyZWFkVGltZWxpbmUxKHRpbWVsaW5lTWFwLCBuZXcgQWxwaGFUaW1lbGluZShmcmFtZXMsIGZyYW1lcywgc2xvdEluZGV4KSwgMCwgMSkpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodGltZWxpbmVOYW1lID09IFwicmdiYTJcIikge1xuXHRcdFx0XHRcdFx0bGV0IHRpbWVsaW5lID0gbmV3IFJHQkEyVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMgKiA3LCBzbG90SW5kZXgpO1xuXG5cdFx0XHRcdFx0XHRsZXQga2V5TWFwID0gdGltZWxpbmVNYXBbMF07XG5cdFx0XHRcdFx0XHRsZXQgdGltZSA9IGdldFZhbHVlKGtleU1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0bGV0IGNvbG9yID0gQ29sb3IuZnJvbVN0cmluZyhrZXlNYXAubGlnaHQpO1xuXHRcdFx0XHRcdFx0bGV0IGNvbG9yMiA9IENvbG9yLmZyb21TdHJpbmcoa2V5TWFwLmRhcmspO1xuXG5cdFx0XHRcdFx0XHRmb3IgKGxldCBmcmFtZSA9IDAsIGJlemllciA9IDA7IDsgZnJhbWUrKykge1xuXHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgY29sb3IuciwgY29sb3IuZywgY29sb3IuYiwgY29sb3IuYSwgY29sb3IyLnIsIGNvbG9yMi5nLCBjb2xvcjIuYik7XG5cdFx0XHRcdFx0XHRcdGxldCBuZXh0TWFwID0gdGltZWxpbmVNYXBbZnJhbWUgKyAxXTtcblx0XHRcdFx0XHRcdFx0aWYgKCFuZXh0TWFwKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2hyaW5rKGJlemllcik7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0bGV0IHRpbWUyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0XHRsZXQgbmV3Q29sb3IgPSBDb2xvci5mcm9tU3RyaW5nKG5leHRNYXAubGlnaHQpO1xuXHRcdFx0XHRcdFx0XHRsZXQgbmV3Q29sb3IyID0gQ29sb3IuZnJvbVN0cmluZyhuZXh0TWFwLmRhcmspO1xuXHRcdFx0XHRcdFx0XHRsZXQgY3VydmUgPSBrZXlNYXAuY3VydmU7XG5cdFx0XHRcdFx0XHRcdGlmIChjdXJ2ZSkge1xuXHRcdFx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDAsIHRpbWUsIHRpbWUyLCBjb2xvci5yLCBuZXdDb2xvci5yLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAxLCB0aW1lLCB0aW1lMiwgY29sb3IuZywgbmV3Q29sb3IuZywgMSk7XG5cdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMiwgdGltZSwgdGltZTIsIGNvbG9yLmIsIG5ld0NvbG9yLmIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDMsIHRpbWUsIHRpbWUyLCBjb2xvci5hLCBuZXdDb2xvci5hLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCA0LCB0aW1lLCB0aW1lMiwgY29sb3IyLnIsIG5ld0NvbG9yMi5yLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCA1LCB0aW1lLCB0aW1lMiwgY29sb3IyLmcsIG5ld0NvbG9yMi5nLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCA2LCB0aW1lLCB0aW1lMiwgY29sb3IyLmIsIG5ld0NvbG9yMi5iLCAxKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR0aW1lID0gdGltZTI7XG5cdFx0XHRcdFx0XHRcdGNvbG9yID0gbmV3Q29sb3I7XG5cdFx0XHRcdFx0XHRcdGNvbG9yMiA9IG5ld0NvbG9yMjtcblx0XHRcdFx0XHRcdFx0a2V5TWFwID0gbmV4dE1hcDtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXG5cdFx0XHRcdFx0fSBlbHNlIGlmICh0aW1lbGluZU5hbWUgPT0gXCJyZ2IyXCIpIHtcblx0XHRcdFx0XHRcdGxldCB0aW1lbGluZSA9IG5ldyBSR0IyVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMgKiA2LCBzbG90SW5kZXgpO1xuXG5cdFx0XHRcdFx0XHRsZXQga2V5TWFwID0gdGltZWxpbmVNYXBbMF07XG5cdFx0XHRcdFx0XHRsZXQgdGltZSA9IGdldFZhbHVlKGtleU1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0bGV0IGNvbG9yID0gQ29sb3IuZnJvbVN0cmluZyhrZXlNYXAubGlnaHQpO1xuXHRcdFx0XHRcdFx0bGV0IGNvbG9yMiA9IENvbG9yLmZyb21TdHJpbmcoa2V5TWFwLmRhcmspO1xuXG5cdFx0XHRcdFx0XHRmb3IgKGxldCBmcmFtZSA9IDAsIGJlemllciA9IDA7IDsgZnJhbWUrKykge1xuXHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgY29sb3IuciwgY29sb3IuZywgY29sb3IuYiwgY29sb3IyLnIsIGNvbG9yMi5nLCBjb2xvcjIuYik7XG5cdFx0XHRcdFx0XHRcdGxldCBuZXh0TWFwID0gdGltZWxpbmVNYXBbZnJhbWUgKyAxXTtcblx0XHRcdFx0XHRcdFx0aWYgKCFuZXh0TWFwKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2hyaW5rKGJlemllcik7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0bGV0IHRpbWUyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0XHRsZXQgbmV3Q29sb3IgPSBDb2xvci5mcm9tU3RyaW5nKG5leHRNYXAubGlnaHQpO1xuXHRcdFx0XHRcdFx0XHRsZXQgbmV3Q29sb3IyID0gQ29sb3IuZnJvbVN0cmluZyhuZXh0TWFwLmRhcmspO1xuXHRcdFx0XHRcdFx0XHRsZXQgY3VydmUgPSBrZXlNYXAuY3VydmU7XG5cdFx0XHRcdFx0XHRcdGlmIChjdXJ2ZSkge1xuXHRcdFx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDAsIHRpbWUsIHRpbWUyLCBjb2xvci5yLCBuZXdDb2xvci5yLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAxLCB0aW1lLCB0aW1lMiwgY29sb3IuZywgbmV3Q29sb3IuZywgMSk7XG5cdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMiwgdGltZSwgdGltZTIsIGNvbG9yLmIsIG5ld0NvbG9yLmIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDMsIHRpbWUsIHRpbWUyLCBjb2xvcjIuciwgbmV3Q29sb3IyLnIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDQsIHRpbWUsIHRpbWUyLCBjb2xvcjIuZywgbmV3Q29sb3IyLmcsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDUsIHRpbWUsIHRpbWUyLCBjb2xvcjIuYiwgbmV3Q29sb3IyLmIsIDEpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHRpbWUgPSB0aW1lMjtcblx0XHRcdFx0XHRcdFx0Y29sb3IgPSBuZXdDb2xvcjtcblx0XHRcdFx0XHRcdFx0Y29sb3IyID0gbmV3Q29sb3IyO1xuXHRcdFx0XHRcdFx0XHRrZXlNYXAgPSBuZXh0TWFwO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHR0aW1lbGluZXMucHVzaCh0aW1lbGluZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQm9uZSB0aW1lbGluZXMuXG5cdFx0aWYgKG1hcC5ib25lcykge1xuXHRcdFx0Zm9yIChsZXQgYm9uZU5hbWUgaW4gbWFwLmJvbmVzKSB7XG5cdFx0XHRcdGxldCBib25lTWFwID0gbWFwLmJvbmVzW2JvbmVOYW1lXTtcblx0XHRcdFx0bGV0IGJvbmUgPSBza2VsZXRvbkRhdGEuZmluZEJvbmUoYm9uZU5hbWUpO1xuXHRcdFx0XHRpZiAoIWJvbmUpIHRocm93IG5ldyBFcnJvcihcIkJvbmUgbm90IGZvdW5kOiBcIiArIGJvbmVOYW1lKTtcblx0XHRcdFx0bGV0IGJvbmVJbmRleCA9IGJvbmUuaW5kZXg7XG5cdFx0XHRcdGZvciAobGV0IHRpbWVsaW5lTmFtZSBpbiBib25lTWFwKSB7XG5cdFx0XHRcdFx0bGV0IHRpbWVsaW5lTWFwID0gYm9uZU1hcFt0aW1lbGluZU5hbWVdO1xuXHRcdFx0XHRcdGxldCBmcmFtZXMgPSB0aW1lbGluZU1hcC5sZW5ndGg7XG5cdFx0XHRcdFx0aWYgKGZyYW1lcyA9PSAwKSBjb250aW51ZTtcblxuXHRcdFx0XHRcdGlmICh0aW1lbGluZU5hbWUgPT09IFwicm90YXRlXCIpIHtcblx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHJlYWRUaW1lbGluZTEodGltZWxpbmVNYXAsIG5ldyBSb3RhdGVUaW1lbGluZShmcmFtZXMsIGZyYW1lcywgYm9uZUluZGV4KSwgMCwgMSkpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodGltZWxpbmVOYW1lID09PSBcInRyYW5zbGF0ZVwiKSB7XG5cdFx0XHRcdFx0XHRsZXQgdGltZWxpbmUgPSBuZXcgVHJhbnNsYXRlVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMgPDwgMSwgYm9uZUluZGV4KTtcblx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHJlYWRUaW1lbGluZTIodGltZWxpbmVNYXAsIHRpbWVsaW5lLCBcInhcIiwgXCJ5XCIsIDAsIHNjYWxlKSk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmICh0aW1lbGluZU5hbWUgPT09IFwidHJhbnNsYXRleFwiKSB7XG5cdFx0XHRcdFx0XHRsZXQgdGltZWxpbmUgPSBuZXcgVHJhbnNsYXRlWFRpbWVsaW5lKGZyYW1lcywgZnJhbWVzLCBib25lSW5kZXgpO1xuXHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2gocmVhZFRpbWVsaW5lMSh0aW1lbGluZU1hcCwgdGltZWxpbmUsIDAsIHNjYWxlKSk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmICh0aW1lbGluZU5hbWUgPT09IFwidHJhbnNsYXRleVwiKSB7XG5cdFx0XHRcdFx0XHRsZXQgdGltZWxpbmUgPSBuZXcgVHJhbnNsYXRlWVRpbWVsaW5lKGZyYW1lcywgZnJhbWVzLCBib25lSW5kZXgpO1xuXHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2gocmVhZFRpbWVsaW5lMSh0aW1lbGluZU1hcCwgdGltZWxpbmUsIDAsIHNjYWxlKSk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmICh0aW1lbGluZU5hbWUgPT09IFwic2NhbGVcIikge1xuXHRcdFx0XHRcdFx0bGV0IHRpbWVsaW5lID0gbmV3IFNjYWxlVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMgPDwgMSwgYm9uZUluZGV4KTtcblx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHJlYWRUaW1lbGluZTIodGltZWxpbmVNYXAsIHRpbWVsaW5lLCBcInhcIiwgXCJ5XCIsIDEsIDEpKTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHRpbWVsaW5lTmFtZSA9PT0gXCJzY2FsZXhcIikge1xuXHRcdFx0XHRcdFx0bGV0IHRpbWVsaW5lID0gbmV3IFNjYWxlWFRpbWVsaW5lKGZyYW1lcywgZnJhbWVzLCBib25lSW5kZXgpO1xuXHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2gocmVhZFRpbWVsaW5lMSh0aW1lbGluZU1hcCwgdGltZWxpbmUsIDEsIDEpKTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHRpbWVsaW5lTmFtZSA9PT0gXCJzY2FsZXlcIikge1xuXHRcdFx0XHRcdFx0bGV0IHRpbWVsaW5lID0gbmV3IFNjYWxlWVRpbWVsaW5lKGZyYW1lcywgZnJhbWVzLCBib25lSW5kZXgpO1xuXHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2gocmVhZFRpbWVsaW5lMSh0aW1lbGluZU1hcCwgdGltZWxpbmUsIDEsIDEpKTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHRpbWVsaW5lTmFtZSA9PT0gXCJzaGVhclwiKSB7XG5cdFx0XHRcdFx0XHRsZXQgdGltZWxpbmUgPSBuZXcgU2hlYXJUaW1lbGluZShmcmFtZXMsIGZyYW1lcyA8PCAxLCBib25lSW5kZXgpO1xuXHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2gocmVhZFRpbWVsaW5lMih0aW1lbGluZU1hcCwgdGltZWxpbmUsIFwieFwiLCBcInlcIiwgMCwgMSkpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodGltZWxpbmVOYW1lID09PSBcInNoZWFyeFwiKSB7XG5cdFx0XHRcdFx0XHRsZXQgdGltZWxpbmUgPSBuZXcgU2hlYXJYVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMsIGJvbmVJbmRleCk7XG5cdFx0XHRcdFx0XHR0aW1lbGluZXMucHVzaChyZWFkVGltZWxpbmUxKHRpbWVsaW5lTWFwLCB0aW1lbGluZSwgMCwgMSkpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodGltZWxpbmVOYW1lID09PSBcInNoZWFyeVwiKSB7XG5cdFx0XHRcdFx0XHRsZXQgdGltZWxpbmUgPSBuZXcgU2hlYXJZVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMsIGJvbmVJbmRleCk7XG5cdFx0XHRcdFx0XHR0aW1lbGluZXMucHVzaChyZWFkVGltZWxpbmUxKHRpbWVsaW5lTWFwLCB0aW1lbGluZSwgMCwgMSkpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodGltZWxpbmVOYW1lID09PSBcImluaGVyaXRcIikge1xuXHRcdFx0XHRcdFx0bGV0IHRpbWVsaW5lID0gbmV3IEluaGVyaXRUaW1lbGluZShmcmFtZXMsIGJvbmUuaW5kZXgpO1xuXHRcdFx0XHRcdFx0Zm9yIChsZXQgZnJhbWUgPSAwOyBmcmFtZSA8IHRpbWVsaW5lTWFwLmxlbmd0aDsgZnJhbWUrKykge1xuXHRcdFx0XHRcdFx0XHRsZXQgYUZyYW1lID0gdGltZWxpbmVNYXBbZnJhbWVdO1xuXHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgZ2V0VmFsdWUoYUZyYW1lLCBcInRpbWVcIiwgMCksIFV0aWxzLmVudW1WYWx1ZShJbmhlcml0LCBnZXRWYWx1ZShhRnJhbWUsIFwiaW5oZXJpdFwiLCBcIk5vcm1hbFwiKSkpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIElLIGNvbnN0cmFpbnQgdGltZWxpbmVzLlxuXHRcdGlmIChtYXAuaWspIHtcblx0XHRcdGZvciAobGV0IGNvbnN0cmFpbnROYW1lIGluIG1hcC5paykge1xuXHRcdFx0XHRsZXQgY29uc3RyYWludE1hcCA9IG1hcC5pa1tjb25zdHJhaW50TmFtZV07XG5cdFx0XHRcdGxldCBrZXlNYXAgPSBjb25zdHJhaW50TWFwWzBdO1xuXHRcdFx0XHRpZiAoIWtleU1hcCkgY29udGludWU7XG5cblx0XHRcdFx0bGV0IGNvbnN0cmFpbnQgPSBza2VsZXRvbkRhdGEuZmluZElrQ29uc3RyYWludChjb25zdHJhaW50TmFtZSk7XG5cdFx0XHRcdGlmICghY29uc3RyYWludCkgdGhyb3cgbmV3IEVycm9yKFwiSUsgQ29uc3RyYWludCBub3QgZm91bmQ6IFwiICsgY29uc3RyYWludE5hbWUpO1xuXHRcdFx0XHRsZXQgY29uc3RyYWludEluZGV4ID0gc2tlbGV0b25EYXRhLmlrQ29uc3RyYWludHMuaW5kZXhPZihjb25zdHJhaW50KTtcblx0XHRcdFx0bGV0IHRpbWVsaW5lID0gbmV3IElrQ29uc3RyYWludFRpbWVsaW5lKGNvbnN0cmFpbnRNYXAubGVuZ3RoLCBjb25zdHJhaW50TWFwLmxlbmd0aCA8PCAxLCBjb25zdHJhaW50SW5kZXgpO1xuXG5cdFx0XHRcdGxldCB0aW1lID0gZ2V0VmFsdWUoa2V5TWFwLCBcInRpbWVcIiwgMCk7XG5cdFx0XHRcdGxldCBtaXggPSBnZXRWYWx1ZShrZXlNYXAsIFwibWl4XCIsIDEpO1xuXHRcdFx0XHRsZXQgc29mdG5lc3MgPSBnZXRWYWx1ZShrZXlNYXAsIFwic29mdG5lc3NcIiwgMCkgKiBzY2FsZTtcblxuXHRcdFx0XHRmb3IgKGxldCBmcmFtZSA9IDAsIGJlemllciA9IDA7IDsgZnJhbWUrKykge1xuXHRcdFx0XHRcdHRpbWVsaW5lLnNldEZyYW1lKGZyYW1lLCB0aW1lLCBtaXgsIHNvZnRuZXNzLCBnZXRWYWx1ZShrZXlNYXAsIFwiYmVuZFBvc2l0aXZlXCIsIHRydWUpID8gMSA6IC0xLCBnZXRWYWx1ZShrZXlNYXAsIFwiY29tcHJlc3NcIiwgZmFsc2UpLCBnZXRWYWx1ZShrZXlNYXAsIFwic3RyZXRjaFwiLCBmYWxzZSkpO1xuXHRcdFx0XHRcdGxldCBuZXh0TWFwID0gY29uc3RyYWludE1hcFtmcmFtZSArIDFdO1xuXHRcdFx0XHRcdGlmICghbmV4dE1hcCkge1xuXHRcdFx0XHRcdFx0dGltZWxpbmUuc2hyaW5rKGJlemllcik7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRsZXQgdGltZTIgPSBnZXRWYWx1ZShuZXh0TWFwLCBcInRpbWVcIiwgMCk7XG5cdFx0XHRcdFx0bGV0IG1peDIgPSBnZXRWYWx1ZShuZXh0TWFwLCBcIm1peFwiLCAxKTtcblx0XHRcdFx0XHRsZXQgc29mdG5lc3MyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJzb2Z0bmVzc1wiLCAwKSAqIHNjYWxlO1xuXHRcdFx0XHRcdGxldCBjdXJ2ZSA9IGtleU1hcC5jdXJ2ZTtcblx0XHRcdFx0XHRpZiAoY3VydmUpIHtcblx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDAsIHRpbWUsIHRpbWUyLCBtaXgsIG1peDIsIDEpO1xuXHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMSwgdGltZSwgdGltZTIsIHNvZnRuZXNzLCBzb2Z0bmVzczIsIHNjYWxlKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHR0aW1lID0gdGltZTI7XG5cdFx0XHRcdFx0bWl4ID0gbWl4Mjtcblx0XHRcdFx0XHRzb2Z0bmVzcyA9IHNvZnRuZXNzMjtcblx0XHRcdFx0XHRrZXlNYXAgPSBuZXh0TWFwO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBUcmFuc2Zvcm0gY29uc3RyYWludCB0aW1lbGluZXMuXG5cdFx0aWYgKG1hcC50cmFuc2Zvcm0pIHtcblx0XHRcdGZvciAobGV0IGNvbnN0cmFpbnROYW1lIGluIG1hcC50cmFuc2Zvcm0pIHtcblx0XHRcdFx0bGV0IHRpbWVsaW5lTWFwID0gbWFwLnRyYW5zZm9ybVtjb25zdHJhaW50TmFtZV07XG5cdFx0XHRcdGxldCBrZXlNYXAgPSB0aW1lbGluZU1hcFswXTtcblx0XHRcdFx0aWYgKCFrZXlNYXApIGNvbnRpbnVlO1xuXG5cdFx0XHRcdGxldCBjb25zdHJhaW50ID0gc2tlbGV0b25EYXRhLmZpbmRUcmFuc2Zvcm1Db25zdHJhaW50KGNvbnN0cmFpbnROYW1lKTtcblx0XHRcdFx0aWYgKCFjb25zdHJhaW50KSB0aHJvdyBuZXcgRXJyb3IoXCJUcmFuc2Zvcm0gY29uc3RyYWludCBub3QgZm91bmQ6IFwiICsgY29uc3RyYWludE5hbWUpO1xuXHRcdFx0XHRsZXQgY29uc3RyYWludEluZGV4ID0gc2tlbGV0b25EYXRhLnRyYW5zZm9ybUNvbnN0cmFpbnRzLmluZGV4T2YoY29uc3RyYWludCk7XG5cdFx0XHRcdGxldCB0aW1lbGluZSA9IG5ldyBUcmFuc2Zvcm1Db25zdHJhaW50VGltZWxpbmUodGltZWxpbmVNYXAubGVuZ3RoLCB0aW1lbGluZU1hcC5sZW5ndGggKiA2LCBjb25zdHJhaW50SW5kZXgpO1xuXG5cdFx0XHRcdGxldCB0aW1lID0gZ2V0VmFsdWUoa2V5TWFwLCBcInRpbWVcIiwgMCk7XG5cdFx0XHRcdGxldCBtaXhSb3RhdGUgPSBnZXRWYWx1ZShrZXlNYXAsIFwibWl4Um90YXRlXCIsIDEpO1xuXHRcdFx0XHRsZXQgbWl4WCA9IGdldFZhbHVlKGtleU1hcCwgXCJtaXhYXCIsIDEpO1xuXHRcdFx0XHRsZXQgbWl4WSA9IGdldFZhbHVlKGtleU1hcCwgXCJtaXhZXCIsIG1peFgpO1xuXHRcdFx0XHRsZXQgbWl4U2NhbGVYID0gZ2V0VmFsdWUoa2V5TWFwLCBcIm1peFNjYWxlWFwiLCAxKTtcblx0XHRcdFx0bGV0IG1peFNjYWxlWSA9IGdldFZhbHVlKGtleU1hcCwgXCJtaXhTY2FsZVlcIiwgbWl4U2NhbGVYKTtcblx0XHRcdFx0bGV0IG1peFNoZWFyWSA9IGdldFZhbHVlKGtleU1hcCwgXCJtaXhTaGVhcllcIiwgMSk7XG5cblx0XHRcdFx0Zm9yIChsZXQgZnJhbWUgPSAwLCBiZXppZXIgPSAwOyA7IGZyYW1lKyspIHtcblx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgbWl4Um90YXRlLCBtaXhYLCBtaXhZLCBtaXhTY2FsZVgsIG1peFNjYWxlWSwgbWl4U2hlYXJZKTtcblx0XHRcdFx0XHRsZXQgbmV4dE1hcCA9IHRpbWVsaW5lTWFwW2ZyYW1lICsgMV07XG5cdFx0XHRcdFx0aWYgKCFuZXh0TWFwKSB7XG5cdFx0XHRcdFx0XHR0aW1lbGluZS5zaHJpbmsoYmV6aWVyKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGxldCB0aW1lMiA9IGdldFZhbHVlKG5leHRNYXAsIFwidGltZVwiLCAwKTtcblx0XHRcdFx0XHRsZXQgbWl4Um90YXRlMiA9IGdldFZhbHVlKG5leHRNYXAsIFwibWl4Um90YXRlXCIsIDEpO1xuXHRcdFx0XHRcdGxldCBtaXhYMiA9IGdldFZhbHVlKG5leHRNYXAsIFwibWl4WFwiLCAxKTtcblx0XHRcdFx0XHRsZXQgbWl4WTIgPSBnZXRWYWx1ZShuZXh0TWFwLCBcIm1peFlcIiwgbWl4WDIpO1xuXHRcdFx0XHRcdGxldCBtaXhTY2FsZVgyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJtaXhTY2FsZVhcIiwgMSk7XG5cdFx0XHRcdFx0bGV0IG1peFNjYWxlWTIgPSBnZXRWYWx1ZShuZXh0TWFwLCBcIm1peFNjYWxlWVwiLCBtaXhTY2FsZVgyKTtcblx0XHRcdFx0XHRsZXQgbWl4U2hlYXJZMiA9IGdldFZhbHVlKG5leHRNYXAsIFwibWl4U2hlYXJZXCIsIDEpO1xuXHRcdFx0XHRcdGxldCBjdXJ2ZSA9IGtleU1hcC5jdXJ2ZTtcblx0XHRcdFx0XHRpZiAoY3VydmUpIHtcblx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDAsIHRpbWUsIHRpbWUyLCBtaXhSb3RhdGUsIG1peFJvdGF0ZTIsIDEpO1xuXHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMSwgdGltZSwgdGltZTIsIG1peFgsIG1peFgyLCAxKTtcblx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDIsIHRpbWUsIHRpbWUyLCBtaXhZLCBtaXhZMiwgMSk7XG5cdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAzLCB0aW1lLCB0aW1lMiwgbWl4U2NhbGVYLCBtaXhTY2FsZVgyLCAxKTtcblx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDQsIHRpbWUsIHRpbWUyLCBtaXhTY2FsZVksIG1peFNjYWxlWTIsIDEpO1xuXHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgNSwgdGltZSwgdGltZTIsIG1peFNoZWFyWSwgbWl4U2hlYXJZMiwgMSk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0dGltZSA9IHRpbWUyO1xuXHRcdFx0XHRcdG1peFJvdGF0ZSA9IG1peFJvdGF0ZTI7XG5cdFx0XHRcdFx0bWl4WCA9IG1peFgyO1xuXHRcdFx0XHRcdG1peFkgPSBtaXhZMjtcblx0XHRcdFx0XHRtaXhTY2FsZVggPSBtaXhTY2FsZVgyO1xuXHRcdFx0XHRcdG1peFNjYWxlWSA9IG1peFNjYWxlWTI7XG5cdFx0XHRcdFx0bWl4U2NhbGVYID0gbWl4U2NhbGVYMjtcblx0XHRcdFx0XHRrZXlNYXAgPSBuZXh0TWFwO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBQYXRoIGNvbnN0cmFpbnQgdGltZWxpbmVzLlxuXHRcdGlmIChtYXAucGF0aCkge1xuXHRcdFx0Zm9yIChsZXQgY29uc3RyYWludE5hbWUgaW4gbWFwLnBhdGgpIHtcblx0XHRcdFx0bGV0IGNvbnN0cmFpbnRNYXAgPSBtYXAucGF0aFtjb25zdHJhaW50TmFtZV07XG5cdFx0XHRcdGxldCBjb25zdHJhaW50ID0gc2tlbGV0b25EYXRhLmZpbmRQYXRoQ29uc3RyYWludChjb25zdHJhaW50TmFtZSk7XG5cdFx0XHRcdGlmICghY29uc3RyYWludCkgdGhyb3cgbmV3IEVycm9yKFwiUGF0aCBjb25zdHJhaW50IG5vdCBmb3VuZDogXCIgKyBjb25zdHJhaW50TmFtZSk7XG5cdFx0XHRcdGxldCBjb25zdHJhaW50SW5kZXggPSBza2VsZXRvbkRhdGEucGF0aENvbnN0cmFpbnRzLmluZGV4T2YoY29uc3RyYWludCk7XG5cdFx0XHRcdGZvciAobGV0IHRpbWVsaW5lTmFtZSBpbiBjb25zdHJhaW50TWFwKSB7XG5cdFx0XHRcdFx0bGV0IHRpbWVsaW5lTWFwID0gY29uc3RyYWludE1hcFt0aW1lbGluZU5hbWVdO1xuXHRcdFx0XHRcdGxldCBrZXlNYXAgPSB0aW1lbGluZU1hcFswXTtcblx0XHRcdFx0XHRpZiAoIWtleU1hcCkgY29udGludWU7XG5cblx0XHRcdFx0XHRsZXQgZnJhbWVzID0gdGltZWxpbmVNYXAubGVuZ3RoO1xuXHRcdFx0XHRcdGlmICh0aW1lbGluZU5hbWUgPT09IFwicG9zaXRpb25cIikge1xuXHRcdFx0XHRcdFx0bGV0IHRpbWVsaW5lID0gbmV3IFBhdGhDb25zdHJhaW50UG9zaXRpb25UaW1lbGluZShmcmFtZXMsIGZyYW1lcywgY29uc3RyYWludEluZGV4KTtcblx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHJlYWRUaW1lbGluZTEodGltZWxpbmVNYXAsIHRpbWVsaW5lLCAwLCBjb25zdHJhaW50LnBvc2l0aW9uTW9kZSA9PSBQb3NpdGlvbk1vZGUuRml4ZWQgPyBzY2FsZSA6IDEpKTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHRpbWVsaW5lTmFtZSA9PT0gXCJzcGFjaW5nXCIpIHtcblx0XHRcdFx0XHRcdGxldCB0aW1lbGluZSA9IG5ldyBQYXRoQ29uc3RyYWludFNwYWNpbmdUaW1lbGluZShmcmFtZXMsIGZyYW1lcywgY29uc3RyYWludEluZGV4KTtcblx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHJlYWRUaW1lbGluZTEodGltZWxpbmVNYXAsIHRpbWVsaW5lLCAwLCBjb25zdHJhaW50LnNwYWNpbmdNb2RlID09IFNwYWNpbmdNb2RlLkxlbmd0aCB8fCBjb25zdHJhaW50LnNwYWNpbmdNb2RlID09IFNwYWNpbmdNb2RlLkZpeGVkID8gc2NhbGUgOiAxKSk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmICh0aW1lbGluZU5hbWUgPT09IFwibWl4XCIpIHtcblx0XHRcdFx0XHRcdGxldCB0aW1lbGluZSA9IG5ldyBQYXRoQ29uc3RyYWludE1peFRpbWVsaW5lKGZyYW1lcywgZnJhbWVzICogMywgY29uc3RyYWludEluZGV4KTtcblx0XHRcdFx0XHRcdGxldCB0aW1lID0gZ2V0VmFsdWUoa2V5TWFwLCBcInRpbWVcIiwgMCk7XG5cdFx0XHRcdFx0XHRsZXQgbWl4Um90YXRlID0gZ2V0VmFsdWUoa2V5TWFwLCBcIm1peFJvdGF0ZVwiLCAxKTtcblx0XHRcdFx0XHRcdGxldCBtaXhYID0gZ2V0VmFsdWUoa2V5TWFwLCBcIm1peFhcIiwgMSk7XG5cdFx0XHRcdFx0XHRsZXQgbWl4WSA9IGdldFZhbHVlKGtleU1hcCwgXCJtaXhZXCIsIG1peFgpO1xuXHRcdFx0XHRcdFx0Zm9yIChsZXQgZnJhbWUgPSAwLCBiZXppZXIgPSAwOyA7IGZyYW1lKyspIHtcblx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2V0RnJhbWUoZnJhbWUsIHRpbWUsIG1peFJvdGF0ZSwgbWl4WCwgbWl4WSk7XG5cdFx0XHRcdFx0XHRcdGxldCBuZXh0TWFwID0gdGltZWxpbmVNYXBbZnJhbWUgKyAxXTtcblx0XHRcdFx0XHRcdFx0aWYgKCFuZXh0TWFwKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2hyaW5rKGJlemllcik7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0bGV0IHRpbWUyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0XHRsZXQgbWl4Um90YXRlMiA9IGdldFZhbHVlKG5leHRNYXAsIFwibWl4Um90YXRlXCIsIDEpO1xuXHRcdFx0XHRcdFx0XHRsZXQgbWl4WDIgPSBnZXRWYWx1ZShuZXh0TWFwLCBcIm1peFhcIiwgMSk7XG5cdFx0XHRcdFx0XHRcdGxldCBtaXhZMiA9IGdldFZhbHVlKG5leHRNYXAsIFwibWl4WVwiLCBtaXhYMik7XG5cdFx0XHRcdFx0XHRcdGxldCBjdXJ2ZSA9IGtleU1hcC5jdXJ2ZTtcblx0XHRcdFx0XHRcdFx0aWYgKGN1cnZlKSB7XG5cdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMCwgdGltZSwgdGltZTIsIG1peFJvdGF0ZSwgbWl4Um90YXRlMiwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMSwgdGltZSwgdGltZTIsIG1peFgsIG1peFgyLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAyLCB0aW1lLCB0aW1lMiwgbWl4WSwgbWl4WTIsIDEpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHRpbWUgPSB0aW1lMjtcblx0XHRcdFx0XHRcdFx0bWl4Um90YXRlID0gbWl4Um90YXRlMjtcblx0XHRcdFx0XHRcdFx0bWl4WCA9IG1peFgyO1xuXHRcdFx0XHRcdFx0XHRtaXhZID0gbWl4WTI7XG5cdFx0XHRcdFx0XHRcdGtleU1hcCA9IG5leHRNYXA7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0aW1lbGluZXMucHVzaCh0aW1lbGluZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gUGh5c2ljcyBjb25zdHJhaW50IHRpbWVsaW5lcy5cblx0XHRpZiAobWFwLnBoeXNpY3MpIHtcblx0XHRcdGZvciAobGV0IGNvbnN0cmFpbnROYW1lIGluIG1hcC5waHlzaWNzKSB7XG5cdFx0XHRcdGxldCBjb25zdHJhaW50TWFwID0gbWFwLnBoeXNpY3NbY29uc3RyYWludE5hbWVdO1xuXHRcdFx0XHRsZXQgY29uc3RyYWludEluZGV4ID0gLTE7XG5cdFx0XHRcdGlmIChjb25zdHJhaW50TmFtZS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0bGV0IGNvbnN0cmFpbnQgPSBza2VsZXRvbkRhdGEuZmluZFBoeXNpY3NDb25zdHJhaW50KGNvbnN0cmFpbnROYW1lKTtcblx0XHRcdFx0XHRpZiAoIWNvbnN0cmFpbnQpIHRocm93IG5ldyBFcnJvcihcIlBoeXNpY3MgY29uc3RyYWludCBub3QgZm91bmQ6IFwiICsgY29uc3RyYWludE5hbWUpO1xuXHRcdFx0XHRcdGNvbnN0cmFpbnRJbmRleCA9IHNrZWxldG9uRGF0YS5waHlzaWNzQ29uc3RyYWludHMuaW5kZXhPZihjb25zdHJhaW50KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3IgKGxldCB0aW1lbGluZU5hbWUgaW4gY29uc3RyYWludE1hcCkge1xuXHRcdFx0XHRcdGxldCB0aW1lbGluZU1hcCA9IGNvbnN0cmFpbnRNYXBbdGltZWxpbmVOYW1lXTtcblx0XHRcdFx0XHRsZXQga2V5TWFwID0gdGltZWxpbmVNYXBbMF07XG5cdFx0XHRcdFx0aWYgKCFrZXlNYXApIGNvbnRpbnVlO1xuXG5cdFx0XHRcdFx0bGV0IGZyYW1lcyA9IHRpbWVsaW5lTWFwLmxlbmd0aDtcblx0XHRcdFx0XHRpZiAodGltZWxpbmVOYW1lID09IFwicmVzZXRcIikge1xuXHRcdFx0XHRcdFx0Y29uc3QgdGltZWxpbmUgPSBuZXcgUGh5c2ljc0NvbnN0cmFpbnRSZXNldFRpbWVsaW5lKGZyYW1lcywgY29uc3RyYWludEluZGV4KTtcblx0XHRcdFx0XHRcdGZvciAobGV0IGZyYW1lID0gMDsga2V5TWFwICE9IG51bGw7IGtleU1hcCA9IHRpbWVsaW5lTWFwW2ZyYW1lICsgMV0sIGZyYW1lKyspXG5cdFx0XHRcdFx0XHRcdHRpbWVsaW5lLnNldEZyYW1lKGZyYW1lLCBnZXRWYWx1ZShrZXlNYXAsIFwidGltZVwiLCAwKSk7XG5cdFx0XHRcdFx0XHR0aW1lbGluZXMucHVzaCh0aW1lbGluZSk7XG5cdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRsZXQgdGltZWxpbmU7XG5cdFx0XHRcdFx0aWYgKHRpbWVsaW5lTmFtZSA9PSBcImluZXJ0aWFcIilcblx0XHRcdFx0XHRcdHRpbWVsaW5lID0gbmV3IFBoeXNpY3NDb25zdHJhaW50SW5lcnRpYVRpbWVsaW5lKGZyYW1lcywgZnJhbWVzLCBjb25zdHJhaW50SW5kZXgpO1xuXHRcdFx0XHRcdGVsc2UgaWYgKHRpbWVsaW5lTmFtZSA9PSBcInN0cmVuZ3RoXCIpXG5cdFx0XHRcdFx0XHR0aW1lbGluZSA9IG5ldyBQaHlzaWNzQ29uc3RyYWludFN0cmVuZ3RoVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMsIGNvbnN0cmFpbnRJbmRleCk7XG5cdFx0XHRcdFx0ZWxzZSBpZiAodGltZWxpbmVOYW1lID09IFwiZGFtcGluZ1wiKVxuXHRcdFx0XHRcdFx0dGltZWxpbmUgPSBuZXcgUGh5c2ljc0NvbnN0cmFpbnREYW1waW5nVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMsIGNvbnN0cmFpbnRJbmRleCk7XG5cdFx0XHRcdFx0ZWxzZSBpZiAodGltZWxpbmVOYW1lID09IFwibWFzc1wiKVxuXHRcdFx0XHRcdFx0dGltZWxpbmUgPSBuZXcgUGh5c2ljc0NvbnN0cmFpbnRNYXNzVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMsIGNvbnN0cmFpbnRJbmRleCk7XG5cdFx0XHRcdFx0ZWxzZSBpZiAodGltZWxpbmVOYW1lID09IFwid2luZFwiKVxuXHRcdFx0XHRcdFx0dGltZWxpbmUgPSBuZXcgUGh5c2ljc0NvbnN0cmFpbnRXaW5kVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMsIGNvbnN0cmFpbnRJbmRleCk7XG5cdFx0XHRcdFx0ZWxzZSBpZiAodGltZWxpbmVOYW1lID09IFwiZ3Jhdml0eVwiKVxuXHRcdFx0XHRcdFx0dGltZWxpbmUgPSBuZXcgUGh5c2ljc0NvbnN0cmFpbnRHcmF2aXR5VGltZWxpbmUoZnJhbWVzLCBmcmFtZXMsIGNvbnN0cmFpbnRJbmRleCk7XG5cdFx0XHRcdFx0ZWxzZSBpZiAodGltZWxpbmVOYW1lID09IFwibWl4XCIpIC8vXG5cdFx0XHRcdFx0XHR0aW1lbGluZSA9IG5ldyBQaHlzaWNzQ29uc3RyYWludE1peFRpbWVsaW5lKGZyYW1lcywgZnJhbWVzLCBjb25zdHJhaW50SW5kZXgpO1xuXHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHJlYWRUaW1lbGluZTEodGltZWxpbmVNYXAsIHRpbWVsaW5lLCAwLCAxKSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBBdHRhY2htZW50IHRpbWVsaW5lcy5cblx0XHRpZiAobWFwLmF0dGFjaG1lbnRzKSB7XG5cdFx0XHRmb3IgKGxldCBhdHRhY2htZW50c05hbWUgaW4gbWFwLmF0dGFjaG1lbnRzKSB7XG5cdFx0XHRcdGxldCBhdHRhY2htZW50c01hcCA9IG1hcC5hdHRhY2htZW50c1thdHRhY2htZW50c05hbWVdO1xuXHRcdFx0XHRsZXQgc2tpbiA9IHNrZWxldG9uRGF0YS5maW5kU2tpbihhdHRhY2htZW50c05hbWUpO1xuXHRcdFx0XHRpZiAoIXNraW4pIHRocm93IG5ldyBFcnJvcihcIlNraW4gbm90IGZvdW5kOiBcIiArIGF0dGFjaG1lbnRzTmFtZSk7XG5cdFx0XHRcdGZvciAobGV0IHNsb3RNYXBOYW1lIGluIGF0dGFjaG1lbnRzTWFwKSB7XG5cdFx0XHRcdFx0bGV0IHNsb3RNYXAgPSBhdHRhY2htZW50c01hcFtzbG90TWFwTmFtZV07XG5cdFx0XHRcdFx0bGV0IHNsb3QgPSBza2VsZXRvbkRhdGEuZmluZFNsb3Qoc2xvdE1hcE5hbWUpO1xuXHRcdFx0XHRcdGlmICghc2xvdCkgdGhyb3cgbmV3IEVycm9yKFwiU2xvdCBub3QgZm91bmQ6IFwiICsgc2xvdE1hcE5hbWUpO1xuXHRcdFx0XHRcdGxldCBzbG90SW5kZXggPSBzbG90LmluZGV4O1xuXHRcdFx0XHRcdGZvciAobGV0IGF0dGFjaG1lbnRNYXBOYW1lIGluIHNsb3RNYXApIHtcblx0XHRcdFx0XHRcdGxldCBhdHRhY2htZW50TWFwID0gc2xvdE1hcFthdHRhY2htZW50TWFwTmFtZV07XG5cdFx0XHRcdFx0XHRsZXQgYXR0YWNobWVudCA9IDxWZXJ0ZXhBdHRhY2htZW50PnNraW4uZ2V0QXR0YWNobWVudChzbG90SW5kZXgsIGF0dGFjaG1lbnRNYXBOYW1lKTtcblxuXHRcdFx0XHRcdFx0Zm9yIChsZXQgdGltZWxpbmVNYXBOYW1lIGluIGF0dGFjaG1lbnRNYXApIHtcblx0XHRcdFx0XHRcdFx0bGV0IHRpbWVsaW5lTWFwID0gYXR0YWNobWVudE1hcFt0aW1lbGluZU1hcE5hbWVdO1xuXHRcdFx0XHRcdFx0XHRsZXQga2V5TWFwID0gdGltZWxpbmVNYXBbMF07XG5cdFx0XHRcdFx0XHRcdGlmICgha2V5TWFwKSBjb250aW51ZTtcblxuXHRcdFx0XHRcdFx0XHRpZiAodGltZWxpbmVNYXBOYW1lID09IFwiZGVmb3JtXCIpIHtcblx0XHRcdFx0XHRcdFx0XHRsZXQgd2VpZ2h0ZWQgPSBhdHRhY2htZW50LmJvbmVzO1xuXHRcdFx0XHRcdFx0XHRcdGxldCB2ZXJ0aWNlcyA9IGF0dGFjaG1lbnQudmVydGljZXM7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IGRlZm9ybUxlbmd0aCA9IHdlaWdodGVkID8gdmVydGljZXMubGVuZ3RoIC8gMyAqIDIgOiB2ZXJ0aWNlcy5sZW5ndGg7XG5cblx0XHRcdFx0XHRcdFx0XHRsZXQgdGltZWxpbmUgPSBuZXcgRGVmb3JtVGltZWxpbmUodGltZWxpbmVNYXAubGVuZ3RoLCB0aW1lbGluZU1hcC5sZW5ndGgsIHNsb3RJbmRleCwgYXR0YWNobWVudCk7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IHRpbWUgPSBnZXRWYWx1ZShrZXlNYXAsIFwidGltZVwiLCAwKTtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKGxldCBmcmFtZSA9IDAsIGJlemllciA9IDA7IDsgZnJhbWUrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IGRlZm9ybTogTnVtYmVyQXJyYXlMaWtlO1xuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IHZlcnRpY2VzVmFsdWU6IEFycmF5PE51bWJlcj4gPSBnZXRWYWx1ZShrZXlNYXAsIFwidmVydGljZXNcIiwgbnVsbCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXZlcnRpY2VzVmFsdWUpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRlZm9ybSA9IHdlaWdodGVkID8gVXRpbHMubmV3RmxvYXRBcnJheShkZWZvcm1MZW5ndGgpIDogdmVydGljZXM7XG5cdFx0XHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVmb3JtID0gVXRpbHMubmV3RmxvYXRBcnJheShkZWZvcm1MZW5ndGgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRsZXQgc3RhcnQgPSA8bnVtYmVyPmdldFZhbHVlKGtleU1hcCwgXCJvZmZzZXRcIiwgMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFV0aWxzLmFycmF5Q29weSh2ZXJ0aWNlc1ZhbHVlLCAwLCBkZWZvcm0sIHN0YXJ0LCB2ZXJ0aWNlc1ZhbHVlLmxlbmd0aCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChzY2FsZSAhPSAxKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IHN0YXJ0LCBuID0gaSArIHZlcnRpY2VzVmFsdWUubGVuZ3RoOyBpIDwgbjsgaSsrKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVmb3JtW2ldICo9IHNjYWxlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghd2VpZ2h0ZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGRlZm9ybUxlbmd0aDsgaSsrKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVmb3JtW2ldICs9IHZlcnRpY2VzW2ldO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdHRpbWVsaW5lLnNldEZyYW1lKGZyYW1lLCB0aW1lLCBkZWZvcm0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IG5leHRNYXAgPSB0aW1lbGluZU1hcFtmcmFtZSArIDFdO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFuZXh0TWFwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRpbWVsaW5lLnNocmluayhiZXppZXIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGxldCB0aW1lMiA9IGdldFZhbHVlKG5leHRNYXAsIFwidGltZVwiLCAwKTtcblx0XHRcdFx0XHRcdFx0XHRcdGxldCBjdXJ2ZSA9IGtleU1hcC5jdXJ2ZTtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChjdXJ2ZSkgYmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMCwgdGltZSwgdGltZTIsIDAsIDEsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0dGltZSA9IHRpbWUyO1xuXHRcdFx0XHRcdFx0XHRcdFx0a2V5TWFwID0gbmV4dE1hcDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKHRpbWVsaW5lTWFwTmFtZSA9PSBcInNlcXVlbmNlXCIpIHtcblx0XHRcdFx0XHRcdFx0XHRsZXQgdGltZWxpbmUgPSBuZXcgU2VxdWVuY2VUaW1lbGluZSh0aW1lbGluZU1hcC5sZW5ndGgsIHNsb3RJbmRleCwgYXR0YWNobWVudCBhcyB1bmtub3duIGFzIEhhc1RleHR1cmVSZWdpb24pO1xuXHRcdFx0XHRcdFx0XHRcdGxldCBsYXN0RGVsYXkgPSAwO1xuXHRcdFx0XHRcdFx0XHRcdGZvciAobGV0IGZyYW1lID0gMDsgZnJhbWUgPCB0aW1lbGluZU1hcC5sZW5ndGg7IGZyYW1lKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdGxldCBkZWxheSA9IGdldFZhbHVlKGtleU1hcCwgXCJkZWxheVwiLCBsYXN0RGVsYXkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IHRpbWUgPSBnZXRWYWx1ZShrZXlNYXAsIFwidGltZVwiLCAwKTtcblx0XHRcdFx0XHRcdFx0XHRcdGxldCBtb2RlID0gU2VxdWVuY2VNb2RlW2dldFZhbHVlKGtleU1hcCwgXCJtb2RlXCIsIFwiaG9sZFwiKV0gYXMgdW5rbm93biBhcyBudW1iZXI7XG5cdFx0XHRcdFx0XHRcdFx0XHRsZXQgaW5kZXggPSBnZXRWYWx1ZShrZXlNYXAsIFwiaW5kZXhcIiwgMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgbW9kZSwgaW5kZXgsIGRlbGF5KTtcblx0XHRcdFx0XHRcdFx0XHRcdGxhc3REZWxheSA9IGRlbGF5O1xuXHRcdFx0XHRcdFx0XHRcdFx0a2V5TWFwID0gdGltZWxpbmVNYXBbZnJhbWUgKyAxXTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gRHJhdyBvcmRlciB0aW1lbGluZXMuXG5cdFx0aWYgKG1hcC5kcmF3T3JkZXIpIHtcblx0XHRcdGxldCB0aW1lbGluZSA9IG5ldyBEcmF3T3JkZXJUaW1lbGluZShtYXAuZHJhd09yZGVyLmxlbmd0aCk7XG5cdFx0XHRsZXQgc2xvdENvdW50ID0gc2tlbGV0b25EYXRhLnNsb3RzLmxlbmd0aDtcblx0XHRcdGxldCBmcmFtZSA9IDA7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG1hcC5kcmF3T3JkZXIubGVuZ3RoOyBpKyssIGZyYW1lKyspIHtcblx0XHRcdFx0bGV0IGRyYXdPcmRlck1hcCA9IG1hcC5kcmF3T3JkZXJbaV07XG5cdFx0XHRcdGxldCBkcmF3T3JkZXI6IEFycmF5PG51bWJlcj4gfCBudWxsID0gbnVsbDtcblx0XHRcdFx0bGV0IG9mZnNldHMgPSBnZXRWYWx1ZShkcmF3T3JkZXJNYXAsIFwib2Zmc2V0c1wiLCBudWxsKTtcblx0XHRcdFx0aWYgKG9mZnNldHMpIHtcblx0XHRcdFx0XHRkcmF3T3JkZXIgPSBVdGlscy5uZXdBcnJheTxudW1iZXI+KHNsb3RDb3VudCwgLTEpO1xuXHRcdFx0XHRcdGxldCB1bmNoYW5nZWQgPSBVdGlscy5uZXdBcnJheTxudW1iZXI+KHNsb3RDb3VudCAtIG9mZnNldHMubGVuZ3RoLCAwKTtcblx0XHRcdFx0XHRsZXQgb3JpZ2luYWxJbmRleCA9IDAsIHVuY2hhbmdlZEluZGV4ID0gMDtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgb2Zmc2V0cy5sZW5ndGg7IGlpKyspIHtcblx0XHRcdFx0XHRcdGxldCBvZmZzZXRNYXAgPSBvZmZzZXRzW2lpXTtcblx0XHRcdFx0XHRcdGxldCBzbG90ID0gc2tlbGV0b25EYXRhLmZpbmRTbG90KG9mZnNldE1hcC5zbG90KTtcblx0XHRcdFx0XHRcdGlmICghc2xvdCkgdGhyb3cgbmV3IEVycm9yKFwiU2xvdCBub3QgZm91bmQ6IFwiICsgc2xvdCk7XG5cdFx0XHRcdFx0XHRsZXQgc2xvdEluZGV4ID0gc2xvdC5pbmRleDtcblx0XHRcdFx0XHRcdC8vIENvbGxlY3QgdW5jaGFuZ2VkIGl0ZW1zLlxuXHRcdFx0XHRcdFx0d2hpbGUgKG9yaWdpbmFsSW5kZXggIT0gc2xvdEluZGV4KVxuXHRcdFx0XHRcdFx0XHR1bmNoYW5nZWRbdW5jaGFuZ2VkSW5kZXgrK10gPSBvcmlnaW5hbEluZGV4Kys7XG5cdFx0XHRcdFx0XHQvLyBTZXQgY2hhbmdlZCBpdGVtcy5cblx0XHRcdFx0XHRcdGRyYXdPcmRlcltvcmlnaW5hbEluZGV4ICsgb2Zmc2V0TWFwLm9mZnNldF0gPSBvcmlnaW5hbEluZGV4Kys7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIENvbGxlY3QgcmVtYWluaW5nIHVuY2hhbmdlZCBpdGVtcy5cblx0XHRcdFx0XHR3aGlsZSAob3JpZ2luYWxJbmRleCA8IHNsb3RDb3VudClcblx0XHRcdFx0XHRcdHVuY2hhbmdlZFt1bmNoYW5nZWRJbmRleCsrXSA9IG9yaWdpbmFsSW5kZXgrKztcblx0XHRcdFx0XHQvLyBGaWxsIGluIHVuY2hhbmdlZCBpdGVtcy5cblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IHNsb3RDb3VudCAtIDE7IGlpID49IDA7IGlpLS0pXG5cdFx0XHRcdFx0XHRpZiAoZHJhd09yZGVyW2lpXSA9PSAtMSkgZHJhd09yZGVyW2lpXSA9IHVuY2hhbmdlZFstLXVuY2hhbmdlZEluZGV4XTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgZ2V0VmFsdWUoZHJhd09yZGVyTWFwLCBcInRpbWVcIiwgMCksIGRyYXdPcmRlcik7XG5cdFx0XHR9XG5cdFx0XHR0aW1lbGluZXMucHVzaCh0aW1lbGluZSk7XG5cdFx0fVxuXG5cdFx0Ly8gRXZlbnQgdGltZWxpbmVzLlxuXHRcdGlmIChtYXAuZXZlbnRzKSB7XG5cdFx0XHRsZXQgdGltZWxpbmUgPSBuZXcgRXZlbnRUaW1lbGluZShtYXAuZXZlbnRzLmxlbmd0aCk7XG5cdFx0XHRsZXQgZnJhbWUgPSAwO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBtYXAuZXZlbnRzLmxlbmd0aDsgaSsrLCBmcmFtZSsrKSB7XG5cdFx0XHRcdGxldCBldmVudE1hcCA9IG1hcC5ldmVudHNbaV07XG5cdFx0XHRcdGxldCBldmVudERhdGEgPSBza2VsZXRvbkRhdGEuZmluZEV2ZW50KGV2ZW50TWFwLm5hbWUpO1xuXHRcdFx0XHRpZiAoIWV2ZW50RGF0YSkgdGhyb3cgbmV3IEVycm9yKFwiRXZlbnQgbm90IGZvdW5kOiBcIiArIGV2ZW50TWFwLm5hbWUpO1xuXHRcdFx0XHRsZXQgZXZlbnQgPSBuZXcgRXZlbnQoVXRpbHMudG9TaW5nbGVQcmVjaXNpb24oZ2V0VmFsdWUoZXZlbnRNYXAsIFwidGltZVwiLCAwKSksIGV2ZW50RGF0YSk7XG5cdFx0XHRcdGV2ZW50LmludFZhbHVlID0gZ2V0VmFsdWUoZXZlbnRNYXAsIFwiaW50XCIsIGV2ZW50RGF0YS5pbnRWYWx1ZSk7XG5cdFx0XHRcdGV2ZW50LmZsb2F0VmFsdWUgPSBnZXRWYWx1ZShldmVudE1hcCwgXCJmbG9hdFwiLCBldmVudERhdGEuZmxvYXRWYWx1ZSk7XG5cdFx0XHRcdGV2ZW50LnN0cmluZ1ZhbHVlID0gZ2V0VmFsdWUoZXZlbnRNYXAsIFwic3RyaW5nXCIsIGV2ZW50RGF0YS5zdHJpbmdWYWx1ZSk7XG5cdFx0XHRcdGlmIChldmVudC5kYXRhLmF1ZGlvUGF0aCkge1xuXHRcdFx0XHRcdGV2ZW50LnZvbHVtZSA9IGdldFZhbHVlKGV2ZW50TWFwLCBcInZvbHVtZVwiLCAxKTtcblx0XHRcdFx0XHRldmVudC5iYWxhbmNlID0gZ2V0VmFsdWUoZXZlbnRNYXAsIFwiYmFsYW5jZVwiLCAwKTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgZXZlbnQpO1xuXHRcdFx0fVxuXHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdH1cblxuXHRcdGxldCBkdXJhdGlvbiA9IDA7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSB0aW1lbGluZXMubGVuZ3RoOyBpIDwgbjsgaSsrKVxuXHRcdFx0ZHVyYXRpb24gPSBNYXRoLm1heChkdXJhdGlvbiwgdGltZWxpbmVzW2ldLmdldER1cmF0aW9uKCkpO1xuXHRcdHNrZWxldG9uRGF0YS5hbmltYXRpb25zLnB1c2gobmV3IEFuaW1hdGlvbihuYW1lLCB0aW1lbGluZXMsIGR1cmF0aW9uKSk7XG5cdH1cbn1cblxuY2xhc3MgTGlua2VkTWVzaCB7XG5cdHBhcmVudDogc3RyaW5nOyBza2luOiBzdHJpbmc7XG5cdHNsb3RJbmRleDogbnVtYmVyO1xuXHRtZXNoOiBNZXNoQXR0YWNobWVudDtcblx0aW5oZXJpdFRpbWVsaW5lOiBib29sZWFuO1xuXG5cdGNvbnN0cnVjdG9yIChtZXNoOiBNZXNoQXR0YWNobWVudCwgc2tpbjogc3RyaW5nLCBzbG90SW5kZXg6IG51bWJlciwgcGFyZW50OiBzdHJpbmcsIGluaGVyaXREZWZvcm06IGJvb2xlYW4pIHtcblx0XHR0aGlzLm1lc2ggPSBtZXNoO1xuXHRcdHRoaXMuc2tpbiA9IHNraW47XG5cdFx0dGhpcy5zbG90SW5kZXggPSBzbG90SW5kZXg7XG5cdFx0dGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG5cdFx0dGhpcy5pbmhlcml0VGltZWxpbmUgPSBpbmhlcml0RGVmb3JtO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHJlYWRUaW1lbGluZTEgKGtleXM6IGFueVtdLCB0aW1lbGluZTogQ3VydmVUaW1lbGluZTEsIGRlZmF1bHRWYWx1ZTogbnVtYmVyLCBzY2FsZTogbnVtYmVyKSB7XG5cdGxldCBrZXlNYXAgPSBrZXlzWzBdO1xuXHRsZXQgdGltZSA9IGdldFZhbHVlKGtleU1hcCwgXCJ0aW1lXCIsIDApO1xuXHRsZXQgdmFsdWUgPSBnZXRWYWx1ZShrZXlNYXAsIFwidmFsdWVcIiwgZGVmYXVsdFZhbHVlKSAqIHNjYWxlO1xuXHRsZXQgYmV6aWVyID0gMDtcblx0Zm9yIChsZXQgZnJhbWUgPSAwOyA7IGZyYW1lKyspIHtcblx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgdmFsdWUpO1xuXHRcdGxldCBuZXh0TWFwID0ga2V5c1tmcmFtZSArIDFdO1xuXHRcdGlmICghbmV4dE1hcCkge1xuXHRcdFx0dGltZWxpbmUuc2hyaW5rKGJlemllcik7XG5cdFx0XHRyZXR1cm4gdGltZWxpbmU7XG5cdFx0fVxuXHRcdGxldCB0aW1lMiA9IGdldFZhbHVlKG5leHRNYXAsIFwidGltZVwiLCAwKTtcblx0XHRsZXQgdmFsdWUyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJ2YWx1ZVwiLCBkZWZhdWx0VmFsdWUpICogc2NhbGU7XG5cdFx0aWYgKGtleU1hcC5jdXJ2ZSkgYmV6aWVyID0gcmVhZEN1cnZlKGtleU1hcC5jdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDAsIHRpbWUsIHRpbWUyLCB2YWx1ZSwgdmFsdWUyLCBzY2FsZSk7XG5cdFx0dGltZSA9IHRpbWUyO1xuXHRcdHZhbHVlID0gdmFsdWUyO1xuXHRcdGtleU1hcCA9IG5leHRNYXA7XG5cdH1cbn1cblxuZnVuY3Rpb24gcmVhZFRpbWVsaW5lMiAoa2V5czogYW55W10sIHRpbWVsaW5lOiBDdXJ2ZVRpbWVsaW5lMiwgbmFtZTE6IHN0cmluZywgbmFtZTI6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBudW1iZXIsIHNjYWxlOiBudW1iZXIpIHtcblx0bGV0IGtleU1hcCA9IGtleXNbMF07XG5cdGxldCB0aW1lID0gZ2V0VmFsdWUoa2V5TWFwLCBcInRpbWVcIiwgMCk7XG5cdGxldCB2YWx1ZTEgPSBnZXRWYWx1ZShrZXlNYXAsIG5hbWUxLCBkZWZhdWx0VmFsdWUpICogc2NhbGU7XG5cdGxldCB2YWx1ZTIgPSBnZXRWYWx1ZShrZXlNYXAsIG5hbWUyLCBkZWZhdWx0VmFsdWUpICogc2NhbGU7XG5cdGxldCBiZXppZXIgPSAwO1xuXHRmb3IgKGxldCBmcmFtZSA9IDA7IDsgZnJhbWUrKykge1xuXHRcdHRpbWVsaW5lLnNldEZyYW1lKGZyYW1lLCB0aW1lLCB2YWx1ZTEsIHZhbHVlMik7XG5cdFx0bGV0IG5leHRNYXAgPSBrZXlzW2ZyYW1lICsgMV07XG5cdFx0aWYgKCFuZXh0TWFwKSB7XG5cdFx0XHR0aW1lbGluZS5zaHJpbmsoYmV6aWVyKTtcblx0XHRcdHJldHVybiB0aW1lbGluZTtcblx0XHR9XG5cdFx0bGV0IHRpbWUyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdGxldCBudmFsdWUxID0gZ2V0VmFsdWUobmV4dE1hcCwgbmFtZTEsIGRlZmF1bHRWYWx1ZSkgKiBzY2FsZTtcblx0XHRsZXQgbnZhbHVlMiA9IGdldFZhbHVlKG5leHRNYXAsIG5hbWUyLCBkZWZhdWx0VmFsdWUpICogc2NhbGU7XG5cdFx0bGV0IGN1cnZlID0ga2V5TWFwLmN1cnZlO1xuXHRcdGlmIChjdXJ2ZSkge1xuXHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMCwgdGltZSwgdGltZTIsIHZhbHVlMSwgbnZhbHVlMSwgc2NhbGUpO1xuXHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMSwgdGltZSwgdGltZTIsIHZhbHVlMiwgbnZhbHVlMiwgc2NhbGUpO1xuXHRcdH1cblx0XHR0aW1lID0gdGltZTI7XG5cdFx0dmFsdWUxID0gbnZhbHVlMTtcblx0XHR2YWx1ZTIgPSBudmFsdWUyO1xuXHRcdGtleU1hcCA9IG5leHRNYXA7XG5cdH1cbn1cblxuZnVuY3Rpb24gcmVhZEN1cnZlIChjdXJ2ZTogYW55LCB0aW1lbGluZTogQ3VydmVUaW1lbGluZSwgYmV6aWVyOiBudW1iZXIsIGZyYW1lOiBudW1iZXIsIHZhbHVlOiBudW1iZXIsIHRpbWUxOiBudW1iZXIsIHRpbWUyOiBudW1iZXIsXG5cdHZhbHVlMTogbnVtYmVyLCB2YWx1ZTI6IG51bWJlciwgc2NhbGU6IG51bWJlcikge1xuXHRpZiAoY3VydmUgPT0gXCJzdGVwcGVkXCIpIHtcblx0XHR0aW1lbGluZS5zZXRTdGVwcGVkKGZyYW1lKTtcblx0XHRyZXR1cm4gYmV6aWVyO1xuXHR9XG5cdGxldCBpID0gdmFsdWUgPDwgMjtcblx0bGV0IGN4MSA9IGN1cnZlW2ldO1xuXHRsZXQgY3kxID0gY3VydmVbaSArIDFdICogc2NhbGU7XG5cdGxldCBjeDIgPSBjdXJ2ZVtpICsgMl07XG5cdGxldCBjeTIgPSBjdXJ2ZVtpICsgM10gKiBzY2FsZTtcblx0dGltZWxpbmUuc2V0QmV6aWVyKGJlemllciwgZnJhbWUsIHZhbHVlLCB0aW1lMSwgdmFsdWUxLCBjeDEsIGN5MSwgY3gyLCBjeTIsIHRpbWUyLCB2YWx1ZTIpO1xuXHRyZXR1cm4gYmV6aWVyICsgMTtcbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWUgKG1hcDogYW55LCBwcm9wZXJ0eTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IGFueSkge1xuXHRyZXR1cm4gbWFwW3Byb3BlcnR5XSAhPT0gdW5kZWZpbmVkID8gbWFwW3Byb3BlcnR5XSA6IGRlZmF1bHRWYWx1ZTtcbn1cbiJdfQ==
1136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25Kc29uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NrZWxldG9uSnNvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFFL0UsT0FBTyxFQUFFLFNBQVMsRUFBWSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsMkJBQTJCLEVBQUUsOEJBQThCLEVBQUUsNkJBQTZCLEVBQUUseUJBQXlCLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBaUQsOEJBQThCLEVBQUUsZ0NBQWdDLEVBQUUsaUNBQWlDLEVBQUUsZ0NBQWdDLEVBQUUsNkJBQTZCLEVBQUUsNkJBQTZCLEVBQUUsZ0NBQWdDLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUk3ekIsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDakMsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQW1CLE1BQU0sWUFBWSxDQUFDO0FBQzNELE9BQU8sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbkU7Ozs7cUJBSXFCO0FBQ3JCLE1BQU0sT0FBTyxZQUFZO0lBQ3hCLGdCQUFnQixDQUFtQjtJQUVuQzs7O3FIQUdpSDtJQUNqSCxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ0YsWUFBWSxHQUFHLElBQUksS0FBSyxFQUFjLENBQUM7SUFFL0MsWUFBYSxnQkFBa0M7UUFDOUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0lBQzFDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBRSxJQUFrQjtRQUNuQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3ZCLElBQUksWUFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdEMsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRWhFLFdBQVc7UUFDWCxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ2hDLElBQUksV0FBVyxFQUFFLENBQUM7WUFDakIsWUFBWSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ3JDLFlBQVksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUN6QyxZQUFZLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDL0IsWUFBWSxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQy9CLFlBQVksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUN2QyxZQUFZLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7WUFDekMsWUFBWSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUNuRixZQUFZLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUM7WUFDbkMsWUFBWSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQztZQUNyRCxZQUFZLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDO1FBQ3BELENBQUM7UUFFRCxRQUFRO1FBQ1IsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzVDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRTVCLElBQUksTUFBTSxHQUFvQixJQUFJLENBQUM7Z0JBQ25DLElBQUksVUFBVSxHQUFXLFFBQVEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUMzRCxJQUFJLFVBQVU7b0JBQUUsTUFBTSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQzNELElBQUksSUFBSSxHQUFHLElBQUksUUFBUSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ3pFLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUNyRCxJQUFJLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDM0MsSUFBSSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDaEYsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFFckQsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzdDLElBQUksS0FBSztvQkFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFM0MsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDL0IsQ0FBQztRQUNGLENBQUM7UUFFRCxTQUFTO1FBQ1QsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzVDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVCLElBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBRTVCLElBQUksUUFBUSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNuRCxJQUFJLENBQUMsUUFBUTtvQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixPQUFPLENBQUMsSUFBSSxhQUFhLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQzFGLElBQUksSUFBSSxHQUFHLElBQUksUUFBUSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFFdkUsSUFBSSxLQUFLLEdBQVcsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3JELElBQUksS0FBSztvQkFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFFM0MsSUFBSSxJQUFJLEdBQVcsUUFBUSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ25ELElBQUksSUFBSTtvQkFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRWxELElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzVELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDbEYsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDbEQsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDL0IsQ0FBQztRQUNGLENBQUM7UUFFRCxpQkFBaUI7UUFDakIsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDYixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDekMsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxJQUFJLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBRTNELEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO29CQUN4RCxJQUFJLElBQUksR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDMUQsSUFBSSxDQUFDLElBQUk7d0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsc0JBQXNCLGFBQWEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO29CQUNySCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkIsQ0FBQztnQkFFRCxJQUFJLE1BQU0sR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFBQSxDQUFDO2dCQUMxRCxJQUFJLENBQUMsTUFBTTtvQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixhQUFhLENBQUMsTUFBTSxzQkFBc0IsYUFBYSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7Z0JBQzNILElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO2dCQUVyQixJQUFJLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDL0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDM0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDekQsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFFekQsWUFBWSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkMsQ0FBQztRQUNGLENBQUM7UUFFRCx5QkFBeUI7UUFDekIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ2hELElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksSUFBSSxHQUFHLElBQUksdUJBQXVCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMzRCxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNqRCxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUUzRCxLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztvQkFDeEQsSUFBSSxRQUFRLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDdkMsSUFBSSxJQUFJLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDM0MsSUFBSSxDQUFDLElBQUk7d0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsUUFBUSw2QkFBNkIsYUFBYSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7b0JBQzdHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN2QixDQUFDO2dCQUVELElBQUksVUFBVSxHQUFXLGFBQWEsQ0FBQyxNQUFNLENBQUM7Z0JBQzlDLElBQUksTUFBTSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxNQUFNO29CQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLFVBQVUsNkJBQTZCLGFBQWEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO2dCQUN4SCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztnQkFFckIsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDckQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDM0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQ3ZELElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUN2RCxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUV6RCxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMvQyxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDekQsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3RFLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBRXpELFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUMsQ0FBQztRQUNGLENBQUM7UUFFRCxvQkFBb0I7UUFDcEIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDM0MsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDakMsSUFBSSxJQUFJLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBRTNELEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO29CQUN4RCxJQUFJLFFBQVEsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUN2QyxJQUFJLElBQUksR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUMzQyxJQUFJLENBQUMsSUFBSTt3QkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixRQUFRLHdCQUF3QixhQUFhLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztvQkFDeEcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZCLENBQUM7Z0JBRUQsSUFBSSxVQUFVLEdBQVcsYUFBYSxDQUFDLE1BQU0sQ0FBQztnQkFDOUMsSUFBSSxNQUFNLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLE1BQU07b0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsVUFBVSx3QkFBd0IsYUFBYSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7Z0JBQ25ILElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO2dCQUVyQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxhQUFhLEVBQUUsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RHLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDbEcsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUNoRyxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM3RCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN2RCxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksWUFBWSxDQUFDLEtBQUs7b0JBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7Z0JBQ3BFLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JELElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksV0FBVyxDQUFDLEtBQUs7b0JBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUM7Z0JBQzNHLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUV2RCxZQUFZLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QyxDQUFDO1FBQ0YsQ0FBQztRQUVELHVCQUF1QjtRQUN2QixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDOUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNELElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBRTNELE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUM7Z0JBQ3BDLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzdDLElBQUksSUFBSSxJQUFJLElBQUk7b0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsR0FBRyxRQUFRLENBQUMsQ0FBQztnQkFDekUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBRWpCLElBQUksQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUM1RCxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDckQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDekQsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDckQsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzFELElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3JFLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDdkUsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDckUsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDL0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDL0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxFQUFF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Q0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQ0FDM0YsTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dDQUMzRixNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0NBQzNGLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQ0FDN0YsTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dDQUM3RixNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7NEJBQzlGLENBQUM7NEJBQ0QsSUFBSSxHQUFHLEtBQUssQ0FBQzs0QkFDYixLQUFLLEdBQUcsUUFBUSxDQUFDOzRCQUNqQixNQUFNLEdBQUcsU0FBUyxDQUFD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d0JBQzdELFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzVELENBQUM7eUJBQU0sSUFBSSxZQUFZLEtBQUssUUFBUSxFQUFFLENBQUM7d0JBQ3RDLElBQUksUUFBUSxHQUFHLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7d0JBQzdELFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzVELENBQUM7eUJBQU0sSUFBSSxZQUFZLEtBQUssT0FBTyxFQUFFLENBQUM7d0JBQ3JDLElBQUksUUFBUSxHQUFHLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO3dCQUNqRSxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3RFLENBQUM7eUJBQU0sSUFBSSxZQUFZLEtBQUssUUFBUSxFQUFFLENBQUM7d0JBQ3RDLElBQUksUUFBUSxHQUFHLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7d0JBQzdELFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzVELENBQUM7eUJBQU0sSUFBSSxZQUFZLEtBQUssUUFBUSxFQUFFLENBQUM7d0JBQ3RDLElBQUksUUFBUSxHQUFHLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7d0JBQzdELFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcs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RUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDN0YsTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDbkYsTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDbkYsTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDN0YsTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDN0YsTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDOUYsQ0FBQztvQkFFRCxJQUFJLEdBQUcsS0FBSyxDQUFDO29CQUNiLFNBQVMsR0FBRyxVQUFVLENBQUM7b0JBQ3ZCLElBQUksR0FBRyxLQUFLLENBQUM7b0JBQ2IsSUFBSSxHQUFHLEtBQUssQ0FBQztvQkFDYixTQUFTLEdBQUcsVUFBVSxDQUFDO29CQUN2QixTQUFTLEdBQUcsVUFBVSxDQUFDO29CQUN2QixTQUFTLEdBQUcsVUFB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QUMsQ0FBQztJQUNuQixJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkIsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDL0IsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2QixJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUMvQixRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzRixPQUFPLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDbkIsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFFLEdBQVEsRUFBRSxRQUFnQixFQUFFLFlBQWlCO0lBQy9ELE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7QUFDbkUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgQW5pbWF0aW9uLCBUaW1lbGluZSwgSW5oZXJpdFRpbWVsaW5lLCBBdHRhY2htZW50VGltZWxpbmUsIFJHQkFUaW1lbGluZSwgUkdCVGltZWxpbmUsIEFscGhhVGltZWxpbmUsIFJHQkEyVGltZWxpbmUsIFJHQjJUaW1lbGluZSwgUm90YXRlVGltZWxpbmUsIFRyYW5zbGF0ZVRpbWVsaW5lLCBUcmFuc2xhdGVYVGltZWxpbmUsIFRyYW5zbGF0ZVlUaW1lbGluZSwgU2NhbGVUaW1lbGluZSwgU2NhbGVYVGltZWxpbmUsIFNjYWxlWVRpbWVsaW5lLCBTaGVhclRpbWVsaW5lLCBTaGVhclhUaW1lbGluZSwgU2hlYXJZVGltZWxpbmUsIElrQ29uc3RyYWludFRpbWVsaW5lLCBUcmFuc2Zvcm1Db25zdHJhaW50VGltZWxpbmUsIFBhdGhDb25zdHJhaW50UG9zaXRpb25UaW1lbGluZSwgUGF0aENvbnN0cmFpbnRTcGFjaW5nVGltZWxpbmUsIFBhdGhDb25zdHJhaW50TWl4VGltZWxpbmUsIERlZm9ybVRpbWVsaW5lLCBEcmF3T3JkZXJUaW1lbGluZSwgRXZlbnRUaW1lbGluZSwgQ3VydmVUaW1lbGluZTEsIEN1cnZlVGltZWxpbmUyLCBDdXJ2ZVRpbWVsaW5lLCBQaHlzaWNzQ29uc3RyYWludFJlc2V0VGltZWxpbmUsIFBoeXNpY3NDb25zdHJhaW50SW5lcnRpYVRpbWVsaW5lLCBQaHlzaWNzQ29uc3RyYWludFN0cmVuZ3RoVGltZWxpbmUsIFBoeXNpY3NDb25zdHJhaW50RGFtcGluZ1RpbWVsaW5lLCBQaHlzaWNzQ29uc3RyYWludE1hc3NUaW1lbGluZSwgUGh5c2ljc0NvbnN0cmFpbnRXaW5kVGltZWxpbmUsIFBoeXNpY3NDb25zdHJhaW50R3Jhdml0eVRpbWVsaW5lLCBQaHlzaWNzQ29uc3RyYWludE1peFRpbWVsaW5lIH0gZnJvbSBcIi4vQW5pbWF0aW9uLmpzXCI7XG5pbXBvcnQgeyBWZXJ0ZXhBdHRhY2htZW50LCBBdHRhY2htZW50IH0gZnJvbSBcIi4vYXR0YWNobWVudHMvQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHsgQXR0YWNobWVudExvYWRlciB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL0F0dGFjaG1lbnRMb2FkZXIuanNcIjtcbmltcG9ydCB7IE1lc2hBdHRhY2htZW50IH0gZnJvbSBcIi4vYXR0YWNobWVudHMvTWVzaEF0dGFjaG1lbnQuanNcIjtcbmltcG9ydCB7IEJvbmVEYXRhLCBJbmhlcml0IH0gZnJvbSBcIi4vQm9uZURhdGEuanNcIjtcbmltcG9ydCB7IEV2ZW50RGF0YSB9IGZyb20gXCIuL0V2ZW50RGF0YS5qc1wiO1xuaW1wb3J0IHsgRXZlbnQgfSBmcm9tIFwiLi9FdmVudC5qc1wiO1xuaW1wb3J0IHsgSWtDb25zdHJhaW50RGF0YSB9IGZyb20gXCIuL0lrQ29uc3RyYWludERhdGEuanNcIjtcbmltcG9ydCB7IFBhdGhDb25zdHJhaW50RGF0YSwgUG9zaXRpb25Nb2RlLCBTcGFjaW5nTW9kZSwgUm90YXRlTW9kZSB9IGZyb20gXCIuL1BhdGhDb25zdHJhaW50RGF0YS5qc1wiO1xuaW1wb3J0IHsgU2tlbGV0b25EYXRhIH0gZnJvbSBcIi4vU2tlbGV0b25EYXRhLmpzXCI7XG5pbXBvcnQgeyBTa2luIH0gZnJvbSBcIi4vU2tpbi5qc1wiO1xuaW1wb3J0IHsgU2xvdERhdGEsIEJsZW5kTW9kZSB9IGZyb20gXCIuL1Nsb3REYXRhLmpzXCI7XG5pbXBvcnQgeyBUcmFuc2Zvcm1Db25zdHJhaW50RGF0YSB9IGZyb20gXCIuL1RyYW5zZm9ybUNvbnN0cmFpbnREYXRhLmpzXCI7XG5pbXBvcnQgeyBVdGlscywgQ29sb3IsIE51bWJlckFycmF5TGlrZSB9IGZyb20gXCIuL1V0aWxzLmpzXCI7XG5pbXBvcnQgeyBTZXF1ZW5jZSwgU2VxdWVuY2VNb2RlIH0gZnJvbSBcIi4vYXR0YWNobWVudHMvU2VxdWVuY2UuanNcIjtcbmltcG9ydCB7IFNlcXVlbmNlVGltZWxpbmUgfSBmcm9tIFwiLi9BbmltYXRpb24uanNcIjtcbmltcG9ydCB7IEhhc1RleHR1cmVSZWdpb24gfSBmcm9tIFwiLi9hdHRhY2htZW50cy9IYXNUZXh0dXJlUmVnaW9uLmpzXCI7XG5pbXBvcnQgeyBQaHlzaWNzQ29uc3RyYWludERhdGEgfSBmcm9tIFwiLi9QaHlzaWNzQ29uc3RyYWludERhdGEuanNcIjtcblxuLyoqIExvYWRzIHNrZWxldG9uIGRhdGEgaW4gdGhlIFNwaW5lIEpTT04gZm9ybWF0LlxuICpcbiAqIFNlZSBbU3BpbmUgSlNPTiBmb3JtYXRdKGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1qc29uLWZvcm1hdCkgYW5kXG4gKiBbSlNPTiBhbmQgYmluYXJ5IGRhdGFdKGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1sb2FkaW5nLXNrZWxldG9uLWRhdGEjSlNPTi1hbmQtYmluYXJ5LWRhdGEpIGluIHRoZSBTcGluZVxuICogUnVudGltZXMgR3VpZGUuICovXG5leHBvcnQgY2xhc3MgU2tlbGV0b25Kc29uIHtcblx0YXR0YWNobWVudExvYWRlcjogQXR0YWNobWVudExvYWRlcjtcblxuXHQvKiogU2NhbGVzIGJvbmUgcG9zaXRpb25zLCBpbWFnZSBzaXplcywgYW5kIHRyYW5zbGF0aW9ucyBhcyB0aGV5IGFyZSBsb2FkZWQuIFRoaXMgYWxsb3dzIGRpZmZlcmVudCBzaXplIGltYWdlcyB0byBiZSB1c2VkIGF0XG5cdCAqIHJ1bnRpbWUgdGhhbiB3ZXJlIHVzZWQgaW4gU3BpbmUuXG5cdCAqXG5cdCAqIFNlZSBbU2NhbGluZ10oaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWxvYWRpbmctc2tlbGV0b24tZGF0YSNTY2FsaW5nKSBpbiB0aGUgU3BpbmUgUnVudGltZXMgR3VpZGUuICovXG5cdHNjYWxlID0gMTtcblx0cHJpdmF0ZSBsaW5rZWRNZXNoZXMgPSBuZXcgQXJyYXk8TGlua2VkTWVzaD4oKTtcblxuXHRjb25zdHJ1Y3RvciAoYXR0YWNobWVudExvYWRlcjogQXR0YWNobWVudExvYWRlcikge1xuXHRcdHRoaXMuYXR0YWNobWVudExvYWRlciA9IGF0dGFjaG1lbnRMb2FkZXI7XG5cdH1cblxuXHRyZWFkU2tlbGV0b25EYXRhIChqc29uOiBzdHJpbmcgfCBhbnkpOiBTa2VsZXRvbkRhdGEge1xuXHRcdGxldCBzY2FsZSA9IHRoaXMuc2NhbGU7XG5cdFx0bGV0IHNrZWxldG9uRGF0YSA9IG5ldyBTa2VsZXRvbkRhdGEoKTtcblx0XHRsZXQgcm9vdCA9IHR5cGVvZiAoanNvbikgPT09IFwic3RyaW5nXCIgPyBKU09OLnBhcnNlKGpzb24pIDoganNvbjtcblxuXHRcdC8vIFNrZWxldG9uXG5cdFx0bGV0IHNrZWxldG9uTWFwID0gcm9vdC5za2VsZXRvbjtcblx0XHRpZiAoc2tlbGV0b25NYXApIHtcblx0XHRcdHNrZWxldG9uRGF0YS5oYXNoID0gc2tlbGV0b25NYXAuaGFzaDtcblx0XHRcdHNrZWxldG9uRGF0YS52ZXJzaW9uID0gc2tlbGV0b25NYXAuc3BpbmU7XG5cdFx0XHRza2VsZXRvbkRhdGEueCA9IHNrZWxldG9uTWFwLng7XG5cdFx0XHRza2VsZXRvbkRhdGEueSA9IHNrZWxldG9uTWFwLnk7XG5cdFx0XHRza2VsZXRvbkRhdGEud2lkdGggPSBza2VsZXRvbk1hcC53aWR0aDtcblx0XHRcdHNrZWxldG9uRGF0YS5oZWlnaHQgPSBza2VsZXRvbk1hcC5oZWlnaHQ7XG5cdFx0XHRza2VsZXRvbkRhdGEucmVmZXJlbmNlU2NhbGUgPSBnZXRWYWx1ZShza2VsZXRvbk1hcCwgXCJyZWZlcmVuY2VTY2FsZVwiLCAxMDApICogc2NhbGU7XG5cdFx0XHRza2VsZXRvbkRhdGEuZnBzID0gc2tlbGV0b25NYXAuZnBzO1xuXHRcdFx0c2tlbGV0b25EYXRhLmltYWdlc1BhdGggPSBza2VsZXRvbk1hcC5pbWFnZXMgPz8gbnVsbDtcblx0XHRcdHNrZWxldG9uRGF0YS5hdWRpb1BhdGggPSBza2VsZXRvbk1hcC5hdWRpbyA/PyBudWxsO1xuXHRcdH1cblxuXHRcdC8vIEJvbmVzXG5cdFx0aWYgKHJvb3QuYm9uZXMpIHtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcm9vdC5ib25lcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRsZXQgYm9uZU1hcCA9IHJvb3QuYm9uZXNbaV07XG5cblx0XHRcdFx0bGV0IHBhcmVudDogQm9uZURhdGEgfCBudWxsID0gbnVsbDtcblx0XHRcdFx0bGV0IHBhcmVudE5hbWU6IHN0cmluZyA9IGdldFZhbHVlKGJvbmVNYXAsIFwicGFyZW50XCIsIG51bGwpO1xuXHRcdFx0XHRpZiAocGFyZW50TmFtZSkgcGFyZW50ID0gc2tlbGV0b25EYXRhLmZpbmRCb25lKHBhcmVudE5hbWUpO1xuXHRcdFx0XHRsZXQgZGF0YSA9IG5ldyBCb25lRGF0YShza2VsZXRvbkRhdGEuYm9uZXMubGVuZ3RoLCBib25lTWFwLm5hbWUsIHBhcmVudCk7XG5cdFx0XHRcdGRhdGEubGVuZ3RoID0gZ2V0VmFsdWUoYm9uZU1hcCwgXCJsZW5ndGhcIiwgMCkgKiBzY2FsZTtcblx0XHRcdFx0ZGF0YS54ID0gZ2V0VmFsdWUoYm9uZU1hcCwgXCJ4XCIsIDApICogc2NhbGU7XG5cdFx0XHRcdGRhdGEueSA9IGdldFZhbHVlKGJvbmVNYXAsIFwieVwiLCAwKSAqIHNjYWxlO1xuXHRcdFx0XHRkYXRhLnJvdGF0aW9uID0gZ2V0VmFsdWUoYm9uZU1hcCwgXCJyb3RhdGlvblwiLCAwKTtcblx0XHRcdFx0ZGF0YS5zY2FsZVggPSBnZXRWYWx1ZShib25lTWFwLCBcInNjYWxlWFwiLCAxKTtcblx0XHRcdFx0ZGF0YS5zY2FsZVkgPSBnZXRWYWx1ZShib25lTWFwLCBcInNjYWxlWVwiLCAxKTtcblx0XHRcdFx0ZGF0YS5zaGVhclggPSBnZXRWYWx1ZShib25lTWFwLCBcInNoZWFyWFwiLCAwKTtcblx0XHRcdFx0ZGF0YS5zaGVhclkgPSBnZXRWYWx1ZShib25lTWFwLCBcInNoZWFyWVwiLCAwKTtcblx0XHRcdFx0ZGF0YS5pbmhlcml0ID0gVXRpbHMuZW51bVZhbHVlKEluaGVyaXQsIGdldFZhbHVlKGJvbmVNYXAsIFwiaW5oZXJpdFwiLCBcIk5vcm1hbFwiKSk7XG5cdFx0XHRcdGRhdGEuc2tpblJlcXVpcmVkID0gZ2V0VmFsdWUoYm9uZU1hcCwgXCJza2luXCIsIGZhbHNlKTtcblxuXHRcdFx0XHRsZXQgY29sb3IgPSBnZXRWYWx1ZShib25lTWFwLCBcImNvbG9yXCIsIG51bGwpO1xuXHRcdFx0XHRpZiAoY29sb3IpIGRhdGEuY29sb3Iuc2V0RnJvbVN0cmluZyhjb2xvcik7XG5cblx0XHRcdFx0c2tlbGV0b25EYXRhLmJvbmVzLnB1c2goZGF0YSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gU2xvdHMuXG5cdFx0aWYgKHJvb3Quc2xvdHMpIHtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcm9vdC5zbG90cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRsZXQgc2xvdE1hcCA9IHJvb3Quc2xvdHNbaV07XG5cdFx0XHRcdGxldCBzbG90TmFtZSA9IHNsb3RNYXAubmFtZTtcblxuXHRcdFx0XHRsZXQgYm9uZURhdGEgPSBza2VsZXRvbkRhdGEuZmluZEJvbmUoc2xvdE1hcC5ib25lKTtcblx0XHRcdFx0aWYgKCFib25lRGF0YSkgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIGJvbmUgJHtzbG90TWFwLmJvbmV9IGZvciBzbG90ICR7c2xvdE5hbWV9YCk7XG5cdFx0XHRcdGxldCBkYXRhID0gbmV3IFNsb3REYXRhKHNrZWxldG9uRGF0YS5zbG90cy5sZW5ndGgsIHNsb3ROYW1lLCBib25lRGF0YSk7XG5cblx0XHRcdFx0bGV0IGNvbG9yOiBzdHJpbmcgPSBnZXRWYWx1ZShzbG90TWFwLCBcImNvbG9yXCIsIG51bGwpO1xuXHRcdFx0XHRpZiAoY29sb3IpIGRhdGEuY29sb3Iuc2V0RnJvbVN0cmluZyhjb2xvcik7XG5cblx0XHRcdFx0bGV0IGRhcms6IHN0cmluZyA9IGdldFZhbHVlKHNsb3RNYXAsIFwiZGFya1wiLCBudWxsKTtcblx0XHRcdFx0aWYgKGRhcmspIGRhdGEuZGFya0NvbG9yID0gQ29sb3IuZnJvbVN0cmluZyhkYXJrKTtcblxuXHRcdFx0XHRkYXRhLmF0dGFjaG1lbnROYW1lID0gZ2V0VmFsdWUoc2xvdE1hcCwgXCJhdHRhY2htZW50XCIsIG51bGwpO1xuXHRcdFx0XHRkYXRhLmJsZW5kTW9kZSA9IFV0aWxzLmVudW1WYWx1ZShCbGVuZE1vZGUsIGdldFZhbHVlKHNsb3RNYXAsIFwiYmxlbmRcIiwgXCJub3JtYWxcIikpO1xuXHRcdFx0XHRkYXRhLnZpc2libGUgPSBnZXRWYWx1ZShzbG90TWFwLCBcInZpc2libGVcIiwgdHJ1ZSk7XG5cdFx0XHRcdHNrZWxldG9uRGF0YS5zbG90cy5wdXNoKGRhdGEpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIElLIGNvbnN0cmFpbnRzXG5cdFx0aWYgKHJvb3QuaWspIHtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcm9vdC5pay5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRsZXQgY29uc3RyYWludE1hcCA9IHJvb3QuaWtbaV07XG5cdFx0XHRcdGxldCBkYXRhID0gbmV3IElrQ29uc3RyYWludERhdGEoY29uc3RyYWludE1hcC5uYW1lKTtcblx0XHRcdFx0ZGF0YS5vcmRlciA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwib3JkZXJcIiwgMCk7XG5cdFx0XHRcdGRhdGEuc2tpblJlcXVpcmVkID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJza2luXCIsIGZhbHNlKTtcblxuXHRcdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgY29uc3RyYWludE1hcC5ib25lcy5sZW5ndGg7IGlpKyspIHtcblx0XHRcdFx0XHRsZXQgYm9uZSA9IHNrZWxldG9uRGF0YS5maW5kQm9uZShjb25zdHJhaW50TWFwLmJvbmVzW2lpXSk7XG5cdFx0XHRcdFx0aWYgKCFib25lKSB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IGZpbmQgYm9uZSAke2NvbnN0cmFpbnRNYXAuYm9uZXNbaWldfSBmb3IgSUsgY29uc3RyYWludCAke2NvbnN0cmFpbnRNYXAubmFtZX0uYCk7XG5cdFx0XHRcdFx0ZGF0YS5ib25lcy5wdXNoKGJvbmUpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0bGV0IHRhcmdldCA9IHNrZWxldG9uRGF0YS5maW5kQm9uZShjb25zdHJhaW50TWFwLnRhcmdldCk7O1xuXHRcdFx0XHRpZiAoIXRhcmdldCkgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIHRhcmdldCBib25lICR7Y29uc3RyYWludE1hcC50YXJnZXR9IGZvciBJSyBjb25zdHJhaW50ICR7Y29uc3RyYWludE1hcC5uYW1lfS5gKTtcblx0XHRcdFx0ZGF0YS50YXJnZXQgPSB0YXJnZXQ7XG5cblx0XHRcdFx0ZGF0YS5taXggPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcIm1peFwiLCAxKTtcblx0XHRcdFx0ZGF0YS5zb2Z0bmVzcyA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwic29mdG5lc3NcIiwgMCkgKiBzY2FsZTtcblx0XHRcdFx0ZGF0YS5iZW5kRGlyZWN0aW9uID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJiZW5kUG9zaXRpdmVcIiwgdHJ1ZSkgPyAxIDogLTE7XG5cdFx0XHRcdGRhdGEuY29tcHJlc3MgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcImNvbXByZXNzXCIsIGZhbHNlKTtcblx0XHRcdFx0ZGF0YS5zdHJldGNoID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJzdHJldGNoXCIsIGZhbHNlKTtcblx0XHRcdFx0ZGF0YS51bmlmb3JtID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJ1bmlmb3JtXCIsIGZhbHNlKTtcblxuXHRcdFx0XHRza2VsZXRvbkRhdGEuaWtDb25zdHJhaW50cy5wdXNoKGRhdGEpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFRyYW5zZm9ybSBjb25zdHJhaW50cy5cblx0XHRpZiAocm9vdC50cmFuc2Zvcm0pIHtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcm9vdC50cmFuc2Zvcm0ubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0bGV0IGNvbnN0cmFpbnRNYXAgPSByb290LnRyYW5zZm9ybVtpXTtcblx0XHRcdFx0bGV0IGRhdGEgPSBuZXcgVHJhbnNmb3JtQ29uc3RyYWludERhdGEoY29uc3RyYWludE1hcC5uYW1lKTtcblx0XHRcdFx0ZGF0YS5vcmRlciA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwib3JkZXJcIiwgMCk7XG5cdFx0XHRcdGRhdGEuc2tpblJlcXVpcmVkID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJza2luXCIsIGZhbHNlKTtcblxuXHRcdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgY29uc3RyYWludE1hcC5ib25lcy5sZW5ndGg7IGlpKyspIHtcblx0XHRcdFx0XHRsZXQgYm9uZU5hbWUgPSBjb25zdHJhaW50TWFwLmJvbmVzW2lpXTtcblx0XHRcdFx0XHRsZXQgYm9uZSA9IHNrZWxldG9uRGF0YS5maW5kQm9uZShib25lTmFtZSk7XG5cdFx0XHRcdFx0aWYgKCFib25lKSB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IGZpbmQgYm9uZSAke2JvbmVOYW1lfSBmb3IgdHJhbnNmb3JtIGNvbnN0cmFpbnQgJHtjb25zdHJhaW50TWFwLm5hbWV9LmApO1xuXHRcdFx0XHRcdGRhdGEuYm9uZXMucHVzaChib25lKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGxldCB0YXJnZXROYW1lOiBzdHJpbmcgPSBjb25zdHJhaW50TWFwLnRhcmdldDtcblx0XHRcdFx0bGV0IHRhcmdldCA9IHNrZWxldG9uRGF0YS5maW5kQm9uZSh0YXJnZXROYW1lKTtcblx0XHRcdFx0aWYgKCF0YXJnZXQpIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCB0YXJnZXQgYm9uZSAke3RhcmdldE5hbWV9IGZvciB0cmFuc2Zvcm0gY29uc3RyYWludCAke2NvbnN0cmFpbnRNYXAubmFtZX0uYCk7XG5cdFx0XHRcdGRhdGEudGFyZ2V0ID0gdGFyZ2V0O1xuXG5cdFx0XHRcdGRhdGEubG9jYWwgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcImxvY2FsXCIsIGZhbHNlKTtcblx0XHRcdFx0ZGF0YS5yZWxhdGl2ZSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwicmVsYXRpdmVcIiwgZmFsc2UpO1xuXHRcdFx0XHRkYXRhLm9mZnNldFJvdGF0aW9uID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJyb3RhdGlvblwiLCAwKTtcblx0XHRcdFx0ZGF0YS5vZmZzZXRYID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJ4XCIsIDApICogc2NhbGU7XG5cdFx0XHRcdGRhdGEub2Zmc2V0WSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwieVwiLCAwKSAqIHNjYWxlO1xuXHRcdFx0XHRkYXRhLm9mZnNldFNjYWxlWCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwic2NhbGVYXCIsIDApO1xuXHRcdFx0XHRkYXRhLm9mZnNldFNjYWxlWSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwic2NhbGVZXCIsIDApO1xuXHRcdFx0XHRkYXRhLm9mZnNldFNoZWFyWSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwic2hlYXJZXCIsIDApO1xuXG5cdFx0XHRcdGRhdGEubWl4Um90YXRlID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJtaXhSb3RhdGVcIiwgMSk7XG5cdFx0XHRcdGRhdGEubWl4WCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwibWl4WFwiLCAxKTtcblx0XHRcdFx0ZGF0YS5taXhZID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJtaXhZXCIsIGRhdGEubWl4WCk7XG5cdFx0XHRcdGRhdGEubWl4U2NhbGVYID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJtaXhTY2FsZVhcIiwgMSk7XG5cdFx0XHRcdGRhdGEubWl4U2NhbGVZID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJtaXhTY2FsZVlcIiwgZGF0YS5taXhTY2FsZVgpO1xuXHRcdFx0XHRkYXRhLm1peFNoZWFyWSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwibWl4U2hlYXJZXCIsIDEpO1xuXG5cdFx0XHRcdHNrZWxldG9uRGF0YS50cmFuc2Zvcm1Db25zdHJhaW50cy5wdXNoKGRhdGEpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFBhdGggY29uc3RyYWludHMuXG5cdFx0aWYgKHJvb3QucGF0aCkge1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCByb290LnBhdGgubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0bGV0IGNvbnN0cmFpbnRNYXAgPSByb290LnBhdGhbaV07XG5cdFx0XHRcdGxldCBkYXRhID0gbmV3IFBhdGhDb25zdHJhaW50RGF0YShjb25zdHJhaW50TWFwLm5hbWUpO1xuXHRcdFx0XHRkYXRhLm9yZGVyID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJvcmRlclwiLCAwKTtcblx0XHRcdFx0ZGF0YS5za2luUmVxdWlyZWQgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInNraW5cIiwgZmFsc2UpO1xuXG5cdFx0XHRcdGZvciAobGV0IGlpID0gMDsgaWkgPCBjb25zdHJhaW50TWFwLmJvbmVzLmxlbmd0aDsgaWkrKykge1xuXHRcdFx0XHRcdGxldCBib25lTmFtZSA9IGNvbnN0cmFpbnRNYXAuYm9uZXNbaWldO1xuXHRcdFx0XHRcdGxldCBib25lID0gc2tlbGV0b25EYXRhLmZpbmRCb25lKGJvbmVOYW1lKTtcblx0XHRcdFx0XHRpZiAoIWJvbmUpIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBib25lICR7Ym9uZU5hbWV9IGZvciBwYXRoIGNvbnN0cmFpbnQgJHtjb25zdHJhaW50TWFwLm5hbWV9LmApO1xuXHRcdFx0XHRcdGRhdGEuYm9uZXMucHVzaChib25lKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGxldCB0YXJnZXROYW1lOiBzdHJpbmcgPSBjb25zdHJhaW50TWFwLnRhcmdldDtcblx0XHRcdFx0bGV0IHRhcmdldCA9IHNrZWxldG9uRGF0YS5maW5kU2xvdCh0YXJnZXROYW1lKTtcblx0XHRcdFx0aWYgKCF0YXJnZXQpIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCB0YXJnZXQgc2xvdCAke3RhcmdldE5hbWV9IGZvciBwYXRoIGNvbnN0cmFpbnQgJHtjb25zdHJhaW50TWFwLm5hbWV9LmApO1xuXHRcdFx0XHRkYXRhLnRhcmdldCA9IHRhcmdldDtcblxuXHRcdFx0XHRkYXRhLnBvc2l0aW9uTW9kZSA9IFV0aWxzLmVudW1WYWx1ZShQb3NpdGlvbk1vZGUsIGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwicG9zaXRpb25Nb2RlXCIsIFwiUGVyY2VudFwiKSk7XG5cdFx0XHRcdGRhdGEuc3BhY2luZ01vZGUgPSBVdGlscy5lbnVtVmFsdWUoU3BhY2luZ01vZGUsIGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwic3BhY2luZ01vZGVcIiwgXCJMZW5ndGhcIikpO1xuXHRcdFx0XHRkYXRhLnJvdGF0ZU1vZGUgPSBVdGlscy5lbnVtVmFsdWUoUm90YXRlTW9kZSwgZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJyb3RhdGVNb2RlXCIsIFwiVGFuZ2VudFwiKSk7XG5cdFx0XHRcdGRhdGEub2Zmc2V0Um90YXRpb24gPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInJvdGF0aW9uXCIsIDApO1xuXHRcdFx0XHRkYXRhLnBvc2l0aW9uID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJwb3NpdGlvblwiLCAwKTtcblx0XHRcdFx0aWYgKGRhdGEucG9zaXRpb25Nb2RlID09IFBvc2l0aW9uTW9kZS5GaXhlZCkgZGF0YS5wb3NpdGlvbiAqPSBzY2FsZTtcblx0XHRcdFx0ZGF0YS5zcGFjaW5nID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJzcGFjaW5nXCIsIDApO1xuXHRcdFx0XHRpZiAoZGF0YS5zcGFjaW5nTW9kZSA9PSBTcGFjaW5nTW9kZS5MZW5ndGggfHwgZGF0YS5zcGFjaW5nTW9kZSA9PSBTcGFjaW5nTW9kZS5GaXhlZCkgZGF0YS5zcGFjaW5nICo9IHNjYWxlO1xuXHRcdFx0XHRkYXRhLm1peFJvdGF0ZSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwibWl4Um90YXRlXCIsIDEpO1xuXHRcdFx0XHRkYXRhLm1peFggPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcIm1peFhcIiwgMSk7XG5cdFx0XHRcdGRhdGEubWl4WSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwibWl4WVwiLCBkYXRhLm1peFgpO1xuXG5cdFx0XHRcdHNrZWxldG9uRGF0YS5wYXRoQ29uc3RyYWludHMucHVzaChkYXRhKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBQaHlzaWNzIGNvbnN0cmFpbnRzLlxuXHRcdGlmIChyb290LnBoeXNpY3MpIHtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcm9vdC5waHlzaWNzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IGNvbnN0cmFpbnRNYXAgPSByb290LnBoeXNpY3NbaV07XG5cdFx0XHRcdGNvbnN0IGRhdGEgPSBuZXcgUGh5c2ljc0NvbnN0cmFpbnREYXRhKGNvbnN0cmFpbnRNYXAubmFtZSk7XG5cdFx0XHRcdGRhdGEub3JkZXIgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcIm9yZGVyXCIsIDApO1xuXHRcdFx0XHRkYXRhLnNraW5SZXF1aXJlZCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwic2tpblwiLCBmYWxzZSk7XG5cblx0XHRcdFx0Y29uc3QgYm9uZU5hbWUgPSBjb25zdHJhaW50TWFwLmJvbmU7XG5cdFx0XHRcdGNvbnN0IGJvbmUgPSBza2VsZXRvbkRhdGEuZmluZEJvbmUoYm9uZU5hbWUpO1xuXHRcdFx0XHRpZiAoYm9uZSA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJQaHlzaWNzIGJvbmUgbm90IGZvdW5kOiBcIiArIGJvbmVOYW1lKTtcblx0XHRcdFx0ZGF0YS5ib25lID0gYm9uZTtcblxuXHRcdFx0XHRkYXRhLnggPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInhcIiwgMCk7XG5cdFx0XHRcdGRhdGEueSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwieVwiLCAwKTtcblx0XHRcdFx0ZGF0YS5yb3RhdGUgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInJvdGF0ZVwiLCAwKTtcblx0XHRcdFx0ZGF0YS5zY2FsZVggPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInNjYWxlWFwiLCAwKTtcblx0XHRcdFx0ZGF0YS5zaGVhclggPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcInNoZWFyWFwiLCAwKTtcblx0XHRcdFx0ZGF0YS5saW1pdCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwibGltaXRcIiwgNTAwMCkgKiBzY2FsZTtcblx0XHRcdFx0ZGF0YS5zdGVwID0gMSAvIGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwiZnBzXCIsIDYwKTtcblx0XHRcdFx0ZGF0YS5pbmVydGlhID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJpbmVydGlhXCIsIDEpO1xuXHRcdFx0XHRkYXRhLnN0cmVuZ3RoID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJzdHJlbmd0aFwiLCAxMDApO1xuXHRcdFx0XHRkYXRhLmRhbXBpbmcgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcImRhbXBpbmdcIiwgMSk7XG5cdFx0XHRcdGRhdGEubWFzc0ludmVyc2UgPSAxIC8gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJtYXNzXCIsIDEpO1xuXHRcdFx0XHRkYXRhLndpbmQgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcIndpbmRcIiwgMCk7XG5cdFx0XHRcdGRhdGEuZ3Jhdml0eSA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwiZ3Jhdml0eVwiLCAwKTtcblx0XHRcdFx0ZGF0YS5taXggPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcIm1peFwiLCAxKTtcblx0XHRcdFx0ZGF0YS5pbmVydGlhR2xvYmFsID0gZ2V0VmFsdWUoY29uc3RyYWludE1hcCwgXCJpbmVydGlhR2xvYmFsXCIsIGZhbHNlKTtcblx0XHRcdFx0ZGF0YS5zdHJlbmd0aEdsb2JhbCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwic3RyZW5ndGhHbG9iYWxcIiwgZmFsc2UpO1xuXHRcdFx0XHRkYXRhLmRhbXBpbmdHbG9iYWwgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcImRhbXBpbmdHbG9iYWxcIiwgZmFsc2UpO1xuXHRcdFx0XHRkYXRhLm1hc3NHbG9iYWwgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcIm1hc3NHbG9iYWxcIiwgZmFsc2UpO1xuXHRcdFx0XHRkYXRhLndpbmRHbG9iYWwgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcIndpbmRHbG9iYWxcIiwgZmFsc2UpO1xuXHRcdFx0XHRkYXRhLmdyYXZpdHlHbG9iYWwgPSBnZXRWYWx1ZShjb25zdHJhaW50TWFwLCBcImdyYXZpdHlHbG9iYWxcIiwgZmFsc2UpO1xuXHRcdFx0XHRkYXRhLm1peEdsb2JhbCA9IGdldFZhbHVlKGNvbnN0cmFpbnRNYXAsIFwibWl4R2xvYmFsXCIsIGZhbHNlKTtcblxuXHRcdFx0XHRza2VsZXRvbkRhdGEucGh5c2ljc0NvbnN0cmFpbnRzLnB1c2goZGF0YSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gU2tpbnMuXG5cdFx0aWYgKHJvb3Quc2tpbnMpIHtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcm9vdC5za2lucy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRsZXQgc2tpbk1hcCA9IHJvb3Quc2tpbnNbaV1cblx0XHRcdFx0bGV0IHNraW4gPSBuZXcgU2tpbihza2luTWFwLm5hbWUpO1xuXG5cdFx0XHRcdGlmIChza2luTWFwLmJvbmVzKSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IHNraW5NYXAuYm9uZXMubGVuZ3RoOyBpaSsrKSB7XG5cdFx0XHRcdFx0XHRsZXQgYm9uZU5hbWUgPSBza2luTWFwLmJvbmVzW2lpXTtcblx0XHRcdFx0XHRcdGxldCBib25lID0gc2tlbGV0b25EYXRhLmZpbmRCb25lKGJvbmVOYW1lKTtcblx0XHRcdFx0XHRcdGlmICghYm9uZSkgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIGJvbmUgJHtib25lTmFtZX0gZm9yIHNraW4gJHtza2luTWFwLm5hbWV9LmApO1xuXHRcdFx0XHRcdFx0c2tpbi5ib25lcy5wdXNoKGJvbmUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChza2luTWFwLmlrKSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IHNraW5NYXAuaWsubGVuZ3RoOyBpaSsrKSB7XG5cdFx0XHRcdFx0XHRsZXQgY29uc3RyYWludE5hbWUgPSBza2luTWFwLmlrW2lpXTtcblx0XHRcdFx0XHRcdGxldCBjb25zdHJhaW50ID0gc2tlbGV0b25EYXRhLmZpbmRJa0NvbnN0cmFpbnQoY29uc3RyYWludE5hbWUpO1xuXHRcdFx0XHRcdFx0aWYgKCFjb25zdHJhaW50KSB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IGZpbmQgSUsgY29uc3RyYWludCAke2NvbnN0cmFpbnROYW1lfSBmb3Igc2tpbiAke3NraW5NYXAubmFtZX0uYCk7XG5cdFx0XHRcdFx0XHRza2luLmNvbnN0cmFpbnRzLnB1c2goY29uc3RyYWludCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHNraW5NYXAudHJhbnNmb3JtKSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IHNraW5NYXAudHJhbnNmb3JtLmxlbmd0aDsgaWkrKykge1xuXHRcdFx0XHRcdFx0bGV0IGNvbnN0cmFpbnROYW1lID0gc2tpbk1hcC50cmFuc2Zvcm1baWldO1xuXHRcdFx0XHRcdFx0bGV0IGNvbnN0cmFpbnQgPSBza2VsZXRvbkRhdGEuZmluZFRyYW5zZm9ybUNvbnN0cmFpbnQoY29uc3RyYWludE5hbWUpO1xuXHRcdFx0XHRcdFx0aWYgKCFjb25zdHJhaW50KSB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IGZpbmQgdHJhbnNmb3JtIGNvbnN0cmFpbnQgJHtjb25zdHJhaW50TmFtZX0gZm9yIHNraW4gJHtza2luTWFwLm5hbWV9LmApO1xuXHRcdFx0XHRcdFx0c2tpbi5jb25zdHJhaW50cy5wdXNoKGNvbnN0cmFpbnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChza2luTWFwLnBhdGgpIHtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgc2tpbk1hcC5wYXRoLmxlbmd0aDsgaWkrKykge1xuXHRcdFx0XHRcdFx0bGV0IGNvbnN0cmFpbnROYW1lID0gc2tpbk1hcC5wYXRoW2lpXTtcblx0XHRcdFx0XHRcdGxldCBjb25zdHJhaW50ID0gc2tlbGV0b25EYXRhLmZpbmRQYXRoQ29uc3RyYWludChjb25zdHJhaW50TmFtZSk7XG5cdFx0XHRcdFx0XHRpZiAoIWNvbnN0cmFpbnQpIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBwYXRoIGNvbnN0cmFpbnQgJHtjb25zdHJhaW50TmFtZX0gZm9yIHNraW4gJHtza2luTWFwLm5hbWV9LmApO1xuXHRcdFx0XHRcdFx0c2tpbi5jb25zdHJhaW50cy5wdXNoKGNvbnN0cmFpbnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChza2luTWFwLnBoeXNpY3MpIHtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgc2tpbk1hcC5waHlzaWNzLmxlbmd0aDsgaWkrKykge1xuXHRcdFx0XHRcdFx0bGV0IGNvbnN0cmFpbnROYW1lID0gc2tpbk1hcC5waHlzaWNzW2lpXTtcblx0XHRcdFx0XHRcdGxldCBjb25zdHJhaW50ID0gc2tlbGV0b25EYXRhLmZpbmRQaHlzaWNzQ29uc3RyYWludChjb25zdHJhaW50TmFtZSk7XG5cdFx0XHRcdFx0XHRpZiAoIWNvbnN0cmFpbnQpIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBwaHlzaWNzIGNvbnN0cmFpbnQgJHtjb25zdHJhaW50TmFtZX0gZm9yIHNraW4gJHtza2luTWFwLm5hbWV9LmApO1xuXHRcdFx0XHRcdFx0c2tpbi5jb25zdHJhaW50cy5wdXNoKGNvbnN0cmFpbnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGZvciAobGV0IHNsb3ROYW1lIGluIHNraW5NYXAuYXR0YWNobWVudHMpIHtcblx0XHRcdFx0XHRsZXQgc2xvdCA9IHNrZWxldG9uRGF0YS5maW5kU2xvdChzbG90TmFtZSk7XG5cdFx0XHRcdFx0aWYgKCFzbG90KSB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IGZpbmQgc2xvdCAke3Nsb3ROYW1lfSBmb3Igc2tpbiAke3NraW5NYXAubmFtZX0uYCk7XG5cdFx0XHRcdFx0bGV0IHNsb3RNYXAgPSBza2luTWFwLmF0dGFjaG1lbnRzW3Nsb3ROYW1lXTtcblx0XHRcdFx0XHRmb3IgKGxldCBlbnRyeU5hbWUgaW4gc2xvdE1hcCkge1xuXHRcdFx0XHRcdFx0bGV0IGF0dGFjaG1lbnQgPSB0aGlzLnJlYWRBdHRhY2htZW50KHNsb3RNYXBbZW50cnlOYW1lXSwgc2tpbiwgc2xvdC5pbmRleCwgZW50cnlOYW1lLCBza2VsZXRvbkRhdGEpO1xuXHRcdFx0XHRcdFx0aWYgKGF0dGFjaG1lbnQpIHNraW4uc2V0QXR0YWNobWVudChzbG90LmluZGV4LCBlbnRyeU5hbWUsIGF0dGFjaG1lbnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRza2VsZXRvbkRhdGEuc2tpbnMucHVzaChza2luKTtcblx0XHRcdFx0aWYgKHNraW4ubmFtZSA9PSBcImRlZmF1bHRcIikgc2tlbGV0b25EYXRhLmRlZmF1bHRTa2luID0gc2tpbjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBMaW5rZWQgbWVzaGVzLlxuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gdGhpcy5saW5rZWRNZXNoZXMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRsZXQgbGlua2VkTWVzaCA9IHRoaXMubGlua2VkTWVzaGVzW2ldO1xuXHRcdFx0bGV0IHNraW4gPSAhbGlua2VkTWVzaC5za2luID8gc2tlbGV0b25EYXRhLmRlZmF1bHRTa2luIDogc2tlbGV0b25EYXRhLmZpbmRTa2luKGxpbmtlZE1lc2guc2tpbik7XG5cdFx0XHRpZiAoIXNraW4pIHRocm93IG5ldyBFcnJvcihgU2tpbiBub3QgZm91bmQ6ICR7bGlua2VkTWVzaC5za2lufWApO1xuXHRcdFx0bGV0IHBhcmVudCA9IHNraW4uZ2V0QXR0YWNobWVudChsaW5rZWRNZXNoLnNsb3RJbmRleCwgbGlua2VkTWVzaC5wYXJlbnQpO1xuXHRcdFx0aWYgKCFwYXJlbnQpIHRocm93IG5ldyBFcnJvcihgUGFyZW50IG1lc2ggbm90IGZvdW5kOiAke2xpbmtlZE1lc2gucGFyZW50fWApO1xuXHRcdFx0bGlua2VkTWVzaC5tZXNoLnRpbWVsaW5lQXR0YWNobWVudCA9IGxpbmtlZE1lc2guaW5oZXJpdFRpbWVsaW5lID8gPFZlcnRleEF0dGFjaG1lbnQ+cGFyZW50IDogPFZlcnRleEF0dGFjaG1lbnQ+bGlua2VkTWVzaC5tZXNoO1xuXHRcdFx0bGlua2VkTWVzaC5tZXNoLnNldFBhcmVudE1lc2goPE1lc2hBdHRhY2htZW50PnBhcmVudCk7XG5cdFx0XHRpZiAobGlua2VkTWVzaC5tZXNoLnJlZ2lvbiAhPSBudWxsKSBsaW5rZWRNZXNoLm1lc2gudXBkYXRlUmVnaW9uKCk7XG5cdFx0fVxuXHRcdHRoaXMubGlua2VkTWVzaGVzLmxlbmd0aCA9IDA7XG5cblx0XHQvLyBFdmVudHMuXG5cdFx0aWYgKHJvb3QuZXZlbnRzKSB7XG5cdFx0XHRmb3IgKGxldCBldmVudE5hbWUgaW4gcm9vdC5ldmVudHMpIHtcblx0XHRcdFx0bGV0IGV2ZW50TWFwID0gcm9vdC5ldmVudHNbZXZlbnROYW1lXTtcblx0XHRcdFx0bGV0IGRhdGEgPSBuZXcgRXZlbnREYXRhKGV2ZW50TmFtZSk7XG5cdFx0XHRcdGRhdGEuaW50VmFsdWUgPSBnZXRWYWx1ZShldmVudE1hcCwgXCJpbnRcIiwgMCk7XG5cdFx0XHRcdGRhdGEuZmxvYXRWYWx1ZSA9IGdldFZhbHVlKGV2ZW50TWFwLCBcImZsb2F0XCIsIDApO1xuXHRcdFx0XHRkYXRhLnN0cmluZ1ZhbHVlID0gZ2V0VmFsdWUoZXZlbnRNYXAsIFwic3RyaW5nXCIsIFwiXCIpO1xuXHRcdFx0XHRkYXRhLmF1ZGlvUGF0aCA9IGdldFZhbHVlKGV2ZW50TWFwLCBcImF1ZGlvXCIsIG51bGwpO1xuXHRcdFx0XHRpZiAoZGF0YS5hdWRpb1BhdGgpIHtcblx0XHRcdFx0XHRkYXRhLnZvbHVtZSA9IGdldFZhbHVlKGV2ZW50TWFwLCBcInZvbHVtZVwiLCAxKTtcblx0XHRcdFx0XHRkYXRhLmJhbGFuY2UgPSBnZXRWYWx1ZShldmVudE1hcCwgXCJiYWxhbmNlXCIsIDApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHNrZWxldG9uRGF0YS5ldmVudHMucHVzaChkYXRhKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBBbmltYXRpb25zLlxuXHRcdGlmIChyb290LmFuaW1hdGlvbnMpIHtcblx0XHRcdGZvciAobGV0IGFuaW1hdGlvbk5hbWUgaW4gcm9vdC5hbmltYXRpb25zKSB7XG5cdFx0XHRcdGxldCBhbmltYXRpb25NYXAgPSByb290LmFuaW1hdGlvbnNbYW5pbWF0aW9uTmFtZV07XG5cdFx0XHRcdHRoaXMucmVhZEFuaW1hdGlvbihhbmltYXRpb25NYXAsIGFuaW1hdGlvbk5hbWUsIHNrZWxldG9uRGF0YSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHNrZWxldG9uRGF0YTtcblx0fVxuXG5cdHJlYWRBdHRhY2htZW50IChtYXA6IGFueSwgc2tpbjogU2tpbiwgc2xvdEluZGV4OiBudW1iZXIsIG5hbWU6IHN0cmluZywgc2tlbGV0b25EYXRhOiBTa2VsZXRvbkRhdGEpOiBBdHRhY2htZW50IHwgbnVsbCB7XG5cdFx0bGV0IHNjYWxlID0gdGhpcy5zY2FsZTtcblx0XHRuYW1lID0gZ2V0VmFsdWUobWFwLCBcIm5hbWVcIiwgbmFtZSk7XG5cblx0XHRzd2l0Y2ggKGdldFZhbHVlKG1hcCwgXCJ0eXBlXCIsIFwicmVnaW9uXCIpKSB7XG5cdFx0XHRjYXNlIFwicmVnaW9uXCI6IHtcblx0XHRcdFx0bGV0IHBhdGggPSBnZXRWYWx1ZShtYXAsIFwicGF0aFwiLCBuYW1lKTtcblx0XHRcdFx0bGV0IHNlcXVlbmNlID0gdGhpcy5yZWFkU2VxdWVuY2UoZ2V0VmFsdWUobWFwLCBcInNlcXVlbmNlXCIsIG51bGwpKTtcblx0XHRcdFx0bGV0IHJlZ2lvbiA9IHRoaXMuYXR0YWNobWVudExvYWRlci5uZXdSZWdpb25BdHRhY2htZW50KHNraW4sIG5hbWUsIHBhdGgsIHNlcXVlbmNlKTtcblx0XHRcdFx0aWYgKCFyZWdpb24pIHJldHVybiBudWxsO1xuXHRcdFx0XHRyZWdpb24ucGF0aCA9IHBhdGg7XG5cdFx0XHRcdHJlZ2lvbi54ID0gZ2V0VmFsdWUobWFwLCBcInhcIiwgMCkgKiBzY2FsZTtcblx0XHRcdFx0cmVnaW9uLnkgPSBnZXRWYWx1ZShtYXAsIFwieVwiLCAwKSAqIHNjYWxlO1xuXHRcdFx0XHRyZWdpb24uc2NhbGVYID0gZ2V0VmFsdWUobWFwLCBcInNjYWxlWFwiLCAxKTtcblx0XHRcdFx0cmVnaW9uLnNjYWxlWSA9IGdldFZhbHVlKG1hcCwgXCJzY2FsZVlcIiwgMSk7XG5cdFx0XHRcdHJlZ2lvbi5yb3RhdGlvbiA9IGdldFZhbHVlKG1hcCwgXCJyb3RhdGlvblwiLCAwKTtcblx0XHRcdFx0cmVnaW9uLndpZHRoID0gbWFwLndpZHRoICogc2NhbGU7XG5cdFx0XHRcdHJlZ2lvbi5oZWlnaHQgPSBtYXAuaGVpZ2h0ICogc2NhbGU7XG5cdFx0XHRcdHJlZ2lvbi5zZXF1ZW5jZSA9IHNlcXVlbmNlO1xuXG5cdFx0XHRcdGxldCBjb2xvcjogc3RyaW5nID0gZ2V0VmFsdWUobWFwLCBcImNvbG9yXCIsIG51bGwpO1xuXHRcdFx0XHRpZiAoY29sb3IpIHJlZ2lvbi5jb2xvci5zZXRGcm9tU3RyaW5nKGNvbG9yKTtcblxuXHRcdFx0XHRpZiAocmVnaW9uLnJlZ2lvbiAhPSBudWxsKSByZWdpb24udXBkYXRlUmVnaW9uKCk7XG5cdFx0XHRcdHJldHVybiByZWdpb247XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwiYm91bmRpbmdib3hcIjoge1xuXHRcdFx0XHRsZXQgYm94ID0gdGhpcy5hdHRhY2htZW50TG9hZGVyLm5ld0JvdW5kaW5nQm94QXR0YWNobWVudChza2luLCBuYW1lKTtcblx0XHRcdFx0aWYgKCFib3gpIHJldHVybiBudWxsO1xuXHRcdFx0XHR0aGlzLnJlYWRWZXJ0aWNlcyhtYXAsIGJveCwgbWFwLnZlcnRleENvdW50IDw8IDEpO1xuXHRcdFx0XHRsZXQgY29sb3I6IHN0cmluZyA9IGdldFZhbHVlKG1hcCwgXCJjb2xvclwiLCBudWxsKTtcblx0XHRcdFx0aWYgKGNvbG9yKSBib3guY29sb3Iuc2V0RnJvbVN0cmluZyhjb2xvcik7XG5cdFx0XHRcdHJldHVybiBib3g7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwibWVzaFwiOlxuXHRcdFx0Y2FzZSBcImxpbmtlZG1lc2hcIjoge1xuXHRcdFx0XHRsZXQgcGF0aCA9IGdldFZhbHVlKG1hcCwgXCJwYXRoXCIsIG5hbWUpO1xuXHRcdFx0XHRsZXQgc2VxdWVuY2UgPSB0aGlzLnJlYWRTZXF1ZW5jZShnZXRWYWx1ZShtYXAsIFwic2VxdWVuY2VcIiwgbnVsbCkpO1xuXHRcdFx0XHRsZXQgbWVzaCA9IHRoaXMuYXR0YWNobWVudExvYWRlci5uZXdNZXNoQXR0YWNobWVudChza2luLCBuYW1lLCBwYXRoLCBzZXF1ZW5jZSk7XG5cdFx0XHRcdGlmICghbWVzaCkgcmV0dXJuIG51bGw7XG5cdFx0XHRcdG1lc2gucGF0aCA9IHBhdGg7XG5cblx0XHRcdFx0bGV0IGNvbG9yID0gZ2V0VmFsdWUobWFwLCBcImNvbG9yXCIsIG51bGwpO1xuXHRcdFx0XHRpZiAoY29sb3IpIG1lc2guY29sb3Iuc2V0RnJvbVN0cmluZyhjb2xvcik7XG5cblx0XHRcdFx0bWVzaC53aWR0aCA9IGdldFZhbHVlKG1hcCwgXCJ3aWR0aFwiLCAwKSAqIHNjYWxlO1xuXHRcdFx0XHRtZXNoLmhlaWdodCA9IGdldFZhbHVlKG1hcCwgXCJoZWlnaHRcIiwgMCkgKiBzY2FsZTtcblx0XHRcdFx0bWVzaC5zZXF1ZW5jZSA9IHNlcXVlbmNlO1xuXG5cdFx0XHRcdGxldCBwYXJlbnQ6IHN0cmluZyA9IGdldFZhbHVlKG1hcCwgXCJwYXJlbnRcIiwgbnVsbCk7XG5cdFx0XHRcdGlmIChwYXJlbnQpIHtcblx0XHRcdFx0XHR0aGlzLmxpbmtlZE1lc2hlcy5wdXNoKG5ldyBMaW5rZWRNZXNoKG1lc2gsIDxzdHJpbmc+Z2V0VmFsdWUobWFwLCBcInNraW5cIiwgbnVsbCksIHNsb3RJbmRleCwgcGFyZW50LCBnZXRWYWx1ZShtYXAsIFwidGltZWxpbmVzXCIsIHRydWUpKSk7XG5cdFx0XHRcdFx0cmV0dXJuIG1lc2g7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRsZXQgdXZzOiBBcnJheTxudW1iZXI+ID0gbWFwLnV2cztcblx0XHRcdFx0dGhpcy5yZWFkVmVydGljZXMobWFwLCBtZXNoLCB1dnMubGVuZ3RoKTtcblx0XHRcdFx0bWVzaC50cmlhbmdsZXMgPSBtYXAudHJpYW5nbGVzO1xuXHRcdFx0XHRtZXNoLnJlZ2lvblVWcyA9IHV2cztcblx0XHRcdFx0aWYgKG1lc2gucmVnaW9uICE9IG51bGwpIG1lc2gudXBkYXRlUmVnaW9uKCk7XG5cblx0XHRcdFx0bWVzaC5lZGdlcyA9IGdldFZhbHVlKG1hcCwgXCJlZGdlc1wiLCBudWxsKTtcblx0XHRcdFx0bWVzaC5odWxsTGVuZ3RoID0gZ2V0VmFsdWUobWFwLCBcImh1bGxcIiwgMCkgKiAyO1xuXHRcdFx0XHRyZXR1cm4gbWVzaDtcblx0XHRcdH1cblx0XHRcdGNhc2UgXCJwYXRoXCI6IHtcblx0XHRcdFx0bGV0IHBhdGggPSB0aGlzLmF0dGFjaG1lbnRMb2FkZXIubmV3UGF0aEF0dGFjaG1lbnQoc2tpbiwgbmFtZSk7XG5cdFx0XHRcdGlmICghcGF0aCkgcmV0dXJuIG51bGw7XG5cdFx0XHRcdHBhdGguY2xvc2VkID0gZ2V0VmFsdWUobWFwLCBcImNsb3NlZFwiLCBmYWxzZSk7XG5cdFx0XHRcdHBhdGguY29uc3RhbnRTcGVlZCA9IGdldFZhbHVlKG1hcCwgXCJjb25zdGFudFNwZWVkXCIsIHRydWUpO1xuXG5cdFx0XHRcdGxldCB2ZXJ0ZXhDb3VudCA9IG1hcC52ZXJ0ZXhDb3VudDtcblx0XHRcdFx0dGhpcy5yZWFkVmVydGljZXMobWFwLCBwYXRoLCB2ZXJ0ZXhDb3VudCA8PCAxKTtcblxuXHRcdFx0XHRsZXQgbGVuZ3RoczogQXJyYXk8bnVtYmVyPiA9IFV0aWxzLm5ld0FycmF5KHZlcnRleENvdW50IC8gMywgMCk7XG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbWFwLmxlbmd0aHMubGVuZ3RoOyBpKyspXG5cdFx0XHRcdFx0bGVuZ3Roc1tpXSA9IG1hcC5sZW5ndGhzW2ldICogc2NhbGU7XG5cdFx0XHRcdHBhdGgubGVuZ3RocyA9IGxlbmd0aHM7XG5cblx0XHRcdFx0bGV0IGNvbG9yOiBzdHJpbmcgPSBnZXRWYWx1ZShtYXAsIFwiY29sb3JcIiwgbnVsbCk7XG5cdFx0XHRcdGlmIChjb2xvcikgcGF0aC5jb2xvci5zZXRGcm9tU3RyaW5nKGNvbG9yKTtcblx0XHRcdFx0cmV0dXJuIHBhdGg7XG5cdFx0XHR9XG5cdFx0XHRjYXNlIFwicG9pbnRcIjoge1xuXHRcdFx0XHRsZXQgcG9pbnQgPSB0aGlzLmF0dGFjaG1lbnRMb2FkZXIubmV3UG9pbnRBdHRhY2htZW50KHNraW4sIG5hbWUpO1xuXHRcdFx0XHRpZiAoIXBvaW50KSByZXR1cm4gbnVsbDtcblx0XHRcdFx0cG9pbnQueCA9IGdldFZhbHVlKG1hcCwgXCJ4XCIsIDApICogc2NhbGU7XG5cdFx0XHRcdHBvaW50LnkgPSBnZXRWYWx1ZShtYXAsIFwieVwiLCAwKSAqIHNjYWxlO1xuXHRcdFx0XHRwb2ludC5yb3RhdGlvbiA9IGdldFZhbHVlKG1hcCwgXCJyb3RhdGlvblwiLCAwKTtcblxuXHRcdFx0XHRsZXQgY29sb3IgPSBnZXRWYWx1ZShtYXAsIFwiY29sb3JcIiwgbnVsbCk7XG5cdFx0XHRcdGlmIChjb2xvcikgcG9pbnQuY29sb3Iuc2V0RnJvbVN0cmluZyhjb2xvcik7XG5cdFx0XHRcdHJldHVybiBwb2ludDtcblx0XHRcdH1cblx0XHRcdGNhc2UgXCJjbGlwcGluZ1wiOiB7XG5cdFx0XHRcdGxldCBjbGlwID0gdGhpcy5hdHRhY2htZW50TG9hZGVyLm5ld0NsaXBwaW5nQXR0YWNobWVudChza2luLCBuYW1lKTtcblx0XHRcdFx0aWYgKCFjbGlwKSByZXR1cm4gbnVsbDtcblxuXHRcdFx0XHRsZXQgZW5kID0gZ2V0VmFsdWUobWFwLCBcImVuZFwiLCBudWxsKTtcblx0XHRcdFx0aWYgKGVuZCkgY2xpcC5lbmRTbG90ID0gc2tlbGV0b25EYXRhLmZpbmRTbG90KGVuZCk7XG5cblx0XHRcdFx0bGV0IHZlcnRleENvdW50ID0gbWFwLnZlcnRleENvdW50O1xuXHRcdFx0XHR0aGlzLnJlYWRWZXJ0aWNlcyhtYXAsIGNsaXAsIHZlcnRleENvdW50IDw8IDEpO1xuXG5cdFx0XHRcdGxldCBjb2xvcjogc3RyaW5nID0gZ2V0VmFsdWUobWFwLCBcImNvbG9yXCIsIG51bGwpO1xuXHRcdFx0XHRpZiAoY29sb3IpIGNsaXAuY29sb3Iuc2V0RnJvbVN0cmluZyhjb2xvcik7XG5cdFx0XHRcdHJldHVybiBjbGlwO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdHJlYWRTZXF1ZW5jZSAobWFwOiBhbnkpIHtcblx0XHRpZiAobWFwID09IG51bGwpIHJldHVybiBudWxsO1xuXHRcdGxldCBzZXF1ZW5jZSA9IG5ldyBTZXF1ZW5jZShnZXRWYWx1ZShtYXAsIFwiY291bnRcIiwgMCkpO1xuXHRcdHNlcXVlbmNlLnN0YXJ0ID0gZ2V0VmFsdWUobWFwLCBcInN0YXJ0XCIsIDEpO1xuXHRcdHNlcXVlbmNlLmRpZ2l0cyA9IGdldFZhbHVlKG1hcCwgXCJkaWdpdHNcIiwgMCk7XG5cdFx0c2VxdWVuY2Uuc2V0dXBJbmRleCA9IGdldFZhbHVlKG1hcCwgXCJzZXR1cFwiLCAwKTtcblx0XHRyZXR1cm4gc2VxdWVuY2U7XG5cdH1cblxuXHRyZWFkVmVydGljZXMgKG1hcDogYW55LCBhdHRhY2htZW50OiBWZXJ0ZXhBdHRhY2htZW50LCB2ZXJ0aWNlc0xlbmd0aDogbnVtYmVyKSB7XG5cdFx0bGV0IHNjYWxlID0gdGhpcy5zY2FsZTtcblx0XHRhdHRhY2htZW50LndvcmxkVmVydGljZXNMZW5ndGggPSB2ZXJ0aWNlc0xlbmd0aDtcblx0XHRsZXQgdmVydGljZXM6IEFycmF5PG51bWJlcj4gPSBtYXAudmVydGljZXM7XG5cdFx0aWYgKHZlcnRpY2VzTGVuZ3RoID09IHZlcnRpY2VzLmxlbmd0aCkge1xuXHRcdFx0bGV0IHNjYWxlZFZlcnRpY2VzID0gVXRpbHMudG9GbG9hdEFycmF5KHZlcnRpY2VzKTtcblx0XHRcdGlmIChzY2FsZSAhPSAxKSB7XG5cdFx0XHRcdGZvciAobGV0IGkgPSAwLCBuID0gdmVydGljZXMubGVuZ3RoOyBpIDwgbjsgaSsrKVxuXHRcdFx0XHRcdHNjYWxlZFZlcnRpY2VzW2ldICo9IHNjYWxlO1xuXHRcdFx0fVxuXHRcdFx0YXR0YWNobWVudC52ZXJ0aWNlcyA9IHNjYWxlZFZlcnRpY2VzO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRsZXQgd2VpZ2h0cyA9IG5ldyBBcnJheTxudW1iZXI+KCk7XG5cdFx0bGV0IGJvbmVzID0gbmV3IEFycmF5PG51bWJlcj4oKTtcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHZlcnRpY2VzLmxlbmd0aDsgaSA8IG47KSB7XG5cdFx0XHRsZXQgYm9uZUNvdW50ID0gdmVydGljZXNbaSsrXTtcblx0XHRcdGJvbmVzLnB1c2goYm9uZUNvdW50KTtcblx0XHRcdGZvciAobGV0IG5uID0gaSArIGJvbmVDb3VudCAqIDQ7IGkgPCBubjsgaSArPSA0KSB7XG5cdFx0XHRcdGJvbmVzLnB1c2godmVydGljZXNbaV0pO1xuXHRcdFx0XHR3ZWlnaHRzLnB1c2godmVydGljZXNbaSArIDFdICogc2NhbGUpO1xuXHRcdFx0XHR3ZWlnaHRzLnB1c2godmVydGljZXNbaSArIDJdICogc2NhbGUpO1xuXHRcdFx0XHR3ZWlnaHRzLnB1c2godmVydGljZXNbaSArIDNdKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0YXR0YWNobWVudC5ib25lcyA9IGJvbmVzO1xuXHRcdGF0dGFjaG1lbnQudmVydGljZXMgPSBVdGlscy50b0Zsb2F0QXJyYXkod2VpZ2h0cyk7XG5cdH1cblxuXHRyZWFkQW5pbWF0aW9uIChtYXA6IGFueSwgbmFtZTogc3RyaW5nLCBza2VsZXRvbkRhdGE6IFNrZWxldG9uRGF0YSkge1xuXHRcdGxldCBzY2FsZSA9IHRoaXMuc2NhbGU7XG5cdFx0bGV0IHRpbWVsaW5lcyA9IG5ldyBBcnJheTxUaW1lbGluZT4oKTtcblxuXHRcdC8vIFNsb3QgdGltZWxpbmVzLlxuXHRcdGlmIChtYXAuc2xvdHMpIHtcblx0XHRcdGZvciAobGV0IHNsb3ROYW1lIGluIG1hcC5zbG90cykge1xuXHRcdFx0XHRsZXQgc2xvdE1hcCA9IG1hcC5zbG90c1tzbG90TmFtZV07XG5cdFx0XHRcdGxldCBzbG90ID0gc2tlbGV0b25EYXRhLmZpbmRTbG90KHNsb3ROYW1lKTtcblx0XHRcdFx0aWYgKCFzbG90KSB0aHJvdyBuZXcgRXJyb3IoXCJTbG90IG5vdCBmb3VuZDogXCIgKyBzbG90TmFtZSk7XG5cdFx0XHRcdGxldCBzbG90SW5kZXggPSBzbG90LmluZGV4O1xuXHRcdFx0XHRmb3IgKGxldCB0aW1lbGluZU5hbWUgaW4gc2xvdE1hcCkge1xuXHRcdFx0XHRcdGxldCB0aW1lbGluZU1hcCA9IHNsb3RNYXBbdGltZWxpbmVOYW1lXTtcblx0XHRcdFx0XHRpZiAoIXRpbWVsaW5lTWFwKSBjb250aW51ZTtcblx0XHRcdFx0XHRsZXQgZnJhbWVzID0gdGltZWxpbmVNYXAubGVuZ3RoO1xuXHRcdFx0XHRcdGlmICh0aW1lbGluZU5hbWUgPT0gXCJhdHRhY2htZW50XCIpIHtcblx0XHRcdFx0XHRcdGxldCB0aW1lbGluZSA9IG5ldyBBdHRhY2htZW50VGltZWxpbmUoZnJhbWVzLCBzbG90SW5kZXgpO1xuXHRcdFx0XHRcdFx0Zm9yIChsZXQgZnJhbWUgPSAwOyBmcmFtZSA8IGZyYW1lczsgZnJhbWUrKykge1xuXHRcdFx0XHRcdFx0XHRsZXQga2V5TWFwID0gdGltZWxpbmVNYXBbZnJhbWVdO1xuXHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgZ2V0VmFsdWUoa2V5TWFwLCBcInRpbWVcIiwgMCksIGdldFZhbHVlKGtleU1hcCwgXCJuYW1lXCIsIG51bGwpKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblxuXHRcdFx0XHRcdH0gZWxzZSBpZiAodGltZWxpbmVOYW1lID09IFwicmdiYVwiKSB7XG5cdFx0XHRcdFx0XHRsZXQgdGltZWxpbmUgPSBuZXcgUkdCQVRpbWVsaW5lKGZyYW1lcywgZnJhbWVzIDw8IDIsIHNsb3RJbmRleCk7XG5cdFx0XHRcdFx0XHRsZXQga2V5TWFwID0gdGltZWxpbmVNYXBbMF07XG5cdFx0XHRcdFx0XHRsZXQgdGltZSA9IGdldFZhbHVlKGtleU1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0bGV0IGNvbG9yID0gQ29sb3IuZnJvbVN0cmluZyhrZXlNYXAuY29sb3IpO1xuXG5cdFx0XHRcdFx0XHRmb3IgKGxldCBmcmFtZSA9IDAsIGJlemllciA9IDA7IDsgZnJhbWUrKykge1xuXHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgY29sb3IuciwgY29sb3IuZywgY29sb3IuYiwgY29sb3IuYSk7XG5cdFx0XHRcdFx0XHRcdGxldCBuZXh0TWFwID0gdGltZWxpbmVNYXBbZnJhbWUgKyAxXTtcblx0XHRcdFx0XHRcdFx0aWYgKCFuZXh0TWFwKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2hyaW5rKGJlemllcik7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0bGV0IHRpbWUyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0XHRsZXQgbmV3Q29sb3IgPSBDb2xvci5mcm9tU3RyaW5nKG5leHRNYXAuY29sb3IpO1xuXHRcdFx0XHRcdFx0XHRsZXQgY3VydmUgPSBrZXlNYXAuY3VydmU7XG5cdFx0XHRcdFx0XHRcdGlmIChjdXJ2ZSkge1xuXHRcdFx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDAsIHRpbWUsIHRpbWUyLCBjb2xvci5yLCBuZXdDb2xvci5yLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAxLCB0aW1lLCB0aW1lMiwgY29sb3IuZywgbmV3Q29sb3IuZywgMSk7XG5cdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMiwgdGltZSwgdGltZTIsIGNvbG9yLmIsIG5ld0NvbG9yLmIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDMsIHRpbWUsIHRpbWUyLCBjb2xvci5hLCBuZXdDb2xvci5hLCAxKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR0aW1lID0gdGltZTI7XG5cdFx0XHRcdFx0XHRcdGNvbG9yID0gbmV3Q29sb3I7XG5cdFx0XHRcdFx0XHRcdGtleU1hcCA9IG5leHRNYXA7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblxuXHRcdFx0XHRcdH0gZWxzZSBpZiAodGltZWxpbmVOYW1lID09IFwicmdiXCIpIHtcblx0XHRcdFx0XHRcdGxldCB0aW1lbGluZSA9IG5ldyBSR0JUaW1lbGluZShmcmFtZXMsIGZyYW1lcyAqIDMsIHNsb3RJbmRleCk7XG5cdFx0XHRcdFx0XHRsZXQga2V5TWFwID0gdGltZWxpbmVNYXBbMF07XG5cdFx0XHRcdFx0XHRsZXQgdGltZSA9IGdldFZhbHVlKGtleU1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0bGV0IGNvbG9yID0gQ29sb3IuZnJvbVN0cmluZyhrZXlNYXAuY29sb3IpO1xuXG5cdFx0XHRcdFx0XHRmb3IgKGxldCBmcmFtZSA9IDAsIGJlemllciA9IDA7IDsgZnJhbWUrKykge1xuXHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgY29sb3IuciwgY29sb3IuZywgY29sb3IuYik7XG5cdFx0XHRcdFx0XHRcdGxldCBuZXh0TWFwID0gdGltZWxpbmVNYXBbZnJhbWUgKyAxXTtcblx0XHRcdFx0XHRcdFx0aWYgKCFuZXh0TWFwKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2hyaW5rKGJlemllcik7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0bGV0IHRpbWUyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0XHRsZXQgbmV3Q29sb3IgPSBDb2xvci5mcm9tU3RyaW5nKG5leHRNYXAuY29sb3IpO1xuXHRcdFx0XHRcdFx0XHRsZXQgY3VydmUgPSBrZXlNYXAuY3VydmU7XG5cdFx0XHRcdFx0XHRcdGlmIChjdXJ2ZSkge1xuXHRcdFx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDAsIHRpbWUsIHRpbWUyLCBjb2xvci5yLCBuZXdDb2xvci5yLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAxLCB0aW1lLCB0aW1lMiwgY29sb3IuZywgbmV3Q29sb3IuZywgMSk7XG5cdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMiwgdGltZSwgdGltZTIsIGNvbG9yLmIsIG5ld0NvbG9yLmIsIDEpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHRpbWUgPSB0aW1lMjtcblx0XHRcdFx0XHRcdFx0Y29sb3IgPSBuZXdDb2xvcjtcblx0XHRcdFx0XHRcdFx0a2V5TWFwID0gbmV4dE1hcDtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXG5cdFx0XHRcdFx0fSBlbHNlIGlmICh0aW1lbGluZU5hbWUgPT0gXCJhbHBoYVwiKSB7XG5cdFx0XHRcdFx0XHR0aW1lbGluZXMucHVzaChyZWFkVGltZWxpbmUxKHRpbWVsaW5lTWFwLCBuZXcgQWxwaGFUaW1lbGluZShmcmFtZXMsIGZyYW1lcywgc2xvdEluZGV4KSwgMCwgMSkpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodGltZWxpbmVOYW1lID09IFwicmdiYTJcIikge1xuXHRcdFx0XHRcdFx0bGV0IHRpbWVsaW5lID0gbmV3IFJHQkEyVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMgKiA3LCBzbG90SW5kZXgpO1xuXG5cdFx0XHRcdFx0XHRsZXQga2V5TWFwID0gdGltZWxpbmVNYXBbMF07XG5cdFx0XHRcdFx0XHRsZXQgdGltZSA9IGdldFZhbHVlKGtleU1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0bGV0IGNvbG9yID0gQ29sb3IuZnJvbVN0cmluZyhrZXlNYXAubGlnaHQpO1xuXHRcdFx0XHRcdFx0bGV0IGNvbG9yMiA9IENvbG9yLmZyb21TdHJpbmcoa2V5TWFwLmRhcmspO1xuXG5cdFx0XHRcdFx0XHRmb3IgKGxldCBmcmFtZSA9IDAsIGJlemllciA9IDA7IDsgZnJhbWUrKykge1xuXHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgY29sb3IuciwgY29sb3IuZywgY29sb3IuYiwgY29sb3IuYSwgY29sb3IyLnIsIGNvbG9yMi5nLCBjb2xvcjIuYik7XG5cdFx0XHRcdFx0XHRcdGxldCBuZXh0TWFwID0gdGltZWxpbmVNYXBbZnJhbWUgKyAxXTtcblx0XHRcdFx0XHRcdFx0aWYgKCFuZXh0TWFwKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2hyaW5rKGJlemllcik7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0bGV0IHRpbWUyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0XHRsZXQgbmV3Q29sb3IgPSBDb2xvci5mcm9tU3RyaW5nKG5leHRNYXAubGlnaHQpO1xuXHRcdFx0XHRcdFx0XHRsZXQgbmV3Q29sb3IyID0gQ29sb3IuZnJvbVN0cmluZyhuZXh0TWFwLmRhcmspO1xuXHRcdFx0XHRcdFx0XHRsZXQgY3VydmUgPSBrZXlNYXAuY3VydmU7XG5cdFx0XHRcdFx0XHRcdGlmIChjdXJ2ZSkge1xuXHRcdFx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDAsIHRpbWUsIHRpbWUyLCBjb2xvci5yLCBuZXdDb2xvci5yLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAxLCB0aW1lLCB0aW1lMiwgY29sb3IuZywgbmV3Q29sb3IuZywgMSk7XG5cdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMiwgdGltZSwgdGltZTIsIGNvbG9yLmIsIG5ld0NvbG9yLmIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDMsIHRpbWUsIHRpbWUyLCBjb2xvci5hLCBuZXdDb2xvci5hLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCA0LCB0aW1lLCB0aW1lMiwgY29sb3IyLnIsIG5ld0NvbG9yMi5yLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCA1LCB0aW1lLCB0aW1lMiwgY29sb3IyLmcsIG5ld0NvbG9yMi5nLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCA2LCB0aW1lLCB0aW1lMiwgY29sb3IyLmIsIG5ld0NvbG9yMi5iLCAxKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR0aW1lID0gdGltZTI7XG5cdFx0XHRcdFx0XHRcdGNvbG9yID0gbmV3Q29sb3I7XG5cdFx0XHRcdFx0XHRcdGNvbG9yMiA9IG5ld0NvbG9yMjtcblx0XHRcdFx0XHRcdFx0a2V5TWFwID0gbmV4dE1hcDtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXG5cdFx0XHRcdFx0fSBlbHNlIGlmICh0aW1lbGluZU5hbWUgPT0gXCJyZ2IyXCIpIHtcblx0XHRcdFx0XHRcdGxldCB0aW1lbGluZSA9IG5ldyBSR0IyVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMgKiA2LCBzbG90SW5kZXgpO1xuXG5cdFx0XHRcdFx0XHRsZXQga2V5TWFwID0gdGltZWxpbmVNYXBbMF07XG5cdFx0XHRcdFx0XHRsZXQgdGltZSA9IGdldFZhbHVlKGtleU1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0bGV0IGNvbG9yID0gQ29sb3IuZnJvbVN0cmluZyhrZXlNYXAubGlnaHQpO1xuXHRcdFx0XHRcdFx0bGV0IGNvbG9yMiA9IENvbG9yLmZyb21TdHJpbmcoa2V5TWFwLmRhcmspO1xuXG5cdFx0XHRcdFx0XHRmb3IgKGxldCBmcmFtZSA9IDAsIGJlemllciA9IDA7IDsgZnJhbWUrKykge1xuXHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgY29sb3IuciwgY29sb3IuZywgY29sb3IuYiwgY29sb3IyLnIsIGNvbG9yMi5nLCBjb2xvcjIuYik7XG5cdFx0XHRcdFx0XHRcdGxldCBuZXh0TWFwID0gdGltZWxpbmVNYXBbZnJhbWUgKyAxXTtcblx0XHRcdFx0XHRcdFx0aWYgKCFuZXh0TWFwKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2hyaW5rKGJlemllcik7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0bGV0IHRpbWUyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0XHRsZXQgbmV3Q29sb3IgPSBDb2xvci5mcm9tU3RyaW5nKG5leHRNYXAubGlnaHQpO1xuXHRcdFx0XHRcdFx0XHRsZXQgbmV3Q29sb3IyID0gQ29sb3IuZnJvbVN0cmluZyhuZXh0TWFwLmRhcmspO1xuXHRcdFx0XHRcdFx0XHRsZXQgY3VydmUgPSBrZXlNYXAuY3VydmU7XG5cdFx0XHRcdFx0XHRcdGlmIChjdXJ2ZSkge1xuXHRcdFx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDAsIHRpbWUsIHRpbWUyLCBjb2xvci5yLCBuZXdDb2xvci5yLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAxLCB0aW1lLCB0aW1lMiwgY29sb3IuZywgbmV3Q29sb3IuZywgMSk7XG5cdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMiwgdGltZSwgdGltZTIsIGNvbG9yLmIsIG5ld0NvbG9yLmIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDMsIHRpbWUsIHRpbWUyLCBjb2xvcjIuciwgbmV3Q29sb3IyLnIsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDQsIHRpbWUsIHRpbWUyLCBjb2xvcjIuZywgbmV3Q29sb3IyLmcsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDUsIHRpbWUsIHRpbWUyLCBjb2xvcjIuYiwgbmV3Q29sb3IyLmIsIDEpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHRpbWUgPSB0aW1lMjtcblx0XHRcdFx0XHRcdFx0Y29sb3IgPSBuZXdDb2xvcjtcblx0XHRcdFx0XHRcdFx0Y29sb3IyID0gbmV3Q29sb3IyO1xuXHRcdFx0XHRcdFx0XHRrZXlNYXAgPSBuZXh0TWFwO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHR0aW1lbGluZXMucHVzaCh0aW1lbGluZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQm9uZSB0aW1lbGluZXMuXG5cdFx0aWYgKG1hcC5ib25lcykge1xuXHRcdFx0Zm9yIChsZXQgYm9uZU5hbWUgaW4gbWFwLmJvbmVzKSB7XG5cdFx0XHRcdGxldCBib25lTWFwID0gbWFwLmJvbmVzW2JvbmVOYW1lXTtcblx0XHRcdFx0bGV0IGJvbmUgPSBza2VsZXRvbkRhdGEuZmluZEJvbmUoYm9uZU5hbWUpO1xuXHRcdFx0XHRpZiAoIWJvbmUpIHRocm93IG5ldyBFcnJvcihcIkJvbmUgbm90IGZvdW5kOiBcIiArIGJvbmVOYW1lKTtcblx0XHRcdFx0bGV0IGJvbmVJbmRleCA9IGJvbmUuaW5kZXg7XG5cdFx0XHRcdGZvciAobGV0IHRpbWVsaW5lTmFtZSBpbiBib25lTWFwKSB7XG5cdFx0XHRcdFx0bGV0IHRpbWVsaW5lTWFwID0gYm9uZU1hcFt0aW1lbGluZU5hbWVdO1xuXHRcdFx0XHRcdGxldCBmcmFtZXMgPSB0aW1lbGluZU1hcC5sZW5ndGg7XG5cdFx0XHRcdFx0aWYgKGZyYW1lcyA9PSAwKSBjb250aW51ZTtcblxuXHRcdFx0XHRcdGlmICh0aW1lbGluZU5hbWUgPT09IFwicm90YXRlXCIpIHtcblx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHJlYWRUaW1lbGluZTEodGltZWxpbmVNYXAsIG5ldyBSb3RhdGVUaW1lbGluZShmcmFtZXMsIGZyYW1lcywgYm9uZUluZGV4KSwgMCwgMSkpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodGltZWxpbmVOYW1lID09PSBcInRyYW5zbGF0ZVwiKSB7XG5cdFx0XHRcdFx0XHRsZXQgdGltZWxpbmUgPSBuZXcgVHJhbnNsYXRlVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMgPDwgMSwgYm9uZUluZGV4KTtcblx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHJlYWRUaW1lbGluZTIodGltZWxpbmVNYXAsIHRpbWVsaW5lLCBcInhcIiwgXCJ5XCIsIDAsIHNjYWxlKSk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmICh0aW1lbGluZU5hbWUgPT09IFwidHJhbnNsYXRleFwiKSB7XG5cdFx0XHRcdFx0XHRsZXQgdGltZWxpbmUgPSBuZXcgVHJhbnNsYXRlWFRpbWVsaW5lKGZyYW1lcywgZnJhbWVzLCBib25lSW5kZXgpO1xuXHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2gocmVhZFRpbWVsaW5lMSh0aW1lbGluZU1hcCwgdGltZWxpbmUsIDAsIHNjYWxlKSk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmICh0aW1lbGluZU5hbWUgPT09IFwidHJhbnNsYXRleVwiKSB7XG5cdFx0XHRcdFx0XHRsZXQgdGltZWxpbmUgPSBuZXcgVHJhbnNsYXRlWVRpbWVsaW5lKGZyYW1lcywgZnJhbWVzLCBib25lSW5kZXgpO1xuXHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2gocmVhZFRpbWVsaW5lMSh0aW1lbGluZU1hcCwgdGltZWxpbmUsIDAsIHNjYWxlKSk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmICh0aW1lbGluZU5hbWUgPT09IFwic2NhbGVcIikge1xuXHRcdFx0XHRcdFx0bGV0IHRpbWVsaW5lID0gbmV3IFNjYWxlVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMgPDwgMSwgYm9uZUluZGV4KTtcblx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHJlYWRUaW1lbGluZTIodGltZWxpbmVNYXAsIHRpbWVsaW5lLCBcInhcIiwgXCJ5XCIsIDEsIDEpKTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHRpbWVsaW5lTmFtZSA9PT0gXCJzY2FsZXhcIikge1xuXHRcdFx0XHRcdFx0bGV0IHRpbWVsaW5lID0gbmV3IFNjYWxlWFRpbWVsaW5lKGZyYW1lcywgZnJhbWVzLCBib25lSW5kZXgpO1xuXHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2gocmVhZFRpbWVsaW5lMSh0aW1lbGluZU1hcCwgdGltZWxpbmUsIDEsIDEpKTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHRpbWVsaW5lTmFtZSA9PT0gXCJzY2FsZXlcIikge1xuXHRcdFx0XHRcdFx0bGV0IHRpbWVsaW5lID0gbmV3IFNjYWxlWVRpbWVsaW5lKGZyYW1lcywgZnJhbWVzLCBib25lSW5kZXgpO1xuXHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2gocmVhZFRpbWVsaW5lMSh0aW1lbGluZU1hcCwgdGltZWxpbmUsIDEsIDEpKTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHRpbWVsaW5lTmFtZSA9PT0gXCJzaGVhclwiKSB7XG5cdFx0XHRcdFx0XHRsZXQgdGltZWxpbmUgPSBuZXcgU2hlYXJUaW1lbGluZShmcmFtZXMsIGZyYW1lcyA8PCAxLCBib25lSW5kZXgpO1xuXHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2gocmVhZFRpbWVsaW5lMih0aW1lbGluZU1hcCwgdGltZWxpbmUsIFwieFwiLCBcInlcIiwgMCwgMSkpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodGltZWxpbmVOYW1lID09PSBcInNoZWFyeFwiKSB7XG5cdFx0XHRcdFx0XHRsZXQgdGltZWxpbmUgPSBuZXcgU2hlYXJYVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMsIGJvbmVJbmRleCk7XG5cdFx0XHRcdFx0XHR0aW1lbGluZXMucHVzaChyZWFkVGltZWxpbmUxKHRpbWVsaW5lTWFwLCB0aW1lbGluZSwgMCwgMSkpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodGltZWxpbmVOYW1lID09PSBcInNoZWFyeVwiKSB7XG5cdFx0XHRcdFx0XHRsZXQgdGltZWxpbmUgPSBuZXcgU2hlYXJZVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMsIGJvbmVJbmRleCk7XG5cdFx0XHRcdFx0XHR0aW1lbGluZXMucHVzaChyZWFkVGltZWxpbmUxKHRpbWVsaW5lTWFwLCB0aW1lbGluZSwgMCwgMSkpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodGltZWxpbmVOYW1lID09PSBcImluaGVyaXRcIikge1xuXHRcdFx0XHRcdFx0bGV0IHRpbWVsaW5lID0gbmV3IEluaGVyaXRUaW1lbGluZShmcmFtZXMsIGJvbmUuaW5kZXgpO1xuXHRcdFx0XHRcdFx0Zm9yIChsZXQgZnJhbWUgPSAwOyBmcmFtZSA8IHRpbWVsaW5lTWFwLmxlbmd0aDsgZnJhbWUrKykge1xuXHRcdFx0XHRcdFx0XHRsZXQgYUZyYW1lID0gdGltZWxpbmVNYXBbZnJhbWVdO1xuXHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgZ2V0VmFsdWUoYUZyYW1lLCBcInRpbWVcIiwgMCksIFV0aWxzLmVudW1WYWx1ZShJbmhlcml0LCBnZXRWYWx1ZShhRnJhbWUsIFwiaW5oZXJpdFwiLCBcIk5vcm1hbFwiKSkpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIElLIGNvbnN0cmFpbnQgdGltZWxpbmVzLlxuXHRcdGlmIChtYXAuaWspIHtcblx0XHRcdGZvciAobGV0IGNvbnN0cmFpbnROYW1lIGluIG1hcC5paykge1xuXHRcdFx0XHRsZXQgY29uc3RyYWludE1hcCA9IG1hcC5pa1tjb25zdHJhaW50TmFtZV07XG5cdFx0XHRcdGxldCBrZXlNYXAgPSBjb25zdHJhaW50TWFwWzBdO1xuXHRcdFx0XHRpZiAoIWtleU1hcCkgY29udGludWU7XG5cblx0XHRcdFx0bGV0IGNvbnN0cmFpbnQgPSBza2VsZXRvbkRhdGEuZmluZElrQ29uc3RyYWludChjb25zdHJhaW50TmFtZSk7XG5cdFx0XHRcdGlmICghY29uc3RyYWludCkgdGhyb3cgbmV3IEVycm9yKFwiSUsgQ29uc3RyYWludCBub3QgZm91bmQ6IFwiICsgY29uc3RyYWludE5hbWUpO1xuXHRcdFx0XHRsZXQgY29uc3RyYWludEluZGV4ID0gc2tlbGV0b25EYXRhLmlrQ29uc3RyYWludHMuaW5kZXhPZihjb25zdHJhaW50KTtcblx0XHRcdFx0bGV0IHRpbWVsaW5lID0gbmV3IElrQ29uc3RyYWludFRpbWVsaW5lKGNvbnN0cmFpbnRNYXAubGVuZ3RoLCBjb25zdHJhaW50TWFwLmxlbmd0aCA8PCAxLCBjb25zdHJhaW50SW5kZXgpO1xuXG5cdFx0XHRcdGxldCB0aW1lID0gZ2V0VmFsdWUoa2V5TWFwLCBcInRpbWVcIiwgMCk7XG5cdFx0XHRcdGxldCBtaXggPSBnZXRWYWx1ZShrZXlNYXAsIFwibWl4XCIsIDEpO1xuXHRcdFx0XHRsZXQgc29mdG5lc3MgPSBnZXRWYWx1ZShrZXlNYXAsIFwic29mdG5lc3NcIiwgMCkgKiBzY2FsZTtcblxuXHRcdFx0XHRmb3IgKGxldCBmcmFtZSA9IDAsIGJlemllciA9IDA7IDsgZnJhbWUrKykge1xuXHRcdFx0XHRcdHRpbWVsaW5lLnNldEZyYW1lKGZyYW1lLCB0aW1lLCBtaXgsIHNvZnRuZXNzLCBnZXRWYWx1ZShrZXlNYXAsIFwiYmVuZFBvc2l0aXZlXCIsIHRydWUpID8gMSA6IC0xLCBnZXRWYWx1ZShrZXlNYXAsIFwiY29tcHJlc3NcIiwgZmFsc2UpLCBnZXRWYWx1ZShrZXlNYXAsIFwic3RyZXRjaFwiLCBmYWxzZSkpO1xuXHRcdFx0XHRcdGxldCBuZXh0TWFwID0gY29uc3RyYWludE1hcFtmcmFtZSArIDFdO1xuXHRcdFx0XHRcdGlmICghbmV4dE1hcCkge1xuXHRcdFx0XHRcdFx0dGltZWxpbmUuc2hyaW5rKGJlemllcik7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRsZXQgdGltZTIgPSBnZXRWYWx1ZShuZXh0TWFwLCBcInRpbWVcIiwgMCk7XG5cdFx0XHRcdFx0bGV0IG1peDIgPSBnZXRWYWx1ZShuZXh0TWFwLCBcIm1peFwiLCAxKTtcblx0XHRcdFx0XHRsZXQgc29mdG5lc3MyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJzb2Z0bmVzc1wiLCAwKSAqIHNjYWxlO1xuXHRcdFx0XHRcdGxldCBjdXJ2ZSA9IGtleU1hcC5jdXJ2ZTtcblx0XHRcdFx0XHRpZiAoY3VydmUpIHtcblx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDAsIHRpbWUsIHRpbWUyLCBtaXgsIG1peDIsIDEpO1xuXHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMSwgdGltZSwgdGltZTIsIHNvZnRuZXNzLCBzb2Z0bmVzczIsIHNjYWxlKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHR0aW1lID0gdGltZTI7XG5cdFx0XHRcdFx0bWl4ID0gbWl4Mjtcblx0XHRcdFx0XHRzb2Z0bmVzcyA9IHNvZnRuZXNzMjtcblx0XHRcdFx0XHRrZXlNYXAgPSBuZXh0TWFwO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBUcmFuc2Zvcm0gY29uc3RyYWludCB0aW1lbGluZXMuXG5cdFx0aWYgKG1hcC50cmFuc2Zvcm0pIHtcblx0XHRcdGZvciAobGV0IGNvbnN0cmFpbnROYW1lIGluIG1hcC50cmFuc2Zvcm0pIHtcblx0XHRcdFx0bGV0IHRpbWVsaW5lTWFwID0gbWFwLnRyYW5zZm9ybVtjb25zdHJhaW50TmFtZV07XG5cdFx0XHRcdGxldCBrZXlNYXAgPSB0aW1lbGluZU1hcFswXTtcblx0XHRcdFx0aWYgKCFrZXlNYXApIGNvbnRpbnVlO1xuXG5cdFx0XHRcdGxldCBjb25zdHJhaW50ID0gc2tlbGV0b25EYXRhLmZpbmRUcmFuc2Zvcm1Db25zdHJhaW50KGNvbnN0cmFpbnROYW1lKTtcblx0XHRcdFx0aWYgKCFjb25zdHJhaW50KSB0aHJvdyBuZXcgRXJyb3IoXCJUcmFuc2Zvcm0gY29uc3RyYWludCBub3QgZm91bmQ6IFwiICsgY29uc3RyYWludE5hbWUpO1xuXHRcdFx0XHRsZXQgY29uc3RyYWludEluZGV4ID0gc2tlbGV0b25EYXRhLnRyYW5zZm9ybUNvbnN0cmFpbnRzLmluZGV4T2YoY29uc3RyYWludCk7XG5cdFx0XHRcdGxldCB0aW1lbGluZSA9IG5ldyBUcmFuc2Zvcm1Db25zdHJhaW50VGltZWxpbmUodGltZWxpbmVNYXAubGVuZ3RoLCB0aW1lbGluZU1hcC5sZW5ndGggKiA2LCBjb25zdHJhaW50SW5kZXgpO1xuXG5cdFx0XHRcdGxldCB0aW1lID0gZ2V0VmFsdWUoa2V5TWFwLCBcInRpbWVcIiwgMCk7XG5cdFx0XHRcdGxldCBtaXhSb3RhdGUgPSBnZXRWYWx1ZShrZXlNYXAsIFwibWl4Um90YXRlXCIsIDEpO1xuXHRcdFx0XHRsZXQgbWl4WCA9IGdldFZhbHVlKGtleU1hcCwgXCJtaXhYXCIsIDEpO1xuXHRcdFx0XHRsZXQgbWl4WSA9IGdldFZhbHVlKGtleU1hcCwgXCJtaXhZXCIsIG1peFgpO1xuXHRcdFx0XHRsZXQgbWl4U2NhbGVYID0gZ2V0VmFsdWUoa2V5TWFwLCBcIm1peFNjYWxlWFwiLCAxKTtcblx0XHRcdFx0bGV0IG1peFNjYWxlWSA9IGdldFZhbHVlKGtleU1hcCwgXCJtaXhTY2FsZVlcIiwgbWl4U2NhbGVYKTtcblx0XHRcdFx0bGV0IG1peFNoZWFyWSA9IGdldFZhbHVlKGtleU1hcCwgXCJtaXhTaGVhcllcIiwgMSk7XG5cblx0XHRcdFx0Zm9yIChsZXQgZnJhbWUgPSAwLCBiZXppZXIgPSAwOyA7IGZyYW1lKyspIHtcblx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgbWl4Um90YXRlLCBtaXhYLCBtaXhZLCBtaXhTY2FsZVgsIG1peFNjYWxlWSwgbWl4U2hlYXJZKTtcblx0XHRcdFx0XHRsZXQgbmV4dE1hcCA9IHRpbWVsaW5lTWFwW2ZyYW1lICsgMV07XG5cdFx0XHRcdFx0aWYgKCFuZXh0TWFwKSB7XG5cdFx0XHRcdFx0XHR0aW1lbGluZS5zaHJpbmsoYmV6aWVyKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGxldCB0aW1lMiA9IGdldFZhbHVlKG5leHRNYXAsIFwidGltZVwiLCAwKTtcblx0XHRcdFx0XHRsZXQgbWl4Um90YXRlMiA9IGdldFZhbHVlKG5leHRNYXAsIFwibWl4Um90YXRlXCIsIDEpO1xuXHRcdFx0XHRcdGxldCBtaXhYMiA9IGdldFZhbHVlKG5leHRNYXAsIFwibWl4WFwiLCAxKTtcblx0XHRcdFx0XHRsZXQgbWl4WTIgPSBnZXRWYWx1ZShuZXh0TWFwLCBcIm1peFlcIiwgbWl4WDIpO1xuXHRcdFx0XHRcdGxldCBtaXhTY2FsZVgyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJtaXhTY2FsZVhcIiwgMSk7XG5cdFx0XHRcdFx0bGV0IG1peFNjYWxlWTIgPSBnZXRWYWx1ZShuZXh0TWFwLCBcIm1peFNjYWxlWVwiLCBtaXhTY2FsZVgyKTtcblx0XHRcdFx0XHRsZXQgbWl4U2hlYXJZMiA9IGdldFZhbHVlKG5leHRNYXAsIFwibWl4U2hlYXJZXCIsIDEpO1xuXHRcdFx0XHRcdGxldCBjdXJ2ZSA9IGtleU1hcC5jdXJ2ZTtcblx0XHRcdFx0XHRpZiAoY3VydmUpIHtcblx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDAsIHRpbWUsIHRpbWUyLCBtaXhSb3RhdGUsIG1peFJvdGF0ZTIsIDEpO1xuXHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMSwgdGltZSwgdGltZTIsIG1peFgsIG1peFgyLCAxKTtcblx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDIsIHRpbWUsIHRpbWUyLCBtaXhZLCBtaXhZMiwgMSk7XG5cdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAzLCB0aW1lLCB0aW1lMiwgbWl4U2NhbGVYLCBtaXhTY2FsZVgyLCAxKTtcblx0XHRcdFx0XHRcdGJlemllciA9IHJlYWRDdXJ2ZShjdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDQsIHRpbWUsIHRpbWUyLCBtaXhTY2FsZVksIG1peFNjYWxlWTIsIDEpO1xuXHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgNSwgdGltZSwgdGltZTIsIG1peFNoZWFyWSwgbWl4U2hlYXJZMiwgMSk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0dGltZSA9IHRpbWUyO1xuXHRcdFx0XHRcdG1peFJvdGF0ZSA9IG1peFJvdGF0ZTI7XG5cdFx0XHRcdFx0bWl4WCA9IG1peFgyO1xuXHRcdFx0XHRcdG1peFkgPSBtaXhZMjtcblx0XHRcdFx0XHRtaXhTY2FsZVggPSBtaXhTY2FsZVgyO1xuXHRcdFx0XHRcdG1peFNjYWxlWSA9IG1peFNjYWxlWTI7XG5cdFx0XHRcdFx0bWl4U2NhbGVYID0gbWl4U2NhbGVYMjtcblx0XHRcdFx0XHRrZXlNYXAgPSBuZXh0TWFwO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHRpbWVsaW5lKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBQYXRoIGNvbnN0cmFpbnQgdGltZWxpbmVzLlxuXHRcdGlmIChtYXAucGF0aCkge1xuXHRcdFx0Zm9yIChsZXQgY29uc3RyYWludE5hbWUgaW4gbWFwLnBhdGgpIHtcblx0XHRcdFx0bGV0IGNvbnN0cmFpbnRNYXAgPSBtYXAucGF0aFtjb25zdHJhaW50TmFtZV07XG5cdFx0XHRcdGxldCBjb25zdHJhaW50ID0gc2tlbGV0b25EYXRhLmZpbmRQYXRoQ29uc3RyYWludChjb25zdHJhaW50TmFtZSk7XG5cdFx0XHRcdGlmICghY29uc3RyYWludCkgdGhyb3cgbmV3IEVycm9yKFwiUGF0aCBjb25zdHJhaW50IG5vdCBmb3VuZDogXCIgKyBjb25zdHJhaW50TmFtZSk7XG5cdFx0XHRcdGxldCBjb25zdHJhaW50SW5kZXggPSBza2VsZXRvbkRhdGEucGF0aENvbnN0cmFpbnRzLmluZGV4T2YoY29uc3RyYWludCk7XG5cdFx0XHRcdGZvciAobGV0IHRpbWVsaW5lTmFtZSBpbiBjb25zdHJhaW50TWFwKSB7XG5cdFx0XHRcdFx0bGV0IHRpbWVsaW5lTWFwID0gY29uc3RyYWludE1hcFt0aW1lbGluZU5hbWVdO1xuXHRcdFx0XHRcdGxldCBrZXlNYXAgPSB0aW1lbGluZU1hcFswXTtcblx0XHRcdFx0XHRpZiAoIWtleU1hcCkgY29udGludWU7XG5cblx0XHRcdFx0XHRsZXQgZnJhbWVzID0gdGltZWxpbmVNYXAubGVuZ3RoO1xuXHRcdFx0XHRcdGlmICh0aW1lbGluZU5hbWUgPT09IFwicG9zaXRpb25cIikge1xuXHRcdFx0XHRcdFx0bGV0IHRpbWVsaW5lID0gbmV3IFBhdGhDb25zdHJhaW50UG9zaXRpb25UaW1lbGluZShmcmFtZXMsIGZyYW1lcywgY29uc3RyYWludEluZGV4KTtcblx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHJlYWRUaW1lbGluZTEodGltZWxpbmVNYXAsIHRpbWVsaW5lLCAwLCBjb25zdHJhaW50LnBvc2l0aW9uTW9kZSA9PSBQb3NpdGlvbk1vZGUuRml4ZWQgPyBzY2FsZSA6IDEpKTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHRpbWVsaW5lTmFtZSA9PT0gXCJzcGFjaW5nXCIpIHtcblx0XHRcdFx0XHRcdGxldCB0aW1lbGluZSA9IG5ldyBQYXRoQ29uc3RyYWludFNwYWNpbmdUaW1lbGluZShmcmFtZXMsIGZyYW1lcywgY29uc3RyYWludEluZGV4KTtcblx0XHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHJlYWRUaW1lbGluZTEodGltZWxpbmVNYXAsIHRpbWVsaW5lLCAwLCBjb25zdHJhaW50LnNwYWNpbmdNb2RlID09IFNwYWNpbmdNb2RlLkxlbmd0aCB8fCBjb25zdHJhaW50LnNwYWNpbmdNb2RlID09IFNwYWNpbmdNb2RlLkZpeGVkID8gc2NhbGUgOiAxKSk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmICh0aW1lbGluZU5hbWUgPT09IFwibWl4XCIpIHtcblx0XHRcdFx0XHRcdGxldCB0aW1lbGluZSA9IG5ldyBQYXRoQ29uc3RyYWludE1peFRpbWVsaW5lKGZyYW1lcywgZnJhbWVzICogMywgY29uc3RyYWludEluZGV4KTtcblx0XHRcdFx0XHRcdGxldCB0aW1lID0gZ2V0VmFsdWUoa2V5TWFwLCBcInRpbWVcIiwgMCk7XG5cdFx0XHRcdFx0XHRsZXQgbWl4Um90YXRlID0gZ2V0VmFsdWUoa2V5TWFwLCBcIm1peFJvdGF0ZVwiLCAxKTtcblx0XHRcdFx0XHRcdGxldCBtaXhYID0gZ2V0VmFsdWUoa2V5TWFwLCBcIm1peFhcIiwgMSk7XG5cdFx0XHRcdFx0XHRsZXQgbWl4WSA9IGdldFZhbHVlKGtleU1hcCwgXCJtaXhZXCIsIG1peFgpO1xuXHRcdFx0XHRcdFx0Zm9yIChsZXQgZnJhbWUgPSAwLCBiZXppZXIgPSAwOyA7IGZyYW1lKyspIHtcblx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2V0RnJhbWUoZnJhbWUsIHRpbWUsIG1peFJvdGF0ZSwgbWl4WCwgbWl4WSk7XG5cdFx0XHRcdFx0XHRcdGxldCBuZXh0TWFwID0gdGltZWxpbmVNYXBbZnJhbWUgKyAxXTtcblx0XHRcdFx0XHRcdFx0aWYgKCFuZXh0TWFwKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGltZWxpbmUuc2hyaW5rKGJlemllcik7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0bGV0IHRpbWUyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdFx0XHRcdFx0XHRsZXQgbWl4Um90YXRlMiA9IGdldFZhbHVlKG5leHRNYXAsIFwibWl4Um90YXRlXCIsIDEpO1xuXHRcdFx0XHRcdFx0XHRsZXQgbWl4WDIgPSBnZXRWYWx1ZShuZXh0TWFwLCBcIm1peFhcIiwgMSk7XG5cdFx0XHRcdFx0XHRcdGxldCBtaXhZMiA9IGdldFZhbHVlKG5leHRNYXAsIFwibWl4WVwiLCBtaXhYMik7XG5cdFx0XHRcdFx0XHRcdGxldCBjdXJ2ZSA9IGtleU1hcC5jdXJ2ZTtcblx0XHRcdFx0XHRcdFx0aWYgKGN1cnZlKSB7XG5cdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMCwgdGltZSwgdGltZTIsIG1peFJvdGF0ZSwgbWl4Um90YXRlMiwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMSwgdGltZSwgdGltZTIsIG1peFgsIG1peFgyLCAxKTtcblx0XHRcdFx0XHRcdFx0XHRiZXppZXIgPSByZWFkQ3VydmUoY3VydmUsIHRpbWVsaW5lLCBiZXppZXIsIGZyYW1lLCAyLCB0aW1lLCB0aW1lMiwgbWl4WSwgbWl4WTIsIDEpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHRpbWUgPSB0aW1lMjtcblx0XHRcdFx0XHRcdFx0bWl4Um90YXRlID0gbWl4Um90YXRlMjtcblx0XHRcdFx0XHRcdFx0bWl4WCA9IG1peFgyO1xuXHRcdFx0XHRcdFx0XHRtaXhZID0gbWl4WTI7XG5cdFx0XHRcdFx0XHRcdGtleU1hcCA9IG5leHRNYXA7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR0aW1lbGluZXMucHVzaCh0aW1lbGluZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gUGh5c2ljcyBjb25zdHJhaW50IHRpbWVsaW5lcy5cblx0XHRpZiAobWFwLnBoeXNpY3MpIHtcblx0XHRcdGZvciAobGV0IGNvbnN0cmFpbnROYW1lIGluIG1hcC5waHlzaWNzKSB7XG5cdFx0XHRcdGxldCBjb25zdHJhaW50TWFwID0gbWFwLnBoeXNpY3NbY29uc3RyYWludE5hbWVdO1xuXHRcdFx0XHRsZXQgY29uc3RyYWludEluZGV4ID0gLTE7XG5cdFx0XHRcdGlmIChjb25zdHJhaW50TmFtZS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0bGV0IGNvbnN0cmFpbnQgPSBza2VsZXRvbkRhdGEuZmluZFBoeXNpY3NDb25zdHJhaW50KGNvbnN0cmFpbnROYW1lKTtcblx0XHRcdFx0XHRpZiAoIWNvbnN0cmFpbnQpIHRocm93IG5ldyBFcnJvcihcIlBoeXNpY3MgY29uc3RyYWludCBub3QgZm91bmQ6IFwiICsgY29uc3RyYWludE5hbWUpO1xuXHRcdFx0XHRcdGNvbnN0cmFpbnRJbmRleCA9IHNrZWxldG9uRGF0YS5waHlzaWNzQ29uc3RyYWludHMuaW5kZXhPZihjb25zdHJhaW50KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3IgKGxldCB0aW1lbGluZU5hbWUgaW4gY29uc3RyYWludE1hcCkge1xuXHRcdFx0XHRcdGxldCB0aW1lbGluZU1hcCA9IGNvbnN0cmFpbnRNYXBbdGltZWxpbmVOYW1lXTtcblx0XHRcdFx0XHRsZXQga2V5TWFwID0gdGltZWxpbmVNYXBbMF07XG5cdFx0XHRcdFx0aWYgKCFrZXlNYXApIGNvbnRpbnVlO1xuXG5cdFx0XHRcdFx0bGV0IGZyYW1lcyA9IHRpbWVsaW5lTWFwLmxlbmd0aDtcblx0XHRcdFx0XHRpZiAodGltZWxpbmVOYW1lID09IFwicmVzZXRcIikge1xuXHRcdFx0XHRcdFx0Y29uc3QgdGltZWxpbmUgPSBuZXcgUGh5c2ljc0NvbnN0cmFpbnRSZXNldFRpbWVsaW5lKGZyYW1lcywgY29uc3RyYWludEluZGV4KTtcblx0XHRcdFx0XHRcdGZvciAobGV0IGZyYW1lID0gMDsga2V5TWFwICE9IG51bGw7IGtleU1hcCA9IHRpbWVsaW5lTWFwW2ZyYW1lICsgMV0sIGZyYW1lKyspXG5cdFx0XHRcdFx0XHRcdHRpbWVsaW5lLnNldEZyYW1lKGZyYW1lLCBnZXRWYWx1ZShrZXlNYXAsIFwidGltZVwiLCAwKSk7XG5cdFx0XHRcdFx0XHR0aW1lbGluZXMucHVzaCh0aW1lbGluZSk7XG5cdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRsZXQgdGltZWxpbmU7XG5cdFx0XHRcdFx0aWYgKHRpbWVsaW5lTmFtZSA9PSBcImluZXJ0aWFcIilcblx0XHRcdFx0XHRcdHRpbWVsaW5lID0gbmV3IFBoeXNpY3NDb25zdHJhaW50SW5lcnRpYVRpbWVsaW5lKGZyYW1lcywgZnJhbWVzLCBjb25zdHJhaW50SW5kZXgpO1xuXHRcdFx0XHRcdGVsc2UgaWYgKHRpbWVsaW5lTmFtZSA9PSBcInN0cmVuZ3RoXCIpXG5cdFx0XHRcdFx0XHR0aW1lbGluZSA9IG5ldyBQaHlzaWNzQ29uc3RyYWludFN0cmVuZ3RoVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMsIGNvbnN0cmFpbnRJbmRleCk7XG5cdFx0XHRcdFx0ZWxzZSBpZiAodGltZWxpbmVOYW1lID09IFwiZGFtcGluZ1wiKVxuXHRcdFx0XHRcdFx0dGltZWxpbmUgPSBuZXcgUGh5c2ljc0NvbnN0cmFpbnREYW1waW5nVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMsIGNvbnN0cmFpbnRJbmRleCk7XG5cdFx0XHRcdFx0ZWxzZSBpZiAodGltZWxpbmVOYW1lID09IFwibWFzc1wiKVxuXHRcdFx0XHRcdFx0dGltZWxpbmUgPSBuZXcgUGh5c2ljc0NvbnN0cmFpbnRNYXNzVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMsIGNvbnN0cmFpbnRJbmRleCk7XG5cdFx0XHRcdFx0ZWxzZSBpZiAodGltZWxpbmVOYW1lID09IFwid2luZFwiKVxuXHRcdFx0XHRcdFx0dGltZWxpbmUgPSBuZXcgUGh5c2ljc0NvbnN0cmFpbnRXaW5kVGltZWxpbmUoZnJhbWVzLCBmcmFtZXMsIGNvbnN0cmFpbnRJbmRleCk7XG5cdFx0XHRcdFx0ZWxzZSBpZiAodGltZWxpbmVOYW1lID09IFwiZ3Jhdml0eVwiKVxuXHRcdFx0XHRcdFx0dGltZWxpbmUgPSBuZXcgUGh5c2ljc0NvbnN0cmFpbnRHcmF2aXR5VGltZWxpbmUoZnJhbWVzLCBmcmFtZXMsIGNvbnN0cmFpbnRJbmRleCk7XG5cdFx0XHRcdFx0ZWxzZSBpZiAodGltZWxpbmVOYW1lID09IFwibWl4XCIpIC8vXG5cdFx0XHRcdFx0XHR0aW1lbGluZSA9IG5ldyBQaHlzaWNzQ29uc3RyYWludE1peFRpbWVsaW5lKGZyYW1lcywgZnJhbWVzLCBjb25zdHJhaW50SW5kZXgpO1xuXHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHRcdHRpbWVsaW5lcy5wdXNoKHJlYWRUaW1lbGluZTEodGltZWxpbmVNYXAsIHRpbWVsaW5lLCAwLCAxKSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBBdHRhY2htZW50IHRpbWVsaW5lcy5cblx0XHRpZiAobWFwLmF0dGFjaG1lbnRzKSB7XG5cdFx0XHRmb3IgKGxldCBhdHRhY2htZW50c05hbWUgaW4gbWFwLmF0dGFjaG1lbnRzKSB7XG5cdFx0XHRcdGxldCBhdHRhY2htZW50c01hcCA9IG1hcC5hdHRhY2htZW50c1thdHRhY2htZW50c05hbWVdO1xuXHRcdFx0XHRsZXQgc2tpbiA9IHNrZWxldG9uRGF0YS5maW5kU2tpbihhdHRhY2htZW50c05hbWUpO1xuXHRcdFx0XHRpZiAoIXNraW4pIHRocm93IG5ldyBFcnJvcihcIlNraW4gbm90IGZvdW5kOiBcIiArIGF0dGFjaG1lbnRzTmFtZSk7XG5cdFx0XHRcdGZvciAobGV0IHNsb3RNYXBOYW1lIGluIGF0dGFjaG1lbnRzTWFwKSB7XG5cdFx0XHRcdFx0bGV0IHNsb3RNYXAgPSBhdHRhY2htZW50c01hcFtzbG90TWFwTmFtZV07XG5cdFx0XHRcdFx0bGV0IHNsb3QgPSBza2VsZXRvbkRhdGEuZmluZFNsb3Qoc2xvdE1hcE5hbWUpO1xuXHRcdFx0XHRcdGlmICghc2xvdCkgdGhyb3cgbmV3IEVycm9yKFwiU2xvdCBub3QgZm91bmQ6IFwiICsgc2xvdE1hcE5hbWUpO1xuXHRcdFx0XHRcdGxldCBzbG90SW5kZXggPSBzbG90LmluZGV4O1xuXHRcdFx0XHRcdGZvciAobGV0IGF0dGFjaG1lbnRNYXBOYW1lIGluIHNsb3RNYXApIHtcblx0XHRcdFx0XHRcdGxldCBhdHRhY2htZW50TWFwID0gc2xvdE1hcFthdHRhY2htZW50TWFwTmFtZV07XG5cdFx0XHRcdFx0XHRsZXQgYXR0YWNobWVudCA9IDxWZXJ0ZXhBdHRhY2htZW50PnNraW4uZ2V0QXR0YWNobWVudChzbG90SW5kZXgsIGF0dGFjaG1lbnRNYXBOYW1lKTtcblxuXHRcdFx0XHRcdFx0Zm9yIChsZXQgdGltZWxpbmVNYXBOYW1lIGluIGF0dGFjaG1lbnRNYXApIHtcblx0XHRcdFx0XHRcdFx0bGV0IHRpbWVsaW5lTWFwID0gYXR0YWNobWVudE1hcFt0aW1lbGluZU1hcE5hbWVdO1xuXHRcdFx0XHRcdFx0XHRsZXQga2V5TWFwID0gdGltZWxpbmVNYXBbMF07XG5cdFx0XHRcdFx0XHRcdGlmICgha2V5TWFwKSBjb250aW51ZTtcblxuXHRcdFx0XHRcdFx0XHRpZiAodGltZWxpbmVNYXBOYW1lID09IFwiZGVmb3JtXCIpIHtcblx0XHRcdFx0XHRcdFx0XHRsZXQgd2VpZ2h0ZWQgPSBhdHRhY2htZW50LmJvbmVzO1xuXHRcdFx0XHRcdFx0XHRcdGxldCB2ZXJ0aWNlcyA9IGF0dGFjaG1lbnQudmVydGljZXM7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IGRlZm9ybUxlbmd0aCA9IHdlaWdodGVkID8gdmVydGljZXMubGVuZ3RoIC8gMyAqIDIgOiB2ZXJ0aWNlcy5sZW5ndGg7XG5cblx0XHRcdFx0XHRcdFx0XHRsZXQgdGltZWxpbmUgPSBuZXcgRGVmb3JtVGltZWxpbmUodGltZWxpbmVNYXAubGVuZ3RoLCB0aW1lbGluZU1hcC5sZW5ndGgsIHNsb3RJbmRleCwgYXR0YWNobWVudCk7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IHRpbWUgPSBnZXRWYWx1ZShrZXlNYXAsIFwidGltZVwiLCAwKTtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKGxldCBmcmFtZSA9IDAsIGJlemllciA9IDA7IDsgZnJhbWUrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IGRlZm9ybTogTnVtYmVyQXJyYXlMaWtlO1xuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IHZlcnRpY2VzVmFsdWU6IEFycmF5PE51bWJlcj4gPSBnZXRWYWx1ZShrZXlNYXAsIFwidmVydGljZXNcIiwgbnVsbCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXZlcnRpY2VzVmFsdWUpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRlZm9ybSA9IHdlaWdodGVkID8gVXRpbHMubmV3RmxvYXRBcnJheShkZWZvcm1MZW5ndGgpIDogdmVydGljZXM7XG5cdFx0XHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVmb3JtID0gVXRpbHMubmV3RmxvYXRBcnJheShkZWZvcm1MZW5ndGgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRsZXQgc3RhcnQgPSA8bnVtYmVyPmdldFZhbHVlKGtleU1hcCwgXCJvZmZzZXRcIiwgMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFV0aWxzLmFycmF5Q29weSh2ZXJ0aWNlc1ZhbHVlLCAwLCBkZWZvcm0sIHN0YXJ0LCB2ZXJ0aWNlc1ZhbHVlLmxlbmd0aCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChzY2FsZSAhPSAxKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IHN0YXJ0LCBuID0gaSArIHZlcnRpY2VzVmFsdWUubGVuZ3RoOyBpIDwgbjsgaSsrKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVmb3JtW2ldICo9IHNjYWxlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghd2VpZ2h0ZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGRlZm9ybUxlbmd0aDsgaSsrKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVmb3JtW2ldICs9IHZlcnRpY2VzW2ldO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdHRpbWVsaW5lLnNldEZyYW1lKGZyYW1lLCB0aW1lLCBkZWZvcm0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IG5leHRNYXAgPSB0aW1lbGluZU1hcFtmcmFtZSArIDFdO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFuZXh0TWFwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRpbWVsaW5lLnNocmluayhiZXppZXIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGxldCB0aW1lMiA9IGdldFZhbHVlKG5leHRNYXAsIFwidGltZVwiLCAwKTtcblx0XHRcdFx0XHRcdFx0XHRcdGxldCBjdXJ2ZSA9IGtleU1hcC5jdXJ2ZTtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChjdXJ2ZSkgYmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMCwgdGltZSwgdGltZTIsIDAsIDEsIDEpO1xuXHRcdFx0XHRcdFx0XHRcdFx0dGltZSA9IHRpbWUyO1xuXHRcdFx0XHRcdFx0XHRcdFx0a2V5TWFwID0gbmV4dE1hcDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKHRpbWVsaW5lTWFwTmFtZSA9PSBcInNlcXVlbmNlXCIpIHtcblx0XHRcdFx0XHRcdFx0XHRsZXQgdGltZWxpbmUgPSBuZXcgU2VxdWVuY2VUaW1lbGluZSh0aW1lbGluZU1hcC5sZW5ndGgsIHNsb3RJbmRleCwgYXR0YWNobWVudCBhcyB1bmtub3duIGFzIEhhc1RleHR1cmVSZWdpb24pO1xuXHRcdFx0XHRcdFx0XHRcdGxldCBsYXN0RGVsYXkgPSAwO1xuXHRcdFx0XHRcdFx0XHRcdGZvciAobGV0IGZyYW1lID0gMDsgZnJhbWUgPCB0aW1lbGluZU1hcC5sZW5ndGg7IGZyYW1lKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdGxldCBkZWxheSA9IGdldFZhbHVlKGtleU1hcCwgXCJkZWxheVwiLCBsYXN0RGVsYXkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IHRpbWUgPSBnZXRWYWx1ZShrZXlNYXAsIFwidGltZVwiLCAwKTtcblx0XHRcdFx0XHRcdFx0XHRcdGxldCBtb2RlID0gU2VxdWVuY2VNb2RlW2dldFZhbHVlKGtleU1hcCwgXCJtb2RlXCIsIFwiaG9sZFwiKV0gYXMgdW5rbm93biBhcyBudW1iZXI7XG5cdFx0XHRcdFx0XHRcdFx0XHRsZXQgaW5kZXggPSBnZXRWYWx1ZShrZXlNYXAsIFwiaW5kZXhcIiwgMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgbW9kZSwgaW5kZXgsIGRlbGF5KTtcblx0XHRcdFx0XHRcdFx0XHRcdGxhc3REZWxheSA9IGRlbGF5O1xuXHRcdFx0XHRcdFx0XHRcdFx0a2V5TWFwID0gdGltZWxpbmVNYXBbZnJhbWUgKyAxXTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gRHJhdyBvcmRlciB0aW1lbGluZXMuXG5cdFx0aWYgKG1hcC5kcmF3T3JkZXIpIHtcblx0XHRcdGxldCB0aW1lbGluZSA9IG5ldyBEcmF3T3JkZXJUaW1lbGluZShtYXAuZHJhd09yZGVyLmxlbmd0aCk7XG5cdFx0XHRsZXQgc2xvdENvdW50ID0gc2tlbGV0b25EYXRhLnNsb3RzLmxlbmd0aDtcblx0XHRcdGxldCBmcmFtZSA9IDA7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG1hcC5kcmF3T3JkZXIubGVuZ3RoOyBpKyssIGZyYW1lKyspIHtcblx0XHRcdFx0bGV0IGRyYXdPcmRlck1hcCA9IG1hcC5kcmF3T3JkZXJbaV07XG5cdFx0XHRcdGxldCBkcmF3T3JkZXI6IEFycmF5PG51bWJlcj4gfCBudWxsID0gbnVsbDtcblx0XHRcdFx0bGV0IG9mZnNldHMgPSBnZXRWYWx1ZShkcmF3T3JkZXJNYXAsIFwib2Zmc2V0c1wiLCBudWxsKTtcblx0XHRcdFx0aWYgKG9mZnNldHMpIHtcblx0XHRcdFx0XHRkcmF3T3JkZXIgPSBVdGlscy5uZXdBcnJheTxudW1iZXI+KHNsb3RDb3VudCwgLTEpO1xuXHRcdFx0XHRcdGxldCB1bmNoYW5nZWQgPSBVdGlscy5uZXdBcnJheTxudW1iZXI+KHNsb3RDb3VudCAtIG9mZnNldHMubGVuZ3RoLCAwKTtcblx0XHRcdFx0XHRsZXQgb3JpZ2luYWxJbmRleCA9IDAsIHVuY2hhbmdlZEluZGV4ID0gMDtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgb2Zmc2V0cy5sZW5ndGg7IGlpKyspIHtcblx0XHRcdFx0XHRcdGxldCBvZmZzZXRNYXAgPSBvZmZzZXRzW2lpXTtcblx0XHRcdFx0XHRcdGxldCBzbG90ID0gc2tlbGV0b25EYXRhLmZpbmRTbG90KG9mZnNldE1hcC5zbG90KTtcblx0XHRcdFx0XHRcdGlmICghc2xvdCkgdGhyb3cgbmV3IEVycm9yKFwiU2xvdCBub3QgZm91bmQ6IFwiICsgc2xvdCk7XG5cdFx0XHRcdFx0XHRsZXQgc2xvdEluZGV4ID0gc2xvdC5pbmRleDtcblx0XHRcdFx0XHRcdC8vIENvbGxlY3QgdW5jaGFuZ2VkIGl0ZW1zLlxuXHRcdFx0XHRcdFx0d2hpbGUgKG9yaWdpbmFsSW5kZXggIT0gc2xvdEluZGV4KVxuXHRcdFx0XHRcdFx0XHR1bmNoYW5nZWRbdW5jaGFuZ2VkSW5kZXgrK10gPSBvcmlnaW5hbEluZGV4Kys7XG5cdFx0XHRcdFx0XHQvLyBTZXQgY2hhbmdlZCBpdGVtcy5cblx0XHRcdFx0XHRcdGRyYXdPcmRlcltvcmlnaW5hbEluZGV4ICsgb2Zmc2V0TWFwLm9mZnNldF0gPSBvcmlnaW5hbEluZGV4Kys7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIENvbGxlY3QgcmVtYWluaW5nIHVuY2hhbmdlZCBpdGVtcy5cblx0XHRcdFx0XHR3aGlsZSAob3JpZ2luYWxJbmRleCA8IHNsb3RDb3VudClcblx0XHRcdFx0XHRcdHVuY2hhbmdlZFt1bmNoYW5nZWRJbmRleCsrXSA9IG9yaWdpbmFsSW5kZXgrKztcblx0XHRcdFx0XHQvLyBGaWxsIGluIHVuY2hhbmdlZCBpdGVtcy5cblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IHNsb3RDb3VudCAtIDE7IGlpID49IDA7IGlpLS0pXG5cdFx0XHRcdFx0XHRpZiAoZHJhd09yZGVyW2lpXSA9PSAtMSkgZHJhd09yZGVyW2lpXSA9IHVuY2hhbmdlZFstLXVuY2hhbmdlZEluZGV4XTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgZ2V0VmFsdWUoZHJhd09yZGVyTWFwLCBcInRpbWVcIiwgMCksIGRyYXdPcmRlcik7XG5cdFx0XHR9XG5cdFx0XHR0aW1lbGluZXMucHVzaCh0aW1lbGluZSk7XG5cdFx0fVxuXG5cdFx0Ly8gRXZlbnQgdGltZWxpbmVzLlxuXHRcdGlmIChtYXAuZXZlbnRzKSB7XG5cdFx0XHRsZXQgdGltZWxpbmUgPSBuZXcgRXZlbnRUaW1lbGluZShtYXAuZXZlbnRzLmxlbmd0aCk7XG5cdFx0XHRsZXQgZnJhbWUgPSAwO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBtYXAuZXZlbnRzLmxlbmd0aDsgaSsrLCBmcmFtZSsrKSB7XG5cdFx0XHRcdGxldCBldmVudE1hcCA9IG1hcC5ldmVudHNbaV07XG5cdFx0XHRcdGxldCBldmVudERhdGEgPSBza2VsZXRvbkRhdGEuZmluZEV2ZW50KGV2ZW50TWFwLm5hbWUpO1xuXHRcdFx0XHRpZiAoIWV2ZW50RGF0YSkgdGhyb3cgbmV3IEVycm9yKFwiRXZlbnQgbm90IGZvdW5kOiBcIiArIGV2ZW50TWFwLm5hbWUpO1xuXHRcdFx0XHRsZXQgZXZlbnQgPSBuZXcgRXZlbnQoVXRpbHMudG9TaW5nbGVQcmVjaXNpb24oZ2V0VmFsdWUoZXZlbnRNYXAsIFwidGltZVwiLCAwKSksIGV2ZW50RGF0YSk7XG5cdFx0XHRcdGV2ZW50LmludFZhbHVlID0gZ2V0VmFsdWUoZXZlbnRNYXAsIFwiaW50XCIsIGV2ZW50RGF0YS5pbnRWYWx1ZSk7XG5cdFx0XHRcdGV2ZW50LmZsb2F0VmFsdWUgPSBnZXRWYWx1ZShldmVudE1hcCwgXCJmbG9hdFwiLCBldmVudERhdGEuZmxvYXRWYWx1ZSk7XG5cdFx0XHRcdGV2ZW50LnN0cmluZ1ZhbHVlID0gZ2V0VmFsdWUoZXZlbnRNYXAsIFwic3RyaW5nXCIsIGV2ZW50RGF0YS5zdHJpbmdWYWx1ZSk7XG5cdFx0XHRcdGlmIChldmVudC5kYXRhLmF1ZGlvUGF0aCkge1xuXHRcdFx0XHRcdGV2ZW50LnZvbHVtZSA9IGdldFZhbHVlKGV2ZW50TWFwLCBcInZvbHVtZVwiLCAxKTtcblx0XHRcdFx0XHRldmVudC5iYWxhbmNlID0gZ2V0VmFsdWUoZXZlbnRNYXAsIFwiYmFsYW5jZVwiLCAwKTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgZXZlbnQpO1xuXHRcdFx0fVxuXHRcdFx0dGltZWxpbmVzLnB1c2godGltZWxpbmUpO1xuXHRcdH1cblxuXHRcdGxldCBkdXJhdGlvbiA9IDA7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSB0aW1lbGluZXMubGVuZ3RoOyBpIDwgbjsgaSsrKVxuXHRcdFx0ZHVyYXRpb24gPSBNYXRoLm1heChkdXJhdGlvbiwgdGltZWxpbmVzW2ldLmdldER1cmF0aW9uKCkpO1xuXHRcdHNrZWxldG9uRGF0YS5hbmltYXRpb25zLnB1c2gobmV3IEFuaW1hdGlvbihuYW1lLCB0aW1lbGluZXMsIGR1cmF0aW9uKSk7XG5cdH1cbn1cblxuY2xhc3MgTGlua2VkTWVzaCB7XG5cdHBhcmVudDogc3RyaW5nOyBza2luOiBzdHJpbmc7XG5cdHNsb3RJbmRleDogbnVtYmVyO1xuXHRtZXNoOiBNZXNoQXR0YWNobWVudDtcblx0aW5oZXJpdFRpbWVsaW5lOiBib29sZWFuO1xuXG5cdGNvbnN0cnVjdG9yIChtZXNoOiBNZXNoQXR0YWNobWVudCwgc2tpbjogc3RyaW5nLCBzbG90SW5kZXg6IG51bWJlciwgcGFyZW50OiBzdHJpbmcsIGluaGVyaXREZWZvcm06IGJvb2xlYW4pIHtcblx0XHR0aGlzLm1lc2ggPSBtZXNoO1xuXHRcdHRoaXMuc2tpbiA9IHNraW47XG5cdFx0dGhpcy5zbG90SW5kZXggPSBzbG90SW5kZXg7XG5cdFx0dGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG5cdFx0dGhpcy5pbmhlcml0VGltZWxpbmUgPSBpbmhlcml0RGVmb3JtO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHJlYWRUaW1lbGluZTEgKGtleXM6IGFueVtdLCB0aW1lbGluZTogQ3VydmVUaW1lbGluZTEsIGRlZmF1bHRWYWx1ZTogbnVtYmVyLCBzY2FsZTogbnVtYmVyKSB7XG5cdGxldCBrZXlNYXAgPSBrZXlzWzBdO1xuXHRsZXQgdGltZSA9IGdldFZhbHVlKGtleU1hcCwgXCJ0aW1lXCIsIDApO1xuXHRsZXQgdmFsdWUgPSBnZXRWYWx1ZShrZXlNYXAsIFwidmFsdWVcIiwgZGVmYXVsdFZhbHVlKSAqIHNjYWxlO1xuXHRsZXQgYmV6aWVyID0gMDtcblx0Zm9yIChsZXQgZnJhbWUgPSAwOyA7IGZyYW1lKyspIHtcblx0XHR0aW1lbGluZS5zZXRGcmFtZShmcmFtZSwgdGltZSwgdmFsdWUpO1xuXHRcdGxldCBuZXh0TWFwID0ga2V5c1tmcmFtZSArIDFdO1xuXHRcdGlmICghbmV4dE1hcCkge1xuXHRcdFx0dGltZWxpbmUuc2hyaW5rKGJlemllcik7XG5cdFx0XHRyZXR1cm4gdGltZWxpbmU7XG5cdFx0fVxuXHRcdGxldCB0aW1lMiA9IGdldFZhbHVlKG5leHRNYXAsIFwidGltZVwiLCAwKTtcblx0XHRsZXQgdmFsdWUyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJ2YWx1ZVwiLCBkZWZhdWx0VmFsdWUpICogc2NhbGU7XG5cdFx0aWYgKGtleU1hcC5jdXJ2ZSkgYmV6aWVyID0gcmVhZEN1cnZlKGtleU1hcC5jdXJ2ZSwgdGltZWxpbmUsIGJlemllciwgZnJhbWUsIDAsIHRpbWUsIHRpbWUyLCB2YWx1ZSwgdmFsdWUyLCBzY2FsZSk7XG5cdFx0dGltZSA9IHRpbWUyO1xuXHRcdHZhbHVlID0gdmFsdWUyO1xuXHRcdGtleU1hcCA9IG5leHRNYXA7XG5cdH1cbn1cblxuZnVuY3Rpb24gcmVhZFRpbWVsaW5lMiAoa2V5czogYW55W10sIHRpbWVsaW5lOiBDdXJ2ZVRpbWVsaW5lMiwgbmFtZTE6IHN0cmluZywgbmFtZTI6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBudW1iZXIsIHNjYWxlOiBudW1iZXIpIHtcblx0bGV0IGtleU1hcCA9IGtleXNbMF07XG5cdGxldCB0aW1lID0gZ2V0VmFsdWUoa2V5TWFwLCBcInRpbWVcIiwgMCk7XG5cdGxldCB2YWx1ZTEgPSBnZXRWYWx1ZShrZXlNYXAsIG5hbWUxLCBkZWZhdWx0VmFsdWUpICogc2NhbGU7XG5cdGxldCB2YWx1ZTIgPSBnZXRWYWx1ZShrZXlNYXAsIG5hbWUyLCBkZWZhdWx0VmFsdWUpICogc2NhbGU7XG5cdGxldCBiZXppZXIgPSAwO1xuXHRmb3IgKGxldCBmcmFtZSA9IDA7IDsgZnJhbWUrKykge1xuXHRcdHRpbWVsaW5lLnNldEZyYW1lKGZyYW1lLCB0aW1lLCB2YWx1ZTEsIHZhbHVlMik7XG5cdFx0bGV0IG5leHRNYXAgPSBrZXlzW2ZyYW1lICsgMV07XG5cdFx0aWYgKCFuZXh0TWFwKSB7XG5cdFx0XHR0aW1lbGluZS5zaHJpbmsoYmV6aWVyKTtcblx0XHRcdHJldHVybiB0aW1lbGluZTtcblx0XHR9XG5cdFx0bGV0IHRpbWUyID0gZ2V0VmFsdWUobmV4dE1hcCwgXCJ0aW1lXCIsIDApO1xuXHRcdGxldCBudmFsdWUxID0gZ2V0VmFsdWUobmV4dE1hcCwgbmFtZTEsIGRlZmF1bHRWYWx1ZSkgKiBzY2FsZTtcblx0XHRsZXQgbnZhbHVlMiA9IGdldFZhbHVlKG5leHRNYXAsIG5hbWUyLCBkZWZhdWx0VmFsdWUpICogc2NhbGU7XG5cdFx0bGV0IGN1cnZlID0ga2V5TWFwLmN1cnZlO1xuXHRcdGlmIChjdXJ2ZSkge1xuXHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMCwgdGltZSwgdGltZTIsIHZhbHVlMSwgbnZhbHVlMSwgc2NhbGUpO1xuXHRcdFx0YmV6aWVyID0gcmVhZEN1cnZlKGN1cnZlLCB0aW1lbGluZSwgYmV6aWVyLCBmcmFtZSwgMSwgdGltZSwgdGltZTIsIHZhbHVlMiwgbnZhbHVlMiwgc2NhbGUpO1xuXHRcdH1cblx0XHR0aW1lID0gdGltZTI7XG5cdFx0dmFsdWUxID0gbnZhbHVlMTtcblx0XHR2YWx1ZTIgPSBudmFsdWUyO1xuXHRcdGtleU1hcCA9IG5leHRNYXA7XG5cdH1cbn1cblxuZnVuY3Rpb24gcmVhZEN1cnZlIChjdXJ2ZTogYW55LCB0aW1lbGluZTogQ3VydmVUaW1lbGluZSwgYmV6aWVyOiBudW1iZXIsIGZyYW1lOiBudW1iZXIsIHZhbHVlOiBudW1iZXIsIHRpbWUxOiBudW1iZXIsIHRpbWUyOiBudW1iZXIsXG5cdHZhbHVlMTogbnVtYmVyLCB2YWx1ZTI6IG51bWJlciwgc2NhbGU6IG51bWJlcikge1xuXHRpZiAoY3VydmUgPT0gXCJzdGVwcGVkXCIpIHtcblx0XHR0aW1lbGluZS5zZXRTdGVwcGVkKGZyYW1lKTtcblx0XHRyZXR1cm4gYmV6aWVyO1xuXHR9XG5cdGxldCBpID0gdmFsdWUgPDwgMjtcblx0bGV0IGN4MSA9IGN1cnZlW2ldO1xuXHRsZXQgY3kxID0gY3VydmVbaSArIDFdICogc2NhbGU7XG5cdGxldCBjeDIgPSBjdXJ2ZVtpICsgMl07XG5cdGxldCBjeTIgPSBjdXJ2ZVtpICsgM10gKiBzY2FsZTtcblx0dGltZWxpbmUuc2V0QmV6aWVyKGJlemllciwgZnJhbWUsIHZhbHVlLCB0aW1lMSwgdmFsdWUxLCBjeDEsIGN5MSwgY3gyLCBjeTIsIHRpbWUyLCB2YWx1ZTIpO1xuXHRyZXR1cm4gYmV6aWVyICsgMTtcbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWUgKG1hcDogYW55LCBwcm9wZXJ0eTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IGFueSkge1xuXHRyZXR1cm4gbWFwW3Byb3BlcnR5XSAhPT0gdW5kZWZpbmVkID8gbWFwW3Byb3BlcnR5XSA6IGRlZmF1bHRWYWx1ZTtcbn1cbiJdfQ==