tide-design-system 2.5.11 → 2.5.12

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 (181) hide show
  1. package/dist/tide-design-system.js +3 -3
  2. package/package.json +3 -4
  3. package/src/components/TideLink.vue +2 -2
  4. package/vite.config.ts +1 -7
  5. package/dist/IconAccountBalance-t66sPb0V.cjs +0 -2
  6. package/dist/IconAcute-kA8NXjsF.cjs +0 -2
  7. package/dist/IconAdd-Bwkom_hG.cjs +0 -2
  8. package/dist/IconAiDescription-CFPMCDKK.cjs +0 -2
  9. package/dist/IconAlignSpaceEven-DKSbfzb-.cjs +0 -2
  10. package/dist/IconApplePay-BBSCGFjG.cjs +0 -2
  11. package/dist/IconArrowBack-CUHuJHxp.cjs +0 -2
  12. package/dist/IconArrowCycle-R7Q8EDQJ.cjs +0 -2
  13. package/dist/IconArrowForward-09bz9o1h.cjs +0 -2
  14. package/dist/IconArrowRight-Np65RzRK.cjs +0 -2
  15. package/dist/IconArrowUp-DrhwTcVn.cjs +0 -2
  16. package/dist/IconAssignment-DGD2WaCW.cjs +0 -2
  17. package/dist/IconAttachMoney-DFObJ1fx.cjs +0 -2
  18. package/dist/IconAtvAtv-DubJwTjK.cjs +0 -2
  19. package/dist/IconAtvDuneBuggy-CjN1kUXQ.cjs +0 -2
  20. package/dist/IconAtvGoKart-C6lX6Uq4.cjs +0 -2
  21. package/dist/IconAtvGolfCart-DWAt3bvk.cjs +0 -2
  22. package/dist/IconAtvSandRail-DGwmb5aU.cjs +0 -2
  23. package/dist/IconAtvSideBySide-OvuV0qFX.cjs +0 -2
  24. package/dist/IconAtvTrailer-D_aI1qUx.cjs +0 -2
  25. package/dist/IconAutoRenew-CRnGvhzj.cjs +0 -2
  26. package/dist/IconAwardStar-Dx2metNr.cjs +0 -2
  27. package/dist/IconBed-o4YHr8QY.cjs +0 -2
  28. package/dist/IconBoatmartPwc-BKltWtRW.cjs +0 -2
  29. package/dist/IconBoatmartTrailer-D3firMg5.cjs +0 -2
  30. package/dist/IconBolt-BTeYzS6k.cjs +0 -2
  31. package/dist/IconBookmark-CitAJpUy.cjs +0 -2
  32. package/dist/IconBunkhouse-B1covD1i.cjs +0 -2
  33. package/dist/IconCalculate-CGwDSRuU.cjs +0 -2
  34. package/dist/IconCalendarMonth-DfHe6Olt.cjs +0 -2
  35. package/dist/IconCall-6gUYtYnc.cjs +0 -2
  36. package/dist/IconCallQuality-DseNWKcQ.cjs +0 -2
  37. package/dist/IconCarRental-CaH55o-0.cjs +0 -2
  38. package/dist/IconCheck-DrU3Xqj-.cjs +0 -2
  39. package/dist/IconChevronLeft-CD73NwTB.cjs +0 -2
  40. package/dist/IconChevronRight-CNHvWIJQ.cjs +0 -2
  41. package/dist/IconClear-Ddi_gQQW.cjs +0 -2
  42. package/dist/IconClose-ClKjVrRR.cjs +0 -2
  43. package/dist/IconContract-BMNU7dRH.cjs +0 -2
  44. package/dist/IconCrash-BzlfUp1G.cjs +0 -2
  45. package/dist/IconCycleMotorcycle-B8syyXoU.cjs +0 -2
  46. package/dist/IconCycleTrailer-COTSVorR.cjs +0 -2
  47. package/dist/IconDashboardCustomize-BAGay10U.cjs +0 -2
  48. package/dist/IconDelete-CUu2bGqQ.cjs +0 -2
  49. package/dist/IconDiamond-BeD6bdL2.cjs +0 -2
  50. package/dist/IconDirectionsBoat-B0wTnd3o.cjs +0 -2
  51. package/dist/IconDomain-Dxw5ILrL.cjs +0 -2
  52. package/dist/IconDraft-DR6EZSwa.cjs +0 -2
  53. package/dist/IconEdit-DiFJHvLw.cjs +0 -2
  54. package/dist/IconEngine-NRbH-EHX.cjs +0 -2
  55. package/dist/IconEngineering-Gu6xRPyo.cjs +0 -2
  56. package/dist/IconError-B8vfdBPh.cjs +0 -2
  57. package/dist/IconExpandContent-CZBUTFa4.cjs +0 -2
  58. package/dist/IconExpandLess-BeBqjATL.cjs +0 -2
  59. package/dist/IconExpandMore-EyD544-R.cjs +0 -2
  60. package/dist/IconFacebook-BZJRlI_M.cjs +0 -2
  61. package/dist/IconFavorite-DK4VZH9M.cjs +0 -2
  62. package/dist/IconFavoriteFilled-DEpn1cmU.cjs +0 -2
  63. package/dist/IconFlag-BztsqLLH.cjs +0 -2
  64. package/dist/IconFormatBold-D5ouQYvY.cjs +0 -2
  65. package/dist/IconFormatItalic-nERjH9_F.cjs +0 -2
  66. package/dist/IconFormatListBulleted-DiO46Jg8.cjs +0 -2
  67. package/dist/IconForum-Dw6egtlq.cjs +0 -2
  68. package/dist/IconGas-D8bshXuI.cjs +0 -2
  69. package/dist/IconGavel-CBdvVo3E.cjs +0 -2
  70. package/dist/IconGears-DGMqs4S7.cjs +0 -2
  71. package/dist/IconGlobeLocationPin-DaxXQ30W.cjs +0 -2
  72. package/dist/IconGoogle-Yw_mSfTf.cjs +0 -2
  73. package/dist/IconGooglePay-RCvnstwi.cjs +0 -2
  74. package/dist/IconGrid-Dt-ErvEF.cjs +0 -2
  75. package/dist/IconHandshake-Cy-2UfCE.cjs +0 -2
  76. package/dist/IconHandyman-Qk8vvw-k.cjs +0 -2
  77. package/dist/IconHeight-8L9ZpDnf.cjs +0 -2
  78. package/dist/IconHelp-yLLGan-o.cjs +0 -2
  79. package/dist/IconInfo-MifqZPeF.cjs +0 -2
  80. package/dist/IconInformation-Bd6DwbOW.cjs +0 -2
  81. package/dist/IconInsertText-DAU6Gz1h.cjs +0 -2
  82. package/dist/IconInstagram-V0Phqs8e.cjs +0 -2
  83. package/dist/IconIosShare-yDTudxOJ.cjs +0 -2
  84. package/dist/IconLayout-NaNwp1Mc.cjs +0 -2
  85. package/dist/IconLevellingJack-BrmBMIeS.cjs +0 -2
  86. package/dist/IconLinkedIn-B92dDFNi.cjs +0 -2
  87. package/dist/IconLocalShipping-B3U2CrvK.cjs +0 -2
  88. package/dist/IconLock-CzvHZ2QM.cjs +0 -2
  89. package/dist/IconMail-4cFO6TUe.cjs +0 -2
  90. package/dist/IconMenu-BV6py3Ml.cjs +0 -2
  91. package/dist/IconMoneyBag-lMeRlCeA.cjs +0 -2
  92. package/dist/IconMoreHoriz-Fdrg4GhV.cjs +0 -2
  93. package/dist/IconNotifications-D6f_hP65.cjs +0 -2
  94. package/dist/IconOdometer-DFmoGuh1.cjs +0 -2
  95. package/dist/IconOpenInNew-Bh7f_m7Y.cjs +0 -2
  96. package/dist/IconPalette-ClefcQMe.cjs +0 -2
  97. package/dist/IconPaypal-R8-anQkg.cjs +0 -2
  98. package/dist/IconPerson-bq9WQXQP.cjs +0 -2
  99. package/dist/IconPersonSearch-WGKPEFXj.cjs +0 -2
  100. package/dist/IconPhotoCamera-DaJf6axF.cjs +0 -2
  101. package/dist/IconPinterest-wqKY3pYh.cjs +0 -2
  102. package/dist/IconPlayArrow-BMvUb0Cs.cjs +0 -2
  103. package/dist/IconPolicy-C6VqDhPq.cjs +0 -2
  104. package/dist/IconPower-DNCBzhHN.cjs +0 -2
  105. package/dist/IconPowerOff-CFUkoB2U.cjs +0 -2
  106. package/dist/IconPriorityHigh-BXRK5f8v.cjs +0 -2
  107. package/dist/IconRemove-BoE63ZOl.cjs +0 -2
  108. package/dist/IconRequestQuote-hNE0axaE.cjs +0 -2
  109. package/dist/IconResetWrench-BGo5LXI6.cjs +0 -2
  110. package/dist/IconRoad-CYQVphPa.cjs +0 -2
  111. package/dist/IconRoundedCorner-BsshtlDu.cjs +0 -2
  112. package/dist/IconRuler-D6F7haVw.cjs +0 -2
  113. package/dist/IconRvClassA-CeynEY7N.cjs +0 -2
  114. package/dist/IconRvClassB-BGB0MmOD.cjs +0 -2
  115. package/dist/IconRvClassC-C8rS5sAC.cjs +0 -2
  116. package/dist/IconRvFifthWheel-C47iv80S.cjs +0 -2
  117. package/dist/IconRvFishHouse-B9CKlbHK.cjs +0 -2
  118. package/dist/IconRvParkModel-DZoz1TA3.cjs +0 -2
  119. package/dist/IconRvPopUpCamper-D7wbELIQ.cjs +0 -2
  120. package/dist/IconRvTravelTrailer-DGqI6COV.cjs +0 -2
  121. package/dist/IconRvTruckCamper-DFFQWh2o.cjs +0 -2
  122. package/dist/IconSailing-BLsCQf5E.cjs +0 -2
  123. package/dist/IconSchool-Ctkcm5E6.cjs +0 -2
  124. package/dist/IconSearch-CqnvhCzt.cjs +0 -2
  125. package/dist/IconSeating-CIOne28A.cjs +0 -2
  126. package/dist/IconSell-CJ88esDh.cjs +0 -2
  127. package/dist/IconSensors-CVBxtcwC.cjs +0 -2
  128. package/dist/IconSettings-BWQS2Rd_.cjs +0 -2
  129. package/dist/IconShare-DgZxuRV0.cjs +0 -2
  130. package/dist/IconShieldCheck-x6T3V-vS.cjs +0 -2
  131. package/dist/IconShoppingCart-BWH_PXom.cjs +0 -2
  132. package/dist/IconSleeps-CaPJzPZ7.cjs +0 -2
  133. package/dist/IconSms-NlCMrmBH.cjs +0 -2
  134. package/dist/IconSnowflake-CzkejYR_.cjs +0 -2
  135. package/dist/IconStar-BGEn0snz.cjs +0 -2
  136. package/dist/IconStarFilled-CfYeQJic.cjs +0 -2
  137. package/dist/IconStarHalf-Bx8Qyb3h.cjs +0 -2
  138. package/dist/IconSummarize-lRdtNX68.cjs +0 -2
  139. package/dist/IconSwapHoriz-B-UnlgNS.cjs +0 -2
  140. package/dist/IconSwapVert-BBxeKMXP.cjs +0 -2
  141. package/dist/IconThreeDRotation-BPRR_9n0.cjs +0 -2
  142. package/dist/IconThumbUp-Dw-Hvil4.cjs +0 -2
  143. package/dist/IconTrendingDown-CUIEiRQk.cjs +0 -2
  144. package/dist/IconTrophy-DwaYZ69z.cjs +0 -2
  145. package/dist/IconTune-CdPQRgZE.cjs +0 -2
  146. package/dist/IconTwitter-wxyn-htG.cjs +0 -2
  147. package/dist/IconUmbrella-CdgPNDdg.cjs +0 -2
  148. package/dist/IconVerified-DKmEJ9ke.cjs +0 -2
  149. package/dist/IconVideocam-B8oUr7zP.cjs +0 -2
  150. package/dist/IconViewInAr-DhbEKdon.cjs +0 -2
  151. package/dist/IconVisibility-DaA3mBn4.cjs +0 -2
  152. package/dist/IconVolumeOff-42vl0HdH.cjs +0 -2
  153. package/dist/IconVolumeOn-B6HqcoA8.cjs +0 -2
  154. package/dist/IconWarehouse-DOw3YseH.cjs +0 -2
  155. package/dist/IconWarning-3AuFwkkg.cjs +0 -2
  156. package/dist/IconWater-dVEqMZb4.cjs +0 -2
  157. package/dist/IconWeight-DfXiP6ob.cjs +0 -2
  158. package/dist/IconWidth-D1f8wank.cjs +0 -2
  159. package/dist/IconWorkspacePremium-DQIbVzlX.cjs +0 -2
  160. package/dist/IconWrench-CZskpiB7.cjs +0 -2
  161. package/dist/IconYoutube-ChEAKSkt.cjs +0 -2
  162. package/dist/logo-aero-Z-V0eOLB.cjs +0 -2
  163. package/dist/logo-atv-xQMzut2h.cjs +0 -2
  164. package/dist/logo-boatmart-B9upxiMl.cjs +0 -2
  165. package/dist/logo-cycle-c9schUUY.cjs +0 -2
  166. package/dist/logo-equipment-3VYa6YcW.cjs +0 -2
  167. package/dist/logo-pwc-DhXtaTyu.cjs +0 -2
  168. package/dist/logo-rv-BRXxuciP.cjs +0 -2
  169. package/dist/logo-snow-PVobISvF.cjs +0 -2
  170. package/dist/logo-truck-DE0J4OIJ.cjs +0 -2
  171. package/dist/mark-aero-CFjGMjbx.cjs +0 -2
  172. package/dist/mark-atv-BhRn5mUA.cjs +0 -2
  173. package/dist/mark-boatmart-Bmkv3dOs.cjs +0 -2
  174. package/dist/mark-cycle-QCLSEZTF.cjs +0 -2
  175. package/dist/mark-equipment-ThuZOvf6.cjs +0 -2
  176. package/dist/mark-pwc-CQWDRntw.cjs +0 -2
  177. package/dist/mark-rv-BtQWH4-a.cjs +0 -2
  178. package/dist/mark-snow-Bek2T8IY.cjs +0 -2
  179. package/dist/mark-truck-BsOOC6Lx.cjs +0 -2
  180. package/dist/tide-design-system.cjs +0 -2
  181. /package/dist/{tide-design-system.esm.d.ts → tide-design-system.d.ts} +0 -0
@@ -951,7 +951,7 @@ const Gt = {
951
951
  default: se(() => [
952
952
  i.iconLeading ? (u(), P(Y, {
953
953
  key: 0,
954
- class: l([e(t).DISPLAY.INLINE_BLOCK, e(t).ALIGN.Y.MIDDLE, e(t).MARGIN.RIGHT.QUARTER]),
954
+ class: l([e(t).DISPLAY.INLINE_BLOCK, e(t).ALIGN.Y.MIDDLE, e(t).MARGIN.RIGHT.QUARTER, e(t).POINTER_EVENTS.OFF]),
955
955
  icon: i.iconLeading,
956
956
  size: s.iconSize
957
957
  }, null, 8, ["class", "icon", "size"])) : N("", !0),
@@ -960,7 +960,7 @@ const Gt = {
960
960
  }, h(i.label), 3),
961
961
  i.iconTrailing ? (u(), P(Y, {
962
962
  key: 1,
963
- class: l([e(t).DISPLAY.INLINE_BLOCK, e(t).ALIGN.Y.MIDDLE, e(t).MARGIN.LEFT.QUARTER]),
963
+ class: l([e(t).DISPLAY.INLINE_BLOCK, e(t).ALIGN.Y.MIDDLE, e(t).MARGIN.LEFT.QUARTER, e(t).POINTER_EVENTS.OFF]),
964
964
  icon: i.iconTrailing,
965
965
  size: s.iconSize
966
966
  }, null, 8, ["class", "icon", "size"])) : N("", !0)
@@ -5363,4 +5363,4 @@ export {
5363
5363
  Xo as useTideForm,
5364
5364
  la as useTideToaster
5365
5365
  };
5366
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtLmpzIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMvT3JpZW50YXRpb24udHMiLCIuLi9zcmMvdHlwZXMvU3R5bGVzLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZURpdmlkZXIudnVlIiwiLi4vc3JjL3R5cGVzL1JlYWxtLnRzIiwiLi4vc3JjL3R5cGVzL1NpemUudHMiLCIuLi9zcmMvdXRpbGl0aWVzL2Zvcm1hdC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSIsIi4uL3NyYy90eXBlcy9JY29uLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUFjY29yZGlvbkl0ZW0udnVlIiwiLi4vc3JjL3R5cGVzL0VsZW1lbnQudHMiLCIuLi9zcmMvY29tcG9zYWJsZXMvdXNlVGlkZUNvbmZpZy50cyIsIi4uL3NyYy9jb21wb25lbnRzL0ludGVybmFsQmFzZUxpbmsudnVlIiwiLi4vc3JjL3R5cGVzL1ByaW9yaXR5LnRzIiwiLi4vc3JjL3R5cGVzL1RhcmdldC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVMaW5rLnZ1ZSIsIi4uL3NyYy90eXBlcy9BbGVydC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBbGVydC52dWUiLCIuLi9zcmMvdHlwZXMvQmFkZ2UudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQmFkZ2UudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJhZGdlVHJ1c3RlZFBhcnRuZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJhZGdlVmVyaWZpZWRWZWhpY2xlLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCcmVhZENydW1icy52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnV0dG9uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25QYWdpbmF0aW9uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25TYXZlLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25TZWdtZW50ZWQudnVlIiwiLi4vc3JjL3R5cGVzL0NhcmQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2FyZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2Fyb3VzZWwudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNoaXBBY3Rpb24udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNoaXBGaWx0ZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNoaXBJbnB1dC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ29sdW1ucy52dWUiLCIuLi9zcmMvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0udHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlRm9ybS52dWUiLCIuLi9zcmMvdHlwZXMvSW1hZ2UudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW1hZ2UudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUltYWdlQmFja2dyb3VuZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5kaWNhdG9yLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFN1cHBvcnRpbmdUZXh0LnZ1ZSIsIi4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGlvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dENoZWNrYm94LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dENoZWNrYm94RGVwcmVjYXRlZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRSYWRpby52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRSYWRpb0RlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL3R5cGVzL0Zvcm1hdHRlZC50cyIsIi4uL3NyYy90eXBlcy9WYWxpZGF0aW9uLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0U2VsZWN0LnZ1ZSIsIi4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGlvbi1kZXByZWNhdGVkLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0U2VsZWN0RGVwcmVjYXRlZC52dWUiLCIuLi9zcmMvdHlwZXMvVGV4dElucHV0LnRzIiwiLi4vc3JjL3V0aWxpdGllcy9mb3Jtcy50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dERlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dGFyZWEudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dGFyZWFEZXByZWNhdGVkLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVNZW51SXRlbS52dWUiLCIuLi9zcmMvdHlwZXMvQnJlYWtwb2ludC50cyIsIi4uL3NyYy91dGlsaXRpZXMvdmlld3BvcnQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlTW9kYWwudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVBhZ2luYXRpb24udnVlIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS91dGlscy9kaXN0L2Zsb2F0aW5nLXVpLnV0aWxzLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvY29yZS9kaXN0L2Zsb2F0aW5nLXVpLmNvcmUubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS91dGlscy9kaXN0L2Zsb2F0aW5nLXVpLnV0aWxzLmRvbS5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2RvbS9kaXN0L2Zsb2F0aW5nLXVpLmRvbS5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3Z1ZS9kaXN0L2Zsb2F0aW5nLXVpLnZ1ZS5tanMiLCIuLi9zcmMvdXRpbGl0aWVzL2V2ZW50LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVBvcG92ZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVJhdGluZy52dWUiLCIuLi9zcmMvdHlwZXMvUmVhbG1Mb2dvLnRzIiwiLi4vc3JjL3V0aWxpdGllcy9yZWFsbS50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVSZWFsbUxvZ28udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVNlb0xpbmtzLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVTaGVldC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlU3dpdGNoLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVUYWJzLnZ1ZSIsIi4uL3NyYy9jb21wb3NhYmxlcy91c2VUaWRlVG9hc3Rlci50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVUb2FzdGVyLnZ1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgT1JJRU5UQVRJT04gPSB7XG4gIEhPUklaT05UQUw6ICdob3Jpem9udGFsJyxcbiAgVkVSVElDQUw6ICd2ZXJ0aWNhbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBPcmllbnRhdGlvbiA9ICh0eXBlb2YgT1JJRU5UQVRJT04pW2tleW9mIHR5cGVvZiBPUklFTlRBVElPTl07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmltcG9ydCB0eXBlIHsgQnJlYWtwb2ludCB9IGZyb20gJ0AvdHlwZXMvQnJlYWtwb2ludCc7XG5cbmV4cG9ydCBjb25zdCBDU1MgPSB7XG4gIHdpdGhCcmVha3BvaW50OiAodXRpbGl0aWVzOiBzdHJpbmdbXSwgYnJlYWtwb2ludDogQnJlYWtwb2ludCk6IHN0cmluZ1tdID0+IHtcbiAgICByZXR1cm4gdXRpbGl0aWVzLm1hcCgodXRpbGl0eSkgPT4gYCR7YnJlYWtwb2ludH0tJHt1dGlsaXR5fWApO1xuICB9LFxuICBBTElHTjoge1xuICAgIFg6IHtcbiAgICAgIENFTlRFUjogJ3RpZGUtdGV4dC1jZW50ZXInLFxuICAgICAgSlVTVElGWTogJ3RpZGUtdGV4dC1qdXN0aWZ5JyxcbiAgICAgIExFRlQ6ICd0aWRlLXRleHQtbGVmdCcsXG4gICAgICBSSUdIVDogJ3RpZGUtdGV4dC1yaWdodCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBJTklUSUFMOiAndGlkZS1hbGlnbi1pbml0aWFsJyxcbiAgICAgIE1JRERMRTogJ3RpZGUtYWxpZ24tbWlkZGxlJyxcbiAgICB9LFxuICB9LFxuICBBWElTMToge1xuICAgIEFST1VORDogJ3RpZGUtYXhpczEtYXJvdW5kJyxcbiAgICBCRVRXRUVOOiAndGlkZS1heGlzMS1iZXR3ZWVuJyxcbiAgICBDRU5URVI6ICd0aWRlLWF4aXMxLWNlbnRlcicsXG4gICAgRU5EOiAndGlkZS1heGlzMS1lbmQnLFxuICAgIFNUQVJUOiAndGlkZS1heGlzMS1zdGFydCcsXG4gIH0sXG4gIEFYSVMyOiB7XG4gICAgQVJPVU5EOiAndGlkZS1heGlzMi1hcm91bmQnLFxuICAgIENFTlRFUjogJ3RpZGUtYXhpczItY2VudGVyJyxcbiAgICBFTkQ6ICd0aWRlLWF4aXMyLWVuZCcsXG4gICAgU1RBUlQ6ICd0aWRlLWF4aXMyLXN0YXJ0JyxcbiAgICBTVFJFVENIOiAndGlkZS1heGlzMi1zdHJldGNoJyxcbiAgfSxcbiAgQkc6IHtcbiAgICBHTE9CQUw6IHtcbiAgICAgIFBSSU1BUlk6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWJnLXByaW1hcnktZXJyb3InLFxuICAgICAgICBJTkZPOiAndGlkZS1iZy1wcmltYXJ5LWluZm8nLFxuICAgICAgICBTVUNDRVNTOiAndGlkZS1iZy1wcmltYXJ5LXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1iZy1wcmltYXJ5LXdhcm5pbmcnLFxuICAgICAgfSxcbiAgICAgIFNVUkZBQ0U6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWJnLXN1cmZhY2UtZXJyb3InLFxuICAgICAgICBJTkZPOiAndGlkZS1iZy1zdXJmYWNlLWluZm8nLFxuICAgICAgICBTVUNDRVNTOiAndGlkZS1iZy1zdXJmYWNlLXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1iZy1zdXJmYWNlLXdhcm5pbmcnLFxuXG4gICAgICAgIEJMVUU6ICd0aWRlLWJnLXN1cmZhY2UtYmx1ZScsXG4gICAgICAgIEdSRUVOOiAndGlkZS1iZy1zdXJmYWNlLWdyZWVuJyxcbiAgICAgICAgTElNRTogJ3RpZGUtYmctc3VyZmFjZS1saW1lJyxcbiAgICAgICAgT1JBTkdFOiAndGlkZS1iZy1zdXJmYWNlLW9yYW5nZScsXG4gICAgICAgIFBVUlBMRTogJ3RpZGUtYmctc3VyZmFjZS1wdXJwbGUnLFxuICAgICAgICBSRUQ6ICd0aWRlLWJnLXN1cmZhY2UtcmVkJyxcbiAgICAgICAgU0FMTU9OOiAndGlkZS1iZy1zdXJmYWNlLXNhbG1vbicsXG4gICAgICAgIFRFQUw6ICd0aWRlLWJnLXN1cmZhY2UtdGVhbCcsXG4gICAgICAgIFlFTExPVzogJ3RpZGUtYmctc3VyZmFjZS15ZWxsb3cnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIElOSVRJQUw6ICd0aWRlLWJnLWluaXRpYWwnLFxuICAgIEJMVVI6ICd0aWRlLWJnLWJsdXInLFxuICAgIFBSSU1BUlk6ICd0aWRlLWJnLXByaW1hcnknLFxuICAgIFNFQ09OREFSWTogJ3RpZGUtYmctc2Vjb25kYXJ5JyxcbiAgICBTVVJGQUNFOiB7XG4gICAgICBBQ0NFTlQ6ICd0aWRlLWJnLXN1cmZhY2UtYWNjZW50JyxcbiAgICAgIEJSQU5EOiAndGlkZS1iZy1zdXJmYWNlLWJyYW5kJyxcbiAgICAgIERFRkFVTFQ6ICd0aWRlLWJnLXN1cmZhY2UnLFxuICAgICAgRkxPQVRJTkc6ICd0aWRlLWJnLXN1cmZhY2UtZmxvYXRpbmcnLFxuICAgICAgR1JBRElFTlQ6ICd0aWRlLWJnLXN1cmZhY2UtZ3JhZGllbnQnLFxuICAgICAgSU5WRVJTRTogJ3RpZGUtYmctc3VyZmFjZS1pbnZlcnNlJyxcbiAgICAgIFZBUklBTlQ6ICd0aWRlLWJnLXN1cmZhY2UtdmFyaWFudCcsXG4gICAgfSxcbiAgICBUUkFOU1BBUkVOVDoge1xuICAgICAgT05FX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTEwMCcsXG4gICAgICBUV09fSFVORFJFRDogJ3RpZGUtdHJhbnNwYXJlbnQtMjAwJyxcbiAgICAgIFRIUkVFX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTMwMCcsXG4gICAgICBGT1VSX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTQwMCcsXG4gICAgfSxcbiAgfSxcbiAgQk9SREVSOiB7XG4gICAgQ09MT1I6IHtcbiAgICAgIEdMT0JBTDoge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYm9yZGVyLWVycm9yJyxcbiAgICAgICAgSU5GTzogJ3RpZGUtYm9yZGVyLWluZm8nLFxuICAgICAgICBTVUNDRVNTOiAndGlkZS1ib3JkZXItc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJvcmRlci13YXJuaW5nJyxcblxuICAgICAgICBCTFVFOiAndGlkZS1ib3JkZXItYmx1ZScsXG4gICAgICAgIEdSRUVOOiAndGlkZS1ib3JkZXItZ3JlZW4nLFxuICAgICAgICBMSU1FOiAndGlkZS1ib3JkZXItbGltZScsXG4gICAgICAgIE9SQU5HRTogJ3RpZGUtYm9yZGVyLW9yYW5nZScsXG4gICAgICAgIFBVUlBMRTogJ3RpZGUtYm9yZGVyLXB1cnBsZScsXG4gICAgICAgIFJFRDogJ3RpZGUtYm9yZGVyLXJlZCcsXG4gICAgICAgIFNBTE1PTjogJ3RpZGUtYm9yZGVyLXNhbG1vbicsXG4gICAgICAgIFRFQUw6ICd0aWRlLWJvcmRlci10ZWFsJyxcbiAgICAgICAgWUVMTE9XOiAndGlkZS1ib3JkZXIteWVsbG93JyxcbiAgICAgIH0sXG4gICAgICBJTklUSUFMOiAndGlkZS1ib3JkZXItY29sb3ItaW5pdGlhbCcsXG4gICAgICBERUZBVUxUOiAndGlkZS1ib3JkZXInLFxuICAgICAgRkxPQVRJTkc6ICd0aWRlLWJvcmRlci1mbG9hdGluZycsXG4gICAgICBISUdIOiAndGlkZS1ib3JkZXItaGlnaCcsXG4gICAgICBMT1c6ICd0aWRlLWJvcmRlci1sb3cnLFxuICAgICAgUFJJTUFSWTogJ3RpZGUtYm9yZGVyLXByaW1hcnknLFxuICAgIH0sXG4gICAgUkFESVVTOiB7XG4gICAgICBaRVJPOiAndGlkZS1yYWRpdXMtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1yYWRpdXMtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXJhZGl1cy0xLzInLFxuICAgICAgT05FOiAndGlkZS1yYWRpdXMtMScsXG4gICAgICBGVUxMOiAndGlkZS1yYWRpdXMtZnVsbCcsXG4gICAgfSxcbiAgICBTVFlMRToge1xuICAgICAgREFTSEVEOiAndGlkZS1ib3JkZXItZGFzaGVkJyxcbiAgICAgIFNPTElEOiAndGlkZS1ib3JkZXItc29saWQnLFxuICAgIH0sXG4gICAgQk9UVE9NOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItYm90dG9tLTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItYm90dG9tLTInLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci0yJyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci1sZWZ0LTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItbGVmdC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLWxlZnQtMicsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLXJpZ2h0LTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItcmlnaHQtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci1yaWdodC0yJyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLXRvcC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLXRvcC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLXRvcC0yJyxcbiAgICB9LFxuICB9LFxuICBCT1hfU0laSU5HOiB7XG4gICAgQk9SREVSX0JPWDogJ3RpZGUtYm94LWJvcmRlcicsXG4gICAgQ09OVEVOVF9CT1g6ICd0aWRlLWJveC1jb250ZW50JyxcbiAgfSxcbiAgQlJFQUtfSU5TSURFOiB7XG4gICAgQVZPSURfQ09MVU1OOiAndGlkZS1icmVhay1pbnNpZGUtYXZvaWQtY29sdW1uJyxcbiAgfSxcbiAgQlJFQUtfV09SRDoge1xuICAgIE9GRjogJ3RpZGUtYnJlYWstaW5pdGlhbCcsXG4gICAgT046ICd0aWRlLWJyZWFrLXdvcmQnLFxuICB9LFxuICBDT0xVTU5TOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtY29sdW1ucy1pbml0aWFsJyxcbiAgICBPTkU6ICd0aWRlLWNvbHVtbnMtMScsXG4gICAgVFdPOiAndGlkZS1jb2x1bW5zLTInLFxuICAgIFRIUkVFOiAndGlkZS1jb2x1bW5zLTMnLFxuICAgIEZPVVI6ICd0aWRlLWNvbHVtbnMtNCcsXG4gIH0sXG4gIENVUlNPUjoge1xuICAgIE5PVF9BTExPV0VEOiAndGlkZS1jdXJzb3Itbm90LWFsbG93ZWQnLFxuICAgIFBPSU5URVI6ICd0aWRlLWN1cnNvci1wb2ludGVyJyxcbiAgICBURVhUOiAndGlkZS1jdXJzb3ItdGV4dCcsXG4gIH0sXG4gIERJU1BMQVk6IHtcbiAgICBCTE9DSzogJ3RpZGUtZGlzcGxheS1ibG9jaycsXG4gICAgQ09OVEVOVFM6ICd0aWRlLWRpc3BsYXktY29udGVudHMnLFxuICAgIEZMRVg6ICd0aWRlLWRpc3BsYXktZmxleCcsXG4gICAgR1JJRDogJ3RpZGUtZGlzcGxheS1ncmlkJyxcbiAgICBJTklUSUFMOiAndGlkZS1kaXNwbGF5LWluaXRpYWwnLFxuICAgIElOTElORTogJ3RpZGUtZGlzcGxheS1pbmxpbmUnLFxuICAgIElOTElORV9CTE9DSzogJ3RpZGUtZGlzcGxheS1pbmxpbmUtYmxvY2snLFxuICAgIElOTElORV9GTEVYOiAndGlkZS1kaXNwbGF5LWlubGluZS1mbGV4JyxcbiAgICBOT05FOiAndGlkZS1kaXNwbGF5LW5vbmUnLFxuICB9LFxuICBFTExJUFNJUzogJ3RpZGUtZWxsaXBzaXMnLFxuICBGTEVYOiB7XG4gICAgQkFTSVM6IHtcbiAgICAgIEFVVE86ICd0aWRlLWZsZXgtYmFzaXMtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1mbGV4LWJhc2lzLTAnLFxuICAgIH0sXG4gICAgRElSRUNUSU9OOiB7XG4gICAgICBDT0xVTU46ICd0aWRlLWZsZXgtY29sdW1uJyxcbiAgICAgIENPTFVNTl9SRVZFUlNFOiAndGlkZS1mbGV4LWNvbHVtbi1yZXZlcnNlJyxcbiAgICAgIFJPVzogJ3RpZGUtZmxleC1yb3cnLFxuICAgICAgUk9XX1JFVkVSU0U6ICd0aWRlLWZsZXgtcm93LXJldmVyc2UnLFxuICAgIH0sXG4gICAgR1JPVzoge1xuICAgICAgT0ZGOiAndGlkZS1ncm93LW5vbmUnLFxuICAgICAgT046ICd0aWRlLWdyb3cnLFxuICAgIH0sXG4gICAgU0hSSU5LOiB7XG4gICAgICBPRkY6ICd0aWRlLXNocmluay1ub25lJyxcbiAgICAgIE9OOiAndGlkZS1zaHJpbmsnLFxuICAgIH0sXG4gICAgV1JBUDogJ3RpZGUtZmxleC13cmFwJyxcbiAgfSxcbiAgRk9OVDoge1xuICAgIENPTE9SOiB7XG4gICAgICBHTE9CQUw6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWZvbnQtZXJyb3InLFxuICAgICAgICBJTkZPOiAndGlkZS1mb250LWluZm8nLFxuICAgICAgICBTVUNDRVNTOiAndGlkZS1mb250LXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1mb250LXdhcm5pbmcnLFxuXG4gICAgICAgIEJMVUU6ICd0aWRlLWZvbnQtYmx1ZScsXG4gICAgICAgIEdSRUVOOiAndGlkZS1mb250LWdyZWVuJyxcbiAgICAgICAgTElNRTogJ3RpZGUtZm9udC1saW1lJyxcbiAgICAgICAgT1JBTkdFOiAndGlkZS1mb250LW9yYW5nZScsXG4gICAgICAgIFBVUlBMRTogJ3RpZGUtZm9udC1wdXJwbGUnLFxuICAgICAgICBSRUQ6ICd0aWRlLWZvbnQtcmVkJyxcbiAgICAgICAgU0FMTU9OOiAndGlkZS1mb250LXNhbG1vbicsXG4gICAgICAgIFRFQUw6ICd0aWRlLWZvbnQtdGVhbCcsXG4gICAgICAgIFlFTExPVzogJ3RpZGUtZm9udC15ZWxsb3cnLFxuXG4gICAgICAgIFBSSU1BUlk6IHtcbiAgICAgICAgICBCTFVFOiAndGlkZS1mb250LXByaW1hcnktYmx1ZScsXG4gICAgICAgICAgR1JFRU46ICd0aWRlLWZvbnQtcHJpbWFyeS1ncmVlbicsXG4gICAgICAgICAgTElNRTogJ3RpZGUtZm9udC1wcmltYXJ5LWxpbWUnLFxuICAgICAgICAgIE9SQU5HRTogJ3RpZGUtZm9udC1wcmltYXJ5LW9yYW5nZScsXG4gICAgICAgICAgUFVSUExFOiAndGlkZS1mb250LXByaW1hcnktcHVycGxlJyxcbiAgICAgICAgICBSRUQ6ICd0aWRlLWZvbnQtcHJpbWFyeS1yZWQnLFxuICAgICAgICAgIFNBTE1PTjogJ3RpZGUtZm9udC1wcmltYXJ5LXNhbG1vbicsXG4gICAgICAgICAgVEVBTDogJ3RpZGUtZm9udC1wcmltYXJ5LXRlYWwnLFxuICAgICAgICAgIFlFTExPVzogJ3RpZGUtZm9udC1wcmltYXJ5LXllbGxvdycsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgUFJJTUFSWTogJ3RpZGUtZm9udC1vbi1wcmltYXJ5JyxcbiAgICAgIFNFQ09OREFSWTogJ3RpZGUtZm9udC1vbi1zZWNvbmRhcnknLFxuICAgICAgU1VSRkFDRToge1xuICAgICAgICBCUkFORDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLWJyYW5kJyxcbiAgICAgICAgREVGQVVMVDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlJyxcbiAgICAgICAgSU5WRVJTRTogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLWludmVyc2UnLFxuICAgICAgICBWQVJJQU5UOiAndGlkZS1mb250LW9uLXN1cmZhY2UtdmFyaWFudCcsXG4gICAgICAgIFZBUklBTlRfSU5WRVJTRTogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLXZhcmlhbnQtaW52ZXJzZScsXG4gICAgICB9LFxuICAgIH0sXG4gICAgUk9MRToge1xuICAgICAgRElTUExBWV8xOiAndGlkZS10eXBvZ3JhcGh5LWRpc3BsYXktMScsXG4gICAgICBIRUFETElORV8xOiAndGlkZS10eXBvZ3JhcGh5LWhlYWRsaW5lLTEnLFxuICAgICAgSEVBRExJTkVfMjogJ3RpZGUtdHlwb2dyYXBoeS1oZWFkbGluZS0yJyxcbiAgICAgIEhFQURMSU5FXzM6ICd0aWRlLXR5cG9ncmFwaHktaGVhZGxpbmUtMycsXG4gICAgICBUSVRMRV8xOiAndGlkZS10eXBvZ3JhcGh5LXRpdGxlLTEnLFxuICAgICAgVElUTEVfMjogJ3RpZGUtdHlwb2dyYXBoeS10aXRsZS0yJyxcbiAgICAgIEJPRFlfMTogJ3RpZGUtdHlwb2dyYXBoeS1ib2R5LTEnLFxuICAgICAgQk9EWV8yOiAndGlkZS10eXBvZ3JhcGh5LWJvZHktMicsXG4gICAgICBMQUJFTF8xOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTEnLFxuICAgICAgTEFCRUxfMV9TRU1JQk9MRDogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0xLXNlbWlib2xkJyxcbiAgICAgIExBQkVMXzI6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMicsXG4gICAgICBMQUJFTF8yX1NFTUlCT0xEOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTItc2VtaWJvbGQnLFxuICAgICAgTEFCRUxfMzogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0zJyxcbiAgICAgIExJTktfMTogJ3RpZGUtdHlwb2dyYXBoeS1saW5rLTEnLFxuICAgICAgTElOS18yOiAndGlkZS10eXBvZ3JhcGh5LWxpbmstMicsXG4gICAgICBMSU5LXzM6ICd0aWRlLXR5cG9ncmFwaHktbGluay0zJyxcbiAgICAgIEJVVFRPTl8xOiAndGlkZS10eXBvZ3JhcGh5LWJ1dHRvbi0xJyxcbiAgICAgIEJVVFRPTl8yOiAndGlkZS10eXBvZ3JhcGh5LWJ1dHRvbi0yJyxcbiAgICB9LFxuICAgIFNJWkU6IHtcbiAgICAgIFRXRUxWRTogJ3RpZGUtZm9udC0xMicsXG4gICAgICBGT1VSVEVFTjogJ3RpZGUtZm9udC0xNCcsXG4gICAgICBTSVhURUVOOiAndGlkZS1mb250LTE2JyxcbiAgICAgIFRXRU5UWTogJ3RpZGUtZm9udC0yMCcsXG4gICAgICBUV0VOVFlfRk9VUjogJ3RpZGUtZm9udC0yNCcsXG4gICAgICBUSElSVFlfVFdPOiAndGlkZS1mb250LTMyJyxcbiAgICB9LFxuICAgIFdFSUdIVDoge1xuICAgICAgRk9VUl9IVU5EUkVEOiAndGlkZS1mb250LTQwMCcsXG4gICAgICBGSVZFX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNTAwJyxcbiAgICAgIFNJWF9IVU5EUkVEOiAndGlkZS1mb250LTYwMCcsXG4gICAgICBTRVZFTl9IVU5EUkVEOiAndGlkZS1mb250LTcwMCcsXG4gICAgfSxcbiAgfSxcbiAgR0FQOiB7XG4gICAgWkVSTzogJ3RpZGUtZ2FwLTAnLFxuICAgIFFVQVJURVI6ICd0aWRlLWdhcC0xLzQnLFxuICAgIEhBTEY6ICd0aWRlLWdhcC0xLzInLFxuICAgIE9ORTogJ3RpZGUtZ2FwLTEnLFxuICAgIFRXTzogJ3RpZGUtZ2FwLTInLFxuICAgIEZPVVI6ICd0aWRlLWdhcC00JyxcbiAgfSxcbiAgR1JJRDoge1xuICAgIEZMVUlEOiAndGlkZS1mbHVpZCcsXG4gICAgSVRFTTogJ3RpZGUtZ3JpZC1pdGVtJyxcbiAgICBMQVlPVVQ6ICd0aWRlLWdyaWQtbGF5b3V0JyxcbiAgICBYTDogJ3RpZGUtZ3JpZC14bCcsXG4gIH0sXG4gIEhFSUdIVDoge1xuICAgIEFVVE86ICd0aWRlLWhlaWdodC1hdXRvJyxcbiAgICBaRVJPOiAndGlkZS1oZWlnaHQtMCcsXG4gICAgRlVMTDogJ3RpZGUtaGVpZ2h0LWZ1bGwnLFxuICAgIE1BWF9GVUxMOiAndGlkZS1tYXgtaGVpZ2h0LWZ1bGwnLFxuICAgIE1JTl9aRVJPOiAndGlkZS1taW4taGVpZ2h0LTAnLFxuICB9LFxuICBJU09MQVRJT046IHtcbiAgICBJU09MQVRFOiAndGlkZS1pc29sYXRlJyxcbiAgfSxcbiAgTElTVF9CVUxMRVRTOiB7XG4gICAgT0ZGOiAndGlkZS1saXN0LW5vbmUnLFxuICB9LFxuICBNQVJHSU46IHtcbiAgICBCT1RUT006IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1ib3R0b20tYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tYm90dG9tLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLWJvdHRvbS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLWJvdHRvbS0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tYm90dG9tLTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLWJvdHRvbS00JyxcbiAgICB9LFxuICAgIEZVTEw6IHtcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLTQnLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLWxlZnQtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tbGVmdC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1sZWZ0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tbGVmdC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tbGVmdC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLWxlZnQtMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tbGVmdC00JyxcbiAgICB9LFxuICAgIFJJR0hUOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tcmlnaHQtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tcmlnaHQtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tcmlnaHQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1yaWdodC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tcmlnaHQtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1yaWdodC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1yaWdodC00JyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLXRvcC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi10b3AtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tdG9wLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tdG9wLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi10b3AtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi10b3AtMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tdG9wLTQnLFxuICAgIH0sXG4gICAgWDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLXgtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4teC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi14LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4teC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4teC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXgtMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4teC00JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi15LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXktMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi15LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi15LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4teS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi15LTQnLFxuICAgIH0sXG4gIH0sXG4gIE9CSkVDVDoge1xuICAgIENFTlRFUjogJ3RpZGUtb2JqZWN0LWNlbnRlcicsXG4gICAgQ09OVEFJTjogJ3RpZGUtb2JqZWN0LWNvbnRhaW4nLFxuICAgIENPVkVSOiAndGlkZS1vYmplY3QtY292ZXInLFxuICAgIFNDQUxFX0RPV046ICd0aWRlLW9iamVjdC1zY2FsZS1kb3duJyxcbiAgfSxcbiAgT1BBQ0lUWToge1xuICAgIERJU0FCTEVEOiAndGlkZS1vcGFjaXR5LWRpc2FibGVkJyxcbiAgICBPRkY6ICd0aWRlLW9wYWNpdHktbm9uZScsXG4gICAgT046ICd0aWRlLW9wYWNpdHknLFxuICB9LFxuICBPVkVSRkxPVzoge1xuICAgIFg6IHtcbiAgICAgIEFVVE86ICd0aWRlLXgtYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXgtaGlkZGVuJyxcbiAgICAgIFNDUk9MTDogJ3RpZGUteC1zY3JvbGwnLFxuICAgIH0sXG4gICAgWFk6IHtcbiAgICAgIEFVVE86ICd0aWRlLXh5LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS14eS1oaWRkZW4nLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgQVVUTzogJ3RpZGUteS1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteS1oaWRkZW4nLFxuICAgIH0sXG4gIH0sXG4gIFBBRERJTkc6IHtcbiAgICBCT1RUT006IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctYm90dG9tLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1ib3R0b20tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctYm90dG9tLTQnLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctNCcsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLWxlZnQtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLWxlZnQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctbGVmdC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLWxlZnQtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctbGVmdC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctbGVmdC00JyxcbiAgICB9LFxuICAgIFJJR0hUOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1yaWdodC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy1yaWdodC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy1yaWdodC00JyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy10b3AtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXRvcC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy10b3AtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy10b3AtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctdG9wLTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy10b3AtNCcsXG4gICAgfSxcbiAgICBYOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXgtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXgtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmcteC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXgtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmcteC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmcteC00JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmcteS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmcteS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy15LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmcteS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy15LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy15LTQnLFxuICAgIH0sXG4gIH0sXG4gIFBPSU5URVJfRVZFTlRTOiB7XG4gICAgT0ZGOiAndGlkZS1wb2ludGVyLWV2ZW50cy1ub25lJyxcbiAgICBPTjogJ3RpZGUtcG9pbnRlci1ldmVudHMnLFxuICB9LFxuICBQT1NJVElPTjoge1xuICAgIEFCU09MVVRFOiAndGlkZS1wb3NpdGlvbi1hYnNvbHV0ZScsXG4gICAgRklYRUQ6ICd0aWRlLXBvc2l0aW9uLWZpeGVkJyxcbiAgICBSRUxBVElWRTogJ3RpZGUtcG9zaXRpb24tcmVsYXRpdmUnLFxuICAgIFNUQVRJQzogJ3RpZGUtcG9zaXRpb24tc3RhdGljJyxcbiAgICBTVElDS1k6ICd0aWRlLXBvc2l0aW9uLXN0aWNreScsXG4gIH0sXG4gIFBPU0lUSU9OSU5HOiB7XG4gICAgQk9UVE9NOiAndGlkZS1ib3R0b20tMCcsXG4gICAgTEVGVDogJ3RpZGUtbGVmdC0wJyxcbiAgICBSSUdIVDogJ3RpZGUtcmlnaHQtMCcsXG4gICAgVE9QOiAndGlkZS10b3AtMCcsXG4gIH0sXG4gIFJBVElPOiB7XG4gICAgT05FX1RPX09ORTogJ3RpZGUtcmF0aW8tMS8xJyxcbiAgICBTSVhURUVOX1RPX05JTkU6ICd0aWRlLXJhdGlvLTE2LzknLFxuICAgIFRIUkVFX1RPX1RXTzogJ3RpZGUtcmF0aW8tMy8yJyxcbiAgfSxcbiAgU0NST0xMQkFSOiB7XG4gICAgT0ZGOiAndGlkZS1zY3JvbGxiYXItbm9uZScsXG4gIH0sXG4gIFNIQURPVzoge1xuICAgIElOSVRJQUw6ICd0aWRlLXNoYWRvdy1pbml0aWFsJyxcbiAgICBCT1RUT006ICd0aWRlLXNoYWRvdy1ib3R0b20nLFxuICAgIFRPUDogJ3RpZGUtc2hhZG93LXRvcCcsXG4gICAgVEVYVDogJ3RpZGUtc2hhZG93LXRleHQnLFxuICB9LFxuICBTTkFQOiB7XG4gICAgT046ICd0aWRlLXNjcm9sbC1zbmFwJyxcbiAgfSxcbiAgU05BUF9BTElHTjoge1xuICAgIFNUQVJUOiAndGlkZS1zY3JvbGwtc25hcC1zdGFydCcsXG4gIH0sXG4gIFNUUklLRVRIUk9VR0g6IHtcbiAgICBPRkY6ICd0aWRlLXN0cmlrZXRocm91Z2gtbm9uZScsXG4gICAgT046ICd0aWRlLXN0cmlrZXRocm91Z2gnLFxuICB9LFxuICBURVhUX1RSQU5TRk9STToge1xuICAgIExPV0VSOiAndGlkZS10ZXh0LXRyYW5zZm9ybS1sb3dlcicsXG4gICAgTk9ORTogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tbm9uZScsXG4gICAgVVBQRVI6ICd0aWRlLXRleHQtdHJhbnNmb3JtLXVwcGVyJyxcbiAgfSxcbiAgVU5ERVJMSU5FOiB7XG4gICAgSE9WRVI6IHtcbiAgICAgIE9OOiAndGlkZS11bmRlcmxpbmUtaG92ZXInLFxuICAgICAgT0ZGOiAndGlkZS11bmRlcmxpbmUtaG92ZXItbm9uZScsXG4gICAgfSxcbiAgICBSRVNUOiB7XG4gICAgICBPTjogJ3RpZGUtdW5kZXJsaW5lJyxcbiAgICAgIE9GRjogJ3RpZGUtdW5kZXJsaW5lLW5vbmUnLFxuICAgIH0sXG4gIH0sXG4gIFVTRVJfU0VMRUNUOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtdXNlci1zZWxlY3QtaW5pdGlhbCcsXG4gICAgTk9ORTogJ3RpZGUtdXNlci1zZWxlY3Qtbm9uZScsXG4gIH0sXG4gIFZJU0lCSUxJVFk6IHtcbiAgICBPRkY6ICd0aWRlLXZpc2libGUtbm9uZScsXG4gICAgT046ICd0aWRlLXZpc2libGUnLFxuICB9LFxuICBXSElURVNQQUNFX1dSQVA6IHtcbiAgICBPRkY6ICd0aWRlLXdoaXRlc3BhY2Utbm93cmFwJyxcbiAgfSxcbiAgV0lEVEg6IHtcbiAgICBBVVRPOiAndGlkZS13aWR0aC1hdXRvJyxcbiAgICBGVUxMOiAndGlkZS13aWR0aC1mdWxsJyxcbiAgICBNQVhfRlVMTDogJ3RpZGUtbWF4LXdpZHRoLWZ1bGwnLFxuICAgIE1JTl9aRVJPOiAndGlkZS1taW4td2lkdGgtMCcsXG4gICAgU1RSRVRDSDogJ3RpZGUtd2lkdGgtc3RyZXRjaCcsXG4gICAgWkVSTzogJ3RpZGUtd2lkdGgtMCcsXG4gIH0sXG4gIFpfSU5ERVg6IHtcbiAgICBJTklUSUFMOiAndGlkZS16LWluZGV4LWluaXRpYWwnLFxuICAgIE9ORTogJ3RpZGUtei1pbmRleC0xJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGRpdmlkZXIgY29tcG9uZW50LlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlZGl2aWRlci0tZG9jcykgZm9yIFRpZGVEaXZpZGVyXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBPUklFTlRBVElPTiB9IGZyb20gJ0AvdHlwZXMvT3JpZW50YXRpb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBPcmllbnRhdGlvbiB9IGZyb20gJ0AvdHlwZXMvT3JpZW50YXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBEaXZpZGVyIGlzIGhvcml6b250YWwgb3IgdmVydGljYWwgKi9cbiAgICBvcmllbnRhdGlvbj86IE9yaWVudGF0aW9uO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgb3JpZW50YXRpb246IE9SSUVOVEFUSU9OLkhPUklaT05UQUwsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtZGl2aWRlciddXCI+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuQk9SREVSLkNPTE9SLkxPVyxcbiAgICAgICAgcHJvcHMub3JpZW50YXRpb24gPT09IE9SSUVOVEFUSU9OLkhPUklaT05UQUxcbiAgICAgICAgICA/IFtDU1MuTUFSR0lOLlkuSEFMRiwgQ1NTLkJPUkRFUi5CT1RUT00uT05FLCBDU1MuV0lEVEguRlVMTF1cbiAgICAgICAgICA6IFtDU1MuTUFSR0lOLlguSEFMRiwgQ1NTLkJPUkRFUi5SSUdIVC5PTkUsIENTUy5IRUlHSFQuRlVMTF0sXG4gICAgICBdXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWRpdmlkZXIge1xuICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgUkVBTE0gPSB7XG4gIEFFUk86ICdhZXJvJyxcbiAgQVRWOiAnYXR2JyxcbiAgQk9BVE1BUlQ6ICdib2F0bWFydCcsXG4gIENZQ0xFOiAnY3ljbGUnLFxuICBFUVVJUE1FTlQ6ICdlcXVpcG1lbnQnLFxuICBQV0M6ICdwd2MnLFxuICBSVjogJ3J2JyxcbiAgU05PVzogJ3Nub3cnLFxuICBUUlVDSzogJ3RydWNrJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFJlYWxtS2V5ID0ga2V5b2YgdHlwZW9mIFJFQUxNO1xuZXhwb3J0IHR5cGUgUmVhbG0gPSAodHlwZW9mIFJFQUxNKVtSZWFsbUtleV07XG4iLCJleHBvcnQgY29uc3QgU0laRSA9IHtcbiAgTEFSR0U6ICdsYXJnZScsXG4gIFNNQUxMOiAnc21hbGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2l6ZSA9ICh0eXBlb2YgU0laRSlba2V5b2YgdHlwZW9mIFNJWkVdO1xuXG5leHBvcnQgY29uc3QgU0laRV9CVVRUT04gPSB7XG4gIExBUkdFOiAnbGFyZ2UnLFxuICBTTUFMTDogJ3NtYWxsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFNpemVCdXR0b24gPSAodHlwZW9mIFNJWkUpW2tleW9mIHR5cGVvZiBTSVpFXTtcbiIsImNvbnN0IGNhcGl0YWxpemVGaXJzdCA9IChzdHJpbmc6IHN0cmluZykgPT4ge1xuICByZXR1cm4gc3RyaW5nLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyaW5nLnNsaWNlKDEpO1xufTtcblxuY29uc3QgZm9ybWF0Q2FtZWxDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoL15bXFxzXy1dLywgJycpXG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5tYXAoKHdvcmQsIGluZGV4KSA9PiAoaW5kZXggPT09IDAgPyB3b3JkIDogd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSkpXG4gICAgICAgIC5qb2luKCcnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRLZWJhYkNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJy0nKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRMYWJlbCA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGxhYmVsTWFwOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgIGZhbHNlOiAnTm8nLFxuICAgIHRydWU6ICdZZXMnLFxuICB9O1xuICByZXR1cm4gT2JqZWN0Lmhhc093bihsYWJlbE1hcCwgdmFsdWUpID8gbGFiZWxNYXBbdmFsdWVdIDogdmFsdWU7XG59O1xuXG5jb25zdCBmb3JtYXROdW1iZXIgPSAoaW5wdXQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBvdXRwdXQgPSBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInID8gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KGlucHV0KSA6IFN0cmluZyhpbnB1dCB8fCAnJyk7XG4gIGxldCBkaWdpdHMgPSBvdXRwdXQ7XG5cbiAgaWYgKGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICBkaWdpdHMgPSBkaWdpdHMucmVwbGFjZSgvXFxEL2csICcnKTtcbiAgICBpZiAoTnVtYmVyKGRpZ2l0cykpIHtcbiAgICAgIG91dHB1dCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdChOdW1iZXIoZGlnaXRzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dHB1dCA9ICcwJztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuY29uc3QgZm9ybWF0UGFzY2FsQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5tYXAoKHdvcmQpID0+IHdvcmQuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkpXG4gICAgICAgIC5qb2luKCcnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQaG9uZSA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgPyBTdHJpbmcoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcnKTtcbiAgbGV0IGRpZ2l0cyA9IG91dHB1dDtcbiAgZGlnaXRzID0gZGlnaXRzLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG5cbiAgc3dpdGNoIChkaWdpdHMubGVuZ3RoKSB7XG4gICAgY2FzZSA3OlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDMpfS0ke2RpZ2l0cy5zbGljZSgzKX1gO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMDpcbiAgICAgIG91dHB1dCA9IGAke2RpZ2l0cy5zbGljZSgwLCAzKX0tJHtkaWdpdHMuc2xpY2UoMywgNil9LSR7ZGlnaXRzLnNsaWNlKDYpfWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDExOlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDEpfS0ke2RpZ2l0cy5zbGljZSgxLCA0KX0tJHtkaWdpdHMuc2xpY2UoNCwgNyl9LSR7ZGlnaXRzLnNsaWNlKDcpfWA7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgb3V0cHV0ID0gZGlnaXRzO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuY29uc3QgZm9ybWF0UHJpY2UgPSAoaW5wdXQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG91dHB1dCA9IGlucHV0ID8gZm9ybWF0TnVtYmVyKGlucHV0KSA6IFN0cmluZyhpbnB1dCB8fCAnMCcpO1xuICByZXR1cm4gYCQke291dHB1dH1gO1xufTtcblxuY29uc3QgZm9ybWF0UXVvdGVzID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJ1wiJykgJiYgdmFsdWUuZW5kc1dpdGgoJ1wiJykpIHtcbiAgICByZXR1cm4gdmFsdWUuc2xpY2UoMSwgLTEpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuY29uc3QgZm9ybWF0U2VudGVuY2VDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgc2VudGVuY2VDYXNlID0gaW5wdXQ7XG5cbiAgaWYgKGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBsb3dlckNhc2UgPSBpbnB1dFxuICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJyAnKTtcblxuICAgIHNlbnRlbmNlQ2FzZSA9IGxvd2VyQ2FzZS5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgbG93ZXJDYXNlLnNsaWNlKDEpO1xuICB9XG5cbiAgcmV0dXJuIHNlbnRlbmNlQ2FzZTtcbn07XG5cbmNvbnN0IGZvcm1hdFNuYWtlQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnXycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFRpdGxlQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5tYXAoKHdvcmQpID0+IHdvcmQuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkpXG4gICAgICAgIC5qb2luKCcgJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0VXJsRnJvbVJvb3QgPSAodXJsOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgdXJsRm9ybWF0dGVkID0gdXJsLnNwbGl0KCcuY29tLycpO1xuXG4gIHJldHVybiB1cmxGb3JtYXR0ZWQubGVuZ3RoID4gMSA/IGAvJHt1cmxGb3JtYXR0ZWRbMV19YCA6IHVybDtcbn07XG5cbmNvbnN0IGZvcm1hdFdlaWdodCA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQgPyBmb3JtYXROdW1iZXIoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcwJyk7XG4gIHJldHVybiBgJHtvdXRwdXR9IGxic2A7XG59O1xuXG5jb25zdCBnZXRBcnRpY2xlID0gKG5vdW46IHN0cmluZywgaXNQbHVyYWwgPSBmYWxzZSwgaXNEZWZpbml0ZSA9IGZhbHNlKSA9PiB7XG4gIGNvbnN0IHZvd2VscyA9IFsnYScsICdlJywgJ2knLCAnbycsICd1J107XG4gIGNvbnN0IGlzVm93ZWxMZWFkaW5nID0gdm93ZWxzLmluY2x1ZGVzKG5vdW4uY2hhckF0KDApKTtcblxuICByZXR1cm4gaXNEZWZpbml0ZSA/ICd0aGUnIDogaXNQbHVyYWwgPyAnc29tZScgOiBpc1Zvd2VsTGVhZGluZyA/ICdhbicgOiAnYSc7XG59O1xuXG5jb25zdCBwcmljZVRvTnVtYmVyID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgaWYgKE51bWJlci5pc05hTihOdW1iZXIodmFsdWUpKSkge1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgnJCcsICcnKTtcbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoLywvZywgJycpO1xuICB9XG4gIHJldHVybiBwYXJzZUludCh2YWx1ZSwgMTApO1xufTtcblxuY29uc3QgdW5mb3JtYXRQcmljZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQucmVwbGFjZSgvXFwkL2csICcnKS5yZXBsYWNlKC8sL2csICcnKTtcbiAgcmV0dXJuIGAke291dHB1dH1gO1xufTtcblxuZXhwb3J0IHtcbiAgY2FwaXRhbGl6ZUZpcnN0LFxuICBmb3JtYXRDYW1lbENhc2UsXG4gIGZvcm1hdEtlYmFiQ2FzZSxcbiAgZm9ybWF0TGFiZWwsXG4gIGZvcm1hdE51bWJlcixcbiAgZm9ybWF0UGFzY2FsQ2FzZSxcbiAgZm9ybWF0UGhvbmUsXG4gIGZvcm1hdFByaWNlLFxuICBmb3JtYXRRdW90ZXMsXG4gIGZvcm1hdFNlbnRlbmNlQ2FzZSxcbiAgZm9ybWF0U25ha2VDYXNlLFxuICBmb3JtYXRUaXRsZUNhc2UsXG4gIGZvcm1hdFVybEZyb21Sb290LFxuICBmb3JtYXRXZWlnaHQsXG4gIGdldEFydGljbGUsXG4gIHByaWNlVG9OdW1iZXIsXG4gIHVuZm9ybWF0UHJpY2UsXG59O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYW4gaWNvbiBjb21wb25lbnQuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVpY29uLS1kb2NzKSBmb3IgVGlkZUljb25cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGRlZmluZUFzeW5jQ29tcG9uZW50LCBtYXJrUmF3LCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBSRUFMTSB9IGZyb20gJ0AvdHlwZXMvUmVhbG0nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBmb3JtYXRQYXNjYWxDYXNlIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFNpemUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgdHlwZSB7IENvbXBvbmVudCB9IGZyb20gJ3Z1ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogSWNvbiAqL1xuICAgIGljb246IEljb247XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBpY29uIGRpbWVuc2lvbnMgKi9cbiAgICBzaXplPzogU2l6ZTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHNpemU6IFNJWkUuU01BTEwsXG4gIH0pO1xuXG4gIGNvbnN0IGlubmVyU1ZHID0gcmVmPENvbXBvbmVudD4oKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5pY29uLFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGlkOiBzdHJpbmcgPSBwcm9wcy5pY29uO1xuICAgICAgY29uc3QgbmFtZSA9IGZvcm1hdFBhc2NhbENhc2UoaWQpO1xuICAgICAgY29uc3QgW3ByZWZpeF0gPSBpZC5zcGxpdCgnLScpO1xuICAgICAgY29uc3QgcmVhbG1Gb2xkZXIgPSBSRUFMTVtwcmVmaXg/LnRvVXBwZXJDYXNlKCkgYXMga2V5b2YgdHlwZW9mIFJFQUxNXTtcblxuICAgICAgY29uc3QgY29tcG9uZW50ID0gZGVmaW5lQXN5bmNDb21wb25lbnQoKCkgPT4ge1xuICAgICAgICBpZiAocmVhbG1Gb2xkZXIpIHtcbiAgICAgICAgICByZXR1cm4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2ljb25zL3JlYWxtLyR7cmVhbG1Gb2xkZXJ9L0ljb24ke25hbWV9LnN2Zz9jb21wb25lbnRgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbXBvcnQoYC4uL2Fzc2V0cy9zdmcvaWNvbnMvSWNvbiR7bmFtZX0uc3ZnP2NvbXBvbmVudGApO1xuICAgICAgfSk7XG5cbiAgICAgIGlubmVyU1ZHLnZhbHVlID0gbWFya1Jhdyhjb21wb25lbnQpO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaWNvbicsIHByb3BzLnNpemUsIENTUy5GTEVYLlNIUklOSy5PRkZdXCI+XG4gICAgPENvbXBvbmVudFxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkJMT0NLXVwiXG4gICAgICA6ZGF0YS1pY29uPVwiaWNvblwiXG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIDppcz1cImlubmVyU1ZHXCJcbiAgICAgIHYtaWY9XCJpbm5lclNWR1wiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGU+XG4gIC50aWRlLWljb24ge1xuICAgIHdpZHRoOiAxLjVyZW07XG4gICAgaGVpZ2h0OiAxLjVyZW07XG4gIH1cblxuICAudGlkZS1pY29uLnNtYWxsIHtcbiAgICB3aWR0aDogMS4yNXJlbTtcbiAgICBoZWlnaHQ6IDEuMjVyZW07XG4gIH1cblxuICAudGlkZS1pY29uIHN2ZyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHR5cGUgeyBSZWFsbUtleSB9IGZyb20gJ0AvdHlwZXMvUmVhbG0nO1xuXG5leHBvcnQgY29uc3QgSUNPTiA9IHtcbiAgQUNDT1VOVF9CQUxBTkNFOiAnYWNjb3VudC1iYWxhbmNlJyxcbiAgQUNVVEU6ICdhY3V0ZScsXG4gIEFERDogJ2FkZCcsXG4gIEFJX0RFU0NSSVBUSU9OOiAnYWktZGVzY3JpcHRpb24nLFxuICBBTElHTl9TUEFDRV9FVkVOOiAnYWxpZ24tc3BhY2UtZXZlbicsXG4gIEFQUExFX1BBWTogJ2FwcGxlLXBheScsXG4gIEFSUk9XX0JBQ0s6ICdhcnJvdy1iYWNrJyxcbiAgQVJST1dfQ1lDTEU6ICdhcnJvdy1jeWNsZScsXG4gIEFSUk9XX0ZPUldBUkQ6ICdhcnJvdy1mb3J3YXJkJyxcbiAgQVJST1dfUklHSFQ6ICdhcnJvdy1yaWdodCcsXG4gIEFSUk9XX1VQOiAnYXJyb3ctdXAnLFxuICBBU1NJR05NRU5UOiAnYXNzaWdubWVudCcsXG4gIEFUVEFDSF9NT05FWTogJ2F0dGFjaC1tb25leScsXG4gIEFVVE9fUkVORVc6ICdhdXRvLXJlbmV3JyxcbiAgQVdBUkRfU1RBUjogJ2F3YXJkLXN0YXInLFxuICBCRUQ6ICdiZWQnLFxuICBCT0xUOiAnYm9sdCcsXG4gIEJPT0tNQVJLOiAnYm9va21hcmsnLFxuICBCVU5LSE9VU0U6ICdidW5raG91c2UnLFxuICBDQUxDVUxBVEU6ICdjYWxjdWxhdGUnLFxuICBDQUxFTkRBUl9NT05USDogJ2NhbGVuZGFyLW1vbnRoJyxcbiAgQ0FMTDogJ2NhbGwnLFxuICBDQUxMX1FVQUxJVFk6ICdjYWxsLXF1YWxpdHknLFxuICBDQVJfUkVOVEFMOiAnY2FyLXJlbnRhbCcsXG4gIENIRUNLOiAnY2hlY2snLFxuICBDSEVWUk9OX0xFRlQ6ICdjaGV2cm9uLWxlZnQnLFxuICBDSEVWUk9OX1JJR0hUOiAnY2hldnJvbi1yaWdodCcsXG4gIENMRUFSOiAnY2xlYXInLFxuICBDTE9TRTogJ2Nsb3NlJyxcbiAgQ09OVFJBQ1Q6ICdjb250cmFjdCcsXG4gIENSQVNIOiAnY3Jhc2gnLFxuICBEQVNIQk9BUkRfQ1VTVE9NSVpFOiAnZGFzaGJvYXJkLWN1c3RvbWl6ZScsXG4gIERFTEVURTogJ2RlbGV0ZScsXG4gIERJQU1PTkQ6ICdkaWFtb25kJyxcbiAgRElSRUNUSU9OU19CT0FUOiAnZGlyZWN0aW9ucy1ib2F0JyxcbiAgRE9NQUlOOiAnZG9tYWluJyxcbiAgRFJBRlQ6ICdkcmFmdCcsXG4gIEVESVQ6ICdlZGl0JyxcbiAgRU5HSU5FOiAnZW5naW5lJyxcbiAgRU5HSU5FRVJJTkc6ICdlbmdpbmVlcmluZycsXG4gIEVSUk9SOiAnZXJyb3InLFxuICBFWFBBTkRfQ09OVEVOVDogJ2V4cGFuZC1jb250ZW50JyxcbiAgRVhQQU5EX0xFU1M6ICdleHBhbmQtbGVzcycsXG4gIEVYUEFORF9NT1JFOiAnZXhwYW5kLW1vcmUnLFxuICBGQUNFQk9PSzogJ2ZhY2Vib29rJyxcbiAgRkFWT1JJVEU6ICdmYXZvcml0ZScsXG4gIEZBVk9SSVRFX0ZJTExFRDogJ2Zhdm9yaXRlLWZpbGxlZCcsXG4gIEZMQUc6ICdmbGFnJyxcbiAgRk9STUFUX0JPTEQ6ICdmb3JtYXQtYm9sZCcsXG4gIEZPUk1BVF9JVEFMSUM6ICdmb3JtYXQtaXRhbGljJyxcbiAgRk9STUFUX0xJU1RfQlVMTEVURUQ6ICdmb3JtYXQtbGlzdC1idWxsZXRlZCcsXG4gIEZPUlVNOiAnZm9ydW0nLFxuICBHQVM6ICdnYXMnLFxuICBHQVZFTDogJ2dhdmVsJyxcbiAgR0VBUlM6ICdnZWFycycsXG4gIEdMT0JFX0xPQ0FUSU9OX1BJTjogJ2dsb2JlLWxvY2F0aW9uLXBpbicsXG4gIEdPT0dMRTogJ2dvb2dsZScsXG4gIEdPT0dMRV9QQVk6ICdnb29nbGUtcGF5JyxcbiAgR1JJRDogJ2dyaWQnLFxuICBIQU5EU0hBS0U6ICdoYW5kc2hha2UnLFxuICBIQU5EWU1BTjogJ2hhbmR5bWFuJyxcbiAgSEVJR0hUOiAnaGVpZ2h0JyxcbiAgSEVMUDogJ2hlbHAnLFxuICBJTkZPOiAnaW5mbycsXG4gIElORk9STUFUSU9OOiAnaW5mb3JtYXRpb24nLFxuICBJTlNFUlRfVEVYVDogJ2luc2VydC10ZXh0JyxcbiAgSU5TVEFHUkFNOiAnaW5zdGFncmFtJyxcbiAgSU9TX1NIQVJFOiAnaW9zLXNoYXJlJyxcbiAgTEFZT1VUOiAnbGF5b3V0JyxcbiAgTEVWRUxMSU5HX0pBQ0s6ICdsZXZlbGxpbmctamFjaycsXG4gIExJTktFRF9JTjogJ2xpbmtlZCBpbicsXG4gIExPQ0FMX1NISVBQSU5HOiAnbG9jYWwtc2hpcHBpbmcnLFxuICBMT0NLOiAnbG9jaycsXG4gIE1BSUw6ICdtYWlsJyxcbiAgTUVOVTogJ21lbnUnLFxuICBNT05FWV9CQUc6ICdtb25leS1iYWcnLFxuICBNT1JFX0hPUklaOiAnbW9yZS1ob3JpeicsXG4gIE5PVElGSUNBVElPTlM6ICdub3RpZmljYXRpb25zJyxcbiAgT0RPTUVURVI6ICdvZG9tZXRlcicsXG4gIE9QRU5fSU5fTkVXOiAnb3Blbi1pbi1uZXcnLFxuICBQQUxFVFRFOiAncGFsZXR0ZScsXG4gIFBBWVBBTDogJ3BheXBhbCcsXG4gIFBFUlNPTjogJ3BlcnNvbicsXG4gIFBFUlNPTl9TRUFSQ0g6ICdwZXJzb24tc2VhcmNoJyxcbiAgUEhPVE9fQ0FNRVJBOiAncGhvdG8tY2FtZXJhJyxcbiAgUElOVEVSRVNUOiAncGludGVyZXN0JyxcbiAgUExBWV9BUlJPVzogJ3BsYXktYXJyb3cnLFxuICBQT0xJQ1k6ICdwb2xpY3knLFxuICBQT1dFUjogJ3Bvd2VyJyxcbiAgUE9XRVJfT0ZGOiAncG93ZXItb2ZmJyxcbiAgUFJJT1JJVFlfSElHSDogJ3ByaW9yaXR5LWhpZ2gnLFxuICBSRU1PVkU6ICdyZW1vdmUnLFxuICBSRVFVRVNUX1FVT1RFOiAncmVxdWVzdC1xdW90ZScsXG4gIFJFU0VUX1dSRU5DSDogJ3Jlc2V0LXdyZW5jaCcsXG4gIFJPQUQ6ICdyb2FkJyxcbiAgUk9VTkRFRF9DT1JORVI6ICdyb3VuZGVkLWNvcm5lcicsXG4gIFJVTEVSOiAncnVsZXInLFxuICBTQUlMSU5HOiAnc2FpbGluZycsXG4gIFNDSE9PTDogJ3NjaG9vbCcsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFNFQVRJTkc6ICdzZWF0aW5nJyxcbiAgU0VMTDogJ3NlbGwnLFxuICBTRU5TT1JTOiAnc2Vuc29ycycsXG4gIFNFVFRJTkdTOiAnc2V0dGluZ3MnLFxuICBTSEFSRTogJ3NoYXJlJyxcbiAgU0hJRUxEX0NIRUNLOiAnc2hpZWxkLWNoZWNrJyxcbiAgU0hPUFBJTkdfQ0FSVDogJ3Nob3BwaW5nLWNhcnQnLFxuICBTTEVFUFM6ICdzbGVlcHMnLFxuICBTTVM6ICdzbXMnLFxuICBTTk9XRkxBS0U6ICdzbm93Zmxha2UnLFxuICBTVEFSOiAnc3RhcicsXG4gIFNUQVJfRklMTEVEOiAnc3Rhci1maWxsZWQnLFxuICBTVEFSX0hBTEY6ICdzdGFyLWhhbGYnLFxuICBTVU1NQVJJWkU6ICdzdW1tYXJpemUnLFxuICBTV0FQX0hPUklaOiAnc3dhcC1ob3JpeicsXG4gIFNXQVBfVkVSVDogJ3N3YXAtdmVydCcsXG4gIFRIUkVFX0RfUk9UQVRJT046ICd0aHJlZS1kLXJvdGF0aW9uJyxcbiAgVEhVTUJfVVA6ICd0aHVtYi11cCcsXG4gIFRSRU5ESU5HX0RPV046ICd0cmVuZGluZy1kb3duJyxcbiAgVFJPUEhZOiAndHJvcGh5JyxcbiAgVFVORTogJ3R1bmUnLFxuICBUV0lUVEVSOiAndHdpdHRlcicsXG4gIFVNQlJFTExBOiAndW1icmVsbGEnLFxuICBWRVJJRklFRDogJ3ZlcmlmaWVkJyxcbiAgVklERU9DQU06ICd2aWRlb2NhbScsXG4gIFZJRVdfSU5fQVI6ICd2aWV3LWluLWFyJyxcbiAgVklTSUJJTElUWTogJ3Zpc2liaWxpdHknLFxuICBWT0xVTUVfT0ZGOiAndm9sdW1lLW9mZicsXG4gIFZPTFVNRV9PTjogJ3ZvbHVtZS1vbicsXG4gIFdBUkVIT1VTRTogJ3dhcmVob3VzZScsXG4gIFdBUk5JTkc6ICd3YXJuaW5nJyxcbiAgV0FURVI6ICd3YXRlcicsXG4gIFdFSUdIVDogJ3dlaWdodCcsXG4gIFdJRFRIOiAnd2lkdGgnLFxuICBXT1JLU1BBQ0VfUFJFTUlVTTogJ3dvcmtzcGFjZS1wcmVtaXVtJyxcbiAgV1JFTkNIOiAnd3JlbmNoJyxcbiAgWU9VVFVCRTogJ3lvdXR1YmUnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IElDT05fUkVBTE0gPSB7XG4gIEFUVjoge1xuICAgIEFUVjogJ2F0di1hdHYnLFxuICAgIERVTkVfQlVHR1k6ICdhdHYtZHVuZS1idWdneScsXG4gICAgR09MRl9DQVJUOiAnYXR2LWdvbGYtY2FydCcsXG4gICAgR09fS0FSVDogJ2F0di1nby1rYXJ0JyxcbiAgICBTQU5EX1JBSUw6ICdhdHYtc2FuZC1yYWlsJyxcbiAgICBTSURFX0JZX1NJREU6ICdhdHYtc2lkZS1ieS1zaWRlJyxcbiAgICBUUkFJTEVSOiAnYXR2LXRyYWlsZXInLFxuICB9LFxuICBCT0FUTUFSVDoge1xuICAgIFBXQzogJ2JvYXRtYXJ0LXB3YycsXG4gICAgVFJBSUxFUjogJ2JvYXRtYXJ0LXRyYWlsZXInLFxuICB9LFxuICBDWUNMRToge1xuICAgIE1PVE9SQ1lDTEU6ICdjeWNsZS1tb3RvcmN5Y2xlJyxcbiAgICBUUkFJTEVSOiAnY3ljbGUtdHJhaWxlcicsXG4gIH0sXG4gIFJWOiB7XG4gICAgQ0xBU1NfQTogJ3J2LWNsYXNzLWEnLFxuICAgIENMQVNTX0I6ICdydi1jbGFzcy1iJyxcbiAgICBDTEFTU19DOiAncnYtY2xhc3MtYycsXG4gICAgRklGVEhfV0hFRUw6ICdydi1maWZ0aC13aGVlbCcsXG4gICAgRklTSF9IT1VTRTogJ3J2LWZpc2gtaG91c2UnLFxuICAgIFBBUktfTU9ERUw6ICdydi1wYXJrLW1vZGVsJyxcbiAgICBQT1BfVVBfQ0FNUEVSOiAncnYtcG9wLXVwLWNhbXBlcicsXG4gICAgVFJBVkVMX1RSQUlMRVI6ICdydi10cmF2ZWwtdHJhaWxlcicsXG4gICAgVFJVQ0tfQ0FNUEVSOiAncnYtdHJ1Y2stY2FtcGVyJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbnR5cGUgUmVhbG1LZXlzV2l0aEljb25zID0gRXh0cmFjdDxSZWFsbUtleSwga2V5b2YgdHlwZW9mIElDT05fUkVBTE0+O1xudHlwZSBSZWFsbUljb24gPSB7XG4gIFtSZWFsbUtleSBpbiBSZWFsbUtleXNXaXRoSWNvbnNdOiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XVtrZXlvZiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XV07XG59W1JlYWxtS2V5c1dpdGhJY29uc107XG5cbmV4cG9ydCB0eXBlIEdsb2JhbEljb24gPSAodHlwZW9mIElDT04pW2tleW9mIHR5cGVvZiBJQ09OXTtcbmV4cG9ydCB0eXBlIEljb24gPSBHbG9iYWxJY29uIHwgUmVhbG1JY29uO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYW4gYWNjb3JkaW9uIGl0ZW0gaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiBuYXZpZ2F0aW9uIG1lbnVzIHJlbGF0aW5nIHRvIGFjY29yZGlvbiBkcm9wZG93bnMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVhY2NvcmRpb25pdGVtLS1kb2NzKSBmb3IgVGlkZUFjY29yZGlvbkl0ZW1cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZURpdmlkZXIgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVEaXZpZGVyLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGRpc2FibGUgdGhlIGFjY29yZGlvbiBpdGVtICovXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBpbmNsdWRlIGJvdHRvbSBkaXZpZGVyICovXG4gICAgaGFzQm90dG9tRGl2aWRlcj86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGluY2x1ZGUgdG9wIGRpdmlkZXIgKi9cbiAgICBoYXNUb3BEaXZpZGVyPzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gc2hvdyBcIihvcHRpb25hbClcIiBpbmRpY2F0b3IgYWZ0ZXIgbGFiZWwgKi9cbiAgICBpc09wdGlvbmFsPzogYm9vbGVhbjtcblxuICAgIC8qKiBUaGUgbGFiZWwgb2YgdGhlIGFjY29yZGlvbiBpdGVtICovXG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBoYXNCb3R0b21EaXZpZGVyOiBmYWxzZSxcbiAgICBoYXNUb3BEaXZpZGVyOiBmYWxzZSxcbiAgICBpc09wdGlvbmFsOiBmYWxzZSxcbiAgfSk7XG5cbiAgY29uc3QgaXNFeHBhbmRlZCA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHByb3BzLmRpc2FibGVkKSByZXR1cm47XG4gICAgaXNFeHBhbmRlZC52YWx1ZSA9ICFpc0V4cGFuZGVkLnZhbHVlO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmRpc2FibGVkLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICAgIGlzRXhwYW5kZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWFjY29yZGlvbi1pdGVtJ11cIj5cbiAgICA8VGlkZURpdmlkZXIgdi1pZj1cImhhc1RvcERpdmlkZXJcIiAvPlxuXG4gICAgPGJ1dHRvblxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1hY2NvcmRpb24taGVhZCcsXG4gICAgICAgIENTUy5BTElHTi5YLkxFRlQsXG4gICAgICAgIENTUy5BWElTMS5CRVRXRUVOLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBkaXNhYmxlZCA/IFtDU1MuT1BBQ0lUWS5ESVNBQkxFRCwgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRF0gOiBbXSxcbiAgICAgIF1cIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlVG9nZ2xlQ2xpY2tcIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuSEFMRiwgQ1NTLkZPTlQuUk9MRS5MQUJFTF8xX1NFTUlCT0xEXVwiPlxuICAgICAgICA8c3Bhbj57eyBsYWJlbCB9fTwvc3Bhbj5cblxuICAgICAgICA8c3BhblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICB2LWlmPVwiaXNPcHRpb25hbFwiXG4gICAgICAgID5cbiAgICAgICAgICAob3B0aW9uYWwpXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJpc0V4cGFuZGVkID8gSUNPTi5FWFBBTkRfTEVTUyA6IElDT04uRVhQQU5EX01PUkVcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuTEFSR0VcIlxuICAgICAgLz5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWFjY29yZGlvbi1ib2R5JywgaXNFeHBhbmRlZCA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJywgQ1NTLkRJU1BMQVkuR1JJRF1cIj5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5PVkVSRkxPVy5ZLkhJRERFTiwgQ1NTLk1BUkdJTi5ZLk9ORSwgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIj5cbiAgICAgICAgPHNsb3QgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPFRpZGVEaXZpZGVyIHYtaWY9XCJoYXNCb3R0b21EaXZpZGVyXCIgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1hY2NvcmRpb24taXRlbSB7XG4gICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5IHtcbiAgICB0cmFuc2l0aW9uOiBncmlkLXRlbXBsYXRlLXJvd3MgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5LmV4cGFuZGVkIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IG1pbm1heCgwcHgsIDFmcik7XG4gIH1cblxuICAudGlkZS1hY2NvcmRpb24tYm9keS5jb2xsYXBzZWQge1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogbWlubWF4KDBweCwgMGZyKTtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBFTEVNRU5UID0ge1xuICBCVVRUT046ICdidXR0b24nLFxuICBMSU5LOiAnYScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgRUxFTUVOVF9CUk9BRCA9IHtcbiAgQlVUVE9OOiAnYnV0dG9uJyxcbiAgRElWOiAnZGl2JyxcbiAgTElOSzogJ2EnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgRWxlbWVudCA9ICh0eXBlb2YgRUxFTUVOVClba2V5b2YgdHlwZW9mIEVMRU1FTlRdO1xuZXhwb3J0IHR5cGUgRWxlbWVudEJyb2FkID0gKHR5cGVvZiBFTEVNRU5UX0JST0FEKVtrZXlvZiB0eXBlb2YgRUxFTUVOVF9CUk9BRF07XG4iLCJpbXBvcnQgeyBpbmplY3QsIHByb3ZpZGUgfSBmcm9tICd2dWUnO1xuXG5pbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcblxuaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICd2dWUnO1xuXG50eXBlIFRpZGVDb25maWcgPSB7XG4gIGxpbmtDb21wb25lbnQ6IENvbXBvbmVudCB8IHR5cGVvZiBFTEVNRU5ULkxJTks7XG59O1xuXG5jb25zdCB0aWRlQ29uZmlnRGVmYXVsdHM6IFRpZGVDb25maWcgPSB7IGxpbmtDb21wb25lbnQ6IEVMRU1FTlQuTElOSyB9O1xuXG5jb25zdCBDT05GSUdfS0VZID0gU3ltYm9sKCd0aWRlLWNvbmZpZycpO1xuXG5leHBvcnQgY29uc3QgcHJvdmlkZVRpZGVDb25maWcgPSAoY29uZmlnOiBQYXJ0aWFsPFRpZGVDb25maWc+ID0ge30pID0+IHtcbiAgY29uc3QgY29uZmlnV2l0aERlZmF1bHRzOiBUaWRlQ29uZmlnID0geyAuLi50aWRlQ29uZmlnRGVmYXVsdHMsIC4uLmNvbmZpZyB9O1xuXG4gIHByb3ZpZGU8VGlkZUNvbmZpZz4oQ09ORklHX0tFWSwgY29uZmlnV2l0aERlZmF1bHRzKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VUaWRlQ29uZmlnID0gKCkgPT4ge1xuICByZXR1cm4gaW5qZWN0PFRpZGVDb25maWc+KENPTkZJR19LRVksIHRpZGVDb25maWdEZWZhdWx0cyk7XG59O1xuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IHsgdXNlVGlkZUNvbmZpZyB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUNvbmZpZyc7XG5cbiAgY29uc3QgeyBsaW5rQ29tcG9uZW50IH0gPSB1c2VUaWRlQ29uZmlnKCk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50IDppcz1cImxpbmtDb21wb25lbnRcIj5cbiAgICA8c2xvdCAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmV4cG9ydCBjb25zdCBQUklPUklUWSA9IHtcbiAgUFJJTUFSWTogJ3ByaW1hcnknLFxuICBTRUNPTkRBUlk6ICdzZWNvbmRhcnknLFxuICBURVJUSUFSWTogJ3RlcnRpYXJ5JyxcbiAgUVVBVEVSTkFSWTogJ3F1YXRlcm5hcnknLFxuICBGTE9BVElORzogJ2Zsb2F0aW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFByaW9yaXR5ID0gKHR5cGVvZiBQUklPUklUWSlba2V5b2YgdHlwZW9mIFBSSU9SSVRZXTtcbiIsImV4cG9ydCBjb25zdCBUQVJHRVQgPSB7XG4gIEJMQU5LOiAnX2JsYW5rJyxcbiAgU0VMRjogdW5kZWZpbmVkLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVGFyZ2V0ID0gKHR5cGVvZiBUQVJHRVQpW2tleW9mIHR5cGVvZiBUQVJHRVRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBpY29uIGJ1dHRvbiBjb21wb25lbnQgd2l0aCB2YXJpb3VzIHN0eWxpbmcgb3B0aW9ucy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWJ1dHRvbmljb24tLWRvY3MpIGZvciBUaWRlQnV0dG9uSWNvblxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFByaW9yaXR5IH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB0eXBlIHsgQnV0dG9uVHlwZSB9IGZyb20gJ0AvdHlwZXMvVHlwZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyBjbGlja2FiaWxpdHkgKEJ1dHRvbiBvbmx5KSAqL1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBIVE1MIHRhZyB0eXBlICovXG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG5cbiAgICAvKiogVVJMIHRvIG9wZW4gKExpbmsgb25seSkgKi9cbiAgICBocmVmPzogc3RyaW5nO1xuXG4gICAgLyoqIEljb24gdG8gc2hvdyAqL1xuICAgIGljb246IEljb247XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHRhcmdldCBhIG5ldyBicm93c2VyIHRhYiAoTGluayBvbmx5KSAqL1xuICAgIGlzTmV3VGFiPzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHZpc3VhbCBwcm9taW5lbmNlICovXG4gICAgcHJpb3JpdHk/OiBQcmlvcml0eTtcblxuICAgIC8qKiBBcHBsaWVzIHR5cGUgYXR0cmlidXRlIHRvIEhUTUwgZWxlbWVudCAqL1xuICAgIHR5cGU/OiBCdXR0b25UeXBlO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVsZW1lbnQ6IEVMRU1FTlQuQlVUVE9OLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uOiB1bmRlZmluZWQsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICAgIHByaW9yaXR5OiBQUklPUklUWS5QUklNQVJZLFxuICAgIHR5cGU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgdHlwZUF0dHJpYnV0ZSA9IGNvbXB1dGVkPHN0cmluZyB8IHVuZGVmaW5lZD4oKCkgPT5cbiAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiA/IHByb3BzLnR5cGUgPz8gRUxFTUVOVC5CVVRUT04gOiB1bmRlZmluZWRcbiAgKTtcblxuICBjb25zdCByb290RWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBJbnRlcm5hbEJhc2VMaW5rIDogcHJvcHMuZWxlbWVudCkpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDphcmlhLWxhYmVsPVwiaWNvblwiXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYnV0dG9uLWljb24nLFxuICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5QQURESU5HLkZVTEwuSEFMRixcbiAgICAgIGB0aWRlLWJ1dHRvbi0ke3ByaW9yaXR5fWAsXG4gICAgICBlbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBbQ1NTLlVOREVSTElORS5SRVNULk9GRl0gOiAnJyxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJlbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiAmJiBkaXNhYmxlZFwiXG4gICAgOmhyZWY9XCJlbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgaHJlZiA/IGhyZWYgOiB1bmRlZmluZWRcIlxuICAgIDp0YXJnZXQ9XCJlbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgOnR5cGU9XCJ0eXBlQXR0cmlidXRlXCJcbiAgICA6aXM9XCJyb290RWxlbWVudFwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDppY29uPVwiaWNvblwiXG4gICAgICA6c2l6ZT1cIlNJWkUuTEFSR0VcIlxuICAgICAgdi1pZj1cImljb25cIlxuICAgIC8+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgbGluayBlbGVtZW50LlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlbGluay0tZG9jcykgZm9yIFRpZGVMaW5rXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IEludGVybmFsQmFzZUxpbmsgZnJvbSAnQC9jb21wb25lbnRzL0ludGVybmFsQmFzZUxpbmsudnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEFSR0VUIH0gZnJvbSAnQC90eXBlcy9UYXJnZXQnO1xuXG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgU2l6ZSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogSFRNTCB0YWcgdHlwZSAqL1xuICAgIGVsZW1lbnQ/OiBFbGVtZW50O1xuXG4gICAgLyoqIFVSTCB0byBvcGVuIChMaW5rIG9ubHkpICovXG4gICAgaHJlZj86IHN0cmluZztcblxuICAgIC8qKiBJY29uIHRvIGxlZnQgb2YgbGFiZWwgKi9cbiAgICBpY29uTGVhZGluZz86IEljb247XG5cbiAgICAvKiogU2l6ZSBvZiB0aGUgaWNvbnMgKi9cbiAgICBpY29uU2l6ZT86IFNpemU7XG5cbiAgICAvKiogSWNvbiB0byByaWdodCBvZiBsYWJlbCAqL1xuICAgIGljb25UcmFpbGluZz86IEljb247XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHRhcmdldCBhIG5ldyBicm93c2VyIHRhYiAoTGluayBvbmx5KSAqL1xuICAgIGlzTmV3VGFiPzogYm9vbGVhbjtcblxuICAgIC8qKiBMaW5rIHRleHQgKi9cbiAgICBsYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIEhpZGVzIHRoZSB1bmRlcmxpbmUgdW50aWwgaG92ZXJlZCwgZGUtZW1waGFzaXppbmcgdGhlIGxpbmsgKi9cbiAgICBzdWJ0bGU/OiBib29sZWFuO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZWxlbWVudDogRUxFTUVOVC5MSU5LLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGljb25TaXplOiBTSVpFLlNNQUxMLFxuICAgIGljb25UcmFpbGluZzogdW5kZWZpbmVkLFxuICAgIGlzTmV3VGFiOiBmYWxzZSxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIHN1YnRsZTogZmFsc2UsXG4gIH0pO1xuXG4gIGNvbnN0IHJvb3RFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IEludGVybmFsQmFzZUxpbmsgOiBwcm9wcy5lbGVtZW50KSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtbGluaycsXG4gICAgICBDU1MuRElTUExBWS5JTkxJTkUsXG4gICAgICBDU1MuQUxJR04uWC5MRUZULFxuICAgICAgc3VidGxlID8gW0NTUy5VTkRFUkxJTkUuUkVTVC5PRkYsIENTUy5VTkRFUkxJTkUuSE9WRVIuT05dIDogW0NTUy5VTkRFUkxJTkUuUkVTVC5PTiwgQ1NTLlVOREVSTElORS5IT1ZFUi5PRkZdLFxuICAgIF1cIlxuICAgIDpocmVmPVwicHJvcHMuaHJlZlwiXG4gICAgOnRhcmdldD1cInByb3BzLmlzTmV3VGFiID8gVEFSR0VULkJMQU5LIDogVEFSR0VULlNFTEZcIlxuICAgIDp0eXBlPVwiZWxlbWVudCA9PT0gRUxFTUVOVC5CVVRUT04gPyBFTEVNRU5ULkJVVFRPTiA6IHVuZGVmaW5lZFwiXG4gICAgOmlzPVwicm9vdEVsZW1lbnRcIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuSU5MSU5FX0JMT0NLLCBDU1MuQUxJR04uWS5NSURETEUsIENTUy5NQVJHSU4uUklHSFQuUVVBUlRFUl1cIlxuICAgICAgOmljb249XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgICA6c2l6ZT1cImljb25TaXplXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgLz5cblxuICAgIDxzcGFuIDpjbGFzcz1cIltDU1MuQUxJR04uWS5NSURETEVdXCI+XG4gICAgICB7eyBwcm9wcy5sYWJlbCB9fVxuICAgIDwvc3Bhbj5cblxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLklOTElORV9CTE9DSywgQ1NTLkFMSUdOLlkuTUlERExFLCBDU1MuTUFSR0lOLkxFRlQuUVVBUlRFUl1cIlxuICAgICAgOmljb249XCJwcm9wcy5pY29uVHJhaWxpbmdcIlxuICAgICAgOnNpemU9XCJpY29uU2l6ZVwiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvblRyYWlsaW5nXCJcbiAgICAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCJleHBvcnQgY29uc3QgQUxFUlQgPSB7XG4gIEVSUk9SOiAnZXJyb3InLFxuICBJTkZPOiAnaW5mbycsXG4gIFNVQ0NFU1M6ICdzdWNjZXNzJyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQWxlcnQgPSAodHlwZW9mIEFMRVJUKVtrZXlvZiB0eXBlb2YgQUxFUlRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYW4gYWxlcnQgY29tcG9uZW50IHdpdGggY3VzdG9taXphYmxlIGNvbnRlbnQgYW5kIGJlaGF2aW9yLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlYWxlcnQtLWRvY3MpIGZvciBUaWRlQWxlcnRcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IENvbW1lbnQsIGNvbXB1dGVkLCB1c2VTbG90cyB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlTGluayBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUxpbmsudnVlJztcbiAgaW1wb3J0IHsgQUxFUlQgfSBmcm9tICdAL3R5cGVzL0FsZXJ0JztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgQWxlcnQgfSBmcm9tICdAL3R5cGVzL0FsZXJ0JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBDYWxsIFRvIEFjdGlvbiB0aGF0IHJlbmRlcnMgYXMgYSBUaWRlTGluazsgY2xpY2tpbmcgZW1pdHMgYSBzZXBhcmF0ZSBgY2xpY2tgIGV2ZW50ICovXG4gICAgY3RhTGFiZWw/OiBzdHJpbmc7XG5cbiAgICAvKiogSGVhZGluZyB0ZXh0ICovXG4gICAgaGVhZGluZz86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIEFsZXJ0IGNhbiBiZSBjbG9zZWQgYnkgdGhlIHVzZXIgKi9cbiAgICBpc0Rpc21pc3NpYmxlPzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIEFsZXJ0IGlzIGFuIG92ZXJsYXkgb3IgZGlzcGxhY2VzIGNvbnRlbnQgKi9cbiAgICBpc1RvYXN0PzogYm9vbGVhbjtcblxuICAgIC8qKiBBbGVydCB0eXBlICovXG4gICAgdHlwZT86IEFsZXJ0O1xuICB9O1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAnY2xvc2UnKTogdm9pZDtcbiAgICAoZXZlbnQ6ICdjdGFDbGljaycpOiB2b2lkO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgY3RhTGFiZWw6IHVuZGVmaW5lZCxcbiAgICBoZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaXNEaXNtaXNzaWJsZTogdHJ1ZSxcbiAgICBpc1RvYXN0OiBmYWxzZSxcbiAgICB0eXBlOiBBTEVSVC5JTkZPLFxuICB9KTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG4gIGNvbnN0IHNsb3RzID0gdXNlU2xvdHMoKTtcbiAgY29uc3QgaGFzQm9keSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBub2RlcyA9IHNsb3RzLmRlZmF1bHQ/LigpO1xuICAgIGlmICghbm9kZXMpIHJldHVybiBmYWxzZTtcblxuICAgIHJldHVybiBub2Rlcy5zb21lKFxuICAgICAgKG5vZGUpID0+IG5vZGUudHlwZSAhPT0gQ29tbWVudCAmJiAodHlwZW9mIG5vZGUuY2hpbGRyZW4gIT09ICdzdHJpbmcnIHx8IG5vZGUuY2hpbGRyZW4udHJpbSgpLmxlbmd0aCA+IDApXG4gICAgKTtcbiAgfSk7XG5cbiAgY29uc3QgaWNvblR5cGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHByb3BzLnR5cGUgPT09IEFMRVJULkVSUk9SKSByZXR1cm4gSUNPTi5QUklPUklUWV9ISUdIO1xuICAgIGlmIChwcm9wcy50eXBlID09PSBBTEVSVC5TVUNDRVNTKSByZXR1cm4gSUNPTi5DSEVDSztcbiAgICBpZiAocHJvcHMudHlwZSA9PT0gQUxFUlQuV0FSTklORykgcmV0dXJuIElDT04uV0FSTklORztcbiAgICByZXR1cm4gSUNPTi5JTkZPUk1BVElPTjtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgcHJvcHMudHlwZSxcbiAgICAgICd0aWRlLWFsZXJ0JyxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgQ1NTLkRJU1BMQVkuR1JJRCxcbiAgICAgIENTUy5QQURESU5HLkZVTEwuT05FLFxuICAgICAgIXByb3BzLmlzVG9hc3QgJiYgcHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IgPyBbQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLkVSUk9SLCBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5FUlJPUl0gOiAnJyxcbiAgICAgICFwcm9wcy5pc1RvYXN0ICYmIHByb3BzLnR5cGUgPT09IEFMRVJULklORk8gPyBbQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLklORk8sIENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLklORk9dIDogJycsXG4gICAgICAhcHJvcHMuaXNUb2FzdCAmJiBwcm9wcy50eXBlID09PSBBTEVSVC5TVUNDRVNTXG4gICAgICAgID8gW0NTUy5CRy5HTE9CQUwuU1VSRkFDRS5TVUNDRVNTLCBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5TVUNDRVNTXVxuICAgICAgICA6ICcnLFxuICAgICAgIXByb3BzLmlzVG9hc3QgJiYgcHJvcHMudHlwZSA9PT0gQUxFUlQuV0FSTklOR1xuICAgICAgICA/IFtDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuV0FSTklORywgQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuV0FSTklOR11cbiAgICAgICAgOiAnJyxcbiAgICAgIHByb3BzLmlzVG9hc3QgPyBbQ1NTLkJHLlNFQ09OREFSWSwgQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZLCBDU1MuU0hBRE9XLkJPVFRPTV0gOiBDU1MuQk9SREVSLkxFRlQuVFdPLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1hbGVydC1pY29uJyxcbiAgICAgICAgQ1NTLlBBRERJTkcuRlVMTC5RVUFSVEVSLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLklOVkVSU0UsXG4gICAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULkVSUk9SICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5FUlJPUixcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuSU5GTyAmJiBDU1MuQkcuR0xPQkFMLlBSSU1BUlkuSU5GTyxcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuU1VDQ0VTUyAmJiBDU1MuQkcuR0xPQkFMLlBSSU1BUlkuU1VDQ0VTUyxcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuV0FSTklORyAmJiBDU1MuQkcuR0xPQkFMLlBSSU1BUlkuV0FSTklORyxcbiAgICAgIF1cIlxuICAgICAgdi1pZj1cIiFwcm9wcy5pc1RvYXN0XCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJpY29uVHlwZVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1hbGVydC1oZWFkaW5nJyxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLlJPVyxcbiAgICAgICAgIWhhc0JvZHkgPyBbQ1NTLkFYSVMxLkJFVFdFRU4sIENTUy5NQVJHSU4uUklHSFQuSEFMRl0gOiAnJyxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxzcGFuIDpjbGFzcz1cIkNTUy5GT05ULlJPTEUuTEFCRUxfMl9TRU1JQk9MRFwiPnt7IHByb3BzLmhlYWRpbmcgfX08L3NwYW4+XG5cbiAgICAgIDxUaWRlTGlua1xuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MSU5LXzJdXCJcbiAgICAgICAgOmVsZW1lbnQ9XCJFTEVNRU5ULkJVVFRPTlwiXG4gICAgICAgIDpsYWJlbD1cInByb3BzLmN0YUxhYmVsXCJcbiAgICAgICAgQGNsaWNrPVwiZW1pdCgnY3RhQ2xpY2snKVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy5jdGFMYWJlbCAmJiAhaGFzQm9keVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPFRpZGVCdXR0b25JY29uXG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtYWxlcnQtY2xvc2UnLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgIEBjbGljaz1cImVtaXQoJ2Nsb3NlJylcIlxuICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIGFsZXJ0XCJcbiAgICAgIHYtaWY9XCJpc0Rpc21pc3NpYmxlXCJcbiAgICAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWxlcnQtYm9keScsIENTUy5GT05ULlJPTEUuQk9EWV8yLCAhcHJvcHMuaXNUb2FzdCAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCI+XG4gICAgICA8c2xvdCAvPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLlRPUC5IQUxGXVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy5jdGFMYWJlbCAmJiBoYXNCb2R5XCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVMaW5rXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTElOS18yXVwiXG4gICAgICAgICAgOmVsZW1lbnQ9XCJFTEVNRU5ULkJVVFRPTlwiXG4gICAgICAgICAgOmxhYmVsPVwicHJvcHMuY3RhTGFiZWxcIlxuICAgICAgICAgIEBjbGljaz1cImVtaXQoJ2N0YUNsaWNrJylcIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5jdGFMYWJlbFwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1hbGVydCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczpcbiAgICAgICdpY29uIGhlYWRpbmcgY2xvc2UnXG4gICAgICAnLiBib2R5IC4nO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byB2YXIoLS10aWRlLXNhZmUtZnIpIGF1dG87XG4gICAgZ3JpZC1jb2x1bW4tZ2FwOiB2YXIoLS10aWRlLXNwYWNpbmctMVxcLzIpO1xuICAgIG1heC13aWR0aDogdmFyKC0tdGlkZS1tYXgtd2lkdGgsIDY0MHB4KTtcbiAgfVxuXG4gIC50aWRlLWFsZXJ0LWljb24ge1xuICAgIGdyaWQtYXJlYTogaWNvbjtcbiAgfVxuXG4gIC50aWRlLWFsZXJ0LWhlYWRpbmcge1xuICAgIGdyaWQtYXJlYTogaGVhZGluZztcbiAgfVxuXG4gIC50aWRlLWFsZXJ0LWNsb3NlIHtcbiAgICBncmlkLWFyZWE6IGNsb3NlO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtYm9keSB7XG4gICAgZ3JpZC1hcmVhOiBib2R5O1xuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG5leHBvcnQgY29uc3QgQkFER0VfQ09MT1IgPSB7XG4gIEJMQUNLOiAnYmxhY2snLFxuICBCTFVFOiAnYmx1ZScsXG4gIEdSRUVOOiAnZ3JlZW4nLFxuICBMSU1FOiAnbGltZScsXG4gIE9SQU5HRTogJ29yYW5nZScsXG4gIFBVUlBMRTogJ3B1cnBsZScsXG4gIFJFRDogJ3JlZCcsXG4gIFNBTE1PTjogJ3NhbG1vbicsXG4gIFRFQUw6ICd0ZWFsJyxcbiAgWUVMTE9XOiAneWVsbG93Jyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBCQURHRV9DT0xPUl9ERVRBSUxTOiBSZWNvcmQ8XG4gIEJhZGdlQ29sb3IsXG4gIHtcbiAgICBib3JkZXJDb2xvcjogc3RyaW5nO1xuICAgIGljb25Db2xvcjogc3RyaW5nO1xuICB9XG4+ID0ge1xuICBbQkFER0VfQ09MT1IuQkxBQ0tdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuSElHSCxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVCxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLkJMVUVdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLkJMVUUsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5CTFVFLFxuICB9LFxuICBbQkFER0VfQ09MT1IuR1JFRU5dOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLkdSRUVOLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuR1JFRU4sXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5MSU1FXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5MSU1FLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuTElNRSxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLk9SQU5HRV06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuT1JBTkdFLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuT1JBTkdFLFxuICB9LFxuICBbQkFER0VfQ09MT1IuUFVSUExFXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5QVVJQTEUsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5QVVJQTEUsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5SRURdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlJFRCxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLlJFRCxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLlNBTE1PTl06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuU0FMTU9OLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuU0FMTU9OLFxuICB9LFxuICBbQkFER0VfQ09MT1IuVEVBTF06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuVEVBTCxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLlRFQUwsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5ZRUxMT1ddOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLllFTExPVyxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLllFTExPVyxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBCQURHRV9UUlVTVEVEID0ge1xuICBZRUFSU18xMDogJzEwJyxcbiAgWUVBUlNfMTU6ICcxNScsXG4gIFlFQVJTXzIwOiAnMjAnLFxuICBZRUFSU18yNTogJzI1JyxcbiAgWUVBUlNfMzA6ICczMCcsXG4gIFlFQVJTXzM1OiAnMzUnLFxuICBZRUFSU181OiAnNScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBCYWRnZUNvbG9yID0gKHR5cGVvZiBCQURHRV9DT0xPUilba2V5b2YgdHlwZW9mIEJBREdFX0NPTE9SXTtcbmV4cG9ydCB0eXBlIEJhZGdlVHJ1c3RlZFllYXJzID0gKHR5cGVvZiBCQURHRV9UUlVTVEVEKVtrZXlvZiB0eXBlb2YgQkFER0VfVFJVU1RFRF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGJhZGdlIGNvbXBvbmVudCB3aXRoIGN1c3RvbWl6YWJsZSBjb250ZW50IGFuZCBiZWhhdmlvci5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWJhZGdlLS1kb2NzKSBmb3IgVGlkZUJhZGdlXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEJBREdFX0NPTE9SX0RFVEFJTFMgfSBmcm9tICdAL3R5cGVzL0JhZGdlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgQmFkZ2VDb2xvciB9IGZyb20gJ0AvdHlwZXMvQmFkZ2UnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgd2hpY2ggY29sb3Igb3B0aW9uIHRvIGFkb3B0IChpZiBhbnkpICovXG4gICAgY29sb3I/OiBCYWRnZUNvbG9yO1xuXG4gICAgLyoqIEljb24gdG8gbGVmdCBvZiBsYWJlbCAqL1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gZGlzcGxheSB0aGUgXCJGbG9hdGluZ1wiIHZhcmlhbnQgc3R5bGVzICovXG4gICAgaXNGbG9hdGluZz86IGJvb2xlYW47XG5cbiAgICAvKiogQmFkZ2UgdGV4dCAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBjb2xvcjogdW5kZWZpbmVkLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaXNGbG9hdGluZzogZmFsc2UsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJhZGdlJyxcbiAgICAgIHByb3BzLmlzRmxvYXRpbmcgfHwgcHJvcHMuY29sb3IgPyBbQ1NTLkJHLlNVUkZBQ0UuRkxPQVRJTkcsIENTUy5TSEFET1cuQk9UVE9NXSA6IFtDU1MuQkcuU1VSRkFDRS5WQVJJQU5UXSxcbiAgICAgIENTUy5ESVNQTEFZLklOTElORV9GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLlFVQVJURVIsXG4gICAgICBDU1MuUEFERElORy5ZLlFVQVJURVIsXG4gICAgICBDU1MuUEFERElORy5YLkhBTEYsXG4gICAgICBwcm9wcy5jb2xvciAmJiBbQ1NTLkJPUkRFUi5MRUZULlRXTywgQkFER0VfQ09MT1JfREVUQUlMU1twcm9wcy5jb2xvcl0uYm9yZGVyQ29sb3JdLFxuICAgICAgQ1NTLkVMTElQU0lTLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLFxuICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgXVwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5TSFJJTksuT0ZGLCBwcm9wcy5jb2xvciAmJiBCQURHRV9DT0xPUl9ERVRBSUxTW3Byb3BzLmNvbG9yXS5pY29uQ29sb3JdXCJcbiAgICAgIDppY29uPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgICAgdi1pZj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAvPlxuXG4gICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5FTExJUFNJU11cIj57eyBwcm9wcy5sYWJlbCB9fTwvc3Bhbj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSB0cnVzdGVkIHBhcnRuZXIgYmFkZ2UgY29tcG9uZW50IHdpdGggcHJlc2V0IHllYXJzLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlYmFkZ2V0cnVzdGVkcGFydG5lci0tZG9jcykgZm9yIFRpZGVCYWRnZVRydXN0ZWRQYXJ0bmVyXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEJBREdFX1RSVVNURUQgfSBmcm9tICdAL3R5cGVzL0JhZGdlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEJhZGdlVHJ1c3RlZFllYXJzIH0gZnJvbSAnQC90eXBlcy9CYWRnZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogTnVtYmVyIG9mIHllYXJzIHRvIGRpc3BsYXkgaW4gdGhlIHRydXN0ZWQgcGFydG5lciBiYWRnZSAqL1xuICAgIHllYXJzPzogQmFkZ2VUcnVzdGVkWWVhcnM7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICB5ZWFyczogQkFER0VfVFJVU1RFRC5ZRUFSU181LFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1iYWRnZS10cnVzdGVkLXBhcnRuZXInLFxuICAgICAgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5CUkFORCxcbiAgICAgIENTUy5ESVNQTEFZLklOTElORV9GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5FTExJUFNJUyxcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMixcbiAgICAgIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICAgIF1cIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguU0hSSU5LLk9GRl1cIlxuICAgICAgOmljb249XCJJQ09OLkFXQVJEX1NUQVJcIlxuICAgIC8+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRUxMSVBTSVNdXCI+XG4gICAgICA8c3Bhbj57eyBwcm9wcy55ZWFycyB9fSB5ZWFyIHRydXN0ZWQgcGFydG5lcjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGJhZGdlIGNvbXBvbmVudCBmb3IgaW5kaWNhdGluZyBhIHZlcmlmaWVkIHZlaGljbGUuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGViYWRnZXZlcmlmaWVkdmVoaWNsZS0tZG9jcykgZm9yIFRpZGVCYWRnZVZlcmlmaWVkVmVoaWNsZVxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJhZGdlLXZlcmlmaWVkLXZlaGljbGUnLFxuICAgICAgQ1NTLkJHLlNFQ09OREFSWSxcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMixcbiAgICAgIENTUy5GT05ULkNPTE9SLlNFQ09OREFSWSxcbiAgICAgIENTUy5ESVNQTEFZLklOTElORV9GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLlFVQVJURVIsXG4gICAgICBDU1MuUEFERElORy5ZLlFVQVJURVIsXG4gICAgICBDU1MuUEFERElORy5YLkhBTEYsXG4gICAgICBDU1MuRUxMSVBTSVMsXG4gICAgICBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRixcbiAgICBdXCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgIDppY29uPVwiSUNPTi5WRVJJRklFRFwiXG4gICAgLz5cblxuICAgIDxzcGFuIDpjbGFzcz1cIltDU1MuRUxMSVBTSVNdXCI+VmVyaWZpZWQgdmVoaWNsZTwvc3Bhbj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pY29uIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1pbmZvLXByaW1hcnkpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBzZXQgb2YgYnJlYWRjcnVtYnMgZm9yIG5hdmlnYXRpb24gcHVycG9zZXMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVicmVhZGNydW1icy0tZG9jcykgZm9yIFRpZGVCcmVhZENydW1ic1xuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IEludGVybmFsQmFzZUxpbmsgZnJvbSAnQC9jb21wb25lbnRzL0ludGVybmFsQmFzZUxpbmsudnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEJyZWFkQ3J1bWIgfSBmcm9tICdAL3R5cGVzL0JyZWFkQ3J1bWInO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIEFuIGFycmF5IG9mIGxhYmVscyBhbmQgb3B0aW9uYWwgVVJMcyB0byBkaXNwbGF5IGZvciBlYWNoIGJyZWFkIGNydW1iLiAqL1xuICAgIGJyZWFkQ3J1bWJzOiBCcmVhZENydW1iW107XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBicmVhZENydW1iczogdW5kZWZpbmVkLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDx1bCA6Y2xhc3M9XCJbJ3RpZGUtYnJlYWQtY3J1bWJzJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuTElTVF9CVUxMRVRTLk9GRl1cIj5cbiAgICA8dGVtcGxhdGVcbiAgICAgIDprZXk9XCJjcnVtYi5sYWJlbFwiXG4gICAgICB2LWZvcj1cIihjcnVtYiwgaW5kZXgpIGluIHByb3BzLmJyZWFkQ3J1bWJzXCJcbiAgICA+XG4gICAgICA8bGkgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuQk9EWV8yXVwiPlxuICAgICAgICA8SW50ZXJuYWxCYXNlTGlua1xuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxJTktfMiwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgOmRhdGEtdHJhY2s9XCJjcnVtYi5kYXRhVHJhY2sgfHwgdW5kZWZpbmVkXCJcbiAgICAgICAgICA6aHJlZj1cImNydW1iLnVybFwiXG4gICAgICAgICAgdi1pZj1cImNydW1iLnVybFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBjcnVtYi5sYWJlbCB9fVxuICAgICAgICA8L0ludGVybmFsQmFzZUxpbms+XG5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICA6ZGF0YS10cmFjaz1cImNydW1iLmRhdGFUcmFjayB8fCB1bmRlZmluZWRcIlxuICAgICAgICAgIHYtZWxzZVxuICAgICAgICA+XG4gICAgICAgICAge3sgY3J1bWIubGFiZWwgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9saT5cblxuICAgICAgPGxpIHYtaWY9XCJwcm9wcy5icmVhZENydW1icyAmJiBpbmRleCA8IHByb3BzLmJyZWFkQ3J1bWJzLmxlbmd0aCAtIDFcIj5cbiAgICAgICAgPFRpZGVJY29uXG4gICAgICAgICAgOmljb249XCJJQ09OLkFSUk9XX1JJR0hUXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAvPlxuICAgICAgPC9saT5cbiAgICA8L3RlbXBsYXRlPlxuICA8L3VsPlxuPC90ZW1wbGF0ZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgYnV0dG9uIGNvbXBvbmVudCB3aXRoIHZhcmlvdXMgc3R5bGluZyBvcHRpb25zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlYnV0dG9uLS1kb2NzKSBmb3IgVGlkZUJ1dHRvblxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IFNJWkUsIFNJWkVfQlVUVE9OIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50IH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBQcmlvcml0eSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgdHlwZSB7IFNpemVCdXR0b24gfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgdHlwZSB7IEJ1dHRvblR5cGUgfSBmcm9tICdAL3R5cGVzL1R5cGUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgY2xpY2thYmlsaXR5IChCdXR0b24gb25seSkgKi9cbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgICAvKiogSFRNTCB0YWcgdHlwZSAqL1xuICAgIGVsZW1lbnQ/OiBFbGVtZW50O1xuXG4gICAgLyoqIFVSTCB0byBvcGVuIChMaW5rIG9ubHkpICovXG4gICAgaHJlZj86IHN0cmluZztcblxuICAgIC8qKiBJY29uIHRvIGxlZnQgb2YgbGFiZWwgKi9cbiAgICBpY29uTGVhZGluZz86IEljb247XG5cbiAgICAvKiogSWNvbiB0byByaWdodCBvZiBsYWJlbCAqL1xuICAgIGljb25UcmFpbGluZz86IEljb247XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHRhcmdldCBhIG5ldyBicm93c2VyIHRhYiAoTGluayBvbmx5KSAqL1xuICAgIGlzTmV3VGFiPzogYm9vbGVhbjtcblxuICAgIC8qKiBCdXR0b24gdGV4dCAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB2aXN1YWwgcHJvbWluZW5jZSAqL1xuICAgIHByaW9yaXR5PzogRXhjbHVkZTxQcmlvcml0eSwgdHlwZW9mIFBSSU9SSVRZLkZMT0FUSU5HPjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHJlbmRlcmVkIHNpemUgKi9cbiAgICBzaXplPzogU2l6ZUJ1dHRvbjtcblxuICAgIC8qKiBBcHBsaWVzIHR5cGUgYXR0cmlidXRlIHRvIEhUTUwgZWxlbWVudCAqL1xuICAgIHR5cGU/OiBCdXR0b25UeXBlO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVsZW1lbnQ6IEVMRU1FTlQuQlVUVE9OLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGljb25UcmFpbGluZzogdW5kZWZpbmVkLFxuICAgIGlzTmV3VGFiOiBmYWxzZSxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIHByaW9yaXR5OiBQUklPUklUWS5QUklNQVJZLFxuICAgIHNpemU6IFNJWkVfQlVUVE9OLkxBUkdFLFxuICAgIHR5cGU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgdHlwZUF0dHJpYnV0ZSA9IGNvbXB1dGVkPHN0cmluZyB8IHVuZGVmaW5lZD4oKCkgPT5cbiAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiA/IHByb3BzLnR5cGUgPz8gRUxFTUVOVC5CVVRUT04gOiB1bmRlZmluZWRcbiAgKTtcblxuICBjb25zdCByb290RWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBJbnRlcm5hbEJhc2VMaW5rIDogcHJvcHMuZWxlbWVudCkpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJ1dHRvbicsXG4gICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzFfU0VNSUJPTEQsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuUEFERElORy5YLlRXTyxcbiAgICAgIGB0aWRlLWJ1dHRvbi0ke3ByaW9yaXR5fWAsXG4gICAgICBlbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBbQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVgsIENTUy5VTkRFUkxJTkUuUkVTVC5PRkZdIDogW0NTUy5ESVNQTEFZLkZMRVhdLFxuICAgICAgc2l6ZSA9PT0gU0laRV9CVVRUT04uU01BTExcbiAgICAgICAgPyBbQ1NTLkZPTlQuUk9MRS5CVVRUT05fMiwgQ1NTLlBBRERJTkcuWS5IQUxGXVxuICAgICAgICA6IFtDU1MuRk9OVC5ST0xFLkJVVFRPTl8xLCBDU1MuUEFERElORy5ZLk9ORV0sXG4gICAgXVwiXG4gICAgOmRpc2FibGVkPVwiZWxlbWVudCA9PT0gRUxFTUVOVC5CVVRUT04gJiYgZGlzYWJsZWRcIlxuICAgIDpocmVmPVwiZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LICYmIGhyZWYgPyBocmVmIDogdW5kZWZpbmVkXCJcbiAgICA6dGFyZ2V0PVwiZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LICYmIGlzTmV3VGFiID8gVEFSR0VULkJMQU5LIDogVEFSR0VULlNFTEZcIlxuICAgIDp0eXBlPVwidHlwZUF0dHJpYnV0ZVwiXG4gICAgOmlzPVwicm9vdEVsZW1lbnRcIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6aWNvbj1cImljb25MZWFkaW5nXCJcbiAgICAgIDpzaXplPVwic2l6ZSA9PT0gU0laRV9CVVRUT04uTEFSR0UgPyBTSVpFLkxBUkdFIDogU0laRS5TTUFMTFwiXG4gICAgICB2LWlmPVwiaWNvbkxlYWRpbmdcIlxuICAgIC8+XG5cbiAgICB7eyBsYWJlbCB9fVxuXG4gICAgPFRpZGVJY29uXG4gICAgICA6aWNvbj1cImljb25UcmFpbGluZ1wiXG4gICAgICA6c2l6ZT1cInNpemUgPT09IFNJWkVfQlVUVE9OLkxBUkdFID8gU0laRS5MQVJHRSA6IFNJWkUuU01BTExcIlxuICAgICAgdi1pZj1cImljb25UcmFpbGluZ1wiXG4gICAgLz5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBidXR0b24gY29tcG9uZW50IGZvciB1c2UgaW4gcGFnaW5hdGlvbiBwdXJwb3Nlcy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWJ1dHRvbnBhZ2luYXRpb24tLWRvY3MpIGZvciBUaWRlQnV0dG9uUGFnaW5hdGlvblxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQsIEVMRU1FTlRfQlJPQUQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50QnJvYWQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIFBhZ2luYXRpb24gQnV0dG9uIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGlzcGxheWVkIHBhZ2UgKi9cbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgICAvKiogSFRNTCB0YWcgdHlwZSAqL1xuICAgIGVsZW1lbnQ/OiBFbGVtZW50QnJvYWQ7XG5cbiAgICAvKiogVVJMIHRvIG9wZW48YnIgLz4oTGluayBvbmx5KSAqL1xuICAgIGhyZWY/OiBzdHJpbmc7XG5cbiAgICAvKiogQnV0dG9uIHRleHQgKi9cbiAgICBsYWJlbDogc3RyaW5nIHwgbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVsZW1lbnQ6IEVMRU1FTlRfQlJPQUQuQlVUVE9OLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCByb290RWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBJbnRlcm5hbEJhc2VMaW5rIDogcHJvcHMuZWxlbWVudCkpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJ1dHRvbi1pY29uJyxcbiAgICAgIFtDU1MuRElTUExBWS5JTkxJTkVfQkxPQ0ssIENTUy5CT1JERVIuUkFESVVTLkZVTEwsIENTUy5QQURESU5HLkZVTEwuSEFMRl0sXG4gICAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5UX0JST0FELkxJTksgPyBbQ1NTLlVOREVSTElORS5SRVNULk9GRl0gOiAnJyxcbiAgICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlRfQlJPQUQuRElWID8gW0NTUy5DVVJTT1IuUE9JTlRFUl0gOiAnJyxcbiAgICAgIFtDU1MuRk9OVC5ST0xFLkhFQURMSU5FXzNdLFxuICAgIF1cIlxuICAgIDpkaXNhYmxlZD1cInByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlRfQlJPQUQuQlVUVE9OICYmIHByb3BzLmRpc2FibGVkXCJcbiAgICA6aHJlZj1cInByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlRfQlJPQUQuTElOSyAmJiBwcm9wcy5ocmVmID8gcHJvcHMuaHJlZiA6IHVuZGVmaW5lZFwiXG4gICAgOnR5cGU9XCJlbGVtZW50ID09PSBFTEVNRU5UX0JST0FELkJVVFRPTiA/IEVMRU1FTlRfQlJPQUQuQlVUVE9OIDogdW5kZWZpbmVkXCJcbiAgICA6aXM9XCJyb290RWxlbWVudFwiXG4gID5cbiAgICA8c3BhbiA6Y2xhc3M9XCJbJ2xhYmVsJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkNFTlRFUiwgQ1NTLkFYSVMyLkNFTlRFUl1cIj5cbiAgICAgIHt7IHByb3BzLmxhYmVsIH19XG4gICAgPC9zcGFuPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWJ1dHRvbi1pY29uLFxuICAudGlkZS1saW5rLWFzLWJ1dHRvbi1pY29uIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10aWRlLXdoaXRlKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10aWRlLXdoaXRlKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1zZWNvbmRhcnkpO1xuICB9XG5cbiAgLnRpZGUtYnV0dG9uLWljb246bm90KDpkaXNhYmxlZCk6aG92ZXIsXG4gIC50aWRlLWxpbmstYXMtYnV0dG9uLWljb246bm90KDpkaXNhYmxlZCk6aG92ZXIge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gIH1cblxuICAudGlkZS1idXR0b24taWNvbjpkaXNhYmxlZCxcbiAgLnRpZGUtbGluay1hcy1idXR0b24taWNvbjpkaXNhYmxlZCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1idXR0b24taWNvbiAubGFiZWwsXG4gIC50aWRlLWxpbmstYXMtYnV0dG9uLWljb24gLmxhYmVsIHtcbiAgICB3aWR0aDogMS41cmVtO1xuICAgIGhlaWdodDogMS41cmVtO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBidXR0b24gY29tcG9uZW50IGZvciB1c2UgdG8gc2F2ZSBpdGVtcy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWJ1dHRvbnNhdmUtLWRvY3MpIGZvciBUaWRlQnV0dG9uU2F2ZVxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IHsgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGNvbnN0IGlzVG91Y2hlZCA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlzU2F2ZWQgPSBkZWZpbmVNb2RlbDxib29sZWFuPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIHdhdGNoKFxuICAgIGlzU2F2ZWQsXG4gICAgKCkgPT4ge1xuICAgICAgaWYgKCFpc1RvdWNoZWQudmFsdWUpIGlzVG91Y2hlZC52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogZmFsc2UgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGJ1dHRvblxuICAgIDpjbGFzcz1cIlsndGlkZS1idXR0b24tc2F2ZScsIENTUy5QQURESU5HLkZVTEwuUVVBUlRFUiwgaXNTYXZlZCAmJiAnc2F2ZWQnXVwiXG4gICAgQGNsaWNrPVwiaXNTYXZlZCA9ICFpc1NhdmVkXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgPlxuICAgIDxkaXYgOmNsYXNzPVwiWydoZWFydC1jb250YWluZXInLCBDU1MuRElTUExBWS5GTEVYLCBpc1NhdmVkICYmIGlzVG91Y2hlZCAmJiAnYW5pbWF0ZS1oZWFydGJlYXQnXVwiPlxuICAgICAgPHN2Z1xuICAgICAgICA6Y2xhc3M9XCJbJ3RpZGUtYnV0dG9uLXNhdmUtaWNvbicsIENTUy5GTEVYLkdST1cuT0ZGLCBDU1MuRkxFWC5TSFJJTksuT0ZGXVwiXG4gICAgICAgIGhlaWdodD1cIjMyXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgIHdpZHRoPVwiMzJcIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgID5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICA6Y2xhc3M9XCJbJ2hlYXJ0LWZpbGxlZCcsIGlzU2F2ZWQgPyBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5SRUQgOiAnZmlsbGVkLXRyYW5zcGFyZW50J11cIlxuICAgICAgICAgIGQ9XCJtMTIgMjEtMS40NS0xLjNjLTEuNjgzMy0xLjUxNjctMy4wNzUtMi44MjUtNC4xNzUtMy45MjUtMS4xLTEuMS0xLjk3NS0yLjA4NzUtMi42MjUtMi45NjI1LS42NS0uODc1LTEuMTA0Mi0xLjY3OTItMS4zNjI1LTIuNDEyNUMyLjEyOTIgOS42NjY3IDIgOC45MTY3IDIgOC4xNWMwLTEuNTY2Ny41MjUtMi44NzUgMS41NzUtMy45MjVDNC42MjUgMy4xNzUgNS45MzMzIDIuNjUgNy41IDIuNjVjLjg2NjcgMCAxLjY5MTcuMTgzMyAyLjQ3NS41NS43ODMzLjM2NjcgMS40NTgzLjg4MzMgMi4wMjUgMS41NS41NjY3LS42NjY3IDEuMjQxNy0xLjE4MzMgMi4wMjUtMS41NS43ODMzLS4zNjY3IDEuNjA4My0uNTUgMi40NzUtLjU1IDEuNTY2NyAwIDIuODc1LjUyNSAzLjkyNSAxLjU3NUMyMS40NzUgNS4yNzUgMjIgNi41ODMzIDIyIDguMTVjMCAuNzY2Ny0uMTI5MiAxLjUxNjctLjM4NzUgMi4yNS0uMjU4My43MzMzLS43MTI1IDEuNTM3NS0xLjM2MjUgMi40MTI1cy0xLjUyNSAxLjg2MjUtMi42MjUgMi45NjI1Yy0xLjEgMS4xLTIuNDkxNyAyLjQwODMtNC4xNzUgMy45MjVMMTIgMjFaXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8cGF0aFxuICAgICAgICAgIDpjbGFzcz1cIlsnaGVhcnQtb3V0bGluZScsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuSU5WRVJTRV1cIlxuICAgICAgICAgIGQ9XCJtMTIgMjEtMS40NS0xLjNjLTEuNjgzMy0xLjUxNjctMy4wNzUtMi44MjUtNC4xNzUtMy45MjUtMS4xLTEuMS0xLjk3NS0yLjA4NzUtMi42MjUtMi45NjI1LS42NS0uODc1LTEuMTA0Mi0xLjY3OTItMS4zNjI1LTIuNDEyNUMyLjEyOTIgOS42NjY3IDIgOC45MTY3IDIgOC4xNWMwLTEuNTY2Ny41MjUtMi44NzUgMS41NzUtMy45MjVDNC42MjUgMy4xNzUgNS45MzMzIDIuNjUgNy41IDIuNjVjLjg2NjcgMCAxLjY5MTcuMTgzMyAyLjQ3NS41NS43ODMzLjM2NjcgMS40NTgzLjg4MzMgMi4wMjUgMS41NS41NjY3LS42NjY3IDEuMjQxNy0xLjE4MzMgMi4wMjUtMS41NS43ODMzLS4zNjY3IDEuNjA4My0uNTUgMi40NzUtLjU1IDEuNTY2NyAwIDIuODc1LjUyNSAzLjkyNSAxLjU3NUMyMS40NzUgNS4yNzUgMjIgNi41ODMzIDIyIDguMTVjMCAuNzY2Ny0uMTI5MiAxLjUxNjctLjM4NzUgMi4yNS0uMjU4My43MzMzLS43MTI1IDEuNTM3NS0xLjM2MjUgMi40MTI1cy0xLjUyNSAxLjg2MjUtMi42MjUgMi45NjI1Yy0xLjEgMS4xLTIuNDkxNyAyLjQwODMtNC4xNzUgMy45MjVMMTIgMjFabTAtMi43YzEuNi0xLjQzMzMgMi45MTY3LTIuNjYyNSAzLjk1LTMuNjg3NXMxLjg1LTEuOTE2NyAyLjQ1LTIuNjc1Yy42LS43NTgzIDEuMDE2Ny0xLjQzMzMgMS4yNS0yLjAyNS4yMzMzLS41OTE3LjM1LTEuMTc5Mi4zNS0xLjc2MjUgMC0xLS4zMzMzLTEuODMzMy0xLTIuNS0uNjY2Ny0uNjY2Ny0xLjUtMS0yLjUtMS0uNzgzMyAwLTEuNTA4My4yMjA4LTIuMTc1LjY2MjVDMTMuNjU4MyA1Ljc1NDIgMTMuMiA2LjMxNjcgMTIuOTUgN2gtMS45Yy0uMjUtLjY4MzMtLjcwODMtMS4yNDU4LTEuMzc1LTEuNjg3NVM4LjI4MzMgNC42NSA3LjUgNC42NWMtMSAwLTEuODMzMy4zMzMzLTIuNSAxLS42NjY3LjY2NjctMSAxLjUtMSAyLjUgMCAuNTgzMy4xMTY3IDEuMTcwOC4zNSAxLjc2MjUuMjMzMy41OTE3LjY1IDEuMjY2NyAxLjI1IDIuMDI1czEuNDE2NyAxLjY1IDIuNDUgMi42NzVTMTAuNCAxNi44NjY3IDEyIDE4LjNaXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICA8L2J1dHRvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC5oZWFydC1jb250YWluZXIge1xuICAgIC0tcm90YXRlLWR1cmluZy1oZWFydC1iZWF0OiA5ZGVnO1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjMpKTtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWR1cmF0aW9uLTMwMCkgdmFyKC0tdGlkZS1lYXNpbmctZWFzZS1vdXQpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgc2NhbGU7XG4gICAgcm90YXRlOiAwZGVnO1xuICB9XG5cbiAgLmhlYXJ0LWNvbnRhaW5lci5hbmltYXRlLWhlYXJ0YmVhdCB7XG4gICAgYW5pbWF0aW9uOiBoZWFydEJlYXQgdmFyKC0tdGlkZS1kdXJhdGlvbi0xNTApO1xuICAgIGFuaW1hdGlvbi1kaXJlY3Rpb246IGFsdGVybmF0ZTtcbiAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiA0O1xuICB9XG5cbiAgLmhlYXJ0LWNvbnRhaW5lcjphY3RpdmUge1xuICAgIHNjYWxlOiAwLjk7XG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tdGlkZS1kdXJhdGlvbi03NSk7XG4gIH1cblxuICAudGlkZS1idXR0b24tc2F2ZS1pY29uIHtcbiAgICBmaWxsOiBjdXJyZW50Q29sb3I7XG4gIH1cblxuICBAbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICAgIC5oZWFydC1jb250YWluZXIge1xuICAgICAgLS1yb3RhdGUtZHVyaW5nLWhlYXJ0LWJlYXQ6IDBkZWc7XG4gICAgfVxuXG4gICAgLnRpZGUtYnV0dG9uLXNhdmU6d2hlcmUoOmhvdmVyLCA6Zm9jdXMtdmlzaWJsZSkgLmhlYXJ0LWNvbnRhaW5lciB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5ZGVnKTtcbiAgICB9XG4gIH1cblxuICAuaGVhcnQtZmlsbGVkIHtcbiAgICBzY2FsZTogMC45ODU7IC8qIGF2b2lkIGhhaXJsaW5lIGJvcmRlciByZW5kZXIgaXNzdWUgKi9cbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tdGlkZS1kdXJhdGlvbi03NSkgdmFyKC0tdGlkZS1lYXNpbmctbGluZWFyKTtcbiAgfVxuXG4gIC5maWxsZWQtdHJhbnNwYXJlbnQge1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXRyYW5zcGFyZW50LTQwMCk7XG4gIH1cblxuICBAa2V5ZnJhbWVzIGhlYXJ0QmVhdCB7XG4gICAgZnJvbSB7XG4gICAgICBzY2FsZTogMTtcbiAgICAgIHJvdGF0ZTogMGRlZztcbiAgICB9XG4gICAgdG8ge1xuICAgICAgc2NhbGU6IDEuMjU7XG4gICAgICByb3RhdGU6IHZhcigtLXJvdGF0ZS1kdXJpbmctaGVhcnQtYmVhdCk7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBzZWdtZW50ZWQgYnV0dG9uIGNvbXBvbmVudCBmb3IgbmF2aWdhdGlvbiBwdXJwb3Nlcy5cbiAgICpcbiAgICogUG93ZXJlZCBieSBuYXRpdmUgaW5wdXRbdHlwZT1cInJhZGlvXCJdIHVuZGVyIHRoZSBob29kIGZvciBlbmhhbmNlZCBhY2Nlc3NpYmlsaXR5LlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlYnV0dG9uc2VnbWVudGVkLS1kb2NzKSBmb3IgVGlkZUJ1dHRvblNlZ21lbnRlZFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHVzZUlkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBUYWIgfSBmcm9tICdAL3R5cGVzL1RhYic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogU2V0cyBsYWJlbCBhbmQgY2FsbGJhY2sgZm9yIGVhY2ggdGFiICovXG4gICAgdGFiczogVGFiW10gfCByZWFkb25seSBUYWJbXTtcblxuICAgIC8qKiBPcHRzIGluIGFzIGEgbmF0aXZlIEhUTUwgZm9ybSBmaWVsZCB3aXRoIHRoaXMgbmFtZS4gKi9cbiAgICBuYW1lPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG5cbiAgY29uc3QgY3VycmVudEluZGV4ID0gZGVmaW5lTW9kZWw8bnVtYmVyPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IHVuaXF1ZUlkID0gdXNlSWQoKTtcblxuICBjb25zdCBpbnB1dEZvcm1BdHRyaWJ1dGUgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMubmFtZSA/IHVuZGVmaW5lZCA6ICdub25lJykpO1xuICBjb25zdCBpbnB1dE5hbWVBdHRyaWJ1dGUgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5uYW1lID8/IHVuaXF1ZUlkKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1idXR0b24tc2VnbWVudGVkJyxcbiAgICAgIENTUy5CRy5TVVJGQUNFLlZBUklBTlQsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuT1ZFUkZMT1cuWFkuQVVUTyxcbiAgICAgIENTUy5QQURESU5HLkZVTEwuUVVBUlRFUixcbiAgICBdXCJcbiAgICByb2xlPVwicmFkaW9ncm91cFwiXG4gID5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtYnV0dG9uLXNlZ21lbnRlZC10YWInLFxuICAgICAgICBpbmRleCA9PT0gY3VycmVudEluZGV4XG4gICAgICAgICAgPyBbQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULCBDU1MuU0hBRE9XLkJPVFRPTV1cbiAgICAgICAgICA6IFsnaW5hY3RpdmUnLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdLFxuICAgICAgICBDU1MuQUxJR04uWC5DRU5URVIsXG4gICAgICAgIENTUy5CT1JERVIuRlVMTC5UV08sXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgICAgQ1NTLkZMRVguR1JPVy5PTixcbiAgICAgICAgQ1NTLkZMRVguU0hSSU5LLk9GRixcbiAgICAgICAgQ1NTLkZPTlQuUk9MRS5CVVRUT05fMSxcbiAgICAgICAgQ1NTLlBBRERJTkcuWC5IQUxGLFxuICAgICAgICBDU1MuUEFERElORy5ZLlFVQVJURVIsXG4gICAgICAgIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICAgICAgICBDU1MuV0lEVEguQVVUTyxcbiAgICAgIF1cIlxuICAgICAgOmRhdGEtdHJhY2s9XCJ0YWIuZGF0YVRyYWNrIHx8IHVuZGVmaW5lZFwiXG4gICAgICA6a2V5PVwidGFiLmxhYmVsXCJcbiAgICAgIHYtZm9yPVwiKHRhYiwgaW5kZXgpIGluIHRhYnNcIlxuICAgID5cbiAgICAgIDxpbnB1dFxuICAgICAgICA6Y2hlY2tlZD1cImluZGV4ID09PSBjdXJyZW50SW5kZXhcIlxuICAgICAgICA6Y2xhc3M9XCJbJ3RpZGUtc2NyZWVuLXJlYWRlci1vbmx5J11cIlxuICAgICAgICA6Zm9ybT1cImlucHV0Rm9ybUF0dHJpYnV0ZVwiXG4gICAgICAgIDpuYW1lPVwiaW5wdXROYW1lQXR0cmlidXRlXCJcbiAgICAgICAgOnZhbHVlPVwiaW5kZXhcIlxuICAgICAgICBAY2hhbmdlPVwiY3VycmVudEluZGV4ID0gaW5kZXhcIlxuICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgLz5cblxuICAgICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMl9TRU1JQk9MRF1cIj5cbiAgICAgICAge3sgdGFiLmxhYmVsIH19XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDxzcGFuXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzJfU0VNSUJPTERdXCJcbiAgICAgICAgdi1pZj1cInRhYi5jb3VudCAmJiB0YWIuY291bnQgPiAwXCJcbiAgICAgID5cbiAgICAgICAgKHt7IHRhYi5jb3VudCB9fSlcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWJ1dHRvbi1zZWdtZW50ZWQge1xuICAgIG1heC13aWR0aDogMjMuM3JlbTtcbiAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICB9XG5cbiAgLnRpZGUtYnV0dG9uLXNlZ21lbnRlZDpoYXMoOmZvY3VzLXZpc2libGUpIHtcbiAgICBvdXRsaW5lOiBhdXRvO1xuICB9XG5cbiAgLmluYWN0aXZlIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgfVxuXG4gIC5pbmFjdGl2ZTpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1kZWZhdWx0KTtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBUWVBFX0NBUkQgPSB7XG4gIEFDVElPTkFCTEU6ICdhY3Rpb24nLFxuICBJTkZPUk1BVElPTkFMOiAnaW5mb3JtYXRpb25hbCcsXG4gIFNFTEVDVEFCTEU6ICdzZWxlY3QnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQ2FyZFR5cGUgPSAodHlwZW9mIFRZUEVfQ0FSRClba2V5b2YgdHlwZW9mIFRZUEVfQ0FSRF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGNhcmQgY29tcG9uZW50IHdpdGggYSBoZWFkaW5nLCBkZXNjcmlwdGlvbiwgYW5kIG9wdGlvbmFsIGljb24uXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVjYXJkLS1kb2NzKSBmb3IgVGlkZUNhcmRcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IFRZUEVfQ0FSRCB9IGZyb20gJ0AvdHlwZXMvQ2FyZCc7XG4gIGltcG9ydCB7IEVMRU1FTlRfQlJPQUQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgQ2FyZFR5cGUgfSBmcm9tICdAL3R5cGVzL0NhcmQnO1xuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnRCcm9hZCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogT3B0aW9uYWwgZGVzY3JpcHRpb24gdGV4dCBkaXNwbGF5ZWQgYmVsb3cgdGhlIGhlYWRpbmcgKi9cbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAgIC8qKiBUaGUgbWFpbiBoZWFkaW5nIG9mIHRoZSBjYXJkLiAqL1xuICAgIGhlYWRpbmc6IHN0cmluZztcblxuICAgIC8qKiBPcHRpb25hbCBpY29uIGRpc3BsYXllZCBvbiB0aGUgY2FyZC4gKi9cbiAgICBpY29uPzogSWNvbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIENhcmQgaXMgc2VsZWN0ZWQgKGZvciBzZWxlY3RhYmxlIGNhcmRzKS4gKi9cbiAgICBzZWxlY3RlZD86IGJvb2xlYW47XG5cbiAgICAvKiogVHlwZSBvZiB0aGUgY2FyZCAqL1xuICAgIHR5cGU/OiBDYXJkVHlwZTtcblxuICAgIC8qKiBVUkwgdG8gbmF2aWdhdGUgdG8gb24gY2xpY2suICovXG4gICAgaHJlZj86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRlc2NyaXB0aW9uOiB1bmRlZmluZWQsXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGljb246IHVuZGVmaW5lZCxcbiAgICBzZWxlY3RlZDogdW5kZWZpbmVkLFxuICAgIHR5cGU6IFRZUEVfQ0FSRC5JTkZPUk1BVElPTkFMLFxuICB9KTtcblxuICBjb25zdCByb290RWxlbWVudCA9IGNvbXB1dGVkPEVsZW1lbnRCcm9hZCB8IHR5cGVvZiBJbnRlcm5hbEJhc2VMaW5rPigoKSA9PlxuICAgIHByb3BzLmhyZWYgPyBJbnRlcm5hbEJhc2VMaW5rIDogcHJvcHMudHlwZSA9PT0gVFlQRV9DQVJELklORk9STUFUSU9OQUwgPyBFTEVNRU5UX0JST0FELkRJViA6IEVMRU1FTlRfQlJPQUQuQlVUVE9OXG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtY2FyZCcsXG4gICAgICBDU1MuQk9SREVSLkNPTE9SLkxPVyxcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5QQURESU5HLkZVTEwuT05FLFxuICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICBDU1MuQUxJR04uWC5MRUZULFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIHR5cGUgIT09IFRZUEVfQ0FSRC5JTkZPUk1BVElPTkFMICYmICdob3ZlcmFibGUnLFxuICAgICAgdHlwZSA9PT0gVFlQRV9DQVJELlNFTEVDVEFCTEUgJiYgc2VsZWN0ZWQgJiYgJ3NlbGVjdGVkJyxcbiAgICBdXCJcbiAgICA6aHJlZj1cImhyZWZcIlxuICAgIDp0eXBlPVwicm9vdEVsZW1lbnQgPT09IEVMRU1FTlRfQlJPQUQuQlVUVE9OID8gRUxFTUVOVF9CUk9BRC5CVVRUT04gOiB1bmRlZmluZWRcIlxuICAgIDppcz1cInJvb3RFbGVtZW50XCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLkdST1cuT0ZGLCBDU1MuRkxFWC5TSFJJTksuT0ZGXVwiXG4gICAgICA6aWNvbj1cImljb25cIlxuICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIHYtaWY9XCJpY29uXCJcbiAgICAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkFYSVMyLlNUQVJULCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLkhBTEZdXCI+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzFfU0VNSUJPTEQsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIj5cbiAgICAgICAge3sgaGVhZGluZyB9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMiwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIHYtaWY9XCJkZXNjcmlwdGlvblwiXG4gICAgICA+XG4gICAgICAgIHt7IGRlc2NyaXB0aW9uIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1jYXJkLmhvdmVyYWJsZTpub3QoLnNlbGVjdGVkKTpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1yZXN0KTtcbiAgfVxuICAudGlkZS1jYXJkLnNlbGVjdGVkIHtcbiAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGNhcm91c2VsIGNvbXBvbmVudCB3aXRoIG5hdmlnYXRpb24gY29udHJvbHMgYW5kIHNsaWRlIGluZGljYXRvcnMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVjYXJvdXNlbC0tZG9jcykgZm9yIFRpZGVDYXJvdXNlbFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBkaXNwbGF5IHRoZSBpbmRpY2F0b3IgZG90cyBvdmVybGF5PGJyIC8+KE9ubHkgdmFsaWQgd2l0aCBmdWxsIHdpZHRoIGNhcmRzKSAqL1xuICAgIGhhc0RvdHM/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBkaXNwbGF5IG9uLXBhZ2Ugb3IgZmxvYXRpbmcgY2Fyb3VzZWwgKi9cbiAgICBpc0Zsb2F0aW5nPzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIGZvbnQgcm9sZSB1c2VkIGZvciB0aXRsZSBkaXNwbGF5ICovXG4gICAgaXNIZWFkbGluZTE/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBvbi1wYWdlIGJ1dHRvbnMgc2hvdWxkIGJlIGhpZGRlbiB1bnRpbCBob3ZlciAqL1xuICAgIGlzSGlkZWF3YXlCdXR0b25zPzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gc2Nyb2xsIGJ5IHBhZ2Ugb3IgYnkgaW5kaXZpZHVhbCBzbGlkZSAqL1xuICAgIGlzU2Nyb2xsQnlQYWdlPzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHRoZSBtYXggbnVtYmVyIG9mIGluZGljYXRvciBkb3RzIHRvIGRpc3BsYXkgYXQgYSBnaXZlbiB0aW1lICovXG4gICAgbWF4RG90cz86IG51bWJlcjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHRoZSB0ZXh0IGRpc3BsYXllZCB0byB0aGUgcmlnaHQgb2YgdGhlIHRpdGxlICovXG4gICAgc3VidGl0bGU/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB0aGUgdGl0bGUgdGV4dCBkaXNwbGF5ZWQgYWJvdmUgdGhlIGNhcm91c2VsICovXG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBoYXNEb3RzOiB1bmRlZmluZWQsXG4gICAgaXNGbG9hdGluZzogZmFsc2UsXG4gICAgaXNIZWFkbGluZTE6IGZhbHNlLFxuICAgIGlzSGlkZWF3YXlCdXR0b25zOiB0cnVlLFxuICAgIGlzU2Nyb2xsQnlQYWdlOiB0cnVlLFxuICAgIG1heERvdHM6IDUsXG4gICAgc3VidGl0bGU6IHVuZGVmaW5lZCxcbiAgICB0aXRsZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ3NsaWRlc0FkZGVkVG9WaWV3Jywgc2xpZGVzSW5WaWV3OiBudW1iZXJbXSk6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IGNhcm91c2VsUmVmID0gcmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBjb250ZW50V2lkdGggPSByZWY8bnVtYmVyPigwKTtcbiAgY29uc3QgY3VycmVudFBhZ2VJbmRleCA9IHJlZjxudW1iZXI+KDApO1xuICBjb25zdCBkb3RzUmVmID0gcmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGZyYW1lV2lkdGggPSByZWY8bnVtYmVyPigwKTtcbiAgY29uc3QgaXNGaXJzdFNsaWRlID0gcmVmPGJvb2xlYW4+KHRydWUpO1xuICBjb25zdCBpc0xhc3RTbGlkZSA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IHNob3dCdXR0b25zID0gcmVmPGJvb2xlYW4+KHRydWUpO1xuICBjb25zdCBzbGlkZU9ic2VydmVyID0gcmVmPEludGVyc2VjdGlvbk9ic2VydmVyIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHNsaWRlcyA9IHJlZjxIVE1MRWxlbWVudFtdPihbXSk7XG4gIGNvbnN0IHNsaWRlc0luVmlldyA9IHJlZjxudW1iZXJbXT4oW10pO1xuICBjb25zdCBzbG90T2JzZXJ2ZXIgPSByZWY8TXV0YXRpb25PYnNlcnZlciB8IG51bGw+KG51bGwpO1xuICBjb25zdCB0b3VjaFN0YXJ0ID0gcmVmPFRvdWNoIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjb25zdCBzbGlkZXNJblZpZXdDb3VudCA9IHJlZjxudW1iZXI+KDEpO1xuXG4gIGNvbnN0IGN1cnJlbnRQYWdlID0gY29tcHV0ZWQoKCkgPT4gY3VycmVudFBhZ2VJbmRleC52YWx1ZSArIDEpO1xuICBjb25zdCBkb3RDb250YWluZXJXaWR0aCA9IGNvbXB1dGVkKCgpID0+IGRvdENvdW50VmlzaWJsZS52YWx1ZSAqIGRvdFdpZHRoICsgKGRvdENvdW50VmlzaWJsZS52YWx1ZSAtIDEpICogZG90R2FwKTtcbiAgY29uc3QgZG90Q291bnRWaXNpYmxlID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLm1heERvdHMgPiB0b3RhbFBhZ2VzLnZhbHVlID8gdG90YWxQYWdlcy52YWx1ZSA6IHByb3BzLm1heERvdHMpKTtcbiAgY29uc3QgdG90YWxQYWdlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoIXNsaWRlcy52YWx1ZS5sZW5ndGgpIHJldHVybiAwO1xuICAgIGlmICghcHJvcHMuaXNTY3JvbGxCeVBhZ2UpIHJldHVybiBzbGlkZXMudmFsdWUubGVuZ3RoO1xuXG4gICAgY29uc3QgcXVvdGllbnQgPSBNYXRoLmZsb29yKHNsaWRlcy52YWx1ZS5sZW5ndGggLyBzbGlkZXNJblZpZXdDb3VudC52YWx1ZSk7XG4gICAgY29uc3QgcmVtYWluZGVyID0gc2xpZGVzLnZhbHVlLmxlbmd0aCAlIHNsaWRlc0luVmlld0NvdW50LnZhbHVlO1xuXG4gICAgcmV0dXJuIHJlbWFpbmRlciA/IHF1b3RpZW50ICsgMSA6IHF1b3RpZW50O1xuICB9KTtcblxuICBjb25zdCBkb3RHYXA6IG51bWJlciA9IDg7XG4gIGNvbnN0IGRvdFdpZHRoOiBudW1iZXIgPSA4O1xuICBsZXQgc2Nyb2xsVGltZW91dDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0IGdldERvdENsYXNzID0gKGRvdEluZGV4OiBudW1iZXIpID0+IHtcbiAgICBsZXQgY2xhc3NOYW1lID0gJyc7XG5cbiAgICBpZiAoZG90SW5kZXggPT09IGN1cnJlbnRQYWdlSW5kZXgudmFsdWUpIGNsYXNzTmFtZSA9ICd0aWRlLWNhcm91c2VsLWRvdC1hY3RpdmUnO1xuICAgIGlmIChNYXRoLmFicyhjdXJyZW50UGFnZUluZGV4LnZhbHVlIC0gZG90SW5kZXgpID09PSAxKSBjbGFzc05hbWUgPSAndGlkZS1jYXJvdXNlbC1kb3QtbmVpZ2hib3InO1xuXG4gICAgcmV0dXJuIGNsYXNzTmFtZTtcbiAgfTtcblxuICBjb25zdCBnZXRJc0VsZW1lbnRXaXRoaW5Db250YWluZXIgPSAoZWxlbWVudDogSFRNTEVsZW1lbnQsIGNvbnRhaW5lcjogSFRNTEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBjb250YWluZXJSZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGNvbnRhaW5lclJpZ2h0ID0gY29udGFpbmVyUmVjdC5sZWZ0ICsgY29udGFpbmVyUmVjdC53aWR0aDtcbiAgICBjb25zdCBlbGVtZW50UmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgZWxlbWVudFJpZ2h0ID0gZWxlbWVudFJlY3QubGVmdCArIGVsZW1lbnRSZWN0LndpZHRoO1xuXG4gICAgcmV0dXJuIGVsZW1lbnRSaWdodCA8PSBjb250YWluZXJSaWdodCAmJiBlbGVtZW50UmVjdC5sZWZ0ID49IGNvbnRhaW5lclJlY3QubGVmdDtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVUb3VjaEVuZCA9IChldmVudDogVG91Y2hFdmVudCkgPT4ge1xuICAgIGlmICghdG91Y2hTdGFydC52YWx1ZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgdG91Y2hFbmQgPSBldmVudC5jaGFuZ2VkVG91Y2hlc1swXTtcbiAgICBjb25zdCBkZWx0YVggPSB0b3VjaFN0YXJ0LnZhbHVlLmNsaWVudFggLSB0b3VjaEVuZC5jbGllbnRYO1xuICAgIGNvbnN0IGRlbHRhWSA9IHRvdWNoRW5kLmNsaWVudFkgLSB0b3VjaFN0YXJ0LnZhbHVlLmNsaWVudFk7XG5cbiAgICBpZiAoTWF0aC5hYnMoZGVsdGFYKSA+IE1hdGguYWJzKGRlbHRhWSkpIHNjcm9sbEJ5RGVsdGEoZGVsdGFYKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVUb3VjaFN0YXJ0ID0gKGV2ZW50OiBUb3VjaEV2ZW50KSA9PiB7XG4gICAgdG91Y2hTdGFydC52YWx1ZSA9IGV2ZW50LnRvdWNoZXNbMF07XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlV2hlZWwgPSAoZXZlbnQ6IFdoZWVsRXZlbnQpID0+IHtcbiAgICBjb25zdCBpc1NoaWZ0S2V5RG93biA9IGV2ZW50LnNoaWZ0S2V5O1xuICAgIGNvbnN0IGlzV2hlZWwgPSBNYXRoLmFicyhldmVudC5kZWx0YVkpID49IDgwO1xuXG4gICAgaWYgKGlzV2hlZWwgJiYgIWlzU2hpZnRLZXlEb3duKSByZXR1cm47XG4gICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgY2xlYXJUaW1lb3V0KHNjcm9sbFRpbWVvdXQpO1xuXG4gICAgc2Nyb2xsVGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChpc1doZWVsKSB7XG4gICAgICAgIHNjcm9sbEJ5RGVsdGEoZXZlbnQuZGVsdGFZKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IHNsaWRlcy52YWx1ZVtzbGlkZXNJblZpZXcudmFsdWVbMF1dPy5vZmZzZXRMZWZ0IHx8IDA7XG5cbiAgICAgICAgc2Nyb2xsVG9PZmZzZXQob2Zmc2V0KTtcbiAgICAgIH1cbiAgICB9LCAxMDApO1xuICB9O1xuXG4gIGNvbnN0IG1lYXN1cmVEb20gPSAoKSA9PiB7XG4gICAgaWYgKCFjb250YWluZXJSZWYudmFsdWUpIHJldHVybjtcblxuICAgIGNvbnRlbnRXaWR0aC52YWx1ZSA9IGNvbnRhaW5lclJlZi52YWx1ZS5zY3JvbGxXaWR0aDtcbiAgICBmcmFtZVdpZHRoLnZhbHVlID0gY29udGFpbmVyUmVmLnZhbHVlLmNsaWVudFdpZHRoO1xuICAgIHNob3dCdXR0b25zLnZhbHVlID0gY29udGVudFdpZHRoLnZhbHVlID4gZnJhbWVXaWR0aC52YWx1ZTtcblxuICAgIHNsaWRlc0luVmlld0NvdW50LnZhbHVlID0gc2xpZGVzLnZhbHVlLmZpbHRlcigoc2xpZGUpID0+XG4gICAgICBnZXRJc0VsZW1lbnRXaXRoaW5Db250YWluZXIoc2xpZGUsIGNvbnRhaW5lclJlZi52YWx1ZSBhcyBIVE1MRWxlbWVudClcbiAgICApLmxlbmd0aDtcbiAgfTtcblxuICBjb25zdCBvYnNlcnZlU2xpZGVzID0gKCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICByb290OiBjYXJvdXNlbFJlZj8udmFsdWUsXG4gICAgICByb290TWFyZ2luOiAnMHB4IDFweCAwcHggMHB4JyxcbiAgICAgIHRocmVzaG9sZDogMSxcbiAgICB9O1xuXG4gICAgc2xpZGVPYnNlcnZlci52YWx1ZSA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllcykgPT4ge1xuICAgICAgbGV0IHNsaWRlc0FkZGVkVG9WaWV3OiBudW1iZXJbXSA9IFtdO1xuXG4gICAgICBlbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IHNsaWRlSW5kZXggPSBzbGlkZXMudmFsdWUuaW5kZXhPZihlbnRyeS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuXG4gICAgICAgIGlmIChlbnRyeS5pc0ludGVyc2VjdGluZykge1xuICAgICAgICAgIHNsaWRlc0FkZGVkVG9WaWV3LnB1c2goc2xpZGVJbmRleCk7XG4gICAgICAgICAgc2xpZGVzSW5WaWV3LnZhbHVlLnB1c2goc2xpZGVJbmRleCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2xpZGVzSW5WaWV3LnZhbHVlID0gc2xpZGVzSW5WaWV3LnZhbHVlLmZpbHRlcigoc2xpZGUpID0+IHNsaWRlICE9PSBzbGlkZUluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNsaWRlc0luVmlldy52YWx1ZS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gICAgICB9KTtcblxuICAgICAgaXNGaXJzdFNsaWRlLnZhbHVlID0gc2xpZGVzSW5WaWV3LnZhbHVlLmluY2x1ZGVzKDApO1xuICAgICAgaXNMYXN0U2xpZGUudmFsdWUgPSBzbGlkZXNJblZpZXcudmFsdWUuaW5jbHVkZXMoc2xpZGVzLnZhbHVlLmxlbmd0aCAtIDEpO1xuXG4gICAgICBpZiAoc2xpZGVzQWRkZWRUb1ZpZXcubGVuZ3RoID4gMCkgZW1pdCgnc2xpZGVzQWRkZWRUb1ZpZXcnLCBzbGlkZXNBZGRlZFRvVmlldyk7XG4gICAgfSwgb3B0aW9ucyk7XG5cbiAgICBzbGlkZXMudmFsdWUuZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgIGlmIChzbGlkZU9ic2VydmVyLnZhbHVlKSBzbGlkZU9ic2VydmVyLnZhbHVlLm9ic2VydmUoY2hpbGQpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9ic2VydmVTbG90ID0gKCkgPT4ge1xuICAgIGNvbnN0IG9ic2VydmVyQ2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoY29udGFpbmVyUmVmLnZhbHVlID09PSBudWxsKSByZXR1cm47XG5cbiAgICAgIHNsaWRlcy52YWx1ZSA9IEFycmF5LmZyb20oY29udGFpbmVyUmVmLnZhbHVlLmNoaWxkcmVuKSBhcyBIVE1MRWxlbWVudFtdO1xuICAgICAgb2JzZXJ2ZVNsaWRlcygpO1xuICAgIH07XG5cbiAgICBzbG90T2JzZXJ2ZXIudmFsdWUgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihvYnNlcnZlckNhbGxiYWNrKTtcblxuICAgIGlmIChjb250YWluZXJSZWYudmFsdWUpIHNsb3RPYnNlcnZlci52YWx1ZS5vYnNlcnZlKGNvbnRhaW5lclJlZi52YWx1ZSwgeyBjaGlsZExpc3Q6IHRydWUgfSk7XG4gIH07XG5cbiAgY29uc3Qgc2Nyb2xsQnlEZWx0YSA9IChkZWx0YTogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaXNTY3JvbGxpbmdMZWZ0ID0gZGVsdGEgPCAwO1xuXG4gICAgaWYgKGlzU2Nyb2xsaW5nTGVmdCkge1xuICAgICAgcHJvcHMuaXNTY3JvbGxCeVBhZ2UgPyBzaG93UHJldmlvdXNQYWdlKCkgOiBzaG93UHJldmlvdXNTbGlkZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9wcy5pc1Njcm9sbEJ5UGFnZSA/IHNob3dOZXh0UGFnZSgpIDogc2hvd05leHRTbGlkZSgpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBzY3JvbGxUb09mZnNldCA9ICh0YXJnZXQ6IG51bWJlcikgPT4ge1xuICAgIGlmIChjb250YWluZXJSZWYudmFsdWUgPT09IG51bGwpIHJldHVybjtcblxuICAgIGNvbnN0IGlzU2Nyb2xsaW5nTGVmdCA9IHRhcmdldCA8PSBjb250YWluZXJSZWYudmFsdWUuc2Nyb2xsTGVmdDtcblxuICAgIGN1cnJlbnRQYWdlSW5kZXgudmFsdWUgPSBpc1Njcm9sbGluZ0xlZnQgPyBjdXJyZW50UGFnZUluZGV4LnZhbHVlIC0gMSA6IGN1cnJlbnRQYWdlSW5kZXgudmFsdWUgKyAxO1xuXG4gICAgY29udGFpbmVyUmVmLnZhbHVlLnNjcm9sbFRvKHtcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIGxlZnQ6IHRhcmdldCxcbiAgICB9KTtcbiAgICB1cGRhdGVEb3RzKGlzU2Nyb2xsaW5nTGVmdCk7XG4gIH07XG5cbiAgY29uc3Qgc2hvd05leHRQYWdlID0gKCkgPT4ge1xuICAgIGlmIChzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID09PSAwIHx8IGlzTGFzdFNsaWRlLnZhbHVlKSByZXR1cm47XG5cbiAgICBjb25zdCBuZXh0U2xpZGU6IG51bWJlciA9IHNsaWRlc0luVmlldy52YWx1ZVtzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoIC0gMV0gKyAxO1xuICAgIGNvbnN0IG9mZnNldCA9IHNsaWRlcy52YWx1ZVtuZXh0U2xpZGVdPy5vZmZzZXRMZWZ0O1xuXG4gICAgc2Nyb2xsVG9PZmZzZXQob2Zmc2V0KTtcbiAgfTtcblxuICBjb25zdCBzaG93UHJldmlvdXNQYWdlID0gKCkgPT4ge1xuICAgIGlmIChzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID09PSAwIHx8IGlzRmlyc3RTbGlkZS52YWx1ZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgcHJldmlvdXNTbGlkZTogbnVtYmVyID0gc2xpZGVzSW5WaWV3LnZhbHVlWzBdIC0gc2xpZGVzSW5WaWV3LnZhbHVlLmxlbmd0aDtcbiAgICBjb25zdCBvZmZzZXQgPSBzbGlkZXMudmFsdWVbcHJldmlvdXNTbGlkZV0/Lm9mZnNldExlZnQgfHwgMDtcblxuICAgIHNjcm9sbFRvT2Zmc2V0KG9mZnNldCk7XG4gIH07XG5cbiAgY29uc3Qgc2hvd05leHRTbGlkZSA9ICgpID0+IHtcbiAgICBpZiAoc2xpZGVzSW5WaWV3LnZhbHVlLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgbmV4dFNsaWRlOiBudW1iZXIgPSBzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID4gMSA/IHNsaWRlc0luVmlldy52YWx1ZVsxXSA6IHNsaWRlc0luVmlldy52YWx1ZVswXSArIDE7XG5cbiAgICBzY3JvbGxUb09mZnNldChzbGlkZXMudmFsdWVbbmV4dFNsaWRlXS5vZmZzZXRMZWZ0KTtcbiAgfTtcblxuICBjb25zdCBzaG93UHJldmlvdXNTbGlkZSA9ICgpID0+IHtcbiAgICBpZiAoc2xpZGVzSW5WaWV3LnZhbHVlLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgcHJldmlvdXNTbGlkZTogbnVtYmVyID0gc2xpZGVzSW5WaWV3LnZhbHVlWzBdIC0gMTtcblxuICAgIHNjcm9sbFRvT2Zmc2V0KHNsaWRlcy52YWx1ZVtwcmV2aW91c1NsaWRlXS5vZmZzZXRMZWZ0KTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVEb3RzID0gKGlzU2Nyb2xsaW5nTGVmdDogYm9vbGVhbikgPT4ge1xuICAgIGlmICghZG90c1JlZi52YWx1ZSB8fCBkb3RDb3VudFZpc2libGUudmFsdWUgPj0gdG90YWxQYWdlcy52YWx1ZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgaXNPZGREb3RDb3VudCA9IGRvdENvdW50VmlzaWJsZS52YWx1ZSAlIDIgIT09IDA7XG4gICAgY29uc3QgY2VudGVyRG90ID1cbiAgICAgIGlzT2RkRG90Q291bnQgfHwgaXNTY3JvbGxpbmdMZWZ0XG4gICAgICAgID8gTWF0aC5mbG9vcihkb3RDb3VudFZpc2libGUudmFsdWUgLyAyKSArIDFcbiAgICAgICAgOiBNYXRoLmZsb29yKGRvdENvdW50VmlzaWJsZS52YWx1ZSAvIDIpO1xuXG4gICAgZG90c1JlZi52YWx1ZS5zY3JvbGxUbyh7XG4gICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICBsZWZ0OiBjdXJyZW50UGFnZS52YWx1ZSA8IGNlbnRlckRvdCA/IDAgOiAoY3VycmVudFBhZ2UudmFsdWUgLSBjZW50ZXJEb3QpICogKGRvdFdpZHRoICsgZG90R2FwKSxcbiAgICB9KTtcbiAgfTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIGlmIChjb250YWluZXJSZWYudmFsdWUgPT09IG51bGwpIHJldHVybjtcblxuICAgIHNsaWRlcy52YWx1ZSA9IEFycmF5LmZyb20oY29udGFpbmVyUmVmLnZhbHVlLmNoaWxkcmVuKSBhcyBIVE1MRWxlbWVudFtdO1xuXG4gICAgbWVhc3VyZURvbSgpO1xuICAgIG9ic2VydmVTbGlkZXMoKTtcbiAgICBvYnNlcnZlU2xvdCgpO1xuXG4gICAgaWYgKHdpbmRvdykge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG1lYXN1cmVEb20pO1xuICAgIH1cbiAgfSk7XG5cbiAgb25Vbm1vdW50ZWQoKCkgPT4ge1xuICAgIHNsaWRlT2JzZXJ2ZXIudmFsdWU/LmRpc2Nvbm5lY3QoKTtcbiAgICBzbG90T2JzZXJ2ZXIudmFsdWU/LmRpc2Nvbm5lY3QoKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgbWVhc3VyZURvbSk7XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb25cbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1jYXJvdXNlbCcsXG4gICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuT05FLFxuICAgICAgQ1NTLldJRFRILk1BWF9GVUxMLFxuICAgIF1cIlxuICAgIHJlZj1cImNhcm91c2VsUmVmXCJcbiAgPlxuICAgIDxzZWN0aW9uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgcHJvcHMudGl0bGUgPyBDU1MuQVhJUzEuQkVUV0VFTiA6IENTUy5BWElTMS5FTkQsIENTUy5BWElTMi5DRU5URVIsIENTUy5XSURUSC5GVUxMXVwiXG4gICAgICB2LWlmPVwiKCFwcm9wcy5pc0Zsb2F0aW5nICYmIHNob3dCdXR0b25zKSB8fCBwcm9wcy50aXRsZVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguV1JBUCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5PTkVdXCJcbiAgICAgICAgdi1pZj1cInByb3BzLnRpdGxlXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltpc0hlYWRsaW5lMSA/IENTUy5GT05ULlJPTEUuSEVBRExJTkVfMSA6IENTUy5GT05ULlJPTEUuSEVBRExJTkVfMl1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy50aXRsZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcm9wcy50aXRsZSB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMiwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLnN1YnRpdGxlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByb3BzLnN1YnRpdGxlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuT05FXVwiXG4gICAgICAgIHYtaWY9XCIhcHJvcHMuaXNGbG9hdGluZyAmJiBzaG93QnV0dG9uc1wiXG4gICAgICA+XG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpkaXNhYmxlZD1cImlzRmlyc3RTbGlkZVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuVEVSVElBUllcIlxuICAgICAgICAgIEBjbGljaz1cImlzU2Nyb2xsQnlQYWdlID8gc2hvd1ByZXZpb3VzUGFnZSgpIDogc2hvd1ByZXZpb3VzU2xpZGUoKVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmRpc2FibGVkPVwiaXNMYXN0U2xpZGVcIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX1JJR0hUXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5URVJUSUFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaXNTY3JvbGxCeVBhZ2UgPyBzaG93TmV4dFBhZ2UoKSA6IHNob3dOZXh0U2xpZGUoKVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG5cbiAgICA8c2xvdCBuYW1lPVwibWlzY1wiIC8+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIltDU1MuUE9TSVRJT04uUkVMQVRJVkUsIENTUy5ESVNQTEFZLkZMRVhdXCI+XG4gICAgICA8dWxcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLWNhcm91c2VsLWNvbnRhaW5lcicsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuR0FQLk9ORSxcbiAgICAgICAgICBDU1MuTElTVF9CVUxMRVRTLk9GRixcbiAgICAgICAgICBDU1MuT1ZFUkZMT1cuWC5TQ1JPTEwsXG4gICAgICAgICAgQ1NTLlNDUk9MTEJBUi5PRkYsXG4gICAgICAgICAgQ1NTLlNOQVAuT04sXG4gICAgICAgIF1cIlxuICAgICAgICByZWY9XCJjb250YWluZXJSZWZcIlxuICAgICAgICBAdG91Y2hlbmQ9XCJoYW5kbGVUb3VjaEVuZFwiXG4gICAgICAgIEB0b3VjaHN0YXJ0LnBhc3NpdmU9XCJoYW5kbGVUb3VjaFN0YXJ0XCJcbiAgICAgICAgQHdoZWVsPVwiaGFuZGxlV2hlZWxcIlxuICAgICAgPlxuICAgICAgICA8c2xvdCAvPlxuICAgICAgPC91bD5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgIENTUy5QT1NJVElPTklORy5CT1RUT00sXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICAgIENTUy5NQVJHSU4uQk9UVE9NLkhBTEYsXG4gICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgXVwiXG4gICAgICAgIHYtaWY9XCJoYXNEb3RzICYmIHRvdGFsUGFnZXMgPiAxXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIlsndGlkZS1jYXJvdXNlbC1kb3RzLWNvbnRhaW5lciddXCJcbiAgICAgICAgICA6c3R5bGU9XCJ7XG4gICAgICAgICAgICB3aWR0aDogYCR7ZG90Q29udGFpbmVyV2lkdGh9cHhgLFxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAndGlkZS1jYXJvdXNlbC1kb3RzJyxcbiAgICAgICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICAgICAgQ1NTLkFYSVMxLlNUQVJULFxuICAgICAgICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgICAgICAgIENTUy5PVkVSRkxPVy5YLlNDUk9MTCxcbiAgICAgICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICAgICAgQ1NTLlNDUk9MTEJBUi5PRkYsXG4gICAgICAgICAgICBdXCJcbiAgICAgICAgICAgIHJlZj1cImRvdHNSZWZcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAgICd0aWRlLWNhcm91c2VsLWRvdCcsXG4gICAgICAgICAgICAgICAgQ1NTLkZMRVguU0hSSU5LLk9GRixcbiAgICAgICAgICAgICAgICBDU1MuSEVJR0hULlpFUk8sXG4gICAgICAgICAgICAgICAgQ1NTLldJRFRILlpFUk8sXG4gICAgICAgICAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICAgICAgICAgIGdldERvdENsYXNzKGluZGV4KSxcbiAgICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICAgIDprZXk9XCJpbmRleFwiXG4gICAgICAgICAgICAgIHYtZm9yPVwiKF8sIGluZGV4KSBpbiB0b3RhbFBhZ2VzXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLWNhcm91c2VsLWJ1dHRvbi1vdmVybGF5JyxcbiAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlRPUCxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5BWElTMS5CRVRXRUVOLFxuICAgICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgcHJvcHMuaXNIaWRlYXdheUJ1dHRvbnMgPyAnaGlkZWF3YXknIDogJycsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwiaXNGbG9hdGluZyAmJiBzaG93QnV0dG9uc1wiXG4gICAgICA+XG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkxFRlQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT05dXCJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0ZpcnN0U2xpZGVcIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cImlzU2Nyb2xsQnlQYWdlID8gc2hvd1ByZXZpb3VzUGFnZSgpIDogc2hvd1ByZXZpb3VzU2xpZGUoKVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uUklHSFQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT05dXCJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0xhc3RTbGlkZVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cImlzU2Nyb2xsQnlQYWdlID8gc2hvd05leHRQYWdlKCkgOiBzaG93TmV4dFNsaWRlKClcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWNhcm91c2VsLWJ1dHRvbi1vdmVybGF5LmhpZGVhd2F5IHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG5cbiAgLnRpZGUtY2Fyb3VzZWw6aG92ZXIgLnRpZGUtY2Fyb3VzZWwtYnV0dG9uLW92ZXJsYXkuaGlkZWF3YXkge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAudGlkZS1jYXJvdXNlbC1kb3Qge1xuICAgIHdpZHRoOiA4cHg7XG4gICAgaGVpZ2h0OiA4cHg7XG4gICAgb3BhY2l0eTogMC43NTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNSk7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWNhcm91c2VsLWRvdC1uZWlnaGJvciB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjc1KTtcbiAgfVxuXG4gIC50aWRlLWNhcm91c2VsLWRvdC1hY3RpdmUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIEBtZWRpYSAocG9pbnRlcjogY29hcnNlKSB7XG4gICAgLnRpZGUtY2Fyb3VzZWwgLnRpZGUtY2Fyb3VzZWwtYnV0dG9uLW92ZXJsYXkge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGNoaXAgYWN0aW9uIGJ1dHRvbiBpbnRlbmRlZCB0byBiZSB1c2VkIGluIG5hdmlnYXRpb24gbWVudXMgcmVsYXRpbmcgdG8gc2VhcmNoZXMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVjaGlwYWN0aW9uLS1kb2NzKSBmb3IgVGlkZUNoaXBBY3Rpb25cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50IH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBIVE1MIHRhZyB0eXBlLiAqL1xuICAgIGVsZW1lbnQ/OiBFbGVtZW50O1xuXG4gICAgLyoqIFVSTCB0byBuYXZpZ2F0ZSB0byBvbiBjbGljay4gKi9cbiAgICBocmVmPzogc3RyaW5nO1xuXG4gICAgLyoqIEljb24gdG8gc2hvdyBiZWZvcmUgdGhlIGxhYmVsLiAqL1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gdGFyZ2V0IGEgbmV3IGJyb3dzZXIgdGFiLiAqL1xuICAgIGlzTmV3VGFiPzogYm9vbGVhbjtcblxuICAgIC8qKiBDaGlwIHRleHQuICovXG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGVsZW1lbnQ6IEVMRU1FTlQuTElOSyxcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgaWNvbkxlYWRpbmc6IElDT04uU0VBUkNILFxuICAgIGlzTmV3VGFiOiBmYWxzZSxcbiAgfSk7XG5cbiAgY29uc3Qgcm9vdEVsZW1lbnQgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gSW50ZXJuYWxCYXNlTGluayA6IHByb3BzLmVsZW1lbnQpKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1jaGlwLWFjdGlvbicsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULFxuICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MSU5LXzIsXG4gICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICBDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGLFxuICAgIF1cIlxuICAgIDpocmVmPVwicHJvcHMuaHJlZlwiXG4gICAgOnRhcmdldD1cInByb3BzLmlzTmV3VGFiID8gVEFSR0VULkJMQU5LIDogVEFSR0VULlNFTEZcIlxuICAgIDp0eXBlPVwiZWxlbWVudCA9PT0gRUxFTUVOVC5CVVRUT04gPyBFTEVNRU5ULkJVVFRPTiA6IHVuZGVmaW5lZFwiXG4gICAgOmlzPVwicm9vdEVsZW1lbnRcIlxuICA+XG4gICAgPFRpZGVJY29uIDppY29uPVwicHJvcHMuaWNvbkxlYWRpbmdcIiAvPlxuXG4gICAgPHNwYW4+e3sgcHJvcHMubGFiZWwgfX08L3NwYW4+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY2hpcC1hY3Rpb246aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBjaGlwIGZpbHRlciBjb21wb25lbnQgZm9yIHVzZSBpbiBuYXZpZ2F0aW9uLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlY2hpcGZpbHRlci0tZG9jcykgZm9yIFRpZGVDaGlwRmlsdGVyXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogQ2hpcCB0ZXh0LiAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG5cbiAgY29uc3QgaXNBY3RpdmUgPSBkZWZpbmVNb2RlbDxib29sZWFuPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKCkgPT4ge1xuICAgIGlzQWN0aXZlLnZhbHVlID0gIWlzQWN0aXZlLnZhbHVlO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGJ1dHRvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNoaXAtZmlsdGVyJyxcbiAgICAgIGlzQWN0aXZlXG4gICAgICAgID8gWydhY3RpdmUnLCBDU1MuQkcuU0VDT05EQVJZLCBDU1MuRk9OVC5DT0xPUi5TRUNPTkRBUlldXG4gICAgICAgIDogW0NTUy5CRy5TVVJGQUNFLlZBUklBTlQsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF0sXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzIsXG4gICAgXVwiXG4gICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2tcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPHNsb3QgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5DRU5URVIsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuSEFMRl1cIj5cbiAgICAgIDxzcGFuIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzEsIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGXVwiPlxuICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2J1dHRvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC8qIEJvcmRlciBtdXN0IGFsd2F5cyBleGlzdCB0byBwcmV2ZW50IHJlc2l6ZSBvbiBob3ZlciBzdGF0ZSwgYnV0IG1hdGNoIGJhY2tncm91bmQgY29sb3Igb24gcmVzdCBzdGF0ZSB0byBibGVuZCBpbi4gKi9cbiAgLnRpZGUtY2hpcC1maWx0ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICB9XG5cbiAgLnRpZGUtY2hpcC1maWx0ZXIuYWN0aXZlIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtc2Vjb25kYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWNoaXAtZmlsdGVyOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGlucHV0IGNoaXAgY29tcG9uZW50IGZvciB1c2UgaW4gbmF2aWdhdGlvbi5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWNoaXBpbnB1dC0tZG9jcykgZm9yIFRpZGVDaGlwSW5wdXRcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBDaGlwIHRleHQgKi9cbiAgICBsYWJlbDogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8YnV0dG9uXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtY2hpcC1pbnB1dCcsXG4gICAgICBDU1MuQkcuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRSxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMixcbiAgICBdXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgPlxuICAgIDxzcGFuPnt7IHByb3BzLmxhYmVsIH19PC9zcGFuPlxuXG4gICAgPFRpZGVJY29uIDppY29uPVwiSUNPTi5DTE9TRVwiIC8+XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY2hpcC1pbnB1dCB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1jaGlwLWlucHV0OmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBjb2x1bW5zIGNvbXBvbmVudCBmb3IgdXNlIGluIG5hdmlnYXRpb24uXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVjb2x1bW5zLS1kb2NzKSBmb3IgVGlkZUNvbHVtbnNcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBEZXRlcm1pbmVzIGxhYmVsIGZvciB0aGUgY29sdW1ucyBzZWN0aW9uLiAqL1xuICAgIGhlYWRpbmc/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBoZWFkaW5nOiAnJyxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvbiBjbGFzcz1cInRpZGUtY29sdW1uc1wiPlxuICAgIDxoMiA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5CT1RUT00uSEFMRl1cIj5cbiAgICAgIHt7IHByb3BzLmhlYWRpbmcgfX1cbiAgICA8L2gyPlxuXG4gICAgPHVsIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5XUkFQLCBDU1MuR0FQLlRXTywgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCI+XG4gICAgICA8bGkgY2xhc3M9XCJ0aWRlLWNvbHVtbnMtY29sdW1uXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzZWN0aW9uMVwiIC8+XG4gICAgICA8L2xpPlxuXG4gICAgICA8bGkgY2xhc3M9XCJ0aWRlLWNvbHVtbnMtY29sdW1uXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzZWN0aW9uMlwiIC8+XG4gICAgICA8L2xpPlxuXG4gICAgICA8bGkgY2xhc3M9XCJ0aWRlLWNvbHVtbnMtY29sdW1uXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzZWN0aW9uM1wiIC8+XG4gICAgICA8L2xpPlxuXG4gICAgICA8bGkgY2xhc3M9XCJ0aWRlLWNvbHVtbnMtY29sdW1uXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzZWN0aW9uNFwiIC8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWNvbHVtbnMtY29sdW1uIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAgIC50aWRlLWNvbHVtbnMtY29sdW1uIHtcbiAgICAgIHdpZHRoOiBjYWxjKCgxMDAlIC0gMnJlbSkgLyAyKTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogMTIzMnB4KSB7XG4gICAgLnRpZGUtY29sdW1ucy1jb2x1bW4ge1xuICAgICAgd2lkdGg6IGNhbGMoKDEwMCUgLSA2cmVtKSAvIDQpO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB7IGluamVjdCwgcHJvdmlkZSwgcmVmIH0gZnJvbSAndnVlJztcblxuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG50eXBlIFRpZGVGb3JtQ29udGV4dCA9IHtcbiAgZm9yY2VTaG93RXJyb3JzOiBSZWY8Ym9vbGVhbj47XG59O1xuXG5jb25zdCBGT1JNX0tFWSA9IFN5bWJvbCgndGlkZS1mb3JtJyk7XG5cbmV4cG9ydCBjb25zdCB1c2VUaWRlRm9ybSA9ICgpID0+IHtcbiAgY29uc3QgZm9yY2VTaG93RXJyb3JzID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcm92aWRlPFRpZGVGb3JtQ29udGV4dD4oRk9STV9LRVksIHsgZm9yY2VTaG93RXJyb3JzIH0pO1xuXG4gIGNvbnN0IHJldmVhbFZhbGlkYXRpb25FcnJvcnMgPSAoKSA9PiB7XG4gICAgZm9yY2VTaG93RXJyb3JzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICByZXR1cm4geyByZXZlYWxWYWxpZGF0aW9uRXJyb3JzIH07XG59O1xuXG5leHBvcnQgY29uc3QgdXNlRm9ybUNvbnRleHQgPSAoKSA9PiB7XG4gIHJldHVybiBpbmplY3Q8VGlkZUZvcm1Db250ZXh0PihGT1JNX0tFWSk7XG59O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBmb3JtIGNvbXBvbmVudCB0byBiZSB1c2VkIHRvIHdyYXAgZm9ybSBlbGVtZW50cyBhbmQgaGFuZGxlIGZvcm0gc3VibWlzc2lvbi5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWZvcm0tLWRvY3MpIGZvciBUaWRlRm9ybVxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IHsgdXNlVGlkZUZvcm0gfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtJztcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ3N1Ym1pdCcsIGU6IFN1Ym1pdEV2ZW50KTogdm9pZDtcbiAgfTtcbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IHsgcmV2ZWFsVmFsaWRhdGlvbkVycm9ycyB9ID0gdXNlVGlkZUZvcm0oKTtcblxuICBjb25zdCBoYW5kbGVTdWJtaXQgPSAoZTogU3VibWl0RXZlbnQpID0+IHtcbiAgICByZXZlYWxWYWxpZGF0aW9uRXJyb3JzKCk7XG4gICAgZW1pdCgnc3VibWl0JywgZSk7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Zm9ybVxuICAgIEBzdWJtaXQucHJldmVudD1cImhhbmRsZVN1Ym1pdFwiXG4gICAgbm92YWxpZGF0ZVxuICA+XG4gICAgPHNsb3QgLz5cbiAgPC9mb3JtPlxuPC90ZW1wbGF0ZT5cbiIsImV4cG9ydCBjb25zdCBPQkpFQ1RfRklUID0ge1xuICBDT05UQUlOOiAnY29udGFpbicsXG4gIENPVkVSOiAnY292ZXInLFxuICBTQ0FMRV9ET1dOOiAnc2NhbGUtZG93bicsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBPYmplY3RGaXQgPSAodHlwZW9mIE9CSkVDVF9GSVQpW2tleW9mIHR5cGVvZiBPQkpFQ1RfRklUXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGFuIGltYWdlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWltYWdlLS1kb2NzKSBmb3IgVGlkZUltYWdlXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBPQkpFQ1RfRklUIH0gZnJvbSAnQC90eXBlcy9JbWFnZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IE9iamVjdEZpdCB9IGZyb20gJ0AvdHlwZXMvSW1hZ2UnO1xuICBpbXBvcnQgdHlwZSB7IFNvdXJjZSB9IGZyb20gJ0AvdHlwZXMvU291cmNlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBUZXh0IGRpc3BsYXkgd2hlbiBpbWFnZSBjYW4ndCBiZSBsb2FkZWQuICovXG4gICAgYWx0Pzogc3RyaW5nO1xuXG4gICAgLyoqIEFwcGx5IGEgXCJoZWlnaHRcIiBhdHRyaWJ1dGUgdG8gdGhlIGludGVybmFsIGltYWdlIHRhZyAoaW5jbHVkaW5nIHVuaXQpLiAqL1xuICAgIGhlaWdodD86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gZGVsYXkgbG9hZGluZyB1bnRpbCBpbWFnZSBpcyBpbiB2aWV3cG9ydC4gKi9cbiAgICBpc0xhenk/OiBib29sZWFuO1xuXG4gICAgLyoqIENvbnRyb2xzIGhvdyB0aGUgaW1hZ2Ugc2NhbGVzIHdpdGhpbiBpdHMgYm94LCBlZmZlY3RpdmUgb25seSB3aGVuIGltYWdlIHNpemUgZGlmZmVycyBmcm9tIGl0cyBpbnRyaW5zaWMgZGltZW5zaW9ucy4gKi9cbiAgICBvYmplY3RGaXQ/OiBPYmplY3RGaXQ7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBpbWFnZSBzb3VyY2VzIGJ5IGJyZWFrcG9pbnQuICovXG4gICAgc291cmNlcz86IFNvdXJjZVtdO1xuXG4gICAgLyoqIEltYWdlIFVSTC4gKi9cbiAgICBzcmM/OiBzdHJpbmc7XG5cbiAgICAvKiogQXBwbHkgYSBcIndpZHRoXCIgYXR0cmlidXRlIHRvIHRoZSBpbnRlcm5hbCBpbWFnZSB0YWcgKGluY2x1ZGluZyB1bml0KS4gKi9cbiAgICB3aWR0aD86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGFsdDogJycsXG4gICAgaGVpZ2h0OiB1bmRlZmluZWQsXG4gICAgaXNMYXp5OiB0cnVlLFxuICAgIG9iamVjdEZpdDogT0JKRUNUX0ZJVC5DT1ZFUixcbiAgICBzb3VyY2VzOiAoKSA9PiBbXSxcbiAgICBzcmM6IHVuZGVmaW5lZCxcbiAgICB3aWR0aDogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBwaWN0dXJlID0gcmVmKCk7XG4gIGNvbnN0IGltZyA9IHJlZigpO1xuXG4gIGNvbnN0IGltYWdlRGVmYXVsdCA9ICdodHRwczovL2Nkbi1zdGF0aWMudGlsYWJzLmlvL21hcmtldHBsYWNlL2NvbW1vbi9pbWFnZS1jb21pbmctc29vbi5zdmcnO1xuXG4gIGNvbnN0IG9iamVjdEZpdENsYXNzTmFtZSA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICAgIHN3aXRjaCAocHJvcHMub2JqZWN0Rml0KSB7XG4gICAgICBjYXNlIE9CSkVDVF9GSVQuQ09OVEFJTjpcbiAgICAgICAgcmV0dXJuIENTUy5PQkpFQ1QuQ09OVEFJTjtcbiAgICAgIGNhc2UgT0JKRUNUX0ZJVC5DT1ZFUjpcbiAgICAgICAgcmV0dXJuIENTUy5PQkpFQ1QuQ09WRVI7XG4gICAgICBjYXNlIE9CSkVDVF9GSVQuU0NBTEVfRE9XTjpcbiAgICAgICAgcmV0dXJuIENTUy5PQkpFQ1QuU0NBTEVfRE9XTjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBPQkpFQ1RfRklULkNPVkVSO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3Qgc2V0SW1hZ2VGcm9tRGVmYXVsdCA9ICgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50U3JjID0gaW1nLnZhbHVlPy5jdXJyZW50U3JjO1xuICAgIGNvbnN0IHNvdXJjZXMgPSBwaWN0dXJlLnZhbHVlPy5xdWVyeVNlbGVjdG9yQWxsKCdzb3VyY2UnKSA/PyBbXTtcblxuICAgIGlmICghY3VycmVudFNyYykgcmV0dXJuO1xuXG4gICAgZm9yIChjb25zdCBzb3VyY2Ugb2Ygc291cmNlcykge1xuICAgICAgY29uc3QgcmVzb2x2ZWQgPSBuZXcgVVJMKHNvdXJjZS5zcmNzZXQsIHdpbmRvdy5sb2NhdGlvbi5ocmVmKS5ocmVmO1xuXG4gICAgICBpZiAocmVzb2x2ZWQgPT09IGN1cnJlbnRTcmMpIHtcbiAgICAgICAgc291cmNlLnJlbW92ZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpbWcudmFsdWU/LmdldEF0dHJpYnV0ZSgnc3JjJykgIT09IGltYWdlRGVmYXVsdCkge1xuICAgICAgaW1nLnZhbHVlLnNyYyA9IGltYWdlRGVmYXVsdDtcbiAgICB9XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8cGljdHVyZVxuICAgIDpjbGFzcz1cIlsndGlkZS1pbWFnZScsIENTUy5ESVNQTEFZLkJMT0NLXVwiXG4gICAgcmVmPVwicGljdHVyZVwiXG4gID5cbiAgICA8c291cmNlXG4gICAgICA6a2V5PVwic291cmNlLnNyY3NldFwiXG4gICAgICA6bWVkaWE9XCJgKG1pbi13aWR0aDoke3NvdXJjZS5tZWRpYX1weClgXCJcbiAgICAgIDpzcmNzZXQ9XCJzb3VyY2Uuc3Jjc2V0XCJcbiAgICAgIHYtZm9yPVwic291cmNlIGluIHByb3BzLnNvdXJjZXNcIlxuICAgIC8+XG5cbiAgICA8aW1nXG4gICAgICA6YWx0PVwiYWx0XCJcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW1hZ2UtaW1nJyxcbiAgICAgICAgIXByb3BzLndpZHRoICYmIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAhcHJvcHMuaGVpZ2h0ICYmIENTUy5IRUlHSFQuRlVMTCxcbiAgICAgICAgQ1NTLk9CSkVDVC5DRU5URVIsXG4gICAgICAgIG9iamVjdEZpdENsYXNzTmFtZSxcbiAgICAgIF1cIlxuICAgICAgOmZldGNocHJpb3JpdHk9XCJpc0xhenkgPyB1bmRlZmluZWQgOiAnaGlnaCdcIlxuICAgICAgOmhlaWdodD1cInByb3BzLmhlaWdodFwiXG4gICAgICA6bG9hZGluZz1cInByb3BzLmlzTGF6eSA/ICdsYXp5JyA6ICdlYWdlcidcIlxuICAgICAgcmVmPVwiaW1nXCJcbiAgICAgIDpzcmM9XCJzcmMgPz8gaW1hZ2VEZWZhdWx0XCJcbiAgICAgIDp3aWR0aD1cInByb3BzLndpZHRoXCJcbiAgICAgIEBlcnJvcj1cInNldEltYWdlRnJvbURlZmF1bHRcIlxuICAgIC8+XG4gIDwvcGljdHVyZT5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWltYWdlLWltZyB7XG4gICAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGFuIGltYWdlIGJhY2tncm91bmQgY29tcG9uZW50LlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlaW1hZ2ViYWNrZ3JvdW5kLS1kb2NzKSBmb3IgVGlkZUltYWdlQmFja2dyb3VuZFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJbWFnZSBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUltYWdlLnZ1ZSc7XG4gIGltcG9ydCB7IE9CSkVDVF9GSVQgfSBmcm9tICdAL3R5cGVzL0ltYWdlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgU291cmNlIH0gZnJvbSAnQC90eXBlcy9Tb3VyY2UnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIFRleHQgZGlzcGxheSB3aGVuIGltYWdlIGNhbid0IGJlIGxvYWRlZC4gKi9cbiAgICBhbHQ/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGRlbGF5IGxvYWRpbmcgdW50aWwgaW1hZ2UgaXMgaW4gdmlld3BvcnQuICovXG4gICAgaXNMYXp5PzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIGltYWdlIHNvdXJjZXMgYnkgYnJlYWtwb2ludC4gKi9cbiAgICBzb3VyY2VzPzogU291cmNlW107XG5cbiAgICAvKiogSW1hZ2UgVVJMLiAqL1xuICAgIHNyYz86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGFsdDogJycsXG4gICAgaXNMYXp5OiB0cnVlLFxuICAgIHNvdXJjZXM6ICgpID0+IFtdLFxuICAgIHNyYzogdW5kZWZpbmVkLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWltYWdlLWJhY2tncm91bmQnLCBDU1MuUE9TSVRJT04uUkVMQVRJVkUsIENTUy5PVkVSRkxPVy5YWS5ISURERU4sIENTUy5JU09MQVRJT04uSVNPTEFURV1cIj5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxUaWRlSW1hZ2VcbiAgICAgICAgOmFsdD1cInByb3BzLmFsdFwiXG4gICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkhFSUdIVC5GVUxMXVwiXG4gICAgICAgIDppcy1sYXp5PVwicHJvcHMuaXNMYXp5XCJcbiAgICAgICAgOm9iamVjdC1maXQ9XCJPQkpFQ1RfRklULkNPVkVSXCJcbiAgICAgICAgOnNvdXJjZXM9XCJwcm9wcy5zb3VyY2VzXCJcbiAgICAgICAgOnNyYz1cInByb3BzLnNyY1wiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPHNsb3QgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICA6ZGVlcCgudGlkZS1pbWFnZSkge1xuICAgIHotaW5kZXg6IC0xO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYW4gaW5kaWNhdG9yIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWluZGljYXRvci0tZG9jcykgZm9yIFRpZGVJbmRpY2F0b3JcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBJbmRpY2F0b3IgdGV4dCAqL1xuICAgIGxhYmVsPzogc3RyaW5nIHwgbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5kaWNhdG9yJyxcbiAgICAgIHByb3BzLmxhYmVsID8gJycgOiAnZG90JyxcbiAgICAgIENTUy5ESVNQTEFZLklOTElORV9CTE9DSyxcbiAgICAgIENTUy5BTElHTi5YLkNFTlRFUixcbiAgICAgIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5FUlJPUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBwcm9wcy5sYWJlbCAmJiBwcm9wcy5sYWJlbC50b1N0cmluZygpLmxlbmd0aCA+IDEgPyBbQ1NTLlBBRERJTkcuWC5IQUxGXSA6IFtdLFxuICAgICAgcHJvcHMubGFiZWxcbiAgICAgICAgPyBbQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzMsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuSU5WRVJTRV1cbiAgICAgICAgOiBbQ1NTLkJPUkRFUi5GVUxMLk9ORV0sXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtaW5kaWNhdG9yLWxhYmVsJ11cIlxuICAgICAgdi1pZj1cInByb3BzLmxhYmVsXCJcbiAgICA+XG4gICAgICB7eyBwcm9wcy5sYWJlbCB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWluZGljYXRvcjpub3QoLmRvdCkge1xuICAgIG1pbi13aWR0aDogMXJlbTtcbiAgICBtaW4taGVpZ2h0OiAxcmVtO1xuICB9XG5cbiAgLnRpZGUtaW5kaWNhdG9yLmRvdCB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWdyYXktMTAwKTtcbiAgICB3aWR0aDogMTBweDtcbiAgICBoZWlnaHQ6IDEwcHg7XG4gIH1cblxuICAudGlkZS1pbmRpY2F0b3ItbGFiZWwge1xuICAgIC8qIFVzZSBib3R0b20td2VpZ2h0aW5nIHRvIG9mZnNldCB0aGUgbWF0aGVtYXRpY2FsIGNlbnRlciB0byB0aGUgb3B0aWNhbCBjZW50ZXIuICovXG4gICAgbWFyZ2luLXRvcDogLTFweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGFuIGlucHV0IHN1cHBvcnRpbmcgdGV4dCBjb21wb25lbnQuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVpbnB1dHN1cHBvcnRpbmd0ZXh0LS1kb2NzKSBmb3IgVGlkZUlucHV0U3VwcG9ydGluZ1RleHRcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBpc0Vycm9yOiBib29sZWFuO1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgfTtcbiAgZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzMsXG4gICAgICBpc0Vycm9yID8gW0NTUy5GT05ULkNPTE9SLkdMT0JBTC5FUlJPUl0gOiBbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXSxcbiAgICBdXCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgdi1pZj1cImlzRXJyb3JcIlxuICAgIC8+XG5cbiAgICA8ZGl2PlxuICAgICAge3sgbWVzc2FnZSB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG4iLCJpbXBvcnQgeyBmb3JtYXROdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25MZW5ndGgsIFZhbGlkYXRpb25SZXN1bHQsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5pbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbmV4cG9ydCBjb25zdCBlcnJvck1lc3NhZ2VEZWZhdWx0ID0gJ1BsZWFzZSBlbnRlciBhIHZhbGlkIHZhbHVlJztcblxuZXhwb3J0IGNvbnN0IFZBTElEQVRJT05fUkVTVUxUID0ge1xuICBOT19FUlJPUjoge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9LFxuICBSRVFVSVJFRDoge1xuICAgIG1lc3NhZ2U6ICdQbGVhc2UgZmlsbCBvdXQgdGhpcyBmaWVsZCcsXG4gICAgdmFsaWQ6IGZhbHNlLFxuICB9LFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IGNoZWNrRm9ybWF0ID0gKGZvcm1hdDogUmVnRXhwLCBtZXNzYWdlPzogc3RyaW5nKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCByZXN1bHQ6IFZhbGlkYXRpb25SZXN1bHQgPSBWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUjtcblxuICAgIGlmICghdmFsdWUudHJpbSgpLm1hdGNoKGZvcm1hdCkpIHtcbiAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSA/PyBlcnJvck1lc3NhZ2VEZWZhdWx0LFxuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RmllbGRMZW5ndGhJc1ZhbGlkID0gKHsgbWF4bGVuZ3RoLCBtaW5sZW5ndGgsIHJlcXVpcmVkLCB2YWx1ZSB9OiBWYWxpZGF0aW9uTGVuZ3RoKSA9PiB7XG4gIGNvbnN0IGlzRW1wdHlBbmRVbnJlcXVpcmVkID0gdmFsdWUubGVuZ3RoID09PSAwICYmICFyZXF1aXJlZDtcbiAgY29uc3QgaXNUb29Mb25nID0gbWF4bGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heGxlbmd0aDtcbiAgY29uc3QgaXNUb29TaG9ydCA9ICFpc0VtcHR5QW5kVW5yZXF1aXJlZCAmJiBtaW5sZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWlubGVuZ3RoO1xuICByZXR1cm4gIWlzVG9vU2hvcnQgJiYgIWlzVG9vTG9uZztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQgPSAoe1xuICBlcnJvckZyb21Qcm9wcyxcbiAgbWF4bGVuZ3RoLFxuICBtaW5sZW5ndGgsXG4gIHJlcXVpcmVkLFxuICB2YWxpZGF0b3JzLFxuICB2YWx1ZSxcbn06IHtcbiAgZXJyb3JGcm9tUHJvcHM6IHN0cmluZztcbiAgbWF4bGVuZ3RoPzogbnVtYmVyO1xuICBtaW5sZW5ndGg/OiBudW1iZXI7XG4gIHJlcXVpcmVkOiBib29sZWFuO1xuICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yW107XG4gIHZhbHVlOiBSZWY8c3RyaW5nPjtcbn0pOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgLy8gZXJyb3IgaW4gcHJvcHMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHZhbGlkYXRpb24gZXJyb3JcbiAgaWYgKGVycm9yRnJvbVByb3BzICE9PSAnJylcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3JGcm9tUHJvcHMsXG4gICAgICB2YWxpZDogZmFsc2UsXG4gICAgfTtcblxuICAvLyBjdXN0b20gdmFsaWRhdG9yIHByb3AgZXJyb3JzIGZyb20gaGF2ZSBzZWNvbmQgaGlnaGVzdCBwcmVjZWRlbmNlXG4gIGlmICh2YWxpZGF0b3JzKSB7XG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRlUHJvcGVydHkodmFsdWUudmFsdWUgPz8gJycsIHZhbGlkYXRvcnMpO1xuXG4gICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICByZXR1cm4gdmFsaWRhdGlvbjtcbiAgICB9XG4gIH1cblxuICAvLyBhbGwgb3RoZXIgcHJvcC1iYXNlZCBlcnJvcnMgY29tZSBsYXN0XG4gIGlmIChyZXF1aXJlZCAmJiB2YWx1ZS52YWx1ZT8udHJpbSgpID09PSAnJykge1xuICAgIHJldHVybiBWQUxJREFUSU9OX1JFU1VMVC5SRVFVSVJFRDtcbiAgfVxuXG4gIGlmIChtYXhsZW5ndGggfHwgbWlubGVuZ3RoKSB7XG4gICAgY29uc3QgbGVuZ3RoVmFsaWRhdGlvbiA9IHZhbGlkYXRlTGVuZ3RoKHtcbiAgICAgIG1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkLFxuICAgICAgdmFsdWU6IHZhbHVlLnZhbHVlLFxuICAgIH0pO1xuXG4gICAgaWYgKCFsZW5ndGhWYWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICByZXR1cm4gbGVuZ3RoVmFsaWRhdGlvbjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SO1xufTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlTGVuZ3RoID0gKHsgbWF4bGVuZ3RoLCBtaW5sZW5ndGgsIHJlcXVpcmVkLCB2YWx1ZSB9OiBWYWxpZGF0aW9uTGVuZ3RoKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xuXG4gIHJlc3BvbnNlLnZhbGlkID0gZ2V0RmllbGRMZW5ndGhJc1ZhbGlkKHtcbiAgICBtYXhsZW5ndGgsXG4gICAgbWlubGVuZ3RoLFxuICAgIHJlcXVpcmVkLFxuICAgIHZhbHVlLFxuICB9KTtcblxuICBpZiAocmVzcG9uc2UudmFsaWQpIHJldHVybiByZXNwb25zZTtcblxuICByZXNwb25zZS5tZXNzYWdlID0gZXJyb3JNZXNzYWdlRGVmYXVsdDtcblxuICBpZiAobWF4bGVuZ3RoICYmIG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgRW50ZXIgYSB2YWx1ZSBiZXR3ZWVuICR7Zm9ybWF0TnVtYmVyKG1pbmxlbmd0aCl9IGFuZCAke2Zvcm1hdE51bWJlcihtYXhsZW5ndGgpfSBjaGFyYWN0ZXJzYDtcbiAgfSBlbHNlIGlmIChtYXhsZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYFVzZSAke2Zvcm1hdE51bWJlcihtYXhsZW5ndGgpfSBjaGFyYWN0ZXJzIG9yIGZld2VyYDtcbiAgfSBlbHNlIGlmIChtaW5sZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYEVudGVyIGF0IGxlYXN0ICR7Zm9ybWF0TnVtYmVyKG1pbmxlbmd0aCl9IGNoYXJhY3RlcnNgO1xuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUHJvcGVydHkodmFsdWU6IHN0cmluZywgdmFsaWRhdG9yczogKCh2YWx1ZTogc3RyaW5nKSA9PiBWYWxpZGF0aW9uUmVzdWx0KVtdKTogVmFsaWRhdGlvblJlc3VsdCB7XG4gIGZvciAoY29uc3QgdmFsaWRhdG9yIG9mIHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdG9yKHZhbHVlKTtcbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG59XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhbiBpbnB1dCBjaGVja2JveCBjb21wb25lbnQuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVpbnB1dGNoZWNrYm94LS1kb2NzKSBmb3IgVGlkZUlucHV0Q2hlY2tib3hcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoLCB3YXRjaEVmZmVjdCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUlucHV0U3VwcG9ydGluZ1RleHQgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJbnB1dFN1cHBvcnRpbmdUZXh0LnZ1ZSc7XG4gIGltcG9ydCB7IHVzZUZvcm1Db250ZXh0IH0gZnJvbSAnQC9jb21wb3NhYmxlcy91c2VUaWRlRm9ybSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBmb3JtYXROdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuICBpbXBvcnQgeyBWQUxJREFUSU9OX1JFU1VMVCB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG4gIGltcG9ydCB0eXBlIHsgVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIENoZWNrYm94IHN0YXRlIGlzIGludGVyYWN0YWJsZSAqL1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBPdmVycmlkZXMgdGhlIGRlZmF1bHQgZXJyb3IgbWVzc2FnZSBhbmQgdmFsaWQgc3RhdGUgKi9cbiAgICBlcnJvcj86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgQ2hlY2tib3ggaXMgaW5kZXRlcm1pbmF0ZSAqL1xuICAgIGluZGV0ZXJtaW5hdGU/OiBib29sZWFuO1xuXG4gICAgLyoqIFVuaXF1ZSBJRCBhdHRyaWJ1dGUgKHRvIGJpbmQgQ2hlY2tib3ggbGFiZWwgdG8gaW5wdXQpICovXG4gICAgaW5wdXRJZD86IHN0cmluZztcblxuICAgIC8qKiBMYWJlbCBjb250ZW50ICovXG4gICAgbGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBOYW1lIGF0dHJpYnV0ZSAqL1xuICAgIG5hbWU/OiBzdHJpbmc7XG5cbiAgICAvKiogUGFyZW50aGV0aWNhbCByZXNwb25zZSBjb3VudCAqL1xuICAgIG51bWJlcj86IG51bWJlcjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgaW5wdXQgaXMgcmVxdWlyZWQgKi9cbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6ICcnLFxuICAgIGluZGV0ZXJtaW5hdGU6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBudW1iZXI6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAndmFsaWQnLCB2YWxpZDogYm9vbGVhbik6IHZvaWQ7XG4gIH07XG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBmb3JtQ29udGV4dCA9IHVzZUZvcm1Db250ZXh0KCk7XG5cbiAgY29uc3QgaXNWYWxpZGF0aW5nID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgZXJyb3JSZWYgPSByZWY8VmFsaWRhdGlvblJlc3VsdD4oVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1IpO1xuXG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaXNDaGVja2VkID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSB8fCBwcm9wcy5pbmRldGVybWluYXRlKTtcbiAgY29uc3Qgc2hvd0Vycm9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChoYXNFcnJvckZyb21Qcm9wLnZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWlzVmFsaWRhdGluZy52YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAhZXJyb3JSZWYudmFsdWUudmFsaWQ7XG4gIH0pO1xuICBjb25zdCBoYXNFcnJvckZyb21Qcm9wID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZXJyb3IgIT09ICcnKTtcbiAgY29uc3Qgc3VwcG9ydGluZ1RleHRNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gc2hvd0Vycm9yLnZhbHVlICYmIGVycm9yUmVmLnZhbHVlLm1lc3NhZ2UpO1xuXG4gIGNvbnN0IGdldENoZWNrYm94VmFsaWRhdGlvblJlc3VsdCA9ICgpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBpZiAocHJvcHMuZXJyb3IgIT09ICcnKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWVzc2FnZTogcHJvcHMuZXJyb3IsXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIH07XG4gICAgaWYgKCFwcm9wcy5yZXF1aXJlZCB8fCBpc0NoZWNrZWQudmFsdWUpIHJldHVybiBWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUjtcbiAgICByZXR1cm4gVkFMSURBVElPTl9SRVNVTFQuUkVRVUlSRUQ7XG4gIH07XG5cbiAgd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIGVycm9yUmVmLnZhbHVlID0gZ2V0Q2hlY2tib3hWYWxpZGF0aW9uUmVzdWx0KCk7XG4gIH0pO1xuXG4gIHdhdGNoKFxuICAgIG1vZGVsVmFsdWUsXG4gICAgKCkgPT4ge1xuICAgICAgaWYgKG1vZGVsVmFsdWUudmFsdWUpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gZm9ybUNvbnRleHQ/LmZvcmNlU2hvd0Vycm9ycy52YWx1ZSxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICBlcnJvclJlZixcbiAgICAoKSA9PiB7XG4gICAgICBlbWl0KCd2YWxpZCcsIGVycm9yUmVmLnZhbHVlLnZhbGlkKTtcbiAgICB9LFxuICAgIHsgZGVlcDogdHJ1ZSwgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWlucHV0LWNoZWNrYm94JywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5RVUFSVEVSXVwiPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuVVNFUl9TRUxFQ1QuTk9ORSxcbiAgICAgICAgc2hvd0Vycm9yID8gQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLkVSUk9SIDogQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBkaXNhYmxlZCA/IFtDU1MuT1BBQ0lUWS5ESVNBQkxFRCwgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRF0gOiBbQ1NTLkNVUlNPUi5QT0lOVEVSXSxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxpbnB1dFxuICAgICAgICA6Y2hlY2tlZD1cImlzQ2hlY2tlZFwiXG4gICAgICAgIDpjbGFzcz1cIlsndGlkZS1zY3JlZW4tcmVhZGVyLW9ubHknXVwiXG4gICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgICAgLz5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tJyxcbiAgICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkZMRVguU0hSSU5LLk9GRixcbiAgICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgICAgaXNDaGVja2VkXG4gICAgICAgICAgICA/IFtzaG93RXJyb3IgPyBDU1MuQkcuR0xPQkFMLlBSSU1BUlkuRVJST1IgOiBbQ1NTLkJHLlNFQ09OREFSWSwgQ1NTLkJPUkRFUi5DT0xPUi5ISUdIXV1cbiAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgIHNob3dFcnJvclxuICAgICAgICAgICAgICAgICAgPyBbQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuRVJST1IsIENTUy5CRy5HTE9CQUwuU1VSRkFDRS5FUlJPUl1cbiAgICAgICAgICAgICAgICAgIDogW0NTUy5CT1JERVIuQ09MT1IuREVGQVVMVCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgIF1cIlxuICAgICAgPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZXVwiXG4gICAgICAgICAgOmljb249XCJpbmRldGVybWluYXRlID8gSUNPTi5SRU1PVkUgOiBJQ09OLkNIRUNLXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAgIHYtaWY9XCJpc0NoZWNrZWRcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5BWElTMS5CRVRXRUVOLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5HUk9XLk9OLCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICA8c3Bhbj57eyBmb3JtYXR0ZWRMYWJlbCB9fTwvc3Bhbj5cblxuICAgICAgICA8c3BhblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICB2LWlmPVwibnVtYmVyXCJcbiAgICAgICAgPlxuICAgICAgICAgICh7eyBmb3JtYXROdW1iZXIobnVtYmVyKSB9fSlcbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9sYWJlbD5cblxuICAgIDxUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dFxuICAgICAgOm1lc3NhZ2U9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgICAgaXMtZXJyb3JcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3gge1xuICAgIGFsaWduLXNlbGY6IHN0YXJ0O1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tIHtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gIH1cblxuICBsYWJlbDpoYXMoaW5wdXQ6Zm9jdXMtdmlzaWJsZSkge1xuICAgIG91dGxpbmU6IGF1dG87XG4gICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYFRpZGVJbnB1dENoZWNrYm94LnZ1ZWAgaW1wb3J0ZWQgZnJvbSAndGlkZS1kZXNpZ24tc3lzdGVtJyBucG0gcGFja2FnZSBpbnN0ZWFkLlxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBjaGVja2VkPzogYm9vbGVhbjtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgaW5kZXRlcm1pbmF0ZT86IGJvb2xlYW47XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIG51bWJlcj86IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBpbmRldGVybWluYXRlOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgbnVtYmVyOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGlzQ2hlY2tlZCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmNoZWNrZWQgfHwgcHJvcHMuaW5kZXRlcm1pbmF0ZSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtY2hlY2tib3gnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgIGRpc2FibGVkID8gWydkaXNhYmxlZCcsIENTUy5QT0lOVEVSX0VWRU5UUy5PRkZdIDogQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgIF1cIlxuICA+XG4gICAgPGlucHV0XG4gICAgICA6Y2hlY2tlZD1cImlzQ2hlY2tlZFwiXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuTk9ORV1cIlxuICAgICAgOmRpc2FibGVkPVwicHJvcHMuZGlzYWJsZWRcIlxuICAgICAgOm5hbWU9XCJwcm9wcy5uYW1lXCJcbiAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgIEBjbGljay5wcmV2ZW50XG4gICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICBpc0NoZWNrZWQgPyBbQ1NTLkJPUkRFUi5DT0xPUi5ISUdILCBDU1MuQkcuU0VDT05EQVJZXSA6IFtDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFQsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICAgICAgICBpc0NoZWNrZWQgJiYgJ2NoZWNrZWQnLFxuICAgICAgICBkaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNFQ09OREFSWV1cIlxuICAgICAgICA6aWNvbj1cInByb3BzLmluZGV0ZXJtaW5hdGUgPyBJQ09OLlJFTU9WRSA6IElDT04uQ0hFQ0tcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaXNDaGVja2VkXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gICAgICAgIENTUy5GTEVYLkdST1cuT04sXG4gICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICBkaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgIEBjbGljay5wcmV2ZW50XG4gICAgICB2LWlmPVwibGFiZWxcIlxuICAgID5cbiAgICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwicHJvcHMubnVtYmVyXCJcbiAgICAgID5cbiAgICAgICAgKHt7IGZvcm1hdE51bWJlcihwcm9wcy5udW1iZXIpIH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3guZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tIHtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhbiBpbnB1dCByYWRpbyBjb21wb25lbnQuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVpbnB1dHJhZGlvLS1kb2NzKSBmb3IgVGlkZUlucHV0UmFkaW9cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGlucHV0IGlzIGludGVyYWN0YWJsZSAqL1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBVbmlxdWUgSUQgYXR0cmlidXRlICh0byBiaW5kIGlucHV0IGxhYmVsIHRvIGlucHV0KSAqL1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG5cbiAgICAvKiogTGFiZWwgY29udGVudCAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogTmFtZSBhdHRyaWJ1dGUgKi9cbiAgICBuYW1lOiBzdHJpbmc7XG5cbiAgICAvKiogUGFyZW50aGV0aWNhbCByZXNwb25zZSBjb3VudCAqL1xuICAgIG51bWJlcj86IG51bWJlcjtcblxuICAgIC8qKiBWYWx1ZSBhdHRyaWJ1dGUgKi9cbiAgICB2YWx1ZTogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG51bWJlcjogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8c3RyaW5nPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGlzQ2hlY2tlZCA9IGNvbXB1dGVkKCgpID0+IG1vZGVsVmFsdWUudmFsdWUgPT09IHByb3BzLnZhbHVlKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxsYWJlbFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXJhZGlvJyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLlVTRVJfU0VMRUNULk5PTkUsXG4gICAgICBwcm9wcy5kaXNhYmxlZCA/IFtDU1MuT1BBQ0lUWS5ESVNBQkxFRCwgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRF0gOiBbQ1NTLkNVUlNPUi5QT0lOVEVSXSxcbiAgICBdXCJcbiAgICA6Zm9yPVwicHJvcHMuaW5wdXRJZFwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1zY3JlZW4tcmVhZGVyLW9ubHknXVwiXG4gICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgOnZhbHVlPVwidmFsdWVcIlxuICAgICAgOmlkPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXJhZGlvLWN1c3RvbScsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgaXNDaGVja2VkID8gW0NTUy5CT1JERVIuQ09MT1IuSElHSF0gOiBbQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxUXSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT04sXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1pbnB1dC1yYWRpby1jaGVjaycsIENTUy5CT1JERVIuUkFESVVTLkZVTEwsIGlzQ2hlY2tlZCAmJiBDU1MuQkcuU0VDT05EQVJZXVwiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5HUk9XLk9OLCBDU1MuQVhJUzEuQkVUV0VFTiwgQ1NTLkZPTlQuUk9MRS5CT0RZXzFdXCI+XG4gICAgICA8c3Bhbj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgdi1pZj1cInByb3BzLm51bWJlclwiXG4gICAgICA+XG4gICAgICAgICh7eyBmb3JtYXROdW1iZXIocHJvcHMubnVtYmVyKSB9fSlcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9sYWJlbD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LXJhZGlvLWN1c3RvbSB7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtcmFkaW8tY2hlY2sge1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgfVxuXG4gIGxhYmVsOmhhcyhpbnB1dDpmb2N1cy12aXNpYmxlKSB7XG4gICAgb3V0bGluZTogYXV0bztcbiAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgVGlkZUlucHV0UmFkaW8udnVlYCBpbXBvcnRlZCBmcm9tICd0aWRlLWRlc2lnbi1zeXN0ZW0nIG5wbSBwYWNrYWdlIGluc3RlYWQuXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBjaGVja2VkPzogYm9vbGVhbjtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIG51bWJlcj86IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgbnVtYmVyOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGNoZWNrZWQgPSByZWYocHJvcHMuY2hlY2tlZCk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuY2hlY2tlZCxcbiAgICAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlIHx8IG5ld1ZhbHVlICE9PSBjaGVja2VkLnZhbHVlKSB7XG4gICAgICAgIGNoZWNrZWQudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtcmFkaW8nLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgcHJvcHMuZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICBdXCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgOmNoZWNrZWQ9XCJjaGVja2VkXCJcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5OT05FXVwiXG4gICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgIG5hbWU9XCJcIlxuICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgIHZhbHVlPVwiXCJcbiAgICAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1yYWRpby1jdXN0b20nLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgIGNoZWNrZWQgPyBDU1MuQk9SREVSLkNPTE9SLkhJR0ggOiBDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFQsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICAgICAgICBjaGVja2VkICYmICdjaGVja2VkJyxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXJhZGlvLWNoZWNrJywgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCwgcHJvcHMuY2hlY2tlZCAmJiBDU1MuQkcuU0VDT05EQVJZXVwiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkZMRVguR1JPVy5PTixcbiAgICAgICAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PTixcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICAgID5cbiAgICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwicHJvcHMubnVtYmVyXCJcbiAgICAgID5cbiAgICAgICAgKHt7IGZvcm1hdE51bWJlcihwcm9wcy5udW1iZXIpIH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtcmFkaW8uZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtcmFkaW8tY3VzdG9tIHtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gIH1cblxuICAudGlkZS1pbnB1dC1yYWRpby1jaGVjayB7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHsgZm9ybWF0TnVtYmVyLCBmb3JtYXRQaG9uZSwgZm9ybWF0UHJpY2UgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG5leHBvcnQgdHlwZSBGb3JtYXR0ZWQgPSB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVtYmVyO1xufTtcblxuZXhwb3J0IGNvbnN0IEZPUk1BVCA9IHtcbiAgTlVNQkVSOiBmb3JtYXROdW1iZXIsXG4gIFBIT05FOiBmb3JtYXRQaG9uZSxcbiAgUFJJQ0U6IGZvcm1hdFByaWNlLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEZPUk1BVF9SRUdFWCA9IHtcbiAgYWxwaGE6IC9eW2EtekEtWl0rJC9nLFxuICBhbHBoYU51bWJlck9yRW1wdHk6IC9eJHxeW2EtejAtOV0rJC9pLFxuICBhbHBoYVNwYWNlOiAvXlthLXpBLVogXSskL2csXG4gIGVtYWlsOlxuICAgIC9eKChbXjw+KClbXFxdXFxcXC4sOzpcXHNAXCJdKyhcXC5bXjw+KClbXFxdXFxcXC4sOzpcXHNAXCJdKykqKXwoXCIuK1wiKSlAKD8hKD86W2EtekEtWjAtOS1dK1xcLikqKD88dGxkPlthLXpBLVpdezIsfSlcXC5cXGs8dGxkPiQpKChcXFtbMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFxdKXwoKFthLXpBLVowLTktXStcXC4pK1thLXpBLVpdezIsfSkpJC8sXG4gIG51bWJlckZvcm1hdHRlZDogL14kfCg/PS4pXlxcJD8oKFsxLTldWzAtOV17MCwyfSgsWzAtOV17M30pKil8MCk/KFxcLlswLTldezEsMn0pPyQvLFxuICBwaG9uZTogL14oPzpcXGR7M30tXFxkezN9LVxcZHs0fXxcXGR7MX0tXFxkezN9LVxcZHszfS1cXGR7NH0pPyQvLFxuICBwcmljZTogLyg/PS4pXlxcJD8oKFsxLTldWzAtOV17MCwyfSgsWzAtOV17M30pKil8MCk/KFxcLlswLTldezEsMn0pPyQvLFxuICB6aXA6IC9eXFxkezV9JC8sXG59O1xuIiwiaW1wb3J0IHsgRk9STUFUX1JFR0VYIH0gZnJvbSAnQC90eXBlcy9Gb3JtYXR0ZWQnO1xuaW1wb3J0IHsgY2hlY2tGb3JtYXQgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuZXhwb3J0IGNvbnN0IFZBTElEQVRPUiA9IHtcbiAgQUxQSEFfTlVNQkVSX0VNUFRZOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVguYWxwaGFOdW1iZXJPckVtcHR5KSxcbiAgQUxQSEFfU1BBQ0U6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5hbHBoYVNwYWNlKSxcbiAgRU1BSUw6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5lbWFpbCwgJ0VudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcyAoZS5nLiBuYW1lQGV4YW1wbGUuY29tKScpLFxuICBOVU1CRVI6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5udW1iZXJGb3JtYXR0ZWQsICdFbnRlciBhIHZhbGlkIG51bWJlcicpLFxuICBQSE9ORTogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLnBob25lLCAnRW50ZXIgYSB2YWxpZCBwaG9uZSBudW1iZXInKSxcbiAgWklQOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVguemlwLCAnRW50ZXIgYSB2YWxpZCBaaXAgY29kZScpLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkVycm9yID0gc3RyaW5nIHwgYm9vbGVhbjtcbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25SZXN1bHQgPSB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdmFsaWQ6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uTGVuZ3RoID0ge1xuICBtYXhsZW5ndGg/OiBudW1iZXI7XG4gIG1pbmxlbmd0aD86IG51bWJlcjtcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIHZhbHVlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0b3IgPSAodmFsdWU6IHN0cmluZykgPT4gVmFsaWRhdGlvblJlc3VsdDtcblxuZXhwb3J0IGNvbnN0IEVSUk9SX0RJU1BMQVkgPSB7XG4gIEVBR0VSOiAnZWFnZXInLFxuICBMQVpZOiAnbGF6eScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBFcnJvckRpc3BsYXkgPSAodHlwZW9mIEVSUk9SX0RJU1BMQVkpW2tleW9mIHR5cGVvZiBFUlJPUl9ESVNQTEFZXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgc2VsZWN0IGlucHV0IGludGVuZGVkIHRvIGJlIHVzZWQgaW4gZm9ybXMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVpbnB1dHNlbGVjdC0tZG9jcykgZm9yIFRpZGVJbnB1dFNlbGVjdFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgdXNlSWQsIHdhdGNoLCB3YXRjaEVmZmVjdCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUlucHV0U3VwcG9ydGluZ1RleHQgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJbnB1dFN1cHBvcnRpbmdUZXh0LnZ1ZSc7XG4gIGltcG9ydCB7IHVzZUZvcm1Db250ZXh0IH0gZnJvbSAnQC9jb21wb3NhYmxlcy91c2VUaWRlRm9ybSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBFUlJPUl9ESVNQTEFZIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcbiAgaW1wb3J0IHsgVkFMSURBVElPTl9SRVNVTFQsIGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG4gIGltcG9ydCB0eXBlIHsgU2VsZWN0T3B0aW9uLCBTZWxlY3RPcHRpb25Hcm91cCB9IGZyb20gJ0AvdHlwZXMvU2VsZWN0JztcbiAgaW1wb3J0IHR5cGUgeyBFcnJvckRpc3BsYXksIFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBTZWxlY3QgaXMgaW50ZXJhY3RhYmxlICovXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqIE92ZXJyaWRlcyB0aGUgZGVmYXVsdCBlcnJvciBtZXNzYWdlIGFuZCB2YWxpZCBzdGF0ZSAqL1xuICAgIGVycm9yPzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBlcnJvcnMgZGlzcGxheSBwcmlvciB0byBibHVyICovXG4gICAgZXJyb3JEaXNwbGF5PzogRXJyb3JEaXNwbGF5O1xuXG4gICAgLyoqIExhYmVsIGNvbnRlbnQgKi9cbiAgICBsYWJlbD86IHN0cmluZztcblxuICAgIC8qKiBOYW1lIGF0dHJpYnV0ZSAqL1xuICAgIG5hbWU/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBncm91cGVkIHZhbHVlcyBmb3VuZCBpbnNpZGUgU2VsZWN0ICovXG4gICAgb3B0Z3JvdXBzPzogKFNlbGVjdE9wdGlvbiB8IFNlbGVjdE9wdGlvbkdyb3VwKVtdIHwgcmVhZG9ubHkgKFNlbGVjdE9wdGlvbiB8IFNlbGVjdE9wdGlvbkdyb3VwKVtdO1xuXG4gICAgLyoqIERldGVybWluZXMgdW5ncm91cGVkIHZhbHVlcyBmb3VuZCBpbnNpZGUgU2VsZWN0ICovXG4gICAgb3B0aW9ucz86IFNlbGVjdE9wdGlvbltdIHwgcmVhZG9ubHkgU2VsZWN0T3B0aW9uW107XG5cbiAgICAvKiogUHJlZml4IGNvbnRlbnQgKi9cbiAgICBwcmVmaXg/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIFNlbGVjdCBpcyByZXF1aXJlZCAqL1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBTdWZmaXggY29udGVudCAqL1xuICAgIHN1ZmZpeD86IHN0cmluZztcblxuICAgIC8qKiBFeHBsYWluZXIgdGV4dCBiZW5lYXRoIGlucHV0ICovXG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6ICcnLFxuICAgIGVycm9yRGlzcGxheTogRVJST1JfRElTUExBWS5MQVpZLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBvcHRncm91cHM6IHVuZGVmaW5lZCxcbiAgICBvcHRpb25zOiB1bmRlZmluZWQsXG4gICAgcHJlZml4OiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1ZmZpeDogdW5kZWZpbmVkLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAndmFsaWQnLCBpc1ZhbGlkOiBib29sZWFuKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgbW9kZWxWYWx1ZSA9IGRlZmluZU1vZGVsPHN0cmluZz4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBmb3JtQ29udGV4dCA9IHVzZUZvcm1Db250ZXh0KCk7XG5cbiAgY29uc3QgZXJyb3JSZWYgPSByZWY8VmFsaWRhdGlvblJlc3VsdD4oVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IGlucHV0SWQgPSB1c2VJZCgpO1xuICBjb25zdCBpc1ZhbGlkYXRpbmcgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBzZWxlY3RFbGVtZW50ID0gcmVmPEhUTUxTZWxlY3RFbGVtZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBzaG93RXJyb3IgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKGhhc0Vycm9yRnJvbVByb3AudmFsdWUpIHJldHVybiB0cnVlO1xuICAgIGlmICghaXNWYWxpZGF0aW5nLnZhbHVlKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuICFlcnJvclJlZi52YWx1ZS52YWxpZDtcbiAgfSk7XG4gIGNvbnN0IGhhc0Vycm9yRnJvbVByb3AgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5lcnJvciAhPT0gJycpO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiBtb2RlbFZhbHVlLnZhbHVlID09IG51bGwgfHwgbW9kZWxWYWx1ZS52YWx1ZSA9PT0gJycpO1xuICBjb25zdCBzdXBwb3J0aW5nVGV4dE1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiAoc2hvd0Vycm9yLnZhbHVlICYmIGVycm9yUmVmLnZhbHVlLm1lc3NhZ2UpIHx8IHByb3BzLnN1cHBvcnRpbmdUZXh0KTtcblxuICBjb25zdCBleHBhbmRPcHRpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoJ21vdXNlZG93bicpO1xuICAgIHNlbGVjdEVsZW1lbnQ/LnZhbHVlPy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5FQUdFUikgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICAgIGlmIChwcm9wcy5lcnJvckRpc3BsYXkgPT09IEVSUk9SX0RJU1BMQVkuTEFaWSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICB3YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgZXJyb3JSZWYudmFsdWUgPSBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQoe1xuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsdWU6IG1vZGVsVmFsdWUsXG4gICAgfSk7XG4gIH0pO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IGZvcm1Db250ZXh0Py5mb3JjZVNob3dFcnJvcnMudmFsdWUsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgZXJyb3JSZWYsXG4gICAgKCkgPT4ge1xuICAgICAgZW1pdCgndmFsaWQnLCBlcnJvclJlZi52YWx1ZS52YWxpZCk7XG4gICAgfSxcbiAgICB7IGRlZXA6IHRydWUsIGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtc2VsZWN0JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgIHNob3dFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1ib3JkZXInLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogJycsXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBdXCJcbiAgICAgIEBjbGljaz1cImV4cGFuZE9wdGlvbnNcIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuTEVGVCxcbiAgICAgICAgICAgIENTUy5NQVJHSU4uVE9QLkhBTEYsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLkxFRlQuT05FLFxuICAgICAgICAgICAgIXNob3dFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpmb3I9XCJpbnB1dElkXCJcbiAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuV0lEVEguRlVMTCwgQ1NTLkdBUC5IQUxGXVwiPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5CT0RZXzEsIENTUy5NQVJHSU4uTEVGVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsIGxhYmVsICYmIENTUy5NQVJHSU4uVE9QLk9ORV1cIlxuICAgICAgICAgICAgdi1pZj1cInByZWZpeFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgcHJlZml4IH19XG4gICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICBDU1MuUEFERElORy5CT1RUT00uSEFMRixcbiAgICAgICAgICAgICAgQ1NTLlBBRERJTkcuVE9QLk9ORSxcbiAgICAgICAgICAgICAgQ1NTLlBBRERJTkcuUklHSFQuVFdPLFxuICAgICAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgICAgIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRUQsXG4gICAgICAgICAgICAgIHByZWZpeCA/IENTUy5QQURESU5HLkxFRlQuWkVSTyA6IENTUy5QQURESU5HLkxFRlQuT05FLFxuICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgcmVmPVwic2VsZWN0RWxlbWVudFwiXG4gICAgICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgICAgIHYtbW9kZWw9XCJtb2RlbFZhbHVlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCJvcHRncm91cCBpbiBvcHRncm91cHNcIj5cbiAgICAgICAgICAgICAgPG9wdGdyb3VwXG4gICAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgICAgOmtleT1cImBncm91cC0keyhvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkubGFiZWx9YFwiXG4gICAgICAgICAgICAgICAgOmxhYmVsPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgdi1pZj1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkub3B0aW9uc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgICAgIDprZXk9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgOnZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIHYtZm9yPVwib3B0aW9uIGluIChvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkub3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgIDwvb3B0Z3JvdXA+XG5cbiAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICAgIDprZXk9XCJgb3B0aW9uLSR7KG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWV9YFwiXG4gICAgICAgICAgICAgICAgOnNlbGVjdGVkPVwibW9kZWxWYWx1ZSA9PT0gKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWUgPyB0cnVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgICA6dmFsdWU9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgdi1lbHNlXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS5sYWJlbCB9fVxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgIDprZXk9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICA6c2VsZWN0ZWQ9XCJtb2RlbFZhbHVlID09PSBvcHRpb24udmFsdWUgPyB0cnVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgOnZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgdi1mb3I9XCJvcHRpb24gaW4gb3B0aW9uc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlJJR0hULFxuICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgIENTUy5NQVJHSU4uUklHSFQuVFdPLFxuICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgbGFiZWwgJiYgQ1NTLk1BUkdJTi5UT1AuT05FLFxuICAgICAgICBdXCJcbiAgICAgICAgdi1pZj1cInN1ZmZpeFwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIDpjbGFzcz1cIkNTUy5QQURESU5HLlJJR0hULk9ORVwiPlxuICAgICAgICAgIHt7IHN1ZmZpeCB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuUE9TSVRJT04uQUJTT0xVVEUsIENTUy5QT1NJVElPTklORy5SSUdIVCwgQ1NTLk1BUkdJTi5SSUdIVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PRkZdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVYUEFORF9NT1JFXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZUlucHV0U3VwcG9ydGluZ1RleHRcbiAgICAgIDppcy1lcnJvcj1cInNob3dFcnJvclwiXG4gICAgICA6bWVzc2FnZT1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgICB2LWlmPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHNlbGVjdCB7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuXG4gIGxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICBsYWJlbDpub3QoLm1pbmlsYWJlbCkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIGNhbGMoOSAvIDE2ICogMXJlbSkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciBvcHRpb24ge1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLW9uLXN1cmZhY2UpO1xuICB9XG5cbiAgc2VsZWN0IHtcbiAgICBwYWRkaW5nLXRvcDogMjdweDtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB7IHByaWNlVG9OdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG5pbXBvcnQgdHlwZSB7IFN0cmluZ0lucHV0IH0gZnJvbSAnQC90eXBlcy9Gb3JtRGVwcmVjYXRlZCc7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdE9wdGlvbiB9IGZyb20gJ0AvdHlwZXMvU2VsZWN0JztcbmltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0aW9uTGVuZ3RoLCBWYWxpZGF0aW9uUmVzdWx0LCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb25EZXByZWNhdGVkJztcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG50eXBlIFJhbmdlRGF0YSA9IHtcbiAgbWluOiBudW1iZXIgfCBudWxsO1xuICBtYXg6IG51bWJlciB8IG51bGw7XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBlcnJvck1lc3NhZ2VEZWZhdWx0ID0gJ1BsZWFzZSBlbnRlciBhIHZhbGlkIHZhbHVlLic7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IG5vRXJyb3IgPSB7XG4gIG1lc3NhZ2U6ICcnLFxuICB2YWxpZDogdHJ1ZSxcbn0gYXMgUmVhZG9ubHk8VmFsaWRhdGlvblJlc3VsdD47XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGNoZWNrRm9ybWF0ID0gKGZvcm1hdDogUmVnRXhwKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCByZXN1bHQgPSBub0Vycm9yO1xuXG4gICAgaWYgKCF2YWx1ZS50cmltKCkubWF0Y2goZm9ybWF0KSkge1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICBtZXNzYWdlOiBlcnJvck1lc3NhZ2VEZWZhdWx0LFxuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFcnJvck1lc3NhZ2UgPSAoZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvciwgZXJyb3JGcm9tUmVmOiBWYWxpZGF0aW9uRXJyb3IpID0+IHtcbiAgLy8gZXJyb3IgaW4gcHJvcHMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHZhbGlkYXRpb24gZXJyb3JcbiAgaWYgKHR5cGVvZiBlcnJvckZyb21Qcm9wcyA9PT0gJ3N0cmluZycgJiYgZXJyb3JGcm9tUHJvcHMubGVuZ3RoID4gMCkgcmV0dXJuIGVycm9yRnJvbVByb3BzO1xuXG4gIHJldHVybiB0eXBlb2YgZXJyb3JGcm9tUmVmID09PSAnc3RyaW5nJyAmJiBlcnJvckZyb21SZWYubGVuZ3RoID4gMCA/IGVycm9yRnJvbVJlZiA6IGVycm9yTWVzc2FnZURlZmF1bHQ7XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRGaWVsZEhhc0Vycm9yID0gKGVycm9yRnJvbVByb3BzOiBWYWxpZGF0aW9uRXJyb3IsIGVycm9yRnJvbVJlZjogVmFsaWRhdGlvbkVycm9yKSA9PlxuICBlcnJvckZyb21Qcm9wcyAhPT0gZmFsc2UgfHwgZXJyb3JGcm9tUmVmICE9PSBmYWxzZTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZ2V0RmllbGRMZW5ndGhJc1ZhbGlkID0gKHsgbWF4bGVuZ3RoLCBtaW5sZW5ndGgsIHJlcXVpcmVkLCB2YWx1ZSB9OiBWYWxpZGF0aW9uTGVuZ3RoKSA9PiB7XG4gIGNvbnN0IGlzRW1wdHlBbmRVbnJlcXVpcmVkID0gdmFsdWUubGVuZ3RoID09PSAwICYmICFyZXF1aXJlZDtcbiAgY29uc3QgaXNUb29Mb25nID0gbWF4bGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heGxlbmd0aDtcbiAgY29uc3QgaXNUb29TaG9ydCA9ICFpc0VtcHR5QW5kVW5yZXF1aXJlZCAmJiBtaW5sZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWlubGVuZ3RoO1xuXG4gIHJldHVybiAhaXNUb29TaG9ydCAmJiAhaXNUb29Mb25nO1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZ2V0TWF4UmFuZ2VJc1ZhbGlkID0gKHsgbWluIH06IFBpY2s8UmFuZ2VEYXRhLCAnbWluJz4sIHR5cGU/OiAncHJpY2UnKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCBuZXdNYXg6IG51bWJlciB8IG51bGwgPSB0eXBlID09PSAncHJpY2UnID8gcHJpY2VUb051bWJlcih2YWx1ZSkgOiBOdW1iZXIodmFsdWUpO1xuICAgIG5ld01heCA9ICFpc05hTihuZXdNYXgpID8gbmV3TWF4IDogbnVsbDtcbiAgICBpZiAobWluICYmIG5ld01heCkge1xuICAgICAgaWYgKG5ld01heCA+PSBtaW4pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogYE11c3QgYmUgZ3JlYXRlciB0aGFuIG1pbmAsXG4gICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbm9FcnJvcjtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRNaW5SYW5nZUlzVmFsaWQgPSAoeyBtYXggfTogUGljazxSYW5nZURhdGEsICdtYXgnPiwgdHlwZT86ICdwcmljZScpID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IG5ld01pbjogbnVtYmVyIHwgbnVsbCA9IHR5cGUgPT09ICdwcmljZScgPyBwcmljZVRvTnVtYmVyKHZhbHVlKSA6IE51bWJlcih2YWx1ZSk7XG4gICAgbmV3TWluID0gIWlzTmFOKG5ld01pbikgPyBuZXdNaW4gOiBudWxsO1xuICAgIGlmIChtYXggJiYgbmV3TWluKSB7XG4gICAgICBpZiAobmV3TWluIDw9IG1heCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiBgTXVzdCBiZSBsZXNzIHRoYW4gbWF4YCxcbiAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub0Vycm9yO1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFNlbGVjdE9wdGlvbnNGcm9tU3RyaW5ncyA9IChzdHJpbmdzOiBzdHJpbmdbXSkgPT5cbiAgc3RyaW5ncy5tYXAoXG4gICAgKG9wdGlvbikgPT5cbiAgICAgICh7XG4gICAgICAgIGxhYmVsOiBvcHRpb24sXG4gICAgICAgIHZhbHVlOiBvcHRpb24sXG4gICAgICB9IGFzIFNlbGVjdE9wdGlvbilcbiAgKTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgaGFuZGxlRmllbGRWYWxpZGF0aW9uID0gKHtcbiAgZXJyb3IsXG4gIGVycm9yRnJvbVByb3BzLFxuICBtYXhsZW5ndGgsXG4gIG1pbmxlbmd0aCxcbiAgcmVxdWlyZWQgPSBmYWxzZSxcbiAgdmFsaWRhdG9ycyxcbiAgdmFsdWUsXG59OiB7XG4gIGVycm9yOiBSZWY8VmFsaWRhdGlvbkVycm9yPjtcbiAgZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvcjtcbiAgbWF4bGVuZ3RoPzogbnVtYmVyO1xuICBtaW5sZW5ndGg/OiBudW1iZXI7XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICB2YWx1ZT86IFJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+O1xufSkgPT4ge1xuICAvLyBlcnJvciBpbiBwcm9wcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdmFsaWRhdGlvbiBlcnJvclxuXG4gIGVycm9yLnZhbHVlID0gZXJyb3JGcm9tUHJvcHMgPyBlcnJvckZyb21Qcm9wcyA6IGZhbHNlO1xuXG4gIGlmICghZXJyb3IudmFsdWUgJiYgdmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlPy52YWx1ZSB8fCAnJywgdmFsaWRhdG9ycyk7XG5cbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIGVycm9yLnZhbHVlID0gdmFsaWRhdGlvbi5tZXNzYWdlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghZXJyb3IudmFsdWUgJiYgKG1heGxlbmd0aCB8fCBtaW5sZW5ndGgpKSB7XG4gICAgY29uc3QgbGVuZ3RoVmFsaWRhdGlvbiA9IHZhbGlkYXRlTGVuZ3RoKHtcbiAgICAgIG1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkLFxuICAgICAgdmFsdWU6IHZhbHVlPy52YWx1ZSB8fCAnJyxcbiAgICB9KTtcblxuICAgIGlmICghbGVuZ3RoVmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgZXJyb3IudmFsdWUgPSBsZW5ndGhWYWxpZGF0aW9uLm1lc3NhZ2U7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUZpZWxkc0Zyb21SZWZzKGZpZWxkczogeyBba2V5OiBzdHJpbmddOiBSZWY8U3RyaW5nSW5wdXQgfCBudWxsPiB9KSB7XG4gIGxldCB2YWxpZCA9IHRydWU7XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gZmllbGRzKSB7XG4gICAgaWYgKGZpZWxkc1trZXldLnZhbHVlPy5yZXF1aXJlZCkge1xuICAgICAgY29uc3QgdmFsdWUgPSBmaWVsZHNba2V5XS52YWx1ZT8udmFsdWU7XG4gICAgICB2YWxpZCA9IHZhbGlkICYmICEhdmFsdWUgJiYgdmFsdWUudHJpbSgpICE9PSAnJztcbiAgICB9XG5cbiAgICBjb25zdCBlcnJvciA9IGZpZWxkc1trZXldLnZhbHVlPy5lcnJvcjtcbiAgICB2YWxpZCA9IHZhbGlkICYmICFlcnJvcjtcbiAgfVxuXG4gIHJldHVybiB2YWxpZDtcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgdmFsaWRhdGVMZW5ndGggPSAoe1xuICBtYXhsZW5ndGgsXG4gIG1pbmxlbmd0aCxcbiAgcmVxdWlyZWQgPSBmYWxzZSxcbiAgdmFsdWUsXG59OiBWYWxpZGF0aW9uTGVuZ3RoKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xuXG4gIHJlc3BvbnNlLnZhbGlkID0gZ2V0RmllbGRMZW5ndGhJc1ZhbGlkKHtcbiAgICBtYXhsZW5ndGgsXG4gICAgbWlubGVuZ3RoLFxuICAgIHJlcXVpcmVkLFxuICAgIHZhbHVlLFxuICB9KTtcblxuICBpZiAocmVzcG9uc2UudmFsaWQpIHJldHVybiByZXNwb25zZTtcblxuICByZXNwb25zZS5tZXNzYWdlID0gZXJyb3JNZXNzYWdlRGVmYXVsdDtcblxuICBpZiAobWF4bGVuZ3RoICYmIG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgYmV0d2VlbiAke21pbmxlbmd0aH0gYW5kICR7bWF4bGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9IGVsc2UgaWYgKG1heGxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgbm8gbW9yZSB0aGFuICR7bWF4bGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9IGVsc2UgaWYgKG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgbm8gbGVzcyB0aGFuICR7bWlubGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlO1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZTogc3RyaW5nLCB2YWxpZGF0b3JzOiAoKHZhbHVlOiBzdHJpbmcpID0+IFZhbGlkYXRpb25SZXN1bHQpW10pOiBWYWxpZGF0aW9uUmVzdWx0IHtcbiAgZm9yIChjb25zdCB2YWxpZGF0b3Igb2YgdmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0b3IodmFsdWUpO1xuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgcmV0dXJuIHZhbGlkYXRpb247XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfTtcbn1cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYFRpZGVJbnB1dFNlbGVjdC52dWVgIGltcG9ydGVkIGZyb20gJ3RpZGUtZGVzaWduLXN5c3RlbScgbnBtIHBhY2thZ2UgaW5zdGVhZC5cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uLWRlcHJlY2F0ZWQnO1xuXG4gIGltcG9ydCB0eXBlIHsgU2VsZWN0RmllbGQgfSBmcm9tICdAL3R5cGVzL0ZpZWxkRGVwcmVjYXRlZCc7XG4gIGltcG9ydCB0eXBlIHsgU2VsZWN0T3B0aW9uLCBTZWxlY3RPcHRpb25Hcm91cCB9IGZyb20gJ0AvdHlwZXMvU2VsZWN0JztcblxuICBleHBvcnQgaW50ZXJmYWNlIFByb3BzIGV4dGVuZHMgU2VsZWN0RmllbGQge1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gIH1cblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgZXJyb3IgPSByZWYocHJvcHMuZXJyb3IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlucHV0ID0gcmVmPEhUTUxTZWxlY3RFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHJlcXVpcmVkID0gcmVmKHByb3BzLnJlcXVpcmVkKTtcbiAgY29uc3QgdmFsdWUgPSByZWY8c3RyaW5nIHwgdW5kZWZpbmVkPihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmICF2YWx1ZS52YWx1ZSkgfHwgZ2V0RmllbGRIYXNFcnJvcihlcnJvci52YWx1ZSwgcHJvcHMuZXJyb3IpKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09IHVuZGVmaW5lZCk7XG5cbiAgY29uc3QgZXhwYW5kT3B0aW9ucyA9ICgpID0+IHtcbiAgICBjb25zdCBldmVudCA9IG5ldyBNb3VzZUV2ZW50KCdtb3VzZWRvd24nKTtcbiAgICBpbnB1dD8udmFsdWU/LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7IGVycm9yLCB2YWx1ZSB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1zZWxlY3QnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgaGFzRXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtYm9yZGVyJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIHByb3BzLmRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6ICcnLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgXVwiXG4gICAgICBAY2xpY2s9XCJleHBhbmRPcHRpb25zXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkxFRlQsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLlRPUC5IQUxGLFxuICAgICAgICAgICAgQ1NTLk1BUkdJTi5MRUZULk9ORSxcbiAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgQ1NTLlBBRERJTkcuQk9UVE9NLkhBTEYsXG4gICAgICAgICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgICAgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgICB2LW1vZGVsPVwidmFsdWVcIlxuICAgICAgICA+XG4gICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwib3B0Z3JvdXAgaW4gcHJvcHMub3B0Z3JvdXBzXCI+XG4gICAgICAgICAgICA8b3B0Z3JvdXBcbiAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgIDprZXk9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLmxhYmVsXCJcbiAgICAgICAgICAgICAgOmxhYmVsPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5sYWJlbFwiXG4gICAgICAgICAgICAgIHYtaWY9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLm9wdGlvbnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgOnZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLm9wdGlvbnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9vcHRncm91cD5cblxuICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgOmtleT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlXCJcbiAgICAgICAgICAgICAgOnNlbGVjdGVkPVwidmFsdWUgPT09IChvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlID8gdHJ1ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgIDp2YWx1ZT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlXCJcbiAgICAgICAgICAgICAgdi1lbHNlXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IChvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLmxhYmVsIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICA6a2V5PVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIDpzZWxlY3RlZD1cInZhbHVlID09PSBvcHRpb24udmFsdWUgPyB0cnVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiBvcHRpb25zXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuUE9TSVRJT04uQUJTT0xVVEUsIENTUy5QT1NJVElPTklORy5SSUdIVCwgQ1NTLk1BUkdJTi5SSUdIVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PRkZdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVYUEFORF9NT1JFXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSXVwiXG4gICAgICB2LWlmPVwicHJvcHMuc3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzNdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogcHJvcHMuc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHNlbGVjdCB7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuXG4gIGxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICBsYWJlbDpub3QoLm1pbmlsYWJlbCkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIGNhbGMoOSAvIDE2ICogMXJlbSkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciBvcHRpb24ge1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLW9uLXN1cmZhY2UpO1xuICB9XG5cbiAgc2VsZWN0IHtcbiAgICBwYWRkaW5nLXRvcDogMjdweDtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBURVhUX0lOUFVUX1RZUEUgPSB7XG4gIERBVEU6ICdkYXRlJyxcbiAgREFURVRJTUVfTE9DQUw6ICdkYXRldGltZS1sb2NhbCcsXG4gIEVNQUlMOiAnZW1haWwnLFxuICBNT05USDogJ21vbnRoJyxcbiAgTlVNQkVSOiAnbnVtYmVyJyxcbiAgUEFTU1dPUkQ6ICdwYXNzd29yZCcsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFRFTDogJ3RlbCcsXG4gIFRFWFQ6ICd0ZXh0JyxcbiAgVElNRTogJ3RpbWUnLFxuICBVUkw6ICd1cmwnLFxuICBXRUVLOiAnd2VlaycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBUZXh0SW5wdXRUeXBlID0gKHR5cGVvZiBURVhUX0lOUFVUX1RZUEUpW2tleW9mIHR5cGVvZiBURVhUX0lOUFVUX1RZUEVdO1xuXG5leHBvcnQgY29uc3QgSU5QVVRfTU9ERSA9IHtcbiAgREVDSU1BTDogJ2RlY2ltYWwnLFxuICBFTUFJTDogJ2VtYWlsJyxcbiAgTlVNRVJJQzogJ251bWVyaWMnLFxuICBTRUFSQ0g6ICdzZWFyY2gnLFxuICBURUw6ICd0ZWwnLFxuICBURVhUOiAndGV4dCcsXG4gIFVSTDogJ3VybCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBJbnB1dE1vZGUgPSAodHlwZW9mIElOUFVUX01PREUpW2tleW9mIHR5cGVvZiBJTlBVVF9NT0RFXTtcbiIsImltcG9ydCB7IElOUFVUX01PREUsIFRFWFRfSU5QVVRfVFlQRSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcblxuaW1wb3J0IHR5cGUgeyBJbnB1dE1vZGUsIFRleHRJbnB1dFR5cGUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG5cbmV4cG9ydCBjb25zdCBnZXRUZXh0SW5wdXRNb2RlID0gKHR5cGU6IFRleHRJbnB1dFR5cGUsIGlucHV0bW9kZT86IElucHV0TW9kZSk6IElucHV0TW9kZSB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChpbnB1dG1vZGUpIHJldHVybiBpbnB1dG1vZGU7XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBURVhUX0lOUFVUX1RZUEUuVEVMOlxuICAgICAgcmV0dXJuIElOUFVUX01PREUuVEVMO1xuICAgIGNhc2UgVEVYVF9JTlBVVF9UWVBFLlNFQVJDSDpcbiAgICAgIHJldHVybiBJTlBVVF9NT0RFLlNFQVJDSDtcbiAgICBjYXNlIFRFWFRfSU5QVVRfVFlQRS5OVU1CRVI6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5OVU1FUklDO1xuICAgIGNhc2UgVEVYVF9JTlBVVF9UWVBFLkVNQUlMOlxuICAgICAgcmV0dXJuIElOUFVUX01PREUuRU1BSUw7XG4gICAgY2FzZSBURVhUX0lOUFVUX1RZUEUuVVJMOlxuICAgICAgcmV0dXJuIElOUFVUX01PREUuVVJMO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIHRleHQgaW5wdXQgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiBmb3Jtcy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWlucHV0dGV4dC0tZG9jcykgZm9yIFRpZGVJbnB1dFRleHRcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoLCB3YXRjaEVmZmVjdCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUlucHV0U3VwcG9ydGluZ1RleHQgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJbnB1dFN1cHBvcnRpbmdUZXh0LnZ1ZSc7XG4gIGltcG9ydCB7IHVzZUZvcm1Db250ZXh0IH0gZnJvbSAnQC9jb21wb3NhYmxlcy91c2VUaWRlRm9ybSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBURVhUX0lOUFVUX1RZUEUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB7IEVSUk9SX0RJU1BMQVkgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuICBpbXBvcnQgeyBnZXRUZXh0SW5wdXRNb2RlIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybXMnO1xuICBpbXBvcnQgeyBWQUxJREFUSU9OX1JFU1VMVCwgZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBGb3JtVmFsdWVUcmFuc2Zvcm1lciB9IGZyb20gJ0AvdHlwZXMvRm9ybSc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgSW5wdXRNb2RlLCBUZXh0SW5wdXRUeXBlIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgdHlwZSB7IEVycm9yRGlzcGxheSwgVmFsaWRhdGlvblJlc3VsdCwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgYnJvd3NlciBhdHRlbXB0cyB0byBhdXRvY29tcGxldGUgKi9cbiAgICBhdXRvY29tcGxldGU/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBpbnB1dCBpcyBpbnRlcmFjdGFibGUgKi9cbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgICAvKiogT3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGVycm9yIG1lc3NhZ2UgYW5kIHZhbGlkIHN0YXRlICovXG4gICAgZXJyb3I/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGVycm9ycyBkaXNwbGF5IHByaW9yIHRvIGJsdXIgKi9cbiAgICBlcnJvckRpc3BsYXk/OiBFcnJvckRpc3BsYXk7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgY2xlYXIvcmVzZXQgYnV0dG9uIGlzIHNob3duIGZvciB0aGUgaW5wdXQgKi9cbiAgICBoYXNDbGVhcj86IGJvb2xlYW47XG5cbiAgICAvKiogSWNvbiBhdCBsZWZ0IG9mIGlucHV0IHZhbHVlICovXG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuXG4gICAgLyoqIFVuaXF1ZSBJRCBhdHRyaWJ1dGUgKHRvIGJpbmQgaW5wdXQgbGFiZWwgdG8gaW5wdXQpICovXG4gICAgaW5wdXRJZD86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHRoZSBpbnB1dCBlZGl0aW5nIGZlYXR1cmVzIG9mZmVyZWQgYnkgdGhlIGJyb3dzZXIgKi9cbiAgICBpbnB1dG1vZGU/OiBJbnB1dE1vZGU7XG5cbiAgICAvKiogTGFiZWwgY29udGVudCAqL1xuICAgIGxhYmVsPzogc3RyaW5nO1xuXG4gICAgLyoqIEFwcGxpZXMgYSBtYXhpbXVtIGNoYXJhY3RlciBjb3VudCB0byB0aGUgaW5wdXQgKi9cbiAgICBtYXhsZW5ndGg/OiBudW1iZXI7XG5cbiAgICAvKiogQXBwbGllcyBhIG1pbmltdW0gY2hhcmFjdGVyIGNvdW50IHRvIHRoZSBpbnB1dCAqL1xuICAgIG1pbmxlbmd0aD86IG51bWJlcjtcblxuICAgIC8qKiBOYW1lIGF0dHJpYnV0ZSAqL1xuICAgIG5hbWU/OiBzdHJpbmc7XG5cbiAgICAvKiogSW5wdXQgcHJlZml4ICovXG4gICAgcHJlZml4Pzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBpbnB1dCBpcyByZXF1aXJlZCAqL1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBJbnB1dCBzdWZmaXggKGkuZS4gdW5pdHMpICovXG4gICAgc3VmZml4Pzogc3RyaW5nO1xuXG4gICAgLyoqIEV4cGxhaW5lciB0ZXh0IGJlbmVhdGggaW5wdXQgKi9cbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHRleHQgZm9ybWF0dGluZyBhcHBsaWVkIHRvIGlucHV0IHZhbHVlIHVwb24gaW52b2tpbmcgcmVsZXZhbnQgbGlzdGVuZXIgZXZlbnQocykgKi9cbiAgICB0cmFuc2Zvcm1WYWx1ZT86IEZvcm1WYWx1ZVRyYW5zZm9ybWVyO1xuXG4gICAgLyoqIERldGVybWluZXMgdGhlIHR5cGUocykgb2YgdmFsdWVzIGV4cGVjdGVkIGJ5IHRoZSBpbnB1dCAqL1xuICAgIHR5cGU/OiBUZXh0SW5wdXRUeXBlO1xuXG4gICAgLyoqIERldGVybWluZXMgbWV0aG9kKHMpIHVzZWQgdG8gY2hlY2sgZm9yIHZhbGlkIGlucHV0IHZhbHVlIHVwb24gaW52b2tpbmcgcmVsZXZhbnQgbGlzdGVuZXIgZXZlbnQocykgKi9cbiAgICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yW107XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhdXRvY29tcGxldGU6IGZhbHNlLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogJycsXG4gICAgZXJyb3JEaXNwbGF5OiBFUlJPUl9ESVNQTEFZLkxBWlksXG4gICAgaGFzQ2xlYXI6IGZhbHNlLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGlucHV0bW9kZTogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbWF4bGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbWlubGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIHByZWZpeDogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBzdWZmaXg6IHVuZGVmaW5lZCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHRyYW5zZm9ybVZhbHVlOiB1bmRlZmluZWQsXG4gICAgdHlwZTogVEVYVF9JTlBVVF9UWVBFLlRFWFQsXG4gICAgdmFsaWRhdG9yczogdW5kZWZpbmVkLFxuICB9KTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ3ZhbGlkJywgaXNWYWxpZDogYm9vbGVhbik6IHZvaWQ7XG4gIH07XG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8c3RyaW5nPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGZvcm1Db250ZXh0ID0gdXNlRm9ybUNvbnRleHQoKTtcblxuICBjb25zdCBlcnJvclJlZiA9IHJlZjxWYWxpZGF0aW9uUmVzdWx0PihWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgaW5wdXRFbGVtZW50ID0gcmVmPEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgaXNWYWxpZGF0aW5nID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3Qgc2hvd1Bhc3N3b3JkID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcblxuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiBwcm9wcy5sYWJlbCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IHNob3dFcnJvciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoaGFzRXJyb3JGcm9tUHJvcC52YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgaWYgKCFpc1ZhbGlkYXRpbmcudmFsdWUpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gIWVycm9yUmVmLnZhbHVlLnZhbGlkO1xuICB9KTtcbiAgY29uc3QgaGFzRXJyb3JGcm9tUHJvcCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmVycm9yICE9PSAnJyk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaW5wdXRNb2RlQXR0cmlidXRlID0gY29tcHV0ZWQ8SW5wdXRNb2RlIHwgdW5kZWZpbmVkPigoKSA9PiBnZXRUZXh0SW5wdXRNb2RlKHByb3BzLnR5cGUsIHByb3BzLmlucHV0bW9kZSkpO1xuICBjb25zdCBpbnB1dFR5cGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHByb3BzLnR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRCAmJiBzaG93UGFzc3dvcmQudmFsdWUgPT09IHRydWUgPyBURVhUX0lOUFVUX1RZUEUuVEVYVCA6IHByb3BzLnR5cGVcbiAgKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IG1vZGVsVmFsdWUudmFsdWUgPT0gbnVsbCB8fCBtb2RlbFZhbHVlLnZhbHVlID09PSAnJyk7XG4gIGNvbnN0IHNob3VsZFNob3dDbGVhckJ1dHRvbiA9IGNvbXB1dGVkKFxuICAgICgpID0+IHByb3BzLmhhc0NsZWFyICYmIG1vZGVsVmFsdWUudmFsdWUgJiYgcHJvcHMudHlwZSAhPT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEXG4gICk7XG4gIGNvbnN0IHNob3VsZFNob3dQYXNzd29yZEJ1dHRvbiA9IGNvbXB1dGVkKCgpID0+IHByb3BzLnR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRCk7XG4gIGNvbnN0IHN1cHBvcnRpbmdUZXh0TWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IChzaG93RXJyb3IudmFsdWUgJiYgZXJyb3JSZWYudmFsdWUubWVzc2FnZSkgfHwgcHJvcHMuc3VwcG9ydGluZ1RleHQpO1xuXG4gIGNvbnN0IGhhbmRsZUNsZWFyID0gKCkgPT4ge1xuICAgIG1vZGVsVmFsdWUudmFsdWUgPSAnJztcbiAgICBpbnB1dEVsZW1lbnQudmFsdWU/LmZvY3VzKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICAgIGlmIChwcm9wcy5lcnJvckRpc3BsYXkgPT09IEVSUk9SX0RJU1BMQVkuRUFHRVIpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcbiAgICBpZiAocHJvcHMuZXJyb3JEaXNwbGF5ID09PSBFUlJPUl9ESVNQTEFZLkxBWlkpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRmllbGRDbGljayA9ICgpID0+IHtcbiAgICBpbnB1dEVsZW1lbnQudmFsdWU/LmZvY3VzKCk7XG4gIH07XG5cbiAgY29uc3QgcHJldmVudElucHV0Rm9jdXNMb3NzT25Nb3VzZWRvd24gPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIGlmICghaGFzRm9jdXMudmFsdWUpIHJldHVybjtcbiAgICBpZiAoZS50YXJnZXQgIT09IGlucHV0RWxlbWVudC52YWx1ZSkgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICB9O1xuXG4gIHdhdGNoRWZmZWN0KCgpID0+IHtcbiAgICBlcnJvclJlZi52YWx1ZSA9IGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCh7XG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsaWRhdG9yczogcHJvcHMudmFsaWRhdG9ycyxcbiAgICAgIHZhbHVlOiBtb2RlbFZhbHVlLFxuICAgIH0pO1xuICB9KTtcblxuICB3YXRjaChcbiAgICBbbW9kZWxWYWx1ZSwgKCkgPT4gcHJvcHMudHJhbnNmb3JtVmFsdWVdLFxuICAgICgpID0+IHtcbiAgICAgIGlmICghcHJvcHMudHJhbnNmb3JtVmFsdWUpIHJldHVybjtcblxuICAgICAgY29uc3QgZGlnaXRzID0gbW9kZWxWYWx1ZS52YWx1ZT8ubWF0Y2goL1xcZC9nKT8uam9pbignJykgfHwgdW5kZWZpbmVkO1xuICAgICAgbW9kZWxWYWx1ZS52YWx1ZSA9IGRpZ2l0cyA/IHByb3BzLnRyYW5zZm9ybVZhbHVlKGRpZ2l0cykgOiAnJztcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBmb3JtQ29udGV4dD8uZm9yY2VTaG93RXJyb3JzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgIGVycm9yUmVmLFxuICAgICgpID0+IHtcbiAgICAgIGVtaXQoJ3ZhbGlkJywgZXJyb3JSZWYudmFsdWUudmFsaWQpO1xuICAgIH0sXG4gICAgeyBkZWVwOiB0cnVlLCBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXRleHQnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgc2hvd0Vycm9yICYmICdlcnJvcicsXG4gICAgXVwiXG4gID5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1maWVsZCcsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICAgIHNob3VsZFNob3dDbGVhckJ1dHRvbiA/IFtDU1MuUEFERElORy5SSUdIVC5IQUxGLCBDU1MuUEFERElORy5MRUZULk9ORV0gOiBbQ1NTLlBBRERJTkcuWC5PTkVdLFxuICAgICAgICBkaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJpbnB1dElkXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZUZpZWxkQ2xpY2tcIlxuICAgICAgQG1vdXNlZG93bj1cInByZXZlbnRJbnB1dEZvY3VzTG9zc09uTW91c2Vkb3duXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICA6aWNvbj1cImljb25MZWFkaW5nXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImljb25MZWFkaW5nXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LXByZWZpeCcsXG4gICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICAgICFzaG93RXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gJycgOiAnb2Zmc2V0JyxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICB2LWlmPVwicHJlZml4XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByZWZpeCB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtbGFiZWwnLFxuICAgICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgICAgICFzaG93RXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgICBdXCJcbiAgICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgOmF1dG9jb21wbGV0ZT1cImF1dG9jb21wbGV0ZSA/ICdvbicgOiAnb2ZmJ1wiXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5GT05ULlJPTEUuQk9EWV8xLCBkaXNhYmxlZCAmJiBDU1MuQ1VSU09SLk5PVF9BTExPV0VEXVwiXG4gICAgICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICA6aW5wdXRtb2RlPVwiaW5wdXRNb2RlQXR0cmlidXRlXCJcbiAgICAgICAgICAgIDptYXhsZW5ndGg9XCJtYXhsZW5ndGhcIlxuICAgICAgICAgICAgOm1pbmxlbmd0aD1cIm1pbmxlbmd0aFwiXG4gICAgICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgcmVmPVwiaW5wdXRFbGVtZW50XCJcbiAgICAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgIDp0eXBlPVwiaW5wdXRUeXBlXCJcbiAgICAgICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LXN1ZmZpeCcsXG4gICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICAgICFzaG93RXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gJycgOiAnb2Zmc2V0JyxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICB2LWlmPVwic3VmZml4XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHN1ZmZpeCB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIEBjbGljaz1cImhhbmRsZUNsZWFyXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHYtaWY9XCJzaG91bGRTaG93Q2xlYXJCdXR0b25cIlxuICAgICAgPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5GVUxMLkhBTEZdXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIC8+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBAY2xpY2s9XCJzaG93UGFzc3dvcmQgPSAhc2hvd1Bhc3N3b3JkXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHYtaWY9XCJzaG91bGRTaG93UGFzc3dvcmRCdXR0b25cIlxuICAgICAgPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5GVUxMLkhBTEZdXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uVklTSUJJTElUWVwiXG4gICAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgLz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8VGlkZUlucHV0U3VwcG9ydGluZ1RleHRcbiAgICAgIDppcy1lcnJvcj1cInNob3dFcnJvclwiXG4gICAgICA6bWVzc2FnZT1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgICB2LWlmPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LXRleHQtbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtbGFiZWw6bm90KC5taW5pbGFiZWwpLFxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeDpub3QoLm9mZnNldCksXG4gIC50aWRlLWlucHV0LXRleHQtc3VmZml4Om5vdCgub2Zmc2V0KSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeCxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXgge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3IgLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0IGlucHV0IHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBUaWRlSW5wdXRUZXh0LnZ1ZWAgaW1wb3J0ZWQgZnJvbSAndGlkZS1kZXNpZ24tc3lzdGVtJyBucG0gcGFja2FnZSBpbnN0ZWFkLlxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRFWFRfSU5QVVRfVFlQRSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yLCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uLWRlcHJlY2F0ZWQnO1xuXG4gIGltcG9ydCB0eXBlIHsgRm9ybVZhbHVlVHJhbnNmb3JtZXIgfSBmcm9tICdAL3R5cGVzL0Zvcm1EZXByZWNhdGVkJztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBUZXh0SW5wdXRUeXBlIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvciwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uRGVwcmVjYXRlZCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhdXRvY29tcGxldGU/OiBib29sZWFuO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlcnJvcj86IFZhbGlkYXRpb25FcnJvcjtcbiAgICBoYXNDbGVhcj86IGJvb2xlYW47XG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgbWF4bGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG1pbmxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHByZWZpeD86IHN0cmluZztcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgc3VmZml4Pzogc3RyaW5nO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICAgIHRyYW5zZm9ybVZhbHVlPzogRm9ybVZhbHVlVHJhbnNmb3JtZXI7XG4gICAgdHlwZT86IFRleHRJbnB1dFR5cGU7XG4gICAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICAgIHZhbHVlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYXV0b2NvbXBsZXRlOiBmYWxzZSxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGhhc0NsZWFyOiBmYWxzZSxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBwcmVmaXg6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgc3VmZml4OiB1bmRlZmluZWQsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB0cmFuc2Zvcm1WYWx1ZTogdW5kZWZpbmVkLFxuICAgIHR5cGU6IFRFWFRfSU5QVVRfVFlQRS5URVhULFxuICAgIHZhbGlkYXRvcnM6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBzaG93UGFzc3dvcmQgPSByZWYoZmFsc2UpO1xuICBjb25zdCB2YWx1ZSA9IHJlZihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiBwcm9wcy5sYWJlbCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0NsZWFyID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuaGFzQ2xlYXIgJiYgdmFsdWUudmFsdWUpO1xuICBjb25zdCBoYXNFcnJvciA9IGNvbXB1dGVkKFxuICAgICgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiB2YWx1ZS52YWx1ZSAhPT0gdW5kZWZpbmVkICYmICF2YWx1ZS52YWx1ZSkgfHwgZ2V0RmllbGRIYXNFcnJvcihlcnJvci52YWx1ZSwgcHJvcHMuZXJyb3IpXG4gICk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IHZhbHVlLnZhbHVlID09PSAnJyB8fCB2YWx1ZS52YWx1ZSA9PT0gdW5kZWZpbmVkKTtcbiAgY29uc3QgaW5wdXRUeXBlID0gY29tcHV0ZWQoKCkgPT5cbiAgICBwcm9wcy50eXBlID09PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkQgJiYgc2hvd1Bhc3N3b3JkLnZhbHVlID09PSB0cnVlID8gVEVYVF9JTlBVVF9UWVBFLlRFWFQgOiBwcm9wcy50eXBlXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlQ2xlYXIgPSAoKSA9PiB7XG4gICAgdmFsdWUudmFsdWUgPSAnJztcbiAgICBpbnB1dC52YWx1ZT8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICghdmFsdWUudmFsdWUpIHtcbiAgICAgIHZhbHVlLnZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgaGFuZGxlVmFsaWRhdGlvbigpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUlucHV0ID0gKCkgPT4ge1xuICAgIGlmIChwcm9wcy50cmFuc2Zvcm1WYWx1ZSkge1xuICAgICAgY29uc3QgZGlnaXRzID0gdmFsdWUudmFsdWU/Lm1hdGNoKC9cXGQvZyk/LmpvaW4oJycpIHx8IHVuZGVmaW5lZDtcblxuICAgICAgdmFsdWUudmFsdWUgPSBkaWdpdHMgPyBwcm9wcy50cmFuc2Zvcm1WYWx1ZShkaWdpdHMpIDogJyc7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVZhbGlkYXRpb24gPSAoKSA9PiB7XG4gICAgaGFuZGxlRmllbGRWYWxpZGF0aW9uKHtcbiAgICAgIGVycm9yLFxuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbGlkYXRvcnM6IHByb3BzLnZhbGlkYXRvcnMsXG4gICAgICB2YWx1ZSxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVWYWx1ZSA9IChuZXdWYWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy52YWx1ZSxcbiAgICAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlIHx8IG5ld1ZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICBkZWZpbmVFeHBvc2Uoe1xuICAgIGVycm9yLFxuICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICB1cGRhdGVWYWx1ZSxcbiAgICB2YWx1ZSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtdGV4dCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBoYXNFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXRleHQtZmllbGQnLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgaGFzQ2xlYXIgPyBbQ1NTLlBBRERJTkcuUklHSFQuSEFMRiwgQ1NTLlBBRERJTkcuTEVGVC5PTkVdIDogW0NTUy5QQURESU5HLlguT05FXSxcbiAgICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgICBkaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJpbnB1dElkXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICA6aWNvbj1cImljb25MZWFkaW5nXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImljb25MZWFkaW5nXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LXByZWZpeCcsXG4gICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyAnJyA6ICdvZmZzZXQnLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtaWY9XCJwcmVmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJlZml4IH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1sYWJlbCcsXG4gICAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIDphdXRvY29tcGxldGU9XCJhdXRvY29tcGxldGUgPyAnb24nIDogJ29mZidcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBkaXNhYmxlZCAmJiBDU1MuQ1VSU09SLk5PVF9BTExPV0VELCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIlxuICAgICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgOm1heGxlbmd0aD1cIm1heGxlbmd0aFwiXG4gICAgICAgICAgICA6bWlubGVuZ3RoPVwibWlubGVuZ3RoXCJcbiAgICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICA6dHlwZT1cImlucHV0VHlwZVwiXG4gICAgICAgICAgICBAY2hhbmdlPVwiaGFuZGxlVmFsaWRhdGlvblwiXG4gICAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgICAgICBAaW5wdXQ9XCJoYW5kbGVJbnB1dFwiXG4gICAgICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtc3VmZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCcsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cInN1ZmZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBzdWZmaXggfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbGVhclwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICB2LWlmPVwiaGFzQ2xlYXIgJiYgdHlwZSAhPT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVJY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uRlVMTC5IQUxGXVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAvPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgQGNsaWNrPVwic2hvd1Bhc3N3b3JkID0gIXNob3dQYXNzd29yZFwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICB2LWlmPVwidHlwZSA9PT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVJY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uRlVMTC5IQUxGXVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLlZJU0lCSUxJVFlcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2xhYmVsPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUl1cIlxuICAgICAgdi1pZj1cInN1cHBvcnRpbmdUZXh0IHx8IGhhc0Vycm9yXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW11cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC10ZXh0LWxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LWxhYmVsOm5vdCgubWluaWxhYmVsKSxcbiAgLnRpZGUtaW5wdXQtdGV4dC1wcmVmaXg6bm90KC5vZmZzZXQpLFxuICAudGlkZS1pbnB1dC10ZXh0LXN1ZmZpeDpub3QoLm9mZnNldCkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIGNhbGMoOSAvIDE2ICogMXJlbSkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1wcmVmaXgsXG4gIC50aWRlLWlucHV0LXRleHQtc3VmZml4IHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItcHJpbWFyeSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dCBpbnB1dCB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLW9uLXN1cmZhY2UpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSB0ZXh0YXJlYSBpbnB1dCBpbnRlbmRlZCB0byBiZSB1c2VkIGluIGZvcm1zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlaW5wdXR0ZXh0YXJlYS0tZG9jcykgZm9yIFRpZGVJbnB1dFRleHRhcmVhXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCwgd2F0Y2hFZmZlY3QgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUlucHV0U3VwcG9ydGluZ1RleHQudnVlJztcbiAgaW1wb3J0IHsgdXNlRm9ybUNvbnRleHQgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBFUlJPUl9ESVNQTEFZIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcbiAgaW1wb3J0IHsgVkFMSURBVElPTl9SRVNVTFQsIGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG4gIGltcG9ydCB0eXBlIHsgRXJyb3JEaXNwbGF5LCBWYWxpZGF0aW9uUmVzdWx0LCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIE92ZXJyaWRlcyB0aGUgZGVmYXVsdCBlcnJvciBtZXNzYWdlIGFuZCB2YWxpZCBzdGF0ZSAqL1xuICAgIGVycm9yPzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBlcnJvcnMgZGlzcGxheSBwcmlvciB0byBibHVyICovXG4gICAgZXJyb3JEaXNwbGF5PzogRXJyb3JEaXNwbGF5O1xuXG4gICAgLyoqIFVuaXF1ZSBJRCBhdHRyaWJ1dGUgKHRvIGJpbmQgaW5wdXQgbGFiZWwgdG8gaW5wdXQpICovXG4gICAgaW5wdXRJZD86IHN0cmluZztcblxuICAgIC8qKiBMYWJlbCBjb250ZW50ICovXG4gICAgbGFiZWw/OiBzdHJpbmc7XG5cbiAgICAvKiogQXBwbGllcyBhIG1heGltdW0gY2hhcmFjdGVyIGNvdW50IHRvIHRoZSBpbnB1dCAqL1xuICAgIG1heGxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgIC8qKiBBcHBsaWVzIGEgbWluaW11bSBjaGFyYWN0ZXIgY291bnQgdG8gdGhlIGlucHV0ICovXG4gICAgbWlubGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIE5hbWUgYXR0cmlidXRlICovXG4gICAgbmFtZT86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgaW5wdXQgaXMgcmVxdWlyZWQgKi9cbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB0aGUgaGVpZ2h0IG9mIHRoZSBpbnB1dCAqL1xuICAgIHJvd3M/OiBudW1iZXI7XG5cbiAgICAvKiogRXhwbGFpbmVyIHRleHQgYmVuZWF0aCBpbnB1dCAqL1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgbWV0aG9kKHMpIHVzZWQgdG8gY2hlY2sgZm9yIHZhbGlkIGlucHV0IHZhbHVlIHVwb24gaW52b2tpbmcgcmVsZXZhbnQgbGlzdGVuZXIgZXZlbnQocykgKi9cbiAgICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yW107XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBlcnJvcjogJycsXG4gICAgZXJyb3JEaXNwbGF5OiBFUlJPUl9ESVNQTEFZLkxBWlksXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbWF4bGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbWlubGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICByb3dzOiA4LFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdmFsaWRhdG9yczogdW5kZWZpbmVkLFxuICB9KTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ3ZhbGlkJywgaXNWYWxpZDogYm9vbGVhbik6IHZvaWQ7XG4gIH07XG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8c3RyaW5nPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGZvcm1Db250ZXh0ID0gdXNlRm9ybUNvbnRleHQoKTtcblxuICBjb25zdCBlcnJvclJlZiA9IHJlZjxWYWxpZGF0aW9uUmVzdWx0PihWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgaXNWYWxpZGF0aW5nID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgdGV4dGFyZWFFbGVtZW50ID0gcmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IHNob3dFcnJvciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoaGFzRXJyb3JGcm9tUHJvcC52YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgaWYgKCFpc1ZhbGlkYXRpbmcudmFsdWUpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gIWVycm9yUmVmLnZhbHVlLnZhbGlkO1xuICB9KTtcbiAgY29uc3QgaGFzRXJyb3JGcm9tUHJvcCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmVycm9yICE9PSAnJyk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IG1vZGVsVmFsdWUudmFsdWUgPT09ICcnKTtcbiAgY29uc3Qgc3VwcG9ydGluZ1RleHRNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gKHNob3dFcnJvci52YWx1ZSAmJiBlcnJvclJlZi52YWx1ZS5tZXNzYWdlKSB8fCBwcm9wcy5zdXBwb3J0aW5nVGV4dCk7XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICAgIGlmIChwcm9wcy5lcnJvckRpc3BsYXkgPT09IEVSUk9SX0RJU1BMQVkuRUFHRVIpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcbiAgICBpZiAocHJvcHMuZXJyb3JEaXNwbGF5ID09PSBFUlJPUl9ESVNQTEFZLkxBWlkpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRmllbGRDbGljayA9ICgpID0+IHtcbiAgICB0ZXh0YXJlYUVsZW1lbnQudmFsdWU/LmZvY3VzKCk7XG4gIH07XG5cbiAgY29uc3QgcHJldmVudFRleHRhcmVhRm9jdXNMb3NzT25Nb3VzZWRvd24gPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIGlmICghaGFzRm9jdXMudmFsdWUpIHJldHVybjtcbiAgICBpZiAoZS50YXJnZXQgIT09IHRleHRhcmVhRWxlbWVudC52YWx1ZSkgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICB9O1xuXG4gIHdhdGNoRWZmZWN0KCgpID0+IHtcbiAgICBlcnJvclJlZi52YWx1ZSA9IGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCh7XG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsaWRhdG9yczogcHJvcHMudmFsaWRhdG9ycyxcbiAgICAgIHZhbHVlOiBtb2RlbFZhbHVlLFxuICAgIH0pO1xuICB9KTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBmb3JtQ29udGV4dD8uZm9yY2VTaG93RXJyb3JzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgIGVycm9yUmVmLFxuICAgICgpID0+IHtcbiAgICAgIGVtaXQoJ3ZhbGlkJywgZXJyb3JSZWYudmFsdWUudmFsaWQpO1xuICAgIH0sXG4gICAgeyBkZWVwOiB0cnVlLCBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIlsndGlkZS1pbnB1dC10ZXh0YXJlYScsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuUVVBUlRFUiwgc2hvd0Vycm9yICYmICdlcnJvciddXCJcbiAgPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCcsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuUEFERElORy5UT1AuSEFMRixcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwiaW5wdXRJZFwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVGaWVsZENsaWNrXCJcbiAgICAgIEBtb3VzZWRvd249XCJwcmV2ZW50VGV4dGFyZWFGb2N1c0xvc3NPbk1vdXNlZG93blwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dGFyZWEtbGFiZWwnLFxuICAgICAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAhc2hvd0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICBdXCJcbiAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgID5cbiAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8dGV4dGFyZWFcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkJMT0NLLCBDU1MuRk9OVC5ST0xFLkJPRFlfMSwgQ1NTLlBBRERJTkcuWC5PTkUsIENTUy5XSURUSC5GVUxMXVwiXG4gICAgICAgIDptYXhsZW5ndGg9XCJtYXhsZW5ndGhcIlxuICAgICAgICA6bWlubGVuZ3RoPVwibWlubGVuZ3RoXCJcbiAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgcmVmPVwidGV4dGFyZWFFbGVtZW50XCJcbiAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICA6cm93cz1cInJvd3NcIlxuICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgOmlkPVwiaW5wdXRJZFwiXG4gICAgICAgIHYtbW9kZWw9XCJtb2RlbFZhbHVlXCJcbiAgICAgIC8+XG4gICAgPC9sYWJlbD5cblxuICAgIDxUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dFxuICAgICAgOmlzLWVycm9yPVwic2hvd0Vycm9yXCJcbiAgICAgIDptZXNzYWdlPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgdGV4dGFyZWEge1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1sYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3IgLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYTpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhIHRleHRhcmVhIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLW9uLXN1cmZhY2UpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgVGlkZUlucHV0VGV4dGFyZWEudnVlYCBpbXBvcnRlZCBmcm9tICd0aWRlLWRlc2lnbi1zeXN0ZW0nIG5wbSBwYWNrYWdlIGluc3RlYWQuXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yLCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uLWRlcHJlY2F0ZWQnO1xuXG4gIGltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uRGVwcmVjYXRlZCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBlcnJvcj86IFZhbGlkYXRpb25FcnJvcjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG1heGxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBtaW5sZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgcm93cz86IG51bWJlcjtcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgICB2YWx1ZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGVycm9yOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHJvd3M6IDgsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCB2YWx1ZSA9IHJlZihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcilcbiAgKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09ICcnIHx8IHZhbHVlLnZhbHVlID09PSB1bmRlZmluZWQpO1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKCF2YWx1ZS52YWx1ZSkge1xuICAgICAgdmFsdWUudmFsdWUgPSAnJztcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVmFsaWRhdGlvbiA9ICgpID0+IHtcbiAgICByZXR1cm4gaGFuZGxlRmllbGRWYWxpZGF0aW9uKHtcbiAgICAgIGVycm9yLFxuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7XG4gICAgZXJyb3IsXG4gICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgIHZhbHVlLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtdGV4dGFyZWEnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLlFVQVJURVIsIGhhc0Vycm9yICYmICdlcnJvciddXCJcbiAgPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCcsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuUEFERElORy5MRUZULk9ORSxcbiAgICAgICAgQ1NTLlBBRERJTkcuVE9QLkhBTEYsXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIENTUy5DVVJTT1IuVEVYVCxcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLWlucHV0LXRleHRhcmVhLWxhYmVsJyxcbiAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICBdXCJcbiAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgID5cbiAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8dGV4dGFyZWFcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkJMT0NLLCBDU1MuV0lEVEguRlVMTCwgQ1NTLkZPTlQuUk9MRS5CT0RZXzFdXCJcbiAgICAgICAgOm1heGxlbmd0aD1cIm1heGxlbmd0aFwiXG4gICAgICAgIDptaW5sZW5ndGg9XCJtaW5sZW5ndGhcIlxuICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgOnJvd3M9XCJyb3dzXCJcbiAgICAgICAgQGNoYW5nZT1cImhhbmRsZVZhbGlkYXRpb25cIlxuICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgOmlkPVwiaW5wdXRJZFwiXG4gICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAvPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSXVwiXG4gICAgICB2LWlmPVwic3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLWxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItcHJpbWFyeSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvciAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEgdGV4dGFyZWEge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGdlbmVyaWMgbWVudSBpdGVtIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gbmF2aWdhdGlvbiBtZW51cyBvciBkcm9wZG93bnMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVtZW51aXRlbS0tZG9jcykgZm9yIFRpZGVNZW51SXRlbVxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEFSR0VUIH0gZnJvbSAnQC90eXBlcy9UYXJnZXQnO1xuXG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogVGhlIGVsZW1lbnQgdG8gcmVuZGVyIHRoZSByb290IGVsZW1lbnQgYXMuICovXG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG5cbiAgICAvKiogVGhlIGhyZWYgYXR0cmlidXRlIHRvIGFwcGx5IHdoZW4gdGhlIGVsZW1lbnQgaXMgYSBsaW5rLiAqL1xuICAgIGhyZWY/OiBzdHJpbmc7XG5cbiAgICAvKiogV2hldGhlciB0byBvcGVuIGxpbmsgaW4gYSBuZXcgdGFiLiAqL1xuICAgIGlzTmV3VGFiPzogYm9vbGVhbjtcblxuICAgIC8qKiBJY29uIHRvIHNob3cgYWZ0ZXIgdGhlIGxhYmVsLiAqL1xuICAgIGljb25UcmFpbGluZz86IEljb247XG5cbiAgICAvKiogVGhlIGxhYmVsIHRvIGJlIGRpc3BsYXllZC4gKi9cbiAgICBsYWJlbDogc3RyaW5nO1xuICB9O1xuXG4gIHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGVsZW1lbnQ6IEVMRU1FTlQuTElOSyxcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgaWNvblRyYWlsaW5nOiB1bmRlZmluZWQsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1tZW51LWl0ZW0nLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLlpFUk8sXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkVMTElQU0lTLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICBDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGLFxuICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgXVwiXG4gICAgOmhyZWY9XCJocmVmXCJcbiAgICA6dGFyZ2V0PVwiaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiB1bmRlZmluZWRcIlxuICAgIDppcz1cImVsZW1lbnRcIlxuICA+XG4gICAgPHNwYW4+e3sgbGFiZWwgfX08L3NwYW4+XG5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkxFRlQuQVVUT11cIlxuICAgICAgOmljb249XCJpY29uVHJhaWxpbmdcIlxuICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIHYtaWY9XCJpY29uVHJhaWxpbmdcIlxuICAgIC8+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtbWVudS1pdGVtIHtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gIH1cblxuICAudGlkZS1tZW51LWl0ZW06aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgfVxuPC9zdHlsZT5cbiIsIi8qIGVzbGludC1kaXNhYmxlIHZ1ZS9zb3J0LWtleXMgKi9cblxuZXhwb3J0IGNvbnN0IEJSRUFLUE9JTlQgPSB7XG4gIFNNOiAnc20nLFxuICBNRDogJ21kJyxcbiAgTEc6ICdsZycsXG4gIFhMOiAneGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IE1FRElBID0ge1xuICBTTTogNzY4LFxuICBNRDogOTkyLFxuICBMRzogMTIzMixcbiAgWEw6IDE5MjAsXG59O1xuXG5leHBvcnQgdHlwZSBCcmVha3BvaW50ID0gKHR5cGVvZiBCUkVBS1BPSU5UKVtrZXlvZiB0eXBlb2YgQlJFQUtQT0lOVF07XG5leHBvcnQgdHlwZSBNZWRpYSA9ICh0eXBlb2YgTUVESUEpW2tleW9mIHR5cGVvZiBNRURJQV07XG4iLCJpbXBvcnQgeyBuZXh0VGljayB9IGZyb20gJ3Z1ZSc7XG5cbi8qKlxuICogRGlyZWN0bHkgbW9kaWZpZXMgdGhlIGA8Ym9keT5gIGVsZW1lbnQgdG8gYXBwbHkgb3IgcmVtb3ZlIHNjcm9sbCBsb2NrLlxuICogV2hlbiBgZmFsc2VgIGlzIHByb3ZpZGVkLCBpdCBvbmx5IHVubG9ja3Mgc2Nyb2xsIGlmIHRoZXJlIGFyZSBubyBvcGVuXG4gKiBIVE1MIGRpYWxvZyBlbGVtZW50cy5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldFNjcm9sbExvY2sgPSBhc3luYyAoaXNMb2NrZWQ6IGJvb2xlYW4pID0+IHtcbiAgLy8gQ2Fubm90IGJlIGFwcGxpZWQgdG8gYm9keSB0YWcgaW4gbWFya2V0cGxhY2UgcmVwbyBkdWUgdG8gZGF0YS1jc3Mtc2NvcGVcbiAgLy8gY29uc3QgQk9EWV9MT0NLX0NMQVNTID0gJ2JvZHktc2Nyb2xsLWxvY2snO1xuXG4gIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5ib2R5O1xuXG4gIGlmIChpc0xvY2tlZCkge1xuICAgIGlmICghYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZKSB7XG4gICAgICBjb25zdCBzY3JvbGxZID0gd2luZG93LnNjcm9sbFk7XG5cbiAgICAgIGJvZHkuZGF0YXNldC5zY3JvbGxMb2NrWSA9IHNjcm9sbFkudG9TdHJpbmcoKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2F2ZWQtc2Nyb2xsLXknLCBgJHtzY3JvbGxZfXB4YCk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCdpbnNldCcsICcwJyk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCdtYXJnaW4tdG9wJywgYGNhbGMoMHB4IC0gdmFyKC0tc2F2ZWQtc2Nyb2xsLXksIDBweCkpYCk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCdvdmVyZmxvdy15JywgJ3Njcm9sbCcpO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgncG9zaXRpb24nLCAnZml4ZWQnKTtcblxuICAgICAgLy8gQ2Fubm90IGJlIGFwcGxpZWQgdG8gYm9keSB0YWcgaW4gbWFya2V0cGxhY2UgcmVwbyBkdWUgdG8gZGF0YS1jc3Mtc2NvcGVcbiAgICAgIC8vIGJvZHkuY2xhc3NMaXN0LmFkZChCT0RZX0xPQ0tfQ0xBU1MpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBuZXh0VGljaygpO1xuICAgIGlmICghZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGlhbG9nW29wZW5dJykpIHtcbiAgICAgIGNvbnN0IHNhdmVkU2Nyb2xsWSA9IHBhcnNlSW50KGJvZHkuZGF0YXNldC5zY3JvbGxMb2NrWSB8fCAnMCcpO1xuXG4gICAgICAvLyBDYW5ub3QgYmUgYXBwbGllZCB0byBib2R5IHRhZyBpbiBtYXJrZXRwbGFjZSByZXBvIGR1ZSB0byBkYXRhLWNzcy1zY29wZVxuICAgICAgLy8gYm9keS5jbGFzc0xpc3QucmVtb3ZlKEJPRFlfTE9DS19DTEFTUyk7XG5cbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2luc2V0Jyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdtYXJnaW4tdG9wJyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdvdmVyZmxvdy15Jyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdwb3NpdGlvbicpO1xuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1zYXZlZC1zY3JvbGwteScpO1xuXG4gICAgICB3aW5kb3cuc2Nyb2xsVG8oe1xuICAgICAgICBiZWhhdmlvcjogJ2F1dG8nLFxuICAgICAgICB0b3A6IHNhdmVkU2Nyb2xsWSxcbiAgICAgIH0pO1xuXG4gICAgICBkZWxldGUgYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFRPUF9MQVlFUl9JRCA9ICd0aWRlLXRvcC1sYXllcic7XG5cbmV4cG9ydCBjb25zdCBpbml0RmF1eFRvcExheWVyID0gKCkgPT4ge1xuICBsZXQgdG9wTGF5ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChUT1BfTEFZRVJfSUQpO1xuICBpZiAoIXRvcExheWVyKSB7XG4gICAgdG9wTGF5ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0b3BMYXllci5pZCA9IFRPUF9MQVlFUl9JRDtcbiAgICB0b3BMYXllci5zZXRBdHRyaWJ1dGUoJ2RhdGEtY3NzLXNjb3BlJywgJycpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodG9wTGF5ZXIpO1xuICB9XG4gIHRvcExheWVyLnN0eWxlLmlzb2xhdGlvbiA9ICdpc29sYXRlJztcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIG1vZGFsIGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIGRpc3BsYXlpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvciBvcHRpb25zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlbW9kYWwtLWRvY3MpIGZvciBUaWRlTW9kYWxcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IG5leHRUaWNrLCBvbkJlZm9yZU1vdW50LCBvbkJlZm9yZVVubW91bnQsIG9uTW91bnRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgeyBCUkVBS1BPSU5UIH0gZnJvbSAnQC90eXBlcy9CcmVha3BvaW50JztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVE9QX0xBWUVSX0lELCBpbml0RmF1eFRvcExheWVyLCBzZXRTY3JvbGxMb2NrIH0gZnJvbSAnQC91dGlsaXRpZXMvdmlld3BvcnQnO1xuXG4gIGltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKlxuICAgICAqIENhbGxlZCBiZWZvcmUgdGhlIG1vZGFsIGNsb3Nlcy5cbiAgICAgKlxuICAgICAqIFJldHVybiBgZmFsc2VgIHRvIGNhbmNlbCB0aGUgY2xvc2UgZXZlbnQuXG4gICAgICovXG4gICAgYmVmb3JlQ2xvc2U/OiAoKSA9PiB2b2lkIHwgYm9vbGVhbiB8IFByb21pc2U8dm9pZCB8IGJvb2xlYW4+O1xuICAgIC8qKiBDb250cm9scyBkaXNwbGF5IG9mIHRoZSBiYWNrIGJ1dHRvbi4gKi9cbiAgICBpc0JhY2tCdXR0b24/OiBib29sZWFuO1xuICAgIC8qKiBDb250cm9scyB3aGV0aGVyIHRoZSBtb2RhbCBjYW4gYmUgZGlzbWlzc2VkIHdpdGggYSBjbG9zZSBidXR0b24gb3Igb3RoZXIgZ2VzdHVyZXMuICovXG4gICAgaXNEaXNtaXNzaWJsZT86IGJvb2xlYW47XG4gICAgLyoqIFRoZSB0aXRsZSB0byBkaXNwbGF5IGluIHRoZSBtb2RhbCdzIGhlYWRlci4gKi9cbiAgICB0aXRsZT86IHN0cmluZztcbiAgICAvKiogQ3VzdG9tIG92ZXJyaWRlIHRvIHRoZSBtb2RhbCdzIHdpZHRoIGNvbnN0cmFpbnQuIEluY2x1ZGUgdW5pdHMuICovXG4gICAgd2lkdGg/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBiZWZvcmVDbG9zZTogdW5kZWZpbmVkLFxuICAgIGlzQmFja0J1dHRvbjogZmFsc2UsXG4gICAgaXNEaXNtaXNzaWJsZTogdHJ1ZSxcbiAgICB0aXRsZTogdW5kZWZpbmVkLFxuICAgIHdpZHRoOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGU6ICdiYWNrJyk6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGFsQ29udGVudDogUmVmPEhUTUxEaXZFbGVtZW50IHwgdW5kZWZpbmVkPiA9IHJlZigpO1xuICBjb25zdCBtb2RhbERpYWxvZzogUmVmPEhUTUxEaWFsb2dFbGVtZW50IHwgdW5kZWZpbmVkPiA9IHJlZigpO1xuXG4gIGNvbnN0IGlzT3BlbiA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4gPSAoKSA9PiB7XG4gICAgbW9kYWxEaWFsb2cudmFsdWU/LnNob3dNb2RhbCgpO1xuICAgIHNldFNjcm9sbExvY2sodHJ1ZSk7XG4gIH07XG5cbiAgY29uc3QgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlID0gKCkgPT4ge1xuICAgIG1vZGFsRGlhbG9nLnZhbHVlPy5jbG9zZSgpO1xuICAgIHNldFNjcm9sbExvY2soZmFsc2UpO1xuICB9O1xuXG4gIGNvbnN0IHNjcm9sbENvbnRlbnRUb1RvcCA9ICgpID0+IHtcbiAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICBpZiAoIW1vZGFsQ29udGVudC52YWx1ZSkgcmV0dXJuO1xuICAgICAgbW9kYWxDb250ZW50LnZhbHVlLnNjcm9sbFRvcCA9IDA7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgY2xvc2UgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKHByb3BzLmJlZm9yZUNsb3NlKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcm9wcy5iZWZvcmVDbG9zZSgpO1xuICAgICAgaWYgKHJlc3VsdCA9PT0gZmFsc2UpIHJldHVybjtcbiAgICB9XG5cbiAgICBpc09wZW4udmFsdWUgPSBmYWxzZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVCYWNrZHJvcENsaWNrID0gKCkgPT4ge1xuICAgIGlmIChwcm9wcy5pc0Rpc21pc3NpYmxlKSBjbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUVzY2FwZUtleWRvd24gPSAoZTogRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHByb3BzLmlzRGlzbWlzc2libGUpIGNsb3NlKCk7XG4gIH07XG5cbiAgd2F0Y2goaXNPcGVuLCAoKSA9PiB7XG4gICAgaWYgKCFtb2RhbERpYWxvZy52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChpc09wZW4udmFsdWUpIHtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgICBzY3JvbGxDb250ZW50VG9Ub3AoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlKCk7XG4gICAgfVxuICB9KTtcblxuICBvbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICBpbml0RmF1eFRvcExheWVyKCk7XG4gIH0pO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICB9XG4gIH0pO1xuXG4gIG9uQmVmb3JlVW5tb3VudCgoKSA9PiB7XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgaXNPcGVuLnZhbHVlID0gZmFsc2U7XG4gICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UoKTtcbiAgICB9XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFRlbGVwb3J0IDp0bz1cImAjJHtUT1BfTEFZRVJfSUR9YFwiPlxuICAgIDxkaWFsb2dcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1tb2RhbCcsIENTUy5CRy5JTklUSUFMLCBDU1MuSEVJR0hULkZVTEwsIENTUy5XSURUSC5GVUxMLCBDU1MuT1ZFUkZMT1cuWFkuSElEREVOXVwiXG4gICAgICByZWY9XCJtb2RhbERpYWxvZ1wiXG4gICAgICA6c3R5bGU9XCJ7ICctLW1vZGFsLXdpZHRoJzogd2lkdGggfVwiXG4gICAgICBAY2xpY2suc2VsZj1cImhhbmRsZUJhY2tkcm9wQ2xpY2tcIlxuICAgICAgQGNsb3NlLnByZXZlbnRcbiAgICAgIEBrZXlkb3duLmVzY2FwZT1cImhhbmRsZUVzY2FwZUtleWRvd25cIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLW1vZGFsLWJvZHknLFxuICAgICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuT05FLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuQk9UVE9NLFxuICAgICAgICAgIENTUy5TSEFET1cuVE9QLFxuICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgIENTUy5XSURUSC5NQVhfRlVMTCxcbiAgICAgICAgICBDU1Mud2l0aEJyZWFrcG9pbnQoW0NTUy5TSEFET1cuQk9UVE9NXSwgQlJFQUtQT0lOVC5TTSksXG4gICAgICAgIF1cIlxuICAgICAgPlxuICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtbW9kYWwtaGVhZGVyJyxcbiAgICAgICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgICAgICBDU1MuQk9SREVSLkJPVFRPTS5PTkUsXG4gICAgICAgICAgICBDU1MuQk9SREVSLkNPTE9SLkxPVyxcbiAgICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgICAgICBDU1MuSVNPTEFUSU9OLklTT0xBVEUsXG4gICAgICAgICAgICBDU1MuUEFERElORy5ZLk9ORSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgICAgIENTUy5aX0lOREVYLk9ORSxcbiAgICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICAgIEBjbGljaz1cImVtaXQoJ2JhY2snKVwiXG4gICAgICAgICAgICB0aXRsZT1cIkJhY2tcIlxuICAgICAgICAgICAgdi1pZj1cImlzQmFja0J1dHRvblwiXG4gICAgICAgICAgLz5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkhFQURMSU5FXzJdXCJcbiAgICAgICAgICAgIHYtdGV4dD1cInRpdGxlXCJcbiAgICAgICAgICAvPlxuXG4gICAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguR1JPVy5PRkYsIENTUy5GTEVYLlNIUklOSy5PRkYsIENTUy5NQVJHSU4uTEVGVC5BVVRPXVwiXG4gICAgICAgICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgICBAY2xpY2s9XCJjbG9zZVwiXG4gICAgICAgICAgICB2LWlmPVwiaXNEaXNtaXNzaWJsZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLW1vZGFsLWNvbnRlbnQnLFxuICAgICAgICAgICAgQ1NTLkRJU1BMQVkuR1JJRCxcbiAgICAgICAgICAgIENTUy5JU09MQVRJT04uSVNPTEFURSxcbiAgICAgICAgICAgIENTUy5PVkVSRkxPVy5YLkhJRERFTixcbiAgICAgICAgICAgIENTUy5PVkVSRkxPVy5ZLkFVVE8sXG4gICAgICAgICAgICBDU1MuUEFERElORy5ZLlRXTyxcbiAgICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHJlZj1cIm1vZGFsQ29udGVudFwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2xvdCAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8Zm9vdGVyXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtbW9kYWwtZm9vdGVyJyxcbiAgICAgICAgICAgIENTUy5BWElTMS5FTkQsXG4gICAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgICAgQ1NTLkdBUC5UV08sXG4gICAgICAgICAgICBDU1MuSVNPTEFUSU9OLklTT0xBVEUsXG4gICAgICAgICAgICBDU1MuUEFERElORy5ZLk9ORSxcbiAgICAgICAgICAgIENTUy5TSEFET1cuVE9QLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtaWY9XCIkc2xvdHMuZm9vdGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJmb290ZXJcIiAvPlxuICAgICAgICA8L2Zvb3Rlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGlhbG9nPlxuICA8L1RlbGVwb3J0PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtbW9kYWwge1xuICAgIC0tbW9kYWwtcGFkZGluZy14OiAyMHB4O1xuICAgIG1heC13aWR0aDogdW5zZXQ7XG4gICAgbWF4LWhlaWdodDogdW5zZXQ7XG4gICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aWRlLWFuaW1hdGUpIGFsbG93LWRpc2NyZXRlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgfVxuICAudGlkZS1tb2RhbFtvcGVuXSB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xuICB9XG4gIC50aWRlLW1vZGFsOjpiYWNrZHJvcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpZGUtYW5pbWF0ZSkgYWxsb3ctZGlzY3JldGU7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDBweCk7XG4gIH1cbiAgLnRpZGUtbW9kYWxbb3Blbl06OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLXRyYW5zcGFyZW50LTQwMCk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiB2YXIoLS10aWRlLWJnLWJsdXIpO1xuICB9XG4gIEBzdGFydGluZy1zdHlsZSB7XG4gICAgLnRpZGUtbW9kYWxbb3Blbl0ge1xuICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICB9XG4gICAgLnRpZGUtbW9kYWxbb3Blbl06OmJhY2tkcm9wIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYmFja2Ryb3AtZmlsdGVyOiB2YXIoLS10aWRlLWJnLWJsdXIpO1xuICAgIH1cbiAgfVxuICAudGlkZS1tb2RhbC1ib2R5IHtcbiAgICB3aWR0aDogdmFyKC0tbW9kYWwtd2lkdGgsIDU3NnB4KTtcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSB2YXIoLS10aWRlLXNwYWNpbmctMikpO1xuICB9XG5cbiAgLnRpZGUtbW9kYWwtaGVhZGVyLFxuICAudGlkZS1tb2RhbC1mb290ZXIge1xuICAgIHBhZGRpbmctaW5saW5lOiB2YXIoLS1tb2RhbC1wYWRkaW5nLXgpO1xuICB9XG4gIC50aWRlLW1vZGFsLWNvbnRlbnQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdmFyKC0tbW9kYWwtcGFkZGluZy14KSB2YXIoLS10aWRlLXNhZmUtZnIpIHZhcigtLW1vZGFsLXBhZGRpbmcteCk7XG4gIH1cbiAgOndoZXJlKC50aWRlLW1vZGFsLWNvbnRlbnQpOmRlZXAoPiA6d2hlcmUoKikpIHtcbiAgICBncmlkLWNvbHVtbjogMjtcbiAgfVxuXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAgIC50aWRlLW1vZGFsLWJvZHkge1xuICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICAgIH1cbiAgfVxuICBAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICAudGlkZS1tb2RhbCB7XG4gICAgICAtLW1vZGFsLXBhZGRpbmcteDogdmFyKC0tdGlkZS1zcGFjaW5nLTIpO1xuICAgIH1cbiAgICAudGlkZS1tb2RhbC1ib2R5IHtcbiAgICAgIG1heC1oZWlnaHQ6IDg1JTtcbiAgICAgIGJvdHRvbTogaW5pdGlhbDtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUJ1dHRvblBhZ2luYXRpb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25QYWdpbmF0aW9uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBwYWdlVG90YWw6IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPFByb3BzPigpO1xuXG4gIGNvbnN0IGN1cnJlbnRJbmRleCA9IGRlZmluZU1vZGVsPG51bWJlcj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBwYWdpbmF0aW9uQnV0dG9ucyA9IGNvbXB1dGVkKCgpID0+IG5ldyBBcnJheShwcm9wcy5wYWdlVG90YWwpLmZpbGwoJycpLm1hcCgoZW1wdHksIGluZGV4KSA9PiBpbmRleCArIDEpKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgY3VycmVudEluZGV4LnZhbHVlID0gaW5kZXg7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlUHJldmlvdXNDbGljayA9ICgpID0+IHtcbiAgICBjdXJyZW50SW5kZXgudmFsdWUtLTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVOZXh0Q2xpY2sgPSAoKSA9PiB7XG4gICAgY3VycmVudEluZGV4LnZhbHVlKys7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvblxuICAgIDpjbGFzcz1cIlsndGlkZS1wYWdpbmF0aW9uJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkNFTlRFUiwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuV0lEVEguRlVMTF1cIlxuICA+XG4gICAgPFRpZGVCdXR0b25JY29uXG4gICAgICA6ZGlzYWJsZWQ9XCJjdXJyZW50SW5kZXggPD0gMVwiXG4gICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlUHJldmlvdXNDbGlja1wiXG4gICAgLz5cblxuICAgIDx1bCA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuTElTVF9CVUxMRVRTLk9GRl1cIj5cbiAgICAgIDxsaVxuICAgICAgICA6a2V5PVwicGFnaW5hdGlvbkJ1dHRvblwiXG4gICAgICAgIHYtZm9yPVwicGFnaW5hdGlvbkJ1dHRvbiBpbiBwYWdpbmF0aW9uQnV0dG9uc1wiXG4gICAgICA+XG4gICAgICAgIDxUaWRlQnV0dG9uUGFnaW5hdGlvblxuICAgICAgICAgIDpkaXNhYmxlZD1cImN1cnJlbnRJbmRleCA9PT0gcGFnaW5hdGlvbkJ1dHRvblwiXG4gICAgICAgICAgOmxhYmVsPVwicGFnaW5hdGlvbkJ1dHRvblwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2socGFnaW5hdGlvbkJ1dHRvbilcIlxuICAgICAgICAvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuXG4gICAgPFRpZGVCdXR0b25JY29uXG4gICAgICA6ZGlzYWJsZWQ9XCJjdXJyZW50SW5kZXggPj0gcGFnaW5hdGlvbkJ1dHRvbnNbcGFnaW5hdGlvbkJ1dHRvbnMubGVuZ3RoIC0gMV1cIlxuICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVOZXh0Q2xpY2tcIlxuICAgIC8+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG4iLCIvKipcbiAqIEN1c3RvbSBwb3NpdGlvbmluZyByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy92aXJ0dWFsLWVsZW1lbnRzXG4gKi9cblxuY29uc3Qgc2lkZXMgPSBbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddO1xuY29uc3QgYWxpZ25tZW50cyA9IFsnc3RhcnQnLCAnZW5kJ107XG5jb25zdCBwbGFjZW1lbnRzID0gLyojX19QVVJFX18qL3NpZGVzLnJlZHVjZSgoYWNjLCBzaWRlKSA9PiBhY2MuY29uY2F0KHNpZGUsIHNpZGUgKyBcIi1cIiArIGFsaWdubWVudHNbMF0sIHNpZGUgKyBcIi1cIiArIGFsaWdubWVudHNbMV0pLCBbXSk7XG5jb25zdCBtaW4gPSBNYXRoLm1pbjtcbmNvbnN0IG1heCA9IE1hdGgubWF4O1xuY29uc3Qgcm91bmQgPSBNYXRoLnJvdW5kO1xuY29uc3QgZmxvb3IgPSBNYXRoLmZsb29yO1xuY29uc3QgY3JlYXRlQ29vcmRzID0gdiA9PiAoe1xuICB4OiB2LFxuICB5OiB2XG59KTtcbmNvbnN0IG9wcG9zaXRlU2lkZU1hcCA9IHtcbiAgbGVmdDogJ3JpZ2h0JyxcbiAgcmlnaHQ6ICdsZWZ0JyxcbiAgYm90dG9tOiAndG9wJyxcbiAgdG9wOiAnYm90dG9tJ1xufTtcbmNvbnN0IG9wcG9zaXRlQWxpZ25tZW50TWFwID0ge1xuICBzdGFydDogJ2VuZCcsXG4gIGVuZDogJ3N0YXJ0J1xufTtcbmZ1bmN0aW9uIGNsYW1wKHN0YXJ0LCB2YWx1ZSwgZW5kKSB7XG4gIHJldHVybiBtYXgoc3RhcnQsIG1pbih2YWx1ZSwgZW5kKSk7XG59XG5mdW5jdGlvbiBldmFsdWF0ZSh2YWx1ZSwgcGFyYW0pIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlKHBhcmFtKSA6IHZhbHVlO1xufVxuZnVuY3Rpb24gZ2V0U2lkZShwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzBdO1xufVxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMV07XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3gnID8gJ3knIDogJ3gnO1xufVxuZnVuY3Rpb24gZ2V0QXhpc0xlbmd0aChheGlzKSB7XG4gIHJldHVybiBheGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG59XG5mdW5jdGlvbiBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIFsndG9wJywgJ2JvdHRvbSddLmluY2x1ZGVzKGdldFNpZGUocGxhY2VtZW50KSkgPyAneScgOiAneCc7XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCkge1xuICByZXR1cm4gZ2V0T3Bwb3NpdGVBeGlzKGdldFNpZGVBeGlzKHBsYWNlbWVudCkpO1xufVxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50U2lkZXMocGxhY2VtZW50LCByZWN0cywgcnRsKSB7XG4gIGlmIChydGwgPT09IHZvaWQgMCkge1xuICAgIHJ0bCA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbm1lbnRBeGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICBjb25zdCBsZW5ndGggPSBnZXRBeGlzTGVuZ3RoKGFsaWdubWVudEF4aXMpO1xuICBsZXQgbWFpbkFsaWdubWVudFNpZGUgPSBhbGlnbm1lbnRBeGlzID09PSAneCcgPyBhbGlnbm1lbnQgPT09IChydGwgPyAnZW5kJyA6ICdzdGFydCcpID8gJ3JpZ2h0JyA6ICdsZWZ0JyA6IGFsaWdubWVudCA9PT0gJ3N0YXJ0JyA/ICdib3R0b20nIDogJ3RvcCc7XG4gIGlmIChyZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSA+IHJlY3RzLmZsb2F0aW5nW2xlbmd0aF0pIHtcbiAgICBtYWluQWxpZ25tZW50U2lkZSA9IGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5BbGlnbm1lbnRTaWRlKTtcbiAgfVxuICByZXR1cm4gW21haW5BbGlnbm1lbnRTaWRlLCBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluQWxpZ25tZW50U2lkZSldO1xufVxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKHBsYWNlbWVudCkge1xuICBjb25zdCBvcHBvc2l0ZVBsYWNlbWVudCA9IGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHJldHVybiBbZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSwgb3Bwb3NpdGVQbGFjZW1lbnQsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KG9wcG9zaXRlUGxhY2VtZW50KV07XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9zdGFydHxlbmQvZywgYWxpZ25tZW50ID0+IG9wcG9zaXRlQWxpZ25tZW50TWFwW2FsaWdubWVudF0pO1xufVxuZnVuY3Rpb24gZ2V0U2lkZUxpc3Qoc2lkZSwgaXNTdGFydCwgcnRsKSB7XG4gIGNvbnN0IGxyID0gWydsZWZ0JywgJ3JpZ2h0J107XG4gIGNvbnN0IHJsID0gWydyaWdodCcsICdsZWZ0J107XG4gIGNvbnN0IHRiID0gWyd0b3AnLCAnYm90dG9tJ107XG4gIGNvbnN0IGJ0ID0gWydib3R0b20nLCAndG9wJ107XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGlmIChydGwpIHJldHVybiBpc1N0YXJ0ID8gcmwgOiBscjtcbiAgICAgIHJldHVybiBpc1N0YXJ0ID8gbHIgOiBybDtcbiAgICBjYXNlICdsZWZ0JzpcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICByZXR1cm4gaXNTdGFydCA/IHRiIDogYnQ7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBbXTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cyhwbGFjZW1lbnQsIGZsaXBBbGlnbm1lbnQsIGRpcmVjdGlvbiwgcnRsKSB7XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBsZXQgbGlzdCA9IGdldFNpZGVMaXN0KGdldFNpZGUocGxhY2VtZW50KSwgZGlyZWN0aW9uID09PSAnc3RhcnQnLCBydGwpO1xuICBpZiAoYWxpZ25tZW50KSB7XG4gICAgbGlzdCA9IGxpc3QubWFwKHNpZGUgPT4gc2lkZSArIFwiLVwiICsgYWxpZ25tZW50KTtcbiAgICBpZiAoZmxpcEFsaWdubWVudCkge1xuICAgICAgbGlzdCA9IGxpc3QuY29uY2F0KGxpc3QubWFwKGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBsaXN0O1xufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvbGVmdHxyaWdodHxib3R0b218dG9wL2csIHNpZGUgPT4gb3Bwb3NpdGVTaWRlTWFwW3NpZGVdKTtcbn1cbmZ1bmN0aW9uIGV4cGFuZFBhZGRpbmdPYmplY3QocGFkZGluZykge1xuICByZXR1cm4ge1xuICAgIHRvcDogMCxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgICAuLi5wYWRkaW5nXG4gIH07XG59XG5mdW5jdGlvbiBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IGV4cGFuZFBhZGRpbmdPYmplY3QocGFkZGluZykgOiB7XG4gICAgdG9wOiBwYWRkaW5nLFxuICAgIHJpZ2h0OiBwYWRkaW5nLFxuICAgIGJvdHRvbTogcGFkZGluZyxcbiAgICBsZWZ0OiBwYWRkaW5nXG4gIH07XG59XG5mdW5jdGlvbiByZWN0VG9DbGllbnRSZWN0KHJlY3QpIHtcbiAgY29uc3Qge1xuICAgIHgsXG4gICAgeSxcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfSA9IHJlY3Q7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHRvcDogeSxcbiAgICBsZWZ0OiB4LFxuICAgIHJpZ2h0OiB4ICsgd2lkdGgsXG4gICAgYm90dG9tOiB5ICsgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5leHBvcnQgeyBhbGlnbm1lbnRzLCBjbGFtcCwgY3JlYXRlQ29vcmRzLCBldmFsdWF0ZSwgZXhwYW5kUGFkZGluZ09iamVjdCwgZmxvb3IsIGdldEFsaWdubWVudCwgZ2V0QWxpZ25tZW50QXhpcywgZ2V0QWxpZ25tZW50U2lkZXMsIGdldEF4aXNMZW5ndGgsIGdldEV4cGFuZGVkUGxhY2VtZW50cywgZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQsIGdldE9wcG9zaXRlQXhpcywgZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cywgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQsIGdldFBhZGRpbmdPYmplY3QsIGdldFNpZGUsIGdldFNpZGVBeGlzLCBtYXgsIG1pbiwgcGxhY2VtZW50cywgcmVjdFRvQ2xpZW50UmVjdCwgcm91bmQsIHNpZGVzIH07XG4iLCJpbXBvcnQgeyBnZXRTaWRlQXhpcywgZ2V0QWxpZ25tZW50QXhpcywgZ2V0QXhpc0xlbmd0aCwgZ2V0U2lkZSwgZ2V0QWxpZ25tZW50LCBldmFsdWF0ZSwgZ2V0UGFkZGluZ09iamVjdCwgcmVjdFRvQ2xpZW50UmVjdCwgbWluLCBjbGFtcCwgcGxhY2VtZW50cywgZ2V0QWxpZ25tZW50U2lkZXMsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50LCBnZXRPcHBvc2l0ZVBsYWNlbWVudCwgZ2V0RXhwYW5kZWRQbGFjZW1lbnRzLCBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzLCBzaWRlcywgbWF4LCBnZXRPcHBvc2l0ZUF4aXMgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuZXhwb3J0IHsgcmVjdFRvQ2xpZW50UmVjdCB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscyc7XG5cbmZ1bmN0aW9uIGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KF9yZWYsIHBsYWNlbWVudCwgcnRsKSB7XG4gIGxldCB7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nXG4gIH0gPSBfcmVmO1xuICBjb25zdCBzaWRlQXhpcyA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudEF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWduTGVuZ3RoID0gZ2V0QXhpc0xlbmd0aChhbGlnbm1lbnRBeGlzKTtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgaXNWZXJ0aWNhbCA9IHNpZGVBeGlzID09PSAneSc7XG4gIGNvbnN0IGNvbW1vblggPSByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCAvIDIgLSBmbG9hdGluZy53aWR0aCAvIDI7XG4gIGNvbnN0IGNvbW1vblkgPSByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHQgLyAyIC0gZmxvYXRpbmcuaGVpZ2h0IC8gMjtcbiAgY29uc3QgY29tbW9uQWxpZ24gPSByZWZlcmVuY2VbYWxpZ25MZW5ndGhdIC8gMiAtIGZsb2F0aW5nW2FsaWduTGVuZ3RoXSAvIDI7XG4gIGxldCBjb29yZHM7XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55IC0gZmxvYXRpbmcuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCAtIGZsb2F0aW5nLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG4gIHN3aXRjaCAoZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkpIHtcbiAgICBjYXNlICdzdGFydCc6XG4gICAgICBjb29yZHNbYWxpZ25tZW50QXhpc10gLT0gY29tbW9uQWxpZ24gKiAocnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZW5kJzpcbiAgICAgIGNvb3Jkc1thbGlnbm1lbnRBeGlzXSArPSBjb21tb25BbGlnbiAqIChydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMSk7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gY29vcmRzO1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnRcbiAqIG5leHQgdG8gYSBnaXZlbiByZWZlcmVuY2UgZWxlbWVudC5cbiAqXG4gKiBUaGlzIGV4cG9ydCBkb2VzIG5vdCBoYXZlIGFueSBgcGxhdGZvcm1gIGludGVyZmFjZSBsb2dpYy4gWW91IHdpbGwgbmVlZCB0b1xuICogd3JpdGUgb25lIGZvciB0aGUgcGxhdGZvcm0geW91IGFyZSB1c2luZyBGbG9hdGluZyBVSSB3aXRoLlxuICovXG5jb25zdCBjb21wdXRlUG9zaXRpb24gPSBhc3luYyAocmVmZXJlbmNlLCBmbG9hdGluZywgY29uZmlnKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBwbGFjZW1lbnQgPSAnYm90dG9tJyxcbiAgICBzdHJhdGVneSA9ICdhYnNvbHV0ZScsXG4gICAgbWlkZGxld2FyZSA9IFtdLFxuICAgIHBsYXRmb3JtXG4gIH0gPSBjb25maWc7XG4gIGNvbnN0IHZhbGlkTWlkZGxld2FyZSA9IG1pZGRsZXdhcmUuZmlsdGVyKEJvb2xlYW4pO1xuICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGZsb2F0aW5nKSk7XG4gIGxldCByZWN0cyA9IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nLFxuICAgIHN0cmF0ZWd5XG4gIH0pO1xuICBsZXQge1xuICAgIHgsXG4gICAgeVxuICB9ID0gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQocmVjdHMsIHBsYWNlbWVudCwgcnRsKTtcbiAgbGV0IHN0YXRlZnVsUGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICBsZXQgbWlkZGxld2FyZURhdGEgPSB7fTtcbiAgbGV0IHJlc2V0Q291bnQgPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbGlkTWlkZGxld2FyZS5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHtcbiAgICAgIG5hbWUsXG4gICAgICBmblxuICAgIH0gPSB2YWxpZE1pZGRsZXdhcmVbaV07XG4gICAgY29uc3Qge1xuICAgICAgeDogbmV4dFgsXG4gICAgICB5OiBuZXh0WSxcbiAgICAgIGRhdGEsXG4gICAgICByZXNldFxuICAgIH0gPSBhd2FpdCBmbih7XG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIGluaXRpYWxQbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIHBsYWNlbWVudDogc3RhdGVmdWxQbGFjZW1lbnQsXG4gICAgICBzdHJhdGVneSxcbiAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgcmVjdHMsXG4gICAgICBwbGF0Zm9ybSxcbiAgICAgIGVsZW1lbnRzOiB7XG4gICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgZmxvYXRpbmdcbiAgICAgIH1cbiAgICB9KTtcbiAgICB4ID0gbmV4dFggIT0gbnVsbCA/IG5leHRYIDogeDtcbiAgICB5ID0gbmV4dFkgIT0gbnVsbCA/IG5leHRZIDogeTtcbiAgICBtaWRkbGV3YXJlRGF0YSA9IHtcbiAgICAgIC4uLm1pZGRsZXdhcmVEYXRhLFxuICAgICAgW25hbWVdOiB7XG4gICAgICAgIC4uLm1pZGRsZXdhcmVEYXRhW25hbWVdLFxuICAgICAgICAuLi5kYXRhXG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAocmVzZXQgJiYgcmVzZXRDb3VudCA8PSA1MCkge1xuICAgICAgcmVzZXRDb3VudCsrO1xuICAgICAgaWYgKHR5cGVvZiByZXNldCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKHJlc2V0LnBsYWNlbWVudCkge1xuICAgICAgICAgIHN0YXRlZnVsUGxhY2VtZW50ID0gcmVzZXQucGxhY2VtZW50O1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXNldC5yZWN0cykge1xuICAgICAgICAgIHJlY3RzID0gcmVzZXQucmVjdHMgPT09IHRydWUgPyBhd2FpdCBwbGF0Zm9ybS5nZXRFbGVtZW50UmVjdHMoe1xuICAgICAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICAgICAgZmxvYXRpbmcsXG4gICAgICAgICAgICBzdHJhdGVneVxuICAgICAgICAgIH0pIDogcmVzZXQucmVjdHM7XG4gICAgICAgIH1cbiAgICAgICAgKHtcbiAgICAgICAgICB4LFxuICAgICAgICAgIHlcbiAgICAgICAgfSA9IGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KHJlY3RzLCBzdGF0ZWZ1bFBsYWNlbWVudCwgcnRsKSk7XG4gICAgICB9XG4gICAgICBpID0gLTE7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHBsYWNlbWVudDogc3RhdGVmdWxQbGFjZW1lbnQsXG4gICAgc3RyYXRlZ3ksXG4gICAgbWlkZGxld2FyZURhdGFcbiAgfTtcbn07XG5cbi8qKlxuICogUmVzb2x2ZXMgd2l0aCBhbiBvYmplY3Qgb2Ygb3ZlcmZsb3cgc2lkZSBvZmZzZXRzIHRoYXQgZGV0ZXJtaW5lIGhvdyBtdWNoIHRoZVxuICogZWxlbWVudCBpcyBvdmVyZmxvd2luZyBhIGdpdmVuIGNsaXBwaW5nIGJvdW5kYXJ5IG9uIGVhY2ggc2lkZS5cbiAqIC0gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgYm91bmRhcnkgYnkgdGhhdCBudW1iZXIgb2YgcGl4ZWxzXG4gKiAtIG5lZ2F0aXZlID0gaG93IG1hbnkgcGl4ZWxzIGxlZnQgYmVmb3JlIGl0IHdpbGwgb3ZlcmZsb3dcbiAqIC0gMCA9IGxpZXMgZmx1c2ggd2l0aCB0aGUgYm91bmRhcnlcbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9kZXRlY3RPdmVyZmxvd1xuICovXG5hc3luYyBmdW5jdGlvbiBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX2F3YWl0JHBsYXRmb3JtJGlzRWxlO1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICB4LFxuICAgIHksXG4gICAgcGxhdGZvcm0sXG4gICAgcmVjdHMsXG4gICAgZWxlbWVudHMsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IHN0YXRlO1xuICBjb25zdCB7XG4gICAgYm91bmRhcnkgPSAnY2xpcHBpbmdBbmNlc3RvcnMnLFxuICAgIHJvb3RCb3VuZGFyeSA9ICd2aWV3cG9ydCcsXG4gICAgZWxlbWVudENvbnRleHQgPSAnZmxvYXRpbmcnLFxuICAgIGFsdEJvdW5kYXJ5ID0gZmFsc2UsXG4gICAgcGFkZGluZyA9IDBcbiAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gIGNvbnN0IGFsdENvbnRleHQgPSBlbGVtZW50Q29udGV4dCA9PT0gJ2Zsb2F0aW5nJyA/ICdyZWZlcmVuY2UnIDogJ2Zsb2F0aW5nJztcbiAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRzW2FsdEJvdW5kYXJ5ID8gYWx0Q29udGV4dCA6IGVsZW1lbnRDb250ZXh0XTtcbiAgY29uc3QgY2xpcHBpbmdDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChhd2FpdCBwbGF0Zm9ybS5nZXRDbGlwcGluZ1JlY3Qoe1xuICAgIGVsZW1lbnQ6ICgoX2F3YWl0JHBsYXRmb3JtJGlzRWxlID0gYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KGVsZW1lbnQpKSkgIT0gbnVsbCA/IF9hd2FpdCRwbGF0Zm9ybSRpc0VsZSA6IHRydWUpID8gZWxlbWVudCA6IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgfHwgKGF3YWl0IChwbGF0Zm9ybS5nZXREb2N1bWVudEVsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldERvY3VtZW50RWxlbWVudChlbGVtZW50cy5mbG9hdGluZykpKSxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSkpO1xuICBjb25zdCByZWN0ID0gZWxlbWVudENvbnRleHQgPT09ICdmbG9hdGluZycgPyB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiByZWN0cy5mbG9hdGluZy53aWR0aCxcbiAgICBoZWlnaHQ6IHJlY3RzLmZsb2F0aW5nLmhlaWdodFxuICB9IDogcmVjdHMucmVmZXJlbmNlO1xuICBjb25zdCBvZmZzZXRQYXJlbnQgPSBhd2FpdCAocGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgY29uc3Qgb2Zmc2V0U2NhbGUgPSAoYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KG9mZnNldFBhcmVudCkpKSA/IChhd2FpdCAocGxhdGZvcm0uZ2V0U2NhbGUgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldFNjYWxlKG9mZnNldFBhcmVudCkpKSB8fCB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH0gOiB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH07XG4gIGNvbnN0IGVsZW1lbnRDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChwbGF0Zm9ybS5jb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCA/IGF3YWl0IHBsYXRmb3JtLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0KHtcbiAgICBlbGVtZW50cyxcbiAgICByZWN0LFxuICAgIG9mZnNldFBhcmVudCxcbiAgICBzdHJhdGVneVxuICB9KSA6IHJlY3QpO1xuICByZXR1cm4ge1xuICAgIHRvcDogKGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCkgLyBvZmZzZXRTY2FsZS55LFxuICAgIGJvdHRvbTogKGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSkgLyBvZmZzZXRTY2FsZS55LFxuICAgIGxlZnQ6IChjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQpIC8gb2Zmc2V0U2NhbGUueCxcbiAgICByaWdodDogKGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodCkgLyBvZmZzZXRTY2FsZS54XG4gIH07XG59XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHNvIHRoYXQgaXRcbiAqIGFwcGVhcnMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2Fycm93XG4gKi9cbmNvbnN0IGFycm93ID0gb3B0aW9ucyA9PiAoe1xuICBuYW1lOiAnYXJyb3cnLFxuICBvcHRpb25zLFxuICBhc3luYyBmbihzdGF0ZSkge1xuICAgIGNvbnN0IHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgcGxhY2VtZW50LFxuICAgICAgcmVjdHMsXG4gICAgICBwbGF0Zm9ybSxcbiAgICAgIGVsZW1lbnRzLFxuICAgICAgbWlkZGxld2FyZURhdGFcbiAgICB9ID0gc3RhdGU7XG4gICAgLy8gU2luY2UgYGVsZW1lbnRgIGlzIHJlcXVpcmVkLCB3ZSBkb24ndCBQYXJ0aWFsPD4gdGhlIHR5cGUuXG4gICAgY29uc3Qge1xuICAgICAgZWxlbWVudCxcbiAgICAgIHBhZGRpbmcgPSAwXG4gICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKSB8fCB7fTtcbiAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IHBhZGRpbmdPYmplY3QgPSBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpO1xuICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgIHgsXG4gICAgICB5XG4gICAgfTtcbiAgICBjb25zdCBheGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICAgIGNvbnN0IGxlbmd0aCA9IGdldEF4aXNMZW5ndGgoYXhpcyk7XG4gICAgY29uc3QgYXJyb3dEaW1lbnNpb25zID0gYXdhaXQgcGxhdGZvcm0uZ2V0RGltZW5zaW9ucyhlbGVtZW50KTtcbiAgICBjb25zdCBpc1lBeGlzID0gYXhpcyA9PT0gJ3knO1xuICAgIGNvbnN0IG1pblByb3AgPSBpc1lBeGlzID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgY29uc3QgbWF4UHJvcCA9IGlzWUF4aXMgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgY29uc3QgY2xpZW50UHJvcCA9IGlzWUF4aXMgPyAnY2xpZW50SGVpZ2h0JyA6ICdjbGllbnRXaWR0aCc7XG4gICAgY29uc3QgZW5kRGlmZiA9IHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdICsgcmVjdHMucmVmZXJlbmNlW2F4aXNdIC0gY29vcmRzW2F4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXTtcbiAgICBjb25zdCBzdGFydERpZmYgPSBjb29yZHNbYXhpc10gLSByZWN0cy5yZWZlcmVuY2VbYXhpc107XG4gICAgY29uc3QgYXJyb3dPZmZzZXRQYXJlbnQgPSBhd2FpdCAocGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQoZWxlbWVudCkpO1xuICAgIGxldCBjbGllbnRTaXplID0gYXJyb3dPZmZzZXRQYXJlbnQgPyBhcnJvd09mZnNldFBhcmVudFtjbGllbnRQcm9wXSA6IDA7XG5cbiAgICAvLyBET00gcGxhdGZvcm0gY2FuIHJldHVybiBgd2luZG93YCBhcyB0aGUgYG9mZnNldFBhcmVudGAuXG4gICAgaWYgKCFjbGllbnRTaXplIHx8ICEoYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KGFycm93T2Zmc2V0UGFyZW50KSkpKSB7XG4gICAgICBjbGllbnRTaXplID0gZWxlbWVudHMuZmxvYXRpbmdbY2xpZW50UHJvcF0gfHwgcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXTtcbiAgICB9XG4gICAgY29uc3QgY2VudGVyVG9SZWZlcmVuY2UgPSBlbmREaWZmIC8gMiAtIHN0YXJ0RGlmZiAvIDI7XG5cbiAgICAvLyBJZiB0aGUgcGFkZGluZyBpcyBsYXJnZSBlbm91Z2ggdGhhdCBpdCBjYXVzZXMgdGhlIGFycm93IHRvIG5vIGxvbmdlciBiZVxuICAgIC8vIGNlbnRlcmVkLCBtb2RpZnkgdGhlIHBhZGRpbmcgc28gdGhhdCBpdCBpcyBjZW50ZXJlZC5cbiAgICBjb25zdCBsYXJnZXN0UG9zc2libGVQYWRkaW5nID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgLSAxO1xuICAgIGNvbnN0IG1pblBhZGRpbmcgPSBtaW4ocGFkZGluZ09iamVjdFttaW5Qcm9wXSwgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyk7XG4gICAgY29uc3QgbWF4UGFkZGluZyA9IG1pbihwYWRkaW5nT2JqZWN0W21heFByb3BdLCBsYXJnZXN0UG9zc2libGVQYWRkaW5nKTtcblxuICAgIC8vIE1ha2Ugc3VyZSB0aGUgYXJyb3cgZG9lc24ndCBvdmVyZmxvdyB0aGUgZmxvYXRpbmcgZWxlbWVudCBpZiB0aGUgY2VudGVyXG4gICAgLy8gcG9pbnQgaXMgb3V0c2lkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCdzIGJvdW5kcy5cbiAgICBjb25zdCBtaW4kMSA9IG1pblBhZGRpbmc7XG4gICAgY29uc3QgbWF4ID0gY2xpZW50U2l6ZSAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC0gbWF4UGFkZGluZztcbiAgICBjb25zdCBjZW50ZXIgPSBjbGllbnRTaXplIC8gMiAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiArIGNlbnRlclRvUmVmZXJlbmNlO1xuICAgIGNvbnN0IG9mZnNldCA9IGNsYW1wKG1pbiQxLCBjZW50ZXIsIG1heCk7XG5cbiAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIHNtYWxsIGVub3VnaCB0aGF0IHRoZSBhcnJvdydzIHBhZGRpbmcgY2F1c2VzIGl0IHRvXG4gICAgLy8gdG8gcG9pbnQgdG8gbm90aGluZyBmb3IgYW4gYWxpZ25lZCBwbGFjZW1lbnQsIGFkanVzdCB0aGUgb2Zmc2V0IG9mIHRoZVxuICAgIC8vIGZsb2F0aW5nIGVsZW1lbnQgaXRzZWxmLiBUbyBlbnN1cmUgYHNoaWZ0KClgIGNvbnRpbnVlcyB0byB0YWtlIGFjdGlvbixcbiAgICAvLyBhIHNpbmdsZSByZXNldCBpcyBwZXJmb3JtZWQgd2hlbiB0aGlzIGlzIHRydWUuXG4gICAgY29uc3Qgc2hvdWxkQWRkT2Zmc2V0ID0gIW1pZGRsZXdhcmVEYXRhLmFycm93ICYmIGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9IG51bGwgJiYgY2VudGVyICE9PSBvZmZzZXQgJiYgcmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gLyAyIC0gKGNlbnRlciA8IG1pbiQxID8gbWluUGFkZGluZyA6IG1heFBhZGRpbmcpIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyIDwgMDtcbiAgICBjb25zdCBhbGlnbm1lbnRPZmZzZXQgPSBzaG91bGRBZGRPZmZzZXQgPyBjZW50ZXIgPCBtaW4kMSA/IGNlbnRlciAtIG1pbiQxIDogY2VudGVyIC0gbWF4IDogMDtcbiAgICByZXR1cm4ge1xuICAgICAgW2F4aXNdOiBjb29yZHNbYXhpc10gKyBhbGlnbm1lbnRPZmZzZXQsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIFtheGlzXTogb2Zmc2V0LFxuICAgICAgICBjZW50ZXJPZmZzZXQ6IGNlbnRlciAtIG9mZnNldCAtIGFsaWdubWVudE9mZnNldCxcbiAgICAgICAgLi4uKHNob3VsZEFkZE9mZnNldCAmJiB7XG4gICAgICAgICAgYWxpZ25tZW50T2Zmc2V0XG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgICAgcmVzZXQ6IHNob3VsZEFkZE9mZnNldFxuICAgIH07XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBnZXRQbGFjZW1lbnRMaXN0KGFsaWdubWVudCwgYXV0b0FsaWdubWVudCwgYWxsb3dlZFBsYWNlbWVudHMpIHtcbiAgY29uc3QgYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudCA9IGFsaWdubWVudCA/IFsuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpID09PSBhbGlnbm1lbnQpLCAuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9PSBhbGlnbm1lbnQpXSA6IGFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0U2lkZShwbGFjZW1lbnQpID09PSBwbGFjZW1lbnQpO1xuICByZXR1cm4gYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudC5maWx0ZXIocGxhY2VtZW50ID0+IHtcbiAgICBpZiAoYWxpZ25tZW50KSB7XG4gICAgICByZXR1cm4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgPT09IGFsaWdubWVudCB8fCAoYXV0b0FsaWdubWVudCA/IGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCkgIT09IHBsYWNlbWVudCA6IGZhbHNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufVxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgY2hvb3NpbmcgdGhlIHBsYWNlbWVudFxuICogdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgbmVlZGluZyB0byBzcGVjaWZ5IGFcbiAqIHByZWZlcnJlZCBwbGFjZW1lbnQuIEFsdGVybmF0aXZlIHRvIGBmbGlwYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvUGxhY2VtZW50XG4gKi9cbmNvbnN0IGF1dG9QbGFjZW1lbnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2F1dG9QbGFjZW1lbnQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkYXV0b1AsIF9taWRkbGV3YXJlRGF0YSRhdXRvUDIsIF9wbGFjZW1lbnRzVGhhdEZpdE9uRTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBjcm9zc0F4aXMgPSBmYWxzZSxcbiAgICAgICAgYWxpZ25tZW50LFxuICAgICAgICBhbGxvd2VkUGxhY2VtZW50cyA9IHBsYWNlbWVudHMsXG4gICAgICAgIGF1dG9BbGlnbm1lbnQgPSB0cnVlLFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBwbGFjZW1lbnRzJDEgPSBhbGlnbm1lbnQgIT09IHVuZGVmaW5lZCB8fCBhbGxvd2VkUGxhY2VtZW50cyA9PT0gcGxhY2VtZW50cyA/IGdldFBsYWNlbWVudExpc3QoYWxpZ25tZW50IHx8IG51bGwsIGF1dG9BbGlnbm1lbnQsIGFsbG93ZWRQbGFjZW1lbnRzKSA6IGFsbG93ZWRQbGFjZW1lbnRzO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9ICgoX21pZGRsZXdhcmVEYXRhJGF1dG9QID0gbWlkZGxld2FyZURhdGEuYXV0b1BsYWNlbWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhdXRvUC5pbmRleCkgfHwgMDtcbiAgICAgIGNvbnN0IGN1cnJlbnRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzJDFbY3VycmVudEluZGV4XTtcbiAgICAgIGlmIChjdXJyZW50UGxhY2VtZW50ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgY29uc3QgYWxpZ25tZW50U2lkZXMgPSBnZXRBbGlnbm1lbnRTaWRlcyhjdXJyZW50UGxhY2VtZW50LCByZWN0cywgYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpKTtcblxuICAgICAgLy8gTWFrZSBgY29tcHV0ZUNvb3Jkc2Agc3RhcnQgZnJvbSB0aGUgcmlnaHQgcGxhY2UuXG4gICAgICBpZiAocGxhY2VtZW50ICE9PSBjdXJyZW50UGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50cyQxWzBdXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgY3VycmVudE92ZXJmbG93cyA9IFtvdmVyZmxvd1tnZXRTaWRlKGN1cnJlbnRQbGFjZW1lbnQpXSwgb3ZlcmZsb3dbYWxpZ25tZW50U2lkZXNbMF1dLCBvdmVyZmxvd1thbGlnbm1lbnRTaWRlc1sxXV1dO1xuICAgICAgY29uc3QgYWxsT3ZlcmZsb3dzID0gWy4uLigoKF9taWRkbGV3YXJlRGF0YSRhdXRvUDIgPSBtaWRkbGV3YXJlRGF0YS5hdXRvUGxhY2VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGF1dG9QMi5vdmVyZmxvd3MpIHx8IFtdKSwge1xuICAgICAgICBwbGFjZW1lbnQ6IGN1cnJlbnRQbGFjZW1lbnQsXG4gICAgICAgIG92ZXJmbG93czogY3VycmVudE92ZXJmbG93c1xuICAgICAgfV07XG4gICAgICBjb25zdCBuZXh0UGxhY2VtZW50ID0gcGxhY2VtZW50cyQxW2N1cnJlbnRJbmRleCArIDFdO1xuXG4gICAgICAvLyBUaGVyZSBhcmUgbW9yZSBwbGFjZW1lbnRzIHRvIGNoZWNrLlxuICAgICAgaWYgKG5leHRQbGFjZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBpbmRleDogY3VycmVudEluZGV4ICsgMSxcbiAgICAgICAgICAgIG92ZXJmbG93czogYWxsT3ZlcmZsb3dzXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcGxhY2VtZW50OiBuZXh0UGxhY2VtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgcGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlID0gYWxsT3ZlcmZsb3dzLm1hcChkID0+IHtcbiAgICAgICAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KGQucGxhY2VtZW50KTtcbiAgICAgICAgcmV0dXJuIFtkLnBsYWNlbWVudCwgYWxpZ25tZW50ICYmIGNyb3NzQXhpcyA/XG4gICAgICAgIC8vIENoZWNrIGFsb25nIHRoZSBtYWluQXhpcyBhbmQgbWFpbiBjcm9zc0F4aXMgc2lkZS5cbiAgICAgICAgZC5vdmVyZmxvd3Muc2xpY2UoMCwgMikucmVkdWNlKChhY2MsIHYpID0+IGFjYyArIHYsIDApIDpcbiAgICAgICAgLy8gQ2hlY2sgb25seSB0aGUgbWFpbkF4aXMuXG4gICAgICAgIGQub3ZlcmZsb3dzWzBdLCBkLm92ZXJmbG93c107XG4gICAgICB9KS5zb3J0KChhLCBiKSA9PiBhWzFdIC0gYlsxXSk7XG4gICAgICBjb25zdCBwbGFjZW1lbnRzVGhhdEZpdE9uRWFjaFNpZGUgPSBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UuZmlsdGVyKGQgPT4gZFsyXS5zbGljZSgwLFxuICAgICAgLy8gQWxpZ25lZCBwbGFjZW1lbnRzIHNob3VsZCBub3QgY2hlY2sgdGhlaXIgb3Bwb3NpdGUgY3Jvc3NBeGlzXG4gICAgICAvLyBzaWRlLlxuICAgICAgZ2V0QWxpZ25tZW50KGRbMF0pID8gMiA6IDMpLmV2ZXJ5KHYgPT4gdiA8PSAwKSk7XG4gICAgICBjb25zdCByZXNldFBsYWNlbWVudCA9ICgoX3BsYWNlbWVudHNUaGF0Rml0T25FID0gcGxhY2VtZW50c1RoYXRGaXRPbkVhY2hTaWRlWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX3BsYWNlbWVudHNUaGF0Rml0T25FWzBdKSB8fCBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2VbMF1bMF07XG4gICAgICBpZiAocmVzZXRQbGFjZW1lbnQgIT09IHBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGluZGV4OiBjdXJyZW50SW5kZXggKyAxLFxuICAgICAgICAgICAgb3ZlcmZsb3dzOiBhbGxPdmVyZmxvd3NcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IHJlc2V0UGxhY2VtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGZsaXBwaW5nIHRoZSBgcGxhY2VtZW50YFxuICogaW4gb3JkZXIgdG8ga2VlcCBpdCBpbiB2aWV3IHdoZW4gdGhlIHByZWZlcnJlZCBwbGFjZW1lbnQocykgd2lsbCBvdmVyZmxvdyB0aGVcbiAqIGNsaXBwaW5nIGJvdW5kYXJ5LiBBbHRlcm5hdGl2ZSB0byBgYXV0b1BsYWNlbWVudGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZmxpcFxuICovXG5jb25zdCBmbGlwID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdmbGlwJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJGFycm93LCBfbWlkZGxld2FyZURhdGEkZmxpcDtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBtaWRkbGV3YXJlRGF0YSxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIGluaXRpYWxQbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSB0cnVlLFxuICAgICAgICBmYWxsYmFja1BsYWNlbWVudHM6IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyxcbiAgICAgICAgZmFsbGJhY2tTdHJhdGVneSA9ICdiZXN0Rml0JyxcbiAgICAgICAgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiA9ICdub25lJyxcbiAgICAgICAgZmxpcEFsaWdubWVudCA9IHRydWUsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcblxuICAgICAgLy8gSWYgYSByZXNldCBieSB0aGUgYXJyb3cgd2FzIGNhdXNlZCBkdWUgdG8gYW4gYWxpZ25tZW50IG9mZnNldCBiZWluZ1xuICAgICAgLy8gYWRkZWQsIHdlIHNob3VsZCBza2lwIGFueSBsb2dpYyBub3cgc2luY2UgYGZsaXAoKWAgaGFzIGFscmVhZHkgZG9uZSBpdHNcbiAgICAgIC8vIHdvcmsuXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzI1NDkjaXNzdWVjb21tZW50LTE3MTk2MDE2NDNcbiAgICAgIGlmICgoX21pZGRsZXdhcmVEYXRhJGFycm93ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpICE9IG51bGwgJiYgX21pZGRsZXdhcmVEYXRhJGFycm93LmFsaWdubWVudE9mZnNldCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaW5pdGlhbFNpZGVBeGlzID0gZ2V0U2lkZUF4aXMoaW5pdGlhbFBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpc0Jhc2VQbGFjZW1lbnQgPSBnZXRTaWRlKGluaXRpYWxQbGFjZW1lbnQpID09PSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpO1xuICAgICAgY29uc3QgZmFsbGJhY2tQbGFjZW1lbnRzID0gc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzIHx8IChpc0Jhc2VQbGFjZW1lbnQgfHwgIWZsaXBBbGlnbm1lbnQgPyBbZ2V0T3Bwb3NpdGVQbGFjZW1lbnQoaW5pdGlhbFBsYWNlbWVudCldIDogZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKGluaXRpYWxQbGFjZW1lbnQpKTtcbiAgICAgIGNvbnN0IGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gPSBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uICE9PSAnbm9uZSc7XG4gICAgICBpZiAoIXNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyAmJiBoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uKSB7XG4gICAgICAgIGZhbGxiYWNrUGxhY2VtZW50cy5wdXNoKC4uLmdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMoaW5pdGlhbFBsYWNlbWVudCwgZmxpcEFsaWdubWVudCwgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiwgcnRsKSk7XG4gICAgICB9XG4gICAgICBjb25zdCBwbGFjZW1lbnRzID0gW2luaXRpYWxQbGFjZW1lbnQsIC4uLmZhbGxiYWNrUGxhY2VtZW50c107XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3dzID0gW107XG4gICAgICBsZXQgb3ZlcmZsb3dzRGF0YSA9ICgoX21pZGRsZXdhcmVEYXRhJGZsaXAgPSBtaWRkbGV3YXJlRGF0YS5mbGlwKSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGZsaXAub3ZlcmZsb3dzKSB8fCBbXTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W3NpZGVdKTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICBjb25zdCBzaWRlcyA9IGdldEFsaWdubWVudFNpZGVzKHBsYWNlbWVudCwgcmVjdHMsIHJ0bCk7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W3NpZGVzWzBdXSwgb3ZlcmZsb3dbc2lkZXNbMV1dKTtcbiAgICAgIH1cbiAgICAgIG92ZXJmbG93c0RhdGEgPSBbLi4ub3ZlcmZsb3dzRGF0YSwge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG92ZXJmbG93c1xuICAgICAgfV07XG5cbiAgICAgIC8vIE9uZSBvciBtb3JlIHNpZGVzIGlzIG92ZXJmbG93aW5nLlxuICAgICAgaWYgKCFvdmVyZmxvd3MuZXZlcnkoc2lkZSA9PiBzaWRlIDw9IDApKSB7XG4gICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkZmxpcDIsIF9vdmVyZmxvd3NEYXRhJGZpbHRlcjtcbiAgICAgICAgY29uc3QgbmV4dEluZGV4ID0gKCgoX21pZGRsZXdhcmVEYXRhJGZsaXAyID0gbWlkZGxld2FyZURhdGEuZmxpcCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRmbGlwMi5pbmRleCkgfHwgMCkgKyAxO1xuICAgICAgICBjb25zdCBuZXh0UGxhY2VtZW50ID0gcGxhY2VtZW50c1tuZXh0SW5kZXhdO1xuICAgICAgICBpZiAobmV4dFBsYWNlbWVudCkge1xuICAgICAgICAgIC8vIFRyeSBuZXh0IHBsYWNlbWVudCBhbmQgcmUtcnVuIHRoZSBsaWZlY3ljbGUuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgaW5kZXg6IG5leHRJbmRleCxcbiAgICAgICAgICAgICAgb3ZlcmZsb3dzOiBvdmVyZmxvd3NEYXRhXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiBuZXh0UGxhY2VtZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpcnN0LCBmaW5kIHRoZSBjYW5kaWRhdGVzIHRoYXQgZml0IG9uIHRoZSBtYWluQXhpcyBzaWRlIG9mIG92ZXJmbG93LFxuICAgICAgICAvLyB0aGVuIGZpbmQgdGhlIHBsYWNlbWVudCB0aGF0IGZpdHMgdGhlIGJlc3Qgb24gdGhlIG1haW4gY3Jvc3NBeGlzIHNpZGUuXG4gICAgICAgIGxldCByZXNldFBsYWNlbWVudCA9IChfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIgPSBvdmVyZmxvd3NEYXRhLmZpbHRlcihkID0+IGQub3ZlcmZsb3dzWzBdIDw9IDApLnNvcnQoKGEsIGIpID0+IGEub3ZlcmZsb3dzWzFdIC0gYi5vdmVyZmxvd3NbMV0pWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX292ZXJmbG93c0RhdGEkZmlsdGVyLnBsYWNlbWVudDtcblxuICAgICAgICAvLyBPdGhlcndpc2UgZmFsbGJhY2suXG4gICAgICAgIGlmICghcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICBzd2l0Y2ggKGZhbGxiYWNrU3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIGNhc2UgJ2Jlc3RGaXQnOlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmFyIF9vdmVyZmxvd3NEYXRhJGZpbHRlcjI7XG4gICAgICAgICAgICAgICAgY29uc3QgcGxhY2VtZW50ID0gKF9vdmVyZmxvd3NEYXRhJGZpbHRlcjIgPSBvdmVyZmxvd3NEYXRhLmZpbHRlcihkID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTaWRlQXhpcyA9IGdldFNpZGVBeGlzKGQucGxhY2VtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRTaWRlQXhpcyA9PT0gaW5pdGlhbFNpZGVBeGlzIHx8XG4gICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIGJpYXMgdG8gdGhlIGB5YCBzaWRlIGF4aXMgZHVlIHRvIGhvcml6b250YWxcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVhZGluZyBkaXJlY3Rpb25zIGZhdm9yaW5nIGdyZWF0ZXIgd2lkdGguXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTaWRlQXhpcyA9PT0gJ3knO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSkubWFwKGQgPT4gW2QucGxhY2VtZW50LCBkLm92ZXJmbG93cy5maWx0ZXIob3ZlcmZsb3cgPT4gb3ZlcmZsb3cgPiAwKS5yZWR1Y2UoKGFjYywgb3ZlcmZsb3cpID0+IGFjYyArIG92ZXJmbG93LCAwKV0pLnNvcnQoKGEsIGIpID0+IGFbMV0gLSBiWzFdKVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9vdmVyZmxvd3NEYXRhJGZpbHRlcjJbMF07XG4gICAgICAgICAgICAgICAgaWYgKHBsYWNlbWVudCkge1xuICAgICAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdpbml0aWFsUGxhY2VtZW50JzpcbiAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBsYWNlbWVudCAhPT0gcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiByZXNldFBsYWNlbWVudFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdCkge1xuICByZXR1cm4ge1xuICAgIHRvcDogb3ZlcmZsb3cudG9wIC0gcmVjdC5oZWlnaHQsXG4gICAgcmlnaHQ6IG92ZXJmbG93LnJpZ2h0IC0gcmVjdC53aWR0aCxcbiAgICBib3R0b206IG92ZXJmbG93LmJvdHRvbSAtIHJlY3QuaGVpZ2h0LFxuICAgIGxlZnQ6IG92ZXJmbG93LmxlZnQgLSByZWN0LndpZHRoXG4gIH07XG59XG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIHNpZGVzLnNvbWUoc2lkZSA9PiBvdmVyZmxvd1tzaWRlXSA+PSAwKTtcbn1cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdoaWRlJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHJlY3RzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHN0cmF0ZWd5ID0gJ3JlZmVyZW5jZUhpZGRlbicsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIHN3aXRjaCAoc3RyYXRlZ3kpIHtcbiAgICAgICAgY2FzZSAncmVmZXJlbmNlSGlkZGVuJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgZWxlbWVudENvbnRleHQ6ICdyZWZlcmVuY2UnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdHMucmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VIaWRkZW5PZmZzZXRzOiBvZmZzZXRzLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhpZGRlbjogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICdlc2NhcGVkJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgYWx0Qm91bmRhcnk6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0cy5mbG9hdGluZyk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZXNjYXBlZE9mZnNldHM6IG9mZnNldHMsXG4gICAgICAgICAgICAgICAgZXNjYXBlZDogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdSZWN0KHJlY3RzKSB7XG4gIGNvbnN0IG1pblggPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5sZWZ0KSk7XG4gIGNvbnN0IG1pblkgPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC50b3ApKTtcbiAgY29uc3QgbWF4WCA9IG1heCguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LnJpZ2h0KSk7XG4gIGNvbnN0IG1heFkgPSBtYXgoLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5ib3R0b20pKTtcbiAgcmV0dXJuIHtcbiAgICB4OiBtaW5YLFxuICAgIHk6IG1pblksXG4gICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgIGhlaWdodDogbWF4WSAtIG1pbllcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFJlY3RzQnlMaW5lKHJlY3RzKSB7XG4gIGNvbnN0IHNvcnRlZFJlY3RzID0gcmVjdHMuc2xpY2UoKS5zb3J0KChhLCBiKSA9PiBhLnkgLSBiLnkpO1xuICBjb25zdCBncm91cHMgPSBbXTtcbiAgbGV0IHByZXZSZWN0ID0gbnVsbDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3J0ZWRSZWN0cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHJlY3QgPSBzb3J0ZWRSZWN0c1tpXTtcbiAgICBpZiAoIXByZXZSZWN0IHx8IHJlY3QueSAtIHByZXZSZWN0LnkgPiBwcmV2UmVjdC5oZWlnaHQgLyAyKSB7XG4gICAgICBncm91cHMucHVzaChbcmVjdF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBncm91cHNbZ3JvdXBzLmxlbmd0aCAtIDFdLnB1c2gocmVjdCk7XG4gICAgfVxuICAgIHByZXZSZWN0ID0gcmVjdDtcbiAgfVxuICByZXR1cm4gZ3JvdXBzLm1hcChyZWN0ID0+IHJlY3RUb0NsaWVudFJlY3QoZ2V0Qm91bmRpbmdSZWN0KHJlY3QpKSk7XG59XG4vKipcbiAqIFByb3ZpZGVzIGltcHJvdmVkIHBvc2l0aW9uaW5nIGZvciBpbmxpbmUgcmVmZXJlbmNlIGVsZW1lbnRzIHRoYXQgY2FuIHNwYW5cbiAqIG92ZXIgbXVsdGlwbGUgbGluZXMsIHN1Y2ggYXMgaHlwZXJsaW5rcyBvciByYW5nZSBzZWxlY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubGluZVxuICovXG5jb25zdCBpbmxpbmUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2lubGluZScsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIGVsZW1lbnRzLFxuICAgICAgICByZWN0cyxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIHN0cmF0ZWd5XG4gICAgICB9ID0gc3RhdGU7XG4gICAgICAvLyBBIE1vdXNlRXZlbnQncyBjbGllbnR7WCxZfSBjb29yZHMgY2FuIGJlIHVwIHRvIDIgcGl4ZWxzIG9mZiBhXG4gICAgICAvLyBDbGllbnRSZWN0J3MgYm91bmRzLCBkZXNwaXRlIHRoZSBldmVudCBsaXN0ZW5lciBiZWluZyB0cmlnZ2VyZWQuIEFcbiAgICAgIC8vIHBhZGRpbmcgb2YgMiBzZWVtcyB0byBoYW5kbGUgdGhpcyBpc3N1ZS5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGFkZGluZyA9IDIsXG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBuYXRpdmVDbGllbnRSZWN0cyA9IEFycmF5LmZyb20oKGF3YWl0IChwbGF0Zm9ybS5nZXRDbGllbnRSZWN0cyA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0Q2xpZW50UmVjdHMoZWxlbWVudHMucmVmZXJlbmNlKSkpIHx8IFtdKTtcbiAgICAgIGNvbnN0IGNsaWVudFJlY3RzID0gZ2V0UmVjdHNCeUxpbmUobmF0aXZlQ2xpZW50UmVjdHMpO1xuICAgICAgY29uc3QgZmFsbGJhY2sgPSByZWN0VG9DbGllbnRSZWN0KGdldEJvdW5kaW5nUmVjdChuYXRpdmVDbGllbnRSZWN0cykpO1xuICAgICAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gICAgICBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSB7XG4gICAgICAgIC8vIFRoZXJlIGFyZSB0d28gcmVjdHMgYW5kIHRoZXkgYXJlIGRpc2pvaW5lZC5cbiAgICAgICAgaWYgKGNsaWVudFJlY3RzLmxlbmd0aCA9PT0gMiAmJiBjbGllbnRSZWN0c1swXS5sZWZ0ID4gY2xpZW50UmVjdHNbMV0ucmlnaHQgJiYgeCAhPSBudWxsICYmIHkgIT0gbnVsbCkge1xuICAgICAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IHJlY3QgaW4gd2hpY2ggdGhlIHBvaW50IGlzIGZ1bGx5IGluc2lkZS5cbiAgICAgICAgICByZXR1cm4gY2xpZW50UmVjdHMuZmluZChyZWN0ID0+IHggPiByZWN0LmxlZnQgLSBwYWRkaW5nT2JqZWN0LmxlZnQgJiYgeCA8IHJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0ICYmIHkgPiByZWN0LnRvcCAtIHBhZGRpbmdPYmplY3QudG9wICYmIHkgPCByZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tKSB8fCBmYWxsYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZXJlIGFyZSAyIG9yIG1vcmUgY29ubmVjdGVkIHJlY3RzLlxuICAgICAgICBpZiAoY2xpZW50UmVjdHMubGVuZ3RoID49IDIpIHtcbiAgICAgICAgICBpZiAoZ2V0U2lkZUF4aXMocGxhY2VtZW50KSA9PT0gJ3knKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFJlY3QgPSBjbGllbnRSZWN0c1swXTtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RSZWN0ID0gY2xpZW50UmVjdHNbY2xpZW50UmVjdHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBjb25zdCBpc1RvcCA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ3RvcCc7XG4gICAgICAgICAgICBjb25zdCB0b3AgPSBmaXJzdFJlY3QudG9wO1xuICAgICAgICAgICAgY29uc3QgYm90dG9tID0gbGFzdFJlY3QuYm90dG9tO1xuICAgICAgICAgICAgY29uc3QgbGVmdCA9IGlzVG9wID8gZmlyc3RSZWN0LmxlZnQgOiBsYXN0UmVjdC5sZWZ0O1xuICAgICAgICAgICAgY29uc3QgcmlnaHQgPSBpc1RvcCA/IGZpcnN0UmVjdC5yaWdodCA6IGxhc3RSZWN0LnJpZ2h0O1xuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSByaWdodCAtIGxlZnQ7XG4gICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBib3R0b20gLSB0b3A7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICAgIGJvdHRvbSxcbiAgICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICAgIHg6IGxlZnQsXG4gICAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaXNMZWZ0U2lkZSA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ2xlZnQnO1xuICAgICAgICAgIGNvbnN0IG1heFJpZ2h0ID0gbWF4KC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QucmlnaHQpKTtcbiAgICAgICAgICBjb25zdCBtaW5MZWZ0ID0gbWluKC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QubGVmdCkpO1xuICAgICAgICAgIGNvbnN0IG1lYXN1cmVSZWN0cyA9IGNsaWVudFJlY3RzLmZpbHRlcihyZWN0ID0+IGlzTGVmdFNpZGUgPyByZWN0LmxlZnQgPT09IG1pbkxlZnQgOiByZWN0LnJpZ2h0ID09PSBtYXhSaWdodCk7XG4gICAgICAgICAgY29uc3QgdG9wID0gbWVhc3VyZVJlY3RzWzBdLnRvcDtcbiAgICAgICAgICBjb25zdCBib3R0b20gPSBtZWFzdXJlUmVjdHNbbWVhc3VyZVJlY3RzLmxlbmd0aCAtIDFdLmJvdHRvbTtcbiAgICAgICAgICBjb25zdCBsZWZ0ID0gbWluTGVmdDtcbiAgICAgICAgICBjb25zdCByaWdodCA9IG1heFJpZ2h0O1xuICAgICAgICAgIGNvbnN0IHdpZHRoID0gcmlnaHQgLSBsZWZ0O1xuICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wLFxuICAgICAgICAgICAgYm90dG9tLFxuICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgIHJpZ2h0LFxuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgICAgeTogdG9wXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNldFJlY3RzID0gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICAgICAgcmVmZXJlbmNlOiB7XG4gICAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0XG4gICAgICAgIH0sXG4gICAgICAgIGZsb2F0aW5nOiBlbGVtZW50cy5mbG9hdGluZyxcbiAgICAgICAgc3RyYXRlZ3lcbiAgICAgIH0pO1xuICAgICAgaWYgKHJlY3RzLnJlZmVyZW5jZS54ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS54IHx8IHJlY3RzLnJlZmVyZW5jZS55ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS55IHx8IHJlY3RzLnJlZmVyZW5jZS53aWR0aCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2Uud2lkdGggfHwgcmVjdHMucmVmZXJlbmNlLmhlaWdodCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2UuaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHJlY3RzOiByZXNldFJlY3RzXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8vIEZvciB0eXBlIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5LCB0aGUgYE9mZnNldE9wdGlvbnNgIHR5cGUgd2FzIGFsc29cbi8vIERlcml2YWJsZS5cblxuYXN5bmMgZnVuY3Rpb24gY29udmVydFZhbHVlVG9Db29yZHMoc3RhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCxcbiAgICBwbGF0Zm9ybSxcbiAgICBlbGVtZW50c1xuICB9ID0gc3RhdGU7XG4gIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGlzVmVydGljYWwgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSAneSc7XG4gIGNvbnN0IG1haW5BeGlzTXVsdGkgPSBbJ2xlZnQnLCAndG9wJ10uaW5jbHVkZXMoc2lkZSkgPyAtMSA6IDE7XG4gIGNvbnN0IGNyb3NzQXhpc011bHRpID0gcnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDE7XG4gIGNvbnN0IHJhd1ZhbHVlID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgbGV0IHtcbiAgICBtYWluQXhpcyxcbiAgICBjcm9zc0F4aXMsXG4gICAgYWxpZ25tZW50QXhpc1xuICB9ID0gdHlwZW9mIHJhd1ZhbHVlID09PSAnbnVtYmVyJyA/IHtcbiAgICBtYWluQXhpczogcmF3VmFsdWUsXG4gICAgY3Jvc3NBeGlzOiAwLFxuICAgIGFsaWdubWVudEF4aXM6IG51bGxcbiAgfSA6IHtcbiAgICBtYWluQXhpczogcmF3VmFsdWUubWFpbkF4aXMgfHwgMCxcbiAgICBjcm9zc0F4aXM6IHJhd1ZhbHVlLmNyb3NzQXhpcyB8fCAwLFxuICAgIGFsaWdubWVudEF4aXM6IHJhd1ZhbHVlLmFsaWdubWVudEF4aXNcbiAgfTtcbiAgaWYgKGFsaWdubWVudCAmJiB0eXBlb2YgYWxpZ25tZW50QXhpcyA9PT0gJ251bWJlcicpIHtcbiAgICBjcm9zc0F4aXMgPSBhbGlnbm1lbnQgPT09ICdlbmQnID8gYWxpZ25tZW50QXhpcyAqIC0xIDogYWxpZ25tZW50QXhpcztcbiAgfVxuICByZXR1cm4gaXNWZXJ0aWNhbCA/IHtcbiAgICB4OiBjcm9zc0F4aXMgKiBjcm9zc0F4aXNNdWx0aSxcbiAgICB5OiBtYWluQXhpcyAqIG1haW5BeGlzTXVsdGlcbiAgfSA6IHtcbiAgICB4OiBtYWluQXhpcyAqIG1haW5BeGlzTXVsdGksXG4gICAgeTogY3Jvc3NBeGlzICogY3Jvc3NBeGlzTXVsdGlcbiAgfTtcbn1cblxuLyoqXG4gKiBNb2RpZmllcyB0aGUgcGxhY2VtZW50IGJ5IHRyYW5zbGF0aW5nIHRoZSBmbG9hdGluZyBlbGVtZW50IGFsb25nIHRoZVxuICogc3BlY2lmaWVkIGF4ZXMuXG4gKiBBIG51bWJlciAoc2hvcnRoYW5kIGZvciBgbWFpbkF4aXNgIG9yIGRpc3RhbmNlKSwgb3IgYW4gYXhlcyBjb25maWd1cmF0aW9uXG4gKiBvYmplY3QgbWF5IGJlIHBhc3NlZC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9vZmZzZXRcbiAqL1xuY29uc3Qgb2Zmc2V0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSAwO1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ29mZnNldCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRvZmZzZSwgX21pZGRsZXdhcmVEYXRhJGFycm93O1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCBkaWZmQ29vcmRzID0gYXdhaXQgY29udmVydFZhbHVlVG9Db29yZHMoc3RhdGUsIG9wdGlvbnMpO1xuXG4gICAgICAvLyBJZiB0aGUgcGxhY2VtZW50IGlzIHRoZSBzYW1lIGFuZCB0aGUgYXJyb3cgY2F1c2VkIGFuIGFsaWdubWVudCBvZmZzZXRcbiAgICAgIC8vIHRoZW4gd2UgZG9uJ3QgbmVlZCB0byBjaGFuZ2UgdGhlIHBvc2l0aW9uaW5nIGNvb3JkaW5hdGVzLlxuICAgICAgaWYgKHBsYWNlbWVudCA9PT0gKChfbWlkZGxld2FyZURhdGEkb2Zmc2UgPSBtaWRkbGV3YXJlRGF0YS5vZmZzZXQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkb2Zmc2UucGxhY2VtZW50KSAmJiAoX21pZGRsZXdhcmVEYXRhJGFycm93ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpICE9IG51bGwgJiYgX21pZGRsZXdhcmVEYXRhJGFycm93LmFsaWdubWVudE9mZnNldCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiB4ICsgZGlmZkNvb3Jkcy54LFxuICAgICAgICB5OiB5ICsgZGlmZkNvb3Jkcy55LFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgLi4uZGlmZkNvb3JkcyxcbiAgICAgICAgICBwbGFjZW1lbnRcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBzaGlmdGluZyBpdCBpbiBvcmRlciB0b1xuICoga2VlcCBpdCBpbiB2aWV3IHdoZW4gaXQgd2lsbCBvdmVyZmxvdyB0aGUgY2xpcHBpbmcgYm91bmRhcnkuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2hpZnRcbiAqL1xuY29uc3Qgc2hpZnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3NoaWZ0JyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHBsYWNlbWVudFxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSBmYWxzZSxcbiAgICAgICAgbGltaXRlciA9IHtcbiAgICAgICAgICBmbjogX3JlZiA9PiB7XG4gICAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICB5XG4gICAgICAgICAgICB9ID0gX3JlZjtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgIHlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBjb29yZHMgPSB7XG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH07XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3QgY3Jvc3NBeGlzID0gZ2V0U2lkZUF4aXMoZ2V0U2lkZShwbGFjZW1lbnQpKTtcbiAgICAgIGNvbnN0IG1haW5BeGlzID0gZ2V0T3Bwb3NpdGVBeGlzKGNyb3NzQXhpcyk7XG4gICAgICBsZXQgbWFpbkF4aXNDb29yZCA9IGNvb3Jkc1ttYWluQXhpc107XG4gICAgICBsZXQgY3Jvc3NBeGlzQ29vcmQgPSBjb29yZHNbY3Jvc3NBeGlzXTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIGNvbnN0IG1pblNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgICAgIGNvbnN0IG1heFNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICAgICAgICBjb25zdCBtaW4gPSBtYWluQXhpc0Nvb3JkICsgb3ZlcmZsb3dbbWluU2lkZV07XG4gICAgICAgIGNvbnN0IG1heCA9IG1haW5BeGlzQ29vcmQgLSBvdmVyZmxvd1ttYXhTaWRlXTtcbiAgICAgICAgbWFpbkF4aXNDb29yZCA9IGNsYW1wKG1pbiwgbWFpbkF4aXNDb29yZCwgbWF4KTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICBjb25zdCBtaW5TaWRlID0gY3Jvc3NBeGlzID09PSAneScgPyAndG9wJyA6ICdsZWZ0JztcbiAgICAgICAgY29uc3QgbWF4U2lkZSA9IGNyb3NzQXhpcyA9PT0gJ3knID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICAgICAgICBjb25zdCBtaW4gPSBjcm9zc0F4aXNDb29yZCArIG92ZXJmbG93W21pblNpZGVdO1xuICAgICAgICBjb25zdCBtYXggPSBjcm9zc0F4aXNDb29yZCAtIG92ZXJmbG93W21heFNpZGVdO1xuICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGNsYW1wKG1pbiwgY3Jvc3NBeGlzQ29vcmQsIG1heCk7XG4gICAgICB9XG4gICAgICBjb25zdCBsaW1pdGVkQ29vcmRzID0gbGltaXRlci5mbih7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBbbWFpbkF4aXNdOiBtYWluQXhpc0Nvb3JkLFxuICAgICAgICBbY3Jvc3NBeGlzXTogY3Jvc3NBeGlzQ29vcmRcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubGltaXRlZENvb3JkcyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHg6IGxpbWl0ZWRDb29yZHMueCAtIHgsXG4gICAgICAgICAgeTogbGltaXRlZENvb3Jkcy55IC0geSxcbiAgICAgICAgICBlbmFibGVkOiB7XG4gICAgICAgICAgICBbbWFpbkF4aXNdOiBjaGVja01haW5BeGlzLFxuICAgICAgICAgICAgW2Nyb3NzQXhpc106IGNoZWNrQ3Jvc3NBeGlzXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG4vKipcbiAqIEJ1aWx0LWluIGBsaW1pdGVyYCB0aGF0IHdpbGwgc3RvcCBgc2hpZnQoKWAgYXQgYSBjZXJ0YWluIHBvaW50LlxuICovXG5jb25zdCBsaW1pdFNoaWZ0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG9wdGlvbnMsXG4gICAgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICByZWN0cyxcbiAgICAgICAgbWlkZGxld2FyZURhdGFcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgb2Zmc2V0ID0gMCxcbiAgICAgICAgbWFpbkF4aXM6IGNoZWNrTWFpbkF4aXMgPSB0cnVlLFxuICAgICAgICBjcm9zc0F4aXM6IGNoZWNrQ3Jvc3NBeGlzID0gdHJ1ZVxuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfTtcbiAgICAgIGNvbnN0IGNyb3NzQXhpcyA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBtYWluQXhpcyA9IGdldE9wcG9zaXRlQXhpcyhjcm9zc0F4aXMpO1xuICAgICAgbGV0IG1haW5BeGlzQ29vcmQgPSBjb29yZHNbbWFpbkF4aXNdO1xuICAgICAgbGV0IGNyb3NzQXhpc0Nvb3JkID0gY29vcmRzW2Nyb3NzQXhpc107XG4gICAgICBjb25zdCByYXdPZmZzZXQgPSBldmFsdWF0ZShvZmZzZXQsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvbXB1dGVkT2Zmc2V0ID0gdHlwZW9mIHJhd09mZnNldCA9PT0gJ251bWJlcicgPyB7XG4gICAgICAgIG1haW5BeGlzOiByYXdPZmZzZXQsXG4gICAgICAgIGNyb3NzQXhpczogMFxuICAgICAgfSA6IHtcbiAgICAgICAgbWFpbkF4aXM6IDAsXG4gICAgICAgIGNyb3NzQXhpczogMCxcbiAgICAgICAgLi4ucmF3T2Zmc2V0XG4gICAgICB9O1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgY29uc3QgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbiAgICAgICAgY29uc3QgbGltaXRNaW4gPSByZWN0cy5yZWZlcmVuY2VbbWFpbkF4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuXSArIGNvbXB1dGVkT2Zmc2V0Lm1haW5BeGlzO1xuICAgICAgICBjb25zdCBsaW1pdE1heCA9IHJlY3RzLnJlZmVyZW5jZVttYWluQXhpc10gKyByZWN0cy5yZWZlcmVuY2VbbGVuXSAtIGNvbXB1dGVkT2Zmc2V0Lm1haW5BeGlzO1xuICAgICAgICBpZiAobWFpbkF4aXNDb29yZCA8IGxpbWl0TWluKSB7XG4gICAgICAgICAgbWFpbkF4aXNDb29yZCA9IGxpbWl0TWluO1xuICAgICAgICB9IGVsc2UgaWYgKG1haW5BeGlzQ29vcmQgPiBsaW1pdE1heCkge1xuICAgICAgICAgIG1haW5BeGlzQ29vcmQgPSBsaW1pdE1heDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkb2Zmc2UsIF9taWRkbGV3YXJlRGF0YSRvZmZzZTI7XG4gICAgICAgIGNvbnN0IGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnd2lkdGgnIDogJ2hlaWdodCc7XG4gICAgICAgIGNvbnN0IGlzT3JpZ2luU2lkZSA9IFsndG9wJywgJ2xlZnQnXS5pbmNsdWRlcyhnZXRTaWRlKHBsYWNlbWVudCkpO1xuICAgICAgICBjb25zdCBsaW1pdE1pbiA9IHJlY3RzLnJlZmVyZW5jZVtjcm9zc0F4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuXSArIChpc09yaWdpblNpZGUgPyAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZSA9IG1pZGRsZXdhcmVEYXRhLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRvZmZzZVtjcm9zc0F4aXNdKSB8fCAwIDogMCkgKyAoaXNPcmlnaW5TaWRlID8gMCA6IGNvbXB1dGVkT2Zmc2V0LmNyb3NzQXhpcyk7XG4gICAgICAgIGNvbnN0IGxpbWl0TWF4ID0gcmVjdHMucmVmZXJlbmNlW2Nyb3NzQXhpc10gKyByZWN0cy5yZWZlcmVuY2VbbGVuXSArIChpc09yaWdpblNpZGUgPyAwIDogKChfbWlkZGxld2FyZURhdGEkb2Zmc2UyID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlMltjcm9zc0F4aXNdKSB8fCAwKSAtIChpc09yaWdpblNpZGUgPyBjb21wdXRlZE9mZnNldC5jcm9zc0F4aXMgOiAwKTtcbiAgICAgICAgaWYgKGNyb3NzQXhpc0Nvb3JkIDwgbGltaXRNaW4pIHtcbiAgICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGxpbWl0TWluO1xuICAgICAgICB9IGVsc2UgaWYgKGNyb3NzQXhpc0Nvb3JkID4gbGltaXRNYXgpIHtcbiAgICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGxpbWl0TWF4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBbbWFpbkF4aXNdOiBtYWluQXhpc0Nvb3JkLFxuICAgICAgICBbY3Jvc3NBeGlzXTogY3Jvc3NBeGlzQ29vcmRcbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRoYXQgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQg4oCUXG4gKiBmb3IgaW5zdGFuY2UsIHByZXZlbnQgaXQgZnJvbSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgYm91bmRhcnkgb3IgbWF0Y2ggdGhlXG4gKiB3aWR0aCBvZiB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2l6ZVxuICovXG5jb25zdCBzaXplID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzaXplJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX3N0YXRlJG1pZGRsZXdhcmVEYXRhLCBfc3RhdGUkbWlkZGxld2FyZURhdGEyO1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgZWxlbWVudHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYXBwbHkgPSAoKSA9PiB7fSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGlzWUF4aXMgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSAneSc7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHRcbiAgICAgIH0gPSByZWN0cy5mbG9hdGluZztcbiAgICAgIGxldCBoZWlnaHRTaWRlO1xuICAgICAgbGV0IHdpZHRoU2lkZTtcbiAgICAgIGlmIChzaWRlID09PSAndG9wJyB8fCBzaWRlID09PSAnYm90dG9tJykge1xuICAgICAgICBoZWlnaHRTaWRlID0gc2lkZTtcbiAgICAgICAgd2lkdGhTaWRlID0gYWxpZ25tZW50ID09PSAoKGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKSkgPyAnc3RhcnQnIDogJ2VuZCcpID8gJ2xlZnQnIDogJ3JpZ2h0JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdpZHRoU2lkZSA9IHNpZGU7XG4gICAgICAgIGhlaWdodFNpZGUgPSBhbGlnbm1lbnQgPT09ICdlbmQnID8gJ3RvcCcgOiAnYm90dG9tJztcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1heGltdW1DbGlwcGluZ0hlaWdodCA9IGhlaWdodCAtIG92ZXJmbG93LnRvcCAtIG92ZXJmbG93LmJvdHRvbTtcbiAgICAgIGNvbnN0IG1heGltdW1DbGlwcGluZ1dpZHRoID0gd2lkdGggLSBvdmVyZmxvdy5sZWZ0IC0gb3ZlcmZsb3cucmlnaHQ7XG4gICAgICBjb25zdCBvdmVyZmxvd0F2YWlsYWJsZUhlaWdodCA9IG1pbihoZWlnaHQgLSBvdmVyZmxvd1toZWlnaHRTaWRlXSwgbWF4aW11bUNsaXBwaW5nSGVpZ2h0KTtcbiAgICAgIGNvbnN0IG92ZXJmbG93QXZhaWxhYmxlV2lkdGggPSBtaW4od2lkdGggLSBvdmVyZmxvd1t3aWR0aFNpZGVdLCBtYXhpbXVtQ2xpcHBpbmdXaWR0aCk7XG4gICAgICBjb25zdCBub1NoaWZ0ID0gIXN0YXRlLm1pZGRsZXdhcmVEYXRhLnNoaWZ0O1xuICAgICAgbGV0IGF2YWlsYWJsZUhlaWdodCA9IG92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0O1xuICAgICAgbGV0IGF2YWlsYWJsZVdpZHRoID0gb3ZlcmZsb3dBdmFpbGFibGVXaWR0aDtcbiAgICAgIGlmICgoX3N0YXRlJG1pZGRsZXdhcmVEYXRhID0gc3RhdGUubWlkZGxld2FyZURhdGEuc2hpZnQpICE9IG51bGwgJiYgX3N0YXRlJG1pZGRsZXdhcmVEYXRhLmVuYWJsZWQueCkge1xuICAgICAgICBhdmFpbGFibGVXaWR0aCA9IG1heGltdW1DbGlwcGluZ1dpZHRoO1xuICAgICAgfVxuICAgICAgaWYgKChfc3RhdGUkbWlkZGxld2FyZURhdGEyID0gc3RhdGUubWlkZGxld2FyZURhdGEuc2hpZnQpICE9IG51bGwgJiYgX3N0YXRlJG1pZGRsZXdhcmVEYXRhMi5lbmFibGVkLnkpIHtcbiAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gbWF4aW11bUNsaXBwaW5nSGVpZ2h0O1xuICAgICAgfVxuICAgICAgaWYgKG5vU2hpZnQgJiYgIWFsaWdubWVudCkge1xuICAgICAgICBjb25zdCB4TWluID0gbWF4KG92ZXJmbG93LmxlZnQsIDApO1xuICAgICAgICBjb25zdCB4TWF4ID0gbWF4KG92ZXJmbG93LnJpZ2h0LCAwKTtcbiAgICAgICAgY29uc3QgeU1pbiA9IG1heChvdmVyZmxvdy50b3AsIDApO1xuICAgICAgICBjb25zdCB5TWF4ID0gbWF4KG92ZXJmbG93LmJvdHRvbSwgMCk7XG4gICAgICAgIGlmIChpc1lBeGlzKSB7XG4gICAgICAgICAgYXZhaWxhYmxlV2lkdGggPSB3aWR0aCAtIDIgKiAoeE1pbiAhPT0gMCB8fCB4TWF4ICE9PSAwID8geE1pbiArIHhNYXggOiBtYXgob3ZlcmZsb3cubGVmdCwgb3ZlcmZsb3cucmlnaHQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBoZWlnaHQgLSAyICogKHlNaW4gIT09IDAgfHwgeU1heCAhPT0gMCA/IHlNaW4gKyB5TWF4IDogbWF4KG92ZXJmbG93LnRvcCwgb3ZlcmZsb3cuYm90dG9tKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGF3YWl0IGFwcGx5KHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGF2YWlsYWJsZVdpZHRoLFxuICAgICAgICBhdmFpbGFibGVIZWlnaHRcbiAgICAgIH0pO1xuICAgICAgY29uc3QgbmV4dERpbWVuc2lvbnMgPSBhd2FpdCBwbGF0Zm9ybS5nZXREaW1lbnNpb25zKGVsZW1lbnRzLmZsb2F0aW5nKTtcbiAgICAgIGlmICh3aWR0aCAhPT0gbmV4dERpbWVuc2lvbnMud2lkdGggfHwgaGVpZ2h0ICE9PSBuZXh0RGltZW5zaW9ucy5oZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcmVjdHM6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBzaGlmdCwgc2l6ZSB9O1xuIiwiZnVuY3Rpb24gaGFzV2luZG93KCkge1xuICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCc7XG59XG5mdW5jdGlvbiBnZXROb2RlTmFtZShub2RlKSB7XG4gIGlmIChpc05vZGUobm9kZSkpIHtcbiAgICByZXR1cm4gKG5vZGUubm9kZU5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gIH1cbiAgLy8gTW9ja2VkIG5vZGVzIGluIHRlc3RpbmcgZW52aXJvbm1lbnRzIG1heSBub3QgYmUgaW5zdGFuY2VzIG9mIE5vZGUuIEJ5XG4gIC8vIHJldHVybmluZyBgI2RvY3VtZW50YCBhbiBpbmZpbml0ZSBsb29wIHdvbid0IG9jY3VyLlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzIzMTdcbiAgcmV0dXJuICcjZG9jdW1lbnQnO1xufVxuZnVuY3Rpb24gZ2V0V2luZG93KG5vZGUpIHtcbiAgdmFyIF9ub2RlJG93bmVyRG9jdW1lbnQ7XG4gIHJldHVybiAobm9kZSA9PSBudWxsIHx8IChfbm9kZSRvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykgfHwgd2luZG93O1xufVxuZnVuY3Rpb24gZ2V0RG9jdW1lbnRFbGVtZW50KG5vZGUpIHtcbiAgdmFyIF9yZWY7XG4gIHJldHVybiAoX3JlZiA9IChpc05vZGUobm9kZSkgPyBub2RlLm93bmVyRG9jdW1lbnQgOiBub2RlLmRvY3VtZW50KSB8fCB3aW5kb3cuZG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfcmVmLmRvY3VtZW50RWxlbWVudDtcbn1cbmZ1bmN0aW9uIGlzTm9kZSh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIE5vZGUgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLk5vZGU7XG59XG5mdW5jdGlvbiBpc0VsZW1lbnQodmFsdWUpIHtcbiAgaWYgKCFoYXNXaW5kb3coKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBFbGVtZW50IHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5FbGVtZW50O1xufVxuZnVuY3Rpb24gaXNIVE1MRWxlbWVudCh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50IHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5IVE1MRWxlbWVudDtcbn1cbmZ1bmN0aW9uIGlzU2hhZG93Um9vdCh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpIHx8IHR5cGVvZiBTaGFkb3dSb290ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBTaGFkb3dSb290IHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5TaGFkb3dSb290O1xufVxuZnVuY3Rpb24gaXNPdmVyZmxvd0VsZW1lbnQoZWxlbWVudCkge1xuICBjb25zdCB7XG4gICAgb3ZlcmZsb3csXG4gICAgb3ZlcmZsb3dYLFxuICAgIG92ZXJmbG93WSxcbiAgICBkaXNwbGF5XG4gIH0gPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICByZXR1cm4gL2F1dG98c2Nyb2xsfG92ZXJsYXl8aGlkZGVufGNsaXAvLnRlc3Qob3ZlcmZsb3cgKyBvdmVyZmxvd1kgKyBvdmVyZmxvd1gpICYmICFbJ2lubGluZScsICdjb250ZW50cyddLmluY2x1ZGVzKGRpc3BsYXkpO1xufVxuZnVuY3Rpb24gaXNUYWJsZUVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gWyd0YWJsZScsICd0ZCcsICd0aCddLmluY2x1ZGVzKGdldE5vZGVOYW1lKGVsZW1lbnQpKTtcbn1cbmZ1bmN0aW9uIGlzVG9wTGF5ZXIoZWxlbWVudCkge1xuICByZXR1cm4gWyc6cG9wb3Zlci1vcGVuJywgJzptb2RhbCddLnNvbWUoc2VsZWN0b3IgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5tYXRjaGVzKHNlbGVjdG9yKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIGlzQ29udGFpbmluZ0Jsb2NrKGVsZW1lbnRPckNzcykge1xuICBjb25zdCB3ZWJraXQgPSBpc1dlYktpdCgpO1xuICBjb25zdCBjc3MgPSBpc0VsZW1lbnQoZWxlbWVudE9yQ3NzKSA/IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudE9yQ3NzKSA6IGVsZW1lbnRPckNzcztcblxuICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ29udGFpbmluZ19ibG9jayNpZGVudGlmeWluZ190aGVfY29udGFpbmluZ19ibG9ja1xuICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRyYW5zZm9ybXMtMi8jaW5kaXZpZHVhbC10cmFuc2Zvcm1zXG4gIHJldHVybiBbJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUnLCAnc2NhbGUnLCAncm90YXRlJywgJ3BlcnNwZWN0aXZlJ10uc29tZSh2YWx1ZSA9PiBjc3NbdmFsdWVdID8gY3NzW3ZhbHVlXSAhPT0gJ25vbmUnIDogZmFsc2UpIHx8IChjc3MuY29udGFpbmVyVHlwZSA/IGNzcy5jb250YWluZXJUeXBlICE9PSAnbm9ybWFsJyA6IGZhbHNlKSB8fCAhd2Via2l0ICYmIChjc3MuYmFja2Ryb3BGaWx0ZXIgPyBjc3MuYmFja2Ryb3BGaWx0ZXIgIT09ICdub25lJyA6IGZhbHNlKSB8fCAhd2Via2l0ICYmIChjc3MuZmlsdGVyID8gY3NzLmZpbHRlciAhPT0gJ25vbmUnIDogZmFsc2UpIHx8IFsndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZScsICdzY2FsZScsICdyb3RhdGUnLCAncGVyc3BlY3RpdmUnLCAnZmlsdGVyJ10uc29tZSh2YWx1ZSA9PiAoY3NzLndpbGxDaGFuZ2UgfHwgJycpLmluY2x1ZGVzKHZhbHVlKSkgfHwgWydwYWludCcsICdsYXlvdXQnLCAnc3RyaWN0JywgJ2NvbnRlbnQnXS5zb21lKHZhbHVlID0+IChjc3MuY29udGFpbiB8fCAnJykuaW5jbHVkZXModmFsdWUpKTtcbn1cbmZ1bmN0aW9uIGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB7XG4gIGxldCBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG4gIHdoaWxlIChpc0hUTUxFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhaXNMYXN0VHJhdmVyc2FibGVOb2RlKGN1cnJlbnROb2RlKSkge1xuICAgIGlmIChpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSkpIHtcbiAgICAgIHJldHVybiBjdXJyZW50Tm9kZTtcbiAgICB9IGVsc2UgaWYgKGlzVG9wTGF5ZXIoY3VycmVudE5vZGUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGlzV2ViS2l0KCkge1xuICBpZiAodHlwZW9mIENTUyA9PT0gJ3VuZGVmaW5lZCcgfHwgIUNTUy5zdXBwb3J0cykgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gQ1NTLnN1cHBvcnRzKCctd2Via2l0LWJhY2tkcm9wLWZpbHRlcicsICdub25lJyk7XG59XG5mdW5jdGlvbiBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUobm9kZSkge1xuICByZXR1cm4gWydodG1sJywgJ2JvZHknLCAnI2RvY3VtZW50J10uaW5jbHVkZXMoZ2V0Tm9kZU5hbWUobm9kZSkpO1xufVxuZnVuY3Rpb24gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSB7XG4gIHJldHVybiBnZXRXaW5kb3coZWxlbWVudCkuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbn1cbmZ1bmN0aW9uIGdldE5vZGVTY3JvbGwoZWxlbWVudCkge1xuICBpZiAoaXNFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjcm9sbExlZnQ6IGVsZW1lbnQuc2Nyb2xsTGVmdCxcbiAgICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3BcbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxYLFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxZXG4gIH07XG59XG5mdW5jdGlvbiBnZXRQYXJlbnROb2RlKG5vZGUpIHtcbiAgaWYgKGdldE5vZGVOYW1lKG5vZGUpID09PSAnaHRtbCcpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuICBjb25zdCByZXN1bHQgPVxuICAvLyBTdGVwIGludG8gdGhlIHNoYWRvdyBET00gb2YgdGhlIHBhcmVudCBvZiBhIHNsb3R0ZWQgbm9kZS5cbiAgbm9kZS5hc3NpZ25lZFNsb3QgfHxcbiAgLy8gRE9NIEVsZW1lbnQgZGV0ZWN0ZWQuXG4gIG5vZGUucGFyZW50Tm9kZSB8fFxuICAvLyBTaGFkb3dSb290IGRldGVjdGVkLlxuICBpc1NoYWRvd1Jvb3Qobm9kZSkgJiYgbm9kZS5ob3N0IHx8XG4gIC8vIEZhbGxiYWNrLlxuICBnZXREb2N1bWVudEVsZW1lbnQobm9kZSk7XG4gIHJldHVybiBpc1NoYWRvd1Jvb3QocmVzdWx0KSA/IHJlc3VsdC5ob3N0IDogcmVzdWx0O1xufVxuZnVuY3Rpb24gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3Iobm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShub2RlKTtcbiAgaWYgKGlzTGFzdFRyYXZlcnNhYmxlTm9kZShwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBub2RlLm93bmVyRG9jdW1lbnQgPyBub2RlLm93bmVyRG9jdW1lbnQuYm9keSA6IG5vZGUuYm9keTtcbiAgfVxuICBpZiAoaXNIVE1MRWxlbWVudChwYXJlbnROb2RlKSAmJiBpc092ZXJmbG93RWxlbWVudChwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBwYXJlbnROb2RlO1xuICB9XG4gIHJldHVybiBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvcihwYXJlbnROb2RlKTtcbn1cbmZ1bmN0aW9uIGdldE92ZXJmbG93QW5jZXN0b3JzKG5vZGUsIGxpc3QsIHRyYXZlcnNlSWZyYW1lcykge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDI7XG4gIGlmIChsaXN0ID09PSB2b2lkIDApIHtcbiAgICBsaXN0ID0gW107XG4gIH1cbiAgaWYgKHRyYXZlcnNlSWZyYW1lcyA9PT0gdm9pZCAwKSB7XG4gICAgdHJhdmVyc2VJZnJhbWVzID0gdHJ1ZTtcbiAgfVxuICBjb25zdCBzY3JvbGxhYmxlQW5jZXN0b3IgPSBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcihub2RlKTtcbiAgY29uc3QgaXNCb2R5ID0gc2Nyb2xsYWJsZUFuY2VzdG9yID09PSAoKF9ub2RlJG93bmVyRG9jdW1lbnQyID0gbm9kZS5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkb3duZXJEb2N1bWVudDIuYm9keSk7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhzY3JvbGxhYmxlQW5jZXN0b3IpO1xuICBpZiAoaXNCb2R5KSB7XG4gICAgY29uc3QgZnJhbWVFbGVtZW50ID0gZ2V0RnJhbWVFbGVtZW50KHdpbik7XG4gICAgcmV0dXJuIGxpc3QuY29uY2F0KHdpbiwgd2luLnZpc3VhbFZpZXdwb3J0IHx8IFtdLCBpc092ZXJmbG93RWxlbWVudChzY3JvbGxhYmxlQW5jZXN0b3IpID8gc2Nyb2xsYWJsZUFuY2VzdG9yIDogW10sIGZyYW1lRWxlbWVudCAmJiB0cmF2ZXJzZUlmcmFtZXMgPyBnZXRPdmVyZmxvd0FuY2VzdG9ycyhmcmFtZUVsZW1lbnQpIDogW10pO1xuICB9XG4gIHJldHVybiBsaXN0LmNvbmNhdChzY3JvbGxhYmxlQW5jZXN0b3IsIGdldE92ZXJmbG93QW5jZXN0b3JzKHNjcm9sbGFibGVBbmNlc3RvciwgW10sIHRyYXZlcnNlSWZyYW1lcykpO1xufVxuZnVuY3Rpb24gZ2V0RnJhbWVFbGVtZW50KHdpbikge1xuICByZXR1cm4gd2luLnBhcmVudCAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yod2luLnBhcmVudCkgPyB3aW4uZnJhbWVFbGVtZW50IDogbnVsbDtcbn1cblxuZXhwb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgZ2V0Q29udGFpbmluZ0Jsb2NrLCBnZXREb2N1bWVudEVsZW1lbnQsIGdldEZyYW1lRWxlbWVudCwgZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IsIGdldE5vZGVOYW1lLCBnZXROb2RlU2Nyb2xsLCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgZ2V0UGFyZW50Tm9kZSwgZ2V0V2luZG93LCBpc0NvbnRhaW5pbmdCbG9jaywgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50LCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUsIGlzTm9kZSwgaXNPdmVyZmxvd0VsZW1lbnQsIGlzU2hhZG93Um9vdCwgaXNUYWJsZUVsZW1lbnQsIGlzVG9wTGF5ZXIsIGlzV2ViS2l0IH07XG4iLCJpbXBvcnQgeyByZWN0VG9DbGllbnRSZWN0LCBkZXRlY3RPdmVyZmxvdyBhcyBkZXRlY3RPdmVyZmxvdyQxLCBvZmZzZXQgYXMgb2Zmc2V0JDEsIGF1dG9QbGFjZW1lbnQgYXMgYXV0b1BsYWNlbWVudCQxLCBzaGlmdCBhcyBzaGlmdCQxLCBmbGlwIGFzIGZsaXAkMSwgc2l6ZSBhcyBzaXplJDEsIGhpZGUgYXMgaGlkZSQxLCBhcnJvdyBhcyBhcnJvdyQxLCBpbmxpbmUgYXMgaW5saW5lJDEsIGxpbWl0U2hpZnQgYXMgbGltaXRTaGlmdCQxLCBjb21wdXRlUG9zaXRpb24gYXMgY29tcHV0ZVBvc2l0aW9uJDEgfSBmcm9tICdAZmxvYXRpbmctdWkvY29yZSc7XG5pbXBvcnQgeyByb3VuZCwgY3JlYXRlQ29vcmRzLCBtYXgsIG1pbiwgZmxvb3IgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgaXNIVE1MRWxlbWVudCwgaXNFbGVtZW50LCBnZXRXaW5kb3csIGlzV2ViS2l0LCBnZXRGcmFtZUVsZW1lbnQsIGdldE5vZGVTY3JvbGwsIGdldERvY3VtZW50RWxlbWVudCwgaXNUb3BMYXllciwgZ2V0Tm9kZU5hbWUsIGlzT3ZlcmZsb3dFbGVtZW50LCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgZ2V0UGFyZW50Tm9kZSwgaXNMYXN0VHJhdmVyc2FibGVOb2RlLCBpc0NvbnRhaW5pbmdCbG9jaywgaXNUYWJsZUVsZW1lbnQsIGdldENvbnRhaW5pbmdCbG9jayB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuZXhwb3J0IHsgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMvZG9tJztcblxuZnVuY3Rpb24gZ2V0Q3NzRGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIGNvbnN0IGNzcyA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIC8vIEluIHRlc3RpbmcgZW52aXJvbm1lbnRzLCB0aGUgYHdpZHRoYCBhbmQgYGhlaWdodGAgcHJvcGVydGllcyBhcmUgZW1wdHlcbiAgLy8gc3RyaW5ncyBmb3IgU1ZHIGVsZW1lbnRzLCByZXR1cm5pbmcgTmFOLiBGYWxsYmFjayB0byBgMGAgaW4gdGhpcyBjYXNlLlxuICBsZXQgd2lkdGggPSBwYXJzZUZsb2F0KGNzcy53aWR0aCkgfHwgMDtcbiAgbGV0IGhlaWdodCA9IHBhcnNlRmxvYXQoY3NzLmhlaWdodCkgfHwgMDtcbiAgY29uc3QgaGFzT2Zmc2V0ID0gaXNIVE1MRWxlbWVudChlbGVtZW50KTtcbiAgY29uc3Qgb2Zmc2V0V2lkdGggPSBoYXNPZmZzZXQgPyBlbGVtZW50Lm9mZnNldFdpZHRoIDogd2lkdGg7XG4gIGNvbnN0IG9mZnNldEhlaWdodCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogaGVpZ2h0O1xuICBjb25zdCBzaG91bGRGYWxsYmFjayA9IHJvdW5kKHdpZHRoKSAhPT0gb2Zmc2V0V2lkdGggfHwgcm91bmQoaGVpZ2h0KSAhPT0gb2Zmc2V0SGVpZ2h0O1xuICBpZiAoc2hvdWxkRmFsbGJhY2spIHtcbiAgICB3aWR0aCA9IG9mZnNldFdpZHRoO1xuICAgIGhlaWdodCA9IG9mZnNldEhlaWdodDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkOiBzaG91bGRGYWxsYmFja1xuICB9O1xufVxuXG5mdW5jdGlvbiB1bndyYXBFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuICFpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50LmNvbnRleHRFbGVtZW50IDogZWxlbWVudDtcbn1cblxuZnVuY3Rpb24gZ2V0U2NhbGUoZWxlbWVudCkge1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGRvbUVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNvb3JkcygxKTtcbiAgfVxuICBjb25zdCByZWN0ID0gZG9tRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3Qge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkXG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGRvbUVsZW1lbnQpO1xuICBsZXQgeCA9ICgkID8gcm91bmQocmVjdC53aWR0aCkgOiByZWN0LndpZHRoKSAvIHdpZHRoO1xuICBsZXQgeSA9ICgkID8gcm91bmQocmVjdC5oZWlnaHQpIDogcmVjdC5oZWlnaHQpIC8gaGVpZ2h0O1xuXG4gIC8vIDAsIE5hTiwgb3IgSW5maW5pdHkgc2hvdWxkIGFsd2F5cyBmYWxsYmFjayB0byAxLlxuXG4gIGlmICgheCB8fCAhTnVtYmVyLmlzRmluaXRlKHgpKSB7XG4gICAgeCA9IDE7XG4gIH1cbiAgaWYgKCF5IHx8ICFOdW1iZXIuaXNGaW5pdGUoeSkpIHtcbiAgICB5ID0gMTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5jb25zdCBub09mZnNldHMgPSAvKiNfX1BVUkVfXyovY3JlYXRlQ29vcmRzKDApO1xuZnVuY3Rpb24gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgaWYgKCFpc1dlYktpdCgpIHx8ICF3aW4udmlzdWFsVmlld3BvcnQpIHtcbiAgICByZXR1cm4gbm9PZmZzZXRzO1xuICB9XG4gIHJldHVybiB7XG4gICAgeDogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQsXG4gICAgeTogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcFxuICB9O1xufVxuZnVuY3Rpb24gc2hvdWxkQWRkVmlzdWFsT2Zmc2V0cyhlbGVtZW50LCBpc0ZpeGVkLCBmbG9hdGluZ09mZnNldFBhcmVudCkge1xuICBpZiAoaXNGaXhlZCA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZCA9IGZhbHNlO1xuICB9XG4gIGlmICghZmxvYXRpbmdPZmZzZXRQYXJlbnQgfHwgaXNGaXhlZCAmJiBmbG9hdGluZ09mZnNldFBhcmVudCAhPT0gZ2V0V2luZG93KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBpc0ZpeGVkO1xufVxuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgaW5jbHVkZVNjYWxlLCBpc0ZpeGVkU3RyYXRlZ3ksIG9mZnNldFBhcmVudCkge1xuICBpZiAoaW5jbHVkZVNjYWxlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlU2NhbGUgPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNGaXhlZFN0cmF0ZWd5ID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkU3RyYXRlZ3kgPSBmYWxzZTtcbiAgfVxuICBjb25zdCBjbGllbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgZG9tRWxlbWVudCA9IHVud3JhcEVsZW1lbnQoZWxlbWVudCk7XG4gIGxldCBzY2FsZSA9IGNyZWF0ZUNvb3JkcygxKTtcbiAgaWYgKGluY2x1ZGVTY2FsZSkge1xuICAgIGlmIChvZmZzZXRQYXJlbnQpIHtcbiAgICAgIGlmIChpc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNjYWxlID0gZ2V0U2NhbGUoZWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHZpc3VhbE9mZnNldHMgPSBzaG91bGRBZGRWaXN1YWxPZmZzZXRzKGRvbUVsZW1lbnQsIGlzRml4ZWRTdHJhdGVneSwgb2Zmc2V0UGFyZW50KSA/IGdldFZpc3VhbE9mZnNldHMoZG9tRWxlbWVudCkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIGxldCB4ID0gKGNsaWVudFJlY3QubGVmdCArIHZpc3VhbE9mZnNldHMueCkgLyBzY2FsZS54O1xuICBsZXQgeSA9IChjbGllbnRSZWN0LnRvcCArIHZpc3VhbE9mZnNldHMueSkgLyBzY2FsZS55O1xuICBsZXQgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoIC8gc2NhbGUueDtcbiAgbGV0IGhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0IC8gc2NhbGUueTtcbiAgaWYgKGRvbUVsZW1lbnQpIHtcbiAgICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZG9tRWxlbWVudCk7XG4gICAgY29uc3Qgb2Zmc2V0V2luID0gb2Zmc2V0UGFyZW50ICYmIGlzRWxlbWVudChvZmZzZXRQYXJlbnQpID8gZ2V0V2luZG93KG9mZnNldFBhcmVudCkgOiBvZmZzZXRQYXJlbnQ7XG4gICAgbGV0IGN1cnJlbnRXaW4gPSB3aW47XG4gICAgbGV0IGN1cnJlbnRJRnJhbWUgPSBnZXRGcmFtZUVsZW1lbnQoY3VycmVudFdpbik7XG4gICAgd2hpbGUgKGN1cnJlbnRJRnJhbWUgJiYgb2Zmc2V0UGFyZW50ICYmIG9mZnNldFdpbiAhPT0gY3VycmVudFdpbikge1xuICAgICAgY29uc3QgaWZyYW1lU2NhbGUgPSBnZXRTY2FsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGlmcmFtZVJlY3QgPSBjdXJyZW50SUZyYW1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGxlZnQgPSBpZnJhbWVSZWN0LmxlZnQgKyAoY3VycmVudElGcmFtZS5jbGllbnRMZWZ0ICsgcGFyc2VGbG9hdChjc3MucGFkZGluZ0xlZnQpKSAqIGlmcmFtZVNjYWxlLng7XG4gICAgICBjb25zdCB0b3AgPSBpZnJhbWVSZWN0LnRvcCArIChjdXJyZW50SUZyYW1lLmNsaWVudFRvcCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdUb3ApKSAqIGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICB5ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB3aWR0aCAqPSBpZnJhbWVTY2FsZS54O1xuICAgICAgaGVpZ2h0ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICs9IGxlZnQ7XG4gICAgICB5ICs9IHRvcDtcbiAgICAgIGN1cnJlbnRXaW4gPSBnZXRXaW5kb3coY3VycmVudElGcmFtZSk7XG4gICAgICBjdXJyZW50SUZyYW1lID0gZ2V0RnJhbWVFbGVtZW50KGN1cnJlbnRXaW4pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdCh7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9KTtcbn1cblxuLy8gSWYgPGh0bWw+IGhhcyBhIENTUyB3aWR0aCBncmVhdGVyIHRoYW4gdGhlIHZpZXdwb3J0LCB0aGVuIHRoaXMgd2lsbCBiZVxuLy8gaW5jb3JyZWN0IGZvciBSVEwuXG5mdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQsIHJlY3QpIHtcbiAgY29uc3QgbGVmdFNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCkuc2Nyb2xsTGVmdDtcbiAgaWYgKCFyZWN0KSB7XG4gICAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBsZWZ0U2Nyb2xsO1xuICB9XG4gIHJldHVybiByZWN0LmxlZnQgKyBsZWZ0U2Nyb2xsO1xufVxuXG5mdW5jdGlvbiBnZXRIVE1MT2Zmc2V0KGRvY3VtZW50RWxlbWVudCwgc2Nyb2xsLCBpZ25vcmVTY3JvbGxiYXJYKSB7XG4gIGlmIChpZ25vcmVTY3JvbGxiYXJYID09PSB2b2lkIDApIHtcbiAgICBpZ25vcmVTY3JvbGxiYXJYID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgaHRtbFJlY3QgPSBkb2N1bWVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHggPSBodG1sUmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSAoaWdub3JlU2Nyb2xsYmFyWCA/IDAgOlxuICAvLyBSVEwgPGJvZHk+IHNjcm9sbGJhci5cbiAgZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQsIGh0bWxSZWN0KSk7XG4gIGNvbnN0IHkgPSBodG1sUmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wO1xuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudHMsXG4gICAgcmVjdCxcbiAgICBvZmZzZXRQYXJlbnQsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGlzRml4ZWQgPSBzdHJhdGVneSA9PT0gJ2ZpeGVkJztcbiAgY29uc3QgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IHRvcExheWVyID0gZWxlbWVudHMgPyBpc1RvcExheWVyKGVsZW1lbnRzLmZsb2F0aW5nKSA6IGZhbHNlO1xuICBpZiAob2Zmc2V0UGFyZW50ID09PSBkb2N1bWVudEVsZW1lbnQgfHwgdG9wTGF5ZXIgJiYgaXNGaXhlZCkge1xuICAgIHJldHVybiByZWN0O1xuICB9XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgbGV0IHNjYWxlID0gY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCBvZmZzZXRzID0gY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBjb25zdCBvZmZzZXRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCk7XG4gICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfVxuICB9XG4gIGNvbnN0IGh0bWxPZmZzZXQgPSBkb2N1bWVudEVsZW1lbnQgJiYgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkID8gZ2V0SFRNTE9mZnNldChkb2N1bWVudEVsZW1lbnQsIHNjcm9sbCwgdHJ1ZSkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHJlY3Qud2lkdGggKiBzY2FsZS54LFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHQgKiBzY2FsZS55LFxuICAgIHg6IHJlY3QueCAqIHNjYWxlLnggLSBzY3JvbGwuc2Nyb2xsTGVmdCAqIHNjYWxlLnggKyBvZmZzZXRzLnggKyBodG1sT2Zmc2V0LngsXG4gICAgeTogcmVjdC55ICogc2NhbGUueSAtIHNjcm9sbC5zY3JvbGxUb3AgKiBzY2FsZS55ICsgb2Zmc2V0cy55ICsgaHRtbE9mZnNldC55XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RzKGVsZW1lbnQpIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oZWxlbWVudC5nZXRDbGllbnRSZWN0cygpKTtcbn1cblxuLy8gR2V0cyB0aGUgZW50aXJlIHNpemUgb2YgdGhlIHNjcm9sbGFibGUgZG9jdW1lbnQgYXJlYSwgZXZlbiBleHRlbmRpbmcgb3V0c2lkZVxuLy8gb2YgdGhlIGA8aHRtbD5gIGFuZCBgPGJvZHk+YCByZWN0IGJvdW5kcyBpZiBob3Jpem9udGFsbHkgc2Nyb2xsYWJsZS5cbmZ1bmN0aW9uIGdldERvY3VtZW50UmVjdChlbGVtZW50KSB7XG4gIGNvbnN0IGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IHNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCk7XG4gIGNvbnN0IGJvZHkgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuYm9keTtcbiAgY29uc3Qgd2lkdGggPSBtYXgoaHRtbC5zY3JvbGxXaWR0aCwgaHRtbC5jbGllbnRXaWR0aCwgYm9keS5zY3JvbGxXaWR0aCwgYm9keS5jbGllbnRXaWR0aCk7XG4gIGNvbnN0IGhlaWdodCA9IG1heChodG1sLnNjcm9sbEhlaWdodCwgaHRtbC5jbGllbnRIZWlnaHQsIGJvZHkuc2Nyb2xsSGVpZ2h0LCBib2R5LmNsaWVudEhlaWdodCk7XG4gIGxldCB4ID0gLXNjcm9sbC5zY3JvbGxMZWZ0ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KTtcbiAgY29uc3QgeSA9IC1zY3JvbGwuc2Nyb2xsVG9wO1xuICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShib2R5KS5kaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgeCArPSBtYXgoaHRtbC5jbGllbnRXaWR0aCwgYm9keS5jbGllbnRXaWR0aCkgLSB3aWR0aDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3QgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIGxldCB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIGxldCBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgbGV0IHggPSAwO1xuICBsZXQgeSA9IDA7XG4gIGlmICh2aXN1YWxWaWV3cG9ydCkge1xuICAgIHdpZHRoID0gdmlzdWFsVmlld3BvcnQud2lkdGg7XG4gICAgaGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuaGVpZ2h0O1xuICAgIGNvbnN0IHZpc3VhbFZpZXdwb3J0QmFzZWQgPSBpc1dlYktpdCgpO1xuICAgIGlmICghdmlzdWFsVmlld3BvcnRCYXNlZCB8fCB2aXN1YWxWaWV3cG9ydEJhc2VkICYmIHN0cmF0ZWd5ID09PSAnZml4ZWQnKSB7XG4gICAgICB4ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdDtcbiAgICAgIHkgPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3A7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG4vLyBSZXR1cm5zIHRoZSBpbm5lciBjbGllbnQgcmVjdCwgc3VidHJhY3Rpbmcgc2Nyb2xsYmFycyBpZiBwcmVzZW50LlxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCB0cnVlLCBzdHJhdGVneSA9PT0gJ2ZpeGVkJyk7XG4gIGNvbnN0IHRvcCA9IGNsaWVudFJlY3QudG9wICsgZWxlbWVudC5jbGllbnRUb3A7XG4gIGNvbnN0IGxlZnQgPSBjbGllbnRSZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIGNvbnN0IHNjYWxlID0gaXNIVE1MRWxlbWVudChlbGVtZW50KSA/IGdldFNjYWxlKGVsZW1lbnQpIDogY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCB3aWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGggKiBzY2FsZS54O1xuICBjb25zdCBoZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodCAqIHNjYWxlLnk7XG4gIGNvbnN0IHggPSBsZWZ0ICogc2NhbGUueDtcbiAgY29uc3QgeSA9IHRvcCAqIHNjYWxlLnk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KSB7XG4gIGxldCByZWN0O1xuICBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gJ3ZpZXdwb3J0Jykge1xuICAgIHJlY3QgPSBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpO1xuICB9IGVsc2UgaWYgKGNsaXBwaW5nQW5jZXN0b3IgPT09ICdkb2N1bWVudCcpIHtcbiAgICByZWN0ID0gZ2V0RG9jdW1lbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSk7XG4gIH0gZWxzZSBpZiAoaXNFbGVtZW50KGNsaXBwaW5nQW5jZXN0b3IpKSB7XG4gICAgcmVjdCA9IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB2aXN1YWxPZmZzZXRzID0gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KTtcbiAgICByZWN0ID0ge1xuICAgICAgeDogY2xpcHBpbmdBbmNlc3Rvci54IC0gdmlzdWFsT2Zmc2V0cy54LFxuICAgICAgeTogY2xpcHBpbmdBbmNlc3Rvci55IC0gdmlzdWFsT2Zmc2V0cy55LFxuICAgICAgd2lkdGg6IGNsaXBwaW5nQW5jZXN0b3Iud2lkdGgsXG4gICAgICBoZWlnaHQ6IGNsaXBwaW5nQW5jZXN0b3IuaGVpZ2h0XG4gICAgfTtcbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdChyZWN0KTtcbn1cbmZ1bmN0aW9uIGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihlbGVtZW50LCBzdG9wTm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgaWYgKHBhcmVudE5vZGUgPT09IHN0b3BOb2RlIHx8ICFpc0VsZW1lbnQocGFyZW50Tm9kZSkgfHwgaXNMYXN0VHJhdmVyc2FibGVOb2RlKHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKHBhcmVudE5vZGUpLnBvc2l0aW9uID09PSAnZml4ZWQnIHx8IGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihwYXJlbnROb2RlLCBzdG9wTm9kZSk7XG59XG5cbi8vIEEgXCJjbGlwcGluZyBhbmNlc3RvclwiIGlzIGFuIGBvdmVyZmxvd2AgZWxlbWVudCB3aXRoIHRoZSBjaGFyYWN0ZXJpc3RpYyBvZlxuLy8gY2xpcHBpbmcgKG9yIGhpZGluZykgY2hpbGQgZWxlbWVudHMuIFRoaXMgcmV0dXJucyBhbGwgY2xpcHBpbmcgYW5jZXN0b3JzXG4vLyBvZiB0aGUgZ2l2ZW4gZWxlbWVudCB1cCB0aGUgdHJlZS5cbmZ1bmN0aW9uIGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyhlbGVtZW50LCBjYWNoZSkge1xuICBjb25zdCBjYWNoZWRSZXN1bHQgPSBjYWNoZS5nZXQoZWxlbWVudCk7XG4gIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICB9XG4gIGxldCByZXN1bHQgPSBnZXRPdmVyZmxvd0FuY2VzdG9ycyhlbGVtZW50LCBbXSwgZmFsc2UpLmZpbHRlcihlbCA9PiBpc0VsZW1lbnQoZWwpICYmIGdldE5vZGVOYW1lKGVsKSAhPT0gJ2JvZHknKTtcbiAgbGV0IGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gbnVsbDtcbiAgY29uc3QgZWxlbWVudElzRml4ZWQgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnO1xuICBsZXQgY3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/IGdldFBhcmVudE5vZGUoZWxlbWVudCkgOiBlbGVtZW50O1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIHdoaWxlIChpc0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudE5vZGUpO1xuICAgIGNvbnN0IGN1cnJlbnROb2RlSXNDb250YWluaW5nID0gaXNDb250YWluaW5nQmxvY2soY3VycmVudE5vZGUpO1xuICAgIGlmICghY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgICAgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBudWxsO1xuICAgIH1cbiAgICBjb25zdCBzaG91bGREcm9wQ3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiAhY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgOiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycgJiYgISFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSAmJiBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5jbHVkZXMoY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUucG9zaXRpb24pIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGVsZW1lbnQsIGN1cnJlbnROb2RlKTtcbiAgICBpZiAoc2hvdWxkRHJvcEN1cnJlbnROb2RlKSB7XG4gICAgICAvLyBEcm9wIG5vbi1jb250YWluaW5nIGJsb2Nrcy5cbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoYW5jZXN0b3IgPT4gYW5jZXN0b3IgIT09IGN1cnJlbnROb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVjb3JkIGxhc3QgY29udGFpbmluZyBibG9jayBmb3IgbmV4dCBpdGVyYXRpb24uXG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IGNvbXB1dGVkU3R5bGU7XG4gICAgfVxuICAgIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShjdXJyZW50Tm9kZSk7XG4gIH1cbiAgY2FjaGUuc2V0KGVsZW1lbnQsIHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIEdldHMgdGhlIG1heGltdW0gYXJlYSB0aGF0IHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gZHVlIHRvIGFueSBudW1iZXIgb2Zcbi8vIGNsaXBwaW5nIGFuY2VzdG9ycy5cbmZ1bmN0aW9uIGdldENsaXBwaW5nUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudCxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGVsZW1lbnRDbGlwcGluZ0FuY2VzdG9ycyA9IGJvdW5kYXJ5ID09PSAnY2xpcHBpbmdBbmNlc3RvcnMnID8gaXNUb3BMYXllcihlbGVtZW50KSA/IFtdIDogZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzKGVsZW1lbnQsIHRoaXMuX2MpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgY29uc3QgY2xpcHBpbmdBbmNlc3RvcnMgPSBbLi4uZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzLCByb290Qm91bmRhcnldO1xuICBjb25zdCBmaXJzdENsaXBwaW5nQW5jZXN0b3IgPSBjbGlwcGluZ0FuY2VzdG9yc1swXTtcbiAgY29uc3QgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdBbmNlc3RvcnMucmVkdWNlKChhY2NSZWN0LCBjbGlwcGluZ0FuY2VzdG9yKSA9PiB7XG4gICAgY29uc3QgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGZpcnN0Q2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQsXG4gICAgaGVpZ2h0OiBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcCxcbiAgICB4OiBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICB5OiBjbGlwcGluZ1JlY3QudG9wXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldERpbWVuc2lvbnMoZWxlbWVudCkge1xuICBjb25zdCB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudChlbGVtZW50LCBvZmZzZXRQYXJlbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgaXNGaXhlZCA9IHN0cmF0ZWd5ID09PSAnZml4ZWQnO1xuICBjb25zdCByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgY29uc3Qgb2Zmc2V0cyA9IGNyZWF0ZUNvb3JkcygwKTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50LCB0cnVlLCBpc0ZpeGVkLCBvZmZzZXRQYXJlbnQpO1xuICAgICAgb2Zmc2V0cy54ID0gb2Zmc2V0UmVjdC54ICsgb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgPSBvZmZzZXRSZWN0LnkgKyBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICAvLyBJZiB0aGUgPGJvZHk+IHNjcm9sbGJhciBhcHBlYXJzIG9uIHRoZSBsZWZ0IChlLmcuIFJUTCBzeXN0ZW1zKS4gVXNlXG4gICAgICAvLyBGaXJlZm94IHdpdGggbGF5b3V0LnNjcm9sbGJhci5zaWRlID0gMyBpbiBhYm91dDpjb25maWcgdG8gdGVzdCB0aGlzLlxuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuICBjb25zdCBodG1sT2Zmc2V0ID0gZG9jdW1lbnRFbGVtZW50ICYmICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCA/IGdldEhUTUxPZmZzZXQoZG9jdW1lbnRFbGVtZW50LCBzY3JvbGwpIDogY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCB4ID0gcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLnggLSBodG1sT2Zmc2V0Lng7XG4gIGNvbnN0IHkgPSByZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3AgLSBvZmZzZXRzLnkgLSBodG1sT2Zmc2V0Lnk7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNTdGF0aWNQb3NpdGlvbmVkKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnO1xufVxuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHBvbHlmaWxsKSB7XG4gICAgcmV0dXJuIHBvbHlmaWxsKGVsZW1lbnQpO1xuICB9XG4gIGxldCByYXdPZmZzZXRQYXJlbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDtcblxuICAvLyBGaXJlZm94IHJldHVybnMgdGhlIDxodG1sPiBlbGVtZW50IGFzIHRoZSBvZmZzZXRQYXJlbnQgaWYgaXQncyBub24tc3RhdGljLFxuICAvLyB3aGlsZSBDaHJvbWUgYW5kIFNhZmFyaSByZXR1cm4gdGhlIDxib2R5PiBlbGVtZW50LiBUaGUgPGJvZHk+IGVsZW1lbnQgbXVzdFxuICAvLyBiZSB1c2VkIHRvIHBlcmZvcm0gdGhlIGNvcnJlY3QgY2FsY3VsYXRpb25zIGV2ZW4gaWYgdGhlIDxodG1sPiBlbGVtZW50IGlzXG4gIC8vIG5vbi1zdGF0aWMuXG4gIGlmIChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkgPT09IHJhd09mZnNldFBhcmVudCkge1xuICAgIHJhd09mZnNldFBhcmVudCA9IHJhd09mZnNldFBhcmVudC5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cbiAgcmV0dXJuIHJhd09mZnNldFBhcmVudDtcbn1cblxuLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cbmZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGlmIChpc1RvcExheWVyKGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBsZXQgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgICB3aGlsZSAoc3ZnT2Zmc2V0UGFyZW50ICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgaWYgKGlzRWxlbWVudChzdmdPZmZzZXRQYXJlbnQpICYmICFpc1N0YXRpY1Bvc2l0aW9uZWQoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgICByZXR1cm4gc3ZnT2Zmc2V0UGFyZW50O1xuICAgICAgfVxuICAgICAgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShzdmdPZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gd2luO1xuICB9XG4gIGxldCBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKTtcbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQsIHBvbHlmaWxsKTtcbiAgfVxuICBpZiAob2Zmc2V0UGFyZW50ICYmIGlzTGFzdFRyYXZlcnNhYmxlTm9kZShvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpICYmICFpc0NvbnRhaW5pbmdCbG9jayhvZmZzZXRQYXJlbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICByZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB8fCB3aW47XG59XG5cbmNvbnN0IGdldEVsZW1lbnRSZWN0cyA9IGFzeW5jIGZ1bmN0aW9uIChkYXRhKSB7XG4gIGNvbnN0IGdldE9mZnNldFBhcmVudEZuID0gdGhpcy5nZXRPZmZzZXRQYXJlbnQgfHwgZ2V0T2Zmc2V0UGFyZW50O1xuICBjb25zdCBnZXREaW1lbnNpb25zRm4gPSB0aGlzLmdldERpbWVuc2lvbnM7XG4gIGNvbnN0IGZsb2F0aW5nRGltZW5zaW9ucyA9IGF3YWl0IGdldERpbWVuc2lvbnNGbihkYXRhLmZsb2F0aW5nKTtcbiAgcmV0dXJuIHtcbiAgICByZWZlcmVuY2U6IGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGRhdGEucmVmZXJlbmNlLCBhd2FpdCBnZXRPZmZzZXRQYXJlbnRGbihkYXRhLmZsb2F0aW5nKSwgZGF0YS5zdHJhdGVneSksXG4gICAgZmxvYXRpbmc6IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgd2lkdGg6IGZsb2F0aW5nRGltZW5zaW9ucy53aWR0aCxcbiAgICAgIGhlaWdodDogZmxvYXRpbmdEaW1lbnNpb25zLmhlaWdodFxuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGlzUlRMKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZGlyZWN0aW9uID09PSAncnRsJztcbn1cblxuY29uc3QgcGxhdGZvcm0gPSB7XG4gIGNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0LFxuICBnZXREb2N1bWVudEVsZW1lbnQsXG4gIGdldENsaXBwaW5nUmVjdCxcbiAgZ2V0T2Zmc2V0UGFyZW50LFxuICBnZXRFbGVtZW50UmVjdHMsXG4gIGdldENsaWVudFJlY3RzLFxuICBnZXREaW1lbnNpb25zLFxuICBnZXRTY2FsZSxcbiAgaXNFbGVtZW50LFxuICBpc1JUTFxufTtcblxuZnVuY3Rpb24gcmVjdHNBcmVFcXVhbChhLCBiKSB7XG4gIHJldHVybiBhLnggPT09IGIueCAmJiBhLnkgPT09IGIueSAmJiBhLndpZHRoID09PSBiLndpZHRoICYmIGEuaGVpZ2h0ID09PSBiLmhlaWdodDtcbn1cblxuLy8gaHR0cHM6Ly9zYW10aG9yLmF1LzIwMjEvb2JzZXJ2aW5nLWRvbS9cbmZ1bmN0aW9uIG9ic2VydmVNb3ZlKGVsZW1lbnQsIG9uTW92ZSkge1xuICBsZXQgaW8gPSBudWxsO1xuICBsZXQgdGltZW91dElkO1xuICBjb25zdCByb290ID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIHZhciBfaW87XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgKF9pbyA9IGlvKSA9PSBudWxsIHx8IF9pby5kaXNjb25uZWN0KCk7XG4gICAgaW8gPSBudWxsO1xuICB9XG4gIGZ1bmN0aW9uIHJlZnJlc2goc2tpcCwgdGhyZXNob2xkKSB7XG4gICAgaWYgKHNraXAgPT09IHZvaWQgMCkge1xuICAgICAgc2tpcCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhyZXNob2xkID09PSB2b2lkIDApIHtcbiAgICAgIHRocmVzaG9sZCA9IDE7XG4gICAgfVxuICAgIGNsZWFudXAoKTtcbiAgICBjb25zdCBlbGVtZW50UmVjdEZvclJvb3RNYXJnaW4gPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHtcbiAgICAgIGxlZnQsXG4gICAgICB0b3AsXG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodFxuICAgIH0gPSBlbGVtZW50UmVjdEZvclJvb3RNYXJnaW47XG4gICAgaWYgKCFza2lwKSB7XG4gICAgICBvbk1vdmUoKTtcbiAgICB9XG4gICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGluc2V0VG9wID0gZmxvb3IodG9wKTtcbiAgICBjb25zdCBpbnNldFJpZ2h0ID0gZmxvb3Iocm9vdC5jbGllbnRXaWR0aCAtIChsZWZ0ICsgd2lkdGgpKTtcbiAgICBjb25zdCBpbnNldEJvdHRvbSA9IGZsb29yKHJvb3QuY2xpZW50SGVpZ2h0IC0gKHRvcCArIGhlaWdodCkpO1xuICAgIGNvbnN0IGluc2V0TGVmdCA9IGZsb29yKGxlZnQpO1xuICAgIGNvbnN0IHJvb3RNYXJnaW4gPSAtaW5zZXRUb3AgKyBcInB4IFwiICsgLWluc2V0UmlnaHQgKyBcInB4IFwiICsgLWluc2V0Qm90dG9tICsgXCJweCBcIiArIC1pbnNldExlZnQgKyBcInB4XCI7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3RNYXJnaW4sXG4gICAgICB0aHJlc2hvbGQ6IG1heCgwLCBtaW4oMSwgdGhyZXNob2xkKSkgfHwgMVxuICAgIH07XG4gICAgbGV0IGlzRmlyc3RVcGRhdGUgPSB0cnVlO1xuICAgIGZ1bmN0aW9uIGhhbmRsZU9ic2VydmUoZW50cmllcykge1xuICAgICAgY29uc3QgcmF0aW8gPSBlbnRyaWVzWzBdLmludGVyc2VjdGlvblJhdGlvO1xuICAgICAgaWYgKHJhdGlvICE9PSB0aHJlc2hvbGQpIHtcbiAgICAgICAgaWYgKCFpc0ZpcnN0VXBkYXRlKSB7XG4gICAgICAgICAgcmV0dXJuIHJlZnJlc2goKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJhdGlvKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIHJlZmVyZW5jZSBpcyBjbGlwcGVkLCB0aGUgcmF0aW8gaXMgMC4gVGhyb3R0bGUgdGhlIHJlZnJlc2hcbiAgICAgICAgICAvLyB0byBwcmV2ZW50IGFuIGluZmluaXRlIGxvb3Agb2YgdXBkYXRlcy5cbiAgICAgICAgICB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHJlZnJlc2goZmFsc2UsIDFlLTcpO1xuICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlZnJlc2goZmFsc2UsIHJhdGlvKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHJhdGlvID09PSAxICYmICFyZWN0c0FyZUVxdWFsKGVsZW1lbnRSZWN0Rm9yUm9vdE1hcmdpbiwgZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSkpIHtcbiAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IGV2ZW4gdGhvdWdoIHRoZSByYXRpbyBpcyByZXBvcnRlZCBhcyAxLCB0aGVcbiAgICAgICAgLy8gZWxlbWVudCBpcyBub3QgYWN0dWFsbHkgZnVsbHkgd2l0aGluIHRoZSBJbnRlcnNlY3Rpb25PYnNlcnZlcidzIHJvb3RcbiAgICAgICAgLy8gYXJlYSBhbnltb3JlLiBUaGlzIGNhbiBoYXBwZW4gdW5kZXIgcGVyZm9ybWFuY2UgY29uc3RyYWludHMuIFRoaXMgbWF5XG4gICAgICAgIC8vIGJlIGEgYnVnIGluIHRoZSBicm93c2VyJ3MgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgaW1wbGVtZW50YXRpb24uIFRvXG4gICAgICAgIC8vIHdvcmsgYXJvdW5kIHRoaXMsIHdlIGNvbXBhcmUgdGhlIGVsZW1lbnQncyBib3VuZGluZyByZWN0IG5vdyB3aXRoXG4gICAgICAgIC8vIHdoYXQgaXQgd2FzIGF0IHRoZSB0aW1lIHdlIGNyZWF0ZWQgdGhlIEludGVyc2VjdGlvbk9ic2VydmVyLiBJZiB0aGV5XG4gICAgICAgIC8vIGFyZSBub3QgZXF1YWwgdGhlbiB0aGUgZWxlbWVudCBtb3ZlZCwgc28gd2UgcmVmcmVzaC5cbiAgICAgICAgcmVmcmVzaCgpO1xuICAgICAgfVxuICAgICAgaXNGaXJzdFVwZGF0ZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIE9sZGVyIGJyb3dzZXJzIGRvbid0IHN1cHBvcnQgYSBgZG9jdW1lbnRgIGFzIHRoZSByb290IGFuZCB3aWxsIHRocm93IGFuXG4gICAgLy8gZXJyb3IuXG4gICAgdHJ5IHtcbiAgICAgIGlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGhhbmRsZU9ic2VydmUsIHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgLy8gSGFuZGxlIDxpZnJhbWU+c1xuICAgICAgICByb290OiByb290Lm93bmVyRG9jdW1lbnRcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGhhbmRsZU9ic2VydmUsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBpby5vYnNlcnZlKGVsZW1lbnQpO1xuICB9XG4gIHJlZnJlc2godHJ1ZSk7XG4gIHJldHVybiBjbGVhbnVwO1xufVxuXG4vKipcbiAqIEF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgd2hlbiBuZWNlc3NhcnkuXG4gKiBTaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiB0aGUgZmxvYXRpbmcgZWxlbWVudCBpcyBtb3VudGVkIG9uIHRoZSBET00gb3JcbiAqIHZpc2libGUgb24gdGhlIHNjcmVlbi5cbiAqIEByZXR1cm5zIGNsZWFudXAgZnVuY3Rpb24gdGhhdCBzaG91bGQgYmUgaW52b2tlZCB3aGVuIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzXG4gKiByZW1vdmVkIGZyb20gdGhlIERPTSBvciBoaWRkZW4gZnJvbSB0aGUgc2NyZWVuLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2F1dG9VcGRhdGVcbiAqL1xuZnVuY3Rpb24gYXV0b1VwZGF0ZShyZWZlcmVuY2UsIGZsb2F0aW5nLCB1cGRhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgYW5jZXN0b3JTY3JvbGwgPSB0cnVlLFxuICAgIGFuY2VzdG9yUmVzaXplID0gdHJ1ZSxcbiAgICBlbGVtZW50UmVzaXplID0gdHlwZW9mIFJlc2l6ZU9ic2VydmVyID09PSAnZnVuY3Rpb24nLFxuICAgIGxheW91dFNoaWZ0ID0gdHlwZW9mIEludGVyc2VjdGlvbk9ic2VydmVyID09PSAnZnVuY3Rpb24nLFxuICAgIGFuaW1hdGlvbkZyYW1lID0gZmFsc2VcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHJlZmVyZW5jZUVsID0gdW53cmFwRWxlbWVudChyZWZlcmVuY2UpO1xuICBjb25zdCBhbmNlc3RvcnMgPSBhbmNlc3RvclNjcm9sbCB8fCBhbmNlc3RvclJlc2l6ZSA/IFsuLi4ocmVmZXJlbmNlRWwgPyBnZXRPdmVyZmxvd0FuY2VzdG9ycyhyZWZlcmVuY2VFbCkgOiBbXSksIC4uLmdldE92ZXJmbG93QW5jZXN0b3JzKGZsb2F0aW5nKV0gOiBbXTtcbiAgYW5jZXN0b3JzLmZvckVhY2goYW5jZXN0b3IgPT4ge1xuICAgIGFuY2VzdG9yU2Nyb2xsICYmIGFuY2VzdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZVxuICAgIH0pO1xuICAgIGFuY2VzdG9yUmVzaXplICYmIGFuY2VzdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZSk7XG4gIH0pO1xuICBjb25zdCBjbGVhbnVwSW8gPSByZWZlcmVuY2VFbCAmJiBsYXlvdXRTaGlmdCA/IG9ic2VydmVNb3ZlKHJlZmVyZW5jZUVsLCB1cGRhdGUpIDogbnVsbDtcbiAgbGV0IHJlb2JzZXJ2ZUZyYW1lID0gLTE7XG4gIGxldCByZXNpemVPYnNlcnZlciA9IG51bGw7XG4gIGlmIChlbGVtZW50UmVzaXplKSB7XG4gICAgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoX3JlZiA9PiB7XG4gICAgICBsZXQgW2ZpcnN0RW50cnldID0gX3JlZjtcbiAgICAgIGlmIChmaXJzdEVudHJ5ICYmIGZpcnN0RW50cnkudGFyZ2V0ID09PSByZWZlcmVuY2VFbCAmJiByZXNpemVPYnNlcnZlcikge1xuICAgICAgICAvLyBQcmV2ZW50IHVwZGF0ZSBsb29wcyB3aGVuIHVzaW5nIHRoZSBgc2l6ZWAgbWlkZGxld2FyZS5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2lzc3Vlcy8xNzQwXG4gICAgICAgIHJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZShmbG9hdGluZyk7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJlb2JzZXJ2ZUZyYW1lKTtcbiAgICAgICAgcmVvYnNlcnZlRnJhbWUgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHZhciBfcmVzaXplT2JzZXJ2ZXI7XG4gICAgICAgICAgKF9yZXNpemVPYnNlcnZlciA9IHJlc2l6ZU9ic2VydmVyKSA9PSBudWxsIHx8IF9yZXNpemVPYnNlcnZlci5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB1cGRhdGUoKTtcbiAgICB9KTtcbiAgICBpZiAocmVmZXJlbmNlRWwgJiYgIWFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKHJlZmVyZW5jZUVsKTtcbiAgICB9XG4gICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShmbG9hdGluZyk7XG4gIH1cbiAgbGV0IGZyYW1lSWQ7XG4gIGxldCBwcmV2UmVmUmVjdCA9IGFuaW1hdGlvbkZyYW1lID8gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHJlZmVyZW5jZSkgOiBudWxsO1xuICBpZiAoYW5pbWF0aW9uRnJhbWUpIHtcbiAgICBmcmFtZUxvb3AoKTtcbiAgfVxuICBmdW5jdGlvbiBmcmFtZUxvb3AoKSB7XG4gICAgY29uc3QgbmV4dFJlZlJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QocmVmZXJlbmNlKTtcbiAgICBpZiAocHJldlJlZlJlY3QgJiYgIXJlY3RzQXJlRXF1YWwocHJldlJlZlJlY3QsIG5leHRSZWZSZWN0KSkge1xuICAgICAgdXBkYXRlKCk7XG4gICAgfVxuICAgIHByZXZSZWZSZWN0ID0gbmV4dFJlZlJlY3Q7XG4gICAgZnJhbWVJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShmcmFtZUxvb3ApO1xuICB9XG4gIHVwZGF0ZSgpO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIHZhciBfcmVzaXplT2JzZXJ2ZXIyO1xuICAgIGFuY2VzdG9ycy5mb3JFYWNoKGFuY2VzdG9yID0+IHtcbiAgICAgIGFuY2VzdG9yU2Nyb2xsICYmIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSk7XG4gICAgICBhbmNlc3RvclJlc2l6ZSAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpO1xuICAgIH0pO1xuICAgIGNsZWFudXBJbyA9PSBudWxsIHx8IGNsZWFudXBJbygpO1xuICAgIChfcmVzaXplT2JzZXJ2ZXIyID0gcmVzaXplT2JzZXJ2ZXIpID09IG51bGwgfHwgX3Jlc2l6ZU9ic2VydmVyMi5kaXNjb25uZWN0KCk7XG4gICAgcmVzaXplT2JzZXJ2ZXIgPSBudWxsO1xuICAgIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoZnJhbWVJZCk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHdpdGggYW4gb2JqZWN0IG9mIG92ZXJmbG93IHNpZGUgb2Zmc2V0cyB0aGF0IGRldGVybWluZSBob3cgbXVjaCB0aGVcbiAqIGVsZW1lbnQgaXMgb3ZlcmZsb3dpbmcgYSBnaXZlbiBjbGlwcGluZyBib3VuZGFyeSBvbiBlYWNoIHNpZGUuXG4gKiAtIHBvc2l0aXZlID0gb3ZlcmZsb3dpbmcgdGhlIGJvdW5kYXJ5IGJ5IHRoYXQgbnVtYmVyIG9mIHBpeGVsc1xuICogLSBuZWdhdGl2ZSA9IGhvdyBtYW55IHBpeGVscyBsZWZ0IGJlZm9yZSBpdCB3aWxsIG92ZXJmbG93XG4gKiAtIDAgPSBsaWVzIGZsdXNoIHdpdGggdGhlIGJvdW5kYXJ5XG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZGV0ZWN0T3ZlcmZsb3dcbiAqL1xuY29uc3QgZGV0ZWN0T3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyQxO1xuXG4vKipcbiAqIE1vZGlmaWVzIHRoZSBwbGFjZW1lbnQgYnkgdHJhbnNsYXRpbmcgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYWxvbmcgdGhlXG4gKiBzcGVjaWZpZWQgYXhlcy5cbiAqIEEgbnVtYmVyIChzaG9ydGhhbmQgZm9yIGBtYWluQXhpc2Agb3IgZGlzdGFuY2UpLCBvciBhbiBheGVzIGNvbmZpZ3VyYXRpb25cbiAqIG9iamVjdCBtYXkgYmUgcGFzc2VkLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL29mZnNldFxuICovXG5jb25zdCBvZmZzZXQgPSBvZmZzZXQkMTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgY2hvb3NpbmcgdGhlIHBsYWNlbWVudFxuICogdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgbmVlZGluZyB0byBzcGVjaWZ5IGFcbiAqIHByZWZlcnJlZCBwbGFjZW1lbnQuIEFsdGVybmF0aXZlIHRvIGBmbGlwYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvUGxhY2VtZW50XG4gKi9cbmNvbnN0IGF1dG9QbGFjZW1lbnQgPSBhdXRvUGxhY2VtZW50JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IHNoaWZ0aW5nIGl0IGluIG9yZGVyIHRvXG4gKiBrZWVwIGl0IGluIHZpZXcgd2hlbiBpdCB3aWxsIG92ZXJmbG93IHRoZSBjbGlwcGluZyBib3VuZGFyeS5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaGlmdFxuICovXG5jb25zdCBzaGlmdCA9IHNoaWZ0JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGZsaXBwaW5nIHRoZSBgcGxhY2VtZW50YFxuICogaW4gb3JkZXIgdG8ga2VlcCBpdCBpbiB2aWV3IHdoZW4gdGhlIHByZWZlcnJlZCBwbGFjZW1lbnQocykgd2lsbCBvdmVyZmxvdyB0aGVcbiAqIGNsaXBwaW5nIGJvdW5kYXJ5LiBBbHRlcm5hdGl2ZSB0byBgYXV0b1BsYWNlbWVudGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZmxpcFxuICovXG5jb25zdCBmbGlwID0gZmxpcCQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdGhhdCBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCDigJRcbiAqIGZvciBpbnN0YW5jZSwgcHJldmVudCBpdCBmcm9tIG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyBib3VuZGFyeSBvciBtYXRjaCB0aGVcbiAqIHdpZHRoIG9mIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaXplXG4gKi9cbmNvbnN0IHNpemUgPSBzaXplJDE7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gaGlkZSQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gcG9zaXRpb24gYW4gaW5uZXIgZWxlbWVudCBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBzbyB0aGF0IGl0XG4gKiBhcHBlYXJzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5jb25zdCBhcnJvdyA9IGFycm93JDE7XG5cbi8qKlxuICogUHJvdmlkZXMgaW1wcm92ZWQgcG9zaXRpb25pbmcgZm9yIGlubGluZSByZWZlcmVuY2UgZWxlbWVudHMgdGhhdCBjYW4gc3BhblxuICogb3ZlciBtdWx0aXBsZSBsaW5lcywgc3VjaCBhcyBoeXBlcmxpbmtzIG9yIHJhbmdlIHNlbGVjdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaW5saW5lXG4gKi9cbmNvbnN0IGlubGluZSA9IGlubGluZSQxO1xuXG4vKipcbiAqIEJ1aWx0LWluIGBsaW1pdGVyYCB0aGF0IHdpbGwgc3RvcCBgc2hpZnQoKWAgYXQgYSBjZXJ0YWluIHBvaW50LlxuICovXG5jb25zdCBsaW1pdFNoaWZ0ID0gbGltaXRTaGlmdCQxO1xuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnRcbiAqIG5leHQgdG8gYSBnaXZlbiByZWZlcmVuY2UgZWxlbWVudC5cbiAqL1xuY29uc3QgY29tcHV0ZVBvc2l0aW9uID0gKHJlZmVyZW5jZSwgZmxvYXRpbmcsIG9wdGlvbnMpID0+IHtcbiAgLy8gVGhpcyBjYWNoZXMgdGhlIGV4cGVuc2l2ZSBgZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzYCBmdW5jdGlvbiBzbyB0aGF0XG4gIC8vIG11bHRpcGxlIGxpZmVjeWNsZSByZXNldHMgcmUtdXNlIHRoZSBzYW1lIHJlc3VsdC4gSXQgb25seSBsaXZlcyBmb3IgYVxuICAvLyBzaW5nbGUgY2FsbC4gSWYgb3RoZXIgZnVuY3Rpb25zIGJlY29tZSBleHBlbnNpdmUsIHdlIGNhbiBhZGQgdGhlbSBhcyB3ZWxsLlxuICBjb25zdCBjYWNoZSA9IG5ldyBNYXAoKTtcbiAgY29uc3QgbWVyZ2VkT3B0aW9ucyA9IHtcbiAgICBwbGF0Zm9ybSxcbiAgICAuLi5vcHRpb25zXG4gIH07XG4gIGNvbnN0IHBsYXRmb3JtV2l0aENhY2hlID0ge1xuICAgIC4uLm1lcmdlZE9wdGlvbnMucGxhdGZvcm0sXG4gICAgX2M6IGNhY2hlXG4gIH07XG4gIHJldHVybiBjb21wdXRlUG9zaXRpb24kMShyZWZlcmVuY2UsIGZsb2F0aW5nLCB7XG4gICAgLi4ubWVyZ2VkT3B0aW9ucyxcbiAgICBwbGF0Zm9ybTogcGxhdGZvcm1XaXRoQ2FjaGVcbiAgfSk7XG59O1xuXG5leHBvcnQgeyBhcnJvdywgYXV0b1BsYWNlbWVudCwgYXV0b1VwZGF0ZSwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHBsYXRmb3JtLCBzaGlmdCwgc2l6ZSB9O1xuIiwiaW1wb3J0IHsgYXJyb3cgYXMgYXJyb3ckMSwgY29tcHV0ZVBvc2l0aW9uIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5leHBvcnQgeyBhdXRvUGxhY2VtZW50LCBhdXRvVXBkYXRlLCBjb21wdXRlUG9zaXRpb24sIGRldGVjdE92ZXJmbG93LCBmbGlwLCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHBsYXRmb3JtLCBzaGlmdCwgc2l6ZSB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuaW1wb3J0IHsgaXNOb2RlLCBnZXROb2RlTmFtZSB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuaW1wb3J0IHsgdW5yZWYsIGNvbXB1dGVkLCByZWYsIHNoYWxsb3dSZWYsIHdhdGNoLCBnZXRDdXJyZW50U2NvcGUsIG9uU2NvcGVEaXNwb3NlLCBzaGFsbG93UmVhZG9ubHkgfSBmcm9tICd2dWUtZGVtaSc7XG5cbmZ1bmN0aW9uIGlzQ29tcG9uZW50UHVibGljSW5zdGFuY2UodGFyZ2V0KSB7XG4gIHJldHVybiB0YXJnZXQgIT0gbnVsbCAmJiB0eXBlb2YgdGFyZ2V0ID09PSAnb2JqZWN0JyAmJiAnJGVsJyBpbiB0YXJnZXQ7XG59XG5mdW5jdGlvbiB1bndyYXBFbGVtZW50KHRhcmdldCkge1xuICBpZiAoaXNDb21wb25lbnRQdWJsaWNJbnN0YW5jZSh0YXJnZXQpKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRhcmdldC4kZWw7XG4gICAgcmV0dXJuIGlzTm9kZShlbGVtZW50KSAmJiBnZXROb2RlTmFtZShlbGVtZW50KSA9PT0gJyNjb21tZW50JyA/IG51bGwgOiBlbGVtZW50O1xuICB9XG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIHRvVmFsdWUoc291cmNlKSB7XG4gIHJldHVybiB0eXBlb2Ygc291cmNlID09PSAnZnVuY3Rpb24nID8gc291cmNlKCkgOiB1bnJlZihzb3VyY2UpO1xufVxuXG4vKipcbiAqIFBvc2l0aW9ucyBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHN1Y2ggdGhhdCBpdCBpcyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAcGFyYW0gb3B0aW9ucyBUaGUgYXJyb3cgb3B0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5mdW5jdGlvbiBhcnJvdyhvcHRpb25zKSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2Fycm93JyxcbiAgICBvcHRpb25zLFxuICAgIGZuKGFyZ3MpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB1bndyYXBFbGVtZW50KHRvVmFsdWUob3B0aW9ucy5lbGVtZW50KSk7XG4gICAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJvdyQxKHtcbiAgICAgICAgZWxlbWVudCxcbiAgICAgICAgcGFkZGluZzogb3B0aW9ucy5wYWRkaW5nXG4gICAgICB9KS5mbihhcmdzKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldERQUihlbGVtZW50KSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiAxO1xuICB9XG4gIGNvbnN0IHdpbiA9IGVsZW1lbnQub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3c7XG4gIHJldHVybiB3aW4uZGV2aWNlUGl4ZWxSYXRpbyB8fCAxO1xufVxuXG5mdW5jdGlvbiByb3VuZEJ5RFBSKGVsZW1lbnQsIHZhbHVlKSB7XG4gIGNvbnN0IGRwciA9IGdldERQUihlbGVtZW50KTtcbiAgcmV0dXJuIE1hdGgucm91bmQodmFsdWUgKiBkcHIpIC8gZHByO1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnQgbmV4dCB0byBhIHJlZmVyZW5jZSBlbGVtZW50IHdoZW4gaXQgaXMgZ2l2ZW4gYSBjZXJ0YWluIENTUyBwb3NpdGlvbmluZyBzdHJhdGVneS5cbiAqIEBwYXJhbSByZWZlcmVuY2UgVGhlIHJlZmVyZW5jZSB0ZW1wbGF0ZSByZWYuXG4gKiBAcGFyYW0gZmxvYXRpbmcgVGhlIGZsb2F0aW5nIHRlbXBsYXRlIHJlZi5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBmbG9hdGluZyBvcHRpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3Z1ZVxuICovXG5mdW5jdGlvbiB1c2VGbG9hdGluZyhyZWZlcmVuY2UsIGZsb2F0aW5nLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qgd2hpbGVFbGVtZW50c01vdW50ZWRPcHRpb24gPSBvcHRpb25zLndoaWxlRWxlbWVudHNNb3VudGVkO1xuICBjb25zdCBvcGVuT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTtcbiAgICByZXR1cm4gKF90b1ZhbHVlID0gdG9WYWx1ZShvcHRpb25zLm9wZW4pKSAhPSBudWxsID8gX3RvVmFsdWUgOiB0cnVlO1xuICB9KTtcbiAgY29uc3QgbWlkZGxld2FyZU9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHRvVmFsdWUob3B0aW9ucy5taWRkbGV3YXJlKSk7XG4gIGNvbnN0IHBsYWNlbWVudE9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX3RvVmFsdWUyO1xuICAgIHJldHVybiAoX3RvVmFsdWUyID0gdG9WYWx1ZShvcHRpb25zLnBsYWNlbWVudCkpICE9IG51bGwgPyBfdG9WYWx1ZTIgOiAnYm90dG9tJztcbiAgfSk7XG4gIGNvbnN0IHN0cmF0ZWd5T3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTM7XG4gICAgcmV0dXJuIChfdG9WYWx1ZTMgPSB0b1ZhbHVlKG9wdGlvbnMuc3RyYXRlZ3kpKSAhPSBudWxsID8gX3RvVmFsdWUzIDogJ2Fic29sdXRlJztcbiAgfSk7XG4gIGNvbnN0IHRyYW5zZm9ybU9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX3RvVmFsdWU0O1xuICAgIHJldHVybiAoX3RvVmFsdWU0ID0gdG9WYWx1ZShvcHRpb25zLnRyYW5zZm9ybSkpICE9IG51bGwgPyBfdG9WYWx1ZTQgOiB0cnVlO1xuICB9KTtcbiAgY29uc3QgcmVmZXJlbmNlRWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IHVud3JhcEVsZW1lbnQocmVmZXJlbmNlLnZhbHVlKSk7XG4gIGNvbnN0IGZsb2F0aW5nRWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IHVud3JhcEVsZW1lbnQoZmxvYXRpbmcudmFsdWUpKTtcbiAgY29uc3QgeCA9IHJlZigwKTtcbiAgY29uc3QgeSA9IHJlZigwKTtcbiAgY29uc3Qgc3RyYXRlZ3kgPSByZWYoc3RyYXRlZ3lPcHRpb24udmFsdWUpO1xuICBjb25zdCBwbGFjZW1lbnQgPSByZWYocGxhY2VtZW50T3B0aW9uLnZhbHVlKTtcbiAgY29uc3QgbWlkZGxld2FyZURhdGEgPSBzaGFsbG93UmVmKHt9KTtcbiAgY29uc3QgaXNQb3NpdGlvbmVkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgZmxvYXRpbmdTdHlsZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFN0eWxlcyA9IHtcbiAgICAgIHBvc2l0aW9uOiBzdHJhdGVneS52YWx1ZSxcbiAgICAgIGxlZnQ6ICcwJyxcbiAgICAgIHRvcDogJzAnXG4gICAgfTtcbiAgICBpZiAoIWZsb2F0aW5nRWxlbWVudC52YWx1ZSkge1xuICAgICAgcmV0dXJuIGluaXRpYWxTdHlsZXM7XG4gICAgfVxuICAgIGNvbnN0IHhWYWwgPSByb3VuZEJ5RFBSKGZsb2F0aW5nRWxlbWVudC52YWx1ZSwgeC52YWx1ZSk7XG4gICAgY29uc3QgeVZhbCA9IHJvdW5kQnlEUFIoZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB5LnZhbHVlKTtcbiAgICBpZiAodHJhbnNmb3JtT3B0aW9uLnZhbHVlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pbml0aWFsU3R5bGVzLFxuICAgICAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKFwiICsgeFZhbCArIFwicHgsIFwiICsgeVZhbCArIFwicHgpXCIsXG4gICAgICAgIC4uLihnZXREUFIoZmxvYXRpbmdFbGVtZW50LnZhbHVlKSA+PSAxLjUgJiYge1xuICAgICAgICAgIHdpbGxDaGFuZ2U6ICd0cmFuc2Zvcm0nXG4gICAgICAgIH0pXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcG9zaXRpb246IHN0cmF0ZWd5LnZhbHVlLFxuICAgICAgbGVmdDogeFZhbCArIFwicHhcIixcbiAgICAgIHRvcDogeVZhbCArIFwicHhcIlxuICAgIH07XG4gIH0pO1xuICBsZXQgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwO1xuICBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgaWYgKHJlZmVyZW5jZUVsZW1lbnQudmFsdWUgPT0gbnVsbCB8fCBmbG9hdGluZ0VsZW1lbnQudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBvcGVuID0gb3Blbk9wdGlvbi52YWx1ZTtcbiAgICBjb21wdXRlUG9zaXRpb24ocmVmZXJlbmNlRWxlbWVudC52YWx1ZSwgZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB7XG4gICAgICBtaWRkbGV3YXJlOiBtaWRkbGV3YXJlT3B0aW9uLnZhbHVlLFxuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnRPcHRpb24udmFsdWUsXG4gICAgICBzdHJhdGVneTogc3RyYXRlZ3lPcHRpb24udmFsdWVcbiAgICB9KS50aGVuKHBvc2l0aW9uID0+IHtcbiAgICAgIHgudmFsdWUgPSBwb3NpdGlvbi54O1xuICAgICAgeS52YWx1ZSA9IHBvc2l0aW9uLnk7XG4gICAgICBzdHJhdGVneS52YWx1ZSA9IHBvc2l0aW9uLnN0cmF0ZWd5O1xuICAgICAgcGxhY2VtZW50LnZhbHVlID0gcG9zaXRpb24ucGxhY2VtZW50O1xuICAgICAgbWlkZGxld2FyZURhdGEudmFsdWUgPSBwb3NpdGlvbi5taWRkbGV3YXJlRGF0YTtcbiAgICAgIC8qKlxuICAgICAgICogVGhlIGZsb2F0aW5nIGVsZW1lbnQncyBwb3NpdGlvbiBtYXkgYmUgcmVjb21wdXRlZCB3aGlsZSBpdCdzIGNsb3NlZFxuICAgICAgICogYnV0IHN0aWxsIG1vdW50ZWQgKHN1Y2ggYXMgd2hlbiB0cmFuc2l0aW9uaW5nIG91dCkuIFRvIGVuc3VyZVxuICAgICAgICogYGlzUG9zaXRpb25lZGAgd2lsbCBiZSBgZmFsc2VgIGluaXRpYWxseSBvbiB0aGUgbmV4dCBvcGVuLCBhdm9pZFxuICAgICAgICogc2V0dGluZyBpdCB0byBgdHJ1ZWAgd2hlbiBgb3BlbiA9PT0gZmFsc2VgIChtdXN0IGJlIHNwZWNpZmllZCkuXG4gICAgICAgKi9cbiAgICAgIGlzUG9zaXRpb25lZC52YWx1ZSA9IG9wZW4gIT09IGZhbHNlO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgaWYgKHR5cGVvZiB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHdoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCgpO1xuICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBhdHRhY2goKSB7XG4gICAgY2xlYW51cCgpO1xuICAgIGlmICh3aGlsZUVsZW1lbnRzTW91bnRlZE9wdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB1cGRhdGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHJlZmVyZW5jZUVsZW1lbnQudmFsdWUgIT0gbnVsbCAmJiBmbG9hdGluZ0VsZW1lbnQudmFsdWUgIT0gbnVsbCkge1xuICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwID0gd2hpbGVFbGVtZW50c01vdW50ZWRPcHRpb24ocmVmZXJlbmNlRWxlbWVudC52YWx1ZSwgZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB1cGRhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiByZXNldCgpIHtcbiAgICBpZiAoIW9wZW5PcHRpb24udmFsdWUpIHtcbiAgICAgIGlzUG9zaXRpb25lZC52YWx1ZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICB3YXRjaChbbWlkZGxld2FyZU9wdGlvbiwgcGxhY2VtZW50T3B0aW9uLCBzdHJhdGVneU9wdGlvbiwgb3Blbk9wdGlvbl0sIHVwZGF0ZSwge1xuICAgIGZsdXNoOiAnc3luYydcbiAgfSk7XG4gIHdhdGNoKFtyZWZlcmVuY2VFbGVtZW50LCBmbG9hdGluZ0VsZW1lbnRdLCBhdHRhY2gsIHtcbiAgICBmbHVzaDogJ3N5bmMnXG4gIH0pO1xuICB3YXRjaChvcGVuT3B0aW9uLCByZXNldCwge1xuICAgIGZsdXNoOiAnc3luYydcbiAgfSk7XG4gIGlmIChnZXRDdXJyZW50U2NvcGUoKSkge1xuICAgIG9uU2NvcGVEaXNwb3NlKGNsZWFudXApO1xuICB9XG4gIHJldHVybiB7XG4gICAgeDogc2hhbGxvd1JlYWRvbmx5KHgpLFxuICAgIHk6IHNoYWxsb3dSZWFkb25seSh5KSxcbiAgICBzdHJhdGVneTogc2hhbGxvd1JlYWRvbmx5KHN0cmF0ZWd5KSxcbiAgICBwbGFjZW1lbnQ6IHNoYWxsb3dSZWFkb25seShwbGFjZW1lbnQpLFxuICAgIG1pZGRsZXdhcmVEYXRhOiBzaGFsbG93UmVhZG9ubHkobWlkZGxld2FyZURhdGEpLFxuICAgIGlzUG9zaXRpb25lZDogc2hhbGxvd1JlYWRvbmx5KGlzUG9zaXRpb25lZCksXG4gICAgZmxvYXRpbmdTdHlsZXMsXG4gICAgdXBkYXRlXG4gIH07XG59XG5cbmV4cG9ydCB7IGFycm93LCB1c2VGbG9hdGluZyB9O1xuIiwiZXhwb3J0IGNvbnN0IGlzQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50LCBlbGVtZW50czogSFRNTEVsZW1lbnQgfCBIVE1MRWxlbWVudFtdKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHRhcmdldHMgPSBBcnJheS5pc0FycmF5KGVsZW1lbnRzKSA/IGVsZW1lbnRzIDogW2VsZW1lbnRzXTtcbiAgcmV0dXJuICF0YXJnZXRzLnNvbWUoKGVsKSA9PiBlbC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgcG9wb3ZlciBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBkaXNwbGF5aW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVwb3BvdmVyLS1kb2NzKSBmb3IgVGlkZVBvcG92ZXJcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIG9mZnNldCBhcyBvZmZzZXRNaWRkbGV3YXJlLCBzaGlmdCwgdXNlRmxvYXRpbmcgfSBmcm9tICdAZmxvYXRpbmctdWkvdnVlJztcbiAgaW1wb3J0IHsgY29tcHV0ZWQsIG9uQmVmb3JlTW91bnQsIG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIHJlZiwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGlzQ2xpY2tPdXRzaWRlIH0gZnJvbSAnQC91dGlsaXRpZXMvZXZlbnQnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgdGhlIEhUTUwgbm9kZSBvdmVyIHdoaWNoIHRoZSBQb3BvdmVyIHdpbGwgYXBwZWFyICovXG4gICAgYW5jaG9ySWQ6IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHNwYWNpbmcgYmV0d2VlbiBQb3BvdmVyIGFuZCBhbmNob3Igbm9kZSAqL1xuICAgIG9mZnNldD86IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIG9mZnNldDogMTYsXG4gIH0pO1xuXG4gIGNvbnN0IGFuY2hvcjogUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4gPSByZWYobnVsbCk7XG4gIGNvbnN0IGZsb2F0aW5nOiBSZWY8SFRNTEVsZW1lbnQgfCBudWxsPiA9IHJlZihudWxsKTtcbiAgY29uc3Qgcm9vdDogUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4gPSByZWYobnVsbCk7XG4gIGNvbnN0IGlzSG92ZXJlZCA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlzVG9nZ2xlZE9wZW4gPSByZWYoZmFsc2UpO1xuICBjb25zdCBtaWRkbGV3YXJlID0gcmVmKFthdXRvUGxhY2VtZW50KCksIG9mZnNldE1pZGRsZXdhcmUoeyBtYWluQXhpczogcHJvcHMub2Zmc2V0IH0pLCBzaGlmdCh7IHBhZGRpbmc6IDE2IH0pXSk7XG5cbiAgY29uc3QgaXNTaG93UG9wb3ZlciA9IGNvbXB1dGVkKCgpID0+IGlzSG92ZXJlZC52YWx1ZSB8fCBpc1RvZ2dsZWRPcGVuLnZhbHVlKTtcblxuICBjb25zdCB7IGZsb2F0aW5nU3R5bGVzIH0gPSB1c2VGbG9hdGluZyhhbmNob3IsIGZsb2F0aW5nLCB7XG4gICAgbWlkZGxld2FyZSxcbiAgICBzdHJhdGVneTogJ2ZpeGVkJyxcbiAgICB3aGlsZUVsZW1lbnRzTW91bnRlZDogYXV0b1VwZGF0ZSxcbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCFhbmNob3IudmFsdWUgfHwgIWZsb2F0aW5nLnZhbHVlKSByZXR1cm47XG4gICAgaWYgKGlzQ2xpY2tPdXRzaWRlKGUsIFthbmNob3IudmFsdWUsIGZsb2F0aW5nLnZhbHVlXSkpIHtcbiAgICAgIGlzVG9nZ2xlZE9wZW4udmFsdWUgPSBmYWxzZTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIgPSAoKSA9PiB7XG4gICAgaXNIb3ZlcmVkLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VMZWF2ZSA9ICgpID0+IHtcbiAgICBpc0hvdmVyZWQudmFsdWUgPSBmYWxzZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVBbmNob3JFbGVtZW50Q2xpY2sgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoaXNUb2dnbGVkT3Blbi52YWx1ZSkge1xuICAgICAgaXNUb2dnbGVkT3Blbi52YWx1ZSA9IGZhbHNlO1xuICAgICAgaXNIb3ZlcmVkLnZhbHVlID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlzVG9nZ2xlZE9wZW4udmFsdWUgPSB0cnVlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBhZGRMaXN0ZW5lcnNUb0FuY2hvckVsZW1lbnQgPSAoKSA9PiB7XG4gICAgaWYgKCFhbmNob3IudmFsdWUpIHJldHVybiBudWxsO1xuICAgIGFuY2hvci52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VPdmVyKTtcbiAgICBhbmNob3IudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlKTtcbiAgICBhbmNob3IudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVBbmNob3JFbGVtZW50Q2xpY2spO1xuICB9O1xuXG4gIGNvbnN0IHJlbW92ZUxpc3RlbmVyc0Zyb21BbmNob3JFbGVtZW50ID0gKCkgPT4ge1xuICAgIGlmICghYW5jaG9yLnZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICBhbmNob3IudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlT3Zlcik7XG4gICAgYW5jaG9yLnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VMZWF2ZSk7XG4gICAgYW5jaG9yLnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24gPSAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIGlzVG9nZ2xlZE9wZW4udmFsdWUgPSBmYWxzZTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgYWRkT3Blbkxpc3RlbmVyc1RvUm9vdCA9ICgpID0+IHtcbiAgICBpZiAoIXJvb3QudmFsdWUpIHJldHVybjtcbiAgICByb290LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljaywgdHJ1ZSk7XG4gICAgcm9vdC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlLZXlkb3duKTtcbiAgfTtcblxuICBjb25zdCByZW1vdmVPcGVuTGlzdGVuZXJzRnJvbVJvb3QgPSAoKSA9PiB7XG4gICAgaWYgKCFyb290LnZhbHVlKSByZXR1cm47XG4gICAgcm9vdC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5Q2xpY2ssIHRydWUpO1xuICAgIHJvb3QudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5S2V5ZG93bik7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlQW5jaG9yRWxlbWVudCA9ICgpID0+IHtcbiAgICBhbmNob3IudmFsdWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChwcm9wcy5hbmNob3JJZCk7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gaXNUb2dnbGVkT3Blbi52YWx1ZSxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkge1xuICAgICAgICBhZGRPcGVuTGlzdGVuZXJzVG9Sb290KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZW1vdmVPcGVuTGlzdGVuZXJzRnJvbVJvb3QoKTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuYW5jaG9ySWQsXG4gICAgKCkgPT4ge1xuICAgICAgcmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQoKTtcbiAgICAgIHVwZGF0ZUFuY2hvckVsZW1lbnQoKTtcbiAgICAgIGFkZExpc3RlbmVyc1RvQW5jaG9yRWxlbWVudCgpO1xuICAgIH1cbiAgKTtcblxuICB3YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgbWlkZGxld2FyZS52YWx1ZSA9IFthdXRvUGxhY2VtZW50KCksIG9mZnNldE1pZGRsZXdhcmUoeyBtYWluQXhpczogcHJvcHMub2Zmc2V0IH0pLCBzaGlmdCh7IHBhZGRpbmc6IDE2IH0pXTtcbiAgfSk7XG5cbiAgb25CZWZvcmVNb3VudCgoKSA9PiB7XG4gICAgaW5pdEZhdXhUb3BMYXllcigpO1xuICB9KTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIHVwZGF0ZUFuY2hvckVsZW1lbnQoKTtcbiAgICByb290LnZhbHVlID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgIGFkZExpc3RlbmVyc1RvQW5jaG9yRWxlbWVudCgpO1xuICB9KTtcblxuICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgcmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQoKTtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8VGVsZXBvcnQgOnRvPVwiYCMke1RPUF9MQVlFUl9JRH1gXCI+XG4gICAgPFRyYW5zaXRpb24+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1wb3BvdmVyJyxcbiAgICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICAgIENTUy5CT1JERVIuQ09MT1IuTE9XLFxuICAgICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMixcbiAgICAgICAgICBDU1MuUEFERElORy5GVUxMLk9ORSxcbiAgICAgICAgICBDU1MuU0hBRE9XLkJPVFRPTSxcbiAgICAgICAgXVwiXG4gICAgICAgIHJlZj1cImZsb2F0aW5nXCJcbiAgICAgICAgOnN0eWxlPVwieyAuLi5mbG9hdGluZ1N0eWxlcyB9XCJcbiAgICAgICAgdi1zaG93PVwiaXNTaG93UG9wb3ZlclwiXG4gICAgICA+XG4gICAgICAgIDxzbG90IC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L1RyYW5zaXRpb24+XG4gIDwvVGVsZXBvcnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1wb3BvdmVyIHtcbiAgICBtYXgtd2lkdGg6IDI1NnB4O1xuICB9XG4gIC52LWVudGVyLWZyb20sXG4gIC52LWxlYXZlLXRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIC52LWVudGVyLWFjdGl2ZSxcbiAgLnYtbGVhdmUtYWN0aXZlIHtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cbiAgLnYtZW50ZXItdG8sXG4gIC52LWxlYXZlLWZyb20ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIHJhdGluZyBjb21wb25lbnQgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgZGlzcGxheWluZyBhbmQgc2VsZWN0aW5nIGEgcmF0aW5nLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlcmF0aW5nLS1kb2NzKSBmb3IgVGlkZVJhdGluZ1xuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBEZXRlcm1pbmVzIHRoZSB0ZXh0IGRpc3BsYXllZCBiZWxvdyB0aGUgdGl0bGUgKi9cbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAgIC8qKiBNYXhpbXVtIHJhdGluZyB2YWx1ZSAvIE51bWJlciBvZiBzZWdtZW50cyAqL1xuICAgIG1heFJhdGluZz86IG51bWJlcjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gZGlzcGxheSB0aGUgY3VycmVudCByYXRpbmcgdmFsdWUgKi9cbiAgICBzaG93UmF0aW5nPzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHRoZSB0aXRsZSB0ZXh0IGRpc3BsYXllZCBhYm92ZSB0aGUgcmF0aW5nIGNvbXBvbmVudCAqL1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGVzY3JpcHRpb246IHVuZGVmaW5lZCxcbiAgICBtYXhSYXRpbmc6IDEwLFxuICAgIHNob3dSYXRpbmc6IGZhbHNlLFxuICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IHJhdGluZ1ZhbHVlID0gZGVmaW5lTW9kZWw8bnVtYmVyPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IHNlZ21lbnRzID0gY29tcHV0ZWQoKCkgPT4gQXJyYXkuZnJvbSh7IGxlbmd0aDogcHJvcHMubWF4UmF0aW5nIH0sIChfLCBpbmRleCkgPT4gaW5kZXggKyAxKSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoc2VnbWVudDogbnVtYmVyKSA9PiB7XG4gICAgcmF0aW5nVmFsdWUudmFsdWUgPSBzZWdtZW50O1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtcmF0aW5nJywgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgPHNlY3Rpb24gOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5BWElTMS5CRVRXRUVOLCBDU1MuUEFERElORy5CT1RUT00uSEFMRl1cIj5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMl1cIj5cbiAgICAgICAge3sgcHJvcHMudGl0bGUgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8zLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgdi1pZj1cInByb3BzLnNob3dSYXRpbmdcIlxuICAgICAgPlxuICAgICAgICB7eyByYXRpbmdWYWx1ZSB9fS97eyBwcm9wcy5tYXhSYXRpbmcgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbiAgICA8c2VjdGlvblxuICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuQk9EWV8yLCBDU1MuUEFERElORy5CT1RUT00uT05FLCBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLCBDU1MuRUxMSVBTSVNdXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5kZXNjcmlwdGlvblwiXG4gICAgPlxuICAgICAge3sgcHJvcHMuZGVzY3JpcHRpb24gfX1cbiAgICA8L3NlY3Rpb24+XG5cbiAgICA8c2VjdGlvbiA6Y2xhc3M9XCJbJ3RpZGUtcmF0aW5nLWJhcicsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLkZMRVguR1JPVy5PTiwgQ1NTLkZMRVguU0hSSU5LLk9OXVwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtcmF0aW5nLXNlZ21lbnQnLFxuICAgICAgICAgIENTUy5CRy5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICAgICAgQ1NTLkZMRVguR1JPVy5PTixcbiAgICAgICAgICBDU1MuRkxFWC5TSFJJTksuT04sXG4gICAgICAgICAgQ1NTLkZMRVguQkFTSVMuWkVSTyxcbiAgICAgICAgICBDU1MuQk9SREVSLkZVTEwuWkVSTyxcbiAgICAgICAgICBzZWdtZW50ID09PSAxICYmIFsndGlkZS1yYXRpbmctc2VnbWVudC1maXJzdCddLFxuICAgICAgICAgIHNlZ21lbnQgPT09IHNlZ21lbnRzLmxlbmd0aCAmJiBbJ3RpZGUtcmF0aW5nLXNlZ21lbnQtbGFzdCddLFxuICAgICAgICAgIHNlZ21lbnQgPD0gcmF0aW5nVmFsdWUgJiYgW0NTUy5CRy5TVVJGQUNFLkdSQURJRU5UXSxcbiAgICAgICAgXVwiXG4gICAgICAgIDprZXk9XCJzZWdtZW50XCJcbiAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2soc2VnbWVudClcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdi1mb3I9XCJzZWdtZW50IGluIHNlZ21lbnRzXCJcbiAgICAgIC8+XG4gICAgPC9zZWN0aW9uPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLXJhdGluZy1iYXIge1xuICAgIGhlaWdodDogMjhweDtcbiAgfVxuXG4gIC50aWRlLXJhdGluZy1zZWdtZW50IHtcbiAgICBjbGlwLXBhdGg6IHBvbHlnb24oMTIlIDAsIDEwMCUgMCwgODglIDEwMCUsIDAgMTAwJSk7XG4gIH1cblxuICAudGlkZS1yYXRpbmctc2VnbWVudC1maXJzdCB7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogOTk5OXB4O1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDk5OTlweDtcbiAgICBjbGlwLXBhdGg6IHBvbHlnb24oMCAwLCAxMDAlIDAsIDg4JSAxMDAlLCAwIDEwMCUpO1xuICB9XG5cbiAgLnRpZGUtcmF0aW5nLXNlZ21lbnQtbGFzdCB7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDk5OTlweDtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogOTk5OXB4O1xuICAgIGNsaXAtcGF0aDogcG9seWdvbigxMiUgMCwgMTAwJSAwLCAxMDAlIDEwMCUsIDAgMTAwJSk7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgdHlwZSB7IFJlYWxtS2V5IH0gZnJvbSAnQC90eXBlcy9SZWFsbSc7XG5cbmV4cG9ydCBjb25zdCBTSVpFX0xPR08gPSB7XG4gIExBUkdFOiAnbGFyZ2UnLFxuICBNQVJLOiAnbWFyaycsXG4gIFNNQUxMOiAnc21hbGwnLFxufSBhcyBjb25zdDtcbnR5cGUgU2l6ZUxvZ29LZXkgPSBrZXlvZiB0eXBlb2YgU0laRV9MT0dPO1xuZXhwb3J0IHR5cGUgU2l6ZUxvZ28gPSAodHlwZW9mIFNJWkVfTE9HTylbU2l6ZUxvZ29LZXldO1xuXG5leHBvcnQgY29uc3QgTE9HT19IRUlHSFQgPSB7XG4gIExBUkdFOiAzMixcbiAgU01BTEw6IDI0LFxufTtcblxuZXhwb3J0IGNvbnN0IExPR09fTEFSR0VfV0lEVEg6IFJlY29yZDxSZWFsbUtleSwgbnVtYmVyPiA9IHtcbiAgQUVSTzogMTg2LFxuICBBVFY6IDE5MixcbiAgQk9BVE1BUlQ6IDE1MixcbiAgQ1lDTEU6IDE2OSxcbiAgRVFVSVBNRU5UOiAxMTIsXG4gIFBXQzogMTc3LFxuICBSVjogMTY5LFxuICBTTk9XOiAxNTAsXG4gIFRSVUNLOiAxODUsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgTE9HT19NQVJLX1dJRFRIOiBSZWNvcmQ8UmVhbG1LZXksIG51bWJlcj4gPSB7XG4gIEFFUk86IDMyLFxuICBBVFY6IDMyLFxuICBCT0FUTUFSVDogMzMsXG4gIENZQ0xFOiAzMixcbiAgRVFVSVBNRU5UOiAzNyxcbiAgUFdDOiAzMixcbiAgUlY6IDMyLFxuICBTTk9XOiAzMixcbiAgVFJVQ0s6IDMyLFxufSBhcyBjb25zdDtcbiIsImltcG9ydCB7IFJFQUxNIH0gZnJvbSAnQC90eXBlcy9SZWFsbSc7XG5cbmltcG9ydCB0eXBlIHsgUmVhbG0sIFJlYWxtS2V5IH0gZnJvbSAnQC90eXBlcy9SZWFsbSc7XG5cbmV4cG9ydCBjb25zdCBnZXRSZWFsbUtleUZyb21SZWFsbSA9IChyZWFsbTogUmVhbG0pOiBSZWFsbUtleSA9PiB7XG4gIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhSRUFMTSkgYXMgW1JlYWxtS2V5LCBSZWFsbV1bXTtcblxuICBjb25zdCBtYXRjaCA9IGVudHJpZXMuZmluZCgoZW50cnkpOiBlbnRyeSBpcyBbUmVhbG1LZXksIFJlYWxtXSA9PiB7XG4gICAgcmV0dXJuIGVudHJ5WzFdID09PSByZWFsbTtcbiAgfSk7XG5cbiAgaWYgKCFtYXRjaCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgTWFwcGluZyBmb3IgJHtyZWFsbX0gbm90IGZvdW5kYCk7XG4gIH1cblxuICByZXR1cm4gbWF0Y2hbMF07XG59O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSByZWFsbSBsb2dvIGNvbXBvbmVudCBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBkaXNwbGF5aW5nIGEgcmVhbG0ncyBsb2dvLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlcmVhbG1sb2dvLS1kb2NzKSBmb3IgVGlkZVJlYWxtTG9nb1xuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIGRlZmluZUFzeW5jQ29tcG9uZW50LCBtYXJrUmF3LCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBMT0dPX0hFSUdIVCwgTE9HT19MQVJHRV9XSURUSCwgTE9HT19NQVJLX1dJRFRILCBTSVpFX0xPR08gfSBmcm9tICdAL3R5cGVzL1JlYWxtTG9nbyc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZ2V0UmVhbG1LZXlGcm9tUmVhbG0gfSBmcm9tICdAL3V0aWxpdGllcy9yZWFsbSc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWFsbSB9IGZyb20gJ0AvdHlwZXMvUmVhbG0nO1xuICBpbXBvcnQgdHlwZSB7IFNpemVMb2dvIH0gZnJvbSAnQC90eXBlcy9SZWFsbUxvZ28nO1xuICBpbXBvcnQgdHlwZSB7IENvbXBvbmVudCB9IGZyb20gJ3Z1ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB0aGUgc2l6ZSBvZiB0aGUgbG9nbyBvciBtYXJrICovXG4gICAgc2l6ZTogU2l6ZUxvZ287XG5cbiAgICAvKiogU2V0cyB0aGUgcmVhbG0gZm9yIHRoaXMgbG9nbyBpbnN0YW5jZSAqL1xuICAgIHJlYWxtOiBSZWFsbTtcbiAgfTtcbiAgY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczxQcm9wcz4oKTtcblxuICBjb25zdCBpbm5lclNWRyA9IHJlZjxDb21wb25lbnQ+KCk7XG5cbiAgY29uc3QgbG9nb1dpZHRoID0gY29tcHV0ZWQ8bnVtYmVyPigoKSA9PiB7XG4gICAgaWYgKHByb3BzLnNpemUgPT09IFNJWkVfTE9HTy5NQVJLKSByZXR1cm4gTE9HT19NQVJLX1dJRFRIW2dldFJlYWxtS2V5RnJvbVJlYWxtKHByb3BzLnJlYWxtKV07XG4gICAgY29uc3QgZnVsbExvZ29XaWR0aCA9IExPR09fTEFSR0VfV0lEVEhbZ2V0UmVhbG1LZXlGcm9tUmVhbG0ocHJvcHMucmVhbG0pXTtcbiAgICBpZiAocHJvcHMuc2l6ZSA9PT0gU0laRV9MT0dPLlNNQUxMKSB7XG4gICAgICBjb25zdCBzaHJpbmtGYWN0b3IgPSBMT0dPX0hFSUdIVC5TTUFMTCAvIExPR09fSEVJR0hULkxBUkdFO1xuICAgICAgcmV0dXJuIE1hdGgucm91bmQoZnVsbExvZ29XaWR0aCAqIHNocmlua0ZhY3Rvcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmdWxsTG9nb1dpZHRoO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgbG9nb0hlaWdodCA9IGNvbXB1dGVkPG51bWJlcj4oKCkgPT4gKHByb3BzLnNpemUgPT09IFNJWkVfTE9HTy5TTUFMTCA/IExPR09fSEVJR0hULlNNQUxMIDogTE9HT19IRUlHSFQuTEFSR0UpKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBbcHJvcHMuc2l6ZSwgcHJvcHMucmVhbG1dLFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRlZmluZUFzeW5jQ29tcG9uZW50KCgpID0+IHtcbiAgICAgICAgaWYgKHByb3BzLnNpemUgPT09IFNJWkVfTE9HTy5NQVJLKVxuICAgICAgICAgIHJldHVybiBpbXBvcnQoYC4uL2Fzc2V0cy9zdmcvYnJhbmRpbmcvbWFyay9tYXJrLSR7cHJvcHMucmVhbG19LnN2Zz9jb21wb25lbnRgKTtcbiAgICAgICAgZWxzZSByZXR1cm4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2JyYW5kaW5nL2xvZ28vbG9nby0ke3Byb3BzLnJlYWxtfS5zdmc/Y29tcG9uZW50YCk7XG4gICAgICB9KTtcbiAgICAgIGlubmVyU1ZHLnZhbHVlID0gbWFya1Jhdyhjb21wb25lbnQpO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIlsndGlkZS1yZWFsbS1sb2dvJ11cIlxuICAgIDpzdHlsZT1cIntcbiAgICAgICctLXRpZGUtbG9nby13aWR0aCc6IGAke2xvZ29XaWR0aH1weGAsXG4gICAgICAnLS10aWRlLWxvZ28taGVpZ2h0JzogYCR7bG9nb0hlaWdodH1weGAsXG4gICAgfVwiXG4gID5cbiAgICA8Q29tcG9uZW50XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuQkxPQ0tdXCJcbiAgICAgIDppcz1cImlubmVyU1ZHXCJcbiAgICAgIHYtaWY9XCJpbm5lclNWR1wiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGU+XG4gIC50aWRlLXJlYWxtLWxvZ28ge1xuICAgIHdpZHRoOiB2YXIoLS10aWRlLWxvZ28td2lkdGgpO1xuICAgIGhlaWdodDogdmFyKC0tdGlkZS1sb2dvLWhlaWdodCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IExpbmsgfSBmcm9tICdAL3R5cGVzL0xpbmsnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaGVhZGluZz86IHN0cmluZztcbiAgICBsaW5rczogTGlua1tdO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaGVhZGluZzogJycsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb24gY2xhc3M9XCJ0aWRlLXNlby1saW5rc1wiPlxuICAgIDxoMiA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5CT1RUT00uSEFMRl1cIj5cbiAgICAgIHt7IHByb3BzLmhlYWRpbmcgfX1cbiAgICA8L2gyPlxuXG4gICAgPHVsIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5XUkFQLCBDU1MuR0FQLlRXTywgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCI+XG4gICAgICA8bGlcbiAgICAgICAgOmNsYXNzPVwiWyd0aWRlLXNlby1saW5rJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuRk9OVC5ST0xFLkJPRFlfMl1cIlxuICAgICAgICA6a2V5PVwibGluay5sYWJlbFwiXG4gICAgICAgIHYtZm9yPVwibGluayBpbiBwcm9wcy5saW5rc1wiXG4gICAgICA+XG4gICAgICAgIDxJbnRlcm5hbEJhc2VMaW5rXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5VTkRFUkxJTkUuUkVTVC5PRkZdXCJcbiAgICAgICAgICA6aHJlZj1cImxpbmsudXJsXCJcbiAgICAgICAgICA6dGFyZ2V0PVwibGluay5pc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IFRBUkdFVC5TRUxGXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGxpbmsubGFiZWwgfX1cbiAgICAgICAgPC9JbnRlcm5hbEJhc2VMaW5rPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAvKiBUT0RPOiBSZWZhY3RvciB0byBhY2NlcHQgYnJlYWtwb2ludCBwcm9wIGluIG9yZGVyIHRvIGFjY29tcGxpc2ggdGhpcyB3aXRoIG5laXRoZXIgY3VzdG9tIGJyZWFrcG9pbnRzIG5vciBkZXBlbmRlbmN5IG9uIFZpZXdwb3J0U3RvcmUuICovXG4gIC50aWRlLXNlby1saW5rIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAgIC50aWRlLXNlby1saW5rIHtcbiAgICAgIHdpZHRoOiBjYWxjKCgxMDAlIC0gMnJlbSkgLyAyKTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogMTIzMnB4KSB7XG4gICAgLnRpZGUtc2VvLWxpbmsge1xuICAgICAgd2lkdGg6IGNhbGMoKDEwMCUgLSA2cmVtKSAvIDQpO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgc2hlZXQgY29tcG9uZW50IGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIGRpc3BsYXlpbmcgY29udGVudCBpbiBhIG1vZGFsLWxpa2UgbWVudSBvdmVybGF5IG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBzY3JlZW4uXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVzaGVldC0tZG9jcykgZm9yIFRpZGVTaGVldFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgb25CZWZvcmVNb3VudCwgb25CZWZvcmVVbm1vdW50LCBvbk1vdW50ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IFRpZGVEaXZpZGVyIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlRGl2aWRlci52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIsIHNldFNjcm9sbExvY2sgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIENvbnRyb2xzIGRpc3BsYXkgb2YgdGhlIGJhY2sgYnV0dG9uLiAqL1xuICAgIGlzQmFja0J1dHRvbj86IGJvb2xlYW47XG4gIH07XG5cbiAgd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaXNCYWNrQnV0dG9uOiBmYWxzZSxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZTogJ2JhY2snKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgZGlhbG9nRWxlbWVudDogUmVmPEhUTUxEaWFsb2dFbGVtZW50IHwgbnVsbD4gPSByZWYobnVsbCk7XG5cbiAgY29uc3QgaXNPcGVuID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbiA9ICgpID0+IHtcbiAgICBkaWFsb2dFbGVtZW50LnZhbHVlPy5zaG93TW9kYWwoKTtcbiAgICBzZXRTY3JvbGxMb2NrKHRydWUpO1xuICB9O1xuXG4gIGNvbnN0IHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSA9ICgpID0+IHtcbiAgICBkaWFsb2dFbGVtZW50LnZhbHVlPy5jbG9zZSgpO1xuICAgIHNldFNjcm9sbExvY2soZmFsc2UpO1xuICB9O1xuXG4gIGNvbnN0IGNsb3NlID0gKCkgPT4ge1xuICAgIGlzT3Blbi52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUJhY2tkcm9wQ2xpY2sgPSAoKSA9PiB7XG4gICAgY2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVFc2NhcGVLZXlkb3duID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNsb3NlKCk7XG4gIH07XG5cbiAgd2F0Y2goaXNPcGVuLCAoKSA9PiB7XG4gICAgaWYgKCFkaWFsb2dFbGVtZW50LnZhbHVlKSByZXR1cm47XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlKCk7XG4gICAgfVxuICB9KTtcblxuICBvbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICBpbml0RmF1eFRvcExheWVyKCk7XG4gIH0pO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICB9XG4gIH0pO1xuXG4gIG9uQmVmb3JlVW5tb3VudCgoKSA9PiB7XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgaXNPcGVuLnZhbHVlID0gZmFsc2U7XG4gICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UoKTtcbiAgICB9XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFRlbGVwb3J0IDp0bz1cImAjJHtUT1BfTEFZRVJfSUR9YFwiPlxuICAgIDxkaWFsb2dcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1zaGVldCcsIENTUy5CRy5JTklUSUFMLCBDU1MuSEVJR0hULkZVTEwsIENTUy5XSURUSC5GVUxMLCBDU1MuT1ZFUkZMT1cuWFkuSElEREVOXVwiXG4gICAgICByZWY9XCJkaWFsb2dFbGVtZW50XCJcbiAgICAgIEBjbGljay5zZWxmPVwiaGFuZGxlQmFja2Ryb3BDbGlja1wiXG4gICAgICBAY2xvc2UucHJldmVudFxuICAgICAgQGtleWRvd24uZXNjYXBlPVwiaGFuZGxlRXNjYXBlS2V5ZG93blwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtc2hlZXQtYm9keScsXG4gICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIF1cIlxuICAgICAgPlxuICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICAgIENTUy5JU09MQVRJT04uSVNPTEFURSxcbiAgICAgICAgICAgIENTUy5QQURESU5HLlRPUC5PTkUsXG4gICAgICAgICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgICAgIENTUy5aX0lOREVYLk9ORSxcbiAgICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLkdST1cuT0ZGLCBDU1MuRkxFWC5TSFJJTksuT0ZGXVwiXG4gICAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgICAgQGNsaWNrPVwiZW1pdCgnYmFjaycpXCJcbiAgICAgICAgICAgIHYtaWY9XCJpc0JhY2tCdXR0b25cIlxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRiwgQ1NTLk1BUkdJTi5MRUZULkFVVE9dXCJcbiAgICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICAgIEBjbGljaz1cImNsb3NlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICA8VGlkZURpdmlkZXIgLz5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtc2hlZXQtY29udGVudCcsXG4gICAgICAgICAgICBDU1MuRElTUExBWS5HUklELFxuICAgICAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgICAgQ1NTLk9WRVJGTE9XLlguSElEREVOLFxuICAgICAgICAgICAgQ1NTLk9WRVJGTE9XLlkuQVVUTyxcbiAgICAgICAgICAgIENTUy5QQURESU5HLkJPVFRPTS5PTkUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzbG90IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaWFsb2c+XG4gIDwvVGVsZXBvcnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1zaGVldCB7XG4gICAgLS1zaGVldC1wYWRkaW5nLXg6IHZhcigtLXRpZGUtc3BhY2luZy0xKTtcbiAgICBtYXgtd2lkdGg6IHVuc2V0O1xuICAgIG1heC1oZWlnaHQ6IHVuc2V0O1xuICAgIGp1c3RpZnktaXRlbXM6IHJpZ2h0O1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpZGUtYW5pbWF0ZSkgYWxsb3ctZGlzY3JldGU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXRbb3Blbl0ge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0OjpiYWNrZHJvcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpZGUtYW5pbWF0ZSkgYWxsb3ctZGlzY3JldGU7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDBweCk7XG4gIH1cblxuICAudGlkZS1zaGVldFtvcGVuXTo6YmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtdHJhbnNwYXJlbnQtNDAwKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IHZhcigtLXRpZGUtYmctYmx1cik7XG4gIH1cblxuICAudGlkZS1zaGVldC1ib2R5IHtcbiAgICBtYXgtd2lkdGg6IG1pbihjYWxjKDEwMHZ3IC0gdmFyKC0tdGlkZS1zcGFjaW5nLTIpKSwgMzExcHgpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXQtY29udGVudCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiB2YXIoLS1zaGVldC1wYWRkaW5nLXgpIHZhcigtLXRpZGUtc2FmZS1mcikgdmFyKC0tc2hlZXQtcGFkZGluZy14KTtcbiAgfVxuXG4gIDp3aGVyZSgudGlkZS1zaGVldC1jb250ZW50KTpkZWVwKD4gOndoZXJlKCopKSB7XG4gICAgZ3JpZC1jb2x1bW46IDI7XG4gIH1cblxuICBAc3RhcnRpbmctc3R5bGUge1xuICAgIC50aWRlLXNoZWV0W29wZW5dIHtcbiAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgfVxuXG4gICAgLnRpZGUtc2hlZXRbb3Blbl06OmJhY2tkcm9wIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYmFja2Ryb3AtZmlsdGVyOiB2YXIoLS10aWRlLWJnLWJsdXIpO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgc3dpdGNoIGNvbXBvbmVudCBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciB0b2dnbGluZyBhIGJvb2xlYW4gdmFsdWUuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVzd2l0Y2gtLWRvY3MpIGZvciBUaWRlU3dpdGNoXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgY2xpY2thYmlsaXR5ICovXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCBpc0FjdGl2ZSA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKCFwcm9wcy5kaXNhYmxlZCkge1xuICAgICAgaXNBY3RpdmUudmFsdWUgPSAhaXNBY3RpdmUudmFsdWU7XG4gICAgfVxuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGJ1dHRvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLXN3aXRjaCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gICAgICBDU1MuRkxFWC5HUk9XLk9GRixcbiAgICAgIGlzQWN0aXZlID8gWydhY3RpdmUnLCBDU1MuQkcuU0VDT05EQVJZXSA6IFtDU1MuQkcuU1VSRkFDRS5ERUZBVUxULCBDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFRdLFxuICAgICAgZGlzYWJsZWQgJiYgW0NTUy5PUEFDSVRZLkRJU0FCTEVEXSxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2tcIlxuICAgIGFyaWEtbGFiZWw9XCJTd2l0Y2hcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1zd2l0Y2gtaW5kaWNhdG9yJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBpc0FjdGl2ZSA/IFsnYWN0aXZlJywgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF0gOiBbQ1NTLkJHLlNFQ09OREFSWV0sXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJJQ09OLkNIRUNLXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtc3dpdGNoIHtcbiAgICAtLXN3aXRjaC1pbmRpY2F0b3Itc2l6ZTogMjRweDtcbiAgICAtLXN3aXRjaC1pbmRpY2F0b3ItbWFyZ2luOiB2YXIoLS10aWRlLXNwYWNpbmctMVxcLzQpO1xuICAgIC0tc3dpdGNoLWJvcmRlci13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgLS1zd2l0Y2gtd2lkdGg6IGNhbGModmFyKC0tc3dpdGNoLWluZGljYXRvci1zaXplKSAqIDIgKyB2YXIoLS1zd2l0Y2gtaW5kaWNhdG9yLW1hcmdpbikgKiA0KTtcbiAgICAtLXN3aXRjaC1oZWlnaHQ6IGNhbGModmFyKC0tc3dpdGNoLWluZGljYXRvci1zaXplKSArIHZhcigtLXN3aXRjaC1pbmRpY2F0b3ItbWFyZ2luKSAqIDIpO1xuXG4gICAgd2lkdGg6IHZhcigtLXN3aXRjaC13aWR0aCk7XG4gICAgaGVpZ2h0OiB2YXIoLS1zd2l0Y2gtaGVpZ2h0KTtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IsIGJvcmRlci1jb2xvcjtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaC5hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1zZWNvbmRhcnkpO1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoLWluZGljYXRvciB7XG4gICAgbGVmdDogdmFyKC0tc3dpdGNoLWluZGljYXRvci1tYXJnaW4pO1xuICAgIHRyYW5zaXRpb246IHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdCwgYm9yZGVyLWNvbG9yLCBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoLWluZGljYXRvci5hY3RpdmUge1xuICAgIGxlZnQ6IGNhbGMoXG4gICAgICB2YXIoLS1zd2l0Y2gtd2lkdGgpIC0gdmFyKC0tc3dpdGNoLWluZGljYXRvci1zaXplKSAtIHZhcigtLXN3aXRjaC1pbmRpY2F0b3ItbWFyZ2luKSAtIHZhcigtLXN3aXRjaC1ib3JkZXItd2lkdGgpXG4gICAgKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgdGFicyBjb21wb25lbnQgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgbmF2aWdhdGlvbi5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZXRhYnMtLWRvY3MpIGZvciBUaWRlVGFic1xuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IFRpZGVDYXJvdXNlbCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUNhcm91c2VsLnZ1ZSc7XG4gIGltcG9ydCBUaWRlTGluayBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUxpbmsudnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IFRhYiB9IGZyb20gJ0AvdHlwZXMvVGFiJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBTZXRzIGxhYmVscyBhbmQgY2FsbGJhY2sgZm9yIGVhY2ggdGFiICovXG4gICAgdGFiczogVGFiW107XG4gIH07XG5cbiAgZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG5cbiAgY29uc3QgY3VycmVudFRhYiA9IGRlZmluZU1vZGVsPG51bWJlcj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgY3VycmVudFRhYi52YWx1ZSA9IGluZGV4O1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtdGFicycsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5CT1JERVIuQk9UVE9NLlRXTywgQ1NTLkJPUkRFUi5DT0xPUi5MT1ddXCI+XG4gICAgPFRpZGVDYXJvdXNlbCA6aXMtZmxvYXRpbmc9XCJ0cnVlXCI+XG4gICAgICA8bGlcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QQURESU5HLlguSEFMRl1cIlxuICAgICAgICA6a2V5PVwidGFiLmxhYmVsXCJcbiAgICAgICAgdi1mb3I9XCIodGFiLCBpbmRleCkgaW4gdGFic1wiXG4gICAgICA+XG4gICAgICAgIDxUaWRlTGlua1xuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIGluZGV4ID09PSBjdXJyZW50VGFiID8gW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuQlJBTkRdIDogW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF0sXG4gICAgICAgICAgICBDU1MuUEFERElORy5CT1RUT00uT05FLFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmVsZW1lbnQ9XCJFTEVNRU5ULkJVVFRPTlwiXG4gICAgICAgICAgOmxhYmVsPVwidGFiLmxhYmVsXCJcbiAgICAgICAgICA6c3VidGxlPVwidHJ1ZVwiXG4gICAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2soaW5kZXgpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJbJ3JvdW5kZWQtYm9yZGVyJywgQ1NTLk1BUkdJTi5YLkhBTEYsIGluZGV4ID09PSBjdXJyZW50VGFiICYmIFtDU1MuQkcuUFJJTUFSWV1dXCIgLz5cbiAgICAgIDwvbGk+XG4gICAgPC9UaWRlQ2Fyb3VzZWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnJvdW5kZWQtYm9yZGVyIHtcbiAgICBoZWlnaHQ6IDRweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10aWRlLXJhZGl1cy1mdWxsKSB2YXIoLS10aWRlLXJhZGl1cy1mdWxsKSAwIDA7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBpbmplY3QsIHByb3ZpZGUsIHJlYWRvbmx5LCByZWYgfSBmcm9tICd2dWUnO1xuXG5pbXBvcnQgdHlwZSB7IFRpZGVUb2FzdCwgVGlkZVRvYXN0T21pdElkLCBUaWRlVG9hc3RlciB9IGZyb20gJ0AvdHlwZXMvVG9hc3QnO1xuXG5jb25zdCBUT0FTVEVSX0tFWSA9IFN5bWJvbCgndGlkZS10b2FzdGVyJyk7XG5cbmNvbnN0IEFVVE9fRElTTUlTU19EVVJBVElPTl9NUyA9IHtcbiAgQUNUSU9OQUJMRTogMTAwMDAsXG4gIElORk9STUFUSU9OQUw6IDUwMDAsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgdXNlVGlkZVRvYXN0ZXIgPSAoKSA9PiB7XG4gIGNvbnN0IGluamVjdGVkID0gaW5qZWN0PFRpZGVUb2FzdGVyPihUT0FTVEVSX0tFWSk7XG4gIGlmIChpbmplY3RlZCkgcmV0dXJuIGluamVjdGVkO1xuXG4gIGNvbnN0IHRpbWVvdXRJZCA9IHJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGw+KG51bGwpO1xuICBjb25zdCB0b2FzdHMgPSByZWY8VGlkZVRvYXN0W10+KFtdKTtcbiAgY29uc3QgaWQgPSByZWY8bnVtYmVyPigwKTtcblxuICBjb25zdCBhZGRUb2FzdCA9IChuZXdUb2FzdDogVGlkZVRvYXN0T21pdElkKSA9PiB7XG4gICAgaWQudmFsdWUrKztcbiAgICBjbGVhclRvYXN0cygpO1xuXG4gICAgdG9hc3RzLnZhbHVlLnB1c2goe1xuICAgICAgLi4ubmV3VG9hc3QsXG4gICAgICBpZDogYHRpZGUtdG9hc3QtJHtpZC52YWx1ZX1gLFxuICAgIH0gYXMgVGlkZVRvYXN0KTtcblxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY2FuY2VsQXV0b0Rpc21pc3MoKTtcbiAgICAgIHN0YXJ0QXV0b0Rpc21pc3MoKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY2xlYXJUb2FzdHMgPSAoKSA9PiB7XG4gICAgdG9hc3RzLnZhbHVlID0gW107XG4gIH07XG5cbiAgY29uc3QgY2FuY2VsQXV0b0Rpc21pc3MgPSAoKSA9PiB7XG4gICAgaWYgKHRpbWVvdXRJZC52YWx1ZSkgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3Qgc3RhcnRBdXRvRGlzbWlzcyA9ICgpID0+IHtcbiAgICBpZiAoIXRvYXN0cy52YWx1ZS5sZW5ndGgpIHJldHVybjtcblxuICAgIGNvbnN0IGF1dG9EaXNtaXNzRHVyYXRpb24gPSB0b2FzdHMudmFsdWVbMF0uYWN0aW9uXG4gICAgICA/IEFVVE9fRElTTUlTU19EVVJBVElPTl9NUy5BQ1RJT05BQkxFXG4gICAgICA6IEFVVE9fRElTTUlTU19EVVJBVElPTl9NUy5JTkZPUk1BVElPTkFMO1xuICAgIHRpbWVvdXRJZC52YWx1ZSA9IHNldFRpbWVvdXQoY2xlYXJUb2FzdHMsIGF1dG9EaXNtaXNzRHVyYXRpb24pO1xuICB9O1xuXG4gIGNvbnN0IHRvYXN0ZXI6IFRpZGVUb2FzdGVyID0ge1xuICAgIGFkZFRvYXN0LFxuICAgIGNhbmNlbEF1dG9EaXNtaXNzLFxuICAgIGNsZWFyVG9hc3RzLFxuICAgIHN0YXJ0QXV0b0Rpc21pc3MsXG4gICAgdG9hc3RzOiByZWFkb25seSh0b2FzdHMpLFxuICB9O1xuXG4gIHByb3ZpZGUoVE9BU1RFUl9LRVksIHRvYXN0ZXIpO1xuXG4gIHJldHVybiB0b2FzdGVyO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgdG9hc3RlciBjb21wb25lbnQgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgZGlzcGxheWluZyBub3RpZmljYXRpb25zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRldG9hc3Rlci0tZG9jcykgZm9yIFRpZGVUb2FzdGVyXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgeyBvbkJlZm9yZU1vdW50IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUFsZXJ0IGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQWxlcnQudnVlJztcbiAgaW1wb3J0IHsgdXNlVGlkZVRvYXN0ZXIgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVUb2FzdGVyJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgY29uc3QgeyB0b2FzdHMsIGNsZWFyVG9hc3RzLCBjYW5jZWxBdXRvRGlzbWlzcywgc3RhcnRBdXRvRGlzbWlzcyB9ID0gdXNlVGlkZVRvYXN0ZXIoKTtcblxuICBvbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICBpbml0RmF1eFRvcExheWVyKCk7XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFRlbGVwb3J0IDp0bz1cImAjJHtUT1BfTEFZRVJfSUR9YFwiPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtdG9hc3RlcicsXG4gICAgICAgIENTUy5IRUlHSFQuRlVMTCxcbiAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLkZJWEVELFxuICAgICAgICBDU1MuUE9TSVRJT05JTkcuTEVGVCxcbiAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlRPUCxcbiAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VHJhbnNpdGlvbkdyb3VwIG5hbWU9XCJwb3BcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLXRvYXN0LXdyYXAnLFxuICAgICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgICAgQ1NTLlpfSU5ERVguT05FLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlJJR0hULFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlRPUCxcbiAgICAgICAgICAgIENTUy5NQVJHSU4uRlVMTC5PTkUsXG4gICAgICAgICAgICBDU1MuV0lEVEguU1RSRVRDSCxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICA6a2V5PVwidG9hc3QuaWRcIlxuICAgICAgICAgIEBtb3VzZWVudGVyPVwiY2FuY2VsQXV0b0Rpc21pc3NcIlxuICAgICAgICAgIEBtb3VzZWxlYXZlPVwic3RhcnRBdXRvRGlzbWlzc1wiXG4gICAgICAgICAgdi1mb3I9XCJ0b2FzdCBpbiB0b2FzdHNcIlxuICAgICAgICA+XG4gICAgICAgICAgPFRpZGVBbGVydFxuICAgICAgICAgICAgOmN0YS1sYWJlbD1cInRvYXN0LmFjdGlvbj8ubGFiZWxcIlxuICAgICAgICAgICAgOmhlYWRpbmc9XCJ0b2FzdC5oZWFkaW5nXCJcbiAgICAgICAgICAgIDpzdHlsZT1cInsgJy0tdGlkZS1tYXgtd2lkdGgnOiAnbm9uZScgfVwiXG4gICAgICAgICAgICBAY2xvc2U9XCJjbGVhclRvYXN0c1wiXG4gICAgICAgICAgICBAY3RhLWNsaWNrPVwidG9hc3Q/LmFjdGlvbj8uY2FsbGJhY2tcIlxuICAgICAgICAgICAgaXMtZGlzbWlzc2libGVcbiAgICAgICAgICAgIGlzLXRvYXN0XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgdG9hc3QuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICA8L1RpZGVBbGVydD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L1RyYW5zaXRpb25Hcm91cD5cbiAgICA8L2Rpdj5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC5wb3AtZW50ZXItYWN0aXZlLFxuICAucG9wLWxlYXZlLWFjdGl2ZSB7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5LCB0cmFuc2Zvcm0sIHRyYW5zbGF0ZTtcbiAgfVxuXG4gIC5wb3AtZW50ZXItZnJvbSB7XG4gICAgdHJhbnNsYXRlOiAxMDAlIDA7XG4gIH1cblxuICAucG9wLWxlYXZlLXRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHotaW5kZXg6IDAgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5wb3AtbGVhdmUtYWN0aXZlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICAudGlkZS10b2FzdC13cmFwIHtcbiAgICAgIHdpZHRoOiA0MDBweDtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iXSwibmFtZXMiOlsiT1JJRU5UQVRJT04iLCJDU1MiLCJ1dGlsaXRpZXMiLCJicmVha3BvaW50IiwidXRpbGl0eSIsIl9fZGVmYXVsdF9fIiwicHJvcHMiLCJfX3Byb3BzIiwiX29wZW5CbG9jayIsIl9jcmVhdGVFbGVtZW50QmxvY2siLCJfaG9pc3RlZF8xIiwiX2NyZWF0ZUVsZW1lbnRWTm9kZSIsIl9ub3JtYWxpemVDbGFzcyIsIl91bnJlZiIsIlJFQUxNIiwiU0laRSIsIlNJWkVfQlVUVE9OIiwiZm9ybWF0TnVtYmVyIiwiaW5wdXQiLCJvdXRwdXQiLCJkaWdpdHMiLCJmb3JtYXRQYXNjYWxDYXNlIiwid29yZCIsImZvcm1hdFBob25lIiwiZm9ybWF0UHJpY2UiLCJpbm5lclNWRyIsInJlZiIsIndhdGNoIiwiaWQiLCJuYW1lIiwicHJlZml4IiwicmVhbG1Gb2xkZXIiLCJjb21wb25lbnQiLCJkZWZpbmVBc3luY0NvbXBvbmVudCIsIl9fdmFyaWFibGVEeW5hbWljSW1wb3J0UnVudGltZUhlbHBlciIsIm1hcmtSYXciLCJfY3JlYXRlQmxvY2siLCJfcmVzb2x2ZUR5bmFtaWNDb21wb25lbnQiLCJJQ09OIiwiSUNPTl9SRUFMTSIsImlzRXhwYW5kZWQiLCJfdXNlTW9kZWwiLCJoYW5kbGVUb2dnbGVDbGljayIsIm5ld1ZhbHVlIiwiVGlkZURpdmlkZXIiLCJfY3JlYXRlVk5vZGUiLCJUaWRlSWNvbiIsIl9yZW5kZXJTbG90IiwiX2N0eCIsIkVMRU1FTlQiLCJFTEVNRU5UX0JST0FEIiwidGlkZUNvbmZpZ0RlZmF1bHRzIiwiQ09ORklHX0tFWSIsInByb3ZpZGVUaWRlQ29uZmlnIiwiY29uZmlnIiwiY29uZmlnV2l0aERlZmF1bHRzIiwicHJvdmlkZSIsInVzZVRpZGVDb25maWciLCJpbmplY3QiLCJsaW5rQ29tcG9uZW50IiwiUFJJT1JJVFkiLCJUQVJHRVQiLCJ0eXBlQXR0cmlidXRlIiwiY29tcHV0ZWQiLCJyb290RWxlbWVudCIsIkludGVybmFsQmFzZUxpbmsiLCJfdG9EaXNwbGF5U3RyaW5nIiwiQUxFUlQiLCJlbWl0IiwiX19lbWl0Iiwic2xvdHMiLCJ1c2VTbG90cyIsImhhc0JvZHkiLCJub2RlcyIsIl9hIiwibm9kZSIsIkNvbW1lbnQiLCJpY29uVHlwZSIsIlRpZGVMaW5rIiwiVGlkZUJ1dHRvbkljb24iLCJCQURHRV9DT0xPUiIsIkJBREdFX0NPTE9SX0RFVEFJTFMiLCJCQURHRV9UUlVTVEVEIiwiX0ZyYWdtZW50IiwiY3J1bWIiLCJpbmRleCIsIl9jcmVhdGVUZXh0Vk5vZGUiLCJfaG9pc3RlZF8yIiwiaXNUb3VjaGVkIiwiaXNTYXZlZCIsIl9jYWNoZSIsIiRldmVudCIsImN1cnJlbnRJbmRleCIsInVuaXF1ZUlkIiwidXNlSWQiLCJpbnB1dEZvcm1BdHRyaWJ1dGUiLCJpbnB1dE5hbWVBdHRyaWJ1dGUiLCJfcmVuZGVyTGlzdCIsInRhYiIsIlRZUEVfQ0FSRCIsImNhcm91c2VsUmVmIiwiY29udGFpbmVyUmVmIiwiY29udGVudFdpZHRoIiwiY3VycmVudFBhZ2VJbmRleCIsImRvdHNSZWYiLCJmcmFtZVdpZHRoIiwiaXNGaXJzdFNsaWRlIiwiaXNMYXN0U2xpZGUiLCJzaG93QnV0dG9ucyIsInNsaWRlT2JzZXJ2ZXIiLCJzbGlkZXMiLCJzbGlkZXNJblZpZXciLCJzbG90T2JzZXJ2ZXIiLCJ0b3VjaFN0YXJ0Iiwic2xpZGVzSW5WaWV3Q291bnQiLCJjdXJyZW50UGFnZSIsImRvdENvbnRhaW5lcldpZHRoIiwiZG90Q291bnRWaXNpYmxlIiwiZG90V2lkdGgiLCJkb3RHYXAiLCJ0b3RhbFBhZ2VzIiwicXVvdGllbnQiLCJzY3JvbGxUaW1lb3V0IiwiZ2V0RG90Q2xhc3MiLCJkb3RJbmRleCIsImNsYXNzTmFtZSIsImdldElzRWxlbWVudFdpdGhpbkNvbnRhaW5lciIsImVsZW1lbnQiLCJjb250YWluZXIiLCJjb250YWluZXJSZWN0IiwiY29udGFpbmVyUmlnaHQiLCJlbGVtZW50UmVjdCIsImhhbmRsZVRvdWNoRW5kIiwiZXZlbnQiLCJ0b3VjaEVuZCIsImRlbHRhWCIsImRlbHRhWSIsInNjcm9sbEJ5RGVsdGEiLCJoYW5kbGVUb3VjaFN0YXJ0IiwiaGFuZGxlV2hlZWwiLCJpc1NoaWZ0S2V5RG93biIsImlzV2hlZWwiLCJvZmZzZXQiLCJzY3JvbGxUb09mZnNldCIsIm1lYXN1cmVEb20iLCJzbGlkZSIsIm9ic2VydmVTbGlkZXMiLCJvcHRpb25zIiwiZW50cmllcyIsInNsaWRlc0FkZGVkVG9WaWV3IiwiZW50cnkiLCJzbGlkZUluZGV4IiwiYSIsImIiLCJjaGlsZCIsIm9ic2VydmVTbG90Iiwib2JzZXJ2ZXJDYWxsYmFjayIsImRlbHRhIiwic2hvd1ByZXZpb3VzUGFnZSIsInNob3dQcmV2aW91c1NsaWRlIiwic2hvd05leHRQYWdlIiwic2hvd05leHRTbGlkZSIsInRhcmdldCIsImlzU2Nyb2xsaW5nTGVmdCIsInVwZGF0ZURvdHMiLCJuZXh0U2xpZGUiLCJwcmV2aW91c1NsaWRlIiwiY2VudGVyRG90Iiwib25Nb3VudGVkIiwib25Vbm1vdW50ZWQiLCJfYiIsIl9ub3JtYWxpemVTdHlsZSIsIl8iLCJpc0FjdGl2ZSIsImhhbmRsZUNsaWNrIiwiX2hvaXN0ZWRfMyIsIl9ob2lzdGVkXzQiLCJfaG9pc3RlZF81IiwiRk9STV9LRVkiLCJ1c2VUaWRlRm9ybSIsImZvcmNlU2hvd0Vycm9ycyIsInVzZUZvcm1Db250ZXh0IiwicmV2ZWFsVmFsaWRhdGlvbkVycm9ycyIsImhhbmRsZVN1Ym1pdCIsImUiLCJPQkpFQ1RfRklUIiwicGljdHVyZSIsImltZyIsImltYWdlRGVmYXVsdCIsIm9iamVjdEZpdENsYXNzTmFtZSIsInNldEltYWdlRnJvbURlZmF1bHQiLCJjdXJyZW50U3JjIiwic291cmNlcyIsInNvdXJjZSIsIl9jIiwiVGlkZUltYWdlIiwiZXJyb3JNZXNzYWdlRGVmYXVsdCIsIlZBTElEQVRJT05fUkVTVUxUIiwiY2hlY2tGb3JtYXQiLCJmb3JtYXQiLCJtZXNzYWdlIiwidmFsdWUiLCJyZXN1bHQiLCJnZXRGaWVsZExlbmd0aElzVmFsaWQiLCJtYXhsZW5ndGgiLCJtaW5sZW5ndGgiLCJyZXF1aXJlZCIsImlzRW1wdHlBbmRVbnJlcXVpcmVkIiwiaXNUb29Mb25nIiwiZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0IiwiZXJyb3JGcm9tUHJvcHMiLCJ2YWxpZGF0b3JzIiwidmFsaWRhdGlvbiIsInZhbGlkYXRlUHJvcGVydHkiLCJsZW5ndGhWYWxpZGF0aW9uIiwidmFsaWRhdGVMZW5ndGgiLCJyZXNwb25zZSIsInZhbGlkYXRvciIsIm1vZGVsVmFsdWUiLCJmb3JtQ29udGV4dCIsImlzVmFsaWRhdGluZyIsImVycm9yUmVmIiwiZm9ybWF0dGVkTGFiZWwiLCJpc0NoZWNrZWQiLCJzaG93RXJyb3IiLCJoYXNFcnJvckZyb21Qcm9wIiwic3VwcG9ydGluZ1RleHRNZXNzYWdlIiwiZ2V0Q2hlY2tib3hWYWxpZGF0aW9uUmVzdWx0Iiwid2F0Y2hFZmZlY3QiLCJUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCIsImNoZWNrZWQiLCJvbGRWYWx1ZSIsIkZPUk1BVCIsIkZPUk1BVF9SRUdFWCIsIlZBTElEQVRPUiIsIkVSUk9SX0RJU1BMQVkiLCJoYXNGb2N1cyIsImlucHV0SWQiLCJzZWxlY3RFbGVtZW50IiwiaGFzTWluaWxhYmVsIiwiaXNFbXB0eSIsImV4cGFuZE9wdGlvbnMiLCJoYW5kbGVGb2N1cyIsImhhbmRsZUZvY3VzT3V0Iiwib3B0Z3JvdXAiLCJvcHRpb24iLCJfaG9pc3RlZF82IiwiZ2V0RXJyb3JNZXNzYWdlIiwiZXJyb3JGcm9tUmVmIiwiZ2V0RmllbGRIYXNFcnJvciIsImhhbmRsZUZpZWxkVmFsaWRhdGlvbiIsImVycm9yIiwiZXJyb3JNZXNzYWdlIiwiaGFzRXJyb3IiLCJfX2V4cG9zZSIsIlRFWFRfSU5QVVRfVFlQRSIsIklOUFVUX01PREUiLCJnZXRUZXh0SW5wdXRNb2RlIiwidHlwZSIsImlucHV0bW9kZSIsImlucHV0RWxlbWVudCIsInNob3dQYXNzd29yZCIsImlucHV0TW9kZUF0dHJpYnV0ZSIsImlucHV0VHlwZSIsInNob3VsZFNob3dDbGVhckJ1dHRvbiIsInNob3VsZFNob3dQYXNzd29yZEJ1dHRvbiIsImhhbmRsZUNsZWFyIiwiaGFuZGxlRmllbGRDbGljayIsInByZXZlbnRJbnB1dEZvY3VzTG9zc09uTW91c2Vkb3duIiwiaGFzQ2xlYXIiLCJoYW5kbGVWYWxpZGF0aW9uIiwiaGFuZGxlSW5wdXQiLCJ1cGRhdGVWYWx1ZSIsInRleHRhcmVhRWxlbWVudCIsInByZXZlbnRUZXh0YXJlYUZvY3VzTG9zc09uTW91c2Vkb3duIiwiQlJFQUtQT0lOVCIsIk1FRElBIiwic2V0U2Nyb2xsTG9jayIsImlzTG9ja2VkIiwiYm9keSIsInNjcm9sbFkiLCJuZXh0VGljayIsInNhdmVkU2Nyb2xsWSIsIlRPUF9MQVlFUl9JRCIsImluaXRGYXV4VG9wTGF5ZXIiLCJ0b3BMYXllciIsIm1vZGFsQ29udGVudCIsIm1vZGFsRGlhbG9nIiwiaXNPcGVuIiwidHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4iLCJ0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UiLCJzY3JvbGxDb250ZW50VG9Ub3AiLCJjbG9zZSIsImhhbmRsZUJhY2tkcm9wQ2xpY2siLCJoYW5kbGVFc2NhcGVLZXlkb3duIiwib25CZWZvcmVNb3VudCIsIm9uQmVmb3JlVW5tb3VudCIsIl9UZWxlcG9ydCIsIiRzbG90cyIsInBhZ2luYXRpb25CdXR0b25zIiwiZW1wdHkiLCJoYW5kbGVQcmV2aW91c0NsaWNrIiwiaGFuZGxlTmV4dENsaWNrIiwicGFnaW5hdGlvbkJ1dHRvbiIsIlRpZGVCdXR0b25QYWdpbmF0aW9uIiwic2lkZXMiLCJhbGlnbm1lbnRzIiwicGxhY2VtZW50cyIsImFjYyIsInNpZGUiLCJtaW4iLCJtYXgiLCJyb3VuZCIsImZsb29yIiwiY3JlYXRlQ29vcmRzIiwidiIsIm9wcG9zaXRlU2lkZU1hcCIsIm9wcG9zaXRlQWxpZ25tZW50TWFwIiwiY2xhbXAiLCJzdGFydCIsImVuZCIsImV2YWx1YXRlIiwicGFyYW0iLCJnZXRTaWRlIiwicGxhY2VtZW50IiwiZ2V0QWxpZ25tZW50IiwiZ2V0T3Bwb3NpdGVBeGlzIiwiYXhpcyIsImdldEF4aXNMZW5ndGgiLCJnZXRTaWRlQXhpcyIsImdldEFsaWdubWVudEF4aXMiLCJnZXRBbGlnbm1lbnRTaWRlcyIsInJlY3RzIiwicnRsIiwiYWxpZ25tZW50IiwiYWxpZ25tZW50QXhpcyIsImxlbmd0aCIsIm1haW5BbGlnbm1lbnRTaWRlIiwiZ2V0T3Bwb3NpdGVQbGFjZW1lbnQiLCJnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCIsImV4cGFuZFBhZGRpbmdPYmplY3QiLCJwYWRkaW5nIiwiZ2V0UGFkZGluZ09iamVjdCIsInJlY3RUb0NsaWVudFJlY3QiLCJyZWN0IiwieCIsInkiLCJ3aWR0aCIsImhlaWdodCIsImNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50IiwiX3JlZiIsInJlZmVyZW5jZSIsImZsb2F0aW5nIiwic2lkZUF4aXMiLCJhbGlnbkxlbmd0aCIsImlzVmVydGljYWwiLCJjb21tb25YIiwiY29tbW9uWSIsImNvbW1vbkFsaWduIiwiY29vcmRzIiwiY29tcHV0ZVBvc2l0aW9uIiwic3RyYXRlZ3kiLCJtaWRkbGV3YXJlIiwicGxhdGZvcm0iLCJ2YWxpZE1pZGRsZXdhcmUiLCJzdGF0ZWZ1bFBsYWNlbWVudCIsIm1pZGRsZXdhcmVEYXRhIiwicmVzZXRDb3VudCIsImkiLCJmbiIsIm5leHRYIiwibmV4dFkiLCJkYXRhIiwicmVzZXQiLCJkZXRlY3RPdmVyZmxvdyIsInN0YXRlIiwiX2F3YWl0JHBsYXRmb3JtJGlzRWxlIiwiZWxlbWVudHMiLCJib3VuZGFyeSIsInJvb3RCb3VuZGFyeSIsImVsZW1lbnRDb250ZXh0IiwiYWx0Qm91bmRhcnkiLCJwYWRkaW5nT2JqZWN0IiwiY2xpcHBpbmdDbGllbnRSZWN0Iiwib2Zmc2V0UGFyZW50Iiwib2Zmc2V0U2NhbGUiLCJlbGVtZW50Q2xpZW50UmVjdCIsImdldFBsYWNlbWVudExpc3QiLCJhdXRvQWxpZ25tZW50IiwiYWxsb3dlZFBsYWNlbWVudHMiLCJhdXRvUGxhY2VtZW50IiwiX21pZGRsZXdhcmVEYXRhJGF1dG9QIiwiX21pZGRsZXdhcmVEYXRhJGF1dG9QMiIsIl9wbGFjZW1lbnRzVGhhdEZpdE9uRSIsImNyb3NzQXhpcyIsImRldGVjdE92ZXJmbG93T3B0aW9ucyIsInBsYWNlbWVudHMkMSIsIm92ZXJmbG93IiwiY3VycmVudFBsYWNlbWVudCIsImFsaWdubWVudFNpZGVzIiwiY3VycmVudE92ZXJmbG93cyIsImFsbE92ZXJmbG93cyIsIm5leHRQbGFjZW1lbnQiLCJwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UiLCJkIiwicmVzZXRQbGFjZW1lbnQiLCJjb252ZXJ0VmFsdWVUb0Nvb3JkcyIsIm1haW5BeGlzTXVsdGkiLCJjcm9zc0F4aXNNdWx0aSIsInJhd1ZhbHVlIiwibWFpbkF4aXMiLCJfbWlkZGxld2FyZURhdGEkb2Zmc2UiLCJfbWlkZGxld2FyZURhdGEkYXJyb3ciLCJkaWZmQ29vcmRzIiwic2hpZnQiLCJjaGVja01haW5BeGlzIiwiY2hlY2tDcm9zc0F4aXMiLCJsaW1pdGVyIiwibWFpbkF4aXNDb29yZCIsImNyb3NzQXhpc0Nvb3JkIiwibWluU2lkZSIsIm1heFNpZGUiLCJsaW1pdGVkQ29vcmRzIiwiaGFzV2luZG93IiwiZ2V0Tm9kZU5hbWUiLCJpc05vZGUiLCJnZXRXaW5kb3ciLCJfbm9kZSRvd25lckRvY3VtZW50IiwiZ2V0RG9jdW1lbnRFbGVtZW50IiwiaXNFbGVtZW50IiwiaXNIVE1MRWxlbWVudCIsImlzU2hhZG93Um9vdCIsImlzT3ZlcmZsb3dFbGVtZW50Iiwib3ZlcmZsb3dYIiwib3ZlcmZsb3dZIiwiZGlzcGxheSIsImdldENvbXB1dGVkU3R5bGUiLCJpc1RhYmxlRWxlbWVudCIsImlzVG9wTGF5ZXIiLCJzZWxlY3RvciIsImlzQ29udGFpbmluZ0Jsb2NrIiwiZWxlbWVudE9yQ3NzIiwid2Via2l0IiwiaXNXZWJLaXQiLCJjc3MiLCJnZXRDb250YWluaW5nQmxvY2siLCJjdXJyZW50Tm9kZSIsImdldFBhcmVudE5vZGUiLCJpc0xhc3RUcmF2ZXJzYWJsZU5vZGUiLCJnZXROb2RlU2Nyb2xsIiwiZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IiLCJwYXJlbnROb2RlIiwiZ2V0T3ZlcmZsb3dBbmNlc3RvcnMiLCJsaXN0IiwidHJhdmVyc2VJZnJhbWVzIiwiX25vZGUkb3duZXJEb2N1bWVudDIiLCJzY3JvbGxhYmxlQW5jZXN0b3IiLCJpc0JvZHkiLCJ3aW4iLCJmcmFtZUVsZW1lbnQiLCJnZXRGcmFtZUVsZW1lbnQiLCJnZXRDc3NEaW1lbnNpb25zIiwiaGFzT2Zmc2V0Iiwib2Zmc2V0V2lkdGgiLCJvZmZzZXRIZWlnaHQiLCJzaG91bGRGYWxsYmFjayIsInVud3JhcEVsZW1lbnQiLCJnZXRTY2FsZSIsImRvbUVsZW1lbnQiLCIkIiwibm9PZmZzZXRzIiwiZ2V0VmlzdWFsT2Zmc2V0cyIsInNob3VsZEFkZFZpc3VhbE9mZnNldHMiLCJpc0ZpeGVkIiwiZmxvYXRpbmdPZmZzZXRQYXJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJpbmNsdWRlU2NhbGUiLCJpc0ZpeGVkU3RyYXRlZ3kiLCJjbGllbnRSZWN0Iiwic2NhbGUiLCJ2aXN1YWxPZmZzZXRzIiwib2Zmc2V0V2luIiwiY3VycmVudFdpbiIsImN1cnJlbnRJRnJhbWUiLCJpZnJhbWVTY2FsZSIsImlmcmFtZVJlY3QiLCJsZWZ0IiwidG9wIiwiZ2V0V2luZG93U2Nyb2xsQmFyWCIsImxlZnRTY3JvbGwiLCJnZXRIVE1MT2Zmc2V0IiwiZG9jdW1lbnRFbGVtZW50Iiwic2Nyb2xsIiwiaWdub3JlU2Nyb2xsYmFyWCIsImh0bWxSZWN0IiwiY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QiLCJvZmZzZXRzIiwiaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQiLCJvZmZzZXRSZWN0IiwiaHRtbE9mZnNldCIsImdldENsaWVudFJlY3RzIiwiZ2V0RG9jdW1lbnRSZWN0IiwiaHRtbCIsImdldFZpZXdwb3J0UmVjdCIsInZpc3VhbFZpZXdwb3J0IiwidmlzdWFsVmlld3BvcnRCYXNlZCIsImdldElubmVyQm91bmRpbmdDbGllbnRSZWN0IiwiZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdBbmNlc3RvciIsImhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvciIsInN0b3BOb2RlIiwiZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzIiwiY2FjaGUiLCJjYWNoZWRSZXN1bHQiLCJlbCIsImN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlIiwiZWxlbWVudElzRml4ZWQiLCJjb21wdXRlZFN0eWxlIiwiY3VycmVudE5vZGVJc0NvbnRhaW5pbmciLCJhbmNlc3RvciIsImdldENsaXBwaW5nUmVjdCIsImNsaXBwaW5nQW5jZXN0b3JzIiwiZmlyc3RDbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdSZWN0IiwiYWNjUmVjdCIsImdldERpbWVuc2lvbnMiLCJnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudCIsImlzU3RhdGljUG9zaXRpb25lZCIsImdldFRydWVPZmZzZXRQYXJlbnQiLCJwb2x5ZmlsbCIsInJhd09mZnNldFBhcmVudCIsImdldE9mZnNldFBhcmVudCIsInN2Z09mZnNldFBhcmVudCIsImdldEVsZW1lbnRSZWN0cyIsImdldE9mZnNldFBhcmVudEZuIiwiZ2V0RGltZW5zaW9uc0ZuIiwiZmxvYXRpbmdEaW1lbnNpb25zIiwiaXNSVEwiLCJyZWN0c0FyZUVxdWFsIiwib2JzZXJ2ZU1vdmUiLCJvbk1vdmUiLCJpbyIsInRpbWVvdXRJZCIsInJvb3QiLCJjbGVhbnVwIiwiX2lvIiwicmVmcmVzaCIsInNraXAiLCJ0aHJlc2hvbGQiLCJlbGVtZW50UmVjdEZvclJvb3RNYXJnaW4iLCJpbnNldFRvcCIsImluc2V0UmlnaHQiLCJpbnNldEJvdHRvbSIsImluc2V0TGVmdCIsImlzRmlyc3RVcGRhdGUiLCJoYW5kbGVPYnNlcnZlIiwicmF0aW8iLCJhdXRvVXBkYXRlIiwidXBkYXRlIiwiYW5jZXN0b3JTY3JvbGwiLCJhbmNlc3RvclJlc2l6ZSIsImVsZW1lbnRSZXNpemUiLCJsYXlvdXRTaGlmdCIsImFuaW1hdGlvbkZyYW1lIiwicmVmZXJlbmNlRWwiLCJhbmNlc3RvcnMiLCJjbGVhbnVwSW8iLCJyZW9ic2VydmVGcmFtZSIsInJlc2l6ZU9ic2VydmVyIiwiZmlyc3RFbnRyeSIsIl9yZXNpemVPYnNlcnZlciIsImZyYW1lSWQiLCJwcmV2UmVmUmVjdCIsImZyYW1lTG9vcCIsIm5leHRSZWZSZWN0IiwiX3Jlc2l6ZU9ic2VydmVyMiIsIm9mZnNldCQxIiwiYXV0b1BsYWNlbWVudCQxIiwic2hpZnQkMSIsIm1lcmdlZE9wdGlvbnMiLCJwbGF0Zm9ybVdpdGhDYWNoZSIsImNvbXB1dGVQb3NpdGlvbiQxIiwiaXNDb21wb25lbnRQdWJsaWNJbnN0YW5jZSIsInRvVmFsdWUiLCJ1bnJlZiIsImdldERQUiIsInJvdW5kQnlEUFIiLCJkcHIiLCJ1c2VGbG9hdGluZyIsIndoaWxlRWxlbWVudHNNb3VudGVkT3B0aW9uIiwib3Blbk9wdGlvbiIsIl90b1ZhbHVlIiwibWlkZGxld2FyZU9wdGlvbiIsInBsYWNlbWVudE9wdGlvbiIsIl90b1ZhbHVlMiIsInN0cmF0ZWd5T3B0aW9uIiwiX3RvVmFsdWUzIiwidHJhbnNmb3JtT3B0aW9uIiwiX3RvVmFsdWU0IiwicmVmZXJlbmNlRWxlbWVudCIsImZsb2F0aW5nRWxlbWVudCIsInNoYWxsb3dSZWYiLCJpc1Bvc2l0aW9uZWQiLCJmbG9hdGluZ1N0eWxlcyIsImluaXRpYWxTdHlsZXMiLCJ4VmFsIiwieVZhbCIsIndoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCIsIm9wZW4iLCJwb3NpdGlvbiIsImF0dGFjaCIsImdldEN1cnJlbnRTY29wZSIsIm9uU2NvcGVEaXNwb3NlIiwic2hhbGxvd1JlYWRvbmx5IiwiaXNDbGlja091dHNpZGUiLCJhbmNob3IiLCJpc0hvdmVyZWQiLCJpc1RvZ2dsZWRPcGVuIiwib2Zmc2V0TWlkZGxld2FyZSIsImlzU2hvd1BvcG92ZXIiLCJoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUNsaWNrIiwiaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlT3ZlciIsImhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlIiwiaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrIiwiYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50IiwicmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQiLCJoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24iLCJhZGRPcGVuTGlzdGVuZXJzVG9Sb290IiwicmVtb3ZlT3Blbkxpc3RlbmVyc0Zyb21Sb290IiwidXBkYXRlQW5jaG9yRWxlbWVudCIsIl9UcmFuc2l0aW9uIiwicmF0aW5nVmFsdWUiLCJzZWdtZW50cyIsInNlZ21lbnQiLCJTSVpFX0xPR08iLCJMT0dPX0hFSUdIVCIsIkxPR09fTEFSR0VfV0lEVEgiLCJMT0dPX01BUktfV0lEVEgiLCJnZXRSZWFsbUtleUZyb21SZWFsbSIsInJlYWxtIiwibWF0Y2giLCJsb2dvV2lkdGgiLCJmdWxsTG9nb1dpZHRoIiwic2hyaW5rRmFjdG9yIiwibG9nb0hlaWdodCIsImxpbmsiLCJkaWFsb2dFbGVtZW50IiwiY3VycmVudFRhYiIsIlRpZGVDYXJvdXNlbCIsIlRPQVNURVJfS0VZIiwiQVVUT19ESVNNSVNTX0RVUkFUSU9OX01TIiwidXNlVGlkZVRvYXN0ZXIiLCJpbmplY3RlZCIsInRvYXN0cyIsImFkZFRvYXN0IiwibmV3VG9hc3QiLCJjbGVhclRvYXN0cyIsImNhbmNlbEF1dG9EaXNtaXNzIiwic3RhcnRBdXRvRGlzbWlzcyIsImF1dG9EaXNtaXNzRHVyYXRpb24iLCJ0b2FzdGVyIiwicmVhZG9ubHkiLCJfVHJhbnNpdGlvbkdyb3VwIiwidG9hc3QiLCJhcmdzIiwiVGlkZUFsZXJ0Il0sIm1hcHBpbmdzIjoiO0FBQU8sTUFBTUEsS0FBYztBQUFBLEVBQ3pCLFlBQVk7QUFBQSxFQUNaLFVBQVU7QUFDWixHQ0NhQyxJQUFNO0FBQUEsRUFDakIsZ0JBQWdCLENBQUNDLEdBQXFCQyxNQUM3QkQsRUFBVSxJQUFJLENBQUNFLE1BQVksR0FBR0QsQ0FBVSxJQUFJQyxDQUFPLEVBQUU7QUFBQSxFQUU5RCxPQUFPO0FBQUEsSUFDTCxHQUFHO0FBQUEsTUFDRCxRQUFRO0FBQUEsTUFDUixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixPQUFPO0FBQUEsSUFBQTtBQUFBLElBRVQsR0FBRztBQUFBLE1BQ0QsU0FBUztBQUFBLE1BQ1QsUUFBUTtBQUFBLElBQUE7QUFBQSxFQUNWO0FBQUEsRUFFRixPQUFPO0FBQUEsSUFDTCxRQUFRO0FBQUEsSUFDUixTQUFTO0FBQUEsSUFDVCxRQUFRO0FBQUEsSUFDUixLQUFLO0FBQUEsSUFDTCxPQUFPO0FBQUEsRUFBQTtBQUFBLEVBRVQsT0FBTztBQUFBLElBQ0wsUUFBUTtBQUFBLElBQ1IsUUFBUTtBQUFBLElBQ1IsS0FBSztBQUFBLElBQ0wsT0FBTztBQUFBLElBQ1AsU0FBUztBQUFBLEVBQUE7QUFBQSxFQUVYLElBQUk7QUFBQSxJQUNGLFFBQVE7QUFBQSxNQUNOLFNBQVM7QUFBQSxRQUNQLE9BQU87QUFBQSxRQUNQLE1BQU07QUFBQSxRQUNOLFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxNQUFBO0FBQUEsTUFFWCxTQUFTO0FBQUEsUUFDUCxPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixTQUFTO0FBQUEsUUFDVCxTQUFTO0FBQUEsUUFFVCxNQUFNO0FBQUEsUUFDTixPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsUUFDUixRQUFRO0FBQUEsUUFDUixLQUFLO0FBQUEsUUFDTCxRQUFRO0FBQUEsUUFDUixNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsTUFBQTtBQUFBLElBQ1Y7QUFBQSxJQUVGLFNBQVM7QUFBQSxJQUNULE1BQU07QUFBQSxJQUNOLFNBQVM7QUFBQSxJQUNULFdBQVc7QUFBQSxJQUNYLFNBQVM7QUFBQSxNQUNQLFFBQVE7QUFBQSxNQUNSLE9BQU87QUFBQSxNQUNQLFNBQVM7QUFBQSxNQUNULFVBQVU7QUFBQSxNQUNWLFVBQVU7QUFBQSxNQUNWLFNBQVM7QUFBQSxNQUNULFNBQVM7QUFBQSxJQUFBO0FBQUEsSUFFWCxhQUFhO0FBQUEsTUFDWCxhQUFhO0FBQUEsTUFDYixhQUFhO0FBQUEsTUFDYixlQUFlO0FBQUEsTUFDZixjQUFjO0FBQUEsSUFBQTtBQUFBLEVBQ2hCO0FBQUEsRUFFRixRQUFRO0FBQUEsSUFDTixPQUFPO0FBQUEsTUFDTCxRQUFRO0FBQUEsUUFDTixPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixTQUFTO0FBQUEsUUFDVCxTQUFTO0FBQUEsUUFFVCxNQUFNO0FBQUEsUUFDTixPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsUUFDUixRQUFRO0FBQUEsUUFDUixLQUFLO0FBQUEsUUFDTCxRQUFRO0FBQUEsUUFDUixNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsTUFBQTtBQUFBLE1BRVYsU0FBUztBQUFBLE1BQ1QsU0FBUztBQUFBLE1BQ1Qs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QUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsRUFBQTtBQUFBLEVBRVosV0FBVztBQUFBLElBQ1QsU0FBUztBQUFBLEVBQUE7QUFBQSxFQUVYLGNBQWM7QUFBQSxJQUNaLEtBQUs7QUFBQSxFQUFBO0FBQUEsRUFFUCxRQUFRO0FBQUEsSUFDTixRQUFRO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLElBRVIsTUFBTTtBQUFBLE1BQ0osTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQUE7QUFBQSxJQUVSLE1BQU07QUFBQSxNQUNKLE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixPQUFPO0FBQUEsTUFDTCxNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLElBRVIsS0FBSztBQUFBLE1BQ0gsTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQUE7QUFBQSxJQUVSLEdBQUc7QUFBQSxNQUNELE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLEVBQ1I7QUFBQSxFQUVGLFFBQVE7QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLFNBQVM7QUFBQSxJQUNULE9BQU87QUFBQSxJQUNQLFlBQVk7QUFBQSxFQUFBO0FBQUEsRUFFZCxTQUFTO0FBQUEsSUFDUCxVQUFVO0FBQUEsSUFDVixLQUFLO0FBQUEsSUFDTCxJQUFJO0FBQUEsRUFBQTtBQUFBLEVBRU4sVUFBVTtBQUFBLElBQ1IsR0FBRztBQUFBLE1BQ0QsTUFBTTtBQUFBLE1BQ04sUUFBUTtBQUFBLE1BQ1IsUUFBUTtBQUFBLElBQUE7QUFBQSxJQUVWLElBQUk7QUFBQSxNQUNGLE1BQU07QUFBQSxNQUNOLFFBQVE7QUFBQSxJQUFBO0FBQUEsSUFFVixHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixRQUFRO0FBQUEsSUFBQTtBQUFBLEVBQ1Y7QUFBQSxFQUVGLFNBQVM7QUFBQSxJQUNQLFFBQVE7QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixNQUFNO0FBQUEsTUFDSixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLElBRVIsTUFBTTtBQUFBLE1BQ0osTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQUE7QUFBQSxJQUVSLE9BQU87QUFBQSxNQUNMLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxN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QSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSxtQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsaUNBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxrREFBQSxNQUFBLE9BQUEsc0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSw4Q0FBQSxNQUFBLE9BQUEsa0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsaUNBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSw4Q0FBQSxNQUFBLE9BQUEsa0NBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSxrREFBQSxNQUFBLE9BQUEsc0NBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxtQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxnREFBQSxNQUFBLE9BQUEsb0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsaUNBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsaUNBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsaUNBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsaUNBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxtQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FB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YTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsVUFBVTtBQUFBLEVBQ1YsVUFBVTtBQUFBLEVBQ1YsaUJBQWlCO0FBQUEsRUFDakIsTUFBTTtBQUFBLEVBQ04sYUFBYTtBQUFBLEVBQ2IsZUFBZTtBQUFBLEVBQ2Ysc0JBQXNCO0FBQUEsRUFDdEIsT0FBTztBQUFBLEVBQ1AsS0FBSztBQUFBLEVBQ0wsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1Asb0JBQW9CO0FBQUEsRUFDcEIsUUFBUTtBQUFBLEVBQ1IsWUFBWTtBQUFBLEVBQ1osTUFBTTtBQUFBLEVBQ04sV0FBVztBQUFBLEVBQ1gsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsV0FBVztBQUFBLEVBQ1gsV0FBVztBQUFBLEVBQ1gsUUFBUTtBQUFBLEVBQ1IsZ0JBQWdCO0FBQUEsRUFDaEIsV0FBVztBQUFBLEVBQ1gsZ0JBQWdCO0FBQUEsRUFDaEIsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osZUFBZTtBQUFBLEVBQ2YsVUFBVTtBQUFBLEVBQ1YsYUFBYTtBQUFBLEVBQ2IsU0FBUztBQUFBLEVBQ1QsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsZUFBZTtBQUFBLEVBQ2YsY0FBYztBQUFBLEVBQ2QsV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsV0FBVztBQUFBLEVBQ1gsZUFBZTtBQUFBLEVBQ2YsUUFBUTtBQUFBLEVBQ1IsZUFBZTtBQUFBLEVBQ2YsY0FBYztBQUFBLEVBQ2QsTUFBTTtBQUFBLEVBQ04sZ0JBQWdCO0FBQUEsRUFDaEIsT0FBTztBQUFBLEVBQ1AsU0FBUztBQUFBLEVBQ1QsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUFBLEVBQ1Qs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
5366
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlkZS1kZXNpZ24tc3lzdGVtLmpzIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMvT3JpZW50YXRpb24udHMiLCIuLi9zcmMvdHlwZXMvU3R5bGVzLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZURpdmlkZXIudnVlIiwiLi4vc3JjL3R5cGVzL1JlYWxtLnRzIiwiLi4vc3JjL3R5cGVzL1NpemUudHMiLCIuLi9zcmMvdXRpbGl0aWVzL2Zvcm1hdC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSIsIi4uL3NyYy90eXBlcy9JY29uLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUFjY29yZGlvbkl0ZW0udnVlIiwiLi4vc3JjL3R5cGVzL0VsZW1lbnQudHMiLCIuLi9zcmMvY29tcG9zYWJsZXMvdXNlVGlkZUNvbmZpZy50cyIsIi4uL3NyYy9jb21wb25lbnRzL0ludGVybmFsQmFzZUxpbmsudnVlIiwiLi4vc3JjL3R5cGVzL1ByaW9yaXR5LnRzIiwiLi4vc3JjL3R5cGVzL1RhcmdldC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25JY29uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVMaW5rLnZ1ZSIsIi4uL3NyYy90eXBlcy9BbGVydC50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVBbGVydC52dWUiLCIuLi9zcmMvdHlwZXMvQmFkZ2UudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQmFkZ2UudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJhZGdlVHJ1c3RlZFBhcnRuZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUJhZGdlVmVyaWZpZWRWZWhpY2xlLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCcmVhZENydW1icy52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQnV0dG9uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25QYWdpbmF0aW9uLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25TYXZlLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVCdXR0b25TZWdtZW50ZWQudnVlIiwiLi4vc3JjL3R5cGVzL0NhcmQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2FyZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ2Fyb3VzZWwudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNoaXBBY3Rpb24udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNoaXBGaWx0ZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUNoaXBJbnB1dC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlQ29sdW1ucy52dWUiLCIuLi9zcmMvY29tcG9zYWJsZXMvdXNlVGlkZUZvcm0udHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlRm9ybS52dWUiLCIuLi9zcmMvdHlwZXMvSW1hZ2UudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW1hZ2UudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUltYWdlQmFja2dyb3VuZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5kaWNhdG9yLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFN1cHBvcnRpbmdUZXh0LnZ1ZSIsIi4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGlvbi50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dENoZWNrYm94LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dENoZWNrYm94RGVwcmVjYXRlZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRSYWRpby52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlSW5wdXRSYWRpb0RlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL3R5cGVzL0Zvcm1hdHRlZC50cyIsIi4uL3NyYy90eXBlcy9WYWxpZGF0aW9uLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0U2VsZWN0LnZ1ZSIsIi4uL3NyYy91dGlsaXRpZXMvdmFsaWRhdGlvbi1kZXByZWNhdGVkLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0U2VsZWN0RGVwcmVjYXRlZC52dWUiLCIuLi9zcmMvdHlwZXMvVGV4dElucHV0LnRzIiwiLi4vc3JjL3V0aWxpdGllcy9mb3Jtcy50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVJbnB1dFRleHQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dERlcHJlY2F0ZWQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dGFyZWEudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZUlucHV0VGV4dGFyZWFEZXByZWNhdGVkLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVNZW51SXRlbS52dWUiLCIuLi9zcmMvdHlwZXMvQnJlYWtwb2ludC50cyIsIi4uL3NyYy91dGlsaXRpZXMvdmlld3BvcnQudHMiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlTW9kYWwudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVBhZ2luYXRpb24udnVlIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS91dGlscy9kaXN0L2Zsb2F0aW5nLXVpLnV0aWxzLm1qcyIsIi4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvY29yZS9kaXN0L2Zsb2F0aW5nLXVpLmNvcmUubWpzIiwiLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS91dGlscy9kaXN0L2Zsb2F0aW5nLXVpLnV0aWxzLmRvbS5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2RvbS9kaXN0L2Zsb2F0aW5nLXVpLmRvbS5tanMiLCIuLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3Z1ZS9kaXN0L2Zsb2F0aW5nLXVpLnZ1ZS5tanMiLCIuLi9zcmMvdXRpbGl0aWVzL2V2ZW50LnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVBvcG92ZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVJhdGluZy52dWUiLCIuLi9zcmMvdHlwZXMvUmVhbG1Mb2dvLnRzIiwiLi4vc3JjL3V0aWxpdGllcy9yZWFsbS50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVSZWFsbUxvZ28udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvVGlkZVNlb0xpbmtzLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVTaGVldC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9UaWRlU3dpdGNoLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVUYWJzLnZ1ZSIsIi4uL3NyYy9jb21wb3NhYmxlcy91c2VUaWRlVG9hc3Rlci50cyIsIi4uL3NyYy9jb21wb25lbnRzL1RpZGVUb2FzdGVyLnZ1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgT1JJRU5UQVRJT04gPSB7XG4gIEhPUklaT05UQUw6ICdob3Jpem9udGFsJyxcbiAgVkVSVElDQUw6ICd2ZXJ0aWNhbCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBPcmllbnRhdGlvbiA9ICh0eXBlb2YgT1JJRU5UQVRJT04pW2tleW9mIHR5cGVvZiBPUklFTlRBVElPTl07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmltcG9ydCB0eXBlIHsgQnJlYWtwb2ludCB9IGZyb20gJ0AvdHlwZXMvQnJlYWtwb2ludCc7XG5cbmV4cG9ydCBjb25zdCBDU1MgPSB7XG4gIHdpdGhCcmVha3BvaW50OiAodXRpbGl0aWVzOiBzdHJpbmdbXSwgYnJlYWtwb2ludDogQnJlYWtwb2ludCk6IHN0cmluZ1tdID0+IHtcbiAgICByZXR1cm4gdXRpbGl0aWVzLm1hcCgodXRpbGl0eSkgPT4gYCR7YnJlYWtwb2ludH0tJHt1dGlsaXR5fWApO1xuICB9LFxuICBBTElHTjoge1xuICAgIFg6IHtcbiAgICAgIENFTlRFUjogJ3RpZGUtdGV4dC1jZW50ZXInLFxuICAgICAgSlVTVElGWTogJ3RpZGUtdGV4dC1qdXN0aWZ5JyxcbiAgICAgIExFRlQ6ICd0aWRlLXRleHQtbGVmdCcsXG4gICAgICBSSUdIVDogJ3RpZGUtdGV4dC1yaWdodCcsXG4gICAgfSxcbiAgICBZOiB7XG4gICAgICBJTklUSUFMOiAndGlkZS1hbGlnbi1pbml0aWFsJyxcbiAgICAgIE1JRERMRTogJ3RpZGUtYWxpZ24tbWlkZGxlJyxcbiAgICB9LFxuICB9LFxuICBBWElTMToge1xuICAgIEFST1VORDogJ3RpZGUtYXhpczEtYXJvdW5kJyxcbiAgICBCRVRXRUVOOiAndGlkZS1heGlzMS1iZXR3ZWVuJyxcbiAgICBDRU5URVI6ICd0aWRlLWF4aXMxLWNlbnRlcicsXG4gICAgRU5EOiAndGlkZS1heGlzMS1lbmQnLFxuICAgIFNUQVJUOiAndGlkZS1heGlzMS1zdGFydCcsXG4gIH0sXG4gIEFYSVMyOiB7XG4gICAgQVJPVU5EOiAndGlkZS1heGlzMi1hcm91bmQnLFxuICAgIENFTlRFUjogJ3RpZGUtYXhpczItY2VudGVyJyxcbiAgICBFTkQ6ICd0aWRlLWF4aXMyLWVuZCcsXG4gICAgU1RBUlQ6ICd0aWRlLWF4aXMyLXN0YXJ0JyxcbiAgICBTVFJFVENIOiAndGlkZS1heGlzMi1zdHJldGNoJyxcbiAgfSxcbiAgQkc6IHtcbiAgICBHTE9CQUw6IHtcbiAgICAgIFBSSU1BUlk6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWJnLXByaW1hcnktZXJyb3InLFxuICAgICAgICBJTkZPOiAndGlkZS1iZy1wcmltYXJ5LWluZm8nLFxuICAgICAgICBTVUNDRVNTOiAndGlkZS1iZy1wcmltYXJ5LXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1iZy1wcmltYXJ5LXdhcm5pbmcnLFxuICAgICAgfSxcbiAgICAgIFNVUkZBQ0U6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWJnLXN1cmZhY2UtZXJyb3InLFxuICAgICAgICBJTkZPOiAndGlkZS1iZy1zdXJmYWNlLWluZm8nLFxuICAgICAgICBTVUNDRVNTOiAndGlkZS1iZy1zdXJmYWNlLXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1iZy1zdXJmYWNlLXdhcm5pbmcnLFxuXG4gICAgICAgIEJMVUU6ICd0aWRlLWJnLXN1cmZhY2UtYmx1ZScsXG4gICAgICAgIEdSRUVOOiAndGlkZS1iZy1zdXJmYWNlLWdyZWVuJyxcbiAgICAgICAgTElNRTogJ3RpZGUtYmctc3VyZmFjZS1saW1lJyxcbiAgICAgICAgT1JBTkdFOiAndGlkZS1iZy1zdXJmYWNlLW9yYW5nZScsXG4gICAgICAgIFBVUlBMRTogJ3RpZGUtYmctc3VyZmFjZS1wdXJwbGUnLFxuICAgICAgICBSRUQ6ICd0aWRlLWJnLXN1cmZhY2UtcmVkJyxcbiAgICAgICAgU0FMTU9OOiAndGlkZS1iZy1zdXJmYWNlLXNhbG1vbicsXG4gICAgICAgIFRFQUw6ICd0aWRlLWJnLXN1cmZhY2UtdGVhbCcsXG4gICAgICAgIFlFTExPVzogJ3RpZGUtYmctc3VyZmFjZS15ZWxsb3cnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIElOSVRJQUw6ICd0aWRlLWJnLWluaXRpYWwnLFxuICAgIEJMVVI6ICd0aWRlLWJnLWJsdXInLFxuICAgIFBSSU1BUlk6ICd0aWRlLWJnLXByaW1hcnknLFxuICAgIFNFQ09OREFSWTogJ3RpZGUtYmctc2Vjb25kYXJ5JyxcbiAgICBTVVJGQUNFOiB7XG4gICAgICBBQ0NFTlQ6ICd0aWRlLWJnLXN1cmZhY2UtYWNjZW50JyxcbiAgICAgIEJSQU5EOiAndGlkZS1iZy1zdXJmYWNlLWJyYW5kJyxcbiAgICAgIERFRkFVTFQ6ICd0aWRlLWJnLXN1cmZhY2UnLFxuICAgICAgRkxPQVRJTkc6ICd0aWRlLWJnLXN1cmZhY2UtZmxvYXRpbmcnLFxuICAgICAgR1JBRElFTlQ6ICd0aWRlLWJnLXN1cmZhY2UtZ3JhZGllbnQnLFxuICAgICAgSU5WRVJTRTogJ3RpZGUtYmctc3VyZmFjZS1pbnZlcnNlJyxcbiAgICAgIFZBUklBTlQ6ICd0aWRlLWJnLXN1cmZhY2UtdmFyaWFudCcsXG4gICAgfSxcbiAgICBUUkFOU1BBUkVOVDoge1xuICAgICAgT05FX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTEwMCcsXG4gICAgICBUV09fSFVORFJFRDogJ3RpZGUtdHJhbnNwYXJlbnQtMjAwJyxcbiAgICAgIFRIUkVFX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTMwMCcsXG4gICAgICBGT1VSX0hVTkRSRUQ6ICd0aWRlLXRyYW5zcGFyZW50LTQwMCcsXG4gICAgfSxcbiAgfSxcbiAgQk9SREVSOiB7XG4gICAgQ09MT1I6IHtcbiAgICAgIEdMT0JBTDoge1xuICAgICAgICBFUlJPUjogJ3RpZGUtYm9yZGVyLWVycm9yJyxcbiAgICAgICAgSU5GTzogJ3RpZGUtYm9yZGVyLWluZm8nLFxuICAgICAgICBTVUNDRVNTOiAndGlkZS1ib3JkZXItc3VjY2VzcycsXG4gICAgICAgIFdBUk5JTkc6ICd0aWRlLWJvcmRlci13YXJuaW5nJyxcblxuICAgICAgICBCTFVFOiAndGlkZS1ib3JkZXItYmx1ZScsXG4gICAgICAgIEdSRUVOOiAndGlkZS1ib3JkZXItZ3JlZW4nLFxuICAgICAgICBMSU1FOiAndGlkZS1ib3JkZXItbGltZScsXG4gICAgICAgIE9SQU5HRTogJ3RpZGUtYm9yZGVyLW9yYW5nZScsXG4gICAgICAgIFBVUlBMRTogJ3RpZGUtYm9yZGVyLXB1cnBsZScsXG4gICAgICAgIFJFRDogJ3RpZGUtYm9yZGVyLXJlZCcsXG4gICAgICAgIFNBTE1PTjogJ3RpZGUtYm9yZGVyLXNhbG1vbicsXG4gICAgICAgIFRFQUw6ICd0aWRlLWJvcmRlci10ZWFsJyxcbiAgICAgICAgWUVMTE9XOiAndGlkZS1ib3JkZXIteWVsbG93JyxcbiAgICAgIH0sXG4gICAgICBJTklUSUFMOiAndGlkZS1ib3JkZXItY29sb3ItaW5pdGlhbCcsXG4gICAgICBERUZBVUxUOiAndGlkZS1ib3JkZXInLFxuICAgICAgRkxPQVRJTkc6ICd0aWRlLWJvcmRlci1mbG9hdGluZycsXG4gICAgICBISUdIOiAndGlkZS1ib3JkZXItaGlnaCcsXG4gICAgICBMT1c6ICd0aWRlLWJvcmRlci1sb3cnLFxuICAgICAgUFJJTUFSWTogJ3RpZGUtYm9yZGVyLXByaW1hcnknLFxuICAgIH0sXG4gICAgUkFESVVTOiB7XG4gICAgICBaRVJPOiAndGlkZS1yYWRpdXMtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1yYWRpdXMtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXJhZGl1cy0xLzInLFxuICAgICAgT05FOiAndGlkZS1yYWRpdXMtMScsXG4gICAgICBGVUxMOiAndGlkZS1yYWRpdXMtZnVsbCcsXG4gICAgfSxcbiAgICBTVFlMRToge1xuICAgICAgREFTSEVEOiAndGlkZS1ib3JkZXItZGFzaGVkJyxcbiAgICAgIFNPTElEOiAndGlkZS1ib3JkZXItc29saWQnLFxuICAgIH0sXG4gICAgQk9UVE9NOiB7XG4gICAgICBaRVJPOiAndGlkZS1ib3JkZXItYm90dG9tLTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1ib3JkZXItYm90dG9tLTInLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci0yJyxcbiAgICB9LFxuICAgIExFRlQ6IHtcbiAgICAgIFpFUk86ICd0aWRlLWJvcmRlci1sZWZ0LTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItbGVmdC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLWxlZnQtMicsXG4gICAgfSxcbiAgICBSSUdIVDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLXJpZ2h0LTAnLFxuICAgICAgT05FOiAndGlkZS1ib3JkZXItcmlnaHQtMScsXG4gICAgICBUV086ICd0aWRlLWJvcmRlci1yaWdodC0yJyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgWkVSTzogJ3RpZGUtYm9yZGVyLXRvcC0wJyxcbiAgICAgIE9ORTogJ3RpZGUtYm9yZGVyLXRvcC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtYm9yZGVyLXRvcC0yJyxcbiAgICB9LFxuICB9LFxuICBCT1hfU0laSU5HOiB7XG4gICAgQk9SREVSX0JPWDogJ3RpZGUtYm94LWJvcmRlcicsXG4gICAgQ09OVEVOVF9CT1g6ICd0aWRlLWJveC1jb250ZW50JyxcbiAgfSxcbiAgQlJFQUtfSU5TSURFOiB7XG4gICAgQVZPSURfQ09MVU1OOiAndGlkZS1icmVhay1pbnNpZGUtYXZvaWQtY29sdW1uJyxcbiAgfSxcbiAgQlJFQUtfV09SRDoge1xuICAgIE9GRjogJ3RpZGUtYnJlYWstaW5pdGlhbCcsXG4gICAgT046ICd0aWRlLWJyZWFrLXdvcmQnLFxuICB9LFxuICBDT0xVTU5TOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtY29sdW1ucy1pbml0aWFsJyxcbiAgICBPTkU6ICd0aWRlLWNvbHVtbnMtMScsXG4gICAgVFdPOiAndGlkZS1jb2x1bW5zLTInLFxuICAgIFRIUkVFOiAndGlkZS1jb2x1bW5zLTMnLFxuICAgIEZPVVI6ICd0aWRlLWNvbHVtbnMtNCcsXG4gIH0sXG4gIENVUlNPUjoge1xuICAgIE5PVF9BTExPV0VEOiAndGlkZS1jdXJzb3Itbm90LWFsbG93ZWQnLFxuICAgIFBPSU5URVI6ICd0aWRlLWN1cnNvci1wb2ludGVyJyxcbiAgICBURVhUOiAndGlkZS1jdXJzb3ItdGV4dCcsXG4gIH0sXG4gIERJU1BMQVk6IHtcbiAgICBCTE9DSzogJ3RpZGUtZGlzcGxheS1ibG9jaycsXG4gICAgQ09OVEVOVFM6ICd0aWRlLWRpc3BsYXktY29udGVudHMnLFxuICAgIEZMRVg6ICd0aWRlLWRpc3BsYXktZmxleCcsXG4gICAgR1JJRDogJ3RpZGUtZGlzcGxheS1ncmlkJyxcbiAgICBJTklUSUFMOiAndGlkZS1kaXNwbGF5LWluaXRpYWwnLFxuICAgIElOTElORTogJ3RpZGUtZGlzcGxheS1pbmxpbmUnLFxuICAgIElOTElORV9CTE9DSzogJ3RpZGUtZGlzcGxheS1pbmxpbmUtYmxvY2snLFxuICAgIElOTElORV9GTEVYOiAndGlkZS1kaXNwbGF5LWlubGluZS1mbGV4JyxcbiAgICBOT05FOiAndGlkZS1kaXNwbGF5LW5vbmUnLFxuICB9LFxuICBFTExJUFNJUzogJ3RpZGUtZWxsaXBzaXMnLFxuICBGTEVYOiB7XG4gICAgQkFTSVM6IHtcbiAgICAgIEFVVE86ICd0aWRlLWZsZXgtYmFzaXMtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1mbGV4LWJhc2lzLTAnLFxuICAgIH0sXG4gICAgRElSRUNUSU9OOiB7XG4gICAgICBDT0xVTU46ICd0aWRlLWZsZXgtY29sdW1uJyxcbiAgICAgIENPTFVNTl9SRVZFUlNFOiAndGlkZS1mbGV4LWNvbHVtbi1yZXZlcnNlJyxcbiAgICAgIFJPVzogJ3RpZGUtZmxleC1yb3cnLFxuICAgICAgUk9XX1JFVkVSU0U6ICd0aWRlLWZsZXgtcm93LXJldmVyc2UnLFxuICAgIH0sXG4gICAgR1JPVzoge1xuICAgICAgT0ZGOiAndGlkZS1ncm93LW5vbmUnLFxuICAgICAgT046ICd0aWRlLWdyb3cnLFxuICAgIH0sXG4gICAgU0hSSU5LOiB7XG4gICAgICBPRkY6ICd0aWRlLXNocmluay1ub25lJyxcbiAgICAgIE9OOiAndGlkZS1zaHJpbmsnLFxuICAgIH0sXG4gICAgV1JBUDogJ3RpZGUtZmxleC13cmFwJyxcbiAgfSxcbiAgRk9OVDoge1xuICAgIENPTE9SOiB7XG4gICAgICBHTE9CQUw6IHtcbiAgICAgICAgRVJST1I6ICd0aWRlLWZvbnQtZXJyb3InLFxuICAgICAgICBJTkZPOiAndGlkZS1mb250LWluZm8nLFxuICAgICAgICBTVUNDRVNTOiAndGlkZS1mb250LXN1Y2Nlc3MnLFxuICAgICAgICBXQVJOSU5HOiAndGlkZS1mb250LXdhcm5pbmcnLFxuXG4gICAgICAgIEJMVUU6ICd0aWRlLWZvbnQtYmx1ZScsXG4gICAgICAgIEdSRUVOOiAndGlkZS1mb250LWdyZWVuJyxcbiAgICAgICAgTElNRTogJ3RpZGUtZm9udC1saW1lJyxcbiAgICAgICAgT1JBTkdFOiAndGlkZS1mb250LW9yYW5nZScsXG4gICAgICAgIFBVUlBMRTogJ3RpZGUtZm9udC1wdXJwbGUnLFxuICAgICAgICBSRUQ6ICd0aWRlLWZvbnQtcmVkJyxcbiAgICAgICAgU0FMTU9OOiAndGlkZS1mb250LXNhbG1vbicsXG4gICAgICAgIFRFQUw6ICd0aWRlLWZvbnQtdGVhbCcsXG4gICAgICAgIFlFTExPVzogJ3RpZGUtZm9udC15ZWxsb3cnLFxuXG4gICAgICAgIFBSSU1BUlk6IHtcbiAgICAgICAgICBCTFVFOiAndGlkZS1mb250LXByaW1hcnktYmx1ZScsXG4gICAgICAgICAgR1JFRU46ICd0aWRlLWZvbnQtcHJpbWFyeS1ncmVlbicsXG4gICAgICAgICAgTElNRTogJ3RpZGUtZm9udC1wcmltYXJ5LWxpbWUnLFxuICAgICAgICAgIE9SQU5HRTogJ3RpZGUtZm9udC1wcmltYXJ5LW9yYW5nZScsXG4gICAgICAgICAgUFVSUExFOiAndGlkZS1mb250LXByaW1hcnktcHVycGxlJyxcbiAgICAgICAgICBSRUQ6ICd0aWRlLWZvbnQtcHJpbWFyeS1yZWQnLFxuICAgICAgICAgIFNBTE1PTjogJ3RpZGUtZm9udC1wcmltYXJ5LXNhbG1vbicsXG4gICAgICAgICAgVEVBTDogJ3RpZGUtZm9udC1wcmltYXJ5LXRlYWwnLFxuICAgICAgICAgIFlFTExPVzogJ3RpZGUtZm9udC1wcmltYXJ5LXllbGxvdycsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgUFJJTUFSWTogJ3RpZGUtZm9udC1vbi1wcmltYXJ5JyxcbiAgICAgIFNFQ09OREFSWTogJ3RpZGUtZm9udC1vbi1zZWNvbmRhcnknLFxuICAgICAgU1VSRkFDRToge1xuICAgICAgICBCUkFORDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLWJyYW5kJyxcbiAgICAgICAgREVGQVVMVDogJ3RpZGUtZm9udC1vbi1zdXJmYWNlJyxcbiAgICAgICAgSU5WRVJTRTogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLWludmVyc2UnLFxuICAgICAgICBWQVJJQU5UOiAndGlkZS1mb250LW9uLXN1cmZhY2UtdmFyaWFudCcsXG4gICAgICAgIFZBUklBTlRfSU5WRVJTRTogJ3RpZGUtZm9udC1vbi1zdXJmYWNlLXZhcmlhbnQtaW52ZXJzZScsXG4gICAgICB9LFxuICAgIH0sXG4gICAgUk9MRToge1xuICAgICAgRElTUExBWV8xOiAndGlkZS10eXBvZ3JhcGh5LWRpc3BsYXktMScsXG4gICAgICBIRUFETElORV8xOiAndGlkZS10eXBvZ3JhcGh5LWhlYWRsaW5lLTEnLFxuICAgICAgSEVBRExJTkVfMjogJ3RpZGUtdHlwb2dyYXBoeS1oZWFkbGluZS0yJyxcbiAgICAgIEhFQURMSU5FXzM6ICd0aWRlLXR5cG9ncmFwaHktaGVhZGxpbmUtMycsXG4gICAgICBUSVRMRV8xOiAndGlkZS10eXBvZ3JhcGh5LXRpdGxlLTEnLFxuICAgICAgVElUTEVfMjogJ3RpZGUtdHlwb2dyYXBoeS10aXRsZS0yJyxcbiAgICAgIEJPRFlfMTogJ3RpZGUtdHlwb2dyYXBoeS1ib2R5LTEnLFxuICAgICAgQk9EWV8yOiAndGlkZS10eXBvZ3JhcGh5LWJvZHktMicsXG4gICAgICBMQUJFTF8xOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTEnLFxuICAgICAgTEFCRUxfMV9TRU1JQk9MRDogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0xLXNlbWlib2xkJyxcbiAgICAgIExBQkVMXzI6ICd0aWRlLXR5cG9ncmFwaHktbGFiZWwtMicsXG4gICAgICBMQUJFTF8yX1NFTUlCT0xEOiAndGlkZS10eXBvZ3JhcGh5LWxhYmVsLTItc2VtaWJvbGQnLFxuICAgICAgTEFCRUxfMzogJ3RpZGUtdHlwb2dyYXBoeS1sYWJlbC0zJyxcbiAgICAgIExJTktfMTogJ3RpZGUtdHlwb2dyYXBoeS1saW5rLTEnLFxuICAgICAgTElOS18yOiAndGlkZS10eXBvZ3JhcGh5LWxpbmstMicsXG4gICAgICBMSU5LXzM6ICd0aWRlLXR5cG9ncmFwaHktbGluay0zJyxcbiAgICAgIEJVVFRPTl8xOiAndGlkZS10eXBvZ3JhcGh5LWJ1dHRvbi0xJyxcbiAgICAgIEJVVFRPTl8yOiAndGlkZS10eXBvZ3JhcGh5LWJ1dHRvbi0yJyxcbiAgICB9LFxuICAgIFNJWkU6IHtcbiAgICAgIFRXRUxWRTogJ3RpZGUtZm9udC0xMicsXG4gICAgICBGT1VSVEVFTjogJ3RpZGUtZm9udC0xNCcsXG4gICAgICBTSVhURUVOOiAndGlkZS1mb250LTE2JyxcbiAgICAgIFRXRU5UWTogJ3RpZGUtZm9udC0yMCcsXG4gICAgICBUV0VOVFlfRk9VUjogJ3RpZGUtZm9udC0yNCcsXG4gICAgICBUSElSVFlfVFdPOiAndGlkZS1mb250LTMyJyxcbiAgICB9LFxuICAgIFdFSUdIVDoge1xuICAgICAgRk9VUl9IVU5EUkVEOiAndGlkZS1mb250LTQwMCcsXG4gICAgICBGSVZFX0hVTkRSRUQ6ICd0aWRlLWZvbnQtNTAwJyxcbiAgICAgIFNJWF9IVU5EUkVEOiAndGlkZS1mb250LTYwMCcsXG4gICAgICBTRVZFTl9IVU5EUkVEOiAndGlkZS1mb250LTcwMCcsXG4gICAgfSxcbiAgfSxcbiAgR0FQOiB7XG4gICAgWkVSTzogJ3RpZGUtZ2FwLTAnLFxuICAgIFFVQVJURVI6ICd0aWRlLWdhcC0xLzQnLFxuICAgIEhBTEY6ICd0aWRlLWdhcC0xLzInLFxuICAgIE9ORTogJ3RpZGUtZ2FwLTEnLFxuICAgIFRXTzogJ3RpZGUtZ2FwLTInLFxuICAgIEZPVVI6ICd0aWRlLWdhcC00JyxcbiAgfSxcbiAgR1JJRDoge1xuICAgIEZMVUlEOiAndGlkZS1mbHVpZCcsXG4gICAgSVRFTTogJ3RpZGUtZ3JpZC1pdGVtJyxcbiAgICBMQVlPVVQ6ICd0aWRlLWdyaWQtbGF5b3V0JyxcbiAgICBYTDogJ3RpZGUtZ3JpZC14bCcsXG4gIH0sXG4gIEhFSUdIVDoge1xuICAgIEFVVE86ICd0aWRlLWhlaWdodC1hdXRvJyxcbiAgICBaRVJPOiAndGlkZS1oZWlnaHQtMCcsXG4gICAgRlVMTDogJ3RpZGUtaGVpZ2h0LWZ1bGwnLFxuICAgIE1BWF9GVUxMOiAndGlkZS1tYXgtaGVpZ2h0LWZ1bGwnLFxuICAgIE1JTl9aRVJPOiAndGlkZS1taW4taGVpZ2h0LTAnLFxuICB9LFxuICBJU09MQVRJT046IHtcbiAgICBJU09MQVRFOiAndGlkZS1pc29sYXRlJyxcbiAgfSxcbiAgTElTVF9CVUxMRVRTOiB7XG4gICAgT0ZGOiAndGlkZS1saXN0LW5vbmUnLFxuICB9LFxuICBNQVJHSU46IHtcbiAgICBCT1RUT006IHtcbiAgICAgIEFVVE86ICd0aWRlLW1hcmdpbi1ib3R0b20tYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tYm90dG9tLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLWJvdHRvbS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLWJvdHRvbS0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4tYm90dG9tLTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLWJvdHRvbS00JyxcbiAgICB9LFxuICAgIEZVTEw6IHtcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtbWFyZ2luLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLTInLFxuICAgICAgRk9VUjogJ3RpZGUtbWFyZ2luLTQnLFxuICAgIH0sXG4gICAgTEVGVDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLWxlZnQtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tbGVmdC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi1sZWZ0LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tbGVmdC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tbGVmdC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLWxlZnQtMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tbGVmdC00JyxcbiAgICB9LFxuICAgIFJJR0hUOiB7XG4gICAgICBBVVRPOiAndGlkZS1tYXJnaW4tcmlnaHQtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4tcmlnaHQtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tcmlnaHQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi1yaWdodC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4tcmlnaHQtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi1yaWdodC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi1yaWdodC00JyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLXRvcC1hdXRvJyxcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi10b3AtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1tYXJnaW4tdG9wLTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4tdG9wLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi10b3AtMScsXG4gICAgICBUV086ICd0aWRlLW1hcmdpbi10b3AtMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4tdG9wLTQnLFxuICAgIH0sXG4gICAgWDoge1xuICAgICAgQVVUTzogJ3RpZGUtbWFyZ2luLXgtYXV0bycsXG4gICAgICBaRVJPOiAndGlkZS1tYXJnaW4teC0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLW1hcmdpbi14LTEvNCcsXG4gICAgICBIQUxGOiAndGlkZS1tYXJnaW4teC0xLzInLFxuICAgICAgT05FOiAndGlkZS1tYXJnaW4teC0xJyxcbiAgICAgIFRXTzogJ3RpZGUtbWFyZ2luLXgtMicsXG4gICAgICBGT1VSOiAndGlkZS1tYXJnaW4teC00JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIFpFUk86ICd0aWRlLW1hcmdpbi15LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtbWFyZ2luLXktMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLW1hcmdpbi15LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLW1hcmdpbi15LTEnLFxuICAgICAgVFdPOiAndGlkZS1tYXJnaW4teS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLW1hcmdpbi15LTQnLFxuICAgIH0sXG4gIH0sXG4gIE9CSkVDVDoge1xuICAgIENFTlRFUjogJ3RpZGUtb2JqZWN0LWNlbnRlcicsXG4gICAgQ09OVEFJTjogJ3RpZGUtb2JqZWN0LWNvbnRhaW4nLFxuICAgIENPVkVSOiAndGlkZS1vYmplY3QtY292ZXInLFxuICAgIFNDQUxFX0RPV046ICd0aWRlLW9iamVjdC1zY2FsZS1kb3duJyxcbiAgfSxcbiAgT1BBQ0lUWToge1xuICAgIERJU0FCTEVEOiAndGlkZS1vcGFjaXR5LWRpc2FibGVkJyxcbiAgICBPRkY6ICd0aWRlLW9wYWNpdHktbm9uZScsXG4gICAgT046ICd0aWRlLW9wYWNpdHknLFxuICB9LFxuICBPVkVSRkxPVzoge1xuICAgIFg6IHtcbiAgICAgIEFVVE86ICd0aWRlLXgtYXV0bycsXG4gICAgICBISURERU46ICd0aWRlLXgtaGlkZGVuJyxcbiAgICAgIFNDUk9MTDogJ3RpZGUteC1zY3JvbGwnLFxuICAgIH0sXG4gICAgWFk6IHtcbiAgICAgIEFVVE86ICd0aWRlLXh5LWF1dG8nLFxuICAgICAgSElEREVOOiAndGlkZS14eS1oaWRkZW4nLFxuICAgIH0sXG4gICAgWToge1xuICAgICAgQVVUTzogJ3RpZGUteS1hdXRvJyxcbiAgICAgIEhJRERFTjogJ3RpZGUteS1oaWRkZW4nLFxuICAgIH0sXG4gIH0sXG4gIFBBRERJTkc6IHtcbiAgICBCT1RUT006IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmctYm90dG9tLTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1ib3R0b20tMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmctYm90dG9tLTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLWJvdHRvbS0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctYm90dG9tLTQnLFxuICAgIH0sXG4gICAgRlVMTDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmctMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctNCcsXG4gICAgfSxcbiAgICBMRUZUOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLWxlZnQtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLWxlZnQtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmctbGVmdC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLWxlZnQtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctbGVmdC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmctbGVmdC00JyxcbiAgICB9LFxuICAgIFJJR0hUOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTAnLFxuICAgICAgUVVBUlRFUjogJ3RpZGUtcGFkZGluZy1yaWdodC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy1yaWdodC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTEnLFxuICAgICAgVFdPOiAndGlkZS1wYWRkaW5nLXJpZ2h0LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy1yaWdodC00JyxcbiAgICB9LFxuICAgIFRPUDoge1xuICAgICAgWkVSTzogJ3RpZGUtcGFkZGluZy10b3AtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXRvcC0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy10b3AtMS8yJyxcbiAgICAgIE9ORTogJ3RpZGUtcGFkZGluZy10b3AtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmctdG9wLTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy10b3AtNCcsXG4gICAgfSxcbiAgICBYOiB7XG4gICAgICBaRVJPOiAndGlkZS1wYWRkaW5nLXgtMCcsXG4gICAgICBRVUFSVEVSOiAndGlkZS1wYWRkaW5nLXgtMS80JyxcbiAgICAgIEhBTEY6ICd0aWRlLXBhZGRpbmcteC0xLzInLFxuICAgICAgT05FOiAndGlkZS1wYWRkaW5nLXgtMScsXG4gICAgICBUV086ICd0aWRlLXBhZGRpbmcteC0yJyxcbiAgICAgIEZPVVI6ICd0aWRlLXBhZGRpbmcteC00JyxcbiAgICB9LFxuICAgIFk6IHtcbiAgICAgIFpFUk86ICd0aWRlLXBhZGRpbmcteS0wJyxcbiAgICAgIFFVQVJURVI6ICd0aWRlLXBhZGRpbmcteS0xLzQnLFxuICAgICAgSEFMRjogJ3RpZGUtcGFkZGluZy15LTEvMicsXG4gICAgICBPTkU6ICd0aWRlLXBhZGRpbmcteS0xJyxcbiAgICAgIFRXTzogJ3RpZGUtcGFkZGluZy15LTInLFxuICAgICAgRk9VUjogJ3RpZGUtcGFkZGluZy15LTQnLFxuICAgIH0sXG4gIH0sXG4gIFBPSU5URVJfRVZFTlRTOiB7XG4gICAgT0ZGOiAndGlkZS1wb2ludGVyLWV2ZW50cy1ub25lJyxcbiAgICBPTjogJ3RpZGUtcG9pbnRlci1ldmVudHMnLFxuICB9LFxuICBQT1NJVElPTjoge1xuICAgIEFCU09MVVRFOiAndGlkZS1wb3NpdGlvbi1hYnNvbHV0ZScsXG4gICAgRklYRUQ6ICd0aWRlLXBvc2l0aW9uLWZpeGVkJyxcbiAgICBSRUxBVElWRTogJ3RpZGUtcG9zaXRpb24tcmVsYXRpdmUnLFxuICAgIFNUQVRJQzogJ3RpZGUtcG9zaXRpb24tc3RhdGljJyxcbiAgICBTVElDS1k6ICd0aWRlLXBvc2l0aW9uLXN0aWNreScsXG4gIH0sXG4gIFBPU0lUSU9OSU5HOiB7XG4gICAgQk9UVE9NOiAndGlkZS1ib3R0b20tMCcsXG4gICAgTEVGVDogJ3RpZGUtbGVmdC0wJyxcbiAgICBSSUdIVDogJ3RpZGUtcmlnaHQtMCcsXG4gICAgVE9QOiAndGlkZS10b3AtMCcsXG4gIH0sXG4gIFJBVElPOiB7XG4gICAgT05FX1RPX09ORTogJ3RpZGUtcmF0aW8tMS8xJyxcbiAgICBTSVhURUVOX1RPX05JTkU6ICd0aWRlLXJhdGlvLTE2LzknLFxuICAgIFRIUkVFX1RPX1RXTzogJ3RpZGUtcmF0aW8tMy8yJyxcbiAgfSxcbiAgU0NST0xMQkFSOiB7XG4gICAgT0ZGOiAndGlkZS1zY3JvbGxiYXItbm9uZScsXG4gIH0sXG4gIFNIQURPVzoge1xuICAgIElOSVRJQUw6ICd0aWRlLXNoYWRvdy1pbml0aWFsJyxcbiAgICBCT1RUT006ICd0aWRlLXNoYWRvdy1ib3R0b20nLFxuICAgIFRPUDogJ3RpZGUtc2hhZG93LXRvcCcsXG4gICAgVEVYVDogJ3RpZGUtc2hhZG93LXRleHQnLFxuICB9LFxuICBTTkFQOiB7XG4gICAgT046ICd0aWRlLXNjcm9sbC1zbmFwJyxcbiAgfSxcbiAgU05BUF9BTElHTjoge1xuICAgIFNUQVJUOiAndGlkZS1zY3JvbGwtc25hcC1zdGFydCcsXG4gIH0sXG4gIFNUUklLRVRIUk9VR0g6IHtcbiAgICBPRkY6ICd0aWRlLXN0cmlrZXRocm91Z2gtbm9uZScsXG4gICAgT046ICd0aWRlLXN0cmlrZXRocm91Z2gnLFxuICB9LFxuICBURVhUX1RSQU5TRk9STToge1xuICAgIExPV0VSOiAndGlkZS10ZXh0LXRyYW5zZm9ybS1sb3dlcicsXG4gICAgTk9ORTogJ3RpZGUtdGV4dC10cmFuc2Zvcm0tbm9uZScsXG4gICAgVVBQRVI6ICd0aWRlLXRleHQtdHJhbnNmb3JtLXVwcGVyJyxcbiAgfSxcbiAgVU5ERVJMSU5FOiB7XG4gICAgSE9WRVI6IHtcbiAgICAgIE9OOiAndGlkZS11bmRlcmxpbmUtaG92ZXInLFxuICAgICAgT0ZGOiAndGlkZS11bmRlcmxpbmUtaG92ZXItbm9uZScsXG4gICAgfSxcbiAgICBSRVNUOiB7XG4gICAgICBPTjogJ3RpZGUtdW5kZXJsaW5lJyxcbiAgICAgIE9GRjogJ3RpZGUtdW5kZXJsaW5lLW5vbmUnLFxuICAgIH0sXG4gIH0sXG4gIFVTRVJfU0VMRUNUOiB7XG4gICAgSU5JVElBTDogJ3RpZGUtdXNlci1zZWxlY3QtaW5pdGlhbCcsXG4gICAgTk9ORTogJ3RpZGUtdXNlci1zZWxlY3Qtbm9uZScsXG4gIH0sXG4gIFZJU0lCSUxJVFk6IHtcbiAgICBPRkY6ICd0aWRlLXZpc2libGUtbm9uZScsXG4gICAgT046ICd0aWRlLXZpc2libGUnLFxuICB9LFxuICBXSElURVNQQUNFX1dSQVA6IHtcbiAgICBPRkY6ICd0aWRlLXdoaXRlc3BhY2Utbm93cmFwJyxcbiAgfSxcbiAgV0lEVEg6IHtcbiAgICBBVVRPOiAndGlkZS13aWR0aC1hdXRvJyxcbiAgICBGVUxMOiAndGlkZS13aWR0aC1mdWxsJyxcbiAgICBNQVhfRlVMTDogJ3RpZGUtbWF4LXdpZHRoLWZ1bGwnLFxuICAgIE1JTl9aRVJPOiAndGlkZS1taW4td2lkdGgtMCcsXG4gICAgU1RSRVRDSDogJ3RpZGUtd2lkdGgtc3RyZXRjaCcsXG4gICAgWkVSTzogJ3RpZGUtd2lkdGgtMCcsXG4gIH0sXG4gIFpfSU5ERVg6IHtcbiAgICBJTklUSUFMOiAndGlkZS16LWluZGV4LWluaXRpYWwnLFxuICAgIE9ORTogJ3RpZGUtei1pbmRleC0xJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGRpdmlkZXIgY29tcG9uZW50LlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlZGl2aWRlci0tZG9jcykgZm9yIFRpZGVEaXZpZGVyXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBPUklFTlRBVElPTiB9IGZyb20gJ0AvdHlwZXMvT3JpZW50YXRpb24nO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBPcmllbnRhdGlvbiB9IGZyb20gJ0AvdHlwZXMvT3JpZW50YXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBEaXZpZGVyIGlzIGhvcml6b250YWwgb3IgdmVydGljYWwgKi9cbiAgICBvcmllbnRhdGlvbj86IE9yaWVudGF0aW9uO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgb3JpZW50YXRpb246IE9SSUVOVEFUSU9OLkhPUklaT05UQUwsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtZGl2aWRlciddXCI+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuQk9SREVSLkNPTE9SLkxPVyxcbiAgICAgICAgcHJvcHMub3JpZW50YXRpb24gPT09IE9SSUVOVEFUSU9OLkhPUklaT05UQUxcbiAgICAgICAgICA/IFtDU1MuTUFSR0lOLlkuSEFMRiwgQ1NTLkJPUkRFUi5CT1RUT00uT05FLCBDU1MuV0lEVEguRlVMTF1cbiAgICAgICAgICA6IFtDU1MuTUFSR0lOLlguSEFMRiwgQ1NTLkJPUkRFUi5SSUdIVC5PTkUsIENTUy5IRUlHSFQuRlVMTF0sXG4gICAgICBdXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWRpdmlkZXIge1xuICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7XG4gIH1cbjwvc3R5bGU+XG4iLCJleHBvcnQgY29uc3QgUkVBTE0gPSB7XG4gIEFFUk86ICdhZXJvJyxcbiAgQVRWOiAnYXR2JyxcbiAgQk9BVE1BUlQ6ICdib2F0bWFydCcsXG4gIENZQ0xFOiAnY3ljbGUnLFxuICBFUVVJUE1FTlQ6ICdlcXVpcG1lbnQnLFxuICBQV0M6ICdwd2MnLFxuICBSVjogJ3J2JyxcbiAgU05PVzogJ3Nub3cnLFxuICBUUlVDSzogJ3RydWNrJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFJlYWxtS2V5ID0ga2V5b2YgdHlwZW9mIFJFQUxNO1xuZXhwb3J0IHR5cGUgUmVhbG0gPSAodHlwZW9mIFJFQUxNKVtSZWFsbUtleV07XG4iLCJleHBvcnQgY29uc3QgU0laRSA9IHtcbiAgTEFSR0U6ICdsYXJnZScsXG4gIFNNQUxMOiAnc21hbGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgU2l6ZSA9ICh0eXBlb2YgU0laRSlba2V5b2YgdHlwZW9mIFNJWkVdO1xuXG5leHBvcnQgY29uc3QgU0laRV9CVVRUT04gPSB7XG4gIExBUkdFOiAnbGFyZ2UnLFxuICBTTUFMTDogJ3NtYWxsJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFNpemVCdXR0b24gPSAodHlwZW9mIFNJWkUpW2tleW9mIHR5cGVvZiBTSVpFXTtcbiIsImNvbnN0IGNhcGl0YWxpemVGaXJzdCA9IChzdHJpbmc6IHN0cmluZykgPT4ge1xuICByZXR1cm4gc3RyaW5nLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyaW5nLnNsaWNlKDEpO1xufTtcblxuY29uc3QgZm9ybWF0Q2FtZWxDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gaW5wdXQgJiYgdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJ1xuICAgID8gaW5wdXRcbiAgICAgICAgLnJlcGxhY2UoL15bXFxzXy1dLywgJycpXG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5tYXAoKHdvcmQsIGluZGV4KSA9PiAoaW5kZXggPT09IDAgPyB3b3JkIDogd29yZC5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKSkpXG4gICAgICAgIC5qb2luKCcnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRLZWJhYkNhc2UgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnXG4gICAgPyBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvKFthLXpdezF9KShbQS1aXXsxfSkvZywgJyQxICQyJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJy0nKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRMYWJlbCA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGxhYmVsTWFwOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgIGZhbHNlOiAnTm8nLFxuICAgIHRydWU6ICdZZXMnLFxuICB9O1xuICByZXR1cm4gT2JqZWN0Lmhhc093bihsYWJlbE1hcCwgdmFsdWUpID8gbGFiZWxNYXBbdmFsdWVdIDogdmFsdWU7XG59O1xuXG5jb25zdCBmb3JtYXROdW1iZXIgPSAoaW5wdXQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBvdXRwdXQgPSBpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInID8gbmV3IEludGwuTnVtYmVyRm9ybWF0KCkuZm9ybWF0KGlucHV0KSA6IFN0cmluZyhpbnB1dCB8fCAnJyk7XG4gIGxldCBkaWdpdHMgPSBvdXRwdXQ7XG5cbiAgaWYgKGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICBkaWdpdHMgPSBkaWdpdHMucmVwbGFjZSgvXFxEL2csICcnKTtcbiAgICBpZiAoTnVtYmVyKGRpZ2l0cykpIHtcbiAgICAgIG91dHB1dCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdChOdW1iZXIoZGlnaXRzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dHB1dCA9ICcwJztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuY29uc3QgZm9ybWF0UGFzY2FsQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5tYXAoKHdvcmQpID0+IHdvcmQuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkpXG4gICAgICAgIC5qb2luKCcnKVxuICAgIDogaW5wdXQ7XG59O1xuXG5jb25zdCBmb3JtYXRQaG9uZSA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgPyBTdHJpbmcoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcnKTtcbiAgbGV0IGRpZ2l0cyA9IG91dHB1dDtcbiAgZGlnaXRzID0gZGlnaXRzLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG5cbiAgc3dpdGNoIChkaWdpdHMubGVuZ3RoKSB7XG4gICAgY2FzZSA3OlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDMpfS0ke2RpZ2l0cy5zbGljZSgzKX1gO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMDpcbiAgICAgIG91dHB1dCA9IGAke2RpZ2l0cy5zbGljZSgwLCAzKX0tJHtkaWdpdHMuc2xpY2UoMywgNil9LSR7ZGlnaXRzLnNsaWNlKDYpfWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDExOlxuICAgICAgb3V0cHV0ID0gYCR7ZGlnaXRzLnNsaWNlKDAsIDEpfS0ke2RpZ2l0cy5zbGljZSgxLCA0KX0tJHtkaWdpdHMuc2xpY2UoNCwgNyl9LSR7ZGlnaXRzLnNsaWNlKDcpfWA7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgb3V0cHV0ID0gZGlnaXRzO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuY29uc3QgZm9ybWF0UHJpY2UgPSAoaW5wdXQ6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG91dHB1dCA9IGlucHV0ID8gZm9ybWF0TnVtYmVyKGlucHV0KSA6IFN0cmluZyhpbnB1dCB8fCAnMCcpO1xuICByZXR1cm4gYCQke291dHB1dH1gO1xufTtcblxuY29uc3QgZm9ybWF0UXVvdGVzID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJ1wiJykgJiYgdmFsdWUuZW5kc1dpdGgoJ1wiJykpIHtcbiAgICByZXR1cm4gdmFsdWUuc2xpY2UoMSwgLTEpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufTtcblxuY29uc3QgZm9ybWF0U2VudGVuY2VDYXNlID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgc2VudGVuY2VDYXNlID0gaW5wdXQ7XG5cbiAgaWYgKGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBsb3dlckNhc2UgPSBpbnB1dFxuICAgICAgLnJlcGxhY2UoLyhbYS16XXsxfSkoW0EtWl17MX0pL2csICckMSAkMicpXG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnJlcGxhY2UoL1tcXHNfLV0vZywgJyAnKTtcblxuICAgIHNlbnRlbmNlQ2FzZSA9IGxvd2VyQ2FzZS5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgbG93ZXJDYXNlLnNsaWNlKDEpO1xuICB9XG5cbiAgcmV0dXJuIHNlbnRlbmNlQ2FzZTtcbn07XG5cbmNvbnN0IGZvcm1hdFNuYWtlQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnXycpXG4gICAgOiBpbnB1dDtcbn07XG5cbmNvbnN0IGZvcm1hdFRpdGxlQ2FzZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGlucHV0ICYmIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZydcbiAgICA/IGlucHV0XG4gICAgICAgIC5yZXBsYWNlKC8oW2Etel17MX0pKFtBLVpdezF9KS9nLCAnJDEgJDInKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAucmVwbGFjZSgvW1xcc18tXS9nLCAnICcpXG4gICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgIC5tYXAoKHdvcmQpID0+IHdvcmQuc2xpY2UoMCwgMSkudG9VcHBlckNhc2UoKSArIHdvcmQuc2xpY2UoMSkpXG4gICAgICAgIC5qb2luKCcgJylcbiAgICA6IGlucHV0O1xufTtcblxuY29uc3QgZm9ybWF0VXJsRnJvbVJvb3QgPSAodXJsOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgdXJsRm9ybWF0dGVkID0gdXJsLnNwbGl0KCcuY29tLycpO1xuXG4gIHJldHVybiB1cmxGb3JtYXR0ZWQubGVuZ3RoID4gMSA/IGAvJHt1cmxGb3JtYXR0ZWRbMV19YCA6IHVybDtcbn07XG5cbmNvbnN0IGZvcm1hdFdlaWdodCA9IChpbnB1dDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQgPyBmb3JtYXROdW1iZXIoaW5wdXQpIDogU3RyaW5nKGlucHV0IHx8ICcwJyk7XG4gIHJldHVybiBgJHtvdXRwdXR9IGxic2A7XG59O1xuXG5jb25zdCBnZXRBcnRpY2xlID0gKG5vdW46IHN0cmluZywgaXNQbHVyYWwgPSBmYWxzZSwgaXNEZWZpbml0ZSA9IGZhbHNlKSA9PiB7XG4gIGNvbnN0IHZvd2VscyA9IFsnYScsICdlJywgJ2knLCAnbycsICd1J107XG4gIGNvbnN0IGlzVm93ZWxMZWFkaW5nID0gdm93ZWxzLmluY2x1ZGVzKG5vdW4uY2hhckF0KDApKTtcblxuICByZXR1cm4gaXNEZWZpbml0ZSA/ICd0aGUnIDogaXNQbHVyYWwgPyAnc29tZScgOiBpc1Zvd2VsTGVhZGluZyA/ICdhbicgOiAnYSc7XG59O1xuXG5jb25zdCBwcmljZVRvTnVtYmVyID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgaWYgKE51bWJlci5pc05hTihOdW1iZXIodmFsdWUpKSkge1xuICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgnJCcsICcnKTtcbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoLywvZywgJycpO1xuICB9XG4gIHJldHVybiBwYXJzZUludCh2YWx1ZSwgMTApO1xufTtcblxuY29uc3QgdW5mb3JtYXRQcmljZSA9IChpbnB1dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgb3V0cHV0ID0gaW5wdXQucmVwbGFjZSgvXFwkL2csICcnKS5yZXBsYWNlKC8sL2csICcnKTtcbiAgcmV0dXJuIGAke291dHB1dH1gO1xufTtcblxuZXhwb3J0IHtcbiAgY2FwaXRhbGl6ZUZpcnN0LFxuICBmb3JtYXRDYW1lbENhc2UsXG4gIGZvcm1hdEtlYmFiQ2FzZSxcbiAgZm9ybWF0TGFiZWwsXG4gIGZvcm1hdE51bWJlcixcbiAgZm9ybWF0UGFzY2FsQ2FzZSxcbiAgZm9ybWF0UGhvbmUsXG4gIGZvcm1hdFByaWNlLFxuICBmb3JtYXRRdW90ZXMsXG4gIGZvcm1hdFNlbnRlbmNlQ2FzZSxcbiAgZm9ybWF0U25ha2VDYXNlLFxuICBmb3JtYXRUaXRsZUNhc2UsXG4gIGZvcm1hdFVybEZyb21Sb290LFxuICBmb3JtYXRXZWlnaHQsXG4gIGdldEFydGljbGUsXG4gIHByaWNlVG9OdW1iZXIsXG4gIHVuZm9ybWF0UHJpY2UsXG59O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYW4gaWNvbiBjb21wb25lbnQuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVpY29uLS1kb2NzKSBmb3IgVGlkZUljb25cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGRlZmluZUFzeW5jQ29tcG9uZW50LCBtYXJrUmF3LCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBSRUFMTSB9IGZyb20gJ0AvdHlwZXMvUmVhbG0nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBmb3JtYXRQYXNjYWxDYXNlIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybWF0JztcblxuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFNpemUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgdHlwZSB7IENvbXBvbmVudCB9IGZyb20gJ3Z1ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogSWNvbiAqL1xuICAgIGljb246IEljb247XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBpY29uIGRpbWVuc2lvbnMgKi9cbiAgICBzaXplPzogU2l6ZTtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIHNpemU6IFNJWkUuU01BTEwsXG4gIH0pO1xuXG4gIGNvbnN0IGlubmVyU1ZHID0gcmVmPENvbXBvbmVudD4oKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy5pY29uLFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGlkOiBzdHJpbmcgPSBwcm9wcy5pY29uO1xuICAgICAgY29uc3QgbmFtZSA9IGZvcm1hdFBhc2NhbENhc2UoaWQpO1xuICAgICAgY29uc3QgW3ByZWZpeF0gPSBpZC5zcGxpdCgnLScpO1xuICAgICAgY29uc3QgcmVhbG1Gb2xkZXIgPSBSRUFMTVtwcmVmaXg/LnRvVXBwZXJDYXNlKCkgYXMga2V5b2YgdHlwZW9mIFJFQUxNXTtcblxuICAgICAgY29uc3QgY29tcG9uZW50ID0gZGVmaW5lQXN5bmNDb21wb25lbnQoKCkgPT4ge1xuICAgICAgICBpZiAocmVhbG1Gb2xkZXIpIHtcbiAgICAgICAgICByZXR1cm4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2ljb25zL3JlYWxtLyR7cmVhbG1Gb2xkZXJ9L0ljb24ke25hbWV9LnN2Zz9jb21wb25lbnRgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbXBvcnQoYC4uL2Fzc2V0cy9zdmcvaWNvbnMvSWNvbiR7bmFtZX0uc3ZnP2NvbXBvbmVudGApO1xuICAgICAgfSk7XG5cbiAgICAgIGlubmVyU1ZHLnZhbHVlID0gbWFya1Jhdyhjb21wb25lbnQpO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtaWNvbicsIHByb3BzLnNpemUsIENTUy5GTEVYLlNIUklOSy5PRkZdXCI+XG4gICAgPENvbXBvbmVudFxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkJMT0NLXVwiXG4gICAgICA6ZGF0YS1pY29uPVwiaWNvblwiXG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAgIDppcz1cImlubmVyU1ZHXCJcbiAgICAgIHYtaWY9XCJpbm5lclNWR1wiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGU+XG4gIC50aWRlLWljb24ge1xuICAgIHdpZHRoOiAxLjVyZW07XG4gICAgaGVpZ2h0OiAxLjVyZW07XG4gIH1cblxuICAudGlkZS1pY29uLnNtYWxsIHtcbiAgICB3aWR0aDogMS4yNXJlbTtcbiAgICBoZWlnaHQ6IDEuMjVyZW07XG4gIH1cblxuICAudGlkZS1pY29uIHN2ZyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHR5cGUgeyBSZWFsbUtleSB9IGZyb20gJ0AvdHlwZXMvUmVhbG0nO1xuXG5leHBvcnQgY29uc3QgSUNPTiA9IHtcbiAgQUNDT1VOVF9CQUxBTkNFOiAnYWNjb3VudC1iYWxhbmNlJyxcbiAgQUNVVEU6ICdhY3V0ZScsXG4gIEFERDogJ2FkZCcsXG4gIEFJX0RFU0NSSVBUSU9OOiAnYWktZGVzY3JpcHRpb24nLFxuICBBTElHTl9TUEFDRV9FVkVOOiAnYWxpZ24tc3BhY2UtZXZlbicsXG4gIEFQUExFX1BBWTogJ2FwcGxlLXBheScsXG4gIEFSUk9XX0JBQ0s6ICdhcnJvdy1iYWNrJyxcbiAgQVJST1dfQ1lDTEU6ICdhcnJvdy1jeWNsZScsXG4gIEFSUk9XX0ZPUldBUkQ6ICdhcnJvdy1mb3J3YXJkJyxcbiAgQVJST1dfUklHSFQ6ICdhcnJvdy1yaWdodCcsXG4gIEFSUk9XX1VQOiAnYXJyb3ctdXAnLFxuICBBU1NJR05NRU5UOiAnYXNzaWdubWVudCcsXG4gIEFUVEFDSF9NT05FWTogJ2F0dGFjaC1tb25leScsXG4gIEFVVE9fUkVORVc6ICdhdXRvLXJlbmV3JyxcbiAgQVdBUkRfU1RBUjogJ2F3YXJkLXN0YXInLFxuICBCRUQ6ICdiZWQnLFxuICBCT0xUOiAnYm9sdCcsXG4gIEJPT0tNQVJLOiAnYm9va21hcmsnLFxuICBCVU5LSE9VU0U6ICdidW5raG91c2UnLFxuICBDQUxDVUxBVEU6ICdjYWxjdWxhdGUnLFxuICBDQUxFTkRBUl9NT05USDogJ2NhbGVuZGFyLW1vbnRoJyxcbiAgQ0FMTDogJ2NhbGwnLFxuICBDQUxMX1FVQUxJVFk6ICdjYWxsLXF1YWxpdHknLFxuICBDQVJfUkVOVEFMOiAnY2FyLXJlbnRhbCcsXG4gIENIRUNLOiAnY2hlY2snLFxuICBDSEVWUk9OX0xFRlQ6ICdjaGV2cm9uLWxlZnQnLFxuICBDSEVWUk9OX1JJR0hUOiAnY2hldnJvbi1yaWdodCcsXG4gIENMRUFSOiAnY2xlYXInLFxuICBDTE9TRTogJ2Nsb3NlJyxcbiAgQ09OVFJBQ1Q6ICdjb250cmFjdCcsXG4gIENSQVNIOiAnY3Jhc2gnLFxuICBEQVNIQk9BUkRfQ1VTVE9NSVpFOiAnZGFzaGJvYXJkLWN1c3RvbWl6ZScsXG4gIERFTEVURTogJ2RlbGV0ZScsXG4gIERJQU1PTkQ6ICdkaWFtb25kJyxcbiAgRElSRUNUSU9OU19CT0FUOiAnZGlyZWN0aW9ucy1ib2F0JyxcbiAgRE9NQUlOOiAnZG9tYWluJyxcbiAgRFJBRlQ6ICdkcmFmdCcsXG4gIEVESVQ6ICdlZGl0JyxcbiAgRU5HSU5FOiAnZW5naW5lJyxcbiAgRU5HSU5FRVJJTkc6ICdlbmdpbmVlcmluZycsXG4gIEVSUk9SOiAnZXJyb3InLFxuICBFWFBBTkRfQ09OVEVOVDogJ2V4cGFuZC1jb250ZW50JyxcbiAgRVhQQU5EX0xFU1M6ICdleHBhbmQtbGVzcycsXG4gIEVYUEFORF9NT1JFOiAnZXhwYW5kLW1vcmUnLFxuICBGQUNFQk9PSzogJ2ZhY2Vib29rJyxcbiAgRkFWT1JJVEU6ICdmYXZvcml0ZScsXG4gIEZBVk9SSVRFX0ZJTExFRDogJ2Zhdm9yaXRlLWZpbGxlZCcsXG4gIEZMQUc6ICdmbGFnJyxcbiAgRk9STUFUX0JPTEQ6ICdmb3JtYXQtYm9sZCcsXG4gIEZPUk1BVF9JVEFMSUM6ICdmb3JtYXQtaXRhbGljJyxcbiAgRk9STUFUX0xJU1RfQlVMTEVURUQ6ICdmb3JtYXQtbGlzdC1idWxsZXRlZCcsXG4gIEZPUlVNOiAnZm9ydW0nLFxuICBHQVM6ICdnYXMnLFxuICBHQVZFTDogJ2dhdmVsJyxcbiAgR0VBUlM6ICdnZWFycycsXG4gIEdMT0JFX0xPQ0FUSU9OX1BJTjogJ2dsb2JlLWxvY2F0aW9uLXBpbicsXG4gIEdPT0dMRTogJ2dvb2dsZScsXG4gIEdPT0dMRV9QQVk6ICdnb29nbGUtcGF5JyxcbiAgR1JJRDogJ2dyaWQnLFxuICBIQU5EU0hBS0U6ICdoYW5kc2hha2UnLFxuICBIQU5EWU1BTjogJ2hhbmR5bWFuJyxcbiAgSEVJR0hUOiAnaGVpZ2h0JyxcbiAgSEVMUDogJ2hlbHAnLFxuICBJTkZPOiAnaW5mbycsXG4gIElORk9STUFUSU9OOiAnaW5mb3JtYXRpb24nLFxuICBJTlNFUlRfVEVYVDogJ2luc2VydC10ZXh0JyxcbiAgSU5TVEFHUkFNOiAnaW5zdGFncmFtJyxcbiAgSU9TX1NIQVJFOiAnaW9zLXNoYXJlJyxcbiAgTEFZT1VUOiAnbGF5b3V0JyxcbiAgTEVWRUxMSU5HX0pBQ0s6ICdsZXZlbGxpbmctamFjaycsXG4gIExJTktFRF9JTjogJ2xpbmtlZCBpbicsXG4gIExPQ0FMX1NISVBQSU5HOiAnbG9jYWwtc2hpcHBpbmcnLFxuICBMT0NLOiAnbG9jaycsXG4gIE1BSUw6ICdtYWlsJyxcbiAgTUVOVTogJ21lbnUnLFxuICBNT05FWV9CQUc6ICdtb25leS1iYWcnLFxuICBNT1JFX0hPUklaOiAnbW9yZS1ob3JpeicsXG4gIE5PVElGSUNBVElPTlM6ICdub3RpZmljYXRpb25zJyxcbiAgT0RPTUVURVI6ICdvZG9tZXRlcicsXG4gIE9QRU5fSU5fTkVXOiAnb3Blbi1pbi1uZXcnLFxuICBQQUxFVFRFOiAncGFsZXR0ZScsXG4gIFBBWVBBTDogJ3BheXBhbCcsXG4gIFBFUlNPTjogJ3BlcnNvbicsXG4gIFBFUlNPTl9TRUFSQ0g6ICdwZXJzb24tc2VhcmNoJyxcbiAgUEhPVE9fQ0FNRVJBOiAncGhvdG8tY2FtZXJhJyxcbiAgUElOVEVSRVNUOiAncGludGVyZXN0JyxcbiAgUExBWV9BUlJPVzogJ3BsYXktYXJyb3cnLFxuICBQT0xJQ1k6ICdwb2xpY3knLFxuICBQT1dFUjogJ3Bvd2VyJyxcbiAgUE9XRVJfT0ZGOiAncG93ZXItb2ZmJyxcbiAgUFJJT1JJVFlfSElHSDogJ3ByaW9yaXR5LWhpZ2gnLFxuICBSRU1PVkU6ICdyZW1vdmUnLFxuICBSRVFVRVNUX1FVT1RFOiAncmVxdWVzdC1xdW90ZScsXG4gIFJFU0VUX1dSRU5DSDogJ3Jlc2V0LXdyZW5jaCcsXG4gIFJPQUQ6ICdyb2FkJyxcbiAgUk9VTkRFRF9DT1JORVI6ICdyb3VuZGVkLWNvcm5lcicsXG4gIFJVTEVSOiAncnVsZXInLFxuICBTQUlMSU5HOiAnc2FpbGluZycsXG4gIFNDSE9PTDogJ3NjaG9vbCcsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFNFQVRJTkc6ICdzZWF0aW5nJyxcbiAgU0VMTDogJ3NlbGwnLFxuICBTRU5TT1JTOiAnc2Vuc29ycycsXG4gIFNFVFRJTkdTOiAnc2V0dGluZ3MnLFxuICBTSEFSRTogJ3NoYXJlJyxcbiAgU0hJRUxEX0NIRUNLOiAnc2hpZWxkLWNoZWNrJyxcbiAgU0hPUFBJTkdfQ0FSVDogJ3Nob3BwaW5nLWNhcnQnLFxuICBTTEVFUFM6ICdzbGVlcHMnLFxuICBTTVM6ICdzbXMnLFxuICBTTk9XRkxBS0U6ICdzbm93Zmxha2UnLFxuICBTVEFSOiAnc3RhcicsXG4gIFNUQVJfRklMTEVEOiAnc3Rhci1maWxsZWQnLFxuICBTVEFSX0hBTEY6ICdzdGFyLWhhbGYnLFxuICBTVU1NQVJJWkU6ICdzdW1tYXJpemUnLFxuICBTV0FQX0hPUklaOiAnc3dhcC1ob3JpeicsXG4gIFNXQVBfVkVSVDogJ3N3YXAtdmVydCcsXG4gIFRIUkVFX0RfUk9UQVRJT046ICd0aHJlZS1kLXJvdGF0aW9uJyxcbiAgVEhVTUJfVVA6ICd0aHVtYi11cCcsXG4gIFRSRU5ESU5HX0RPV046ICd0cmVuZGluZy1kb3duJyxcbiAgVFJPUEhZOiAndHJvcGh5JyxcbiAgVFVORTogJ3R1bmUnLFxuICBUV0lUVEVSOiAndHdpdHRlcicsXG4gIFVNQlJFTExBOiAndW1icmVsbGEnLFxuICBWRVJJRklFRDogJ3ZlcmlmaWVkJyxcbiAgVklERU9DQU06ICd2aWRlb2NhbScsXG4gIFZJRVdfSU5fQVI6ICd2aWV3LWluLWFyJyxcbiAgVklTSUJJTElUWTogJ3Zpc2liaWxpdHknLFxuICBWT0xVTUVfT0ZGOiAndm9sdW1lLW9mZicsXG4gIFZPTFVNRV9PTjogJ3ZvbHVtZS1vbicsXG4gIFdBUkVIT1VTRTogJ3dhcmVob3VzZScsXG4gIFdBUk5JTkc6ICd3YXJuaW5nJyxcbiAgV0FURVI6ICd3YXRlcicsXG4gIFdFSUdIVDogJ3dlaWdodCcsXG4gIFdJRFRIOiAnd2lkdGgnLFxuICBXT1JLU1BBQ0VfUFJFTUlVTTogJ3dvcmtzcGFjZS1wcmVtaXVtJyxcbiAgV1JFTkNIOiAnd3JlbmNoJyxcbiAgWU9VVFVCRTogJ3lvdXR1YmUnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IElDT05fUkVBTE0gPSB7XG4gIEFUVjoge1xuICAgIEFUVjogJ2F0di1hdHYnLFxuICAgIERVTkVfQlVHR1k6ICdhdHYtZHVuZS1idWdneScsXG4gICAgR09MRl9DQVJUOiAnYXR2LWdvbGYtY2FydCcsXG4gICAgR09fS0FSVDogJ2F0di1nby1rYXJ0JyxcbiAgICBTQU5EX1JBSUw6ICdhdHYtc2FuZC1yYWlsJyxcbiAgICBTSURFX0JZX1NJREU6ICdhdHYtc2lkZS1ieS1zaWRlJyxcbiAgICBUUkFJTEVSOiAnYXR2LXRyYWlsZXInLFxuICB9LFxuICBCT0FUTUFSVDoge1xuICAgIFBXQzogJ2JvYXRtYXJ0LXB3YycsXG4gICAgVFJBSUxFUjogJ2JvYXRtYXJ0LXRyYWlsZXInLFxuICB9LFxuICBDWUNMRToge1xuICAgIE1PVE9SQ1lDTEU6ICdjeWNsZS1tb3RvcmN5Y2xlJyxcbiAgICBUUkFJTEVSOiAnY3ljbGUtdHJhaWxlcicsXG4gIH0sXG4gIFJWOiB7XG4gICAgQ0xBU1NfQTogJ3J2LWNsYXNzLWEnLFxuICAgIENMQVNTX0I6ICdydi1jbGFzcy1iJyxcbiAgICBDTEFTU19DOiAncnYtY2xhc3MtYycsXG4gICAgRklGVEhfV0hFRUw6ICdydi1maWZ0aC13aGVlbCcsXG4gICAgRklTSF9IT1VTRTogJ3J2LWZpc2gtaG91c2UnLFxuICAgIFBBUktfTU9ERUw6ICdydi1wYXJrLW1vZGVsJyxcbiAgICBQT1BfVVBfQ0FNUEVSOiAncnYtcG9wLXVwLWNhbXBlcicsXG4gICAgVFJBVkVMX1RSQUlMRVI6ICdydi10cmF2ZWwtdHJhaWxlcicsXG4gICAgVFJVQ0tfQ0FNUEVSOiAncnYtdHJ1Y2stY2FtcGVyJyxcbiAgfSxcbn0gYXMgY29uc3Q7XG5cbnR5cGUgUmVhbG1LZXlzV2l0aEljb25zID0gRXh0cmFjdDxSZWFsbUtleSwga2V5b2YgdHlwZW9mIElDT05fUkVBTE0+O1xudHlwZSBSZWFsbUljb24gPSB7XG4gIFtSZWFsbUtleSBpbiBSZWFsbUtleXNXaXRoSWNvbnNdOiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XVtrZXlvZiAodHlwZW9mIElDT05fUkVBTE0pW1JlYWxtS2V5XV07XG59W1JlYWxtS2V5c1dpdGhJY29uc107XG5cbmV4cG9ydCB0eXBlIEdsb2JhbEljb24gPSAodHlwZW9mIElDT04pW2tleW9mIHR5cGVvZiBJQ09OXTtcbmV4cG9ydCB0eXBlIEljb24gPSBHbG9iYWxJY29uIHwgUmVhbG1JY29uO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYW4gYWNjb3JkaW9uIGl0ZW0gaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiBuYXZpZ2F0aW9uIG1lbnVzIHJlbGF0aW5nIHRvIGFjY29yZGlvbiBkcm9wZG93bnMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVhY2NvcmRpb25pdGVtLS1kb2NzKSBmb3IgVGlkZUFjY29yZGlvbkl0ZW1cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZURpdmlkZXIgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVEaXZpZGVyLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGRpc2FibGUgdGhlIGFjY29yZGlvbiBpdGVtICovXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBpbmNsdWRlIGJvdHRvbSBkaXZpZGVyICovXG4gICAgaGFzQm90dG9tRGl2aWRlcj86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGluY2x1ZGUgdG9wIGRpdmlkZXIgKi9cbiAgICBoYXNUb3BEaXZpZGVyPzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gc2hvdyBcIihvcHRpb25hbClcIiBpbmRpY2F0b3IgYWZ0ZXIgbGFiZWwgKi9cbiAgICBpc09wdGlvbmFsPzogYm9vbGVhbjtcblxuICAgIC8qKiBUaGUgbGFiZWwgb2YgdGhlIGFjY29yZGlvbiBpdGVtICovXG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBoYXNCb3R0b21EaXZpZGVyOiBmYWxzZSxcbiAgICBoYXNUb3BEaXZpZGVyOiBmYWxzZSxcbiAgICBpc09wdGlvbmFsOiBmYWxzZSxcbiAgfSk7XG5cbiAgY29uc3QgaXNFeHBhbmRlZCA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgaGFuZGxlVG9nZ2xlQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHByb3BzLmRpc2FibGVkKSByZXR1cm47XG4gICAgaXNFeHBhbmRlZC52YWx1ZSA9ICFpc0V4cGFuZGVkLnZhbHVlO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLmRpc2FibGVkLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICAgIGlzRXhwYW5kZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWFjY29yZGlvbi1pdGVtJ11cIj5cbiAgICA8VGlkZURpdmlkZXIgdi1pZj1cImhhc1RvcERpdmlkZXJcIiAvPlxuXG4gICAgPGJ1dHRvblxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1hY2NvcmRpb24taGVhZCcsXG4gICAgICAgIENTUy5BTElHTi5YLkxFRlQsXG4gICAgICAgIENTUy5BWElTMS5CRVRXRUVOLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICBkaXNhYmxlZCA/IFtDU1MuT1BBQ0lUWS5ESVNBQkxFRCwgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRF0gOiBbXSxcbiAgICAgIF1cIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlVG9nZ2xlQ2xpY2tcIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuSEFMRiwgQ1NTLkZPTlQuUk9MRS5MQUJFTF8xX1NFTUlCT0xEXVwiPlxuICAgICAgICA8c3Bhbj57eyBsYWJlbCB9fTwvc3Bhbj5cblxuICAgICAgICA8c3BhblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICB2LWlmPVwiaXNPcHRpb25hbFwiXG4gICAgICAgID5cbiAgICAgICAgICAob3B0aW9uYWwpXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJpc0V4cGFuZGVkID8gSUNPTi5FWFBBTkRfTEVTUyA6IElDT04uRVhQQU5EX01PUkVcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuTEFSR0VcIlxuICAgICAgLz5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWFjY29yZGlvbi1ib2R5JywgaXNFeHBhbmRlZCA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJywgQ1NTLkRJU1BMQVkuR1JJRF1cIj5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5PVkVSRkxPVy5ZLkhJRERFTiwgQ1NTLk1BUkdJTi5ZLk9ORSwgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIj5cbiAgICAgICAgPHNsb3QgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPFRpZGVEaXZpZGVyIHYtaWY9XCJoYXNCb3R0b21EaXZpZGVyXCIgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1hY2NvcmRpb24taXRlbSB7XG4gICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5IHtcbiAgICB0cmFuc2l0aW9uOiBncmlkLXRlbXBsYXRlLXJvd3MgdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWFjY29yZGlvbi1ib2R5LmV4cGFuZGVkIHtcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IG1pbm1heCgwcHgsIDFmcik7XG4gIH1cblxuICAudGlkZS1hY2NvcmRpb24tYm9keS5jb2xsYXBzZWQge1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogbWlubWF4KDBweCwgMGZyKTtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBFTEVNRU5UID0ge1xuICBCVVRUT046ICdidXR0b24nLFxuICBMSU5LOiAnYScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgRUxFTUVOVF9CUk9BRCA9IHtcbiAgQlVUVE9OOiAnYnV0dG9uJyxcbiAgRElWOiAnZGl2JyxcbiAgTElOSzogJ2EnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgRWxlbWVudCA9ICh0eXBlb2YgRUxFTUVOVClba2V5b2YgdHlwZW9mIEVMRU1FTlRdO1xuZXhwb3J0IHR5cGUgRWxlbWVudEJyb2FkID0gKHR5cGVvZiBFTEVNRU5UX0JST0FEKVtrZXlvZiB0eXBlb2YgRUxFTUVOVF9CUk9BRF07XG4iLCJpbXBvcnQgeyBpbmplY3QsIHByb3ZpZGUgfSBmcm9tICd2dWUnO1xuXG5pbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcblxuaW1wb3J0IHR5cGUgeyBDb21wb25lbnQgfSBmcm9tICd2dWUnO1xuXG50eXBlIFRpZGVDb25maWcgPSB7XG4gIGxpbmtDb21wb25lbnQ6IENvbXBvbmVudCB8IHR5cGVvZiBFTEVNRU5ULkxJTks7XG59O1xuXG5jb25zdCB0aWRlQ29uZmlnRGVmYXVsdHM6IFRpZGVDb25maWcgPSB7IGxpbmtDb21wb25lbnQ6IEVMRU1FTlQuTElOSyB9O1xuXG5jb25zdCBDT05GSUdfS0VZID0gU3ltYm9sKCd0aWRlLWNvbmZpZycpO1xuXG5leHBvcnQgY29uc3QgcHJvdmlkZVRpZGVDb25maWcgPSAoY29uZmlnOiBQYXJ0aWFsPFRpZGVDb25maWc+ID0ge30pID0+IHtcbiAgY29uc3QgY29uZmlnV2l0aERlZmF1bHRzOiBUaWRlQ29uZmlnID0geyAuLi50aWRlQ29uZmlnRGVmYXVsdHMsIC4uLmNvbmZpZyB9O1xuXG4gIHByb3ZpZGU8VGlkZUNvbmZpZz4oQ09ORklHX0tFWSwgY29uZmlnV2l0aERlZmF1bHRzKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VUaWRlQ29uZmlnID0gKCkgPT4ge1xuICByZXR1cm4gaW5qZWN0PFRpZGVDb25maWc+KENPTkZJR19LRVksIHRpZGVDb25maWdEZWZhdWx0cyk7XG59O1xuIiwiPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IHsgdXNlVGlkZUNvbmZpZyB9IGZyb20gJ0AvY29tcG9zYWJsZXMvdXNlVGlkZUNvbmZpZyc7XG5cbiAgY29uc3QgeyBsaW5rQ29tcG9uZW50IH0gPSB1c2VUaWRlQ29uZmlnKCk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50IDppcz1cImxpbmtDb21wb25lbnRcIj5cbiAgICA8c2xvdCAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSB2dWUvc29ydC1rZXlzICovXG5cbmV4cG9ydCBjb25zdCBQUklPUklUWSA9IHtcbiAgUFJJTUFSWTogJ3ByaW1hcnknLFxuICBTRUNPTkRBUlk6ICdzZWNvbmRhcnknLFxuICBURVJUSUFSWTogJ3RlcnRpYXJ5JyxcbiAgUVVBVEVSTkFSWTogJ3F1YXRlcm5hcnknLFxuICBGTE9BVElORzogJ2Zsb2F0aW5nJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFByaW9yaXR5ID0gKHR5cGVvZiBQUklPUklUWSlba2V5b2YgdHlwZW9mIFBSSU9SSVRZXTtcbiIsImV4cG9ydCBjb25zdCBUQVJHRVQgPSB7XG4gIEJMQU5LOiAnX2JsYW5rJyxcbiAgU0VMRjogdW5kZWZpbmVkLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVGFyZ2V0ID0gKHR5cGVvZiBUQVJHRVQpW2tleW9mIHR5cGVvZiBUQVJHRVRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBpY29uIGJ1dHRvbiBjb21wb25lbnQgd2l0aCB2YXJpb3VzIHN0eWxpbmcgb3B0aW9ucy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWJ1dHRvbmljb24tLWRvY3MpIGZvciBUaWRlQnV0dG9uSWNvblxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgdHlwZSB7IFByaW9yaXR5IH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB0eXBlIHsgQnV0dG9uVHlwZSB9IGZyb20gJ0AvdHlwZXMvVHlwZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyBjbGlja2FiaWxpdHkgKEJ1dHRvbiBvbmx5KSAqL1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBIVE1MIHRhZyB0eXBlICovXG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG5cbiAgICAvKiogVVJMIHRvIG9wZW4gKExpbmsgb25seSkgKi9cbiAgICBocmVmPzogc3RyaW5nO1xuXG4gICAgLyoqIEljb24gdG8gc2hvdyAqL1xuICAgIGljb246IEljb247XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHRhcmdldCBhIG5ldyBicm93c2VyIHRhYiAoTGluayBvbmx5KSAqL1xuICAgIGlzTmV3VGFiPzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHZpc3VhbCBwcm9taW5lbmNlICovXG4gICAgcHJpb3JpdHk/OiBQcmlvcml0eTtcblxuICAgIC8qKiBBcHBsaWVzIHR5cGUgYXR0cmlidXRlIHRvIEhUTUwgZWxlbWVudCAqL1xuICAgIHR5cGU/OiBCdXR0b25UeXBlO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVsZW1lbnQ6IEVMRU1FTlQuQlVUVE9OLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uOiB1bmRlZmluZWQsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICAgIHByaW9yaXR5OiBQUklPUklUWS5QUklNQVJZLFxuICAgIHR5cGU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgdHlwZUF0dHJpYnV0ZSA9IGNvbXB1dGVkPHN0cmluZyB8IHVuZGVmaW5lZD4oKCkgPT5cbiAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiA/IHByb3BzLnR5cGUgPz8gRUxFTUVOVC5CVVRUT04gOiB1bmRlZmluZWRcbiAgKTtcblxuICBjb25zdCByb290RWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBJbnRlcm5hbEJhc2VMaW5rIDogcHJvcHMuZWxlbWVudCkpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDphcmlhLWxhYmVsPVwiaWNvblwiXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtYnV0dG9uLWljb24nLFxuICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5QQURESU5HLkZVTEwuSEFMRixcbiAgICAgIGB0aWRlLWJ1dHRvbi0ke3ByaW9yaXR5fWAsXG4gICAgICBlbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBbQ1NTLlVOREVSTElORS5SRVNULk9GRl0gOiAnJyxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJlbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiAmJiBkaXNhYmxlZFwiXG4gICAgOmhyZWY9XCJlbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgaHJlZiA/IGhyZWYgOiB1bmRlZmluZWRcIlxuICAgIDp0YXJnZXQ9XCJlbGVtZW50ID09PSBFTEVNRU5ULkxJTksgJiYgaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiBUQVJHRVQuU0VMRlwiXG4gICAgOnR5cGU9XCJ0eXBlQXR0cmlidXRlXCJcbiAgICA6aXM9XCJyb290RWxlbWVudFwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDppY29uPVwiaWNvblwiXG4gICAgICA6c2l6ZT1cIlNJWkUuTEFSR0VcIlxuICAgICAgdi1pZj1cImljb25cIlxuICAgIC8+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgbGluayBlbGVtZW50LlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlbGluay0tZG9jcykgZm9yIFRpZGVMaW5rXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IEludGVybmFsQmFzZUxpbmsgZnJvbSAnQC9jb21wb25lbnRzL0ludGVybmFsQmFzZUxpbmsudnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEFSR0VUIH0gZnJvbSAnQC90eXBlcy9UYXJnZXQnO1xuXG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgU2l6ZSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogSFRNTCB0YWcgdHlwZSAqL1xuICAgIGVsZW1lbnQ/OiBFbGVtZW50O1xuXG4gICAgLyoqIFVSTCB0byBvcGVuIChMaW5rIG9ubHkpICovXG4gICAgaHJlZj86IHN0cmluZztcblxuICAgIC8qKiBJY29uIHRvIGxlZnQgb2YgbGFiZWwgKi9cbiAgICBpY29uTGVhZGluZz86IEljb247XG5cbiAgICAvKiogU2l6ZSBvZiB0aGUgaWNvbnMgKi9cbiAgICBpY29uU2l6ZT86IFNpemU7XG5cbiAgICAvKiogSWNvbiB0byByaWdodCBvZiBsYWJlbCAqL1xuICAgIGljb25UcmFpbGluZz86IEljb247XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHRhcmdldCBhIG5ldyBicm93c2VyIHRhYiAoTGluayBvbmx5KSAqL1xuICAgIGlzTmV3VGFiPzogYm9vbGVhbjtcblxuICAgIC8qKiBMaW5rIHRleHQgKi9cbiAgICBsYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIEhpZGVzIHRoZSB1bmRlcmxpbmUgdW50aWwgaG92ZXJlZCwgZGUtZW1waGFzaXppbmcgdGhlIGxpbmsgKi9cbiAgICBzdWJ0bGU/OiBib29sZWFuO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZWxlbWVudDogRUxFTUVOVC5MSU5LLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGljb25TaXplOiBTSVpFLlNNQUxMLFxuICAgIGljb25UcmFpbGluZzogdW5kZWZpbmVkLFxuICAgIGlzTmV3VGFiOiBmYWxzZSxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIHN1YnRsZTogZmFsc2UsXG4gIH0pO1xuXG4gIGNvbnN0IHJvb3RFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlQuTElOSyA/IEludGVybmFsQmFzZUxpbmsgOiBwcm9wcy5lbGVtZW50KSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtbGluaycsXG4gICAgICBDU1MuRElTUExBWS5JTkxJTkUsXG4gICAgICBDU1MuQUxJR04uWC5MRUZULFxuICAgICAgc3VidGxlID8gW0NTUy5VTkRFUkxJTkUuUkVTVC5PRkYsIENTUy5VTkRFUkxJTkUuSE9WRVIuT05dIDogW0NTUy5VTkRFUkxJTkUuUkVTVC5PTiwgQ1NTLlVOREVSTElORS5IT1ZFUi5PRkZdLFxuICAgIF1cIlxuICAgIDpocmVmPVwicHJvcHMuaHJlZlwiXG4gICAgOnRhcmdldD1cInByb3BzLmlzTmV3VGFiID8gVEFSR0VULkJMQU5LIDogVEFSR0VULlNFTEZcIlxuICAgIDp0eXBlPVwiZWxlbWVudCA9PT0gRUxFTUVOVC5CVVRUT04gPyBFTEVNRU5ULkJVVFRPTiA6IHVuZGVmaW5lZFwiXG4gICAgOmlzPVwicm9vdEVsZW1lbnRcIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuSU5MSU5FX0JMT0NLLCBDU1MuQUxJR04uWS5NSURETEUsIENTUy5NQVJHSU4uUklHSFQuUVVBUlRFUiwgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRl1cIlxuICAgICAgOmljb249XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgICA6c2l6ZT1cImljb25TaXplXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5pY29uTGVhZGluZ1wiXG4gICAgLz5cblxuICAgIDxzcGFuIDpjbGFzcz1cIltDU1MuQUxJR04uWS5NSURETEVdXCI+XG4gICAgICB7eyBwcm9wcy5sYWJlbCB9fVxuICAgIDwvc3Bhbj5cblxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLklOTElORV9CTE9DSywgQ1NTLkFMSUdOLlkuTUlERExFLCBDU1MuTUFSR0lOLkxFRlQuUVVBUlRFUiwgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRl1cIlxuICAgICAgOmljb249XCJwcm9wcy5pY29uVHJhaWxpbmdcIlxuICAgICAgOnNpemU9XCJpY29uU2l6ZVwiXG4gICAgICB2LWlmPVwicHJvcHMuaWNvblRyYWlsaW5nXCJcbiAgICAvPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG4iLCJleHBvcnQgY29uc3QgQUxFUlQgPSB7XG4gIEVSUk9SOiAnZXJyb3InLFxuICBJTkZPOiAnaW5mbycsXG4gIFNVQ0NFU1M6ICdzdWNjZXNzJyxcbiAgV0FSTklORzogJ3dhcm5pbmcnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQWxlcnQgPSAodHlwZW9mIEFMRVJUKVtrZXlvZiB0eXBlb2YgQUxFUlRdO1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYW4gYWxlcnQgY29tcG9uZW50IHdpdGggY3VzdG9taXphYmxlIGNvbnRlbnQgYW5kIGJlaGF2aW9yLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlYWxlcnQtLWRvY3MpIGZvciBUaWRlQWxlcnRcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IENvbW1lbnQsIGNvbXB1dGVkLCB1c2VTbG90cyB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCBUaWRlTGluayBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUxpbmsudnVlJztcbiAgaW1wb3J0IHsgQUxFUlQgfSBmcm9tICdAL3R5cGVzL0FsZXJ0JztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgQWxlcnQgfSBmcm9tICdAL3R5cGVzL0FsZXJ0JztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBDYWxsIFRvIEFjdGlvbiB0aGF0IHJlbmRlcnMgYXMgYSBUaWRlTGluazsgY2xpY2tpbmcgZW1pdHMgYSBzZXBhcmF0ZSBgY2xpY2tgIGV2ZW50ICovXG4gICAgY3RhTGFiZWw/OiBzdHJpbmc7XG5cbiAgICAvKiogSGVhZGluZyB0ZXh0ICovXG4gICAgaGVhZGluZz86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIEFsZXJ0IGNhbiBiZSBjbG9zZWQgYnkgdGhlIHVzZXIgKi9cbiAgICBpc0Rpc21pc3NpYmxlPzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIEFsZXJ0IGlzIGFuIG92ZXJsYXkgb3IgZGlzcGxhY2VzIGNvbnRlbnQgKi9cbiAgICBpc1RvYXN0PzogYm9vbGVhbjtcblxuICAgIC8qKiBBbGVydCB0eXBlICovXG4gICAgdHlwZT86IEFsZXJ0O1xuICB9O1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAnY2xvc2UnKTogdm9pZDtcbiAgICAoZXZlbnQ6ICdjdGFDbGljaycpOiB2b2lkO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgY3RhTGFiZWw6IHVuZGVmaW5lZCxcbiAgICBoZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaXNEaXNtaXNzaWJsZTogdHJ1ZSxcbiAgICBpc1RvYXN0OiBmYWxzZSxcbiAgICB0eXBlOiBBTEVSVC5JTkZPLFxuICB9KTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG4gIGNvbnN0IHNsb3RzID0gdXNlU2xvdHMoKTtcbiAgY29uc3QgaGFzQm9keSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBub2RlcyA9IHNsb3RzLmRlZmF1bHQ/LigpO1xuICAgIGlmICghbm9kZXMpIHJldHVybiBmYWxzZTtcblxuICAgIHJldHVybiBub2Rlcy5zb21lKFxuICAgICAgKG5vZGUpID0+IG5vZGUudHlwZSAhPT0gQ29tbWVudCAmJiAodHlwZW9mIG5vZGUuY2hpbGRyZW4gIT09ICdzdHJpbmcnIHx8IG5vZGUuY2hpbGRyZW4udHJpbSgpLmxlbmd0aCA+IDApXG4gICAgKTtcbiAgfSk7XG5cbiAgY29uc3QgaWNvblR5cGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHByb3BzLnR5cGUgPT09IEFMRVJULkVSUk9SKSByZXR1cm4gSUNPTi5QUklPUklUWV9ISUdIO1xuICAgIGlmIChwcm9wcy50eXBlID09PSBBTEVSVC5TVUNDRVNTKSByZXR1cm4gSUNPTi5DSEVDSztcbiAgICBpZiAocHJvcHMudHlwZSA9PT0gQUxFUlQuV0FSTklORykgcmV0dXJuIElDT04uV0FSTklORztcbiAgICByZXR1cm4gSUNPTi5JTkZPUk1BVElPTjtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgcHJvcHMudHlwZSxcbiAgICAgICd0aWRlLWFsZXJ0JyxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgQ1NTLkRJU1BMQVkuR1JJRCxcbiAgICAgIENTUy5QQURESU5HLkZVTEwuT05FLFxuICAgICAgIXByb3BzLmlzVG9hc3QgJiYgcHJvcHMudHlwZSA9PT0gQUxFUlQuRVJST1IgPyBbQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLkVSUk9SLCBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5FUlJPUl0gOiAnJyxcbiAgICAgICFwcm9wcy5pc1RvYXN0ICYmIHByb3BzLnR5cGUgPT09IEFMRVJULklORk8gPyBbQ1NTLkJHLkdMT0JBTC5TVVJGQUNFLklORk8sIENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLklORk9dIDogJycsXG4gICAgICAhcHJvcHMuaXNUb2FzdCAmJiBwcm9wcy50eXBlID09PSBBTEVSVC5TVUNDRVNTXG4gICAgICAgID8gW0NTUy5CRy5HTE9CQUwuU1VSRkFDRS5TVUNDRVNTLCBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5TVUNDRVNTXVxuICAgICAgICA6ICcnLFxuICAgICAgIXByb3BzLmlzVG9hc3QgJiYgcHJvcHMudHlwZSA9PT0gQUxFUlQuV0FSTklOR1xuICAgICAgICA/IFtDU1MuQkcuR0xPQkFMLlNVUkZBQ0UuV0FSTklORywgQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuV0FSTklOR11cbiAgICAgICAgOiAnJyxcbiAgICAgIHByb3BzLmlzVG9hc3QgPyBbQ1NTLkJHLlNFQ09OREFSWSwgQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZLCBDU1MuU0hBRE9XLkJPVFRPTV0gOiBDU1MuQk9SREVSLkxFRlQuVFdPLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1hbGVydC1pY29uJyxcbiAgICAgICAgQ1NTLlBBRERJTkcuRlVMTC5RVUFSVEVSLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLklOVkVSU0UsXG4gICAgICAgIHByb3BzLnR5cGUgPT09IEFMRVJULkVSUk9SICYmIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5FUlJPUixcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuSU5GTyAmJiBDU1MuQkcuR0xPQkFMLlBSSU1BUlkuSU5GTyxcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuU1VDQ0VTUyAmJiBDU1MuQkcuR0xPQkFMLlBSSU1BUlkuU1VDQ0VTUyxcbiAgICAgICAgcHJvcHMudHlwZSA9PT0gQUxFUlQuV0FSTklORyAmJiBDU1MuQkcuR0xPQkFMLlBSSU1BUlkuV0FSTklORyxcbiAgICAgIF1cIlxuICAgICAgdi1pZj1cIiFwcm9wcy5pc1RvYXN0XCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJpY29uVHlwZVwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1hbGVydC1oZWFkaW5nJyxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLlJPVyxcbiAgICAgICAgIWhhc0JvZHkgPyBbQ1NTLkFYSVMxLkJFVFdFRU4sIENTUy5NQVJHSU4uUklHSFQuSEFMRl0gOiAnJyxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxzcGFuIDpjbGFzcz1cIkNTUy5GT05ULlJPTEUuTEFCRUxfMl9TRU1JQk9MRFwiPnt7IHByb3BzLmhlYWRpbmcgfX08L3NwYW4+XG5cbiAgICAgIDxUaWRlTGlua1xuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MSU5LXzJdXCJcbiAgICAgICAgOmVsZW1lbnQ9XCJFTEVNRU5ULkJVVFRPTlwiXG4gICAgICAgIDpsYWJlbD1cInByb3BzLmN0YUxhYmVsXCJcbiAgICAgICAgQGNsaWNrPVwiZW1pdCgnY3RhQ2xpY2snKVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy5jdGFMYWJlbCAmJiAhaGFzQm9keVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPFRpZGVCdXR0b25JY29uXG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtYWxlcnQtY2xvc2UnLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgIEBjbGljaz1cImVtaXQoJ2Nsb3NlJylcIlxuICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIGFsZXJ0XCJcbiAgICAgIHYtaWY9XCJpc0Rpc21pc3NpYmxlXCJcbiAgICAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtYWxlcnQtYm9keScsIENTUy5GT05ULlJPTEUuQk9EWV8yLCAhcHJvcHMuaXNUb2FzdCAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFRdXCI+XG4gICAgICA8c2xvdCAvPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLlRPUC5IQUxGXVwiXG4gICAgICAgIHYtaWY9XCJwcm9wcy5jdGFMYWJlbCAmJiBoYXNCb2R5XCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVMaW5rXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTElOS18yXVwiXG4gICAgICAgICAgOmVsZW1lbnQ9XCJFTEVNRU5ULkJVVFRPTlwiXG4gICAgICAgICAgOmxhYmVsPVwicHJvcHMuY3RhTGFiZWxcIlxuICAgICAgICAgIEBjbGljaz1cImVtaXQoJ2N0YUNsaWNrJylcIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy5jdGFMYWJlbFwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1hbGVydCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczpcbiAgICAgICdpY29uIGhlYWRpbmcgY2xvc2UnXG4gICAgICAnLiBib2R5IC4nO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byB2YXIoLS10aWRlLXNhZmUtZnIpIGF1dG87XG4gICAgZ3JpZC1jb2x1bW4tZ2FwOiB2YXIoLS10aWRlLXNwYWNpbmctMVxcLzIpO1xuICAgIG1heC13aWR0aDogdmFyKC0tdGlkZS1tYXgtd2lkdGgsIDY0MHB4KTtcbiAgfVxuXG4gIC50aWRlLWFsZXJ0LWljb24ge1xuICAgIGdyaWQtYXJlYTogaWNvbjtcbiAgfVxuXG4gIC50aWRlLWFsZXJ0LWhlYWRpbmcge1xuICAgIGdyaWQtYXJlYTogaGVhZGluZztcbiAgfVxuXG4gIC50aWRlLWFsZXJ0LWNsb3NlIHtcbiAgICBncmlkLWFyZWE6IGNsb3NlO1xuICB9XG5cbiAgLnRpZGUtYWxlcnQtYm9keSB7XG4gICAgZ3JpZC1hcmVhOiBib2R5O1xuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG5leHBvcnQgY29uc3QgQkFER0VfQ09MT1IgPSB7XG4gIEJMQUNLOiAnYmxhY2snLFxuICBCTFVFOiAnYmx1ZScsXG4gIEdSRUVOOiAnZ3JlZW4nLFxuICBMSU1FOiAnbGltZScsXG4gIE9SQU5HRTogJ29yYW5nZScsXG4gIFBVUlBMRTogJ3B1cnBsZScsXG4gIFJFRDogJ3JlZCcsXG4gIFNBTE1PTjogJ3NhbG1vbicsXG4gIFRFQUw6ICd0ZWFsJyxcbiAgWUVMTE9XOiAneWVsbG93Jyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBCQURHRV9DT0xPUl9ERVRBSUxTOiBSZWNvcmQ8XG4gIEJhZGdlQ29sb3IsXG4gIHtcbiAgICBib3JkZXJDb2xvcjogc3RyaW5nO1xuICAgIGljb25Db2xvcjogc3RyaW5nO1xuICB9XG4+ID0ge1xuICBbQkFER0VfQ09MT1IuQkxBQ0tdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuSElHSCxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVCxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLkJMVUVdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLkJMVUUsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5CTFVFLFxuICB9LFxuICBbQkFER0VfQ09MT1IuR1JFRU5dOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLkdSRUVOLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuR1JFRU4sXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5MSU1FXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5MSU1FLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuTElNRSxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLk9SQU5HRV06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuT1JBTkdFLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuT1JBTkdFLFxuICB9LFxuICBbQkFER0VfQ09MT1IuUFVSUExFXToge1xuICAgIGJvcmRlckNvbG9yOiBDU1MuQk9SREVSLkNPTE9SLkdMT0JBTC5QVVJQTEUsXG4gICAgaWNvbkNvbG9yOiBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5QVVJQTEUsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5SRURdOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLlJFRCxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLlJFRCxcbiAgfSxcbiAgW0JBREdFX0NPTE9SLlNBTE1PTl06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuU0FMTU9OLFxuICAgIGljb25Db2xvcjogQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLlBSSU1BUlkuU0FMTU9OLFxuICB9LFxuICBbQkFER0VfQ09MT1IuVEVBTF06IHtcbiAgICBib3JkZXJDb2xvcjogQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuVEVBTCxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLlRFQUwsXG4gIH0sXG4gIFtCQURHRV9DT0xPUi5ZRUxMT1ddOiB7XG4gICAgYm9yZGVyQ29sb3I6IENTUy5CT1JERVIuQ09MT1IuR0xPQkFMLllFTExPVyxcbiAgICBpY29uQ29sb3I6IENTUy5GT05ULkNPTE9SLkdMT0JBTC5QUklNQVJZLllFTExPVyxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBCQURHRV9UUlVTVEVEID0ge1xuICBZRUFSU18xMDogJzEwJyxcbiAgWUVBUlNfMTU6ICcxNScsXG4gIFlFQVJTXzIwOiAnMjAnLFxuICBZRUFSU18yNTogJzI1JyxcbiAgWUVBUlNfMzA6ICczMCcsXG4gIFlFQVJTXzM1OiAnMzUnLFxuICBZRUFSU181OiAnNScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBCYWRnZUNvbG9yID0gKHR5cGVvZiBCQURHRV9DT0xPUilba2V5b2YgdHlwZW9mIEJBREdFX0NPTE9SXTtcbmV4cG9ydCB0eXBlIEJhZGdlVHJ1c3RlZFllYXJzID0gKHR5cGVvZiBCQURHRV9UUlVTVEVEKVtrZXlvZiB0eXBlb2YgQkFER0VfVFJVU1RFRF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGJhZGdlIGNvbXBvbmVudCB3aXRoIGN1c3RvbWl6YWJsZSBjb250ZW50IGFuZCBiZWhhdmlvci5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWJhZGdlLS1kb2NzKSBmb3IgVGlkZUJhZGdlXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEJBREdFX0NPTE9SX0RFVEFJTFMgfSBmcm9tICdAL3R5cGVzL0JhZGdlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgQmFkZ2VDb2xvciB9IGZyb20gJ0AvdHlwZXMvQmFkZ2UnO1xuICBpbXBvcnQgdHlwZSB7IEljb24gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgd2hpY2ggY29sb3Igb3B0aW9uIHRvIGFkb3B0IChpZiBhbnkpICovXG4gICAgY29sb3I/OiBCYWRnZUNvbG9yO1xuXG4gICAgLyoqIEljb24gdG8gbGVmdCBvZiBsYWJlbCAqL1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gZGlzcGxheSB0aGUgXCJGbG9hdGluZ1wiIHZhcmlhbnQgc3R5bGVzICovXG4gICAgaXNGbG9hdGluZz86IGJvb2xlYW47XG5cbiAgICAvKiogQmFkZ2UgdGV4dCAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBjb2xvcjogdW5kZWZpbmVkLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaXNGbG9hdGluZzogZmFsc2UsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJhZGdlJyxcbiAgICAgIHByb3BzLmlzRmxvYXRpbmcgfHwgcHJvcHMuY29sb3IgPyBbQ1NTLkJHLlNVUkZBQ0UuRkxPQVRJTkcsIENTUy5TSEFET1cuQk9UVE9NXSA6IFtDU1MuQkcuU1VSRkFDRS5WQVJJQU5UXSxcbiAgICAgIENTUy5ESVNQTEFZLklOTElORV9GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLlFVQVJURVIsXG4gICAgICBDU1MuUEFERElORy5ZLlFVQVJURVIsXG4gICAgICBDU1MuUEFERElORy5YLkhBTEYsXG4gICAgICBwcm9wcy5jb2xvciAmJiBbQ1NTLkJPUkRFUi5MRUZULlRXTywgQkFER0VfQ09MT1JfREVUQUlMU1twcm9wcy5jb2xvcl0uYm9yZGVyQ29sb3JdLFxuICAgICAgQ1NTLkVMTElQU0lTLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLFxuICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgXVwiXG4gID5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5TSFJJTksuT0ZGLCBwcm9wcy5jb2xvciAmJiBCQURHRV9DT0xPUl9ERVRBSUxTW3Byb3BzLmNvbG9yXS5pY29uQ29sb3JdXCJcbiAgICAgIDppY29uPVwicHJvcHMuaWNvbkxlYWRpbmdcIlxuICAgICAgdi1pZj1cInByb3BzLmljb25MZWFkaW5nXCJcbiAgICAvPlxuXG4gICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5FTExJUFNJU11cIj57eyBwcm9wcy5sYWJlbCB9fTwvc3Bhbj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSB0cnVzdGVkIHBhcnRuZXIgYmFkZ2UgY29tcG9uZW50IHdpdGggcHJlc2V0IHllYXJzLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlYmFkZ2V0cnVzdGVkcGFydG5lci0tZG9jcykgZm9yIFRpZGVCYWRnZVRydXN0ZWRQYXJ0bmVyXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEJBREdFX1RSVVNURUQgfSBmcm9tICdAL3R5cGVzL0JhZGdlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEJhZGdlVHJ1c3RlZFllYXJzIH0gZnJvbSAnQC90eXBlcy9CYWRnZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogTnVtYmVyIG9mIHllYXJzIHRvIGRpc3BsYXkgaW4gdGhlIHRydXN0ZWQgcGFydG5lciBiYWRnZSAqL1xuICAgIHllYXJzPzogQmFkZ2VUcnVzdGVkWWVhcnM7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICB5ZWFyczogQkFER0VfVFJVU1RFRC5ZRUFSU181LFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1iYWRnZS10cnVzdGVkLXBhcnRuZXInLFxuICAgICAgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5CUkFORCxcbiAgICAgIENTUy5ESVNQTEFZLklOTElORV9GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5FTExJUFNJUyxcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMixcbiAgICAgIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICAgIF1cIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguU0hSSU5LLk9GRl1cIlxuICAgICAgOmljb249XCJJQ09OLkFXQVJEX1NUQVJcIlxuICAgIC8+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRUxMSVBTSVNdXCI+XG4gICAgICA8c3Bhbj57eyBwcm9wcy55ZWFycyB9fSB5ZWFyIHRydXN0ZWQgcGFydG5lcjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGJhZGdlIGNvbXBvbmVudCBmb3IgaW5kaWNhdGluZyBhIHZlcmlmaWVkIHZlaGljbGUuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGViYWRnZXZlcmlmaWVkdmVoaWNsZS0tZG9jcykgZm9yIFRpZGVCYWRnZVZlcmlmaWVkVmVoaWNsZVxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJhZGdlLXZlcmlmaWVkLXZlaGljbGUnLFxuICAgICAgQ1NTLkJHLlNFQ09OREFSWSxcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMixcbiAgICAgIENTUy5GT05ULkNPTE9SLlNFQ09OREFSWSxcbiAgICAgIENTUy5ESVNQTEFZLklOTElORV9GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLlFVQVJURVIsXG4gICAgICBDU1MuUEFERElORy5ZLlFVQVJURVIsXG4gICAgICBDU1MuUEFERElORy5YLkhBTEYsXG4gICAgICBDU1MuRUxMSVBTSVMsXG4gICAgICBDU1MuV0hJVEVTUEFDRV9XUkFQLk9GRixcbiAgICBdXCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgIDppY29uPVwiSUNPTi5WRVJJRklFRFwiXG4gICAgLz5cblxuICAgIDxzcGFuIDpjbGFzcz1cIltDU1MuRUxMSVBTSVNdXCI+VmVyaWZpZWQgdmVoaWNsZTwvc3Bhbj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pY29uIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1pbmZvLXByaW1hcnkpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBzZXQgb2YgYnJlYWRjcnVtYnMgZm9yIG5hdmlnYXRpb24gcHVycG9zZXMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVicmVhZGNydW1icy0tZG9jcykgZm9yIFRpZGVCcmVhZENydW1ic1xuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IEludGVybmFsQmFzZUxpbmsgZnJvbSAnQC9jb21wb25lbnRzL0ludGVybmFsQmFzZUxpbmsudnVlJztcbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IEJyZWFkQ3J1bWIgfSBmcm9tICdAL3R5cGVzL0JyZWFkQ3J1bWInO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIEFuIGFycmF5IG9mIGxhYmVscyBhbmQgb3B0aW9uYWwgVVJMcyB0byBkaXNwbGF5IGZvciBlYWNoIGJyZWFkIGNydW1iLiAqL1xuICAgIGJyZWFkQ3J1bWJzOiBCcmVhZENydW1iW107XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBicmVhZENydW1iczogdW5kZWZpbmVkLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDx1bCA6Y2xhc3M9XCJbJ3RpZGUtYnJlYWQtY3J1bWJzJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuTElTVF9CVUxMRVRTLk9GRl1cIj5cbiAgICA8dGVtcGxhdGVcbiAgICAgIDprZXk9XCJjcnVtYi5sYWJlbFwiXG4gICAgICB2LWZvcj1cIihjcnVtYiwgaW5kZXgpIGluIHByb3BzLmJyZWFkQ3J1bWJzXCJcbiAgICA+XG4gICAgICA8bGkgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuQk9EWV8yXVwiPlxuICAgICAgICA8SW50ZXJuYWxCYXNlTGlua1xuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxJTktfMiwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgOmRhdGEtdHJhY2s9XCJjcnVtYi5kYXRhVHJhY2sgfHwgdW5kZWZpbmVkXCJcbiAgICAgICAgICA6aHJlZj1cImNydW1iLnVybFwiXG4gICAgICAgICAgdi1pZj1cImNydW1iLnVybFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBjcnVtYi5sYWJlbCB9fVxuICAgICAgICA8L0ludGVybmFsQmFzZUxpbms+XG5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8yLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICA6ZGF0YS10cmFjaz1cImNydW1iLmRhdGFUcmFjayB8fCB1bmRlZmluZWRcIlxuICAgICAgICAgIHYtZWxzZVxuICAgICAgICA+XG4gICAgICAgICAge3sgY3J1bWIubGFiZWwgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9saT5cblxuICAgICAgPGxpIHYtaWY9XCJwcm9wcy5icmVhZENydW1icyAmJiBpbmRleCA8IHByb3BzLmJyZWFkQ3J1bWJzLmxlbmd0aCAtIDFcIj5cbiAgICAgICAgPFRpZGVJY29uXG4gICAgICAgICAgOmljb249XCJJQ09OLkFSUk9XX1JJR0hUXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAvPlxuICAgICAgPC9saT5cbiAgICA8L3RlbXBsYXRlPlxuICA8L3VsPlxuPC90ZW1wbGF0ZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgYnV0dG9uIGNvbXBvbmVudCB3aXRoIHZhcmlvdXMgc3R5bGluZyBvcHRpb25zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlYnV0dG9uLS1kb2NzKSBmb3IgVGlkZUJ1dHRvblxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IFNJWkUsIFNJWkVfQlVUVE9OIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50IH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBQcmlvcml0eSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgdHlwZSB7IFNpemVCdXR0b24gfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgdHlwZSB7IEJ1dHRvblR5cGUgfSBmcm9tICdAL3R5cGVzL1R5cGUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgY2xpY2thYmlsaXR5IChCdXR0b24gb25seSkgKi9cbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgICAvKiogSFRNTCB0YWcgdHlwZSAqL1xuICAgIGVsZW1lbnQ/OiBFbGVtZW50O1xuXG4gICAgLyoqIFVSTCB0byBvcGVuIChMaW5rIG9ubHkpICovXG4gICAgaHJlZj86IHN0cmluZztcblxuICAgIC8qKiBJY29uIHRvIGxlZnQgb2YgbGFiZWwgKi9cbiAgICBpY29uTGVhZGluZz86IEljb247XG5cbiAgICAvKiogSWNvbiB0byByaWdodCBvZiBsYWJlbCAqL1xuICAgIGljb25UcmFpbGluZz86IEljb247XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIHRhcmdldCBhIG5ldyBicm93c2VyIHRhYiAoTGluayBvbmx5KSAqL1xuICAgIGlzTmV3VGFiPzogYm9vbGVhbjtcblxuICAgIC8qKiBCdXR0b24gdGV4dCAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB2aXN1YWwgcHJvbWluZW5jZSAqL1xuICAgIHByaW9yaXR5PzogRXhjbHVkZTxQcmlvcml0eSwgdHlwZW9mIFBSSU9SSVRZLkZMT0FUSU5HPjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHJlbmRlcmVkIHNpemUgKi9cbiAgICBzaXplPzogU2l6ZUJ1dHRvbjtcblxuICAgIC8qKiBBcHBsaWVzIHR5cGUgYXR0cmlidXRlIHRvIEhUTUwgZWxlbWVudCAqL1xuICAgIHR5cGU/OiBCdXR0b25UeXBlO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVsZW1lbnQ6IEVMRU1FTlQuQlVUVE9OLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGljb25UcmFpbGluZzogdW5kZWZpbmVkLFxuICAgIGlzTmV3VGFiOiBmYWxzZSxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIHByaW9yaXR5OiBQUklPUklUWS5QUklNQVJZLFxuICAgIHNpemU6IFNJWkVfQlVUVE9OLkxBUkdFLFxuICAgIHR5cGU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgdHlwZUF0dHJpYnV0ZSA9IGNvbXB1dGVkPHN0cmluZyB8IHVuZGVmaW5lZD4oKCkgPT5cbiAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkJVVFRPTiA/IHByb3BzLnR5cGUgPz8gRUxFTUVOVC5CVVRUT04gOiB1bmRlZmluZWRcbiAgKTtcblxuICBjb25zdCByb290RWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBJbnRlcm5hbEJhc2VMaW5rIDogcHJvcHMuZWxlbWVudCkpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJ1dHRvbicsXG4gICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzFfU0VNSUJPTEQsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuUEFERElORy5YLlRXTyxcbiAgICAgIGB0aWRlLWJ1dHRvbi0ke3ByaW9yaXR5fWAsXG4gICAgICBlbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBbQ1NTLkRJU1BMQVkuSU5MSU5FX0ZMRVgsIENTUy5VTkRFUkxJTkUuUkVTVC5PRkZdIDogW0NTUy5ESVNQTEFZLkZMRVhdLFxuICAgICAgc2l6ZSA9PT0gU0laRV9CVVRUT04uU01BTExcbiAgICAgICAgPyBbQ1NTLkZPTlQuUk9MRS5CVVRUT05fMiwgQ1NTLlBBRERJTkcuWS5IQUxGXVxuICAgICAgICA6IFtDU1MuRk9OVC5ST0xFLkJVVFRPTl8xLCBDU1MuUEFERElORy5ZLk9ORV0sXG4gICAgXVwiXG4gICAgOmRpc2FibGVkPVwiZWxlbWVudCA9PT0gRUxFTUVOVC5CVVRUT04gJiYgZGlzYWJsZWRcIlxuICAgIDpocmVmPVwiZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LICYmIGhyZWYgPyBocmVmIDogdW5kZWZpbmVkXCJcbiAgICA6dGFyZ2V0PVwiZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LICYmIGlzTmV3VGFiID8gVEFSR0VULkJMQU5LIDogVEFSR0VULlNFTEZcIlxuICAgIDp0eXBlPVwidHlwZUF0dHJpYnV0ZVwiXG4gICAgOmlzPVwicm9vdEVsZW1lbnRcIlxuICA+XG4gICAgPFRpZGVJY29uXG4gICAgICA6aWNvbj1cImljb25MZWFkaW5nXCJcbiAgICAgIDpzaXplPVwic2l6ZSA9PT0gU0laRV9CVVRUT04uTEFSR0UgPyBTSVpFLkxBUkdFIDogU0laRS5TTUFMTFwiXG4gICAgICB2LWlmPVwiaWNvbkxlYWRpbmdcIlxuICAgIC8+XG5cbiAgICB7eyBsYWJlbCB9fVxuXG4gICAgPFRpZGVJY29uXG4gICAgICA6aWNvbj1cImljb25UcmFpbGluZ1wiXG4gICAgICA6c2l6ZT1cInNpemUgPT09IFNJWkVfQlVUVE9OLkxBUkdFID8gU0laRS5MQVJHRSA6IFNJWkUuU01BTExcIlxuICAgICAgdi1pZj1cImljb25UcmFpbGluZ1wiXG4gICAgLz5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBidXR0b24gY29tcG9uZW50IGZvciB1c2UgaW4gcGFnaW5hdGlvbiBwdXJwb3Nlcy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWJ1dHRvbnBhZ2luYXRpb24tLWRvY3MpIGZvciBUaWRlQnV0dG9uUGFnaW5hdGlvblxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBJbnRlcm5hbEJhc2VMaW5rIGZyb20gJ0AvY29tcG9uZW50cy9JbnRlcm5hbEJhc2VMaW5rLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQsIEVMRU1FTlRfQlJPQUQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50QnJvYWQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIFBhZ2luYXRpb24gQnV0dG9uIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGlzcGxheWVkIHBhZ2UgKi9cbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgICAvKiogSFRNTCB0YWcgdHlwZSAqL1xuICAgIGVsZW1lbnQ/OiBFbGVtZW50QnJvYWQ7XG5cbiAgICAvKiogVVJMIHRvIG9wZW48YnIgLz4oTGluayBvbmx5KSAqL1xuICAgIGhyZWY/OiBzdHJpbmc7XG5cbiAgICAvKiogQnV0dG9uIHRleHQgKi9cbiAgICBsYWJlbDogc3RyaW5nIHwgbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGVsZW1lbnQ6IEVMRU1FTlRfQlJPQUQuQlVUVE9OLFxuICAgIGhyZWY6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCByb290RWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5ULkxJTksgPyBJbnRlcm5hbEJhc2VMaW5rIDogcHJvcHMuZWxlbWVudCkpO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWJ1dHRvbi1pY29uJyxcbiAgICAgIFtDU1MuRElTUExBWS5JTkxJTkVfQkxPQ0ssIENTUy5CT1JERVIuUkFESVVTLkZVTEwsIENTUy5QQURESU5HLkZVTEwuSEFMRl0sXG4gICAgICBwcm9wcy5lbGVtZW50ID09PSBFTEVNRU5UX0JST0FELkxJTksgPyBbQ1NTLlVOREVSTElORS5SRVNULk9GRl0gOiAnJyxcbiAgICAgIHByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlRfQlJPQUQuRElWID8gW0NTUy5DVVJTT1IuUE9JTlRFUl0gOiAnJyxcbiAgICAgIFtDU1MuRk9OVC5ST0xFLkhFQURMSU5FXzNdLFxuICAgIF1cIlxuICAgIDpkaXNhYmxlZD1cInByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlRfQlJPQUQuQlVUVE9OICYmIHByb3BzLmRpc2FibGVkXCJcbiAgICA6aHJlZj1cInByb3BzLmVsZW1lbnQgPT09IEVMRU1FTlRfQlJPQUQuTElOSyAmJiBwcm9wcy5ocmVmID8gcHJvcHMuaHJlZiA6IHVuZGVmaW5lZFwiXG4gICAgOnR5cGU9XCJlbGVtZW50ID09PSBFTEVNRU5UX0JST0FELkJVVFRPTiA/IEVMRU1FTlRfQlJPQUQuQlVUVE9OIDogdW5kZWZpbmVkXCJcbiAgICA6aXM9XCJyb290RWxlbWVudFwiXG4gID5cbiAgICA8c3BhbiA6Y2xhc3M9XCJbJ2xhYmVsJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkNFTlRFUiwgQ1NTLkFYSVMyLkNFTlRFUl1cIj5cbiAgICAgIHt7IHByb3BzLmxhYmVsIH19XG4gICAgPC9zcGFuPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWJ1dHRvbi1pY29uLFxuICAudGlkZS1saW5rLWFzLWJ1dHRvbi1pY29uIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10aWRlLXdoaXRlKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10aWRlLXdoaXRlKTtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1zZWNvbmRhcnkpO1xuICB9XG5cbiAgLnRpZGUtYnV0dG9uLWljb246bm90KDpkaXNhYmxlZCk6aG92ZXIsXG4gIC50aWRlLWxpbmstYXMtYnV0dG9uLWljb246bm90KDpkaXNhYmxlZCk6aG92ZXIge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gIH1cblxuICAudGlkZS1idXR0b24taWNvbjpkaXNhYmxlZCxcbiAgLnRpZGUtbGluay1hcy1idXR0b24taWNvbjpkaXNhYmxlZCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1idXR0b24taWNvbiAubGFiZWwsXG4gIC50aWRlLWxpbmstYXMtYnV0dG9uLWljb24gLmxhYmVsIHtcbiAgICB3aWR0aDogMS41cmVtO1xuICAgIGhlaWdodDogMS41cmVtO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBidXR0b24gY29tcG9uZW50IGZvciB1c2UgdG8gc2F2ZSBpdGVtcy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWJ1dHRvbnNhdmUtLWRvY3MpIGZvciBUaWRlQnV0dG9uU2F2ZVxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IHsgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGNvbnN0IGlzVG91Y2hlZCA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlzU2F2ZWQgPSBkZWZpbmVNb2RlbDxib29sZWFuPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIHdhdGNoKFxuICAgIGlzU2F2ZWQsXG4gICAgKCkgPT4ge1xuICAgICAgaWYgKCFpc1RvdWNoZWQudmFsdWUpIGlzVG91Y2hlZC52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogZmFsc2UgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGJ1dHRvblxuICAgIDpjbGFzcz1cIlsndGlkZS1idXR0b24tc2F2ZScsIENTUy5QQURESU5HLkZVTEwuUVVBUlRFUiwgaXNTYXZlZCAmJiAnc2F2ZWQnXVwiXG4gICAgQGNsaWNrPVwiaXNTYXZlZCA9ICFpc1NhdmVkXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgPlxuICAgIDxkaXYgOmNsYXNzPVwiWydoZWFydC1jb250YWluZXInLCBDU1MuRElTUExBWS5GTEVYLCBpc1NhdmVkICYmIGlzVG91Y2hlZCAmJiAnYW5pbWF0ZS1oZWFydGJlYXQnXVwiPlxuICAgICAgPHN2Z1xuICAgICAgICA6Y2xhc3M9XCJbJ3RpZGUtYnV0dG9uLXNhdmUtaWNvbicsIENTUy5GTEVYLkdST1cuT0ZGLCBDU1MuRkxFWC5TSFJJTksuT0ZGXVwiXG4gICAgICAgIGhlaWdodD1cIjMyXCJcbiAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgIHdpZHRoPVwiMzJcIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgID5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICA6Y2xhc3M9XCJbJ2hlYXJ0LWZpbGxlZCcsIGlzU2F2ZWQgPyBDU1MuRk9OVC5DT0xPUi5HTE9CQUwuUFJJTUFSWS5SRUQgOiAnZmlsbGVkLXRyYW5zcGFyZW50J11cIlxuICAgICAgICAgIGQ9XCJtMTIgMjEtMS40NS0xLjNjLTEuNjgzMy0xLjUxNjctMy4wNzUtMi44MjUtNC4xNzUtMy45MjUtMS4xLTEuMS0xLjk3NS0yLjA4NzUtMi42MjUtMi45NjI1LS42NS0uODc1LTEuMTA0Mi0xLjY3OTItMS4zNjI1LTIuNDEyNUMyLjEyOTIgOS42NjY3IDIgOC45MTY3IDIgOC4xNWMwLTEuNTY2Ny41MjUtMi44NzUgMS41NzUtMy45MjVDNC42MjUgMy4xNzUgNS45MzMzIDIuNjUgNy41IDIuNjVjLjg2NjcgMCAxLjY5MTcuMTgzMyAyLjQ3NS41NS43ODMzLjM2NjcgMS40NTgzLjg4MzMgMi4wMjUgMS41NS41NjY3LS42NjY3IDEuMjQxNy0xLjE4MzMgMi4wMjUtMS41NS43ODMzLS4zNjY3IDEuNjA4My0uNTUgMi40NzUtLjU1IDEuNTY2NyAwIDIuODc1LjUyNSAzLjkyNSAxLjU3NUMyMS40NzUgNS4yNzUgMjIgNi41ODMzIDIyIDguMTVjMCAuNzY2Ny0uMTI5MiAxLjUxNjctLjM4NzUgMi4yNS0uMjU4My43MzMzLS43MTI1IDEuNTM3NS0xLjM2MjUgMi40MTI1cy0xLjUyNSAxLjg2MjUtMi42MjUgMi45NjI1Yy0xLjEgMS4xLTIuNDkxNyAyLjQwODMtNC4xNzUgMy45MjVMMTIgMjFaXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8cGF0aFxuICAgICAgICAgIDpjbGFzcz1cIlsnaGVhcnQtb3V0bGluZScsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuSU5WRVJTRV1cIlxuICAgICAgICAgIGQ9XCJtMTIgMjEtMS40NS0xLjNjLTEuNjgzMy0xLjUxNjctMy4wNzUtMi44MjUtNC4xNzUtMy45MjUtMS4xLTEuMS0xLjk3NS0yLjA4NzUtMi42MjUtMi45NjI1LS42NS0uODc1LTEuMTA0Mi0xLjY3OTItMS4zNjI1LTIuNDEyNUMyLjEyOTIgOS42NjY3IDIgOC45MTY3IDIgOC4xNWMwLTEuNTY2Ny41MjUtMi44NzUgMS41NzUtMy45MjVDNC42MjUgMy4xNzUgNS45MzMzIDIuNjUgNy41IDIuNjVjLjg2NjcgMCAxLjY5MTcuMTgzMyAyLjQ3NS41NS43ODMzLjM2NjcgMS40NTgzLjg4MzMgMi4wMjUgMS41NS41NjY3LS42NjY3IDEuMjQxNy0xLjE4MzMgMi4wMjUtMS41NS43ODMzLS4zNjY3IDEuNjA4My0uNTUgMi40NzUtLjU1IDEuNTY2NyAwIDIuODc1LjUyNSAzLjkyNSAxLjU3NUMyMS40NzUgNS4yNzUgMjIgNi41ODMzIDIyIDguMTVjMCAuNzY2Ny0uMTI5MiAxLjUxNjctLjM4NzUgMi4yNS0uMjU4My43MzMzLS43MTI1IDEuNTM3NS0xLjM2MjUgMi40MTI1cy0xLjUyNSAxLjg2MjUtMi42MjUgMi45NjI1Yy0xLjEgMS4xLTIuNDkxNyAyLjQwODMtNC4xNzUgMy45MjVMMTIgMjFabTAtMi43YzEuNi0xLjQzMzMgMi45MTY3LTIuNjYyNSAzLjk1LTMuNjg3NXMxLjg1LTEuOTE2NyAyLjQ1LTIuNjc1Yy42LS43NTgzIDEuMDE2Ny0xLjQzMzMgMS4yNS0yLjAyNS4yMzMzLS41OTE3LjM1LTEuMTc5Mi4zNS0xLjc2MjUgMC0xLS4zMzMzLTEuODMzMy0xLTIuNS0uNjY2Ny0uNjY2Ny0xLjUtMS0yLjUtMS0uNzgzMyAwLTEuNTA4My4yMjA4LTIuMTc1LjY2MjVDMTMuNjU4MyA1Ljc1NDIgMTMuMiA2LjMxNjcgMTIuOTUgN2gtMS45Yy0uMjUtLjY4MzMtLjcwODMtMS4yNDU4LTEuMzc1LTEuNjg3NVM4LjI4MzMgNC42NSA3LjUgNC42NWMtMSAwLTEuODMzMy4zMzMzLTIuNSAxLS42NjY3LjY2NjctMSAxLjUtMSAyLjUgMCAuNTgzMy4xMTY3IDEuMTcwOC4zNSAxLjc2MjUuMjMzMy41OTE3LjY1IDEuMjY2NyAxLjI1IDIuMDI1czEuNDE2NyAxLjY1IDIuNDUgMi42NzVTMTAuNCAxNi44NjY3IDEyIDE4LjNaXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICA8L2J1dHRvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC5oZWFydC1jb250YWluZXIge1xuICAgIC0tcm90YXRlLWR1cmluZy1oZWFydC1iZWF0OiA5ZGVnO1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMHB4IDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjMpKTtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWR1cmF0aW9uLTMwMCkgdmFyKC0tdGlkZS1lYXNpbmctZWFzZS1vdXQpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgc2NhbGU7XG4gICAgcm90YXRlOiAwZGVnO1xuICB9XG5cbiAgLmhlYXJ0LWNvbnRhaW5lci5hbmltYXRlLWhlYXJ0YmVhdCB7XG4gICAgYW5pbWF0aW9uOiBoZWFydEJlYXQgdmFyKC0tdGlkZS1kdXJhdGlvbi0xNTApO1xuICAgIGFuaW1hdGlvbi1kaXJlY3Rpb246IGFsdGVybmF0ZTtcbiAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiA0O1xuICB9XG5cbiAgLmhlYXJ0LWNvbnRhaW5lcjphY3RpdmUge1xuICAgIHNjYWxlOiAwLjk7XG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tdGlkZS1kdXJhdGlvbi03NSk7XG4gIH1cblxuICAudGlkZS1idXR0b24tc2F2ZS1pY29uIHtcbiAgICBmaWxsOiBjdXJyZW50Q29sb3I7XG4gIH1cblxuICBAbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICAgIC5oZWFydC1jb250YWluZXIge1xuICAgICAgLS1yb3RhdGUtZHVyaW5nLWhlYXJ0LWJlYXQ6IDBkZWc7XG4gICAgfVxuXG4gICAgLnRpZGUtYnV0dG9uLXNhdmU6d2hlcmUoOmhvdmVyLCA6Zm9jdXMtdmlzaWJsZSkgLmhlYXJ0LWNvbnRhaW5lciB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5ZGVnKTtcbiAgICB9XG4gIH1cblxuICAuaGVhcnQtZmlsbGVkIHtcbiAgICBzY2FsZTogMC45ODU7IC8qIGF2b2lkIGhhaXJsaW5lIGJvcmRlciByZW5kZXIgaXNzdWUgKi9cbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tdGlkZS1kdXJhdGlvbi03NSkgdmFyKC0tdGlkZS1lYXNpbmctbGluZWFyKTtcbiAgfVxuXG4gIC5maWxsZWQtdHJhbnNwYXJlbnQge1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLXRyYW5zcGFyZW50LTQwMCk7XG4gIH1cblxuICBAa2V5ZnJhbWVzIGhlYXJ0QmVhdCB7XG4gICAgZnJvbSB7XG4gICAgICBzY2FsZTogMTtcbiAgICAgIHJvdGF0ZTogMGRlZztcbiAgICB9XG4gICAgdG8ge1xuICAgICAgc2NhbGU6IDEuMjU7XG4gICAgICByb3RhdGU6IHZhcigtLXJvdGF0ZS1kdXJpbmctaGVhcnQtYmVhdCk7XG4gICAgfVxuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBzZWdtZW50ZWQgYnV0dG9uIGNvbXBvbmVudCBmb3IgbmF2aWdhdGlvbiBwdXJwb3Nlcy5cbiAgICpcbiAgICogUG93ZXJlZCBieSBuYXRpdmUgaW5wdXRbdHlwZT1cInJhZGlvXCJdIHVuZGVyIHRoZSBob29kIGZvciBlbmhhbmNlZCBhY2Nlc3NpYmlsaXR5LlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlYnV0dG9uc2VnbWVudGVkLS1kb2NzKSBmb3IgVGlkZUJ1dHRvblNlZ21lbnRlZFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHVzZUlkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgaW1wb3J0IHR5cGUgeyBUYWIgfSBmcm9tICdAL3R5cGVzL1RhYic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogU2V0cyBsYWJlbCBhbmQgY2FsbGJhY2sgZm9yIGVhY2ggdGFiICovXG4gICAgdGFiczogVGFiW10gfCByZWFkb25seSBUYWJbXTtcblxuICAgIC8qKiBPcHRzIGluIGFzIGEgbmF0aXZlIEhUTUwgZm9ybSBmaWVsZCB3aXRoIHRoaXMgbmFtZS4gKi9cbiAgICBuYW1lPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG5cbiAgY29uc3QgY3VycmVudEluZGV4ID0gZGVmaW5lTW9kZWw8bnVtYmVyPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IHVuaXF1ZUlkID0gdXNlSWQoKTtcblxuICBjb25zdCBpbnB1dEZvcm1BdHRyaWJ1dGUgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMubmFtZSA/IHVuZGVmaW5lZCA6ICdub25lJykpO1xuICBjb25zdCBpbnB1dE5hbWVBdHRyaWJ1dGUgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5uYW1lID8/IHVuaXF1ZUlkKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1idXR0b24tc2VnbWVudGVkJyxcbiAgICAgIENTUy5CRy5TVVJGQUNFLlZBUklBTlQsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuT1ZFUkZMT1cuWFkuQVVUTyxcbiAgICAgIENTUy5QQURESU5HLkZVTEwuUVVBUlRFUixcbiAgICBdXCJcbiAgICByb2xlPVwicmFkaW9ncm91cFwiXG4gID5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtYnV0dG9uLXNlZ21lbnRlZC10YWInLFxuICAgICAgICBpbmRleCA9PT0gY3VycmVudEluZGV4XG4gICAgICAgICAgPyBbQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULCBDU1MuU0hBRE9XLkJPVFRPTV1cbiAgICAgICAgICA6IFsnaW5hY3RpdmUnLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdLFxuICAgICAgICBDU1MuQUxJR04uWC5DRU5URVIsXG4gICAgICAgIENTUy5CT1JERVIuRlVMTC5UV08sXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgICAgQ1NTLkZMRVguR1JPVy5PTixcbiAgICAgICAgQ1NTLkZMRVguU0hSSU5LLk9GRixcbiAgICAgICAgQ1NTLkZPTlQuUk9MRS5CVVRUT05fMSxcbiAgICAgICAgQ1NTLlBBRERJTkcuWC5IQUxGLFxuICAgICAgICBDU1MuUEFERElORy5ZLlFVQVJURVIsXG4gICAgICAgIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGLFxuICAgICAgICBDU1MuV0lEVEguQVVUTyxcbiAgICAgIF1cIlxuICAgICAgOmRhdGEtdHJhY2s9XCJ0YWIuZGF0YVRyYWNrIHx8IHVuZGVmaW5lZFwiXG4gICAgICA6a2V5PVwidGFiLmxhYmVsXCJcbiAgICAgIHYtZm9yPVwiKHRhYiwgaW5kZXgpIGluIHRhYnNcIlxuICAgID5cbiAgICAgIDxpbnB1dFxuICAgICAgICA6Y2hlY2tlZD1cImluZGV4ID09PSBjdXJyZW50SW5kZXhcIlxuICAgICAgICA6Y2xhc3M9XCJbJ3RpZGUtc2NyZWVuLXJlYWRlci1vbmx5J11cIlxuICAgICAgICA6Zm9ybT1cImlucHV0Rm9ybUF0dHJpYnV0ZVwiXG4gICAgICAgIDpuYW1lPVwiaW5wdXROYW1lQXR0cmlidXRlXCJcbiAgICAgICAgOnZhbHVlPVwiaW5kZXhcIlxuICAgICAgICBAY2hhbmdlPVwiY3VycmVudEluZGV4ID0gaW5kZXhcIlxuICAgICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgLz5cblxuICAgICAgPHNwYW4gOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMl9TRU1JQk9MRF1cIj5cbiAgICAgICAge3sgdGFiLmxhYmVsIH19XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDxzcGFuXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzJfU0VNSUJPTERdXCJcbiAgICAgICAgdi1pZj1cInRhYi5jb3VudCAmJiB0YWIuY291bnQgPiAwXCJcbiAgICAgID5cbiAgICAgICAgKHt7IHRhYi5jb3VudCB9fSlcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWJ1dHRvbi1zZWdtZW50ZWQge1xuICAgIG1heC13aWR0aDogMjMuM3JlbTtcbiAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICB9XG5cbiAgLnRpZGUtYnV0dG9uLXNlZ21lbnRlZDpoYXMoOmZvY3VzLXZpc2libGUpIHtcbiAgICBvdXRsaW5lOiBhdXRvO1xuICB9XG5cbiAgLmluYWN0aXZlIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgfVxuXG4gIC5pbmFjdGl2ZTpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS1kZWZhdWx0KTtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBUWVBFX0NBUkQgPSB7XG4gIEFDVElPTkFCTEU6ICdhY3Rpb24nLFxuICBJTkZPUk1BVElPTkFMOiAnaW5mb3JtYXRpb25hbCcsXG4gIFNFTEVDVEFCTEU6ICdzZWxlY3QnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQ2FyZFR5cGUgPSAodHlwZW9mIFRZUEVfQ0FSRClba2V5b2YgdHlwZW9mIFRZUEVfQ0FSRF07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGNhcmQgY29tcG9uZW50IHdpdGggYSBoZWFkaW5nLCBkZXNjcmlwdGlvbiwgYW5kIG9wdGlvbmFsIGljb24uXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVjYXJkLS1kb2NzKSBmb3IgVGlkZUNhcmRcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IFRZUEVfQ0FSRCB9IGZyb20gJ0AvdHlwZXMvQ2FyZCc7XG4gIGltcG9ydCB7IEVMRU1FTlRfQlJPQUQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgQ2FyZFR5cGUgfSBmcm9tICdAL3R5cGVzL0NhcmQnO1xuICBpbXBvcnQgdHlwZSB7IEVsZW1lbnRCcm9hZCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogT3B0aW9uYWwgZGVzY3JpcHRpb24gdGV4dCBkaXNwbGF5ZWQgYmVsb3cgdGhlIGhlYWRpbmcgKi9cbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAgIC8qKiBUaGUgbWFpbiBoZWFkaW5nIG9mIHRoZSBjYXJkLiAqL1xuICAgIGhlYWRpbmc6IHN0cmluZztcblxuICAgIC8qKiBPcHRpb25hbCBpY29uIGRpc3BsYXllZCBvbiB0aGUgY2FyZC4gKi9cbiAgICBpY29uPzogSWNvbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIENhcmQgaXMgc2VsZWN0ZWQgKGZvciBzZWxlY3RhYmxlIGNhcmRzKS4gKi9cbiAgICBzZWxlY3RlZD86IGJvb2xlYW47XG5cbiAgICAvKiogVHlwZSBvZiB0aGUgY2FyZCAqL1xuICAgIHR5cGU/OiBDYXJkVHlwZTtcblxuICAgIC8qKiBVUkwgdG8gbmF2aWdhdGUgdG8gb24gY2xpY2suICovXG4gICAgaHJlZj86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRlc2NyaXB0aW9uOiB1bmRlZmluZWQsXG4gICAgaHJlZjogdW5kZWZpbmVkLFxuICAgIGljb246IHVuZGVmaW5lZCxcbiAgICBzZWxlY3RlZDogdW5kZWZpbmVkLFxuICAgIHR5cGU6IFRZUEVfQ0FSRC5JTkZPUk1BVElPTkFMLFxuICB9KTtcblxuICBjb25zdCByb290RWxlbWVudCA9IGNvbXB1dGVkPEVsZW1lbnRCcm9hZCB8IHR5cGVvZiBJbnRlcm5hbEJhc2VMaW5rPigoKSA9PlxuICAgIHByb3BzLmhyZWYgPyBJbnRlcm5hbEJhc2VMaW5rIDogcHJvcHMudHlwZSA9PT0gVFlQRV9DQVJELklORk9STUFUSU9OQUwgPyBFTEVNRU5UX0JST0FELkRJViA6IEVMRU1FTlRfQlJPQUQuQlVUVE9OXG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtY2FyZCcsXG4gICAgICBDU1MuQk9SREVSLkNPTE9SLkxPVyxcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5QQURESU5HLkZVTEwuT05FLFxuICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICBDU1MuQUxJR04uWC5MRUZULFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIHR5cGUgIT09IFRZUEVfQ0FSRC5JTkZPUk1BVElPTkFMICYmICdob3ZlcmFibGUnLFxuICAgICAgdHlwZSA9PT0gVFlQRV9DQVJELlNFTEVDVEFCTEUgJiYgc2VsZWN0ZWQgJiYgJ3NlbGVjdGVkJyxcbiAgICBdXCJcbiAgICA6aHJlZj1cImhyZWZcIlxuICAgIDp0eXBlPVwicm9vdEVsZW1lbnQgPT09IEVMRU1FTlRfQlJPQUQuQlVUVE9OID8gRUxFTUVOVF9CUk9BRC5CVVRUT04gOiB1bmRlZmluZWRcIlxuICAgIDppcz1cInJvb3RFbGVtZW50XCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLkdST1cuT0ZGLCBDU1MuRkxFWC5TSFJJTksuT0ZGXVwiXG4gICAgICA6aWNvbj1cImljb25cIlxuICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIHYtaWY9XCJpY29uXCJcbiAgICAvPlxuXG4gICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkFYSVMyLlNUQVJULCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLkhBTEZdXCI+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzFfU0VNSUJPTEQsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF1cIj5cbiAgICAgICAge3sgaGVhZGluZyB9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMiwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgIHYtaWY9XCJkZXNjcmlwdGlvblwiXG4gICAgICA+XG4gICAgICAgIHt7IGRlc2NyaXB0aW9uIH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1jYXJkLmhvdmVyYWJsZTpub3QoLnNlbGVjdGVkKTpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1yZXN0KTtcbiAgfVxuICAudGlkZS1jYXJkLnNlbGVjdGVkIHtcbiAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGNhcm91c2VsIGNvbXBvbmVudCB3aXRoIG5hdmlnYXRpb24gY29udHJvbHMgYW5kIHNsaWRlIGluZGljYXRvcnMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVjYXJvdXNlbC0tZG9jcykgZm9yIFRpZGVDYXJvdXNlbFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIHJlZiB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBkaXNwbGF5IHRoZSBpbmRpY2F0b3IgZG90cyBvdmVybGF5PGJyIC8+KE9ubHkgdmFsaWQgd2l0aCBmdWxsIHdpZHRoIGNhcmRzKSAqL1xuICAgIGhhc0RvdHM/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciB0byBkaXNwbGF5IG9uLXBhZ2Ugb3IgZmxvYXRpbmcgY2Fyb3VzZWwgKi9cbiAgICBpc0Zsb2F0aW5nPzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIGZvbnQgcm9sZSB1c2VkIGZvciB0aXRsZSBkaXNwbGF5ICovXG4gICAgaXNIZWFkbGluZTE/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBvbi1wYWdlIGJ1dHRvbnMgc2hvdWxkIGJlIGhpZGRlbiB1bnRpbCBob3ZlciAqL1xuICAgIGlzSGlkZWF3YXlCdXR0b25zPzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gc2Nyb2xsIGJ5IHBhZ2Ugb3IgYnkgaW5kaXZpZHVhbCBzbGlkZSAqL1xuICAgIGlzU2Nyb2xsQnlQYWdlPzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHRoZSBtYXggbnVtYmVyIG9mIGluZGljYXRvciBkb3RzIHRvIGRpc3BsYXkgYXQgYSBnaXZlbiB0aW1lICovXG4gICAgbWF4RG90cz86IG51bWJlcjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHRoZSB0ZXh0IGRpc3BsYXllZCB0byB0aGUgcmlnaHQgb2YgdGhlIHRpdGxlICovXG4gICAgc3VidGl0bGU/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB0aGUgdGl0bGUgdGV4dCBkaXNwbGF5ZWQgYWJvdmUgdGhlIGNhcm91c2VsICovXG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBoYXNEb3RzOiB1bmRlZmluZWQsXG4gICAgaXNGbG9hdGluZzogZmFsc2UsXG4gICAgaXNIZWFkbGluZTE6IGZhbHNlLFxuICAgIGlzSGlkZWF3YXlCdXR0b25zOiB0cnVlLFxuICAgIGlzU2Nyb2xsQnlQYWdlOiB0cnVlLFxuICAgIG1heERvdHM6IDUsXG4gICAgc3VidGl0bGU6IHVuZGVmaW5lZCxcbiAgICB0aXRsZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ3NsaWRlc0FkZGVkVG9WaWV3Jywgc2xpZGVzSW5WaWV3OiBudW1iZXJbXSk6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IGNhcm91c2VsUmVmID0gcmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHJlZjxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBjb250ZW50V2lkdGggPSByZWY8bnVtYmVyPigwKTtcbiAgY29uc3QgY3VycmVudFBhZ2VJbmRleCA9IHJlZjxudW1iZXI+KDApO1xuICBjb25zdCBkb3RzUmVmID0gcmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGZyYW1lV2lkdGggPSByZWY8bnVtYmVyPigwKTtcbiAgY29uc3QgaXNGaXJzdFNsaWRlID0gcmVmPGJvb2xlYW4+KHRydWUpO1xuICBjb25zdCBpc0xhc3RTbGlkZSA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IHNob3dCdXR0b25zID0gcmVmPGJvb2xlYW4+KHRydWUpO1xuICBjb25zdCBzbGlkZU9ic2VydmVyID0gcmVmPEludGVyc2VjdGlvbk9ic2VydmVyIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHNsaWRlcyA9IHJlZjxIVE1MRWxlbWVudFtdPihbXSk7XG4gIGNvbnN0IHNsaWRlc0luVmlldyA9IHJlZjxudW1iZXJbXT4oW10pO1xuICBjb25zdCBzbG90T2JzZXJ2ZXIgPSByZWY8TXV0YXRpb25PYnNlcnZlciB8IG51bGw+KG51bGwpO1xuICBjb25zdCB0b3VjaFN0YXJ0ID0gcmVmPFRvdWNoIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjb25zdCBzbGlkZXNJblZpZXdDb3VudCA9IHJlZjxudW1iZXI+KDEpO1xuXG4gIGNvbnN0IGN1cnJlbnRQYWdlID0gY29tcHV0ZWQoKCkgPT4gY3VycmVudFBhZ2VJbmRleC52YWx1ZSArIDEpO1xuICBjb25zdCBkb3RDb250YWluZXJXaWR0aCA9IGNvbXB1dGVkKCgpID0+IGRvdENvdW50VmlzaWJsZS52YWx1ZSAqIGRvdFdpZHRoICsgKGRvdENvdW50VmlzaWJsZS52YWx1ZSAtIDEpICogZG90R2FwKTtcbiAgY29uc3QgZG90Q291bnRWaXNpYmxlID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLm1heERvdHMgPiB0b3RhbFBhZ2VzLnZhbHVlID8gdG90YWxQYWdlcy52YWx1ZSA6IHByb3BzLm1heERvdHMpKTtcbiAgY29uc3QgdG90YWxQYWdlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoIXNsaWRlcy52YWx1ZS5sZW5ndGgpIHJldHVybiAwO1xuICAgIGlmICghcHJvcHMuaXNTY3JvbGxCeVBhZ2UpIHJldHVybiBzbGlkZXMudmFsdWUubGVuZ3RoO1xuXG4gICAgY29uc3QgcXVvdGllbnQgPSBNYXRoLmZsb29yKHNsaWRlcy52YWx1ZS5sZW5ndGggLyBzbGlkZXNJblZpZXdDb3VudC52YWx1ZSk7XG4gICAgY29uc3QgcmVtYWluZGVyID0gc2xpZGVzLnZhbHVlLmxlbmd0aCAlIHNsaWRlc0luVmlld0NvdW50LnZhbHVlO1xuXG4gICAgcmV0dXJuIHJlbWFpbmRlciA/IHF1b3RpZW50ICsgMSA6IHF1b3RpZW50O1xuICB9KTtcblxuICBjb25zdCBkb3RHYXA6IG51bWJlciA9IDg7XG4gIGNvbnN0IGRvdFdpZHRoOiBudW1iZXIgPSA4O1xuICBsZXQgc2Nyb2xsVGltZW91dDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0IGdldERvdENsYXNzID0gKGRvdEluZGV4OiBudW1iZXIpID0+IHtcbiAgICBsZXQgY2xhc3NOYW1lID0gJyc7XG5cbiAgICBpZiAoZG90SW5kZXggPT09IGN1cnJlbnRQYWdlSW5kZXgudmFsdWUpIGNsYXNzTmFtZSA9ICd0aWRlLWNhcm91c2VsLWRvdC1hY3RpdmUnO1xuICAgIGlmIChNYXRoLmFicyhjdXJyZW50UGFnZUluZGV4LnZhbHVlIC0gZG90SW5kZXgpID09PSAxKSBjbGFzc05hbWUgPSAndGlkZS1jYXJvdXNlbC1kb3QtbmVpZ2hib3InO1xuXG4gICAgcmV0dXJuIGNsYXNzTmFtZTtcbiAgfTtcblxuICBjb25zdCBnZXRJc0VsZW1lbnRXaXRoaW5Db250YWluZXIgPSAoZWxlbWVudDogSFRNTEVsZW1lbnQsIGNvbnRhaW5lcjogSFRNTEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBjb250YWluZXJSZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGNvbnRhaW5lclJpZ2h0ID0gY29udGFpbmVyUmVjdC5sZWZ0ICsgY29udGFpbmVyUmVjdC53aWR0aDtcbiAgICBjb25zdCBlbGVtZW50UmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgZWxlbWVudFJpZ2h0ID0gZWxlbWVudFJlY3QubGVmdCArIGVsZW1lbnRSZWN0LndpZHRoO1xuXG4gICAgcmV0dXJuIGVsZW1lbnRSaWdodCA8PSBjb250YWluZXJSaWdodCAmJiBlbGVtZW50UmVjdC5sZWZ0ID49IGNvbnRhaW5lclJlY3QubGVmdDtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVUb3VjaEVuZCA9IChldmVudDogVG91Y2hFdmVudCkgPT4ge1xuICAgIGlmICghdG91Y2hTdGFydC52YWx1ZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgdG91Y2hFbmQgPSBldmVudC5jaGFuZ2VkVG91Y2hlc1swXTtcbiAgICBjb25zdCBkZWx0YVggPSB0b3VjaFN0YXJ0LnZhbHVlLmNsaWVudFggLSB0b3VjaEVuZC5jbGllbnRYO1xuICAgIGNvbnN0IGRlbHRhWSA9IHRvdWNoRW5kLmNsaWVudFkgLSB0b3VjaFN0YXJ0LnZhbHVlLmNsaWVudFk7XG5cbiAgICBpZiAoTWF0aC5hYnMoZGVsdGFYKSA+IE1hdGguYWJzKGRlbHRhWSkpIHNjcm9sbEJ5RGVsdGEoZGVsdGFYKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVUb3VjaFN0YXJ0ID0gKGV2ZW50OiBUb3VjaEV2ZW50KSA9PiB7XG4gICAgdG91Y2hTdGFydC52YWx1ZSA9IGV2ZW50LnRvdWNoZXNbMF07XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlV2hlZWwgPSAoZXZlbnQ6IFdoZWVsRXZlbnQpID0+IHtcbiAgICBjb25zdCBpc1NoaWZ0S2V5RG93biA9IGV2ZW50LnNoaWZ0S2V5O1xuICAgIGNvbnN0IGlzV2hlZWwgPSBNYXRoLmFicyhldmVudC5kZWx0YVkpID49IDgwO1xuXG4gICAgaWYgKGlzV2hlZWwgJiYgIWlzU2hpZnRLZXlEb3duKSByZXR1cm47XG4gICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgY2xlYXJUaW1lb3V0KHNjcm9sbFRpbWVvdXQpO1xuXG4gICAgc2Nyb2xsVGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChpc1doZWVsKSB7XG4gICAgICAgIHNjcm9sbEJ5RGVsdGEoZXZlbnQuZGVsdGFZKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IHNsaWRlcy52YWx1ZVtzbGlkZXNJblZpZXcudmFsdWVbMF1dPy5vZmZzZXRMZWZ0IHx8IDA7XG5cbiAgICAgICAgc2Nyb2xsVG9PZmZzZXQob2Zmc2V0KTtcbiAgICAgIH1cbiAgICB9LCAxMDApO1xuICB9O1xuXG4gIGNvbnN0IG1lYXN1cmVEb20gPSAoKSA9PiB7XG4gICAgaWYgKCFjb250YWluZXJSZWYudmFsdWUpIHJldHVybjtcblxuICAgIGNvbnRlbnRXaWR0aC52YWx1ZSA9IGNvbnRhaW5lclJlZi52YWx1ZS5zY3JvbGxXaWR0aDtcbiAgICBmcmFtZVdpZHRoLnZhbHVlID0gY29udGFpbmVyUmVmLnZhbHVlLmNsaWVudFdpZHRoO1xuICAgIHNob3dCdXR0b25zLnZhbHVlID0gY29udGVudFdpZHRoLnZhbHVlID4gZnJhbWVXaWR0aC52YWx1ZTtcblxuICAgIHNsaWRlc0luVmlld0NvdW50LnZhbHVlID0gc2xpZGVzLnZhbHVlLmZpbHRlcigoc2xpZGUpID0+XG4gICAgICBnZXRJc0VsZW1lbnRXaXRoaW5Db250YWluZXIoc2xpZGUsIGNvbnRhaW5lclJlZi52YWx1ZSBhcyBIVE1MRWxlbWVudClcbiAgICApLmxlbmd0aDtcbiAgfTtcblxuICBjb25zdCBvYnNlcnZlU2xpZGVzID0gKCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICByb290OiBjYXJvdXNlbFJlZj8udmFsdWUsXG4gICAgICByb290TWFyZ2luOiAnMHB4IDFweCAwcHggMHB4JyxcbiAgICAgIHRocmVzaG9sZDogMSxcbiAgICB9O1xuXG4gICAgc2xpZGVPYnNlcnZlci52YWx1ZSA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllcykgPT4ge1xuICAgICAgbGV0IHNsaWRlc0FkZGVkVG9WaWV3OiBudW1iZXJbXSA9IFtdO1xuXG4gICAgICBlbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IHNsaWRlSW5kZXggPSBzbGlkZXMudmFsdWUuaW5kZXhPZihlbnRyeS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuXG4gICAgICAgIGlmIChlbnRyeS5pc0ludGVyc2VjdGluZykge1xuICAgICAgICAgIHNsaWRlc0FkZGVkVG9WaWV3LnB1c2goc2xpZGVJbmRleCk7XG4gICAgICAgICAgc2xpZGVzSW5WaWV3LnZhbHVlLnB1c2goc2xpZGVJbmRleCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2xpZGVzSW5WaWV3LnZhbHVlID0gc2xpZGVzSW5WaWV3LnZhbHVlLmZpbHRlcigoc2xpZGUpID0+IHNsaWRlICE9PSBzbGlkZUluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNsaWRlc0luVmlldy52YWx1ZS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gICAgICB9KTtcblxuICAgICAgaXNGaXJzdFNsaWRlLnZhbHVlID0gc2xpZGVzSW5WaWV3LnZhbHVlLmluY2x1ZGVzKDApO1xuICAgICAgaXNMYXN0U2xpZGUudmFsdWUgPSBzbGlkZXNJblZpZXcudmFsdWUuaW5jbHVkZXMoc2xpZGVzLnZhbHVlLmxlbmd0aCAtIDEpO1xuXG4gICAgICBpZiAoc2xpZGVzQWRkZWRUb1ZpZXcubGVuZ3RoID4gMCkgZW1pdCgnc2xpZGVzQWRkZWRUb1ZpZXcnLCBzbGlkZXNBZGRlZFRvVmlldyk7XG4gICAgfSwgb3B0aW9ucyk7XG5cbiAgICBzbGlkZXMudmFsdWUuZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgIGlmIChzbGlkZU9ic2VydmVyLnZhbHVlKSBzbGlkZU9ic2VydmVyLnZhbHVlLm9ic2VydmUoY2hpbGQpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9ic2VydmVTbG90ID0gKCkgPT4ge1xuICAgIGNvbnN0IG9ic2VydmVyQ2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoY29udGFpbmVyUmVmLnZhbHVlID09PSBudWxsKSByZXR1cm47XG5cbiAgICAgIHNsaWRlcy52YWx1ZSA9IEFycmF5LmZyb20oY29udGFpbmVyUmVmLnZhbHVlLmNoaWxkcmVuKSBhcyBIVE1MRWxlbWVudFtdO1xuICAgICAgb2JzZXJ2ZVNsaWRlcygpO1xuICAgIH07XG5cbiAgICBzbG90T2JzZXJ2ZXIudmFsdWUgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihvYnNlcnZlckNhbGxiYWNrKTtcblxuICAgIGlmIChjb250YWluZXJSZWYudmFsdWUpIHNsb3RPYnNlcnZlci52YWx1ZS5vYnNlcnZlKGNvbnRhaW5lclJlZi52YWx1ZSwgeyBjaGlsZExpc3Q6IHRydWUgfSk7XG4gIH07XG5cbiAgY29uc3Qgc2Nyb2xsQnlEZWx0YSA9IChkZWx0YTogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgaXNTY3JvbGxpbmdMZWZ0ID0gZGVsdGEgPCAwO1xuXG4gICAgaWYgKGlzU2Nyb2xsaW5nTGVmdCkge1xuICAgICAgcHJvcHMuaXNTY3JvbGxCeVBhZ2UgPyBzaG93UHJldmlvdXNQYWdlKCkgOiBzaG93UHJldmlvdXNTbGlkZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9wcy5pc1Njcm9sbEJ5UGFnZSA/IHNob3dOZXh0UGFnZSgpIDogc2hvd05leHRTbGlkZSgpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBzY3JvbGxUb09mZnNldCA9ICh0YXJnZXQ6IG51bWJlcikgPT4ge1xuICAgIGlmIChjb250YWluZXJSZWYudmFsdWUgPT09IG51bGwpIHJldHVybjtcblxuICAgIGNvbnN0IGlzU2Nyb2xsaW5nTGVmdCA9IHRhcmdldCA8PSBjb250YWluZXJSZWYudmFsdWUuc2Nyb2xsTGVmdDtcblxuICAgIGN1cnJlbnRQYWdlSW5kZXgudmFsdWUgPSBpc1Njcm9sbGluZ0xlZnQgPyBjdXJyZW50UGFnZUluZGV4LnZhbHVlIC0gMSA6IGN1cnJlbnRQYWdlSW5kZXgudmFsdWUgKyAxO1xuXG4gICAgY29udGFpbmVyUmVmLnZhbHVlLnNjcm9sbFRvKHtcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIGxlZnQ6IHRhcmdldCxcbiAgICB9KTtcbiAgICB1cGRhdGVEb3RzKGlzU2Nyb2xsaW5nTGVmdCk7XG4gIH07XG5cbiAgY29uc3Qgc2hvd05leHRQYWdlID0gKCkgPT4ge1xuICAgIGlmIChzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID09PSAwIHx8IGlzTGFzdFNsaWRlLnZhbHVlKSByZXR1cm47XG5cbiAgICBjb25zdCBuZXh0U2xpZGU6IG51bWJlciA9IHNsaWRlc0luVmlldy52YWx1ZVtzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoIC0gMV0gKyAxO1xuICAgIGNvbnN0IG9mZnNldCA9IHNsaWRlcy52YWx1ZVtuZXh0U2xpZGVdPy5vZmZzZXRMZWZ0O1xuXG4gICAgc2Nyb2xsVG9PZmZzZXQob2Zmc2V0KTtcbiAgfTtcblxuICBjb25zdCBzaG93UHJldmlvdXNQYWdlID0gKCkgPT4ge1xuICAgIGlmIChzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID09PSAwIHx8IGlzRmlyc3RTbGlkZS52YWx1ZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgcHJldmlvdXNTbGlkZTogbnVtYmVyID0gc2xpZGVzSW5WaWV3LnZhbHVlWzBdIC0gc2xpZGVzSW5WaWV3LnZhbHVlLmxlbmd0aDtcbiAgICBjb25zdCBvZmZzZXQgPSBzbGlkZXMudmFsdWVbcHJldmlvdXNTbGlkZV0/Lm9mZnNldExlZnQgfHwgMDtcblxuICAgIHNjcm9sbFRvT2Zmc2V0KG9mZnNldCk7XG4gIH07XG5cbiAgY29uc3Qgc2hvd05leHRTbGlkZSA9ICgpID0+IHtcbiAgICBpZiAoc2xpZGVzSW5WaWV3LnZhbHVlLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgbmV4dFNsaWRlOiBudW1iZXIgPSBzbGlkZXNJblZpZXcudmFsdWUubGVuZ3RoID4gMSA/IHNsaWRlc0luVmlldy52YWx1ZVsxXSA6IHNsaWRlc0luVmlldy52YWx1ZVswXSArIDE7XG5cbiAgICBzY3JvbGxUb09mZnNldChzbGlkZXMudmFsdWVbbmV4dFNsaWRlXS5vZmZzZXRMZWZ0KTtcbiAgfTtcblxuICBjb25zdCBzaG93UHJldmlvdXNTbGlkZSA9ICgpID0+IHtcbiAgICBpZiAoc2xpZGVzSW5WaWV3LnZhbHVlLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgcHJldmlvdXNTbGlkZTogbnVtYmVyID0gc2xpZGVzSW5WaWV3LnZhbHVlWzBdIC0gMTtcblxuICAgIHNjcm9sbFRvT2Zmc2V0KHNsaWRlcy52YWx1ZVtwcmV2aW91c1NsaWRlXS5vZmZzZXRMZWZ0KTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVEb3RzID0gKGlzU2Nyb2xsaW5nTGVmdDogYm9vbGVhbikgPT4ge1xuICAgIGlmICghZG90c1JlZi52YWx1ZSB8fCBkb3RDb3VudFZpc2libGUudmFsdWUgPj0gdG90YWxQYWdlcy52YWx1ZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgaXNPZGREb3RDb3VudCA9IGRvdENvdW50VmlzaWJsZS52YWx1ZSAlIDIgIT09IDA7XG4gICAgY29uc3QgY2VudGVyRG90ID1cbiAgICAgIGlzT2RkRG90Q291bnQgfHwgaXNTY3JvbGxpbmdMZWZ0XG4gICAgICAgID8gTWF0aC5mbG9vcihkb3RDb3VudFZpc2libGUudmFsdWUgLyAyKSArIDFcbiAgICAgICAgOiBNYXRoLmZsb29yKGRvdENvdW50VmlzaWJsZS52YWx1ZSAvIDIpO1xuXG4gICAgZG90c1JlZi52YWx1ZS5zY3JvbGxUbyh7XG4gICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICBsZWZ0OiBjdXJyZW50UGFnZS52YWx1ZSA8IGNlbnRlckRvdCA/IDAgOiAoY3VycmVudFBhZ2UudmFsdWUgLSBjZW50ZXJEb3QpICogKGRvdFdpZHRoICsgZG90R2FwKSxcbiAgICB9KTtcbiAgfTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIGlmIChjb250YWluZXJSZWYudmFsdWUgPT09IG51bGwpIHJldHVybjtcblxuICAgIHNsaWRlcy52YWx1ZSA9IEFycmF5LmZyb20oY29udGFpbmVyUmVmLnZhbHVlLmNoaWxkcmVuKSBhcyBIVE1MRWxlbWVudFtdO1xuXG4gICAgbWVhc3VyZURvbSgpO1xuICAgIG9ic2VydmVTbGlkZXMoKTtcbiAgICBvYnNlcnZlU2xvdCgpO1xuXG4gICAgaWYgKHdpbmRvdykge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG1lYXN1cmVEb20pO1xuICAgIH1cbiAgfSk7XG5cbiAgb25Vbm1vdW50ZWQoKCkgPT4ge1xuICAgIHNsaWRlT2JzZXJ2ZXIudmFsdWU/LmRpc2Nvbm5lY3QoKTtcbiAgICBzbG90T2JzZXJ2ZXIudmFsdWU/LmRpc2Nvbm5lY3QoKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgbWVhc3VyZURvbSk7XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb25cbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1jYXJvdXNlbCcsXG4gICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuT05FLFxuICAgICAgQ1NTLldJRFRILk1BWF9GVUxMLFxuICAgIF1cIlxuICAgIHJlZj1cImNhcm91c2VsUmVmXCJcbiAgPlxuICAgIDxzZWN0aW9uXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgcHJvcHMudGl0bGUgPyBDU1MuQVhJUzEuQkVUV0VFTiA6IENTUy5BWElTMS5FTkQsIENTUy5BWElTMi5DRU5URVIsIENTUy5XSURUSC5GVUxMXVwiXG4gICAgICB2LWlmPVwiKCFwcm9wcy5pc0Zsb2F0aW5nICYmIHNob3dCdXR0b25zKSB8fCBwcm9wcy50aXRsZVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguV1JBUCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5PTkVdXCJcbiAgICAgICAgdi1pZj1cInByb3BzLnRpdGxlXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltpc0hlYWRsaW5lMSA/IENTUy5GT05ULlJPTEUuSEVBRExJTkVfMSA6IENTUy5GT05ULlJPTEUuSEVBRExJTkVfMl1cIlxuICAgICAgICAgIHYtaWY9XCJwcm9wcy50aXRsZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBwcm9wcy50aXRsZSB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMiwgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5UXVwiXG4gICAgICAgICAgdi1pZj1cInByb3BzLnN1YnRpdGxlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByb3BzLnN1YnRpdGxlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuT05FXVwiXG4gICAgICAgIHYtaWY9XCIhcHJvcHMuaXNGbG9hdGluZyAmJiBzaG93QnV0dG9uc1wiXG4gICAgICA+XG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpkaXNhYmxlZD1cImlzRmlyc3RTbGlkZVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuVEVSVElBUllcIlxuICAgICAgICAgIEBjbGljaz1cImlzU2Nyb2xsQnlQYWdlID8gc2hvd1ByZXZpb3VzUGFnZSgpIDogc2hvd1ByZXZpb3VzU2xpZGUoKVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmRpc2FibGVkPVwiaXNMYXN0U2xpZGVcIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX1JJR0hUXCJcbiAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5URVJUSUFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaXNTY3JvbGxCeVBhZ2UgPyBzaG93TmV4dFBhZ2UoKSA6IHNob3dOZXh0U2xpZGUoKVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG5cbiAgICA8c2xvdCBuYW1lPVwibWlzY1wiIC8+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIltDU1MuUE9TSVRJT04uUkVMQVRJVkUsIENTUy5ESVNQTEFZLkZMRVhdXCI+XG4gICAgICA8dWxcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLWNhcm91c2VsLWNvbnRhaW5lcicsXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuR0FQLk9ORSxcbiAgICAgICAgICBDU1MuTElTVF9CVUxMRVRTLk9GRixcbiAgICAgICAgICBDU1MuT1ZFUkZMT1cuWC5TQ1JPTEwsXG4gICAgICAgICAgQ1NTLlNDUk9MTEJBUi5PRkYsXG4gICAgICAgICAgQ1NTLlNOQVAuT04sXG4gICAgICAgIF1cIlxuICAgICAgICByZWY9XCJjb250YWluZXJSZWZcIlxuICAgICAgICBAdG91Y2hlbmQ9XCJoYW5kbGVUb3VjaEVuZFwiXG4gICAgICAgIEB0b3VjaHN0YXJ0LnBhc3NpdmU9XCJoYW5kbGVUb3VjaFN0YXJ0XCJcbiAgICAgICAgQHdoZWVsPVwiaGFuZGxlV2hlZWxcIlxuICAgICAgPlxuICAgICAgICA8c2xvdCAvPlxuICAgICAgPC91bD5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgIENTUy5QT1NJVElPTklORy5CT1RUT00sXG4gICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICAgIENTUy5NQVJHSU4uQk9UVE9NLkhBTEYsXG4gICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgXVwiXG4gICAgICAgIHYtaWY9XCJoYXNEb3RzICYmIHRvdGFsUGFnZXMgPiAxXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIlsndGlkZS1jYXJvdXNlbC1kb3RzLWNvbnRhaW5lciddXCJcbiAgICAgICAgICA6c3R5bGU9XCJ7XG4gICAgICAgICAgICB3aWR0aDogYCR7ZG90Q29udGFpbmVyV2lkdGh9cHhgLFxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAndGlkZS1jYXJvdXNlbC1kb3RzJyxcbiAgICAgICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICAgICAgQ1NTLkFYSVMxLlNUQVJULFxuICAgICAgICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgICAgICAgIENTUy5PVkVSRkxPVy5YLlNDUk9MTCxcbiAgICAgICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgICAgICAgQ1NTLlNDUk9MTEJBUi5PRkYsXG4gICAgICAgICAgICBdXCJcbiAgICAgICAgICAgIHJlZj1cImRvdHNSZWZcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICAgICd0aWRlLWNhcm91c2VsLWRvdCcsXG4gICAgICAgICAgICAgICAgQ1NTLkZMRVguU0hSSU5LLk9GRixcbiAgICAgICAgICAgICAgICBDU1MuSEVJR0hULlpFUk8sXG4gICAgICAgICAgICAgICAgQ1NTLldJRFRILlpFUk8sXG4gICAgICAgICAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICAgICAgICAgIGdldERvdENsYXNzKGluZGV4KSxcbiAgICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICAgIDprZXk9XCJpbmRleFwiXG4gICAgICAgICAgICAgIHYtZm9yPVwiKF8sIGluZGV4KSBpbiB0b3RhbFBhZ2VzXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLWNhcm91c2VsLWJ1dHRvbi1vdmVybGF5JyxcbiAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlRPUCxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5BWElTMS5CRVRXRUVOLFxuICAgICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgcHJvcHMuaXNIaWRlYXdheUJ1dHRvbnMgPyAnaGlkZWF3YXknIDogJycsXG4gICAgICAgIF1cIlxuICAgICAgICB2LWlmPVwiaXNGbG9hdGluZyAmJiBzaG93QnV0dG9uc1wiXG4gICAgICA+XG4gICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkxFRlQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT05dXCJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0ZpcnN0U2xpZGVcIlxuICAgICAgICAgIDppY29uPVwiSUNPTi5DSEVWUk9OX0xFRlRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cImlzU2Nyb2xsQnlQYWdlID8gc2hvd1ByZXZpb3VzUGFnZSgpIDogc2hvd1ByZXZpb3VzU2xpZGUoKVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uUklHSFQuT05FLCBDU1MuUE9JTlRFUl9FVkVOVFMuT05dXCJcbiAgICAgICAgICA6ZGlzYWJsZWQ9XCJpc0xhc3RTbGlkZVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgIEBjbGljaz1cImlzU2Nyb2xsQnlQYWdlID8gc2hvd05leHRQYWdlKCkgOiBzaG93TmV4dFNsaWRlKClcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWNhcm91c2VsLWJ1dHRvbi1vdmVybGF5LmhpZGVhd2F5IHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG5cbiAgLnRpZGUtY2Fyb3VzZWw6aG92ZXIgLnRpZGUtY2Fyb3VzZWwtYnV0dG9uLW92ZXJsYXkuaGlkZWF3YXkge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAudGlkZS1jYXJvdXNlbC1kb3Qge1xuICAgIHdpZHRoOiA4cHg7XG4gICAgaGVpZ2h0OiA4cHg7XG4gICAgb3BhY2l0eTogMC43NTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNSk7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWNhcm91c2VsLWRvdC1uZWlnaGJvciB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjc1KTtcbiAgfVxuXG4gIC50aWRlLWNhcm91c2VsLWRvdC1hY3RpdmUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gIEBtZWRpYSAocG9pbnRlcjogY29hcnNlKSB7XG4gICAgLnRpZGUtY2Fyb3VzZWwgLnRpZGUtY2Fyb3VzZWwtYnV0dG9uLW92ZXJsYXkge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGNoaXAgYWN0aW9uIGJ1dHRvbiBpbnRlbmRlZCB0byBiZSB1c2VkIGluIG5hdmlnYXRpb24gbWVudXMgcmVsYXRpbmcgdG8gc2VhcmNoZXMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVjaGlwYWN0aW9uLS1kb2NzKSBmb3IgVGlkZUNoaXBBY3Rpb25cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IEVMRU1FTlQgfSBmcm9tICdAL3R5cGVzL0VsZW1lbnQnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUQVJHRVQgfSBmcm9tICdAL3R5cGVzL1RhcmdldCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBFbGVtZW50IH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBIVE1MIHRhZyB0eXBlLiAqL1xuICAgIGVsZW1lbnQ/OiBFbGVtZW50O1xuXG4gICAgLyoqIFVSTCB0byBuYXZpZ2F0ZSB0byBvbiBjbGljay4gKi9cbiAgICBocmVmPzogc3RyaW5nO1xuXG4gICAgLyoqIEljb24gdG8gc2hvdyBiZWZvcmUgdGhlIGxhYmVsLiAqL1xuICAgIGljb25MZWFkaW5nPzogSWNvbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gdGFyZ2V0IGEgbmV3IGJyb3dzZXIgdGFiLiAqL1xuICAgIGlzTmV3VGFiPzogYm9vbGVhbjtcblxuICAgIC8qKiBDaGlwIHRleHQuICovXG4gICAgbGFiZWw6IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGVsZW1lbnQ6IEVMRU1FTlQuTElOSyxcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgaWNvbkxlYWRpbmc6IElDT04uU0VBUkNILFxuICAgIGlzTmV3VGFiOiBmYWxzZSxcbiAgfSk7XG5cbiAgY29uc3Qgcm9vdEVsZW1lbnQgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMuZWxlbWVudCA9PT0gRUxFTUVOVC5MSU5LID8gSW50ZXJuYWxCYXNlTGluayA6IHByb3BzLmVsZW1lbnQpKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1jaGlwLWFjdGlvbicsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxULFxuICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MSU5LXzIsXG4gICAgICBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICBDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGLFxuICAgIF1cIlxuICAgIDpocmVmPVwicHJvcHMuaHJlZlwiXG4gICAgOnRhcmdldD1cInByb3BzLmlzTmV3VGFiID8gVEFSR0VULkJMQU5LIDogVEFSR0VULlNFTEZcIlxuICAgIDp0eXBlPVwiZWxlbWVudCA9PT0gRUxFTUVOVC5CVVRUT04gPyBFTEVNRU5ULkJVVFRPTiA6IHVuZGVmaW5lZFwiXG4gICAgOmlzPVwicm9vdEVsZW1lbnRcIlxuICA+XG4gICAgPFRpZGVJY29uIDppY29uPVwicHJvcHMuaWNvbkxlYWRpbmdcIiAvPlxuXG4gICAgPHNwYW4+e3sgcHJvcHMubGFiZWwgfX08L3NwYW4+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY2hpcC1hY3Rpb246aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBjaGlwIGZpbHRlciBjb21wb25lbnQgZm9yIHVzZSBpbiBuYXZpZ2F0aW9uLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlY2hpcGZpbHRlci0tZG9jcykgZm9yIFRpZGVDaGlwRmlsdGVyXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogQ2hpcCB0ZXh0LiAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gIH07XG5cbiAgZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG5cbiAgY29uc3QgaXNBY3RpdmUgPSBkZWZpbmVNb2RlbDxib29sZWFuPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKCkgPT4ge1xuICAgIGlzQWN0aXZlLnZhbHVlID0gIWlzQWN0aXZlLnZhbHVlO1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGJ1dHRvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWNoaXAtZmlsdGVyJyxcbiAgICAgIGlzQWN0aXZlXG4gICAgICAgID8gWydhY3RpdmUnLCBDU1MuQkcuU0VDT05EQVJZLCBDU1MuRk9OVC5DT0xPUi5TRUNPTkRBUlldXG4gICAgICAgIDogW0NTUy5CRy5TVVJGQUNFLlZBUklBTlQsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuREVGQVVMVF0sXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzIsXG4gICAgXVwiXG4gICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2tcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPHNsb3QgLz5cblxuICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMS5DRU5URVIsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuSEFMRl1cIj5cbiAgICAgIDxzcGFuIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzEsIENTUy5XSElURVNQQUNFX1dSQVAuT0ZGXVwiPlxuICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2J1dHRvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC8qIEJvcmRlciBtdXN0IGFsd2F5cyBleGlzdCB0byBwcmV2ZW50IHJlc2l6ZSBvbiBob3ZlciBzdGF0ZSwgYnV0IG1hdGNoIGJhY2tncm91bmQgY29sb3Igb24gcmVzdCBzdGF0ZSB0byBibGVuZCBpbi4gKi9cbiAgLnRpZGUtY2hpcC1maWx0ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1zdXJmYWNlLXZhcmlhbnQpO1xuICB9XG5cbiAgLnRpZGUtY2hpcC1maWx0ZXIuYWN0aXZlIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtc2Vjb25kYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWNoaXAtZmlsdGVyOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLXN1cmZhY2UtdmFyaWFudCk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlcik7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGlucHV0IGNoaXAgY29tcG9uZW50IGZvciB1c2UgaW4gbmF2aWdhdGlvbi5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWNoaXBpbnB1dC0tZG9jcykgZm9yIFRpZGVDaGlwSW5wdXRcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBDaGlwIHRleHQgKi9cbiAgICBsYWJlbDogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8YnV0dG9uXG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtY2hpcC1pbnB1dCcsXG4gICAgICBDU1MuQkcuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRSxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgIENTUy5QQURESU5HLlkuSEFMRixcbiAgICAgIENTUy5GT05ULlJPTEUuTEFCRUxfMixcbiAgICBdXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgPlxuICAgIDxzcGFuPnt7IHByb3BzLmxhYmVsIH19PC9zcGFuPlxuXG4gICAgPFRpZGVJY29uIDppY29uPVwiSUNPTi5DTE9TRVwiIC8+XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtY2hpcC1pbnB1dCB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1jaGlwLWlucHV0OmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBjb2x1bW5zIGNvbXBvbmVudCBmb3IgdXNlIGluIG5hdmlnYXRpb24uXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVjb2x1bW5zLS1kb2NzKSBmb3IgVGlkZUNvbHVtbnNcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBEZXRlcm1pbmVzIGxhYmVsIGZvciB0aGUgY29sdW1ucyBzZWN0aW9uLiAqL1xuICAgIGhlYWRpbmc/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBoZWFkaW5nOiAnJyxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvbiBjbGFzcz1cInRpZGUtY29sdW1uc1wiPlxuICAgIDxoMiA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5CT1RUT00uSEFMRl1cIj5cbiAgICAgIHt7IHByb3BzLmhlYWRpbmcgfX1cbiAgICA8L2gyPlxuXG4gICAgPHVsIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5XUkFQLCBDU1MuR0FQLlRXTywgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCI+XG4gICAgICA8bGkgY2xhc3M9XCJ0aWRlLWNvbHVtbnMtY29sdW1uXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzZWN0aW9uMVwiIC8+XG4gICAgICA8L2xpPlxuXG4gICAgICA8bGkgY2xhc3M9XCJ0aWRlLWNvbHVtbnMtY29sdW1uXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzZWN0aW9uMlwiIC8+XG4gICAgICA8L2xpPlxuXG4gICAgICA8bGkgY2xhc3M9XCJ0aWRlLWNvbHVtbnMtY29sdW1uXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzZWN0aW9uM1wiIC8+XG4gICAgICA8L2xpPlxuXG4gICAgICA8bGkgY2xhc3M9XCJ0aWRlLWNvbHVtbnMtY29sdW1uXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzZWN0aW9uNFwiIC8+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWNvbHVtbnMtY29sdW1uIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAgIC50aWRlLWNvbHVtbnMtY29sdW1uIHtcbiAgICAgIHdpZHRoOiBjYWxjKCgxMDAlIC0gMnJlbSkgLyAyKTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogMTIzMnB4KSB7XG4gICAgLnRpZGUtY29sdW1ucy1jb2x1bW4ge1xuICAgICAgd2lkdGg6IGNhbGMoKDEwMCUgLSA2cmVtKSAvIDQpO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB7IGluamVjdCwgcHJvdmlkZSwgcmVmIH0gZnJvbSAndnVlJztcblxuaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG50eXBlIFRpZGVGb3JtQ29udGV4dCA9IHtcbiAgZm9yY2VTaG93RXJyb3JzOiBSZWY8Ym9vbGVhbj47XG59O1xuXG5jb25zdCBGT1JNX0tFWSA9IFN5bWJvbCgndGlkZS1mb3JtJyk7XG5cbmV4cG9ydCBjb25zdCB1c2VUaWRlRm9ybSA9ICgpID0+IHtcbiAgY29uc3QgZm9yY2VTaG93RXJyb3JzID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcm92aWRlPFRpZGVGb3JtQ29udGV4dD4oRk9STV9LRVksIHsgZm9yY2VTaG93RXJyb3JzIH0pO1xuXG4gIGNvbnN0IHJldmVhbFZhbGlkYXRpb25FcnJvcnMgPSAoKSA9PiB7XG4gICAgZm9yY2VTaG93RXJyb3JzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICByZXR1cm4geyByZXZlYWxWYWxpZGF0aW9uRXJyb3JzIH07XG59O1xuXG5leHBvcnQgY29uc3QgdXNlRm9ybUNvbnRleHQgPSAoKSA9PiB7XG4gIHJldHVybiBpbmplY3Q8VGlkZUZvcm1Db250ZXh0PihGT1JNX0tFWSk7XG59O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBmb3JtIGNvbXBvbmVudCB0byBiZSB1c2VkIHRvIHdyYXAgZm9ybSBlbGVtZW50cyBhbmQgaGFuZGxlIGZvcm0gc3VibWlzc2lvbi5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWZvcm0tLWRvY3MpIGZvciBUaWRlRm9ybVxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IHsgdXNlVGlkZUZvcm0gfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtJztcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ3N1Ym1pdCcsIGU6IFN1Ym1pdEV2ZW50KTogdm9pZDtcbiAgfTtcbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IHsgcmV2ZWFsVmFsaWRhdGlvbkVycm9ycyB9ID0gdXNlVGlkZUZvcm0oKTtcblxuICBjb25zdCBoYW5kbGVTdWJtaXQgPSAoZTogU3VibWl0RXZlbnQpID0+IHtcbiAgICByZXZlYWxWYWxpZGF0aW9uRXJyb3JzKCk7XG4gICAgZW1pdCgnc3VibWl0JywgZSk7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8Zm9ybVxuICAgIEBzdWJtaXQucHJldmVudD1cImhhbmRsZVN1Ym1pdFwiXG4gICAgbm92YWxpZGF0ZVxuICA+XG4gICAgPHNsb3QgLz5cbiAgPC9mb3JtPlxuPC90ZW1wbGF0ZT5cbiIsImV4cG9ydCBjb25zdCBPQkpFQ1RfRklUID0ge1xuICBDT05UQUlOOiAnY29udGFpbicsXG4gIENPVkVSOiAnY292ZXInLFxuICBTQ0FMRV9ET1dOOiAnc2NhbGUtZG93bicsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBPYmplY3RGaXQgPSAodHlwZW9mIE9CSkVDVF9GSVQpW2tleW9mIHR5cGVvZiBPQkpFQ1RfRklUXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGFuIGltYWdlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWltYWdlLS1kb2NzKSBmb3IgVGlkZUltYWdlXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBPQkpFQ1RfRklUIH0gZnJvbSAnQC90eXBlcy9JbWFnZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IE9iamVjdEZpdCB9IGZyb20gJ0AvdHlwZXMvSW1hZ2UnO1xuICBpbXBvcnQgdHlwZSB7IFNvdXJjZSB9IGZyb20gJ0AvdHlwZXMvU291cmNlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBUZXh0IGRpc3BsYXkgd2hlbiBpbWFnZSBjYW4ndCBiZSBsb2FkZWQuICovXG4gICAgYWx0Pzogc3RyaW5nO1xuXG4gICAgLyoqIEFwcGx5IGEgXCJoZWlnaHRcIiBhdHRyaWJ1dGUgdG8gdGhlIGludGVybmFsIGltYWdlIHRhZyAoaW5jbHVkaW5nIHVuaXQpLiAqL1xuICAgIGhlaWdodD86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gZGVsYXkgbG9hZGluZyB1bnRpbCBpbWFnZSBpcyBpbiB2aWV3cG9ydC4gKi9cbiAgICBpc0xhenk/OiBib29sZWFuO1xuXG4gICAgLyoqIENvbnRyb2xzIGhvdyB0aGUgaW1hZ2Ugc2NhbGVzIHdpdGhpbiBpdHMgYm94LCBlZmZlY3RpdmUgb25seSB3aGVuIGltYWdlIHNpemUgZGlmZmVycyBmcm9tIGl0cyBpbnRyaW5zaWMgZGltZW5zaW9ucy4gKi9cbiAgICBvYmplY3RGaXQ/OiBPYmplY3RGaXQ7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBpbWFnZSBzb3VyY2VzIGJ5IGJyZWFrcG9pbnQuICovXG4gICAgc291cmNlcz86IFNvdXJjZVtdO1xuXG4gICAgLyoqIEltYWdlIFVSTC4gKi9cbiAgICBzcmM/OiBzdHJpbmc7XG5cbiAgICAvKiogQXBwbHkgYSBcIndpZHRoXCIgYXR0cmlidXRlIHRvIHRoZSBpbnRlcm5hbCBpbWFnZSB0YWcgKGluY2x1ZGluZyB1bml0KS4gKi9cbiAgICB3aWR0aD86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGFsdDogJycsXG4gICAgaGVpZ2h0OiB1bmRlZmluZWQsXG4gICAgaXNMYXp5OiB0cnVlLFxuICAgIG9iamVjdEZpdDogT0JKRUNUX0ZJVC5DT1ZFUixcbiAgICBzb3VyY2VzOiAoKSA9PiBbXSxcbiAgICBzcmM6IHVuZGVmaW5lZCxcbiAgICB3aWR0aDogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBwaWN0dXJlID0gcmVmKCk7XG4gIGNvbnN0IGltZyA9IHJlZigpO1xuXG4gIGNvbnN0IGltYWdlRGVmYXVsdCA9ICdodHRwczovL2Nkbi1zdGF0aWMudGlsYWJzLmlvL21hcmtldHBsYWNlL2NvbW1vbi9pbWFnZS1jb21pbmctc29vbi5zdmcnO1xuXG4gIGNvbnN0IG9iamVjdEZpdENsYXNzTmFtZSA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICAgIHN3aXRjaCAocHJvcHMub2JqZWN0Rml0KSB7XG4gICAgICBjYXNlIE9CSkVDVF9GSVQuQ09OVEFJTjpcbiAgICAgICAgcmV0dXJuIENTUy5PQkpFQ1QuQ09OVEFJTjtcbiAgICAgIGNhc2UgT0JKRUNUX0ZJVC5DT1ZFUjpcbiAgICAgICAgcmV0dXJuIENTUy5PQkpFQ1QuQ09WRVI7XG4gICAgICBjYXNlIE9CSkVDVF9GSVQuU0NBTEVfRE9XTjpcbiAgICAgICAgcmV0dXJuIENTUy5PQkpFQ1QuU0NBTEVfRE9XTjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBPQkpFQ1RfRklULkNPVkVSO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3Qgc2V0SW1hZ2VGcm9tRGVmYXVsdCA9ICgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50U3JjID0gaW1nLnZhbHVlPy5jdXJyZW50U3JjO1xuICAgIGNvbnN0IHNvdXJjZXMgPSBwaWN0dXJlLnZhbHVlPy5xdWVyeVNlbGVjdG9yQWxsKCdzb3VyY2UnKSA/PyBbXTtcblxuICAgIGlmICghY3VycmVudFNyYykgcmV0dXJuO1xuXG4gICAgZm9yIChjb25zdCBzb3VyY2Ugb2Ygc291cmNlcykge1xuICAgICAgY29uc3QgcmVzb2x2ZWQgPSBuZXcgVVJMKHNvdXJjZS5zcmNzZXQsIHdpbmRvdy5sb2NhdGlvbi5ocmVmKS5ocmVmO1xuXG4gICAgICBpZiAocmVzb2x2ZWQgPT09IGN1cnJlbnRTcmMpIHtcbiAgICAgICAgc291cmNlLnJlbW92ZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpbWcudmFsdWU/LmdldEF0dHJpYnV0ZSgnc3JjJykgIT09IGltYWdlRGVmYXVsdCkge1xuICAgICAgaW1nLnZhbHVlLnNyYyA9IGltYWdlRGVmYXVsdDtcbiAgICB9XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8cGljdHVyZVxuICAgIDpjbGFzcz1cIlsndGlkZS1pbWFnZScsIENTUy5ESVNQTEFZLkJMT0NLXVwiXG4gICAgcmVmPVwicGljdHVyZVwiXG4gID5cbiAgICA8c291cmNlXG4gICAgICA6a2V5PVwic291cmNlLnNyY3NldFwiXG4gICAgICA6bWVkaWE9XCJgKG1pbi13aWR0aDoke3NvdXJjZS5tZWRpYX1weClgXCJcbiAgICAgIDpzcmNzZXQ9XCJzb3VyY2Uuc3Jjc2V0XCJcbiAgICAgIHYtZm9yPVwic291cmNlIGluIHByb3BzLnNvdXJjZXNcIlxuICAgIC8+XG5cbiAgICA8aW1nXG4gICAgICA6YWx0PVwiYWx0XCJcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW1hZ2UtaW1nJyxcbiAgICAgICAgIXByb3BzLndpZHRoICYmIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAhcHJvcHMuaGVpZ2h0ICYmIENTUy5IRUlHSFQuRlVMTCxcbiAgICAgICAgQ1NTLk9CSkVDVC5DRU5URVIsXG4gICAgICAgIG9iamVjdEZpdENsYXNzTmFtZSxcbiAgICAgIF1cIlxuICAgICAgOmZldGNocHJpb3JpdHk9XCJpc0xhenkgPyB1bmRlZmluZWQgOiAnaGlnaCdcIlxuICAgICAgOmhlaWdodD1cInByb3BzLmhlaWdodFwiXG4gICAgICA6bG9hZGluZz1cInByb3BzLmlzTGF6eSA/ICdsYXp5JyA6ICdlYWdlcidcIlxuICAgICAgcmVmPVwiaW1nXCJcbiAgICAgIDpzcmM9XCJzcmMgPz8gaW1hZ2VEZWZhdWx0XCJcbiAgICAgIDp3aWR0aD1cInByb3BzLndpZHRoXCJcbiAgICAgIEBlcnJvcj1cInNldEltYWdlRnJvbURlZmF1bHRcIlxuICAgIC8+XG4gIDwvcGljdHVyZT5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWltYWdlLWltZyB7XG4gICAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGFuIGltYWdlIGJhY2tncm91bmQgY29tcG9uZW50LlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlaW1hZ2ViYWNrZ3JvdW5kLS1kb2NzKSBmb3IgVGlkZUltYWdlQmFja2dyb3VuZFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IFRpZGVJbWFnZSBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUltYWdlLnZ1ZSc7XG4gIGltcG9ydCB7IE9CSkVDVF9GSVQgfSBmcm9tICdAL3R5cGVzL0ltYWdlJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIGltcG9ydCB0eXBlIHsgU291cmNlIH0gZnJvbSAnQC90eXBlcy9Tb3VyY2UnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIFRleHQgZGlzcGxheSB3aGVuIGltYWdlIGNhbid0IGJlIGxvYWRlZC4gKi9cbiAgICBhbHQ/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGRlbGF5IGxvYWRpbmcgdW50aWwgaW1hZ2UgaXMgaW4gdmlld3BvcnQuICovXG4gICAgaXNMYXp5PzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIGltYWdlIHNvdXJjZXMgYnkgYnJlYWtwb2ludC4gKi9cbiAgICBzb3VyY2VzPzogU291cmNlW107XG5cbiAgICAvKiogSW1hZ2UgVVJMLiAqL1xuICAgIHNyYz86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGFsdDogJycsXG4gICAgaXNMYXp5OiB0cnVlLFxuICAgIHNvdXJjZXM6ICgpID0+IFtdLFxuICAgIHNyYzogdW5kZWZpbmVkLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWltYWdlLWJhY2tncm91bmQnLCBDU1MuUE9TSVRJT04uUkVMQVRJVkUsIENTUy5PVkVSRkxPVy5YWS5ISURERU4sIENTUy5JU09MQVRJT04uSVNPTEFURV1cIj5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxUaWRlSW1hZ2VcbiAgICAgICAgOmFsdD1cInByb3BzLmFsdFwiXG4gICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkhFSUdIVC5GVUxMXVwiXG4gICAgICAgIDppcy1sYXp5PVwicHJvcHMuaXNMYXp5XCJcbiAgICAgICAgOm9iamVjdC1maXQ9XCJPQkpFQ1RfRklULkNPVkVSXCJcbiAgICAgICAgOnNvdXJjZXM9XCJwcm9wcy5zb3VyY2VzXCJcbiAgICAgICAgOnNyYz1cInByb3BzLnNyY1wiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuXG4gICAgPHNsb3QgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICA6ZGVlcCgudGlkZS1pbWFnZSkge1xuICAgIHotaW5kZXg6IC0xO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYW4gaW5kaWNhdG9yIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWluZGljYXRvci0tZG9jcykgZm9yIFRpZGVJbmRpY2F0b3JcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBJbmRpY2F0b3IgdGV4dCAqL1xuICAgIGxhYmVsPzogc3RyaW5nIHwgbnVtYmVyO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5kaWNhdG9yJyxcbiAgICAgIHByb3BzLmxhYmVsID8gJycgOiAnZG90JyxcbiAgICAgIENTUy5ESVNQTEFZLklOTElORV9CTE9DSyxcbiAgICAgIENTUy5BTElHTi5YLkNFTlRFUixcbiAgICAgIENTUy5CRy5HTE9CQUwuUFJJTUFSWS5FUlJPUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICBwcm9wcy5sYWJlbCAmJiBwcm9wcy5sYWJlbC50b1N0cmluZygpLmxlbmd0aCA+IDEgPyBbQ1NTLlBBRERJTkcuWC5IQUxGXSA6IFtdLFxuICAgICAgcHJvcHMubGFiZWxcbiAgICAgICAgPyBbQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzMsIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuSU5WRVJTRV1cbiAgICAgICAgOiBbQ1NTLkJPUkRFUi5GVUxMLk9ORV0sXG4gICAgXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbJ3RpZGUtaW5kaWNhdG9yLWxhYmVsJ11cIlxuICAgICAgdi1pZj1cInByb3BzLmxhYmVsXCJcbiAgICA+XG4gICAgICB7eyBwcm9wcy5sYWJlbCB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWluZGljYXRvcjpub3QoLmRvdCkge1xuICAgIG1pbi13aWR0aDogMXJlbTtcbiAgICBtaW4taGVpZ2h0OiAxcmVtO1xuICB9XG5cbiAgLnRpZGUtaW5kaWNhdG9yLmRvdCB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10aWRlLWdyYXktMTAwKTtcbiAgICB3aWR0aDogMTBweDtcbiAgICBoZWlnaHQ6IDEwcHg7XG4gIH1cblxuICAudGlkZS1pbmRpY2F0b3ItbGFiZWwge1xuICAgIC8qIFVzZSBib3R0b20td2VpZ2h0aW5nIHRvIG9mZnNldCB0aGUgbWF0aGVtYXRpY2FsIGNlbnRlciB0byB0aGUgb3B0aWNhbCBjZW50ZXIuICovXG4gICAgbWFyZ2luLXRvcDogLTFweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGFuIGlucHV0IHN1cHBvcnRpbmcgdGV4dCBjb21wb25lbnQuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVpbnB1dHN1cHBvcnRpbmd0ZXh0LS1kb2NzKSBmb3IgVGlkZUlucHV0U3VwcG9ydGluZ1RleHRcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBpc0Vycm9yOiBib29sZWFuO1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgfTtcbiAgZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBDU1MuRk9OVC5ST0xFLkxBQkVMXzMsXG4gICAgICBpc0Vycm9yID8gW0NTUy5GT05ULkNPTE9SLkdMT0JBTC5FUlJPUl0gOiBbQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxUXSxcbiAgICBdXCJcbiAgPlxuICAgIDxUaWRlSWNvblxuICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLlNIUklOSy5PRkZdXCJcbiAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgdi1pZj1cImlzRXJyb3JcIlxuICAgIC8+XG5cbiAgICA8ZGl2PlxuICAgICAge3sgbWVzc2FnZSB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG4iLCJpbXBvcnQgeyBmb3JtYXROdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25MZW5ndGgsIFZhbGlkYXRpb25SZXN1bHQsIFZhbGlkYXRvciB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5pbXBvcnQgdHlwZSB7IFJlZiB9IGZyb20gJ3Z1ZSc7XG5cbmV4cG9ydCBjb25zdCBlcnJvck1lc3NhZ2VEZWZhdWx0ID0gJ1BsZWFzZSBlbnRlciBhIHZhbGlkIHZhbHVlJztcblxuZXhwb3J0IGNvbnN0IFZBTElEQVRJT05fUkVTVUxUID0ge1xuICBOT19FUlJPUjoge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9LFxuICBSRVFVSVJFRDoge1xuICAgIG1lc3NhZ2U6ICdQbGVhc2UgZmlsbCBvdXQgdGhpcyBmaWVsZCcsXG4gICAgdmFsaWQ6IGZhbHNlLFxuICB9LFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IGNoZWNrRm9ybWF0ID0gKGZvcm1hdDogUmVnRXhwLCBtZXNzYWdlPzogc3RyaW5nKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCByZXN1bHQ6IFZhbGlkYXRpb25SZXN1bHQgPSBWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUjtcblxuICAgIGlmICghdmFsdWUudHJpbSgpLm1hdGNoKGZvcm1hdCkpIHtcbiAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSA/PyBlcnJvck1lc3NhZ2VEZWZhdWx0LFxuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RmllbGRMZW5ndGhJc1ZhbGlkID0gKHsgbWF4bGVuZ3RoLCBtaW5sZW5ndGgsIHJlcXVpcmVkLCB2YWx1ZSB9OiBWYWxpZGF0aW9uTGVuZ3RoKSA9PiB7XG4gIGNvbnN0IGlzRW1wdHlBbmRVbnJlcXVpcmVkID0gdmFsdWUubGVuZ3RoID09PSAwICYmICFyZXF1aXJlZDtcbiAgY29uc3QgaXNUb29Mb25nID0gbWF4bGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heGxlbmd0aDtcbiAgY29uc3QgaXNUb29TaG9ydCA9ICFpc0VtcHR5QW5kVW5yZXF1aXJlZCAmJiBtaW5sZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWlubGVuZ3RoO1xuICByZXR1cm4gIWlzVG9vU2hvcnQgJiYgIWlzVG9vTG9uZztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQgPSAoe1xuICBlcnJvckZyb21Qcm9wcyxcbiAgbWF4bGVuZ3RoLFxuICBtaW5sZW5ndGgsXG4gIHJlcXVpcmVkLFxuICB2YWxpZGF0b3JzLFxuICB2YWx1ZSxcbn06IHtcbiAgZXJyb3JGcm9tUHJvcHM6IHN0cmluZztcbiAgbWF4bGVuZ3RoPzogbnVtYmVyO1xuICBtaW5sZW5ndGg/OiBudW1iZXI7XG4gIHJlcXVpcmVkOiBib29sZWFuO1xuICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yW107XG4gIHZhbHVlOiBSZWY8c3RyaW5nPjtcbn0pOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgLy8gZXJyb3IgaW4gcHJvcHMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHZhbGlkYXRpb24gZXJyb3JcbiAgaWYgKGVycm9yRnJvbVByb3BzICE9PSAnJylcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogZXJyb3JGcm9tUHJvcHMsXG4gICAgICB2YWxpZDogZmFsc2UsXG4gICAgfTtcblxuICAvLyBjdXN0b20gdmFsaWRhdG9yIHByb3AgZXJyb3JzIGZyb20gaGF2ZSBzZWNvbmQgaGlnaGVzdCBwcmVjZWRlbmNlXG4gIGlmICh2YWxpZGF0b3JzKSB7XG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRlUHJvcGVydHkodmFsdWUudmFsdWUgPz8gJycsIHZhbGlkYXRvcnMpO1xuXG4gICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICByZXR1cm4gdmFsaWRhdGlvbjtcbiAgICB9XG4gIH1cblxuICAvLyBhbGwgb3RoZXIgcHJvcC1iYXNlZCBlcnJvcnMgY29tZSBsYXN0XG4gIGlmIChyZXF1aXJlZCAmJiB2YWx1ZS52YWx1ZT8udHJpbSgpID09PSAnJykge1xuICAgIHJldHVybiBWQUxJREFUSU9OX1JFU1VMVC5SRVFVSVJFRDtcbiAgfVxuXG4gIGlmIChtYXhsZW5ndGggfHwgbWlubGVuZ3RoKSB7XG4gICAgY29uc3QgbGVuZ3RoVmFsaWRhdGlvbiA9IHZhbGlkYXRlTGVuZ3RoKHtcbiAgICAgIG1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkLFxuICAgICAgdmFsdWU6IHZhbHVlLnZhbHVlLFxuICAgIH0pO1xuXG4gICAgaWYgKCFsZW5ndGhWYWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICByZXR1cm4gbGVuZ3RoVmFsaWRhdGlvbjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFZBTElEQVRJT05fUkVTVUxULk5PX0VSUk9SO1xufTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlTGVuZ3RoID0gKHsgbWF4bGVuZ3RoLCBtaW5sZW5ndGgsIHJlcXVpcmVkLCB2YWx1ZSB9OiBWYWxpZGF0aW9uTGVuZ3RoKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xuXG4gIHJlc3BvbnNlLnZhbGlkID0gZ2V0RmllbGRMZW5ndGhJc1ZhbGlkKHtcbiAgICBtYXhsZW5ndGgsXG4gICAgbWlubGVuZ3RoLFxuICAgIHJlcXVpcmVkLFxuICAgIHZhbHVlLFxuICB9KTtcblxuICBpZiAocmVzcG9uc2UudmFsaWQpIHJldHVybiByZXNwb25zZTtcblxuICByZXNwb25zZS5tZXNzYWdlID0gZXJyb3JNZXNzYWdlRGVmYXVsdDtcblxuICBpZiAobWF4bGVuZ3RoICYmIG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgRW50ZXIgYSB2YWx1ZSBiZXR3ZWVuICR7Zm9ybWF0TnVtYmVyKG1pbmxlbmd0aCl9IGFuZCAke2Zvcm1hdE51bWJlcihtYXhsZW5ndGgpfSBjaGFyYWN0ZXJzYDtcbiAgfSBlbHNlIGlmIChtYXhsZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYFVzZSAke2Zvcm1hdE51bWJlcihtYXhsZW5ndGgpfSBjaGFyYWN0ZXJzIG9yIGZld2VyYDtcbiAgfSBlbHNlIGlmIChtaW5sZW5ndGgpIHtcbiAgICByZXNwb25zZS5tZXNzYWdlID0gYEVudGVyIGF0IGxlYXN0ICR7Zm9ybWF0TnVtYmVyKG1pbmxlbmd0aCl9IGNoYXJhY3RlcnNgO1xuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUHJvcGVydHkodmFsdWU6IHN0cmluZywgdmFsaWRhdG9yczogKCh2YWx1ZTogc3RyaW5nKSA9PiBWYWxpZGF0aW9uUmVzdWx0KVtdKTogVmFsaWRhdGlvblJlc3VsdCB7XG4gIGZvciAoY29uc3QgdmFsaWRhdG9yIG9mIHZhbGlkYXRvcnMpIHtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0gdmFsaWRhdG9yKHZhbHVlKTtcbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIHJldHVybiB2YWxpZGF0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZTogJycsXG4gICAgdmFsaWQ6IHRydWUsXG4gIH07XG59XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhbiBpbnB1dCBjaGVja2JveCBjb21wb25lbnQuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVpbnB1dGNoZWNrYm94LS1kb2NzKSBmb3IgVGlkZUlucHV0Q2hlY2tib3hcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoLCB3YXRjaEVmZmVjdCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUlucHV0U3VwcG9ydGluZ1RleHQgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJbnB1dFN1cHBvcnRpbmdUZXh0LnZ1ZSc7XG4gIGltcG9ydCB7IHVzZUZvcm1Db250ZXh0IH0gZnJvbSAnQC9jb21wb3NhYmxlcy91c2VUaWRlRm9ybSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBmb3JtYXROdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuICBpbXBvcnQgeyBWQUxJREFUSU9OX1JFU1VMVCB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG4gIGltcG9ydCB0eXBlIHsgVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJ0AvdHlwZXMvVmFsaWRhdGlvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIENoZWNrYm94IHN0YXRlIGlzIGludGVyYWN0YWJsZSAqL1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBPdmVycmlkZXMgdGhlIGRlZmF1bHQgZXJyb3IgbWVzc2FnZSBhbmQgdmFsaWQgc3RhdGUgKi9cbiAgICBlcnJvcj86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgQ2hlY2tib3ggaXMgaW5kZXRlcm1pbmF0ZSAqL1xuICAgIGluZGV0ZXJtaW5hdGU/OiBib29sZWFuO1xuXG4gICAgLyoqIFVuaXF1ZSBJRCBhdHRyaWJ1dGUgKHRvIGJpbmQgQ2hlY2tib3ggbGFiZWwgdG8gaW5wdXQpICovXG4gICAgaW5wdXRJZD86IHN0cmluZztcblxuICAgIC8qKiBMYWJlbCBjb250ZW50ICovXG4gICAgbGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBOYW1lIGF0dHJpYnV0ZSAqL1xuICAgIG5hbWU/OiBzdHJpbmc7XG5cbiAgICAvKiogUGFyZW50aGV0aWNhbCByZXNwb25zZSBjb3VudCAqL1xuICAgIG51bWJlcj86IG51bWJlcjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgaW5wdXQgaXMgcmVxdWlyZWQgKi9cbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6ICcnLFxuICAgIGluZGV0ZXJtaW5hdGU6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBudW1iZXI6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAndmFsaWQnLCB2YWxpZDogYm9vbGVhbik6IHZvaWQ7XG4gIH07XG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBmb3JtQ29udGV4dCA9IHVzZUZvcm1Db250ZXh0KCk7XG5cbiAgY29uc3QgaXNWYWxpZGF0aW5nID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgZXJyb3JSZWYgPSByZWY8VmFsaWRhdGlvblJlc3VsdD4oVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1IpO1xuXG4gIGNvbnN0IGZvcm1hdHRlZExhYmVsID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkID8gYCR7cHJvcHMubGFiZWx9ICpgIDogcHJvcHMubGFiZWwpKTtcbiAgY29uc3QgaXNDaGVja2VkID0gY29tcHV0ZWQoKCkgPT4gbW9kZWxWYWx1ZS52YWx1ZSB8fCBwcm9wcy5pbmRldGVybWluYXRlKTtcbiAgY29uc3Qgc2hvd0Vycm9yID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChoYXNFcnJvckZyb21Qcm9wLnZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICBpZiAoIWlzVmFsaWRhdGluZy52YWx1ZSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiAhZXJyb3JSZWYudmFsdWUudmFsaWQ7XG4gIH0pO1xuICBjb25zdCBoYXNFcnJvckZyb21Qcm9wID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuZXJyb3IgIT09ICcnKTtcbiAgY29uc3Qgc3VwcG9ydGluZ1RleHRNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gc2hvd0Vycm9yLnZhbHVlICYmIGVycm9yUmVmLnZhbHVlLm1lc3NhZ2UpO1xuXG4gIGNvbnN0IGdldENoZWNrYm94VmFsaWRhdGlvblJlc3VsdCA9ICgpOiBWYWxpZGF0aW9uUmVzdWx0ID0+IHtcbiAgICBpZiAocHJvcHMuZXJyb3IgIT09ICcnKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWVzc2FnZTogcHJvcHMuZXJyb3IsXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgIH07XG4gICAgaWYgKCFwcm9wcy5yZXF1aXJlZCB8fCBpc0NoZWNrZWQudmFsdWUpIHJldHVybiBWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUjtcbiAgICByZXR1cm4gVkFMSURBVElPTl9SRVNVTFQuUkVRVUlSRUQ7XG4gIH07XG5cbiAgd2F0Y2hFZmZlY3QoKCkgPT4ge1xuICAgIGVycm9yUmVmLnZhbHVlID0gZ2V0Q2hlY2tib3hWYWxpZGF0aW9uUmVzdWx0KCk7XG4gIH0pO1xuXG4gIHdhdGNoKFxuICAgIG1vZGVsVmFsdWUsXG4gICAgKCkgPT4ge1xuICAgICAgaWYgKG1vZGVsVmFsdWUudmFsdWUpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gZm9ybUNvbnRleHQ/LmZvcmNlU2hvd0Vycm9ycy52YWx1ZSxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICBlcnJvclJlZixcbiAgICAoKSA9PiB7XG4gICAgICBlbWl0KCd2YWxpZCcsIGVycm9yUmVmLnZhbHVlLnZhbGlkKTtcbiAgICB9LFxuICAgIHsgZGVlcDogdHJ1ZSwgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWlucHV0LWNoZWNrYm94JywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5RVUFSVEVSXVwiPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgICBDU1MuVVNFUl9TRUxFQ1QuTk9ORSxcbiAgICAgICAgc2hvd0Vycm9yID8gQ1NTLkZPTlQuQ09MT1IuR0xPQkFMLkVSUk9SIDogQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBkaXNhYmxlZCA/IFtDU1MuT1BBQ0lUWS5ESVNBQkxFRCwgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRF0gOiBbQ1NTLkNVUlNPUi5QT0lOVEVSXSxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxpbnB1dFxuICAgICAgICA6Y2hlY2tlZD1cImlzQ2hlY2tlZFwiXG4gICAgICAgIDpjbGFzcz1cIlsndGlkZS1zY3JlZW4tcmVhZGVyLW9ubHknXVwiXG4gICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgcmVmPVwiaW5wdXRcIlxuICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgICAgLz5cblxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tJyxcbiAgICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkZMRVguU0hSSU5LLk9GRixcbiAgICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgICAgaXNDaGVja2VkXG4gICAgICAgICAgICA/IFtzaG93RXJyb3IgPyBDU1MuQkcuR0xPQkFMLlBSSU1BUlkuRVJST1IgOiBbQ1NTLkJHLlNFQ09OREFSWSwgQ1NTLkJPUkRFUi5DT0xPUi5ISUdIXV1cbiAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgIHNob3dFcnJvclxuICAgICAgICAgICAgICAgICAgPyBbQ1NTLkJPUkRFUi5DT0xPUi5HTE9CQUwuRVJST1IsIENTUy5CRy5HTE9CQUwuU1VSRkFDRS5FUlJPUl1cbiAgICAgICAgICAgICAgICAgIDogW0NTUy5CT1JERVIuQ09MT1IuREVGQVVMVCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF0sXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgIF1cIlxuICAgICAgPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuQ09MT1IuU0VDT05EQVJZXVwiXG4gICAgICAgICAgOmljb249XCJpbmRldGVybWluYXRlID8gSUNPTi5SRU1PVkUgOiBJQ09OLkNIRUNLXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAgIHYtaWY9XCJpc0NoZWNrZWRcIlxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5BWElTMS5CRVRXRUVOLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5HUk9XLk9OLCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIlxuICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgPlxuICAgICAgICA8c3Bhbj57eyBmb3JtYXR0ZWRMYWJlbCB9fTwvc3Bhbj5cblxuICAgICAgICA8c3BhblxuICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgICB2LWlmPVwibnVtYmVyXCJcbiAgICAgICAgPlxuICAgICAgICAgICh7eyBmb3JtYXROdW1iZXIobnVtYmVyKSB9fSlcbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9sYWJlbD5cblxuICAgIDxUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dFxuICAgICAgOm1lc3NhZ2U9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgICAgaXMtZXJyb3JcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3gge1xuICAgIGFsaWduLXNlbGY6IHN0YXJ0O1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tIHtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gIH1cblxuICBsYWJlbDpoYXMoaW5wdXQ6Zm9jdXMtdmlzaWJsZSkge1xuICAgIG91dGxpbmU6IGF1dG87XG4gICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYFRpZGVJbnB1dENoZWNrYm94LnZ1ZWAgaW1wb3J0ZWQgZnJvbSAndGlkZS1kZXNpZ24tc3lzdGVtJyBucG0gcGFja2FnZSBpbnN0ZWFkLlxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBjaGVja2VkPzogYm9vbGVhbjtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgaW5kZXRlcm1pbmF0ZT86IGJvb2xlYW47XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIG51bWJlcj86IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBpbmRldGVybWluYXRlOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgbnVtYmVyOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGlzQ2hlY2tlZCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmNoZWNrZWQgfHwgcHJvcHMuaW5kZXRlcm1pbmF0ZSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtY2hlY2tib3gnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgIGRpc2FibGVkID8gWydkaXNhYmxlZCcsIENTUy5QT0lOVEVSX0VWRU5UUy5PRkZdIDogQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgIF1cIlxuICA+XG4gICAgPGlucHV0XG4gICAgICA6Y2hlY2tlZD1cImlzQ2hlY2tlZFwiXG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuTk9ORV1cIlxuICAgICAgOmRpc2FibGVkPVwicHJvcHMuZGlzYWJsZWRcIlxuICAgICAgOm5hbWU9XCJwcm9wcy5uYW1lXCJcbiAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgIEBjbGljay5wcmV2ZW50XG4gICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgLz5cblxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuRkxFWC5TSFJJTksuT0ZGLFxuICAgICAgICBDU1MuQk9SREVSLkZVTEwuT05FLFxuICAgICAgICBpc0NoZWNrZWQgPyBbQ1NTLkJPUkRFUi5DT0xPUi5ISUdILCBDU1MuQkcuU0VDT05EQVJZXSA6IFtDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFQsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5RVUFSVEVSLFxuICAgICAgICBpc0NoZWNrZWQgJiYgJ2NoZWNrZWQnLFxuICAgICAgICBkaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNFQ09OREFSWV1cIlxuICAgICAgICA6aWNvbj1cInByb3BzLmluZGV0ZXJtaW5hdGUgPyBJQ09OLlJFTU9WRSA6IElDT04uQ0hFQ0tcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaXNDaGVja2VkXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gICAgICAgIENTUy5GTEVYLkdST1cuT04sXG4gICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICBkaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgIEBjbGljay5wcmV2ZW50XG4gICAgICB2LWlmPVwibGFiZWxcIlxuICAgID5cbiAgICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwicHJvcHMubnVtYmVyXCJcbiAgICAgID5cbiAgICAgICAgKHt7IGZvcm1hdE51bWJlcihwcm9wcy5udW1iZXIpIH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3guZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtY2hlY2tib3gtY3VzdG9tIHtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhbiBpbnB1dCByYWRpbyBjb21wb25lbnQuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVpbnB1dHJhZGlvLS1kb2NzKSBmb3IgVGlkZUlucHV0UmFkaW9cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGlucHV0IGlzIGludGVyYWN0YWJsZSAqL1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBVbmlxdWUgSUQgYXR0cmlidXRlICh0byBiaW5kIGlucHV0IGxhYmVsIHRvIGlucHV0KSAqL1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG5cbiAgICAvKiogTGFiZWwgY29udGVudCAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogTmFtZSBhdHRyaWJ1dGUgKi9cbiAgICBuYW1lOiBzdHJpbmc7XG5cbiAgICAvKiogUGFyZW50aGV0aWNhbCByZXNwb25zZSBjb3VudCAqL1xuICAgIG51bWJlcj86IG51bWJlcjtcblxuICAgIC8qKiBWYWx1ZSBhdHRyaWJ1dGUgKi9cbiAgICB2YWx1ZTogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG51bWJlcjogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8c3RyaW5nPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGlzQ2hlY2tlZCA9IGNvbXB1dGVkKCgpID0+IG1vZGVsVmFsdWUudmFsdWUgPT09IHByb3BzLnZhbHVlKTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxsYWJlbFxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXJhZGlvJyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgQ1NTLkdBUC5IQUxGLFxuICAgICAgQ1NTLlVTRVJfU0VMRUNULk5PTkUsXG4gICAgICBwcm9wcy5kaXNhYmxlZCA/IFtDU1MuT1BBQ0lUWS5ESVNBQkxFRCwgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRF0gOiBbQ1NTLkNVUlNPUi5QT0lOVEVSXSxcbiAgICBdXCJcbiAgICA6Zm9yPVwicHJvcHMuaW5wdXRJZFwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1zY3JlZW4tcmVhZGVyLW9ubHknXVwiXG4gICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgOnZhbHVlPVwidmFsdWVcIlxuICAgICAgOmlkPVwicHJvcHMuaW5wdXRJZFwiXG4gICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgIC8+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXJhZGlvLWN1c3RvbScsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkFYSVMxLkNFTlRFUixcbiAgICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgICAgQ1NTLkJPUkRFUi5GVUxMLk9ORSxcbiAgICAgICAgaXNDaGVja2VkID8gW0NTUy5CT1JERVIuQ09MT1IuSElHSF0gOiBbQ1NTLkJPUkRFUi5DT0xPUi5ERUZBVUxUXSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCxcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkNVUlNPUi5QT0lOVEVSLFxuICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT04sXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIlsndGlkZS1pbnB1dC1yYWRpby1jaGVjaycsIENTUy5CT1JERVIuUkFESVVTLkZVTEwsIGlzQ2hlY2tlZCAmJiBDU1MuQkcuU0VDT05EQVJZXVwiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5HUk9XLk9OLCBDU1MuQVhJUzEuQkVUV0VFTiwgQ1NTLkZPTlQuUk9MRS5CT0RZXzFdXCI+XG4gICAgICA8c3Bhbj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgdi1pZj1cInByb3BzLm51bWJlclwiXG4gICAgICA+XG4gICAgICAgICh7eyBmb3JtYXROdW1iZXIocHJvcHMubnVtYmVyKSB9fSlcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9sYWJlbD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LXJhZGlvLWN1c3RvbSB7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtcmFkaW8tY2hlY2sge1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgfVxuXG4gIGxhYmVsOmhhcyhpbnB1dDpmb2N1cy12aXNpYmxlKSB7XG4gICAgb3V0bGluZTogYXV0bztcbiAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgVGlkZUlucHV0UmFkaW8udnVlYCBpbXBvcnRlZCBmcm9tICd0aWRlLWRlc2lnbi1zeXN0ZW0nIG5wbSBwYWNrYWdlIGluc3RlYWQuXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGZvcm1hdE51bWJlciB9IGZyb20gJ0AvdXRpbGl0aWVzL2Zvcm1hdCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBjaGVja2VkPzogYm9vbGVhbjtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgaW5wdXRJZD86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIG51bWJlcj86IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgbnVtYmVyOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IGNoZWNrZWQgPSByZWYocHJvcHMuY2hlY2tlZCk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuY2hlY2tlZCxcbiAgICAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlIHx8IG5ld1ZhbHVlICE9PSBjaGVja2VkLnZhbHVlKSB7XG4gICAgICAgIGNoZWNrZWQudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtcmFkaW8nLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgcHJvcHMuZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICBdXCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgOmNoZWNrZWQ9XCJjaGVja2VkXCJcbiAgICAgIDpjbGFzcz1cIltDU1MuRElTUExBWS5OT05FXVwiXG4gICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgIG5hbWU9XCJcIlxuICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgIHZhbHVlPVwiXCJcbiAgICAvPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1yYWRpby1jdXN0b20nLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMS5DRU5URVIsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgIGNoZWNrZWQgPyBDU1MuQk9SREVSLkNPTE9SLkhJR0ggOiBDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFQsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkZVTEwsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIENTUy5DVVJTT1IuUE9JTlRFUixcbiAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICAgICAgICBjaGVja2VkICYmICdjaGVja2VkJyxcbiAgICAgIF1cIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiWyd0aWRlLWlucHV0LXJhZGlvLWNoZWNrJywgQ1NTLkJPUkRFUi5SQURJVVMuRlVMTCwgcHJvcHMuY2hlY2tlZCAmJiBDU1MuQkcuU0VDT05EQVJZXVwiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgQ1NTLkZMRVguR1JPVy5PTixcbiAgICAgICAgQ1NTLkFYSVMxLkJFVFdFRU4sXG4gICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICBDU1MuQ1VSU09SLlBPSU5URVIsXG4gICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PTixcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cInByb3BzLmlucHV0SWRcIlxuICAgID5cbiAgICAgIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICB2LWlmPVwicHJvcHMubnVtYmVyXCJcbiAgICAgID5cbiAgICAgICAgKHt7IGZvcm1hdE51bWJlcihwcm9wcy5udW1iZXIpIH19KVxuICAgICAgPC9zcGFuPlxuICAgIDwvbGFiZWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtaW5wdXQtcmFkaW8uZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtcmFkaW8tY3VzdG9tIHtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gIH1cblxuICAudGlkZS1pbnB1dC1yYWRpby1jaGVjayB7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICB9XG48L3N0eWxlPlxuIiwiaW1wb3J0IHsgZm9ybWF0TnVtYmVyLCBmb3JtYXRQaG9uZSwgZm9ybWF0UHJpY2UgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG5leHBvcnQgdHlwZSBGb3JtYXR0ZWQgPSB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIHwgbnVtYmVyO1xufTtcblxuZXhwb3J0IGNvbnN0IEZPUk1BVCA9IHtcbiAgTlVNQkVSOiBmb3JtYXROdW1iZXIsXG4gIFBIT05FOiBmb3JtYXRQaG9uZSxcbiAgUFJJQ0U6IGZvcm1hdFByaWNlLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IEZPUk1BVF9SRUdFWCA9IHtcbiAgYWxwaGE6IC9eW2EtekEtWl0rJC9nLFxuICBhbHBoYU51bWJlck9yRW1wdHk6IC9eJHxeW2EtejAtOV0rJC9pLFxuICBhbHBoYVNwYWNlOiAvXlthLXpBLVogXSskL2csXG4gIGVtYWlsOlxuICAgIC9eKChbXjw+KClbXFxdXFxcXC4sOzpcXHNAXCJdKyhcXC5bXjw+KClbXFxdXFxcXC4sOzpcXHNAXCJdKykqKXwoXCIuK1wiKSlAKD8hKD86W2EtekEtWjAtOS1dK1xcLikqKD88dGxkPlthLXpBLVpdezIsfSlcXC5cXGs8dGxkPiQpKChcXFtbMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFxdKXwoKFthLXpBLVowLTktXStcXC4pK1thLXpBLVpdezIsfSkpJC8sXG4gIG51bWJlckZvcm1hdHRlZDogL14kfCg/PS4pXlxcJD8oKFsxLTldWzAtOV17MCwyfSgsWzAtOV17M30pKil8MCk/KFxcLlswLTldezEsMn0pPyQvLFxuICBwaG9uZTogL14oPzpcXGR7M30tXFxkezN9LVxcZHs0fXxcXGR7MX0tXFxkezN9LVxcZHszfS1cXGR7NH0pPyQvLFxuICBwcmljZTogLyg/PS4pXlxcJD8oKFsxLTldWzAtOV17MCwyfSgsWzAtOV17M30pKil8MCk/KFxcLlswLTldezEsMn0pPyQvLFxuICB6aXA6IC9eXFxkezV9JC8sXG59O1xuIiwiaW1wb3J0IHsgRk9STUFUX1JFR0VYIH0gZnJvbSAnQC90eXBlcy9Gb3JtYXR0ZWQnO1xuaW1wb3J0IHsgY2hlY2tGb3JtYXQgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uJztcblxuZXhwb3J0IGNvbnN0IFZBTElEQVRPUiA9IHtcbiAgQUxQSEFfTlVNQkVSX0VNUFRZOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVguYWxwaGFOdW1iZXJPckVtcHR5KSxcbiAgQUxQSEFfU1BBQ0U6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5hbHBoYVNwYWNlKSxcbiAgRU1BSUw6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5lbWFpbCwgJ0VudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcyAoZS5nLiBuYW1lQGV4YW1wbGUuY29tKScpLFxuICBOVU1CRVI6IGNoZWNrRm9ybWF0KEZPUk1BVF9SRUdFWC5udW1iZXJGb3JtYXR0ZWQsICdFbnRlciBhIHZhbGlkIG51bWJlcicpLFxuICBQSE9ORTogY2hlY2tGb3JtYXQoRk9STUFUX1JFR0VYLnBob25lLCAnRW50ZXIgYSB2YWxpZCBwaG9uZSBudW1iZXInKSxcbiAgWklQOiBjaGVja0Zvcm1hdChGT1JNQVRfUkVHRVguemlwLCAnRW50ZXIgYSB2YWxpZCBaaXAgY29kZScpLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkVycm9yID0gc3RyaW5nIHwgYm9vbGVhbjtcbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25SZXN1bHQgPSB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdmFsaWQ6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uTGVuZ3RoID0ge1xuICBtYXhsZW5ndGg/OiBudW1iZXI7XG4gIG1pbmxlbmd0aD86IG51bWJlcjtcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIHZhbHVlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0b3IgPSAodmFsdWU6IHN0cmluZykgPT4gVmFsaWRhdGlvblJlc3VsdDtcblxuZXhwb3J0IGNvbnN0IEVSUk9SX0RJU1BMQVkgPSB7XG4gIEVBR0VSOiAnZWFnZXInLFxuICBMQVpZOiAnbGF6eScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBFcnJvckRpc3BsYXkgPSAodHlwZW9mIEVSUk9SX0RJU1BMQVkpW2tleW9mIHR5cGVvZiBFUlJPUl9ESVNQTEFZXTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgc2VsZWN0IGlucHV0IGludGVuZGVkIHRvIGJlIHVzZWQgaW4gZm9ybXMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVpbnB1dHNlbGVjdC0tZG9jcykgZm9yIFRpZGVJbnB1dFNlbGVjdFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgdXNlSWQsIHdhdGNoLCB3YXRjaEVmZmVjdCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUlucHV0U3VwcG9ydGluZ1RleHQgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJbnB1dFN1cHBvcnRpbmdUZXh0LnZ1ZSc7XG4gIGltcG9ydCB7IHVzZUZvcm1Db250ZXh0IH0gZnJvbSAnQC9jb21wb3NhYmxlcy91c2VUaWRlRm9ybSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBFUlJPUl9ESVNQTEFZIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcbiAgaW1wb3J0IHsgVkFMSURBVElPTl9SRVNVTFQsIGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG4gIGltcG9ydCB0eXBlIHsgU2VsZWN0T3B0aW9uLCBTZWxlY3RPcHRpb25Hcm91cCB9IGZyb20gJ0AvdHlwZXMvU2VsZWN0JztcbiAgaW1wb3J0IHR5cGUgeyBFcnJvckRpc3BsYXksIFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBTZWxlY3QgaXMgaW50ZXJhY3RhYmxlICovXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gICAgLyoqIE92ZXJyaWRlcyB0aGUgZGVmYXVsdCBlcnJvciBtZXNzYWdlIGFuZCB2YWxpZCBzdGF0ZSAqL1xuICAgIGVycm9yPzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBlcnJvcnMgZGlzcGxheSBwcmlvciB0byBibHVyICovXG4gICAgZXJyb3JEaXNwbGF5PzogRXJyb3JEaXNwbGF5O1xuXG4gICAgLyoqIExhYmVsIGNvbnRlbnQgKi9cbiAgICBsYWJlbD86IHN0cmluZztcblxuICAgIC8qKiBOYW1lIGF0dHJpYnV0ZSAqL1xuICAgIG5hbWU/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBncm91cGVkIHZhbHVlcyBmb3VuZCBpbnNpZGUgU2VsZWN0ICovXG4gICAgb3B0Z3JvdXBzPzogKFNlbGVjdE9wdGlvbiB8IFNlbGVjdE9wdGlvbkdyb3VwKVtdIHwgcmVhZG9ubHkgKFNlbGVjdE9wdGlvbiB8IFNlbGVjdE9wdGlvbkdyb3VwKVtdO1xuXG4gICAgLyoqIERldGVybWluZXMgdW5ncm91cGVkIHZhbHVlcyBmb3VuZCBpbnNpZGUgU2VsZWN0ICovXG4gICAgb3B0aW9ucz86IFNlbGVjdE9wdGlvbltdIHwgcmVhZG9ubHkgU2VsZWN0T3B0aW9uW107XG5cbiAgICAvKiogUHJlZml4IGNvbnRlbnQgKi9cbiAgICBwcmVmaXg/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIFNlbGVjdCBpcyByZXF1aXJlZCAqL1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBTdWZmaXggY29udGVudCAqL1xuICAgIHN1ZmZpeD86IHN0cmluZztcblxuICAgIC8qKiBFeHBsYWluZXIgdGV4dCBiZW5lYXRoIGlucHV0ICovXG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6ICcnLFxuICAgIGVycm9yRGlzcGxheTogRVJST1JfRElTUExBWS5MQVpZLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBvcHRncm91cHM6IHVuZGVmaW5lZCxcbiAgICBvcHRpb25zOiB1bmRlZmluZWQsXG4gICAgcHJlZml4OiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1ZmZpeDogdW5kZWZpbmVkLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGV2ZW50OiAndmFsaWQnLCBpc1ZhbGlkOiBib29sZWFuKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgbW9kZWxWYWx1ZSA9IGRlZmluZU1vZGVsPHN0cmluZz4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBmb3JtQ29udGV4dCA9IHVzZUZvcm1Db250ZXh0KCk7XG5cbiAgY29uc3QgZXJyb3JSZWYgPSByZWY8VmFsaWRhdGlvblJlc3VsdD4oVkFMSURBVElPTl9SRVNVTFQuTk9fRVJST1IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZjxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IGlucHV0SWQgPSB1c2VJZCgpO1xuICBjb25zdCBpc1ZhbGlkYXRpbmcgPSByZWY8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBzZWxlY3RFbGVtZW50ID0gcmVmPEhUTUxTZWxlY3RFbGVtZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3QgZm9ybWF0dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiAocHJvcHMucmVxdWlyZWQgPyBgJHtwcm9wcy5sYWJlbH0gKmAgOiBwcm9wcy5sYWJlbCkpO1xuICBjb25zdCBzaG93RXJyb3IgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKGhhc0Vycm9yRnJvbVByb3AudmFsdWUpIHJldHVybiB0cnVlO1xuICAgIGlmICghaXNWYWxpZGF0aW5nLnZhbHVlKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuICFlcnJvclJlZi52YWx1ZS52YWxpZDtcbiAgfSk7XG4gIGNvbnN0IGhhc0Vycm9yRnJvbVByb3AgPSBjb21wdXRlZCgoKSA9PiBwcm9wcy5lcnJvciAhPT0gJycpO1xuICBjb25zdCBoYXNNaW5pbGFiZWwgPSBjb21wdXRlZCgoKSA9PiBoYXNGb2N1cy52YWx1ZSB8fCAhaXNFbXB0eS52YWx1ZSk7XG4gIGNvbnN0IGlzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiBtb2RlbFZhbHVlLnZhbHVlID09IG51bGwgfHwgbW9kZWxWYWx1ZS52YWx1ZSA9PT0gJycpO1xuICBjb25zdCBzdXBwb3J0aW5nVGV4dE1lc3NhZ2UgPSBjb21wdXRlZCgoKSA9PiAoc2hvd0Vycm9yLnZhbHVlICYmIGVycm9yUmVmLnZhbHVlLm1lc3NhZ2UpIHx8IHByb3BzLnN1cHBvcnRpbmdUZXh0KTtcblxuICBjb25zdCBleHBhbmRPcHRpb25zID0gKCkgPT4ge1xuICAgIGNvbnN0IGV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoJ21vdXNlZG93bicpO1xuICAgIHNlbGVjdEVsZW1lbnQ/LnZhbHVlPy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gICAgaWYgKHByb3BzLmVycm9yRGlzcGxheSA9PT0gRVJST1JfRElTUExBWS5FQUdFUikgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICAgIGlmIChwcm9wcy5lcnJvckRpc3BsYXkgPT09IEVSUk9SX0RJU1BMQVkuTEFaWSkgaXNWYWxpZGF0aW5nLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICB3YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgZXJyb3JSZWYudmFsdWUgPSBnZXRGaWVsZFZhbGlkYXRpb25SZXN1bHQoe1xuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsdWU6IG1vZGVsVmFsdWUsXG4gICAgfSk7XG4gIH0pO1xuXG4gIHdhdGNoKFxuICAgICgpID0+IGZvcm1Db250ZXh0Py5mb3JjZVNob3dFcnJvcnMudmFsdWUsXG4gICAgKG5ld1ZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gICAgfSxcbiAgICB7IGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgZXJyb3JSZWYsXG4gICAgKCkgPT4ge1xuICAgICAgZW1pdCgndmFsaWQnLCBlcnJvclJlZi52YWx1ZS52YWxpZCk7XG4gICAgfSxcbiAgICB7IGRlZXA6IHRydWUsIGltbWVkaWF0ZTogdHJ1ZSB9XG4gICk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtc2VsZWN0JyxcbiAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJyxcbiAgICAgIHNob3dFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC1ib3JkZXInLFxuICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgZGlzYWJsZWQgPyBDU1MuQ1VSU09SLk5PVF9BTExPV0VEIDogJycsXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICBdXCJcbiAgICAgIEBjbGljaz1cImV4cGFuZE9wdGlvbnNcIlxuICAgID5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuTEVGVCxcbiAgICAgICAgICAgIENTUy5NQVJHSU4uVE9QLkhBTEYsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLkxFRlQuT05FLFxuICAgICAgICAgICAgIXNob3dFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpmb3I9XCJpbnB1dElkXCJcbiAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuQVhJUzIuQ0VOVEVSLCBDU1MuV0lEVEguRlVMTCwgQ1NTLkdBUC5IQUxGXVwiPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5CT0RZXzEsIENTUy5NQVJHSU4uTEVGVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsIGxhYmVsICYmIENTUy5NQVJHSU4uVE9QLk9ORV1cIlxuICAgICAgICAgICAgdi1pZj1cInByZWZpeFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgcHJlZml4IH19XG4gICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgICBDU1MuUEFERElORy5CT1RUT00uSEFMRixcbiAgICAgICAgICAgICAgQ1NTLlBBRERJTkcuVE9QLk9ORSxcbiAgICAgICAgICAgICAgQ1NTLlBBRERJTkcuUklHSFQuVFdPLFxuICAgICAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5CT0RZXzEsXG4gICAgICAgICAgICAgIGRpc2FibGVkICYmIENTUy5DVVJTT1IuTk9UX0FMTE9XRUQsXG4gICAgICAgICAgICAgIHByZWZpeCA/IENTUy5QQURESU5HLkxFRlQuWkVSTyA6IENTUy5QQURESU5HLkxFRlQuT05FLFxuICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgcmVmPVwic2VsZWN0RWxlbWVudFwiXG4gICAgICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgICAgIHYtbW9kZWw9XCJtb2RlbFZhbHVlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCJvcHRncm91cCBpbiBvcHRncm91cHNcIj5cbiAgICAgICAgICAgICAgPG9wdGdyb3VwXG4gICAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgICAgOmtleT1cImBncm91cC0keyhvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkubGFiZWx9YFwiXG4gICAgICAgICAgICAgICAgOmxhYmVsPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgdi1pZj1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkub3B0aW9uc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgICAgIDprZXk9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgOnZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIHYtZm9yPVwib3B0aW9uIGluIChvcHRncm91cCBhcyBTZWxlY3RPcHRpb25Hcm91cCkub3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgIDwvb3B0Z3JvdXA+XG5cbiAgICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuV0lEVEguRlVMTCwgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF1cIlxuICAgICAgICAgICAgICAgIDprZXk9XCJgb3B0aW9uLSR7KG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWV9YFwiXG4gICAgICAgICAgICAgICAgOnNlbGVjdGVkPVwibW9kZWxWYWx1ZSA9PT0gKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbikudmFsdWUgPyB0cnVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgICA6dmFsdWU9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgdi1lbHNlXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uKS5sYWJlbCB9fVxuICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgIDprZXk9XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICA6c2VsZWN0ZWQ9XCJtb2RlbFZhbHVlID09PSBvcHRpb24udmFsdWUgPyB0cnVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgOnZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgdi1mb3I9XCJvcHRpb24gaW4gb3B0aW9uc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICBDU1MuUE9TSVRJT04uQUJTT0xVVEUsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlJJR0hULFxuICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgIENTUy5NQVJHSU4uUklHSFQuVFdPLFxuICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgbGFiZWwgJiYgQ1NTLk1BUkdJTi5UT1AuT05FLFxuICAgICAgICBdXCJcbiAgICAgICAgdi1pZj1cInN1ZmZpeFwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIDpjbGFzcz1cIkNTUy5QQURESU5HLlJJR0hULk9ORVwiPlxuICAgICAgICAgIHt7IHN1ZmZpeCB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuUE9TSVRJT04uQUJTT0xVVEUsIENTUy5QT1NJVElPTklORy5SSUdIVCwgQ1NTLk1BUkdJTi5SSUdIVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PRkZdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVYUEFORF9NT1JFXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8VGlkZUlucHV0U3VwcG9ydGluZ1RleHRcbiAgICAgIDppcy1lcnJvcj1cInNob3dFcnJvclwiXG4gICAgICA6bWVzc2FnZT1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgICB2LWlmPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHNlbGVjdCB7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuXG4gIGxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICBsYWJlbDpub3QoLm1pbmlsYWJlbCkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIGNhbGMoOSAvIDE2ICogMXJlbSkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciBvcHRpb24ge1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLW9uLXN1cmZhY2UpO1xuICB9XG5cbiAgc2VsZWN0IHtcbiAgICBwYWRkaW5nLXRvcDogMjdweDtcbiAgfVxuPC9zdHlsZT5cbiIsImltcG9ydCB7IHByaWNlVG9OdW1iZXIgfSBmcm9tICdAL3V0aWxpdGllcy9mb3JtYXQnO1xuXG5pbXBvcnQgdHlwZSB7IFN0cmluZ0lucHV0IH0gZnJvbSAnQC90eXBlcy9Gb3JtRGVwcmVjYXRlZCc7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdE9wdGlvbiB9IGZyb20gJ0AvdHlwZXMvU2VsZWN0JztcbmltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0aW9uTGVuZ3RoLCBWYWxpZGF0aW9uUmVzdWx0LCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb25EZXByZWNhdGVkJztcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG50eXBlIFJhbmdlRGF0YSA9IHtcbiAgbWluOiBudW1iZXIgfCBudWxsO1xuICBtYXg6IG51bWJlciB8IG51bGw7XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBlcnJvck1lc3NhZ2VEZWZhdWx0ID0gJ1BsZWFzZSBlbnRlciBhIHZhbGlkIHZhbHVlLic7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IG5vRXJyb3IgPSB7XG4gIG1lc3NhZ2U6ICcnLFxuICB2YWxpZDogdHJ1ZSxcbn0gYXMgUmVhZG9ubHk8VmFsaWRhdGlvblJlc3VsdD47XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGNoZWNrRm9ybWF0ID0gKGZvcm1hdDogUmVnRXhwKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCByZXN1bHQgPSBub0Vycm9yO1xuXG4gICAgaWYgKCF2YWx1ZS50cmltKCkubWF0Y2goZm9ybWF0KSkge1xuICAgICAgcmVzdWx0ID0ge1xuICAgICAgICBtZXNzYWdlOiBlcnJvck1lc3NhZ2VEZWZhdWx0LFxuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFcnJvck1lc3NhZ2UgPSAoZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvciwgZXJyb3JGcm9tUmVmOiBWYWxpZGF0aW9uRXJyb3IpID0+IHtcbiAgLy8gZXJyb3IgaW4gcHJvcHMgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHZhbGlkYXRpb24gZXJyb3JcbiAgaWYgKHR5cGVvZiBlcnJvckZyb21Qcm9wcyA9PT0gJ3N0cmluZycgJiYgZXJyb3JGcm9tUHJvcHMubGVuZ3RoID4gMCkgcmV0dXJuIGVycm9yRnJvbVByb3BzO1xuXG4gIHJldHVybiB0eXBlb2YgZXJyb3JGcm9tUmVmID09PSAnc3RyaW5nJyAmJiBlcnJvckZyb21SZWYubGVuZ3RoID4gMCA/IGVycm9yRnJvbVJlZiA6IGVycm9yTWVzc2FnZURlZmF1bHQ7XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRGaWVsZEhhc0Vycm9yID0gKGVycm9yRnJvbVByb3BzOiBWYWxpZGF0aW9uRXJyb3IsIGVycm9yRnJvbVJlZjogVmFsaWRhdGlvbkVycm9yKSA9PlxuICBlcnJvckZyb21Qcm9wcyAhPT0gZmFsc2UgfHwgZXJyb3JGcm9tUmVmICE9PSBmYWxzZTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZ2V0RmllbGRMZW5ndGhJc1ZhbGlkID0gKHsgbWF4bGVuZ3RoLCBtaW5sZW5ndGgsIHJlcXVpcmVkLCB2YWx1ZSB9OiBWYWxpZGF0aW9uTGVuZ3RoKSA9PiB7XG4gIGNvbnN0IGlzRW1wdHlBbmRVbnJlcXVpcmVkID0gdmFsdWUubGVuZ3RoID09PSAwICYmICFyZXF1aXJlZDtcbiAgY29uc3QgaXNUb29Mb25nID0gbWF4bGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IG1heGxlbmd0aDtcbiAgY29uc3QgaXNUb29TaG9ydCA9ICFpc0VtcHR5QW5kVW5yZXF1aXJlZCAmJiBtaW5sZW5ndGggJiYgdmFsdWUubGVuZ3RoIDwgbWlubGVuZ3RoO1xuXG4gIHJldHVybiAhaXNUb29TaG9ydCAmJiAhaXNUb29Mb25nO1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgZ2V0TWF4UmFuZ2VJc1ZhbGlkID0gKHsgbWluIH06IFBpY2s8UmFuZ2VEYXRhLCAnbWluJz4sIHR5cGU/OiAncHJpY2UnKSA9PiB7XG4gIHJldHVybiAodmFsdWU6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQgPT4ge1xuICAgIGxldCBuZXdNYXg6IG51bWJlciB8IG51bGwgPSB0eXBlID09PSAncHJpY2UnID8gcHJpY2VUb051bWJlcih2YWx1ZSkgOiBOdW1iZXIodmFsdWUpO1xuICAgIG5ld01heCA9ICFpc05hTihuZXdNYXgpID8gbmV3TWF4IDogbnVsbDtcbiAgICBpZiAobWluICYmIG5ld01heCkge1xuICAgICAgaWYgKG5ld01heCA+PSBtaW4pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWVzc2FnZTogYE11c3QgYmUgZ3JlYXRlciB0aGFuIG1pbmAsXG4gICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbm9FcnJvcjtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRNaW5SYW5nZUlzVmFsaWQgPSAoeyBtYXggfTogUGljazxSYW5nZURhdGEsICdtYXgnPiwgdHlwZT86ICdwcmljZScpID0+IHtcbiAgcmV0dXJuICh2YWx1ZTogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gICAgbGV0IG5ld01pbjogbnVtYmVyIHwgbnVsbCA9IHR5cGUgPT09ICdwcmljZScgPyBwcmljZVRvTnVtYmVyKHZhbHVlKSA6IE51bWJlcih2YWx1ZSk7XG4gICAgbmV3TWluID0gIWlzTmFOKG5ld01pbikgPyBuZXdNaW4gOiBudWxsO1xuICAgIGlmIChtYXggJiYgbmV3TWluKSB7XG4gICAgICBpZiAobmV3TWluIDw9IG1heCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiBgTXVzdCBiZSBsZXNzIHRoYW4gbWF4YCxcbiAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBub0Vycm9yO1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFNlbGVjdE9wdGlvbnNGcm9tU3RyaW5ncyA9IChzdHJpbmdzOiBzdHJpbmdbXSkgPT5cbiAgc3RyaW5ncy5tYXAoXG4gICAgKG9wdGlvbikgPT5cbiAgICAgICh7XG4gICAgICAgIGxhYmVsOiBvcHRpb24sXG4gICAgICAgIHZhbHVlOiBvcHRpb24sXG4gICAgICB9IGFzIFNlbGVjdE9wdGlvbilcbiAgKTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgaGFuZGxlRmllbGRWYWxpZGF0aW9uID0gKHtcbiAgZXJyb3IsXG4gIGVycm9yRnJvbVByb3BzLFxuICBtYXhsZW5ndGgsXG4gIG1pbmxlbmd0aCxcbiAgcmVxdWlyZWQgPSBmYWxzZSxcbiAgdmFsaWRhdG9ycyxcbiAgdmFsdWUsXG59OiB7XG4gIGVycm9yOiBSZWY8VmFsaWRhdGlvbkVycm9yPjtcbiAgZXJyb3JGcm9tUHJvcHM6IFZhbGlkYXRpb25FcnJvcjtcbiAgbWF4bGVuZ3RoPzogbnVtYmVyO1xuICBtaW5sZW5ndGg/OiBudW1iZXI7XG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcbiAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICB2YWx1ZT86IFJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+O1xufSkgPT4ge1xuICAvLyBlcnJvciBpbiBwcm9wcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdmFsaWRhdGlvbiBlcnJvclxuXG4gIGVycm9yLnZhbHVlID0gZXJyb3JGcm9tUHJvcHMgPyBlcnJvckZyb21Qcm9wcyA6IGZhbHNlO1xuXG4gIGlmICghZXJyb3IudmFsdWUgJiYgdmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0ZVByb3BlcnR5KHZhbHVlPy52YWx1ZSB8fCAnJywgdmFsaWRhdG9ycyk7XG5cbiAgICBpZiAoIXZhbGlkYXRpb24udmFsaWQpIHtcbiAgICAgIGVycm9yLnZhbHVlID0gdmFsaWRhdGlvbi5tZXNzYWdlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghZXJyb3IudmFsdWUgJiYgKG1heGxlbmd0aCB8fCBtaW5sZW5ndGgpKSB7XG4gICAgY29uc3QgbGVuZ3RoVmFsaWRhdGlvbiA9IHZhbGlkYXRlTGVuZ3RoKHtcbiAgICAgIG1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkLFxuICAgICAgdmFsdWU6IHZhbHVlPy52YWx1ZSB8fCAnJyxcbiAgICB9KTtcblxuICAgIGlmICghbGVuZ3RoVmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgZXJyb3IudmFsdWUgPSBsZW5ndGhWYWxpZGF0aW9uLm1lc3NhZ2U7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUZpZWxkc0Zyb21SZWZzKGZpZWxkczogeyBba2V5OiBzdHJpbmddOiBSZWY8U3RyaW5nSW5wdXQgfCBudWxsPiB9KSB7XG4gIGxldCB2YWxpZCA9IHRydWU7XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gZmllbGRzKSB7XG4gICAgaWYgKGZpZWxkc1trZXldLnZhbHVlPy5yZXF1aXJlZCkge1xuICAgICAgY29uc3QgdmFsdWUgPSBmaWVsZHNba2V5XS52YWx1ZT8udmFsdWU7XG4gICAgICB2YWxpZCA9IHZhbGlkICYmICEhdmFsdWUgJiYgdmFsdWUudHJpbSgpICE9PSAnJztcbiAgICB9XG5cbiAgICBjb25zdCBlcnJvciA9IGZpZWxkc1trZXldLnZhbHVlPy5lcnJvcjtcbiAgICB2YWxpZCA9IHZhbGlkICYmICFlcnJvcjtcbiAgfVxuXG4gIHJldHVybiB2YWxpZDtcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgY29uc3QgdmFsaWRhdGVMZW5ndGggPSAoe1xuICBtYXhsZW5ndGgsXG4gIG1pbmxlbmd0aCxcbiAgcmVxdWlyZWQgPSBmYWxzZSxcbiAgdmFsdWUsXG59OiBWYWxpZGF0aW9uTGVuZ3RoKTogVmFsaWRhdGlvblJlc3VsdCA9PiB7XG4gIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIHZhbGlkOiB0cnVlLFxuICB9O1xuXG4gIHJlc3BvbnNlLnZhbGlkID0gZ2V0RmllbGRMZW5ndGhJc1ZhbGlkKHtcbiAgICBtYXhsZW5ndGgsXG4gICAgbWlubGVuZ3RoLFxuICAgIHJlcXVpcmVkLFxuICAgIHZhbHVlLFxuICB9KTtcblxuICBpZiAocmVzcG9uc2UudmFsaWQpIHJldHVybiByZXNwb25zZTtcblxuICByZXNwb25zZS5tZXNzYWdlID0gZXJyb3JNZXNzYWdlRGVmYXVsdDtcblxuICBpZiAobWF4bGVuZ3RoICYmIG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgYmV0d2VlbiAke21pbmxlbmd0aH0gYW5kICR7bWF4bGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9IGVsc2UgaWYgKG1heGxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgbm8gbW9yZSB0aGFuICR7bWF4bGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9IGVsc2UgaWYgKG1pbmxlbmd0aCkge1xuICAgIHJlc3BvbnNlLm1lc3NhZ2UgPSBgUGxlYXNlIGVudGVyIGEgdmFsdWUgbm8gbGVzcyB0aGFuICR7bWlubGVuZ3RofSBjaGFyYWN0ZXJzIGluIGxlbmd0aC5gO1xuICB9XG5cbiAgcmV0dXJuIHJlc3BvbnNlO1xufTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQcm9wZXJ0eSh2YWx1ZTogc3RyaW5nLCB2YWxpZGF0b3JzOiAoKHZhbHVlOiBzdHJpbmcpID0+IFZhbGlkYXRpb25SZXN1bHQpW10pOiBWYWxpZGF0aW9uUmVzdWx0IHtcbiAgZm9yIChjb25zdCB2YWxpZGF0b3Igb2YgdmFsaWRhdG9ycykge1xuICAgIGNvbnN0IHZhbGlkYXRpb24gPSB2YWxpZGF0b3IodmFsdWUpO1xuICAgIGlmICghdmFsaWRhdGlvbi52YWxpZCkge1xuICAgICAgcmV0dXJuIHZhbGlkYXRpb247XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICB2YWxpZDogdHJ1ZSxcbiAgfTtcbn1cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYFRpZGVJbnB1dFNlbGVjdC52dWVgIGltcG9ydGVkIGZyb20gJ3RpZGUtZGVzaWduLXN5c3RlbScgbnBtIHBhY2thZ2UgaW5zdGVhZC5cbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIGdldEZpZWxkSGFzRXJyb3IgfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uLWRlcHJlY2F0ZWQnO1xuXG4gIGltcG9ydCB0eXBlIHsgU2VsZWN0RmllbGQgfSBmcm9tICdAL3R5cGVzL0ZpZWxkRGVwcmVjYXRlZCc7XG4gIGltcG9ydCB0eXBlIHsgU2VsZWN0T3B0aW9uLCBTZWxlY3RPcHRpb25Hcm91cCB9IGZyb20gJ0AvdHlwZXMvU2VsZWN0JztcblxuICBleHBvcnQgaW50ZXJmYWNlIFByb3BzIGV4dGVuZHMgU2VsZWN0RmllbGQge1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgc3VwcG9ydGluZ1RleHQ/OiBzdHJpbmc7XG4gIH1cblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogZmFsc2UsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgY29uc3QgZXJyb3IgPSByZWYocHJvcHMuZXJyb3IpO1xuICBjb25zdCBoYXNGb2N1cyA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlucHV0ID0gcmVmPEhUTUxTZWxlY3RFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHJlcXVpcmVkID0gcmVmKHByb3BzLnJlcXVpcmVkKTtcbiAgY29uc3QgdmFsdWUgPSByZWY8c3RyaW5nIHwgdW5kZWZpbmVkPihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmICF2YWx1ZS52YWx1ZSkgfHwgZ2V0RmllbGRIYXNFcnJvcihlcnJvci52YWx1ZSwgcHJvcHMuZXJyb3IpKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09IHVuZGVmaW5lZCk7XG5cbiAgY29uc3QgZXhwYW5kT3B0aW9ucyA9ICgpID0+IHtcbiAgICBjb25zdCBldmVudCA9IG5ldyBNb3VzZUV2ZW50KCdtb3VzZWRvd24nKTtcbiAgICBpbnB1dD8udmFsdWU/LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7IGVycm9yLCB2YWx1ZSB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1pbnB1dC1zZWxlY3QnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgaGFzRXJyb3IgJiYgJ2Vycm9yJyxcbiAgICBdXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtYm9yZGVyJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5CT1JERVIuUkFESVVTLkhBTEYsXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIHByb3BzLmRpc2FibGVkID8gQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCA6ICcnLFxuICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgXVwiXG4gICAgICBAY2xpY2s9XCJleHBhbmRPcHRpb25zXCJcbiAgICA+XG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gWydtaW5pbGFiZWwnLCBDU1MuRk9OVC5ST0xFLkxBQkVMXzNdIDogQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLkxFRlQsXG4gICAgICAgICAgICBDU1MuTUFSR0lOLlRPUC5IQUxGLFxuICAgICAgICAgICAgQ1NTLk1BUkdJTi5MRUZULk9ORSxcbiAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpmb3I9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgQ1NTLlBBRERJTkcuQk9UVE9NLkhBTEYsXG4gICAgICAgICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgICAgZGlzYWJsZWQgJiYgQ1NTLkNVUlNPUi5OT1RfQUxMT1dFRCxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIDpkaXNhYmxlZD1cImRpc2FibGVkXCJcbiAgICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICAgIHJlZj1cImlucHV0XCJcbiAgICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgICAgQGZvY3VzPVwiaGFuZGxlRm9jdXNcIlxuICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICA6aWQ9XCJwcm9wcy5pbnB1dElkXCJcbiAgICAgICAgICB2LW1vZGVsPVwidmFsdWVcIlxuICAgICAgICA+XG4gICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwib3B0Z3JvdXAgaW4gcHJvcHMub3B0Z3JvdXBzXCI+XG4gICAgICAgICAgICA8b3B0Z3JvdXBcbiAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgIDprZXk9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLmxhYmVsXCJcbiAgICAgICAgICAgICAgOmxhYmVsPVwiKG9wdGdyb3VwIGFzIFNlbGVjdE9wdGlvbkdyb3VwKS5sYWJlbFwiXG4gICAgICAgICAgICAgIHYtaWY9XCIob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLm9wdGlvbnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICAgICAgOmtleT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgOnZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiAob3B0Z3JvdXAgYXMgU2VsZWN0T3B0aW9uR3JvdXApLm9wdGlvbnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9vcHRncm91cD5cblxuICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5CRy5TVVJGQUNFLkRFRkFVTFRdXCJcbiAgICAgICAgICAgICAgOmtleT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlXCJcbiAgICAgICAgICAgICAgOnNlbGVjdGVkPVwidmFsdWUgPT09IChvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlID8gdHJ1ZSA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgIDp2YWx1ZT1cIihvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLnZhbHVlXCJcbiAgICAgICAgICAgICAgdi1lbHNlXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IChvcHRncm91cCBhcyBTZWxlY3RPcHRpb24pLmxhYmVsIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBDU1MuQkcuU1VSRkFDRS5ERUZBVUxUXVwiXG4gICAgICAgICAgICA6a2V5PVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgIDpzZWxlY3RlZD1cInZhbHVlID09PSBvcHRpb24udmFsdWUgPyB0cnVlIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgIDp2YWx1ZT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICB2LWZvcj1cIm9wdGlvbiBpbiBvcHRpb25zXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPFRpZGVJY29uXG4gICAgICAgIDpjbGFzcz1cIltDU1MuUE9TSVRJT04uQUJTT0xVVEUsIENTUy5QT1NJVElPTklORy5SSUdIVCwgQ1NTLk1BUkdJTi5SSUdIVC5PTkUsIENTUy5QT0lOVEVSX0VWRU5UUy5PRkZdXCJcbiAgICAgICAgOmljb249XCJJQ09OLkVYUEFORF9NT1JFXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSXVwiXG4gICAgICB2LWlmPVwicHJvcHMuc3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6Y2xhc3M9XCJbXVwiXG4gICAgICAgIDppY29uPVwiSUNPTi5FUlJPUlwiXG4gICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIHYtaWY9XCJoYXNFcnJvclwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkxBQkVMXzNdXCI+XG4gICAgICAgIHt7IGhhc0Vycm9yID8gZXJyb3JNZXNzYWdlIDogcHJvcHMuc3VwcG9ydGluZ1RleHQgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIHNlbGVjdCB7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgfVxuXG4gIGxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICBsYWJlbDpub3QoLm1pbmlsYWJlbCkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIGNhbGMoOSAvIDE2ICogMXJlbSkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiB2YXIoLS10aWRlLWRpc2FibGVkKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtYm9yZGVyIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC1ib3JkZXIge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtc2VsZWN0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXNlbGVjdC5lcnJvciBvcHRpb24ge1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLW9uLXN1cmZhY2UpO1xuICB9XG5cbiAgc2VsZWN0IHtcbiAgICBwYWRkaW5nLXRvcDogMjdweDtcbiAgfVxuPC9zdHlsZT5cbiIsImV4cG9ydCBjb25zdCBURVhUX0lOUFVUX1RZUEUgPSB7XG4gIERBVEU6ICdkYXRlJyxcbiAgREFURVRJTUVfTE9DQUw6ICdkYXRldGltZS1sb2NhbCcsXG4gIEVNQUlMOiAnZW1haWwnLFxuICBNT05USDogJ21vbnRoJyxcbiAgTlVNQkVSOiAnbnVtYmVyJyxcbiAgUEFTU1dPUkQ6ICdwYXNzd29yZCcsXG4gIFNFQVJDSDogJ3NlYXJjaCcsXG4gIFRFTDogJ3RlbCcsXG4gIFRFWFQ6ICd0ZXh0JyxcbiAgVElNRTogJ3RpbWUnLFxuICBVUkw6ICd1cmwnLFxuICBXRUVLOiAnd2VlaycsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBUZXh0SW5wdXRUeXBlID0gKHR5cGVvZiBURVhUX0lOUFVUX1RZUEUpW2tleW9mIHR5cGVvZiBURVhUX0lOUFVUX1RZUEVdO1xuXG5leHBvcnQgY29uc3QgSU5QVVRfTU9ERSA9IHtcbiAgREVDSU1BTDogJ2RlY2ltYWwnLFxuICBFTUFJTDogJ2VtYWlsJyxcbiAgTlVNRVJJQzogJ251bWVyaWMnLFxuICBTRUFSQ0g6ICdzZWFyY2gnLFxuICBURUw6ICd0ZWwnLFxuICBURVhUOiAndGV4dCcsXG4gIFVSTDogJ3VybCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBJbnB1dE1vZGUgPSAodHlwZW9mIElOUFVUX01PREUpW2tleW9mIHR5cGVvZiBJTlBVVF9NT0RFXTtcbiIsImltcG9ydCB7IElOUFVUX01PREUsIFRFWFRfSU5QVVRfVFlQRSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcblxuaW1wb3J0IHR5cGUgeyBJbnB1dE1vZGUsIFRleHRJbnB1dFR5cGUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG5cbmV4cG9ydCBjb25zdCBnZXRUZXh0SW5wdXRNb2RlID0gKHR5cGU6IFRleHRJbnB1dFR5cGUsIGlucHV0bW9kZT86IElucHV0TW9kZSk6IElucHV0TW9kZSB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChpbnB1dG1vZGUpIHJldHVybiBpbnB1dG1vZGU7XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBURVhUX0lOUFVUX1RZUEUuVEVMOlxuICAgICAgcmV0dXJuIElOUFVUX01PREUuVEVMO1xuICAgIGNhc2UgVEVYVF9JTlBVVF9UWVBFLlNFQVJDSDpcbiAgICAgIHJldHVybiBJTlBVVF9NT0RFLlNFQVJDSDtcbiAgICBjYXNlIFRFWFRfSU5QVVRfVFlQRS5OVU1CRVI6XG4gICAgICByZXR1cm4gSU5QVVRfTU9ERS5OVU1FUklDO1xuICAgIGNhc2UgVEVYVF9JTlBVVF9UWVBFLkVNQUlMOlxuICAgICAgcmV0dXJuIElOUFVUX01PREUuRU1BSUw7XG4gICAgY2FzZSBURVhUX0lOUFVUX1RZUEUuVVJMOlxuICAgICAgcmV0dXJuIElOUFVUX01PREUuVVJMO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIHRleHQgaW5wdXQgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiBmb3Jtcy5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZWlucHV0dGV4dC0tZG9jcykgZm9yIFRpZGVJbnB1dFRleHRcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgc2V0dXAgbGFuZz1cInRzXCI+XG4gIGltcG9ydCB7IGNvbXB1dGVkLCByZWYsIHdhdGNoLCB3YXRjaEVmZmVjdCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUlucHV0U3VwcG9ydGluZ1RleHQgZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJbnB1dFN1cHBvcnRpbmdUZXh0LnZ1ZSc7XG4gIGltcG9ydCB7IHVzZUZvcm1Db250ZXh0IH0gZnJvbSAnQC9jb21wb3NhYmxlcy91c2VUaWRlRm9ybSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBURVhUX0lOUFVUX1RZUEUgfSBmcm9tICdAL3R5cGVzL1RleHRJbnB1dCc7XG4gIGltcG9ydCB7IEVSUk9SX0RJU1BMQVkgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuICBpbXBvcnQgeyBnZXRUZXh0SW5wdXRNb2RlIH0gZnJvbSAnQC91dGlsaXRpZXMvZm9ybXMnO1xuICBpbXBvcnQgeyBWQUxJREFUSU9OX1JFU1VMVCwgZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnQC91dGlsaXRpZXMvdmFsaWRhdGlvbic7XG5cbiAgaW1wb3J0IHR5cGUgeyBGb3JtVmFsdWVUcmFuc2Zvcm1lciB9IGZyb20gJ0AvdHlwZXMvRm9ybSc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB0eXBlIHsgSW5wdXRNb2RlLCBUZXh0SW5wdXRUeXBlIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgdHlwZSB7IEVycm9yRGlzcGxheSwgVmFsaWRhdGlvblJlc3VsdCwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgYnJvd3NlciBhdHRlbXB0cyB0byBhdXRvY29tcGxldGUgKi9cbiAgICBhdXRvY29tcGxldGU/OiBib29sZWFuO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBpbnB1dCBpcyBpbnRlcmFjdGFibGUgKi9cbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgICAvKiogT3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGVycm9yIG1lc3NhZ2UgYW5kIHZhbGlkIHN0YXRlICovXG4gICAgZXJyb3I/OiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGVycm9ycyBkaXNwbGF5IHByaW9yIHRvIGJsdXIgKi9cbiAgICBlcnJvckRpc3BsYXk/OiBFcnJvckRpc3BsYXk7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgY2xlYXIvcmVzZXQgYnV0dG9uIGlzIHNob3duIGZvciB0aGUgaW5wdXQgKi9cbiAgICBoYXNDbGVhcj86IGJvb2xlYW47XG5cbiAgICAvKiogSWNvbiBhdCBsZWZ0IG9mIGlucHV0IHZhbHVlICovXG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuXG4gICAgLyoqIFVuaXF1ZSBJRCBhdHRyaWJ1dGUgKHRvIGJpbmQgaW5wdXQgbGFiZWwgdG8gaW5wdXQpICovXG4gICAgaW5wdXRJZD86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHRoZSBpbnB1dCBlZGl0aW5nIGZlYXR1cmVzIG9mZmVyZWQgYnkgdGhlIGJyb3dzZXIgKi9cbiAgICBpbnB1dG1vZGU/OiBJbnB1dE1vZGU7XG5cbiAgICAvKiogTGFiZWwgY29udGVudCAqL1xuICAgIGxhYmVsPzogc3RyaW5nO1xuXG4gICAgLyoqIEFwcGxpZXMgYSBtYXhpbXVtIGNoYXJhY3RlciBjb3VudCB0byB0aGUgaW5wdXQgKi9cbiAgICBtYXhsZW5ndGg/OiBudW1iZXI7XG5cbiAgICAvKiogQXBwbGllcyBhIG1pbmltdW0gY2hhcmFjdGVyIGNvdW50IHRvIHRoZSBpbnB1dCAqL1xuICAgIG1pbmxlbmd0aD86IG51bWJlcjtcblxuICAgIC8qKiBOYW1lIGF0dHJpYnV0ZSAqL1xuICAgIG5hbWU/OiBzdHJpbmc7XG5cbiAgICAvKiogSW5wdXQgcHJlZml4ICovXG4gICAgcHJlZml4Pzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBpbnB1dCBpcyByZXF1aXJlZCAqL1xuICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcblxuICAgIC8qKiBJbnB1dCBzdWZmaXggKGkuZS4gdW5pdHMpICovXG4gICAgc3VmZml4Pzogc3RyaW5nO1xuXG4gICAgLyoqIEV4cGxhaW5lciB0ZXh0IGJlbmVhdGggaW5wdXQgKi9cbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHRleHQgZm9ybWF0dGluZyBhcHBsaWVkIHRvIGlucHV0IHZhbHVlIHVwb24gaW52b2tpbmcgcmVsZXZhbnQgbGlzdGVuZXIgZXZlbnQocykgKi9cbiAgICB0cmFuc2Zvcm1WYWx1ZT86IEZvcm1WYWx1ZVRyYW5zZm9ybWVyO1xuXG4gICAgLyoqIERldGVybWluZXMgdGhlIHR5cGUocykgb2YgdmFsdWVzIGV4cGVjdGVkIGJ5IHRoZSBpbnB1dCAqL1xuICAgIHR5cGU/OiBUZXh0SW5wdXRUeXBlO1xuXG4gICAgLyoqIERldGVybWluZXMgbWV0aG9kKHMpIHVzZWQgdG8gY2hlY2sgZm9yIHZhbGlkIGlucHV0IHZhbHVlIHVwb24gaW52b2tpbmcgcmVsZXZhbnQgbGlzdGVuZXIgZXZlbnQocykgKi9cbiAgICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yW107XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBhdXRvY29tcGxldGU6IGZhbHNlLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBlcnJvcjogJycsXG4gICAgZXJyb3JEaXNwbGF5OiBFUlJPUl9ESVNQTEFZLkxBWlksXG4gICAgaGFzQ2xlYXI6IGZhbHNlLFxuICAgIGljb25MZWFkaW5nOiB1bmRlZmluZWQsXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGlucHV0bW9kZTogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbWF4bGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbWlubGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIHByZWZpeDogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBzdWZmaXg6IHVuZGVmaW5lZCxcbiAgICBzdXBwb3J0aW5nVGV4dDogdW5kZWZpbmVkLFxuICAgIHRyYW5zZm9ybVZhbHVlOiB1bmRlZmluZWQsXG4gICAgdHlwZTogVEVYVF9JTlBVVF9UWVBFLlRFWFQsXG4gICAgdmFsaWRhdG9yczogdW5kZWZpbmVkLFxuICB9KTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ3ZhbGlkJywgaXNWYWxpZDogYm9vbGVhbik6IHZvaWQ7XG4gIH07XG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8c3RyaW5nPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGZvcm1Db250ZXh0ID0gdXNlRm9ybUNvbnRleHQoKTtcblxuICBjb25zdCBlcnJvclJlZiA9IHJlZjxWYWxpZGF0aW9uUmVzdWx0PihWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgaW5wdXRFbGVtZW50ID0gcmVmPEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgaXNWYWxpZGF0aW5nID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3Qgc2hvd1Bhc3N3b3JkID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcblxuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiBwcm9wcy5sYWJlbCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IHNob3dFcnJvciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoaGFzRXJyb3JGcm9tUHJvcC52YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgaWYgKCFpc1ZhbGlkYXRpbmcudmFsdWUpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gIWVycm9yUmVmLnZhbHVlLnZhbGlkO1xuICB9KTtcbiAgY29uc3QgaGFzRXJyb3JGcm9tUHJvcCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmVycm9yICE9PSAnJyk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaW5wdXRNb2RlQXR0cmlidXRlID0gY29tcHV0ZWQ8SW5wdXRNb2RlIHwgdW5kZWZpbmVkPigoKSA9PiBnZXRUZXh0SW5wdXRNb2RlKHByb3BzLnR5cGUsIHByb3BzLmlucHV0bW9kZSkpO1xuICBjb25zdCBpbnB1dFR5cGUgPSBjb21wdXRlZCgoKSA9PlxuICAgIHByb3BzLnR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRCAmJiBzaG93UGFzc3dvcmQudmFsdWUgPT09IHRydWUgPyBURVhUX0lOUFVUX1RZUEUuVEVYVCA6IHByb3BzLnR5cGVcbiAgKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IG1vZGVsVmFsdWUudmFsdWUgPT0gbnVsbCB8fCBtb2RlbFZhbHVlLnZhbHVlID09PSAnJyk7XG4gIGNvbnN0IHNob3VsZFNob3dDbGVhckJ1dHRvbiA9IGNvbXB1dGVkKFxuICAgICgpID0+IHByb3BzLmhhc0NsZWFyICYmIG1vZGVsVmFsdWUudmFsdWUgJiYgcHJvcHMudHlwZSAhPT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEXG4gICk7XG4gIGNvbnN0IHNob3VsZFNob3dQYXNzd29yZEJ1dHRvbiA9IGNvbXB1dGVkKCgpID0+IHByb3BzLnR5cGUgPT09IFRFWFRfSU5QVVRfVFlQRS5QQVNTV09SRCk7XG4gIGNvbnN0IHN1cHBvcnRpbmdUZXh0TWVzc2FnZSA9IGNvbXB1dGVkKCgpID0+IChzaG93RXJyb3IudmFsdWUgJiYgZXJyb3JSZWYudmFsdWUubWVzc2FnZSkgfHwgcHJvcHMuc3VwcG9ydGluZ1RleHQpO1xuXG4gIGNvbnN0IGhhbmRsZUNsZWFyID0gKCkgPT4ge1xuICAgIG1vZGVsVmFsdWUudmFsdWUgPSAnJztcbiAgICBpbnB1dEVsZW1lbnQudmFsdWU/LmZvY3VzKCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICAgIGlmIChwcm9wcy5lcnJvckRpc3BsYXkgPT09IEVSUk9SX0RJU1BMQVkuRUFHRVIpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcbiAgICBpZiAocHJvcHMuZXJyb3JEaXNwbGF5ID09PSBFUlJPUl9ESVNQTEFZLkxBWlkpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRmllbGRDbGljayA9ICgpID0+IHtcbiAgICBpbnB1dEVsZW1lbnQudmFsdWU/LmZvY3VzKCk7XG4gIH07XG5cbiAgY29uc3QgcHJldmVudElucHV0Rm9jdXNMb3NzT25Nb3VzZWRvd24gPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIGlmICghaGFzRm9jdXMudmFsdWUpIHJldHVybjtcbiAgICBpZiAoZS50YXJnZXQgIT09IGlucHV0RWxlbWVudC52YWx1ZSkgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICB9O1xuXG4gIHdhdGNoRWZmZWN0KCgpID0+IHtcbiAgICBlcnJvclJlZi52YWx1ZSA9IGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCh7XG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsaWRhdG9yczogcHJvcHMudmFsaWRhdG9ycyxcbiAgICAgIHZhbHVlOiBtb2RlbFZhbHVlLFxuICAgIH0pO1xuICB9KTtcblxuICB3YXRjaChcbiAgICBbbW9kZWxWYWx1ZSwgKCkgPT4gcHJvcHMudHJhbnNmb3JtVmFsdWVdLFxuICAgICgpID0+IHtcbiAgICAgIGlmICghcHJvcHMudHJhbnNmb3JtVmFsdWUpIHJldHVybjtcblxuICAgICAgY29uc3QgZGlnaXRzID0gbW9kZWxWYWx1ZS52YWx1ZT8ubWF0Y2goL1xcZC9nKT8uam9pbignJykgfHwgdW5kZWZpbmVkO1xuICAgICAgbW9kZWxWYWx1ZS52YWx1ZSA9IGRpZ2l0cyA/IHByb3BzLnRyYW5zZm9ybVZhbHVlKGRpZ2l0cykgOiAnJztcbiAgICB9LFxuICAgIHsgaW1tZWRpYXRlOiB0cnVlIH1cbiAgKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBmb3JtQ29udGV4dD8uZm9yY2VTaG93RXJyb3JzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgIGVycm9yUmVmLFxuICAgICgpID0+IHtcbiAgICAgIGVtaXQoJ3ZhbGlkJywgZXJyb3JSZWYudmFsdWUudmFsaWQpO1xuICAgIH0sXG4gICAgeyBkZWVwOiB0cnVlLCBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLWlucHV0LXRleHQnLFxuICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICBDU1MuR0FQLlFVQVJURVIsXG4gICAgICBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLFxuICAgICAgc2hvd0Vycm9yICYmICdlcnJvcicsXG4gICAgXVwiXG4gID5cbiAgICA8bGFiZWxcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1maWVsZCcsXG4gICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICAgIHNob3VsZFNob3dDbGVhckJ1dHRvbiA/IFtDU1MuUEFERElORy5SSUdIVC5IQUxGLCBDU1MuUEFERElORy5MRUZULk9ORV0gOiBbQ1NTLlBBRERJTkcuWC5PTkVdLFxuICAgICAgICBkaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJpbnB1dElkXCJcbiAgICAgIEBjbGljaz1cImhhbmRsZUZpZWxkQ2xpY2tcIlxuICAgICAgQG1vdXNlZG93bj1cInByZXZlbnRJbnB1dEZvY3VzTG9zc09uTW91c2Vkb3duXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICA6aWNvbj1cImljb25MZWFkaW5nXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImljb25MZWFkaW5nXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LXByZWZpeCcsXG4gICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICAgICFzaG93RXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gJycgOiAnb2Zmc2V0JyxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICB2LWlmPVwicHJlZml4XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByZWZpeCB9fVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuV0lEVEguRlVMTF1cIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtbGFiZWwnLFxuICAgICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgICAgICFzaG93RXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgICBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICAgICAgICAgIENTUy5QT0lOVEVSX0VWRU5UUy5PRkYsXG4gICAgICAgICAgICBdXCJcbiAgICAgICAgICAgIHYtaWY9XCJsYWJlbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgOmF1dG9jb21wbGV0ZT1cImF1dG9jb21wbGV0ZSA/ICdvbicgOiAnb2ZmJ1wiXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLldJRFRILkZVTEwsIENTUy5GT05ULlJPTEUuQk9EWV8xLCBkaXNhYmxlZCAmJiBDU1MuQ1VSU09SLk5PVF9BTExPV0VEXVwiXG4gICAgICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICA6aW5wdXRtb2RlPVwiaW5wdXRNb2RlQXR0cmlidXRlXCJcbiAgICAgICAgICAgIDptYXhsZW5ndGg9XCJtYXhsZW5ndGhcIlxuICAgICAgICAgICAgOm1pbmxlbmd0aD1cIm1pbmxlbmd0aFwiXG4gICAgICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgcmVmPVwiaW5wdXRFbGVtZW50XCJcbiAgICAgICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgIDp0eXBlPVwiaW5wdXRUeXBlXCJcbiAgICAgICAgICAgIEBmb2N1cz1cImhhbmRsZUZvY3VzXCJcbiAgICAgICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgICAgIDppZD1cImlucHV0SWRcIlxuICAgICAgICAgICAgdi1tb2RlbD1cIm1vZGVsVmFsdWVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LXN1ZmZpeCcsXG4gICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICAgICFzaG93RXJyb3IgJiYgQ1NTLkZPTlQuQ09MT1IuU1VSRkFDRS5WQVJJQU5ULFxuICAgICAgICAgICAgaGFzTWluaWxhYmVsID8gJycgOiAnb2Zmc2V0JyxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICB2LWlmPVwic3VmZml4XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHN1ZmZpeCB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIEBjbGljaz1cImhhbmRsZUNsZWFyXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHYtaWY9XCJzaG91bGRTaG93Q2xlYXJCdXR0b25cIlxuICAgICAgPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5GVUxMLkhBTEZdXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIC8+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBAY2xpY2s9XCJzaG93UGFzc3dvcmQgPSAhc2hvd1Bhc3N3b3JkXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHYtaWY9XCJzaG91bGRTaG93UGFzc3dvcmRCdXR0b25cIlxuICAgICAgPlxuICAgICAgICA8VGlkZUljb25cbiAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5GVUxMLkhBTEZdXCJcbiAgICAgICAgICA6aWNvbj1cIklDT04uVklTSUJJTElUWVwiXG4gICAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgLz5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8VGlkZUlucHV0U3VwcG9ydGluZ1RleHRcbiAgICAgIDppcy1lcnJvcj1cInNob3dFcnJvclwiXG4gICAgICA6bWVzc2FnZT1cInN1cHBvcnRpbmdUZXh0TWVzc2FnZVwiXG4gICAgICB2LWlmPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLWlucHV0LXRleHQtbGFiZWwge1xuICAgIGhlaWdodDogMS4xODc1cmVtO1xuICAgIHRyYW5zaXRpb246IGZvbnQtc2l6ZSB2YXIoLS10aWRlLWFuaW1hdGUpLCB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtbGFiZWw6bm90KC5taW5pbGFiZWwpLFxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeDpub3QoLm9mZnNldCksXG4gIC50aWRlLWlucHV0LXRleHQtc3VmZml4Om5vdCgub2Zmc2V0KSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgY2FsYyg5IC8gMTYgKiAxcmVtKSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LXByZWZpeCxcbiAgLnRpZGUtaW5wdXQtdGV4dC1zdWZmaXgge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogdmFyKC0tdGlkZS1kaXNhYmxlZCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yIHtcbiAgICBjb2xvcjogdmFyKC0tdGlkZS1lcnJvci1wcmltYXJ5KTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZXJyb3IgLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0OmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0LWZpZWxkIHtcbiAgICAtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMik7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1ib3JkZXItaGlnaCk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0IGlucHV0IHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBUaWRlSW5wdXRUZXh0LnZ1ZWAgaW1wb3J0ZWQgZnJvbSAndGlkZS1kZXNpZ24tc3lzdGVtJyBucG0gcGFja2FnZSBpbnN0ZWFkLlxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUljb24udnVlJztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFNJWkUgfSBmcm9tICdAL3R5cGVzL1NpemUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRFWFRfSU5QVVRfVFlQRSB9IGZyb20gJ0AvdHlwZXMvVGV4dElucHV0JztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yLCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uLWRlcHJlY2F0ZWQnO1xuXG4gIGltcG9ydCB0eXBlIHsgRm9ybVZhbHVlVHJhbnNmb3JtZXIgfSBmcm9tICdAL3R5cGVzL0Zvcm1EZXByZWNhdGVkJztcbiAgaW1wb3J0IHR5cGUgeyBJY29uIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHR5cGUgeyBUZXh0SW5wdXRUeXBlIH0gZnJvbSAnQC90eXBlcy9UZXh0SW5wdXQnO1xuICBpbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25FcnJvciwgVmFsaWRhdG9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uRGVwcmVjYXRlZCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBhdXRvY29tcGxldGU/OiBib29sZWFuO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBlcnJvcj86IFZhbGlkYXRpb25FcnJvcjtcbiAgICBoYXNDbGVhcj86IGJvb2xlYW47XG4gICAgaWNvbkxlYWRpbmc/OiBJY29uO1xuICAgIGlucHV0SWQ/OiBzdHJpbmc7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgbWF4bGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIG1pbmxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHByZWZpeD86IHN0cmluZztcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgc3VmZml4Pzogc3RyaW5nO1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuICAgIHRyYW5zZm9ybVZhbHVlPzogRm9ybVZhbHVlVHJhbnNmb3JtZXI7XG4gICAgdHlwZT86IFRleHRJbnB1dFR5cGU7XG4gICAgdmFsaWRhdG9ycz86IFZhbGlkYXRvcltdO1xuICAgIHZhbHVlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgYXV0b2NvbXBsZXRlOiBmYWxzZSxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZXJyb3I6IGZhbHNlLFxuICAgIGhhc0NsZWFyOiBmYWxzZSxcbiAgICBpY29uTGVhZGluZzogdW5kZWZpbmVkLFxuICAgIGlucHV0SWQ6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIG1heGxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG1pbmxlbmd0aDogdW5kZWZpbmVkLFxuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBwcmVmaXg6IHVuZGVmaW5lZCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgc3VmZml4OiB1bmRlZmluZWQsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB0cmFuc2Zvcm1WYWx1ZTogdW5kZWZpbmVkLFxuICAgIHR5cGU6IFRFWFRfSU5QVVRfVFlQRS5URVhULFxuICAgIHZhbGlkYXRvcnM6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBzaG93UGFzc3dvcmQgPSByZWYoZmFsc2UpO1xuICBjb25zdCB2YWx1ZSA9IHJlZihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiBwcm9wcy5sYWJlbCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0NsZWFyID0gY29tcHV0ZWQoKCkgPT4gcHJvcHMuaGFzQ2xlYXIgJiYgdmFsdWUudmFsdWUpO1xuICBjb25zdCBoYXNFcnJvciA9IGNvbXB1dGVkKFxuICAgICgpID0+IChwcm9wcy5yZXF1aXJlZCAmJiB2YWx1ZS52YWx1ZSAhPT0gdW5kZWZpbmVkICYmICF2YWx1ZS52YWx1ZSkgfHwgZ2V0RmllbGRIYXNFcnJvcihlcnJvci52YWx1ZSwgcHJvcHMuZXJyb3IpXG4gICk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IHZhbHVlLnZhbHVlID09PSAnJyB8fCB2YWx1ZS52YWx1ZSA9PT0gdW5kZWZpbmVkKTtcbiAgY29uc3QgaW5wdXRUeXBlID0gY29tcHV0ZWQoKCkgPT5cbiAgICBwcm9wcy50eXBlID09PSBURVhUX0lOUFVUX1RZUEUuUEFTU1dPUkQgJiYgc2hvd1Bhc3N3b3JkLnZhbHVlID09PSB0cnVlID8gVEVYVF9JTlBVVF9UWVBFLlRFWFQgOiBwcm9wcy50eXBlXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlQ2xlYXIgPSAoKSA9PiB7XG4gICAgdmFsdWUudmFsdWUgPSAnJztcbiAgICBpbnB1dC52YWx1ZT8uZm9jdXMoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcblxuICAgIGlmICghdmFsdWUudmFsdWUpIHtcbiAgICAgIHZhbHVlLnZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgaGFuZGxlVmFsaWRhdGlvbigpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUlucHV0ID0gKCkgPT4ge1xuICAgIGlmIChwcm9wcy50cmFuc2Zvcm1WYWx1ZSkge1xuICAgICAgY29uc3QgZGlnaXRzID0gdmFsdWUudmFsdWU/Lm1hdGNoKC9cXGQvZyk/LmpvaW4oJycpIHx8IHVuZGVmaW5lZDtcblxuICAgICAgdmFsdWUudmFsdWUgPSBkaWdpdHMgPyBwcm9wcy50cmFuc2Zvcm1WYWx1ZShkaWdpdHMpIDogJyc7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVZhbGlkYXRpb24gPSAoKSA9PiB7XG4gICAgaGFuZGxlRmllbGRWYWxpZGF0aW9uKHtcbiAgICAgIGVycm9yLFxuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbGlkYXRvcnM6IHByb3BzLnZhbGlkYXRvcnMsXG4gICAgICB2YWx1ZSxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCB1cGRhdGVWYWx1ZSA9IChuZXdWYWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgdmFsdWUudmFsdWUgPSBuZXdWYWx1ZTtcbiAgfTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBwcm9wcy52YWx1ZSxcbiAgICAobmV3VmFsdWUsIG9sZFZhbHVlKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlIHx8IG5ld1ZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgICB2YWx1ZS52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgKTtcblxuICBkZWZpbmVFeHBvc2Uoe1xuICAgIGVycm9yLFxuICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICB1cGRhdGVWYWx1ZSxcbiAgICB2YWx1ZSxcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmNsYXNzPVwiW1xuICAgICAgJ3RpZGUtaW5wdXQtdGV4dCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgIENTUy5HQVAuUVVBUlRFUixcbiAgICAgIGRpc2FibGVkICYmICdkaXNhYmxlZCcsXG4gICAgICBoYXNFcnJvciAmJiAnZXJyb3InLFxuICAgIF1cIlxuICA+XG4gICAgPGxhYmVsXG4gICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICd0aWRlLWlucHV0LXRleHQtZmllbGQnLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgaGFzQ2xlYXIgPyBbQ1NTLlBBRERJTkcuUklHSFQuSEFMRiwgQ1NTLlBBRERJTkcuTEVGVC5PTkVdIDogW0NTUy5QQURESU5HLlguT05FXSxcbiAgICAgICAgQ1NTLlBBRERJTkcuWS5IQUxGLFxuICAgICAgICBkaXNhYmxlZCA/IENTUy5DVVJTT1IuTk9UX0FMTE9XRUQgOiBDU1MuQ1VSU09SLlRFWFQsXG4gICAgICBdXCJcbiAgICAgIDpmb3I9XCJpbnB1dElkXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF1cIlxuICAgICAgICA6aWNvbj1cImljb25MZWFkaW5nXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLlNNQUxMXCJcbiAgICAgICAgdi1pZj1cImljb25MZWFkaW5nXCJcbiAgICAgIC8+XG5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgICAndGlkZS1pbnB1dC10ZXh0LXByZWZpeCcsXG4gICAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMSxcbiAgICAgICAgICAgICFoYXNFcnJvciAmJiBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgICBoYXNNaW5pbGFiZWwgPyAnJyA6ICdvZmZzZXQnLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtaWY9XCJwcmVmaXhcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJlZml4IH19XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5XSURUSC5GVUxMXVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dC1sYWJlbCcsXG4gICAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICB2LWlmPVwibGFiZWxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGZvcm1hdHRlZExhYmVsIH19XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIDphdXRvY29tcGxldGU9XCJhdXRvY29tcGxldGUgPyAnb24nIDogJ29mZidcIlxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5XSURUSC5GVUxMLCBkaXNhYmxlZCAmJiBDU1MuQ1VSU09SLk5PVF9BTExPV0VELCBDU1MuRk9OVC5ST0xFLkJPRFlfMV1cIlxuICAgICAgICAgICAgOmRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgOm1heGxlbmd0aD1cIm1heGxlbmd0aFwiXG4gICAgICAgICAgICA6bWlubGVuZ3RoPVwibWlubGVuZ3RoXCJcbiAgICAgICAgICAgIDpuYW1lPVwibmFtZVwiXG4gICAgICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgICAgICA6cmVxdWlyZWQ9XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICA6dHlwZT1cImlucHV0VHlwZVwiXG4gICAgICAgICAgICBAY2hhbmdlPVwiaGFuZGxlVmFsaWRhdGlvblwiXG4gICAgICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgICAgICBAZm9jdXNvdXQ9XCJoYW5kbGVGb2N1c091dFwiXG4gICAgICAgICAgICBAaW5wdXQ9XCJoYW5kbGVJbnB1dFwiXG4gICAgICAgICAgICA6aWQ9XCJpbnB1dElkXCJcbiAgICAgICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLWlucHV0LXRleHQtc3VmZml4JyxcbiAgICAgICAgICAgIENTUy5GT05ULlJPTEUuQk9EWV8xLFxuICAgICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICAgIGhhc01pbmlsYWJlbCA/ICcnIDogJ29mZnNldCcsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgdi1pZj1cInN1ZmZpeFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBzdWZmaXggfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICBAY2xpY2s9XCJoYW5kbGVDbGVhclwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICB2LWlmPVwiaGFzQ2xlYXIgJiYgdHlwZSAhPT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVJY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uRlVMTC5IQUxGXVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLkNMT1NFXCJcbiAgICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICAvPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgQGNsaWNrPVwic2hvd1Bhc3N3b3JkID0gIXNob3dQYXNzd29yZFwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICB2LWlmPVwidHlwZSA9PT0gVEVYVF9JTlBVVF9UWVBFLlBBU1NXT1JEXCJcbiAgICAgID5cbiAgICAgICAgPFRpZGVJY29uXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5NQVJHSU4uRlVMTC5IQUxGXVwiXG4gICAgICAgICAgOmljb249XCJJQ09OLlZJU0lCSUxJVFlcIlxuICAgICAgICAgIDpzaXplPVwiU0laRS5TTUFMTFwiXG4gICAgICAgIC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2xhYmVsPlxuXG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5HQVAuUVVBUlRFUl1cIlxuICAgICAgdi1pZj1cInN1cHBvcnRpbmdUZXh0IHx8IGhhc0Vycm9yXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmNsYXNzPVwiW11cIlxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1pbnB1dC10ZXh0LWxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LWxhYmVsOm5vdCgubWluaWxhYmVsKSxcbiAgLnRpZGUtaW5wdXQtdGV4dC1wcmVmaXg6bm90KC5vZmZzZXQpLFxuICAudGlkZS1pbnB1dC10ZXh0LXN1ZmZpeDpub3QoLm9mZnNldCkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIGNhbGMoOSAvIDE2ICogMXJlbSkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC1wcmVmaXgsXG4gIC50aWRlLWlucHV0LXRleHQtc3VmZml4IHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQuZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IHZhcigtLXRpZGUtZGlzYWJsZWQpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItcHJpbWFyeSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0LmVycm9yIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dC5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dDpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dC1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dCBpbnB1dCB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHQtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLW9uLXN1cmZhY2UpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSB0ZXh0YXJlYSBpbnB1dCBpbnRlbmRlZCB0byBiZSB1c2VkIGluIGZvcm1zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlaW5wdXR0ZXh0YXJlYS0tZG9jcykgZm9yIFRpZGVJbnB1dFRleHRhcmVhXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCwgd2F0Y2hFZmZlY3QgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUlucHV0U3VwcG9ydGluZ1RleHQudnVlJztcbiAgaW1wb3J0IHsgdXNlRm9ybUNvbnRleHQgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVGb3JtJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBFUlJPUl9ESVNQTEFZIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uJztcbiAgaW1wb3J0IHsgVkFMSURBVElPTl9SRVNVTFQsIGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJ0AvdXRpbGl0aWVzL3ZhbGlkYXRpb24nO1xuXG4gIGltcG9ydCB0eXBlIHsgRXJyb3JEaXNwbGF5LCBWYWxpZGF0aW9uUmVzdWx0LCBWYWxpZGF0b3IgfSBmcm9tICdAL3R5cGVzL1ZhbGlkYXRpb24nO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIE92ZXJyaWRlcyB0aGUgZGVmYXVsdCBlcnJvciBtZXNzYWdlIGFuZCB2YWxpZCBzdGF0ZSAqL1xuICAgIGVycm9yPzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgd2hldGhlciBlcnJvcnMgZGlzcGxheSBwcmlvciB0byBibHVyICovXG4gICAgZXJyb3JEaXNwbGF5PzogRXJyb3JEaXNwbGF5O1xuXG4gICAgLyoqIFVuaXF1ZSBJRCBhdHRyaWJ1dGUgKHRvIGJpbmQgaW5wdXQgbGFiZWwgdG8gaW5wdXQpICovXG4gICAgaW5wdXRJZD86IHN0cmluZztcblxuICAgIC8qKiBMYWJlbCBjb250ZW50ICovXG4gICAgbGFiZWw/OiBzdHJpbmc7XG5cbiAgICAvKiogQXBwbGllcyBhIG1heGltdW0gY2hhcmFjdGVyIGNvdW50IHRvIHRoZSBpbnB1dCAqL1xuICAgIG1heGxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgIC8qKiBBcHBsaWVzIGEgbWluaW11bSBjaGFyYWN0ZXIgY291bnQgdG8gdGhlIGlucHV0ICovXG4gICAgbWlubGVuZ3RoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIE5hbWUgYXR0cmlidXRlICovXG4gICAgbmFtZT86IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgaW5wdXQgaXMgcmVxdWlyZWQgKi9cbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB0aGUgaGVpZ2h0IG9mIHRoZSBpbnB1dCAqL1xuICAgIHJvd3M/OiBudW1iZXI7XG5cbiAgICAvKiogRXhwbGFpbmVyIHRleHQgYmVuZWF0aCBpbnB1dCAqL1xuICAgIHN1cHBvcnRpbmdUZXh0Pzogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgbWV0aG9kKHMpIHVzZWQgdG8gY2hlY2sgZm9yIHZhbGlkIGlucHV0IHZhbHVlIHVwb24gaW52b2tpbmcgcmVsZXZhbnQgbGlzdGVuZXIgZXZlbnQocykgKi9cbiAgICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yW107XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBlcnJvcjogJycsXG4gICAgZXJyb3JEaXNwbGF5OiBFUlJPUl9ESVNQTEFZLkxBWlksXG4gICAgaW5wdXRJZDogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgbWF4bGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbWlubGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgbmFtZTogdW5kZWZpbmVkLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICByb3dzOiA4LFxuICAgIHN1cHBvcnRpbmdUZXh0OiB1bmRlZmluZWQsXG4gICAgdmFsaWRhdG9yczogdW5kZWZpbmVkLFxuICB9KTtcblxuICB0eXBlIEVtaXRzID0ge1xuICAgIChldmVudDogJ3ZhbGlkJywgaXNWYWxpZDogYm9vbGVhbik6IHZvaWQ7XG4gIH07XG4gIGNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0czxFbWl0cz4oKTtcblxuICBjb25zdCBtb2RlbFZhbHVlID0gZGVmaW5lTW9kZWw8c3RyaW5nPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IGZvcm1Db250ZXh0ID0gdXNlRm9ybUNvbnRleHQoKTtcblxuICBjb25zdCBlcnJvclJlZiA9IHJlZjxWYWxpZGF0aW9uUmVzdWx0PihWQUxJREFUSU9OX1JFU1VMVC5OT19FUlJPUik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgaXNWYWxpZGF0aW5nID0gcmVmPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgdGV4dGFyZWFFbGVtZW50ID0gcmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IHNob3dFcnJvciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoaGFzRXJyb3JGcm9tUHJvcC52YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgaWYgKCFpc1ZhbGlkYXRpbmcudmFsdWUpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gIWVycm9yUmVmLnZhbHVlLnZhbGlkO1xuICB9KTtcbiAgY29uc3QgaGFzRXJyb3JGcm9tUHJvcCA9IGNvbXB1dGVkKCgpID0+IHByb3BzLmVycm9yICE9PSAnJyk7XG4gIGNvbnN0IGhhc01pbmlsYWJlbCA9IGNvbXB1dGVkKCgpID0+IGhhc0ZvY3VzLnZhbHVlIHx8ICFpc0VtcHR5LnZhbHVlKTtcbiAgY29uc3QgaXNFbXB0eSA9IGNvbXB1dGVkKCgpID0+IG1vZGVsVmFsdWUudmFsdWUgPT09ICcnKTtcbiAgY29uc3Qgc3VwcG9ydGluZ1RleHRNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gKHNob3dFcnJvci52YWx1ZSAmJiBlcnJvclJlZi52YWx1ZS5tZXNzYWdlKSB8fCBwcm9wcy5zdXBwb3J0aW5nVGV4dCk7XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSB0cnVlO1xuICAgIGlmIChwcm9wcy5lcnJvckRpc3BsYXkgPT09IEVSUk9SX0RJU1BMQVkuRUFHRVIpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRm9jdXNPdXQgPSAoKSA9PiB7XG4gICAgaGFzRm9jdXMudmFsdWUgPSBmYWxzZTtcbiAgICBpZiAocHJvcHMuZXJyb3JEaXNwbGF5ID09PSBFUlJPUl9ESVNQTEFZLkxBWlkpIGlzVmFsaWRhdGluZy52YWx1ZSA9IHRydWU7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRmllbGRDbGljayA9ICgpID0+IHtcbiAgICB0ZXh0YXJlYUVsZW1lbnQudmFsdWU/LmZvY3VzKCk7XG4gIH07XG5cbiAgY29uc3QgcHJldmVudFRleHRhcmVhRm9jdXNMb3NzT25Nb3VzZWRvd24gPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIGlmICghaGFzRm9jdXMudmFsdWUpIHJldHVybjtcbiAgICBpZiAoZS50YXJnZXQgIT09IHRleHRhcmVhRWxlbWVudC52YWx1ZSkgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICB9O1xuXG4gIHdhdGNoRWZmZWN0KCgpID0+IHtcbiAgICBlcnJvclJlZi52YWx1ZSA9IGdldEZpZWxkVmFsaWRhdGlvblJlc3VsdCh7XG4gICAgICBlcnJvckZyb21Qcm9wczogcHJvcHMuZXJyb3IsXG4gICAgICBtYXhsZW5ndGg6IHByb3BzLm1heGxlbmd0aCxcbiAgICAgIG1pbmxlbmd0aDogcHJvcHMubWlubGVuZ3RoLFxuICAgICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgICAgdmFsaWRhdG9yczogcHJvcHMudmFsaWRhdG9ycyxcbiAgICAgIHZhbHVlOiBtb2RlbFZhbHVlLFxuICAgIH0pO1xuICB9KTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBmb3JtQ29udGV4dD8uZm9yY2VTaG93RXJyb3JzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG5ld1ZhbHVlKSBpc1ZhbGlkYXRpbmcudmFsdWUgPSB0cnVlO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuXG4gIHdhdGNoKFxuICAgIGVycm9yUmVmLFxuICAgICgpID0+IHtcbiAgICAgIGVtaXQoJ3ZhbGlkJywgZXJyb3JSZWYudmFsdWUudmFsaWQpO1xuICAgIH0sXG4gICAgeyBkZWVwOiB0cnVlLCBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIlsndGlkZS1pbnB1dC10ZXh0YXJlYScsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sIENTUy5HQVAuUVVBUlRFUiwgc2hvd0Vycm9yICYmICdlcnJvciddXCJcbiAgPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCcsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuUEFERElORy5UT1AuSEFMRixcbiAgICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgQ1NTLkNVUlNPUi5URVhULFxuICAgICAgXVwiXG4gICAgICA6Zm9yPVwiaW5wdXRJZFwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVGaWVsZENsaWNrXCJcbiAgICAgIEBtb3VzZWRvd249XCJwcmV2ZW50VGV4dGFyZWFGb2N1c0xvc3NPbk1vdXNlZG93blwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtaW5wdXQtdGV4dGFyZWEtbGFiZWwnLFxuICAgICAgICAgIENTUy5QQURESU5HLlguT05FLFxuICAgICAgICAgIGhhc01pbmlsYWJlbCA/IFsnbWluaWxhYmVsJywgQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXSA6IENTUy5GT05ULlJPTEUuTEFCRUxfMSxcbiAgICAgICAgICAhc2hvd0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICBdXCJcbiAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgID5cbiAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8dGV4dGFyZWFcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkJMT0NLLCBDU1MuRk9OVC5ST0xFLkJPRFlfMSwgQ1NTLlBBRERJTkcuWC5PTkUsIENTUy5XSURUSC5GVUxMXVwiXG4gICAgICAgIDptYXhsZW5ndGg9XCJtYXhsZW5ndGhcIlxuICAgICAgICA6bWlubGVuZ3RoPVwibWlubGVuZ3RoXCJcbiAgICAgICAgOm5hbWU9XCJuYW1lXCJcbiAgICAgICAgcmVmPVwidGV4dGFyZWFFbGVtZW50XCJcbiAgICAgICAgOnJlcXVpcmVkPVwicmVxdWlyZWRcIlxuICAgICAgICA6cm93cz1cInJvd3NcIlxuICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgOmlkPVwiaW5wdXRJZFwiXG4gICAgICAgIHYtbW9kZWw9XCJtb2RlbFZhbHVlXCJcbiAgICAgIC8+XG4gICAgPC9sYWJlbD5cblxuICAgIDxUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dFxuICAgICAgOmlzLWVycm9yPVwic2hvd0Vycm9yXCJcbiAgICAgIDptZXNzYWdlPVwic3VwcG9ydGluZ1RleHRNZXNzYWdlXCJcbiAgICAgIHYtaWY9XCJzdXBwb3J0aW5nVGV4dE1lc3NhZ2VcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgdGV4dGFyZWEge1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1sYWJlbCB7XG4gICAgaGVpZ2h0OiAxLjE4NzVyZW07XG4gICAgdHJhbnNpdGlvbjogZm9udC1zaXplIHZhcigtLXRpZGUtYW5pbWF0ZSksIHRyYW5zZm9ybSB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3Ige1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXByaW1hcnkpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3IgLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLXN1cmZhY2UpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEuZXJyb3I6Zm9jdXMtd2l0aGluIC50aWRlLWlucHV0LXRleHRhcmVhLWZpZWxkIHtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWVycm9yLWJvcmRlcik7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYTpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0yKTtcbiAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS10aWRlLWJvcmRlci1oaWdoKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhIHRleHRhcmVhIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIC0tdGlkZS1pbnB1dC1vdXRsaW5lLXdpZHRoOiB2YXIoLS10aWRlLWJvcmRlci13aWR0aC0xKTtcbiAgICBvdXRsaW5lOiB2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpIHNvbGlkIHZhcigtLXRpZGUtYm9yZGVyKTtcbiAgICBvdXRsaW5lLW9mZnNldDogY2FsYyh2YXIoLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGgpICogLTEpO1xuICAgIGNvbG9yOiB2YXIoLS10aWRlLW9uLXN1cmZhY2UpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgVGlkZUlucHV0VGV4dGFyZWEudnVlYCBpbXBvcnRlZCBmcm9tICd0aWRlLWRlc2lnbi1zeXN0ZW0nIG5wbSBwYWNrYWdlIGluc3RlYWQuXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlLCBnZXRGaWVsZEhhc0Vycm9yLCBoYW5kbGVGaWVsZFZhbGlkYXRpb24gfSBmcm9tICdAL3V0aWxpdGllcy92YWxpZGF0aW9uLWRlcHJlY2F0ZWQnO1xuXG4gIGltcG9ydCB0eXBlIHsgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnQC90eXBlcy9WYWxpZGF0aW9uRGVwcmVjYXRlZCc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBlcnJvcj86IFZhbGlkYXRpb25FcnJvcjtcbiAgICBpbnB1dElkPzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIG1heGxlbmd0aD86IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBtaW5sZW5ndGg/OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgcm93cz86IG51bWJlcjtcbiAgICBzdXBwb3J0aW5nVGV4dD86IHN0cmluZztcbiAgICB2YWx1ZT86IHN0cmluZztcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGVycm9yOiBmYWxzZSxcbiAgICBpbnB1dElkOiB1bmRlZmluZWQsXG4gICAgbGFiZWw6IHVuZGVmaW5lZCxcbiAgICBtYXhsZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBtaW5sZW5ndGg6IHVuZGVmaW5lZCxcbiAgICBuYW1lOiB1bmRlZmluZWQsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIHJvd3M6IDgsXG4gICAgc3VwcG9ydGluZ1RleHQ6IHVuZGVmaW5lZCxcbiAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBjb25zdCBlcnJvciA9IHJlZihwcm9wcy5lcnJvcik7XG4gIGNvbnN0IGhhc0ZvY3VzID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgaW5wdXQgPSByZWY8SFRNTElucHV0RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCB2YWx1ZSA9IHJlZihwcm9wcy52YWx1ZSk7XG5cbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gY29tcHV0ZWQoKCkgPT4gZ2V0RXJyb3JNZXNzYWdlKHByb3BzLmVycm9yLCBlcnJvci52YWx1ZSkpO1xuICBjb25zdCBmb3JtYXR0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IChwcm9wcy5yZXF1aXJlZCA/IGAke3Byb3BzLmxhYmVsfSAqYCA6IHByb3BzLmxhYmVsKSk7XG4gIGNvbnN0IGhhc0Vycm9yID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gKHByb3BzLnJlcXVpcmVkICYmIHZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgIXZhbHVlLnZhbHVlKSB8fCBnZXRGaWVsZEhhc0Vycm9yKGVycm9yLnZhbHVlLCBwcm9wcy5lcnJvcilcbiAgKTtcbiAgY29uc3QgaGFzTWluaWxhYmVsID0gY29tcHV0ZWQoKCkgPT4gaGFzRm9jdXMudmFsdWUgfHwgIWlzRW1wdHkudmFsdWUpO1xuICBjb25zdCBpc0VtcHR5ID0gY29tcHV0ZWQoKCkgPT4gdmFsdWUudmFsdWUgPT09ICcnIHx8IHZhbHVlLnZhbHVlID09PSB1bmRlZmluZWQpO1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgIGhhc0ZvY3VzLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGb2N1c091dCA9ICgpID0+IHtcbiAgICBoYXNGb2N1cy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKCF2YWx1ZS52YWx1ZSkge1xuICAgICAgdmFsdWUudmFsdWUgPSAnJztcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVmFsaWRhdGlvbiA9ICgpID0+IHtcbiAgICByZXR1cm4gaGFuZGxlRmllbGRWYWxpZGF0aW9uKHtcbiAgICAgIGVycm9yLFxuICAgICAgZXJyb3JGcm9tUHJvcHM6IHByb3BzLmVycm9yLFxuICAgICAgbWF4bGVuZ3RoOiBwcm9wcy5tYXhsZW5ndGgsXG4gICAgICBtaW5sZW5ndGg6IHByb3BzLm1pbmxlbmd0aCxcbiAgICAgIHJlcXVpcmVkOiBwcm9wcy5yZXF1aXJlZCxcbiAgICAgIHZhbHVlLFxuICAgIH0pO1xuICB9O1xuXG4gIHdhdGNoKFxuICAgICgpID0+IHByb3BzLnZhbHVlLFxuICAgIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gb2xkVmFsdWUgfHwgbmV3VmFsdWUgIT09IHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIHZhbHVlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxuICApO1xuXG4gIGRlZmluZUV4cG9zZSh7XG4gICAgZXJyb3IsXG4gICAgcmVxdWlyZWQ6IHByb3BzLnJlcXVpcmVkLFxuICAgIHZhbHVlLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxkaXZcbiAgICA6Y2xhc3M9XCJbJ3RpZGUtaW5wdXQtdGV4dGFyZWEnLCBDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5ESVJFQ1RJT04uQ09MVU1OLCBDU1MuR0FQLlFVQVJURVIsIGhhc0Vycm9yICYmICdlcnJvciddXCJcbiAgPlxuICAgIDxsYWJlbFxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCcsXG4gICAgICAgIENTUy5HQVAuSEFMRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5IQUxGLFxuICAgICAgICBDU1MuUEFERElORy5MRUZULk9ORSxcbiAgICAgICAgQ1NTLlBBRERJTkcuVE9QLkhBTEYsXG4gICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgIENTUy5DVVJTT1IuVEVYVCxcbiAgICAgIF1cIlxuICAgICAgOmZvcj1cImlucHV0SWRcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLWlucHV0LXRleHRhcmVhLWxhYmVsJyxcbiAgICAgICAgICBoYXNNaW5pbGFiZWwgPyBbJ21pbmlsYWJlbCcsIENTUy5GT05ULlJPTEUuTEFCRUxfM10gOiBDU1MuRk9OVC5ST0xFLkxBQkVMXzEsXG4gICAgICAgICAgIWhhc0Vycm9yICYmIENTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVCxcbiAgICAgICAgICBDU1MuUE9JTlRFUl9FVkVOVFMuT0ZGLFxuICAgICAgICBdXCJcbiAgICAgICAgdi1pZj1cImxhYmVsXCJcbiAgICAgID5cbiAgICAgICAge3sgZm9ybWF0dGVkTGFiZWwgfX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8dGV4dGFyZWFcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkJMT0NLLCBDU1MuV0lEVEguRlVMTCwgQ1NTLkZPTlQuUk9MRS5CT0RZXzFdXCJcbiAgICAgICAgOm1heGxlbmd0aD1cIm1heGxlbmd0aFwiXG4gICAgICAgIDptaW5sZW5ndGg9XCJtaW5sZW5ndGhcIlxuICAgICAgICA6bmFtZT1cIm5hbWVcIlxuICAgICAgICByZWY9XCJpbnB1dFwiXG4gICAgICAgIDpyZXF1aXJlZD1cInJlcXVpcmVkXCJcbiAgICAgICAgOnJvd3M9XCJyb3dzXCJcbiAgICAgICAgQGNoYW5nZT1cImhhbmRsZVZhbGlkYXRpb25cIlxuICAgICAgICBAZm9jdXM9XCJoYW5kbGVGb2N1c1wiXG4gICAgICAgIEBmb2N1c291dD1cImhhbmRsZUZvY3VzT3V0XCJcbiAgICAgICAgOmlkPVwiaW5wdXRJZFwiXG4gICAgICAgIHYtbW9kZWw9XCJ2YWx1ZVwiXG4gICAgICAvPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8ZGl2XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSXVwiXG4gICAgICB2LWlmPVwic3VwcG9ydGluZ1RleHQgfHwgaGFzRXJyb3JcIlxuICAgID5cbiAgICAgIDxUaWRlSWNvblxuICAgICAgICA6aWNvbj1cIklDT04uRVJST1JcIlxuICAgICAgICA6c2l6ZT1cIlNJWkUuU01BTExcIlxuICAgICAgICB2LWlmPVwiaGFzRXJyb3JcIlxuICAgICAgLz5cblxuICAgICAgPGRpdiA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8zXVwiPlxuICAgICAgICB7eyBoYXNFcnJvciA/IGVycm9yTWVzc2FnZSA6IHN1cHBvcnRpbmdUZXh0IH19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhLWxhYmVsIHtcbiAgICBoZWlnaHQ6IDEuMTg3NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBmb250LXNpemUgdmFyKC0tdGlkZS1hbmltYXRlKSwgdHJhbnNmb3JtIHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvciB7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItcHJpbWFyeSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvciAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgb3V0bGluZS1jb2xvcjogdmFyKC0tdGlkZS1lcnJvci1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtZXJyb3Itc3VyZmFjZSk7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS5lcnJvcjpmb2N1cy13aXRoaW4gLnRpZGUtaW5wdXQtdGV4dGFyZWEtZmllbGQge1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtZXJyb3ItYm9yZGVyKTtcbiAgfVxuXG4gIC50aWRlLWlucHV0LXRleHRhcmVhOmZvY3VzLXdpdGhpbiAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTIpO1xuICAgIG91dGxpbmUtY29sb3I6IHZhcigtLXRpZGUtYm9yZGVyLWhpZ2gpO1xuICB9XG5cbiAgLnRpZGUtaW5wdXQtdGV4dGFyZWEgdGV4dGFyZWEge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAudGlkZS1pbnB1dC10ZXh0YXJlYS1maWVsZCB7XG4gICAgLS10aWRlLWlucHV0LW91dGxpbmUtd2lkdGg6IHZhcigtLXRpZGUtYm9yZGVyLXdpZHRoLTEpO1xuICAgIG91dGxpbmU6IHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgc29saWQgdmFyKC0tdGlkZS1ib3JkZXIpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiBjYWxjKHZhcigtLXRpZGUtaW5wdXQtb3V0bGluZS13aWR0aCkgKiAtMSk7XG4gICAgY29sb3I6IHZhcigtLXRpZGUtb24tc3VyZmFjZSk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIGdlbmVyaWMgbWVudSBpdGVtIGludGVuZGVkIHRvIGJlIHVzZWQgaW4gbmF2aWdhdGlvbiBtZW51cyBvciBkcm9wZG93bnMuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVtZW51aXRlbS0tZG9jcykgZm9yIFRpZGVNZW51SXRlbVxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IFRpZGVJY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlSWNvbi52dWUnO1xuICBpbXBvcnQgeyBFTEVNRU5UIH0gZnJvbSAnQC90eXBlcy9FbGVtZW50JztcbiAgaW1wb3J0IHsgU0laRSB9IGZyb20gJ0AvdHlwZXMvU2l6ZSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVEFSR0VUIH0gZnJvbSAnQC90eXBlcy9UYXJnZXQnO1xuXG4gIGltcG9ydCB0eXBlIHsgRWxlbWVudCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB0eXBlIHsgSWNvbiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogVGhlIGVsZW1lbnQgdG8gcmVuZGVyIHRoZSByb290IGVsZW1lbnQgYXMuICovXG4gICAgZWxlbWVudD86IEVsZW1lbnQ7XG5cbiAgICAvKiogVGhlIGhyZWYgYXR0cmlidXRlIHRvIGFwcGx5IHdoZW4gdGhlIGVsZW1lbnQgaXMgYSBsaW5rLiAqL1xuICAgIGhyZWY/OiBzdHJpbmc7XG5cbiAgICAvKiogV2hldGhlciB0byBvcGVuIGxpbmsgaW4gYSBuZXcgdGFiLiAqL1xuICAgIGlzTmV3VGFiPzogYm9vbGVhbjtcblxuICAgIC8qKiBJY29uIHRvIHNob3cgYWZ0ZXIgdGhlIGxhYmVsLiAqL1xuICAgIGljb25UcmFpbGluZz86IEljb247XG5cbiAgICAvKiogVGhlIGxhYmVsIHRvIGJlIGRpc3BsYXllZC4gKi9cbiAgICBsYWJlbDogc3RyaW5nO1xuICB9O1xuXG4gIHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIGVsZW1lbnQ6IEVMRU1FTlQuTElOSyxcbiAgICBocmVmOiB1bmRlZmluZWQsXG4gICAgaWNvblRyYWlsaW5nOiB1bmRlZmluZWQsXG4gICAgaXNOZXdUYWI6IGZhbHNlLFxuICB9KTtcbjwvc2NyaXB0PlxuXG48dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6Y2xhc3M9XCJbXG4gICAgICAndGlkZS1tZW51LWl0ZW0nLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5CT1JERVIuUkFESVVTLlpFUk8sXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkVMTElQU0lTLFxuICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgQ1NTLkdBUC5RVUFSVEVSLFxuICAgICAgQ1NTLlBBRERJTkcuWC5PTkUsXG4gICAgICBDU1MuUEFERElORy5ZLkhBTEYsXG4gICAgICBDU1MuVU5ERVJMSU5FLlJFU1QuT0ZGLFxuICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgXVwiXG4gICAgOmhyZWY9XCJocmVmXCJcbiAgICA6dGFyZ2V0PVwiaXNOZXdUYWIgPyBUQVJHRVQuQkxBTksgOiB1bmRlZmluZWRcIlxuICAgIDppcz1cImVsZW1lbnRcIlxuICA+XG4gICAgPHNwYW4+e3sgbGFiZWwgfX08L3NwYW4+XG5cbiAgICA8VGlkZUljb25cbiAgICAgIDpjbGFzcz1cIltDU1MuTUFSR0lOLkxFRlQuQVVUT11cIlxuICAgICAgOmljb249XCJpY29uVHJhaWxpbmdcIlxuICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIHYtaWY9XCJpY29uVHJhaWxpbmdcIlxuICAgIC8+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtbWVudS1pdGVtIHtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gIH1cblxuICAudGlkZS1tZW51LWl0ZW06aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtc3VyZmFjZS12YXJpYW50KTtcbiAgfVxuPC9zdHlsZT5cbiIsIi8qIGVzbGludC1kaXNhYmxlIHZ1ZS9zb3J0LWtleXMgKi9cblxuZXhwb3J0IGNvbnN0IEJSRUFLUE9JTlQgPSB7XG4gIFNNOiAnc20nLFxuICBNRDogJ21kJyxcbiAgTEc6ICdsZycsXG4gIFhMOiAneGwnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IE1FRElBID0ge1xuICBTTTogNzY4LFxuICBNRDogOTkyLFxuICBMRzogMTIzMixcbiAgWEw6IDE5MjAsXG59O1xuXG5leHBvcnQgdHlwZSBCcmVha3BvaW50ID0gKHR5cGVvZiBCUkVBS1BPSU5UKVtrZXlvZiB0eXBlb2YgQlJFQUtQT0lOVF07XG5leHBvcnQgdHlwZSBNZWRpYSA9ICh0eXBlb2YgTUVESUEpW2tleW9mIHR5cGVvZiBNRURJQV07XG4iLCJpbXBvcnQgeyBuZXh0VGljayB9IGZyb20gJ3Z1ZSc7XG5cbi8qKlxuICogRGlyZWN0bHkgbW9kaWZpZXMgdGhlIGA8Ym9keT5gIGVsZW1lbnQgdG8gYXBwbHkgb3IgcmVtb3ZlIHNjcm9sbCBsb2NrLlxuICogV2hlbiBgZmFsc2VgIGlzIHByb3ZpZGVkLCBpdCBvbmx5IHVubG9ja3Mgc2Nyb2xsIGlmIHRoZXJlIGFyZSBubyBvcGVuXG4gKiBIVE1MIGRpYWxvZyBlbGVtZW50cy5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldFNjcm9sbExvY2sgPSBhc3luYyAoaXNMb2NrZWQ6IGJvb2xlYW4pID0+IHtcbiAgLy8gQ2Fubm90IGJlIGFwcGxpZWQgdG8gYm9keSB0YWcgaW4gbWFya2V0cGxhY2UgcmVwbyBkdWUgdG8gZGF0YS1jc3Mtc2NvcGVcbiAgLy8gY29uc3QgQk9EWV9MT0NLX0NMQVNTID0gJ2JvZHktc2Nyb2xsLWxvY2snO1xuXG4gIGNvbnN0IGJvZHkgPSBkb2N1bWVudC5ib2R5O1xuXG4gIGlmIChpc0xvY2tlZCkge1xuICAgIGlmICghYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZKSB7XG4gICAgICBjb25zdCBzY3JvbGxZID0gd2luZG93LnNjcm9sbFk7XG5cbiAgICAgIGJvZHkuZGF0YXNldC5zY3JvbGxMb2NrWSA9IHNjcm9sbFkudG9TdHJpbmcoKTtcbiAgICAgIGJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2F2ZWQtc2Nyb2xsLXknLCBgJHtzY3JvbGxZfXB4YCk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCdpbnNldCcsICcwJyk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCdtYXJnaW4tdG9wJywgYGNhbGMoMHB4IC0gdmFyKC0tc2F2ZWQtc2Nyb2xsLXksIDBweCkpYCk7XG4gICAgICBib2R5LnN0eWxlLnNldFByb3BlcnR5KCdvdmVyZmxvdy15JywgJ3Njcm9sbCcpO1xuICAgICAgYm9keS5zdHlsZS5zZXRQcm9wZXJ0eSgncG9zaXRpb24nLCAnZml4ZWQnKTtcblxuICAgICAgLy8gQ2Fubm90IGJlIGFwcGxpZWQgdG8gYm9keSB0YWcgaW4gbWFya2V0cGxhY2UgcmVwbyBkdWUgdG8gZGF0YS1jc3Mtc2NvcGVcbiAgICAgIC8vIGJvZHkuY2xhc3NMaXN0LmFkZChCT0RZX0xPQ0tfQ0xBU1MpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBuZXh0VGljaygpO1xuICAgIGlmICghZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGlhbG9nW29wZW5dJykpIHtcbiAgICAgIGNvbnN0IHNhdmVkU2Nyb2xsWSA9IHBhcnNlSW50KGJvZHkuZGF0YXNldC5zY3JvbGxMb2NrWSB8fCAnMCcpO1xuXG4gICAgICAvLyBDYW5ub3QgYmUgYXBwbGllZCB0byBib2R5IHRhZyBpbiBtYXJrZXRwbGFjZSByZXBvIGR1ZSB0byBkYXRhLWNzcy1zY29wZVxuICAgICAgLy8gYm9keS5jbGFzc0xpc3QucmVtb3ZlKEJPRFlfTE9DS19DTEFTUyk7XG5cbiAgICAgIGJvZHkuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2luc2V0Jyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdtYXJnaW4tdG9wJyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdvdmVyZmxvdy15Jyk7XG4gICAgICBib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdwb3NpdGlvbicpO1xuICAgICAgYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS1zYXZlZC1zY3JvbGwteScpO1xuXG4gICAgICB3aW5kb3cuc2Nyb2xsVG8oe1xuICAgICAgICBiZWhhdmlvcjogJ2F1dG8nLFxuICAgICAgICB0b3A6IHNhdmVkU2Nyb2xsWSxcbiAgICAgIH0pO1xuXG4gICAgICBkZWxldGUgYm9keS5kYXRhc2V0LnNjcm9sbExvY2tZO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IFRPUF9MQVlFUl9JRCA9ICd0aWRlLXRvcC1sYXllcic7XG5cbmV4cG9ydCBjb25zdCBpbml0RmF1eFRvcExheWVyID0gKCkgPT4ge1xuICBsZXQgdG9wTGF5ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChUT1BfTEFZRVJfSUQpO1xuICBpZiAoIXRvcExheWVyKSB7XG4gICAgdG9wTGF5ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0b3BMYXllci5pZCA9IFRPUF9MQVlFUl9JRDtcbiAgICB0b3BMYXllci5zZXRBdHRyaWJ1dGUoJ2RhdGEtY3NzLXNjb3BlJywgJycpO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodG9wTGF5ZXIpO1xuICB9XG4gIHRvcExheWVyLnN0eWxlLmlzb2xhdGlvbiA9ICdpc29sYXRlJztcbn07XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIG1vZGFsIGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIGRpc3BsYXlpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvciBvcHRpb25zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlbW9kYWwtLWRvY3MpIGZvciBUaWRlTW9kYWxcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IG5leHRUaWNrLCBvbkJlZm9yZU1vdW50LCBvbkJlZm9yZVVubW91bnQsIG9uTW91bnRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgeyBCUkVBS1BPSU5UIH0gZnJvbSAnQC90eXBlcy9CcmVha3BvaW50JztcbiAgaW1wb3J0IHsgSUNPTiB9IGZyb20gJ0AvdHlwZXMvSWNvbic7XG4gIGltcG9ydCB7IFBSSU9SSVRZIH0gZnJvbSAnQC90eXBlcy9Qcmlvcml0eSc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgVE9QX0xBWUVSX0lELCBpbml0RmF1eFRvcExheWVyLCBzZXRTY3JvbGxMb2NrIH0gZnJvbSAnQC91dGlsaXRpZXMvdmlld3BvcnQnO1xuXG4gIGltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSAndnVlJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKlxuICAgICAqIENhbGxlZCBiZWZvcmUgdGhlIG1vZGFsIGNsb3Nlcy5cbiAgICAgKlxuICAgICAqIFJldHVybiBgZmFsc2VgIHRvIGNhbmNlbCB0aGUgY2xvc2UgZXZlbnQuXG4gICAgICovXG4gICAgYmVmb3JlQ2xvc2U/OiAoKSA9PiB2b2lkIHwgYm9vbGVhbiB8IFByb21pc2U8dm9pZCB8IGJvb2xlYW4+O1xuICAgIC8qKiBDb250cm9scyBkaXNwbGF5IG9mIHRoZSBiYWNrIGJ1dHRvbi4gKi9cbiAgICBpc0JhY2tCdXR0b24/OiBib29sZWFuO1xuICAgIC8qKiBDb250cm9scyB3aGV0aGVyIHRoZSBtb2RhbCBjYW4gYmUgZGlzbWlzc2VkIHdpdGggYSBjbG9zZSBidXR0b24gb3Igb3RoZXIgZ2VzdHVyZXMuICovXG4gICAgaXNEaXNtaXNzaWJsZT86IGJvb2xlYW47XG4gICAgLyoqIFRoZSB0aXRsZSB0byBkaXNwbGF5IGluIHRoZSBtb2RhbCdzIGhlYWRlci4gKi9cbiAgICB0aXRsZT86IHN0cmluZztcbiAgICAvKiogQ3VzdG9tIG92ZXJyaWRlIHRvIHRoZSBtb2RhbCdzIHdpZHRoIGNvbnN0cmFpbnQuIEluY2x1ZGUgdW5pdHMuICovXG4gICAgd2lkdGg/OiBzdHJpbmc7XG4gIH07XG5cbiAgY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8UHJvcHM+KCksIHtcbiAgICBiZWZvcmVDbG9zZTogdW5kZWZpbmVkLFxuICAgIGlzQmFja0J1dHRvbjogZmFsc2UsXG4gICAgaXNEaXNtaXNzaWJsZTogdHJ1ZSxcbiAgICB0aXRsZTogdW5kZWZpbmVkLFxuICAgIHdpZHRoOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIHR5cGUgRW1pdHMgPSB7XG4gICAgKGU6ICdiYWNrJyk6IHZvaWQ7XG4gIH07XG5cbiAgY29uc3QgZW1pdCA9IGRlZmluZUVtaXRzPEVtaXRzPigpO1xuXG4gIGNvbnN0IG1vZGFsQ29udGVudDogUmVmPEhUTUxEaXZFbGVtZW50IHwgdW5kZWZpbmVkPiA9IHJlZigpO1xuICBjb25zdCBtb2RhbERpYWxvZzogUmVmPEhUTUxEaWFsb2dFbGVtZW50IHwgdW5kZWZpbmVkPiA9IHJlZigpO1xuXG4gIGNvbnN0IGlzT3BlbiA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4gPSAoKSA9PiB7XG4gICAgbW9kYWxEaWFsb2cudmFsdWU/LnNob3dNb2RhbCgpO1xuICAgIHNldFNjcm9sbExvY2sodHJ1ZSk7XG4gIH07XG5cbiAgY29uc3QgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlID0gKCkgPT4ge1xuICAgIG1vZGFsRGlhbG9nLnZhbHVlPy5jbG9zZSgpO1xuICAgIHNldFNjcm9sbExvY2soZmFsc2UpO1xuICB9O1xuXG4gIGNvbnN0IHNjcm9sbENvbnRlbnRUb1RvcCA9ICgpID0+IHtcbiAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICBpZiAoIW1vZGFsQ29udGVudC52YWx1ZSkgcmV0dXJuO1xuICAgICAgbW9kYWxDb250ZW50LnZhbHVlLnNjcm9sbFRvcCA9IDA7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgY2xvc2UgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKHByb3BzLmJlZm9yZUNsb3NlKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcm9wcy5iZWZvcmVDbG9zZSgpO1xuICAgICAgaWYgKHJlc3VsdCA9PT0gZmFsc2UpIHJldHVybjtcbiAgICB9XG5cbiAgICBpc09wZW4udmFsdWUgPSBmYWxzZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVCYWNrZHJvcENsaWNrID0gKCkgPT4ge1xuICAgIGlmIChwcm9wcy5pc0Rpc21pc3NpYmxlKSBjbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUVzY2FwZUtleWRvd24gPSAoZTogRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHByb3BzLmlzRGlzbWlzc2libGUpIGNsb3NlKCk7XG4gIH07XG5cbiAgd2F0Y2goaXNPcGVuLCAoKSA9PiB7XG4gICAgaWYgKCFtb2RhbERpYWxvZy52YWx1ZSkgcmV0dXJuO1xuICAgIGlmIChpc09wZW4udmFsdWUpIHtcbiAgICAgIHRyaWdnZXJOYXRpdmVEaWFsb2dPcGVuKCk7XG4gICAgICBzY3JvbGxDb250ZW50VG9Ub3AoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlKCk7XG4gICAgfVxuICB9KTtcblxuICBvbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICBpbml0RmF1eFRvcExheWVyKCk7XG4gIH0pO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICB9XG4gIH0pO1xuXG4gIG9uQmVmb3JlVW5tb3VudCgoKSA9PiB7XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgaXNPcGVuLnZhbHVlID0gZmFsc2U7XG4gICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UoKTtcbiAgICB9XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFRlbGVwb3J0IDp0bz1cImAjJHtUT1BfTEFZRVJfSUR9YFwiPlxuICAgIDxkaWFsb2dcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1tb2RhbCcsIENTUy5CRy5JTklUSUFMLCBDU1MuSEVJR0hULkZVTEwsIENTUy5XSURUSC5GVUxMLCBDU1MuT1ZFUkZMT1cuWFkuSElEREVOXVwiXG4gICAgICByZWY9XCJtb2RhbERpYWxvZ1wiXG4gICAgICA6c3R5bGU9XCJ7ICctLW1vZGFsLXdpZHRoJzogd2lkdGggfVwiXG4gICAgICBAY2xpY2suc2VsZj1cImhhbmRsZUJhY2tkcm9wQ2xpY2tcIlxuICAgICAgQGNsb3NlLnByZXZlbnRcbiAgICAgIEBrZXlkb3duLmVzY2FwZT1cImhhbmRsZUVzY2FwZUtleWRvd25cIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICd0aWRlLW1vZGFsLWJvZHknLFxuICAgICAgICAgIENTUy5CRy5TVVJGQUNFLkRFRkFVTFQsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuT05FLFxuICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTixcbiAgICAgICAgICBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLFxuICAgICAgICAgIENTUy5QT1NJVElPTi5BQlNPTFVURSxcbiAgICAgICAgICBDU1MuUE9TSVRJT05JTkcuQk9UVE9NLFxuICAgICAgICAgIENTUy5TSEFET1cuVE9QLFxuICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgIENTUy5XSURUSC5NQVhfRlVMTCxcbiAgICAgICAgICBDU1Mud2l0aEJyZWFrcG9pbnQoW0NTUy5TSEFET1cuQk9UVE9NXSwgQlJFQUtQT0lOVC5TTSksXG4gICAgICAgIF1cIlxuICAgICAgPlxuICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtbW9kYWwtaGVhZGVyJyxcbiAgICAgICAgICAgIENTUy5BWElTMi5DRU5URVIsXG4gICAgICAgICAgICBDU1MuQk9SREVSLkJPVFRPTS5PTkUsXG4gICAgICAgICAgICBDU1MuQk9SREVSLkNPTE9SLkxPVyxcbiAgICAgICAgICAgIENTUy5ESVNQTEFZLkZMRVgsXG4gICAgICAgICAgICBDU1MuR0FQLkhBTEYsXG4gICAgICAgICAgICBDU1MuSVNPTEFUSU9OLklTT0xBVEUsXG4gICAgICAgICAgICBDU1MuUEFERElORy5ZLk9ORSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgICAgIENTUy5aX0lOREVYLk9ORSxcbiAgICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgICAgOmljb249XCJJQ09OLkNIRVZST05fTEVGVFwiXG4gICAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICAgIEBjbGljaz1cImVtaXQoJ2JhY2snKVwiXG4gICAgICAgICAgICB0aXRsZT1cIkJhY2tcIlxuICAgICAgICAgICAgdi1pZj1cImlzQmFja0J1dHRvblwiXG4gICAgICAgICAgLz5cblxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuRk9OVC5ST0xFLkhFQURMSU5FXzJdXCJcbiAgICAgICAgICAgIHYtdGV4dD1cInRpdGxlXCJcbiAgICAgICAgICAvPlxuXG4gICAgICAgICAgPFRpZGVCdXR0b25JY29uXG4gICAgICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZMRVguR1JPVy5PRkYsIENTUy5GTEVYLlNIUklOSy5PRkYsIENTUy5NQVJHSU4uTEVGVC5BVVRPXVwiXG4gICAgICAgICAgICA6aWNvbj1cIklDT04uQ0xPU0VcIlxuICAgICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgICBAY2xpY2s9XCJjbG9zZVwiXG4gICAgICAgICAgICB2LWlmPVwiaXNEaXNtaXNzaWJsZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLW1vZGFsLWNvbnRlbnQnLFxuICAgICAgICAgICAgQ1NTLkRJU1BMQVkuR1JJRCxcbiAgICAgICAgICAgIENTUy5JU09MQVRJT04uSVNPTEFURSxcbiAgICAgICAgICAgIENTUy5PVkVSRkxPVy5YLkhJRERFTixcbiAgICAgICAgICAgIENTUy5PVkVSRkxPVy5ZLkFVVE8sXG4gICAgICAgICAgICBDU1MuUEFERElORy5ZLlRXTyxcbiAgICAgICAgICAgIENTUy5XSURUSC5GVUxMLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHJlZj1cIm1vZGFsQ29udGVudFwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2xvdCAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8Zm9vdGVyXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtbW9kYWwtZm9vdGVyJyxcbiAgICAgICAgICAgIENTUy5BWElTMS5FTkQsXG4gICAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgICAgQ1NTLkdBUC5UV08sXG4gICAgICAgICAgICBDU1MuSVNPTEFUSU9OLklTT0xBVEUsXG4gICAgICAgICAgICBDU1MuUEFERElORy5ZLk9ORSxcbiAgICAgICAgICAgIENTUy5TSEFET1cuVE9QLFxuICAgICAgICAgIF1cIlxuICAgICAgICAgIHYtaWY9XCIkc2xvdHMuZm9vdGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJmb290ZXJcIiAvPlxuICAgICAgICA8L2Zvb3Rlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGlhbG9nPlxuICA8L1RlbGVwb3J0PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtbW9kYWwge1xuICAgIC0tbW9kYWwtcGFkZGluZy14OiAyMHB4O1xuICAgIG1heC13aWR0aDogdW5zZXQ7XG4gICAgbWF4LWhlaWdodDogdW5zZXQ7XG4gICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS10aWRlLWFuaW1hdGUpIGFsbG93LWRpc2NyZXRlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgfVxuICAudGlkZS1tb2RhbFtvcGVuXSB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCUpO1xuICB9XG4gIC50aWRlLW1vZGFsOjpiYWNrZHJvcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpZGUtYW5pbWF0ZSkgYWxsb3ctZGlzY3JldGU7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDBweCk7XG4gIH1cbiAgLnRpZGUtbW9kYWxbb3Blbl06OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10aWRlLXRyYW5zcGFyZW50LTQwMCk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiB2YXIoLS10aWRlLWJnLWJsdXIpO1xuICB9XG4gIEBzdGFydGluZy1zdHlsZSB7XG4gICAgLnRpZGUtbW9kYWxbb3Blbl0ge1xuICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICB9XG4gICAgLnRpZGUtbW9kYWxbb3Blbl06OmJhY2tkcm9wIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYmFja2Ryb3AtZmlsdGVyOiB2YXIoLS10aWRlLWJnLWJsdXIpO1xuICAgIH1cbiAgfVxuICAudGlkZS1tb2RhbC1ib2R5IHtcbiAgICB3aWR0aDogdmFyKC0tbW9kYWwtd2lkdGgsIDU3NnB4KTtcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSB2YXIoLS10aWRlLXNwYWNpbmctMikpO1xuICB9XG5cbiAgLnRpZGUtbW9kYWwtaGVhZGVyLFxuICAudGlkZS1tb2RhbC1mb290ZXIge1xuICAgIHBhZGRpbmctaW5saW5lOiB2YXIoLS1tb2RhbC1wYWRkaW5nLXgpO1xuICB9XG4gIC50aWRlLW1vZGFsLWNvbnRlbnQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogdmFyKC0tbW9kYWwtcGFkZGluZy14KSB2YXIoLS10aWRlLXNhZmUtZnIpIHZhcigtLW1vZGFsLXBhZGRpbmcteCk7XG4gIH1cbiAgOndoZXJlKC50aWRlLW1vZGFsLWNvbnRlbnQpOmRlZXAoPiA6d2hlcmUoKikpIHtcbiAgICBncmlkLWNvbHVtbjogMjtcbiAgfVxuXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkge1xuICAgIC50aWRlLW1vZGFsLWJvZHkge1xuICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICAgIH1cbiAgfVxuICBAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICAudGlkZS1tb2RhbCB7XG4gICAgICAtLW1vZGFsLXBhZGRpbmcteDogdmFyKC0tdGlkZS1zcGFjaW5nLTIpO1xuICAgIH1cbiAgICAudGlkZS1tb2RhbC1ib2R5IHtcbiAgICAgIG1heC1oZWlnaHQ6IDg1JTtcbiAgICAgIGJvdHRvbTogaW5pdGlhbDtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ3Z1ZSc7XG5cbiAgaW1wb3J0IFRpZGVCdXR0b25JY29uIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQnV0dG9uSWNvbi52dWUnO1xuICBpbXBvcnQgVGlkZUJ1dHRvblBhZ2luYXRpb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVCdXR0b25QYWdpbmF0aW9uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBQUklPUklUWSB9IGZyb20gJ0AvdHlwZXMvUHJpb3JpdHknO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICBwYWdlVG90YWw6IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPFByb3BzPigpO1xuXG4gIGNvbnN0IGN1cnJlbnRJbmRleCA9IGRlZmluZU1vZGVsPG51bWJlcj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBwYWdpbmF0aW9uQnV0dG9ucyA9IGNvbXB1dGVkKCgpID0+IG5ldyBBcnJheShwcm9wcy5wYWdlVG90YWwpLmZpbGwoJycpLm1hcCgoZW1wdHksIGluZGV4KSA9PiBpbmRleCArIDEpKTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgY3VycmVudEluZGV4LnZhbHVlID0gaW5kZXg7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlUHJldmlvdXNDbGljayA9ICgpID0+IHtcbiAgICBjdXJyZW50SW5kZXgudmFsdWUtLTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVOZXh0Q2xpY2sgPSAoKSA9PiB7XG4gICAgY3VycmVudEluZGV4LnZhbHVlKys7XG4gIH07XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8c2VjdGlvblxuICAgIDpjbGFzcz1cIlsndGlkZS1wYWdpbmF0aW9uJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMxLkNFTlRFUiwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuV0lEVEguRlVMTF1cIlxuICA+XG4gICAgPFRpZGVCdXR0b25JY29uXG4gICAgICA6ZGlzYWJsZWQ9XCJjdXJyZW50SW5kZXggPD0gMVwiXG4gICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgQGNsaWNrPVwiaGFuZGxlUHJldmlvdXNDbGlja1wiXG4gICAgLz5cblxuICAgIDx1bCA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkFYSVMyLkNFTlRFUiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuTElTVF9CVUxMRVRTLk9GRl1cIj5cbiAgICAgIDxsaVxuICAgICAgICA6a2V5PVwicGFnaW5hdGlvbkJ1dHRvblwiXG4gICAgICAgIHYtZm9yPVwicGFnaW5hdGlvbkJ1dHRvbiBpbiBwYWdpbmF0aW9uQnV0dG9uc1wiXG4gICAgICA+XG4gICAgICAgIDxUaWRlQnV0dG9uUGFnaW5hdGlvblxuICAgICAgICAgIDpkaXNhYmxlZD1cImN1cnJlbnRJbmRleCA9PT0gcGFnaW5hdGlvbkJ1dHRvblwiXG4gICAgICAgICAgOmxhYmVsPVwicGFnaW5hdGlvbkJ1dHRvblwiXG4gICAgICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2socGFnaW5hdGlvbkJ1dHRvbilcIlxuICAgICAgICAvPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuXG4gICAgPFRpZGVCdXR0b25JY29uXG4gICAgICA6ZGlzYWJsZWQ9XCJjdXJyZW50SW5kZXggPj0gcGFnaW5hdGlvbkJ1dHRvbnNbcGFnaW5hdGlvbkJ1dHRvbnMubGVuZ3RoIC0gMV1cIlxuICAgICAgOmljb249XCJJQ09OLkNIRVZST05fUklHSFRcIlxuICAgICAgOnByaW9yaXR5PVwiUFJJT1JJVFkuUVVBVEVSTkFSWVwiXG4gICAgICBAY2xpY2s9XCJoYW5kbGVOZXh0Q2xpY2tcIlxuICAgIC8+XG4gIDwvc2VjdGlvbj5cbjwvdGVtcGxhdGU+XG4iLCIvKipcbiAqIEN1c3RvbSBwb3NpdGlvbmluZyByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy92aXJ0dWFsLWVsZW1lbnRzXG4gKi9cblxuY29uc3Qgc2lkZXMgPSBbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddO1xuY29uc3QgYWxpZ25tZW50cyA9IFsnc3RhcnQnLCAnZW5kJ107XG5jb25zdCBwbGFjZW1lbnRzID0gLyojX19QVVJFX18qL3NpZGVzLnJlZHVjZSgoYWNjLCBzaWRlKSA9PiBhY2MuY29uY2F0KHNpZGUsIHNpZGUgKyBcIi1cIiArIGFsaWdubWVudHNbMF0sIHNpZGUgKyBcIi1cIiArIGFsaWdubWVudHNbMV0pLCBbXSk7XG5jb25zdCBtaW4gPSBNYXRoLm1pbjtcbmNvbnN0IG1heCA9IE1hdGgubWF4O1xuY29uc3Qgcm91bmQgPSBNYXRoLnJvdW5kO1xuY29uc3QgZmxvb3IgPSBNYXRoLmZsb29yO1xuY29uc3QgY3JlYXRlQ29vcmRzID0gdiA9PiAoe1xuICB4OiB2LFxuICB5OiB2XG59KTtcbmNvbnN0IG9wcG9zaXRlU2lkZU1hcCA9IHtcbiAgbGVmdDogJ3JpZ2h0JyxcbiAgcmlnaHQ6ICdsZWZ0JyxcbiAgYm90dG9tOiAndG9wJyxcbiAgdG9wOiAnYm90dG9tJ1xufTtcbmNvbnN0IG9wcG9zaXRlQWxpZ25tZW50TWFwID0ge1xuICBzdGFydDogJ2VuZCcsXG4gIGVuZDogJ3N0YXJ0J1xufTtcbmZ1bmN0aW9uIGNsYW1wKHN0YXJ0LCB2YWx1ZSwgZW5kKSB7XG4gIHJldHVybiBtYXgoc3RhcnQsIG1pbih2YWx1ZSwgZW5kKSk7XG59XG5mdW5jdGlvbiBldmFsdWF0ZSh2YWx1ZSwgcGFyYW0pIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlKHBhcmFtKSA6IHZhbHVlO1xufVxuZnVuY3Rpb24gZ2V0U2lkZShwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzBdO1xufVxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMV07XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3gnID8gJ3knIDogJ3gnO1xufVxuZnVuY3Rpb24gZ2V0QXhpc0xlbmd0aChheGlzKSB7XG4gIHJldHVybiBheGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG59XG5mdW5jdGlvbiBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIFsndG9wJywgJ2JvdHRvbSddLmluY2x1ZGVzKGdldFNpZGUocGxhY2VtZW50KSkgPyAneScgOiAneCc7XG59XG5mdW5jdGlvbiBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCkge1xuICByZXR1cm4gZ2V0T3Bwb3NpdGVBeGlzKGdldFNpZGVBeGlzKHBsYWNlbWVudCkpO1xufVxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50U2lkZXMocGxhY2VtZW50LCByZWN0cywgcnRsKSB7XG4gIGlmIChydGwgPT09IHZvaWQgMCkge1xuICAgIHJ0bCA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbm1lbnRBeGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICBjb25zdCBsZW5ndGggPSBnZXRBeGlzTGVuZ3RoKGFsaWdubWVudEF4aXMpO1xuICBsZXQgbWFpbkFsaWdubWVudFNpZGUgPSBhbGlnbm1lbnRBeGlzID09PSAneCcgPyBhbGlnbm1lbnQgPT09IChydGwgPyAnZW5kJyA6ICdzdGFydCcpID8gJ3JpZ2h0JyA6ICdsZWZ0JyA6IGFsaWdubWVudCA9PT0gJ3N0YXJ0JyA/ICdib3R0b20nIDogJ3RvcCc7XG4gIGlmIChyZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSA+IHJlY3RzLmZsb2F0aW5nW2xlbmd0aF0pIHtcbiAgICBtYWluQWxpZ25tZW50U2lkZSA9IGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5BbGlnbm1lbnRTaWRlKTtcbiAgfVxuICByZXR1cm4gW21haW5BbGlnbm1lbnRTaWRlLCBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluQWxpZ25tZW50U2lkZSldO1xufVxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKHBsYWNlbWVudCkge1xuICBjb25zdCBvcHBvc2l0ZVBsYWNlbWVudCA9IGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHJldHVybiBbZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSwgb3Bwb3NpdGVQbGFjZW1lbnQsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KG9wcG9zaXRlUGxhY2VtZW50KV07XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9zdGFydHxlbmQvZywgYWxpZ25tZW50ID0+IG9wcG9zaXRlQWxpZ25tZW50TWFwW2FsaWdubWVudF0pO1xufVxuZnVuY3Rpb24gZ2V0U2lkZUxpc3Qoc2lkZSwgaXNTdGFydCwgcnRsKSB7XG4gIGNvbnN0IGxyID0gWydsZWZ0JywgJ3JpZ2h0J107XG4gIGNvbnN0IHJsID0gWydyaWdodCcsICdsZWZ0J107XG4gIGNvbnN0IHRiID0gWyd0b3AnLCAnYm90dG9tJ107XG4gIGNvbnN0IGJ0ID0gWydib3R0b20nLCAndG9wJ107XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGlmIChydGwpIHJldHVybiBpc1N0YXJ0ID8gcmwgOiBscjtcbiAgICAgIHJldHVybiBpc1N0YXJ0ID8gbHIgOiBybDtcbiAgICBjYXNlICdsZWZ0JzpcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICByZXR1cm4gaXNTdGFydCA/IHRiIDogYnQ7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBbXTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cyhwbGFjZW1lbnQsIGZsaXBBbGlnbm1lbnQsIGRpcmVjdGlvbiwgcnRsKSB7XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBsZXQgbGlzdCA9IGdldFNpZGVMaXN0KGdldFNpZGUocGxhY2VtZW50KSwgZGlyZWN0aW9uID09PSAnc3RhcnQnLCBydGwpO1xuICBpZiAoYWxpZ25tZW50KSB7XG4gICAgbGlzdCA9IGxpc3QubWFwKHNpZGUgPT4gc2lkZSArIFwiLVwiICsgYWxpZ25tZW50KTtcbiAgICBpZiAoZmxpcEFsaWdubWVudCkge1xuICAgICAgbGlzdCA9IGxpc3QuY29uY2F0KGxpc3QubWFwKGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBsaXN0O1xufVxuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvbGVmdHxyaWdodHxib3R0b218dG9wL2csIHNpZGUgPT4gb3Bwb3NpdGVTaWRlTWFwW3NpZGVdKTtcbn1cbmZ1bmN0aW9uIGV4cGFuZFBhZGRpbmdPYmplY3QocGFkZGluZykge1xuICByZXR1cm4ge1xuICAgIHRvcDogMCxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgICAuLi5wYWRkaW5nXG4gIH07XG59XG5mdW5jdGlvbiBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IGV4cGFuZFBhZGRpbmdPYmplY3QocGFkZGluZykgOiB7XG4gICAgdG9wOiBwYWRkaW5nLFxuICAgIHJpZ2h0OiBwYWRkaW5nLFxuICAgIGJvdHRvbTogcGFkZGluZyxcbiAgICBsZWZ0OiBwYWRkaW5nXG4gIH07XG59XG5mdW5jdGlvbiByZWN0VG9DbGllbnRSZWN0KHJlY3QpIHtcbiAgY29uc3Qge1xuICAgIHgsXG4gICAgeSxcbiAgICB3aWR0aCxcbiAgICBoZWlnaHRcbiAgfSA9IHJlY3Q7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHRvcDogeSxcbiAgICBsZWZ0OiB4LFxuICAgIHJpZ2h0OiB4ICsgd2lkdGgsXG4gICAgYm90dG9tOiB5ICsgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5leHBvcnQgeyBhbGlnbm1lbnRzLCBjbGFtcCwgY3JlYXRlQ29vcmRzLCBldmFsdWF0ZSwgZXhwYW5kUGFkZGluZ09iamVjdCwgZmxvb3IsIGdldEFsaWdubWVudCwgZ2V0QWxpZ25tZW50QXhpcywgZ2V0QWxpZ25tZW50U2lkZXMsIGdldEF4aXNMZW5ndGgsIGdldEV4cGFuZGVkUGxhY2VtZW50cywgZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQsIGdldE9wcG9zaXRlQXhpcywgZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cywgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQsIGdldFBhZGRpbmdPYmplY3QsIGdldFNpZGUsIGdldFNpZGVBeGlzLCBtYXgsIG1pbiwgcGxhY2VtZW50cywgcmVjdFRvQ2xpZW50UmVjdCwgcm91bmQsIHNpZGVzIH07XG4iLCJpbXBvcnQgeyBnZXRTaWRlQXhpcywgZ2V0QWxpZ25tZW50QXhpcywgZ2V0QXhpc0xlbmd0aCwgZ2V0U2lkZSwgZ2V0QWxpZ25tZW50LCBldmFsdWF0ZSwgZ2V0UGFkZGluZ09iamVjdCwgcmVjdFRvQ2xpZW50UmVjdCwgbWluLCBjbGFtcCwgcGxhY2VtZW50cywgZ2V0QWxpZ25tZW50U2lkZXMsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50LCBnZXRPcHBvc2l0ZVBsYWNlbWVudCwgZ2V0RXhwYW5kZWRQbGFjZW1lbnRzLCBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzLCBzaWRlcywgbWF4LCBnZXRPcHBvc2l0ZUF4aXMgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuZXhwb3J0IHsgcmVjdFRvQ2xpZW50UmVjdCB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscyc7XG5cbmZ1bmN0aW9uIGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KF9yZWYsIHBsYWNlbWVudCwgcnRsKSB7XG4gIGxldCB7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nXG4gIH0gPSBfcmVmO1xuICBjb25zdCBzaWRlQXhpcyA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudEF4aXMgPSBnZXRBbGlnbm1lbnRBeGlzKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWduTGVuZ3RoID0gZ2V0QXhpc0xlbmd0aChhbGlnbm1lbnRBeGlzKTtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgaXNWZXJ0aWNhbCA9IHNpZGVBeGlzID09PSAneSc7XG4gIGNvbnN0IGNvbW1vblggPSByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCAvIDIgLSBmbG9hdGluZy53aWR0aCAvIDI7XG4gIGNvbnN0IGNvbW1vblkgPSByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHQgLyAyIC0gZmxvYXRpbmcuaGVpZ2h0IC8gMjtcbiAgY29uc3QgY29tbW9uQWxpZ24gPSByZWZlcmVuY2VbYWxpZ25MZW5ndGhdIC8gMiAtIGZsb2F0aW5nW2FsaWduTGVuZ3RoXSAvIDI7XG4gIGxldCBjb29yZHM7XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55IC0gZmxvYXRpbmcuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCAtIGZsb2F0aW5nLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG4gIHN3aXRjaCAoZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkpIHtcbiAgICBjYXNlICdzdGFydCc6XG4gICAgICBjb29yZHNbYWxpZ25tZW50QXhpc10gLT0gY29tbW9uQWxpZ24gKiAocnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZW5kJzpcbiAgICAgIGNvb3Jkc1thbGlnbm1lbnRBeGlzXSArPSBjb21tb25BbGlnbiAqIChydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMSk7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gY29vcmRzO1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnRcbiAqIG5leHQgdG8gYSBnaXZlbiByZWZlcmVuY2UgZWxlbWVudC5cbiAqXG4gKiBUaGlzIGV4cG9ydCBkb2VzIG5vdCBoYXZlIGFueSBgcGxhdGZvcm1gIGludGVyZmFjZSBsb2dpYy4gWW91IHdpbGwgbmVlZCB0b1xuICogd3JpdGUgb25lIGZvciB0aGUgcGxhdGZvcm0geW91IGFyZSB1c2luZyBGbG9hdGluZyBVSSB3aXRoLlxuICovXG5jb25zdCBjb21wdXRlUG9zaXRpb24gPSBhc3luYyAocmVmZXJlbmNlLCBmbG9hdGluZywgY29uZmlnKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBwbGFjZW1lbnQgPSAnYm90dG9tJyxcbiAgICBzdHJhdGVneSA9ICdhYnNvbHV0ZScsXG4gICAgbWlkZGxld2FyZSA9IFtdLFxuICAgIHBsYXRmb3JtXG4gIH0gPSBjb25maWc7XG4gIGNvbnN0IHZhbGlkTWlkZGxld2FyZSA9IG1pZGRsZXdhcmUuZmlsdGVyKEJvb2xlYW4pO1xuICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGZsb2F0aW5nKSk7XG4gIGxldCByZWN0cyA9IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nLFxuICAgIHN0cmF0ZWd5XG4gIH0pO1xuICBsZXQge1xuICAgIHgsXG4gICAgeVxuICB9ID0gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQocmVjdHMsIHBsYWNlbWVudCwgcnRsKTtcbiAgbGV0IHN0YXRlZnVsUGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICBsZXQgbWlkZGxld2FyZURhdGEgPSB7fTtcbiAgbGV0IHJlc2V0Q291bnQgPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbGlkTWlkZGxld2FyZS5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHtcbiAgICAgIG5hbWUsXG4gICAgICBmblxuICAgIH0gPSB2YWxpZE1pZGRsZXdhcmVbaV07XG4gICAgY29uc3Qge1xuICAgICAgeDogbmV4dFgsXG4gICAgICB5OiBuZXh0WSxcbiAgICAgIGRhdGEsXG4gICAgICByZXNldFxuICAgIH0gPSBhd2FpdCBmbih7XG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIGluaXRpYWxQbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIHBsYWNlbWVudDogc3RhdGVmdWxQbGFjZW1lbnQsXG4gICAgICBzdHJhdGVneSxcbiAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgcmVjdHMsXG4gICAgICBwbGF0Zm9ybSxcbiAgICAgIGVsZW1lbnRzOiB7XG4gICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgZmxvYXRpbmdcbiAgICAgIH1cbiAgICB9KTtcbiAgICB4ID0gbmV4dFggIT0gbnVsbCA/IG5leHRYIDogeDtcbiAgICB5ID0gbmV4dFkgIT0gbnVsbCA/IG5leHRZIDogeTtcbiAgICBtaWRkbGV3YXJlRGF0YSA9IHtcbiAgICAgIC4uLm1pZGRsZXdhcmVEYXRhLFxuICAgICAgW25hbWVdOiB7XG4gICAgICAgIC4uLm1pZGRsZXdhcmVEYXRhW25hbWVdLFxuICAgICAgICAuLi5kYXRhXG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAocmVzZXQgJiYgcmVzZXRDb3VudCA8PSA1MCkge1xuICAgICAgcmVzZXRDb3VudCsrO1xuICAgICAgaWYgKHR5cGVvZiByZXNldCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKHJlc2V0LnBsYWNlbWVudCkge1xuICAgICAgICAgIHN0YXRlZnVsUGxhY2VtZW50ID0gcmVzZXQucGxhY2VtZW50O1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXNldC5yZWN0cykge1xuICAgICAgICAgIHJlY3RzID0gcmVzZXQucmVjdHMgPT09IHRydWUgPyBhd2FpdCBwbGF0Zm9ybS5nZXRFbGVtZW50UmVjdHMoe1xuICAgICAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICAgICAgZmxvYXRpbmcsXG4gICAgICAgICAgICBzdHJhdGVneVxuICAgICAgICAgIH0pIDogcmVzZXQucmVjdHM7XG4gICAgICAgIH1cbiAgICAgICAgKHtcbiAgICAgICAgICB4LFxuICAgICAgICAgIHlcbiAgICAgICAgfSA9IGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KHJlY3RzLCBzdGF0ZWZ1bFBsYWNlbWVudCwgcnRsKSk7XG4gICAgICB9XG4gICAgICBpID0gLTE7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHBsYWNlbWVudDogc3RhdGVmdWxQbGFjZW1lbnQsXG4gICAgc3RyYXRlZ3ksXG4gICAgbWlkZGxld2FyZURhdGFcbiAgfTtcbn07XG5cbi8qKlxuICogUmVzb2x2ZXMgd2l0aCBhbiBvYmplY3Qgb2Ygb3ZlcmZsb3cgc2lkZSBvZmZzZXRzIHRoYXQgZGV0ZXJtaW5lIGhvdyBtdWNoIHRoZVxuICogZWxlbWVudCBpcyBvdmVyZmxvd2luZyBhIGdpdmVuIGNsaXBwaW5nIGJvdW5kYXJ5IG9uIGVhY2ggc2lkZS5cbiAqIC0gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgYm91bmRhcnkgYnkgdGhhdCBudW1iZXIgb2YgcGl4ZWxzXG4gKiAtIG5lZ2F0aXZlID0gaG93IG1hbnkgcGl4ZWxzIGxlZnQgYmVmb3JlIGl0IHdpbGwgb3ZlcmZsb3dcbiAqIC0gMCA9IGxpZXMgZmx1c2ggd2l0aCB0aGUgYm91bmRhcnlcbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9kZXRlY3RPdmVyZmxvd1xuICovXG5hc3luYyBmdW5jdGlvbiBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX2F3YWl0JHBsYXRmb3JtJGlzRWxlO1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICB4LFxuICAgIHksXG4gICAgcGxhdGZvcm0sXG4gICAgcmVjdHMsXG4gICAgZWxlbWVudHMsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IHN0YXRlO1xuICBjb25zdCB7XG4gICAgYm91bmRhcnkgPSAnY2xpcHBpbmdBbmNlc3RvcnMnLFxuICAgIHJvb3RCb3VuZGFyeSA9ICd2aWV3cG9ydCcsXG4gICAgZWxlbWVudENvbnRleHQgPSAnZmxvYXRpbmcnLFxuICAgIGFsdEJvdW5kYXJ5ID0gZmFsc2UsXG4gICAgcGFkZGluZyA9IDBcbiAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gIGNvbnN0IGFsdENvbnRleHQgPSBlbGVtZW50Q29udGV4dCA9PT0gJ2Zsb2F0aW5nJyA/ICdyZWZlcmVuY2UnIDogJ2Zsb2F0aW5nJztcbiAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRzW2FsdEJvdW5kYXJ5ID8gYWx0Q29udGV4dCA6IGVsZW1lbnRDb250ZXh0XTtcbiAgY29uc3QgY2xpcHBpbmdDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChhd2FpdCBwbGF0Zm9ybS5nZXRDbGlwcGluZ1JlY3Qoe1xuICAgIGVsZW1lbnQ6ICgoX2F3YWl0JHBsYXRmb3JtJGlzRWxlID0gYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KGVsZW1lbnQpKSkgIT0gbnVsbCA/IF9hd2FpdCRwbGF0Zm9ybSRpc0VsZSA6IHRydWUpID8gZWxlbWVudCA6IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgfHwgKGF3YWl0IChwbGF0Zm9ybS5nZXREb2N1bWVudEVsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldERvY3VtZW50RWxlbWVudChlbGVtZW50cy5mbG9hdGluZykpKSxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSkpO1xuICBjb25zdCByZWN0ID0gZWxlbWVudENvbnRleHQgPT09ICdmbG9hdGluZycgPyB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiByZWN0cy5mbG9hdGluZy53aWR0aCxcbiAgICBoZWlnaHQ6IHJlY3RzLmZsb2F0aW5nLmhlaWdodFxuICB9IDogcmVjdHMucmVmZXJlbmNlO1xuICBjb25zdCBvZmZzZXRQYXJlbnQgPSBhd2FpdCAocGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgY29uc3Qgb2Zmc2V0U2NhbGUgPSAoYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KG9mZnNldFBhcmVudCkpKSA/IChhd2FpdCAocGxhdGZvcm0uZ2V0U2NhbGUgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldFNjYWxlKG9mZnNldFBhcmVudCkpKSB8fCB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH0gOiB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH07XG4gIGNvbnN0IGVsZW1lbnRDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChwbGF0Zm9ybS5jb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCA/IGF3YWl0IHBsYXRmb3JtLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0KHtcbiAgICBlbGVtZW50cyxcbiAgICByZWN0LFxuICAgIG9mZnNldFBhcmVudCxcbiAgICBzdHJhdGVneVxuICB9KSA6IHJlY3QpO1xuICByZXR1cm4ge1xuICAgIHRvcDogKGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCkgLyBvZmZzZXRTY2FsZS55LFxuICAgIGJvdHRvbTogKGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSkgLyBvZmZzZXRTY2FsZS55LFxuICAgIGxlZnQ6IChjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQpIC8gb2Zmc2V0U2NhbGUueCxcbiAgICByaWdodDogKGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodCkgLyBvZmZzZXRTY2FsZS54XG4gIH07XG59XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHNvIHRoYXQgaXRcbiAqIGFwcGVhcnMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2Fycm93XG4gKi9cbmNvbnN0IGFycm93ID0gb3B0aW9ucyA9PiAoe1xuICBuYW1lOiAnYXJyb3cnLFxuICBvcHRpb25zLFxuICBhc3luYyBmbihzdGF0ZSkge1xuICAgIGNvbnN0IHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgcGxhY2VtZW50LFxuICAgICAgcmVjdHMsXG4gICAgICBwbGF0Zm9ybSxcbiAgICAgIGVsZW1lbnRzLFxuICAgICAgbWlkZGxld2FyZURhdGFcbiAgICB9ID0gc3RhdGU7XG4gICAgLy8gU2luY2UgYGVsZW1lbnRgIGlzIHJlcXVpcmVkLCB3ZSBkb24ndCBQYXJ0aWFsPD4gdGhlIHR5cGUuXG4gICAgY29uc3Qge1xuICAgICAgZWxlbWVudCxcbiAgICAgIHBhZGRpbmcgPSAwXG4gICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKSB8fCB7fTtcbiAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IHBhZGRpbmdPYmplY3QgPSBnZXRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpO1xuICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgIHgsXG4gICAgICB5XG4gICAgfTtcbiAgICBjb25zdCBheGlzID0gZ2V0QWxpZ25tZW50QXhpcyhwbGFjZW1lbnQpO1xuICAgIGNvbnN0IGxlbmd0aCA9IGdldEF4aXNMZW5ndGgoYXhpcyk7XG4gICAgY29uc3QgYXJyb3dEaW1lbnNpb25zID0gYXdhaXQgcGxhdGZvcm0uZ2V0RGltZW5zaW9ucyhlbGVtZW50KTtcbiAgICBjb25zdCBpc1lBeGlzID0gYXhpcyA9PT0gJ3knO1xuICAgIGNvbnN0IG1pblByb3AgPSBpc1lBeGlzID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgY29uc3QgbWF4UHJvcCA9IGlzWUF4aXMgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgY29uc3QgY2xpZW50UHJvcCA9IGlzWUF4aXMgPyAnY2xpZW50SGVpZ2h0JyA6ICdjbGllbnRXaWR0aCc7XG4gICAgY29uc3QgZW5kRGlmZiA9IHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdICsgcmVjdHMucmVmZXJlbmNlW2F4aXNdIC0gY29vcmRzW2F4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXTtcbiAgICBjb25zdCBzdGFydERpZmYgPSBjb29yZHNbYXhpc10gLSByZWN0cy5yZWZlcmVuY2VbYXhpc107XG4gICAgY29uc3QgYXJyb3dPZmZzZXRQYXJlbnQgPSBhd2FpdCAocGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQoZWxlbWVudCkpO1xuICAgIGxldCBjbGllbnRTaXplID0gYXJyb3dPZmZzZXRQYXJlbnQgPyBhcnJvd09mZnNldFBhcmVudFtjbGllbnRQcm9wXSA6IDA7XG5cbiAgICAvLyBET00gcGxhdGZvcm0gY2FuIHJldHVybiBgd2luZG93YCBhcyB0aGUgYG9mZnNldFBhcmVudGAuXG4gICAgaWYgKCFjbGllbnRTaXplIHx8ICEoYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KGFycm93T2Zmc2V0UGFyZW50KSkpKSB7XG4gICAgICBjbGllbnRTaXplID0gZWxlbWVudHMuZmxvYXRpbmdbY2xpZW50UHJvcF0gfHwgcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXTtcbiAgICB9XG4gICAgY29uc3QgY2VudGVyVG9SZWZlcmVuY2UgPSBlbmREaWZmIC8gMiAtIHN0YXJ0RGlmZiAvIDI7XG5cbiAgICAvLyBJZiB0aGUgcGFkZGluZyBpcyBsYXJnZSBlbm91Z2ggdGhhdCBpdCBjYXVzZXMgdGhlIGFycm93IHRvIG5vIGxvbmdlciBiZVxuICAgIC8vIGNlbnRlcmVkLCBtb2RpZnkgdGhlIHBhZGRpbmcgc28gdGhhdCBpdCBpcyBjZW50ZXJlZC5cbiAgICBjb25zdCBsYXJnZXN0UG9zc2libGVQYWRkaW5nID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgLSAxO1xuICAgIGNvbnN0IG1pblBhZGRpbmcgPSBtaW4ocGFkZGluZ09iamVjdFttaW5Qcm9wXSwgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyk7XG4gICAgY29uc3QgbWF4UGFkZGluZyA9IG1pbihwYWRkaW5nT2JqZWN0W21heFByb3BdLCBsYXJnZXN0UG9zc2libGVQYWRkaW5nKTtcblxuICAgIC8vIE1ha2Ugc3VyZSB0aGUgYXJyb3cgZG9lc24ndCBvdmVyZmxvdyB0aGUgZmxvYXRpbmcgZWxlbWVudCBpZiB0aGUgY2VudGVyXG4gICAgLy8gcG9pbnQgaXMgb3V0c2lkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCdzIGJvdW5kcy5cbiAgICBjb25zdCBtaW4kMSA9IG1pblBhZGRpbmc7XG4gICAgY29uc3QgbWF4ID0gY2xpZW50U2l6ZSAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC0gbWF4UGFkZGluZztcbiAgICBjb25zdCBjZW50ZXIgPSBjbGllbnRTaXplIC8gMiAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiArIGNlbnRlclRvUmVmZXJlbmNlO1xuICAgIGNvbnN0IG9mZnNldCA9IGNsYW1wKG1pbiQxLCBjZW50ZXIsIG1heCk7XG5cbiAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIHNtYWxsIGVub3VnaCB0aGF0IHRoZSBhcnJvdydzIHBhZGRpbmcgY2F1c2VzIGl0IHRvXG4gICAgLy8gdG8gcG9pbnQgdG8gbm90aGluZyBmb3IgYW4gYWxpZ25lZCBwbGFjZW1lbnQsIGFkanVzdCB0aGUgb2Zmc2V0IG9mIHRoZVxuICAgIC8vIGZsb2F0aW5nIGVsZW1lbnQgaXRzZWxmLiBUbyBlbnN1cmUgYHNoaWZ0KClgIGNvbnRpbnVlcyB0byB0YWtlIGFjdGlvbixcbiAgICAvLyBhIHNpbmdsZSByZXNldCBpcyBwZXJmb3JtZWQgd2hlbiB0aGlzIGlzIHRydWUuXG4gICAgY29uc3Qgc2hvdWxkQWRkT2Zmc2V0ID0gIW1pZGRsZXdhcmVEYXRhLmFycm93ICYmIGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9IG51bGwgJiYgY2VudGVyICE9PSBvZmZzZXQgJiYgcmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gLyAyIC0gKGNlbnRlciA8IG1pbiQxID8gbWluUGFkZGluZyA6IG1heFBhZGRpbmcpIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyIDwgMDtcbiAgICBjb25zdCBhbGlnbm1lbnRPZmZzZXQgPSBzaG91bGRBZGRPZmZzZXQgPyBjZW50ZXIgPCBtaW4kMSA/IGNlbnRlciAtIG1pbiQxIDogY2VudGVyIC0gbWF4IDogMDtcbiAgICByZXR1cm4ge1xuICAgICAgW2F4aXNdOiBjb29yZHNbYXhpc10gKyBhbGlnbm1lbnRPZmZzZXQsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIFtheGlzXTogb2Zmc2V0LFxuICAgICAgICBjZW50ZXJPZmZzZXQ6IGNlbnRlciAtIG9mZnNldCAtIGFsaWdubWVudE9mZnNldCxcbiAgICAgICAgLi4uKHNob3VsZEFkZE9mZnNldCAmJiB7XG4gICAgICAgICAgYWxpZ25tZW50T2Zmc2V0XG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgICAgcmVzZXQ6IHNob3VsZEFkZE9mZnNldFxuICAgIH07XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBnZXRQbGFjZW1lbnRMaXN0KGFsaWdubWVudCwgYXV0b0FsaWdubWVudCwgYWxsb3dlZFBsYWNlbWVudHMpIHtcbiAgY29uc3QgYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudCA9IGFsaWdubWVudCA/IFsuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpID09PSBhbGlnbm1lbnQpLCAuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9PSBhbGlnbm1lbnQpXSA6IGFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0U2lkZShwbGFjZW1lbnQpID09PSBwbGFjZW1lbnQpO1xuICByZXR1cm4gYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudC5maWx0ZXIocGxhY2VtZW50ID0+IHtcbiAgICBpZiAoYWxpZ25tZW50KSB7XG4gICAgICByZXR1cm4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgPT09IGFsaWdubWVudCB8fCAoYXV0b0FsaWdubWVudCA/IGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCkgIT09IHBsYWNlbWVudCA6IGZhbHNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufVxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgY2hvb3NpbmcgdGhlIHBsYWNlbWVudFxuICogdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgbmVlZGluZyB0byBzcGVjaWZ5IGFcbiAqIHByZWZlcnJlZCBwbGFjZW1lbnQuIEFsdGVybmF0aXZlIHRvIGBmbGlwYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvUGxhY2VtZW50XG4gKi9cbmNvbnN0IGF1dG9QbGFjZW1lbnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2F1dG9QbGFjZW1lbnQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkYXV0b1AsIF9taWRkbGV3YXJlRGF0YSRhdXRvUDIsIF9wbGFjZW1lbnRzVGhhdEZpdE9uRTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBjcm9zc0F4aXMgPSBmYWxzZSxcbiAgICAgICAgYWxpZ25tZW50LFxuICAgICAgICBhbGxvd2VkUGxhY2VtZW50cyA9IHBsYWNlbWVudHMsXG4gICAgICAgIGF1dG9BbGlnbm1lbnQgPSB0cnVlLFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBwbGFjZW1lbnRzJDEgPSBhbGlnbm1lbnQgIT09IHVuZGVmaW5lZCB8fCBhbGxvd2VkUGxhY2VtZW50cyA9PT0gcGxhY2VtZW50cyA/IGdldFBsYWNlbWVudExpc3QoYWxpZ25tZW50IHx8IG51bGwsIGF1dG9BbGlnbm1lbnQsIGFsbG93ZWRQbGFjZW1lbnRzKSA6IGFsbG93ZWRQbGFjZW1lbnRzO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9ICgoX21pZGRsZXdhcmVEYXRhJGF1dG9QID0gbWlkZGxld2FyZURhdGEuYXV0b1BsYWNlbWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhdXRvUC5pbmRleCkgfHwgMDtcbiAgICAgIGNvbnN0IGN1cnJlbnRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzJDFbY3VycmVudEluZGV4XTtcbiAgICAgIGlmIChjdXJyZW50UGxhY2VtZW50ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgY29uc3QgYWxpZ25tZW50U2lkZXMgPSBnZXRBbGlnbm1lbnRTaWRlcyhjdXJyZW50UGxhY2VtZW50LCByZWN0cywgYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpKTtcblxuICAgICAgLy8gTWFrZSBgY29tcHV0ZUNvb3Jkc2Agc3RhcnQgZnJvbSB0aGUgcmlnaHQgcGxhY2UuXG4gICAgICBpZiAocGxhY2VtZW50ICE9PSBjdXJyZW50UGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50cyQxWzBdXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgY3VycmVudE92ZXJmbG93cyA9IFtvdmVyZmxvd1tnZXRTaWRlKGN1cnJlbnRQbGFjZW1lbnQpXSwgb3ZlcmZsb3dbYWxpZ25tZW50U2lkZXNbMF1dLCBvdmVyZmxvd1thbGlnbm1lbnRTaWRlc1sxXV1dO1xuICAgICAgY29uc3QgYWxsT3ZlcmZsb3dzID0gWy4uLigoKF9taWRkbGV3YXJlRGF0YSRhdXRvUDIgPSBtaWRkbGV3YXJlRGF0YS5hdXRvUGxhY2VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGF1dG9QMi5vdmVyZmxvd3MpIHx8IFtdKSwge1xuICAgICAgICBwbGFjZW1lbnQ6IGN1cnJlbnRQbGFjZW1lbnQsXG4gICAgICAgIG92ZXJmbG93czogY3VycmVudE92ZXJmbG93c1xuICAgICAgfV07XG4gICAgICBjb25zdCBuZXh0UGxhY2VtZW50ID0gcGxhY2VtZW50cyQxW2N1cnJlbnRJbmRleCArIDFdO1xuXG4gICAgICAvLyBUaGVyZSBhcmUgbW9yZSBwbGFjZW1lbnRzIHRvIGNoZWNrLlxuICAgICAgaWYgKG5leHRQbGFjZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBpbmRleDogY3VycmVudEluZGV4ICsgMSxcbiAgICAgICAgICAgIG92ZXJmbG93czogYWxsT3ZlcmZsb3dzXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcGxhY2VtZW50OiBuZXh0UGxhY2VtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgcGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlID0gYWxsT3ZlcmZsb3dzLm1hcChkID0+IHtcbiAgICAgICAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KGQucGxhY2VtZW50KTtcbiAgICAgICAgcmV0dXJuIFtkLnBsYWNlbWVudCwgYWxpZ25tZW50ICYmIGNyb3NzQXhpcyA/XG4gICAgICAgIC8vIENoZWNrIGFsb25nIHRoZSBtYWluQXhpcyBhbmQgbWFpbiBjcm9zc0F4aXMgc2lkZS5cbiAgICAgICAgZC5vdmVyZmxvd3Muc2xpY2UoMCwgMikucmVkdWNlKChhY2MsIHYpID0+IGFjYyArIHYsIDApIDpcbiAgICAgICAgLy8gQ2hlY2sgb25seSB0aGUgbWFpbkF4aXMuXG4gICAgICAgIGQub3ZlcmZsb3dzWzBdLCBkLm92ZXJmbG93c107XG4gICAgICB9KS5zb3J0KChhLCBiKSA9PiBhWzFdIC0gYlsxXSk7XG4gICAgICBjb25zdCBwbGFjZW1lbnRzVGhhdEZpdE9uRWFjaFNpZGUgPSBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UuZmlsdGVyKGQgPT4gZFsyXS5zbGljZSgwLFxuICAgICAgLy8gQWxpZ25lZCBwbGFjZW1lbnRzIHNob3VsZCBub3QgY2hlY2sgdGhlaXIgb3Bwb3NpdGUgY3Jvc3NBeGlzXG4gICAgICAvLyBzaWRlLlxuICAgICAgZ2V0QWxpZ25tZW50KGRbMF0pID8gMiA6IDMpLmV2ZXJ5KHYgPT4gdiA8PSAwKSk7XG4gICAgICBjb25zdCByZXNldFBsYWNlbWVudCA9ICgoX3BsYWNlbWVudHNUaGF0Rml0T25FID0gcGxhY2VtZW50c1RoYXRGaXRPbkVhY2hTaWRlWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX3BsYWNlbWVudHNUaGF0Rml0T25FWzBdKSB8fCBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2VbMF1bMF07XG4gICAgICBpZiAocmVzZXRQbGFjZW1lbnQgIT09IHBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGluZGV4OiBjdXJyZW50SW5kZXggKyAxLFxuICAgICAgICAgICAgb3ZlcmZsb3dzOiBhbGxPdmVyZmxvd3NcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IHJlc2V0UGxhY2VtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGZsaXBwaW5nIHRoZSBgcGxhY2VtZW50YFxuICogaW4gb3JkZXIgdG8ga2VlcCBpdCBpbiB2aWV3IHdoZW4gdGhlIHByZWZlcnJlZCBwbGFjZW1lbnQocykgd2lsbCBvdmVyZmxvdyB0aGVcbiAqIGNsaXBwaW5nIGJvdW5kYXJ5LiBBbHRlcm5hdGl2ZSB0byBgYXV0b1BsYWNlbWVudGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZmxpcFxuICovXG5jb25zdCBmbGlwID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdmbGlwJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJGFycm93LCBfbWlkZGxld2FyZURhdGEkZmxpcDtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBtaWRkbGV3YXJlRGF0YSxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIGluaXRpYWxQbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSB0cnVlLFxuICAgICAgICBmYWxsYmFja1BsYWNlbWVudHM6IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyxcbiAgICAgICAgZmFsbGJhY2tTdHJhdGVneSA9ICdiZXN0Rml0JyxcbiAgICAgICAgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiA9ICdub25lJyxcbiAgICAgICAgZmxpcEFsaWdubWVudCA9IHRydWUsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcblxuICAgICAgLy8gSWYgYSByZXNldCBieSB0aGUgYXJyb3cgd2FzIGNhdXNlZCBkdWUgdG8gYW4gYWxpZ25tZW50IG9mZnNldCBiZWluZ1xuICAgICAgLy8gYWRkZWQsIHdlIHNob3VsZCBza2lwIGFueSBsb2dpYyBub3cgc2luY2UgYGZsaXAoKWAgaGFzIGFscmVhZHkgZG9uZSBpdHNcbiAgICAgIC8vIHdvcmsuXG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzI1NDkjaXNzdWVjb21tZW50LTE3MTk2MDE2NDNcbiAgICAgIGlmICgoX21pZGRsZXdhcmVEYXRhJGFycm93ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpICE9IG51bGwgJiYgX21pZGRsZXdhcmVEYXRhJGFycm93LmFsaWdubWVudE9mZnNldCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaW5pdGlhbFNpZGVBeGlzID0gZ2V0U2lkZUF4aXMoaW5pdGlhbFBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpc0Jhc2VQbGFjZW1lbnQgPSBnZXRTaWRlKGluaXRpYWxQbGFjZW1lbnQpID09PSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpO1xuICAgICAgY29uc3QgZmFsbGJhY2tQbGFjZW1lbnRzID0gc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzIHx8IChpc0Jhc2VQbGFjZW1lbnQgfHwgIWZsaXBBbGlnbm1lbnQgPyBbZ2V0T3Bwb3NpdGVQbGFjZW1lbnQoaW5pdGlhbFBsYWNlbWVudCldIDogZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKGluaXRpYWxQbGFjZW1lbnQpKTtcbiAgICAgIGNvbnN0IGhhc0ZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gPSBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uICE9PSAnbm9uZSc7XG4gICAgICBpZiAoIXNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyAmJiBoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uKSB7XG4gICAgICAgIGZhbGxiYWNrUGxhY2VtZW50cy5wdXNoKC4uLmdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMoaW5pdGlhbFBsYWNlbWVudCwgZmxpcEFsaWdubWVudCwgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiwgcnRsKSk7XG4gICAgICB9XG4gICAgICBjb25zdCBwbGFjZW1lbnRzID0gW2luaXRpYWxQbGFjZW1lbnQsIC4uLmZhbGxiYWNrUGxhY2VtZW50c107XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3dzID0gW107XG4gICAgICBsZXQgb3ZlcmZsb3dzRGF0YSA9ICgoX21pZGRsZXdhcmVEYXRhJGZsaXAgPSBtaWRkbGV3YXJlRGF0YS5mbGlwKSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGZsaXAub3ZlcmZsb3dzKSB8fCBbXTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W3NpZGVdKTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICBjb25zdCBzaWRlcyA9IGdldEFsaWdubWVudFNpZGVzKHBsYWNlbWVudCwgcmVjdHMsIHJ0bCk7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W3NpZGVzWzBdXSwgb3ZlcmZsb3dbc2lkZXNbMV1dKTtcbiAgICAgIH1cbiAgICAgIG92ZXJmbG93c0RhdGEgPSBbLi4ub3ZlcmZsb3dzRGF0YSwge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG92ZXJmbG93c1xuICAgICAgfV07XG5cbiAgICAgIC8vIE9uZSBvciBtb3JlIHNpZGVzIGlzIG92ZXJmbG93aW5nLlxuICAgICAgaWYgKCFvdmVyZmxvd3MuZXZlcnkoc2lkZSA9PiBzaWRlIDw9IDApKSB7XG4gICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkZmxpcDIsIF9vdmVyZmxvd3NEYXRhJGZpbHRlcjtcbiAgICAgICAgY29uc3QgbmV4dEluZGV4ID0gKCgoX21pZGRsZXdhcmVEYXRhJGZsaXAyID0gbWlkZGxld2FyZURhdGEuZmxpcCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRmbGlwMi5pbmRleCkgfHwgMCkgKyAxO1xuICAgICAgICBjb25zdCBuZXh0UGxhY2VtZW50ID0gcGxhY2VtZW50c1tuZXh0SW5kZXhdO1xuICAgICAgICBpZiAobmV4dFBsYWNlbWVudCkge1xuICAgICAgICAgIC8vIFRyeSBuZXh0IHBsYWNlbWVudCBhbmQgcmUtcnVuIHRoZSBsaWZlY3ljbGUuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgaW5kZXg6IG5leHRJbmRleCxcbiAgICAgICAgICAgICAgb3ZlcmZsb3dzOiBvdmVyZmxvd3NEYXRhXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiBuZXh0UGxhY2VtZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpcnN0LCBmaW5kIHRoZSBjYW5kaWRhdGVzIHRoYXQgZml0IG9uIHRoZSBtYWluQXhpcyBzaWRlIG9mIG92ZXJmbG93LFxuICAgICAgICAvLyB0aGVuIGZpbmQgdGhlIHBsYWNlbWVudCB0aGF0IGZpdHMgdGhlIGJlc3Qgb24gdGhlIG1haW4gY3Jvc3NBeGlzIHNpZGUuXG4gICAgICAgIGxldCByZXNldFBsYWNlbWVudCA9IChfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIgPSBvdmVyZmxvd3NEYXRhLmZpbHRlcihkID0+IGQub3ZlcmZsb3dzWzBdIDw9IDApLnNvcnQoKGEsIGIpID0+IGEub3ZlcmZsb3dzWzFdIC0gYi5vdmVyZmxvd3NbMV0pWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX292ZXJmbG93c0RhdGEkZmlsdGVyLnBsYWNlbWVudDtcblxuICAgICAgICAvLyBPdGhlcndpc2UgZmFsbGJhY2suXG4gICAgICAgIGlmICghcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICBzd2l0Y2ggKGZhbGxiYWNrU3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIGNhc2UgJ2Jlc3RGaXQnOlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmFyIF9vdmVyZmxvd3NEYXRhJGZpbHRlcjI7XG4gICAgICAgICAgICAgICAgY29uc3QgcGxhY2VtZW50ID0gKF9vdmVyZmxvd3NEYXRhJGZpbHRlcjIgPSBvdmVyZmxvd3NEYXRhLmZpbHRlcihkID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChoYXNGYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTaWRlQXhpcyA9IGdldFNpZGVBeGlzKGQucGxhY2VtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRTaWRlQXhpcyA9PT0gaW5pdGlhbFNpZGVBeGlzIHx8XG4gICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIGJpYXMgdG8gdGhlIGB5YCBzaWRlIGF4aXMgZHVlIHRvIGhvcml6b250YWxcbiAgICAgICAgICAgICAgICAgICAgLy8gcmVhZGluZyBkaXJlY3Rpb25zIGZhdm9yaW5nIGdyZWF0ZXIgd2lkdGguXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTaWRlQXhpcyA9PT0gJ3knO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSkubWFwKGQgPT4gW2QucGxhY2VtZW50LCBkLm92ZXJmbG93cy5maWx0ZXIob3ZlcmZsb3cgPT4gb3ZlcmZsb3cgPiAwKS5yZWR1Y2UoKGFjYywgb3ZlcmZsb3cpID0+IGFjYyArIG92ZXJmbG93LCAwKV0pLnNvcnQoKGEsIGIpID0+IGFbMV0gLSBiWzFdKVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9vdmVyZmxvd3NEYXRhJGZpbHRlcjJbMF07XG4gICAgICAgICAgICAgICAgaWYgKHBsYWNlbWVudCkge1xuICAgICAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdpbml0aWFsUGxhY2VtZW50JzpcbiAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBsYWNlbWVudCAhPT0gcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiByZXNldFBsYWNlbWVudFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdCkge1xuICByZXR1cm4ge1xuICAgIHRvcDogb3ZlcmZsb3cudG9wIC0gcmVjdC5oZWlnaHQsXG4gICAgcmlnaHQ6IG92ZXJmbG93LnJpZ2h0IC0gcmVjdC53aWR0aCxcbiAgICBib3R0b206IG92ZXJmbG93LmJvdHRvbSAtIHJlY3QuaGVpZ2h0LFxuICAgIGxlZnQ6IG92ZXJmbG93LmxlZnQgLSByZWN0LndpZHRoXG4gIH07XG59XG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIHNpZGVzLnNvbWUoc2lkZSA9PiBvdmVyZmxvd1tzaWRlXSA+PSAwKTtcbn1cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdoaWRlJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHJlY3RzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHN0cmF0ZWd5ID0gJ3JlZmVyZW5jZUhpZGRlbicsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIHN3aXRjaCAoc3RyYXRlZ3kpIHtcbiAgICAgICAgY2FzZSAncmVmZXJlbmNlSGlkZGVuJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgZWxlbWVudENvbnRleHQ6ICdyZWZlcmVuY2UnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdHMucmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VIaWRkZW5PZmZzZXRzOiBvZmZzZXRzLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhpZGRlbjogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICdlc2NhcGVkJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgYWx0Qm91bmRhcnk6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0cy5mbG9hdGluZyk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZXNjYXBlZE9mZnNldHM6IG9mZnNldHMsXG4gICAgICAgICAgICAgICAgZXNjYXBlZDogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdSZWN0KHJlY3RzKSB7XG4gIGNvbnN0IG1pblggPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5sZWZ0KSk7XG4gIGNvbnN0IG1pblkgPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC50b3ApKTtcbiAgY29uc3QgbWF4WCA9IG1heCguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LnJpZ2h0KSk7XG4gIGNvbnN0IG1heFkgPSBtYXgoLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5ib3R0b20pKTtcbiAgcmV0dXJuIHtcbiAgICB4OiBtaW5YLFxuICAgIHk6IG1pblksXG4gICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgIGhlaWdodDogbWF4WSAtIG1pbllcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFJlY3RzQnlMaW5lKHJlY3RzKSB7XG4gIGNvbnN0IHNvcnRlZFJlY3RzID0gcmVjdHMuc2xpY2UoKS5zb3J0KChhLCBiKSA9PiBhLnkgLSBiLnkpO1xuICBjb25zdCBncm91cHMgPSBbXTtcbiAgbGV0IHByZXZSZWN0ID0gbnVsbDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3J0ZWRSZWN0cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHJlY3QgPSBzb3J0ZWRSZWN0c1tpXTtcbiAgICBpZiAoIXByZXZSZWN0IHx8IHJlY3QueSAtIHByZXZSZWN0LnkgPiBwcmV2UmVjdC5oZWlnaHQgLyAyKSB7XG4gICAgICBncm91cHMucHVzaChbcmVjdF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBncm91cHNbZ3JvdXBzLmxlbmd0aCAtIDFdLnB1c2gocmVjdCk7XG4gICAgfVxuICAgIHByZXZSZWN0ID0gcmVjdDtcbiAgfVxuICByZXR1cm4gZ3JvdXBzLm1hcChyZWN0ID0+IHJlY3RUb0NsaWVudFJlY3QoZ2V0Qm91bmRpbmdSZWN0KHJlY3QpKSk7XG59XG4vKipcbiAqIFByb3ZpZGVzIGltcHJvdmVkIHBvc2l0aW9uaW5nIGZvciBpbmxpbmUgcmVmZXJlbmNlIGVsZW1lbnRzIHRoYXQgY2FuIHNwYW5cbiAqIG92ZXIgbXVsdGlwbGUgbGluZXMsIHN1Y2ggYXMgaHlwZXJsaW5rcyBvciByYW5nZSBzZWxlY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubGluZVxuICovXG5jb25zdCBpbmxpbmUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2lubGluZScsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIGVsZW1lbnRzLFxuICAgICAgICByZWN0cyxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIHN0cmF0ZWd5XG4gICAgICB9ID0gc3RhdGU7XG4gICAgICAvLyBBIE1vdXNlRXZlbnQncyBjbGllbnR7WCxZfSBjb29yZHMgY2FuIGJlIHVwIHRvIDIgcGl4ZWxzIG9mZiBhXG4gICAgICAvLyBDbGllbnRSZWN0J3MgYm91bmRzLCBkZXNwaXRlIHRoZSBldmVudCBsaXN0ZW5lciBiZWluZyB0cmlnZ2VyZWQuIEFcbiAgICAgIC8vIHBhZGRpbmcgb2YgMiBzZWVtcyB0byBoYW5kbGUgdGhpcyBpc3N1ZS5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGFkZGluZyA9IDIsXG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBuYXRpdmVDbGllbnRSZWN0cyA9IEFycmF5LmZyb20oKGF3YWl0IChwbGF0Zm9ybS5nZXRDbGllbnRSZWN0cyA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0Q2xpZW50UmVjdHMoZWxlbWVudHMucmVmZXJlbmNlKSkpIHx8IFtdKTtcbiAgICAgIGNvbnN0IGNsaWVudFJlY3RzID0gZ2V0UmVjdHNCeUxpbmUobmF0aXZlQ2xpZW50UmVjdHMpO1xuICAgICAgY29uc3QgZmFsbGJhY2sgPSByZWN0VG9DbGllbnRSZWN0KGdldEJvdW5kaW5nUmVjdChuYXRpdmVDbGllbnRSZWN0cykpO1xuICAgICAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFBhZGRpbmdPYmplY3QocGFkZGluZyk7XG4gICAgICBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSB7XG4gICAgICAgIC8vIFRoZXJlIGFyZSB0d28gcmVjdHMgYW5kIHRoZXkgYXJlIGRpc2pvaW5lZC5cbiAgICAgICAgaWYgKGNsaWVudFJlY3RzLmxlbmd0aCA9PT0gMiAmJiBjbGllbnRSZWN0c1swXS5sZWZ0ID4gY2xpZW50UmVjdHNbMV0ucmlnaHQgJiYgeCAhPSBudWxsICYmIHkgIT0gbnVsbCkge1xuICAgICAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IHJlY3QgaW4gd2hpY2ggdGhlIHBvaW50IGlzIGZ1bGx5IGluc2lkZS5cbiAgICAgICAgICByZXR1cm4gY2xpZW50UmVjdHMuZmluZChyZWN0ID0+IHggPiByZWN0LmxlZnQgLSBwYWRkaW5nT2JqZWN0LmxlZnQgJiYgeCA8IHJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0ICYmIHkgPiByZWN0LnRvcCAtIHBhZGRpbmdPYmplY3QudG9wICYmIHkgPCByZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tKSB8fCBmYWxsYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZXJlIGFyZSAyIG9yIG1vcmUgY29ubmVjdGVkIHJlY3RzLlxuICAgICAgICBpZiAoY2xpZW50UmVjdHMubGVuZ3RoID49IDIpIHtcbiAgICAgICAgICBpZiAoZ2V0U2lkZUF4aXMocGxhY2VtZW50KSA9PT0gJ3knKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFJlY3QgPSBjbGllbnRSZWN0c1swXTtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RSZWN0ID0gY2xpZW50UmVjdHNbY2xpZW50UmVjdHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBjb25zdCBpc1RvcCA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ3RvcCc7XG4gICAgICAgICAgICBjb25zdCB0b3AgPSBmaXJzdFJlY3QudG9wO1xuICAgICAgICAgICAgY29uc3QgYm90dG9tID0gbGFzdFJlY3QuYm90dG9tO1xuICAgICAgICAgICAgY29uc3QgbGVmdCA9IGlzVG9wID8gZmlyc3RSZWN0LmxlZnQgOiBsYXN0UmVjdC5sZWZ0O1xuICAgICAgICAgICAgY29uc3QgcmlnaHQgPSBpc1RvcCA/IGZpcnN0UmVjdC5yaWdodCA6IGxhc3RSZWN0LnJpZ2h0O1xuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSByaWdodCAtIGxlZnQ7XG4gICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBib3R0b20gLSB0b3A7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICAgIGJvdHRvbSxcbiAgICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICAgIHg6IGxlZnQsXG4gICAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaXNMZWZ0U2lkZSA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ2xlZnQnO1xuICAgICAgICAgIGNvbnN0IG1heFJpZ2h0ID0gbWF4KC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QucmlnaHQpKTtcbiAgICAgICAgICBjb25zdCBtaW5MZWZ0ID0gbWluKC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QubGVmdCkpO1xuICAgICAgICAgIGNvbnN0IG1lYXN1cmVSZWN0cyA9IGNsaWVudFJlY3RzLmZpbHRlcihyZWN0ID0+IGlzTGVmdFNpZGUgPyByZWN0LmxlZnQgPT09IG1pbkxlZnQgOiByZWN0LnJpZ2h0ID09PSBtYXhSaWdodCk7XG4gICAgICAgICAgY29uc3QgdG9wID0gbWVhc3VyZVJlY3RzWzBdLnRvcDtcbiAgICAgICAgICBjb25zdCBib3R0b20gPSBtZWFzdXJlUmVjdHNbbWVhc3VyZVJlY3RzLmxlbmd0aCAtIDFdLmJvdHRvbTtcbiAgICAgICAgICBjb25zdCBsZWZ0ID0gbWluTGVmdDtcbiAgICAgICAgICBjb25zdCByaWdodCA9IG1heFJpZ2h0O1xuICAgICAgICAgIGNvbnN0IHdpZHRoID0gcmlnaHQgLSBsZWZ0O1xuICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wLFxuICAgICAgICAgICAgYm90dG9tLFxuICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgIHJpZ2h0LFxuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgICAgeTogdG9wXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNldFJlY3RzID0gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICAgICAgcmVmZXJlbmNlOiB7XG4gICAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0XG4gICAgICAgIH0sXG4gICAgICAgIGZsb2F0aW5nOiBlbGVtZW50cy5mbG9hdGluZyxcbiAgICAgICAgc3RyYXRlZ3lcbiAgICAgIH0pO1xuICAgICAgaWYgKHJlY3RzLnJlZmVyZW5jZS54ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS54IHx8IHJlY3RzLnJlZmVyZW5jZS55ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS55IHx8IHJlY3RzLnJlZmVyZW5jZS53aWR0aCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2Uud2lkdGggfHwgcmVjdHMucmVmZXJlbmNlLmhlaWdodCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2UuaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHJlY3RzOiByZXNldFJlY3RzXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8vIEZvciB0eXBlIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5LCB0aGUgYE9mZnNldE9wdGlvbnNgIHR5cGUgd2FzIGFsc29cbi8vIERlcml2YWJsZS5cblxuYXN5bmMgZnVuY3Rpb24gY29udmVydFZhbHVlVG9Db29yZHMoc3RhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCxcbiAgICBwbGF0Zm9ybSxcbiAgICBlbGVtZW50c1xuICB9ID0gc3RhdGU7XG4gIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGlzVmVydGljYWwgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSAneSc7XG4gIGNvbnN0IG1haW5BeGlzTXVsdGkgPSBbJ2xlZnQnLCAndG9wJ10uaW5jbHVkZXMoc2lkZSkgPyAtMSA6IDE7XG4gIGNvbnN0IGNyb3NzQXhpc011bHRpID0gcnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDE7XG4gIGNvbnN0IHJhd1ZhbHVlID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgbGV0IHtcbiAgICBtYWluQXhpcyxcbiAgICBjcm9zc0F4aXMsXG4gICAgYWxpZ25tZW50QXhpc1xuICB9ID0gdHlwZW9mIHJhd1ZhbHVlID09PSAnbnVtYmVyJyA/IHtcbiAgICBtYWluQXhpczogcmF3VmFsdWUsXG4gICAgY3Jvc3NBeGlzOiAwLFxuICAgIGFsaWdubWVudEF4aXM6IG51bGxcbiAgfSA6IHtcbiAgICBtYWluQXhpczogcmF3VmFsdWUubWFpbkF4aXMgfHwgMCxcbiAgICBjcm9zc0F4aXM6IHJhd1ZhbHVlLmNyb3NzQXhpcyB8fCAwLFxuICAgIGFsaWdubWVudEF4aXM6IHJhd1ZhbHVlLmFsaWdubWVudEF4aXNcbiAgfTtcbiAgaWYgKGFsaWdubWVudCAmJiB0eXBlb2YgYWxpZ25tZW50QXhpcyA9PT0gJ251bWJlcicpIHtcbiAgICBjcm9zc0F4aXMgPSBhbGlnbm1lbnQgPT09ICdlbmQnID8gYWxpZ25tZW50QXhpcyAqIC0xIDogYWxpZ25tZW50QXhpcztcbiAgfVxuICByZXR1cm4gaXNWZXJ0aWNhbCA/IHtcbiAgICB4OiBjcm9zc0F4aXMgKiBjcm9zc0F4aXNNdWx0aSxcbiAgICB5OiBtYWluQXhpcyAqIG1haW5BeGlzTXVsdGlcbiAgfSA6IHtcbiAgICB4OiBtYWluQXhpcyAqIG1haW5BeGlzTXVsdGksXG4gICAgeTogY3Jvc3NBeGlzICogY3Jvc3NBeGlzTXVsdGlcbiAgfTtcbn1cblxuLyoqXG4gKiBNb2RpZmllcyB0aGUgcGxhY2VtZW50IGJ5IHRyYW5zbGF0aW5nIHRoZSBmbG9hdGluZyBlbGVtZW50IGFsb25nIHRoZVxuICogc3BlY2lmaWVkIGF4ZXMuXG4gKiBBIG51bWJlciAoc2hvcnRoYW5kIGZvciBgbWFpbkF4aXNgIG9yIGRpc3RhbmNlKSwgb3IgYW4gYXhlcyBjb25maWd1cmF0aW9uXG4gKiBvYmplY3QgbWF5IGJlIHBhc3NlZC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9vZmZzZXRcbiAqL1xuY29uc3Qgb2Zmc2V0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSAwO1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ29mZnNldCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRvZmZzZSwgX21pZGRsZXdhcmVEYXRhJGFycm93O1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCBkaWZmQ29vcmRzID0gYXdhaXQgY29udmVydFZhbHVlVG9Db29yZHMoc3RhdGUsIG9wdGlvbnMpO1xuXG4gICAgICAvLyBJZiB0aGUgcGxhY2VtZW50IGlzIHRoZSBzYW1lIGFuZCB0aGUgYXJyb3cgY2F1c2VkIGFuIGFsaWdubWVudCBvZmZzZXRcbiAgICAgIC8vIHRoZW4gd2UgZG9uJ3QgbmVlZCB0byBjaGFuZ2UgdGhlIHBvc2l0aW9uaW5nIGNvb3JkaW5hdGVzLlxuICAgICAgaWYgKHBsYWNlbWVudCA9PT0gKChfbWlkZGxld2FyZURhdGEkb2Zmc2UgPSBtaWRkbGV3YXJlRGF0YS5vZmZzZXQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkb2Zmc2UucGxhY2VtZW50KSAmJiAoX21pZGRsZXdhcmVEYXRhJGFycm93ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpICE9IG51bGwgJiYgX21pZGRsZXdhcmVEYXRhJGFycm93LmFsaWdubWVudE9mZnNldCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiB4ICsgZGlmZkNvb3Jkcy54LFxuICAgICAgICB5OiB5ICsgZGlmZkNvb3Jkcy55LFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgLi4uZGlmZkNvb3JkcyxcbiAgICAgICAgICBwbGFjZW1lbnRcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIE9wdGltaXplcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBieSBzaGlmdGluZyBpdCBpbiBvcmRlciB0b1xuICoga2VlcCBpdCBpbiB2aWV3IHdoZW4gaXQgd2lsbCBvdmVyZmxvdyB0aGUgY2xpcHBpbmcgYm91bmRhcnkuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2hpZnRcbiAqL1xuY29uc3Qgc2hpZnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3NoaWZ0JyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHBsYWNlbWVudFxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSBmYWxzZSxcbiAgICAgICAgbGltaXRlciA9IHtcbiAgICAgICAgICBmbjogX3JlZiA9PiB7XG4gICAgICAgICAgICBsZXQge1xuICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICB5XG4gICAgICAgICAgICB9ID0gX3JlZjtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgIHlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBjb29yZHMgPSB7XG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH07XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3QgY3Jvc3NBeGlzID0gZ2V0U2lkZUF4aXMoZ2V0U2lkZShwbGFjZW1lbnQpKTtcbiAgICAgIGNvbnN0IG1haW5BeGlzID0gZ2V0T3Bwb3NpdGVBeGlzKGNyb3NzQXhpcyk7XG4gICAgICBsZXQgbWFpbkF4aXNDb29yZCA9IGNvb3Jkc1ttYWluQXhpc107XG4gICAgICBsZXQgY3Jvc3NBeGlzQ29vcmQgPSBjb29yZHNbY3Jvc3NBeGlzXTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIGNvbnN0IG1pblNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gJ3RvcCcgOiAnbGVmdCc7XG4gICAgICAgIGNvbnN0IG1heFNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICAgICAgICBjb25zdCBtaW4gPSBtYWluQXhpc0Nvb3JkICsgb3ZlcmZsb3dbbWluU2lkZV07XG4gICAgICAgIGNvbnN0IG1heCA9IG1haW5BeGlzQ29vcmQgLSBvdmVyZmxvd1ttYXhTaWRlXTtcbiAgICAgICAgbWFpbkF4aXNDb29yZCA9IGNsYW1wKG1pbiwgbWFpbkF4aXNDb29yZCwgbWF4KTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICBjb25zdCBtaW5TaWRlID0gY3Jvc3NBeGlzID09PSAneScgPyAndG9wJyA6ICdsZWZ0JztcbiAgICAgICAgY29uc3QgbWF4U2lkZSA9IGNyb3NzQXhpcyA9PT0gJ3knID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICAgICAgICBjb25zdCBtaW4gPSBjcm9zc0F4aXNDb29yZCArIG92ZXJmbG93W21pblNpZGVdO1xuICAgICAgICBjb25zdCBtYXggPSBjcm9zc0F4aXNDb29yZCAtIG92ZXJmbG93W21heFNpZGVdO1xuICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGNsYW1wKG1pbiwgY3Jvc3NBeGlzQ29vcmQsIG1heCk7XG4gICAgICB9XG4gICAgICBjb25zdCBsaW1pdGVkQ29vcmRzID0gbGltaXRlci5mbih7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBbbWFpbkF4aXNdOiBtYWluQXhpc0Nvb3JkLFxuICAgICAgICBbY3Jvc3NBeGlzXTogY3Jvc3NBeGlzQ29vcmRcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubGltaXRlZENvb3JkcyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHg6IGxpbWl0ZWRDb29yZHMueCAtIHgsXG4gICAgICAgICAgeTogbGltaXRlZENvb3Jkcy55IC0geSxcbiAgICAgICAgICBlbmFibGVkOiB7XG4gICAgICAgICAgICBbbWFpbkF4aXNdOiBjaGVja01haW5BeGlzLFxuICAgICAgICAgICAgW2Nyb3NzQXhpc106IGNoZWNrQ3Jvc3NBeGlzXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG4vKipcbiAqIEJ1aWx0LWluIGBsaW1pdGVyYCB0aGF0IHdpbGwgc3RvcCBgc2hpZnQoKWAgYXQgYSBjZXJ0YWluIHBvaW50LlxuICovXG5jb25zdCBsaW1pdFNoaWZ0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG9wdGlvbnMsXG4gICAgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICByZWN0cyxcbiAgICAgICAgbWlkZGxld2FyZURhdGFcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgb2Zmc2V0ID0gMCxcbiAgICAgICAgbWFpbkF4aXM6IGNoZWNrTWFpbkF4aXMgPSB0cnVlLFxuICAgICAgICBjcm9zc0F4aXM6IGNoZWNrQ3Jvc3NBeGlzID0gdHJ1ZVxuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfTtcbiAgICAgIGNvbnN0IGNyb3NzQXhpcyA9IGdldFNpZGVBeGlzKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBtYWluQXhpcyA9IGdldE9wcG9zaXRlQXhpcyhjcm9zc0F4aXMpO1xuICAgICAgbGV0IG1haW5BeGlzQ29vcmQgPSBjb29yZHNbbWFpbkF4aXNdO1xuICAgICAgbGV0IGNyb3NzQXhpc0Nvb3JkID0gY29vcmRzW2Nyb3NzQXhpc107XG4gICAgICBjb25zdCByYXdPZmZzZXQgPSBldmFsdWF0ZShvZmZzZXQsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvbXB1dGVkT2Zmc2V0ID0gdHlwZW9mIHJhd09mZnNldCA9PT0gJ251bWJlcicgPyB7XG4gICAgICAgIG1haW5BeGlzOiByYXdPZmZzZXQsXG4gICAgICAgIGNyb3NzQXhpczogMFxuICAgICAgfSA6IHtcbiAgICAgICAgbWFpbkF4aXM6IDAsXG4gICAgICAgIGNyb3NzQXhpczogMCxcbiAgICAgICAgLi4ucmF3T2Zmc2V0XG4gICAgICB9O1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgY29uc3QgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbiAgICAgICAgY29uc3QgbGltaXRNaW4gPSByZWN0cy5yZWZlcmVuY2VbbWFpbkF4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuXSArIGNvbXB1dGVkT2Zmc2V0Lm1haW5BeGlzO1xuICAgICAgICBjb25zdCBsaW1pdE1heCA9IHJlY3RzLnJlZmVyZW5jZVttYWluQXhpc10gKyByZWN0cy5yZWZlcmVuY2VbbGVuXSAtIGNvbXB1dGVkT2Zmc2V0Lm1haW5BeGlzO1xuICAgICAgICBpZiAobWFpbkF4aXNDb29yZCA8IGxpbWl0TWluKSB7XG4gICAgICAgICAgbWFpbkF4aXNDb29yZCA9IGxpbWl0TWluO1xuICAgICAgICB9IGVsc2UgaWYgKG1haW5BeGlzQ29vcmQgPiBsaW1pdE1heCkge1xuICAgICAgICAgIG1haW5BeGlzQ29vcmQgPSBsaW1pdE1heDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkb2Zmc2UsIF9taWRkbGV3YXJlRGF0YSRvZmZzZTI7XG4gICAgICAgIGNvbnN0IGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnd2lkdGgnIDogJ2hlaWdodCc7XG4gICAgICAgIGNvbnN0IGlzT3JpZ2luU2lkZSA9IFsndG9wJywgJ2xlZnQnXS5pbmNsdWRlcyhnZXRTaWRlKHBsYWNlbWVudCkpO1xuICAgICAgICBjb25zdCBsaW1pdE1pbiA9IHJlY3RzLnJlZmVyZW5jZVtjcm9zc0F4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuXSArIChpc09yaWdpblNpZGUgPyAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZSA9IG1pZGRsZXdhcmVEYXRhLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRvZmZzZVtjcm9zc0F4aXNdKSB8fCAwIDogMCkgKyAoaXNPcmlnaW5TaWRlID8gMCA6IGNvbXB1dGVkT2Zmc2V0LmNyb3NzQXhpcyk7XG4gICAgICAgIGNvbnN0IGxpbWl0TWF4ID0gcmVjdHMucmVmZXJlbmNlW2Nyb3NzQXhpc10gKyByZWN0cy5yZWZlcmVuY2VbbGVuXSArIChpc09yaWdpblNpZGUgPyAwIDogKChfbWlkZGxld2FyZURhdGEkb2Zmc2UyID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlMltjcm9zc0F4aXNdKSB8fCAwKSAtIChpc09yaWdpblNpZGUgPyBjb21wdXRlZE9mZnNldC5jcm9zc0F4aXMgOiAwKTtcbiAgICAgICAgaWYgKGNyb3NzQXhpc0Nvb3JkIDwgbGltaXRNaW4pIHtcbiAgICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGxpbWl0TWluO1xuICAgICAgICB9IGVsc2UgaWYgKGNyb3NzQXhpc0Nvb3JkID4gbGltaXRNYXgpIHtcbiAgICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGxpbWl0TWF4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBbbWFpbkF4aXNdOiBtYWluQXhpc0Nvb3JkLFxuICAgICAgICBbY3Jvc3NBeGlzXTogY3Jvc3NBeGlzQ29vcmRcbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRoYXQgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQg4oCUXG4gKiBmb3IgaW5zdGFuY2UsIHByZXZlbnQgaXQgZnJvbSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgYm91bmRhcnkgb3IgbWF0Y2ggdGhlXG4gKiB3aWR0aCBvZiB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2l6ZVxuICovXG5jb25zdCBzaXplID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzaXplJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX3N0YXRlJG1pZGRsZXdhcmVEYXRhLCBfc3RhdGUkbWlkZGxld2FyZURhdGEyO1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgZWxlbWVudHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYXBwbHkgPSAoKSA9PiB7fSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGlzWUF4aXMgPSBnZXRTaWRlQXhpcyhwbGFjZW1lbnQpID09PSAneSc7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHRcbiAgICAgIH0gPSByZWN0cy5mbG9hdGluZztcbiAgICAgIGxldCBoZWlnaHRTaWRlO1xuICAgICAgbGV0IHdpZHRoU2lkZTtcbiAgICAgIGlmIChzaWRlID09PSAndG9wJyB8fCBzaWRlID09PSAnYm90dG9tJykge1xuICAgICAgICBoZWlnaHRTaWRlID0gc2lkZTtcbiAgICAgICAgd2lkdGhTaWRlID0gYWxpZ25tZW50ID09PSAoKGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKSkgPyAnc3RhcnQnIDogJ2VuZCcpID8gJ2xlZnQnIDogJ3JpZ2h0JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdpZHRoU2lkZSA9IHNpZGU7XG4gICAgICAgIGhlaWdodFNpZGUgPSBhbGlnbm1lbnQgPT09ICdlbmQnID8gJ3RvcCcgOiAnYm90dG9tJztcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1heGltdW1DbGlwcGluZ0hlaWdodCA9IGhlaWdodCAtIG92ZXJmbG93LnRvcCAtIG92ZXJmbG93LmJvdHRvbTtcbiAgICAgIGNvbnN0IG1heGltdW1DbGlwcGluZ1dpZHRoID0gd2lkdGggLSBvdmVyZmxvdy5sZWZ0IC0gb3ZlcmZsb3cucmlnaHQ7XG4gICAgICBjb25zdCBvdmVyZmxvd0F2YWlsYWJsZUhlaWdodCA9IG1pbihoZWlnaHQgLSBvdmVyZmxvd1toZWlnaHRTaWRlXSwgbWF4aW11bUNsaXBwaW5nSGVpZ2h0KTtcbiAgICAgIGNvbnN0IG92ZXJmbG93QXZhaWxhYmxlV2lkdGggPSBtaW4od2lkdGggLSBvdmVyZmxvd1t3aWR0aFNpZGVdLCBtYXhpbXVtQ2xpcHBpbmdXaWR0aCk7XG4gICAgICBjb25zdCBub1NoaWZ0ID0gIXN0YXRlLm1pZGRsZXdhcmVEYXRhLnNoaWZ0O1xuICAgICAgbGV0IGF2YWlsYWJsZUhlaWdodCA9IG92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0O1xuICAgICAgbGV0IGF2YWlsYWJsZVdpZHRoID0gb3ZlcmZsb3dBdmFpbGFibGVXaWR0aDtcbiAgICAgIGlmICgoX3N0YXRlJG1pZGRsZXdhcmVEYXRhID0gc3RhdGUubWlkZGxld2FyZURhdGEuc2hpZnQpICE9IG51bGwgJiYgX3N0YXRlJG1pZGRsZXdhcmVEYXRhLmVuYWJsZWQueCkge1xuICAgICAgICBhdmFpbGFibGVXaWR0aCA9IG1heGltdW1DbGlwcGluZ1dpZHRoO1xuICAgICAgfVxuICAgICAgaWYgKChfc3RhdGUkbWlkZGxld2FyZURhdGEyID0gc3RhdGUubWlkZGxld2FyZURhdGEuc2hpZnQpICE9IG51bGwgJiYgX3N0YXRlJG1pZGRsZXdhcmVEYXRhMi5lbmFibGVkLnkpIHtcbiAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gbWF4aW11bUNsaXBwaW5nSGVpZ2h0O1xuICAgICAgfVxuICAgICAgaWYgKG5vU2hpZnQgJiYgIWFsaWdubWVudCkge1xuICAgICAgICBjb25zdCB4TWluID0gbWF4KG92ZXJmbG93LmxlZnQsIDApO1xuICAgICAgICBjb25zdCB4TWF4ID0gbWF4KG92ZXJmbG93LnJpZ2h0LCAwKTtcbiAgICAgICAgY29uc3QgeU1pbiA9IG1heChvdmVyZmxvdy50b3AsIDApO1xuICAgICAgICBjb25zdCB5TWF4ID0gbWF4KG92ZXJmbG93LmJvdHRvbSwgMCk7XG4gICAgICAgIGlmIChpc1lBeGlzKSB7XG4gICAgICAgICAgYXZhaWxhYmxlV2lkdGggPSB3aWR0aCAtIDIgKiAoeE1pbiAhPT0gMCB8fCB4TWF4ICE9PSAwID8geE1pbiArIHhNYXggOiBtYXgob3ZlcmZsb3cubGVmdCwgb3ZlcmZsb3cucmlnaHQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBoZWlnaHQgLSAyICogKHlNaW4gIT09IDAgfHwgeU1heCAhPT0gMCA/IHlNaW4gKyB5TWF4IDogbWF4KG92ZXJmbG93LnRvcCwgb3ZlcmZsb3cuYm90dG9tKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGF3YWl0IGFwcGx5KHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGF2YWlsYWJsZVdpZHRoLFxuICAgICAgICBhdmFpbGFibGVIZWlnaHRcbiAgICAgIH0pO1xuICAgICAgY29uc3QgbmV4dERpbWVuc2lvbnMgPSBhd2FpdCBwbGF0Zm9ybS5nZXREaW1lbnNpb25zKGVsZW1lbnRzLmZsb2F0aW5nKTtcbiAgICAgIGlmICh3aWR0aCAhPT0gbmV4dERpbWVuc2lvbnMud2lkdGggfHwgaGVpZ2h0ICE9PSBuZXh0RGltZW5zaW9ucy5oZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcmVjdHM6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCBzaGlmdCwgc2l6ZSB9O1xuIiwiZnVuY3Rpb24gaGFzV2luZG93KCkge1xuICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCc7XG59XG5mdW5jdGlvbiBnZXROb2RlTmFtZShub2RlKSB7XG4gIGlmIChpc05vZGUobm9kZSkpIHtcbiAgICByZXR1cm4gKG5vZGUubm9kZU5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gIH1cbiAgLy8gTW9ja2VkIG5vZGVzIGluIHRlc3RpbmcgZW52aXJvbm1lbnRzIG1heSBub3QgYmUgaW5zdGFuY2VzIG9mIE5vZGUuIEJ5XG4gIC8vIHJldHVybmluZyBgI2RvY3VtZW50YCBhbiBpbmZpbml0ZSBsb29wIHdvbid0IG9jY3VyLlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmxvYXRpbmctdWkvZmxvYXRpbmctdWkvaXNzdWVzLzIzMTdcbiAgcmV0dXJuICcjZG9jdW1lbnQnO1xufVxuZnVuY3Rpb24gZ2V0V2luZG93KG5vZGUpIHtcbiAgdmFyIF9ub2RlJG93bmVyRG9jdW1lbnQ7XG4gIHJldHVybiAobm9kZSA9PSBudWxsIHx8IChfbm9kZSRvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykgfHwgd2luZG93O1xufVxuZnVuY3Rpb24gZ2V0RG9jdW1lbnRFbGVtZW50KG5vZGUpIHtcbiAgdmFyIF9yZWY7XG4gIHJldHVybiAoX3JlZiA9IChpc05vZGUobm9kZSkgPyBub2RlLm93bmVyRG9jdW1lbnQgOiBub2RlLmRvY3VtZW50KSB8fCB3aW5kb3cuZG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfcmVmLmRvY3VtZW50RWxlbWVudDtcbn1cbmZ1bmN0aW9uIGlzTm9kZSh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIE5vZGUgfHwgdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLk5vZGU7XG59XG5mdW5jdGlvbiBpc0VsZW1lbnQodmFsdWUpIHtcbiAgaWYgKCFoYXNXaW5kb3coKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBFbGVtZW50IHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5FbGVtZW50O1xufVxuZnVuY3Rpb24gaXNIVE1MRWxlbWVudCh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50IHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5IVE1MRWxlbWVudDtcbn1cbmZ1bmN0aW9uIGlzU2hhZG93Um9vdCh2YWx1ZSkge1xuICBpZiAoIWhhc1dpbmRvdygpIHx8IHR5cGVvZiBTaGFkb3dSb290ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBTaGFkb3dSb290IHx8IHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5TaGFkb3dSb290O1xufVxuZnVuY3Rpb24gaXNPdmVyZmxvd0VsZW1lbnQoZWxlbWVudCkge1xuICBjb25zdCB7XG4gICAgb3ZlcmZsb3csXG4gICAgb3ZlcmZsb3dYLFxuICAgIG92ZXJmbG93WSxcbiAgICBkaXNwbGF5XG4gIH0gPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICByZXR1cm4gL2F1dG98c2Nyb2xsfG92ZXJsYXl8aGlkZGVufGNsaXAvLnRlc3Qob3ZlcmZsb3cgKyBvdmVyZmxvd1kgKyBvdmVyZmxvd1gpICYmICFbJ2lubGluZScsICdjb250ZW50cyddLmluY2x1ZGVzKGRpc3BsYXkpO1xufVxuZnVuY3Rpb24gaXNUYWJsZUVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gWyd0YWJsZScsICd0ZCcsICd0aCddLmluY2x1ZGVzKGdldE5vZGVOYW1lKGVsZW1lbnQpKTtcbn1cbmZ1bmN0aW9uIGlzVG9wTGF5ZXIoZWxlbWVudCkge1xuICByZXR1cm4gWyc6cG9wb3Zlci1vcGVuJywgJzptb2RhbCddLnNvbWUoc2VsZWN0b3IgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZWxlbWVudC5tYXRjaGVzKHNlbGVjdG9yKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIGlzQ29udGFpbmluZ0Jsb2NrKGVsZW1lbnRPckNzcykge1xuICBjb25zdCB3ZWJraXQgPSBpc1dlYktpdCgpO1xuICBjb25zdCBjc3MgPSBpc0VsZW1lbnQoZWxlbWVudE9yQ3NzKSA/IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudE9yQ3NzKSA6IGVsZW1lbnRPckNzcztcblxuICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ29udGFpbmluZ19ibG9jayNpZGVudGlmeWluZ190aGVfY29udGFpbmluZ19ibG9ja1xuICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRyYW5zZm9ybXMtMi8jaW5kaXZpZHVhbC10cmFuc2Zvcm1zXG4gIHJldHVybiBbJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUnLCAnc2NhbGUnLCAncm90YXRlJywgJ3BlcnNwZWN0aXZlJ10uc29tZSh2YWx1ZSA9PiBjc3NbdmFsdWVdID8gY3NzW3ZhbHVlXSAhPT0gJ25vbmUnIDogZmFsc2UpIHx8IChjc3MuY29udGFpbmVyVHlwZSA/IGNzcy5jb250YWluZXJUeXBlICE9PSAnbm9ybWFsJyA6IGZhbHNlKSB8fCAhd2Via2l0ICYmIChjc3MuYmFja2Ryb3BGaWx0ZXIgPyBjc3MuYmFja2Ryb3BGaWx0ZXIgIT09ICdub25lJyA6IGZhbHNlKSB8fCAhd2Via2l0ICYmIChjc3MuZmlsdGVyID8gY3NzLmZpbHRlciAhPT0gJ25vbmUnIDogZmFsc2UpIHx8IFsndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZScsICdzY2FsZScsICdyb3RhdGUnLCAncGVyc3BlY3RpdmUnLCAnZmlsdGVyJ10uc29tZSh2YWx1ZSA9PiAoY3NzLndpbGxDaGFuZ2UgfHwgJycpLmluY2x1ZGVzKHZhbHVlKSkgfHwgWydwYWludCcsICdsYXlvdXQnLCAnc3RyaWN0JywgJ2NvbnRlbnQnXS5zb21lKHZhbHVlID0+IChjc3MuY29udGFpbiB8fCAnJykuaW5jbHVkZXModmFsdWUpKTtcbn1cbmZ1bmN0aW9uIGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB7XG4gIGxldCBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG4gIHdoaWxlIChpc0hUTUxFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhaXNMYXN0VHJhdmVyc2FibGVOb2RlKGN1cnJlbnROb2RlKSkge1xuICAgIGlmIChpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSkpIHtcbiAgICAgIHJldHVybiBjdXJyZW50Tm9kZTtcbiAgICB9IGVsc2UgaWYgKGlzVG9wTGF5ZXIoY3VycmVudE5vZGUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGlzV2ViS2l0KCkge1xuICBpZiAodHlwZW9mIENTUyA9PT0gJ3VuZGVmaW5lZCcgfHwgIUNTUy5zdXBwb3J0cykgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gQ1NTLnN1cHBvcnRzKCctd2Via2l0LWJhY2tkcm9wLWZpbHRlcicsICdub25lJyk7XG59XG5mdW5jdGlvbiBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUobm9kZSkge1xuICByZXR1cm4gWydodG1sJywgJ2JvZHknLCAnI2RvY3VtZW50J10uaW5jbHVkZXMoZ2V0Tm9kZU5hbWUobm9kZSkpO1xufVxuZnVuY3Rpb24gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSB7XG4gIHJldHVybiBnZXRXaW5kb3coZWxlbWVudCkuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbn1cbmZ1bmN0aW9uIGdldE5vZGVTY3JvbGwoZWxlbWVudCkge1xuICBpZiAoaXNFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjcm9sbExlZnQ6IGVsZW1lbnQuc2Nyb2xsTGVmdCxcbiAgICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3BcbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxYLFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxZXG4gIH07XG59XG5mdW5jdGlvbiBnZXRQYXJlbnROb2RlKG5vZGUpIHtcbiAgaWYgKGdldE5vZGVOYW1lKG5vZGUpID09PSAnaHRtbCcpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuICBjb25zdCByZXN1bHQgPVxuICAvLyBTdGVwIGludG8gdGhlIHNoYWRvdyBET00gb2YgdGhlIHBhcmVudCBvZiBhIHNsb3R0ZWQgbm9kZS5cbiAgbm9kZS5hc3NpZ25lZFNsb3QgfHxcbiAgLy8gRE9NIEVsZW1lbnQgZGV0ZWN0ZWQuXG4gIG5vZGUucGFyZW50Tm9kZSB8fFxuICAvLyBTaGFkb3dSb290IGRldGVjdGVkLlxuICBpc1NoYWRvd1Jvb3Qobm9kZSkgJiYgbm9kZS5ob3N0IHx8XG4gIC8vIEZhbGxiYWNrLlxuICBnZXREb2N1bWVudEVsZW1lbnQobm9kZSk7XG4gIHJldHVybiBpc1NoYWRvd1Jvb3QocmVzdWx0KSA/IHJlc3VsdC5ob3N0IDogcmVzdWx0O1xufVxuZnVuY3Rpb24gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3Iobm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShub2RlKTtcbiAgaWYgKGlzTGFzdFRyYXZlcnNhYmxlTm9kZShwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBub2RlLm93bmVyRG9jdW1lbnQgPyBub2RlLm93bmVyRG9jdW1lbnQuYm9keSA6IG5vZGUuYm9keTtcbiAgfVxuICBpZiAoaXNIVE1MRWxlbWVudChwYXJlbnROb2RlKSAmJiBpc092ZXJmbG93RWxlbWVudChwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBwYXJlbnROb2RlO1xuICB9XG4gIHJldHVybiBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvcihwYXJlbnROb2RlKTtcbn1cbmZ1bmN0aW9uIGdldE92ZXJmbG93QW5jZXN0b3JzKG5vZGUsIGxpc3QsIHRyYXZlcnNlSWZyYW1lcykge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDI7XG4gIGlmIChsaXN0ID09PSB2b2lkIDApIHtcbiAgICBsaXN0ID0gW107XG4gIH1cbiAgaWYgKHRyYXZlcnNlSWZyYW1lcyA9PT0gdm9pZCAwKSB7XG4gICAgdHJhdmVyc2VJZnJhbWVzID0gdHJ1ZTtcbiAgfVxuICBjb25zdCBzY3JvbGxhYmxlQW5jZXN0b3IgPSBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcihub2RlKTtcbiAgY29uc3QgaXNCb2R5ID0gc2Nyb2xsYWJsZUFuY2VzdG9yID09PSAoKF9ub2RlJG93bmVyRG9jdW1lbnQyID0gbm9kZS5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkb3duZXJEb2N1bWVudDIuYm9keSk7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhzY3JvbGxhYmxlQW5jZXN0b3IpO1xuICBpZiAoaXNCb2R5KSB7XG4gICAgY29uc3QgZnJhbWVFbGVtZW50ID0gZ2V0RnJhbWVFbGVtZW50KHdpbik7XG4gICAgcmV0dXJuIGxpc3QuY29uY2F0KHdpbiwgd2luLnZpc3VhbFZpZXdwb3J0IHx8IFtdLCBpc092ZXJmbG93RWxlbWVudChzY3JvbGxhYmxlQW5jZXN0b3IpID8gc2Nyb2xsYWJsZUFuY2VzdG9yIDogW10sIGZyYW1lRWxlbWVudCAmJiB0cmF2ZXJzZUlmcmFtZXMgPyBnZXRPdmVyZmxvd0FuY2VzdG9ycyhmcmFtZUVsZW1lbnQpIDogW10pO1xuICB9XG4gIHJldHVybiBsaXN0LmNvbmNhdChzY3JvbGxhYmxlQW5jZXN0b3IsIGdldE92ZXJmbG93QW5jZXN0b3JzKHNjcm9sbGFibGVBbmNlc3RvciwgW10sIHRyYXZlcnNlSWZyYW1lcykpO1xufVxuZnVuY3Rpb24gZ2V0RnJhbWVFbGVtZW50KHdpbikge1xuICByZXR1cm4gd2luLnBhcmVudCAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2Yod2luLnBhcmVudCkgPyB3aW4uZnJhbWVFbGVtZW50IDogbnVsbDtcbn1cblxuZXhwb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgZ2V0Q29udGFpbmluZ0Jsb2NrLCBnZXREb2N1bWVudEVsZW1lbnQsIGdldEZyYW1lRWxlbWVudCwgZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IsIGdldE5vZGVOYW1lLCBnZXROb2RlU2Nyb2xsLCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgZ2V0UGFyZW50Tm9kZSwgZ2V0V2luZG93LCBpc0NvbnRhaW5pbmdCbG9jaywgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50LCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUsIGlzTm9kZSwgaXNPdmVyZmxvd0VsZW1lbnQsIGlzU2hhZG93Um9vdCwgaXNUYWJsZUVsZW1lbnQsIGlzVG9wTGF5ZXIsIGlzV2ViS2l0IH07XG4iLCJpbXBvcnQgeyByZWN0VG9DbGllbnRSZWN0LCBkZXRlY3RPdmVyZmxvdyBhcyBkZXRlY3RPdmVyZmxvdyQxLCBvZmZzZXQgYXMgb2Zmc2V0JDEsIGF1dG9QbGFjZW1lbnQgYXMgYXV0b1BsYWNlbWVudCQxLCBzaGlmdCBhcyBzaGlmdCQxLCBmbGlwIGFzIGZsaXAkMSwgc2l6ZSBhcyBzaXplJDEsIGhpZGUgYXMgaGlkZSQxLCBhcnJvdyBhcyBhcnJvdyQxLCBpbmxpbmUgYXMgaW5saW5lJDEsIGxpbWl0U2hpZnQgYXMgbGltaXRTaGlmdCQxLCBjb21wdXRlUG9zaXRpb24gYXMgY29tcHV0ZVBvc2l0aW9uJDEgfSBmcm9tICdAZmxvYXRpbmctdWkvY29yZSc7XG5pbXBvcnQgeyByb3VuZCwgY3JlYXRlQ29vcmRzLCBtYXgsIG1pbiwgZmxvb3IgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0Q29tcHV0ZWRTdHlsZSwgaXNIVE1MRWxlbWVudCwgaXNFbGVtZW50LCBnZXRXaW5kb3csIGlzV2ViS2l0LCBnZXRGcmFtZUVsZW1lbnQsIGdldE5vZGVTY3JvbGwsIGdldERvY3VtZW50RWxlbWVudCwgaXNUb3BMYXllciwgZ2V0Tm9kZU5hbWUsIGlzT3ZlcmZsb3dFbGVtZW50LCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgZ2V0UGFyZW50Tm9kZSwgaXNMYXN0VHJhdmVyc2FibGVOb2RlLCBpc0NvbnRhaW5pbmdCbG9jaywgaXNUYWJsZUVsZW1lbnQsIGdldENvbnRhaW5pbmdCbG9jayB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuZXhwb3J0IHsgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMgfSBmcm9tICdAZmxvYXRpbmctdWkvdXRpbHMvZG9tJztcblxuZnVuY3Rpb24gZ2V0Q3NzRGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIGNvbnN0IGNzcyA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIC8vIEluIHRlc3RpbmcgZW52aXJvbm1lbnRzLCB0aGUgYHdpZHRoYCBhbmQgYGhlaWdodGAgcHJvcGVydGllcyBhcmUgZW1wdHlcbiAgLy8gc3RyaW5ncyBmb3IgU1ZHIGVsZW1lbnRzLCByZXR1cm5pbmcgTmFOLiBGYWxsYmFjayB0byBgMGAgaW4gdGhpcyBjYXNlLlxuICBsZXQgd2lkdGggPSBwYXJzZUZsb2F0KGNzcy53aWR0aCkgfHwgMDtcbiAgbGV0IGhlaWdodCA9IHBhcnNlRmxvYXQoY3NzLmhlaWdodCkgfHwgMDtcbiAgY29uc3QgaGFzT2Zmc2V0ID0gaXNIVE1MRWxlbWVudChlbGVtZW50KTtcbiAgY29uc3Qgb2Zmc2V0V2lkdGggPSBoYXNPZmZzZXQgPyBlbGVtZW50Lm9mZnNldFdpZHRoIDogd2lkdGg7XG4gIGNvbnN0IG9mZnNldEhlaWdodCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogaGVpZ2h0O1xuICBjb25zdCBzaG91bGRGYWxsYmFjayA9IHJvdW5kKHdpZHRoKSAhPT0gb2Zmc2V0V2lkdGggfHwgcm91bmQoaGVpZ2h0KSAhPT0gb2Zmc2V0SGVpZ2h0O1xuICBpZiAoc2hvdWxkRmFsbGJhY2spIHtcbiAgICB3aWR0aCA9IG9mZnNldFdpZHRoO1xuICAgIGhlaWdodCA9IG9mZnNldEhlaWdodDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkOiBzaG91bGRGYWxsYmFja1xuICB9O1xufVxuXG5mdW5jdGlvbiB1bndyYXBFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuICFpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50LmNvbnRleHRFbGVtZW50IDogZWxlbWVudDtcbn1cblxuZnVuY3Rpb24gZ2V0U2NhbGUoZWxlbWVudCkge1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGRvbUVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNvb3JkcygxKTtcbiAgfVxuICBjb25zdCByZWN0ID0gZG9tRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3Qge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICAkXG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGRvbUVsZW1lbnQpO1xuICBsZXQgeCA9ICgkID8gcm91bmQocmVjdC53aWR0aCkgOiByZWN0LndpZHRoKSAvIHdpZHRoO1xuICBsZXQgeSA9ICgkID8gcm91bmQocmVjdC5oZWlnaHQpIDogcmVjdC5oZWlnaHQpIC8gaGVpZ2h0O1xuXG4gIC8vIDAsIE5hTiwgb3IgSW5maW5pdHkgc2hvdWxkIGFsd2F5cyBmYWxsYmFjayB0byAxLlxuXG4gIGlmICgheCB8fCAhTnVtYmVyLmlzRmluaXRlKHgpKSB7XG4gICAgeCA9IDE7XG4gIH1cbiAgaWYgKCF5IHx8ICFOdW1iZXIuaXNGaW5pdGUoeSkpIHtcbiAgICB5ID0gMTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5jb25zdCBub09mZnNldHMgPSAvKiNfX1BVUkVfXyovY3JlYXRlQ29vcmRzKDApO1xuZnVuY3Rpb24gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgaWYgKCFpc1dlYktpdCgpIHx8ICF3aW4udmlzdWFsVmlld3BvcnQpIHtcbiAgICByZXR1cm4gbm9PZmZzZXRzO1xuICB9XG4gIHJldHVybiB7XG4gICAgeDogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQsXG4gICAgeTogd2luLnZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcFxuICB9O1xufVxuZnVuY3Rpb24gc2hvdWxkQWRkVmlzdWFsT2Zmc2V0cyhlbGVtZW50LCBpc0ZpeGVkLCBmbG9hdGluZ09mZnNldFBhcmVudCkge1xuICBpZiAoaXNGaXhlZCA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZCA9IGZhbHNlO1xuICB9XG4gIGlmICghZmxvYXRpbmdPZmZzZXRQYXJlbnQgfHwgaXNGaXhlZCAmJiBmbG9hdGluZ09mZnNldFBhcmVudCAhPT0gZ2V0V2luZG93KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBpc0ZpeGVkO1xufVxuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgaW5jbHVkZVNjYWxlLCBpc0ZpeGVkU3RyYXRlZ3ksIG9mZnNldFBhcmVudCkge1xuICBpZiAoaW5jbHVkZVNjYWxlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlU2NhbGUgPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNGaXhlZFN0cmF0ZWd5ID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkU3RyYXRlZ3kgPSBmYWxzZTtcbiAgfVxuICBjb25zdCBjbGllbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgZG9tRWxlbWVudCA9IHVud3JhcEVsZW1lbnQoZWxlbWVudCk7XG4gIGxldCBzY2FsZSA9IGNyZWF0ZUNvb3JkcygxKTtcbiAgaWYgKGluY2x1ZGVTY2FsZSkge1xuICAgIGlmIChvZmZzZXRQYXJlbnQpIHtcbiAgICAgIGlmIChpc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNjYWxlID0gZ2V0U2NhbGUoZWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHZpc3VhbE9mZnNldHMgPSBzaG91bGRBZGRWaXN1YWxPZmZzZXRzKGRvbUVsZW1lbnQsIGlzRml4ZWRTdHJhdGVneSwgb2Zmc2V0UGFyZW50KSA/IGdldFZpc3VhbE9mZnNldHMoZG9tRWxlbWVudCkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIGxldCB4ID0gKGNsaWVudFJlY3QubGVmdCArIHZpc3VhbE9mZnNldHMueCkgLyBzY2FsZS54O1xuICBsZXQgeSA9IChjbGllbnRSZWN0LnRvcCArIHZpc3VhbE9mZnNldHMueSkgLyBzY2FsZS55O1xuICBsZXQgd2lkdGggPSBjbGllbnRSZWN0LndpZHRoIC8gc2NhbGUueDtcbiAgbGV0IGhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0IC8gc2NhbGUueTtcbiAgaWYgKGRvbUVsZW1lbnQpIHtcbiAgICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZG9tRWxlbWVudCk7XG4gICAgY29uc3Qgb2Zmc2V0V2luID0gb2Zmc2V0UGFyZW50ICYmIGlzRWxlbWVudChvZmZzZXRQYXJlbnQpID8gZ2V0V2luZG93KG9mZnNldFBhcmVudCkgOiBvZmZzZXRQYXJlbnQ7XG4gICAgbGV0IGN1cnJlbnRXaW4gPSB3aW47XG4gICAgbGV0IGN1cnJlbnRJRnJhbWUgPSBnZXRGcmFtZUVsZW1lbnQoY3VycmVudFdpbik7XG4gICAgd2hpbGUgKGN1cnJlbnRJRnJhbWUgJiYgb2Zmc2V0UGFyZW50ICYmIG9mZnNldFdpbiAhPT0gY3VycmVudFdpbikge1xuICAgICAgY29uc3QgaWZyYW1lU2NhbGUgPSBnZXRTY2FsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGlmcmFtZVJlY3QgPSBjdXJyZW50SUZyYW1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50SUZyYW1lKTtcbiAgICAgIGNvbnN0IGxlZnQgPSBpZnJhbWVSZWN0LmxlZnQgKyAoY3VycmVudElGcmFtZS5jbGllbnRMZWZ0ICsgcGFyc2VGbG9hdChjc3MucGFkZGluZ0xlZnQpKSAqIGlmcmFtZVNjYWxlLng7XG4gICAgICBjb25zdCB0b3AgPSBpZnJhbWVSZWN0LnRvcCArIChjdXJyZW50SUZyYW1lLmNsaWVudFRvcCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdUb3ApKSAqIGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICB5ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB3aWR0aCAqPSBpZnJhbWVTY2FsZS54O1xuICAgICAgaGVpZ2h0ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICs9IGxlZnQ7XG4gICAgICB5ICs9IHRvcDtcbiAgICAgIGN1cnJlbnRXaW4gPSBnZXRXaW5kb3coY3VycmVudElGcmFtZSk7XG4gICAgICBjdXJyZW50SUZyYW1lID0gZ2V0RnJhbWVFbGVtZW50KGN1cnJlbnRXaW4pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdCh7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9KTtcbn1cblxuLy8gSWYgPGh0bWw+IGhhcyBhIENTUyB3aWR0aCBncmVhdGVyIHRoYW4gdGhlIHZpZXdwb3J0LCB0aGVuIHRoaXMgd2lsbCBiZVxuLy8gaW5jb3JyZWN0IGZvciBSVEwuXG5mdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQsIHJlY3QpIHtcbiAgY29uc3QgbGVmdFNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCkuc2Nyb2xsTGVmdDtcbiAgaWYgKCFyZWN0KSB7XG4gICAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBsZWZ0U2Nyb2xsO1xuICB9XG4gIHJldHVybiByZWN0LmxlZnQgKyBsZWZ0U2Nyb2xsO1xufVxuXG5mdW5jdGlvbiBnZXRIVE1MT2Zmc2V0KGRvY3VtZW50RWxlbWVudCwgc2Nyb2xsLCBpZ25vcmVTY3JvbGxiYXJYKSB7XG4gIGlmIChpZ25vcmVTY3JvbGxiYXJYID09PSB2b2lkIDApIHtcbiAgICBpZ25vcmVTY3JvbGxiYXJYID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgaHRtbFJlY3QgPSBkb2N1bWVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHggPSBodG1sUmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSAoaWdub3JlU2Nyb2xsYmFyWCA/IDAgOlxuICAvLyBSVEwgPGJvZHk+IHNjcm9sbGJhci5cbiAgZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQsIGh0bWxSZWN0KSk7XG4gIGNvbnN0IHkgPSBodG1sUmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wO1xuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudHMsXG4gICAgcmVjdCxcbiAgICBvZmZzZXRQYXJlbnQsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGlzRml4ZWQgPSBzdHJhdGVneSA9PT0gJ2ZpeGVkJztcbiAgY29uc3QgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IHRvcExheWVyID0gZWxlbWVudHMgPyBpc1RvcExheWVyKGVsZW1lbnRzLmZsb2F0aW5nKSA6IGZhbHNlO1xuICBpZiAob2Zmc2V0UGFyZW50ID09PSBkb2N1bWVudEVsZW1lbnQgfHwgdG9wTGF5ZXIgJiYgaXNGaXhlZCkge1xuICAgIHJldHVybiByZWN0O1xuICB9XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgbGV0IHNjYWxlID0gY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCBvZmZzZXRzID0gY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBjb25zdCBvZmZzZXRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCk7XG4gICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfVxuICB9XG4gIGNvbnN0IGh0bWxPZmZzZXQgPSBkb2N1bWVudEVsZW1lbnQgJiYgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkID8gZ2V0SFRNTE9mZnNldChkb2N1bWVudEVsZW1lbnQsIHNjcm9sbCwgdHJ1ZSkgOiBjcmVhdGVDb29yZHMoMCk7XG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHJlY3Qud2lkdGggKiBzY2FsZS54LFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHQgKiBzY2FsZS55LFxuICAgIHg6IHJlY3QueCAqIHNjYWxlLnggLSBzY3JvbGwuc2Nyb2xsTGVmdCAqIHNjYWxlLnggKyBvZmZzZXRzLnggKyBodG1sT2Zmc2V0LngsXG4gICAgeTogcmVjdC55ICogc2NhbGUueSAtIHNjcm9sbC5zY3JvbGxUb3AgKiBzY2FsZS55ICsgb2Zmc2V0cy55ICsgaHRtbE9mZnNldC55XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RzKGVsZW1lbnQpIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oZWxlbWVudC5nZXRDbGllbnRSZWN0cygpKTtcbn1cblxuLy8gR2V0cyB0aGUgZW50aXJlIHNpemUgb2YgdGhlIHNjcm9sbGFibGUgZG9jdW1lbnQgYXJlYSwgZXZlbiBleHRlbmRpbmcgb3V0c2lkZVxuLy8gb2YgdGhlIGA8aHRtbD5gIGFuZCBgPGJvZHk+YCByZWN0IGJvdW5kcyBpZiBob3Jpem9udGFsbHkgc2Nyb2xsYWJsZS5cbmZ1bmN0aW9uIGdldERvY3VtZW50UmVjdChlbGVtZW50KSB7XG4gIGNvbnN0IGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IHNjcm9sbCA9IGdldE5vZGVTY3JvbGwoZWxlbWVudCk7XG4gIGNvbnN0IGJvZHkgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuYm9keTtcbiAgY29uc3Qgd2lkdGggPSBtYXgoaHRtbC5zY3JvbGxXaWR0aCwgaHRtbC5jbGllbnRXaWR0aCwgYm9keS5zY3JvbGxXaWR0aCwgYm9keS5jbGllbnRXaWR0aCk7XG4gIGNvbnN0IGhlaWdodCA9IG1heChodG1sLnNjcm9sbEhlaWdodCwgaHRtbC5jbGllbnRIZWlnaHQsIGJvZHkuc2Nyb2xsSGVpZ2h0LCBib2R5LmNsaWVudEhlaWdodCk7XG4gIGxldCB4ID0gLXNjcm9sbC5zY3JvbGxMZWZ0ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KTtcbiAgY29uc3QgeSA9IC1zY3JvbGwuc2Nyb2xsVG9wO1xuICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShib2R5KS5kaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgeCArPSBtYXgoaHRtbC5jbGllbnRXaWR0aCwgYm9keS5jbGllbnRXaWR0aCkgLSB3aWR0aDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3QgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIGxldCB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIGxldCBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgbGV0IHggPSAwO1xuICBsZXQgeSA9IDA7XG4gIGlmICh2aXN1YWxWaWV3cG9ydCkge1xuICAgIHdpZHRoID0gdmlzdWFsVmlld3BvcnQud2lkdGg7XG4gICAgaGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuaGVpZ2h0O1xuICAgIGNvbnN0IHZpc3VhbFZpZXdwb3J0QmFzZWQgPSBpc1dlYktpdCgpO1xuICAgIGlmICghdmlzdWFsVmlld3BvcnRCYXNlZCB8fCB2aXN1YWxWaWV3cG9ydEJhc2VkICYmIHN0cmF0ZWd5ID09PSAnZml4ZWQnKSB7XG4gICAgICB4ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdDtcbiAgICAgIHkgPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3A7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG4vLyBSZXR1cm5zIHRoZSBpbm5lciBjbGllbnQgcmVjdCwgc3VidHJhY3Rpbmcgc2Nyb2xsYmFycyBpZiBwcmVzZW50LlxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCB0cnVlLCBzdHJhdGVneSA9PT0gJ2ZpeGVkJyk7XG4gIGNvbnN0IHRvcCA9IGNsaWVudFJlY3QudG9wICsgZWxlbWVudC5jbGllbnRUb3A7XG4gIGNvbnN0IGxlZnQgPSBjbGllbnRSZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIGNvbnN0IHNjYWxlID0gaXNIVE1MRWxlbWVudChlbGVtZW50KSA/IGdldFNjYWxlKGVsZW1lbnQpIDogY3JlYXRlQ29vcmRzKDEpO1xuICBjb25zdCB3aWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGggKiBzY2FsZS54O1xuICBjb25zdCBoZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodCAqIHNjYWxlLnk7XG4gIGNvbnN0IHggPSBsZWZ0ICogc2NhbGUueDtcbiAgY29uc3QgeSA9IHRvcCAqIHNjYWxlLnk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KSB7XG4gIGxldCByZWN0O1xuICBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gJ3ZpZXdwb3J0Jykge1xuICAgIHJlY3QgPSBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpO1xuICB9IGVsc2UgaWYgKGNsaXBwaW5nQW5jZXN0b3IgPT09ICdkb2N1bWVudCcpIHtcbiAgICByZWN0ID0gZ2V0RG9jdW1lbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSk7XG4gIH0gZWxzZSBpZiAoaXNFbGVtZW50KGNsaXBwaW5nQW5jZXN0b3IpKSB7XG4gICAgcmVjdCA9IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB2aXN1YWxPZmZzZXRzID0gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KTtcbiAgICByZWN0ID0ge1xuICAgICAgeDogY2xpcHBpbmdBbmNlc3Rvci54IC0gdmlzdWFsT2Zmc2V0cy54LFxuICAgICAgeTogY2xpcHBpbmdBbmNlc3Rvci55IC0gdmlzdWFsT2Zmc2V0cy55LFxuICAgICAgd2lkdGg6IGNsaXBwaW5nQW5jZXN0b3Iud2lkdGgsXG4gICAgICBoZWlnaHQ6IGNsaXBwaW5nQW5jZXN0b3IuaGVpZ2h0XG4gICAgfTtcbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdChyZWN0KTtcbn1cbmZ1bmN0aW9uIGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihlbGVtZW50LCBzdG9wTm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgaWYgKHBhcmVudE5vZGUgPT09IHN0b3BOb2RlIHx8ICFpc0VsZW1lbnQocGFyZW50Tm9kZSkgfHwgaXNMYXN0VHJhdmVyc2FibGVOb2RlKHBhcmVudE5vZGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBnZXRDb21wdXRlZFN0eWxlKHBhcmVudE5vZGUpLnBvc2l0aW9uID09PSAnZml4ZWQnIHx8IGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihwYXJlbnROb2RlLCBzdG9wTm9kZSk7XG59XG5cbi8vIEEgXCJjbGlwcGluZyBhbmNlc3RvclwiIGlzIGFuIGBvdmVyZmxvd2AgZWxlbWVudCB3aXRoIHRoZSBjaGFyYWN0ZXJpc3RpYyBvZlxuLy8gY2xpcHBpbmcgKG9yIGhpZGluZykgY2hpbGQgZWxlbWVudHMuIFRoaXMgcmV0dXJucyBhbGwgY2xpcHBpbmcgYW5jZXN0b3JzXG4vLyBvZiB0aGUgZ2l2ZW4gZWxlbWVudCB1cCB0aGUgdHJlZS5cbmZ1bmN0aW9uIGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyhlbGVtZW50LCBjYWNoZSkge1xuICBjb25zdCBjYWNoZWRSZXN1bHQgPSBjYWNoZS5nZXQoZWxlbWVudCk7XG4gIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICB9XG4gIGxldCByZXN1bHQgPSBnZXRPdmVyZmxvd0FuY2VzdG9ycyhlbGVtZW50LCBbXSwgZmFsc2UpLmZpbHRlcihlbCA9PiBpc0VsZW1lbnQoZWwpICYmIGdldE5vZGVOYW1lKGVsKSAhPT0gJ2JvZHknKTtcbiAgbGV0IGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gbnVsbDtcbiAgY29uc3QgZWxlbWVudElzRml4ZWQgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnO1xuICBsZXQgY3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/IGdldFBhcmVudE5vZGUoZWxlbWVudCkgOiBlbGVtZW50O1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIHdoaWxlIChpc0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudE5vZGUpO1xuICAgIGNvbnN0IGN1cnJlbnROb2RlSXNDb250YWluaW5nID0gaXNDb250YWluaW5nQmxvY2soY3VycmVudE5vZGUpO1xuICAgIGlmICghY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgICAgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBudWxsO1xuICAgIH1cbiAgICBjb25zdCBzaG91bGREcm9wQ3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiAhY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgOiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycgJiYgISFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSAmJiBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5jbHVkZXMoY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUucG9zaXRpb24pIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGVsZW1lbnQsIGN1cnJlbnROb2RlKTtcbiAgICBpZiAoc2hvdWxkRHJvcEN1cnJlbnROb2RlKSB7XG4gICAgICAvLyBEcm9wIG5vbi1jb250YWluaW5nIGJsb2Nrcy5cbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoYW5jZXN0b3IgPT4gYW5jZXN0b3IgIT09IGN1cnJlbnROb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVjb3JkIGxhc3QgY29udGFpbmluZyBibG9jayBmb3IgbmV4dCBpdGVyYXRpb24uXG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IGNvbXB1dGVkU3R5bGU7XG4gICAgfVxuICAgIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShjdXJyZW50Tm9kZSk7XG4gIH1cbiAgY2FjaGUuc2V0KGVsZW1lbnQsIHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIEdldHMgdGhlIG1heGltdW0gYXJlYSB0aGF0IHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gZHVlIHRvIGFueSBudW1iZXIgb2Zcbi8vIGNsaXBwaW5nIGFuY2VzdG9ycy5cbmZ1bmN0aW9uIGdldENsaXBwaW5nUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudCxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGVsZW1lbnRDbGlwcGluZ0FuY2VzdG9ycyA9IGJvdW5kYXJ5ID09PSAnY2xpcHBpbmdBbmNlc3RvcnMnID8gaXNUb3BMYXllcihlbGVtZW50KSA/IFtdIDogZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzKGVsZW1lbnQsIHRoaXMuX2MpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgY29uc3QgY2xpcHBpbmdBbmNlc3RvcnMgPSBbLi4uZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzLCByb290Qm91bmRhcnldO1xuICBjb25zdCBmaXJzdENsaXBwaW5nQW5jZXN0b3IgPSBjbGlwcGluZ0FuY2VzdG9yc1swXTtcbiAgY29uc3QgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdBbmNlc3RvcnMucmVkdWNlKChhY2NSZWN0LCBjbGlwcGluZ0FuY2VzdG9yKSA9PiB7XG4gICAgY29uc3QgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGZpcnN0Q2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQsXG4gICAgaGVpZ2h0OiBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcCxcbiAgICB4OiBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICB5OiBjbGlwcGluZ1JlY3QudG9wXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldERpbWVuc2lvbnMoZWxlbWVudCkge1xuICBjb25zdCB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0XG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudChlbGVtZW50LCBvZmZzZXRQYXJlbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgaXNGaXhlZCA9IHN0cmF0ZWd5ID09PSAnZml4ZWQnO1xuICBjb25zdCByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgY29uc3Qgb2Zmc2V0cyA9IGNyZWF0ZUNvb3JkcygwKTtcbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgaXNPdmVyZmxvd0VsZW1lbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50LCB0cnVlLCBpc0ZpeGVkLCBvZmZzZXRQYXJlbnQpO1xuICAgICAgb2Zmc2V0cy54ID0gb2Zmc2V0UmVjdC54ICsgb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgPSBvZmZzZXRSZWN0LnkgKyBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICAvLyBJZiB0aGUgPGJvZHk+IHNjcm9sbGJhciBhcHBlYXJzIG9uIHRoZSBsZWZ0IChlLmcuIFJUTCBzeXN0ZW1zKS4gVXNlXG4gICAgICAvLyBGaXJlZm94IHdpdGggbGF5b3V0LnNjcm9sbGJhci5zaWRlID0gMyBpbiBhYm91dDpjb25maWcgdG8gdGVzdCB0aGlzLlxuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuICBjb25zdCBodG1sT2Zmc2V0ID0gZG9jdW1lbnRFbGVtZW50ICYmICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCA/IGdldEhUTUxPZmZzZXQoZG9jdW1lbnRFbGVtZW50LCBzY3JvbGwpIDogY3JlYXRlQ29vcmRzKDApO1xuICBjb25zdCB4ID0gcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLnggLSBodG1sT2Zmc2V0Lng7XG4gIGNvbnN0IHkgPSByZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3AgLSBvZmZzZXRzLnkgLSBodG1sT2Zmc2V0Lnk7XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNTdGF0aWNQb3NpdGlvbmVkKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnO1xufVxuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHBvbHlmaWxsKSB7XG4gICAgcmV0dXJuIHBvbHlmaWxsKGVsZW1lbnQpO1xuICB9XG4gIGxldCByYXdPZmZzZXRQYXJlbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDtcblxuICAvLyBGaXJlZm94IHJldHVybnMgdGhlIDxodG1sPiBlbGVtZW50IGFzIHRoZSBvZmZzZXRQYXJlbnQgaWYgaXQncyBub24tc3RhdGljLFxuICAvLyB3aGlsZSBDaHJvbWUgYW5kIFNhZmFyaSByZXR1cm4gdGhlIDxib2R5PiBlbGVtZW50LiBUaGUgPGJvZHk+IGVsZW1lbnQgbXVzdFxuICAvLyBiZSB1c2VkIHRvIHBlcmZvcm0gdGhlIGNvcnJlY3QgY2FsY3VsYXRpb25zIGV2ZW4gaWYgdGhlIDxodG1sPiBlbGVtZW50IGlzXG4gIC8vIG5vbi1zdGF0aWMuXG4gIGlmIChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkgPT09IHJhd09mZnNldFBhcmVudCkge1xuICAgIHJhd09mZnNldFBhcmVudCA9IHJhd09mZnNldFBhcmVudC5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cbiAgcmV0dXJuIHJhd09mZnNldFBhcmVudDtcbn1cblxuLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cbmZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGlmIChpc1RvcExheWVyKGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBsZXQgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgICB3aGlsZSAoc3ZnT2Zmc2V0UGFyZW50ICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgaWYgKGlzRWxlbWVudChzdmdPZmZzZXRQYXJlbnQpICYmICFpc1N0YXRpY1Bvc2l0aW9uZWQoc3ZnT2Zmc2V0UGFyZW50KSkge1xuICAgICAgICByZXR1cm4gc3ZnT2Zmc2V0UGFyZW50O1xuICAgICAgfVxuICAgICAgc3ZnT2Zmc2V0UGFyZW50ID0gZ2V0UGFyZW50Tm9kZShzdmdPZmZzZXRQYXJlbnQpO1xuICAgIH1cbiAgICByZXR1cm4gd2luO1xuICB9XG4gIGxldCBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKTtcbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQsIHBvbHlmaWxsKTtcbiAgfVxuICBpZiAob2Zmc2V0UGFyZW50ICYmIGlzTGFzdFRyYXZlcnNhYmxlTm9kZShvZmZzZXRQYXJlbnQpICYmIGlzU3RhdGljUG9zaXRpb25lZChvZmZzZXRQYXJlbnQpICYmICFpc0NvbnRhaW5pbmdCbG9jayhvZmZzZXRQYXJlbnQpKSB7XG4gICAgcmV0dXJuIHdpbjtcbiAgfVxuICByZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB8fCB3aW47XG59XG5cbmNvbnN0IGdldEVsZW1lbnRSZWN0cyA9IGFzeW5jIGZ1bmN0aW9uIChkYXRhKSB7XG4gIGNvbnN0IGdldE9mZnNldFBhcmVudEZuID0gdGhpcy5nZXRPZmZzZXRQYXJlbnQgfHwgZ2V0T2Zmc2V0UGFyZW50O1xuICBjb25zdCBnZXREaW1lbnNpb25zRm4gPSB0aGlzLmdldERpbWVuc2lvbnM7XG4gIGNvbnN0IGZsb2F0aW5nRGltZW5zaW9ucyA9IGF3YWl0IGdldERpbWVuc2lvbnNGbihkYXRhLmZsb2F0aW5nKTtcbiAgcmV0dXJuIHtcbiAgICByZWZlcmVuY2U6IGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGRhdGEucmVmZXJlbmNlLCBhd2FpdCBnZXRPZmZzZXRQYXJlbnRGbihkYXRhLmZsb2F0aW5nKSwgZGF0YS5zdHJhdGVneSksXG4gICAgZmxvYXRpbmc6IHtcbiAgICAgIHg6IDAsXG4gICAgICB5OiAwLFxuICAgICAgd2lkdGg6IGZsb2F0aW5nRGltZW5zaW9ucy53aWR0aCxcbiAgICAgIGhlaWdodDogZmxvYXRpbmdEaW1lbnNpb25zLmhlaWdodFxuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGlzUlRMKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkuZGlyZWN0aW9uID09PSAncnRsJztcbn1cblxuY29uc3QgcGxhdGZvcm0gPSB7XG4gIGNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0LFxuICBnZXREb2N1bWVudEVsZW1lbnQsXG4gIGdldENsaXBwaW5nUmVjdCxcbiAgZ2V0T2Zmc2V0UGFyZW50LFxuICBnZXRFbGVtZW50UmVjdHMsXG4gIGdldENsaWVudFJlY3RzLFxuICBnZXREaW1lbnNpb25zLFxuICBnZXRTY2FsZSxcbiAgaXNFbGVtZW50LFxuICBpc1JUTFxufTtcblxuZnVuY3Rpb24gcmVjdHNBcmVFcXVhbChhLCBiKSB7XG4gIHJldHVybiBhLnggPT09IGIueCAmJiBhLnkgPT09IGIueSAmJiBhLndpZHRoID09PSBiLndpZHRoICYmIGEuaGVpZ2h0ID09PSBiLmhlaWdodDtcbn1cblxuLy8gaHR0cHM6Ly9zYW10aG9yLmF1LzIwMjEvb2JzZXJ2aW5nLWRvbS9cbmZ1bmN0aW9uIG9ic2VydmVNb3ZlKGVsZW1lbnQsIG9uTW92ZSkge1xuICBsZXQgaW8gPSBudWxsO1xuICBsZXQgdGltZW91dElkO1xuICBjb25zdCByb290ID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIHZhciBfaW87XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgKF9pbyA9IGlvKSA9PSBudWxsIHx8IF9pby5kaXNjb25uZWN0KCk7XG4gICAgaW8gPSBudWxsO1xuICB9XG4gIGZ1bmN0aW9uIHJlZnJlc2goc2tpcCwgdGhyZXNob2xkKSB7XG4gICAgaWYgKHNraXAgPT09IHZvaWQgMCkge1xuICAgICAgc2tpcCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhyZXNob2xkID09PSB2b2lkIDApIHtcbiAgICAgIHRocmVzaG9sZCA9IDE7XG4gICAgfVxuICAgIGNsZWFudXAoKTtcbiAgICBjb25zdCBlbGVtZW50UmVjdEZvclJvb3RNYXJnaW4gPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHtcbiAgICAgIGxlZnQsXG4gICAgICB0b3AsXG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodFxuICAgIH0gPSBlbGVtZW50UmVjdEZvclJvb3RNYXJnaW47XG4gICAgaWYgKCFza2lwKSB7XG4gICAgICBvbk1vdmUoKTtcbiAgICB9XG4gICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGluc2V0VG9wID0gZmxvb3IodG9wKTtcbiAgICBjb25zdCBpbnNldFJpZ2h0ID0gZmxvb3Iocm9vdC5jbGllbnRXaWR0aCAtIChsZWZ0ICsgd2lkdGgpKTtcbiAgICBjb25zdCBpbnNldEJvdHRvbSA9IGZsb29yKHJvb3QuY2xpZW50SGVpZ2h0IC0gKHRvcCArIGhlaWdodCkpO1xuICAgIGNvbnN0IGluc2V0TGVmdCA9IGZsb29yKGxlZnQpO1xuICAgIGNvbnN0IHJvb3RNYXJnaW4gPSAtaW5zZXRUb3AgKyBcInB4IFwiICsgLWluc2V0UmlnaHQgKyBcInB4IFwiICsgLWluc2V0Qm90dG9tICsgXCJweCBcIiArIC1pbnNldExlZnQgKyBcInB4XCI7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3RNYXJnaW4sXG4gICAgICB0aHJlc2hvbGQ6IG1heCgwLCBtaW4oMSwgdGhyZXNob2xkKSkgfHwgMVxuICAgIH07XG4gICAgbGV0IGlzRmlyc3RVcGRhdGUgPSB0cnVlO1xuICAgIGZ1bmN0aW9uIGhhbmRsZU9ic2VydmUoZW50cmllcykge1xuICAgICAgY29uc3QgcmF0aW8gPSBlbnRyaWVzWzBdLmludGVyc2VjdGlvblJhdGlvO1xuICAgICAgaWYgKHJhdGlvICE9PSB0aHJlc2hvbGQpIHtcbiAgICAgICAgaWYgKCFpc0ZpcnN0VXBkYXRlKSB7XG4gICAgICAgICAgcmV0dXJuIHJlZnJlc2goKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJhdGlvKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIHJlZmVyZW5jZSBpcyBjbGlwcGVkLCB0aGUgcmF0aW8gaXMgMC4gVGhyb3R0bGUgdGhlIHJlZnJlc2hcbiAgICAgICAgICAvLyB0byBwcmV2ZW50IGFuIGluZmluaXRlIGxvb3Agb2YgdXBkYXRlcy5cbiAgICAgICAgICB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHJlZnJlc2goZmFsc2UsIDFlLTcpO1xuICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlZnJlc2goZmFsc2UsIHJhdGlvKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHJhdGlvID09PSAxICYmICFyZWN0c0FyZUVxdWFsKGVsZW1lbnRSZWN0Rm9yUm9vdE1hcmdpbiwgZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSkpIHtcbiAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IGV2ZW4gdGhvdWdoIHRoZSByYXRpbyBpcyByZXBvcnRlZCBhcyAxLCB0aGVcbiAgICAgICAgLy8gZWxlbWVudCBpcyBub3QgYWN0dWFsbHkgZnVsbHkgd2l0aGluIHRoZSBJbnRlcnNlY3Rpb25PYnNlcnZlcidzIHJvb3RcbiAgICAgICAgLy8gYXJlYSBhbnltb3JlLiBUaGlzIGNhbiBoYXBwZW4gdW5kZXIgcGVyZm9ybWFuY2UgY29uc3RyYWludHMuIFRoaXMgbWF5XG4gICAgICAgIC8vIGJlIGEgYnVnIGluIHRoZSBicm93c2VyJ3MgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgaW1wbGVtZW50YXRpb24uIFRvXG4gICAgICAgIC8vIHdvcmsgYXJvdW5kIHRoaXMsIHdlIGNvbXBhcmUgdGhlIGVsZW1lbnQncyBib3VuZGluZyByZWN0IG5vdyB3aXRoXG4gICAgICAgIC8vIHdoYXQgaXQgd2FzIGF0IHRoZSB0aW1lIHdlIGNyZWF0ZWQgdGhlIEludGVyc2VjdGlvbk9ic2VydmVyLiBJZiB0aGV5XG4gICAgICAgIC8vIGFyZSBub3QgZXF1YWwgdGhlbiB0aGUgZWxlbWVudCBtb3ZlZCwgc28gd2UgcmVmcmVzaC5cbiAgICAgICAgcmVmcmVzaCgpO1xuICAgICAgfVxuICAgICAgaXNGaXJzdFVwZGF0ZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIE9sZGVyIGJyb3dzZXJzIGRvbid0IHN1cHBvcnQgYSBgZG9jdW1lbnRgIGFzIHRoZSByb290IGFuZCB3aWxsIHRocm93IGFuXG4gICAgLy8gZXJyb3IuXG4gICAgdHJ5IHtcbiAgICAgIGlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGhhbmRsZU9ic2VydmUsIHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgLy8gSGFuZGxlIDxpZnJhbWU+c1xuICAgICAgICByb290OiByb290Lm93bmVyRG9jdW1lbnRcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGhhbmRsZU9ic2VydmUsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBpby5vYnNlcnZlKGVsZW1lbnQpO1xuICB9XG4gIHJlZnJlc2godHJ1ZSk7XG4gIHJldHVybiBjbGVhbnVwO1xufVxuXG4vKipcbiAqIEF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgd2hlbiBuZWNlc3NhcnkuXG4gKiBTaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiB0aGUgZmxvYXRpbmcgZWxlbWVudCBpcyBtb3VudGVkIG9uIHRoZSBET00gb3JcbiAqIHZpc2libGUgb24gdGhlIHNjcmVlbi5cbiAqIEByZXR1cm5zIGNsZWFudXAgZnVuY3Rpb24gdGhhdCBzaG91bGQgYmUgaW52b2tlZCB3aGVuIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzXG4gKiByZW1vdmVkIGZyb20gdGhlIERPTSBvciBoaWRkZW4gZnJvbSB0aGUgc2NyZWVuLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2F1dG9VcGRhdGVcbiAqL1xuZnVuY3Rpb24gYXV0b1VwZGF0ZShyZWZlcmVuY2UsIGZsb2F0aW5nLCB1cGRhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgYW5jZXN0b3JTY3JvbGwgPSB0cnVlLFxuICAgIGFuY2VzdG9yUmVzaXplID0gdHJ1ZSxcbiAgICBlbGVtZW50UmVzaXplID0gdHlwZW9mIFJlc2l6ZU9ic2VydmVyID09PSAnZnVuY3Rpb24nLFxuICAgIGxheW91dFNoaWZ0ID0gdHlwZW9mIEludGVyc2VjdGlvbk9ic2VydmVyID09PSAnZnVuY3Rpb24nLFxuICAgIGFuaW1hdGlvbkZyYW1lID0gZmFsc2VcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHJlZmVyZW5jZUVsID0gdW53cmFwRWxlbWVudChyZWZlcmVuY2UpO1xuICBjb25zdCBhbmNlc3RvcnMgPSBhbmNlc3RvclNjcm9sbCB8fCBhbmNlc3RvclJlc2l6ZSA/IFsuLi4ocmVmZXJlbmNlRWwgPyBnZXRPdmVyZmxvd0FuY2VzdG9ycyhyZWZlcmVuY2VFbCkgOiBbXSksIC4uLmdldE92ZXJmbG93QW5jZXN0b3JzKGZsb2F0aW5nKV0gOiBbXTtcbiAgYW5jZXN0b3JzLmZvckVhY2goYW5jZXN0b3IgPT4ge1xuICAgIGFuY2VzdG9yU2Nyb2xsICYmIGFuY2VzdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSwge1xuICAgICAgcGFzc2l2ZTogdHJ1ZVxuICAgIH0pO1xuICAgIGFuY2VzdG9yUmVzaXplICYmIGFuY2VzdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZSk7XG4gIH0pO1xuICBjb25zdCBjbGVhbnVwSW8gPSByZWZlcmVuY2VFbCAmJiBsYXlvdXRTaGlmdCA/IG9ic2VydmVNb3ZlKHJlZmVyZW5jZUVsLCB1cGRhdGUpIDogbnVsbDtcbiAgbGV0IHJlb2JzZXJ2ZUZyYW1lID0gLTE7XG4gIGxldCByZXNpemVPYnNlcnZlciA9IG51bGw7XG4gIGlmIChlbGVtZW50UmVzaXplKSB7XG4gICAgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoX3JlZiA9PiB7XG4gICAgICBsZXQgW2ZpcnN0RW50cnldID0gX3JlZjtcbiAgICAgIGlmIChmaXJzdEVudHJ5ICYmIGZpcnN0RW50cnkudGFyZ2V0ID09PSByZWZlcmVuY2VFbCAmJiByZXNpemVPYnNlcnZlcikge1xuICAgICAgICAvLyBQcmV2ZW50IHVwZGF0ZSBsb29wcyB3aGVuIHVzaW5nIHRoZSBgc2l6ZWAgbWlkZGxld2FyZS5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zsb2F0aW5nLXVpL2Zsb2F0aW5nLXVpL2lzc3Vlcy8xNzQwXG4gICAgICAgIHJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZShmbG9hdGluZyk7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJlb2JzZXJ2ZUZyYW1lKTtcbiAgICAgICAgcmVvYnNlcnZlRnJhbWUgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHZhciBfcmVzaXplT2JzZXJ2ZXI7XG4gICAgICAgICAgKF9yZXNpemVPYnNlcnZlciA9IHJlc2l6ZU9ic2VydmVyKSA9PSBudWxsIHx8IF9yZXNpemVPYnNlcnZlci5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB1cGRhdGUoKTtcbiAgICB9KTtcbiAgICBpZiAocmVmZXJlbmNlRWwgJiYgIWFuaW1hdGlvbkZyYW1lKSB7XG4gICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKHJlZmVyZW5jZUVsKTtcbiAgICB9XG4gICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShmbG9hdGluZyk7XG4gIH1cbiAgbGV0IGZyYW1lSWQ7XG4gIGxldCBwcmV2UmVmUmVjdCA9IGFuaW1hdGlvbkZyYW1lID8gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHJlZmVyZW5jZSkgOiBudWxsO1xuICBpZiAoYW5pbWF0aW9uRnJhbWUpIHtcbiAgICBmcmFtZUxvb3AoKTtcbiAgfVxuICBmdW5jdGlvbiBmcmFtZUxvb3AoKSB7XG4gICAgY29uc3QgbmV4dFJlZlJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QocmVmZXJlbmNlKTtcbiAgICBpZiAocHJldlJlZlJlY3QgJiYgIXJlY3RzQXJlRXF1YWwocHJldlJlZlJlY3QsIG5leHRSZWZSZWN0KSkge1xuICAgICAgdXBkYXRlKCk7XG4gICAgfVxuICAgIHByZXZSZWZSZWN0ID0gbmV4dFJlZlJlY3Q7XG4gICAgZnJhbWVJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShmcmFtZUxvb3ApO1xuICB9XG4gIHVwZGF0ZSgpO1xuICByZXR1cm4gKCkgPT4ge1xuICAgIHZhciBfcmVzaXplT2JzZXJ2ZXIyO1xuICAgIGFuY2VzdG9ycy5mb3JFYWNoKGFuY2VzdG9yID0+IHtcbiAgICAgIGFuY2VzdG9yU2Nyb2xsICYmIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSk7XG4gICAgICBhbmNlc3RvclJlc2l6ZSAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpO1xuICAgIH0pO1xuICAgIGNsZWFudXBJbyA9PSBudWxsIHx8IGNsZWFudXBJbygpO1xuICAgIChfcmVzaXplT2JzZXJ2ZXIyID0gcmVzaXplT2JzZXJ2ZXIpID09IG51bGwgfHwgX3Jlc2l6ZU9ic2VydmVyMi5kaXNjb25uZWN0KCk7XG4gICAgcmVzaXplT2JzZXJ2ZXIgPSBudWxsO1xuICAgIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoZnJhbWVJZCk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHdpdGggYW4gb2JqZWN0IG9mIG92ZXJmbG93IHNpZGUgb2Zmc2V0cyB0aGF0IGRldGVybWluZSBob3cgbXVjaCB0aGVcbiAqIGVsZW1lbnQgaXMgb3ZlcmZsb3dpbmcgYSBnaXZlbiBjbGlwcGluZyBib3VuZGFyeSBvbiBlYWNoIHNpZGUuXG4gKiAtIHBvc2l0aXZlID0gb3ZlcmZsb3dpbmcgdGhlIGJvdW5kYXJ5IGJ5IHRoYXQgbnVtYmVyIG9mIHBpeGVsc1xuICogLSBuZWdhdGl2ZSA9IGhvdyBtYW55IHBpeGVscyBsZWZ0IGJlZm9yZSBpdCB3aWxsIG92ZXJmbG93XG4gKiAtIDAgPSBsaWVzIGZsdXNoIHdpdGggdGhlIGJvdW5kYXJ5XG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZGV0ZWN0T3ZlcmZsb3dcbiAqL1xuY29uc3QgZGV0ZWN0T3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyQxO1xuXG4vKipcbiAqIE1vZGlmaWVzIHRoZSBwbGFjZW1lbnQgYnkgdHJhbnNsYXRpbmcgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYWxvbmcgdGhlXG4gKiBzcGVjaWZpZWQgYXhlcy5cbiAqIEEgbnVtYmVyIChzaG9ydGhhbmQgZm9yIGBtYWluQXhpc2Agb3IgZGlzdGFuY2UpLCBvciBhbiBheGVzIGNvbmZpZ3VyYXRpb25cbiAqIG9iamVjdCBtYXkgYmUgcGFzc2VkLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL29mZnNldFxuICovXG5jb25zdCBvZmZzZXQgPSBvZmZzZXQkMTtcblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgY2hvb3NpbmcgdGhlIHBsYWNlbWVudFxuICogdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgbmVlZGluZyB0byBzcGVjaWZ5IGFcbiAqIHByZWZlcnJlZCBwbGFjZW1lbnQuIEFsdGVybmF0aXZlIHRvIGBmbGlwYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvUGxhY2VtZW50XG4gKi9cbmNvbnN0IGF1dG9QbGFjZW1lbnQgPSBhdXRvUGxhY2VtZW50JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IHNoaWZ0aW5nIGl0IGluIG9yZGVyIHRvXG4gKiBrZWVwIGl0IGluIHZpZXcgd2hlbiBpdCB3aWxsIG92ZXJmbG93IHRoZSBjbGlwcGluZyBib3VuZGFyeS5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaGlmdFxuICovXG5jb25zdCBzaGlmdCA9IHNoaWZ0JDE7XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGZsaXBwaW5nIHRoZSBgcGxhY2VtZW50YFxuICogaW4gb3JkZXIgdG8ga2VlcCBpdCBpbiB2aWV3IHdoZW4gdGhlIHByZWZlcnJlZCBwbGFjZW1lbnQocykgd2lsbCBvdmVyZmxvdyB0aGVcbiAqIGNsaXBwaW5nIGJvdW5kYXJ5LiBBbHRlcm5hdGl2ZSB0byBgYXV0b1BsYWNlbWVudGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZmxpcFxuICovXG5jb25zdCBmbGlwID0gZmxpcCQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdGhhdCBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCDigJRcbiAqIGZvciBpbnN0YW5jZSwgcHJldmVudCBpdCBmcm9tIG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyBib3VuZGFyeSBvciBtYXRjaCB0aGVcbiAqIHdpZHRoIG9mIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaXplXG4gKi9cbmNvbnN0IHNpemUgPSBzaXplJDE7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gaGlkZSQxO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gcG9zaXRpb24gYW4gaW5uZXIgZWxlbWVudCBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBzbyB0aGF0IGl0XG4gKiBhcHBlYXJzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5jb25zdCBhcnJvdyA9IGFycm93JDE7XG5cbi8qKlxuICogUHJvdmlkZXMgaW1wcm92ZWQgcG9zaXRpb25pbmcgZm9yIGlubGluZSByZWZlcmVuY2UgZWxlbWVudHMgdGhhdCBjYW4gc3BhblxuICogb3ZlciBtdWx0aXBsZSBsaW5lcywgc3VjaCBhcyBoeXBlcmxpbmtzIG9yIHJhbmdlIHNlbGVjdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaW5saW5lXG4gKi9cbmNvbnN0IGlubGluZSA9IGlubGluZSQxO1xuXG4vKipcbiAqIEJ1aWx0LWluIGBsaW1pdGVyYCB0aGF0IHdpbGwgc3RvcCBgc2hpZnQoKWAgYXQgYSBjZXJ0YWluIHBvaW50LlxuICovXG5jb25zdCBsaW1pdFNoaWZ0ID0gbGltaXRTaGlmdCQxO1xuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnRcbiAqIG5leHQgdG8gYSBnaXZlbiByZWZlcmVuY2UgZWxlbWVudC5cbiAqL1xuY29uc3QgY29tcHV0ZVBvc2l0aW9uID0gKHJlZmVyZW5jZSwgZmxvYXRpbmcsIG9wdGlvbnMpID0+IHtcbiAgLy8gVGhpcyBjYWNoZXMgdGhlIGV4cGVuc2l2ZSBgZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzYCBmdW5jdGlvbiBzbyB0aGF0XG4gIC8vIG11bHRpcGxlIGxpZmVjeWNsZSByZXNldHMgcmUtdXNlIHRoZSBzYW1lIHJlc3VsdC4gSXQgb25seSBsaXZlcyBmb3IgYVxuICAvLyBzaW5nbGUgY2FsbC4gSWYgb3RoZXIgZnVuY3Rpb25zIGJlY29tZSBleHBlbnNpdmUsIHdlIGNhbiBhZGQgdGhlbSBhcyB3ZWxsLlxuICBjb25zdCBjYWNoZSA9IG5ldyBNYXAoKTtcbiAgY29uc3QgbWVyZ2VkT3B0aW9ucyA9IHtcbiAgICBwbGF0Zm9ybSxcbiAgICAuLi5vcHRpb25zXG4gIH07XG4gIGNvbnN0IHBsYXRmb3JtV2l0aENhY2hlID0ge1xuICAgIC4uLm1lcmdlZE9wdGlvbnMucGxhdGZvcm0sXG4gICAgX2M6IGNhY2hlXG4gIH07XG4gIHJldHVybiBjb21wdXRlUG9zaXRpb24kMShyZWZlcmVuY2UsIGZsb2F0aW5nLCB7XG4gICAgLi4ubWVyZ2VkT3B0aW9ucyxcbiAgICBwbGF0Zm9ybTogcGxhdGZvcm1XaXRoQ2FjaGVcbiAgfSk7XG59O1xuXG5leHBvcnQgeyBhcnJvdywgYXV0b1BsYWNlbWVudCwgYXV0b1VwZGF0ZSwgY29tcHV0ZVBvc2l0aW9uLCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHBsYXRmb3JtLCBzaGlmdCwgc2l6ZSB9O1xuIiwiaW1wb3J0IHsgYXJyb3cgYXMgYXJyb3ckMSwgY29tcHV0ZVBvc2l0aW9uIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5leHBvcnQgeyBhdXRvUGxhY2VtZW50LCBhdXRvVXBkYXRlLCBjb21wdXRlUG9zaXRpb24sIGRldGVjdE92ZXJmbG93LCBmbGlwLCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHBsYXRmb3JtLCBzaGlmdCwgc2l6ZSB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuaW1wb3J0IHsgaXNOb2RlLCBnZXROb2RlTmFtZSB9IGZyb20gJ0BmbG9hdGluZy11aS91dGlscy9kb20nO1xuaW1wb3J0IHsgdW5yZWYsIGNvbXB1dGVkLCByZWYsIHNoYWxsb3dSZWYsIHdhdGNoLCBnZXRDdXJyZW50U2NvcGUsIG9uU2NvcGVEaXNwb3NlLCBzaGFsbG93UmVhZG9ubHkgfSBmcm9tICd2dWUtZGVtaSc7XG5cbmZ1bmN0aW9uIGlzQ29tcG9uZW50UHVibGljSW5zdGFuY2UodGFyZ2V0KSB7XG4gIHJldHVybiB0YXJnZXQgIT0gbnVsbCAmJiB0eXBlb2YgdGFyZ2V0ID09PSAnb2JqZWN0JyAmJiAnJGVsJyBpbiB0YXJnZXQ7XG59XG5mdW5jdGlvbiB1bndyYXBFbGVtZW50KHRhcmdldCkge1xuICBpZiAoaXNDb21wb25lbnRQdWJsaWNJbnN0YW5jZSh0YXJnZXQpKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRhcmdldC4kZWw7XG4gICAgcmV0dXJuIGlzTm9kZShlbGVtZW50KSAmJiBnZXROb2RlTmFtZShlbGVtZW50KSA9PT0gJyNjb21tZW50JyA/IG51bGwgOiBlbGVtZW50O1xuICB9XG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIHRvVmFsdWUoc291cmNlKSB7XG4gIHJldHVybiB0eXBlb2Ygc291cmNlID09PSAnZnVuY3Rpb24nID8gc291cmNlKCkgOiB1bnJlZihzb3VyY2UpO1xufVxuXG4vKipcbiAqIFBvc2l0aW9ucyBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHN1Y2ggdGhhdCBpdCBpcyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAcGFyYW0gb3B0aW9ucyBUaGUgYXJyb3cgb3B0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5mdW5jdGlvbiBhcnJvdyhvcHRpb25zKSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2Fycm93JyxcbiAgICBvcHRpb25zLFxuICAgIGZuKGFyZ3MpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB1bndyYXBFbGVtZW50KHRvVmFsdWUob3B0aW9ucy5lbGVtZW50KSk7XG4gICAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJvdyQxKHtcbiAgICAgICAgZWxlbWVudCxcbiAgICAgICAgcGFkZGluZzogb3B0aW9ucy5wYWRkaW5nXG4gICAgICB9KS5mbihhcmdzKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldERQUihlbGVtZW50KSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiAxO1xuICB9XG4gIGNvbnN0IHdpbiA9IGVsZW1lbnQub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3c7XG4gIHJldHVybiB3aW4uZGV2aWNlUGl4ZWxSYXRpbyB8fCAxO1xufVxuXG5mdW5jdGlvbiByb3VuZEJ5RFBSKGVsZW1lbnQsIHZhbHVlKSB7XG4gIGNvbnN0IGRwciA9IGdldERQUihlbGVtZW50KTtcbiAgcmV0dXJuIE1hdGgucm91bmQodmFsdWUgKiBkcHIpIC8gZHByO1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnQgbmV4dCB0byBhIHJlZmVyZW5jZSBlbGVtZW50IHdoZW4gaXQgaXMgZ2l2ZW4gYSBjZXJ0YWluIENTUyBwb3NpdGlvbmluZyBzdHJhdGVneS5cbiAqIEBwYXJhbSByZWZlcmVuY2UgVGhlIHJlZmVyZW5jZSB0ZW1wbGF0ZSByZWYuXG4gKiBAcGFyYW0gZmxvYXRpbmcgVGhlIGZsb2F0aW5nIHRlbXBsYXRlIHJlZi5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBmbG9hdGluZyBvcHRpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3Z1ZVxuICovXG5mdW5jdGlvbiB1c2VGbG9hdGluZyhyZWZlcmVuY2UsIGZsb2F0aW5nLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qgd2hpbGVFbGVtZW50c01vdW50ZWRPcHRpb24gPSBvcHRpb25zLndoaWxlRWxlbWVudHNNb3VudGVkO1xuICBjb25zdCBvcGVuT3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTtcbiAgICByZXR1cm4gKF90b1ZhbHVlID0gdG9WYWx1ZShvcHRpb25zLm9wZW4pKSAhPSBudWxsID8gX3RvVmFsdWUgOiB0cnVlO1xuICB9KTtcbiAgY29uc3QgbWlkZGxld2FyZU9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHRvVmFsdWUob3B0aW9ucy5taWRkbGV3YXJlKSk7XG4gIGNvbnN0IHBsYWNlbWVudE9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX3RvVmFsdWUyO1xuICAgIHJldHVybiAoX3RvVmFsdWUyID0gdG9WYWx1ZShvcHRpb25zLnBsYWNlbWVudCkpICE9IG51bGwgPyBfdG9WYWx1ZTIgOiAnYm90dG9tJztcbiAgfSk7XG4gIGNvbnN0IHN0cmF0ZWd5T3B0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHZhciBfdG9WYWx1ZTM7XG4gICAgcmV0dXJuIChfdG9WYWx1ZTMgPSB0b1ZhbHVlKG9wdGlvbnMuc3RyYXRlZ3kpKSAhPSBudWxsID8gX3RvVmFsdWUzIDogJ2Fic29sdXRlJztcbiAgfSk7XG4gIGNvbnN0IHRyYW5zZm9ybU9wdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB2YXIgX3RvVmFsdWU0O1xuICAgIHJldHVybiAoX3RvVmFsdWU0ID0gdG9WYWx1ZShvcHRpb25zLnRyYW5zZm9ybSkpICE9IG51bGwgPyBfdG9WYWx1ZTQgOiB0cnVlO1xuICB9KTtcbiAgY29uc3QgcmVmZXJlbmNlRWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IHVud3JhcEVsZW1lbnQocmVmZXJlbmNlLnZhbHVlKSk7XG4gIGNvbnN0IGZsb2F0aW5nRWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IHVud3JhcEVsZW1lbnQoZmxvYXRpbmcudmFsdWUpKTtcbiAgY29uc3QgeCA9IHJlZigwKTtcbiAgY29uc3QgeSA9IHJlZigwKTtcbiAgY29uc3Qgc3RyYXRlZ3kgPSByZWYoc3RyYXRlZ3lPcHRpb24udmFsdWUpO1xuICBjb25zdCBwbGFjZW1lbnQgPSByZWYocGxhY2VtZW50T3B0aW9uLnZhbHVlKTtcbiAgY29uc3QgbWlkZGxld2FyZURhdGEgPSBzaGFsbG93UmVmKHt9KTtcbiAgY29uc3QgaXNQb3NpdGlvbmVkID0gcmVmKGZhbHNlKTtcbiAgY29uc3QgZmxvYXRpbmdTdHlsZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFN0eWxlcyA9IHtcbiAgICAgIHBvc2l0aW9uOiBzdHJhdGVneS52YWx1ZSxcbiAgICAgIGxlZnQ6ICcwJyxcbiAgICAgIHRvcDogJzAnXG4gICAgfTtcbiAgICBpZiAoIWZsb2F0aW5nRWxlbWVudC52YWx1ZSkge1xuICAgICAgcmV0dXJuIGluaXRpYWxTdHlsZXM7XG4gICAgfVxuICAgIGNvbnN0IHhWYWwgPSByb3VuZEJ5RFBSKGZsb2F0aW5nRWxlbWVudC52YWx1ZSwgeC52YWx1ZSk7XG4gICAgY29uc3QgeVZhbCA9IHJvdW5kQnlEUFIoZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB5LnZhbHVlKTtcbiAgICBpZiAodHJhbnNmb3JtT3B0aW9uLnZhbHVlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pbml0aWFsU3R5bGVzLFxuICAgICAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKFwiICsgeFZhbCArIFwicHgsIFwiICsgeVZhbCArIFwicHgpXCIsXG4gICAgICAgIC4uLihnZXREUFIoZmxvYXRpbmdFbGVtZW50LnZhbHVlKSA+PSAxLjUgJiYge1xuICAgICAgICAgIHdpbGxDaGFuZ2U6ICd0cmFuc2Zvcm0nXG4gICAgICAgIH0pXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcG9zaXRpb246IHN0cmF0ZWd5LnZhbHVlLFxuICAgICAgbGVmdDogeFZhbCArIFwicHhcIixcbiAgICAgIHRvcDogeVZhbCArIFwicHhcIlxuICAgIH07XG4gIH0pO1xuICBsZXQgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwO1xuICBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgaWYgKHJlZmVyZW5jZUVsZW1lbnQudmFsdWUgPT0gbnVsbCB8fCBmbG9hdGluZ0VsZW1lbnQudmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBvcGVuID0gb3Blbk9wdGlvbi52YWx1ZTtcbiAgICBjb21wdXRlUG9zaXRpb24ocmVmZXJlbmNlRWxlbWVudC52YWx1ZSwgZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB7XG4gICAgICBtaWRkbGV3YXJlOiBtaWRkbGV3YXJlT3B0aW9uLnZhbHVlLFxuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnRPcHRpb24udmFsdWUsXG4gICAgICBzdHJhdGVneTogc3RyYXRlZ3lPcHRpb24udmFsdWVcbiAgICB9KS50aGVuKHBvc2l0aW9uID0+IHtcbiAgICAgIHgudmFsdWUgPSBwb3NpdGlvbi54O1xuICAgICAgeS52YWx1ZSA9IHBvc2l0aW9uLnk7XG4gICAgICBzdHJhdGVneS52YWx1ZSA9IHBvc2l0aW9uLnN0cmF0ZWd5O1xuICAgICAgcGxhY2VtZW50LnZhbHVlID0gcG9zaXRpb24ucGxhY2VtZW50O1xuICAgICAgbWlkZGxld2FyZURhdGEudmFsdWUgPSBwb3NpdGlvbi5taWRkbGV3YXJlRGF0YTtcbiAgICAgIC8qKlxuICAgICAgICogVGhlIGZsb2F0aW5nIGVsZW1lbnQncyBwb3NpdGlvbiBtYXkgYmUgcmVjb21wdXRlZCB3aGlsZSBpdCdzIGNsb3NlZFxuICAgICAgICogYnV0IHN0aWxsIG1vdW50ZWQgKHN1Y2ggYXMgd2hlbiB0cmFuc2l0aW9uaW5nIG91dCkuIFRvIGVuc3VyZVxuICAgICAgICogYGlzUG9zaXRpb25lZGAgd2lsbCBiZSBgZmFsc2VgIGluaXRpYWxseSBvbiB0aGUgbmV4dCBvcGVuLCBhdm9pZFxuICAgICAgICogc2V0dGluZyBpdCB0byBgdHJ1ZWAgd2hlbiBgb3BlbiA9PT0gZmFsc2VgIChtdXN0IGJlIHNwZWNpZmllZCkuXG4gICAgICAgKi9cbiAgICAgIGlzUG9zaXRpb25lZC52YWx1ZSA9IG9wZW4gIT09IGZhbHNlO1xuICAgIH0pO1xuICB9XG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgaWYgKHR5cGVvZiB3aGlsZUVsZW1lbnRzTW91bnRlZENsZWFudXAgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHdoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCgpO1xuICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBhdHRhY2goKSB7XG4gICAgY2xlYW51cCgpO1xuICAgIGlmICh3aGlsZUVsZW1lbnRzTW91bnRlZE9wdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB1cGRhdGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHJlZmVyZW5jZUVsZW1lbnQudmFsdWUgIT0gbnVsbCAmJiBmbG9hdGluZ0VsZW1lbnQudmFsdWUgIT0gbnVsbCkge1xuICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWRDbGVhbnVwID0gd2hpbGVFbGVtZW50c01vdW50ZWRPcHRpb24ocmVmZXJlbmNlRWxlbWVudC52YWx1ZSwgZmxvYXRpbmdFbGVtZW50LnZhbHVlLCB1cGRhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiByZXNldCgpIHtcbiAgICBpZiAoIW9wZW5PcHRpb24udmFsdWUpIHtcbiAgICAgIGlzUG9zaXRpb25lZC52YWx1ZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICB3YXRjaChbbWlkZGxld2FyZU9wdGlvbiwgcGxhY2VtZW50T3B0aW9uLCBzdHJhdGVneU9wdGlvbiwgb3Blbk9wdGlvbl0sIHVwZGF0ZSwge1xuICAgIGZsdXNoOiAnc3luYydcbiAgfSk7XG4gIHdhdGNoKFtyZWZlcmVuY2VFbGVtZW50LCBmbG9hdGluZ0VsZW1lbnRdLCBhdHRhY2gsIHtcbiAgICBmbHVzaDogJ3N5bmMnXG4gIH0pO1xuICB3YXRjaChvcGVuT3B0aW9uLCByZXNldCwge1xuICAgIGZsdXNoOiAnc3luYydcbiAgfSk7XG4gIGlmIChnZXRDdXJyZW50U2NvcGUoKSkge1xuICAgIG9uU2NvcGVEaXNwb3NlKGNsZWFudXApO1xuICB9XG4gIHJldHVybiB7XG4gICAgeDogc2hhbGxvd1JlYWRvbmx5KHgpLFxuICAgIHk6IHNoYWxsb3dSZWFkb25seSh5KSxcbiAgICBzdHJhdGVneTogc2hhbGxvd1JlYWRvbmx5KHN0cmF0ZWd5KSxcbiAgICBwbGFjZW1lbnQ6IHNoYWxsb3dSZWFkb25seShwbGFjZW1lbnQpLFxuICAgIG1pZGRsZXdhcmVEYXRhOiBzaGFsbG93UmVhZG9ubHkobWlkZGxld2FyZURhdGEpLFxuICAgIGlzUG9zaXRpb25lZDogc2hhbGxvd1JlYWRvbmx5KGlzUG9zaXRpb25lZCksXG4gICAgZmxvYXRpbmdTdHlsZXMsXG4gICAgdXBkYXRlXG4gIH07XG59XG5cbmV4cG9ydCB7IGFycm93LCB1c2VGbG9hdGluZyB9O1xuIiwiZXhwb3J0IGNvbnN0IGlzQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBNb3VzZUV2ZW50LCBlbGVtZW50czogSFRNTEVsZW1lbnQgfCBIVE1MRWxlbWVudFtdKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHRhcmdldHMgPSBBcnJheS5pc0FycmF5KGVsZW1lbnRzKSA/IGVsZW1lbnRzIDogW2VsZW1lbnRzXTtcbiAgcmV0dXJuICF0YXJnZXRzLnNvbWUoKGVsKSA9PiBlbC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgcG9wb3ZlciBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBkaXNwbGF5aW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVwb3BvdmVyLS1kb2NzKSBmb3IgVGlkZVBvcG92ZXJcbiAgICovXG4gIGV4cG9ydCBkZWZhdWx0IHt9O1xuPC9zY3JpcHQ+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG4gIGltcG9ydCB7IGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIG9mZnNldCBhcyBvZmZzZXRNaWRkbGV3YXJlLCBzaGlmdCwgdXNlRmxvYXRpbmcgfSBmcm9tICdAZmxvYXRpbmctdWkvdnVlJztcbiAgaW1wb3J0IHsgY29tcHV0ZWQsIG9uQmVmb3JlTW91bnQsIG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIHJlZiwgd2F0Y2gsIHdhdGNoRWZmZWN0IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IGlzQ2xpY2tPdXRzaWRlIH0gZnJvbSAnQC91dGlsaXRpZXMvZXZlbnQnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgdGhlIEhUTUwgbm9kZSBvdmVyIHdoaWNoIHRoZSBQb3BvdmVyIHdpbGwgYXBwZWFyICovXG4gICAgYW5jaG9ySWQ6IHN0cmluZztcblxuICAgIC8qKiBEZXRlcm1pbmVzIHNwYWNpbmcgYmV0d2VlbiBQb3BvdmVyIGFuZCBhbmNob3Igbm9kZSAqL1xuICAgIG9mZnNldD86IG51bWJlcjtcbiAgfTtcblxuICBjb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxQcm9wcz4oKSwge1xuICAgIG9mZnNldDogMTYsXG4gIH0pO1xuXG4gIGNvbnN0IGFuY2hvcjogUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4gPSByZWYobnVsbCk7XG4gIGNvbnN0IGZsb2F0aW5nOiBSZWY8SFRNTEVsZW1lbnQgfCBudWxsPiA9IHJlZihudWxsKTtcbiAgY29uc3Qgcm9vdDogUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4gPSByZWYobnVsbCk7XG4gIGNvbnN0IGlzSG92ZXJlZCA9IHJlZihmYWxzZSk7XG4gIGNvbnN0IGlzVG9nZ2xlZE9wZW4gPSByZWYoZmFsc2UpO1xuICBjb25zdCBtaWRkbGV3YXJlID0gcmVmKFthdXRvUGxhY2VtZW50KCksIG9mZnNldE1pZGRsZXdhcmUoeyBtYWluQXhpczogcHJvcHMub2Zmc2V0IH0pLCBzaGlmdCh7IHBhZGRpbmc6IDE2IH0pXSk7XG5cbiAgY29uc3QgaXNTaG93UG9wb3ZlciA9IGNvbXB1dGVkKCgpID0+IGlzSG92ZXJlZC52YWx1ZSB8fCBpc1RvZ2dsZWRPcGVuLnZhbHVlKTtcblxuICBjb25zdCB7IGZsb2F0aW5nU3R5bGVzIH0gPSB1c2VGbG9hdGluZyhhbmNob3IsIGZsb2F0aW5nLCB7XG4gICAgbWlkZGxld2FyZSxcbiAgICBzdHJhdGVneTogJ2ZpeGVkJyxcbiAgICB3aGlsZUVsZW1lbnRzTW91bnRlZDogYXV0b1VwZGF0ZSxcbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljayA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCFhbmNob3IudmFsdWUgfHwgIWZsb2F0aW5nLnZhbHVlKSByZXR1cm47XG4gICAgaWYgKGlzQ2xpY2tPdXRzaWRlKGUsIFthbmNob3IudmFsdWUsIGZsb2F0aW5nLnZhbHVlXSkpIHtcbiAgICAgIGlzVG9nZ2xlZE9wZW4udmFsdWUgPSBmYWxzZTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZU92ZXIgPSAoKSA9PiB7XG4gICAgaXNIb3ZlcmVkLnZhbHVlID0gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VMZWF2ZSA9ICgpID0+IHtcbiAgICBpc0hvdmVyZWQudmFsdWUgPSBmYWxzZTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVBbmNob3JFbGVtZW50Q2xpY2sgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoaXNUb2dnbGVkT3Blbi52YWx1ZSkge1xuICAgICAgaXNUb2dnbGVkT3Blbi52YWx1ZSA9IGZhbHNlO1xuICAgICAgaXNIb3ZlcmVkLnZhbHVlID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlzVG9nZ2xlZE9wZW4udmFsdWUgPSB0cnVlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBhZGRMaXN0ZW5lcnNUb0FuY2hvckVsZW1lbnQgPSAoKSA9PiB7XG4gICAgaWYgKCFhbmNob3IudmFsdWUpIHJldHVybiBudWxsO1xuICAgIGFuY2hvci52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW92ZXInLCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VPdmVyKTtcbiAgICBhbmNob3IudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIGhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlKTtcbiAgICBhbmNob3IudmFsdWUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVBbmNob3JFbGVtZW50Q2xpY2spO1xuICB9O1xuXG4gIGNvbnN0IHJlbW92ZUxpc3RlbmVyc0Zyb21BbmNob3JFbGVtZW50ID0gKCkgPT4ge1xuICAgIGlmICghYW5jaG9yLnZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICBhbmNob3IudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlT3Zlcik7XG4gICAgYW5jaG9yLnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCBoYW5kbGVBbmNob3JFbGVtZW50TW91c2VMZWF2ZSk7XG4gICAgYW5jaG9yLnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24gPSAoZTogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIGlzVG9nZ2xlZE9wZW4udmFsdWUgPSBmYWxzZTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgYWRkT3Blbkxpc3RlbmVyc1RvUm9vdCA9ICgpID0+IHtcbiAgICBpZiAoIXJvb3QudmFsdWUpIHJldHVybjtcbiAgICByb290LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlDbGljaywgdHJ1ZSk7XG4gICAgcm9vdC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlUGVybWFuZW50T3BlbkJvZHlLZXlkb3duKTtcbiAgfTtcblxuICBjb25zdCByZW1vdmVPcGVuTGlzdGVuZXJzRnJvbVJvb3QgPSAoKSA9PiB7XG4gICAgaWYgKCFyb290LnZhbHVlKSByZXR1cm47XG4gICAgcm9vdC52YWx1ZS5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5Q2xpY2ssIHRydWUpO1xuICAgIHJvb3QudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZVBlcm1hbmVudE9wZW5Cb2R5S2V5ZG93bik7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlQW5jaG9yRWxlbWVudCA9ICgpID0+IHtcbiAgICBhbmNob3IudmFsdWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChwcm9wcy5hbmNob3JJZCk7XG4gIH07XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gaXNUb2dnbGVkT3Blbi52YWx1ZSxcbiAgICAobmV3VmFsdWUpID0+IHtcbiAgICAgIGlmIChuZXdWYWx1ZSkge1xuICAgICAgICBhZGRPcGVuTGlzdGVuZXJzVG9Sb290KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZW1vdmVPcGVuTGlzdGVuZXJzRnJvbVJvb3QoKTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG5cbiAgd2F0Y2goXG4gICAgKCkgPT4gcHJvcHMuYW5jaG9ySWQsXG4gICAgKCkgPT4ge1xuICAgICAgcmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQoKTtcbiAgICAgIHVwZGF0ZUFuY2hvckVsZW1lbnQoKTtcbiAgICAgIGFkZExpc3RlbmVyc1RvQW5jaG9yRWxlbWVudCgpO1xuICAgIH1cbiAgKTtcblxuICB3YXRjaEVmZmVjdCgoKSA9PiB7XG4gICAgbWlkZGxld2FyZS52YWx1ZSA9IFthdXRvUGxhY2VtZW50KCksIG9mZnNldE1pZGRsZXdhcmUoeyBtYWluQXhpczogcHJvcHMub2Zmc2V0IH0pLCBzaGlmdCh7IHBhZGRpbmc6IDE2IH0pXTtcbiAgfSk7XG5cbiAgb25CZWZvcmVNb3VudCgoKSA9PiB7XG4gICAgaW5pdEZhdXhUb3BMYXllcigpO1xuICB9KTtcblxuICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgIHVwZGF0ZUFuY2hvckVsZW1lbnQoKTtcbiAgICByb290LnZhbHVlID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgIGFkZExpc3RlbmVyc1RvQW5jaG9yRWxlbWVudCgpO1xuICB9KTtcblxuICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgcmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQoKTtcbiAgfSk7XG48L3NjcmlwdD5cblxuPHRlbXBsYXRlPlxuICA8VGVsZXBvcnQgOnRvPVwiYCMke1RPUF9MQVlFUl9JRH1gXCI+XG4gICAgPFRyYW5zaXRpb24+XG4gICAgICA8ZGl2XG4gICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAndGlkZS1wb3BvdmVyJyxcbiAgICAgICAgICBDU1MuQkcuU1VSRkFDRS5ERUZBVUxULFxuICAgICAgICAgIENTUy5CT1JERVIuQ09MT1IuTE9XLFxuICAgICAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICAgICAgQ1NTLkJPUkRFUi5SQURJVVMuSEFMRixcbiAgICAgICAgICBDU1MuRk9OVC5ST0xFLkJPRFlfMixcbiAgICAgICAgICBDU1MuUEFERElORy5GVUxMLk9ORSxcbiAgICAgICAgICBDU1MuU0hBRE9XLkJPVFRPTSxcbiAgICAgICAgXVwiXG4gICAgICAgIHJlZj1cImZsb2F0aW5nXCJcbiAgICAgICAgOnN0eWxlPVwieyAuLi5mbG9hdGluZ1N0eWxlcyB9XCJcbiAgICAgICAgdi1zaG93PVwiaXNTaG93UG9wb3ZlclwiXG4gICAgICA+XG4gICAgICAgIDxzbG90IC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L1RyYW5zaXRpb24+XG4gIDwvVGVsZXBvcnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1wb3BvdmVyIHtcbiAgICBtYXgtd2lkdGg6IDI1NnB4O1xuICB9XG4gIC52LWVudGVyLWZyb20sXG4gIC52LWxlYXZlLXRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIC52LWVudGVyLWFjdGl2ZSxcbiAgLnYtbGVhdmUtYWN0aXZlIHtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gIH1cbiAgLnYtZW50ZXItdG8sXG4gIC52LWxlYXZlLWZyb20ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuICAvKipcbiAgICogUmVuZGVycyBhIHJhdGluZyBjb21wb25lbnQgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgZGlzcGxheWluZyBhbmQgc2VsZWN0aW5nIGEgcmF0aW5nLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlcmF0aW5nLS1kb2NzKSBmb3IgVGlkZVJhdGluZ1xuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBEZXRlcm1pbmVzIHRoZSB0ZXh0IGRpc3BsYXllZCBiZWxvdyB0aGUgdGl0bGUgKi9cbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAgIC8qKiBNYXhpbXVtIHJhdGluZyB2YWx1ZSAvIE51bWJlciBvZiBzZWdtZW50cyAqL1xuICAgIG1heFJhdGluZz86IG51bWJlcjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gZGlzcGxheSB0aGUgY3VycmVudCByYXRpbmcgdmFsdWUgKi9cbiAgICBzaG93UmF0aW5nPzogYm9vbGVhbjtcblxuICAgIC8qKiBEZXRlcm1pbmVzIHRoZSB0aXRsZSB0ZXh0IGRpc3BsYXllZCBhYm92ZSB0aGUgcmF0aW5nIGNvbXBvbmVudCAqL1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGVzY3JpcHRpb246IHVuZGVmaW5lZCxcbiAgICBtYXhSYXRpbmc6IDEwLFxuICAgIHNob3dSYXRpbmc6IGZhbHNlLFxuICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gIH0pO1xuXG4gIGNvbnN0IHJhdGluZ1ZhbHVlID0gZGVmaW5lTW9kZWw8bnVtYmVyPih7IHJlcXVpcmVkOiB0cnVlIH0pO1xuXG4gIGNvbnN0IHNlZ21lbnRzID0gY29tcHV0ZWQoKCkgPT4gQXJyYXkuZnJvbSh7IGxlbmd0aDogcHJvcHMubWF4UmF0aW5nIH0sIChfLCBpbmRleCkgPT4gaW5kZXggKyAxKSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoc2VnbWVudDogbnVtYmVyKSA9PiB7XG4gICAgcmF0aW5nVmFsdWUudmFsdWUgPSBzZWdtZW50O1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtcmF0aW5nJywgQ1NTLldJRFRILkZVTExdXCI+XG4gICAgPHNlY3Rpb24gOmNsYXNzPVwiW0NTUy5ESVNQTEFZLkZMRVgsIENTUy5BWElTMi5DRU5URVIsIENTUy5BWElTMS5CRVRXRUVOLCBDU1MuUEFERElORy5CT1RUT00uSEFMRl1cIj5cbiAgICAgIDxkaXYgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuTEFCRUxfMl1cIj5cbiAgICAgICAge3sgcHJvcHMudGl0bGUgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbQ1NTLkZPTlQuUk9MRS5MQUJFTF8zLCBDU1MuRk9OVC5DT0xPUi5TVVJGQUNFLlZBUklBTlRdXCJcbiAgICAgICAgdi1pZj1cInByb3BzLnNob3dSYXRpbmdcIlxuICAgICAgPlxuICAgICAgICB7eyByYXRpbmdWYWx1ZSB9fS97eyBwcm9wcy5tYXhSYXRpbmcgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbiAgICA8c2VjdGlvblxuICAgICAgOmNsYXNzPVwiW0NTUy5GT05ULlJPTEUuQk9EWV8yLCBDU1MuUEFERElORy5CT1RUT00uT05FLCBDU1MuT1ZFUkZMT1cuWFkuSElEREVOLCBDU1MuRUxMSVBTSVNdXCJcbiAgICAgIHYtaWY9XCJwcm9wcy5kZXNjcmlwdGlvblwiXG4gICAgPlxuICAgICAge3sgcHJvcHMuZGVzY3JpcHRpb24gfX1cbiAgICA8L3NlY3Rpb24+XG5cbiAgICA8c2VjdGlvbiA6Y2xhc3M9XCJbJ3RpZGUtcmF0aW5nLWJhcicsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5HQVAuUVVBUlRFUiwgQ1NTLkZMRVguR1JPVy5PTiwgQ1NTLkZMRVguU0hSSU5LLk9OXVwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtcmF0aW5nLXNlZ21lbnQnLFxuICAgICAgICAgIENTUy5CRy5TVVJGQUNFLlZBUklBTlQsXG4gICAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICAgICAgQ1NTLkZMRVguR1JPVy5PTixcbiAgICAgICAgICBDU1MuRkxFWC5TSFJJTksuT04sXG4gICAgICAgICAgQ1NTLkZMRVguQkFTSVMuWkVSTyxcbiAgICAgICAgICBDU1MuQk9SREVSLkZVTEwuWkVSTyxcbiAgICAgICAgICBzZWdtZW50ID09PSAxICYmIFsndGlkZS1yYXRpbmctc2VnbWVudC1maXJzdCddLFxuICAgICAgICAgIHNlZ21lbnQgPT09IHNlZ21lbnRzLmxlbmd0aCAmJiBbJ3RpZGUtcmF0aW5nLXNlZ21lbnQtbGFzdCddLFxuICAgICAgICAgIHNlZ21lbnQgPD0gcmF0aW5nVmFsdWUgJiYgW0NTUy5CRy5TVVJGQUNFLkdSQURJRU5UXSxcbiAgICAgICAgXVwiXG4gICAgICAgIDprZXk9XCJzZWdtZW50XCJcbiAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2soc2VnbWVudClcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdi1mb3I9XCJzZWdtZW50IGluIHNlZ21lbnRzXCJcbiAgICAgIC8+XG4gICAgPC9zZWN0aW9uPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC50aWRlLXJhdGluZy1iYXIge1xuICAgIGhlaWdodDogMjhweDtcbiAgfVxuXG4gIC50aWRlLXJhdGluZy1zZWdtZW50IHtcbiAgICBjbGlwLXBhdGg6IHBvbHlnb24oMTIlIDAsIDEwMCUgMCwgODglIDEwMCUsIDAgMTAwJSk7XG4gIH1cblxuICAudGlkZS1yYXRpbmctc2VnbWVudC1maXJzdCB7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogOTk5OXB4O1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDk5OTlweDtcbiAgICBjbGlwLXBhdGg6IHBvbHlnb24oMCAwLCAxMDAlIDAsIDg4JSAxMDAlLCAwIDEwMCUpO1xuICB9XG5cbiAgLnRpZGUtcmF0aW5nLXNlZ21lbnQtbGFzdCB7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDk5OTlweDtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogOTk5OXB4O1xuICAgIGNsaXAtcGF0aDogcG9seWdvbigxMiUgMCwgMTAwJSAwLCAxMDAlIDEwMCUsIDAgMTAwJSk7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgdHlwZSB7IFJlYWxtS2V5IH0gZnJvbSAnQC90eXBlcy9SZWFsbSc7XG5cbmV4cG9ydCBjb25zdCBTSVpFX0xPR08gPSB7XG4gIExBUkdFOiAnbGFyZ2UnLFxuICBNQVJLOiAnbWFyaycsXG4gIFNNQUxMOiAnc21hbGwnLFxufSBhcyBjb25zdDtcbnR5cGUgU2l6ZUxvZ29LZXkgPSBrZXlvZiB0eXBlb2YgU0laRV9MT0dPO1xuZXhwb3J0IHR5cGUgU2l6ZUxvZ28gPSAodHlwZW9mIFNJWkVfTE9HTylbU2l6ZUxvZ29LZXldO1xuXG5leHBvcnQgY29uc3QgTE9HT19IRUlHSFQgPSB7XG4gIExBUkdFOiAzMixcbiAgU01BTEw6IDI0LFxufTtcblxuZXhwb3J0IGNvbnN0IExPR09fTEFSR0VfV0lEVEg6IFJlY29yZDxSZWFsbUtleSwgbnVtYmVyPiA9IHtcbiAgQUVSTzogMTg2LFxuICBBVFY6IDE5MixcbiAgQk9BVE1BUlQ6IDE1MixcbiAgQ1lDTEU6IDE2OSxcbiAgRVFVSVBNRU5UOiAxMTIsXG4gIFBXQzogMTc3LFxuICBSVjogMTY5LFxuICBTTk9XOiAxNTAsXG4gIFRSVUNLOiAxODUsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgTE9HT19NQVJLX1dJRFRIOiBSZWNvcmQ8UmVhbG1LZXksIG51bWJlcj4gPSB7XG4gIEFFUk86IDMyLFxuICBBVFY6IDMyLFxuICBCT0FUTUFSVDogMzMsXG4gIENZQ0xFOiAzMixcbiAgRVFVSVBNRU5UOiAzNyxcbiAgUFdDOiAzMixcbiAgUlY6IDMyLFxuICBTTk9XOiAzMixcbiAgVFJVQ0s6IDMyLFxufSBhcyBjb25zdDtcbiIsImltcG9ydCB7IFJFQUxNIH0gZnJvbSAnQC90eXBlcy9SZWFsbSc7XG5cbmltcG9ydCB0eXBlIHsgUmVhbG0sIFJlYWxtS2V5IH0gZnJvbSAnQC90eXBlcy9SZWFsbSc7XG5cbmV4cG9ydCBjb25zdCBnZXRSZWFsbUtleUZyb21SZWFsbSA9IChyZWFsbTogUmVhbG0pOiBSZWFsbUtleSA9PiB7XG4gIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhSRUFMTSkgYXMgW1JlYWxtS2V5LCBSZWFsbV1bXTtcblxuICBjb25zdCBtYXRjaCA9IGVudHJpZXMuZmluZCgoZW50cnkpOiBlbnRyeSBpcyBbUmVhbG1LZXksIFJlYWxtXSA9PiB7XG4gICAgcmV0dXJuIGVudHJ5WzFdID09PSByZWFsbTtcbiAgfSk7XG5cbiAgaWYgKCFtYXRjaCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgTWFwcGluZyBmb3IgJHtyZWFsbX0gbm90IGZvdW5kYCk7XG4gIH1cblxuICByZXR1cm4gbWF0Y2hbMF07XG59O1xuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSByZWFsbSBsb2dvIGNvbXBvbmVudCBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBkaXNwbGF5aW5nIGEgcmVhbG0ncyBsb2dvLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRlcmVhbG1sb2dvLS1kb2NzKSBmb3IgVGlkZVJlYWxtTG9nb1xuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IHsgY29tcHV0ZWQsIGRlZmluZUFzeW5jQ29tcG9uZW50LCBtYXJrUmF3LCByZWYsIHdhdGNoIH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgeyBMT0dPX0hFSUdIVCwgTE9HT19MQVJHRV9XSURUSCwgTE9HT19NQVJLX1dJRFRILCBTSVpFX0xPR08gfSBmcm9tICdAL3R5cGVzL1JlYWxtTG9nbyc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcbiAgaW1wb3J0IHsgZ2V0UmVhbG1LZXlGcm9tUmVhbG0gfSBmcm9tICdAL3V0aWxpdGllcy9yZWFsbSc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWFsbSB9IGZyb20gJ0AvdHlwZXMvUmVhbG0nO1xuICBpbXBvcnQgdHlwZSB7IFNpemVMb2dvIH0gZnJvbSAnQC90eXBlcy9SZWFsbUxvZ28nO1xuICBpbXBvcnQgdHlwZSB7IENvbXBvbmVudCB9IGZyb20gJ3Z1ZSc7XG5cbiAgdHlwZSBQcm9wcyA9IHtcbiAgICAvKiogRGV0ZXJtaW5lcyB0aGUgc2l6ZSBvZiB0aGUgbG9nbyBvciBtYXJrICovXG4gICAgc2l6ZTogU2l6ZUxvZ287XG5cbiAgICAvKiogU2V0cyB0aGUgcmVhbG0gZm9yIHRoaXMgbG9nbyBpbnN0YW5jZSAqL1xuICAgIHJlYWxtOiBSZWFsbTtcbiAgfTtcbiAgY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczxQcm9wcz4oKTtcblxuICBjb25zdCBpbm5lclNWRyA9IHJlZjxDb21wb25lbnQ+KCk7XG5cbiAgY29uc3QgbG9nb1dpZHRoID0gY29tcHV0ZWQ8bnVtYmVyPigoKSA9PiB7XG4gICAgaWYgKHByb3BzLnNpemUgPT09IFNJWkVfTE9HTy5NQVJLKSByZXR1cm4gTE9HT19NQVJLX1dJRFRIW2dldFJlYWxtS2V5RnJvbVJlYWxtKHByb3BzLnJlYWxtKV07XG4gICAgY29uc3QgZnVsbExvZ29XaWR0aCA9IExPR09fTEFSR0VfV0lEVEhbZ2V0UmVhbG1LZXlGcm9tUmVhbG0ocHJvcHMucmVhbG0pXTtcbiAgICBpZiAocHJvcHMuc2l6ZSA9PT0gU0laRV9MT0dPLlNNQUxMKSB7XG4gICAgICBjb25zdCBzaHJpbmtGYWN0b3IgPSBMT0dPX0hFSUdIVC5TTUFMTCAvIExPR09fSEVJR0hULkxBUkdFO1xuICAgICAgcmV0dXJuIE1hdGgucm91bmQoZnVsbExvZ29XaWR0aCAqIHNocmlua0ZhY3Rvcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmdWxsTG9nb1dpZHRoO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgbG9nb0hlaWdodCA9IGNvbXB1dGVkPG51bWJlcj4oKCkgPT4gKHByb3BzLnNpemUgPT09IFNJWkVfTE9HTy5TTUFMTCA/IExPR09fSEVJR0hULlNNQUxMIDogTE9HT19IRUlHSFQuTEFSR0UpKTtcblxuICB3YXRjaChcbiAgICAoKSA9PiBbcHJvcHMuc2l6ZSwgcHJvcHMucmVhbG1dLFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRlZmluZUFzeW5jQ29tcG9uZW50KCgpID0+IHtcbiAgICAgICAgaWYgKHByb3BzLnNpemUgPT09IFNJWkVfTE9HTy5NQVJLKVxuICAgICAgICAgIHJldHVybiBpbXBvcnQoYC4uL2Fzc2V0cy9zdmcvYnJhbmRpbmcvbWFyay9tYXJrLSR7cHJvcHMucmVhbG19LnN2Zz9jb21wb25lbnRgKTtcbiAgICAgICAgZWxzZSByZXR1cm4gaW1wb3J0KGAuLi9hc3NldHMvc3ZnL2JyYW5kaW5nL2xvZ28vbG9nby0ke3Byb3BzLnJlYWxtfS5zdmc/Y29tcG9uZW50YCk7XG4gICAgICB9KTtcbiAgICAgIGlubmVyU1ZHLnZhbHVlID0gbWFya1Jhdyhjb21wb25lbnQpO1xuICAgIH0sXG4gICAgeyBpbW1lZGlhdGU6IHRydWUgfVxuICApO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIDpjbGFzcz1cIlsndGlkZS1yZWFsbS1sb2dvJ11cIlxuICAgIDpzdHlsZT1cIntcbiAgICAgICctLXRpZGUtbG9nby13aWR0aCc6IGAke2xvZ29XaWR0aH1weGAsXG4gICAgICAnLS10aWRlLWxvZ28taGVpZ2h0JzogYCR7bG9nb0hlaWdodH1weGAsXG4gICAgfVwiXG4gID5cbiAgICA8Q29tcG9uZW50XG4gICAgICA6Y2xhc3M9XCJbQ1NTLkRJU1BMQVkuQkxPQ0tdXCJcbiAgICAgIDppcz1cImlubmVyU1ZHXCJcbiAgICAgIHYtaWY9XCJpbm5lclNWR1wiXG4gICAgLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c3R5bGU+XG4gIC50aWRlLXJlYWxtLWxvZ28ge1xuICAgIHdpZHRoOiB2YXIoLS10aWRlLWxvZ28td2lkdGgpO1xuICAgIGhlaWdodDogdmFyKC0tdGlkZS1sb2dvLWhlaWdodCk7XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgSW50ZXJuYWxCYXNlTGluayBmcm9tICdAL2NvbXBvbmVudHMvSW50ZXJuYWxCYXNlTGluay52dWUnO1xuICBpbXBvcnQgeyBDU1MgfSBmcm9tICdAL3R5cGVzL1N0eWxlcyc7XG4gIGltcG9ydCB7IFRBUkdFVCB9IGZyb20gJ0AvdHlwZXMvVGFyZ2V0JztcblxuICBpbXBvcnQgdHlwZSB7IExpbmsgfSBmcm9tICdAL3R5cGVzL0xpbmsnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgaGVhZGluZz86IHN0cmluZztcbiAgICBsaW5rczogTGlua1tdO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaGVhZGluZzogJycsXG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPHNlY3Rpb24gY2xhc3M9XCJ0aWRlLXNlby1saW5rc1wiPlxuICAgIDxoMiA6Y2xhc3M9XCJbQ1NTLk1BUkdJTi5CT1RUT00uSEFMRl1cIj5cbiAgICAgIHt7IHByb3BzLmhlYWRpbmcgfX1cbiAgICA8L2gyPlxuXG4gICAgPHVsIDpjbGFzcz1cIltDU1MuRElTUExBWS5GTEVYLCBDU1MuRkxFWC5XUkFQLCBDU1MuR0FQLlRXTywgQ1NTLkxJU1RfQlVMTEVUUy5PRkZdXCI+XG4gICAgICA8bGlcbiAgICAgICAgOmNsYXNzPVwiWyd0aWRlLXNlby1saW5rJywgQ1NTLkRJU1BMQVkuRkxFWCwgQ1NTLkZMRVguRElSRUNUSU9OLkNPTFVNTiwgQ1NTLkdBUC5RVUFSVEVSLCBDU1MuRk9OVC5ST0xFLkJPRFlfMl1cIlxuICAgICAgICA6a2V5PVwibGluay5sYWJlbFwiXG4gICAgICAgIHYtZm9yPVwibGluayBpbiBwcm9wcy5saW5rc1wiXG4gICAgICA+XG4gICAgICAgIDxJbnRlcm5hbEJhc2VMaW5rXG4gICAgICAgICAgOmNsYXNzPVwiW0NTUy5VTkRFUkxJTkUuUkVTVC5PRkZdXCJcbiAgICAgICAgICA6aHJlZj1cImxpbmsudXJsXCJcbiAgICAgICAgICA6dGFyZ2V0PVwibGluay5pc05ld1RhYiA/IFRBUkdFVC5CTEFOSyA6IFRBUkdFVC5TRUxGXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGxpbmsubGFiZWwgfX1cbiAgICAgICAgPC9JbnRlcm5hbEJhc2VMaW5rPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L3NlY3Rpb24+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAvKiBUT0RPOiBSZWZhY3RvciB0byBhY2NlcHQgYnJlYWtwb2ludCBwcm9wIGluIG9yZGVyIHRvIGFjY29tcGxpc2ggdGhpcyB3aXRoIG5laXRoZXIgY3VzdG9tIGJyZWFrcG9pbnRzIG5vciBkZXBlbmRlbmN5IG9uIFZpZXdwb3J0U3RvcmUuICovXG4gIC50aWRlLXNlby1saW5rIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAgIC50aWRlLXNlby1saW5rIHtcbiAgICAgIHdpZHRoOiBjYWxjKCgxMDAlIC0gMnJlbSkgLyAyKTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogMTIzMnB4KSB7XG4gICAgLnRpZGUtc2VvLWxpbmsge1xuICAgICAgd2lkdGg6IGNhbGMoKDEwMCUgLSA2cmVtKSAvIDQpO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgc2hlZXQgY29tcG9uZW50IGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIGRpc3BsYXlpbmcgY29udGVudCBpbiBhIG1vZGFsLWxpa2UgbWVudSBvdmVybGF5IG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBzY3JlZW4uXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVzaGVldC0tZG9jcykgZm9yIFRpZGVTaGVldFxuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbiAgaW1wb3J0IHsgb25CZWZvcmVNb3VudCwgb25CZWZvcmVVbm1vdW50LCBvbk1vdW50ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUnO1xuXG4gIGltcG9ydCBUaWRlQnV0dG9uSWNvbiBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUJ1dHRvbkljb24udnVlJztcbiAgaW1wb3J0IFRpZGVEaXZpZGVyIGZyb20gJ0AvY29tcG9uZW50cy9UaWRlRGl2aWRlci52dWUnO1xuICBpbXBvcnQgeyBJQ09OIH0gZnJvbSAnQC90eXBlcy9JY29uJztcbiAgaW1wb3J0IHsgUFJJT1JJVFkgfSBmcm9tICdAL3R5cGVzL1ByaW9yaXR5JztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIsIHNldFNjcm9sbExvY2sgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgaW1wb3J0IHR5cGUgeyBSZWYgfSBmcm9tICd2dWUnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIENvbnRyb2xzIGRpc3BsYXkgb2YgdGhlIGJhY2sgYnV0dG9uLiAqL1xuICAgIGlzQmFja0J1dHRvbj86IGJvb2xlYW47XG4gIH07XG5cbiAgd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgaXNCYWNrQnV0dG9uOiBmYWxzZSxcbiAgfSk7XG5cbiAgdHlwZSBFbWl0cyA9IHtcbiAgICAoZTogJ2JhY2snKTogdm9pZDtcbiAgfTtcblxuICBjb25zdCBlbWl0ID0gZGVmaW5lRW1pdHM8RW1pdHM+KCk7XG5cbiAgY29uc3QgZGlhbG9nRWxlbWVudDogUmVmPEhUTUxEaWFsb2dFbGVtZW50IHwgbnVsbD4gPSByZWYobnVsbCk7XG5cbiAgY29uc3QgaXNPcGVuID0gZGVmaW5lTW9kZWw8Ym9vbGVhbj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCB0cmlnZ2VyTmF0aXZlRGlhbG9nT3BlbiA9ICgpID0+IHtcbiAgICBkaWFsb2dFbGVtZW50LnZhbHVlPy5zaG93TW9kYWwoKTtcbiAgICBzZXRTY3JvbGxMb2NrKHRydWUpO1xuICB9O1xuXG4gIGNvbnN0IHRyaWdnZXJOYXRpdmVEaWFsb2dDbG9zZSA9ICgpID0+IHtcbiAgICBkaWFsb2dFbGVtZW50LnZhbHVlPy5jbG9zZSgpO1xuICAgIHNldFNjcm9sbExvY2soZmFsc2UpO1xuICB9O1xuXG4gIGNvbnN0IGNsb3NlID0gKCkgPT4ge1xuICAgIGlzT3Blbi52YWx1ZSA9IGZhbHNlO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUJhY2tkcm9wQ2xpY2sgPSAoKSA9PiB7XG4gICAgY2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVFc2NhcGVLZXlkb3duID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNsb3NlKCk7XG4gIH07XG5cbiAgd2F0Y2goaXNPcGVuLCAoKSA9PiB7XG4gICAgaWYgKCFkaWFsb2dFbGVtZW50LnZhbHVlKSByZXR1cm47XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ0Nsb3NlKCk7XG4gICAgfVxuICB9KTtcblxuICBvbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICBpbml0RmF1eFRvcExheWVyKCk7XG4gIH0pO1xuXG4gIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgdHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4oKTtcbiAgICB9XG4gIH0pO1xuXG4gIG9uQmVmb3JlVW5tb3VudCgoKSA9PiB7XG4gICAgaWYgKGlzT3Blbi52YWx1ZSkge1xuICAgICAgaXNPcGVuLnZhbHVlID0gZmFsc2U7XG4gICAgICB0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UoKTtcbiAgICB9XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFRlbGVwb3J0IDp0bz1cImAjJHtUT1BfTEFZRVJfSUR9YFwiPlxuICAgIDxkaWFsb2dcbiAgICAgIDpjbGFzcz1cIlsndGlkZS1zaGVldCcsIENTUy5CRy5JTklUSUFMLCBDU1MuSEVJR0hULkZVTEwsIENTUy5XSURUSC5GVUxMLCBDU1MuT1ZFUkZMT1cuWFkuSElEREVOXVwiXG4gICAgICByZWY9XCJkaWFsb2dFbGVtZW50XCJcbiAgICAgIEBjbGljay5zZWxmPVwiaGFuZGxlQmFja2Ryb3BDbGlja1wiXG4gICAgICBAY2xvc2UucHJldmVudFxuICAgICAgQGtleWRvd24uZXNjYXBlPVwiaGFuZGxlRXNjYXBlS2V5ZG93blwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICA6Y2xhc3M9XCJbXG4gICAgICAgICAgJ3RpZGUtc2hlZXQtYm9keScsXG4gICAgICAgICAgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVCxcbiAgICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICAgIENTUy5GTEVYLkRJUkVDVElPTi5DT0xVTU4sXG4gICAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICAgIENTUy5PVkVSRkxPVy5YWS5ISURERU4sXG4gICAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICAgIF1cIlxuICAgICAgPlxuICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgQ1NTLkRJU1BMQVkuRkxFWCxcbiAgICAgICAgICAgIENTUy5JU09MQVRJT04uSVNPTEFURSxcbiAgICAgICAgICAgIENTUy5QQURESU5HLlRPUC5PTkUsXG4gICAgICAgICAgICBDU1MuUEFERElORy5YLk9ORSxcbiAgICAgICAgICAgIENTUy5QT1NJVElPTi5SRUxBVElWRSxcbiAgICAgICAgICAgIENTUy5aX0lOREVYLk9ORSxcbiAgICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxUaWRlQnV0dG9uSWNvblxuICAgICAgICAgICAgOmNsYXNzPVwiW0NTUy5GTEVYLkdST1cuT0ZGLCBDU1MuRkxFWC5TSFJJTksuT0ZGXVwiXG4gICAgICAgICAgICA6aWNvbj1cIklDT04uQ0hFVlJPTl9MRUZUXCJcbiAgICAgICAgICAgIDpwcmlvcml0eT1cIlBSSU9SSVRZLlFVQVRFUk5BUllcIlxuICAgICAgICAgICAgQGNsaWNrPVwiZW1pdCgnYmFjaycpXCJcbiAgICAgICAgICAgIHYtaWY9XCJpc0JhY2tCdXR0b25cIlxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8VGlkZUJ1dHRvbkljb25cbiAgICAgICAgICAgIDpjbGFzcz1cIltDU1MuRkxFWC5HUk9XLk9GRiwgQ1NTLkZMRVguU0hSSU5LLk9GRiwgQ1NTLk1BUkdJTi5MRUZULkFVVE9dXCJcbiAgICAgICAgICAgIDppY29uPVwiSUNPTi5DTE9TRVwiXG4gICAgICAgICAgICA6cHJpb3JpdHk9XCJQUklPUklUWS5RVUFURVJOQVJZXCJcbiAgICAgICAgICAgIEBjbGljaz1cImNsb3NlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICA8VGlkZURpdmlkZXIgLz5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAgICAgJ3RpZGUtc2hlZXQtY29udGVudCcsXG4gICAgICAgICAgICBDU1MuRElTUExBWS5HUklELFxuICAgICAgICAgICAgQ1NTLkhFSUdIVC5GVUxMLFxuICAgICAgICAgICAgQ1NTLklTT0xBVElPTi5JU09MQVRFLFxuICAgICAgICAgICAgQ1NTLk9WRVJGTE9XLlguSElEREVOLFxuICAgICAgICAgICAgQ1NTLk9WRVJGTE9XLlkuQVVUTyxcbiAgICAgICAgICAgIENTUy5QQURESU5HLkJPVFRPTS5PTkUsXG4gICAgICAgICAgICBDU1MuUE9TSVRJT04uUkVMQVRJVkUsXG4gICAgICAgICAgICBDU1MuV0lEVEguRlVMTCxcbiAgICAgICAgICBdXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzbG90IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaWFsb2c+XG4gIDwvVGVsZXBvcnQ+XG48L3RlbXBsYXRlPlxuXG48c3R5bGUgc2NvcGVkPlxuICAudGlkZS1zaGVldCB7XG4gICAgLS1zaGVldC1wYWRkaW5nLXg6IHZhcigtLXRpZGUtc3BhY2luZy0xKTtcbiAgICBtYXgtd2lkdGg6IHVuc2V0O1xuICAgIG1heC1oZWlnaHQ6IHVuc2V0O1xuICAgIGp1c3RpZnktaXRlbXM6IHJpZ2h0O1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpZGUtYW5pbWF0ZSkgYWxsb3ctZGlzY3JldGU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXRbb3Blbl0ge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcbiAgfVxuXG4gIC50aWRlLXNoZWV0OjpiYWNrZHJvcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRpZGUtYW5pbWF0ZSkgYWxsb3ctZGlzY3JldGU7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDBweCk7XG4gIH1cblxuICAudGlkZS1zaGVldFtvcGVuXTo6YmFja2Ryb3Age1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRpZGUtdHJhbnNwYXJlbnQtNDAwKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IHZhcigtLXRpZGUtYmctYmx1cik7XG4gIH1cblxuICAudGlkZS1zaGVldC1ib2R5IHtcbiAgICBtYXgtd2lkdGg6IG1pbihjYWxjKDEwMHZ3IC0gdmFyKC0tdGlkZS1zcGFjaW5nLTIpKSwgMzExcHgpO1xuICB9XG5cbiAgLnRpZGUtc2hlZXQtY29udGVudCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiB2YXIoLS1zaGVldC1wYWRkaW5nLXgpIHZhcigtLXRpZGUtc2FmZS1mcikgdmFyKC0tc2hlZXQtcGFkZGluZy14KTtcbiAgfVxuXG4gIDp3aGVyZSgudGlkZS1zaGVldC1jb250ZW50KTpkZWVwKD4gOndoZXJlKCopKSB7XG4gICAgZ3JpZC1jb2x1bW46IDI7XG4gIH1cblxuICBAc3RhcnRpbmctc3R5bGUge1xuICAgIC50aWRlLXNoZWV0W29wZW5dIHtcbiAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG4gICAgfVxuXG4gICAgLnRpZGUtc2hlZXRbb3Blbl06OmJhY2tkcm9wIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYmFja2Ryb3AtZmlsdGVyOiB2YXIoLS10aWRlLWJnLWJsdXIpO1xuICAgIH1cbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgc3dpdGNoIGNvbXBvbmVudCBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciB0b2dnbGluZyBhIGJvb2xlYW4gdmFsdWUuXG4gICAqXG4gICAqIEBzZWUgdGhlIFtTdG9yeWJvb2sgaW50ZXJmYWNlXShodHRwczovL3RpZGUtZGVzaWduLXN5c3RlbS5uZXRsaWZ5LmFwcC8/cGF0aD0vZG9jcy9jb21wb25lbnRzLXRpZGVzd2l0Y2gtLWRvY3MpIGZvciBUaWRlU3dpdGNoXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuICBpbXBvcnQgVGlkZUljb24gZnJvbSAnQC9jb21wb25lbnRzL1RpZGVJY29uLnZ1ZSc7XG4gIGltcG9ydCB7IElDT04gfSBmcm9tICdAL3R5cGVzL0ljb24nO1xuICBpbXBvcnQgeyBTSVpFIH0gZnJvbSAnQC90eXBlcy9TaXplJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuXG4gIHR5cGUgUHJvcHMgPSB7XG4gICAgLyoqIERldGVybWluZXMgY2xpY2thYmlsaXR5ICovXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICB9O1xuXG4gIGNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPFByb3BzPigpLCB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICB9KTtcblxuICBjb25zdCBpc0FjdGl2ZSA9IGRlZmluZU1vZGVsPGJvb2xlYW4+KHsgcmVxdWlyZWQ6IHRydWUgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKCFwcm9wcy5kaXNhYmxlZCkge1xuICAgICAgaXNBY3RpdmUudmFsdWUgPSAhaXNBY3RpdmUudmFsdWU7XG4gICAgfVxuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGJ1dHRvblxuICAgIDpjbGFzcz1cIltcbiAgICAgICd0aWRlLXN3aXRjaCcsXG4gICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgQ1NTLkFYSVMyLkNFTlRFUixcbiAgICAgIENTUy5CT1JERVIuRlVMTC5PTkUsXG4gICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgQ1NTLk9WRVJGTE9XLlhZLkhJRERFTixcbiAgICAgIENTUy5GTEVYLlNIUklOSy5PRkYsXG4gICAgICBDU1MuRkxFWC5HUk9XLk9GRixcbiAgICAgIGlzQWN0aXZlID8gWydhY3RpdmUnLCBDU1MuQkcuU0VDT05EQVJZXSA6IFtDU1MuQkcuU1VSRkFDRS5ERUZBVUxULCBDU1MuQk9SREVSLkNPTE9SLkRFRkFVTFRdLFxuICAgICAgZGlzYWJsZWQgJiYgW0NTUy5PUEFDSVRZLkRJU0FCTEVEXSxcbiAgICBdXCJcbiAgICA6ZGlzYWJsZWQ9XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2tcIlxuICAgIGFyaWEtbGFiZWw9XCJTd2l0Y2hcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPGRpdlxuICAgICAgOmNsYXNzPVwiW1xuICAgICAgICAndGlkZS1zd2l0Y2gtaW5kaWNhdG9yJyxcbiAgICAgICAgQ1NTLlBPU0lUSU9OLlJFTEFUSVZFLFxuICAgICAgICBDU1MuRElTUExBWS5GTEVYLFxuICAgICAgICBDU1MuQVhJUzEuQ0VOVEVSLFxuICAgICAgICBDU1MuQVhJUzIuQ0VOVEVSLFxuICAgICAgICBDU1MuQk9SREVSLlJBRElVUy5GVUxMLFxuICAgICAgICBpc0FjdGl2ZSA/IFsnYWN0aXZlJywgQ1NTLkJHLlNVUkZBQ0UuREVGQVVMVF0gOiBbQ1NTLkJHLlNFQ09OREFSWV0sXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VGlkZUljb25cbiAgICAgICAgOmljb249XCJJQ09OLkNIRUNLXCJcbiAgICAgICAgOnNpemU9XCJTSVpFLkxBUkdFXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIDwvYnV0dG9uPlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnRpZGUtc3dpdGNoIHtcbiAgICAtLXN3aXRjaC1pbmRpY2F0b3Itc2l6ZTogMjRweDtcbiAgICAtLXN3aXRjaC1pbmRpY2F0b3ItbWFyZ2luOiB2YXIoLS10aWRlLXNwYWNpbmctMVxcLzQpO1xuICAgIC0tc3dpdGNoLWJvcmRlci13aWR0aDogdmFyKC0tdGlkZS1ib3JkZXItd2lkdGgtMSk7XG4gICAgLS1zd2l0Y2gtd2lkdGg6IGNhbGModmFyKC0tc3dpdGNoLWluZGljYXRvci1zaXplKSAqIDIgKyB2YXIoLS1zd2l0Y2gtaW5kaWNhdG9yLW1hcmdpbikgKiA0KTtcbiAgICAtLXN3aXRjaC1oZWlnaHQ6IGNhbGModmFyKC0tc3dpdGNoLWluZGljYXRvci1zaXplKSArIHZhcigtLXN3aXRjaC1pbmRpY2F0b3ItbWFyZ2luKSAqIDIpO1xuXG4gICAgd2lkdGg6IHZhcigtLXN3aXRjaC13aWR0aCk7XG4gICAgaGVpZ2h0OiB2YXIoLS1zd2l0Y2gtaGVpZ2h0KTtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS10aWRlLWFuaW1hdGUpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IsIGJvcmRlci1jb2xvcjtcbiAgfVxuXG4gIC50aWRlLXN3aXRjaC5hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlkZS1zZWNvbmRhcnkpO1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoLWluZGljYXRvciB7XG4gICAgbGVmdDogdmFyKC0tc3dpdGNoLWluZGljYXRvci1tYXJnaW4pO1xuICAgIHRyYW5zaXRpb246IHZhcigtLXRpZGUtYW5pbWF0ZSk7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdCwgYm9yZGVyLWNvbG9yLCBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG5cbiAgLnRpZGUtc3dpdGNoLWluZGljYXRvci5hY3RpdmUge1xuICAgIGxlZnQ6IGNhbGMoXG4gICAgICB2YXIoLS1zd2l0Y2gtd2lkdGgpIC0gdmFyKC0tc3dpdGNoLWluZGljYXRvci1zaXplKSAtIHZhcigtLXN3aXRjaC1pbmRpY2F0b3ItbWFyZ2luKSAtIHZhcigtLXN3aXRjaC1ib3JkZXItd2lkdGgpXG4gICAgKTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgdGFicyBjb21wb25lbnQgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgbmF2aWdhdGlvbi5cbiAgICpcbiAgICogQHNlZSB0aGUgW1N0b3J5Ym9vayBpbnRlcmZhY2VdKGh0dHBzOi8vdGlkZS1kZXNpZ24tc3lzdGVtLm5ldGxpZnkuYXBwLz9wYXRoPS9kb2NzL2NvbXBvbmVudHMtdGlkZXRhYnMtLWRvY3MpIGZvciBUaWRlVGFic1xuICAgKi9cbiAgZXhwb3J0IGRlZmF1bHQge307XG48L3NjcmlwdD5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbiAgaW1wb3J0IFRpZGVDYXJvdXNlbCBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUNhcm91c2VsLnZ1ZSc7XG4gIGltcG9ydCBUaWRlTGluayBmcm9tICdAL2NvbXBvbmVudHMvVGlkZUxpbmsudnVlJztcbiAgaW1wb3J0IHsgRUxFTUVOVCB9IGZyb20gJ0AvdHlwZXMvRWxlbWVudCc7XG4gIGltcG9ydCB7IENTUyB9IGZyb20gJ0AvdHlwZXMvU3R5bGVzJztcblxuICBpbXBvcnQgdHlwZSB7IFRhYiB9IGZyb20gJ0AvdHlwZXMvVGFiJztcblxuICB0eXBlIFByb3BzID0ge1xuICAgIC8qKiBTZXRzIGxhYmVscyBhbmQgY2FsbGJhY2sgZm9yIGVhY2ggdGFiICovXG4gICAgdGFiczogVGFiW107XG4gIH07XG5cbiAgZGVmaW5lUHJvcHM8UHJvcHM+KCk7XG5cbiAgY29uc3QgY3VycmVudFRhYiA9IGRlZmluZU1vZGVsPG51bWJlcj4oeyByZXF1aXJlZDogdHJ1ZSB9KTtcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgY3VycmVudFRhYi52YWx1ZSA9IGluZGV4O1xuICB9O1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiA6Y2xhc3M9XCJbJ3RpZGUtdGFicycsIENTUy5ESVNQTEFZLkZMRVgsIENTUy5CT1JERVIuQk9UVE9NLlRXTywgQ1NTLkJPUkRFUi5DT0xPUi5MT1ddXCI+XG4gICAgPFRpZGVDYXJvdXNlbCA6aXMtZmxvYXRpbmc9XCJ0cnVlXCI+XG4gICAgICA8bGlcbiAgICAgICAgOmNsYXNzPVwiW0NTUy5QQURESU5HLlguSEFMRl1cIlxuICAgICAgICA6a2V5PVwidGFiLmxhYmVsXCJcbiAgICAgICAgdi1mb3I9XCIodGFiLCBpbmRleCkgaW4gdGFic1wiXG4gICAgICA+XG4gICAgICAgIDxUaWRlTGlua1xuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgIGluZGV4ID09PSBjdXJyZW50VGFiID8gW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuQlJBTkRdIDogW0NTUy5GT05ULkNPTE9SLlNVUkZBQ0UuVkFSSUFOVF0sXG4gICAgICAgICAgICBDU1MuUEFERElORy5CT1RUT00uT05FLFxuICAgICAgICAgICAgQ1NTLkZPTlQuUk9MRS5MQUJFTF8xLFxuICAgICAgICAgICAgQ1NTLldISVRFU1BBQ0VfV1JBUC5PRkYsXG4gICAgICAgICAgXVwiXG4gICAgICAgICAgOmVsZW1lbnQ9XCJFTEVNRU5ULkJVVFRPTlwiXG4gICAgICAgICAgOmxhYmVsPVwidGFiLmxhYmVsXCJcbiAgICAgICAgICA6c3VidGxlPVwidHJ1ZVwiXG4gICAgICAgICAgQGNsaWNrPVwiaGFuZGxlQ2xpY2soaW5kZXgpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGRpdiA6Y2xhc3M9XCJbJ3JvdW5kZWQtYm9yZGVyJywgQ1NTLk1BUkdJTi5YLkhBTEYsIGluZGV4ID09PSBjdXJyZW50VGFiICYmIFtDU1MuQkcuUFJJTUFSWV1dXCIgLz5cbiAgICAgIDwvbGk+XG4gICAgPC9UaWRlQ2Fyb3VzZWw+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHN0eWxlIHNjb3BlZD5cbiAgLnJvdW5kZWQtYm9yZGVyIHtcbiAgICBoZWlnaHQ6IDRweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS10aWRlLXJhZGl1cy1mdWxsKSB2YXIoLS10aWRlLXJhZGl1cy1mdWxsKSAwIDA7XG4gIH1cbjwvc3R5bGU+XG4iLCJpbXBvcnQgeyBpbmplY3QsIHByb3ZpZGUsIHJlYWRvbmx5LCByZWYgfSBmcm9tICd2dWUnO1xuXG5pbXBvcnQgdHlwZSB7IFRpZGVUb2FzdCwgVGlkZVRvYXN0T21pdElkLCBUaWRlVG9hc3RlciB9IGZyb20gJ0AvdHlwZXMvVG9hc3QnO1xuXG5jb25zdCBUT0FTVEVSX0tFWSA9IFN5bWJvbCgndGlkZS10b2FzdGVyJyk7XG5cbmNvbnN0IEFVVE9fRElTTUlTU19EVVJBVElPTl9NUyA9IHtcbiAgQUNUSU9OQUJMRTogMTAwMDAsXG4gIElORk9STUFUSU9OQUw6IDUwMDAsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgdXNlVGlkZVRvYXN0ZXIgPSAoKSA9PiB7XG4gIGNvbnN0IGluamVjdGVkID0gaW5qZWN0PFRpZGVUb2FzdGVyPihUT0FTVEVSX0tFWSk7XG4gIGlmIChpbmplY3RlZCkgcmV0dXJuIGluamVjdGVkO1xuXG4gIGNvbnN0IHRpbWVvdXRJZCA9IHJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGw+KG51bGwpO1xuICBjb25zdCB0b2FzdHMgPSByZWY8VGlkZVRvYXN0W10+KFtdKTtcbiAgY29uc3QgaWQgPSByZWY8bnVtYmVyPigwKTtcblxuICBjb25zdCBhZGRUb2FzdCA9IChuZXdUb2FzdDogVGlkZVRvYXN0T21pdElkKSA9PiB7XG4gICAgaWQudmFsdWUrKztcbiAgICBjbGVhclRvYXN0cygpO1xuXG4gICAgdG9hc3RzLnZhbHVlLnB1c2goe1xuICAgICAgLi4ubmV3VG9hc3QsXG4gICAgICBpZDogYHRpZGUtdG9hc3QtJHtpZC52YWx1ZX1gLFxuICAgIH0gYXMgVGlkZVRvYXN0KTtcblxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY2FuY2VsQXV0b0Rpc21pc3MoKTtcbiAgICAgIHN0YXJ0QXV0b0Rpc21pc3MoKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY2xlYXJUb2FzdHMgPSAoKSA9PiB7XG4gICAgdG9hc3RzLnZhbHVlID0gW107XG4gIH07XG5cbiAgY29uc3QgY2FuY2VsQXV0b0Rpc21pc3MgPSAoKSA9PiB7XG4gICAgaWYgKHRpbWVvdXRJZC52YWx1ZSkgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZC52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3Qgc3RhcnRBdXRvRGlzbWlzcyA9ICgpID0+IHtcbiAgICBpZiAoIXRvYXN0cy52YWx1ZS5sZW5ndGgpIHJldHVybjtcblxuICAgIGNvbnN0IGF1dG9EaXNtaXNzRHVyYXRpb24gPSB0b2FzdHMudmFsdWVbMF0uYWN0aW9uXG4gICAgICA/IEFVVE9fRElTTUlTU19EVVJBVElPTl9NUy5BQ1RJT05BQkxFXG4gICAgICA6IEFVVE9fRElTTUlTU19EVVJBVElPTl9NUy5JTkZPUk1BVElPTkFMO1xuICAgIHRpbWVvdXRJZC52YWx1ZSA9IHNldFRpbWVvdXQoY2xlYXJUb2FzdHMsIGF1dG9EaXNtaXNzRHVyYXRpb24pO1xuICB9O1xuXG4gIGNvbnN0IHRvYXN0ZXI6IFRpZGVUb2FzdGVyID0ge1xuICAgIGFkZFRvYXN0LFxuICAgIGNhbmNlbEF1dG9EaXNtaXNzLFxuICAgIGNsZWFyVG9hc3RzLFxuICAgIHN0YXJ0QXV0b0Rpc21pc3MsXG4gICAgdG9hc3RzOiByZWFkb25seSh0b2FzdHMpLFxuICB9O1xuXG4gIHByb3ZpZGUoVE9BU1RFUl9LRVksIHRvYXN0ZXIpO1xuXG4gIHJldHVybiB0b2FzdGVyO1xufTtcbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgdG9hc3RlciBjb21wb25lbnQgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgZGlzcGxheWluZyBub3RpZmljYXRpb25zLlxuICAgKlxuICAgKiBAc2VlIHRoZSBbU3Rvcnlib29rIGludGVyZmFjZV0oaHR0cHM6Ly90aWRlLWRlc2lnbi1zeXN0ZW0ubmV0bGlmeS5hcHAvP3BhdGg9L2RvY3MvY29tcG9uZW50cy10aWRldG9hc3Rlci0tZG9jcykgZm9yIFRpZGVUb2FzdGVyXG4gICAqL1xuICBleHBvcnQgZGVmYXVsdCB7fTtcbjwvc2NyaXB0PlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuICBpbXBvcnQgeyBvbkJlZm9yZU1vdW50IH0gZnJvbSAndnVlJztcblxuICBpbXBvcnQgVGlkZUFsZXJ0IGZyb20gJ0AvY29tcG9uZW50cy9UaWRlQWxlcnQudnVlJztcbiAgaW1wb3J0IHsgdXNlVGlkZVRvYXN0ZXIgfSBmcm9tICdAL2NvbXBvc2FibGVzL3VzZVRpZGVUb2FzdGVyJztcbiAgaW1wb3J0IHsgQ1NTIH0gZnJvbSAnQC90eXBlcy9TdHlsZXMnO1xuICBpbXBvcnQgeyBUT1BfTEFZRVJfSUQsIGluaXRGYXV4VG9wTGF5ZXIgfSBmcm9tICdAL3V0aWxpdGllcy92aWV3cG9ydCc7XG5cbiAgY29uc3QgeyB0b2FzdHMsIGNsZWFyVG9hc3RzLCBjYW5jZWxBdXRvRGlzbWlzcywgc3RhcnRBdXRvRGlzbWlzcyB9ID0gdXNlVGlkZVRvYXN0ZXIoKTtcblxuICBvbkJlZm9yZU1vdW50KCgpID0+IHtcbiAgICBpbml0RmF1eFRvcExheWVyKCk7XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjx0ZW1wbGF0ZT5cbiAgPFRlbGVwb3J0IDp0bz1cImAjJHtUT1BfTEFZRVJfSUR9YFwiPlxuICAgIDxkaXZcbiAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgJ3RpZGUtdG9hc3RlcicsXG4gICAgICAgIENTUy5IRUlHSFQuRlVMTCxcbiAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9GRixcbiAgICAgICAgQ1NTLlBPU0lUSU9OLkZJWEVELFxuICAgICAgICBDU1MuUE9TSVRJT05JTkcuTEVGVCxcbiAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlRPUCxcbiAgICAgICAgQ1NTLldJRFRILkZVTEwsXG4gICAgICBdXCJcbiAgICA+XG4gICAgICA8VHJhbnNpdGlvbkdyb3VwIG5hbWU9XCJwb3BcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIDpjbGFzcz1cIltcbiAgICAgICAgICAgICd0aWRlLXRvYXN0LXdyYXAnLFxuICAgICAgICAgICAgQ1NTLlBPSU5URVJfRVZFTlRTLk9OLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OLkFCU09MVVRFLFxuICAgICAgICAgICAgQ1NTLlpfSU5ERVguT05FLFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlJJR0hULFxuICAgICAgICAgICAgQ1NTLlBPU0lUSU9OSU5HLlRPUCxcbiAgICAgICAgICAgIENTUy5NQVJHSU4uRlVMTC5PTkUsXG4gICAgICAgICAgICBDU1MuV0lEVEguU1RSRVRDSCxcbiAgICAgICAgICBdXCJcbiAgICAgICAgICA6a2V5PVwidG9hc3QuaWRcIlxuICAgICAgICAgIEBtb3VzZWVudGVyPVwiY2FuY2VsQXV0b0Rpc21pc3NcIlxuICAgICAgICAgIEBtb3VzZWxlYXZlPVwic3RhcnRBdXRvRGlzbWlzc1wiXG4gICAgICAgICAgdi1mb3I9XCJ0b2FzdCBpbiB0b2FzdHNcIlxuICAgICAgICA+XG4gICAgICAgICAgPFRpZGVBbGVydFxuICAgICAgICAgICAgOmN0YS1sYWJlbD1cInRvYXN0LmFjdGlvbj8ubGFiZWxcIlxuICAgICAgICAgICAgOmhlYWRpbmc9XCJ0b2FzdC5oZWFkaW5nXCJcbiAgICAgICAgICAgIDpzdHlsZT1cInsgJy0tdGlkZS1tYXgtd2lkdGgnOiAnbm9uZScgfVwiXG4gICAgICAgICAgICBAY2xvc2U9XCJjbGVhclRvYXN0c1wiXG4gICAgICAgICAgICBAY3RhLWNsaWNrPVwidG9hc3Q/LmFjdGlvbj8uY2FsbGJhY2tcIlxuICAgICAgICAgICAgaXMtZGlzbWlzc2libGVcbiAgICAgICAgICAgIGlzLXRvYXN0XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgdG9hc3QuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICA8L1RpZGVBbGVydD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L1RyYW5zaXRpb25Hcm91cD5cbiAgICA8L2Rpdj5cbiAgPC9UZWxlcG9ydD5cbjwvdGVtcGxhdGU+XG5cbjxzdHlsZSBzY29wZWQ+XG4gIC5wb3AtZW50ZXItYWN0aXZlLFxuICAucG9wLWxlYXZlLWFjdGl2ZSB7XG4gICAgdHJhbnNpdGlvbjogdmFyKC0tdGlkZS1hbmltYXRlKTtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5LCB0cmFuc2Zvcm0sIHRyYW5zbGF0ZTtcbiAgfVxuXG4gIC5wb3AtZW50ZXItZnJvbSB7XG4gICAgdHJhbnNsYXRlOiAxMDAlIDA7XG4gIH1cblxuICAucG9wLWxlYXZlLXRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHotaW5kZXg6IDAgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5wb3AtbGVhdmUtYWN0aXZlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICAudGlkZS10b2FzdC13cmFwIHtcbiAgICAgIHdpZHRoOiA0MDBweDtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iXSwibmFtZXMiOlsiT1JJRU5UQVRJT04iLCJDU1MiLCJ1dGlsaXRpZXMiLCJicmVha3BvaW50IiwidXRpbGl0eSIsIl9fZGVmYXVsdF9fIiwicHJvcHMiLCJfX3Byb3BzIiwiX29wZW5CbG9jayIsIl9jcmVhdGVFbGVtZW50QmxvY2siLCJfaG9pc3RlZF8xIiwiX2NyZWF0ZUVsZW1lbnRWTm9kZSIsIl9ub3JtYWxpemVDbGFzcyIsIl91bnJlZiIsIlJFQUxNIiwiU0laRSIsIlNJWkVfQlVUVE9OIiwiZm9ybWF0TnVtYmVyIiwiaW5wdXQiLCJvdXRwdXQiLCJkaWdpdHMiLCJmb3JtYXRQYXNjYWxDYXNlIiwid29yZCIsImZvcm1hdFBob25lIiwiZm9ybWF0UHJpY2UiLCJpbm5lclNWRyIsInJlZiIsIndhdGNoIiwiaWQiLCJuYW1lIiwicHJlZml4IiwicmVhbG1Gb2xkZXIiLCJjb21wb25lbnQiLCJkZWZpbmVBc3luY0NvbXBvbmVudCIsIl9fdmFyaWFibGVEeW5hbWljSW1wb3J0UnVudGltZUhlbHBlciIsIm1hcmtSYXciLCJfY3JlYXRlQmxvY2siLCJfcmVzb2x2ZUR5bmFtaWNDb21wb25lbnQiLCJJQ09OIiwiSUNPTl9SRUFMTSIsImlzRXhwYW5kZWQiLCJfdXNlTW9kZWwiLCJoYW5kbGVUb2dnbGVDbGljayIsIm5ld1ZhbHVlIiwiVGlkZURpdmlkZXIiLCJfY3JlYXRlVk5vZGUiLCJUaWRlSWNvbiIsIl9yZW5kZXJTbG90IiwiX2N0eCIsIkVMRU1FTlQiLCJFTEVNRU5UX0JST0FEIiwidGlkZUNvbmZpZ0RlZmF1bHRzIiwiQ09ORklHX0tFWSIsInByb3ZpZGVUaWRlQ29uZmlnIiwiY29uZmlnIiwiY29uZmlnV2l0aERlZmF1bHRzIiwicHJvdmlkZSIsInVzZVRpZGVDb25maWciLCJpbmplY3QiLCJsaW5rQ29tcG9uZW50IiwiUFJJT1JJVFkiLCJUQVJHRVQiLCJ0eXBlQXR0cmlidXRlIiwiY29tcHV0ZWQiLCJyb290RWxlbWVudCIsIkludGVybmFsQmFzZUxpbmsiLCJfdG9EaXNwbGF5U3RyaW5nIiwiQUxFUlQiLCJlbWl0IiwiX19lbWl0Iiwic2xvdHMiLCJ1c2VTbG90cyIsImhhc0JvZHkiLCJub2RlcyIsIl9hIiwibm9kZSIsIkNvbW1lbnQiLCJpY29uVHlwZSIsIlRpZGVMaW5rIiwiVGlkZUJ1dHRvbkljb24iLCJCQURHRV9DT0xPUiIsIkJBREdFX0NPTE9SX0RFVEFJTFMiLCJCQURHRV9UUlVTVEVEIiwiX0ZyYWdtZW50IiwiY3J1bWIiLCJpbmRleCIsIl9jcmVhdGVUZXh0Vk5vZGUiLCJfaG9pc3RlZF8yIiwiaXNUb3VjaGVkIiwiaXNTYXZlZCIsIl9jYWNoZSIsIiRldmVudCIsImN1cnJlbnRJbmRleCIsInVuaXF1ZUlkIiwidXNlSWQiLCJpbnB1dEZvcm1BdHRyaWJ1dGUiLCJpbnB1dE5hbWVBdHRyaWJ1dGUiLCJfcmVuZGVyTGlzdCIsInRhYiIsIlRZUEVfQ0FSRCIsImNhcm91c2VsUmVmIiwiY29udGFpbmVyUmVmIiwiY29udGVudFdpZHRoIiwiY3VycmVudFBhZ2VJbmRleCIsImRvdHNSZWYiLCJmcmFtZVdpZHRoIiwiaXNGaXJzdFNsaWRlIiwiaXNMYXN0U2xpZGUiLCJzaG93QnV0dG9ucyIsInNsaWRlT2JzZXJ2ZXIiLCJzbGlkZXMiLCJzbGlkZXNJblZpZXciLCJzbG90T2JzZXJ2ZXIiLCJ0b3VjaFN0YXJ0Iiwic2xpZGVzSW5WaWV3Q291bnQiLCJjdXJyZW50UGFnZSIsImRvdENvbnRhaW5lcldpZHRoIiwiZG90Q291bnRWaXNpYmxlIiwiZG90V2lkdGgiLCJkb3RHYXAiLCJ0b3RhbFBhZ2VzIiwicXVvdGllbnQiLCJzY3JvbGxUaW1lb3V0IiwiZ2V0RG90Q2xhc3MiLCJkb3RJbmRleCIsImNsYXNzTmFtZSIsImdldElzRWxlbWVudFdpdGhpbkNvbnRhaW5lciIsImVsZW1lbnQiLCJjb250YWluZXIiLCJjb250YWluZXJSZWN0IiwiY29udGFpbmVyUmlnaHQiLCJlbGVtZW50UmVjdCIsImhhbmRsZVRvdWNoRW5kIiwiZXZlbnQiLCJ0b3VjaEVuZCIsImRlbHRhWCIsImRlbHRhWSIsInNjcm9sbEJ5RGVsdGEiLCJoYW5kbGVUb3VjaFN0YXJ0IiwiaGFuZGxlV2hlZWwiLCJpc1NoaWZ0S2V5RG93biIsImlzV2hlZWwiLCJvZmZzZXQiLCJzY3JvbGxUb09mZnNldCIsIm1lYXN1cmVEb20iLCJzbGlkZSIsIm9ic2VydmVTbGlkZXMiLCJvcHRpb25zIiwiZW50cmllcyIsInNsaWRlc0FkZGVkVG9WaWV3IiwiZW50cnkiLCJzbGlkZUluZGV4IiwiYSIsImIiLCJjaGlsZCIsIm9ic2VydmVTbG90Iiwib2JzZXJ2ZXJDYWxsYmFjayIsImRlbHRhIiwic2hvd1ByZXZpb3VzUGFnZSIsInNob3dQcmV2aW91c1NsaWRlIiwic2hvd05leHRQYWdlIiwic2hvd05leHRTbGlkZSIsInRhcmdldCIsImlzU2Nyb2xsaW5nTGVmdCIsInVwZGF0ZURvdHMiLCJuZXh0U2xpZGUiLCJwcmV2aW91c1NsaWRlIiwiY2VudGVyRG90Iiwib25Nb3VudGVkIiwib25Vbm1vdW50ZWQiLCJfYiIsIl9ub3JtYWxpemVTdHlsZSIsIl8iLCJpc0FjdGl2ZSIsImhhbmRsZUNsaWNrIiwiX2hvaXN0ZWRfMyIsIl9ob2lzdGVkXzQiLCJfaG9pc3RlZF81IiwiRk9STV9LRVkiLCJ1c2VUaWRlRm9ybSIsImZvcmNlU2hvd0Vycm9ycyIsInVzZUZvcm1Db250ZXh0IiwicmV2ZWFsVmFsaWRhdGlvbkVycm9ycyIsImhhbmRsZVN1Ym1pdCIsImUiLCJPQkpFQ1RfRklUIiwicGljdHVyZSIsImltZyIsImltYWdlRGVmYXVsdCIsIm9iamVjdEZpdENsYXNzTmFtZSIsInNldEltYWdlRnJvbURlZmF1bHQiLCJjdXJyZW50U3JjIiwic291cmNlcyIsInNvdXJjZSIsIl9jIiwiVGlkZUltYWdlIiwiZXJyb3JNZXNzYWdlRGVmYXVsdCIsIlZBTElEQVRJT05fUkVTVUxUIiwiY2hlY2tGb3JtYXQiLCJmb3JtYXQiLCJtZXNzYWdlIiwidmFsdWUiLCJyZXN1bHQiLCJnZXRGaWVsZExlbmd0aElzVmFsaWQiLCJtYXhsZW5ndGgiLCJtaW5sZW5ndGgiLCJyZXF1aXJlZCIsImlzRW1wdHlBbmRVbnJlcXVpcmVkIiwiaXNUb29Mb25nIiwiZ2V0RmllbGRWYWxpZGF0aW9uUmVzdWx0IiwiZXJyb3JGcm9tUHJvcHMiLCJ2YWxpZGF0b3JzIiwidmFsaWRhdGlvbiIsInZhbGlkYXRlUHJvcGVydHkiLCJsZW5ndGhWYWxpZGF0aW9uIiwidmFsaWRhdGVMZW5ndGgiLCJyZXNwb25zZSIsInZhbGlkYXRvciIsIm1vZGVsVmFsdWUiLCJmb3JtQ29udGV4dCIsImlzVmFsaWRhdGluZyIsImVycm9yUmVmIiwiZm9ybWF0dGVkTGFiZWwiLCJpc0NoZWNrZWQiLCJzaG93RXJyb3IiLCJoYXNFcnJvckZyb21Qcm9wIiwic3VwcG9ydGluZ1RleHRNZXNzYWdlIiwiZ2V0Q2hlY2tib3hWYWxpZGF0aW9uUmVzdWx0Iiwid2F0Y2hFZmZlY3QiLCJUaWRlSW5wdXRTdXBwb3J0aW5nVGV4dCIsImNoZWNrZWQiLCJvbGRWYWx1ZSIsIkZPUk1BVCIsIkZPUk1BVF9SRUdFWCIsIlZBTElEQVRPUiIsIkVSUk9SX0RJU1BMQVkiLCJoYXNGb2N1cyIsImlucHV0SWQiLCJzZWxlY3RFbGVtZW50IiwiaGFzTWluaWxhYmVsIiwiaXNFbXB0eSIsImV4cGFuZE9wdGlvbnMiLCJoYW5kbGVGb2N1cyIsImhhbmRsZUZvY3VzT3V0Iiwib3B0Z3JvdXAiLCJvcHRpb24iLCJfaG9pc3RlZF82IiwiZ2V0RXJyb3JNZXNzYWdlIiwiZXJyb3JGcm9tUmVmIiwiZ2V0RmllbGRIYXNFcnJvciIsImhhbmRsZUZpZWxkVmFsaWRhdGlvbiIsImVycm9yIiwiZXJyb3JNZXNzYWdlIiwiaGFzRXJyb3IiLCJfX2V4cG9zZSIsIlRFWFRfSU5QVVRfVFlQRSIsIklOUFVUX01PREUiLCJnZXRUZXh0SW5wdXRNb2RlIiwidHlwZSIsImlucHV0bW9kZSIsImlucHV0RWxlbWVudCIsInNob3dQYXNzd29yZCIsImlucHV0TW9kZUF0dHJpYnV0ZSIsImlucHV0VHlwZSIsInNob3VsZFNob3dDbGVhckJ1dHRvbiIsInNob3VsZFNob3dQYXNzd29yZEJ1dHRvbiIsImhhbmRsZUNsZWFyIiwiaGFuZGxlRmllbGRDbGljayIsInByZXZlbnRJbnB1dEZvY3VzTG9zc09uTW91c2Vkb3duIiwiaGFzQ2xlYXIiLCJoYW5kbGVWYWxpZGF0aW9uIiwiaGFuZGxlSW5wdXQiLCJ1cGRhdGVWYWx1ZSIsInRleHRhcmVhRWxlbWVudCIsInByZXZlbnRUZXh0YXJlYUZvY3VzTG9zc09uTW91c2Vkb3duIiwiQlJFQUtQT0lOVCIsIk1FRElBIiwic2V0U2Nyb2xsTG9jayIsImlzTG9ja2VkIiwiYm9keSIsInNjcm9sbFkiLCJuZXh0VGljayIsInNhdmVkU2Nyb2xsWSIsIlRPUF9MQVlFUl9JRCIsImluaXRGYXV4VG9wTGF5ZXIiLCJ0b3BMYXllciIsIm1vZGFsQ29udGVudCIsIm1vZGFsRGlhbG9nIiwiaXNPcGVuIiwidHJpZ2dlck5hdGl2ZURpYWxvZ09wZW4iLCJ0cmlnZ2VyTmF0aXZlRGlhbG9nQ2xvc2UiLCJzY3JvbGxDb250ZW50VG9Ub3AiLCJjbG9zZSIsImhhbmRsZUJhY2tkcm9wQ2xpY2siLCJoYW5kbGVFc2NhcGVLZXlkb3duIiwib25CZWZvcmVNb3VudCIsIm9uQmVmb3JlVW5tb3VudCIsIl9UZWxlcG9ydCIsIiRzbG90cyIsInBhZ2luYXRpb25CdXR0b25zIiwiZW1wdHkiLCJoYW5kbGVQcmV2aW91c0NsaWNrIiwiaGFuZGxlTmV4dENsaWNrIiwicGFnaW5hdGlvbkJ1dHRvbiIsIlRpZGVCdXR0b25QYWdpbmF0aW9uIiwic2lkZXMiLCJhbGlnbm1lbnRzIiwicGxhY2VtZW50cyIsImFjYyIsInNpZGUiLCJtaW4iLCJtYXgiLCJyb3VuZCIsImZsb29yIiwiY3JlYXRlQ29vcmRzIiwidiIsIm9wcG9zaXRlU2lkZU1hcCIsIm9wcG9zaXRlQWxpZ25tZW50TWFwIiwiY2xhbXAiLCJzdGFydCIsImVuZCIsImV2YWx1YXRlIiwicGFyYW0iLCJnZXRTaWRlIiwicGxhY2VtZW50IiwiZ2V0QWxpZ25tZW50IiwiZ2V0T3Bwb3NpdGVBeGlzIiwiYXhpcyIsImdldEF4aXNMZW5ndGgiLCJnZXRTaWRlQXhpcyIsImdldEFsaWdubWVudEF4aXMiLCJnZXRBbGlnbm1lbnRTaWRlcyIsInJlY3RzIiwicnRsIiwiYWxpZ25tZW50IiwiYWxpZ25tZW50QXhpcyIsImxlbmd0aCIsIm1haW5BbGlnbm1lbnRTaWRlIiwiZ2V0T3Bwb3NpdGVQbGFjZW1lbnQiLCJnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCIsImV4cGFuZFBhZGRpbmdPYmplY3QiLCJwYWRkaW5nIiwiZ2V0UGFkZGluZ09iamVjdCIsInJlY3RUb0NsaWVudFJlY3QiLCJyZWN0IiwieCIsInkiLCJ3aWR0aCIsImhlaWdodCIsImNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50IiwiX3JlZiIsInJlZmVyZW5jZSIsImZsb2F0aW5nIiwic2lkZUF4aXMiLCJhbGlnbkxlbmd0aCIsImlzVmVydGljYWwiLCJjb21tb25YIiwiY29tbW9uWSIsImNvbW1vbkFsaWduIiwiY29vcmRzIiwiY29tcHV0ZVBvc2l0aW9uIiwic3RyYXRlZ3kiLCJtaWRkbGV3YXJlIiwicGxhdGZvcm0iLCJ2YWxpZE1pZGRsZXdhcmUiLCJzdGF0ZWZ1bFBsYWNlbWVudCIsIm1pZGRsZXdhcmVEYXRhIiwicmVzZXRDb3VudCIsImkiLCJmbiIsIm5leHRYIiwibmV4dFkiLCJkYXRhIiwicmVzZXQiLCJkZXRlY3RPdmVyZmxvdyIsInN0YXRlIiwiX2F3YWl0JHBsYXRmb3JtJGlzRWxlIiwiZWxlbWVudHMiLCJib3VuZGFyeSIsInJvb3RCb3VuZGFyeSIsImVsZW1lbnRDb250ZXh0IiwiYWx0Qm91bmRhcnkiLCJwYWRkaW5nT2JqZWN0IiwiY2xpcHBpbmdDbGllbnRSZWN0Iiwib2Zmc2V0UGFyZW50Iiwib2Zmc2V0U2NhbGUiLCJlbGVtZW50Q2xpZW50UmVjdCIsImdldFBsYWNlbWVudExpc3QiLCJhdXRvQWxpZ25tZW50IiwiYWxsb3dlZFBsYWNlbWVudHMiLCJhdXRvUGxhY2VtZW50IiwiX21pZGRsZXdhcmVEYXRhJGF1dG9QIiwiX21pZGRsZXdhcmVEYXRhJGF1dG9QMiIsIl9wbGFjZW1lbnRzVGhhdEZpdE9uRSIsImNyb3NzQXhpcyIsImRldGVjdE92ZXJmbG93T3B0aW9ucyIsInBsYWNlbWVudHMkMSIsIm92ZXJmbG93IiwiY3VycmVudFBsYWNlbWVudCIsImFsaWdubWVudFNpZGVzIiwiY3VycmVudE92ZXJmbG93cyIsImFsbE92ZXJmbG93cyIsIm5leHRQbGFjZW1lbnQiLCJwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UiLCJkIiwicmVzZXRQbGFjZW1lbnQiLCJjb252ZXJ0VmFsdWVUb0Nvb3JkcyIsIm1haW5BeGlzTXVsdGkiLCJjcm9zc0F4aXNNdWx0aSIsInJhd1ZhbHVlIiwibWFpbkF4aXMiLCJfbWlkZGxld2FyZURhdGEkb2Zmc2UiLCJfbWlkZGxld2FyZURhdGEkYXJyb3ciLCJkaWZmQ29vcmRzIiwic2hpZnQiLCJjaGVja01haW5BeGlzIiwiY2hlY2tDcm9zc0F4aXMiLCJsaW1pdGVyIiwibWFpbkF4aXNDb29yZCIsImNyb3NzQXhpc0Nvb3JkIiwibWluU2lkZSIsIm1heFNpZGUiLCJsaW1pdGVkQ29vcmRzIiwiaGFzV2luZG93IiwiZ2V0Tm9kZU5hbWUiLCJpc05vZGUiLCJnZXRXaW5kb3ciLCJfbm9kZSRvd25lckRvY3VtZW50IiwiZ2V0RG9jdW1lbnRFbGVtZW50IiwiaXNFbGVtZW50IiwiaXNIVE1MRWxlbWVudCIsImlzU2hhZG93Um9vdCIsImlzT3ZlcmZsb3dFbGVtZW50Iiwib3ZlcmZsb3dYIiwib3ZlcmZsb3dZIiwiZGlzcGxheSIsImdldENvbXB1dGVkU3R5bGUiLCJpc1RhYmxlRWxlbWVudCIsImlzVG9wTGF5ZXIiLCJzZWxlY3RvciIsImlzQ29udGFpbmluZ0Jsb2NrIiwiZWxlbWVudE9yQ3NzIiwid2Via2l0IiwiaXNXZWJLaXQiLCJjc3MiLCJnZXRDb250YWluaW5nQmxvY2siLCJjdXJyZW50Tm9kZSIsImdldFBhcmVudE5vZGUiLCJpc0xhc3RUcmF2ZXJzYWJsZU5vZGUiLCJnZXROb2RlU2Nyb2xsIiwiZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IiLCJwYXJlbnROb2RlIiwiZ2V0T3ZlcmZsb3dBbmNlc3RvcnMiLCJsaXN0IiwidHJhdmVyc2VJZnJhbWVzIiwiX25vZGUkb3duZXJEb2N1bWVudDIiLCJzY3JvbGxhYmxlQW5jZXN0b3IiLCJpc0JvZHkiLCJ3aW4iLCJmcmFtZUVsZW1lbnQiLCJnZXRGcmFtZUVsZW1lbnQiLCJnZXRDc3NEaW1lbnNpb25zIiwiaGFzT2Zmc2V0Iiwib2Zmc2V0V2lkdGgiLCJvZmZzZXRIZWlnaHQiLCJzaG91bGRGYWxsYmFjayIsInVud3JhcEVsZW1lbnQiLCJnZXRTY2FsZSIsImRvbUVsZW1lbnQiLCIkIiwibm9PZmZzZXRzIiwiZ2V0VmlzdWFsT2Zmc2V0cyIsInNob3VsZEFkZFZpc3VhbE9mZnNldHMiLCJpc0ZpeGVkIiwiZmxvYXRpbmdPZmZzZXRQYXJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJpbmNsdWRlU2NhbGUiLCJpc0ZpeGVkU3RyYXRlZ3kiLCJjbGllbnRSZWN0Iiwic2NhbGUiLCJ2aXN1YWxPZmZzZXRzIiwib2Zmc2V0V2luIiwiY3VycmVudFdpbiIsImN1cnJlbnRJRnJhbWUiLCJpZnJhbWVTY2FsZSIsImlmcmFtZVJlY3QiLCJsZWZ0IiwidG9wIiwiZ2V0V2luZG93U2Nyb2xsQmFyWCIsImxlZnRTY3JvbGwiLCJnZXRIVE1MT2Zmc2V0IiwiZG9jdW1lbnRFbGVtZW50Iiwic2Nyb2xsIiwiaWdub3JlU2Nyb2xsYmFyWCIsImh0bWxSZWN0IiwiY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QiLCJvZmZzZXRzIiwiaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQiLCJvZmZzZXRSZWN0IiwiaHRtbE9mZnNldCIsImdldENsaWVudFJlY3RzIiwiZ2V0RG9jdW1lbnRSZWN0IiwiaHRtbCIsImdldFZpZXdwb3J0UmVjdCIsInZpc3VhbFZpZXdwb3J0IiwidmlzdWFsVmlld3BvcnRCYXNlZCIsImdldElubmVyQm91bmRpbmdDbGllbnRSZWN0IiwiZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdBbmNlc3RvciIsImhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvciIsInN0b3BOb2RlIiwiZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzIiwiY2FjaGUiLCJjYWNoZWRSZXN1bHQiLCJlbCIsImN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlIiwiZWxlbWVudElzRml4ZWQiLCJjb21wdXRlZFN0eWxlIiwiY3VycmVudE5vZGVJc0NvbnRhaW5pbmciLCJhbmNlc3RvciIsImdldENsaXBwaW5nUmVjdCIsImNsaXBwaW5nQW5jZXN0b3JzIiwiZmlyc3RDbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdSZWN0IiwiYWNjUmVjdCIsImdldERpbWVuc2lvbnMiLCJnZXRSZWN0UmVsYXRpdmVUb09mZnNldFBhcmVudCIsImlzU3RhdGljUG9zaXRpb25lZCIsImdldFRydWVPZmZzZXRQYXJlbnQiLCJwb2x5ZmlsbCIsInJhd09mZnNldFBhcmVudCIsImdldE9mZnNldFBhcmVudCIsInN2Z09mZnNldFBhcmVudCIsImdldEVsZW1lbnRSZWN0cyIsImdldE9mZnNldFBhcmVudEZuIiwiZ2V0RGltZW5zaW9uc0ZuIiwiZmxvYXRpbmdEaW1lbnNpb25zIiwiaXNSVEwiLCJyZWN0c0FyZUVxdWFsIiwib2JzZXJ2ZU1vdmUiLCJvbk1vdmUiLCJpbyIsInRpbWVvdXRJZCIsInJvb3QiLCJjbGVhbnVwIiwiX2lvIiwicmVmcmVzaCIsInNraXAiLCJ0aHJlc2hvbGQiLCJlbGVtZW50UmVjdEZvclJvb3RNYXJnaW4iLCJpbnNldFRvcCIsImluc2V0UmlnaHQiLCJpbnNldEJvdHRvbSIsImluc2V0TGVmdCIsImlzRmlyc3RVcGRhdGUiLCJoYW5kbGVPYnNlcnZlIiwicmF0aW8iLCJhdXRvVXBkYXRlIiwidXBkYXRlIiwiYW5jZXN0b3JTY3JvbGwiLCJhbmNlc3RvclJlc2l6ZSIsImVsZW1lbnRSZXNpemUiLCJsYXlvdXRTaGlmdCIsImFuaW1hdGlvbkZyYW1lIiwicmVmZXJlbmNlRWwiLCJhbmNlc3RvcnMiLCJjbGVhbnVwSW8iLCJyZW9ic2VydmVGcmFtZSIsInJlc2l6ZU9ic2VydmVyIiwiZmlyc3RFbnRyeSIsIl9yZXNpemVPYnNlcnZlciIsImZyYW1lSWQiLCJwcmV2UmVmUmVjdCIsImZyYW1lTG9vcCIsIm5leHRSZWZSZWN0IiwiX3Jlc2l6ZU9ic2VydmVyMiIsIm9mZnNldCQxIiwiYXV0b1BsYWNlbWVudCQxIiwic2hpZnQkMSIsIm1lcmdlZE9wdGlvbnMiLCJwbGF0Zm9ybVdpdGhDYWNoZSIsImNvbXB1dGVQb3NpdGlvbiQxIiwiaXNDb21wb25lbnRQdWJsaWNJbnN0YW5jZSIsInRvVmFsdWUiLCJ1bnJlZiIsImdldERQUiIsInJvdW5kQnlEUFIiLCJkcHIiLCJ1c2VGbG9hdGluZyIsIndoaWxlRWxlbWVudHNNb3VudGVkT3B0aW9uIiwib3Blbk9wdGlvbiIsIl90b1ZhbHVlIiwibWlkZGxld2FyZU9wdGlvbiIsInBsYWNlbWVudE9wdGlvbiIsIl90b1ZhbHVlMiIsInN0cmF0ZWd5T3B0aW9uIiwiX3RvVmFsdWUzIiwidHJhbnNmb3JtT3B0aW9uIiwiX3RvVmFsdWU0IiwicmVmZXJlbmNlRWxlbWVudCIsImZsb2F0aW5nRWxlbWVudCIsInNoYWxsb3dSZWYiLCJpc1Bvc2l0aW9uZWQiLCJmbG9hdGluZ1N0eWxlcyIsImluaXRpYWxTdHlsZXMiLCJ4VmFsIiwieVZhbCIsIndoaWxlRWxlbWVudHNNb3VudGVkQ2xlYW51cCIsIm9wZW4iLCJwb3NpdGlvbiIsImF0dGFjaCIsImdldEN1cnJlbnRTY29wZSIsIm9uU2NvcGVEaXNwb3NlIiwic2hhbGxvd1JlYWRvbmx5IiwiaXNDbGlja091dHNpZGUiLCJhbmNob3IiLCJpc0hvdmVyZWQiLCJpc1RvZ2dsZWRPcGVuIiwib2Zmc2V0TWlkZGxld2FyZSIsImlzU2hvd1BvcG92ZXIiLCJoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUNsaWNrIiwiaGFuZGxlQW5jaG9yRWxlbWVudE1vdXNlT3ZlciIsImhhbmRsZUFuY2hvckVsZW1lbnRNb3VzZUxlYXZlIiwiaGFuZGxlQW5jaG9yRWxlbWVudENsaWNrIiwiYWRkTGlzdGVuZXJzVG9BbmNob3JFbGVtZW50IiwicmVtb3ZlTGlzdGVuZXJzRnJvbUFuY2hvckVsZW1lbnQiLCJoYW5kbGVQZXJtYW5lbnRPcGVuQm9keUtleWRvd24iLCJhZGRPcGVuTGlzdGVuZXJzVG9Sb290IiwicmVtb3ZlT3Blbkxpc3RlbmVyc0Zyb21Sb290IiwidXBkYXRlQW5jaG9yRWxlbWVudCIsIl9UcmFuc2l0aW9uIiwicmF0aW5nVmFsdWUiLCJzZWdtZW50cyIsInNlZ21lbnQiLCJTSVpFX0xPR08iLCJMT0dPX0hFSUdIVCIsIkxPR09fTEFSR0VfV0lEVEgiLCJMT0dPX01BUktfV0lEVEgiLCJnZXRSZWFsbUtleUZyb21SZWFsbSIsInJlYWxtIiwibWF0Y2giLCJsb2dvV2lkdGgiLCJmdWxsTG9nb1dpZHRoIiwic2hyaW5rRmFjdG9yIiwibG9nb0hlaWdodCIsImxpbmsiLCJkaWFsb2dFbGVtZW50IiwiY3VycmVudFRhYiIsIlRpZGVDYXJvdXNlbCIsIlRPQVNURVJfS0VZIiwiQVVUT19ESVNNSVNTX0RVUkFUSU9OX01TIiwidXNlVGlkZVRvYXN0ZXIiLCJpbmplY3RlZCIsInRvYXN0cyIsImFkZFRvYXN0IiwibmV3VG9hc3QiLCJjbGVhclRvYXN0cyIsImNhbmNlbEF1dG9EaXNtaXNzIiwic3RhcnRBdXRvRGlzbWlzcyIsImF1dG9EaXNtaXNzRHVyYXRpb24iLCJ0b2FzdGVyIiwicmVhZG9ubHkiLCJfVHJhbnNpdGlvbkdyb3VwIiwidG9hc3QiLCJhcmdzIiwiVGlkZUFsZXJ0Il0sIm1hcHBpbmdzIjoiO0FBQU8sTUFBTUEsS0FBYztBQUFBLEVBQ3pCLFlBQVk7QUFBQSxFQUNaLFVBQVU7QUFDWixHQ0NhQyxJQUFNO0FBQUEsRUFDakIsZ0JBQWdCLENBQUNDLEdBQXFCQyxNQUM3QkQsRUFBVSxJQUFJLENBQUNFLE1BQVksR0FBR0QsQ0FBVSxJQUFJQyxDQUFPLEVBQUU7QUFBQSxFQUU5RCxPQUFPO0FBQUEsSUFDTCxHQUFHO0FBQUEsTUFDRCxRQUFRO0FBQUEsTUFDUixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixPQUFPO0FBQUEsSUFBQTtBQUFBLElBRVQsR0FBRztBQUFBLE1BQ0QsU0FBUztBQUFBLE1BQ1QsUUFBUTtBQUFBLElBQUE7QUFBQSxFQUNWO0FBQUEsRUFFRixPQUFPO0FBQUEsSUFDTCxRQUFRO0FBQUEsSUFDUixTQUFTO0FBQUEsSUFDVCxRQUFRO0FBQUEsSUFDUixLQUFLO0FBQUEsSUFDTCxPQUFPO0FBQUEsRUFBQTtBQUFBLEVBRVQsT0FBTztBQUFBLElBQ0wsUUFBUTtBQUFBLElBQ1IsUUFBUTtBQUFBLElBQ1IsS0FBSztBQUFBLElBQ0wsT0FBTztBQUFBLElBQ1AsU0FBUztBQUFBLEVBQUE7QUFBQSxFQUVYLElBQUk7QUFBQSxJQUNGLFFBQVE7QUFBQSxNQUNOLFNBQVM7QUFBQSxRQUNQLE9BQU87QUFBQSxRQUNQLE1BQU07QUFBQSxRQUNOLFNBQVM7QUFBQSxRQUNULFNBQVM7QUFBQSxNQUFBO0FBQUEsTUFFWCxTQUFTO0FBQUEsUUFDUCxPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixTQUFTO0FBQUEsUUFDVCxTQUFTO0FBQUEsUUFFVCxNQUFNO0FBQUEsUUFDTixPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsUUFDUixRQUFRO0FBQUEsUUFDUixLQUFLO0FBQUEsUUFDTCxRQUFRO0FBQUEsUUFDUixNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsTUFBQTtBQUFBLElBQ1Y7QUFBQSxJQUVGLFNBQVM7QUFBQSxJQUNULE1BQU07QUFBQSxJQUNOLFNBQVM7QUFBQSxJQUNULFdBQVc7QUFBQSxJQUNYLFNBQVM7QUFBQSxNQUNQLFFBQVE7QUFBQSxNQUNSLE9BQU87QUFBQSxNQUNQLFNBQVM7QUFBQSxNQUNULFVBQVU7QUFBQSxNQUNWLFVBQVU7QUFBQSxNQUNWLFNBQVM7QUFBQSxNQUNULFNBQVM7QUFBQSxJQUFBO0FBQUEsSUFFWCxhQUFhO0FBQUEsTUFDWCxhQUFhO0FBQUEsTUFDYixhQUFhO0FBQUEsTUFDYixlQUFlO0FBQUEsTUFDZixjQUFjO0FBQUEsSUFBQTtBQUFBLEVBQ2hCO0FBQUEsRUFFRixRQUFRO0FBQUEsSUFDTixPQUFPO0FBQUEsTUFDTCxRQUFRO0FBQUEsUUFDTixPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixTQUFTO0FBQUEsUUFDVCxTQUFTO0FBQUEsUUFFVCxNQUFNO0FBQUEsUUFDTixPQUFPO0FBQUEsUUFDUCxNQUFNO0FBQUEsUUFDTixRQUFRO0FBQUEsUUFDUixRQUFRO0FBQUEsUUFDUixLQUFLO0FBQUEsUUFDTCxRQUFRO0FBQUEsUUFDUixNQUFNO0FBQUEsUUFDTixRQUFRO0FB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TixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsSUFDTixNQUFNO0FBQUEsSUFDTixVQUFVO0FBQUEsSUFDVixVQUFVO0FBQUEsRUFBQTtBQUFBLEVBRVosV0FBVztBQUFBLElBQ1QsU0FBUztBQUFBLEVBQUE7QUFBQSxFQUVYLGNBQWM7QUFBQSxJQUNaLEtBQUs7QUFBQSxFQUFBO0FBQUEsRUFFUCxRQUFRO0FBQUEsSUFDTixRQUFRO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLElBRVIsTUFBTTtBQUFBLE1BQ0osTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQUE7QUFBQSxJQUVSLE1BQU07QUFBQSxNQUNKLE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixPQUFPO0FBQUEsTUFDTCxNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLElBRVIsS0FBSztBQUFBLE1BQ0gsTUFBTTtBQUFBLE1BQ04sTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQUE7QUFBQSxJQUVSLEdBQUc7QUFBQSxNQUNELE1BQU07QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLEVBQ1I7QUFBQSxFQUVGLFFBQVE7QUFBQSxJQUNOLFFBQVE7QUFBQSxJQUNSLFNBQVM7QUFBQSxJQUNULE9BQU87QUFBQSxJQUNQLFlBQVk7QUFBQSxFQUFBO0FBQUEsRUFFZCxTQUFTO0FBQUEsSUFDUCxVQUFVO0FBQUEsSUFDVixLQUFLO0FBQUEsSUFDTCxJQUFJO0FBQUEsRUFBQTtBQUFBLEVBRU4sVUFBVTtBQUFBLElBQ1IsR0FBRztBQUFBLE1BQ0QsTUFBTTtBQUFBLE1BQ04sUUFBUTtBQUFBLE1BQ1IsUUFBUTtBQUFBLElBQUE7QUFBQSxJQUVWLElBQUk7QUFBQSxNQUNGLE1BQU07QUFBQSxNQUNOLFFBQVE7QUFBQSxJQUFBO0FBQUEsSUFFVixHQUFHO0FBQUEsTUFDRCxNQUFNO0FBQUEsTUFDTixRQUFRO0FBQUEsSUFBQTtBQUFBLEVBQ1Y7QUFBQSxFQUVGLFNBQVM7QUFBQSxJQUNQLFFBQVE7QUFBQSxNQUNOLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxJQUFBO0FBQUEsSUFFUixNQUFNO0FBQUEsTUFDSixNQUFNO0FBQUEsTUFDTixTQUFTO0FBQUEsTUFDVCxNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQUEsTUFDTCxNQUFNO0FBQUEsSUFBQTtBQUFBLElBRVIsTUFBTTtBQUFBLE1BQ0osTUFBTTtBQUFBLE1BQ04sU0FBUztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sS0FBSztBQUFBLE1BQ0wsS0FBSztBQUFBLE1BQ0wsTUFBTTtBQUFBLElBQUE7QUFBQSxJQUVSLE9BQU87QUFB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QSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSxtQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsaUNBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxrREFBQSxNQUFBLE9BQUEsc0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSw4Q0FBQSxNQUFBLE9BQUEsa0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsaUNBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSw4Q0FBQSxNQUFBLE9BQUEsa0NBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSxrREFBQSxNQUFBLE9BQUEsc0NBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxtQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxnREFBQSxNQUFBLE9BQUEsb0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsaUNBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsaUNBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsaUNBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSw2Q0FBQSxNQUFBLE9BQUEsaUNBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSwyQ0FBQSxNQUFBLE9BQUEsK0JBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxtQ0FBQSxNQUFBLE9BQUEsdUJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSw4Q0FBQSxNQUFBLE9BQUEsa0NBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSw0Q0FBQSxNQUFBLE9BQUEsZ0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxvQ0FBQSxNQUFBLE9BQUEsd0JBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSwwQ0FBQSxNQUFBLE9BQUEsOEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx3Q0FBQSxNQUFBLE9BQUEsNEJBQUEsR0FBQSx5Q0FBQSxNQUFBLE9BQUEsNkJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSxxQ0FBQSxNQUFBLE9BQUEseUJBQUEsR0FBQSxnREFBQSxNQUFBLE9BQUEsb0NBQUEsR0FBQSxzQ0FBQSxNQUFBLE9BQUEsMEJBQUEsR0FBQSx1Q0FBQSxNQUFBLE9BQUEsMkJBQUEsRUFBQSxDQUFBLEdBQUEsMkJBQUFMLENBQUEsUUFBQSxDQUFBLENBQ1I7QUFFRCxRQUFBSixFQUFTLFFBQVFVLEdBQVFILENBQVM7QUFBQSxNQUNwQztBQUFBLE1BQ0EsRUFBRSxXQUFXLEdBQUE7QUFBQSxJQUFLLG1CQUtwQnZCLEVBUU0sT0FBQTtBQUFBLE1BUkEsT0FBS0csRUFBQSxDQUFBLGFBQWdCTixFQUFNLE1BQU1PLEVBQUFaLENBQUEsRUFBSSxLQUFLLE9BQU8sR0FBRyxDQUFBO0FBQUEsSUFBQTtNQU1oRHdCLEVBQUEsU0FMUmpCLEVBQUEsR0FBQTRCLEVBTUVDLEdBRktaLEVBQUEsS0FBUSxHQUFBO0FBQUE7UUFIWixPQUFLYixFQUFBLENBQUdDLEVBQUFaLENBQUEsRUFBSSxRQUFRLEtBQUssQ0FBQTtBQUFBLFFBQ3pCLGFBQVdNLEVBQUE7QUFBQSxRQUNaLE1BQUs7QUFBQSxNQUFBOzs7SUM1REUrQixJQUFPO0FBQUEsRUFDbEIsaUJBQWlCO0FBQUEsRUFDakIsT0FBTztBQUFBLEVBQ1AsS0FBSztBQUFBLEVBQ0wsZ0JBQWdCO0FBQUEsRUFDaEIsa0JBQWtCO0FBQUEsRUFDbEIsV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osYUFBYTtBQUFBLEVBQ2IsZUFBZTtBQUFBLEVBQ2YsYUFBYTtBQUFBLEVBQ2IsVUFBVTtBQUFBLEVBQ1YsWUFBWTtBQUFBLEVBQ1osY0FBYztBQUFBLEVBQ2QsWUFBWTtBQUFBLEVBQ1osWUFBWTtBQUFBLEVBQ1osS0FBSztBQUFBLEVBQ0wsTUFBTTtBQUFBLEVBQ04sVUFBVTtBQUFBLEVBQ1YsV0FBVztBQUFBLEVBQ1gsV0FBVztBQUFBLEVBQ1gsZ0JBQWdCO0FBQUEsRUFDaEIsTUFBTTtBQUFBLEVBQ04sY0FBYztBQUFBLEVBQ2QsWUFBWTtBQUFBLEVBQ1osT0FBTztBQUFBLEVBQ1AsY0FBYztBQUFBLEVBQ2QsZUFBZTtBQUFBLEVBQ2YsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsVUFBVTtBQUFBLEVBQ1YsT0FBTztBQUFBLEVBQ1AscUJBQXFCO0FBQUEsRUFDckIsUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUFBLEVBQ1QsaUJBQWlCO0FBQUEsRUFDakIsUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsTUFBTTtBQUFBLEVBQ04sUUFBUTtBQUFBLEVBQ1IsYUFBYTtBQUFBLEVBQ2IsT0FBTztBQUFBLEVBQ1AsZ0JBQWdCO0FBQUEsRUFDaEIsYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsVUFBVTtBQUFBLEVBQ1YsVUFBVTtBQUFBLEVBQ1YsaUJBQWlCO0FBQUEsRUFDakIsTUFBTTtBQUFBLEVBQ04sYUFBYTtBQUFBLEVBQ2IsZUFBZTtBQUFBLEVBQ2Ysc0JBQXNCO0FBQUEsRUFDdEIsT0FBTztBQUFBLEVBQ1AsS0FBSztBQUFBLEVBQ0wsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1Asb0JBQW9CO0FBQUEsRUFDcEIsUUFBUTtBQUFBLEVBQ1IsWUFBWTtBQUFBLEVBQ1osTUFBTTtBQUFBLEVBQ04sV0FBVztBQUFBLEVBQ1gsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsV0FBVztBQUFBLEVBQ1gsV0FBVztBQUFBLEVBQ1gsUUFBUTtBQUFBLEVBQ1IsZ0JBQWdCO0FBQUEsRUFDaEIsV0FBVztBQUFBLEVBQ1gsZ0JBQWdCO0FBQUEsRUFDaEIsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osZUFBZTtBQUFBLEVBQ2YsVUFBVTtBQUFBLEVBQ1YsYUFBYTtBQUFBLEVBQ2IsU0FBUztBQUFBLEVBQ1QsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsZUFBZTtBQUFBLEVBQ2YsY0FBYztBQUFBLEVBQ2QsV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsV0FBVztBQUFBLEVBQ1gsZUFBZTtBQUFBLEVBQ2YsUUFBUTtBQUFBLEVBQ1IsZUFBZTtBQUFBLEVBQ2YsY0FBYztBQUFBLEVBQ2QsTUFBTTtBQUFBLEVBQ04sZ0JBQWdCO0FBQUEsRUFDaEIsT0FBTztBQUFBLEVBQ1AsU0FBUztBQUFBLEVBQ1QsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUFBLEVBQ1QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUFBLEVBQ1QsVUFBVTtBQUFBLEVBQ1YsT0FBTztBQUFBLEVBQ1AsY0FBYztBQUFBLEVBQ2QsZUFBZTtBQUFBLEVBQ2YsUUFBUTtBQUFBLEVBQ1IsS0FBSztBQUFBLEVBQ0wsV0FBVztBQUFBLEVBQ1gsTUFBTTtBQUFBLEVBQ04sYUFBYTtBQUFBLEVBQ2IsV0FBVztBQUFBLEVBQ1gsV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osV0FBVztBQUFBLEVBQ1gsa0JBQWtCO0FBQUEsRUFDbEIsVUFBVTtBQUFBLEVBQ1YsZUFBZTtBQUFBLEVBQ2YsUUFBUTtBQUFBLEVBQ1IsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUFBLEVBQ1QsVUFBVTtBQUFBLEVBQ1YsVUFBVTtBQUFBLEVBQ1YsVUFBVTtBQUFBLEVBQ1YsWUFBWTtBQUFBLEVBQ1osWUFBWTtBQUFBLEVBQ1osWUFBWTtBQUFBLEVBQ1osV0FBVztBQUFBLEVBQ1gsV0FBVztBQUFBLEVBQ1gsU0FBUztBQUFBLEVBQ1QsT0FBTztBQUFBLEVBQ1AsUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsbUJBQW1CO0FBQUEsRUFDbkIsUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUNYLEdBRWFDLEtBQWE7QUFBQSxFQUN4QixLQUFLO0FBQUEsSUFDSCxLQUFLO0FBQUEsSUFDTCxZQUFZO0FBQUEsSUFDWixXQUFXO0FBQUEsSUFDWCxTQUFTO0FBQUEsSUFDVCxXQUFXO0FBQUEsSUFDWCxjQUFjO0FBQUEsSUFDZCxTQUFTO0FBQUEsRUFBQTtBQUFBLEVBRVgsVUFBVTtBQUFBLElBQ1IsS0FBSztBQUFBLElBQ0wsU0FBUztBQUFBLEVBQUE7QUFBQSxFQUVYLE9BQU87QUFBQSxJQUNMLFlBQVk7QUFBQSxJQUNaLFNBQVM7QUFBQSxFQUFBO0FBQUEsRUFFWCxJQUFJO0FBQUEsSUFDRixTQUFTO0FBQUEsSUFDVCxTQUFTO0FBQUEsSUFDVCxTQUFTO0FBQUEsSUFDVCxhQUFhO0FBQUEsSUFDYixZQUFZO0FBQUEsSUFDWixZQUFZO0FBQUEsSUFDWixlQUFlO0FBQUEsSUFDZixnQkFBZ0I7QUFBQSxJQUNoQixjQUFjO0FBQUEsRUFBQTtBQUVsQjs7R0NyS0VsQyxLQUFlLENBQUE7Ozs7Ozs7Ozs7Ozs7OztBQTZCZixVQUFNQyxJQUFRQyxHQU9SaUMsSUFBYUMsaUJBQXVDLEdBRXBEQyxJQUFvQixNQUFNO0FBQzlCLE1BQUlwQyxFQUFNLGFBQ1ZrQyxFQUFXLFFBQVEsQ0FBQ0EsRUFBVztBQUFBLElBQ2pDO0FBRUEsV0FBQWI7QUFBQSxNQUNFLE1BQU1yQixFQUFNO0FBQUEsTUFDWixDQUFDcUMsTUFBYTtBQUNaLFFBQUlBLE1BQ0ZILEVBQVcsUUFBUTtBQUFBLE1BRXZCO0FBQUEsTUFDQSxFQUFFLFdBQVcsR0FBQTtBQUFBLElBQUssY0FLcEJoQyxFQUFBLEdBQUFDLEVBdUNNLE9BdkNOQyxJQXVDTTtBQUFBLE1BdENlSCxFQUFBLHNCQUFuQjZCLEVBQW9DUSxJQUFBLEVBQUEsS0FBQSxFQUFBLENBQUE7TUFFcENqQyxFQTJCUyxVQUFBO0FBQUEsUUExQk4sT0FBS0MsRUFBQTtBQUFBO1VBQTJDQyxFQUFBWixDQUFBLEVBQUksTUFBTSxFQUFFO0FBQUEsVUFBY1ksRUFBQVosQ0FBQSxFQUFJLE1BQU07QUFBQSxVQUFpQlksRUFBQVosQ0FBQSxFQUFJLFFBQVE7QUFBQSxVQUFjWSxFQUFBWixDQUFBLEVBQUksUUFBUSxFQUFFO0FBQUEsVUFBY1ksRUFBQVosQ0FBQSxFQUFJLE1BQU07QUFBQSxVQUFjTSxFQUFBLFdBQVEsQ0FBSU0sRUFBQVosQ0FBQSxFQUFJLFFBQVEsVUFBVVksRUFBQVosQ0FBQSxFQUFJLE9BQU8sV0FBVyxJQUFBLENBQUE7QUFBQSxRQUFBO1FBUzNPLFNBQU95QztBQUFBLE1BQUE7UUFFUi9CLEVBU00sT0FBQTtBQUFBLFVBVEEsT0FBS0MsRUFBQSxDQUFHQyxFQUFBWixDQUFBLEVBQUksUUFBUSxNQUFNWSxFQUFBWixDQUFBLEVBQUksTUFBTSxRQUFRWSxFQUFBWixDQUFBLEVBQUksSUFBSSxNQUFNWSxFQUFBWixDQUFBLEVBQUksS0FBSyxLQUFLLGdCQUFnQixDQUFBO0FBQUEsUUFBQTtVQUM1RlUsRUFBd0IsZ0JBQWZKLEVBQUEsS0FBSyxHQUFBLENBQUE7QUFBQSxVQUlOQSxFQUFBLG1CQUZSRSxFQUtPLFFBQUE7QUFBQTtZQUpKLE9BQUtHLEVBQUEsQ0FBR0MsS0FBSSxLQUFLLE1BQU0sUUFBUSxPQUFPLENBQUE7QUFBQSxVQUFBLEdBRXhDLGdCQUVELENBQUE7O1FBR0ZnQyxFQUdFQyxHQUFBO0FBQUEsVUFGQyxNQUFNTixVQUFhM0IsRUFBQXlCLENBQUEsRUFBSyxjQUFjekIsRUFBQXlCLENBQUEsRUFBSztBQUFBLFVBQzNDLE1BQU16QixFQUFBRSxDQUFBLEVBQUs7QUFBQSxRQUFBOztNQUloQkosRUFJTSxPQUFBO0FBQUEsUUFKQSxpQ0FBK0I2QixFQUFBLFFBQVUsYUFBQSxhQUE2QjNCLEtBQUksUUFBUSxJQUFJLENBQUE7QUFBQSxNQUFBO1FBQzFGRixFQUVNLE9BQUE7QUFBQSxVQUZBLE9BQUtDLEVBQUEsQ0FBR0MsRUFBQVosQ0FBQSxFQUFJLFNBQVMsRUFBRSxRQUFRWSxFQUFBWixDQUFBLEVBQUksT0FBTyxFQUFFLEtBQUtZLEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUssUUFBUVksRUFBQVosQ0FBQSxFQUFJLEtBQUssTUFBTSxRQUFRLE9BQU8sQ0FBQTtBQUFBLFFBQUE7VUFDekc4QyxFQUFRQyxFQUFBLFFBQUEsV0FBQSxDQUFBLEdBQUEsUUFBQSxFQUFBO0FBQUEsUUFBQTs7TUFJT3pDLEVBQUEseUJBQW5CNkIsRUFBdUNRLElBQUEsRUFBQSxLQUFBLEVBQUEsQ0FBQTs7O29FQ25HOUJLLElBQVU7QUFBQSxFQUNyQixRQUFRO0FBQUEsRUFDUixNQUFNO0FBQ1IsR0FFYUMsS0FBZ0I7QUFBQSxFQUMzQixRQUFRO0FBQUEsRUFDUixLQUFLO0FBQUEsRUFDTCxNQUFNO0FBQ1IsR0NDTUMsS0FBaUMsRUFBRSxlQUFlRixFQUFRLEtBQUEsR0FFMURHLEtBQWEsT0FBTyxhQUFhLEdBRTFCQyxLQUFvQixDQUFDQyxJQUE4QixPQUFPO0FBQ3JFLFFBQU1DLElBQWlDLEVBQUUsR0FBR0osSUFBb0IsR0FBR0csRUFBQTtBQUVuRSxFQUFBRSxHQUFvQkosSUFBWUcsQ0FBa0I7QUFDcEQsR0FFYUUsS0FBZ0IsTUFDcEJDLEdBQW1CTixJQUFZRCxFQUFrQjs7O0FDbEJ4RCxVQUFNLEVBQUUsZUFBQVEsRUFBQSxJQUFrQkYsR0FBQTtzQkFJMUJqRCxFQUFBLEdBQUE0QixFQUVZQyxHQUZJeEIsRUFBQThDLENBQUEsQ0FBYSxHQUFBLE1BQUE7QUFBQSxrQkFDM0IsTUFBUTtBQUFBLFFBQVJaLEVBQVFDLEVBQUEsUUFBQSxTQUFBO0FBQUEsTUFBQTs7OztJQ05DWSxLQUFXO0FBQUEsRUFDdEIsU0FBUztBQUFBLEVBQ1QsV0FBVztBQUFBLEVBQ1gsVUFBVTtBQUFBLEVBQ1YsWUFBWTtBQUFBLEVBQ1osVUFBVTtBQUNaLEdDUmFDLEtBQVM7QUFBQSxFQUNwQixPQUFPO0FBQUEsRUFDUCxNQUFNO0FBQ1IsR0NHRXhELEtBQWUsQ0FBQTs7Ozs7Ozs7Ozs7OztBQTBDZixVQUFNQyxJQUFRQyxHQVVSdUQsSUFBZ0JDO0FBQUEsTUFBNkIsTUFDakR6RCxFQUFNLFlBQVkyQyxFQUFRLFNBQVMzQyxFQUFNLFFBQVEyQyxFQUFRLFNBQVM7QUFBQSxJQUFBLEdBRzlEZSxJQUFjRCxFQUFTLE1BQU96RCxFQUFNLFlBQVkyQyxFQUFRLE9BQU9nQixLQUFtQjNELEVBQU0sT0FBUTtzQkFJdEdFLEtBQUE0QixFQXVCWUMsR0FQTDJCLEVBQUEsS0FBVyxHQUFBO0FBQUEsTUFmZixjQUFZekQsRUFBQTtBQUFBLE1BQ1osT0FBS0ssRUFBQTtBQUFBO1FBQW9DQyxFQUFBWixDQUFBLEVBQUksTUFBTTtBQUFBLFFBQWNZLEVBQUFaLENBQUEsRUFBSSxNQUFNO0FBQUEsUUFBY1ksRUFBQVosQ0FBQSxFQUFJLE9BQU8sT0FBTztBQUFBLFFBQVlZLEVBQUFaLENBQUEsRUFBSSxRQUFRO0FBQUEsUUFBWVksRUFBQVosQ0FBQSxFQUFJLFFBQVEsS0FBSztBQUFBLHVCQUEyQk0sRUFBQSxRQUFRO0FBQUEsUUFBVUEsRUFBQSxZQUFZTSxFQUFBb0MsQ0FBQSxFQUFRLE9BQUksQ0FBSXBDLEVBQUFaLENBQUEsRUFBSSxVQUFVLEtBQUssR0FBRyxJQUFBO0FBQUEsTUFBQTtNQVUvUCxVQUFVTSxFQUFBLFlBQVlNLEtBQVEsVUFBVU4sRUFBQTtBQUFBLE1BQ3hDLE1BQU1BLEVBQUEsWUFBWU0sRUFBQW9DLENBQUEsRUFBUSxRQUFRMUMsRUFBQSxPQUFPQSxFQUFBLE9BQU87QUFBQSxNQUNoRCxRQUFRQSxFQUFBLFlBQVlNLEVBQUFvQyxDQUFBLEVBQVEsUUFBUTFDLEVBQUEsV0FBV00sTUFBTyxRQUFRQSxFQUFBZ0QsRUFBQSxFQUFPO0FBQUEsTUFDckUsTUFBTUMsRUFBQTtBQUFBLElBQUE7a0JBR1AsTUFJRTtBQUFBLFFBRE12RCxFQUFBLGFBSFI2QixFQUlFVSxHQUFBO0FBQUE7VUFIQyxNQUFNdkMsRUFBQTtBQUFBLFVBQ04sTUFBTU0sRUFBQUUsQ0FBQSxFQUFLO0FBQUEsUUFBQTs7Ozs7SUNoRmhCVixLQUFlLENBQUE7Ozs7Ozs7Ozs7Ozs7O0FBMkNmLFVBQU1DLElBQVFDLEdBV1J5RCxJQUFjRCxFQUFTLE1BQU96RCxFQUFNLFlBQVkyQyxFQUFRLE9BQU9nQixLQUFtQjNELEVBQU0sT0FBUTtzQkFJdEdFLEtBQUE0QixFQTZCWUMsR0FuQkwyQixFQUFBLEtBQVcsR0FBQTtBQUFBLE1BVGYsT0FBS3BELEVBQUE7QUFBQTtRQUE2QkMsRUFBQVosQ0FBQSxFQUFJLFFBQVE7QUFBQSxRQUFjWSxFQUFBWixDQUFBLEVBQUksTUFBTSxFQUFFO0FBQUEsUUFBWU0sRUFBQSxTQUFNLENBQUlNLEVBQUFaLENBQUEsRUFBSSxVQUFVLEtBQUssS0FBS1ksRUFBQVosQ0FBQSxFQUFJLFVBQVUsTUFBTSxFQUFFLElBQUEsQ0FBS1ksRUFBQVosQ0FBQSxFQUFJLFVBQVUsS0FBSyxJQUFJWSxFQUFBWixDQUFBLEVBQUksVUFBVSxNQUFNLEdBQUc7QUFBQSxNQUFBO01BTS9MLE1BQU1LLEVBQU07QUFBQSxNQUNaLFFBQVFBLEVBQU0sV0FBV08sRUFBQWdELEVBQUEsRUFBTyxRQUFRaEQsRUFBQWdELEVBQUEsRUFBTztBQUFBLE1BQy9DLE1BQU10RCxFQUFBLFlBQVlNLEVBQUFvQyxDQUFBLEVBQVEsU0FBU3BDLEVBQUFvQyxDQUFBLEVBQVEsU0FBUztBQUFBLElBQUE7a0JBR3JELE1BS0U7QUFBQSxRQURNM0MsRUFBTSxvQkFKZDhCLEVBS0VVLEdBQUE7QUFBQTtVQUpDLE9BQUtsQyxFQUFBLENBQUdDLEVBQUFaLENBQUEsRUFBSSxRQUFRLGNBQWNZLEVBQUFaLENBQUEsRUFBSSxNQUFNLEVBQUUsUUFBUVksRUFBQVosQ0FBQSxFQUFJLE9BQU8sTUFBTSxTQUFTWSxFQUFBWixDQUFBLEVBQUksZUFBZSxHQUFHLENBQUE7QUFBQSxVQUN0RyxNQUFNSyxFQUFNO0FBQUEsVUFDWixNQUFNQyxFQUFBO0FBQUEsUUFBQTtRQUlUSSxFQUVPLFFBQUE7QUFBQSxVQUZBLFVBQVFFLEVBQUFaLENBQUEsRUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFBO0FBQUEsUUFBQSxHQUM1QmlFLEVBQUE1RCxFQUFNLEtBQUssR0FBQSxDQUFBO0FBQUEsUUFPUkEsRUFBTSxxQkFKZDhCLEVBS0VVLEdBQUE7QUFBQTtVQUpDLE9BQUtsQyxFQUFBLENBQUdDLEVBQUFaLENBQUEsRUFBSSxRQUFRLGNBQWNZLEVBQUFaLENBQUEsRUFBSSxNQUFNLEVBQUUsUUFBUVksRUFBQVosQ0FBQSxFQUFJLE9BQU8sS0FBSyxTQUFTWSxFQUFBWixDQUFBLEVBQUksZUFBZSxHQUFHLENBQUE7QUFBQSxVQUNyRyxNQUFNSyxFQUFNO0FBQUEsVUFDWixNQUFNQyxFQUFBO0FBQUEsUUFBQTs7Ozs7SUMxRkE0RCxLQUFRO0FBQUEsRUFDbkIsT0FBTztBQUFBLEVBQ1AsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUFBLEVBQ1QsU0FBUztBQUNYLEdDQ0U5RCxLQUFlLENBQUE7Ozs7Ozs7Ozs7OztBQXdDZixVQUFNQyxJQUFRQyxHQVFSNkQsSUFBT0MsR0FDUEMsSUFBUUMsR0FBQSxHQUNSQyxJQUFVVCxFQUFTLE1BQU07O0FBQzdCLFlBQU1VLEtBQVFDLElBQUFKLEVBQU0sWUFBTixnQkFBQUksRUFBQSxLQUFBSjtBQUNkLGFBQUtHLElBRUVBLEVBQU07QUFBQSxRQUNYLENBQUNFLE1BQVNBLEVBQUssU0FBU0MsT0FBWSxPQUFPRCxFQUFLLFlBQWEsWUFBWUEsRUFBSyxTQUFTLEtBQUEsRUFBTyxTQUFTO0FBQUEsTUFBQSxJQUh0RjtBQUFBLElBS3JCLENBQUMsR0FFS0UsSUFBV2QsRUFBUyxNQUNwQnpELEVBQU0sU0FBUzZELEdBQU0sUUFBYzdCLEVBQUssZ0JBQ3hDaEMsRUFBTSxTQUFTNkQsR0FBTSxVQUFnQjdCLEVBQUssUUFDMUNoQyxFQUFNLFNBQVM2RCxHQUFNLFVBQWdCN0IsRUFBSyxVQUN2Q0EsRUFBSyxXQUNiOzJCQUlEN0IsRUFtRk0sT0FBQTtBQUFBLE1BbEZILE9BQUtHLEVBQUE7QUFBQSxRQUFVTixFQUFNO0FBQUE7UUFBZ0NPLEVBQUFaLENBQUEsRUFBSSxNQUFNO0FBQUEsUUFBY1ksRUFBQVosQ0FBQSxFQUFJLE9BQU8sT0FBTztBQUFBLFFBQVlZLEVBQUFaLENBQUEsRUFBSSxRQUFRO0FBQUEsUUFBWVksRUFBQVosQ0FBQSxFQUFJLFFBQVEsS0FBSztBQUFBLFFBQVksQ0FBQUssRUFBTSxXQUFXQSxFQUFNLFNBQVNPLEVBQUFzRCxFQUFBLEVBQU0sUUFBSyxDQUFJdEQsRUFBQVosQ0FBQSxFQUFJLEdBQUcsT0FBTyxRQUFRLE9BQU9ZLEVBQUFaLENBQUEsRUFBSSxPQUFPLE1BQU0sT0FBTyxLQUFLLElBQUE7QUFBQSxRQUFlLENBQUFLLEVBQU0sV0FBV0EsRUFBTSxTQUFTTyxFQUFBc0QsRUFBQSxFQUFNLE9BQUksQ0FBSXRELEVBQUFaLENBQUEsRUFBSSxHQUFHLE9BQU8sUUFBUSxNQUFNWSxFQUFBWixDQUFBLEVBQUksT0FBTyxNQUFNLE9BQU8sSUFBSSxJQUFBO0FBQUEsU0FBZUssRUFBTSxXQUFXQSxFQUFNLFNBQVNPLEVBQUFzRCxFQUFBLEVBQU0sVUFBbUIsQ0FBQXRELEVBQUFaLENBQUEsRUFBSSxHQUFHLE9BQU8sUUFBUSxTQUFTWSxFQUFBWixDQUFBLEVBQUksT0FBTyxNQUFNLE9BQU8sT0FBTztTQUF1QkssRUFBTSxXQUFXQSxFQUFNLFNBQVNPLEVBQUFzRCxFQUFBLEVBQU0sVUFBbUIsQ0FBQXRELEVBQUFaLENBQUEsRUFBSSxHQUFHLE9BQU8sUUFBUSxTQUFTWSxFQUFBWixDQUFBLEVBQUksT0FBTyxNQUFNLE9BQU8sT0FBTztRQUFzQkssRUFBTSxVQUFPLENBQUlPLEVBQUFaLENBQUEsRUFBSSxHQUFHLFdBQVdZLEVBQUFaLENBQUEsRUFBSSxLQUFLLE1BQU0sV0FBV1ksRUFBQVosQ0FBQSxFQUFJLE9BQU8sTUFBTSxJQUFJWSxFQUFBWixDQUFBLEVBQUksT0FBTyxLQUFLO0FBQUEsTUFBQTs7TUE2Qmx3QkssRUFBTSw0QkFYZkcsRUFpQk0sT0FBQTtBQUFBO1FBaEJILE9BQUtHLEVBQUE7QUFBQTtVQUF1Q0MsRUFBQVosQ0FBQSxFQUFJLFFBQVEsS0FBSztBQUFBLFVBQWlCWSxFQUFBWixDQUFBLEVBQUksT0FBTyxPQUFPO0FBQUEsVUFBY1ksRUFBQVosQ0FBQSxFQUFJLEtBQUssTUFBTSxRQUFRO0FBQUEsVUFBaUJLLEVBQU0sU0FBU08sRUFBQXNELEVBQUEsRUFBTSxTQUFTdEQsRUFBQVosQ0FBQSxFQUFJLEdBQUcsT0FBTyxRQUFRO0FBQUEsVUFBZUssRUFBTSxTQUFTTyxFQUFBc0QsRUFBQSxFQUFNLFFBQVF0RCxFQUFBWixDQUFBLEVBQUksR0FBRyxPQUFPLFFBQVE7QUFBQSxVQUFjSyxFQUFNLFNBQVNPLEVBQUFzRCxFQUFBLEVBQU0sV0FBV3RELEVBQUFaLENBQUEsRUFBSSxHQUFHLE9BQU8sUUFBUTtBQUFBLFVBQWlCSyxFQUFNLFNBQVNPLEVBQUFzRCxFQUFBLEVBQU0sV0FBV3RELEVBQUFaLENBQUEsRUFBSSxHQUFHLE9BQU8sUUFBUTtBQUFBLFFBQUE7O1FBWXhaNEMsRUFHRUMsR0FBQTtBQUFBLFVBRkMsTUFBTStCLEVBQUE7QUFBQSxVQUNOLE1BQU1oRSxFQUFBRSxDQUFBLEVBQUs7QUFBQSxRQUFBOztNQUloQkosRUFrQk0sT0FBQTtBQUFBLFFBakJILE9BQUtDLEVBQUE7QUFBQTtVQUEwQ0MsRUFBQVosQ0FBQSxFQUFJLFFBQVE7QUFBQSxVQUFjWSxFQUFBWixDQUFBLEVBQUksTUFBTTtBQUFBLFVBQWdCWSxFQUFBWixDQUFBLEVBQUksS0FBSyxVQUFVO0FBQUEsVUFBY3VFLEVBQUEsUUFBbUQsS0FBNUMsQ0FBSTNELEVBQUFaLENBQUEsRUFBSSxNQUFNLFNBQVNZLEVBQUFaLENBQUEsRUFBSSxPQUFPLE1BQU0sSUFBSTtBQUFBLFFBQUE7O1FBUXhMVSxFQUF3RSxRQUFBO0FBQUEsVUFBakUsU0FBT0UsRUFBQVosQ0FBQSxFQUFJLEtBQUssS0FBSyxnQkFBZ0I7QUFBQSxRQUFBLEdBQUtpRSxFQUFBNUQsRUFBTSxPQUFPLEdBQUEsQ0FBQTtBQUFBLFFBT3REQSxFQUFNLFlBQVEsQ0FBS2tFLEVBQUEsY0FMM0JwQyxFQU1FMEMsSUFBQTtBQUFBO1VBTEMsVUFBUWpFLEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUssTUFBTSxDQUFBO0FBQUEsVUFDNUIsU0FBU1ksRUFBQW9DLENBQUEsRUFBUTtBQUFBLFVBQ2pCLE9BQU8zQyxFQUFNO0FBQUEsVUFDYixnQ0FBTzhELEVBQUksVUFBQTtBQUFBLFFBQUE7O01BV1I3RCxFQUFBLHNCQU5SNkIsRUFPRTJDLElBQUE7QUFBQTtRQU5DLE9BQUtuRSxFQUFBLENBQUEsb0JBQXVCQyxFQUFBWixDQUFBLEVBQUksTUFBTSxRQUFRWSxFQUFBWixDQUFBLEVBQUksS0FBSyxNQUFNLFFBQVEsT0FBTyxDQUFBO0FBQUEsUUFDNUUsTUFBTVksRUFBQXlCLENBQUEsRUFBSztBQUFBLFFBQ1gsVUFBVXpCLEVBQUErQyxFQUFBLEVBQVM7QUFBQSxRQUNuQixnQ0FBT1EsRUFBSSxPQUFBO0FBQUEsUUFDWixjQUFXO0FBQUEsTUFBQTtNQUliekQsRUFlTSxPQUFBO0FBQUEsUUFmQSxPQUFLQyxFQUFBLENBQUEsbUJBQXNCQyxLQUFJLEtBQUssS0FBSyxRQUFNLENBQUdQLEVBQU0sV0FBV08sS0FBSSxLQUFLLE1BQU0sUUFBUSxPQUFPLENBQUE7QUFBQSxNQUFBO1FBQ3JHa0MsRUFBUUMsRUFBQSxRQUFBLFdBQUEsQ0FBQSxHQUFBLFFBQUEsRUFBQTtBQUFBLFFBSUExQyxFQUFNLFlBQVlrRSxFQUFBLGNBRjFCL0QsRUFXTSxPQUFBO0FBQUE7VUFWSCxVQUFRSSxFQUFBWixDQUFBLEVBQUksT0FBTyxJQUFJLElBQUksQ0FBQTtBQUFBLFFBQUE7VUFRcEJLLEVBQU0saUJBTGQ4QixFQU1FMEMsSUFBQTtBQUFBO1lBTEMsVUFBUWpFLEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUssTUFBTSxDQUFBO0FBQUEsWUFDNUIsU0FBU1ksRUFBQW9DLENBQUEsRUFBUTtBQUFBLFlBQ2pCLE9BQU8zQyxFQUFNO0FBQUEsWUFDYixnQ0FBTzhELEVBQUksVUFBQTtBQUFBLFVBQUE7Ozs7O29FQ3RKVFksS0FBYztBQUFBLEVBQ3pCLE9BQU87QUFBQSxFQUNQLE1BQU07QUFBQSxFQUNOLE9BQU87QUFBQSxFQUNQLE1BQU07QUFBQSxFQUNOLFFBQVE7QUFBQSxFQUNSLFFBQVE7QUFBQSxFQUNSLEtBQUs7QUFBQSxFQUNMLFFBQVE7QUFBQSxFQUNSLE1BQU07QUFBQSxFQUNOLFFBQVE7QUFDVixHQUVhQyxLQU1UO0FBQUEsRUFDRixDQUFDRCxHQUFZLEtBQUssR0FBRztBQUFBLElBQ25CLGFBQWEvRSxFQUFJLE9BQU8sTUFBTTtBQUFBLElBQzlCLFdBQVdBLEVBQUksS0FBSyxNQUFNLFFBQVE7QUFBQSxFQUFBO0FBQUEsRUFFcEMsQ0FBQytFLEdBQVksSUFBSSxHQUFHO0FBQUEsSUFDbEIsYUFBYS9FLEVBQUksT0FBTyxNQUFNLE9BQU87QUFBQSxJQUNyQyxXQUFXQSxFQUFJLEtBQUssTUFBTSxPQUFPLFFBQVE7QUFBQSxFQUFBO0FBQUEsRUFFM0MsQ0FBQytFLEdBQVksS0FBSyxHQUFHO0FBQUEsSUFDbkIsYUFBYS9FLEVBQUksT0FBTyxNQUFNLE9BQU87QUFBQSxJQUNyQyxXQUFXQSxFQUFJLEtBQUssTUFBTSxPQUFPLFFBQVE7QUFBQSxFQUFBO0FBQUEsRUFFM0MsQ0FBQytFLEdBQVksSUFBSSxHQUFHO0FBQUEsSUFDbEIsYUFBYS9FLEVBQUksT0FBTyxNQUFNLE9BQU87QUFBQSxJQUNyQyxXQUFXQSxFQUFJLEtBQUssTUFBTSxPQUFPLFFBQVE7QUFBQSxFQUFBO0FBQUEsRUFFM0MsQ0FBQytFLEdBQVksTUFBTSxHQUFHO0FBQUEsSUFDcEIsYUFBYS9FLEVBQUksT0FBTyxNQUFNLE9BQU87QUFBQSxJQUNyQyxXQUFXQSxFQUFJLEtBQUssTUFBTSxPQUFPLFFBQVE7QUFBQSxFQUFBO0FBQUEsRUFFM0MsQ0FBQytFLEdBQVksTUFBTSxHQUFHO0FBQUEsSUFDcEIsYUFBYS9FLEVBQUksT0FBTyxNQUFNLE9BQU87QUFBQSxJQUNyQyxXQUFXQSxFQUFJLEtBQUssTUFBTSxPQUFPLFFBQVE7QUFBQSxFQUFBO0FBQUEsRUFFM0MsQ0FBQytFLEdBQVksR0FBRyxHQUFHO0FBQUEsSUFDakIsYUFBYS9FLEVBQUksT0FBTyxNQUFNLE9BQU87QUFBQSxJQUNyQyxXQUFXQSxFQUFJLEtBQUssTUFBTSxPQUFPLFFBQVE7QUFBQSxFQUFBO0FBQUEsRUFFM0MsQ0FBQytFLEdBQVksTUFBTSxHQUFHO0FBQUEsSUFDcEIsYUFBYS9FLEVBQUksT0FBTyxNQUFNLE9BQU87QUFBQSxJQUNyQyxXQUFXQSxFQUFJLEtBQUssTUFBTSxPQUFPLFFBQVE7QUFBQSxFQUFBO0FBQUEsRUFFM0MsQ0FBQytFLEdBQVksSUFBSSxHQUFHO0FBQUEsSUFDbEIsYUFBYS9FLEVBQUksT0FBTyxNQUFNLE9BQU87QUFBQSxJQUNyQyxXQUFXQSxFQUFJLEtBQUssTUFBTSxPQUFPLFFBQVE7QUFBQSxFQUFBO0FBQUEsRUFFM0MsQ0FBQytFLEdBQVksTUFBTSxHQUFHO0FBQUEsSUFDcEIsYUFBYS9FLEVBQUksT0FBTyxNQUFNLE9BQU87QUFBQSxJQUNyQyxXQUFXQSxFQUFJLEtBQUssTUFBTSxPQUFPLFFBQVE7QUFBQSxFQUFBO0FBRTdDLEdBRWFpRixLQUFnQjtBQUFBLEVBQzNCLFVBQVU7QUFBQSxFQUNWLFVBQVU7QUFBQSxFQUNWLFVBQVU7QUFBQSxFQUNWLFVBQVU7QUFBQSxFQUNWLFVBQVU7QUFBQSxFQUNWLFVBQVU7QUFBQSxFQUNWLFNBQVM7QUFDWCxHQ2xFRTdFLEtBQWUsQ0FBQTs7Ozs7Ozs7OztBQXlCZixVQUFNQyxJQUFRQzsyQkFRZEUsRUF1Qk0sT0FBQTtBQUFBLE1BdEJILE9BQUtHLEVBQUE7QUFBQTtRQUE4Qk4sRUFBTSxjQUFjQSxFQUFNLFFBQUssQ0FBSU8sRUFBQVosQ0FBQSxFQUFJLEdBQUcsUUFBUSxVQUFVWSxFQUFBWixDQUFBLEVBQUksT0FBTyxNQUFNLElBQUEsQ0FBS1ksRUFBQVosQ0FBQSxFQUFJLEdBQUcsUUFBUSxPQUFPO0FBQUEsUUFBU1ksRUFBQVosQ0FBQSxFQUFJLFFBQVE7QUFBQSxRQUFtQlksRUFBQVosQ0FBQSxFQUFJLE1BQU07QUFBQSxRQUFjWSxFQUFBWixDQUFBLEVBQUksSUFBSTtBQUFBLFFBQWVZLEVBQUFaLENBQUEsRUFBSSxPQUFPLE9BQU87QUFBQSxRQUFlWSxFQUFBWixDQUFBLEVBQUksUUFBUSxFQUFFO0FBQUEsUUFBZVksRUFBQVosQ0FBQSxFQUFJLFFBQVEsRUFBRTtBQUFBLFFBQVlLLEVBQU0sU0FBSyxDQUFLTyxFQUFBWixDQUFBLEVBQUksT0FBTyxLQUFLLEtBQUtZLEVBQUFvRSxFQUFBLEVBQW9CM0UsRUFBTSxLQUFLLEVBQUUsV0FBVztBQUFBLFFBQVNPLEVBQUFaLENBQUEsRUFBSTtBQUFBLFFBQWdCWSxFQUFBWixDQUFBLEVBQUksS0FBSyxLQUFLO0FBQUEsUUFBZVksRUFBQVosQ0FBQSxFQUFJLGdCQUFnQjtBQUFBLE1BQUE7O01Ba0JsZEssRUFBTSxvQkFIZDhCLEVBSUVVLEdBQUE7QUFBQTtRQUhDLFVBQVFqQyxFQUFBWixDQUFBLEVBQUksS0FBSyxPQUFPLEtBQUtLLEVBQU0sU0FBU08sRUFBQW9FLEVBQUEsRUFBb0IzRSxFQUFNLEtBQUssRUFBRSxTQUFTLENBQUE7QUFBQSxRQUN0RixNQUFNQSxFQUFNO0FBQUEsTUFBQTtNQUlmSyxFQUFzRCxRQUFBO0FBQUEsUUFBL0MsT0FBS0MsRUFBQSxDQUFHQyxFQUFBWixDQUFBLEVBQUksUUFBUSxDQUFBO0FBQUEsTUFBQSxHQUFNaUUsRUFBQTVELEVBQU0sS0FBSyxHQUFBLENBQUE7QUFBQSxJQUFBOztJQ3ZEOUNELEtBQWUsQ0FBQTs7Ozs7OztBQWdCZixVQUFNQyxJQUFRQzsyQkFNZEUsRUFvQk0sT0FBQTtBQUFBLE1BbkJILE9BQUtHLEVBQUE7QUFBQTtRQUE4Q0MsRUFBQVosQ0FBQSxFQUFJLEtBQUssTUFBTSxRQUFRO0FBQUEsUUFBYVksRUFBQVosQ0FBQSxFQUFJLFFBQVE7QUFBQSxRQUFtQlksRUFBQVosQ0FBQSxFQUFJLE1BQU07QUFBQSxRQUFjWSxFQUFBWixDQUFBLEVBQUksSUFBSTtBQUFBLFFBQWVZLEVBQUFaLENBQUEsRUFBSTtBQUFBLFFBQWdCWSxFQUFBWixDQUFBLEVBQUksS0FBSyxLQUFLO0FBQUEsUUFBZVksRUFBQVosQ0FBQSxFQUFJLGdCQUFnQjtBQUFBLE1BQUE7O01BVzNPNEMsRUFHRUMsR0FBQTtBQUFBLFFBRkMsVUFBUWpDLEVBQUFaLENBQUEsRUFBSSxLQUFLLE9BQU8sR0FBRyxDQUFBO0FBQUEsUUFDM0IsTUFBTVksRUFBQXlCLENBQUEsRUFBSztBQUFBLE1BQUE7TUFHZDNCLEVBRU0sT0FBQTtBQUFBLFFBRkEsT0FBS0MsRUFBQSxDQUFHQyxFQUFBWixDQUFBLEVBQUksUUFBUSxDQUFBO0FBQUEsTUFBQTtRQUN4QlUsRUFBbUQsUUFBQSxNQUFBdUQsRUFBMUM1RCxFQUFNLEtBQUssSUFBRyx5QkFBcUIsQ0FBQTtBQUFBLE1BQUE7OztJQ3hDaERELEtBQWUsQ0FBQTs7OzsyQkFVZkksRUFzQk0sT0FBQTtBQUFBLE1BckJILE9BQUtHLEVBQUE7QUFBQTtRQUErQ0MsRUFBQVosQ0FBQSxFQUFJLEdBQUc7QUFBQSxRQUFpQlksRUFBQVosQ0FBQSxFQUFJLEtBQUssS0FBSztBQUFBLFFBQWVZLEVBQUFaLENBQUEsRUFBSSxLQUFLLE1BQU07QUFBQSxRQUFpQlksRUFBQVosQ0FBQSxFQUFJLFFBQVE7QUFBQSxRQUFtQlksRUFBQVosQ0FBQSxFQUFJLE1BQU07QUFBQSxRQUFjWSxFQUFBWixDQUFBLEVBQUksSUFBSTtBQUFBLFFBQWVZLEVBQUFaLENBQUEsRUFBSSxPQUFPLE9BQU87QUFBQSxRQUFlWSxFQUFBWixDQUFBLEVBQUksUUFBUSxFQUFFO0FBQUEsUUFBZVksRUFBQVosQ0FBQSxFQUFJLFFBQVEsRUFBRTtBQUFBLFFBQVlZLEVBQUFaLENBQUEsRUFBSTtBQUFBLFFBQWdCWSxFQUFBWixDQUFBLEVBQUksZ0JBQWdCO0FBQUEsTUFBQTs7TUFleFY0QyxFQUdFQyxHQUFBO0FBQUEsUUFGQyxVQUFRakMsRUFBQVosQ0FBQSxFQUFJLEtBQUssT0FBTyxHQUFHLENBQUE7QUFBQSxRQUMzQixNQUFNWSxFQUFBeUIsQ0FBQSxFQUFLO0FBQUEsTUFBQTtNQUdkM0IsRUFBcUQsUUFBQTtBQUFBLFFBQTlDLE9BQUtDLEVBQUEsQ0FBR0MsRUFBQVosQ0FBQSxFQUFJLFFBQVEsQ0FBQTtBQUFBLE1BQUEsR0FBRyxvQkFBZ0IsQ0FBQTtBQUFBLElBQUE7OzBHQy9CaERJLEtBQWUsQ0FBQTs7Ozs7OztBQWlCZixVQUFNQyxJQUFRQzsyQkFNZEUsRUErQkssTUFBQTtBQUFBLE1BL0JBLE9BQUtHLEVBQUEsQ0FBQSxxQkFBd0JDLEtBQUksUUFBUSxNQUFNQSxFQUFBWixDQUFBLEVBQUksTUFBTSxRQUFRWSxFQUFBWixDQUFBLEVBQUksSUFBSSxTQUFTWSxFQUFBWixDQUFBLEVBQUksYUFBYSxHQUFHLENBQUE7QUFBQSxJQUFBO09BQ3pHTyxFQUFBLEVBQUEsR0FBQUMsRUE2QlcwRSxXQTNCZ0I3RSxFQUFNLGFBQVcsQ0FBbEM4RSxHQUFPQztRQURULEtBQUFELEVBQU07QUFBQSxNQUFBO1FBR1p6RSxFQWlCSyxNQUFBO0FBQUEsVUFqQkEsVUFBUUUsRUFBQVosQ0FBQSxFQUFJLEtBQUssS0FBSyxNQUFNLENBQUE7QUFBQSxRQUFBO1VBS3ZCbUYsRUFBTSxZQUpkaEQsRUFPbUI2QixJQUFBO0FBQUE7WUFOaEIsVUFBUXBELEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUssUUFBUVksRUFBQVosQ0FBQSxFQUFJLEtBQUssTUFBTSxRQUFRLE9BQU8sQ0FBQTtBQUFBLFlBQzVELGNBQVltRixFQUFNLGFBQWE7QUFBQSxZQUMvQixNQUFNQSxFQUFNO0FBQUEsVUFBQTt3QkFHYixNQUFpQjtBQUFBLGNBQWRFLEdBQUFwQixFQUFBa0IsRUFBTSxLQUFLLEdBQUEsQ0FBQTtBQUFBLFlBQUE7OzZEQUdoQjNFLEVBTU8sUUFBQTtBQUFBO1lBTEosVUFBUUksRUFBQVosQ0FBQSxFQUFJLEtBQUssS0FBSyxTQUFTWSxFQUFBWixDQUFBLEVBQUksS0FBSyxNQUFNLFFBQVEsT0FBTyxDQUFBO0FBQUEsWUFDN0QsY0FBWW1GLEVBQU0sYUFBYTtBQUFBLFVBQUEsR0FHN0JsQixFQUFBa0IsRUFBTSxLQUFLLEdBQUEsSUFBQTFFLEVBQUE7QUFBQSxRQUFBO1FBSVJKLEVBQU0sZUFBZStFLElBQVEvRSxFQUFNLFlBQVksU0FBTSxVQUEvREcsRUFLSyxNQUFBOEUsSUFBQTtBQUFBLFVBSkgxQyxFQUdFQyxHQUFBO0FBQUEsWUFGQyxNQUFNakMsRUFBQXlCLENBQUEsRUFBSztBQUFBLFlBQ1gsTUFBTXpCLEVBQUFFLENBQUEsRUFBSztBQUFBLFVBQUE7Ozs7O0lDbERwQlYsS0FBZSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0FBb0RmLFVBQU1DLElBQVFDLEdBYVJ1RCxJQUFnQkM7QUFBQSxNQUE2QixNQUNqRHpELEVBQU0sWUFBWTJDLEVBQVEsU0FBUzNDLEVBQU0sUUFBUTJDLEVBQVEsU0FBUztBQUFBLElBQUEsR0FHOURlLElBQWNELEVBQVMsTUFBT3pELEVBQU0sWUFBWTJDLEVBQVEsT0FBT2dCLEtBQW1CM0QsRUFBTSxPQUFRO3NCQUl0R0UsS0FBQTRCLEVBa0NZQyxHQWZMMkIsRUFBQSxLQUFXLEdBQUE7QUFBQSxNQWxCZixPQUFLcEQsRUFBQTtBQUFBO1FBQStCQyxFQUFBWixDQUFBLEVBQUksTUFBTTtBQUFBLFFBQWNZLEVBQUFaLENBQUEsRUFBSSxNQUFNO0FBQUEsUUFBY1ksRUFBQVosQ0FBQSxFQUFJLE9BQU8sT0FBTztBQUFBLFFBQVlZLEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUs7QUFBQSxRQUF3QlksRUFBQVosQ0FBQSxFQUFJLElBQUk7QUFBQSxRQUFZWSxFQUFBWixDQUFBLEVBQUksUUFBUSxFQUFFO0FBQUEsdUJBQTBCTSxFQUFBLFFBQVE7QUFBQSxRQUFVQSxFQUFBLFlBQVlNLEtBQVEsUUFBUUEsRUFBQVosQ0FBQSxFQUFJLFFBQVEsYUFBYVksS0FBSSxVQUFVLEtBQUssR0FBRyxLQUFLQSxFQUFBWixDQUFBLEVBQUksUUFBUSxJQUFJO0FBQUEsUUFBU00sRUFBQSxTQUFTTSxFQUFBRyxFQUFBLEVBQVksUUFBaUIsQ0FBQUgsRUFBQVosQ0FBQSxFQUFJLEtBQUssS0FBSyxVQUFVWSxFQUFBWixDQUFBLEVBQUksUUFBUSxFQUFFLElBQUksSUFBYSxDQUFBWSxFQUFBWixDQUFBLEVBQUksS0FBSyxLQUFLLFVBQVVZLEVBQUFaLENBQUEsRUFBSSxRQUFRLEVBQUUsR0FBRztBQUFBLE1BQUE7TUFjcmQsVUFBVU0sRUFBQSxZQUFZTSxLQUFRLFVBQVVOLEVBQUE7QUFBQSxNQUN4QyxNQUFNQSxFQUFBLFlBQVlNLEVBQUFvQyxDQUFBLEVBQVEsUUFBUTFDLEVBQUEsT0FBT0EsRUFBQSxPQUFPO0FBQUEsTUFDaEQsUUFBUUEsRUFBQSxZQUFZTSxFQUFBb0MsQ0FBQSxFQUFRLFFBQVExQyxFQUFBLFdBQVdNLE1BQU8sUUFBUUEsRUFBQWdELEVBQUEsRUFBTztBQUFBLE1BQ3JFLE1BQU1DLEVBQUE7QUFBQSxJQUFBO2tCQUdQLE1BSUU7QUFBQSxRQURNdkQsRUFBQSxvQkFIUjZCLEVBSUVVLEdBQUE7QUFBQTtVQUhDLE1BQU12QyxFQUFBO0FBQUEsVUFDTixNQUFNQSxFQUFBLFNBQVNNLEVBQUFHLEVBQUEsRUFBWSxRQUFRSCxFQUFBRSxDQUFBLEVBQUssUUFBUUYsRUFBQUUsQ0FBQSxFQUFLO0FBQUEsUUFBQTtXQUV0RCxNQUVGbUQsRUFBRzNELEVBQUEsS0FBSyxJQUFHLEtBRVgsQ0FBQTtBQUFBLFFBR1FBLEVBQUEscUJBSFI2QixFQUlFVSxHQUFBO0FBQUE7VUFIQyxNQUFNdkMsRUFBQTtBQUFBLFVBQ04sTUFBTUEsRUFBQSxTQUFTTSxFQUFBRyxFQUFBLEVBQVksUUFBUUgsRUFBQUUsQ0FBQSxFQUFLLFFBQVFGLEVBQUFFLENBQUEsRUFBSztBQUFBLFFBQUE7Ozs7O0lDeEcxRFYsS0FBZSxDQUFBOzs7Ozs7Ozs7O0FBMEJmLFVBQU1DLElBQVFDLEdBT1J5RCxJQUFjRCxFQUFTLE1BQU96RCxFQUFNLFlBQVkyQyxFQUFRLE9BQU9nQixLQUFtQjNELEVBQU0sT0FBUTtzQkFJdEdFLEtBQUE0QixFQWdCWUMsR0FMTDJCLEVBQUEsS0FBVyxHQUFBO0FBQUEsTUFWZixPQUFLcEQsRUFBQTtBQUFBO1FBQXFDLENBQUFDLEVBQUFaLENBQUEsRUFBSSxRQUFRLGNBQWNZLEVBQUFaLENBQUEsRUFBSSxPQUFPLE9BQU8sTUFBTVksRUFBQVosQ0FBQSxFQUFJLFFBQVEsS0FBSyxJQUFJO0FBQUEsUUFBU0ssRUFBTSxZQUFZTyxFQUFBcUMsRUFBQSxFQUFjLE9BQUksQ0FBSXJDLEVBQUFaLENBQUEsRUFBSSxVQUFVLEtBQUssR0FBRyxJQUFBO0FBQUEsUUFBY0ssRUFBTSxZQUFZTyxFQUFBcUMsRUFBQSxFQUFjLE1BQUcsQ0FBSXJDLEVBQUFaLENBQUEsRUFBSSxPQUFPLE9BQU8sSUFBQTtBQUFBLFFBQWUsQ0FBQVksRUFBQVosQ0FBQSxFQUFJLEtBQUssS0FBSyxVQUFVO0FBQUEsTUFBQTtNQU90UyxVQUFVSyxFQUFNLFlBQVlPLEVBQUFxQyxFQUFBLEVBQWMsVUFBVTVDLEVBQU07QUFBQSxNQUMxRCxNQUFNQSxFQUFNLFlBQVlPLE1BQWMsUUFBUVAsRUFBTSxPQUFPQSxFQUFNLE9BQU87QUFBQSxNQUN4RSxNQUFNQyxFQUFBLFlBQVlNLEVBQUFxQyxFQUFBLEVBQWMsU0FBU3JDLEVBQUFxQyxFQUFBLEVBQWMsU0FBUztBQUFBLElBQUE7a0JBR2pFLE1BRU87QUFBQSxRQUZQdkMsRUFFTyxRQUFBO0FBQUEsVUFGQSxtQkFBaUJFLEVBQUFaLENBQUEsRUFBSSxRQUFRLE1BQU1ZLEVBQUFaLENBQUEsRUFBSSxNQUFNLFFBQVFZLEtBQUksTUFBTSxNQUFNLENBQUE7QUFBQSxRQUFBLEdBQ3ZFcUQsRUFBQTVELEVBQU0sS0FBSyxHQUFBLENBQUE7QUFBQSxNQUFBOzs7O29FQ25EbEJELEtBQWUsQ0FBQTs7Ozs7Ozs7O0FBUWYsVUFBTW1GLElBQVk5RCxFQUFJLEVBQUssR0FDckIrRCxJQUFVaEQsRUFBb0JsQyxHQUFBLFlBQW1CO0FBRXZELFdBQUFvQjtBQUFBLE1BQ0U4RDtBQUFBLE1BQ0EsTUFBTTtBQUNKLFFBQUtELEVBQVUsVUFBT0EsRUFBVSxRQUFRO0FBQUEsTUFDMUM7QUFBQSxNQUNBLEVBQUUsV0FBVyxHQUFBO0FBQUEsSUFBTSxtQkFLckIvRSxFQXdCUyxVQUFBO0FBQUEsTUF2Qk4sT0FBS0csRUFBQSxDQUFBLG9CQUF1QkMsS0FBSSxRQUFRLEtBQUssU0FBUzRFLEVBQUEsU0FBTyxPQUFBLENBQUE7QUFBQSxNQUM3RCxTQUFLQyxFQUFBLENBQUEsTUFBQUEsRUFBQSxDQUFBLElBQUEsQ0FBQUMsTUFBRUYsRUFBQSxRQUFPLENBQUlBLEVBQUE7QUFBQSxNQUNuQixNQUFLO0FBQUEsSUFBQTtNQUVMOUUsRUFrQk0sT0FBQTtBQUFBLFFBbEJBLE9BQUtDLEVBQUEsQ0FBQSxtQkFBc0JDLEtBQUksUUFBUSxNQUFNNEUsRUFBQSxTQUFXRCxFQUFBLFNBQVMsbUJBQUEsQ0FBQTtBQUFBLE1BQUE7Y0FDckUvRSxFQWdCTSxPQUFBO0FBQUEsVUFmSCxPQUFLRyxFQUFBLENBQUEseUJBQTRCQyxFQUFBWixDQUFBLEVBQUksS0FBSyxLQUFLLEtBQUtZLEtBQUksS0FBSyxPQUFPLEdBQUcsQ0FBQTtBQUFBLFVBQ3hFLFFBQU87QUFBQSxVQUNQLFNBQVE7QUFBQSxVQUNSLE9BQU07QUFBQSxVQUNOLE9BQU07QUFBQSxRQUFBO1VBRU5GLEVBR0UsUUFBQTtBQUFBLFlBRkMsT0FBS0MsRUFBQSxDQUFBLGdCQUFtQjZFLEVBQUEsUUFBVTVFLEVBQUFaLENBQUEsRUFBSSxLQUFLLE1BQU0sT0FBTyxRQUFRLE1BQUcsb0JBQUEsQ0FBQTtBQUFBLFlBQ3BFLEdBQUU7QUFBQSxVQUFBO1VBR0pVLEVBR0UsUUFBQTtBQUFBLFlBRkMsT0FBS0MsRUFBQSxDQUFBLGlCQUFvQkMsS0FBSSxLQUFLLE1BQU0sUUFBUSxPQUFPLENBQUE7QUFBQSxZQUN4RCxHQUFFO0FBQUEsVUFBQTs7Ozs7Z0pDdkNWUixLQUFlLENBQUE7Ozs7Ozs7Ozs7OztBQWtCZixVQUFNQyxJQUFRQyxHQUVScUYsSUFBZW5ELGlCQUFzQyxHQUVyRG9ELElBQVdDLEdBQUEsR0FFWEMsSUFBcUJoQyxFQUFTLE1BQU96RCxFQUFNLE9BQU8sU0FBWSxNQUFPLEdBQ3JFMEYsSUFBcUJqQyxFQUFTLE1BQU16RCxFQUFNLFFBQVF1RixDQUFROzJCQUloRXBGLEVBd0RNLE9BQUE7QUFBQSxNQXZESCxPQUFLRyxFQUFBO0FBQUE7UUFBeUNDLEVBQUFaLENBQUEsRUFBSSxHQUFHLFFBQVE7QUFBQSxRQUFlWSxFQUFBWixDQUFBLEVBQUksT0FBTyxPQUFPO0FBQUEsUUFBWVksRUFBQVosQ0FBQSxFQUFJLFFBQVE7QUFBQSxRQUFZWSxFQUFBWixDQUFBLEVBQUksS0FBSyxPQUFPO0FBQUEsUUFBV1ksRUFBQVosQ0FBQSxFQUFJLElBQUk7QUFBQSxRQUFlWSxFQUFBWixDQUFBLEVBQUksU0FBUyxHQUFHO0FBQUEsUUFBWVksRUFBQVosQ0FBQSxFQUFJLFFBQVEsS0FBSztBQUFBLE1BQUE7TUFVbE8sTUFBSztBQUFBLElBQUE7T0FFTE8sRUFBQSxFQUFBLEdBQUFDLEVBMENRMEUsR0FBQSxNQUFBYyxFQXRCaUIxRixFQUFBLE1BQUksQ0FBbkIyRixHQUFLYixZQXBCZjVFLEVBMENRLFNBQUE7QUFBQSxRQXpDTCxPQUFLRyxFQUFBO0FBQUE7VUFBaUR5RSxNQUFVTyxFQUFBLFNBQTBCL0UsRUFBQVosQ0FBQSxFQUFJLEdBQUcsUUFBUSxTQUFTWSxLQUFJLEtBQUssTUFBTSxRQUFRLFNBQVNBLEVBQUFaLENBQUEsRUFBSSxPQUFPLE1BQU0sSUFBMkIsQ0FBQSxZQUFBWSxFQUFBWixDQUFBLEVBQUksS0FBSyxNQUFNLFFBQVEsT0FBTztBQUFBLFVBQVdZLEVBQUFaLENBQUEsRUFBSSxNQUFNLEVBQUU7QUFBQSxVQUFnQlksRUFBQVosQ0FBQSxFQUFJLE9BQU8sS0FBSztBQUFBLFVBQWFZLEVBQUFaLENBQUEsRUFBSSxPQUFPLE9BQU87QUFBQSxVQUFjWSxFQUFBWixDQUFBLEVBQUksT0FBTztBQUFBLFVBQWlCWSxFQUFBWixDQUFBLEVBQUksS0FBSyxLQUFLO0FBQUEsVUFBWVksRUFBQVosQ0FBQSxFQUFJLEtBQUssT0FBTztBQUFBLFVBQWFZLEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUs7QUFBQSxVQUFrQlksRUFBQVosQ0FBQSxFQUFJLFFBQVEsRUFBRTtBQUFBLFVBQWNZLEVBQUFaLENBQUEsRUFBSSxRQUFRLEVBQUU7QUFBQSxVQUFpQlksRUFBQVosQ0FBQSxFQUFJLGdCQUFnQjtBQUFBLFVBQWFZLEVBQUFaLENBQUEsRUFBSSxNQUFNO0FBQUEsUUFBQTtRQWlCemhCLGNBQVlpRyxFQUFJLGFBQWE7QUFBQSxRQUM3QixLQUFLQSxFQUFJO0FBQUEsTUFBQTtRQUdWdkYsRUFRRSxTQUFBO0FBQUEsVUFQQyxTQUFTMEUsTUFBVU8sRUFBQTtBQUFBLFVBQ25CLFNBQU8sQ0FBQSx5QkFBQSxDQUEyQjtBQUFBLFVBQ2xDLE1BQU1HLEVBQUE7QUFBQSxVQUNOLE1BQU1DLEVBQUE7QUFBQSxVQUNOLE9BQU9YO0FBQUEsVUFDUCxVQUFNLENBQUFNLE1BQUVDLEVBQUEsUUFBZVA7QUFBQSxVQUN4QixNQUFLO0FBQUEsUUFBQTtRQUdQMUUsRUFFTyxRQUFBO0FBQUEsVUFGQSxVQUFRRSxFQUFBWixDQUFBLEVBQUksS0FBSyxLQUFLLGdCQUFnQixDQUFBO0FBQUEsUUFBQSxHQUN4Q2lFLEVBQUFnQyxFQUFJLEtBQUssR0FBQSxDQUFBO0FBQUEsUUFLTkEsRUFBSSxTQUFTQSxFQUFJLFFBQUssVUFGOUJ6RixFQUtPLFFBQUE7QUFBQTtVQUpKLFVBQVFJLEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUssZ0JBQWdCLENBQUE7QUFBQSxRQUFBLEdBRXhDLE9BQ0VpRSxFQUFHZ0MsRUFBSSxLQUFLLElBQUcsTUFDbEIsQ0FBQTs7OztvRUMzRk9DLEtBQVk7QUFBQSxFQUN2QixZQUFZO0FBQUEsRUFDWixlQUFlO0FBQUEsRUFDZixZQUFZO0FBQ2QsR0NFRTlGLEtBQWUsQ0FBQTs7Ozs7Ozs7Ozs7O0FBcUNmLFVBQU1DLElBQVFDLEdBUVJ5RCxJQUFjRDtBQUFBLE1BQWlELE1BQ25FekQsRUFBTSxPQUFPMkQsS0FBbUIzRCxFQUFNLFNBQVM2RixHQUFVLGdCQUFnQmpELEdBQWMsTUFBTUEsR0FBYztBQUFBLElBQUE7c0JBSzdHMUMsS0FBQTRCLEVBc0NZQyxHQXJCTDJCLEVBQUEsS0FBVyxHQUFBO0FBQUEsTUFoQmYsT0FBS3BELEVBQUE7QUFBQTtRQUE2QkMsRUFBQVosQ0FBQSxFQUFJLE9BQU8sTUFBTTtBQUFBLFFBQVdZLEVBQUFaLENBQUEsRUFBSSxPQUFPLEtBQUs7QUFBQSxRQUFXWSxFQUFBWixDQUFBLEVBQUksT0FBTyxPQUFPO0FBQUEsUUFBWVksRUFBQVosQ0FBQSxFQUFJLFFBQVE7QUFBQSxRQUFZWSxFQUFBWixDQUFBLEVBQUksSUFBSTtBQUFBLFFBQVlZLEVBQUFaLENBQUEsRUFBSSxRQUFRLEtBQUs7QUFBQSxRQUFXWSxFQUFBWixDQUFBLEVBQUksTUFBTTtBQUFBLFFBQVlZLEVBQUFaLENBQUEsRUFBSSxNQUFNLEVBQUU7QUFBQSxRQUFZWSxFQUFBWixDQUFBLEVBQUksS0FBSyxVQUFVO0FBQUEsUUFBY00sRUFBQSxTQUFTTSxFQUFBc0YsRUFBQSxFQUFVLGlCQUFhO0FBQUEsUUFBdUI1RixFQUFBLFNBQVNNLEVBQUFzRixFQUFBLEVBQVUsY0FBYzVGLEVBQUEsWUFBUTtBQUFBLE1BQUE7TUFjOVcsTUFBTUEsRUFBQTtBQUFBLE1BQ04sTUFBTXlELEVBQUEsVUFBZ0JuRCxFQUFBcUMsRUFBQSxFQUFjLFNBQVNyQyxFQUFBcUMsRUFBQSxFQUFjLFNBQVM7QUFBQSxJQUFBO2tCQUdyRSxNQUtFO0FBQUEsUUFETTNDLEVBQUEsYUFKUjZCLEVBS0VVLEdBQUE7QUFBQTtVQUpDLE9BQUtsQyxFQUFBLENBQUdDLEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUssS0FBS1ksS0FBSSxLQUFLLE9BQU8sR0FBRyxDQUFBO0FBQUEsVUFDOUMsTUFBTU4sRUFBQTtBQUFBLFVBQ04sTUFBTU0sRUFBQUUsQ0FBQSxFQUFLO0FBQUEsUUFBQTtRQUlkSixFQVdNLE9BQUE7QUFBQSxVQVhBLE9BQUtDLEVBQUEsQ0FBR0MsRUFBQVosQ0FBQSxFQUFJLE1BQU0sT0FBT1ksRUFBQVosQ0FBQSxFQUFJLFFBQVEsTUFBTVksRUFBQVosQ0FBQSxFQUFJLEtBQUssVUFBVSxRQUFRWSxFQUFBWixDQUFBLEVBQUksSUFBSSxJQUFJLENBQUE7QUFBQSxRQUFBO1VBQ3RGVSxFQUVNLE9BQUE7QUFBQSxZQUZBLFVBQVFFLEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUssa0JBQWtCWSxFQUFBWixDQUFBLEVBQUksS0FBSyxNQUFNLFFBQVEsT0FBTyxDQUFBO0FBQUEsVUFBQSxLQUN2RU0sRUFBQSxPQUFPLEdBQUEsQ0FBQTtBQUFBLFVBS0pBLEVBQUEsb0JBRlJFLEVBS00sT0FBQTtBQUFBO1lBSkgsVUFBUUksRUFBQVosQ0FBQSxFQUFJLEtBQUssS0FBSyxTQUFTWSxFQUFBWixDQUFBLEVBQUksS0FBSyxNQUFNLFFBQVEsT0FBTyxDQUFBO0FBQUEsVUFBQSxLQUczRE0sRUFBQSxXQUFXLEdBQUEsQ0FBQTs7Ozs7O29FQ3RGcEJGLEtBQWUsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7O0FBcUNmLFVBQU1DLElBQVFDLEdBZVI2RCxJQUFPQyxHQUVQK0IsSUFBYzFFLEVBQTJCLElBQUksR0FDN0MyRSxJQUFlM0UsRUFBMkIsSUFBSSxHQUM5QzRFLElBQWU1RSxFQUFZLENBQUMsR0FDNUI2RSxJQUFtQjdFLEVBQVksQ0FBQyxHQUNoQzhFLElBQVU5RSxFQUEyQixJQUFJLEdBQ3pDK0UsSUFBYS9FLEVBQVksQ0FBQyxHQUMxQmdGLElBQWVoRixFQUFhLEVBQUksR0FDaENpRixJQUFjakYsRUFBYSxFQUFLLEdBQ2hDa0YsSUFBY2xGLEVBQWEsRUFBSSxHQUMvQm1GLElBQWdCbkYsRUFBaUMsSUFBSSxHQUNyRG9GLElBQVNwRixFQUFtQixFQUFFLEdBQzlCcUYsSUFBZXJGLEVBQWMsRUFBRSxHQUMvQnNGLElBQWV0RixFQUE2QixJQUFJLEdBQ2hEdUYsSUFBYXZGLEVBQXVCLE1BQVMsR0FDN0N3RixJQUFvQnhGLEVBQVksQ0FBQyxHQUVqQ3lGLElBQWNwRCxFQUFTLE1BQU13QyxFQUFpQixRQUFRLENBQUMsR0FDdkRhLElBQW9CckQsRUFBUyxNQUFNc0QsRUFBZ0IsUUFBUUMsTUFBWUQsRUFBZ0IsUUFBUSxLQUFLRSxDQUFNLEdBQzFHRixJQUFrQnRELEVBQVMsTUFBT3pELEVBQU0sVUFBVWtILEVBQVcsUUFBUUEsRUFBVyxRQUFRbEgsRUFBTSxPQUFRLEdBQ3RHa0gsSUFBYXpELEVBQVMsTUFBTTtBQUNoQyxVQUFJLENBQUMrQyxFQUFPLE1BQU0sT0FBUSxRQUFPO0FBQ2pDLFVBQUksQ0FBQ3hHLEVBQU0sZUFBZ0IsUUFBT3dHLEVBQU8sTUFBTTtBQUUvQyxZQUFNVyxJQUFXLEtBQUssTUFBTVgsRUFBTyxNQUFNLFNBQVNJLEVBQWtCLEtBQUs7QUFHekUsYUFGa0JKLEVBQU8sTUFBTSxTQUFTSSxFQUFrQixRQUV2Q08sSUFBVyxJQUFJQTtBQUFBLElBQ3BDLENBQUMsR0FFS0YsSUFBaUIsR0FDakJELEtBQW1CO0FBQ3pCLFFBQUlJO0FBRUosVUFBTUMsSUFBYyxDQUFDQyxNQUFxQjtBQUN4QyxVQUFJQyxJQUFZO0FBRWhCLGFBQUlELE1BQWFyQixFQUFpQixVQUFPc0IsSUFBWSw2QkFDakQsS0FBSyxJQUFJdEIsRUFBaUIsUUFBUXFCLENBQVEsTUFBTSxNQUFHQyxJQUFZLCtCQUU1REE7QUFBQSxJQUNULEdBRU1DLElBQThCLENBQUNDLEdBQXNCQyxNQUEyQjtBQUNwRixZQUFNQyxJQUFnQkQsRUFBVSxzQkFBQSxHQUMxQkUsS0FBaUJELEVBQWMsT0FBT0EsRUFBYyxPQUNwREUsS0FBY0osRUFBUSxzQkFBQTtBQUc1QixhQUZxQkksR0FBWSxPQUFPQSxHQUFZLFNBRTdCRCxNQUFrQkMsR0FBWSxRQUFRRixFQUFjO0FBQUEsSUFDN0UsR0FFTUcsS0FBaUIsQ0FBQ0MsTUFBc0I7QUFDNUMsVUFBSSxDQUFDcEIsRUFBVyxNQUFPO0FBRXZCLFlBQU1xQixJQUFXRCxFQUFNLGVBQWUsQ0FBQyxHQUNqQ0UsSUFBU3RCLEVBQVcsTUFBTSxVQUFVcUIsRUFBUyxTQUM3Q0UsS0FBU0YsRUFBUyxVQUFVckIsRUFBVyxNQUFNO0FBRW5ELE1BQUksS0FBSyxJQUFJc0IsQ0FBTSxJQUFJLEtBQUssSUFBSUMsRUFBTSxLQUFHQyxHQUFjRixDQUFNO0FBQUEsSUFDL0QsR0FFTUcsS0FBbUIsQ0FBQ0wsTUFBc0I7QUFDOUMsTUFBQXBCLEVBQVcsUUFBUW9CLEVBQU0sUUFBUSxDQUFDO0FBQUEsSUFDcEMsR0FFTU0sS0FBYyxDQUFDTixNQUFzQjtBQUN6QyxZQUFNTyxJQUFpQlAsRUFBTSxVQUN2QlEsSUFBVSxLQUFLLElBQUlSLEVBQU0sTUFBTSxLQUFLO0FBRTFDLE1BQUlRLEtBQVcsQ0FBQ0QsTUFDWlAsRUFBTSxZQUFVQSxFQUFNLGVBQUEsR0FFMUIsYUFBYVgsRUFBYSxHQUUxQkEsS0FBZ0IsT0FBTyxXQUFXLE1BQU07O0FBQ3RDLFlBQUltQjtBQUNGLFVBQUFKLEdBQWNKLEVBQU0sTUFBTTtBQUFBLGFBQ3JCO0FBQ0wsZ0JBQU1TLE9BQVNwRSxLQUFBb0MsRUFBTyxNQUFNQyxFQUFhLE1BQU0sQ0FBQyxDQUFDLE1BQWxDLGdCQUFBckMsR0FBcUMsZUFBYztBQUVsRSxVQUFBcUUsR0FBZUQsRUFBTTtBQUFBLFFBQ3ZCO0FBQUEsTUFDRixHQUFHLEdBQUc7QUFBQSxJQUNSLEdBRU1FLEtBQWEsTUFBTTtBQUN2QixNQUFLM0MsRUFBYSxVQUVsQkMsRUFBYSxRQUFRRCxFQUFhLE1BQU0sYUFDeENJLEVBQVcsUUFBUUosRUFBYSxNQUFNLGFBQ3RDTyxFQUFZLFFBQVFOLEVBQWEsUUFBUUcsRUFBVyxPQUVwRFMsRUFBa0IsUUFBUUosRUFBTyxNQUFNO0FBQUEsUUFBTyxDQUFDbUMsTUFDN0NuQixFQUE0Qm1CLEdBQU81QyxFQUFhLEtBQW9CO0FBQUEsTUFBQSxFQUNwRTtBQUFBLElBQ0osR0FFTTZDLEtBQWdCLE1BQU07QUFDMUIsWUFBTUMsSUFBVTtBQUFBLFFBQ2QsTUFBTS9DLEtBQUEsZ0JBQUFBLEVBQWE7QUFBQSxRQUNuQixZQUFZO0FBQUEsUUFDWixXQUFXO0FBQUEsTUFBQTtBQUdiLE1BQUFTLEVBQWMsUUFBUSxJQUFJLHFCQUFxQixDQUFDdUMsTUFBWTtBQUMxRCxZQUFJQyxJQUE4QixDQUFBO0FBRWxDLFFBQUFELEVBQVEsUUFBUSxDQUFDRSxPQUFVO0FBQ3pCLGdCQUFNQyxLQUFhekMsRUFBTyxNQUFNLFFBQVF3QyxHQUFNLE1BQXFCO0FBRW5FLFVBQUlBLEdBQU0sa0JBQ1JELEVBQWtCLEtBQUtFLEVBQVUsR0FDakN4QyxFQUFhLE1BQU0sS0FBS3dDLEVBQVUsS0FFbEN4QyxFQUFhLFFBQVFBLEVBQWEsTUFBTSxPQUFPLENBQUNrQyxPQUFVQSxPQUFVTSxFQUFVLEdBR2hGeEMsRUFBYSxNQUFNLEtBQUssQ0FBQ3lDLElBQUdDLE9BQU1ELEtBQUlDLEVBQUM7QUFBQSxRQUN6QyxDQUFDLEdBRUQvQyxFQUFhLFFBQVFLLEVBQWEsTUFBTSxTQUFTLENBQUMsR0FDbERKLEVBQVksUUFBUUksRUFBYSxNQUFNLFNBQVNELEVBQU8sTUFBTSxTQUFTLENBQUMsR0FFbkV1QyxFQUFrQixTQUFTLEtBQUdqRixFQUFLLHFCQUFxQmlGLENBQWlCO0FBQUEsTUFDL0UsR0FBR0YsQ0FBTyxHQUVWckMsRUFBTyxNQUFNLFFBQVEsQ0FBQzRDLE1BQVU7QUFDOUIsUUFBSTdDLEVBQWMsU0FBT0EsRUFBYyxNQUFNLFFBQVE2QyxDQUFLO0FBQUEsTUFDNUQsQ0FBQztBQUFBLElBQ0gsR0FFTUMsS0FBYyxNQUFNO0FBQ3hCLFlBQU1DLElBQW1CLE1BQU07QUFDN0IsUUFBSXZELEVBQWEsVUFBVSxTQUUzQlMsRUFBTyxRQUFRLE1BQU0sS0FBS1QsRUFBYSxNQUFNLFFBQVEsR0FDckQ2QyxHQUFBO0FBQUEsTUFDRjtBQUVBLE1BQUFsQyxFQUFhLFFBQVEsSUFBSSxpQkFBaUI0QyxDQUFnQixHQUV0RHZELEVBQWEsU0FBT1csRUFBYSxNQUFNLFFBQVFYLEVBQWEsT0FBTyxFQUFFLFdBQVcsSUFBTTtBQUFBLElBQzVGLEdBRU1vQyxLQUFnQixDQUFDb0IsTUFBa0I7QUFHdkMsTUFGd0JBLElBQVEsSUFHOUJ2SixFQUFNLGlCQUFpQndKLEdBQUEsSUFBcUJDLEdBQUEsSUFFNUN6SixFQUFNLGlCQUFpQjBKLEdBQUEsSUFBaUJDLEdBQUE7QUFBQSxJQUU1QyxHQUVNbEIsS0FBaUIsQ0FBQ21CLE1BQW1CO0FBQ3pDLFVBQUk3RCxFQUFhLFVBQVUsS0FBTTtBQUVqQyxZQUFNOEQsSUFBa0JELEtBQVU3RCxFQUFhLE1BQU07QUFFckQsTUFBQUUsRUFBaUIsUUFBUTRELElBQWtCNUQsRUFBaUIsUUFBUSxJQUFJQSxFQUFpQixRQUFRLEdBRWpHRixFQUFhLE1BQU0sU0FBUztBQUFBLFFBQzFCLFVBQVU7QUFBQSxRQUNWLE1BQU02RDtBQUFBLE1BQUEsQ0FDUCxHQUNERSxHQUFXRCxDQUFlO0FBQUEsSUFDNUIsR0FFTUgsS0FBZSxNQUFNOztBQUN6QixVQUFJakQsRUFBYSxNQUFNLFdBQVcsS0FBS0osRUFBWSxNQUFPO0FBRTFELFlBQU0wRCxJQUFvQnRELEVBQWEsTUFBTUEsRUFBYSxNQUFNLFNBQVMsQ0FBQyxJQUFJLEdBQ3hFK0IsS0FBU3BFLElBQUFvQyxFQUFPLE1BQU11RCxDQUFTLE1BQXRCLGdCQUFBM0YsRUFBeUI7QUFFeEMsTUFBQXFFLEdBQWVELENBQU07QUFBQSxJQUN2QixHQUVNZ0IsS0FBbUIsTUFBTTs7QUFDN0IsVUFBSS9DLEVBQWEsTUFBTSxXQUFXLEtBQUtMLEVBQWEsTUFBTztBQUUzRCxZQUFNNEQsSUFBd0J2RCxFQUFhLE1BQU0sQ0FBQyxJQUFJQSxFQUFhLE1BQU0sUUFDbkUrQixNQUFTcEUsSUFBQW9DLEVBQU8sTUFBTXdELENBQWEsTUFBMUIsZ0JBQUE1RixFQUE2QixlQUFjO0FBRTFELE1BQUFxRSxHQUFlRCxDQUFNO0FBQUEsSUFDdkIsR0FFTW1CLEtBQWdCLE1BQU07QUFDMUIsVUFBSWxELEVBQWEsTUFBTSxXQUFXLEVBQUc7QUFFckMsWUFBTXNELElBQW9CdEQsRUFBYSxNQUFNLFNBQVMsSUFBSUEsRUFBYSxNQUFNLENBQUMsSUFBSUEsRUFBYSxNQUFNLENBQUMsSUFBSTtBQUUxRyxNQUFBZ0MsR0FBZWpDLEVBQU8sTUFBTXVELENBQVMsRUFBRSxVQUFVO0FBQUEsSUFDbkQsR0FFTU4sS0FBb0IsTUFBTTtBQUM5QixVQUFJaEQsRUFBYSxNQUFNLFdBQVcsRUFBRztBQUVyQyxZQUFNdUQsSUFBd0J2RCxFQUFhLE1BQU0sQ0FBQyxJQUFJO0FBRXRELE1BQUFnQyxHQUFlakMsRUFBTyxNQUFNd0QsQ0FBYSxFQUFFLFVBQVU7QUFBQSxJQUN2RCxHQUVNRixLQUFhLENBQUNELE1BQTZCO0FBQy9DLFVBQUksQ0FBQzNELEVBQVEsU0FBU2EsRUFBZ0IsU0FBU0csRUFBVyxNQUFPO0FBR2pFLFlBQU0rQyxJQURnQmxELEVBQWdCLFFBQVEsTUFBTSxLQUVqQzhDLElBQ2IsS0FBSyxNQUFNOUMsRUFBZ0IsUUFBUSxDQUFDLElBQUksSUFDeEMsS0FBSyxNQUFNQSxFQUFnQixRQUFRLENBQUM7QUFFMUMsTUFBQWIsRUFBUSxNQUFNLFNBQVM7QUFBQSxRQUNyQixVQUFVO0FBQUEsUUFDVixNQUFNVyxFQUFZLFFBQVFvRCxJQUFZLEtBQUtwRCxFQUFZLFFBQVFvRCxNQUFjakQsS0FBV0M7QUFBQSxNQUFBLENBQ3pGO0FBQUEsSUFDSDtBQUVBLFdBQUFpRCxHQUFVLE1BQU07QUFDZCxNQUFJbkUsRUFBYSxVQUFVLFNBRTNCUyxFQUFPLFFBQVEsTUFBTSxLQUFLVCxFQUFhLE1BQU0sUUFBUSxHQUVyRDJDLEdBQUEsR0FDQUUsR0FBQSxHQUNBUyxHQUFBLEdBRUksVUFDRixPQUFPLGlCQUFpQixVQUFVWCxFQUFVO0FBQUEsSUFFaEQsQ0FBQyxHQUVEeUIsR0FBWSxNQUFNOztBQUNoQixPQUFBL0YsSUFBQW1DLEVBQWMsVUFBZCxRQUFBbkMsRUFBcUIsZUFDckJnRyxJQUFBMUQsRUFBYSxVQUFiLFFBQUEwRCxFQUFvQixjQUNwQixPQUFPLG9CQUFvQixVQUFVMUIsRUFBVTtBQUFBLElBQ2pELENBQUMsbUJBSUR2SSxFQTJKVSxXQUFBO0FBQUEsTUExSlAsT0FBS0csRUFBQTtBQUFBO1FBQWlDQyxFQUFBWixDQUFBLEVBQUksU0FBUztBQUFBLFFBQWdCWSxFQUFBWixDQUFBLEVBQUksUUFBUTtBQUFBLFFBQVlZLEVBQUFaLENBQUEsRUFBSSxLQUFLLFVBQVU7QUFBQSxRQUFjWSxFQUFBWixDQUFBLEVBQUksSUFBSTtBQUFBLFFBQVdZLEVBQUFaLENBQUEsRUFBSSxNQUFNO0FBQUEsTUFBQTtlQVF0SjtBQUFBLE1BQUosS0FBSW1HO0FBQUEsSUFBQTtNQUlNLENBQUE5RixFQUFNLGNBQWNzRyxXQUFnQnRHLEVBQU0sY0FGcERHLEVBeUNVLFdBQUE7QUFBQTtRQXhDUCxPQUFLRyxFQUFBLENBQUdDLEVBQUFaLENBQUEsRUFBSSxRQUFRLE1BQU1LLEVBQU0sUUFBUU8sRUFBQVosQ0FBQSxFQUFJLE1BQU0sVUFBVVksRUFBQVosQ0FBQSxFQUFJLE1BQU0sS0FBS1ksRUFBQVosQ0FBQSxFQUFJLE1BQU0sUUFBUVksRUFBQVosQ0FBQSxFQUFJLE1BQU0sSUFBSSxDQUFBO0FBQUEsTUFBQTtRQUtwR0ssRUFBTSxjQUZkRyxFQWlCTSxPQUFBO0FBQUE7VUFoQkgsT0FBS0csRUFBQSxDQUFHQyxLQUFJLFFBQVEsTUFBTUEsRUFBQVosQ0FBQSxFQUFJLEtBQUssTUFBTVksRUFBQVosQ0FBQSxFQUFJLE1BQU0sUUFBUVksRUFBQVosQ0FBQSxFQUFJLElBQUksR0FBRyxDQUFBO0FBQUEsUUFBQTtVQUsvREssRUFBTSxjQUZkRyxFQUtNLE9BQUE7QUFBQTtZQUpILFVBQVFGLEVBQUEsY0FBY00sRUFBQVosQ0FBQSxFQUFJLEtBQUssS0FBSyxhQUFhWSxFQUFBWixDQUFBLEVBQUksS0FBSyxLQUFLLFVBQVUsQ0FBQTtBQUFBLFVBQUEsR0FHdkVpRSxFQUFBNUQsRUFBTSxLQUFLLEdBQUEsQ0FBQTtVQUtSQSxFQUFNLGlCQUZkRyxFQUtNLE9BQUE7QUFBQTtZQUpILFVBQVFJLEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUssU0FBU1ksRUFBQVosQ0FBQSxFQUFJLEtBQUssTUFBTSxRQUFRLE9BQU8sQ0FBQTtBQUFBLFVBQUEsR0FHM0RpRSxFQUFBNUQsRUFBTSxRQUFRLEdBQUEsQ0FBQTs7U0FNWkEsRUFBTSxjQUFjc0csRUFBQSxjQUY3Qm5HLEVBaUJNLE9BQUE7QUFBQTtVQWhCSCxVQUFRSSxFQUFBWixDQUFBLEVBQUksUUFBUSxNQUFNWSxFQUFBWixDQUFBLEVBQUksTUFBTSxRQUFRWSxLQUFJLElBQUksR0FBRyxDQUFBO0FBQUEsUUFBQTtVQUd4RGdDLEVBS0VrQyxJQUFBO0FBQUEsWUFKQyxVQUFVMkIsRUFBQTtBQUFBLFlBQ1YsTUFBTTdGLEVBQUF5QixDQUFBLEVBQUs7QUFBQSxZQUNYLFVBQVV6QixFQUFBK0MsRUFBQSxFQUFTO0FBQUEsWUFDbkIsU0FBSzhCLEVBQUEsQ0FBQSxNQUFBQSxFQUFBLENBQUEsSUFBQSxDQUFBQyxNQUFFcEYsRUFBQSxpQkFBaUJ1SixHQUFBLElBQXFCQyxHQUFBO0FBQUEsVUFBaUI7VUFHakVsSCxFQUtFa0MsSUFBQTtBQUFBLFlBSkMsVUFBVTRCLEVBQUE7QUFBQSxZQUNWLE1BQU05RixFQUFBeUIsQ0FBQSxFQUFLO0FBQUEsWUFDWCxVQUFVekIsRUFBQStDLEVBQUEsRUFBUztBQUFBLFlBQ25CLFNBQUs4QixFQUFBLENBQUEsTUFBQUEsRUFBQSxDQUFBLElBQUEsQ0FBQUMsTUFBRXBGLEVBQUEsaUJBQWlCeUosR0FBQSxJQUFpQkMsR0FBQTtBQUFBLFVBQWE7OztNQUs3RGxILEVBQW9CQyxFQUFBLFFBQUEsUUFBQSxDQUFBLEdBQUEsUUFBQSxFQUFBO0FBQUEsTUFFcEJyQyxFQWtHTSxPQUFBO0FBQUEsUUFsR0EsT0FBS0MsRUFBQSxDQUFHQyxFQUFBWixDQUFBLEVBQUksU0FBUyxVQUFVWSxFQUFBWixDQUFBLEVBQUksUUFBUSxJQUFJLENBQUE7QUFBQSxNQUFBO1FBQ25EVSxFQWdCSyxNQUFBO0FBQUEsVUFmRixPQUFLQyxFQUFBO0FBQUE7WUFBbURDLEVBQUFaLENBQUEsRUFBSSxRQUFRO0FBQUEsWUFBZ0JZLEVBQUFaLENBQUEsRUFBSSxJQUFJO0FBQUEsWUFBZVksRUFBQVosQ0FBQSxFQUFJLGFBQWE7QUFBQSxZQUFlWSxFQUFBWixDQUFBLEVBQUksU0FBUyxFQUFFO0FBQUEsWUFBa0JZLEVBQUFaLENBQUEsRUFBSSxVQUFVO0FBQUEsWUFBZVksRUFBQVosQ0FBQSxFQUFJLEtBQUs7QUFBQSxVQUFBO21CQVMvTTtBQUFBLFVBQUosS0FBSW9HO0FBQUEsVUFDSCxZQUFVK0I7QUFBQSwrQkFDVU07QUFBQSxVQUNwQixTQUFPQztBQUFBLFFBQUE7VUFFUjVGLEVBQVFDLEVBQUEsUUFBQSxXQUFBLENBQUEsR0FBQSxRQUFBLEVBQUE7QUFBQSxRQUFBO1FBYUZ6QyxFQUFBLFdBQVdpSCxFQUFBLFFBQVUsVUFWN0IvRyxFQThDTSxPQUFBO0FBQUE7VUE3Q0gsT0FBS0csRUFBQTtBQUFBLFlBQWNDLEVBQUFaLENBQUEsRUFBSSxTQUFTO0FBQUEsWUFBb0JZLEVBQUFaLENBQUEsRUFBSSxZQUFZO0FBQUEsWUFBa0JZLEVBQUFaLENBQUEsRUFBSSxRQUFRO0FBQUEsWUFBZ0JZLEVBQUFaLENBQUEsRUFBSSxNQUFNO0FBQUEsWUFBa0JZLEVBQUFaLENBQUEsRUFBSSxPQUFPLE9BQU87QUFBQSxZQUFnQlksRUFBQVosQ0FBQSxFQUFJLE1BQU07QUFBQSxZQUFnQlksRUFBQVosQ0FBQSxFQUFJLGVBQWU7QUFBQSxVQUFBOztVQVc5TlUsRUFpQ00sT0FBQTtBQUFBLFlBaENILFNBQU8sQ0FBQSw4QkFBQSxDQUFnQztBQUFBLFlBQ3ZDLE9BQUtnSyxHQUFBO0FBQUEsd0JBQTBCdkQsRUFBQSxLQUFpQjtBQUFBLFlBQUE7O1lBSWpEekcsRUEwQk0sT0FBQTtBQUFBLGNBekJILE9BQUtDLEVBQUE7QUFBQTtnQkFBc0RDLEVBQUFaLENBQUEsRUFBSSxRQUFRO0FBQUEsZ0JBQW9CWSxFQUFBWixDQUFBLEVBQUksTUFBTTtBQUFBLGdCQUFxQlksRUFBQVosQ0FBQSxFQUFJLE1BQU07QUFBQSxnQkFBc0JZLEVBQUFaLENBQUEsRUFBSSxJQUFJO0FBQUEsZ0JBQW9CWSxFQUFBWixDQUFBLEVBQUksU0FBUyxFQUFFO0FBQUEsZ0JBQXNCWSxFQUFBWixDQUFBLEVBQUksZUFBZTtBQUFBLGdCQUFtQlksRUFBQVosQ0FBQSxFQUFJLFVBQVU7QUFBQSxjQUFBO3VCQVU1UTtBQUFBLGNBQUosS0FBSXVHO0FBQUEsWUFBQTtlQUVKaEcsRUFBQSxFQUFBLEdBQUFDLEVBWUUwRSxHQUFBLE1BQUFjLEVBRHFCdUIsRUFBQSxPQUFVLENBQXZCb0QsR0FBR3ZGLGFBWGI1RSxFQVlFLE9BQUE7QUFBQSxnQkFYQyxPQUFLRyxFQUFBO0FBQUE7a0JBQXlEQyxFQUFBWixDQUFBLEVBQUksS0FBSyxPQUFPO0FBQUEsa0JBQXFCWSxFQUFBWixDQUFBLEVBQUksT0FBTztBQUFBLGtCQUFzQlksRUFBQVosQ0FBQSxFQUFJLE1BQU07QUFBQSxrQkFBc0JZLEVBQUFaLENBQUEsRUFBSSxPQUFPLE9BQU87QUFBQSxrQkFBc0JZLEVBQUFaLENBQUEsRUFBSSxHQUFHLFFBQVE7QUFBQSxrQkFBeUIwSCxFQUFZdEMsRUFBSztBQUFBLGdCQUFBO2dCQVNyUSxLQUFLQTtBQUFBLGNBQUE7Ozs7UUFvQk45RSxFQUFBLGNBQWNxRyxFQUFBLGNBYnRCbkcsRUE4Qk0sT0FBQTtBQUFBO1VBN0JILE9BQUtHLEVBQUE7QUFBQTtZQUF3REMsRUFBQVosQ0FBQSxFQUFJLFNBQVM7QUFBQSxZQUFvQlksRUFBQVosQ0FBQSxFQUFJLFlBQVk7QUFBQSxZQUFlWSxFQUFBWixDQUFBLEVBQUksUUFBUTtBQUFBLFlBQWdCWSxFQUFBWixDQUFBLEVBQUksTUFBTTtBQUFBLFlBQW1CWSxFQUFBWixDQUFBLEVBQUksTUFBTTtBQUFBLFlBQWtCWSxFQUFBWixDQUFBLEVBQUksTUFBTTtBQUFBLFlBQWdCWSxFQUFBWixDQUFBLEVBQUksT0FBTztBQUFBLFlBQWdCWSxFQUFBWixDQUFBLEVBQUksZUFBZTtBQUFBLFlBQWVLLEVBQU0sb0JBQWlCLGFBQUE7QUFBQSxVQUFBOztVQWNqVXVDLEVBTUVrQyxJQUFBO0FBQUEsWUFMQyxPQUFLbkUsRUFBQSxDQUFHQyxFQUFBWixDQUFBLEVBQUksT0FBTyxLQUFLLEtBQUtZLEVBQUFaLENBQUEsRUFBSSxlQUFlLEVBQUUsQ0FBQTtBQUFBLFlBQ2xELFVBQVV5RyxFQUFBO0FBQUEsWUFDVixNQUFNN0YsRUFBQXlCLENBQUEsRUFBSztBQUFBLFlBQ1gsVUFBVXpCLEVBQUErQyxFQUFBLEVBQVM7QUFBQSxZQUNuQixTQUFLOEIsRUFBQSxDQUFBLE1BQUFBLEVBQUEsQ0FBQSxJQUFBLENBQUFDLE1BQUVwRixFQUFBLGlCQUFpQnVKLEdBQUEsSUFBcUJDLEdBQUE7QUFBQSxVQUFpQjtVQUdqRWxILEVBTUVrQyxJQUFBO0FBQUEsWUFMQyxPQUFLbkUsRUFBQSxDQUFHQyxFQUFBWixDQUFBLEVBQUksT0FBTyxNQUFNLEtBQUtZLEVBQUFaLENBQUEsRUFBSSxlQUFlLEVBQUUsQ0FBQTtBQUFBLFlBQ25ELFVBQVUwRyxFQUFBO0FBQUEsWUFDVixNQUFNOUYsRUFBQXlCLENBQUEsRUFBSztBQUFBLFlBQ1gsVUFBVXpCLEVBQUErQyxFQUFBLEVBQVM7QUFBQSxZQUNuQixTQUFLOEIsRUFBQSxDQUFBLE1BQUFBLEVBQUEsQ0FBQSxJQUFBLENBQUFDLE1BQUVwRixFQUFBLGlCQUFpQnlKLEdBQUEsSUFBaUJDLEdBQUE7QUFBQSxVQUFhOzs7OztvRUM1Yi9ENUosS0FBZSxDQUFBOzs7Ozs7Ozs7OztBQWlDZixVQUFNQyxJQUFRQyxHQU9SeUQsSUFBY0QsRUFBUyxNQUFPekQsRUFBTSxZQUFZMkMsRUFBUSxPQUFPZ0IsS0FBbUIzRCxFQUFNLE9BQVE7c0JBSXRHRSxLQUFBNEIsRUF3QllDLEdBTEwyQixFQUFBLEtBQVcsR0FBQTtBQUFBLE1BbEJmLE9BQUtwRCxFQUFBO0FBQUE7UUFBb0NDLEVBQUFaLENBQUEsRUFBSSxRQUFRO0FBQUEsUUFBWVksRUFBQVosQ0FBQSxFQUFJLE1BQU07QUFBQSxRQUFjWSxFQUFBWixDQUFBLEVBQUksSUFBSTtBQUFBLFFBQVlZLEVBQUFaLENBQUEsRUFBSSxPQUFPLEtBQUs7QUFBQSxRQUFXWSxFQUFBWixDQUFBLEVBQUksT0FBTyxPQUFPO0FBQUEsUUFBWVksRUFBQVosQ0FBQSxFQUFJLE9BQU8sTUFBTTtBQUFBLFFBQWVZLEVBQUFaLENBQUEsRUFBSSxRQUFRLEVBQUU7QUFBQSxRQUFXWSxFQUFBWixDQUFBLEVBQUksUUFBUSxFQUFFO0FBQUEsUUFBWVksRUFBQVosQ0FBQSxFQUFJLEdBQUcsUUFBUTtBQUFBLFFBQWVZLEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUs7QUFBQSxRQUFjWSxFQUFBWixDQUFBLEVBQUksS0FBSyxNQUFNLFFBQVE7QUFBQSxRQUFlWSxFQUFBWixDQUFBLEVBQUksVUFBVSxLQUFLO0FBQUEsTUFBQTtNQWU1VyxNQUFNSyxFQUFNO0FBQUEsTUFDWixRQUFRQSxFQUFNLFdBQVdPLEVBQUFnRCxFQUFBLEVBQU8sUUFBUWhELEVBQUFnRCxFQUFBLEVBQU87QUFBQSxNQUMvQyxNQUFNdEQsRUFBQSxZQUFZTSxFQUFBb0MsQ0FBQSxFQUFRLFNBQVNwQyxFQUFBb0MsQ0FBQSxFQUFRLFNBQVM7QUFBQSxJQUFBO2tCQUdyRCxNQUFzQztBQUFBLFFBQXRDSixFQUFzQ0MsR0FBQTtBQUFBLFVBQTNCLE1BQU14QyxFQUFNO0FBQUEsUUFBQTtRQUV2QkssRUFBOEIsUUFBQSxNQUFBdUQsRUFBckI1RCxFQUFNLEtBQUssR0FBQSxDQUFBO0FBQUEsTUFBQTs7OztvRUNuRXRCRCxLQUFlLENBQUE7Ozs7Ozs7Ozs7O0FBYWYsVUFBTXdLLElBQVdwSSxpQkFBdUMsR0FFbERxSSxJQUFjLE1BQU07QUFDeEIsTUFBQUQsRUFBUyxRQUFRLENBQUNBLEVBQVM7QUFBQSxJQUM3QjsyQkFJQXBLLEVBeUJTLFVBQUE7QUFBQSxNQXhCTixPQUFLRyxFQUFBO0FBQUE7UUFBb0NpSyxFQUFBLG1CQUE4QmhLLEVBQUFaLENBQUEsRUFBSSxHQUFHLFdBQVdZLEVBQUFaLENBQUEsRUFBSSxLQUFLLE1BQU0sU0FBUyxJQUFhLENBQUFZLEVBQUFaLENBQUEsRUFBSSxHQUFHLFFBQVEsU0FBU1ksRUFBQVosQ0FBQSxFQUFJLEtBQUssTUFBTSxRQUFRLE9BQU87QUFBQSxRQUFTWSxFQUFBWixDQUFBLEVBQUksUUFBUTtBQUFBLFFBQVlZLEVBQUFaLENBQUEsRUFBSSxNQUFNO0FBQUEsUUFBY1ksRUFBQVosQ0FBQSxFQUFJLElBQUk7QUFBQSxRQUFZWSxFQUFBWixDQUFBLEVBQUksT0FBTyxLQUFLO0FBQUEsUUFBV1ksRUFBQVosQ0FBQSxFQUFJLE9BQU8sT0FBTztBQUFBLFFBQVlZLEVBQUFaLENBQUEsRUFBSSxRQUFRLEVBQUU7QUFBQSxRQUFXWSxFQUFBWixDQUFBLEVBQUksUUFBUSxFQUFFO0FBQUEsUUFBWVksRUFBQVosQ0FBQSxFQUFJLEtBQUssS0FBSztBQUFBLE1BQUE7TUFjM1gsU0FBTzZLO0FBQUEsTUFDUixNQUFLO0FBQUEsSUFBQTtNQUVML0gsRUFBUUMsRUFBQSxRQUFBLFdBQUEsQ0FBQSxHQUFBLFFBQUEsRUFBQTtBQUFBLE1BRVJyQyxFQUlNLE9BQUE7QUFBQSxRQUpBLE9BQUtDLEVBQUEsQ0FBR0MsS0FBSSxRQUFRLE1BQU1BLEVBQUFaLENBQUEsRUFBSSxNQUFNLFFBQVFZLEVBQUFaLENBQUEsRUFBSSxNQUFNLFFBQVFZLEVBQUFaLENBQUEsRUFBSSxJQUFJLElBQUksQ0FBQTtBQUFBLE1BQUE7UUFDOUVVLEVBRU8sUUFBQTtBQUFBLFVBRkEsT0FBS0MsRUFBQSxDQUFHQyxFQUFBWixDQUFBLEVBQUksS0FBSyxLQUFLLFNBQVNZLEVBQUFaLENBQUEsRUFBSSxnQkFBZ0IsR0FBRyxDQUFBO0FBQUEsUUFBQSxLQUN4RE0sRUFBQSxLQUFLLEdBQUEsQ0FBQTtBQUFBLE1BQUE7OztvRUMzQ2RGLEtBQWUsQ0FBQTs7Ozs7OztBQWFmLFVBQU1DLElBQVFDOzJCQUlkRSxFQW1CUyxVQUFBO0FBQUEsTUFsQk4sT0FBS0csRUFBQTtBQUFBO1FBQW1DQyxFQUFBWixDQUFBLEVBQUksR0FBRyxRQUFRO0FBQUEsUUFBZVksRUFBQVosQ0FBQSxFQUFJLEtBQUssTUFBTTtBQUFBLFFBQWVZLEVBQUFaLENBQUEsRUFBSSxRQUFRO0FBQUEsUUFBWVksRUFBQVosQ0FBQSxFQUFJLE1BQU07QUFBQSxRQUFjWSxFQUFBWixDQUFBLEVBQUksSUFBSTtBQUFBLFFBQVlZLEVBQUFaLENBQUEsRUFBSSxPQUFPLEtBQUs7QUFBQSxRQUFXWSxFQUFBWixDQUFBLEVBQUksT0FBTyxPQUFPO0FBQUEsUUFBWVksRUFBQVosQ0FBQSxFQUFJLFFBQVEsRUFBRTtBQUFBLFFBQVdZLEVBQUFaLENBQUEsRUFBSSxRQUFRLEVBQUU7QUFBQSxRQUFZWSxFQUFBWixDQUFBLEVBQUksS0FBSyxLQUFLO0FBQUEsTUFBQTtNQWFuUyxNQUFLO0FBQUEsSUFBQTtNQUVMVSxFQUE4QixRQUFBLE1BQUF1RCxFQUFyQjVELEVBQU0sS0FBSyxHQUFBLENBQUE7QUFBQSxNQUVwQnVDLEVBQStCQyxHQUFBO0FBQUEsUUFBcEIsTUFBTWpDLEVBQUF5QixDQUFBLEVBQUs7QUFBQSxNQUFBOzs7Z1FDbkN4QmpDLEtBQWUsQ0FBQTs7Ozs7OztBQVdmLFVBQU1DLElBQVFDO3NCQU1kQyxFQUFBLEdBQUFDLEVBc0JVLFdBdEJWQyxJQXNCVTtBQUFBLE1BckJSQyxFQUVLLE1BQUE7QUFBQSxRQUZBLFVBQVFFLEVBQUFaLENBQUEsRUFBSSxPQUFPLE9BQU8sSUFBSSxDQUFBO0FBQUEsTUFBQSxHQUM5QmlFLEVBQUE1RCxFQUFNLE9BQU8sR0FBQSxDQUFBO0FBQUEsTUFHbEJLLEVBZ0JLLE1BQUE7QUFBQSxRQWhCQSxPQUFLQyxFQUFBLENBQUdDLEtBQUksUUFBUSxNQUFNQSxFQUFBWixDQUFBLEVBQUksS0FBSyxNQUFNWSxFQUFBWixDQUFBLEVBQUksSUFBSSxLQUFLWSxFQUFBWixDQUFBLEVBQUksYUFBYSxHQUFHLENBQUE7QUFBQSxNQUFBO1FBQzdFVSxFQUVLLE1BRkw0RSxJQUVLO0FBQUEsVUFESHhDLEVBQXdCQyxFQUFBLFFBQUEsWUFBQSxDQUFBLEdBQUEsUUFBQSxFQUFBO0FBQUEsUUFBQTtRQUcxQnJDLEVBRUssTUFGTG9LLElBRUs7QUFBQSxVQURIaEksRUFBd0JDLEVBQUEsUUFBQSxZQUFBLENBQUEsR0FBQSxRQUFBLEVBQUE7QUFBQSxRQUFBO1FBRzFCckMsRUFFSyxNQUZMcUssSUFFSztBQUFBLFVBREhqSSxFQUF3QkMsRUFBQSxRQUFBLFlBQUEsQ0FBQSxHQUFBLFFBQUEsRUFBQTtBQUFBLFFBQUE7UUFHMUJyQyxFQUVLLE1BRkxzSyxJQUVLO0FBQUEsVUFESGxJLEVBQXdCQyxFQUFBLFFBQUEsWUFBQSxDQUFBLEdBQUEsUUFBQSxFQUFBO0FBQUEsUUFBQTs7OztvRUNsQzFCa0ksS0FBVyxPQUFPLFdBQVcsR0FFdEJDLEtBQWMsTUFBTTtBQUMvQixRQUFNQyxJQUFrQjFKLEVBQWEsRUFBSztBQUUxQyxTQUFBOEIsR0FBeUIwSCxJQUFVLEVBQUUsaUJBQUFFLEdBQWlCLEdBTS9DLEVBQUUsd0JBSnNCLE1BQU07QUFDbkMsSUFBQUEsRUFBZ0IsUUFBUTtBQUFBLEVBQzFCLEVBRVM7QUFDWCxHQUVhQyxLQUFpQixNQUNyQjNILEdBQXdCd0gsRUFBUSxHQ2pCdkM3SyxLQUFlLENBQUE7Ozs7O0FBU2YsVUFBTStELElBQU9DLEdBRVAsRUFBRSx3QkFBQWlILEVBQUEsSUFBMkJILEdBQUEsR0FFN0JJLElBQWUsQ0FBQ0MsTUFBbUI7QUFDdkMsTUFBQUYsRUFBQSxHQUNBbEgsRUFBSyxVQUFVb0gsQ0FBQztBQUFBLElBQ2xCOzJCQUlBL0ssRUFLTyxRQUFBO0FBQUEsTUFKSixhQUFnQjhLLEdBQVksQ0FBQSxTQUFBLENBQUE7QUFBQSxNQUM3QixZQUFBO0FBQUEsSUFBQTtNQUVBeEksRUFBUUMsRUFBQSxRQUFBLFNBQUE7QUFBQSxJQUFBOztJQzlCQ3lJLEtBQWE7QUFBQSxFQUN4QixTQUFTO0FBQUEsRUFDVCxPQUFPO0FBQUEsRUFDUCxZQUFZO0FBQ2QsaUdDRUVwTCxLQUFlLENBQUE7Ozs7Ozs7Ozs7Ozs7QUFtQ2YsVUFBTUMsSUFBUUMsR0FVUm1MLElBQVVoSyxFQUFBLEdBQ1ZpSyxJQUFNakssRUFBQSxHQUVOa0ssSUFBZSx5RUFFZkMsSUFBcUI5SCxFQUFpQixNQUFNO0FBQ2hELGNBQVF6RCxFQUFNLFdBQUE7QUFBQSxRQUNaLEtBQUttTCxHQUFXO0FBQ2QsaUJBQU94TCxFQUFJLE9BQU87QUFBQSxRQUNwQixLQUFLd0wsR0FBVztBQUNkLGlCQUFPeEwsRUFBSSxPQUFPO0FBQUEsUUFDcEIsS0FBS3dMLEdBQVc7QUFDZCxpQkFBT3hMLEVBQUksT0FBTztBQUFBLFFBQ3BCO0FBQ0UsaUJBQU93TCxHQUFXO0FBQUEsTUFBQTtBQUFBLElBRXhCLENBQUMsR0FFS0ssSUFBc0IsTUFBTTs7QUFDaEMsWUFBTUMsS0FBYXJILElBQUFpSCxFQUFJLFVBQUosZ0JBQUFqSCxFQUFXLFlBQ3hCc0gsTUFBVXRCLElBQUFnQixFQUFRLFVBQVIsZ0JBQUFoQixFQUFlLGlCQUFpQixjQUFhLENBQUE7QUFFN0QsVUFBS3FCLEdBRUw7QUFBQSxtQkFBV0UsS0FBVUQ7QUFHbkIsY0FGaUIsSUFBSSxJQUFJQyxFQUFPLFFBQVEsT0FBTyxTQUFTLElBQUksRUFBRSxTQUU3Q0YsR0FBWTtBQUMzQixZQUFBRSxFQUFPLE9BQUE7QUFDUDtBQUFBLFVBQ0Y7QUFFRixVQUFJQyxJQUFBUCxFQUFJLFVBQUosZ0JBQUFPLEVBQVcsYUFBYSxZQUFXTixNQUNyQ0QsRUFBSSxNQUFNLE1BQU1DO0FBQUE7QUFBQSxJQUVwQjsyQkFJQW5MLEVBNEJVLFdBQUE7QUFBQSxNQTNCUCxPQUFLRyxFQUFBLENBQUEsY0FBaUJDLEVBQUFaLENBQUEsRUFBSSxRQUFRLEtBQUssQ0FBQTtBQUFBLGVBQ3BDO0FBQUEsTUFBSixLQUFJeUw7QUFBQSxJQUFBO09BRUpsTCxFQUFBLEVBQUEsR0FBQUMsRUFLRTBFLEdBQUEsTUFBQWMsRUFEaUIzRixFQUFNLFVBQWhCMkwsWUFKVHhMLEVBS0UsVUFBQTtBQUFBLFFBSkMsS0FBS3dMLEVBQU87QUFBQSxRQUNaLE9BQUssY0FBZ0JBLEVBQU8sS0FBSztBQUFBLFFBQ2pDLFFBQVFBLEVBQU87QUFBQSxNQUFBO01BSWxCdEwsRUFnQkUsT0FBQTtBQUFBLFFBZkMsS0FBS0osRUFBQTtBQUFBLFFBQ0wsT0FBS0ssRUFBQTtBQUFBO1VBQXVDLENBQUFOLEVBQU0sU0FBU08sS0FBSSxNQUFNO0FBQUEsVUFBZSxDQUFBUCxFQUFNLFVBQVVPLEtBQUksT0FBTztBQUFBLFVBQWNBLEVBQUFaLENBQUEsRUFBSSxPQUFPO0FBQUEsVUFBZ0I0TCxFQUFBO0FBQUEsUUFBQTtRQU94SixlQUFldEwsRUFBQSxTQUFTLFNBQVM7QUFBQSxRQUNqQyxRQUFRRCxFQUFNO0FBQUEsUUFDZCxTQUFTQSxFQUFNLFNBQU0sU0FBQTtBQUFBLGlCQUNsQjtBQUFBLFFBQUosS0FBSXFMO0FBQUEsUUFDSCxLQUFLcEwsRUFBQSxPQUFPcUw7QUFBQSxRQUNaLE9BQU90TCxFQUFNO0FBQUEsUUFDYixTQUFPd0w7QUFBQSxNQUFBOzs7b0VDOUdaekwsS0FBZSxDQUFBOzs7Ozs7Ozs7O0FBd0JmLFVBQU1DLElBQVFDOzJCQVNkRSxFQXNCTSxPQUFBO0FBQUEsTUF0QkEsbUNBQWlDSSxFQUFBWixDQUFBLEVBQUksU0FBUyxVQUFVWSxFQUFBWixDQUFBLEVBQUksU0FBUyxHQUFHLFFBQVFZLEtBQUksVUFBVSxPQUFPLENBQUE7QUFBQSxJQUFBO01BQ3pHRixFQWtCTSxPQUFBO0FBQUEsUUFqQkgsT0FBS0MsRUFBQTtBQUFBLFVBQVlDLEVBQUFaLENBQUEsRUFBSSxTQUFTO0FBQUEsVUFBa0JZLEVBQUFaLENBQUEsRUFBSSxPQUFPO0FBQUEsVUFBY1ksRUFBQVosQ0FBQSxFQUFJLE1BQU07QUFBQSxVQUFjWSxFQUFBWixDQUFBLEVBQUksUUFBUTtBQUFBLFVBQWNZLEVBQUFaLENBQUEsRUFBSSxNQUFNO0FBQUEsVUFBZ0JZLEVBQUFaLENBQUEsRUFBSSxNQUFNO0FBQUEsUUFBQTs7UUFTaEs0QyxFQU9Fc0osSUFBQTtBQUFBLFVBTkMsS0FBSzdMLEVBQU07QUFBQSxVQUNYLE9BQUtNLEVBQUEsQ0FBR0MsRUFBQVosQ0FBQSxFQUFJLE1BQU0sTUFBTVksRUFBQVosQ0FBQSxFQUFJLE9BQU8sSUFBSSxDQUFBO0FBQUEsVUFDdkMsV0FBU0ssRUFBTTtBQUFBLFVBQ2YsY0FBWU8sRUFBQTRLLEVBQUEsRUFBVztBQUFBLFVBQ3ZCLFNBQVNuTCxFQUFNO0FBQUEsVUFDZixLQUFLQSxFQUFNO0FBQUEsUUFBQTs7TUFJaEJ5QyxFQUFRQyxFQUFBLFFBQUEsV0FBQSxDQUFBLEdBQUEsUUFBQSxFQUFBO0FBQUEsSUFBQTs7Ozs7R0N0RFYzQyxLQUFlLENBQUE7Ozs7Ozs7QUFXZixVQUFNQyxJQUFRQzsyQkFNZEUsRUFvQk0sT0FBQTtBQUFBLE1BbkJILE9BQUtHLEVBQUE7QUFBQTtRQUFrQ04sRUFBTSxRQUFLLEtBQUE7QUFBQSxRQUFxQk8sRUFBQVosQ0FBQSxFQUFJLFFBQVE7QUFBQSxRQUFvQlksRUFBQVosQ0FBQSxFQUFJLE1BQU0sRUFBRTtBQUFBLFFBQWNZLEVBQUFaLENBQUEsRUFBSSxHQUFHLE9BQU8sUUFBUTtBQUFBLFFBQWFZLEVBQUFaLENBQUEsRUFBSSxPQUFPLE9BQU87QUFBQSxRQUFZSyxFQUFNLFNBQVNBLEVBQU0sTUFBTSxTQUFBLEVBQVcsY0FBY08sRUFBQVosQ0FBQSxFQUFJLFFBQVEsRUFBRSxJQUFJLElBQUEsQ0FBQTtBQUFBLFFBQWNLLEVBQU0sU0FBaUJPLEVBQUFaLENBQUEsRUFBSSxTQUFTLFVBQVVZLEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUssU0FBU1ksS0FBSSxLQUFLLE1BQU0sUUFBUSxPQUFPLElBQWEsQ0FBQUEsRUFBQVosQ0FBQSxFQUFJLE9BQU8sS0FBSyxHQUFHO0FBQUEsTUFBQTs7TUFlbFpLLEVBQU0sU0FGZEUsRUFBQSxHQUFBQyxFQUtNLE9BTE5DLElBS013RCxFQURENUQsRUFBTSxLQUFLLEdBQUEsQ0FBQTs7O29FQ25DbEJELEtBQWUsQ0FBQTs7Ozs7Ozs7MkJBaUJmSSxFQW1CTSxPQUFBO0FBQUEsTUFsQkgsT0FBS0csRUFBQTtBQUFBLFFBQVVDLEVBQUFaLENBQUEsRUFBSSxRQUFRO0FBQUEsUUFBWVksRUFBQVosQ0FBQSxFQUFJLE1BQU07QUFBQSxRQUFjWSxFQUFBWixDQUFBLEVBQUksSUFBSTtBQUFBLFFBQWVZLEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUs7QUFBQSxRQUFlTSxFQUFBLFdBQVdNLEVBQUFaLENBQUEsRUFBSSxLQUFLLE1BQU0sT0FBTyxLQUFLLElBQUEsQ0FBS1ksRUFBQVosQ0FBQSxFQUFJLEtBQUssTUFBTSxRQUFRLE9BQU87QUFBQSxNQUFBOztNQVlyTE0sRUFBQSxnQkFKUjZCLEVBS0VVLEdBQUE7QUFBQTtRQUpDLFVBQVFqQyxFQUFBWixDQUFBLEVBQUksS0FBSyxPQUFPLEdBQUcsQ0FBQTtBQUFBLFFBQzNCLE1BQU1ZLEVBQUF5QixDQUFBLEVBQUs7QUFBQSxRQUNYLE1BQU16QixFQUFBRSxDQUFBLEVBQUs7QUFBQSxNQUFBO01BSWRKLEVBRU0sZUFEREosRUFBQSxPQUFPLEdBQUEsQ0FBQTtBQUFBLElBQUE7O0lDbkNINkwsS0FBc0IsOEJBRXRCQyxLQUFvQjtBQUFBLEVBQy9CLFVBQVU7QUFBQSxJQUNSLFNBQVM7QUFBQSxJQUNULE9BQU87QUFBQSxFQUFBO0FBQUEsRUFFVCxVQUFVO0FBQUEsSUFDUixTQUFTO0FBQUEsSUFDVCxPQUFPO0FBQUEsRUFBQTtBQUVYLEdBRWFDLEtBQWMsQ0FBQ0MsR0FBZ0JDLE1BQ25DLENBQUNDLE1BQW9DO0FBQzFDLE1BQUlDLElBQTJCTCxHQUFrQjtBQUVqRCxTQUFLSSxFQUFNLEtBQUEsRUFBTyxNQUFNRixDQUFNLE1BQzVCRyxJQUFTO0FBQUEsSUFDUCxTQUFTRixLQUFXSjtBQUFBQSxJQUNwQixPQUFPO0FBQUEsRUFBQSxJQUlKTTtBQUNULEdBR1dDLEtBQXdCLENBQUMsRUFBRSxXQUFBQyxHQUFXLFdBQUFDLEdBQVcsVUFBQUMsR0FBVSxPQUFBTCxRQUE4QjtBQUNwRyxRQUFNTSxJQUF1Qk4sRUFBTSxXQUFXLEtBQUssQ0FBQ0ssR0FDOUNFLElBQVlKLEtBQWFILEVBQU0sU0FBU0c7QUFFOUMsU0FBTyxFQURZLENBQUNHLEtBQXdCRixLQUFhSixFQUFNLFNBQVNJLE1BQ2xELENBQUNHO0FBQ3pCLEdBRWFDLEtBQTJCLENBQUM7QUFBQSxFQUN2QyxnQkFBQUM7QUFBQSxFQUNBLFdBQUFOO0FBQUEsRUFDQSxXQUFBQztBQUFBLEVBQ0EsVUFBQUM7QUFBQSxFQUNBLFlBQUFLO0FBQUEsRUFDQSxPQUFBVjtBQUNGLE1BT3dCOztBQUV0QixNQUFJUyxNQUFtQjtBQUNyQixXQUFPO0FBQUEsTUFDTCxTQUFTQTtBQUFBLE1BQ1QsT0FBTztBQUFBLElBQUE7QUFJWCxNQUFJQyxHQUFZO0FBQ2QsVUFBTUMsSUFBYUMsR0FBaUJaLEVBQU0sU0FBUyxJQUFJVSxDQUFVO0FBRWpFLFFBQUksQ0FBQ0MsRUFBVztBQUNkLGFBQU9BO0FBQUEsRUFFWDtBQUdBLE1BQUlOLE9BQVlwSSxJQUFBK0gsRUFBTSxVQUFOLGdCQUFBL0gsRUFBYSxZQUFXO0FBQ3RDLFdBQU8ySCxHQUFrQjtBQUczQixNQUFJTyxLQUFhQyxHQUFXO0FBQzFCLFVBQU1TLElBQW1CQyxHQUFlO0FBQUEsTUFDdEMsV0FBQVg7QUFBQSxNQUNBLFdBQUFDO0FBQUEsTUFDQSxVQUFBQztBQUFBLE1BQ0EsT0FBT0wsRUFBTTtBQUFBLElBQUEsQ0FDZDtBQUVELFFBQUksQ0FBQ2EsRUFBaUI7QUFDcEIsYUFBT0E7QUFBQSxFQUVYO0FBQ0EsU0FBT2pCLEdBQWtCO0FBQzNCLEdBRWFrQixLQUFpQixDQUFDLEVBQUUsV0FBQVgsR0FBVyxXQUFBQyxHQUFXLFVBQUFDLEdBQVUsT0FBQUwsUUFBZ0Q7QUFDL0csUUFBTWUsSUFBVztBQUFBLElBQ2YsU0FBUztBQUFBLElBQ1QsT0FBTztBQUFBLEVBQUE7QUFVVCxTQVBBQSxFQUFTLFFBQVFiLEdBQXNCO0FBQUEsSUFDckMsV0FBQUM7QUFBQSxJQUNBLFdBQUFDO0FBQUEsSUFDQSxVQUFBQztBQUFBLElBQ0EsT0FBQUw7QUFBQSxFQUFBLENBQ0QsR0FFR2UsRUFBUyxVQUViQSxFQUFTLFVBQVVwQixJQUVmUSxLQUFhQyxJQUNmVyxFQUFTLFVBQVUseUJBQXlCdk0sR0FBYTRMLENBQVMsQ0FBQyxRQUFRNUwsR0FBYTJMLENBQVMsQ0FBQyxnQkFDekZBLElBQ1RZLEVBQVMsVUFBVSxPQUFPdk0sR0FBYTJMLENBQVMsQ0FBQyx5QkFDeENDLE1BQ1RXLEVBQVMsVUFBVSxrQkFBa0J2TSxHQUFhNEwsQ0FBUyxDQUFDLGlCQUd2RFc7QUFDVDtBQUVPLFNBQVNILEdBQWlCWixHQUFlVSxHQUF1RTtBQUNySCxhQUFXTSxLQUFhTixHQUFZO0FBQ2xDLFVBQU1DLElBQWFLLEVBQVVoQixDQUFLO0FBQ2xDLFFBQUksQ0FBQ1csRUFBVztBQUNkLGFBQU9BO0FBQUEsRUFFWDtBQUVBLFNBQU87QUFBQSxJQUNMLFNBQVM7QUFBQSxJQUNULE9BQU87QUFBQSxFQUFBO0FBRVg7a0RDN0hFL00sS0FBZSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEyQ2YsVUFBTUMsSUFBUUMsR0FjUjZELElBQU9DLEdBRVBxSixJQUFhakwsaUJBQXVDLEdBRXBEa0wsSUFBY3RDLEdBQUEsR0FFZHVDLElBQWVsTSxFQUFhLEVBQUssR0FDakNtTSxJQUFXbk0sRUFBc0IySyxHQUFrQixRQUFRLEdBRTNEeUIsSUFBaUIvSixFQUFTLE1BQU96RCxFQUFNLFdBQVcsR0FBR0EsRUFBTSxLQUFLLE9BQU9BLEVBQU0sS0FBTSxHQUNuRnlOLElBQVloSyxFQUFTLE1BQU0ySixFQUFXLFNBQVNwTixFQUFNLGFBQWEsR0FDbEUwTixJQUFZakssRUFBUyxNQUNyQmtLLEVBQWlCLFFBQWMsS0FDOUJMLEVBQWEsUUFDWCxDQUFDQyxFQUFTLE1BQU0sUUFEUyxFQUVqQyxHQUNLSSxJQUFtQmxLLEVBQVMsTUFBTXpELEVBQU0sVUFBVSxFQUFFLEdBQ3BENE4sSUFBd0JuSyxFQUFTLE1BQU1pSyxFQUFVLFNBQVNILEVBQVMsTUFBTSxPQUFPLEdBRWhGTSxJQUE4QixNQUM5QjdOLEVBQU0sVUFBVSxLQUNYO0FBQUEsTUFDTCxTQUFTQSxFQUFNO0FBQUEsTUFDZixPQUFPO0FBQUEsSUFBQSxJQUVQLENBQUNBLEVBQU0sWUFBWXlOLEVBQVUsUUFBYzFCLEdBQWtCLFdBQzFEQSxHQUFrQjtBQUczQixXQUFBK0IsR0FBWSxNQUFNO0FBQ2hCLE1BQUFQLEVBQVMsUUFBUU0sRUFBQTtBQUFBLElBQ25CLENBQUMsR0FFRHhNO0FBQUEsTUFDRStMO0FBQUEsTUFDQSxNQUFNO0FBQ0osUUFBSUEsRUFBVyxVQUFPRSxFQUFhLFFBQVE7QUFBQSxNQUM3QztBQUFBLE1BQ0EsRUFBRSxXQUFXLEdBQUE7QUFBQSxJQUFLLEdBR3BCak07QUFBQSxNQUNFLE1BQU1nTSxLQUFBLGdCQUFBQSxFQUFhLGdCQUFnQjtBQUFBLE1BQ25DLENBQUNoTCxNQUFhO0FBQ1osUUFBSUEsUUFBdUIsUUFBUTtBQUFBLE1BQ3JDO0FBQUEsTUFDQSxFQUFFLFdBQVcsR0FBQTtBQUFBLElBQUssR0FHcEJoQjtBQUFBLE1BQ0VrTTtBQUFBLE1BQ0EsTUFBTTtBQUNKLFFBQUF6SixFQUFLLFNBQVN5SixFQUFTLE1BQU0sS0FBSztBQUFBLE1BQ3BDO0FBQUEsTUFDQSxFQUFFLE1BQU0sSUFBTSxXQUFXLEdBQUE7QUFBQSxJQUFLLG1CQUtoQ3BOLEVBc0VNLE9BQUE7QUFBQSxNQXRFQSxpQ0FBK0JJLEVBQUFaLENBQUEsRUFBSSxRQUFRLE1BQU1ZLEVBQUFaLENBQUEsRUFBSSxLQUFLLFVBQVUsUUFBUVksS0FBSSxJQUFJLE9BQU8sQ0FBQTtBQUFBLElBQUE7TUFDL0ZGLEVBOERRLFNBQUE7QUFBQSxRQTdETCxPQUFLQyxFQUFBO0FBQUEsVUFBWUMsRUFBQVosQ0FBQSxFQUFJLE1BQU07QUFBQSxVQUFnQlksRUFBQVosQ0FBQSxFQUFJLFFBQVE7QUFBQSxVQUFjWSxFQUFBWixDQUFBLEVBQUksS0FBSyxLQUFLO0FBQUEsVUFBZ0JZLEVBQUFaLENBQUEsRUFBSSxJQUFJO0FBQUEsVUFBY1ksRUFBQVosQ0FBQSxFQUFJLFlBQVk7QUFBQSxVQUFjK04sRUFBQSxRQUFZbk4sRUFBQVosQ0FBQSxFQUFJLEtBQUssTUFBTSxPQUFPLFFBQVFZLEVBQUFaLENBQUEsRUFBSSxLQUFLLE1BQU0sUUFBUTtBQUFBLFVBQWlCTSxFQUFBLFlBQVlNLEVBQUFaLENBQUEsRUFBSSxRQUFRLFVBQVVZLEVBQUFaLENBQUEsRUFBSSxPQUFPLFdBQVcsSUFBQSxDQUFLWSxLQUFJLE9BQU8sT0FBTztBQUFBLFFBQUE7O1dBVXpURixFQVNFLFNBQUE7QUFBQSxVQVJDLFNBQVNvTixFQUFBO0FBQUEsVUFDVCxTQUFPLENBQUEseUJBQUEsQ0FBMkI7QUFBQSxVQUNsQyxVQUFVeE4sRUFBQTtBQUFBLFVBQ1YsTUFBTUEsRUFBQTtBQUFBLFVBQ1AsS0FBSTtBQUFBLFVBQ0gsSUFBSUEsRUFBQTtBQUFBLFVBQ0wsTUFBSztBQUFBLHdEQUNJbU4sRUFBVSxRQUFBL0g7QUFBQSxRQUFBO2VBQVYrSCxFQUFBLEtBQVU7QUFBQSxRQUFBO1FBR3JCL00sRUF5Qk0sT0FBQTtBQUFBLFVBeEJILE9BQUtDLEVBQUE7QUFBQTtZQUFzREMsRUFBQVosQ0FBQSxFQUFJLE1BQU07QUFBQSxZQUFrQlksRUFBQVosQ0FBQSxFQUFJLE1BQU07QUFBQSxZQUFrQlksRUFBQVosQ0FBQSxFQUFJLE9BQU8sS0FBSztBQUFBLFlBQWVZLEVBQUFaLENBQUEsRUFBSSxPQUFPLE9BQU87QUFBQSxZQUFtQlksRUFBQVosQ0FBQSxFQUFJLFFBQVE7QUFBQSxZQUFnQlksRUFBQVosQ0FBQSxFQUFJLEtBQUssT0FBTztBQUFBLFlBQWVZLEVBQUFaLENBQUEsRUFBSSxTQUFTO0FBQUEsWUFBb0I4TixFQUFBLFNBQXlCQyxFQUFBLFFBQVluTixLQUFJLEdBQUcsT0FBTyxRQUFRLFFBQUssQ0FBSUEsS0FBSSxHQUFHLFdBQVdBLEVBQUFaLENBQUEsRUFBSSxPQUFPLE1BQU0sSUFBSSxDQUFBO2NBQW1DK04sRUFBQSxRQUErQixDQUFBbk4sRUFBQVosQ0FBQSxFQUFJLE9BQU8sTUFBTSxPQUFPLE9BQU9ZLEVBQUFaLENBQUEsRUFBSSxHQUFHLE9BQU8sUUFBUSxLQUFLLElBQXVCLENBQUFZLEVBQUFaLENBQUEsRUFBSSxPQUFPLE1BQU0sU0FBU1ksRUFBQVosQ0FBQSxFQUFJLEdBQUcsUUFBUSxPQUFPO0FBQUEsWUFBQTtBQUFBOztVQXNCMWpCOE4sRUFBQSxjQUpSM0wsRUFLRVUsR0FBQTtBQUFBO1lBSkMsVUFBUWpDLEVBQUFaLENBQUEsRUFBSSxLQUFLLE1BQU0sU0FBUyxDQUFBO0FBQUEsWUFDaEMsTUFBTU0sa0JBQWdCTSxFQUFBeUIsQ0FBQSxFQUFLLFNBQVN6QixFQUFBeUIsQ0FBQSxFQUFLO0FBQUEsWUFDekMsTUFBTXpCLEVBQUFFLENBQUEsRUFBSztBQUFBLFVBQUE7O1FBT1JSLEVBQUEsY0FGUkUsRUFZTSxPQUFBO0FBQUE7VUFYSCxPQUFLRyxFQUFBLENBQUdDLEVBQUFaLENBQUEsRUFBSSxNQUFNLFNBQVNZLEVBQUFaLENBQUEsRUFBSSxRQUFRLE1BQU1ZLEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUssSUFBSVksRUFBQVosQ0FBQSxFQUFJLEtBQUssS0FBSyxNQUFNLENBQUE7QUFBQSxRQUFBO1VBR3BGVSxFQUFpQyxnQkFBeEJtTixFQUFBLEtBQWMsR0FBQSxDQUFBO0FBQUEsVUFJZnZOLEVBQUEsZUFGUkUsRUFLTyxRQUFBO0FBQUE7WUFKSixPQUFLRyxFQUFBLENBQUdDLEtBQUksS0FBSyxNQUFNLFFBQVEsT0FBTyxDQUFBO0FBQUEsVUFBQSxHQUV4QyxPQUNFcUQsRUFBR3JELEVBQUFJLEVBQUEsRUFBYVYsRUFBQSxNQUFNLEtBQUksTUFDN0IsQ0FBQTs7O01BT0kyTixFQUFBLGNBSFI5TCxFQUlFaU0sSUFBQTtBQUFBO1FBSEMsU0FBU0gsRUFBQTtBQUFBLFFBQ1YsWUFBQTtBQUFBLE1BQUE7Ozs4SEN6TEo3TixLQUFlLENBQUE7Ozs7Ozs7Ozs7Ozs7QUFzQmYsVUFBTUMsSUFBUUMsR0FVUndOLElBQVloSyxFQUFTLE1BQU16RCxFQUFNLFdBQVdBLEVBQU0sYUFBYTsyQkFJckVHLEVBZ0VNLE9BQUE7QUFBQSxNQS9ESCxPQUFLRyxFQUFBO0FBQUE7UUFBdUNDLEVBQUFaLENBQUEsRUFBSSxRQUFRO0FBQUEsUUFBWVksRUFBQVosQ0FBQSxFQUFJLE1BQU07QUFBQSxRQUFjWSxFQUFBWixDQUFBLEVBQUksSUFBSTtBQUFBLFFBQVlZLEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUs7QUFBQSxRQUFjTSxFQUFBLFdBQVEsQ0FBQSxZQUFnQk0sRUFBQVosQ0FBQSxFQUFJLGVBQWUsR0FBRyxJQUFJWSxFQUFBWixDQUFBLEVBQUksT0FBTztBQUFBLE1BQUE7O01BUzFNVSxFQVNFLFNBQUE7QUFBQSxRQVJDLFNBQVNvTixFQUFBO0FBQUEsUUFDVCxPQUFLbk4sRUFBQSxDQUFHQyxFQUFBWixDQUFBLEVBQUksUUFBUSxJQUFJLENBQUE7QUFBQSxRQUN4QixVQUFVSyxFQUFNO0FBQUEsUUFDaEIsTUFBTUEsRUFBTTtBQUFBLFFBQ2IsS0FBSTtBQUFBLFFBQ0gsNEJBQUQsTUFBQTtBQUFBLFFBQUEsR0FBYyxDQUFBLFNBQUEsQ0FBQTtBQUFBLFFBQ2IsSUFBSUEsRUFBTTtBQUFBLFFBQ1gsTUFBSztBQUFBLE1BQUE7TUFHUEssRUFxQk0sT0FBQTtBQUFBLFFBcEJILE9BQUtDLEVBQUE7QUFBQTtVQUFrREMsRUFBQVosQ0FBQSxFQUFJLFNBQVM7QUFBQSxVQUFrQlksRUFBQVosQ0FBQSxFQUFJLFFBQVE7QUFBQSxVQUFjWSxFQUFBWixDQUFBLEVBQUksTUFBTTtBQUFBLFVBQWdCWSxFQUFBWixDQUFBLEVBQUksTUFBTTtBQUFBLFVBQWdCWSxFQUFBWixDQUFBLEVBQUksS0FBSyxPQUFPO0FBQUEsVUFBYVksRUFBQVosQ0FBQSxFQUFJLE9BQU8sS0FBSztBQUFBLFVBQWE4TixFQUFBLFFBQVMsQ0FBSWxOLEVBQUFaLENBQUEsRUFBSSxPQUFPLE1BQU0sTUFBTVksRUFBQVosQ0FBQSxFQUFJLEdBQUcsU0FBUyxJQUFBLENBQUtZLEVBQUFaLENBQUEsRUFBSSxPQUFPLE1BQU0sU0FBU1ksRUFBQVosQ0FBQSxFQUFJLEdBQUcsUUFBUSxPQUFPO0FBQUEsVUFBV1ksRUFBQVosQ0FBQSxFQUFJLE9BQU8sT0FBTztBQUFBLFVBQWlCOE4sRUFBQSxTQUFTO0FBQUEsVUFBdUJ4TixFQUFBLFdBQVdNLEVBQUFaLENBQUEsRUFBSSxPQUFPLGNBQWNZLEVBQUFaLENBQUEsRUFBSSxPQUFPO0FBQUEsUUFBQTs7UUFrQjdiOE4sRUFBQSxjQUpSM0wsRUFLRVUsR0FBQTtBQUFBO1VBSkMsVUFBUWpDLEVBQUFaLENBQUEsRUFBSSxLQUFLLE1BQU0sU0FBUyxDQUFBO0FBQUEsVUFDaEMsTUFBTUssRUFBTSxnQkFBZ0JPLEVBQUF5QixDQUFBLEVBQUssU0FBU3pCLEVBQUF5QixDQUFBLEVBQUs7QUFBQSxVQUMvQyxNQUFNekIsRUFBQUUsQ0FBQSxFQUFLO0FBQUEsUUFBQTs7TUFlUlIsRUFBQSxjQVZSRSxFQW1CUSxTQUFBO0FBQUE7UUFsQkwsT0FBS0csRUFBQTtBQUFBLFVBQVlDLEVBQUFaLENBQUEsRUFBSSxRQUFRO0FBQUEsVUFBY1ksRUFBQVosQ0FBQSxFQUFJLE1BQU07QUFBQSxVQUFpQlksRUFBQVosQ0FBQSxFQUFJLEtBQUssS0FBSztBQUFBLFVBQVlZLEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUs7QUFBQSxVQUFnQk0sRUFBQSxXQUFXTSxFQUFBWixDQUFBLEVBQUksT0FBTyxjQUFjWSxFQUFBWixDQUFBLEVBQUksT0FBTztBQUFBLFFBQUE7UUFPN0ssS0FBS0ssRUFBTTtBQUFBLFFBQ1gsNEJBQUQsTUFBQTtBQUFBLFFBQUEsR0FBYyxDQUFBLFNBQUEsQ0FBQTtBQUFBLE1BQUE7UUFHZEssRUFBd0IsZ0JBQWZKLEVBQUEsS0FBSyxHQUFBLENBQUE7QUFBQSxRQUdORCxFQUFNLGVBRmRHLEVBS08sUUFBQTtBQUFBO1VBSkosT0FBS0csRUFBQSxDQUFHQyxLQUFJLEtBQUssTUFBTSxRQUFRLE9BQU8sQ0FBQTtBQUFBLFFBQUEsR0FFeEMsU0FDS0EsRUFBQUksRUFBQSxFQUFhWCxFQUFNLE1BQU0sS0FBSSxNQUNuQyxDQUFBOzs7OzRIQ2hHSkQsS0FBZSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0FBNkJmLFVBQU1DLElBQVFDLEdBT1JtTixJQUFhakwsaUJBQXNDLEdBRW5Ec0wsSUFBWWhLLEVBQVMsTUFBTTJKLEVBQVcsVUFBVXBOLEVBQU0sS0FBSzsyQkFJakVHLEVBZ0RRLFNBQUE7QUFBQSxNQS9DTCxPQUFLRyxFQUFBO0FBQUE7UUFBb0NDLEVBQUFaLENBQUEsRUFBSSxRQUFRO0FBQUEsUUFBWVksRUFBQVosQ0FBQSxFQUFJLE1BQU07QUFBQSxRQUFjWSxFQUFBWixDQUFBLEVBQUksSUFBSTtBQUFBLFFBQVlZLEVBQUFaLENBQUEsRUFBSSxZQUFZO0FBQUEsUUFBWUssRUFBTSxXQUFRLENBQUlPLEtBQUksUUFBUSxVQUFVQSxLQUFJLE9BQU8sV0FBVyxJQUFBLENBQUtBLEtBQUksT0FBTyxPQUFPO0FBQUEsTUFBQTtNQVE5TixLQUFLUCxFQUFNO0FBQUEsSUFBQTtTQUVaSyxFQVFFLFNBQUE7QUFBQSxRQVBDLFNBQU8sQ0FBQSx5QkFBQSxDQUEyQjtBQUFBLFFBQ2xDLFVBQVVKLEVBQUE7QUFBQSxRQUNWLE1BQU1BLEVBQUE7QUFBQSxRQUNOLE9BQU9BLEVBQUE7QUFBQSxRQUNQLElBQUlELEVBQU07QUFBQSxRQUNYLE1BQUs7QUFBQSxzREFDSW9OLEVBQVUsUUFBQS9IO0FBQUEsTUFBQTthQUFWK0gsRUFBQSxLQUFVO0FBQUEsTUFBQTtNQUdyQi9NLEVBZ0JNLE9BQUE7QUFBQSxRQWZILE9BQUtDLEVBQUE7QUFBQTtVQUErQ0MsRUFBQVosQ0FBQSxFQUFJLFNBQVM7QUFBQSxVQUFrQlksRUFBQVosQ0FBQSxFQUFJLFFBQVE7QUFBQSxVQUFjWSxFQUFBWixDQUFBLEVBQUksTUFBTTtBQUFBLFVBQWdCWSxFQUFBWixDQUFBLEVBQUksTUFBTTtBQUFBLFVBQWdCWSxFQUFBWixDQUFBLEVBQUksT0FBTyxLQUFLO0FBQUEsVUFBYThOLEVBQUEsUUFBUyxDQUFJbE4sRUFBQVosQ0FBQSxFQUFJLE9BQU8sTUFBTSxJQUFJLElBQUEsQ0FBS1ksS0FBSSxPQUFPLE1BQU0sT0FBTztBQUFBLFVBQVdBLEVBQUFaLENBQUEsRUFBSSxPQUFPLE9BQU87QUFBQSxVQUFjWSxFQUFBWixDQUFBLEVBQUksR0FBRyxRQUFRO0FBQUEsVUFBaUJZLEVBQUFaLENBQUEsRUFBSSxPQUFPO0FBQUEsVUFBaUJZLEVBQUFaLENBQUEsRUFBSSxlQUFlO0FBQUEsUUFBQTs7UUFjeFhVLEVBQWtHLE9BQUE7QUFBQSxVQUE1RixPQUFLQyxFQUFBLENBQUEsMEJBQTZCQyxFQUFBWixDQUFBLEVBQUksT0FBTyxPQUFPLE1BQU04TixXQUFhbE4sRUFBQVosQ0FBQSxFQUFJLEdBQUcsU0FBUyxDQUFBO0FBQUEsUUFBQTs7TUFHL0ZVLEVBUU0sT0FBQTtBQUFBLFFBUkEsT0FBS0MsRUFBQSxDQUFHQyxFQUFBWixDQUFBLEVBQUksUUFBUSxNQUFNWSxFQUFBWixDQUFBLEVBQUksS0FBSyxLQUFLLElBQUlZLEVBQUFaLENBQUEsRUFBSSxNQUFNLFNBQVNZLEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUssTUFBTSxDQUFBO0FBQUEsTUFBQTtRQUN2RlUsRUFBd0IsZ0JBQWZKLEVBQUEsS0FBSyxHQUFBLENBQUE7QUFBQSxRQUdORCxFQUFNLGVBRmRHLEVBS08sUUFBQTtBQUFBO1VBSkosT0FBS0csRUFBQSxDQUFHQyxLQUFJLEtBQUssTUFBTSxRQUFRLE9BQU8sQ0FBQTtBQUFBLFFBQUEsR0FFeEMsU0FDS0EsRUFBQUksRUFBQSxFQUFhWCxFQUFNLE1BQU0sS0FBSSxNQUNuQyxDQUFBOzs7OzBHQzFGSkQsS0FBZSxDQUFBOzs7Ozs7Ozs7Ozs7QUFrQmYsVUFBTUMsSUFBUUMsR0FTUitOLElBQVU1TSxFQUFJcEIsRUFBTSxPQUFPO0FBRWpDLFdBQUFxQjtBQUFBLE1BQ0UsTUFBTXJCLEVBQU07QUFBQSxNQUNaLENBQUNxQyxHQUFVNEwsTUFBYTtBQUN0QixTQUFJNUwsTUFBYTRMLEtBQVk1TCxNQUFhMkwsRUFBUSxXQUNoREEsRUFBUSxRQUFRM0w7QUFBQSxNQUVwQjtBQUFBLElBQUEsbUJBS0ZsQyxFQXlETSxPQUFBO0FBQUEsTUF4REgsT0FBS0csRUFBQTtBQUFBO1FBQW9DQyxFQUFBWixDQUFBLEVBQUksUUFBUTtBQUFBLFFBQVlZLEVBQUFaLENBQUEsRUFBSSxNQUFNO0FBQUEsUUFBY1ksRUFBQVosQ0FBQSxFQUFJLElBQUk7QUFBQSxRQUFZWSxFQUFBWixDQUFBLEVBQUksZUFBZTtBQUFBLFFBQVdLLEVBQU0sWUFBUTtBQUFBLE1BQUE7O01BUzFKSyxFQU9FLFNBQUE7QUFBQSxRQU5DLFNBQVMyTixFQUFBO0FBQUEsUUFDVCxPQUFLMU4sRUFBQSxDQUFHQyxFQUFBWixDQUFBLEVBQUksUUFBUSxJQUFJLENBQUE7QUFBQSxRQUN4QixJQUFJSyxFQUFNO0FBQUEsUUFDWCxNQUFLO0FBQUEsUUFDTCxNQUFLO0FBQUEsUUFDTCxPQUFNO0FBQUEsTUFBQTtNQUdSSyxFQWlCTSxPQUFBO0FBQUEsUUFoQkgsT0FBS0MsRUFBQTtBQUFBO1VBQStDQyxFQUFBWixDQUFBLEVBQUksU0FBUztBQUFBLFVBQWtCWSxFQUFBWixDQUFBLEVBQUksUUFBUTtBQUFBLFVBQWNZLEVBQUFaLENBQUEsRUFBSSxNQUFNO0FBQUEsVUFBZ0JZLEVBQUFaLENBQUEsRUFBSSxNQUFNO0FBQUEsVUFBZ0JZLEVBQUFaLENBQUEsRUFBSSxPQUFPLEtBQUs7QUFBQSxVQUFhcU8sRUFBQSxRQUFVek4sRUFBQVosQ0FBQSxFQUFJLE9BQU8sTUFBTSxPQUFPWSxLQUFJLE9BQU8sTUFBTTtBQUFBLFVBQWlCQSxFQUFBWixDQUFBLEVBQUksT0FBTyxPQUFPO0FBQUEsVUFBY1ksRUFBQVosQ0FBQSxFQUFJLEdBQUcsUUFBUTtBQUFBLFVBQWlCWSxFQUFBWixDQUFBLEVBQUksT0FBTztBQUFBLFVBQWlCWSxFQUFBWixDQUFBLEVBQUksZUFBZTtBQUFBLFVBQVlxTyxFQUFBLFNBQU87QUFBQSxRQUFBOztRQWVyWTNOLEVBQXNHLE9BQUE7QUFBQSxVQUFoRyxvQ0FBa0NFLEVBQUFaLENBQUEsRUFBSSxPQUFPLE9BQU8sTUFBTUssRUFBTSxXQUFXTyxLQUFJLEdBQUcsU0FBUyxDQUFBO0FBQUEsUUFBQTs7TUFHbkdGLEVBa0JRLFNBQUE7QUFBQSxRQWpCTCxPQUFLQyxFQUFBO0FBQUEsVUFBWUMsRUFBQVosQ0FBQSxFQUFJLFFBQVE7QUFBQSxVQUFjWSxFQUFBWixDQUFBLEVBQUksS0FBSyxLQUFLO0FBQUEsVUFBWVksRUFBQVosQ0FBQSxFQUFJLE1BQU07QUFBQSxVQUFpQlksRUFBQVosQ0FBQSxFQUFJLEtBQUssS0FBSztBQUFBLFVBQWdCWSxFQUFBWixDQUFBLEVBQUksT0FBTztBQUFBLFVBQWlCWSxFQUFBWixDQUFBLEVBQUksZUFBZTtBQUFBLFFBQUE7UUFRN0ssS0FBS0ssRUFBTTtBQUFBLE1BQUE7UUFFWkssRUFBd0IsZ0JBQWZKLEVBQUEsS0FBSyxHQUFBLENBQUE7QUFBQSxRQUdORCxFQUFNLGVBRmRHLEVBS08sUUFBQTtBQUFBO1VBSkosT0FBS0csRUFBQSxDQUFHQyxLQUFJLEtBQUssTUFBTSxRQUFRLE9BQU8sQ0FBQTtBQUFBLFFBQUEsR0FFeEMsU0FDS0EsRUFBQUksRUFBQSxFQUFhWCxFQUFNLE1BQU0sS0FBSSxNQUNuQyxDQUFBOzs7O29FQzdGT2tPLEtBQVM7QUFBQSxFQUNwQixRQUFRdk47QUFBQSxFQUNSLE9BQU9NO0FBQUEsRUFDUCxPQUFPQztBQUNULEdBRWFpTixLQUFlO0FBQUEsRUFDMUIsT0FBTztBQUFBLEVBQ1Asb0JBQW9CO0FBQUEsRUFDcEIsWUFBWTtBQUFBLEVBQ1osT0FDRTtBQUFBLEVBQ0YsaUJBQWlCO0FBQUEsRUFDakIsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsS0FBSztBQUNQLEdDbkJhQyxLQUFZO0FBQUEsRUFDdkIsb0JBQW9CcEMsR0FBWW1DLEdBQWEsa0JBQWtCO0FBQUEsRUFDL0QsYUFBYW5DLEdBQVltQyxHQUFhLFVBQVU7QUFBQSxFQUNoRCxPQUFPbkMsR0FBWW1DLEdBQWEsT0FBTyxxREFBcUQ7QUFBQSxFQUM1RixRQUFRbkMsR0FBWW1DLEdBQWEsaUJBQWlCLHNCQUFzQjtBQUFBLEVBQ3hFLE9BQU9uQyxHQUFZbUMsR0FBYSxPQUFPLDRCQUE0QjtBQUFBLEVBQ25FLEtBQUtuQyxHQUFZbUMsR0FBYSxLQUFLLHdCQUF3QjtBQUM3RCxHQWlCYUUsS0FBZ0I7QUFBQSxFQUMzQixPQUFPO0FBQUEsRUFDUCxNQUFNO0FBQ1Isc0pDeEJFdE8sS0FBZSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxRGYsVUFBTUMsSUFBUUMsR0FtQlI2RCxJQUFPQyxHQUVQcUosSUFBYWpMLGlCQUFzQyxHQUVuRGtMLElBQWN0QyxHQUFBLEdBRWR3QyxJQUFXbk0sRUFBc0IySyxHQUFrQixRQUFRLEdBQzNEdUMsSUFBV2xOLEVBQWEsRUFBSyxHQUM3Qm1OLElBQVUvSSxHQUFBLEdBQ1Y4SCxJQUFlbE0sRUFBYSxFQUFLLEdBQ2pDb04sSUFBZ0JwTixFQUE4QixJQUFJLEdBRWxEb00sSUFBaUIvSixFQUFTLE1BQU96RCxFQUFNLFdBQVcsR0FBR0EsRUFBTSxLQUFLLE9BQU9BLEVBQU0sS0FBTSxHQUNuRjBOLElBQVlqSyxFQUFTLE1BQ3JCa0ssRUFBaUIsUUFBYyxLQUM5QkwsRUFBYSxRQUNYLENBQUNDLEVBQVMsTUFBTSxRQURTLEVBRWpDLEdBQ0tJLElBQW1CbEssRUFBUyxNQUFNekQsRUFBTSxVQUFVLEVBQUUsR0FDcER5TyxJQUFlaEwsRUFBUyxNQUFNNkssRUFBUyxTQUFTLENBQUNJLEVBQVEsS0FBSyxHQUM5REEsSUFBVWpMLEVBQVMsTUFBTTJKLEVBQVcsU0FBUyxRQUFRQSxFQUFXLFVBQVUsRUFBRSxHQUM1RVEsSUFBd0JuSyxFQUFTLE1BQU9pSyxFQUFVLFNBQVNILEVBQVMsTUFBTSxXQUFZdk4sRUFBTSxjQUFjLEdBRTFHMk8sSUFBZ0IsTUFBTTs7QUFDMUIsWUFBTTVHLElBQVEsSUFBSSxXQUFXLFdBQVc7QUFDeEMsT0FBQTNELElBQUFvSyxLQUFBLGdCQUFBQSxFQUFlLFVBQWYsUUFBQXBLLEVBQXNCLGNBQWMyRDtBQUFBLElBQ3RDLEdBRU02RyxJQUFjLE1BQU07QUFDeEIsTUFBQU4sRUFBUyxRQUFRLElBQ2J0TyxFQUFNLGlCQUFpQnFPLEdBQWMsWUFBb0IsUUFBUTtBQUFBLElBQ3ZFLEdBRU1RLElBQWlCLE1BQU07QUFDM0IsTUFBQVAsRUFBUyxRQUFRLElBQ2J0TyxFQUFNLGlCQUFpQnFPLEdBQWMsV0FBbUIsUUFBUTtBQUFBLElBQ3RFO0FBRUEsV0FBQVAsR0FBWSxNQUFNO0FBQ2hCLE1BQUFQLEVBQVMsUUFBUVosR0FBeUI7QUFBQSxRQUN4QyxnQkFBZ0IzTSxFQUFNO0FBQUEsUUFDdEIsVUFBVUEsRUFBTTtBQUFBLFFBQ2hCLE9BQU9vTjtBQUFBLE1BQUEsQ0FDUjtBQUFBLElBQ0gsQ0FBQyxHQUVEL0w7QUFBQSxNQUNFLE1BQU1nTSxLQUFBLGdCQUFBQSxFQUFhLGdCQUFnQjtBQUFBLE1BQ25DLENBQUNoTCxNQUFhO0FBQ1osUUFBSUEsUUFBdUIsUUFBUTtBQUFBLE1BQ3JDO0FBQUEsTUFDQSxFQUFFLFdBQVcsR0FBQTtBQUFBLElBQUssR0FHcEJoQjtBQUFBLE1BQ0VrTTtBQUFBLE1BQ0EsTUFBTTtBQUNKLFFBQUF6SixFQUFLLFNBQVN5SixFQUFTLE1BQU0sS0FBSztBQUFBLE1BQ3BDO0FBQUEsTUFDQSxFQUFFLE1BQU0sSUFBTSxXQUFXLEdBQUE7QUFBQSxJQUFLLG1CQUtoQ3BOLEVBd0lNLE9BQUE7QUFBQSxNQXZJSCxPQUFLRyxFQUFBO0FBQUE7UUFBcUNDLEVBQUFaLENBQUEsRUFBSSxRQUFRO0FBQUEsUUFBWVksRUFBQVosQ0FBQSxFQUFJLEtBQUssVUFBVTtBQUFBLFFBQWNZLEVBQUFaLENBQUEsRUFBSSxJQUFJO0FBQUEsUUFBZU0sRUFBQSxZQUFRO0FBQUEsUUFBc0J5TixFQUFBLFNBQVM7QUFBQSxNQUFBOztNQVNsS3JOLEVBdUhNLE9BQUE7QUFBQSxRQXRISCxPQUFLQyxFQUFBO0FBQUE7VUFBeUNDLEVBQUFaLENBQUEsRUFBSSxTQUFTO0FBQUEsVUFBa0JZLEVBQUFaLENBQUEsRUFBSSxRQUFRO0FBQUEsVUFBY1ksRUFBQVosQ0FBQSxFQUFJLE1BQU07QUFBQSxVQUFnQlksRUFBQVosQ0FBQSxFQUFJLElBQUk7QUFBQSxVQUFjWSxFQUFBWixDQUFBLEVBQUksT0FBTyxPQUFPO0FBQUEsVUFBY1ksRUFBQVosQ0FBQSxFQUFJLEdBQUcsUUFBUTtBQUFBLFVBQWlCTSxFQUFBLFdBQVdNLEVBQUFaLENBQUEsRUFBSSxPQUFPLGNBQVc7QUFBQSxVQUFlWSxFQUFBWixDQUFBLEVBQUksU0FBUyxHQUFHO0FBQUEsUUFBQTtRQVd2UixTQUFPZ1A7QUFBQSxNQUFBO1FBRVJ0TyxFQW1GTSxPQUFBO0FBQUEsVUFuRkEsVUFBUUUsRUFBQVosQ0FBQSxFQUFJLFFBQVEsTUFBTVksRUFBQVosQ0FBQSxFQUFJLEtBQUssVUFBVSxRQUFRWSxLQUFJLE1BQU0sSUFBSSxDQUFBO0FBQUEsUUFBQTtVQVkvRE4sRUFBQSxjQVhSRSxFQWNRLFNBQUE7QUFBQTtZQWJMLE9BQUtHLEVBQUE7QUFBQSxjQUFnQm1PLEVBQUEsUUFBWSxDQUFBLGFBQWlCbE8sRUFBQVosQ0FBQSxFQUFJLEtBQUssS0FBSyxPQUFPLElBQUlZLEtBQUksS0FBSyxLQUFLO0FBQUEsY0FBcUJBLEVBQUFaLENBQUEsRUFBSSxTQUFTO0FBQUEsY0FBc0JZLEVBQUFaLENBQUEsRUFBSSxZQUFZO0FBQUEsY0FBa0JZLEVBQUFaLENBQUEsRUFBSSxPQUFPLElBQUk7QUFBQSxjQUFrQlksRUFBQVosQ0FBQSxFQUFJLE9BQU8sS0FBSztBQUFBLGVBQWtCK04sRUFBQSxTQUFhbk4sS0FBSSxLQUFLLE1BQU0sUUFBUTtBQUFBLGNBQXFCQSxFQUFBWixDQUFBLEVBQUksZUFBZTtBQUFBLFlBQUE7WUFTbFUsS0FBS1ksRUFBQWdPLENBQUE7QUFBQSxVQUFBLEtBR0hmLEVBQUEsS0FBYyxHQUFBLElBQUFwTixFQUFBO1VBR25CQyxFQWlFTSxPQUFBO0FBQUEsWUFqRUEsT0FBS0MsRUFBQSxDQUFHQyxLQUFJLFFBQVEsTUFBTUEsRUFBQVosQ0FBQSxFQUFJLE1BQU0sUUFBUVksRUFBQVosQ0FBQSxFQUFJLE1BQU0sTUFBTVksRUFBQVosQ0FBQSxFQUFJLElBQUksSUFBSSxDQUFBO0FBQUEsVUFBQTtZQUdwRU0sRUFBQSxlQUZSRSxFQUtPLFFBQUE7QUFBQTtjQUpKLE9BQUtHLEVBQUEsQ0FBR0MsRUFBQVosQ0FBQSxFQUFJLEtBQUssS0FBSyxRQUFRWSxFQUFBWixDQUFBLEVBQUksT0FBTyxLQUFLLEtBQUtZLEVBQUFaLENBQUEsRUFBSSxlQUFlLEtBQUtNLEVBQUEsU0FBU00sRUFBQVosQ0FBQSxFQUFJLE9BQU8sSUFBSSxHQUFHLENBQUE7QUFBQSxZQUFBLEtBR3BHTSxFQUFBLE1BQU0sR0FBQSxDQUFBO2VBR1hJLEVBd0RTLFVBQUE7QUFBQSxjQXZETixPQUFLQyxFQUFBO0FBQUEsZ0JBQWtCQyxFQUFBWixDQUFBLEVBQUksUUFBUSxPQUFPO0FBQUEsZ0JBQW9CWSxFQUFBWixDQUFBLEVBQUksUUFBUSxJQUFJO0FBQUEsZ0JBQW1CWSxFQUFBWixDQUFBLEVBQUksUUFBUSxNQUFNO0FBQUEsZ0JBQW1CWSxFQUFBWixDQUFBLEVBQUksTUFBTTtBQUFBLGdCQUFvQlksRUFBQVosQ0FBQSxFQUFJLEtBQUssS0FBSztBQUFBLGdCQUFzQk0sRUFBQSxZQUFZTSxFQUFBWixDQUFBLEVBQUksT0FBTztBQUFBLGdCQUEyQk0sRUFBQSxTQUFTTSxFQUFBWixDQUFBLEVBQUksUUFBUSxLQUFLLE9BQU9ZLEtBQUksUUFBUSxLQUFLO0FBQUEsY0FBQTtjQVM1UyxVQUFVTixFQUFBO0FBQUEsY0FDVixNQUFNQSxFQUFBO0FBQUEsdUJBQ0g7QUFBQSxjQUFKLEtBQUl1TztBQUFBLGNBQ0gsVUFBVXZPLEVBQUE7QUFBQSxjQUNWLFNBQU8yTztBQUFBLGNBQ1AsWUFBVUM7QUFBQSxjQUNWLElBQUl0TyxFQUFBZ08sQ0FBQTtBQUFBLDREQUNJbkIsRUFBVSxRQUFBL0g7QUFBQSxZQUFBO3NCQUVuQmxGLEVBMEJXMEUsR0FBQSxNQUFBYyxFQTFCa0IxRixFQUFBLFdBQVMsQ0FBckI2TztnQkFLTkEsRUFBK0IsZ0JBSnhDM08sRUFjVyxZQUFBO0FBQUEsa0JBYlIsT0FBS0csRUFBQSxDQUFHQyxFQUFBWixDQUFBLEVBQUksTUFBTSxNQUFNWSxFQUFBWixDQUFBLEVBQUksR0FBRyxRQUFRLE9BQU8sQ0FBQTtBQUFBLGtCQUM5QyxLQUFHLFNBQVltUCxFQUErQixLQUFLO0FBQUEsa0JBQ25ELE9BQVFBLEVBQStCO0FBQUEsZ0JBQUE7bUJBR3hDNU8sRUFBQSxFQUFBLEdBQUFDLEVBT1MwRSxHQUFBLE1BQUFjLEVBSFdtSixFQUErQixVQUExQ0MsWUFKVDVPLEVBT1MsVUFBQTtBQUFBLG9CQU5OLE9BQUtHLEVBQUEsQ0FBR0MsRUFBQVosQ0FBQSxFQUFJLE1BQU0sTUFBTVksRUFBQVosQ0FBQSxFQUFJLEdBQUcsUUFBUSxPQUFPLENBQUE7QUFBQSxvQkFDOUMsS0FBS29QLEVBQU87QUFBQSxvQkFDWixPQUFPQSxFQUFPO0FBQUEsa0JBQUEsR0FHWm5MLEVBQUFtTCxFQUFPLEtBQUssR0FBQSxJQUFBckUsRUFBQTtvQ0FJbkJ2SyxFQVFTLFVBQUE7QUFBQSxrQkFQTixPQUFLRyxFQUFBLENBQUdDLEVBQUFaLENBQUEsRUFBSSxNQUFNLE1BQU1ZLEVBQUFaLENBQUEsRUFBSSxHQUFHLFFBQVEsT0FBTyxDQUFBO0FBQUEsa0JBQzlDLEtBQUcsVUFBYW1QLEVBQTBCLEtBQUs7QUFBQSxrQkFDL0MsVUFBVTFCLEVBQUEsVUFBZ0IwQixFQUEwQixhQUFlO0FBQUEsa0JBQ25FLE9BQVFBLEVBQTBCO0FBQUEsZ0JBQUEsR0FHL0JsTCxFQUFBa0wsRUFBMEIsS0FBSyxHQUFBLElBQUFuRSxFQUFBO0FBQUEsY0FBQTtzQkFJdkN4SyxFQVFTMEUsR0FBQSxNQUFBYyxFQUhVMUYsRUFBQSxTQUFPLENBQWpCOE8sWUFMVDVPLEVBUVMsVUFBQTtBQUFBLGdCQVBOLE9BQUtHLEVBQUEsQ0FBR0MsRUFBQVosQ0FBQSxFQUFJLE1BQU0sTUFBTVksRUFBQVosQ0FBQSxFQUFJLEdBQUcsUUFBUSxPQUFPLENBQUE7QUFBQSxnQkFDOUMsS0FBS29QLEVBQU87QUFBQSxnQkFDWixVQUFVM0IsRUFBQSxVQUFlMkIsRUFBTyxhQUFlO0FBQUEsZ0JBQy9DLE9BQU9BLEVBQU87QUFBQSxjQUFBLEdBR1puTCxFQUFBbUwsRUFBTyxLQUFLLEdBQUEsSUFBQUMsRUFBQTs7bUJBckNSNUIsRUFBQSxLQUFVO0FBQUEsWUFBQTs7O1FBbURqQm5OLEVBQUEsZUFUUkUsRUFjTSxPQUFBO0FBQUE7VUFiSCxPQUFLRyxFQUFBO0FBQUEsWUFBY0MsRUFBQVosQ0FBQSxFQUFJLFNBQVM7QUFBQSxZQUFvQlksRUFBQVosQ0FBQSxFQUFJLFlBQVk7QUFBQSxZQUFpQlksRUFBQVosQ0FBQSxFQUFJLEtBQUssS0FBSztBQUFBLFlBQWtCWSxFQUFBWixDQUFBLEVBQUksT0FBTyxNQUFNO0FBQUEsWUFBZVksRUFBQVosQ0FBQSxFQUFJLGVBQWU7QUFBQSxZQUFlTSxFQUFBLFNBQVNNLEVBQUFaLENBQUEsRUFBSSxPQUFPLElBQUk7QUFBQSxVQUFBOztVQVVoTlUsRUFFTyxRQUFBO0FBQUEsWUFGQSxTQUFPRSxFQUFBWixDQUFBLEVBQUksUUFBUSxNQUFNLEdBQUc7QUFBQSxVQUFBLEtBQzlCTSxFQUFBLE1BQU0sR0FBQSxDQUFBO0FBQUEsUUFBQTtRQUlic0MsRUFJRUMsR0FBQTtBQUFBLFVBSEMsT0FBS2xDLEVBQUEsQ0FBR0MsRUFBQVosQ0FBQSxFQUFJLFNBQVMsVUFBVVksRUFBQVosQ0FBQSxFQUFJLFlBQVksT0FBT1ksRUFBQVosQ0FBQSxFQUFJLE9BQU8sTUFBTSxLQUFLWSxFQUFBWixDQUFBLEVBQUksZUFBZSxHQUFHLENBQUE7QUFBQSxVQUNsRyxNQUFNWSxFQUFBeUIsQ0FBQSxFQUFLO0FBQUEsVUFDWCxNQUFNekIsRUFBQUUsQ0FBQSxFQUFLO0FBQUEsUUFBQTs7TUFPUm1OLEVBQUEsY0FIUjlMLEVBSUVpTSxJQUFBO0FBQUE7UUFIQyxZQUFVTCxFQUFBO0FBQUEsUUFDVixTQUFTRSxFQUFBO0FBQUEsTUFBQTs7O29FQ2pRSDlCLEtBQXNCLCtCQStCdEJtRCxLQUFrQixDQUFDckMsR0FBaUNzQyxNQUUzRCxPQUFPdEMsS0FBbUIsWUFBWUEsRUFBZSxTQUFTLElBQVVBLElBRXJFLE9BQU9zQyxLQUFpQixZQUFZQSxFQUFhLFNBQVMsSUFBSUEsSUFBZXBELElBTXpFcUQsS0FBbUIsQ0FBQ3ZDLEdBQWlDc0MsTUFDaEV0QyxNQUFtQixNQUFTc0MsTUFBaUIsSUFLbEM3QyxLQUF3QixDQUFDLEVBQUUsV0FBQUMsR0FBVyxXQUFBQyxHQUFXLFVBQUFDLEdBQVUsT0FBQUwsUUFBOEI7QUFDcEcsUUFBTU0sSUFBdUJOLEVBQU0sV0FBVyxLQUFLLENBQUNLLEdBQzlDRSxJQUFZSixLQUFhSCxFQUFNLFNBQVNHO0FBRzlDLFNBQU8sRUFGWSxDQUFDRyxLQUF3QkYsS0FBYUosRUFBTSxTQUFTSSxNQUVsRCxDQUFDRztBQUN6QixHQW1FYTBDLEtBQXdCLENBQUM7QUFBQSxFQUNwQyxPQUFBQztBQUFBLEVBQ0EsZ0JBQUF6QztBQUFBLEVBQ0EsV0FBQU47QUFBQSxFQUNBLFdBQUFDO0FBQUEsRUFDQSxVQUFBQyxJQUFXO0FBQUEsRUFDWCxZQUFBSztBQUFBLEVBQ0EsT0FBQVY7QUFDRixNQVFNO0FBS0osTUFGQWtELEVBQU0sUUFBUXpDLEtBQWtDLElBRTVDLENBQUN5QyxFQUFNLFNBQVN4QyxHQUFZO0FBQzlCLFVBQU1DLElBQWFDLElBQWlCWixLQUFBLGdCQUFBQSxFQUFPLFVBQVMsSUFBSVUsQ0FBVTtBQUVsRSxJQUFLQyxFQUFXLFVBQ2R1QyxFQUFNLFFBQVF2QyxFQUFXO0FBQUEsRUFFN0I7QUFFQSxNQUFJLENBQUN1QyxFQUFNLFVBQVUvQyxLQUFhQyxJQUFZO0FBQzVDLFVBQU1TLElBQW1CQyxHQUFlO0FBQUEsTUFDdEMsV0FBQVg7QUFBQSxNQUNBLFdBQUFDO0FBQUEsTUFDQSxVQUFBQztBQUFBLE1BQ0EsUUFBT0wsS0FBQSxnQkFBQUEsRUFBTyxVQUFTO0FBQUEsSUFBQSxDQUN4QjtBQUVELElBQUthLEVBQWlCLFVBQ3BCcUMsRUFBTSxRQUFRckMsRUFBaUI7QUFBQSxFQUVuQztBQUNGLEdBd0JhQyxLQUFpQixDQUFDO0FBQUEsRUFDN0IsV0FBQVg7QUFBQSxFQUNBLFdBQUFDO0FBQUEsRUFDQSxVQUFBQyxJQUFXO0FBQUEsRUFDWCxPQUFBTDtBQUNGLE1BQTBDO0FBQ3hDLFFBQU1lLElBQVc7QUFBQSxJQUNmLFNBQVM7QUFBQSxJQUNULE9BQU87QUFBQSxFQUFBO0FBVVQsU0FQQUEsRUFBUyxRQUFRYixHQUFzQjtBQUFBLElBQ3JDLFdBQUFDO0FBQUEsSUFDQSxXQUFBQztBQUFBLElBQ0EsVUFBQUM7QUFBQSxJQUNBLE9BQUFMO0FBQUEsRUFBQSxDQUNELEdBRUdlLEVBQVMsVUFFYkEsRUFBUyxVQUFVcEIsSUFFZlEsS0FBYUMsSUFDZlcsRUFBUyxVQUFVLGdDQUFnQ1gsQ0FBUyxRQUFRRCxDQUFTLDJCQUNwRUEsSUFDVFksRUFBUyxVQUFVLHFDQUFxQ1osQ0FBUywyQkFDeERDLE1BQ1RXLEVBQVMsVUFBVSxxQ0FBcUNYLENBQVMsNEJBRzVEVztBQUNUO0FBS08sU0FBU0gsR0FBaUJaLEdBQWVVLEdBQXVFO0FBQ3JILGFBQVdNLEtBQWFOLEdBQVk7QUFDbEMsVUFBTUMsSUFBYUssRUFBVWhCLENBQUs7QUFDbEMsUUFBSSxDQUFDVyxFQUFXO0FBQ2QsYUFBT0E7QUFBQSxFQUVYO0FBRUEsU0FBTztBQUFBLElBQ0wsU0FBUztBQUFBLElBQ1QsT0FBTztBQUFBLEVBQUE7QUFFWDt5SkN2UEUvTSxLQUFlLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQmYsVUFBTUMsSUFBUUMsR0FVUm9QLElBQVFqTyxFQUFJcEIsRUFBTSxLQUFLLEdBQ3ZCc08sSUFBV2xOLEVBQUksRUFBSyxHQUNwQlIsSUFBUVEsRUFBOEIsSUFBSSxHQUMxQ29MLElBQVdwTCxFQUFJcEIsRUFBTSxRQUFRLEdBQzdCbU0sSUFBUS9LLEVBQXdCcEIsRUFBTSxLQUFLLEdBRTNDc1AsSUFBZTdMLEVBQVMsTUFBTXdMLEdBQWdCalAsRUFBTSxPQUFPcVAsRUFBTSxLQUFLLENBQUMsR0FDdkU3QixJQUFpQi9KLEVBQVMsTUFBT3pELEVBQU0sV0FBVyxHQUFHQSxFQUFNLEtBQUssT0FBT0EsRUFBTSxLQUFNLEdBQ25GdVAsSUFBVzlMLEVBQVMsTUFBT3pELEVBQU0sWUFBWSxDQUFDbU0sRUFBTSxTQUFVZ0QsR0FBaUJFLEVBQU0sT0FBT3JQLEVBQU0sS0FBSyxDQUFDLEdBQ3hHeU8sSUFBZWhMLEVBQVMsTUFBTTZLLEVBQVMsU0FBUyxDQUFDSSxFQUFRLEtBQUssR0FDOURBLElBQVVqTCxFQUFTLE1BQU0wSSxFQUFNLFVBQVUsTUFBUyxHQUVsRHdDLElBQWdCLE1BQU07O0FBQzFCLFlBQU01RyxJQUFRLElBQUksV0FBVyxXQUFXO0FBQ3hDLE9BQUEzRCxJQUFBeEQsS0FBQSxnQkFBQUEsRUFBTyxVQUFQLFFBQUF3RCxFQUFjLGNBQWMyRDtBQUFBLElBQzlCLEdBRU02RyxJQUFjLE1BQU07QUFDeEIsTUFBQU4sRUFBUyxRQUFRO0FBQUEsSUFDbkIsR0FFTU8sSUFBaUIsTUFBTTtBQUMzQixNQUFBUCxFQUFTLFFBQVE7QUFBQSxJQUNuQjtBQUVBLFdBQUFqTjtBQUFBLE1BQ0UsTUFBTXJCLEVBQU07QUFBQSxNQUNaLENBQUNxQyxHQUFVNEwsTUFBYTtBQUN0QixTQUFJNUwsTUFBYTRMLEtBQVk1TCxNQUFhOEosRUFBTSxXQUM5Q0EsRUFBTSxRQUFROUo7QUFBQSxNQUVsQjtBQUFBLElBQUEsR0FHRm1OLEVBQWEsRUFBRSxPQUFBSCxHQUFPLE9BQUFsRCxHQUFPLG1CQUk3QmhNLEVBd0hNLE9BQUE7QUFBQSxNQXZISCxPQUFLRyxFQUFBO0FBQUE7UUFBcUNDLEVBQUFaLENBQUEsRUFBSSxRQUFRO0FBQUEsUUFBWVksRUFBQVosQ0FBQSxFQUFJLEtBQUssVUFBVTtBQUFBLFFBQWNZLEVBQUFaLENBQUEsRUFBSSxJQUFJO0FBQUEsUUFBZU0sRUFBQSxZQUFRO0FBQUEsUUFBc0JzUCxFQUFBLFNBQVE7QUFBQSxNQUFBOztNQVNqS2xQLEVBNkZNLE9BQUE7QUFBQSxRQTVGSCxPQUFLQyxFQUFBO0FBQUE7VUFBeUNDLEVBQUFaLENBQUEsRUFBSSxTQUFTO0FBQUEsVUFBa0JZLEVBQUFaLENBQUEsRUFBSSxRQUFRO0FBQUEsVUFBY1ksRUFBQVosQ0FBQSxFQUFJLE1BQU07QUFBQSxVQUFnQlksRUFBQVosQ0FBQSxFQUFJLElBQUk7QUFBQSxVQUFjWSxFQUFBWixDQUFBLEVBQUksT0FBTyxPQUFPO0FBQUEsVUFBY1ksRUFBQVosQ0FBQSxFQUFJLEdBQUcsUUFBUTtBQUFBLFVBQWlCSyxFQUFNLFdBQVdPLEtBQUksT0FBTyxjQUFXO0FBQUEsVUFBZUEsRUFBQVosQ0FBQSxFQUFJLFNBQVMsR0FBRztBQUFBLFFBQUE7UUFXN1IsU0FBT2dQO0FBQUEsTUFBQTtRQUVSdE8sRUF3RU0sT0FBQTtBQUFBLFVBeEVBLFVBQVFFLEVBQUFaLENBQUEsRUFBSSxRQUFRLE1BQU1ZLEVBQUFaLENBQUEsRUFBSSxLQUFLLFVBQVUsUUFBUVksS0FBSSxNQUFNLElBQUksQ0FBQTtBQUFBLFFBQUE7VUFZL0ROLEVBQUEsY0FYUkUsRUFjUSxTQUFBO0FBQUE7WUFiTCxPQUFLRyxFQUFBO0FBQUEsY0FBZ0JtTyxFQUFBLFFBQVksQ0FBQSxhQUFpQmxPLEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUssT0FBTyxJQUFJWSxLQUFJLEtBQUssS0FBSztBQUFBLGNBQXFCQSxFQUFBWixDQUFBLEVBQUksU0FBUztBQUFBLGNBQXNCWSxFQUFBWixDQUFBLEVBQUksWUFBWTtBQUFBLGNBQWtCWSxFQUFBWixDQUFBLEVBQUksT0FBTyxJQUFJO0FBQUEsY0FBa0JZLEVBQUFaLENBQUEsRUFBSSxPQUFPLEtBQUs7QUFBQSxlQUFrQjRQLEVBQUEsU0FBWWhQLEtBQUksS0FBSyxNQUFNLFFBQVE7QUFBQSxjQUFxQkEsRUFBQVosQ0FBQSxFQUFJLGVBQWU7QUFBQSxZQUFBO1lBU2pVLEtBQUtLLEVBQU07QUFBQSxVQUFBLEtBR1R3TixFQUFBLEtBQWMsR0FBQSxJQUFBcE4sRUFBQTthQUduQkMsRUFzRFMsVUFBQTtBQUFBLFlBckROLE9BQUtDLEVBQUE7QUFBQSxjQUFnQkMsRUFBQVosQ0FBQSxFQUFJLFFBQVEsT0FBTztBQUFBLGNBQWtCWSxFQUFBWixDQUFBLEVBQUksUUFBUSxFQUFFO0FBQUEsY0FBaUJZLEVBQUFaLENBQUEsRUFBSSxNQUFNO0FBQUEsY0FBa0JNLEVBQUEsWUFBWU0sRUFBQVosQ0FBQSxFQUFJLE9BQU87QUFBQSxjQUF5QlksRUFBQVosQ0FBQSxFQUFJLEtBQUssS0FBSztBQUFBLFlBQUE7WUFPbkwsVUFBVU0sRUFBQTtBQUFBLFlBQ1YsTUFBTUEsRUFBQTtBQUFBLHFCQUNIO0FBQUEsWUFBSixLQUFJVztBQUFBLFlBQ0gsVUFBVTRMLEVBQUE7QUFBQSxZQUNWLFNBQU9vQztBQUFBLFlBQ1AsWUFBVUM7QUFBQSxZQUNWLElBQUk3TyxFQUFNO0FBQUEsMERBQ0ZtTSxFQUFLLFFBQUE5RztBQUFBLFVBQUE7YUFFZG5GLEVBQUEsRUFBQSxHQUFBQyxFQTBCVzBFLEdBQUEsTUFBQWMsRUExQmtCM0YsRUFBTSxZQUFsQjhPO2NBS05BLEVBQStCLGdCQUp4QzNPLEVBY1csWUFBQTtBQUFBLGdCQWJSLE9BQUtHLEVBQUEsQ0FBR0MsRUFBQVosQ0FBQSxFQUFJLE1BQU0sTUFBTVksRUFBQVosQ0FBQSxFQUFJLEdBQUcsUUFBUSxPQUFPLENBQUE7QUFBQSxnQkFDOUMsS0FBTW1QLEVBQStCO0FBQUEsZ0JBQ3JDLE9BQVFBLEVBQStCO0FBQUEsY0FBQTtpQkFHeEM1TyxFQUFBLEVBQUEsR0FBQUMsRUFPUzBFLEdBQUEsTUFBQWMsRUFIV21KLEVBQStCLFVBQTFDQyxZQUpUNU8sRUFPUyxVQUFBO0FBQUEsa0JBTk4sT0FBS0csRUFBQSxDQUFHQyxFQUFBWixDQUFBLEVBQUksTUFBTSxNQUFNWSxFQUFBWixDQUFBLEVBQUksR0FBRyxRQUFRLE9BQU8sQ0FBQTtBQUFBLGtCQUM5QyxLQUFLb1AsRUFBTztBQUFBLGtCQUNaLE9BQU9BLEVBQU87QUFBQSxnQkFBQSxHQUdabkwsRUFBQW1MLEVBQU8sS0FBSyxHQUFBLElBQUFyRSxFQUFBO2tDQUluQnZLLEVBUVMsVUFBQTtBQUFBLGdCQVBOLE9BQUtHLEVBQUEsQ0FBR0MsRUFBQVosQ0FBQSxFQUFJLE1BQU0sTUFBTVksRUFBQVosQ0FBQSxFQUFJLEdBQUcsUUFBUSxPQUFPLENBQUE7QUFBQSxnQkFDOUMsS0FBTW1QLEVBQTBCO0FBQUEsZ0JBQ2hDLFVBQVUzQyxFQUFBLFVBQVcyQyxFQUEwQixhQUFlO0FBQUEsZ0JBQzlELE9BQVFBLEVBQTBCO0FBQUEsY0FBQSxHQUcvQmxMLEVBQUFrTCxFQUEwQixLQUFLLEdBQUEsSUFBQW5FLEVBQUE7QUFBQSxZQUFBO29CQUl2Q3hLLEVBUVMwRSxHQUFBLE1BQUFjLEVBSFUxRixFQUFBLFNBQU8sQ0FBakI4TyxZQUxUNU8sRUFRUyxVQUFBO0FBQUEsY0FQTixPQUFLRyxFQUFBLENBQUdDLEVBQUFaLENBQUEsRUFBSSxNQUFNLE1BQU1ZLEVBQUFaLENBQUEsRUFBSSxHQUFHLFFBQVEsT0FBTyxDQUFBO0FBQUEsY0FDOUMsS0FBS29QLEVBQU87QUFBQSxjQUNaLFVBQVU1QyxFQUFBLFVBQVU0QyxFQUFPLGFBQWU7QUFBQSxjQUMxQyxPQUFPQSxFQUFPO0FBQUEsWUFBQSxHQUdabkwsRUFBQW1MLEVBQU8sS0FBSyxHQUFBLElBQUFDLEVBQUE7O2lCQXJDUjdDLEVBQUEsS0FBSztBQUFBLFVBQUE7O1FBMENsQjVKLEVBSUVDLEdBQUE7QUFBQSxVQUhDLE9BQUtsQyxFQUFBLENBQUdDLEVBQUFaLENBQUEsRUFBSSxTQUFTLFVBQVVZLEVBQUFaLENBQUEsRUFBSSxZQUFZLE9BQU9ZLEVBQUFaLENBQUEsRUFBSSxPQUFPLE1BQU0sS0FBS1ksRUFBQVosQ0FBQSxFQUFJLGVBQWUsR0FBRyxDQUFBO0FBQUEsVUFDbEcsTUFBTVksRUFBQXlCLENBQUEsRUFBSztBQUFBLFVBQ1gsTUFBTXpCLEVBQUFFLENBQUEsRUFBSztBQUFBLFFBQUE7O01BTVJULEVBQU0sa0JBQWtCdVAsRUFBQSxjQUZoQ3BQLEVBY00sT0FBQTtBQUFBO1FBYkgsVUFBUUksRUFBQVosQ0FBQSxFQUFJLFFBQVEsTUFBTVksRUFBQVosQ0FBQSxFQUFJLE1BQU0sUUFBUVksS0FBSSxJQUFJLE9BQU8sQ0FBQTtBQUFBLE1BQUE7UUFPcERnUCxFQUFBLGNBSlJ6TixFQUtFVSxHQUFBO0FBQUE7VUFKQyxTQUFPLEVBQUU7QUFBQSxVQUNULE1BQU1qQyxFQUFBeUIsQ0FBQSxFQUFLO0FBQUEsVUFDWCxNQUFNekIsRUFBQUUsQ0FBQSxFQUFLO0FBQUEsUUFBQTtRQUlkSixFQUVNLE9BQUE7QUFBQSxVQUZBLFVBQVFFLEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUssT0FBTyxDQUFBO0FBQUEsUUFBQSxHQUM5QmlFLEVBQUEyTCxFQUFBLFFBQVdELEVBQUEsUUFBZXRQLEVBQU0sY0FBYyxHQUFBLENBQUE7QUFBQSxNQUFBOzs7b0VDN0w1Q3lQLElBQWtCO0FBQUEsRUFDN0IsTUFBTTtBQUFBLEVBQ04sZ0JBQWdCO0FBQUEsRUFDaEIsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsUUFBUTtBQUFBLEVBQ1IsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsS0FBSztBQUFBLEVBQ0wsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sS0FBSztBQUFBLEVBQ0wsTUFBTTtBQUNSLEdBSWFDLEtBQWE7QUFBQSxFQUN4QixTQUFTO0FBQUEsRUFDVCxPQUFPO0FBQUEsRUFDUCxTQUFTO0FBQUEsRUFDVCxRQUFRO0FBQUEsRUFDUixLQUFLO0FBQUEsRUFDTCxNQUFNO0FBQUEsRUFDTixLQUFLO0FBQ1AsR0NyQmFDLEtBQW1CLENBQUNDLEdBQXFCQyxNQUFpRDtBQUNyRyxNQUFJQSxFQUFXLFFBQU9BO0FBRXRCLFVBQVFELEdBQUE7QUFBQSxJQUNOLEtBQUtILEVBQWdCO0FBQ25CLGFBQU9DLEdBQVc7QUFBQSxJQUNwQixLQUFLRCxFQUFnQjtBQUNuQixhQUFPQyxHQUFXO0FBQUEsSUFDcEIsS0FBS0QsRUFBZ0I7QUFDbkIsYUFBT0MsR0FBVztBQUFBLElBQ3BCLEtBQUtELEVBQWdCO0FBQ25CLGFBQU9DLEdBQVc7QUFBQSxJQUNwQixLQUFLRCxFQUFnQjtBQUNuQixhQUFPQyxHQUFXO0FBQUEsRUFBQTtBQUl4Qiw2SENmRTNQLEtBQWUsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpRmYsVUFBTUMsSUFBUUMsR0F5QlI2RCxJQUFPQyxHQUVQcUosSUFBYWpMLGlCQUFzQyxHQUVuRGtMLElBQWN0QyxHQUFBLEdBRWR3QyxJQUFXbk0sRUFBc0IySyxHQUFrQixRQUFRLEdBQzNEdUMsSUFBV2xOLEVBQWEsRUFBSyxHQUM3QjBPLElBQWUxTyxFQUE2QixJQUFJLEdBQ2hEa00sSUFBZWxNLEVBQWEsRUFBSyxHQUNqQzJPLElBQWUzTyxFQUFhLEVBQUssR0FFakNvTSxJQUFpQi9KLEVBQVMsTUFBT3pELEVBQU0sWUFBWUEsRUFBTSxRQUFRLEdBQUdBLEVBQU0sS0FBSyxPQUFPQSxFQUFNLEtBQU0sR0FDbEcwTixJQUFZakssRUFBUyxNQUNyQmtLLEVBQWlCLFFBQWMsS0FDOUJMLEVBQWEsUUFDWCxDQUFDQyxFQUFTLE1BQU0sUUFEUyxFQUVqQyxHQUNLSSxJQUFtQmxLLEVBQVMsTUFBTXpELEVBQU0sVUFBVSxFQUFFLEdBQ3BEeU8sSUFBZWhMLEVBQVMsTUFBTTZLLEVBQVMsU0FBUyxDQUFDSSxFQUFRLEtBQUssR0FDOURzQixJQUFxQnZNLEVBQWdDLE1BQU1rTSxHQUFpQjNQLEVBQU0sTUFBTUEsRUFBTSxTQUFTLENBQUMsR0FDeEdpUSxJQUFZeE07QUFBQSxNQUFTLE1BQ3pCekQsRUFBTSxTQUFTeVAsRUFBZ0IsWUFBWU0sRUFBYSxVQUFVLEtBQU9OLEVBQWdCLE9BQU96UCxFQUFNO0FBQUEsSUFBQSxHQUVsRzBPLElBQVVqTCxFQUFTLE1BQU0ySixFQUFXLFNBQVMsUUFBUUEsRUFBVyxVQUFVLEVBQUUsR0FDNUU4QyxJQUF3QnpNO0FBQUEsTUFDNUIsTUFBTXpELEVBQU0sWUFBWW9OLEVBQVcsU0FBU3BOLEVBQU0sU0FBU3lQLEVBQWdCO0FBQUEsSUFBQSxHQUV2RVUsSUFBMkIxTSxFQUFTLE1BQU16RCxFQUFNLFNBQVN5UCxFQUFnQixRQUFRLEdBQ2pGN0IsSUFBd0JuSyxFQUFTLE1BQU9pSyxFQUFVLFNBQVNILEVBQVMsTUFBTSxXQUFZdk4sRUFBTSxjQUFjLEdBRTFHb1EsSUFBYyxNQUFNOztBQUN4QixNQUFBaEQsRUFBVyxRQUFRLEtBQ25CaEosSUFBQTBMLEVBQWEsVUFBYixRQUFBMUwsRUFBb0I7QUFBQSxJQUN0QixHQUVNd0ssSUFBYyxNQUFNO0FBQ3hCLE1BQUFOLEVBQVMsUUFBUSxJQUNidE8sRUFBTSxpQkFBaUJxTyxHQUFjLFlBQW9CLFFBQVE7QUFBQSxJQUN2RSxHQUVNUSxJQUFpQixNQUFNO0FBQzNCLE1BQUFQLEVBQVMsUUFBUSxJQUNidE8sRUFBTSxpQkFBaUJxTyxHQUFjLFdBQW1CLFFBQVE7QUFBQSxJQUN0RSxHQUVNZ0MsS0FBbUIsTUFBTTs7QUFDN0IsT0FBQWpNLElBQUEwTCxFQUFhLFVBQWIsUUFBQTFMLEVBQW9CO0FBQUEsSUFDdEIsR0FFTWtNLEtBQW1DLENBQUNwRixNQUFrQjtBQUMxRCxNQUFLb0QsRUFBUyxTQUNWcEQsRUFBRSxXQUFXNEUsRUFBYSxXQUFTLGVBQUE7QUFBQSxJQUN6QztBQUVBLFdBQUFoQyxHQUFZLE1BQU07QUFDaEIsTUFBQVAsRUFBUyxRQUFRWixHQUF5QjtBQUFBLFFBQ3hDLGdCQUFnQjNNLEVBQU07QUFBQSxRQUN0QixXQUFXQSxFQUFNO0FBQUEsUUFDakIsV0FBV0EsRUFBTTtBQUFBLFFBQ2pCLFVBQVVBLEVBQU07QUFBQSxRQUNoQixZQUFZQSxFQUFNO0FBQUEsUUFDbEIsT0FBT29OO0FBQUEsTUFBQSxDQUNSO0FBQUEsSUFDSCxDQUFDLEdBRUQvTDtBQUFBLE1BQ0UsQ0FBQytMLEdBQVksTUFBTXBOLEVBQU0sY0FBYztBQUFBLE1BQ3ZDLE1BQU07O0FBQ0osWUFBSSxDQUFDQSxFQUFNLGVBQWdCO0FBRTNCLGNBQU1jLE1BQVNzSixNQUFBaEcsSUFBQWdKLEVBQVcsVUFBWCxnQkFBQWhKLEVBQWtCLE1BQU0sV0FBeEIsZ0JBQUFnRyxHQUFnQyxLQUFLLFFBQU87QUFDM0QsUUFBQWdELEVBQVcsUUFBUXRNLElBQVNkLEVBQU0sZUFBZWMsQ0FBTSxJQUFJO0FBQUEsTUFDN0Q7QUFBQSxNQUNBLEVBQUUsV0FBVyxHQUFBO0FBQUEsSUFBSyxHQUdwQk87QUFBQSxNQUNFLE1BQU1nTSxLQUFBLGdCQUFBQSxFQUFhLGdCQUFnQjtBQUFBLE1BQ25DLENBQUNoTCxNQUFhO0FBQ1osUUFBSUEsUUFBdUIsUUFBUTtBQUFBLE1BQ3JDO0FBQUEsTUFDQSxFQUFFLFdBQVcsR0FBQTtBQUFBLElBQUssR0FHcEJoQjtBQUFBLE1BQ0VrTTtBQUFBLE1BQ0EsTUFBTTtBQUNKLFFBQUF6SixFQUFLLFNBQVN5SixFQUFTLE1BQU0sS0FBSztBQUFBLE1BQ3BDO0FBQUEsTUFDQSxFQUFFLE1BQU0sSUFBTSxXQUFXLEdBQUE7QUFBQSxJQUFLLG1CQUtoQ3BOLEVBMEhNLE9BQUE7QUFBQSxNQXpISCxPQUFLRyxFQUFBO0FBQUE7UUFBbUNDLEVBQUFaLENBQUEsRUFBSSxRQUFRO0FBQUEsUUFBWVksRUFBQVosQ0FBQSxFQUFJLEtBQUssVUFBVTtBQUFBLFFBQWNZLEVBQUFaLENBQUEsRUFBSSxJQUFJO0FBQUEsUUFBZU0sRUFBQSxZQUFRO0FBQUEsUUFBc0J5TixFQUFBLFNBQVM7QUFBQSxNQUFBOztNQVNoS3JOLEVBeUdRLFNBQUE7QUFBQSxRQXhHTCxPQUFLQyxFQUFBO0FBQUE7VUFBNkNDLEVBQUFaLENBQUEsRUFBSSxRQUFRO0FBQUEsVUFBY1ksRUFBQVosQ0FBQSxFQUFJLE1BQU07QUFBQSxVQUFnQlksRUFBQVosQ0FBQSxFQUFJLElBQUk7QUFBQSxVQUFjWSxFQUFBWixDQUFBLEVBQUksU0FBUztBQUFBLFVBQWtCWSxFQUFBWixDQUFBLEVBQUksT0FBTyxPQUFPO0FBQUEsVUFBY1ksRUFBQVosQ0FBQSxFQUFJLEdBQUcsUUFBUTtBQUFBLFVBQWlCWSxFQUFBWixDQUFBLEVBQUksUUFBUSxFQUFFO0FBQUEsVUFBY3VRLEVBQUEsUUFBcUIsQ0FBSTNQLEtBQUksUUFBUSxNQUFNLE1BQU1BLEVBQUFaLENBQUEsRUFBSSxRQUFRLEtBQUssR0FBRyxJQUFBLENBQUtZLEVBQUFaLENBQUEsRUFBSSxRQUFRLEVBQUUsR0FBRztBQUFBLFVBQVdNLEVBQUEsV0FBV00sRUFBQVosQ0FBQSxFQUFJLE9BQU8sY0FBY1ksRUFBQVosQ0FBQSxFQUFJLE9BQU87QUFBQSxRQUFBO1FBWTVZLEtBQUtNLEVBQUE7QUFBQSxRQUNMLFNBQU9vUTtBQUFBLFFBQ1AsYUFBV0M7QUFBQSxNQUFBO1FBTUpyUSxFQUFBLG9CQUpSNkIsRUFLRVUsR0FBQTtBQUFBO1VBSkMsT0FBS2xDLEVBQUEsQ0FBR0MsS0FBSSxLQUFLLE1BQU0sUUFBUSxPQUFPLENBQUE7QUFBQSxVQUN0QyxNQUFNTixFQUFBO0FBQUEsVUFDTixNQUFNTSxFQUFBRSxDQUFBLEVBQUs7QUFBQSxRQUFBO1FBSWRKLEVBd0RNLE9BQUE7QUFBQSxVQXhEQSxPQUFLQyxFQUFBLENBQUdDLEtBQUksUUFBUSxNQUFNQSxFQUFBWixDQUFBLEVBQUksTUFBTSxRQUFRWSxFQUFBWixDQUFBLEVBQUksSUFBSSxTQUFTWSxFQUFBWixDQUFBLEVBQUksTUFBTSxJQUFJLENBQUE7QUFBQSxRQUFBO1VBUXZFTSxFQUFBLGVBUFJFLEVBVU0sT0FBQTtBQUFBO1lBVEgsT0FBS0csRUFBQTtBQUFBO2NBQXNEQyxFQUFBWixDQUFBLEVBQUksS0FBSyxLQUFLO0FBQUEsZUFBcUIrTixFQUFBLFNBQWFuTixLQUFJLEtBQUssTUFBTSxRQUFRO0FBQUEsY0FBcUJrTyxFQUFBLFFBQVksS0FBQTtBQUFBLFlBQUE7ZUFRakt4TyxFQUFBLE1BQU0sR0FBQSxDQUFBO1VBR1hJLEVBOEJNLE9BQUE7QUFBQSxZQTlCQSxVQUFRRSxFQUFBWixDQUFBLEVBQUksUUFBUSxNQUFNWSxFQUFBWixDQUFBLEVBQUksS0FBSyxVQUFVLFFBQVFZLEtBQUksTUFBTSxJQUFJLENBQUE7QUFBQSxVQUFBO1lBUy9ETixFQUFBLGNBUlJFLEVBV00sT0FBQTtBQUFBO2NBVkgsT0FBS0csRUFBQTtBQUFBO2dCQUF5RG1PLEVBQUEsUUFBWSxDQUFBLGFBQWlCbE8sRUFBQVosQ0FBQSxFQUFJLEtBQUssS0FBSyxPQUFPLElBQUlZLEtBQUksS0FBSyxLQUFLO0FBQUEsaUJBQXdCbU4sRUFBQSxTQUFhbk4sS0FBSSxLQUFLLE1BQU0sUUFBUTtBQUFBLGdCQUF1QkEsRUFBQVosQ0FBQSxFQUFJLE9BQU87QUFBQSxnQkFBb0JZLEVBQUFaLENBQUEsRUFBSSxlQUFlO0FBQUEsY0FBQTtpQkFTclE2TixFQUFBLEtBQWMsR0FBQSxDQUFBO2VBR25Cbk4sRUFlRSxTQUFBO0FBQUEsY0FkQyxjQUFjSixFQUFBLGVBQVksT0FBQTtBQUFBLGNBQzFCLE9BQUtLLEVBQUEsQ0FBR0MsS0FBSSxNQUFNLE1BQU1BLEtBQUksS0FBSyxLQUFLLFFBQVFOLEVBQUEsWUFBWU0sRUFBQVosQ0FBQSxFQUFJLE9BQU8sV0FBVyxDQUFBO0FBQUEsY0FDaEYsVUFBVU0sRUFBQTtBQUFBLGNBQ1YsV0FBVytQLEVBQUE7QUFBQSxjQUNYLFdBQVcvUCxFQUFBO0FBQUEsY0FDWCxXQUFXQSxFQUFBO0FBQUEsY0FDWCxNQUFNQSxFQUFBO0FBQUEsdUJBQ0g7QUFBQSxjQUFKLEtBQUk2UDtBQUFBLGNBQ0gsVUFBVTdQLEVBQUE7QUFBQSxjQUNWLE1BQU1nUSxFQUFBO0FBQUEsY0FDTixTQUFPckI7QUFBQSxjQUNQLFlBQVVDO0FBQUEsY0FDVixJQUFJNU8sRUFBQTtBQUFBLDZEQUNJbU4sRUFBVSxRQUFBL0g7QUFBQSxZQUFBO21CQUFWK0gsRUFBQSxLQUFVO0FBQUEsWUFBQTs7VUFXZm5OLEVBQUEsZUFQUkUsRUFVTSxPQUFBO0FBQUE7WUFUSCxPQUFLRyxFQUFBO0FBQUE7Y0FBc0RDLEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUs7QUFBQSxlQUFxQitOLEVBQUEsU0FBYW5OLEtBQUksS0FBSyxNQUFNLFFBQVE7QUFBQSxjQUFxQmtPLEVBQUEsUUFBWSxLQUFBO0FBQUEsWUFBQTtlQVFqS3hPLEVBQUEsTUFBTSxHQUFBLENBQUE7O1FBT0xpUSxFQUFBLGNBSFIvUCxFQVVTLFVBQUE7QUFBQTtVQVROLFNBQU9pUTtBQUFBLFVBQ1IsTUFBSztBQUFBLFFBQUE7VUFHTDdOLEVBSUVDLEdBQUE7QUFBQSxZQUhDLFVBQVFqQyxFQUFBWixDQUFBLEVBQUksT0FBTyxLQUFLLElBQUksQ0FBQTtBQUFBLFlBQzVCLE1BQU1ZLEVBQUF5QixDQUFBLEVBQUs7QUFBQSxZQUNYLE1BQU16QixFQUFBRSxDQUFBLEVBQUs7QUFBQSxVQUFBOztRQU9SMFAsRUFBQSxjQUhSaFEsRUFVUyxVQUFBO0FBQUE7VUFUTixTQUFLaUYsRUFBQSxDQUFBLE1BQUFBLEVBQUEsQ0FBQSxJQUFBLENBQUFDLE9BQUUwSyxFQUFBLFFBQVksQ0FBSUEsRUFBQTtBQUFBLFVBQ3hCLE1BQUs7QUFBQSxRQUFBO1VBR0x4TixFQUlFQyxHQUFBO0FBQUEsWUFIQyxVQUFRakMsRUFBQVosQ0FBQSxFQUFJLE9BQU8sS0FBSyxJQUFJLENBQUE7QUFBQSxZQUM1QixNQUFNWSxFQUFBeUIsQ0FBQSxFQUFLO0FBQUEsWUFDWCxNQUFNekIsRUFBQUUsQ0FBQSxFQUFLO0FBQUEsVUFBQTs7O01BUVZtTixFQUFBLGNBSFI5TCxFQUlFaU0sSUFBQTtBQUFBO1FBSEMsWUFBVUwsRUFBQTtBQUFBLFFBQ1YsU0FBU0UsRUFBQTtBQUFBLE1BQUE7OztpTENsVWQ3TixLQUFlLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVDZixVQUFNQyxJQUFRQyxHQXFCUm9QLElBQVFqTyxFQUFJcEIsRUFBTSxLQUFLLEdBQ3ZCc08sSUFBV2xOLEVBQUksRUFBSyxHQUNwQlIsSUFBUVEsRUFBNkIsSUFBSSxHQUN6QzJPLElBQWUzTyxFQUFJLEVBQUssR0FDeEIrSyxJQUFRL0ssRUFBSXBCLEVBQU0sS0FBSyxHQUV2QnNQLElBQWU3TCxFQUFTLE1BQU13TCxHQUFnQmpQLEVBQU0sT0FBT3FQLEVBQU0sS0FBSyxDQUFDLEdBQ3ZFN0IsSUFBaUIvSixFQUFTLE1BQU96RCxFQUFNLFlBQVlBLEVBQU0sUUFBUSxHQUFHQSxFQUFNLEtBQUssT0FBT0EsRUFBTSxLQUFNLEdBQ2xHdVEsSUFBVzlNLEVBQVMsTUFBTXpELEVBQU0sWUFBWW1NLEVBQU0sS0FBSyxHQUN2RG9ELElBQVc5TDtBQUFBLE1BQ2YsTUFBT3pELEVBQU0sWUFBWW1NLEVBQU0sVUFBVSxVQUFhLENBQUNBLEVBQU0sU0FBVWdELEdBQWlCRSxFQUFNLE9BQU9yUCxFQUFNLEtBQUs7QUFBQSxJQUFBLEdBRTVHeU8sSUFBZWhMLEVBQVMsTUFBTTZLLEVBQVMsU0FBUyxDQUFDSSxFQUFRLEtBQUssR0FDOURBLElBQVVqTCxFQUFTLE1BQU0wSSxFQUFNLFVBQVUsTUFBTUEsRUFBTSxVQUFVLE1BQVMsR0FDeEU4RCxJQUFZeE07QUFBQSxNQUFTLE1BQ3pCekQsRUFBTSxTQUFTeVAsRUFBZ0IsWUFBWU0sRUFBYSxVQUFVLEtBQU9OLEVBQWdCLE9BQU96UCxFQUFNO0FBQUEsSUFBQSxHQUdsR29RLElBQWMsTUFBTTs7QUFDeEIsTUFBQWpFLEVBQU0sUUFBUSxLQUNkL0gsSUFBQXhELEVBQU0sVUFBTixRQUFBd0QsRUFBYTtBQUFBLElBQ2YsR0FFTXdLLElBQWMsTUFBTTtBQUN4QixNQUFBTixFQUFTLFFBQVE7QUFBQSxJQUNuQixHQUVNTyxJQUFpQixNQUFNO0FBQzNCLE1BQUFQLEVBQVMsUUFBUSxJQUVabkMsRUFBTSxVQUNUQSxFQUFNLFFBQVEsS0FHaEJxRSxFQUFBO0FBQUEsSUFDRixHQUVNQyxJQUFjLE1BQU07O0FBQ3hCLFVBQUl6USxFQUFNLGdCQUFnQjtBQUN4QixjQUFNYyxNQUFTc0osS0FBQWhHLElBQUErSCxFQUFNLFVBQU4sZ0JBQUEvSCxFQUFhLE1BQU0sV0FBbkIsZ0JBQUFnRyxFQUEyQixLQUFLLFFBQU87QUFFdEQsUUFBQStCLEVBQU0sUUFBUXJMLElBQVNkLEVBQU0sZUFBZWMsQ0FBTSxJQUFJO0FBQUEsTUFDeEQ7QUFBQSxJQUNGLEdBRU0wUCxJQUFtQixNQUFNO0FBQzdCLE1BQUFwQixHQUFzQjtBQUFBLFFBQ3BCLE9BQUFDO0FBQUEsUUFDQSxnQkFBZ0JyUCxFQUFNO0FBQUEsUUFDdEIsV0FBV0EsRUFBTTtBQUFBLFFBQ2pCLFdBQVdBLEVBQU07QUFBQSxRQUNqQixVQUFVQSxFQUFNO0FBQUEsUUFDaEIsWUFBWUEsRUFBTTtBQUFBLFFBQ2xCLE9BQUFtTTtBQUFBLE1BQUEsQ0FDRDtBQUFBLElBQ0gsR0FFTXVFLElBQWMsQ0FBQ3JPLE1BQXFCO0FBQ3hDLE1BQUE4SixFQUFNLFFBQVE5SjtBQUFBLElBQ2hCO0FBRUEsV0FBQWhCO0FBQUEsTUFDRSxNQUFNckIsRUFBTTtBQUFBLE1BQ1osQ0FBQ3FDLEdBQVU0TCxNQUFhO0FBQ3RCLFNBQUk1TCxNQUFhNEwsS0FBWTVMLE1BQWE4SixFQUFNLFdBQzlDQSxFQUFNLFFBQVE5SjtBQUFBLE1BRWxCO0FBQUEsSUFBQSxHQUdGbU4sRUFBYTtBQUFBLE1BQ1gsT0FBQUg7QUFBQSxNQUNBLFVBQVVyUCxFQUFNO0FBQUEsTUFDaEIsYUFBQTBRO0FBQUEsTUFDQSxPQUFBdkU7QUFBQSxJQUFBLENBQ0QsbUJBSURoTSxFQW1JTSxPQUFBO0FBQUEsTUFsSUgsT0FBS0csRUFBQTtBQUFBO1FBQW1DQyxFQUFBWixDQUFBLEVBQUksUUFBUTtBQUFBLFFBQVlZLEVBQUFaLENBQUEsRUFBSSxLQUFLLFVBQVU7QUFBQSxRQUFjWSxFQUFBWixDQUFBLEVBQUksSUFBSTtBQUFBLFFBQWVNLEVBQUEsWUFBUTtBQUFBLFFBQXNCc1AsRUFBQSxTQUFRO0FBQUEsTUFBQTs7TUFTL0psUCxFQXdHUSxTQUFBO0FBQUEsUUF2R0wsT0FBS0MsRUFBQTtBQUFBO1VBQTZDQyxFQUFBWixDQUFBLEVBQUksUUFBUTtBQUFBLFVBQWNZLEVBQUFaLENBQUEsRUFBSSxNQUFNO0FBQUEsVUFBZ0JZLEVBQUFaLENBQUEsRUFBSSxJQUFJO0FBQUEsVUFBY1ksRUFBQVosQ0FBQSxFQUFJLFNBQVM7QUFBQSxVQUFrQlksRUFBQVosQ0FBQSxFQUFJLE9BQU8sT0FBTztBQUFBLFVBQWNZLEVBQUFaLENBQUEsRUFBSSxHQUFHLFFBQVE7QUFBQSxVQUFpQjRRLEVBQUEsUUFBUSxDQUFJaFEsS0FBSSxRQUFRLE1BQU0sTUFBTUEsRUFBQVosQ0FBQSxFQUFJLFFBQVEsS0FBSyxHQUFHLElBQUEsQ0FBS1ksRUFBQVosQ0FBQSxFQUFJLFFBQVEsRUFBRSxHQUFHO0FBQUEsVUFBV1ksRUFBQVosQ0FBQSxFQUFJLFFBQVEsRUFBRTtBQUFBLFVBQWNNLEVBQUEsV0FBV00sRUFBQVosQ0FBQSxFQUFJLE9BQU8sY0FBY1ksRUFBQVosQ0FBQSxFQUFJLE9BQU87QUFBQSxRQUFBO1FBWS9YLEtBQUtNLEVBQUE7QUFBQSxNQUFBO1FBTUVBLEVBQUEsb0JBSlI2QixFQUtFVSxHQUFBO0FBQUE7VUFKQyxPQUFLbEMsRUFBQSxDQUFHQyxLQUFJLEtBQUssTUFBTSxRQUFRLE9BQU8sQ0FBQTtBQUFBLFVBQ3RDLE1BQU1OLEVBQUE7QUFBQSxVQUNOLE1BQU1NLEVBQUFFLENBQUEsRUFBSztBQUFBLFFBQUE7UUFJZEosRUF5RE0sT0FBQTtBQUFBLFVBekRBLE9BQUtDLEVBQUEsQ0FBR0MsS0FBSSxRQUFRLE1BQU1BLEVBQUFaLENBQUEsRUFBSSxNQUFNLFFBQVFZLEVBQUFaLENBQUEsRUFBSSxJQUFJLFNBQVNZLEVBQUFaLENBQUEsRUFBSSxNQUFNLElBQUksQ0FBQTtBQUFBLFFBQUE7VUFRdkVNLEVBQUEsZUFQUkUsRUFVTSxPQUFBO0FBQUE7WUFUSCxPQUFLRyxFQUFBO0FBQUE7Y0FBc0RDLEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUs7QUFBQSxlQUFxQjRQLEVBQUEsU0FBWWhQLEtBQUksS0FBSyxNQUFNLFFBQVE7QUFBQSxjQUFxQmtPLEVBQUEsUUFBWSxLQUFBO0FBQUEsWUFBQTtlQVFoS3hPLEVBQUEsTUFBTSxHQUFBLENBQUE7VUFHWEksRUErQk0sT0FBQTtBQUFBLFlBL0JBLFVBQVFFLEVBQUFaLENBQUEsRUFBSSxRQUFRLE1BQU1ZLEVBQUFaLENBQUEsRUFBSSxLQUFLLFVBQVUsUUFBUVksS0FBSSxNQUFNLElBQUksQ0FBQTtBQUFBLFVBQUE7WUFTL0ROLEVBQUEsY0FSUkUsRUFXTSxPQUFBO0FBQUE7Y0FWSCxPQUFLRyxFQUFBO0FBQUE7Z0JBQXlEbU8sRUFBQSxRQUFZLENBQUEsYUFBaUJsTyxFQUFBWixDQUFBLEVBQUksS0FBSyxLQUFLLE9BQU8sSUFBSVksS0FBSSxLQUFLLEtBQUs7QUFBQSxpQkFBd0JnUCxFQUFBLFNBQVloUCxLQUFJLEtBQUssTUFBTSxRQUFRO0FBQUEsZ0JBQXVCQSxFQUFBWixDQUFBLEVBQUksT0FBTztBQUFBLGdCQUFvQlksRUFBQVosQ0FBQSxFQUFJLGVBQWU7QUFBQSxjQUFBO2lCQVNwUTZOLEVBQUEsS0FBYyxHQUFBLENBQUE7ZUFHbkJuTixFQWdCRSxTQUFBO0FBQUEsY0FmQyxjQUFjSixFQUFBLGVBQVksT0FBQTtBQUFBLGNBQzFCLE9BQUtLLEVBQUEsQ0FBR0MsS0FBSSxNQUFNLE1BQU1OLGNBQVlNLEVBQUFaLENBQUEsRUFBSSxPQUFPLGFBQWFZLEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUssTUFBTSxDQUFBO0FBQUEsY0FDaEYsVUFBVU0sRUFBQTtBQUFBLGNBQ1YsV0FBV0EsRUFBQTtBQUFBLGNBQ1gsV0FBV0EsRUFBQTtBQUFBLGNBQ1gsTUFBTUEsRUFBQTtBQUFBLHVCQUNIO0FBQUEsY0FBSixLQUFJVztBQUFBLGNBQ0gsVUFBVVgsRUFBQTtBQUFBLGNBQ1YsTUFBTWdRLEVBQUE7QUFBQSxjQUNOLFVBQVFPO0FBQUEsY0FDUixTQUFPNUI7QUFBQSxjQUNQLFlBQVVDO0FBQUEsY0FDVixTQUFPNEI7QUFBQSxjQUNQLElBQUl4USxFQUFBO0FBQUEsNERBQ0lrTSxFQUFLLFFBQUE5RztBQUFBLFlBQUE7bUJBQUw4RyxFQUFBLEtBQUs7QUFBQSxZQUFBOztVQVdWbE0sRUFBQSxlQVBSRSxFQVVNLE9BQUE7QUFBQTtZQVRILE9BQUtHLEVBQUE7QUFBQTtjQUFzREMsRUFBQVosQ0FBQSxFQUFJLEtBQUssS0FBSztBQUFBLGVBQXFCNFAsRUFBQSxTQUFZaFAsS0FBSSxLQUFLLE1BQU0sUUFBUTtBQUFBLGNBQXFCa08sRUFBQSxRQUFZLEtBQUE7QUFBQSxZQUFBO2VBUWhLeE8sRUFBQSxNQUFNLEdBQUEsQ0FBQTs7UUFPTHNRLEVBQUEsU0FBWXRRLEVBQUEsU0FBU00sRUFBQWtQLENBQUEsRUFBZ0IsaUJBSDdDdFAsRUFVUyxVQUFBO0FBQUE7VUFUTixTQUFPaVE7QUFBQSxVQUNSLE1BQUs7QUFBQSxRQUFBO1VBR0w3TixFQUlFQyxHQUFBO0FBQUEsWUFIQyxVQUFRakMsRUFBQVosQ0FBQSxFQUFJLE9BQU8sS0FBSyxJQUFJLENBQUE7QUFBQSxZQUM1QixNQUFNWSxFQUFBeUIsQ0FBQSxFQUFLO0FBQUEsWUFDWCxNQUFNekIsRUFBQUUsQ0FBQSxFQUFLO0FBQUEsVUFBQTs7UUFPUlIsRUFBQSxTQUFTTSxFQUFBa1AsQ0FBQSxFQUFnQixpQkFIakN0UCxFQVVTLFVBQUE7QUFBQTtVQVROLFNBQUtpRixFQUFBLENBQUEsTUFBQUEsRUFBQSxDQUFBLElBQUEsQ0FBQUMsTUFBRTBLLEVBQUEsUUFBWSxDQUFJQSxFQUFBO0FBQUEsVUFDeEIsTUFBSztBQUFBLFFBQUE7VUFHTHhOLEVBSUVDLEdBQUE7QUFBQSxZQUhDLFVBQVFqQyxFQUFBWixDQUFBLEVBQUksT0FBTyxLQUFLLElBQUksQ0FBQTtBQUFBLFlBQzVCLE1BQU1ZLEVBQUF5QixDQUFBLEVBQUs7QUFBQSxZQUNYLE1BQU16QixFQUFBRSxDQUFBLEVBQUs7QUFBQSxVQUFBOzs7TUFPVlIsRUFBQSxrQkFBa0JzUCxFQUFBLGNBRjFCcFAsRUFjTSxPQUFBO0FBQUE7UUFiSCxVQUFRSSxFQUFBWixDQUFBLEVBQUksUUFBUSxNQUFNWSxFQUFBWixDQUFBLEVBQUksTUFBTSxRQUFRWSxLQUFJLElBQUksT0FBTyxDQUFBO0FBQUEsTUFBQTtRQU9wRGdQLEVBQUEsY0FKUnpOLEVBS0VVLEdBQUE7QUFBQTtVQUpDLFNBQU8sRUFBRTtBQUFBLFVBQ1QsTUFBTWpDLEVBQUF5QixDQUFBLEVBQUs7QUFBQSxVQUNYLE1BQU16QixFQUFBRSxDQUFBLEVBQUs7QUFBQSxRQUFBO1FBSWRKLEVBRU0sT0FBQTtBQUFBLFVBRkEsVUFBUUUsRUFBQVosQ0FBQSxFQUFJLEtBQUssS0FBSyxPQUFPLENBQUE7QUFBQSxRQUFBLEtBQzlCNFAsRUFBQSxRQUFXRCxFQUFBLFFBQWVyUCxFQUFBLGNBQWMsR0FBQSxDQUFBO0FBQUEsTUFBQTs7O3FKQ3pRakRGLEtBQWUsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaURmLFVBQU1DLElBQVFDLEdBaUJSNkQsSUFBT0MsR0FFUHFKLElBQWFqTCxpQkFBc0MsR0FFbkRrTCxJQUFjdEMsR0FBQSxHQUVkd0MsSUFBV25NLEVBQXNCMkssR0FBa0IsUUFBUSxHQUMzRHVDLElBQVdsTixFQUFhLEVBQUssR0FDN0JrTSxJQUFlbE0sRUFBYSxFQUFLLEdBQ2pDdVAsSUFBa0J2UCxFQUFnQyxJQUFJLEdBRXREb00sSUFBaUIvSixFQUFTLE1BQU96RCxFQUFNLFdBQVcsR0FBR0EsRUFBTSxLQUFLLE9BQU9BLEVBQU0sS0FBTSxHQUNuRjBOLElBQVlqSyxFQUFTLE1BQ3JCa0ssRUFBaUIsUUFBYyxLQUM5QkwsRUFBYSxRQUNYLENBQUNDLEVBQVMsTUFBTSxRQURTLEVBRWpDLEdBQ0tJLElBQW1CbEssRUFBUyxNQUFNekQsRUFBTSxVQUFVLEVBQUUsR0FDcER5TyxJQUFlaEwsRUFBUyxNQUFNNkssRUFBUyxTQUFTLENBQUNJLEVBQVEsS0FBSyxHQUM5REEsSUFBVWpMLEVBQVMsTUFBTTJKLEVBQVcsVUFBVSxFQUFFLEdBQ2hEUSxJQUF3Qm5LLEVBQVMsTUFBT2lLLEVBQVUsU0FBU0gsRUFBUyxNQUFNLFdBQVl2TixFQUFNLGNBQWMsR0FFMUc0TyxJQUFjLE1BQU07QUFDeEIsTUFBQU4sRUFBUyxRQUFRLElBQ2J0TyxFQUFNLGlCQUFpQnFPLEdBQWMsWUFBb0IsUUFBUTtBQUFBLElBQ3ZFLEdBRU1RLElBQWlCLE1BQU07QUFDM0IsTUFBQVAsRUFBUyxRQUFRLElBQ2J0TyxFQUFNLGlCQUFpQnFPLEdBQWMsV0FBbUIsUUFBUTtBQUFBLElBQ3RFLEdBRU1nQyxJQUFtQixNQUFNOztBQUM3QixPQUFBak0sSUFBQXVNLEVBQWdCLFVBQWhCLFFBQUF2TSxFQUF1QjtBQUFBLElBQ3pCLEdBRU13TSxJQUFzQyxDQUFDMUYsTUFBa0I7QUFDN0QsTUFBS29ELEVBQVMsU0FDVnBELEVBQUUsV0FBV3lGLEVBQWdCLFdBQVMsZUFBQTtBQUFBLElBQzVDO0FBRUEsV0FBQTdDLEdBQVksTUFBTTtBQUNoQixNQUFBUCxFQUFTLFFBQVFaLEdBQXlCO0FBQUEsUUFDeEMsZ0JBQWdCM00sRUFBTTtBQUFBLFFBQ3RCLFdBQVdBLEVBQU07QUFBQSxRQUNqQixXQUFXQSxFQUFNO0FBQUEsUUFDakIsVUFBVUEsRUFBTTtBQUFBLFFBQ2hCLFlBQVlBLEVBQU07QUFBQSxRQUNsQixPQUFPb047QUFBQSxNQUFBLENBQ1I7QUFBQSxJQUNILENBQUMsR0FFRC9MO0FBQUEsTUFDRSxNQUFNZ00sS0FBQSxnQkFBQUEsRUFBYSxnQkFBZ0I7QUFBQSxNQUNuQyxDQUFDaEwsTUFBYTtBQUNaLFFBQUlBLFFBQXVCLFFBQVE7QUFBQSxNQUNyQztBQUFBLE1BQ0EsRUFBRSxXQUFXLEdBQUE7QUFBQSxJQUFLLEdBR3BCaEI7QUFBQSxNQUNFa007QUFBQSxNQUNBLE1BQU07QUFDSixRQUFBekosRUFBSyxTQUFTeUosRUFBUyxNQUFNLEtBQUs7QUFBQSxNQUNwQztBQUFBLE1BQ0EsRUFBRSxNQUFNLElBQU0sV0FBVyxHQUFBO0FBQUEsSUFBSyxtQkFLaENwTixFQW1ETSxPQUFBO0FBQUEsTUFsREgsT0FBS0csRUFBQSxDQUFBLHVCQUEwQkMsS0FBSSxRQUFRLE1BQU1BLEtBQUksS0FBSyxVQUFVLFFBQVFBLEVBQUFaLENBQUEsRUFBSSxJQUFJLFNBQVMrTixFQUFBLFNBQVMsT0FBQSxDQUFBO0FBQUEsSUFBQTtNQUV2R3JOLEVBeUNRLFNBQUE7QUFBQSxRQXhDTCxPQUFLQyxFQUFBO0FBQUE7VUFBaURDLEVBQUFaLENBQUEsRUFBSSxJQUFJO0FBQUEsVUFBY1ksRUFBQVosQ0FBQSxFQUFJLFNBQVM7QUFBQSxVQUFrQlksRUFBQVosQ0FBQSxFQUFJLE9BQU8sT0FBTztBQUFBLFVBQWNZLEVBQUFaLENBQUEsRUFBSSxRQUFRLElBQUk7QUFBQSxVQUFjWSxFQUFBWixDQUFBLEVBQUksU0FBUyxHQUFHO0FBQUEsVUFBZ0JZLEVBQUFaLENBQUEsRUFBSSxHQUFHLFFBQVE7QUFBQSxVQUFpQlksRUFBQVosQ0FBQSxFQUFJLE9BQU87QUFBQSxRQUFBO1FBVXBQLEtBQUtNLEVBQUE7QUFBQSxRQUNMLFNBQU9vUTtBQUFBLFFBQ1AsYUFBV087QUFBQSxNQUFBO1FBVUozUSxFQUFBLGNBUlJFLEVBV00sT0FBQTtBQUFBO1VBVkgsT0FBS0csRUFBQTtBQUFBO1lBQXFEQyxFQUFBWixDQUFBLEVBQUksUUFBUSxFQUFFO0FBQUEsWUFBZThPLEVBQUEsUUFBWSxDQUFBLGFBQWlCbE8sRUFBQVosQ0FBQSxFQUFJLEtBQUssS0FBSyxPQUFPLElBQUlZLEtBQUksS0FBSyxLQUFLO0FBQUEsYUFBb0JtTixFQUFBLFNBQWFuTixLQUFJLEtBQUssTUFBTSxRQUFRO0FBQUEsWUFBbUJBLEVBQUFaLENBQUEsRUFBSSxlQUFlO0FBQUEsVUFBQTthQVN2UDZOLEVBQUEsS0FBYyxHQUFBLENBQUE7V0FHbkJuTixFQVlFLFlBQUE7QUFBQSxVQVhDLE9BQUtDLEVBQUEsQ0FBR0MsRUFBQVosQ0FBQSxFQUFJLFFBQVEsT0FBT1ksRUFBQVosQ0FBQSxFQUFJLEtBQUssS0FBSyxRQUFRWSxFQUFBWixDQUFBLEVBQUksUUFBUSxFQUFFLEtBQUtZLEVBQUFaLENBQUEsRUFBSSxNQUFNLElBQUksQ0FBQTtBQUFBLFVBQ2xGLFdBQVdNLEVBQUE7QUFBQSxVQUNYLFdBQVdBLEVBQUE7QUFBQSxVQUNYLE1BQU1BLEVBQUE7QUFBQSxtQkFDSDtBQUFBLFVBQUosS0FBSTBRO0FBQUEsVUFDSCxVQUFVMVEsRUFBQTtBQUFBLFVBQ1YsTUFBTUEsRUFBQTtBQUFBLFVBQ04sU0FBTzJPO0FBQUEsVUFDUCxZQUFVQztBQUFBLFVBQ1YsSUFBSTVPLEVBQUE7QUFBQSx3REFDSW1OLEVBQVUsUUFBQS9IO0FBQUEsUUFBQTtlQUFWK0gsRUFBQSxLQUFVO0FBQUEsUUFBQTs7TUFPZlEsRUFBQSxjQUhSOUwsRUFJRWlNLElBQUE7QUFBQTtRQUhDLFlBQVVMLEVBQUE7QUFBQSxRQUNWLFNBQVNFLEVBQUE7QUFBQSxNQUFBOzs7cUpDMUxkN04sS0FBZSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0FBMkJmLFVBQU1DLElBQVFDLEdBYVJvUCxJQUFRak8sRUFBSXBCLEVBQU0sS0FBSyxHQUN2QnNPLElBQVdsTixFQUFJLEVBQUssR0FDcEJSLElBQVFRLEVBQTZCLElBQUksR0FDekMrSyxJQUFRL0ssRUFBSXBCLEVBQU0sS0FBSyxHQUV2QnNQLElBQWU3TCxFQUFTLE1BQU13TCxHQUFnQmpQLEVBQU0sT0FBT3FQLEVBQU0sS0FBSyxDQUFDLEdBQ3ZFN0IsSUFBaUIvSixFQUFTLE1BQU96RCxFQUFNLFdBQVcsR0FBR0EsRUFBTSxLQUFLLE9BQU9BLEVBQU0sS0FBTSxHQUNuRnVQLElBQVc5TDtBQUFBLE1BQ2YsTUFBT3pELEVBQU0sWUFBWW1NLEVBQU0sVUFBVSxVQUFhLENBQUNBLEVBQU0sU0FBVWdELEdBQWlCRSxFQUFNLE9BQU9yUCxFQUFNLEtBQUs7QUFBQSxJQUFBLEdBRTVHeU8sSUFBZWhMLEVBQVMsTUFBTTZLLEVBQVMsU0FBUyxDQUFDSSxFQUFRLEtBQUssR0FDOURBLElBQVVqTCxFQUFTLE1BQU0wSSxFQUFNLFVBQVUsTUFBTUEsRUFBTSxVQUFVLE1BQVMsR0FFeEV5QyxJQUFjLE1BQU07QUFDeEIsTUFBQU4sRUFBUyxRQUFRO0FBQUEsSUFDbkIsR0FFTU8sSUFBaUIsTUFBTTtBQUMzQixNQUFBUCxFQUFTLFFBQVEsSUFFWm5DLEVBQU0sVUFDVEEsRUFBTSxRQUFRO0FBQUEsSUFFbEIsR0FFTXFFLElBQW1CLE1BQ2hCcEIsR0FBc0I7QUFBQSxNQUMzQixPQUFBQztBQUFBLE1BQ0EsZ0JBQWdCclAsRUFBTTtBQUFBLE1BQ3RCLFdBQVdBLEVBQU07QUFBQSxNQUNqQixXQUFXQSxFQUFNO0FBQUEsTUFDakIsVUFBVUEsRUFBTTtBQUFBLE1BQ2hCLE9BQUFtTTtBQUFBLElBQUEsQ0FDRDtBQUdILFdBQUE5SztBQUFBLE1BQ0UsTUFBTXJCLEVBQU07QUFBQSxNQUNaLENBQUNxQyxHQUFVNEwsTUFBYTtBQUN0QixTQUFJNUwsTUFBYTRMLEtBQVk1TCxNQUFhOEosRUFBTSxXQUM5Q0EsRUFBTSxRQUFROUo7QUFBQSxNQUVsQjtBQUFBLElBQUEsR0FHRm1OLEVBQWE7QUFBQSxNQUNYLE9BQUFIO0FBQUEsTUFDQSxVQUFVclAsRUFBTTtBQUFBLE1BQ2hCLE9BQUFtTTtBQUFBLElBQUEsQ0FDRCxtQkFJRGhNLEVBMkRNLE9BQUE7QUFBQSxNQTFESCxPQUFLRyxFQUFBLENBQUEsdUJBQTBCQyxLQUFJLFFBQVEsTUFBTUEsS0FBSSxLQUFLLFVBQVUsUUFBUUEsRUFBQVosQ0FBQSxFQUFJLElBQUksU0FBUzRQLEVBQUEsU0FBUSxPQUFBLENBQUE7QUFBQSxJQUFBO01BRXRHbFAsRUF3Q1EsU0FBQTtBQUFBLFFBdkNMLE9BQUtDLEVBQUE7QUFBQTtVQUFpREMsRUFBQVosQ0FBQSxFQUFJLElBQUk7QUFBQSxVQUFjWSxFQUFBWixDQUFBLEVBQUksU0FBUztBQUFBLFVBQWtCWSxFQUFBWixDQUFBLEVBQUksT0FBTyxPQUFPO0FBQUEsVUFBY1ksRUFBQVosQ0FBQSxFQUFJLFFBQVEsS0FBSztBQUFBLFVBQWFZLEVBQUFaLENBQUEsRUFBSSxRQUFRLElBQUk7QUFBQSxVQUFjWSxFQUFBWixDQUFBLEVBQUksU0FBUyxHQUFHO0FBQUEsVUFBZ0JZLEVBQUFaLENBQUEsRUFBSSxHQUFHLFFBQVE7QUFBQSxVQUFpQlksRUFBQVosQ0FBQSxFQUFJLE9BQU87QUFBQSxRQUFBO1FBV2xSLEtBQUtNLEVBQUE7QUFBQSxNQUFBO1FBU0VBLEVBQUEsY0FQUkUsRUFVTSxPQUFBO0FBQUE7VUFUSCxPQUFLRyxFQUFBO0FBQUE7WUFBcURtTyxFQUFBLFFBQVksQ0FBQSxhQUFpQmxPLEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUssT0FBTyxJQUFJWSxLQUFJLEtBQUssS0FBSztBQUFBLGFBQW9CZ1AsRUFBQSxTQUFZaFAsS0FBSSxLQUFLLE1BQU0sUUFBUTtBQUFBLFlBQW1CQSxFQUFBWixDQUFBLEVBQUksZUFBZTtBQUFBLFVBQUE7YUFRek42TixFQUFBLEtBQWMsR0FBQSxDQUFBO1dBR25Cbk4sRUFhRSxZQUFBO0FBQUEsVUFaQyxVQUFRRSxFQUFBWixDQUFBLEVBQUksUUFBUSxPQUFPWSxFQUFBWixDQUFBLEVBQUksTUFBTSxNQUFNWSxFQUFBWixDQUFBLEVBQUksS0FBSyxLQUFLLE1BQU0sQ0FBQTtBQUFBLFVBQy9ELFdBQVdNLEVBQUE7QUFBQSxVQUNYLFdBQVdBLEVBQUE7QUFBQSxVQUNYLE1BQU1BLEVBQUE7QUFBQSxtQkFDSDtBQUFBLFVBQUosS0FBSVc7QUFBQSxVQUNILFVBQVVYLEVBQUE7QUFBQSxVQUNWLE1BQU1BLEVBQUE7QUFBQSxVQUNOLFVBQVF1UTtBQUFBLFVBQ1IsU0FBTzVCO0FBQUEsVUFDUCxZQUFVQztBQUFBLFVBQ1YsSUFBSTVPLEVBQUE7QUFBQSx3REFDSWtNLEVBQUssUUFBQTlHO0FBQUEsUUFBQTtlQUFMOEcsRUFBQSxLQUFLO0FBQUEsUUFBQTs7TUFNVmxNLEVBQUEsa0JBQWtCc1AsRUFBQSxjQUYxQnBQLEVBYU0sT0FBQTtBQUFBO1FBWkgsVUFBUUksRUFBQVosQ0FBQSxFQUFJLFFBQVEsTUFBTVksRUFBQVosQ0FBQSxFQUFJLE1BQU0sUUFBUVksS0FBSSxJQUFJLE9BQU8sQ0FBQTtBQUFBLE1BQUE7UUFNcERnUCxFQUFBLGNBSFJ6TixFQUlFVSxHQUFBO0FBQUE7VUFIQyxNQUFNakMsRUFBQXlCLENBQUEsRUFBSztBQUFBLFVBQ1gsTUFBTXpCLEVBQUFFLENBQUEsRUFBSztBQUFBLFFBQUE7UUFJZEosRUFFTSxPQUFBO0FBQUEsVUFGQSxVQUFRRSxFQUFBWixDQUFBLEVBQUksS0FBSyxLQUFLLE9BQU8sQ0FBQTtBQUFBLFFBQUEsS0FDOUI0UCxFQUFBLFFBQVdELEVBQUEsUUFBZXJQLEVBQUEsY0FBYyxHQUFBLENBQUE7QUFBQSxNQUFBOzs7b0VDbkpqREYsS0FBZSxDQUFBOzs7Ozs7Ozs7OztzQkF1Q2ZHLEtBQUE0QixFQTBCWUMsR0FWTDlCLEVBQUEsT0FBTyxHQUFBO0FBQUEsTUFmWCxPQUFLSyxFQUFBO0FBQUE7UUFBa0NDLEVBQUFaLENBQUEsRUFBSSxNQUFNO0FBQUEsUUFBY1ksRUFBQVosQ0FBQSxFQUFJLE9BQU8sT0FBTztBQUFBLFFBQVlZLEVBQUFaLENBQUEsRUFBSSxRQUFRO0FBQUEsUUFBWVksRUFBQVosQ0FBQSxFQUFJO0FBQUEsUUFBZ0JZLEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUs7QUFBQSxRQUFlWSxFQUFBWixDQUFBLEVBQUksSUFBSTtBQUFBLFFBQWVZLEVBQUFaLENBQUEsRUFBSSxRQUFRLEVBQUU7QUFBQSxRQUFXWSxFQUFBWixDQUFBLEVBQUksUUFBUSxFQUFFO0FBQUEsUUFBWVksRUFBQVosQ0FBQSxFQUFJLFVBQVUsS0FBSztBQUFBLFFBQVdZLEVBQUFaLENBQUEsRUFBSSxNQUFNO0FBQUEsTUFBQTtNQWF4UixNQUFNTSxFQUFBO0FBQUEsTUFDTixRQUFRQSxFQUFBLFdBQVdNLE1BQU8sUUFBUTtBQUFBLElBQUE7a0JBR25DLE1BQXdCO0FBQUEsUUFBeEJGLEVBQXdCLGdCQUFmSixFQUFBLEtBQUssR0FBQSxDQUFBO0FBQUEsUUFNTkEsRUFBQSxxQkFKUjZCLEVBS0VVLEdBQUE7QUFBQTtVQUpDLFVBQVFqQyxFQUFBWixDQUFBLEVBQUksT0FBTyxLQUFLLElBQUksQ0FBQTtBQUFBLFVBQzVCLE1BQU1NLEVBQUE7QUFBQSxVQUNOLE1BQU1NLEVBQUFFLENBQUEsRUFBSztBQUFBLFFBQUE7Ozs7O29FQ2xFTG9RLEtBQWE7QUFBQSxFQUN4QixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQUEsRUFDSixJQUFJO0FBQ04sR0FFYUMsS0FBUTtBQUFBLEVBQ25CLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFBQSxFQUNKLElBQUk7QUFDTixHQ1BhQyxLQUFnQixPQUFPQyxNQUFzQjtBQUl4RCxRQUFNQyxJQUFPLFNBQVM7QUFFdEIsTUFBSUQ7QUFDRixRQUFJLENBQUNDLEVBQUssUUFBUSxhQUFhO0FBQzdCLFlBQU1DLElBQVUsT0FBTztBQUV2QixNQUFBRCxFQUFLLFFBQVEsY0FBY0MsRUFBUSxTQUFBLEdBQ25DRCxFQUFLLE1BQU0sWUFBWSxvQkFBb0IsR0FBR0MsQ0FBTyxJQUFJLEdBQ3pERCxFQUFLLE1BQU0sWUFBWSxTQUFTLEdBQUcsR0FDbkNBLEVBQUssTUFBTSxZQUFZLGNBQWMsd0NBQXdDLEdBQzdFQSxFQUFLLE1BQU0sWUFBWSxjQUFjLFFBQVEsR0FDN0NBLEVBQUssTUFBTSxZQUFZLFlBQVksT0FBTztBQUFBLElBSTVDO0FBQUEsYUFFQSxNQUFNRSxHQUFBLEdBQ0YsQ0FBQyxTQUFTLGNBQWMsY0FBYyxHQUFHO0FBQzNDLFVBQU1DLElBQWUsU0FBU0gsRUFBSyxRQUFRLGVBQWUsR0FBRztBQUs3RCxJQUFBQSxFQUFLLE1BQU0sZUFBZSxPQUFPLEdBQ2pDQSxFQUFLLE1BQU0sZUFBZSxZQUFZLEdBQ3RDQSxFQUFLLE1BQU0sZUFBZSxZQUFZLEdBQ3RDQSxFQUFLLE1BQU0sZUFBZSxVQUFVLEdBQ3BDQSxFQUFLLE1BQU0sZUFBZSxrQkFBa0IsR0FFNUMsT0FBTyxTQUFTO0FBQUEsTUFDZCxVQUFVO0FBQUEsTUFDVixLQUFLRztBQUFBLElBQUEsQ0FDTixHQUVELE9BQU9ILEVBQUssUUFBUTtBQUFBLEVBQ3RCO0FBRUosR0FFYUksS0FBZSxrQkFFZkMsS0FBbUIsTUFBTTtBQUNwQyxNQUFJQyxJQUFXLFNBQVMsZUFBZUYsRUFBWTtBQUNuRCxFQUFLRSxNQUNIQSxJQUFXLFNBQVMsY0FBYyxLQUFLLEdBQ3ZDQSxFQUFTLEtBQUtGLElBQ2RFLEVBQVMsYUFBYSxrQkFBa0IsRUFBRSxHQUMxQyxTQUFTLEtBQUssWUFBWUEsQ0FBUSxJQUVwQ0EsRUFBUyxNQUFNLFlBQVk7QUFDN0IseUJDeERFeFIsS0FBZSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7QUFnQ2YsVUFBTUMsSUFBUUMsR0FZUjZELElBQU9DLEdBRVB5TixJQUFnRHBRLEVBQUEsR0FDaERxUSxJQUFrRHJRLEVBQUEsR0FFbERzUSxJQUFTdlAsRUFBb0JsQyxHQUFBLFlBQW1CLEdBRWhEMFIsSUFBMEIsTUFBTTs7QUFDcEMsT0FBQXZOLElBQUFxTixFQUFZLFVBQVosUUFBQXJOLEVBQW1CLGFBQ25CMk0sR0FBYyxFQUFJO0FBQUEsSUFDcEIsR0FFTWEsSUFBMkIsTUFBTTs7QUFDckMsT0FBQXhOLElBQUFxTixFQUFZLFVBQVosUUFBQXJOLEVBQW1CLFNBQ25CMk0sR0FBYyxFQUFLO0FBQUEsSUFDckIsR0FFTWMsSUFBcUIsTUFBTTtBQUMvQixNQUFBVixHQUFTLE1BQU07QUFDYixRQUFLSyxFQUFhLFVBQ2xCQSxFQUFhLE1BQU0sWUFBWTtBQUFBLE1BQ2pDLENBQUM7QUFBQSxJQUNILEdBRU1NLElBQVEsWUFBWTtBQUN4QixNQUFJOVIsRUFBTSxlQUNPLE1BQU1BLEVBQU0sWUFBQSxNQUNaLE9BR2pCMFIsRUFBTyxRQUFRO0FBQUEsSUFDakIsR0FFTUssSUFBc0IsTUFBTTtBQUNoQyxNQUFJL1IsRUFBTSxpQkFBZThSLEVBQUE7QUFBQSxJQUMzQixHQUVNRSxJQUFzQixDQUFDOUcsTUFBYTtBQUN4QyxNQUFBQSxFQUFFLGVBQUEsR0FDRWxMLEVBQU0saUJBQWU4UixFQUFBO0FBQUEsSUFDM0I7QUFFQSxXQUFBelEsRUFBTXFRLEdBQVEsTUFBTTtBQUNsQixNQUFLRCxFQUFZLFVBQ2JDLEVBQU8sU0FDVEMsRUFBQSxHQUNBRSxFQUFBLEtBRUFELEVBQUE7QUFBQSxJQUVKLENBQUMsR0FFREssR0FBYyxNQUFNO0FBQ2xCLE1BQUFYLEdBQUE7QUFBQSxJQUNGLENBQUMsR0FFRHBILEdBQVUsTUFBTTtBQUNkLE1BQUl3SCxFQUFPLFNBQ1RDLEVBQUE7QUFBQSxJQUVKLENBQUMsR0FFRE8sR0FBZ0IsTUFBTTtBQUNwQixNQUFJUixFQUFPLFVBQ1RBLEVBQU8sUUFBUSxJQUNmRSxFQUFBO0FBQUEsSUFFSixDQUFDLG1CQUlEOVAsRUE0RldxUSxJQUFBO0FBQUEsTUE1RkEsUUFBUTVSLEVBQUE4USxFQUFBLENBQVk7QUFBQSxJQUFBO01BQzdCaFIsRUEwRlMsVUFBQTtBQUFBLFFBekZOLE9BQUtDLEVBQUEsQ0FBQSxjQUFpQkMsRUFBQVosQ0FBQSxFQUFJLEdBQUcsU0FBU1ksRUFBQVosQ0FBQSxFQUFJLE9BQU8sTUFBTVksRUFBQVosQ0FBQSxFQUFJLE1BQU0sTUFBTVksRUFBQVosQ0FBQSxFQUFJLFNBQVMsR0FBRyxNQUFNLENBQUE7QUFBQSxpQkFDMUY7QUFBQSxRQUFKLEtBQUk4UjtBQUFBLFFBQ0gsNkJBQTBCeFIsRUFBQSxPQUFLO0FBQUEsUUFDL0IsWUFBWThSLEdBQW1CLENBQUEsTUFBQSxDQUFBO0FBQUEsUUFDL0IsNEJBQUQsTUFBQTtBQUFBLFFBQUEsR0FBYyxDQUFBLFNBQUEsQ0FBQTtBQUFBLFFBQ2IsY0FBZ0JDLEdBQW1CLENBQUEsUUFBQSxDQUFBO0FBQUEsTUFBQTtRQUVwQzNSLEVBaUZNLE9BQUE7QUFBQSxVQWhGSCxPQUFLQyxFQUFBO0FBQUE7WUFBMkNDLEVBQUFaLENBQUEsRUFBSSxHQUFHLFFBQVE7QUFBQSxZQUFtQlksRUFBQVosQ0FBQSxFQUFJLE9BQU8sT0FBTztBQUFBLFlBQWVZLEVBQUFaLENBQUEsRUFBSSxRQUFRO0FBQUEsWUFBZ0JZLEVBQUFaLENBQUEsRUFBSSxLQUFLLFVBQVU7QUFBQSxZQUFrQlksRUFBQVosQ0FBQSxFQUFJLFNBQVMsR0FBRztBQUFBLFlBQWtCWSxFQUFBWixDQUFBLEVBQUksU0FBUztBQUFBLFlBQW9CWSxFQUFBWixDQUFBLEVBQUksWUFBWTtBQUFBLFlBQWtCWSxFQUFBWixDQUFBLEVBQUksT0FBTztBQUFBLFlBQWVZLEVBQUFaLENBQUEsRUFBSSxNQUFNO0FBQUEsWUFBZ0JZLEVBQUFaLENBQUEsRUFBSSxNQUFNO0FBQUEsWUFBb0JZLEVBQUFaLENBQUEsRUFBSSxlQUFjLENBQUVZLEVBQUFaLENBQUEsRUFBSSxPQUFPLE1BQU0sR0FBR1ksRUFBQXNRLEVBQUEsRUFBVyxFQUFFO0FBQUEsVUFBQTs7VUFlamF4USxFQWtDUyxVQUFBO0FBQUEsWUFqQ04sT0FBS0MsRUFBQTtBQUFBO2NBQWlEQyxFQUFBWixDQUFBLEVBQUksTUFBTTtBQUFBLGNBQW9CWSxFQUFBWixDQUFBLEVBQUksT0FBTyxPQUFPO0FBQUEsY0FBaUJZLEVBQUFaLENBQUEsRUFBSSxPQUFPLE1BQU07QUFBQSxjQUFpQlksRUFBQVosQ0FBQSxFQUFJLFFBQVE7QUFBQSxjQUFrQlksRUFBQVosQ0FBQSxFQUFJLElBQUk7QUFBQSxjQUFrQlksRUFBQVosQ0FBQSxFQUFJLFVBQVU7QUFBQSxjQUFxQlksRUFBQVosQ0FBQSxFQUFJLFFBQVEsRUFBRTtBQUFBLGNBQWlCWSxFQUFBWixDQUFBLEVBQUksU0FBUztBQUFBLGNBQXNCWSxFQUFBWixDQUFBLEVBQUksUUFBUTtBQUFBLFlBQUE7O1lBa0IzVE0sRUFBQSxxQkFMUjZCLEVBTUUyQyxJQUFBO0FBQUE7Y0FMQyxNQUFNbEUsRUFBQXlCLENBQUEsRUFBSztBQUFBLGNBQ1gsVUFBVXpCLEVBQUErQyxFQUFBLEVBQVM7QUFBQSxjQUNuQixnQ0FBT1EsRUFBSSxNQUFBO0FBQUEsY0FDWixPQUFNO0FBQUEsWUFBQTtZQUlSekQsRUFHRSxPQUFBO0FBQUEsY0FGQyxVQUFRRSxFQUFBWixDQUFBLEVBQUksS0FBSyxLQUFLLFVBQVUsQ0FBQTtBQUFBLGNBQ2pDLGFBQUFpRSxFQUFRM0QsRUFBTSxLQUFEO0FBQUEsWUFBQTtZQVFQQSxFQUFBLHNCQUxSNkIsRUFNRTJDLElBQUE7QUFBQTtjQUxDLE9BQUtuRSxFQUFBLENBQUdDLEtBQUksS0FBSyxLQUFLLEtBQUtBLEVBQUFaLENBQUEsRUFBSSxLQUFLLE9BQU8sS0FBS1ksRUFBQVosQ0FBQSxFQUFJLE9BQU8sS0FBSyxJQUFJLENBQUE7QUFBQSxjQUNwRSxNQUFNWSxFQUFBeUIsQ0FBQSxFQUFLO0FBQUEsY0FDWCxVQUFVekIsRUFBQStDLEVBQUEsRUFBUztBQUFBLGNBQ25CLFNBQU93TztBQUFBLFlBQUE7O1VBS1p6UixFQWFNLE9BQUE7QUFBQSxZQVpILE9BQUtDLEVBQUE7QUFBQTtjQUFrREMsRUFBQVosQ0FBQSxFQUFJLFFBQVE7QUFBQSxjQUFrQlksRUFBQVosQ0FBQSxFQUFJLFVBQVU7QUFBQSxjQUFxQlksRUFBQVosQ0FBQSxFQUFJLFNBQVMsRUFBRTtBQUFBLGNBQW9CWSxFQUFBWixDQUFBLEVBQUksU0FBUyxFQUFFO0FBQUEsY0FBa0JZLEVBQUFaLENBQUEsRUFBSSxRQUFRLEVBQUU7QUFBQSxjQUFpQlksRUFBQVosQ0FBQSxFQUFJLE1BQU07QUFBQSxZQUFBO3FCQVNsTztBQUFBLFlBQUosS0FBSTZSO0FBQUEsVUFBQTtZQUVKL08sRUFBUUMsRUFBQSxRQUFBLFdBQUEsQ0FBQSxHQUFBLFFBQUEsRUFBQTtBQUFBLFVBQUE7VUFhRjBQLEVBQUFBLE9BQU8sZUFWZmpTLEVBYVMsVUFBQTtBQUFBO1lBWk4sT0FBS0csRUFBQTtBQUFBO2NBQWlEQyxFQUFBWixDQUFBLEVBQUksTUFBTTtBQUFBLGNBQWlCWSxFQUFBWixDQUFBLEVBQUksUUFBUTtBQUFBLGNBQWtCWSxFQUFBWixDQUFBLEVBQUksSUFBSTtBQUFBLGNBQWlCWSxFQUFBWixDQUFBLEVBQUksVUFBVTtBQUFBLGNBQXFCWSxFQUFBWixDQUFBLEVBQUksUUFBUSxFQUFFO0FBQUEsY0FBaUJZLEVBQUFaLENBQUEsRUFBSSxPQUFPO0FBQUEsWUFBQTs7WUFXdE44QyxFQUFzQkMsRUFBQSxRQUFBLFVBQUEsQ0FBQSxHQUFBLFFBQUEsRUFBQTtBQUFBLFVBQUE7Ozs7Ozs7Ozs7Ozs7OztBQ3BNOUIsVUFBTTFDLElBQVFDLEdBRVJxRixJQUFlbkQsaUJBQXNDLEdBRXJEa1EsSUFBb0I1TyxFQUFTLE1BQU0sSUFBSSxNQUFNekQsRUFBTSxTQUFTLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxDQUFDc1MsR0FBT3ZOLE1BQVVBLElBQVEsQ0FBQyxDQUFDLEdBRXZHeUYsSUFBYyxDQUFDekYsTUFBa0I7QUFDckMsTUFBQU8sRUFBYSxRQUFRUDtBQUFBLElBQ3ZCLEdBRU13TixJQUFzQixNQUFNO0FBQ2hDLE1BQUFqTixFQUFhO0FBQUEsSUFDZixHQUVNa04sSUFBa0IsTUFBTTtBQUM1QixNQUFBbE4sRUFBYTtBQUFBLElBQ2Y7MkJBSUFuRixFQThCVSxXQUFBO0FBQUEsTUE3QlAsT0FBS0csRUFBQSxDQUFBLG1CQUFzQkMsRUFBQVosQ0FBQSxFQUFJLFFBQVEsTUFBTVksRUFBQVosQ0FBQSxFQUFJLE1BQU0sUUFBUVksRUFBQVosQ0FBQSxFQUFJLE1BQU0sUUFBUVksRUFBQVosQ0FBQSxFQUFJLElBQUksU0FBU1ksRUFBQVosQ0FBQSxFQUFJLE1BQU0sSUFBSSxDQUFBO0FBQUEsSUFBQTtNQUVqSDRDLEVBS0VrQyxJQUFBO0FBQUEsUUFKQyxVQUFVYSxFQUFBLFNBQVk7QUFBQSxRQUN0QixNQUFNL0UsRUFBQXlCLENBQUEsRUFBSztBQUFBLFFBQ1gsVUFBVXpCLEVBQUErQyxFQUFBLEVBQVM7QUFBQSxRQUNuQixTQUFPaVA7QUFBQSxNQUFBO01BR1ZsUyxFQVlLLE1BQUE7QUFBQSxRQVpBLE9BQUtDLEVBQUEsQ0FBR0MsS0FBSSxRQUFRLE1BQU1BLEVBQUFaLENBQUEsRUFBSSxNQUFNLFFBQVFZLEVBQUFaLENBQUEsRUFBSSxJQUFJLFNBQVNZLEVBQUFaLENBQUEsRUFBSSxhQUFhLEdBQUcsQ0FBQTtBQUFBLE1BQUE7Z0JBQ3BGUSxFQVVLMEUsR0FBQSxNQUFBYyxFQVJ3QjBNLEVBQUEsT0FBaUIsQ0FBckNJLFlBRlR0UyxFQVVLLE1BQUEsRUFURixLQUFLc1MsS0FBZ0I7QUFBQSxVQUd0QmxRLEVBS0VtUSxJQUFBO0FBQUEsWUFKQyxVQUFVcE4sRUFBQSxVQUFpQm1OO0FBQUEsWUFDM0IsT0FBT0E7QUFBQSxZQUNQLFVBQVVsUyxFQUFBK0MsRUFBQSxFQUFTO0FBQUEsWUFDbkIsU0FBSyxDQUFBK0IsTUFBRW1GLEVBQVlpSSxDQUFnQjtBQUFBLFVBQUE7OztNQUsxQ2xRLEVBS0VrQyxJQUFBO0FBQUEsUUFKQyxVQUFVYSxFQUFBLFNBQWdCK00sUUFBa0JBLEVBQUEsTUFBa0IsU0FBTSxDQUFBO0FBQUEsUUFDcEUsTUFBTTlSLEVBQUF5QixDQUFBLEVBQUs7QUFBQSxRQUNYLFVBQVV6QixFQUFBK0MsRUFBQSxFQUFTO0FBQUEsUUFDbkIsU0FBT2tQO0FBQUEsTUFBQTs7O0lDeERSRyxLQUFRLENBQUMsT0FBTyxTQUFTLFVBQVUsTUFBTSxHQUN6Q0MsS0FBYSxDQUFDLFNBQVMsS0FBSyxHQUM1QkMsS0FBMEIsZ0JBQUFGLEdBQU0sT0FBTyxDQUFDRyxHQUFLQyxNQUFTRCxFQUFJLE9BQU9DLEdBQU1BLElBQU8sTUFBTUgsR0FBVyxDQUFDLEdBQUdHLElBQU8sTUFBTUgsR0FBVyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQ2xJSSxLQUFNLEtBQUssS0FDWEMsS0FBTSxLQUFLLEtBQ1hDLEtBQVEsS0FBSyxPQUNiQyxLQUFRLEtBQUssT0FDYkMsS0FBZSxDQUFBQyxPQUFNO0FBQUEsRUFDekIsR0FBR0E7QUFBQSxFQUNILEdBQUdBO0FBQ0wsSUFDTUMsS0FBa0I7QUFBQSxFQUN0QixNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxRQUFRO0FBQUEsRUFDUixLQUFLO0FBQ1AsR0FDTUMsS0FBdUI7QUFBQSxFQUMzQixPQUFPO0FBQUEsRUFDUCxLQUFLO0FBQ1A7QUFDQSxTQUFTQyxHQUFNQyxHQUFPdEgsR0FBT3VILEdBQUs7QUFDaEMsU0FBT1QsR0FBSVEsR0FBT1QsR0FBSTdHLEdBQU91SCxDQUFHLENBQUM7QUFDbkM7QUFDQSxTQUFTQyxHQUFTeEgsR0FBT3lILEdBQU87QUFDOUIsU0FBTyxPQUFPekgsS0FBVSxhQUFhQSxFQUFNeUgsQ0FBSyxJQUFJekg7QUFDdEQ7QUFDQSxTQUFTMEgsR0FBUUMsR0FBVztBQUMxQixTQUFPQSxFQUFVLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDL0I7QUFDQSxTQUFTQyxHQUFhRCxHQUFXO0FBQy9CLFNBQU9BLEVBQVUsTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUMvQjtBQUNBLFNBQVNFLEdBQWdCQyxHQUFNO0FBQzdCLFNBQU9BLE1BQVMsTUFBTSxNQUFNO0FBQzlCO0FBQ0EsU0FBU0MsR0FBY0QsR0FBTTtBQUMzQixTQUFPQSxNQUFTLE1BQU0sV0FBVztBQUNuQztBQUNBLFNBQVNFLEdBQVlMLEdBQVc7QUFDOUIsU0FBTyxDQUFDLE9BQU8sUUFBUSxFQUFFLFNBQVNELEdBQVFDLENBQVMsQ0FBQyxJQUFJLE1BQU07QUFDaEU7QUFDQSxTQUFTTSxHQUFpQk4sR0FBVztBQUNuQyxTQUFPRSxHQUFnQkcsR0FBWUwsQ0FBUyxDQUFDO0FBQy9DO0FBQ0EsU0FBU08sR0FBa0JQLEdBQVdRLEdBQU9DLEdBQUs7QUFDaEQsRUFBSUEsTUFBUSxXQUNWQSxJQUFNO0FBRVIsUUFBTUMsSUFBWVQsR0FBYUQsQ0FBUyxHQUNsQ1csSUFBZ0JMLEdBQWlCTixDQUFTLEdBQzFDWSxJQUFTUixHQUFjTyxDQUFhO0FBQzFDLE1BQUlFLElBQW9CRixNQUFrQixNQUFNRCxPQUFlRCxJQUFNLFFBQVEsV0FBVyxVQUFVLFNBQVNDLE1BQWMsVUFBVSxXQUFXO0FBQzlJLFNBQUlGLEVBQU0sVUFBVUksQ0FBTSxJQUFJSixFQUFNLFNBQVNJLENBQU0sTUFDakRDLElBQW9CQyxHQUFxQkQsQ0FBaUIsSUFFckQsQ0FBQ0EsR0FBbUJDLEdBQXFCRCxDQUFpQixDQUFDO0FBQ3BFO0FBS0EsU0FBU0UsR0FBOEJmLEdBQVc7QUFDaEQsU0FBT0EsRUFBVSxRQUFRLGNBQWMsQ0FBQVUsTUFBYWpCLEdBQXFCaUIsQ0FBUyxDQUFDO0FBQ3JGO0FBNkJBLFNBQVNJLEdBQXFCZCxHQUFXO0FBQ3ZDLFNBQU9BLEVBQVUsUUFBUSwwQkFBMEIsQ0FBQWYsTUFBUU8sR0FBZ0JQLENBQUksQ0FBQztBQUNsRjtBQUNBLFNBQVMrQixHQUFvQkMsR0FBUztBQUNwQyxTQUFPO0FBQUEsSUFDTCxLQUFLO0FBQUEsSUFDTCxPQUFPO0FBQUEsSUFDUCxRQUFRO0FBQUEsSUFDUixNQUFNO0FBQUEsSUFDTixHQUFHQTtBQUFBLEVBQ1A7QUFDQTtBQUNBLFNBQVNDLEdBQWlCRCxHQUFTO0FBQ2pDLFNBQU8sT0FBT0EsS0FBWSxXQUFXRCxHQUFvQkMsQ0FBTyxJQUFJO0FBQUEsSUFDbEUsS0FBS0E7QUFBQSxJQUNMLE9BQU9BO0FBQUEsSUFDUCxRQUFRQTtBQUFBLElBQ1IsTUFBTUE7QUFBQSxFQUNWO0FBQ0E7QUFDQSxTQUFTRSxHQUFpQkMsR0FBTTtBQUM5QixRQUFNO0FBQUEsSUFDSixHQUFBQztBQUFBLElBQ0EsR0FBQUM7QUFBQSxJQUNBLE9BQUFDO0FBQUEsSUFDQSxRQUFBQztBQUFBLEVBQ0osSUFBTUo7QUFDSixTQUFPO0FBQUEsSUFDTCxPQUFBRztBQUFBLElBQ0EsUUFBQUM7QUFBQSxJQUNBLEtBQUtGO0FBQUEsSUFDTCxNQUFNRDtBQUFBLElBQ04sT0FBT0EsSUFBSUU7QUFBQSxJQUNYLFFBQVFELElBQUlFO0FBQUEsSUFDWixHQUFBSDtBQUFBLElBQ0EsR0FBQUM7QUFBQSxFQUNKO0FBQ0E7QUNwSUEsU0FBU0csR0FBMkJDLEdBQU0xQixHQUFXUyxHQUFLO0FBQ3hELE1BQUk7QUFBQSxJQUNGLFdBQUFrQjtBQUFBLElBQ0EsVUFBQUM7QUFBQSxFQUNKLElBQU1GO0FBQ0osUUFBTUcsSUFBV3hCLEdBQVlMLENBQVMsR0FDaENXLElBQWdCTCxHQUFpQk4sQ0FBUyxHQUMxQzhCLElBQWMxQixHQUFjTyxDQUFhLEdBQ3pDMUIsSUFBT2MsR0FBUUMsQ0FBUyxHQUN4QitCLElBQWFGLE1BQWEsS0FDMUJHLElBQVVMLEVBQVUsSUFBSUEsRUFBVSxRQUFRLElBQUlDLEVBQVMsUUFBUSxHQUMvREssSUFBVU4sRUFBVSxJQUFJQSxFQUFVLFNBQVMsSUFBSUMsRUFBUyxTQUFTLEdBQ2pFTSxJQUFjUCxFQUFVRyxDQUFXLElBQUksSUFBSUYsRUFBU0UsQ0FBVyxJQUFJO0FBQ3pFLE1BQUlLO0FBQ0osVUFBUWxELEdBQUk7QUFBQSxJQUNWLEtBQUs7QUFDSCxNQUFBa0QsSUFBUztBQUFBLFFBQ1AsR0FBR0g7QUFBQSxRQUNILEdBQUdMLEVBQVUsSUFBSUMsRUFBUztBQUFBLE1BQ2xDO0FBQ007QUFBQSxJQUNGLEtBQUs7QUFDSCxNQUFBTyxJQUFTO0FBQUEsUUFDUCxHQUFHSDtBQUFBLFFBQ0gsR0FBR0wsRUFBVSxJQUFJQSxFQUFVO0FBQUEsTUFDbkM7QUFDTTtBQUFBLElBQ0YsS0FBSztBQUNILE1BQUFRLElBQVM7QUFBQSxRQUNQLEdBQUdSLEVBQVUsSUFBSUEsRUFBVTtBQUFBLFFBQzNCLEdBQUdNO0FBQUEsTUFDWDtBQUNNO0FBQUEsSUFDRixLQUFLO0FBQ0gsTUFBQUUsSUFBUztBQUFBLFFBQ1AsR0FBR1IsRUFBVSxJQUFJQyxFQUFTO0FBQUEsUUFDMUIsR0FBR0s7QUFBQSxNQUNYO0FBQ007QUFBQSxJQUNGO0FBQ0UsTUFBQUUsSUFBUztBQUFBLFFBQ1AsR0FBR1IsRUFBVTtBQUFBLFFBQ2IsR0FBR0EsRUFBVTtBQUFBLE1BQ3JCO0FBQUEsRUFDQTtBQUNFLFVBQVExQixHQUFhRCxDQUFTLEdBQUM7QUFBQSxJQUM3QixLQUFLO0FBQ0gsTUFBQW1DLEVBQU94QixDQUFhLEtBQUt1QixLQUFlekIsS0FBT3NCLElBQWEsS0FBSztBQUNqRTtBQUFBLElBQ0YsS0FBSztBQUNILE1BQUFJLEVBQU94QixDQUFhLEtBQUt1QixLQUFlekIsS0FBT3NCLElBQWEsS0FBSztBQUNqRTtBQUFBLEVBQ047QUFDRSxTQUFPSTtBQUNUO0FBU0EsTUFBTUMsS0FBa0IsT0FBT1QsR0FBV0MsR0FBVTFTLE1BQVc7QUFDN0QsUUFBTTtBQUFBLElBQ0osV0FBQThRLElBQVk7QUFBQSxJQUNaLFVBQUFxQyxJQUFXO0FBQUEsSUFDWCxZQUFBQyxJQUFhLENBQUE7QUFBQSxJQUNiLFVBQUFDO0FBQUEsRUFDSixJQUFNclQsR0FDRXNULElBQWtCRixFQUFXLE9BQU8sT0FBTyxHQUMzQzdCLElBQU0sT0FBTzhCLEVBQVMsU0FBUyxPQUFPLFNBQVNBLEVBQVMsTUFBTVgsQ0FBUTtBQUM1RSxNQUFJcEIsSUFBUSxNQUFNK0IsRUFBUyxnQkFBZ0I7QUFBQSxJQUN6QyxXQUFBWjtBQUFBLElBQ0EsVUFBQUM7QUFBQSxJQUNBLFVBQUFTO0FBQUEsRUFDSixDQUFHLEdBQ0c7QUFBQSxJQUNGLEdBQUFoQjtBQUFBLElBQ0EsR0FBQUM7QUFBQSxFQUNKLElBQU1HLEdBQTJCakIsR0FBT1IsR0FBV1MsQ0FBRyxHQUNoRGdDLElBQW9CekMsR0FDcEIwQyxJQUFpQixDQUFBLEdBQ2pCQyxJQUFhO0FBQ2pCLFdBQVNDLElBQUksR0FBR0EsSUFBSUosRUFBZ0IsUUFBUUksS0FBSztBQUMvQyxVQUFNO0FBQUEsTUFDSixNQUFBblY7QUFBQSxNQUNBLElBQUFvVjtBQUFBLElBQ04sSUFBUUwsRUFBZ0JJLENBQUMsR0FDZjtBQUFBLE1BQ0osR0FBR0U7QUFBQSxNQUNILEdBQUdDO0FBQUEsTUFDSCxNQUFBQztBQUFBLE1BQ0EsT0FBQUM7QUFBQSxJQUNOLElBQVEsTUFBTUosRUFBRztBQUFBLE1BQ1gsR0FBQXhCO0FBQUEsTUFDQSxHQUFBQztBQUFBLE1BQ0Esa0JBQWtCdEI7QUFBQSxNQUNsQixXQUFXeUM7QUFBQSxNQUNYLFVBQUFKO0FBQUEsTUFDQSxnQkFBQUs7QUFBQSxNQUNBLE9BQUFsQztBQUFBLE1BQ0EsVUFBQStCO0FBQUEsTUFDQSxVQUFVO0FBQUEsUUFDUixXQUFBWjtBQUFBLFFBQ0EsVUFBQUM7QUFBQSxNQUNSO0FBQUEsSUFDQSxDQUFLO0FBQ0QsSUFBQVAsSUFBSXlCLEtBQXdCekIsR0FDNUJDLElBQUl5QixLQUF3QnpCLEdBQzVCb0IsSUFBaUI7QUFBQSxNQUNmLEdBQUdBO0FBQUEsTUFDSCxDQUFDalYsQ0FBSSxHQUFHO0FBQUEsUUFDTixHQUFHaVYsRUFBZWpWLENBQUk7QUFBQSxRQUN0QixHQUFHdVY7QUFBQSxNQUNYO0FBQUEsSUFDQSxHQUNRQyxLQUFTTixLQUFjLE9BQ3pCQSxLQUNJLE9BQU9NLEtBQVUsYUFDZkEsRUFBTSxjQUNSUixJQUFvQlEsRUFBTSxZQUV4QkEsRUFBTSxVQUNSekMsSUFBUXlDLEVBQU0sVUFBVSxLQUFPLE1BQU1WLEVBQVMsZ0JBQWdCO0FBQUEsTUFDNUQsV0FBQVo7QUFBQSxNQUNBLFVBQUFDO0FBQUEsTUFDQSxVQUFBUztBQUFBLElBQ1osQ0FBVyxJQUFJWSxFQUFNLFFBRVo7QUFBQSxNQUNDLEdBQUE1QjtBQUFBLE1BQ0EsR0FBQUM7QUFBQSxJQUNWLElBQVlHLEdBQTJCakIsR0FBT2lDLEdBQW1CaEMsQ0FBRyxJQUU5RG1DLElBQUk7QUFBQSxFQUVSO0FBQ0EsU0FBTztBQUFBLElBQ0wsR0FBQXZCO0FBQUEsSUFDQSxHQUFBQztBQUFBLElBQ0EsV0FBV21CO0FBQUEsSUFDWCxVQUFBSjtBQUFBLElBQ0EsZ0JBQUFLO0FBQUEsRUFDSjtBQUNBO0FBVUEsZUFBZVEsR0FBZUMsR0FBT3BPLEdBQVM7QUFDNUMsTUFBSXFPO0FBQ0osRUFBSXJPLE1BQVksV0FDZEEsSUFBVSxDQUFBO0FBRVosUUFBTTtBQUFBLElBQ0osR0FBQXNNO0FBQUEsSUFDQSxHQUFBQztBQUFBLElBQ0EsVUFBQWlCO0FBQUEsSUFDQSxPQUFBL0I7QUFBQSxJQUNBLFVBQUE2QztBQUFBLElBQ0EsVUFBQWhCO0FBQUEsRUFDSixJQUFNYyxHQUNFO0FBQUEsSUFDSixVQUFBRyxJQUFXO0FBQUEsSUFDWCxjQUFBQyxJQUFlO0FBQUEsSUFDZixnQkFBQUMsSUFBaUI7QUFBQSxJQUNqQixhQUFBQyxJQUFjO0FBQUEsSUFDZCxTQUFBeEMsSUFBVTtBQUFBLEVBQ2QsSUFBTXBCLEdBQVM5SyxHQUFTb08sQ0FBSyxHQUNyQk8sSUFBZ0J4QyxHQUFpQkQsQ0FBTyxHQUV4Q3ROLElBQVUwUCxFQUFTSSxJQURORCxNQUFtQixhQUFhLGNBQWMsYUFDYkEsQ0FBYyxHQUM1REcsSUFBcUJ4QyxHQUFpQixNQUFNb0IsRUFBUyxnQkFBZ0I7QUFBQSxJQUN6RSxVQUFXYSxJQUF3QixPQUFPYixFQUFTLGFBQWEsT0FBTyxTQUFTQSxFQUFTLFVBQVU1TyxDQUFPLE9BQU8sUUFBT3lQLElBQWdDelAsSUFBVUEsRUFBUSxrQkFBbUIsT0FBTzRPLEVBQVMsc0JBQXNCLE9BQU8sU0FBU0EsRUFBUyxtQkFBbUJjLEVBQVMsUUFBUTtBQUFBLElBQ2hTLFVBQUFDO0FBQUEsSUFDQSxjQUFBQztBQUFBLElBQ0EsVUFBQWxCO0FBQUEsRUFDSixDQUFHLENBQUMsR0FDSWpCLElBQU9vQyxNQUFtQixhQUFhO0FBQUEsSUFDM0MsR0FBQW5DO0FBQUEsSUFDQSxHQUFBQztBQUFBLElBQ0EsT0FBT2QsRUFBTSxTQUFTO0FBQUEsSUFDdEIsUUFBUUEsRUFBTSxTQUFTO0FBQUEsRUFDM0IsSUFBTUEsRUFBTSxXQUNKb0QsSUFBZSxPQUFPckIsRUFBUyxtQkFBbUIsT0FBTyxTQUFTQSxFQUFTLGdCQUFnQmMsRUFBUyxRQUFRLElBQzVHUSxJQUFlLE9BQU90QixFQUFTLGFBQWEsT0FBTyxTQUFTQSxFQUFTLFVBQVVxQixDQUFZLEtBQU8sT0FBT3JCLEVBQVMsWUFBWSxPQUFPLFNBQVNBLEVBQVMsU0FBU3FCLENBQVksTUFBTztBQUFBLElBQ3ZMLEdBQUc7QUFBQSxJQUNILEdBQUc7QUFBQSxFQUNQLElBQU07QUFBQSxJQUNGLEdBQUc7QUFBQSxJQUNILEdBQUc7QUFBQSxFQUNQLEdBQ1FFLElBQW9CM0MsR0FBaUJvQixFQUFTLHdEQUF3RCxNQUFNQSxFQUFTLHNEQUFzRDtBQUFBLElBQy9LLFVBQUFjO0FBQUEsSUFDQSxNQUFBakM7QUFBQSxJQUNBLGNBQUF3QztBQUFBLElBQ0EsVUFBQXZCO0FBQUEsRUFDSixDQUFHLElBQUlqQixDQUFJO0FBQ1QsU0FBTztBQUFBLElBQ0wsTUFBTXVDLEVBQW1CLE1BQU1HLEVBQWtCLE1BQU1KLEVBQWMsT0FBT0csRUFBWTtBQUFBLElBQ3hGLFNBQVNDLEVBQWtCLFNBQVNILEVBQW1CLFNBQVNELEVBQWMsVUFBVUcsRUFBWTtBQUFBLElBQ3BHLE9BQU9GLEVBQW1CLE9BQU9HLEVBQWtCLE9BQU9KLEVBQWMsUUFBUUcsRUFBWTtBQUFBLElBQzVGLFFBQVFDLEVBQWtCLFFBQVFILEVBQW1CLFFBQVFELEVBQWMsU0FBU0csRUFBWTtBQUFBLEVBQ3BHO0FBQ0E7QUFvRkEsU0FBU0UsR0FBaUJyRCxHQUFXc0QsR0FBZUMsR0FBbUI7QUFFckUsVUFEMkN2RCxJQUFZLENBQUMsR0FBR3VELEVBQWtCLE9BQU8sQ0FBQWpFLE1BQWFDLEdBQWFELENBQVMsTUFBTVUsQ0FBUyxHQUFHLEdBQUd1RCxFQUFrQixPQUFPLENBQUFqRSxNQUFhQyxHQUFhRCxDQUFTLE1BQU1VLENBQVMsQ0FBQyxJQUFJdUQsRUFBa0IsT0FBTyxDQUFBakUsTUFBYUQsR0FBUUMsQ0FBUyxNQUFNQSxDQUFTLEdBQ3hQLE9BQU8sQ0FBQUEsTUFDM0NVLElBQ0tULEdBQWFELENBQVMsTUFBTVUsTUFBY3NELElBQWdCakQsR0FBOEJmLENBQVMsTUFBTUEsSUFBWSxNQUVySCxFQUNSO0FBQ0g7QUFPQSxNQUFNa0UsS0FBZ0IsU0FBVW5QLEdBQVM7QUFDdkMsU0FBSUEsTUFBWSxXQUNkQSxJQUFVLENBQUEsSUFFTDtBQUFBLElBQ0wsTUFBTTtBQUFBLElBQ04sU0FBQUE7QUFBQSxJQUNBLE1BQU0sR0FBR29PLEdBQU87QUFDZCxVQUFJZ0IsR0FBdUJDLEdBQXdCQztBQUNuRCxZQUFNO0FBQUEsUUFDSixPQUFBN0Q7QUFBQSxRQUNBLGdCQUFBa0M7QUFBQSxRQUNBLFdBQUExQztBQUFBLFFBQ0EsVUFBQXVDO0FBQUEsUUFDQSxVQUFBYztBQUFBLE1BQ1IsSUFBVUYsR0FDRTtBQUFBLFFBQ0osV0FBQW1CLElBQVk7QUFBQSxRQUNaLFdBQUE1RDtBQUFBLFFBQ0EsbUJBQUF1RCxJQUFvQmxGO0FBQUEsUUFDcEIsZUFBQWlGLElBQWdCO0FBQUEsUUFDaEIsR0FBR087QUFBQSxNQUNYLElBQVUxRSxHQUFTOUssR0FBU29PLENBQUssR0FDckJxQixJQUFlOUQsTUFBYyxVQUFhdUQsTUFBc0JsRixLQUFhZ0YsR0FBaUJyRCxLQUFhLE1BQU1zRCxHQUFlQyxDQUFpQixJQUFJQSxHQUNySlEsSUFBVyxNQUFNdkIsR0FBZUMsR0FBT29CLENBQXFCLEdBQzVEL1MsTUFBaUIyUyxJQUF3QnpCLEVBQWUsa0JBQWtCLE9BQU8sU0FBU3lCLEVBQXNCLFVBQVUsR0FDMUhPLElBQW1CRixFQUFhaFQsQ0FBWTtBQUNsRCxVQUFJa1QsS0FBb0I7QUFDdEIsZUFBTyxDQUFBO0FBRVQsWUFBTUMsSUFBaUJwRSxHQUFrQm1FLEdBQWtCbEUsR0FBTyxPQUFPK0IsRUFBUyxTQUFTLE9BQU8sU0FBU0EsRUFBUyxNQUFNYyxFQUFTLFFBQVEsRUFBRTtBQUc3SSxVQUFJckQsTUFBYzBFO0FBQ2hCLGVBQU87QUFBQSxVQUNMLE9BQU87QUFBQSxZQUNMLFdBQVdGLEVBQWEsQ0FBQztBQUFBLFVBQ3JDO0FBQUEsUUFDQTtBQUVNLFlBQU1JLElBQW1CLENBQUNILEVBQVMxRSxHQUFRMkUsQ0FBZ0IsQ0FBQyxHQUFHRCxFQUFTRSxFQUFlLENBQUMsQ0FBQyxHQUFHRixFQUFTRSxFQUFlLENBQUMsQ0FBQyxDQUFDLEdBQ2pIRSxJQUFlLENBQUMsS0FBTVQsSUFBeUIxQixFQUFlLGtCQUFrQixPQUFPLFNBQVMwQixFQUF1QixjQUFjLENBQUEsR0FBSztBQUFBLFFBQzlJLFdBQVdNO0FBQUEsUUFDWCxXQUFXRTtBQUFBLE1BQ25CLENBQU8sR0FDS0UsSUFBZ0JOLEVBQWFoVCxJQUFlLENBQUM7QUFHbkQsVUFBSXNUO0FBQ0YsZUFBTztBQUFBLFVBQ0wsTUFBTTtBQUFBLFlBQ0osT0FBT3RULElBQWU7QUFBQSxZQUN0QixXQUFXcVQ7QUFBQSxVQUN2QjtBQUFBLFVBQ1UsT0FBTztBQUFBLFlBQ0wsV0FBV0M7QUFBQSxVQUN2QjtBQUFBLFFBQ0E7QUFFTSxZQUFNQyxJQUE4QkYsRUFBYSxJQUFJLENBQUFHLE1BQUs7QUFDeEQsY0FBTXRFLElBQVlULEdBQWErRSxFQUFFLFNBQVM7QUFDMUMsZUFBTyxDQUFDQSxFQUFFLFdBQVd0RSxLQUFhNEQ7QUFBQTtBQUFBLFVBRWxDVSxFQUFFLFVBQVUsTUFBTSxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUNoRyxJQUFLTyxPQUFNUCxLQUFNTyxJQUFHLENBQUM7QUFBQTtBQUFBO0FBQUEsVUFFckR5RixFQUFFLFVBQVUsQ0FBQztBQUFBLFdBQUdBLEVBQUUsU0FBUztBQUFBLE1BQzdCLENBQUMsRUFBRSxLQUFLLENBQUM1UCxHQUFHQyxNQUFNRCxFQUFFLENBQUMsSUFBSUMsRUFBRSxDQUFDLENBQUMsR0FLdkI0UCxPQUFtQlosSUFKV1UsRUFBNEIsT0FBTyxDQUFBQyxNQUFLQSxFQUFFLENBQUMsRUFBRTtBQUFBLFFBQU07QUFBQTtBQUFBO0FBQUEsUUFHdkYvRSxHQUFhK0UsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJO0FBQUEsTUFBQyxFQUFFLE1BQU0sQ0FBQXpGLE1BQUtBLEtBQUssQ0FBQyxDQUFDLEVBQytCLENBQUMsTUFBTSxPQUFPLFNBQVM4RSxFQUFzQixDQUFDLE1BQU1VLEVBQTRCLENBQUMsRUFBRSxDQUFDO0FBQ2pLLGFBQUlFLE9BQW1CakYsSUFDZDtBQUFBLFFBQ0wsTUFBTTtBQUFBLFVBQ0osT0FBT3hPLElBQWU7QUFBQSxVQUN0QixXQUFXcVQ7QUFBQSxRQUN2QjtBQUFBLFFBQ1UsT0FBTztBQUFBLFVBQ0wsV0FBV0k7QUFBQSxRQUN2QjtBQUFBLE1BQ0EsSUFFYSxDQUFBO0FBQUEsSUFDVDtBQUFBLEVBQ0o7QUFDQTtBQTJVQSxlQUFlQyxHQUFxQi9CLEdBQU9wTyxHQUFTO0FBQ2xELFFBQU07QUFBQSxJQUNKLFdBQUFpTDtBQUFBLElBQ0EsVUFBQXVDO0FBQUEsSUFDQSxVQUFBYztBQUFBLEVBQ0osSUFBTUYsR0FDRTFDLElBQU0sT0FBTzhCLEVBQVMsU0FBUyxPQUFPLFNBQVNBLEVBQVMsTUFBTWMsRUFBUyxRQUFRLElBQy9FcEUsSUFBT2MsR0FBUUMsQ0FBUyxHQUN4QlUsSUFBWVQsR0FBYUQsQ0FBUyxHQUNsQytCLElBQWExQixHQUFZTCxDQUFTLE1BQU0sS0FDeENtRixJQUFnQixDQUFDLFFBQVEsS0FBSyxFQUFFLFNBQVNsRyxDQUFJLElBQUksS0FBSyxHQUN0RG1HLElBQWlCM0UsS0FBT3NCLElBQWEsS0FBSyxHQUMxQ3NELElBQVd4RixHQUFTOUssR0FBU29PLENBQUs7QUFHeEMsTUFBSTtBQUFBLElBQ0YsVUFBQW1DO0FBQUEsSUFDQSxXQUFBaEI7QUFBQSxJQUNBLGVBQUEzRDtBQUFBLEVBQ0osSUFBTSxPQUFPMEUsS0FBYSxXQUFXO0FBQUEsSUFDakMsVUFBVUE7QUFBQSxJQUNWLFdBQVc7QUFBQSxJQUNYLGVBQWU7QUFBQSxFQUNuQixJQUFNO0FBQUEsSUFDRixVQUFVQSxFQUFTLFlBQVk7QUFBQSxJQUMvQixXQUFXQSxFQUFTLGFBQWE7QUFBQSxJQUNqQyxlQUFlQSxFQUFTO0FBQUEsRUFDNUI7QUFDRSxTQUFJM0UsS0FBYSxPQUFPQyxLQUFrQixhQUN4QzJELElBQVk1RCxNQUFjLFFBQVFDLElBQWdCLEtBQUtBLElBRWxEb0IsSUFBYTtBQUFBLElBQ2xCLEdBQUd1QyxJQUFZYztBQUFBLElBQ2YsR0FBR0UsSUFBV0g7QUFBQSxFQUNsQixJQUFNO0FBQUEsSUFDRixHQUFHRyxJQUFXSDtBQUFBLElBQ2QsR0FBR2IsSUFBWWM7QUFBQSxFQUNuQjtBQUNBO0FBU0EsTUFBTTFRLEtBQVMsU0FBVUssR0FBUztBQUNoQyxTQUFJQSxNQUFZLFdBQ2RBLElBQVUsSUFFTDtBQUFBLElBQ0wsTUFBTTtBQUFBLElBQ04sU0FBQUE7QUFBQSxJQUNBLE1BQU0sR0FBR29PLEdBQU87QUFDZCxVQUFJb0MsR0FBdUJDO0FBQzNCLFlBQU07QUFBQSxRQUNKLEdBQUFuRTtBQUFBLFFBQ0EsR0FBQUM7QUFBQSxRQUNBLFdBQUF0QjtBQUFBLFFBQ0EsZ0JBQUEwQztBQUFBLE1BQ1IsSUFBVVMsR0FDRXNDLElBQWEsTUFBTVAsR0FBcUIvQixHQUFPcE8sQ0FBTztBQUk1RCxhQUFJaUwsUUFBZ0J1RixJQUF3QjdDLEVBQWUsV0FBVyxPQUFPLFNBQVM2QyxFQUFzQixlQUFlQyxJQUF3QjlDLEVBQWUsVUFBVSxRQUFROEMsRUFBc0Isa0JBQ2pNLENBQUEsSUFFRjtBQUFBLFFBQ0wsR0FBR25FLElBQUlvRSxFQUFXO0FBQUEsUUFDbEIsR0FBR25FLElBQUltRSxFQUFXO0FBQUEsUUFDbEIsTUFBTTtBQUFBLFVBQ0osR0FBR0E7QUFBQSxVQUNILFdBQUF6RjtBQUFBLFFBQ1Y7QUFBQSxNQUNBO0FBQUEsSUFDSTtBQUFBLEVBQ0o7QUFDQSxHQU9NMEYsS0FBUSxTQUFVM1EsR0FBUztBQUMvQixTQUFJQSxNQUFZLFdBQ2RBLElBQVUsQ0FBQSxJQUVMO0FBQUEsSUFDTCxNQUFNO0FBQUEsSUFDTixTQUFBQTtBQUFBLElBQ0EsTUFBTSxHQUFHb08sR0FBTztBQUNkLFlBQU07QUFBQSxRQUNKLEdBQUE5QjtBQUFBLFFBQ0EsR0FBQUM7QUFBQSxRQUNBLFdBQUF0QjtBQUFBLE1BQ1IsSUFBVW1ELEdBQ0U7QUFBQSxRQUNKLFVBQVV3QyxJQUFnQjtBQUFBLFFBQzFCLFdBQVdDLElBQWlCO0FBQUEsUUFDNUIsU0FBQUMsSUFBVTtBQUFBLFVBQ1IsSUFBSSxDQUFBbkUsTUFBUTtBQUNWLGdCQUFJO0FBQUEsY0FDRixHQUFBTDtBQUFBLGNBQ0EsR0FBQUM7QUFBQSxZQUNkLElBQWdCSTtBQUNKLG1CQUFPO0FBQUEsY0FDTCxHQUFBTDtBQUFBLGNBQ0EsR0FBQUM7QUFBQSxZQUNkO0FBQUEsVUFDVTtBQUFBLFFBQ1Y7QUFBQSxRQUNRLEdBQUdpRDtBQUFBLE1BQ1gsSUFBVTFFLEdBQVM5SyxHQUFTb08sQ0FBSyxHQUNyQmhCLElBQVM7QUFBQSxRQUNiLEdBQUFkO0FBQUEsUUFDQSxHQUFBQztBQUFBLE1BQ1IsR0FDWW1ELElBQVcsTUFBTXZCLEdBQWVDLEdBQU9vQixDQUFxQixHQUM1REQsSUFBWWpFLEdBQVlOLEdBQVFDLENBQVMsQ0FBQyxHQUMxQ3NGLElBQVdwRixHQUFnQm9FLENBQVM7QUFDMUMsVUFBSXdCLElBQWdCM0QsRUFBT21ELENBQVEsR0FDL0JTLElBQWlCNUQsRUFBT21DLENBQVM7QUFDckMsVUFBSXFCLEdBQWU7QUFDakIsY0FBTUssSUFBVVYsTUFBYSxNQUFNLFFBQVEsUUFDckNXLElBQVVYLE1BQWEsTUFBTSxXQUFXLFNBQ3hDcEcsSUFBTTRHLElBQWdCckIsRUFBU3VCLENBQU8sR0FDdEM3RyxJQUFNMkcsSUFBZ0JyQixFQUFTd0IsQ0FBTztBQUM1QyxRQUFBSCxJQUFnQnBHLEdBQU1SLEdBQUs0RyxHQUFlM0csQ0FBRztBQUFBLE1BQy9DO0FBQ0EsVUFBSXlHLEdBQWdCO0FBQ2xCLGNBQU1JLElBQVUxQixNQUFjLE1BQU0sUUFBUSxRQUN0QzJCLElBQVUzQixNQUFjLE1BQU0sV0FBVyxTQUN6Q3BGLElBQU02RyxJQUFpQnRCLEVBQVN1QixDQUFPLEdBQ3ZDN0csSUFBTTRHLElBQWlCdEIsRUFBU3dCLENBQU87QUFDN0MsUUFBQUYsSUFBaUJyRyxHQUFNUixHQUFLNkcsR0FBZ0I1RyxDQUFHO0FBQUEsTUFDakQ7QUFDQSxZQUFNK0csSUFBZ0JMLEVBQVEsR0FBRztBQUFBLFFBQy9CLEdBQUcxQztBQUFBLFFBQ0gsQ0FBQ21DLENBQVEsR0FBR1E7QUFBQSxRQUNaLENBQUN4QixDQUFTLEdBQUd5QjtBQUFBLE1BQ3JCLENBQU87QUFDRCxhQUFPO0FBQUEsUUFDTCxHQUFHRztBQUFBLFFBQ0gsTUFBTTtBQUFBLFVBQ0osR0FBR0EsRUFBYyxJQUFJN0U7QUFBQSxVQUNyQixHQUFHNkUsRUFBYyxJQUFJNUU7QUFBQSxVQUNyQixTQUFTO0FBQUEsWUFDUCxDQUFDZ0UsQ0FBUSxHQUFHSztBQUFBLFlBQ1osQ0FBQ3JCLENBQVMsR0FBR3NCO0FBQUEsVUFDekI7QUFBQSxRQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0k7QUFBQSxFQUNKO0FBQ0E7QUN0M0JBLFNBQVNPLEtBQVk7QUFDbkIsU0FBTyxPQUFPLFNBQVc7QUFDM0I7QUFDQSxTQUFTQyxHQUFZN1YsR0FBTTtBQUN6QixTQUFJOFYsR0FBTzlWLENBQUksS0FDTEEsRUFBSyxZQUFZLElBQUksWUFBVyxJQUtuQztBQUNUO0FBQ0EsU0FBUytWLEdBQVUvVixHQUFNO0FBQ3ZCLE1BQUlnVztBQUNKLFVBQVFoVyxLQUFRLFNBQVNnVyxJQUFzQmhXLEVBQUssa0JBQWtCLE9BQU8sU0FBU2dXLEVBQW9CLGdCQUFnQjtBQUM1SDtBQUNBLFNBQVNDLEdBQW1CalcsR0FBTTtBQUNoQyxNQUFJbVI7QUFDSixVQUFRQSxLQUFRMkUsR0FBTzlWLENBQUksSUFBSUEsRUFBSyxnQkFBZ0JBLEVBQUssYUFBYSxPQUFPLGFBQWEsT0FBTyxTQUFTbVIsRUFBSztBQUNqSDtBQUNBLFNBQVMyRSxHQUFPaE8sR0FBTztBQUNyQixTQUFLOE4sR0FBUyxJQUdQOU4sYUFBaUIsUUFBUUEsYUFBaUJpTyxHQUFVak8sQ0FBSyxFQUFFLE9BRnpEO0FBR1g7QUFDQSxTQUFTb08sR0FBVXBPLEdBQU87QUFDeEIsU0FBSzhOLEdBQVMsSUFHUDlOLGFBQWlCLFdBQVdBLGFBQWlCaU8sR0FBVWpPLENBQUssRUFBRSxVQUY1RDtBQUdYO0FBQ0EsU0FBU3FPLEdBQWNyTyxHQUFPO0FBQzVCLFNBQUs4TixHQUFTLElBR1A5TixhQUFpQixlQUFlQSxhQUFpQmlPLEdBQVVqTyxDQUFLLEVBQUUsY0FGaEU7QUFHWDtBQUNBLFNBQVNzTyxHQUFhdE8sR0FBTztBQUMzQixTQUFJLENBQUM4TixHQUFTLEtBQU0sT0FBTyxhQUFlLE1BQ2pDLEtBRUY5TixhQUFpQixjQUFjQSxhQUFpQmlPLEdBQVVqTyxDQUFLLEVBQUU7QUFDMUU7QUFDQSxTQUFTdU8sR0FBa0JqVCxHQUFTO0FBQ2xDLFFBQU07QUFBQSxJQUNKLFVBQUE4UTtBQUFBLElBQ0EsV0FBQW9DO0FBQUEsSUFDQSxXQUFBQztBQUFBLElBQ0EsU0FBQUM7QUFBQSxFQUNKLElBQU1DLEdBQWlCclQsQ0FBTztBQUM1QixTQUFPLGtDQUFrQyxLQUFLOFEsSUFBV3FDLElBQVlELENBQVMsS0FBSyxDQUFDLENBQUMsVUFBVSxVQUFVLEVBQUUsU0FBU0UsQ0FBTztBQUM3SDtBQUNBLFNBQVNFLEdBQWV0VCxHQUFTO0FBQy9CLFNBQU8sQ0FBQyxTQUFTLE1BQU0sSUFBSSxFQUFFLFNBQVN5UyxHQUFZelMsQ0FBTyxDQUFDO0FBQzVEO0FBQ0EsU0FBU3VULEdBQVd2VCxHQUFTO0FBQzNCLFNBQU8sQ0FBQyxpQkFBaUIsUUFBUSxFQUFFLEtBQUssQ0FBQXdULE1BQVk7QUFDbEQsUUFBSTtBQUNGLGFBQU94VCxFQUFRLFFBQVF3VCxDQUFRO0FBQUEsSUFDakMsUUFBWTtBQUNWLGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRixDQUFDO0FBQ0g7QUFDQSxTQUFTQyxHQUFrQkMsR0FBYztBQUN2QyxRQUFNQyxJQUFTQyxHQUFRLEdBQ2pCQyxJQUFNZixHQUFVWSxDQUFZLElBQUlMLEdBQWlCSyxDQUFZLElBQUlBO0FBSXZFLFNBQU8sQ0FBQyxhQUFhLGFBQWEsU0FBUyxVQUFVLGFBQWEsRUFBRSxLQUFLLENBQUFoUCxNQUFTbVAsRUFBSW5QLENBQUssSUFBSW1QLEVBQUluUCxDQUFLLE1BQU0sU0FBUyxFQUFLLE1BQU1tUCxFQUFJLGdCQUFnQkEsRUFBSSxrQkFBa0IsV0FBVyxPQUFVLENBQUNGLE1BQVdFLEVBQUksaUJBQWlCQSxFQUFJLG1CQUFtQixTQUFTLE9BQVUsQ0FBQ0YsTUFBV0UsRUFBSSxTQUFTQSxFQUFJLFdBQVcsU0FBUyxPQUFVLENBQUMsYUFBYSxhQUFhLFNBQVMsVUFBVSxlQUFlLFFBQVEsRUFBRSxLQUFLLENBQUFuUCxPQUFVbVAsRUFBSSxjQUFjLElBQUksU0FBU25QLENBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxVQUFVLFVBQVUsU0FBUyxFQUFFLEtBQUssQ0FBQUEsT0FBVW1QLEVBQUksV0FBVyxJQUFJLFNBQVNuUCxDQUFLLENBQUM7QUFDbmlCO0FBQ0EsU0FBU29QLEdBQW1COVQsR0FBUztBQUNuQyxNQUFJK1QsSUFBY0MsR0FBY2hVLENBQU87QUFDdkMsU0FBTytTLEdBQWNnQixDQUFXLEtBQUssQ0FBQ0UsR0FBc0JGLENBQVcsS0FBRztBQUN4RSxRQUFJTixHQUFrQk0sQ0FBVztBQUMvQixhQUFPQTtBQUNGLFFBQUlSLEdBQVdRLENBQVc7QUFDL0IsYUFBTztBQUVULElBQUFBLElBQWNDLEdBQWNELENBQVc7QUFBQSxFQUN6QztBQUNBLFNBQU87QUFDVDtBQUNBLFNBQVNILEtBQVc7QUFDbEIsU0FBSSxPQUFPLE1BQVEsT0FBZSxDQUFDLElBQUksV0FBaUIsS0FDakQsSUFBSSxTQUFTLDJCQUEyQixNQUFNO0FBQ3ZEO0FBQ0EsU0FBU0ssR0FBc0JyWCxHQUFNO0FBQ25DLFNBQU8sQ0FBQyxRQUFRLFFBQVEsV0FBVyxFQUFFLFNBQVM2VixHQUFZN1YsQ0FBSSxDQUFDO0FBQ2pFO0FBQ0EsU0FBU3lXLEdBQWlCclQsR0FBUztBQUNqQyxTQUFPMlMsR0FBVTNTLENBQU8sRUFBRSxpQkFBaUJBLENBQU87QUFDcEQ7QUFDQSxTQUFTa1UsR0FBY2xVLEdBQVM7QUFDOUIsU0FBSThTLEdBQVU5UyxDQUFPLElBQ1o7QUFBQSxJQUNMLFlBQVlBLEVBQVE7QUFBQSxJQUNwQixXQUFXQSxFQUFRO0FBQUEsRUFDekIsSUFFUztBQUFBLElBQ0wsWUFBWUEsRUFBUTtBQUFBLElBQ3BCLFdBQVdBLEVBQVE7QUFBQSxFQUN2QjtBQUNBO0FBQ0EsU0FBU2dVLEdBQWNwWCxHQUFNO0FBQzNCLE1BQUk2VixHQUFZN1YsQ0FBSSxNQUFNO0FBQ3hCLFdBQU9BO0FBRVQsUUFBTStIO0FBQUE7QUFBQSxJQUVOL0gsRUFBSztBQUFBLElBRUxBLEVBQUs7QUFBQSxJQUVMb1csR0FBYXBXLENBQUksS0FBS0EsRUFBSztBQUFBLElBRTNCaVcsR0FBbUJqVyxDQUFJO0FBQUE7QUFDdkIsU0FBT29XLEdBQWFyTyxDQUFNLElBQUlBLEVBQU8sT0FBT0E7QUFDOUM7QUFDQSxTQUFTd1AsR0FBMkJ2WCxHQUFNO0FBQ3hDLFFBQU13WCxJQUFhSixHQUFjcFgsQ0FBSTtBQUNyQyxTQUFJcVgsR0FBc0JHLENBQVUsSUFDM0J4WCxFQUFLLGdCQUFnQkEsRUFBSyxjQUFjLE9BQU9BLEVBQUssT0FFekRtVyxHQUFjcUIsQ0FBVSxLQUFLbkIsR0FBa0JtQixDQUFVLElBQ3BEQSxJQUVGRCxHQUEyQkMsQ0FBVTtBQUM5QztBQUNBLFNBQVNDLEdBQXFCelgsR0FBTTBYLEdBQU1DLEdBQWlCO0FBQ3pELE1BQUlDO0FBQ0osRUFBSUYsTUFBUyxXQUNYQSxJQUFPLENBQUEsSUFFTEMsTUFBb0IsV0FDdEJBLElBQWtCO0FBRXBCLFFBQU1FLElBQXFCTixHQUEyQnZYLENBQUksR0FDcEQ4WCxJQUFTRCxRQUF5QkQsSUFBdUI1WCxFQUFLLGtCQUFrQixPQUFPLFNBQVM0WCxFQUFxQixPQUNySEcsSUFBTWhDLEdBQVU4QixDQUFrQjtBQUN4QyxNQUFJQyxHQUFRO0FBQ1YsVUFBTUUsSUFBZUMsR0FBZ0JGLENBQUc7QUFDeEMsV0FBT0wsRUFBSyxPQUFPSyxHQUFLQSxFQUFJLGtCQUFrQixDQUFBLEdBQUkxQixHQUFrQndCLENBQWtCLElBQUlBLElBQXFCLENBQUEsR0FBSUcsS0FBZ0JMLElBQWtCRixHQUFxQk8sQ0FBWSxJQUFJLEVBQUU7QUFBQSxFQUM5TDtBQUNBLFNBQU9OLEVBQUssT0FBT0csR0FBb0JKLEdBQXFCSSxHQUFvQixDQUFBLEdBQUlGLENBQWUsQ0FBQztBQUN0RztBQUNBLFNBQVNNLEdBQWdCRixHQUFLO0FBQzVCLFNBQU9BLEVBQUksVUFBVSxPQUFPLGVBQWVBLEVBQUksTUFBTSxJQUFJQSxFQUFJLGVBQWU7QUFDOUU7QUNsSkEsU0FBU0csR0FBaUI5VSxHQUFTO0FBQ2pDLFFBQU02VCxJQUFNUixHQUFpQnJULENBQU87QUFHcEMsTUFBSTROLElBQVEsV0FBV2lHLEVBQUksS0FBSyxLQUFLLEdBQ2pDaEcsSUFBUyxXQUFXZ0csRUFBSSxNQUFNLEtBQUs7QUFDdkMsUUFBTWtCLElBQVloQyxHQUFjL1MsQ0FBTyxHQUNqQ2dWLElBQWNELElBQVkvVSxFQUFRLGNBQWM0TixHQUNoRHFILElBQWVGLElBQVkvVSxFQUFRLGVBQWU2TixHQUNsRHFILElBQWlCekosR0FBTW1DLENBQUssTUFBTW9ILEtBQWV2SixHQUFNb0MsQ0FBTSxNQUFNb0g7QUFDekUsU0FBSUMsTUFDRnRILElBQVFvSCxHQUNSbkgsSUFBU29ILElBRUo7QUFBQSxJQUNMLE9BQUFySDtBQUFBLElBQ0EsUUFBQUM7QUFBQSxJQUNBLEdBQUdxSDtBQUFBLEVBQ1A7QUFDQTtBQUVBLFNBQVNDLEdBQWNuVixHQUFTO0FBQzlCLFNBQVE4UyxHQUFVOVMsQ0FBTyxJQUE2QkEsSUFBekJBLEVBQVE7QUFDdkM7QUFFQSxTQUFTb1YsR0FBU3BWLEdBQVM7QUFDekIsUUFBTXFWLElBQWFGLEdBQWNuVixDQUFPO0FBQ3hDLE1BQUksQ0FBQytTLEdBQWNzQyxDQUFVO0FBQzNCLFdBQU8xSixHQUFhLENBQUM7QUFFdkIsUUFBTThCLElBQU80SCxFQUFXLHNCQUFxQixHQUN2QztBQUFBLElBQ0osT0FBQXpIO0FBQUEsSUFDQSxRQUFBQztBQUFBLElBQ0EsR0FBQXlIO0FBQUEsRUFDSixJQUFNUixHQUFpQk8sQ0FBVTtBQUMvQixNQUFJM0gsS0FBSzRILElBQUk3SixHQUFNZ0MsRUFBSyxLQUFLLElBQUlBLEVBQUssU0FBU0csR0FDM0NELEtBQUsySCxJQUFJN0osR0FBTWdDLEVBQUssTUFBTSxJQUFJQSxFQUFLLFVBQVVJO0FBSWpELFVBQUksQ0FBQ0gsS0FBSyxDQUFDLE9BQU8sU0FBU0EsQ0FBQyxPQUMxQkEsSUFBSSxLQUVGLENBQUNDLEtBQUssQ0FBQyxPQUFPLFNBQVNBLENBQUMsT0FDMUJBLElBQUksSUFFQztBQUFBLElBQ0wsR0FBQUQ7QUFBQSxJQUNBLEdBQUFDO0FBQUEsRUFDSjtBQUNBO0FBRUEsTUFBTTRILEtBQXlCLGdCQUFBNUosR0FBYSxDQUFDO0FBQzdDLFNBQVM2SixHQUFpQnhWLEdBQVM7QUFDakMsUUFBTTJVLElBQU1oQyxHQUFVM1MsQ0FBTztBQUM3QixTQUFJLENBQUM0VCxHQUFRLEtBQU0sQ0FBQ2UsRUFBSSxpQkFDZlksS0FFRjtBQUFBLElBQ0wsR0FBR1osRUFBSSxlQUFlO0FBQUEsSUFDdEIsR0FBR0EsRUFBSSxlQUFlO0FBQUEsRUFDMUI7QUFDQTtBQUNBLFNBQVNjLEdBQXVCelYsR0FBUzBWLEdBQVNDLEdBQXNCO0FBSXRFLFNBSElELE1BQVksV0FDZEEsSUFBVSxLQUVSLENBQUNDLEtBQXdCRCxLQUFXQyxNQUF5QmhELEdBQVUzUyxDQUFPLElBQ3pFLEtBRUYwVjtBQUNUO0FBRUEsU0FBU0UsR0FBc0I1VixHQUFTNlYsR0FBY0MsR0FBaUI3RixHQUFjO0FBQ25GLEVBQUk0RixNQUFpQixXQUNuQkEsSUFBZSxLQUViQyxNQUFvQixXQUN0QkEsSUFBa0I7QUFFcEIsUUFBTUMsSUFBYS9WLEVBQVEsc0JBQXFCLEdBQzFDcVYsSUFBYUYsR0FBY25WLENBQU87QUFDeEMsTUFBSWdXLElBQVFySyxHQUFhLENBQUM7QUFDMUIsRUFBSWtLLE1BQ0U1RixJQUNFNkMsR0FBVTdDLENBQVksTUFDeEIrRixJQUFRWixHQUFTbkYsQ0FBWSxLQUcvQitGLElBQVFaLEdBQVNwVixDQUFPO0FBRzVCLFFBQU1pVyxJQUFnQlIsR0FBdUJKLEdBQVlTLEdBQWlCN0YsQ0FBWSxJQUFJdUYsR0FBaUJILENBQVUsSUFBSTFKLEdBQWEsQ0FBQztBQUN2SSxNQUFJK0IsS0FBS3FJLEVBQVcsT0FBT0UsRUFBYyxLQUFLRCxFQUFNLEdBQ2hEckksS0FBS29JLEVBQVcsTUFBTUUsRUFBYyxLQUFLRCxFQUFNLEdBQy9DcEksSUFBUW1JLEVBQVcsUUFBUUMsRUFBTSxHQUNqQ25JLElBQVNrSSxFQUFXLFNBQVNDLEVBQU07QUFDdkMsTUFBSVgsR0FBWTtBQUNkLFVBQU1WLElBQU1oQyxHQUFVMEMsQ0FBVSxHQUMxQmEsSUFBWWpHLEtBQWdCNkMsR0FBVTdDLENBQVksSUFBSTBDLEdBQVUxQyxDQUFZLElBQUlBO0FBQ3RGLFFBQUlrRyxJQUFheEIsR0FDYnlCLElBQWdCdkIsR0FBZ0JzQixDQUFVO0FBQzlDLFdBQU9DLEtBQWlCbkcsS0FBZ0JpRyxNQUFjQyxLQUFZO0FBQ2hFLFlBQU1FLElBQWNqQixHQUFTZ0IsQ0FBYSxHQUNwQ0UsSUFBYUYsRUFBYyxzQkFBcUIsR0FDaER2QyxJQUFNUixHQUFpQitDLENBQWEsR0FDcENHLElBQU9ELEVBQVcsUUFBUUYsRUFBYyxhQUFhLFdBQVd2QyxFQUFJLFdBQVcsS0FBS3dDLEVBQVksR0FDaEdHLElBQU1GLEVBQVcsT0FBT0YsRUFBYyxZQUFZLFdBQVd2QyxFQUFJLFVBQVUsS0FBS3dDLEVBQVk7QUFDbEcsTUFBQTNJLEtBQUsySSxFQUFZLEdBQ2pCMUksS0FBSzBJLEVBQVksR0FDakJ6SSxLQUFTeUksRUFBWSxHQUNyQnhJLEtBQVV3SSxFQUFZLEdBQ3RCM0ksS0FBSzZJLEdBQ0w1SSxLQUFLNkksR0FDTEwsSUFBYXhELEdBQVV5RCxDQUFhLEdBQ3BDQSxJQUFnQnZCLEdBQWdCc0IsQ0FBVTtBQUFBLElBQzVDO0FBQUEsRUFDRjtBQUNBLFNBQU8zSSxHQUFpQjtBQUFBLElBQ3RCLE9BQUFJO0FBQUEsSUFDQSxRQUFBQztBQUFBLElBQ0EsR0FBQUg7QUFBQSxJQUNBLEdBQUFDO0FBQUEsRUFDSixDQUFHO0FBQ0g7QUFJQSxTQUFTOEksR0FBb0J6VyxHQUFTeU4sR0FBTTtBQUMxQyxRQUFNaUosSUFBYXhDLEdBQWNsVSxDQUFPLEVBQUU7QUFDMUMsU0FBS3lOLElBR0VBLEVBQUssT0FBT2lKLElBRlZkLEdBQXNCL0MsR0FBbUI3UyxDQUFPLENBQUMsRUFBRSxPQUFPMFc7QUFHckU7QUFFQSxTQUFTQyxHQUFjQyxHQUFpQkMsR0FBUUMsR0FBa0I7QUFDaEUsRUFBSUEsTUFBcUIsV0FDdkJBLElBQW1CO0FBRXJCLFFBQU1DLElBQVdILEVBQWdCLHNCQUFxQixHQUNoRGxKLElBQUlxSixFQUFTLE9BQU9GLEVBQU8sY0FBY0MsSUFBbUI7QUFBQTtBQUFBLElBRWxFTCxHQUFvQkcsR0FBaUJHLENBQVE7QUFBQSxNQUN2Q3BKLElBQUlvSixFQUFTLE1BQU1GLEVBQU87QUFDaEMsU0FBTztBQUFBLElBQ0wsR0FBQW5KO0FBQUEsSUFDQSxHQUFBQztBQUFBLEVBQ0o7QUFDQTtBQUVBLFNBQVNxSixHQUFzRGpKLEdBQU07QUFDbkUsTUFBSTtBQUFBLElBQ0YsVUFBQTJCO0FBQUEsSUFDQSxNQUFBakM7QUFBQSxJQUNBLGNBQUF3QztBQUFBLElBQ0EsVUFBQXZCO0FBQUEsRUFDSixJQUFNWDtBQUNKLFFBQU0ySCxJQUFVaEgsTUFBYSxTQUN2QmtJLElBQWtCL0QsR0FBbUI1QyxDQUFZLEdBQ2pEbkcsSUFBVzRGLElBQVc2RCxHQUFXN0QsRUFBUyxRQUFRLElBQUk7QUFDNUQsTUFBSU8sTUFBaUIyRyxLQUFtQjlNLEtBQVk0TDtBQUNsRCxXQUFPakk7QUFFVCxNQUFJb0osSUFBUztBQUFBLElBQ1gsWUFBWTtBQUFBLElBQ1osV0FBVztBQUFBLEVBQ2YsR0FDTWIsSUFBUXJLLEdBQWEsQ0FBQztBQUMxQixRQUFNc0wsSUFBVXRMLEdBQWEsQ0FBQyxHQUN4QnVMLElBQTBCbkUsR0FBYzlDLENBQVk7QUFDMUQsT0FBSWlILEtBQTJCLENBQUNBLEtBQTJCLENBQUN4QixRQUN0RGpELEdBQVl4QyxDQUFZLE1BQU0sVUFBVWdELEdBQWtCMkQsQ0FBZSxPQUMzRUMsSUFBUzNDLEdBQWNqRSxDQUFZLElBRWpDOEMsR0FBYzlDLENBQVksSUFBRztBQUMvQixVQUFNa0gsSUFBYXZCLEdBQXNCM0YsQ0FBWTtBQUNyRCxJQUFBK0YsSUFBUVosR0FBU25GLENBQVksR0FDN0JnSCxFQUFRLElBQUlFLEVBQVcsSUFBSWxILEVBQWEsWUFDeENnSCxFQUFRLElBQUlFLEVBQVcsSUFBSWxILEVBQWE7QUFBQSxFQUMxQztBQUVGLFFBQU1tSCxJQUFhUixLQUFtQixDQUFDTSxLQUEyQixDQUFDeEIsSUFBVWlCLEdBQWNDLEdBQWlCQyxHQUFRLEVBQUksSUFBSWxMLEdBQWEsQ0FBQztBQUMxSSxTQUFPO0FBQUEsSUFDTCxPQUFPOEIsRUFBSyxRQUFRdUksRUFBTTtBQUFBLElBQzFCLFFBQVF2SSxFQUFLLFNBQVN1SSxFQUFNO0FBQUEsSUFDNUIsR0FBR3ZJLEVBQUssSUFBSXVJLEVBQU0sSUFBSWEsRUFBTyxhQUFhYixFQUFNLElBQUlpQixFQUFRLElBQUlHLEVBQVc7QUFBQSxJQUMzRSxHQUFHM0osRUFBSyxJQUFJdUksRUFBTSxJQUFJYSxFQUFPLFlBQVliLEVBQU0sSUFBSWlCLEVBQVEsSUFBSUcsRUFBVztBQUFBLEVBQzlFO0FBQ0E7QUFFQSxTQUFTQyxHQUFlclgsR0FBUztBQUMvQixTQUFPLE1BQU0sS0FBS0EsRUFBUSxlQUFjLENBQUU7QUFDNUM7QUFJQSxTQUFTc1gsR0FBZ0J0WCxHQUFTO0FBQ2hDLFFBQU11WCxJQUFPMUUsR0FBbUI3UyxDQUFPLEdBQ2pDNlcsSUFBUzNDLEdBQWNsVSxDQUFPLEdBQzlCd0osSUFBT3hKLEVBQVEsY0FBYyxNQUM3QjROLElBQVFwQyxHQUFJK0wsRUFBSyxhQUFhQSxFQUFLLGFBQWEvTixFQUFLLGFBQWFBLEVBQUssV0FBVyxHQUNsRnFFLElBQVNyQyxHQUFJK0wsRUFBSyxjQUFjQSxFQUFLLGNBQWMvTixFQUFLLGNBQWNBLEVBQUssWUFBWTtBQUM3RixNQUFJa0UsSUFBSSxDQUFDbUosRUFBTyxhQUFhSixHQUFvQnpXLENBQU87QUFDeEQsUUFBTTJOLElBQUksQ0FBQ2tKLEVBQU87QUFDbEIsU0FBSXhELEdBQWlCN0osQ0FBSSxFQUFFLGNBQWMsVUFDdkNrRSxLQUFLbEMsR0FBSStMLEVBQUssYUFBYS9OLEVBQUssV0FBVyxJQUFJb0UsSUFFMUM7QUFBQSxJQUNMLE9BQUFBO0FBQUEsSUFDQSxRQUFBQztBQUFBLElBQ0EsR0FBQUg7QUFBQSxJQUNBLEdBQUFDO0FBQUEsRUFDSjtBQUNBO0FBRUEsU0FBUzZKLEdBQWdCeFgsR0FBUzBPLEdBQVU7QUFDMUMsUUFBTWlHLElBQU1oQyxHQUFVM1MsQ0FBTyxHQUN2QnVYLElBQU8xRSxHQUFtQjdTLENBQU8sR0FDakN5WCxJQUFpQjlDLEVBQUk7QUFDM0IsTUFBSS9HLElBQVEySixFQUFLLGFBQ2IxSixJQUFTMEosRUFBSyxjQUNkN0osSUFBSSxHQUNKQyxJQUFJO0FBQ1IsTUFBSThKLEdBQWdCO0FBQ2xCLElBQUE3SixJQUFRNkosRUFBZSxPQUN2QjVKLElBQVM0SixFQUFlO0FBQ3hCLFVBQU1DLElBQXNCOUQsR0FBUTtBQUNwQyxLQUFJLENBQUM4RCxLQUF1QkEsS0FBdUJoSixNQUFhLGFBQzlEaEIsSUFBSStKLEVBQWUsWUFDbkI5SixJQUFJOEosRUFBZTtBQUFBLEVBRXZCO0FBQ0EsU0FBTztBQUFBLElBQ0wsT0FBQTdKO0FBQUEsSUFDQSxRQUFBQztBQUFBLElBQ0EsR0FBQUg7QUFBQSxJQUNBLEdBQUFDO0FBQUEsRUFDSjtBQUNBO0FBR0EsU0FBU2dLLEdBQTJCM1gsR0FBUzBPLEdBQVU7QUFDckQsUUFBTXFILElBQWFILEdBQXNCNVYsR0FBUyxJQUFNME8sTUFBYSxPQUFPLEdBQ3RFOEgsSUFBTVQsRUFBVyxNQUFNL1YsRUFBUSxXQUMvQnVXLElBQU9SLEVBQVcsT0FBTy9WLEVBQVEsWUFDakNnVyxJQUFRakQsR0FBYy9TLENBQU8sSUFBSW9WLEdBQVNwVixDQUFPLElBQUkyTCxHQUFhLENBQUMsR0FDbkVpQyxJQUFRNU4sRUFBUSxjQUFjZ1csRUFBTSxHQUNwQ25JLElBQVM3TixFQUFRLGVBQWVnVyxFQUFNLEdBQ3RDdEksSUFBSTZJLElBQU9QLEVBQU0sR0FDakJySSxJQUFJNkksSUFBTVIsRUFBTTtBQUN0QixTQUFPO0FBQUEsSUFDTCxPQUFBcEk7QUFBQSxJQUNBLFFBQUFDO0FBQUEsSUFDQSxHQUFBSDtBQUFBLElBQ0EsR0FBQUM7QUFBQSxFQUNKO0FBQ0E7QUFDQSxTQUFTaUssR0FBa0M1WCxHQUFTNlgsR0FBa0JuSixHQUFVO0FBQzlFLE1BQUlqQjtBQUNKLE1BQUlvSyxNQUFxQjtBQUN2QixJQUFBcEssSUFBTytKLEdBQWdCeFgsR0FBUzBPLENBQVE7QUFBQSxXQUMvQm1KLE1BQXFCO0FBQzlCLElBQUFwSyxJQUFPNkosR0FBZ0J6RSxHQUFtQjdTLENBQU8sQ0FBQztBQUFBLFdBQ3pDOFMsR0FBVStFLENBQWdCO0FBQ25DLElBQUFwSyxJQUFPa0ssR0FBMkJFLEdBQWtCbkosQ0FBUTtBQUFBLE9BQ3ZEO0FBQ0wsVUFBTXVILElBQWdCVCxHQUFpQnhWLENBQU87QUFDOUMsSUFBQXlOLElBQU87QUFBQSxNQUNMLEdBQUdvSyxFQUFpQixJQUFJNUIsRUFBYztBQUFBLE1BQ3RDLEdBQUc0QixFQUFpQixJQUFJNUIsRUFBYztBQUFBLE1BQ3RDLE9BQU80QixFQUFpQjtBQUFBLE1BQ3hCLFFBQVFBLEVBQWlCO0FBQUEsSUFDL0I7QUFBQSxFQUNFO0FBQ0EsU0FBT3JLLEdBQWlCQyxDQUFJO0FBQzlCO0FBQ0EsU0FBU3FLLEdBQXlCOVgsR0FBUytYLEdBQVU7QUFDbkQsUUFBTTNELElBQWFKLEdBQWNoVSxDQUFPO0FBQ3hDLFNBQUlvVSxNQUFlMkQsS0FBWSxDQUFDakYsR0FBVXNCLENBQVUsS0FBS0gsR0FBc0JHLENBQVUsSUFDaEYsS0FFRmYsR0FBaUJlLENBQVUsRUFBRSxhQUFhLFdBQVcwRCxHQUF5QjFELEdBQVkyRCxDQUFRO0FBQzNHO0FBS0EsU0FBU0MsR0FBNEJoWSxHQUFTaVksR0FBTztBQUNuRCxRQUFNQyxJQUFlRCxFQUFNLElBQUlqWSxDQUFPO0FBQ3RDLE1BQUlrWTtBQUNGLFdBQU9BO0FBRVQsTUFBSXZULElBQVMwUCxHQUFxQnJVLEdBQVMsQ0FBQSxHQUFJLEVBQUssRUFBRSxPQUFPLENBQUFtWSxNQUFNckYsR0FBVXFGLENBQUUsS0FBSzFGLEdBQVkwRixDQUFFLE1BQU0sTUFBTSxHQUMxR0MsSUFBc0M7QUFDMUMsUUFBTUMsSUFBaUJoRixHQUFpQnJULENBQU8sRUFBRSxhQUFhO0FBQzlELE1BQUkrVCxJQUFjc0UsSUFBaUJyRSxHQUFjaFUsQ0FBTyxJQUFJQTtBQUc1RCxTQUFPOFMsR0FBVWlCLENBQVcsS0FBSyxDQUFDRSxHQUFzQkYsQ0FBVyxLQUFHO0FBQ3BFLFVBQU11RSxJQUFnQmpGLEdBQWlCVSxDQUFXLEdBQzVDd0UsSUFBMEI5RSxHQUFrQk0sQ0FBVztBQUM3RCxJQUFJLENBQUN3RSxLQUEyQkQsRUFBYyxhQUFhLFlBQ3pERixJQUFzQyxRQUVWQyxJQUFpQixDQUFDRSxLQUEyQixDQUFDSCxJQUFzQyxDQUFDRyxLQUEyQkQsRUFBYyxhQUFhLFlBQVksQ0FBQyxDQUFDRixLQUF1QyxDQUFDLFlBQVksT0FBTyxFQUFFLFNBQVNBLEVBQW9DLFFBQVEsS0FBS25GLEdBQWtCYyxDQUFXLEtBQUssQ0FBQ3dFLEtBQTJCVCxHQUF5QjlYLEdBQVMrVCxDQUFXLEtBR3ZacFAsSUFBU0EsRUFBTyxPQUFPLENBQUE2VCxNQUFZQSxNQUFhekUsQ0FBVyxJQUczRHFFLElBQXNDRSxHQUV4Q3ZFLElBQWNDLEdBQWNELENBQVc7QUFBQSxFQUN6QztBQUNBLFNBQUFrRSxFQUFNLElBQUlqWSxHQUFTMkUsQ0FBTSxHQUNsQkE7QUFDVDtBQUlBLFNBQVM4VCxHQUFnQjFLLEdBQU07QUFDN0IsTUFBSTtBQUFBLElBQ0YsU0FBQS9OO0FBQUEsSUFDQSxVQUFBMlA7QUFBQSxJQUNBLGNBQUFDO0FBQUEsSUFDQSxVQUFBbEI7QUFBQSxFQUNKLElBQU1YO0FBRUosUUFBTTJLLElBQW9CLENBQUMsR0FETS9JLE1BQWEsc0JBQXNCNEQsR0FBV3ZULENBQU8sSUFBSSxDQUFBLElBQUtnWSxHQUE0QmhZLEdBQVMsS0FBSyxFQUFFLElBQUksQ0FBQSxFQUFHLE9BQU8yUCxDQUFRLEdBQ3pHQyxDQUFZLEdBQzlEK0ksSUFBd0JELEVBQWtCLENBQUMsR0FDM0NFLElBQWVGLEVBQWtCLE9BQU8sQ0FBQ0csR0FBU2hCLE1BQXFCO0FBQzNFLFVBQU1wSyxJQUFPbUssR0FBa0M1WCxHQUFTNlgsR0FBa0JuSixDQUFRO0FBQ2xGLFdBQUFtSyxFQUFRLE1BQU1yTixHQUFJaUMsRUFBSyxLQUFLb0wsRUFBUSxHQUFHLEdBQ3ZDQSxFQUFRLFFBQVF0TixHQUFJa0MsRUFBSyxPQUFPb0wsRUFBUSxLQUFLLEdBQzdDQSxFQUFRLFNBQVN0TixHQUFJa0MsRUFBSyxRQUFRb0wsRUFBUSxNQUFNLEdBQ2hEQSxFQUFRLE9BQU9yTixHQUFJaUMsRUFBSyxNQUFNb0wsRUFBUSxJQUFJLEdBQ25DQTtBQUFBLEVBQ1QsR0FBR2pCLEdBQWtDNVgsR0FBUzJZLEdBQXVCakssQ0FBUSxDQUFDO0FBQzlFLFNBQU87QUFBQSxJQUNMLE9BQU9rSyxFQUFhLFFBQVFBLEVBQWE7QUFBQSxJQUN6QyxRQUFRQSxFQUFhLFNBQVNBLEVBQWE7QUFBQSxJQUMzQyxHQUFHQSxFQUFhO0FBQUEsSUFDaEIsR0FBR0EsRUFBYTtBQUFBLEVBQ3BCO0FBQ0E7QUFFQSxTQUFTRSxHQUFjOVksR0FBUztBQUM5QixRQUFNO0FBQUEsSUFDSixPQUFBNE47QUFBQSxJQUNBLFFBQUFDO0FBQUEsRUFDSixJQUFNaUgsR0FBaUI5VSxDQUFPO0FBQzVCLFNBQU87QUFBQSxJQUNMLE9BQUE0TjtBQUFBLElBQ0EsUUFBQUM7QUFBQSxFQUNKO0FBQ0E7QUFFQSxTQUFTa0wsR0FBOEIvWSxHQUFTaVEsR0FBY3ZCLEdBQVU7QUFDdEUsUUFBTXdJLElBQTBCbkUsR0FBYzlDLENBQVksR0FDcEQyRyxJQUFrQi9ELEdBQW1CNUMsQ0FBWSxHQUNqRHlGLElBQVVoSCxNQUFhLFNBQ3ZCakIsSUFBT21JLEdBQXNCNVYsR0FBUyxJQUFNMFYsR0FBU3pGLENBQVk7QUFDdkUsTUFBSTRHLElBQVM7QUFBQSxJQUNYLFlBQVk7QUFBQSxJQUNaLFdBQVc7QUFBQSxFQUNmO0FBQ0UsUUFBTUksSUFBVXRMLEdBQWEsQ0FBQztBQUM5QixNQUFJdUwsS0FBMkIsQ0FBQ0EsS0FBMkIsQ0FBQ3hCO0FBSTFELFNBSElqRCxHQUFZeEMsQ0FBWSxNQUFNLFVBQVVnRCxHQUFrQjJELENBQWUsT0FDM0VDLElBQVMzQyxHQUFjakUsQ0FBWSxJQUVqQ2lILEdBQXlCO0FBQzNCLFlBQU1DLElBQWF2QixHQUFzQjNGLEdBQWMsSUFBTXlGLEdBQVN6RixDQUFZO0FBQ2xGLE1BQUFnSCxFQUFRLElBQUlFLEVBQVcsSUFBSWxILEVBQWEsWUFDeENnSCxFQUFRLElBQUlFLEVBQVcsSUFBSWxILEVBQWE7QUFBQSxJQUMxQyxNQUFPLENBQUkyRyxNQUdUSyxFQUFRLElBQUlSLEdBQW9CRyxDQUFlO0FBR25ELFFBQU1RLElBQWFSLEtBQW1CLENBQUNNLEtBQTJCLENBQUN4QixJQUFVaUIsR0FBY0MsR0FBaUJDLENBQU0sSUFBSWxMLEdBQWEsQ0FBQyxHQUM5SCtCLElBQUlELEVBQUssT0FBT29KLEVBQU8sYUFBYUksRUFBUSxJQUFJRyxFQUFXLEdBQzNEekosSUFBSUYsRUFBSyxNQUFNb0osRUFBTyxZQUFZSSxFQUFRLElBQUlHLEVBQVc7QUFDL0QsU0FBTztBQUFBLElBQ0wsR0FBQTFKO0FBQUEsSUFDQSxHQUFBQztBQUFBLElBQ0EsT0FBT0YsRUFBSztBQUFBLElBQ1osUUFBUUEsRUFBSztBQUFBLEVBQ2pCO0FBQ0E7QUFFQSxTQUFTdUwsR0FBbUJoWixHQUFTO0FBQ25DLFNBQU9xVCxHQUFpQnJULENBQU8sRUFBRSxhQUFhO0FBQ2hEO0FBRUEsU0FBU2laLEdBQW9CalosR0FBU2taLEdBQVU7QUFDOUMsTUFBSSxDQUFDbkcsR0FBYy9TLENBQU8sS0FBS3FULEdBQWlCclQsQ0FBTyxFQUFFLGFBQWE7QUFDcEUsV0FBTztBQUVULE1BQUlrWjtBQUNGLFdBQU9BLEVBQVNsWixDQUFPO0FBRXpCLE1BQUltWixJQUFrQm5aLEVBQVE7QUFNOUIsU0FBSTZTLEdBQW1CN1MsQ0FBTyxNQUFNbVosTUFDbENBLElBQWtCQSxFQUFnQixjQUFjLE9BRTNDQTtBQUNUO0FBSUEsU0FBU0MsR0FBZ0JwWixHQUFTa1osR0FBVTtBQUMxQyxRQUFNdkUsSUFBTWhDLEdBQVUzUyxDQUFPO0FBQzdCLE1BQUl1VCxHQUFXdlQsQ0FBTztBQUNwQixXQUFPMlU7QUFFVCxNQUFJLENBQUM1QixHQUFjL1MsQ0FBTyxHQUFHO0FBQzNCLFFBQUlxWixJQUFrQnJGLEdBQWNoVSxDQUFPO0FBQzNDLFdBQU9xWixLQUFtQixDQUFDcEYsR0FBc0JvRixDQUFlLEtBQUc7QUFDakUsVUFBSXZHLEdBQVV1RyxDQUFlLEtBQUssQ0FBQ0wsR0FBbUJLLENBQWU7QUFDbkUsZUFBT0E7QUFFVCxNQUFBQSxJQUFrQnJGLEdBQWNxRixDQUFlO0FBQUEsSUFDakQ7QUFDQSxXQUFPMUU7QUFBQSxFQUNUO0FBQ0EsTUFBSTFFLElBQWVnSixHQUFvQmpaLEdBQVNrWixDQUFRO0FBQ3hELFNBQU9qSixLQUFnQnFELEdBQWVyRCxDQUFZLEtBQUsrSSxHQUFtQi9JLENBQVk7QUFDcEYsSUFBQUEsSUFBZWdKLEdBQW9CaEosR0FBY2lKLENBQVE7QUFFM0QsU0FBSWpKLEtBQWdCZ0UsR0FBc0JoRSxDQUFZLEtBQUsrSSxHQUFtQi9JLENBQVksS0FBSyxDQUFDd0QsR0FBa0J4RCxDQUFZLElBQ3JIMEUsSUFFRjFFLEtBQWdCNkQsR0FBbUI5VCxDQUFPLEtBQUsyVTtBQUN4RDtBQUVBLE1BQU0yRSxLQUFrQixlQUFnQmpLLEdBQU07QUFDNUMsUUFBTWtLLElBQW9CLEtBQUssbUJBQW1CSCxJQUM1Q0ksSUFBa0IsS0FBSyxlQUN2QkMsSUFBcUIsTUFBTUQsRUFBZ0JuSyxFQUFLLFFBQVE7QUFDOUQsU0FBTztBQUFBLElBQ0wsV0FBVzBKLEdBQThCMUosRUFBSyxXQUFXLE1BQU1rSyxFQUFrQmxLLEVBQUssUUFBUSxHQUFHQSxFQUFLLFFBQVE7QUFBQSxJQUM5RyxVQUFVO0FBQUEsTUFDUixHQUFHO0FBQUEsTUFDSCxHQUFHO0FBQUEsTUFDSCxPQUFPb0ssRUFBbUI7QUFBQSxNQUMxQixRQUFRQSxFQUFtQjtBQUFBLElBQ2pDO0FBQUEsRUFDQTtBQUNBO0FBRUEsU0FBU0MsR0FBTTFaLEdBQVM7QUFDdEIsU0FBT3FULEdBQWlCclQsQ0FBTyxFQUFFLGNBQWM7QUFDakQ7QUFFQSxNQUFNNE8sS0FBVztBQUFBLEVBQ2YsdURBQUFvSTtBQUFBLEVBQ0Esb0JBQUFuRTtBQUFBLEVBQ0EsaUJBQUE0RjtBQUFBLEVBQ0EsaUJBQUFXO0FBQUEsRUFDQSxpQkFBQUU7QUFBQSxFQUNBLGdCQUFBakM7QUFBQSxFQUNBLGVBQUF5QjtBQUFBLEVBQ0EsVUFBQTFEO0FBQUEsRUFDQSxXQUFBdEM7QUFBQSxFQUNBLE9BQUE0RztBQUNGO0FBRUEsU0FBU0MsR0FBY2xZLEdBQUdDLEdBQUc7QUFDM0IsU0FBT0QsRUFBRSxNQUFNQyxFQUFFLEtBQUtELEVBQUUsTUFBTUMsRUFBRSxLQUFLRCxFQUFFLFVBQVVDLEVBQUUsU0FBU0QsRUFBRSxXQUFXQyxFQUFFO0FBQzdFO0FBR0EsU0FBU2tZLEdBQVk1WixHQUFTNlosR0FBUTtBQUNwQyxNQUFJQyxJQUFLLE1BQ0xDO0FBQ0osUUFBTUMsSUFBT25ILEdBQW1CN1MsQ0FBTztBQUN2QyxXQUFTaWEsSUFBVTtBQUNqQixRQUFJQztBQUNKLGlCQUFhSCxDQUFTLElBQ3JCRyxJQUFNSixNQUFPLFFBQVFJLEVBQUksV0FBVSxHQUNwQ0osSUFBSztBQUFBLEVBQ1A7QUFDQSxXQUFTSyxFQUFRQyxHQUFNQyxHQUFXO0FBQ2hDLElBQUlELE1BQVMsV0FDWEEsSUFBTyxLQUVMQyxNQUFjLFdBQ2hCQSxJQUFZLElBRWRKLEVBQU87QUFDUCxVQUFNSyxJQUEyQnRhLEVBQVEsc0JBQXFCLEdBQ3hEO0FBQUEsTUFDSixNQUFBdVc7QUFBQSxNQUNBLEtBQUFDO0FBQUEsTUFDQSxPQUFBNUk7QUFBQSxNQUNBLFFBQUFDO0FBQUEsSUFDTixJQUFReU07QUFJSixRQUhLRixLQUNIUCxFQUFNLEdBRUosQ0FBQ2pNLEtBQVMsQ0FBQ0M7QUFDYjtBQUVGLFVBQU0wTSxJQUFXN08sR0FBTThLLENBQUcsR0FDcEJnRSxJQUFhOU8sR0FBTXNPLEVBQUssZUFBZXpELElBQU8zSSxFQUFNLEdBQ3BENk0sSUFBYy9PLEdBQU1zTyxFQUFLLGdCQUFnQnhELElBQU0zSSxFQUFPLEdBQ3RENk0sSUFBWWhQLEdBQU02SyxDQUFJLEdBRXRCblYsSUFBVTtBQUFBLE1BQ2QsWUFGaUIsQ0FBQ21aLElBQVcsUUFBUSxDQUFDQyxJQUFhLFFBQVEsQ0FBQ0MsSUFBYyxRQUFRLENBQUNDLElBQVk7QUFBQSxNQUcvRixXQUFXbFAsR0FBSSxHQUFHRCxHQUFJLEdBQUc4TyxDQUFTLENBQUMsS0FBSztBQUFBLElBQzlDO0FBQ0ksUUFBSU0sSUFBZ0I7QUFDcEIsYUFBU0MsRUFBY3ZaLEdBQVM7QUFDOUIsWUFBTXdaLElBQVF4WixFQUFRLENBQUMsRUFBRTtBQUN6QixVQUFJd1osTUFBVVIsR0FBVztBQUN2QixZQUFJLENBQUNNO0FBQ0gsaUJBQU9SLEVBQU87QUFFaEIsUUFBS1UsSUFPSFYsRUFBUSxJQUFPVSxDQUFLLElBSnBCZCxJQUFZLFdBQVcsTUFBTTtBQUMzQixVQUFBSSxFQUFRLElBQU8sSUFBSTtBQUFBLFFBQ3JCLEdBQUcsR0FBSTtBQUFBLE1BSVg7QUFDQSxNQUFJVSxNQUFVLEtBQUssQ0FBQ2xCLEdBQWNXLEdBQTBCdGEsRUFBUSxzQkFBcUIsQ0FBRSxLQVF6Rm1hLEVBQU8sR0FFVFEsSUFBZ0I7QUFBQSxJQUNsQjtBQUlBLFFBQUk7QUFDRixNQUFBYixJQUFLLElBQUkscUJBQXFCYyxHQUFlO0FBQUEsUUFDM0MsR0FBR3haO0FBQUE7QUFBQSxRQUVILE1BQU00WSxFQUFLO0FBQUEsTUFDbkIsQ0FBTztBQUFBLElBQ0gsUUFBWTtBQUNWLE1BQUFGLElBQUssSUFBSSxxQkFBcUJjLEdBQWV4WixDQUFPO0FBQUEsSUFDdEQ7QUFDQSxJQUFBMFksRUFBRyxRQUFROVosQ0FBTztBQUFBLEVBQ3BCO0FBQ0EsU0FBQW1hLEVBQVEsRUFBSSxHQUNMRjtBQUNUO0FBVUEsU0FBU2EsR0FBVzlNLEdBQVdDLEdBQVU4TSxHQUFRM1osR0FBUztBQUN4RCxFQUFJQSxNQUFZLFdBQ2RBLElBQVUsQ0FBQTtBQUVaLFFBQU07QUFBQSxJQUNKLGdCQUFBNFosSUFBaUI7QUFBQSxJQUNqQixnQkFBQUMsSUFBaUI7QUFBQSxJQUNqQixlQUFBQyxJQUFnQixPQUFPLGtCQUFtQjtBQUFBLElBQzFDLGFBQUFDLElBQWMsT0FBTyx3QkFBeUI7QUFBQSxJQUM5QyxnQkFBQUMsSUFBaUI7QUFBQSxFQUNyQixJQUFNaGEsR0FDRWlhLElBQWNsRyxHQUFjbkgsQ0FBUyxHQUNyQ3NOLElBQVlOLEtBQWtCQyxJQUFpQixDQUFDLEdBQUlJLElBQWNoSCxHQUFxQmdILENBQVcsSUFBSSxDQUFBLEdBQUssR0FBR2hILEdBQXFCcEcsQ0FBUSxDQUFDLElBQUksQ0FBQTtBQUN0SixFQUFBcU4sRUFBVSxRQUFRLENBQUE5QyxNQUFZO0FBQzVCLElBQUF3QyxLQUFrQnhDLEVBQVMsaUJBQWlCLFVBQVV1QyxHQUFRO0FBQUEsTUFDNUQsU0FBUztBQUFBLElBQ2YsQ0FBSyxHQUNERSxLQUFrQnpDLEVBQVMsaUJBQWlCLFVBQVV1QyxDQUFNO0FBQUEsRUFDOUQsQ0FBQztBQUNELFFBQU1RLElBQVlGLEtBQWVGLElBQWN2QixHQUFZeUIsR0FBYU4sQ0FBTSxJQUFJO0FBQ2xGLE1BQUlTLElBQWlCLElBQ2pCQyxJQUFpQjtBQUNyQixFQUFJUCxNQUNGTyxJQUFpQixJQUFJLGVBQWUsQ0FBQTFOLE1BQVE7QUFDMUMsUUFBSSxDQUFDMk4sQ0FBVSxJQUFJM047QUFDbkIsSUFBSTJOLEtBQWNBLEVBQVcsV0FBV0wsS0FBZUksTUFHckRBLEVBQWUsVUFBVXhOLENBQVEsR0FDakMscUJBQXFCdU4sQ0FBYyxHQUNuQ0EsSUFBaUIsc0JBQXNCLE1BQU07QUFDM0MsVUFBSUc7QUFDSixPQUFDQSxJQUFrQkYsTUFBbUIsUUFBUUUsRUFBZ0IsUUFBUTFOLENBQVE7QUFBQSxJQUNoRixDQUFDLElBRUg4TSxFQUFNO0FBQUEsRUFDUixDQUFDLEdBQ0dNLEtBQWUsQ0FBQ0QsS0FDbEJLLEVBQWUsUUFBUUosQ0FBVyxHQUVwQ0ksRUFBZSxRQUFReE4sQ0FBUTtBQUVqQyxNQUFJMk4sR0FDQUMsSUFBY1QsSUFBaUJ4RixHQUFzQjVILENBQVMsSUFBSTtBQUN0RSxFQUFJb04sS0FDRlUsRUFBUztBQUVYLFdBQVNBLElBQVk7QUFDbkIsVUFBTUMsSUFBY25HLEdBQXNCNUgsQ0FBUztBQUNuRCxJQUFJNk4sS0FBZSxDQUFDbEMsR0FBY2tDLEdBQWFFLENBQVcsS0FDeERoQixFQUFNLEdBRVJjLElBQWNFLEdBQ2RILElBQVUsc0JBQXNCRSxDQUFTO0FBQUEsRUFDM0M7QUFDQSxTQUFBZixFQUFNLEdBQ0MsTUFBTTtBQUNYLFFBQUlpQjtBQUNKLElBQUFWLEVBQVUsUUFBUSxDQUFBOUMsTUFBWTtBQUM1QixNQUFBd0MsS0FBa0J4QyxFQUFTLG9CQUFvQixVQUFVdUMsQ0FBTSxHQUMvREUsS0FBa0J6QyxFQUFTLG9CQUFvQixVQUFVdUMsQ0FBTTtBQUFBLElBQ2pFLENBQUMsR0FDRFEsS0FBYSxRQUFRQSxFQUFTLElBQzdCUyxJQUFtQlAsTUFBbUIsUUFBUU8sRUFBaUIsV0FBVSxHQUMxRVAsSUFBaUIsTUFDYkwsS0FDRixxQkFBcUJRLENBQU87QUFBQSxFQUVoQztBQUNGO0FBbUJBLE1BQU03YSxLQUFTa2IsSUFRVDFMLEtBQWdCMkwsSUFPaEJuSyxLQUFRb0ssSUFnRFIxTixLQUFrQixDQUFDVCxHQUFXQyxHQUFVN00sTUFBWTtBQUl4RCxRQUFNNlcsSUFBUSxvQkFBSSxJQUFHLEdBQ2ZtRSxJQUFnQjtBQUFBLElBQ3BCLFVBQUF4TjtBQUFBLElBQ0EsR0FBR3hOO0FBQUEsRUFDUCxHQUNRaWIsSUFBb0I7QUFBQSxJQUN4QixHQUFHRCxFQUFjO0FBQUEsSUFDakIsSUFBSW5FO0FBQUEsRUFDUjtBQUNFLFNBQU9xRSxHQUFrQnRPLEdBQVdDLEdBQVU7QUFBQSxJQUM1QyxHQUFHbU87QUFBQSxJQUNILFVBQVVDO0FBQUEsRUFDZCxDQUFHO0FBQ0g7QUN4dUJBLFNBQVNFLEdBQTBCcGEsR0FBUTtBQUN6QyxTQUFPQSxLQUFVLFFBQVEsT0FBT0EsS0FBVyxZQUFZLFNBQVNBO0FBQ2xFO0FBQ0EsU0FBU2dULEdBQWNoVCxHQUFRO0FBQzdCLE1BQUlvYSxHQUEwQnBhLENBQU0sR0FBRztBQUNyQyxVQUFNbkMsSUFBVW1DLEVBQU87QUFDdkIsV0FBT3VRLEdBQU8xUyxDQUFPLEtBQUt5UyxHQUFZelMsQ0FBTyxNQUFNLGFBQWEsT0FBT0E7QUFBQSxFQUN6RTtBQUNBLFNBQU9tQztBQUNUO0FBRUEsU0FBU3FhLEdBQVF0WSxHQUFRO0FBQ3ZCLFNBQU8sT0FBT0EsS0FBVyxhQUFhQSxFQUFNLElBQUt1WSxFQUFNdlksQ0FBTTtBQUMvRDtBQXdCQSxTQUFTd1ksR0FBTzFjLEdBQVM7QUFDdkIsU0FBSSxPQUFPLFNBQVcsTUFDYixLQUVHQSxFQUFRLGNBQWMsZUFBZSxRQUN0QyxvQkFBb0I7QUFDakM7QUFFQSxTQUFTMmMsR0FBVzNjLEdBQVMwRSxHQUFPO0FBQ2xDLFFBQU1rWSxJQUFNRixHQUFPMWMsQ0FBTztBQUMxQixTQUFPLEtBQUssTUFBTTBFLElBQVFrWSxDQUFHLElBQUlBO0FBQ25DO0FBU0EsU0FBU0MsR0FBWTdPLEdBQVdDLEdBQVU3TSxHQUFTO0FBQ2pELEVBQUlBLE1BQVksV0FDZEEsSUFBVSxDQUFBO0FBRVosUUFBTTBiLElBQTZCMWIsRUFBUSxzQkFDckMyYixJQUFhL2dCLEVBQVMsTUFBTTtBQUNoQyxRQUFJZ2hCO0FBQ0osWUFBUUEsSUFBV1IsR0FBUXBiLEVBQVEsSUFBSSxNQUFNLE9BQU80YixJQUFXO0FBQUEsRUFDakUsQ0FBQyxHQUNLQyxJQUFtQmpoQixFQUFTLE1BQU13Z0IsR0FBUXBiLEVBQVEsVUFBVSxDQUFDLEdBQzdEOGIsSUFBa0JsaEIsRUFBUyxNQUFNO0FBQ3JDLFFBQUltaEI7QUFDSixZQUFRQSxJQUFZWCxHQUFRcGIsRUFBUSxTQUFTLE1BQU0sT0FBTytiLElBQVk7QUFBQSxFQUN4RSxDQUFDLEdBQ0tDLElBQWlCcGhCLEVBQVMsTUFBTTtBQUNwQyxRQUFJcWhCO0FBQ0osWUFBUUEsSUFBWWIsR0FBUXBiLEVBQVEsUUFBUSxNQUFNLE9BQU9pYyxJQUFZO0FBQUEsRUFDdkUsQ0FBQyxHQUNLQyxJQUFrQnRoQixFQUFTLE1BQU07QUFDckMsUUFBSXVoQjtBQUNKLFlBQVFBLElBQVlmLEdBQVFwYixFQUFRLFNBQVMsTUFBTSxPQUFPbWMsSUFBWTtBQUFBLEVBQ3hFLENBQUMsR0FDS0MsSUFBbUJ4aEIsRUFBUyxNQUFNbVosR0FBY25ILEVBQVUsS0FBSyxDQUFDLEdBQ2hFeVAsSUFBa0J6aEIsRUFBUyxNQUFNbVosR0FBY2xILEVBQVMsS0FBSyxDQUFDLEdBQzlEUCxJQUFJL1QsRUFBSSxDQUFDLEdBQ1RnVSxJQUFJaFUsRUFBSSxDQUFDLEdBQ1QrVSxJQUFXL1UsRUFBSXlqQixFQUFlLEtBQUssR0FDbkMvUSxJQUFZMVMsRUFBSXVqQixFQUFnQixLQUFLLEdBQ3JDbk8sSUFBaUIyTyxHQUFXLEVBQUUsR0FDOUJDLElBQWVoa0IsRUFBSSxFQUFLLEdBQ3hCaWtCLElBQWlCNWhCLEVBQVMsTUFBTTtBQUNwQyxVQUFNNmhCLElBQWdCO0FBQUEsTUFDcEIsVUFBVW5QLEVBQVM7QUFBQSxNQUNuQixNQUFNO0FBQUEsTUFDTixLQUFLO0FBQUEsSUFDWDtBQUNJLFFBQUksQ0FBQytPLEVBQWdCO0FBQ25CLGFBQU9JO0FBRVQsVUFBTUMsS0FBT25CLEdBQVdjLEVBQWdCLE9BQU8vUCxFQUFFLEtBQUssR0FDaERxUSxLQUFPcEIsR0FBV2MsRUFBZ0IsT0FBTzlQLEVBQUUsS0FBSztBQUN0RCxXQUFJMlAsRUFBZ0IsUUFDWDtBQUFBLE1BQ0wsR0FBR087QUFBQSxNQUNILFdBQVcsZUFBZUMsS0FBTyxTQUFTQyxLQUFPO0FBQUEsTUFDakQsR0FBSXJCLEdBQU9lLEVBQWdCLEtBQUssS0FBSyxPQUFPO0FBQUEsUUFDMUMsWUFBWTtBQUFBLE1BQ3RCO0FBQUEsSUFDQSxJQUVXO0FBQUEsTUFDTCxVQUFVL08sRUFBUztBQUFBLE1BQ25CLE1BQU1vUCxLQUFPO0FBQUEsTUFDYixLQUFLQyxLQUFPO0FBQUEsSUFDbEI7QUFBQSxFQUNFLENBQUM7QUFDRCxNQUFJQztBQUNKLFdBQVNqRCxJQUFTO0FBQ2hCLFFBQUl5QyxFQUFpQixTQUFTLFFBQVFDLEVBQWdCLFNBQVM7QUFDN0Q7QUFFRixVQUFNUSxJQUFPbEIsRUFBVztBQUN4QixJQUFBdE8sR0FBZ0IrTyxFQUFpQixPQUFPQyxFQUFnQixPQUFPO0FBQUEsTUFDN0QsWUFBWVIsRUFBaUI7QUFBQSxNQUM3QixXQUFXQyxFQUFnQjtBQUFBLE1BQzNCLFVBQVVFLEVBQWU7QUFBQSxJQUMvQixDQUFLLEVBQUUsS0FBSyxDQUFBYyxPQUFZO0FBQ2xCLE1BQUF4USxFQUFFLFFBQVF3USxHQUFTLEdBQ25CdlEsRUFBRSxRQUFRdVEsR0FBUyxHQUNuQnhQLEVBQVMsUUFBUXdQLEdBQVMsVUFDMUI3UixFQUFVLFFBQVE2UixHQUFTLFdBQzNCblAsRUFBZSxRQUFRbVAsR0FBUyxnQkFPaENQLEVBQWEsUUFBUU0sTUFBUztBQUFBLElBQ2hDLENBQUM7QUFBQSxFQUNIO0FBQ0EsV0FBU2hFLElBQVU7QUFDakIsSUFBSSxPQUFPK0QsS0FBZ0MsZUFDekNBLEVBQTJCLEdBQzNCQSxJQUE4QjtBQUFBLEVBRWxDO0FBQ0EsV0FBU0csSUFBUztBQUVoQixRQURBbEUsRUFBTyxHQUNINkMsTUFBK0IsUUFBVztBQUM1QyxNQUFBL0IsRUFBTTtBQUNOO0FBQUEsSUFDRjtBQUNBLFFBQUl5QyxFQUFpQixTQUFTLFFBQVFDLEVBQWdCLFNBQVMsTUFBTTtBQUNuRSxNQUFBTyxJQUE4QmxCLEVBQTJCVSxFQUFpQixPQUFPQyxFQUFnQixPQUFPMUMsQ0FBTTtBQUM5RztBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0EsV0FBU3pMLElBQVE7QUFDZixJQUFLeU4sRUFBVyxVQUNkWSxFQUFhLFFBQVE7QUFBQSxFQUV6QjtBQUNBLFNBQUEvakIsRUFBTSxDQUFDcWpCLEdBQWtCQyxHQUFpQkUsR0FBZ0JMLENBQVUsR0FBR2hDLEdBQVE7QUFBQSxJQUM3RSxPQUFPO0FBQUEsRUFDWCxDQUFHLEdBQ0RuaEIsRUFBTSxDQUFDNGpCLEdBQWtCQyxDQUFlLEdBQUdVLEdBQVE7QUFBQSxJQUNqRCxPQUFPO0FBQUEsRUFDWCxDQUFHLEdBQ0R2a0IsRUFBTW1qQixHQUFZek4sR0FBTztBQUFBLElBQ3ZCLE9BQU87QUFBQSxFQUNYLENBQUcsR0FDRzhPLEdBQWUsS0FDakJDLEdBQWVwRSxDQUFPLEdBRWpCO0FBQUEsSUFDTCxHQUFHcUUsR0FBZ0I1USxDQUFDO0FBQUEsSUFDcEIsR0FBRzRRLEdBQWdCM1EsQ0FBQztBQUFBLElBQ3BCLFVBQVUyUSxHQUFnQjVQLENBQVE7QUFBQSxJQUNsQyxXQUFXNFAsR0FBZ0JqUyxDQUFTO0FBQUEsSUFDcEMsZ0JBQWdCaVMsR0FBZ0J2UCxDQUFjO0FBQUEsSUFDOUMsY0FBY3VQLEdBQWdCWCxDQUFZO0FBQUEsSUFDMUMsZ0JBQUFDO0FBQUEsSUFDQSxRQUFBN0M7QUFBQSxFQUNKO0FBQ0E7QUMzTE8sTUFBTXdELEtBQWlCLENBQUNqZSxHQUFtQm9QLE1BRXpDLEVBRFMsTUFBTSxRQUFRQSxDQUFRLElBQUlBLElBQVcsQ0FBQ0EsQ0FBUSxHQUM5QyxLQUFLLENBQUN5SSxNQUFPQSxFQUFHLFNBQVM3WCxFQUFNLE1BQWMsQ0FBQyxHQ0k5RGhJLEtBQWUsQ0FBQTs7Ozs7Ozs7QUFxQmYsVUFBTUMsSUFBUUMsR0FJUmdtQixJQUFrQzdrQixFQUFJLElBQUksR0FDMUNzVSxJQUFvQ3RVLEVBQUksSUFBSSxHQUM1Q3FnQixJQUFnQ3JnQixFQUFJLElBQUksR0FDeEM4a0IsSUFBWTlrQixFQUFJLEVBQUssR0FDckIra0IsSUFBZ0Iva0IsRUFBSSxFQUFLLEdBQ3pCZ1YsSUFBYWhWLEVBQUksQ0FBQzRXLE1BQWlCb08sR0FBaUIsRUFBRSxVQUFVcG1CLEVBQU0sT0FBQSxDQUFRLEdBQUd3WixHQUFNLEVBQUUsU0FBUyxHQUFBLENBQUksQ0FBQyxDQUFDLEdBRXhHNk0sSUFBZ0I1aUIsRUFBUyxNQUFNeWlCLEVBQVUsU0FBU0MsRUFBYyxLQUFLLEdBRXJFLEVBQUUsZ0JBQUFkLEVBQUEsSUFBbUJmLEdBQVkyQixHQUFRdlEsR0FBVTtBQUFBLE1BQ3ZELFlBQUFVO0FBQUEsTUFDQSxVQUFVO0FBQUEsTUFDVixzQkFBc0JtTTtBQUFBLElBQUEsQ0FDdkIsR0FFSytELElBQStCLENBQUNwYixNQUFrQjtBQUN0RCxNQUFJLENBQUMrYSxFQUFPLFNBQVMsQ0FBQ3ZRLEVBQVMsU0FDM0JzUSxHQUFlOWEsR0FBRyxDQUFDK2EsRUFBTyxPQUFPdlEsRUFBUyxLQUFLLENBQUMsTUFDbER5USxFQUFjLFFBQVEsSUFDdEJqYixFQUFFLGVBQUEsR0FDRkEsRUFBRSx5QkFBQTtBQUFBLElBRU4sR0FFTXFiLElBQStCLE1BQU07QUFDekMsTUFBQUwsRUFBVSxRQUFRO0FBQUEsSUFDcEIsR0FFTU0sSUFBZ0MsTUFBTTtBQUMxQyxNQUFBTixFQUFVLFFBQVE7QUFBQSxJQUNwQixHQUVNTyxJQUEyQixDQUFDdmIsTUFBa0I7QUFDbEQsTUFBQUEsRUFBRSxlQUFBLEdBQ0VpYixFQUFjLFNBQ2hCQSxFQUFjLFFBQVEsSUFDdEJELEVBQVUsUUFBUSxNQUVsQkMsRUFBYyxRQUFRO0FBQUEsSUFFMUIsR0FFTU8sSUFBOEIsTUFBTTtBQUN4QyxVQUFJLENBQUNULEVBQU8sTUFBTyxRQUFPO0FBQzFCLE1BQUFBLEVBQU8sTUFBTSxpQkFBaUIsYUFBYU0sQ0FBNEIsR0FDdkVOLEVBQU8sTUFBTSxpQkFBaUIsY0FBY08sQ0FBNkIsR0FDekVQLEVBQU8sTUFBTSxpQkFBaUIsU0FBU1EsQ0FBd0I7QUFBQSxJQUNqRSxHQUVNRSxJQUFtQyxNQUFNO0FBQzdDLFVBQUksQ0FBQ1YsRUFBTyxNQUFPLFFBQU87QUFDMUIsTUFBQUEsRUFBTyxNQUFNLG9CQUFvQixhQUFhTSxDQUE0QixHQUMxRU4sRUFBTyxNQUFNLG9CQUFvQixjQUFjTyxDQUE2QixHQUM1RVAsRUFBTyxNQUFNLG9CQUFvQixTQUFTUSxDQUF3QjtBQUFBLElBQ3BFLEdBRU1HLElBQWlDLENBQUMxYixNQUFxQjtBQUMzRCxNQUFJQSxFQUFFLFFBQVEsYUFDWmliLEVBQWMsUUFBUTtBQUFBLElBRTFCLEdBRU1VLElBQXlCLE1BQU07QUFDbkMsTUFBS3BGLEVBQUssVUFDVkEsRUFBSyxNQUFNLGlCQUFpQixTQUFTNkUsR0FBOEIsRUFBSSxHQUN2RTdFLEVBQUssTUFBTSxpQkFBaUIsV0FBV21GLENBQThCO0FBQUEsSUFDdkUsR0FFTUUsSUFBOEIsTUFBTTtBQUN4QyxNQUFLckYsRUFBSyxVQUNWQSxFQUFLLE1BQU0sb0JBQW9CLFNBQVM2RSxHQUE4QixFQUFJLEdBQzFFN0UsRUFBSyxNQUFNLG9CQUFvQixXQUFXbUYsQ0FBOEI7QUFBQSxJQUMxRSxHQUVNRyxJQUFzQixNQUFNO0FBQ2hDLE1BQUFkLEVBQU8sUUFBUSxTQUFTLGVBQWVqbUIsRUFBTSxRQUFRO0FBQUEsSUFDdkQ7QUFFQSxXQUFBcUI7QUFBQSxNQUNFLE1BQU04a0IsRUFBYztBQUFBLE1BQ3BCLENBQUM5akIsTUFBYTtBQUNaLFFBQUlBLElBQ0Z3a0IsRUFBQSxJQUVBQyxFQUFBO0FBQUEsTUFFSjtBQUFBLElBQUEsR0FHRnpsQjtBQUFBLE1BQ0UsTUFBTXJCLEVBQU07QUFBQSxNQUNaLE1BQU07QUFDSixRQUFBMm1CLEVBQUEsR0FDQUksRUFBQSxHQUNBTCxFQUFBO0FBQUEsTUFDRjtBQUFBLElBQUEsR0FHRjVZLEdBQVksTUFBTTtBQUNoQixNQUFBc0ksRUFBVyxRQUFRLENBQUM0QixHQUFBLEdBQWlCb08sR0FBaUIsRUFBRSxVQUFVcG1CLEVBQU0sT0FBQSxDQUFRLEdBQUd3WixHQUFNLEVBQUUsU0FBUyxHQUFBLENBQUksQ0FBQztBQUFBLElBQzNHLENBQUMsR0FFRHZILEdBQWMsTUFBTTtBQUNsQixNQUFBWCxHQUFBO0FBQUEsSUFDRixDQUFDLEdBRURwSCxHQUFVLE1BQU07QUFDZCxNQUFBNmMsRUFBQSxHQUNBdEYsRUFBSyxRQUFRLFNBQVMsaUJBQ3RCaUYsRUFBQTtBQUFBLElBQ0YsQ0FBQyxHQUVEdmMsR0FBWSxNQUFNO0FBQ2hCLE1BQUF3YyxFQUFBO0FBQUEsSUFDRixDQUFDLG1CQUlEN2tCLEVBb0JXcVEsSUFBQTtBQUFBLE1BcEJBLFFBQVE1UixFQUFBOFEsRUFBQSxDQUFZO0FBQUEsSUFBQTtNQUM3QjlPLEVBa0JheWtCLElBQUEsTUFBQTtBQUFBLG9CQWpCWCxNQWdCTTtBQUFBLGFBaEJOM21CLEVBZ0JNLE9BQUE7QUFBQSxZQWZILE9BQUtDLEVBQUE7QUFBQTtjQUF3Q0MsRUFBQVosQ0FBQSxFQUFJLEdBQUcsUUFBUTtBQUFBLGNBQW1CWSxFQUFBWixDQUFBLEVBQUksT0FBTyxNQUFNO0FBQUEsY0FBZVksRUFBQVosQ0FBQSxFQUFJLE9BQU8sS0FBSztBQUFBLGNBQWVZLEVBQUFaLENBQUEsRUFBSSxPQUFPLE9BQU87QUFBQSxjQUFnQlksRUFBQVosQ0FBQSxFQUFJLEtBQUssS0FBSztBQUFBLGNBQWtCWSxFQUFBWixDQUFBLEVBQUksUUFBUSxLQUFLO0FBQUEsY0FBZVksRUFBQVosQ0FBQSxFQUFJLE9BQU87QUFBQSxZQUFBO3FCQVV4UDtBQUFBLFlBQUosS0FBSStWO0FBQUEsWUFDSCxlQUFZblYsRUFBQThrQixDQUFBLEdBQWM7QUFBQSxVQUFBO1lBRzNCNWlCLEVBQVFDLEVBQUEsUUFBQSxXQUFBLENBQUEsR0FBQSxRQUFBLEVBQUE7QUFBQSxVQUFBO2lCQUZBMmpCLEVBQUEsS0FBYTtBQUFBLFVBQUE7Ozs7OztzRkM5SjNCdG1CLEtBQWUsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7QUFzQmYsVUFBTUMsSUFBUUMsR0FPUmduQixJQUFjOWtCLGlCQUFzQyxHQUVwRCtrQixJQUFXempCLEVBQVMsTUFBTSxNQUFNLEtBQUssRUFBRSxRQUFRekQsRUFBTSxVQUFBLEdBQWEsQ0FBQ3NLLEdBQUd2RixNQUFVQSxJQUFRLENBQUMsQ0FBQyxHQUUxRnlGLElBQWMsQ0FBQzJjLE1BQW9CO0FBQ3ZDLE1BQUFGLEVBQVksUUFBUUU7QUFBQSxJQUN0QjsyQkFJQWhuQixFQXdDTSxPQUFBO0FBQUEsTUF4Q0EsT0FBS0csRUFBQSxDQUFBLGVBQWtCQyxFQUFBWixDQUFBLEVBQUksTUFBTSxJQUFJLENBQUE7QUFBQSxJQUFBO01BQ3pDVSxFQVVVLFdBQUE7QUFBQSxRQVZBLE9BQUtDLEVBQUEsQ0FBR0MsRUFBQVosQ0FBQSxFQUFJLFFBQVEsTUFBTVksRUFBQVosQ0FBQSxFQUFJLE1BQU0sUUFBUVksRUFBQVosQ0FBQSxFQUFJLE1BQU0sU0FBU1ksRUFBQVosQ0FBQSxFQUFJLFFBQVEsT0FBTyxJQUFJLENBQUE7QUFBQSxNQUFBO1FBQzlGVSxFQUVNLE9BQUE7QUFBQSxVQUZBLFVBQVFFLEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUssT0FBTyxDQUFBO0FBQUEsUUFBQSxHQUM5QmlFLEVBQUE1RCxFQUFNLEtBQUssR0FBQSxDQUFBO0FBQUEsUUFJUkEsRUFBTSxtQkFGZEcsRUFLTSxPQUFBO0FBQUE7VUFKSCxVQUFRSSxFQUFBWixDQUFBLEVBQUksS0FBSyxLQUFLLFNBQVNZLEVBQUFaLENBQUEsRUFBSSxLQUFLLE1BQU0sUUFBUSxPQUFPLENBQUE7QUFBQSxRQUFBLEdBRzNEaUUsRUFBQXFqQixFQUFBLEtBQVcsSUFBRyxNQUFDcmpCLEVBQUc1RCxFQUFNLFNBQVMsR0FBQSxDQUFBOztNQUtoQ0EsRUFBTSxvQkFGZEcsRUFLVSxXQUFBO0FBQUE7UUFKUCxPQUFLRyxFQUFBLENBQUdDLEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUssUUFBUVksRUFBQVosQ0FBQSxFQUFJLFFBQVEsT0FBTyxLQUFLWSxFQUFBWixDQUFBLEVBQUksU0FBUyxHQUFHLFFBQVFZLEVBQUFaLENBQUEsRUFBSSxRQUFRLENBQUE7QUFBQSxNQUFBLEdBR3hGaUUsRUFBQTVELEVBQU0sV0FBVyxHQUFBLENBQUE7TUFHdEJLLEVBb0JVLFdBQUE7QUFBQSxRQXBCQSxPQUFLQyxFQUFBLENBQUEsbUJBQXNCQyxFQUFBWixDQUFBLEVBQUksUUFBUSxNQUFNWSxFQUFBWixDQUFBLEVBQUksSUFBSSxTQUFTWSxFQUFBWixDQUFBLEVBQUksS0FBSyxLQUFLLElBQUlZLEVBQUFaLENBQUEsRUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFBO0FBQUEsTUFBQTtnQkFDMUdRLEVBa0JFMEUsR0FBQSxNQUFBYyxFQURrQnVoQixFQUFBLE9BQVEsQ0FBbkJDLFlBakJUaG5CLEVBa0JFLFVBQUE7QUFBQSxVQWpCQyxPQUFLRyxFQUFBO0FBQUE7WUFBK0NDLEVBQUFaLENBQUEsRUFBSSxHQUFHLFFBQVE7QUFBQSxZQUFtQlksRUFBQVosQ0FBQSxFQUFJLFNBQVM7QUFBQSxZQUFvQlksRUFBQVosQ0FBQSxFQUFJLFNBQVMsR0FBRztBQUFBLFlBQWtCWSxFQUFBWixDQUFBLEVBQUksS0FBSyxLQUFLO0FBQUEsWUFBY1ksRUFBQVosQ0FBQSxFQUFJLEtBQUssT0FBTztBQUFBLFlBQWNZLEVBQUFaLENBQUEsRUFBSSxLQUFLLE1BQU07QUFBQSxZQUFnQlksRUFBQVosQ0FBQSxFQUFJLE9BQU8sS0FBSztBQUFBLFlBQWdCd25CLE1BQU8sS0FBQSxDQUFBLDJCQUFBO0FBQUEsWUFBbURBLE1BQVlELEVBQUEsTUFBUyxVQUFNLENBQUEsMEJBQUE7QUFBQSxZQUE0Q0MsS0FBV0YsV0FBVyxDQUFLMW1CLEVBQUFaLENBQUEsRUFBSSxHQUFHLFFBQVEsUUFBUTtBQUFBLFVBQUE7VUFhcmMsS0FBS3duQjtBQUFBLFVBQ0wsU0FBSyxDQUFBOWhCLE1BQUVtRixFQUFZMmMsQ0FBTztBQUFBLFVBQzNCLE1BQUs7QUFBQSxRQUFBOzs7O29FQy9FQUMsS0FBWTtBQUFBLEVBQ3ZCLE9BQU87QUFBQSxFQUNQLE1BQU07QUFBQSxFQUNOLE9BQU87QUFDVCxHQUlhQyxLQUFjO0FBQUEsRUFDekIsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUNULEdBRWFDLEtBQTZDO0FBQUEsRUFDeEQsTUFBTTtBQUFBLEVBQ04sS0FBSztBQUFBLEVBQ0wsVUFBVTtBQUFBLEVBQ1YsT0FBTztBQUFBLEVBQ1AsV0FBVztBQUFBLEVBQ1gsS0FBSztBQUFBLEVBQ0wsSUFBSTtBQUFBLEVBQ0osTUFBTTtBQUFBLEVBQ04sT0FBTztBQUNULEdBRWFDLEtBQTRDO0FBQUEsRUFDdkQsTUFBTTtBQUFBLEVBQ04sS0FBSztBQUFBLEVBQ0wsVUFBVTtBQUFBLEVBQ1YsT0FBTztBQUFBLEVBQ1AsV0FBVztBQUFBLEVBQ1gsS0FBSztBQUFBLEVBQ0wsSUFBSTtBQUFBLEVBQ0osTUFBTTtBQUFBLEVBQ04sT0FBTztBQUNULEdDakNhQyxLQUF1QixDQUFDQyxNQUEyQjtBQUc5RCxRQUFNQyxJQUZVLE9BQU8sUUFBUWxuQixFQUFLLEVBRWQsS0FBSyxDQUFDd0ksTUFDbkJBLEVBQU0sQ0FBQyxNQUFNeWUsQ0FDckI7QUFFRCxNQUFJLENBQUNDO0FBQ0gsVUFBTSxJQUFJLE1BQU0sZUFBZUQsQ0FBSyxZQUFZO0FBR2xELFNBQU9DLEVBQU0sQ0FBQztBQUNoQixHQ1ZFM25CLEtBQWUsQ0FBQTs7Ozs7Ozs7QUFxQmYsVUFBTUMsSUFBUUMsR0FFUmtCLElBQVdDLEVBQUEsR0FFWHVtQixJQUFZbGtCLEVBQWlCLE1BQU07QUFDdkMsVUFBSXpELEVBQU0sU0FBU29uQixHQUFVLGFBQWFHLEdBQWdCQyxHQUFxQnhuQixFQUFNLEtBQUssQ0FBQztBQUMzRixZQUFNNG5CLElBQWdCTixHQUFpQkUsR0FBcUJ4bkIsRUFBTSxLQUFLLENBQUM7QUFDeEUsVUFBSUEsRUFBTSxTQUFTb25CLEdBQVUsT0FBTztBQUNsQyxjQUFNUyxJQUFlUixHQUFZLFFBQVFBLEdBQVk7QUFDckQsZUFBTyxLQUFLLE1BQU1PLElBQWdCQyxDQUFZO0FBQUEsTUFDaEQ7QUFDRSxlQUFPRDtBQUFBLElBRVgsQ0FBQyxHQUVLRSxJQUFhcmtCLEVBQWlCLE1BQU96RCxFQUFNLFNBQVNvbkIsR0FBVSxRQUFRQyxHQUFZLFFBQVFBLEdBQVksS0FBTTtBQUVsSCxXQUFBaG1CO0FBQUEsTUFDRSxNQUFNLENBQUNyQixFQUFNLE1BQU1BLEVBQU0sS0FBSztBQUFBLE1BQzlCLFlBQVk7QUFDVixjQUFNMEIsSUFBWUMsR0FBcUIsTUFDakMzQixFQUFNLFNBQVNvbkIsR0FBVSxPQUNwQnhsQiwwekJBQUEsb0NBQUE1QixFQUFBLEtBQUEsUUFBQSxDQUFBLElBQ0c0QiwwekJBQUEsb0NBQUE1QixFQUFBLEtBQUEsUUFBQSxDQUFBLENBQ2I7QUFDRCxRQUFBbUIsRUFBUyxRQUFRVSxHQUFRSCxDQUFTO0FBQUEsTUFDcEM7QUFBQSxNQUNBLEVBQUUsV0FBVyxHQUFBO0FBQUEsSUFBSyxtQkFLcEJ2QixFQVlNLE9BQUE7QUFBQSxNQVhILFNBQU8sQ0FBQSxpQkFBQSxDQUFtQjtBQUFBLE1BQzFCLE9BQUtrSyxHQUFBO0FBQUEsZ0NBQWtDc2QsRUFBQSxLQUFTO0FBQUEsaUNBQXFDRyxFQUFBLEtBQVU7QUFBQSxNQUFBOztNQVF4RjNtQixFQUFBLFNBSFJqQixFQUFBLEdBQUE0QixFQUlFQyxHQUZLWixFQUFBLEtBQVEsR0FBQTtBQUFBO1FBRFosT0FBS2IsRUFBQSxDQUFHQyxFQUFBWixDQUFBLEVBQUksUUFBUSxLQUFLLENBQUE7QUFBQSxNQUFBOzs7Ozs7Ozs7O0FDdkQ5QixVQUFNSyxJQUFRQztzQkFNZEMsRUFBQSxHQUFBQyxFQW9CVSxXQXBCVkMsSUFvQlU7QUFBQSxNQW5CUkMsRUFFSyxNQUFBO0FBQUEsUUFGQSxVQUFRRSxFQUFBWixDQUFBLEVBQUksT0FBTyxPQUFPLElBQUksQ0FBQTtBQUFBLE1BQUEsR0FDOUJpRSxFQUFBNUQsRUFBTSxPQUFPLEdBQUEsQ0FBQTtBQUFBLE1BR2xCSyxFQWNLLE1BQUE7QUFBQSxRQWRBLE9BQUtDLEVBQUEsQ0FBR0MsS0FBSSxRQUFRLE1BQU1BLEVBQUFaLENBQUEsRUFBSSxLQUFLLE1BQU1ZLEVBQUFaLENBQUEsRUFBSSxJQUFJLEtBQUtZLEVBQUFaLENBQUEsRUFBSSxhQUFhLEdBQUcsQ0FBQTtBQUFBLE1BQUE7U0FDN0VPLEVBQUEsRUFBQSxHQUFBQyxFQVlLMEUsR0FBQSxNQUFBYyxFQVRZM0YsRUFBTSxRQUFkK25CLFlBSFQ1bkIsRUFZSyxNQUFBO0FBQUEsVUFYRixPQUFLRyxFQUFBLENBQUEsaUJBQW9CQyxFQUFBWixDQUFBLEVBQUksUUFBUSxNQUFNWSxFQUFBWixDQUFBLEVBQUksS0FBSyxVQUFVLFFBQVFZLEVBQUFaLENBQUEsRUFBSSxJQUFJLFNBQVNZLEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUssTUFBTSxDQUFBO0FBQUEsVUFDM0csS0FBS29vQixFQUFLO0FBQUEsUUFBQTtVQUdYeGxCLEVBTW1Cb0IsSUFBQTtBQUFBLFlBTGhCLFVBQVFwRCxFQUFBWixDQUFBLEVBQUksVUFBVSxLQUFLLEdBQUcsQ0FBQTtBQUFBLFlBQzlCLE1BQU1vb0IsRUFBSztBQUFBLFlBQ1gsUUFBUUEsRUFBSyxXQUFXeG5CLEVBQUFnRCxFQUFBLEVBQU8sUUFBUWhELEVBQUFnRCxFQUFBLEVBQU87QUFBQSxVQUFBO3dCQUUvQyxNQUFnQjtBQUFBLGNBQWJ5QixHQUFBcEIsRUFBQW1rQixFQUFLLEtBQUssR0FBQSxDQUFBO0FBQUEsWUFBQTs7Ozs7OztvRUM1QnJCaG9CLEtBQWUsQ0FBQTs7Ozs7Ozs7Ozs7QUE0QmYsVUFBTStELElBQU9DLEdBRVBpa0IsSUFBK0M1bUIsRUFBSSxJQUFJLEdBRXZEc1EsSUFBU3ZQLEVBQW9CbEMsR0FBQSxZQUFtQixHQUVoRDBSLElBQTBCLE1BQU07O0FBQ3BDLE9BQUF2TixJQUFBNGpCLEVBQWMsVUFBZCxRQUFBNWpCLEVBQXFCLGFBQ3JCMk0sR0FBYyxFQUFJO0FBQUEsSUFDcEIsR0FFTWEsSUFBMkIsTUFBTTs7QUFDckMsT0FBQXhOLElBQUE0akIsRUFBYyxVQUFkLFFBQUE1akIsRUFBcUIsU0FDckIyTSxHQUFjLEVBQUs7QUFBQSxJQUNyQixHQUVNZSxJQUFRLE1BQU07QUFDbEIsTUFBQUosRUFBTyxRQUFRO0FBQUEsSUFDakIsR0FFTUssSUFBc0IsTUFBTTtBQUNoQyxNQUFBRCxFQUFBO0FBQUEsSUFDRixHQUVNRSxJQUFzQixDQUFDOUcsTUFBYTtBQUN4QyxNQUFBQSxFQUFFLGVBQUEsR0FDRjRHLEVBQUE7QUFBQSxJQUNGO0FBRUEsV0FBQXpRLEVBQU1xUSxHQUFRLE1BQU07QUFDbEIsTUFBS3NXLEVBQWMsVUFDZnRXLEVBQU8sUUFDVEMsRUFBQSxJQUVBQyxFQUFBO0FBQUEsSUFFSixDQUFDLEdBRURLLEdBQWMsTUFBTTtBQUNsQixNQUFBWCxHQUFBO0FBQUEsSUFDRixDQUFDLEdBRURwSCxHQUFVLE1BQU07QUFDZCxNQUFJd0gsRUFBTyxTQUNUQyxFQUFBO0FBQUEsSUFFSixDQUFDLEdBRURPLEdBQWdCLE1BQU07QUFDcEIsTUFBSVIsRUFBTyxVQUNUQSxFQUFPLFFBQVEsSUFDZkUsRUFBQTtBQUFBLElBRUosQ0FBQyxtQkFJRDlQLEVBZ0VXcVEsSUFBQTtBQUFBLE1BaEVBLFFBQVE1UixFQUFBOFEsRUFBQSxDQUFZO0FBQUEsSUFBQTtNQUM3QmhSLEVBOERTLFVBQUE7QUFBQSxRQTdETixPQUFLQyxFQUFBLENBQUEsY0FBaUJDLEVBQUFaLENBQUEsRUFBSSxHQUFHLFNBQVNZLEVBQUFaLENBQUEsRUFBSSxPQUFPLE1BQU1ZLEVBQUFaLENBQUEsRUFBSSxNQUFNLE1BQU1ZLEVBQUFaLENBQUEsRUFBSSxTQUFTLEdBQUcsTUFBTSxDQUFBO0FBQUEsaUJBQzFGO0FBQUEsUUFBSixLQUFJcW9CO0FBQUEsUUFDSCxZQUFZalcsR0FBbUIsQ0FBQSxNQUFBLENBQUE7QUFBQSxRQUMvQiw0QkFBRCxNQUFBO0FBQUEsUUFBQSxHQUFjLENBQUEsU0FBQSxDQUFBO0FBQUEsUUFDYixjQUFnQkMsR0FBbUIsQ0FBQSxRQUFBLENBQUE7QUFBQSxNQUFBO1FBRXBDM1IsRUFzRE0sT0FBQTtBQUFBLFVBckRILE9BQUtDLEVBQUE7QUFBQTtZQUEyQ0MsRUFBQVosQ0FBQSxFQUFJLEdBQUcsUUFBUTtBQUFBLFlBQW1CWSxFQUFBWixDQUFBLEVBQUksUUFBUTtBQUFBLFlBQWdCWSxFQUFBWixDQUFBLEVBQUksS0FBSyxVQUFVO0FBQUEsWUFBa0JZLEVBQUFaLENBQUEsRUFBSSxPQUFPO0FBQUEsWUFBZ0JZLEVBQUFaLENBQUEsRUFBSSxTQUFTLEdBQUc7QUFBQSxZQUFrQlksRUFBQVosQ0FBQSxFQUFJLE1BQU07QUFBQSxVQUFBOztVQVUzTlUsRUF3QlMsVUFBQTtBQUFBLFlBdkJOLE9BQUtDLEVBQUE7QUFBQSxjQUFnQkMsRUFBQVosQ0FBQSxFQUFJLFFBQVE7QUFBQSxjQUFrQlksRUFBQVosQ0FBQSxFQUFJLFVBQVU7QUFBQSxjQUFxQlksRUFBQVosQ0FBQSxFQUFJLFFBQVEsSUFBSTtBQUFBLGNBQWlCWSxFQUFBWixDQUFBLEVBQUksUUFBUSxFQUFFO0FBQUEsY0FBaUJZLEVBQUFaLENBQUEsRUFBSSxTQUFTO0FBQUEsY0FBc0JZLEVBQUFaLENBQUEsRUFBSSxRQUFRO0FBQUEsWUFBQTs7WUFjOUxNLEVBQUEscUJBTFI2QixFQU1FMkMsSUFBQTtBQUFBO2NBTEMsT0FBS25FLEVBQUEsQ0FBR0MsRUFBQVosQ0FBQSxFQUFJLEtBQUssS0FBSyxLQUFLWSxLQUFJLEtBQUssT0FBTyxHQUFHLENBQUE7QUFBQSxjQUM5QyxNQUFNQSxFQUFBeUIsQ0FBQSxFQUFLO0FBQUEsY0FDWCxVQUFVekIsRUFBQStDLEVBQUEsRUFBUztBQUFBLGNBQ25CLGdDQUFPUSxFQUFJLE1BQUE7QUFBQSxZQUFBO1lBSWR2QixFQUtFa0MsSUFBQTtBQUFBLGNBSkMsT0FBS25FLEVBQUEsQ0FBR0MsS0FBSSxLQUFLLEtBQUssS0FBS0EsRUFBQVosQ0FBQSxFQUFJLEtBQUssT0FBTyxLQUFLWSxFQUFBWixDQUFBLEVBQUksT0FBTyxLQUFLLElBQUksQ0FBQTtBQUFBLGNBQ3BFLE1BQU1ZLEVBQUF5QixDQUFBLEVBQUs7QUFBQSxjQUNYLFVBQVV6QixFQUFBK0MsRUFBQSxFQUFTO0FBQUEsY0FDbkIsU0FBT3dPO0FBQUEsWUFBQTs7VUFJWnZQLEVBQWVELEVBQUE7QUFBQSxVQUVmakMsRUFjTSxPQUFBO0FBQUEsWUFiSCxPQUFLQyxFQUFBO0FBQUE7Y0FBa0RDLEVBQUFaLENBQUEsRUFBSSxRQUFRO0FBQUEsY0FBa0JZLEVBQUFaLENBQUEsRUFBSSxPQUFPO0FBQUEsY0FBa0JZLEVBQUFaLENBQUEsRUFBSSxVQUFVO0FBQUEsY0FBcUJZLEVBQUFaLENBQUEsRUFBSSxTQUFTLEVBQUU7QUFBQSxjQUFvQlksRUFBQVosQ0FBQSxFQUFJLFNBQVMsRUFBRTtBQUFBLGNBQWtCWSxFQUFBWixDQUFBLEVBQUksUUFBUSxPQUFPO0FBQUEsY0FBaUJZLEVBQUFaLENBQUEsRUFBSSxTQUFTO0FBQUEsY0FBc0JZLEVBQUFaLENBQUEsRUFBSSxNQUFNO0FBQUEsWUFBQTs7WUFZM1M4QyxFQUFRQyxFQUFBLFFBQUEsV0FBQSxDQUFBLEdBQUEsUUFBQSxFQUFBO0FBQUEsVUFBQTs7Ozs7dUZDakpoQjNDLEtBQWUsQ0FBQTs7Ozs7Ozs7Ozs7QUFjZixVQUFNQyxJQUFRQyxHQUlSc0ssSUFBV3BJLGlCQUF1QyxHQUVsRHFJLElBQWMsTUFBTTtBQUN4QixNQUFLeEssRUFBTSxhQUNUdUssRUFBUyxRQUFRLENBQUNBLEVBQVM7QUFBQSxJQUUvQjsyQkFJQXBLLEVBa0NTLFVBQUE7QUFBQSxNQWpDTixPQUFLRyxFQUFBO0FBQUE7UUFBK0JDLEVBQUFaLENBQUEsRUFBSSxRQUFRO0FBQUEsUUFBWVksRUFBQVosQ0FBQSxFQUFJLE1BQU07QUFBQSxRQUFjWSxFQUFBWixDQUFBLEVBQUksT0FBTyxLQUFLO0FBQUEsUUFBV1ksRUFBQVosQ0FBQSxFQUFJLE9BQU8sT0FBTztBQUFBLFFBQVlZLEVBQUFaLENBQUEsRUFBSSxTQUFTLEdBQUc7QUFBQSxRQUFjWSxFQUFBWixDQUFBLEVBQUksS0FBSyxPQUFPO0FBQUEsUUFBV1ksRUFBQVosQ0FBQSxFQUFJLEtBQUssS0FBSztBQUFBLFFBQVc0SyxFQUFBLFFBQVEsQ0FBQSxVQUFjaEssS0FBSSxHQUFHLFNBQVMsSUFBQSxDQUFLQSxLQUFJLEdBQUcsUUFBUSxTQUFTQSxFQUFBWixDQUFBLEVBQUksT0FBTyxNQUFNLE9BQU87QUFBQSxRQUFTTSxFQUFBLFlBQVEsQ0FBS00sRUFBQVosQ0FBQSxFQUFJLFFBQVEsUUFBUTtBQUFBLE1BQUE7TUFZcFcsVUFBVUssRUFBTTtBQUFBLE1BQ2hCLFNBQU93SztBQUFBLE1BQ1IsY0FBVztBQUFBLE1BQ1gsTUFBSztBQUFBLElBQUE7TUFFTG5LLEVBZU0sT0FBQTtBQUFBLFFBZEgsT0FBS0MsRUFBQTtBQUFBO1VBQTZDQyxFQUFBWixDQUFBLEVBQUksU0FBUztBQUFBLFVBQWtCWSxFQUFBWixDQUFBLEVBQUksUUFBUTtBQUFBLFVBQWNZLEVBQUFaLENBQUEsRUFBSSxNQUFNO0FBQUEsVUFBZ0JZLEVBQUFaLENBQUEsRUFBSSxNQUFNO0FBQUEsVUFBZ0JZLEVBQUFaLENBQUEsRUFBSSxPQUFPLE9BQU87QUFBQSxVQUFjNEssRUFBQSxRQUFRLENBQUEsVUFBY2hLLEVBQUFaLENBQUEsRUFBSSxHQUFHLFFBQVEsT0FBTyxJQUFBLENBQUtZLEVBQUFaLENBQUEsRUFBSSxHQUFHLFNBQVM7QUFBQSxRQUFBOztRQVVqUTRDLEVBR0VDLEdBQUE7QUFBQSxVQUZDLE1BQU1qQyxFQUFBeUIsQ0FBQSxFQUFLO0FBQUEsVUFDWCxNQUFNekIsRUFBQUUsQ0FBQSxFQUFLO0FBQUEsUUFBQTs7OztvRUMzRGxCVixLQUFlLENBQUE7Ozs7Ozs7Ozs7O0FBa0JmLFVBQU1rb0IsSUFBYTlsQixpQkFBc0MsR0FFbkRxSSxJQUFjLENBQUN6RixNQUFrQjtBQUNyQyxNQUFBa2pCLEVBQVcsUUFBUWxqQjtBQUFBLElBQ3JCOzJCQUlBNUUsRUFzQk0sT0FBQTtBQUFBLE1BdEJBLE9BQUtHLEVBQUEsQ0FBQSxhQUFnQkMsS0FBSSxRQUFRLE1BQU1BLEtBQUksT0FBTyxPQUFPLEtBQUtBLEVBQUFaLENBQUEsRUFBSSxPQUFPLE1BQU0sR0FBRyxDQUFBO0FBQUEsSUFBQTtNQUN0RjRDLEVBb0JlMmxCLElBQUEsRUFwQkEsZUFBYSxNQUFJO0FBQUEsb0JBSTVCLE1BQTRCO0FBQUEsV0FIOUJob0IsRUFBQSxFQUFBLEdBQUFDLEVBa0JLMEUsR0FBQSxNQUFBYyxFQWZvQjFGLEVBQUEsTUFBSSxDQUFuQjJGLEdBQUtiLFlBSGY1RSxFQWtCSyxNQUFBO0FBQUEsWUFqQkYsVUFBUUksRUFBQVosQ0FBQSxFQUFJLFFBQVEsRUFBRSxJQUFJLENBQUE7QUFBQSxZQUMxQixLQUFLaUcsRUFBSTtBQUFBLFVBQUE7WUFHVnJELEVBV0VpQyxJQUFBO0FBQUEsY0FWQyxPQUFLbEUsRUFBQTtBQUFBLGdCQUFnQnlFLE1BQVVrakIsVUFBVSxDQUFJMW5CLEVBQUFaLENBQUEsRUFBSSxLQUFLLE1BQU0sUUFBUSxLQUFLLElBQUEsQ0FBS1ksS0FBSSxLQUFLLE1BQU0sUUFBUSxPQUFPO0FBQUEsZ0JBQWVBLEVBQUFaLENBQUEsRUFBSSxRQUFRLE9BQU87QUFBQSxnQkFBaUJZLEVBQUFaLENBQUEsRUFBSSxLQUFLLEtBQUs7QUFBQSxnQkFBcUJZLEVBQUFaLENBQUEsRUFBSSxnQkFBZ0I7QUFBQSxjQUFBO2NBTXROLFNBQVNZLEVBQUFvQyxDQUFBLEVBQVE7QUFBQSxjQUNqQixPQUFPaUQsRUFBSTtBQUFBLGNBQ1gsUUFBUTtBQUFBLGNBQ1IsU0FBSyxDQUFBUCxNQUFFbUYsRUFBWXpGLENBQUs7QUFBQSxZQUFBO1lBRTNCMUUsRUFBZ0csT0FBQTtBQUFBLGNBQTFGLDRCQUEwQkUsRUFBQVosQ0FBQSxFQUFJLE9BQU8sRUFBRSxNQUFNb0YsTUFBVWtqQixFQUFBLFNBQVUsQ0FBSzFuQixLQUFJLEdBQUcsT0FBTyxDQUFBLENBQUE7QUFBQSxZQUFBOzs7Ozs7O29FQy9DNUY0bkIsS0FBYyxPQUFPLGNBQWMsR0FFbkNDLEtBQTJCO0FBQUEsRUFDL0IsWUFBWTtBQUFBLEVBQ1osZUFBZTtBQUNqQixHQUVhQyxLQUFpQixNQUFNO0FBQ2xDLFFBQU1DLElBQVdsbEIsR0FBb0Ira0IsRUFBVztBQUNoRCxNQUFJRyxFQUFVLFFBQU9BO0FBRXJCLFFBQU05RyxJQUFZcGdCLEVBQTBDLElBQUksR0FDMURtbkIsSUFBU25uQixFQUFpQixFQUFFLEdBQzVCRSxJQUFLRixFQUFZLENBQUMsR0FFbEJvbkIsSUFBVyxDQUFDQyxNQUE4QjtBQUM5QyxJQUFBbm5CLEVBQUcsU0FDSG9uQixFQUFBLEdBRUFILEVBQU8sTUFBTSxLQUFLO0FBQUEsTUFDaEIsR0FBR0U7QUFBQSxNQUNILElBQUksY0FBY25uQixFQUFHLEtBQUs7QUFBQSxJQUFBLENBQ2QsR0FFVixPQUFPLFNBQVcsUUFDcEJxbkIsRUFBQSxHQUNBQyxFQUFBO0FBQUEsRUFFSixHQUVNRixJQUFjLE1BQU07QUFDeEIsSUFBQUgsRUFBTyxRQUFRLENBQUE7QUFBQSxFQUNqQixHQUVNSSxJQUFvQixNQUFNO0FBQzlCLElBQUluSCxFQUFVLFNBQU8sYUFBYUEsRUFBVSxLQUFLO0FBQUEsRUFDbkQsR0FFTW9ILElBQW1CLE1BQU07QUFDN0IsUUFBSSxDQUFDTCxFQUFPLE1BQU0sT0FBUTtBQUUxQixVQUFNTSxJQUFzQk4sRUFBTyxNQUFNLENBQUMsRUFBRSxTQUN4Q0gsR0FBeUIsYUFDekJBLEdBQXlCO0FBQzdCLElBQUE1RyxFQUFVLFFBQVEsV0FBV2tILEdBQWFHLENBQW1CO0FBQUEsRUFDL0QsR0FFTUMsSUFBdUI7QUFBQSxJQUMzQixVQUFBTjtBQUFBLElBQ0EsbUJBQUFHO0FBQUEsSUFDQSxhQUFBRDtBQUFBLElBQ0Esa0JBQUFFO0FBQUEsSUFDQSxRQUFRRyxHQUFTUixDQUFNO0FBQUEsRUFBQTtBQUd6QixTQUFBcmxCLEdBQVFpbEIsSUFBYVcsQ0FBTyxHQUVyQkE7QUFDVCxHQ3hERS9vQixLQUFlLENBQUE7Ozs7QUFXZixVQUFNLEVBQUUsUUFBQXdvQixHQUFRLGFBQUFHLEdBQWEsbUJBQUFDLEdBQW1CLGtCQUFBQyxFQUFBLElBQXFCUCxHQUFBO0FBRXJFLFdBQUFwVyxHQUFjLE1BQU07QUFDbEIsTUFBQVgsR0FBQTtBQUFBLElBQ0YsQ0FBQyxtQkFJRHhQLEVBMkNXcVEsSUFBQTtBQUFBLE1BM0NBLFFBQVE1UixFQUFBOFEsRUFBQSxDQUFZO0FBQUEsSUFBQTtNQUM3QmhSLEVBeUNNLE9BQUE7QUFBQSxRQXhDSCxPQUFLQyxFQUFBO0FBQUE7VUFBb0NDLEVBQUFaLENBQUEsRUFBSSxPQUFPO0FBQUEsVUFBY1ksRUFBQVosQ0FBQSxFQUFJLGVBQWU7QUFBQSxVQUFhWSxFQUFBWixDQUFBLEVBQUksU0FBUztBQUFBLFVBQWVZLEVBQUFaLENBQUEsRUFBSSxZQUFZO0FBQUEsVUFBY1ksRUFBQVosQ0FBQSxFQUFJLFlBQVk7QUFBQSxVQUFhWSxFQUFBWixDQUFBLEVBQUksTUFBTTtBQUFBLFFBQUE7O1FBVXBNNEMsRUE2QmtCeW1CLElBQUEsRUE3QkQsTUFBSyxTQUFLO0FBQUEsc0JBZXZCLE1BQXVCO0FBQUEsb0JBZHpCN29CLEVBMkJNMEUsR0FBQSxNQUFBYyxFQWJZcEYsRUFBQWdvQixDQUFBLEdBQU0sQ0FBZlUsTUFBSzs7MEJBZGQ5b0IsRUEyQk0sT0FBQTtBQUFBLGdCQTFCSCxPQUFLRyxFQUFBO0FBQUE7a0JBQStDQyxFQUFBWixDQUFBLEVBQUksZUFBZTtBQUFBLGtCQUFnQlksRUFBQVosQ0FBQSxFQUFJLFNBQVM7QUFBQSxrQkFBc0JZLEVBQUFaLENBQUEsRUFBSSxRQUFRO0FBQUEsa0JBQWlCWSxFQUFBWixDQUFBLEVBQUksWUFBWTtBQUFBLGtCQUFtQlksRUFBQVosQ0FBQSxFQUFJLFlBQVk7QUFBQSxrQkFBaUJZLEVBQUFaLENBQUEsRUFBSSxPQUFPLEtBQUs7QUFBQSxrQkFBaUJZLEVBQUFaLENBQUEsRUFBSSxNQUFNO0FBQUEsZ0JBQUE7Z0JBVXRRLEtBQUtzcEIsRUFBTTtBQUFBLGdCQUNYLGNBQVU3akIsRUFBQSxDQUFBLE1BQUFBLEVBQUEsQ0FBQTtBQUFBLDBCQUFFN0UsRUFBQW9vQixDQUFBLEtBQUFwb0IsRUFBQW9vQixDQUFBLEVBQUEsR0FBQU8sQ0FBQTtBQUFBLGdCQUNaLGNBQVU5akIsRUFBQSxDQUFBLE1BQUFBLEVBQUEsQ0FBQTtBQUFBLDBCQUFFN0UsRUFBQXFvQixDQUFBLEtBQUFyb0IsRUFBQXFvQixDQUFBLEVBQUEsR0FBQU0sQ0FBQTtBQUFBLGNBQUE7Z0JBR2IzbUIsRUFVWTRtQixJQUFBO0FBQUEsa0JBVFQsY0FBVy9rQixJQUFBNmtCLEVBQU0sV0FBTixnQkFBQTdrQixFQUFjO0FBQUEsa0JBQ3pCLFNBQVM2a0IsRUFBTTtBQUFBLGtCQUNmLE9BQU8sRUFBQSxvQkFBQSxPQUFBO0FBQUEsa0JBQ1AsU0FBTzFvQixFQUFBbW9CLENBQUE7QUFBQSxrQkFDUCxhQUFXdGUsSUFBQTZlLEtBQUEsZ0JBQUFBLEVBQU8sV0FBUCxnQkFBQTdlLEVBQWU7QUFBQSxrQkFDM0Isa0JBQUE7QUFBQSxrQkFDQSxZQUFBO0FBQUEsZ0JBQUE7OEJBRUEsTUFBdUI7QUFBQSxvQkFBcEJwRixHQUFBcEIsRUFBQXFsQixFQUFNLFdBQVcsR0FBQSxDQUFBO0FBQUEsa0JBQUE7Ozs7Ozs7Ozs7OzsiLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbNjIsNjMsNjQsNjUsNjZdfQ==